@area8975/ui 0.1.0 → 0.1.1-dev.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/area8975-ui.mjs +906 -399
- package/fesm2022/area8975-ui.mjs.map +1 -1
- package/package.json +2 -2
- package/types/area8975-ui.d.ts +129 -28
package/fesm2022/area8975-ui.mjs
CHANGED
|
@@ -56,7 +56,9 @@ var UiAxisChartBase = class UiAxisChartBase {
|
|
|
56
56
|
});
|
|
57
57
|
options = input(null, ...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
|
|
58
58
|
highlight = input(null, ...ngDevMode ? [{ debugName: "highlight" }] : /* istanbul ignore next */ []);
|
|
59
|
+
legend = input("auto", ...ngDevMode ? [{ debugName: "legend" }] : /* istanbul ignore next */ []);
|
|
59
60
|
hiddenSeries = signal([], ...ngDevMode ? [{ debugName: "hiddenSeries" }] : /* istanbul ignore next */ []);
|
|
61
|
+
emphasis = signal(null, ...ngDevMode ? [{ debugName: "emphasis" }] : /* istanbul ignore next */ []);
|
|
60
62
|
supportsDashes = false;
|
|
61
63
|
isEmpty = computed(() => !this.series().some((item) => item.data.some((value) => value !== null)), ...ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []);
|
|
62
64
|
isMuted = computed(() => {
|
|
@@ -185,6 +187,13 @@ var UiAxisChartBase = class UiAxisChartBase {
|
|
|
185
187
|
isSignal: true,
|
|
186
188
|
isRequired: false,
|
|
187
189
|
transformFunction: null
|
|
190
|
+
},
|
|
191
|
+
legend: {
|
|
192
|
+
classPropertyName: "legend",
|
|
193
|
+
publicName: "legend",
|
|
194
|
+
isSignal: true,
|
|
195
|
+
isRequired: false,
|
|
196
|
+
transformFunction: null
|
|
188
197
|
}
|
|
189
198
|
},
|
|
190
199
|
ngImport: i0
|
|
@@ -284,6 +293,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
284
293
|
alias: "highlight",
|
|
285
294
|
required: false
|
|
286
295
|
}]
|
|
296
|
+
}],
|
|
297
|
+
legend: [{
|
|
298
|
+
type: i0.Input,
|
|
299
|
+
args: [{
|
|
300
|
+
isSignal: true,
|
|
301
|
+
alias: "legend",
|
|
302
|
+
required: false
|
|
303
|
+
}]
|
|
287
304
|
}]
|
|
288
305
|
}
|
|
289
306
|
});
|
|
@@ -498,7 +515,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
498
515
|
}
|
|
499
516
|
});
|
|
500
517
|
var UiChartLegendComponent = class UiChartLegendComponent {
|
|
501
|
-
items = input
|
|
518
|
+
items = input([], ...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
|
|
519
|
+
note = input("", ...ngDevMode ? [{ debugName: "note" }] : /* istanbul ignore next */ []);
|
|
520
|
+
for = input(null, ...ngDevMode ? [{ debugName: "for" }] : /* istanbul ignore next */ []);
|
|
502
521
|
hidden = model([], ...ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []);
|
|
503
522
|
toggleable = input(false, {
|
|
504
523
|
...ngDevMode ? { debugName: "toggleable" } : /* istanbul ignore next */ {},
|
|
@@ -508,11 +527,17 @@ var UiChartLegendComponent = class UiChartLegendComponent {
|
|
|
508
527
|
hovered = signal(null, ...ngDevMode ? [{ debugName: "hovered" }] : /* istanbul ignore next */ []);
|
|
509
528
|
focused = signal(null, ...ngDevMode ? [{ debugName: "focused" }] : /* istanbul ignore next */ []);
|
|
510
529
|
pointedAt = computed(() => this.hovered() ?? this.focused(), ...ngDevMode ? [{ debugName: "pointedAt" }] : /* istanbul ignore next */ []);
|
|
511
|
-
|
|
530
|
+
shownItems = computed(() => this.for()?.legendItems() ?? this.items(), ...ngDevMode ? [{ debugName: "shownItems" }] : /* istanbul ignore next */ []);
|
|
531
|
+
shownNote = computed(() => this.for()?.legendNote() ?? this.note(), ...ngDevMode ? [{ debugName: "shownNote" }] : /* istanbul ignore next */ []);
|
|
532
|
+
hiddenNames = computed(() => this.for()?.hiddenSeries() ?? this.hidden(), ...ngDevMode ? [{ debugName: "hiddenNames" }] : /* istanbul ignore next */ []);
|
|
533
|
+
visibleCount = computed(() => this.shownItems().filter((item) => !this.hiddenNames().includes(item.name)).length, ...ngDevMode ? [{ debugName: "visibleCount" }] : /* istanbul ignore next */ []);
|
|
512
534
|
constructor() {
|
|
513
535
|
effect(() => {
|
|
514
536
|
const name = this.pointedAt();
|
|
515
|
-
untracked(() =>
|
|
537
|
+
untracked(() => {
|
|
538
|
+
this.for()?.emphasis.set(name);
|
|
539
|
+
this.focusChange.emit(name);
|
|
540
|
+
});
|
|
516
541
|
});
|
|
517
542
|
}
|
|
518
543
|
hover(name) {
|
|
@@ -522,14 +547,18 @@ var UiChartLegendComponent = class UiChartLegendComponent {
|
|
|
522
547
|
this.focused.set(name);
|
|
523
548
|
}
|
|
524
549
|
isHidden(item) {
|
|
525
|
-
return this.
|
|
550
|
+
return this.hiddenNames().includes(item.name);
|
|
526
551
|
}
|
|
527
552
|
isLocked(item) {
|
|
528
553
|
return !this.isHidden(item) && this.visibleCount() === 1;
|
|
529
554
|
}
|
|
530
555
|
toggle(item) {
|
|
531
556
|
if (this.isLocked(item)) return;
|
|
532
|
-
|
|
557
|
+
const hidden = this.hiddenNames();
|
|
558
|
+
const next = hidden.includes(item.name) ? hidden.filter((name) => name !== item.name) : [...hidden, item.name];
|
|
559
|
+
const source = this.for();
|
|
560
|
+
if (source) source.hiddenSeries.set(next);
|
|
561
|
+
else this.hidden.set(next);
|
|
533
562
|
}
|
|
534
563
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
535
564
|
minVersion: "12.0.0",
|
|
@@ -550,7 +579,21 @@ var UiChartLegendComponent = class UiChartLegendComponent {
|
|
|
550
579
|
classPropertyName: "items",
|
|
551
580
|
publicName: "items",
|
|
552
581
|
isSignal: true,
|
|
553
|
-
isRequired:
|
|
582
|
+
isRequired: false,
|
|
583
|
+
transformFunction: null
|
|
584
|
+
},
|
|
585
|
+
note: {
|
|
586
|
+
classPropertyName: "note",
|
|
587
|
+
publicName: "note",
|
|
588
|
+
isSignal: true,
|
|
589
|
+
isRequired: false,
|
|
590
|
+
transformFunction: null
|
|
591
|
+
},
|
|
592
|
+
for: {
|
|
593
|
+
classPropertyName: "for",
|
|
594
|
+
publicName: "for",
|
|
595
|
+
isSignal: true,
|
|
596
|
+
isRequired: false,
|
|
554
597
|
transformFunction: null
|
|
555
598
|
},
|
|
556
599
|
hidden: {
|
|
@@ -573,8 +616,8 @@ var UiChartLegendComponent = class UiChartLegendComponent {
|
|
|
573
616
|
focusChange: "focusChange"
|
|
574
617
|
},
|
|
575
618
|
ngImport: i0,
|
|
576
|
-
template: "<ul class=\"ui-chart-legend\" role=\"list\">\n @for (item of
|
|
577
|
-
styles: ["@layer properties
|
|
619
|
+
template: "<ul class=\"ui-chart-legend\" role=\"list\">\n @for (item of shownItems(); track item.name) {\n <li\n (mouseenter)=\"hover(item.name)\"\n (mouseleave)=\"hover(null)\"\n (focusin)=\"focus(item.name)\"\n (focusout)=\"focus(null)\"\n >\n @if (toggleable()) {\n <button\n type=\"button\"\n class=\"ui-chart-legend-item ui-chart-legend-item--button ui-text-body-alt\"\n [attr.aria-pressed]=\"!isHidden(item)\"\n [attr.aria-disabled]=\"isLocked(item) || null\"\n [attr.data-hidden]=\"isHidden(item) ? '' : null\"\n (click)=\"toggle(item)\"\n >\n <span\n class=\"ui-chart-legend-key\"\n [class.ui-chart-legend-key--dashed]=\"item.dashed\"\n [style.--ui-chart-legend-colour]=\"item.colour\"\n ></span>\n {{ item.name }}\n </button>\n } @else {\n <span class=\"ui-chart-legend-item ui-text-body-alt\">\n <span\n class=\"ui-chart-legend-key\"\n [class.ui-chart-legend-key--dashed]=\"item.dashed\"\n [style.--ui-chart-legend-colour]=\"item.colour\"\n ></span>\n {{ item.name }}\n </span>\n }\n </li>\n }\n</ul>\n\n@if (shownNote()) {\n <span class=\"text-muted-foreground-1 ui-text-caption\">{{ shownNote() }}</span>\n}\n",
|
|
620
|
+
styles: ["@layer properties;:host{display:flex;flex-wrap:wrap;align-items:center;column-gap:calc(var(--spacing, .25rem) * 4);row-gap:var(--spacing, .25rem)}.ui-chart-legend{display:flex;flex-wrap:wrap;column-gap:calc(var(--spacing, .25rem) * 4);row-gap:var(--spacing, .25rem)}.ui-chart-legend-item{display:inline-flex;align-items:center;column-gap:calc(var(--spacing, .25rem) * 1.5);color:var(--color-gray-800, oklch(27.8% .033 256.848))}.ui-chart-legend-item--button{margin-inline:calc(var(--spacing, .25rem) * -1.5);border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * .5);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .15s;transition-duration:.15s}.ui-chart-legend-item--button:focus{--tw-outline-style: none;outline-style:none}.ui-chart-legend-item--button:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-chart-legend-item--button:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-chart-legend-item--button:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-chart-legend-item--button:hover,.ui-chart-legend-item--button:focus-visible{background-color:var(--color-gray-100, oklch(96.7% .003 264.542))}.ui-chart-legend-item--button[aria-disabled]{cursor:default}.ui-chart-legend-item--button[aria-disabled]:hover{background-color:transparent}.ui-chart-legend-key{width:calc(var(--spacing, .25rem) * 2);height:calc(var(--spacing, .25rem) * 2);flex-shrink:0;border-radius:var(--radius-full, calc(infinity * 1px));border-style:var(--tw-border-style);border-width:2px;border-color:var(--ui-chart-legend-colour);background-color:var(--ui-chart-legend-colour)}.ui-chart-legend-key--dashed{height:0px;width:calc(var(--spacing, .25rem) * 4);border-radius:0;border-style:var(--tw-border-style);border-width:0px;border-top-style:var(--tw-border-style);border-top-width:2px;--tw-border-style: dashed;border-style:dashed;background-color:transparent}.ui-chart-legend-item[data-hidden]{color:var(--color-gray-500, oklch(55.1% .027 264.364))}.ui-chart-legend-item[data-hidden] .ui-chart-legend-key{background-color:transparent}.ui-chart-legend-item[data-hidden] .ui-chart-legend-key--dashed{opacity:40%}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-duration: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
|
|
578
621
|
});
|
|
579
622
|
};
|
|
580
623
|
i0.ɵɵngDeclareClassMetadata({
|
|
@@ -586,8 +629,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
586
629
|
type: Component,
|
|
587
630
|
args: [{
|
|
588
631
|
selector: "ui-chart-legend",
|
|
589
|
-
template: "<ul class=\"ui-chart-legend\" role=\"list\">\n @for (item of
|
|
590
|
-
styles: ["@layer properties
|
|
632
|
+
template: "<ul class=\"ui-chart-legend\" role=\"list\">\n @for (item of shownItems(); track item.name) {\n <li\n (mouseenter)=\"hover(item.name)\"\n (mouseleave)=\"hover(null)\"\n (focusin)=\"focus(item.name)\"\n (focusout)=\"focus(null)\"\n >\n @if (toggleable()) {\n <button\n type=\"button\"\n class=\"ui-chart-legend-item ui-chart-legend-item--button ui-text-body-alt\"\n [attr.aria-pressed]=\"!isHidden(item)\"\n [attr.aria-disabled]=\"isLocked(item) || null\"\n [attr.data-hidden]=\"isHidden(item) ? '' : null\"\n (click)=\"toggle(item)\"\n >\n <span\n class=\"ui-chart-legend-key\"\n [class.ui-chart-legend-key--dashed]=\"item.dashed\"\n [style.--ui-chart-legend-colour]=\"item.colour\"\n ></span>\n {{ item.name }}\n </button>\n } @else {\n <span class=\"ui-chart-legend-item ui-text-body-alt\">\n <span\n class=\"ui-chart-legend-key\"\n [class.ui-chart-legend-key--dashed]=\"item.dashed\"\n [style.--ui-chart-legend-colour]=\"item.colour\"\n ></span>\n {{ item.name }}\n </span>\n }\n </li>\n }\n</ul>\n\n@if (shownNote()) {\n <span class=\"text-muted-foreground-1 ui-text-caption\">{{ shownNote() }}</span>\n}\n",
|
|
633
|
+
styles: ["@layer properties;:host{display:flex;flex-wrap:wrap;align-items:center;column-gap:calc(var(--spacing, .25rem) * 4);row-gap:var(--spacing, .25rem)}.ui-chart-legend{display:flex;flex-wrap:wrap;column-gap:calc(var(--spacing, .25rem) * 4);row-gap:var(--spacing, .25rem)}.ui-chart-legend-item{display:inline-flex;align-items:center;column-gap:calc(var(--spacing, .25rem) * 1.5);color:var(--color-gray-800, oklch(27.8% .033 256.848))}.ui-chart-legend-item--button{margin-inline:calc(var(--spacing, .25rem) * -1.5);border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * .5);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .15s;transition-duration:.15s}.ui-chart-legend-item--button:focus{--tw-outline-style: none;outline-style:none}.ui-chart-legend-item--button:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-chart-legend-item--button:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-chart-legend-item--button:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-chart-legend-item--button:hover,.ui-chart-legend-item--button:focus-visible{background-color:var(--color-gray-100, oklch(96.7% .003 264.542))}.ui-chart-legend-item--button[aria-disabled]{cursor:default}.ui-chart-legend-item--button[aria-disabled]:hover{background-color:transparent}.ui-chart-legend-key{width:calc(var(--spacing, .25rem) * 2);height:calc(var(--spacing, .25rem) * 2);flex-shrink:0;border-radius:var(--radius-full, calc(infinity * 1px));border-style:var(--tw-border-style);border-width:2px;border-color:var(--ui-chart-legend-colour);background-color:var(--ui-chart-legend-colour)}.ui-chart-legend-key--dashed{height:0px;width:calc(var(--spacing, .25rem) * 4);border-radius:0;border-style:var(--tw-border-style);border-width:0px;border-top-style:var(--tw-border-style);border-top-width:2px;--tw-border-style: dashed;border-style:dashed;background-color:transparent}.ui-chart-legend-item[data-hidden]{color:var(--color-gray-500, oklch(55.1% .027 264.364))}.ui-chart-legend-item[data-hidden] .ui-chart-legend-key{background-color:transparent}.ui-chart-legend-item[data-hidden] .ui-chart-legend-key--dashed{opacity:40%}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-duration: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
|
|
591
634
|
}]
|
|
592
635
|
}],
|
|
593
636
|
ctorParameters: () => [],
|
|
@@ -597,7 +640,23 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
597
640
|
args: [{
|
|
598
641
|
isSignal: true,
|
|
599
642
|
alias: "items",
|
|
600
|
-
required:
|
|
643
|
+
required: false
|
|
644
|
+
}]
|
|
645
|
+
}],
|
|
646
|
+
note: [{
|
|
647
|
+
type: i0.Input,
|
|
648
|
+
args: [{
|
|
649
|
+
isSignal: true,
|
|
650
|
+
alias: "note",
|
|
651
|
+
required: false
|
|
652
|
+
}]
|
|
653
|
+
}],
|
|
654
|
+
for: [{
|
|
655
|
+
type: i0.Input,
|
|
656
|
+
args: [{
|
|
657
|
+
isSignal: true,
|
|
658
|
+
alias: "for",
|
|
659
|
+
required: false
|
|
601
660
|
}]
|
|
602
661
|
}],
|
|
603
662
|
hidden: [{
|
|
@@ -657,7 +716,10 @@ var UiChartComponent = class UiChartComponent {
|
|
|
657
716
|
});
|
|
658
717
|
effect(() => {
|
|
659
718
|
const chart = this.chart();
|
|
660
|
-
if (chart)
|
|
719
|
+
if (chart) {
|
|
720
|
+
this.applyHidden(chart);
|
|
721
|
+
this.applyEmphasis();
|
|
722
|
+
}
|
|
661
723
|
});
|
|
662
724
|
inject(DestroyRef).onDestroy(() => {
|
|
663
725
|
this.destroyed = true;
|
|
@@ -673,16 +735,18 @@ var UiChartComponent = class UiChartComponent {
|
|
|
673
735
|
}
|
|
674
736
|
}
|
|
675
737
|
applyEmphasis() {
|
|
676
|
-
const emphasis = untracked(this.emphasis);
|
|
677
738
|
const names = this.seriesNames();
|
|
739
|
+
const emphasis = untracked(this.emphasis);
|
|
740
|
+
const active = emphasis && names.includes(emphasis) && !untracked(this.hiddenSeries).includes(emphasis) ? emphasis : null;
|
|
678
741
|
const groups = this.canvas().nativeElement.querySelectorAll(".apexcharts-series[data\\:realIndex]");
|
|
679
742
|
for (const group of groups) {
|
|
680
743
|
const name = names[Number(group.getAttribute("data:realIndex"))];
|
|
681
|
-
group.classList.toggle("ui-chart-series--faded", !!
|
|
744
|
+
group.classList.toggle("ui-chart-series--faded", !!active && name !== active);
|
|
682
745
|
}
|
|
683
746
|
}
|
|
684
747
|
seriesNames() {
|
|
685
|
-
|
|
748
|
+
const { series = [], labels = [] } = untracked(this.options);
|
|
749
|
+
return series.map((item, index) => typeof item === "object" && item !== null && "name" in item ? item.name ?? null : labels[index] ?? null);
|
|
686
750
|
}
|
|
687
751
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
688
752
|
minVersion: "12.0.0",
|
|
@@ -1027,7 +1091,11 @@ var UiChartFrameComponent = class UiChartFrameComponent {
|
|
|
1027
1091
|
...ngDevMode ? { debugName: "showTable" } : /* istanbul ignore next */ {},
|
|
1028
1092
|
transform: booleanAttribute
|
|
1029
1093
|
});
|
|
1030
|
-
|
|
1094
|
+
showLegend = input(true, {
|
|
1095
|
+
...ngDevMode ? { debugName: "showLegend" } : /* istanbul ignore next */ {},
|
|
1096
|
+
transform: booleanAttribute
|
|
1097
|
+
});
|
|
1098
|
+
emphasis = model(null, ...ngDevMode ? [{ debugName: "emphasis" }] : /* istanbul ignore next */ []);
|
|
1031
1099
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
1032
1100
|
minVersion: "12.0.0",
|
|
1033
1101
|
version: "22.2.1",
|
|
@@ -1140,9 +1208,26 @@ var UiChartFrameComponent = class UiChartFrameComponent {
|
|
|
1140
1208
|
isSignal: true,
|
|
1141
1209
|
isRequired: false,
|
|
1142
1210
|
transformFunction: null
|
|
1211
|
+
},
|
|
1212
|
+
showLegend: {
|
|
1213
|
+
classPropertyName: "showLegend",
|
|
1214
|
+
publicName: "showLegend",
|
|
1215
|
+
isSignal: true,
|
|
1216
|
+
isRequired: false,
|
|
1217
|
+
transformFunction: null
|
|
1218
|
+
},
|
|
1219
|
+
emphasis: {
|
|
1220
|
+
classPropertyName: "emphasis",
|
|
1221
|
+
publicName: "emphasis",
|
|
1222
|
+
isSignal: true,
|
|
1223
|
+
isRequired: false,
|
|
1224
|
+
transformFunction: null
|
|
1143
1225
|
}
|
|
1144
1226
|
},
|
|
1145
|
-
outputs: {
|
|
1227
|
+
outputs: {
|
|
1228
|
+
hiddenSeries: "hiddenSeriesChange",
|
|
1229
|
+
emphasis: "emphasisChange"
|
|
1230
|
+
},
|
|
1146
1231
|
host: { classAttribute: "block w-full min-w-0" },
|
|
1147
1232
|
ngImport: i0,
|
|
1148
1233
|
template: `
|
|
@@ -1160,19 +1245,15 @@ var UiChartFrameComponent = class UiChartFrameComponent {
|
|
|
1160
1245
|
</div>
|
|
1161
1246
|
} @else {
|
|
1162
1247
|
<!-- one series needs no legend, the chart's title already names it -->
|
|
1163
|
-
@if (legendItems().length > 1 || legendNote()) {
|
|
1164
|
-
<
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
@if (legendNote()) {
|
|
1173
|
-
<span class="text-muted-foreground-1 ui-text-caption">{{ legendNote() }}</span>
|
|
1174
|
-
}
|
|
1175
|
-
</div>
|
|
1248
|
+
@if (showLegend() && (legendItems().length > 1 || legendNote())) {
|
|
1249
|
+
<ui-chart-legend
|
|
1250
|
+
class="mb-3"
|
|
1251
|
+
[items]="legendItems()"
|
|
1252
|
+
[note]="legendNote()"
|
|
1253
|
+
[(hidden)]="hiddenSeries"
|
|
1254
|
+
(focusChange)="emphasis.set($event)"
|
|
1255
|
+
toggleable
|
|
1256
|
+
/>
|
|
1176
1257
|
}
|
|
1177
1258
|
|
|
1178
1259
|
<ui-chart
|
|
@@ -1224,6 +1305,8 @@ var UiChartFrameComponent = class UiChartFrameComponent {
|
|
|
1224
1305
|
selector: "ui-chart-legend",
|
|
1225
1306
|
inputs: [
|
|
1226
1307
|
"items",
|
|
1308
|
+
"note",
|
|
1309
|
+
"for",
|
|
1227
1310
|
"hidden",
|
|
1228
1311
|
"toggleable"
|
|
1229
1312
|
],
|
|
@@ -1267,19 +1350,15 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1267
1350
|
</div>
|
|
1268
1351
|
} @else {
|
|
1269
1352
|
<!-- one series needs no legend, the chart's title already names it -->
|
|
1270
|
-
@if (legendItems().length > 1 || legendNote()) {
|
|
1271
|
-
<
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
@if (legendNote()) {
|
|
1280
|
-
<span class="text-muted-foreground-1 ui-text-caption">{{ legendNote() }}</span>
|
|
1281
|
-
}
|
|
1282
|
-
</div>
|
|
1353
|
+
@if (showLegend() && (legendItems().length > 1 || legendNote())) {
|
|
1354
|
+
<ui-chart-legend
|
|
1355
|
+
class="mb-3"
|
|
1356
|
+
[items]="legendItems()"
|
|
1357
|
+
[note]="legendNote()"
|
|
1358
|
+
[(hidden)]="hiddenSeries"
|
|
1359
|
+
(focusChange)="emphasis.set($event)"
|
|
1360
|
+
toggleable
|
|
1361
|
+
/>
|
|
1283
1362
|
}
|
|
1284
1363
|
|
|
1285
1364
|
<ui-chart
|
|
@@ -1423,6 +1502,25 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1423
1502
|
alias: "showTable",
|
|
1424
1503
|
required: false
|
|
1425
1504
|
}]
|
|
1505
|
+
}],
|
|
1506
|
+
showLegend: [{
|
|
1507
|
+
type: i0.Input,
|
|
1508
|
+
args: [{
|
|
1509
|
+
isSignal: true,
|
|
1510
|
+
alias: "showLegend",
|
|
1511
|
+
required: false
|
|
1512
|
+
}]
|
|
1513
|
+
}],
|
|
1514
|
+
emphasis: [{
|
|
1515
|
+
type: i0.Input,
|
|
1516
|
+
args: [{
|
|
1517
|
+
isSignal: true,
|
|
1518
|
+
alias: "emphasis",
|
|
1519
|
+
required: false
|
|
1520
|
+
}]
|
|
1521
|
+
}, {
|
|
1522
|
+
type: i0.Output,
|
|
1523
|
+
args: ["emphasisChange"]
|
|
1426
1524
|
}]
|
|
1427
1525
|
}
|
|
1428
1526
|
});
|
|
@@ -1531,7 +1629,7 @@ var UiBarChartComponent = class UiBarChartComponent extends UiAxisChartBase {
|
|
|
1531
1629
|
host: { classAttribute: "block w-full min-w-0" },
|
|
1532
1630
|
usesInheritance: true,
|
|
1533
1631
|
ngImport: i0,
|
|
1534
|
-
template: "<ui-chart-frame\n [options]=\"chartOptions()\"\n [ariaLabel]=\"ariaLabel()\"\n [categories]=\"categories()\"\n [series]=\"series()\"\n [legendItems]=\"legendItems()\"\n [legendNote]=\"legendNote()\"\n [(hiddenSeries)]=\"hiddenSeries\"\n [valueFormatter]=\"valueFormatter()\"\n [categoryLabel]=\"categoryLabel()\"\n [height]=\"height()\"\n [emptyText]=\"emptyText()\"\n [loading]=\"loading()\"\n [empty]=\"isEmpty()\"\n [showTable]=\"showTable()\"\n/>\n",
|
|
1632
|
+
template: "<ui-chart-frame\n [options]=\"chartOptions()\"\n [ariaLabel]=\"ariaLabel()\"\n [categories]=\"categories()\"\n [series]=\"series()\"\n [legendItems]=\"legendItems()\"\n [legendNote]=\"legendNote()\"\n [(hiddenSeries)]=\"hiddenSeries\"\n [(emphasis)]=\"emphasis\"\n [showLegend]=\"legend() === 'auto'\"\n [valueFormatter]=\"valueFormatter()\"\n [categoryLabel]=\"categoryLabel()\"\n [height]=\"height()\"\n [emptyText]=\"emptyText()\"\n [loading]=\"loading()\"\n [empty]=\"isEmpty()\"\n [showTable]=\"showTable()\"\n/>\n",
|
|
1535
1633
|
dependencies: [{
|
|
1536
1634
|
kind: "component",
|
|
1537
1635
|
type: UiChartFrameComponent,
|
|
@@ -1550,9 +1648,11 @@ var UiBarChartComponent = class UiBarChartComponent extends UiAxisChartBase {
|
|
|
1550
1648
|
"emptyText",
|
|
1551
1649
|
"loading",
|
|
1552
1650
|
"empty",
|
|
1553
|
-
"showTable"
|
|
1651
|
+
"showTable",
|
|
1652
|
+
"showLegend",
|
|
1653
|
+
"emphasis"
|
|
1554
1654
|
],
|
|
1555
|
-
outputs: ["hiddenSeriesChange"]
|
|
1655
|
+
outputs: ["hiddenSeriesChange", "emphasisChange"]
|
|
1556
1656
|
}]
|
|
1557
1657
|
});
|
|
1558
1658
|
};
|
|
@@ -1567,7 +1667,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1567
1667
|
selector: "ui-bar-chart",
|
|
1568
1668
|
imports: [UiChartFrameComponent],
|
|
1569
1669
|
host: { class: "block w-full min-w-0" },
|
|
1570
|
-
template: "<ui-chart-frame\n [options]=\"chartOptions()\"\n [ariaLabel]=\"ariaLabel()\"\n [categories]=\"categories()\"\n [series]=\"series()\"\n [legendItems]=\"legendItems()\"\n [legendNote]=\"legendNote()\"\n [(hiddenSeries)]=\"hiddenSeries\"\n [valueFormatter]=\"valueFormatter()\"\n [categoryLabel]=\"categoryLabel()\"\n [height]=\"height()\"\n [emptyText]=\"emptyText()\"\n [loading]=\"loading()\"\n [empty]=\"isEmpty()\"\n [showTable]=\"showTable()\"\n/>\n"
|
|
1670
|
+
template: "<ui-chart-frame\n [options]=\"chartOptions()\"\n [ariaLabel]=\"ariaLabel()\"\n [categories]=\"categories()\"\n [series]=\"series()\"\n [legendItems]=\"legendItems()\"\n [legendNote]=\"legendNote()\"\n [(hiddenSeries)]=\"hiddenSeries\"\n [(emphasis)]=\"emphasis\"\n [showLegend]=\"legend() === 'auto'\"\n [valueFormatter]=\"valueFormatter()\"\n [categoryLabel]=\"categoryLabel()\"\n [height]=\"height()\"\n [emptyText]=\"emptyText()\"\n [loading]=\"loading()\"\n [empty]=\"isEmpty()\"\n [showTable]=\"showTable()\"\n/>\n"
|
|
1571
1671
|
}]
|
|
1572
1672
|
}],
|
|
1573
1673
|
propDecorators: {
|
|
@@ -1725,7 +1825,7 @@ var UiLineChartComponent = class UiLineChartComponent extends UiAxisChartBase {
|
|
|
1725
1825
|
host: { classAttribute: "block w-full min-w-0" },
|
|
1726
1826
|
usesInheritance: true,
|
|
1727
1827
|
ngImport: i0,
|
|
1728
|
-
template: "<ui-chart-frame\n [options]=\"chartOptions()\"\n [ariaLabel]=\"ariaLabel()\"\n [categories]=\"categories()\"\n [series]=\"series()\"\n [legendItems]=\"legendItems()\"\n [legendNote]=\"legendNote()\"\n [(hiddenSeries)]=\"hiddenSeries\"\n [valueFormatter]=\"valueFormatter()\"\n [categoryLabel]=\"categoryLabel()\"\n [height]=\"height()\"\n [emptyText]=\"emptyText()\"\n [loading]=\"loading()\"\n [empty]=\"isEmpty()\"\n [showTable]=\"showTable()\"\n/>\n",
|
|
1828
|
+
template: "<ui-chart-frame\n [options]=\"chartOptions()\"\n [ariaLabel]=\"ariaLabel()\"\n [categories]=\"categories()\"\n [series]=\"series()\"\n [legendItems]=\"legendItems()\"\n [legendNote]=\"legendNote()\"\n [(hiddenSeries)]=\"hiddenSeries\"\n [(emphasis)]=\"emphasis\"\n [showLegend]=\"legend() === 'auto'\"\n [valueFormatter]=\"valueFormatter()\"\n [categoryLabel]=\"categoryLabel()\"\n [height]=\"height()\"\n [emptyText]=\"emptyText()\"\n [loading]=\"loading()\"\n [empty]=\"isEmpty()\"\n [showTable]=\"showTable()\"\n/>\n",
|
|
1729
1829
|
dependencies: [{
|
|
1730
1830
|
kind: "component",
|
|
1731
1831
|
type: UiChartFrameComponent,
|
|
@@ -1744,9 +1844,11 @@ var UiLineChartComponent = class UiLineChartComponent extends UiAxisChartBase {
|
|
|
1744
1844
|
"emptyText",
|
|
1745
1845
|
"loading",
|
|
1746
1846
|
"empty",
|
|
1747
|
-
"showTable"
|
|
1847
|
+
"showTable",
|
|
1848
|
+
"showLegend",
|
|
1849
|
+
"emphasis"
|
|
1748
1850
|
],
|
|
1749
|
-
outputs: ["hiddenSeriesChange"]
|
|
1851
|
+
outputs: ["hiddenSeriesChange", "emphasisChange"]
|
|
1750
1852
|
}]
|
|
1751
1853
|
});
|
|
1752
1854
|
};
|
|
@@ -1761,7 +1863,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1761
1863
|
selector: "ui-line-chart",
|
|
1762
1864
|
imports: [UiChartFrameComponent],
|
|
1763
1865
|
host: { class: "block w-full min-w-0" },
|
|
1764
|
-
template: "<ui-chart-frame\n [options]=\"chartOptions()\"\n [ariaLabel]=\"ariaLabel()\"\n [categories]=\"categories()\"\n [series]=\"series()\"\n [legendItems]=\"legendItems()\"\n [legendNote]=\"legendNote()\"\n [(hiddenSeries)]=\"hiddenSeries\"\n [valueFormatter]=\"valueFormatter()\"\n [categoryLabel]=\"categoryLabel()\"\n [height]=\"height()\"\n [emptyText]=\"emptyText()\"\n [loading]=\"loading()\"\n [empty]=\"isEmpty()\"\n [showTable]=\"showTable()\"\n/>\n"
|
|
1866
|
+
template: "<ui-chart-frame\n [options]=\"chartOptions()\"\n [ariaLabel]=\"ariaLabel()\"\n [categories]=\"categories()\"\n [series]=\"series()\"\n [legendItems]=\"legendItems()\"\n [legendNote]=\"legendNote()\"\n [(hiddenSeries)]=\"hiddenSeries\"\n [(emphasis)]=\"emphasis\"\n [showLegend]=\"legend() === 'auto'\"\n [valueFormatter]=\"valueFormatter()\"\n [categoryLabel]=\"categoryLabel()\"\n [height]=\"height()\"\n [emptyText]=\"emptyText()\"\n [loading]=\"loading()\"\n [empty]=\"isEmpty()\"\n [showTable]=\"showTable()\"\n/>\n"
|
|
1765
1867
|
}]
|
|
1766
1868
|
}],
|
|
1767
1869
|
propDecorators: {
|
|
@@ -1788,6 +1890,206 @@ const LineChartCurves = [
|
|
|
1788
1890
|
"smooth",
|
|
1789
1891
|
"stepline"
|
|
1790
1892
|
];
|
|
1893
|
+
const percentFormatter = new Intl.NumberFormat("en-GB", {
|
|
1894
|
+
style: "percent",
|
|
1895
|
+
maximumFractionDigits: 1
|
|
1896
|
+
});
|
|
1897
|
+
var UiPieChartComponent = class UiPieChartComponent extends UiAxisChartBase {
|
|
1898
|
+
variant = input("pie", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
|
|
1899
|
+
totalLabel = input("Total", ...ngDevMode ? [{ debugName: "totalLabel" }] : /* istanbul ignore next */ []);
|
|
1900
|
+
values = computed(() => this.series()[0]?.data ?? [], ...ngDevMode ? [{ debugName: "values" }] : /* istanbul ignore next */ []);
|
|
1901
|
+
isEmpty = computed(() => !this.values().some((value) => value !== null && value > 0), ...ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []);
|
|
1902
|
+
isMuted = computed(() => {
|
|
1903
|
+
const highlight = this.highlight();
|
|
1904
|
+
return this.categories().map((name) => !!highlight && !highlight.includes(name));
|
|
1905
|
+
}, ...ngDevMode ? [{ debugName: "isMuted" }] : /* istanbul ignore next */ []);
|
|
1906
|
+
styles = computed(() => {
|
|
1907
|
+
const highlight = this.highlight();
|
|
1908
|
+
const muted = this.isMuted();
|
|
1909
|
+
return this.categories().map((name, index) => muted[index] ? {
|
|
1910
|
+
colour: CHART_INK.context,
|
|
1911
|
+
dashed: false
|
|
1912
|
+
} : chartSeriesStyle(highlight ? highlight.indexOf(name) : index, false));
|
|
1913
|
+
}, ...ngDevMode ? [{ debugName: "styles" }] : /* istanbul ignore next */ []);
|
|
1914
|
+
legendItems = computed(() => {
|
|
1915
|
+
const highlight = this.highlight();
|
|
1916
|
+
const items = this.categories().map((name, index) => ({
|
|
1917
|
+
name,
|
|
1918
|
+
...this.styles()[index]
|
|
1919
|
+
})).filter((_, index) => !this.isMuted()[index]);
|
|
1920
|
+
return highlight ? items.sort((a, b) => highlight.indexOf(a.name) - highlight.indexOf(b.name)) : items;
|
|
1921
|
+
}, ...ngDevMode ? [{ debugName: "legendItems" }] : /* istanbul ignore next */ []);
|
|
1922
|
+
slices = computed(() => {
|
|
1923
|
+
const hidden = this.hiddenSeries();
|
|
1924
|
+
const values = this.values();
|
|
1925
|
+
const colours = this.colours();
|
|
1926
|
+
return this.categories().map((name, index) => ({
|
|
1927
|
+
name,
|
|
1928
|
+
value: values[index] ?? 0,
|
|
1929
|
+
colour: colours[index]
|
|
1930
|
+
})).filter((slice) => !hidden.includes(slice.name));
|
|
1931
|
+
}, ...ngDevMode ? [{ debugName: "slices" }] : /* istanbul ignore next */ []);
|
|
1932
|
+
chartOptions = computed(() => {
|
|
1933
|
+
const base = baseChartOptions();
|
|
1934
|
+
const slices = this.slices();
|
|
1935
|
+
const donut = this.variant() === "donut";
|
|
1936
|
+
const total = slices.reduce((sum, slice) => sum + slice.value, 0);
|
|
1937
|
+
const centreText = {
|
|
1938
|
+
fontSize: "12px",
|
|
1939
|
+
color: CHART_INK.muted,
|
|
1940
|
+
offsetY: -4
|
|
1941
|
+
};
|
|
1942
|
+
return mergeChartOptions({
|
|
1943
|
+
...base,
|
|
1944
|
+
chart: {
|
|
1945
|
+
...base.chart,
|
|
1946
|
+
type: donut ? "donut" : "pie",
|
|
1947
|
+
height: this.height()
|
|
1948
|
+
},
|
|
1949
|
+
colors: slices.map((slice) => slice.colour),
|
|
1950
|
+
labels: slices.map((slice) => slice.name),
|
|
1951
|
+
series: slices.map((slice) => slice.value),
|
|
1952
|
+
stroke: {
|
|
1953
|
+
show: true,
|
|
1954
|
+
width: 2,
|
|
1955
|
+
colors: [CHART_INK.surface]
|
|
1956
|
+
},
|
|
1957
|
+
states: {
|
|
1958
|
+
...base.states,
|
|
1959
|
+
hover: { filter: { type: "darken" } }
|
|
1960
|
+
},
|
|
1961
|
+
plotOptions: { pie: {
|
|
1962
|
+
expandOnClick: false,
|
|
1963
|
+
donut: {
|
|
1964
|
+
size: "65%",
|
|
1965
|
+
labels: {
|
|
1966
|
+
show: donut,
|
|
1967
|
+
name: centreText,
|
|
1968
|
+
value: {
|
|
1969
|
+
fontSize: "20px",
|
|
1970
|
+
fontWeight: 600,
|
|
1971
|
+
color: CHART_INK.text,
|
|
1972
|
+
offsetY: 4,
|
|
1973
|
+
formatter: (value) => this.formatValue(Number(value))
|
|
1974
|
+
},
|
|
1975
|
+
total: {
|
|
1976
|
+
show: true,
|
|
1977
|
+
showAlways: true,
|
|
1978
|
+
label: this.totalLabel(),
|
|
1979
|
+
...centreText,
|
|
1980
|
+
formatter: () => this.formatValue(total)
|
|
1981
|
+
}
|
|
1982
|
+
}
|
|
1983
|
+
}
|
|
1984
|
+
} },
|
|
1985
|
+
tooltip: {
|
|
1986
|
+
theme: "light",
|
|
1987
|
+
fillSeriesColor: false,
|
|
1988
|
+
custom: ({ seriesIndex }) => {
|
|
1989
|
+
const slice = slices[seriesIndex];
|
|
1990
|
+
return slice ? chartTooltipHtml("", [{
|
|
1991
|
+
colour: slice.colour,
|
|
1992
|
+
name: slice.name,
|
|
1993
|
+
value: this.formatValue(slice.value)
|
|
1994
|
+
}], total ? `${percentFormatter.format(slice.value / total)} of total` : "") : "";
|
|
1995
|
+
}
|
|
1996
|
+
}
|
|
1997
|
+
}, this.options());
|
|
1998
|
+
}, ...ngDevMode ? [{ debugName: "chartOptions" }] : /* istanbul ignore next */ []);
|
|
1999
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
2000
|
+
minVersion: "12.0.0",
|
|
2001
|
+
version: "22.2.1",
|
|
2002
|
+
ngImport: i0,
|
|
2003
|
+
type: UiPieChartComponent,
|
|
2004
|
+
deps: null,
|
|
2005
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
2006
|
+
});
|
|
2007
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
2008
|
+
minVersion: "17.1.0",
|
|
2009
|
+
version: "22.2.1",
|
|
2010
|
+
type: UiPieChartComponent,
|
|
2011
|
+
isStandalone: true,
|
|
2012
|
+
selector: "ui-pie-chart",
|
|
2013
|
+
inputs: {
|
|
2014
|
+
variant: {
|
|
2015
|
+
classPropertyName: "variant",
|
|
2016
|
+
publicName: "variant",
|
|
2017
|
+
isSignal: true,
|
|
2018
|
+
isRequired: false,
|
|
2019
|
+
transformFunction: null
|
|
2020
|
+
},
|
|
2021
|
+
totalLabel: {
|
|
2022
|
+
classPropertyName: "totalLabel",
|
|
2023
|
+
publicName: "totalLabel",
|
|
2024
|
+
isSignal: true,
|
|
2025
|
+
isRequired: false,
|
|
2026
|
+
transformFunction: null
|
|
2027
|
+
}
|
|
2028
|
+
},
|
|
2029
|
+
host: { classAttribute: "block w-full min-w-0" },
|
|
2030
|
+
usesInheritance: true,
|
|
2031
|
+
ngImport: i0,
|
|
2032
|
+
template: "<ui-chart-frame\n [options]=\"chartOptions()\"\n [ariaLabel]=\"ariaLabel()\"\n [categories]=\"categories()\"\n [series]=\"series()\"\n [legendItems]=\"legendItems()\"\n [legendNote]=\"legendNote()\"\n [(hiddenSeries)]=\"hiddenSeries\"\n [(emphasis)]=\"emphasis\"\n [showLegend]=\"legend() === 'auto'\"\n [valueFormatter]=\"valueFormatter()\"\n [categoryLabel]=\"categoryLabel()\"\n [height]=\"height()\"\n [emptyText]=\"emptyText()\"\n [loading]=\"loading()\"\n [empty]=\"isEmpty()\"\n [showTable]=\"showTable()\"\n/>\n",
|
|
2033
|
+
dependencies: [{
|
|
2034
|
+
kind: "component",
|
|
2035
|
+
type: UiChartFrameComponent,
|
|
2036
|
+
selector: "ui-chart-frame",
|
|
2037
|
+
inputs: [
|
|
2038
|
+
"options",
|
|
2039
|
+
"ariaLabel",
|
|
2040
|
+
"categories",
|
|
2041
|
+
"series",
|
|
2042
|
+
"legendItems",
|
|
2043
|
+
"legendNote",
|
|
2044
|
+
"hiddenSeries",
|
|
2045
|
+
"valueFormatter",
|
|
2046
|
+
"categoryLabel",
|
|
2047
|
+
"height",
|
|
2048
|
+
"emptyText",
|
|
2049
|
+
"loading",
|
|
2050
|
+
"empty",
|
|
2051
|
+
"showTable",
|
|
2052
|
+
"showLegend",
|
|
2053
|
+
"emphasis"
|
|
2054
|
+
],
|
|
2055
|
+
outputs: ["hiddenSeriesChange", "emphasisChange"]
|
|
2056
|
+
}]
|
|
2057
|
+
});
|
|
2058
|
+
};
|
|
2059
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
2060
|
+
minVersion: "12.0.0",
|
|
2061
|
+
version: "22.2.1",
|
|
2062
|
+
ngImport: i0,
|
|
2063
|
+
type: UiPieChartComponent,
|
|
2064
|
+
decorators: [{
|
|
2065
|
+
type: Component,
|
|
2066
|
+
args: [{
|
|
2067
|
+
selector: "ui-pie-chart",
|
|
2068
|
+
imports: [UiChartFrameComponent],
|
|
2069
|
+
host: { class: "block w-full min-w-0" },
|
|
2070
|
+
template: "<ui-chart-frame\n [options]=\"chartOptions()\"\n [ariaLabel]=\"ariaLabel()\"\n [categories]=\"categories()\"\n [series]=\"series()\"\n [legendItems]=\"legendItems()\"\n [legendNote]=\"legendNote()\"\n [(hiddenSeries)]=\"hiddenSeries\"\n [(emphasis)]=\"emphasis\"\n [showLegend]=\"legend() === 'auto'\"\n [valueFormatter]=\"valueFormatter()\"\n [categoryLabel]=\"categoryLabel()\"\n [height]=\"height()\"\n [emptyText]=\"emptyText()\"\n [loading]=\"loading()\"\n [empty]=\"isEmpty()\"\n [showTable]=\"showTable()\"\n/>\n"
|
|
2071
|
+
}]
|
|
2072
|
+
}],
|
|
2073
|
+
propDecorators: {
|
|
2074
|
+
variant: [{
|
|
2075
|
+
type: i0.Input,
|
|
2076
|
+
args: [{
|
|
2077
|
+
isSignal: true,
|
|
2078
|
+
alias: "variant",
|
|
2079
|
+
required: false
|
|
2080
|
+
}]
|
|
2081
|
+
}],
|
|
2082
|
+
totalLabel: [{
|
|
2083
|
+
type: i0.Input,
|
|
2084
|
+
args: [{
|
|
2085
|
+
isSignal: true,
|
|
2086
|
+
alias: "totalLabel",
|
|
2087
|
+
required: false
|
|
2088
|
+
}]
|
|
2089
|
+
}]
|
|
2090
|
+
}
|
|
2091
|
+
});
|
|
2092
|
+
const PieChartVariants = ["pie", "donut"];
|
|
1791
2093
|
var UiCheckboxComponent = class UiCheckboxComponent {
|
|
1792
2094
|
value = model.required(...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
|
|
1793
2095
|
id = input("", ...ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []);
|
|
@@ -3554,6 +3856,67 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
3554
3856
|
}]
|
|
3555
3857
|
}
|
|
3556
3858
|
});
|
|
3859
|
+
const radiusClasses = {
|
|
3860
|
+
none: "rounded-none",
|
|
3861
|
+
sm: "rounded-sm",
|
|
3862
|
+
md: "rounded-md",
|
|
3863
|
+
lg: "rounded-lg",
|
|
3864
|
+
xl: "rounded-xl"
|
|
3865
|
+
};
|
|
3866
|
+
var UiCardComponent = class UiCardComponent {
|
|
3867
|
+
radius = input("md", ...ngDevMode ? [{ debugName: "radius" }] : /* istanbul ignore next */ []);
|
|
3868
|
+
generatedClasses = computed(() => radiusClasses[this.radius()], ...ngDevMode ? [{ debugName: "generatedClasses" }] : /* istanbul ignore next */ []);
|
|
3869
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
3870
|
+
minVersion: "12.0.0",
|
|
3871
|
+
version: "22.2.1",
|
|
3872
|
+
ngImport: i0,
|
|
3873
|
+
type: UiCardComponent,
|
|
3874
|
+
deps: [],
|
|
3875
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
3876
|
+
});
|
|
3877
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
3878
|
+
minVersion: "17.1.0",
|
|
3879
|
+
version: "22.2.1",
|
|
3880
|
+
type: UiCardComponent,
|
|
3881
|
+
isStandalone: true,
|
|
3882
|
+
selector: "ui-card",
|
|
3883
|
+
inputs: { radius: {
|
|
3884
|
+
classPropertyName: "radius",
|
|
3885
|
+
publicName: "radius",
|
|
3886
|
+
isSignal: true,
|
|
3887
|
+
isRequired: false,
|
|
3888
|
+
transformFunction: null
|
|
3889
|
+
} },
|
|
3890
|
+
host: { properties: { "class": "generatedClasses()" } },
|
|
3891
|
+
ngImport: i0,
|
|
3892
|
+
template: "<ng-content />",
|
|
3893
|
+
isInline: true,
|
|
3894
|
+
styles: ["@layer properties;:host{display:block;border-style:var(--tw-border-style);border-width:1px;border-color:var(--card-line);background-color:var(--card);--tw-shadow: 0 1px var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
|
|
3895
|
+
});
|
|
3896
|
+
};
|
|
3897
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
3898
|
+
minVersion: "12.0.0",
|
|
3899
|
+
version: "22.2.1",
|
|
3900
|
+
ngImport: i0,
|
|
3901
|
+
type: UiCardComponent,
|
|
3902
|
+
decorators: [{
|
|
3903
|
+
type: Component,
|
|
3904
|
+
args: [{
|
|
3905
|
+
selector: "ui-card",
|
|
3906
|
+
template: "<ng-content />",
|
|
3907
|
+
host: { "[class]": "generatedClasses()" },
|
|
3908
|
+
styles: ["@layer properties;:host{display:block;border-style:var(--tw-border-style);border-width:1px;border-color:var(--card-line);background-color:var(--card);--tw-shadow: 0 1px var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
|
|
3909
|
+
}]
|
|
3910
|
+
}],
|
|
3911
|
+
propDecorators: { radius: [{
|
|
3912
|
+
type: i0.Input,
|
|
3913
|
+
args: [{
|
|
3914
|
+
isSignal: true,
|
|
3915
|
+
alias: "radius",
|
|
3916
|
+
required: false
|
|
3917
|
+
}]
|
|
3918
|
+
}] }
|
|
3919
|
+
});
|
|
3557
3920
|
var UiOverlayPositioner = class UiOverlayPositioner {
|
|
3558
3921
|
position = (reference, overlay, options) => computePosition(reference, overlay, {
|
|
3559
3922
|
placement: options.placement,
|
|
@@ -3591,36 +3954,82 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
3591
3954
|
args: [{ providedIn: "root" }]
|
|
3592
3955
|
}]
|
|
3593
3956
|
});
|
|
3594
|
-
var
|
|
3595
|
-
|
|
3596
|
-
content = input(...ngDevMode ? [void 0, { debugName: "content" }] : /* istanbul ignore next */ []);
|
|
3597
|
-
anchor = input(...ngDevMode ? [void 0, { debugName: "anchor" }] : /* istanbul ignore next */ []);
|
|
3598
|
-
closeBehaviour = input("whenClickAnywhere", ...ngDevMode ? [{ debugName: "closeBehaviour" }] : /* istanbul ignore next */ []);
|
|
3599
|
-
isOpen = input.required(...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
|
|
3600
|
-
placement = input("bottom-start", ...ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []);
|
|
3601
|
-
offset = input(0, ...ngDevMode ? [{ debugName: "offset" }] : /* istanbul ignore next */ []);
|
|
3602
|
-
viewportPadding = input(0, ...ngDevMode ? [{ debugName: "viewportPadding" }] : /* istanbul ignore next */ []);
|
|
3603
|
-
matchWidth = input(null, ...ngDevMode ? [{ debugName: "matchWidth" }] : /* istanbul ignore next */ []);
|
|
3957
|
+
var UiOverlayStack = class UiOverlayStack {
|
|
3958
|
+
entries = [];
|
|
3604
3959
|
constructor() {
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
document.removeEventListener("keydown", this.onKeyDown);
|
|
3611
|
-
});
|
|
3960
|
+
document.addEventListener("click", this.onDocumentClick);
|
|
3961
|
+
document.addEventListener("keydown", this.onKeyDown);
|
|
3962
|
+
inject(DestroyRef).onDestroy(() => {
|
|
3963
|
+
document.removeEventListener("click", this.onDocumentClick);
|
|
3964
|
+
document.removeEventListener("keydown", this.onKeyDown);
|
|
3612
3965
|
});
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3966
|
+
}
|
|
3967
|
+
push = (entry) => {
|
|
3968
|
+
this.remove(entry);
|
|
3969
|
+
this.entries.push(entry);
|
|
3970
|
+
};
|
|
3971
|
+
remove = (entry) => {
|
|
3972
|
+
const index = this.entries.indexOf(entry);
|
|
3973
|
+
if (index !== -1) this.entries.splice(index, 1);
|
|
3974
|
+
};
|
|
3975
|
+
top = () => this.entries.at(-1);
|
|
3976
|
+
onDocumentClick = (event) => this.top()?.onDocumentClick(event);
|
|
3977
|
+
onKeyDown = (event) => this.top()?.onKeyDown(event);
|
|
3978
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
3979
|
+
minVersion: "12.0.0",
|
|
3980
|
+
version: "22.2.1",
|
|
3981
|
+
ngImport: i0,
|
|
3982
|
+
type: UiOverlayStack,
|
|
3983
|
+
deps: [],
|
|
3984
|
+
target: i0.ɵɵFactoryTarget.Injectable
|
|
3985
|
+
});
|
|
3986
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({
|
|
3987
|
+
minVersion: "12.0.0",
|
|
3988
|
+
version: "22.2.1",
|
|
3989
|
+
ngImport: i0,
|
|
3990
|
+
type: UiOverlayStack,
|
|
3991
|
+
providedIn: "root"
|
|
3992
|
+
});
|
|
3993
|
+
};
|
|
3994
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
3995
|
+
minVersion: "12.0.0",
|
|
3996
|
+
version: "22.2.1",
|
|
3997
|
+
ngImport: i0,
|
|
3998
|
+
type: UiOverlayStack,
|
|
3999
|
+
decorators: [{
|
|
4000
|
+
type: Injectable,
|
|
4001
|
+
args: [{ providedIn: "root" }]
|
|
4002
|
+
}],
|
|
4003
|
+
ctorParameters: () => []
|
|
4004
|
+
});
|
|
4005
|
+
var UiOverlayComponent = class UiOverlayComponent {
|
|
4006
|
+
positioner = inject(UiOverlayPositioner);
|
|
4007
|
+
stack = inject(UiOverlayStack);
|
|
4008
|
+
content = input(...ngDevMode ? [void 0, { debugName: "content" }] : /* istanbul ignore next */ []);
|
|
4009
|
+
anchor = input(...ngDevMode ? [void 0, { debugName: "anchor" }] : /* istanbul ignore next */ []);
|
|
4010
|
+
closeBehaviour = input("whenClickAnywhere", ...ngDevMode ? [{ debugName: "closeBehaviour" }] : /* istanbul ignore next */ []);
|
|
4011
|
+
isOpen = input.required(...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
|
|
4012
|
+
placement = input("bottom-start", ...ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []);
|
|
4013
|
+
offset = input(0, ...ngDevMode ? [{ debugName: "offset" }] : /* istanbul ignore next */ []);
|
|
4014
|
+
viewportPadding = input(0, ...ngDevMode ? [{ debugName: "viewportPadding" }] : /* istanbul ignore next */ []);
|
|
4015
|
+
matchWidth = input(null, ...ngDevMode ? [{ debugName: "matchWidth" }] : /* istanbul ignore next */ []);
|
|
4016
|
+
constructor() {
|
|
4017
|
+
effect((onCleanup) => {
|
|
4018
|
+
if (!this.isOpen()()) return;
|
|
4019
|
+
this.stack.push(this);
|
|
4020
|
+
onCleanup(() => this.stack.remove(this));
|
|
4021
|
+
});
|
|
4022
|
+
effect((onCleanup) => {
|
|
4023
|
+
const anchor = this.anchor();
|
|
4024
|
+
const content = this.content();
|
|
4025
|
+
if (!this.isOpen()() || !anchor || !content) return;
|
|
4026
|
+
const referenceElement = anchor.nativeElement;
|
|
4027
|
+
const floatingElement = content.nativeElement;
|
|
4028
|
+
const update = () => {
|
|
4029
|
+
const matchWidth = this.matchWidth();
|
|
4030
|
+
if (matchWidth) {
|
|
4031
|
+
const width = `${referenceElement.offsetWidth}px`;
|
|
4032
|
+
if (matchWidth === "both") {
|
|
3624
4033
|
floatingElement.style.maxWidth = width;
|
|
3625
4034
|
floatingElement.style.minWidth = width;
|
|
3626
4035
|
} else floatingElement.style[matchWidth] = width;
|
|
@@ -4516,7 +4925,7 @@ var UiSelectComponent = class UiSelectComponent {
|
|
|
4516
4925
|
isSignal: true
|
|
4517
4926
|
}],
|
|
4518
4927
|
ngImport: i0,
|
|
4519
|
-
template: "<ui-dropdown\n [isOpen]=\"isOpen\"\n [placement]=\"placement()\"\n [closeBehaviour]=\"closeBehaviour()\"\n matchWidth=\"minWidth\"\n class=\"w-full\"\n>\n @if (searchMode() === 'inline') {\n <ui-input\n [value]=\"isOpen() ? query() : triggerLabel()\"\n (valueChange)=\"onQueryChange($event)\"\n [placeholder]=\"triggerLabel()\"\n [disabled]=\"disabled()\"\n [id]=\"id()\"\n [describedBy]=\"describedBy()\"\n [ariaExpanded]=\"isOpen()\"\n [ariaControls]=\"listId\"\n [ariaActiveDescendant]=\"activeId()\"\n inputRole=\"combobox\"\n ariaAutocomplete=\"list\"\n ariaHasPopup=\"listbox\"\n class=\"border-0!\"\n classes=\"h-auto!\"\n autocomplete=\"off\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-template #trailing>\n <ng-icon\n name=\"heroChevronDown\"\n class=\"mx-3 size-4 text-muted-foreground shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n </ng-template>\n </ui-input>\n } @else {\n <div class=\"ui-select-trigger\" [class.ui-select-trigger--tags]=\"showTags()\">\n <button\n type=\"button\"\n class=\"flex justify-between items-center gap-2 px-3 py-2 text-left ui-select\"\n aria-haspopup=\"listbox\"\n [attr.id]=\"id() || null\"\n [attr.aria-describedby]=\"describedBy() || null\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"searchMode() === 'none' ? activeId() : null\"\n [disabled]=\"disabled()\"\n [attr.data-invalid]=\"validationState() === false ? '' : null\"\n [attr.data-valid]=\"validationState() === true ? '' : null\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n @if (showTags()) {\n <!-- the visible tags sit on top, this names the button for screen readers -->\n <span class=\"sr-only\">{{ triggerLabel() }}</span>\n } @else if (!multiple() && triggerTemplate() && selectedItem() !== null) {\n <span class=\"flex items-center gap-2 min-w-0 ui-text-body\">\n <ng-container\n *ngTemplateOutlet=\"triggerTemplate()!; context: { $implicit: selectedItem()! }\"\n />\n </span>\n } @else if (multiple()) {\n <span class=\"ui-select-label ui-text-body\">\n <span class=\"ui-select-label-sizer\" aria-hidden=\"true\">{{ placeholder() }}</span>\n <span class=\"ui-select-label-text\">{{ triggerLabel() }}</span>\n </span>\n } @else {\n <span class=\"truncate ui-text-body\">{{ triggerLabel() }}</span>\n }\n\n <ng-icon\n name=\"heroChevronDown\"\n class=\"ms-auto size-4 text-muted-foreground shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n </button>\n\n @if (showTags()) {\n <span class=\"ui-select-tags-sizer ui-text-body\" aria-hidden=\"true\">\n {{ placeholder() }}\n </span>\n\n <div class=\"ui-select-tags\">\n @for (item of selectedItems(); track $index) {\n <ui-badge\n intent=\"secondary\"\n appearance=\"soft\"\n size=\"xs\"\n classes=\"ui-select-tag ui-text-caption\"\n >\n <span class=\"truncate\">{{ displayWith()(item) }}</span>\n\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ui-select-tag-remove\"\n [attr.aria-label]=\"'Remove ' + displayWith()(item)\"\n (click)=\"removeItem(item)\"\n >\n <ng-icon name=\"heroXMark\" class=\"size-3 shrink-0\" />\n </button>\n }\n </ui-badge>\n } @empty {\n <span class=\"text-muted-foreground-1 truncate ui-text-body\">\n {{ placeholder() }}\n </span>\n }\n </div>\n }\n </div>\n }\n\n @if (isOpen()) {\n <div uiDropdownContent class=\"py-2\">\n <div class=\"bg-white shadow-xs border border-dropdown-divider rounded-lg divide-y\">\n @if (searchMode() === 'dropdown') {\n <div class=\"p-2\">\n <ui-input\n [value]=\"query()\"\n (valueChange)=\"onQueryChange($event)\"\n (keydown)=\"onKeydown($event)\"\n [ariaExpanded]=\"true\"\n [ariaControls]=\"listId\"\n [ariaActiveDescendant]=\"activeId()\"\n inputRole=\"combobox\"\n ariaAutocomplete=\"list\"\n ariaLabel=\"Search options\"\n autocomplete=\"off\"\n placeholder=\"Search...\"\n />\n </div>\n }\n\n <div\n #scrollContainer\n class=\"py-1 max-h-60 overflow-y-auto\"\n role=\"listbox\"\n [attr.id]=\"listId\"\n [attr.aria-multiselectable]=\"multiple() || null\"\n (scroll)=\"onScroll(scrollContainer)\"\n >\n @for (row of rows(); track row.id) {\n @switch (row.kind) {\n @case ('group') {\n <div\n class=\"ui-select-group ui-text-caption\"\n role=\"presentation\"\n >\n {{ row.label }}\n </div>\n }\n @case ('clear') {\n <button\n type=\"button\"\n role=\"option\"\n aria-selected=\"false\"\n tabindex=\"-1\"\n class=\"text-muted-foreground-1 ui-select-option ui-text-body-alt\"\n [attr.id]=\"row.id\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"clear()\"\n >\n <span class=\"truncate\">{{ clearLabel() }}</span>\n </button>\n }\n @case ('item') {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"text-dropdown-item-foreground ui-select-option ui-text-body-alt\"\n [attr.id]=\"row.id\"\n [attr.aria-selected]=\"row.selected\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"onItemClick(row.item)\"\n >\n @if (optionTemplate(); as template) {\n <span class=\"flex items-center gap-2 min-w-0 grow\">\n <ng-container\n *ngTemplateOutlet=\"template; context: {\n $implicit: row.item,\n selected: row.selected,\n active: row.index === activeIndex()\n }\"\n />\n </span>\n } @else {\n <span class=\"truncate\">{{ row.label }}</span>\n }\n\n @if (row.selected) {\n <ng-icon\n name=\"heroCheck\"\n class=\"size-4 text-primary-600! shrink-0\"\n strokeWidth=\"2.5\"\n />\n }\n </button>\n }\n @case ('create') {\n <button\n type=\"button\"\n role=\"option\"\n aria-selected=\"false\"\n tabindex=\"-1\"\n class=\"justify-start! text-primary-600 ui-select-option ui-text-body-alt\"\n [attr.id]=\"row.id\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"onCreate()\"\n >\n <ng-icon name=\"heroPlus\" class=\"size-4 shrink-0\" />\n <span class=\"truncate\">{{ createLabel()(row.query) }}</span>\n </button>\n }\n }\n }\n\n @if (loading()) {\n <div class=\"px-3 py-2 text-muted-foreground ui-text-body-alt text-center\">\n Loading...\n </div>\n }\n\n @if (!loading() && items().length === 0 && !createQuery()) {\n <div class=\"px-3 py-2 text-muted-foreground ui-text-body-alt text-center\">\n No results\n </div>\n }\n </div>\n </div>\n </div>\n }\n</ui-dropdown>\n",
|
|
4928
|
+
template: "<ui-dropdown\n [isOpen]=\"isOpen\"\n [placement]=\"placement()\"\n [closeBehaviour]=\"closeBehaviour()\"\n matchWidth=\"minWidth\"\n class=\"w-full\"\n>\n @if (searchMode() === 'inline') {\n <ui-input\n [value]=\"isOpen() ? query() : triggerLabel()\"\n (valueChange)=\"onQueryChange($event)\"\n [placeholder]=\"triggerLabel()\"\n [disabled]=\"disabled()\"\n [id]=\"id()\"\n [describedBy]=\"describedBy()\"\n [ariaExpanded]=\"isOpen()\"\n [ariaControls]=\"listId\"\n [ariaActiveDescendant]=\"activeId()\"\n inputRole=\"combobox\"\n ariaAutocomplete=\"list\"\n ariaHasPopup=\"listbox\"\n class=\"border-0!\"\n classes=\"h-auto!\"\n autocomplete=\"off\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-template #trailing>\n <ng-icon\n name=\"heroChevronDown\"\n class=\"mx-3 size-4 text-muted-foreground transition-transform duration-100 shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n </ng-template>\n </ui-input>\n } @else {\n <div\n class=\"ui-select-trigger\"\n [class.ui-select-trigger--tags]=\"showTags()\"\n >\n <button\n type=\"button\"\n class=\"flex justify-between items-center gap-2 px-3 py-2 text-left ui-select\"\n aria-haspopup=\"listbox\"\n [attr.id]=\"id() || null\"\n [attr.aria-describedby]=\"describedBy() || null\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"searchMode() === 'none' ? activeId() : null\"\n [disabled]=\"disabled()\"\n [attr.data-invalid]=\"validationState() === false ? '' : null\"\n [attr.data-valid]=\"validationState() === true ? '' : null\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n @if (showTags()) {\n <!-- the visible tags sit on top, this names the button for screen readers -->\n <span class=\"sr-only\">{{ triggerLabel() }}</span>\n } @else if (!multiple() && triggerTemplate() && selectedItem() !== null) {\n <span class=\"flex items-center gap-2 min-w-0 ui-text-body\">\n <ng-container\n *ngTemplateOutlet=\"triggerTemplate()!; context: { $implicit: selectedItem()! }\"\n />\n </span>\n } @else if (multiple()) {\n <span class=\"ui-text-body ui-select-label\">\n <span\n class=\"ui-select-label-sizer\"\n aria-hidden=\"true\"\n >{{ placeholder() }}</span>\n <span class=\"ui-select-label-text\">{{\n triggerLabel()\n }}</span>\n </span>\n } @else {\n <span class=\"ui-text-body truncate\">{{\n triggerLabel()\n }}</span>\n }\n\n <ng-icon\n name=\"heroChevronDown\"\n class=\"ms-auto size-4 text-muted-foreground transition-transform duration-100 shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n </button>\n\n @if (showTags()) {\n <span\n class=\"ui-text-body ui-select-tags-sizer\"\n aria-hidden=\"true\"\n >\n {{ placeholder() }}\n </span>\n\n <div class=\"ui-select-tags\">\n @for (item of selectedItems(); track $index) {\n <ui-badge\n intent=\"secondary\"\n appearance=\"soft\"\n size=\"xs\"\n classes=\"ui-select-tag ui-text-caption\"\n >\n <span class=\"truncate\">{{\n displayWith()(item)\n }}</span>\n\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ui-select-tag-remove\"\n [attr.aria-label]=\"'Remove ' + displayWith()(item)\"\n (click)=\"removeItem(item)\"\n >\n <ng-icon\n name=\"heroXMark\"\n class=\"size-3 shrink-0\"\n />\n </button>\n }\n </ui-badge>\n } @empty {\n <span\n class=\"text-muted-foreground-1 ui-text-body truncate\"\n >\n {{ placeholder() }}\n </span>\n }\n </div>\n }\n </div>\n }\n\n @if (isOpen()) {\n <div uiDropdownContent class=\"py-2\">\n <ui-card radius=\"lg\" class=\"divide-y overflow-hidden\">\n @if (searchMode() === 'dropdown') {\n <div class=\"p-2\">\n <ui-input\n [value]=\"query()\"\n (valueChange)=\"onQueryChange($event)\"\n (keydown)=\"onKeydown($event)\"\n [ariaExpanded]=\"true\"\n [ariaControls]=\"listId\"\n [ariaActiveDescendant]=\"activeId()\"\n inputRole=\"combobox\"\n ariaAutocomplete=\"list\"\n ariaLabel=\"Search options\"\n autocomplete=\"off\"\n placeholder=\"Search...\"\n />\n </div>\n }\n\n <div\n #scrollContainer\n class=\"py-1 max-h-60 overflow-y-auto\"\n role=\"listbox\"\n [attr.id]=\"listId\"\n [attr.aria-multiselectable]=\"multiple() || null\"\n (scroll)=\"onScroll(scrollContainer)\"\n >\n @for (row of rows(); track row.id) {\n @switch (row.kind) {\n @case ('group') {\n <div\n class=\"ui-text-caption ui-select-group\"\n role=\"presentation\"\n >\n {{ row.label }}\n </div>\n }\n @case ('clear') {\n <button\n type=\"button\"\n role=\"option\"\n aria-selected=\"false\"\n tabindex=\"-1\"\n class=\"text-muted-foreground-1 ui-text-body-alt ui-select-option\"\n [attr.id]=\"row.id\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"clear()\"\n >\n <span class=\"truncate\">{{\n clearLabel()\n }}</span>\n </button>\n }\n @case ('item') {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"text-dropdown-item-foreground ui-text-body-alt ui-select-option\"\n [attr.id]=\"row.id\"\n [attr.aria-selected]=\"row.selected\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"onItemClick(row.item)\"\n >\n @if (optionTemplate(); as template) {\n <span\n class=\"flex items-center gap-2 min-w-0 grow\"\n >\n <ng-container\n *ngTemplateOutlet=\"template; context: {\n $implicit: row.item,\n selected: row.selected,\n active: row.index === activeIndex()\n }\"\n />\n </span>\n } @else {\n <span class=\"truncate\">{{\n row.label\n }}</span>\n }\n\n @if (row.selected) {\n <ng-icon\n name=\"heroCheck\"\n class=\"size-4 text-primary-600! shrink-0\"\n strokeWidth=\"2.5\"\n />\n }\n </button>\n }\n @case ('create') {\n <button\n type=\"button\"\n role=\"option\"\n aria-selected=\"false\"\n tabindex=\"-1\"\n class=\"justify-start! text-primary-600 ui-text-body-alt ui-select-option\"\n [attr.id]=\"row.id\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"onCreate()\"\n >\n <ng-icon\n name=\"heroPlus\"\n class=\"size-4 shrink-0\"\n />\n <span class=\"truncate\">{{\n createLabel()(row.query)\n }}</span>\n </button>\n }\n }\n }\n\n @if (loading()) {\n <div class=\"px-3 py-2 text-muted-foreground ui-text-body-alt text-center\">\n Loading...\n </div>\n }\n\n @if (!loading() && items().length === 0 && !createQuery()) {\n <div class=\"px-3 py-2 text-muted-foreground ui-text-body-alt text-center\">\n No results\n </div>\n }\n </div>\n </ui-card>\n </div>\n }\n</ui-dropdown>\n",
|
|
4520
4929
|
styles: ["@layer properties;:host{position:relative;display:inline-flex;width:100%;align-items:center;overflow:hidden;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200, oklch(92.8% .006 264.531));background-color:var(--layer)}:host:focus-within{z-index:10}:host:focus-within{border-color:var(--primary-focus)}:host:focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:host:focus-within{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){:host:focus-within{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}:host:has(.ui-select:disabled){opacity:50%}:host:has(.ui-select[data-invalid]){border-color:var(--color-danger-500, var(--color-red-500))}:host:has(.ui-select[data-invalid]):focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:host:has(.ui-select[data-invalid]):focus-within{--tw-ring-color: color-mix(in srgb, oklch(88.5% .062 18.334) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){:host:has(.ui-select[data-invalid]):focus-within{--tw-ring-color: color-mix(in oklab, var(--color-danger-200, var(--color-red-200)) 50%, transparent)}}:host:has(.ui-select[data-valid]){border-color:var(--color-success-500, var(--color-teal-500))}:host:has(.ui-select[data-valid]):focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:host:has(.ui-select[data-valid]):focus-within{--tw-ring-color: color-mix(in srgb, oklch(91% .096 180.426) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){:host:has(.ui-select[data-valid]):focus-within{--tw-ring-color: color-mix(in oklab, var(--color-success-200, var(--color-teal-200)) 50%, transparent)}}:host-context(ui-input-group):has(.ui-select[data-invalid]){border-color:var(--color-danger-500, var(--color-red-500))!important;--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor) !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}:host-context(ui-input-group):has(.ui-select[data-valid]){border-color:var(--color-success-500, var(--color-teal-500))!important;--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor) !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}:host-context(ui-input-group:focus-within){border-color:var(--primary-focus)!important;--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor) !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ui-select{width:100%;height:100%;border-style:var(--tw-border-style);border-width:0px}.ui-select:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-select:focus{--tw-outline-style: none;outline-style:none}.ui-select-trigger{display:flex;width:100%;min-width:0px;align-items:center}.ui-select-label{position:relative;min-width:0px;flex:1}.ui-select-label-sizer{visibility:hidden;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-select-label-text{position:absolute;inset:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-select-trigger--tags{position:relative;display:grid}.ui-select-tags-sizer,.ui-select-tags{grid-column-start:1;grid-row-start:1}.ui-select-tags-sizer{visibility:hidden;height:0px;overflow:hidden;padding-inline-start:calc(var(--spacing, .25rem) * 3);padding-inline-end:calc(var(--spacing, .25rem) * 9);white-space:nowrap}.ui-select-trigger--tags .ui-select{position:absolute;inset:0}.ui-select-tags{pointer-events:none;position:relative;z-index:10;display:flex;min-height:calc(var(--spacing, .25rem) * 10);min-width:0px;flex:1;flex-wrap:wrap;align-items:center;gap:var(--spacing, .25rem);padding-block:calc(var(--spacing, .25rem) * 1.5);padding-inline-start:calc(var(--spacing, .25rem) * 2);padding-inline-end:calc(var(--spacing, .25rem) * 9);--tw-contain-size: inline-size;contain:var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)}.ui-select-tags>span{padding-inline:var(--spacing, .25rem)}.ui-select-tag{max-width:100%;min-width:0px;column-gap:var(--spacing, .25rem)}.ui-select-tag-remove{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full, calc(infinity * 1px))}.ui-select-tag-remove:hover{color:var(--foreground)}.ui-select-tag-remove:focus{--tw-outline-style: none;outline-style:none}.ui-select-tag-remove:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-select-tag-remove:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-select-tag-remove:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-select-option{display:flex;width:100%;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:left}.ui-select-option:focus{--tw-outline-style: none !important;outline-style:none!important}@media(forced-colors:active){.ui-select-option:focus{outline:2px solid transparent!important;outline-offset:2px!important}}.ui-select-option[data-active]{background-color:var(--dropdown-item-hover)}.ui-select-group{padding-inline:calc(var(--spacing, .25rem) * 3);padding-top:calc(var(--spacing, .25rem) * 3);padding-bottom:var(--spacing, .25rem);--tw-tracking: var(--tracking-wide, .025em);letter-spacing:var(--tracking-wide, .025em);color:var(--muted-foreground-1);text-transform:uppercase}.ui-select-group:first-child{padding-top:var(--spacing, .25rem)}ui-input-group>:host{border-radius:0!important;border-style:var(--tw-border-style)!important;border-width:0px!important}ui-input-group>:host:focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}ui-input-group>:host(:not(:last-child)){border-right-style:var(--tw-border-style)!important;border-right-width:1px!important;border-color:var(--color-gray-200, oklch(92.8% .006 264.531))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-contain-size{syntax: \"*\"; inherits: false;}@property --tw-contain-layout{syntax: \"*\"; inherits: false;}@property --tw-contain-paint{syntax: \"*\"; inherits: false;}@property --tw-contain-style{syntax: \"*\"; inherits: false;}@property --tw-tracking{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-contain-size: initial;--tw-contain-layout: initial;--tw-contain-paint: initial;--tw-contain-style: initial;--tw-tracking: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"],
|
|
4521
4930
|
dependencies: [
|
|
4522
4931
|
{
|
|
@@ -4591,6 +5000,12 @@ var UiSelectComponent = class UiSelectComponent {
|
|
|
4591
5000
|
"classes"
|
|
4592
5001
|
]
|
|
4593
5002
|
},
|
|
5003
|
+
{
|
|
5004
|
+
kind: "component",
|
|
5005
|
+
type: UiCardComponent,
|
|
5006
|
+
selector: "ui-card",
|
|
5007
|
+
inputs: ["radius"]
|
|
5008
|
+
},
|
|
4594
5009
|
{
|
|
4595
5010
|
kind: "component",
|
|
4596
5011
|
type: NgIcon,
|
|
@@ -4630,11 +5045,12 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4630
5045
|
UiDropdownDirective,
|
|
4631
5046
|
UiInputComponent,
|
|
4632
5047
|
UiBadgeComponent,
|
|
5048
|
+
UiCardComponent,
|
|
4633
5049
|
NgIcon,
|
|
4634
5050
|
NgTemplateOutlet
|
|
4635
5051
|
],
|
|
4636
5052
|
host: { "(focusout)": "onFocusOut($event)" },
|
|
4637
|
-
template: "<ui-dropdown\n [isOpen]=\"isOpen\"\n [placement]=\"placement()\"\n [closeBehaviour]=\"closeBehaviour()\"\n matchWidth=\"minWidth\"\n class=\"w-full\"\n>\n @if (searchMode() === 'inline') {\n <ui-input\n [value]=\"isOpen() ? query() : triggerLabel()\"\n (valueChange)=\"onQueryChange($event)\"\n [placeholder]=\"triggerLabel()\"\n [disabled]=\"disabled()\"\n [id]=\"id()\"\n [describedBy]=\"describedBy()\"\n [ariaExpanded]=\"isOpen()\"\n [ariaControls]=\"listId\"\n [ariaActiveDescendant]=\"activeId()\"\n inputRole=\"combobox\"\n ariaAutocomplete=\"list\"\n ariaHasPopup=\"listbox\"\n class=\"border-0!\"\n classes=\"h-auto!\"\n autocomplete=\"off\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-template #trailing>\n <ng-icon\n name=\"heroChevronDown\"\n class=\"mx-3 size-4 text-muted-foreground shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n </ng-template>\n </ui-input>\n } @else {\n <div class=\"ui-select-trigger\" [class.ui-select-trigger--tags]=\"showTags()\">\n <button\n type=\"button\"\n class=\"flex justify-between items-center gap-2 px-3 py-2 text-left ui-select\"\n aria-haspopup=\"listbox\"\n [attr.id]=\"id() || null\"\n [attr.aria-describedby]=\"describedBy() || null\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"searchMode() === 'none' ? activeId() : null\"\n [disabled]=\"disabled()\"\n [attr.data-invalid]=\"validationState() === false ? '' : null\"\n [attr.data-valid]=\"validationState() === true ? '' : null\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n @if (showTags()) {\n <!-- the visible tags sit on top, this names the button for screen readers -->\n <span class=\"sr-only\">{{ triggerLabel() }}</span>\n } @else if (!multiple() && triggerTemplate() && selectedItem() !== null) {\n <span class=\"flex items-center gap-2 min-w-0 ui-text-body\">\n <ng-container\n *ngTemplateOutlet=\"triggerTemplate()!; context: { $implicit: selectedItem()! }\"\n />\n </span>\n } @else if (multiple()) {\n <span class=\"ui-select-label ui-text-body\">\n <span class=\"ui-select-label-sizer\" aria-hidden=\"true\">{{ placeholder() }}</span>\n <span class=\"ui-select-label-text\">{{ triggerLabel() }}</span>\n </span>\n } @else {\n <span class=\"truncate ui-text-body\">{{ triggerLabel() }}</span>\n }\n\n <ng-icon\n name=\"heroChevronDown\"\n class=\"ms-auto size-4 text-muted-foreground shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n </button>\n\n @if (showTags()) {\n <span class=\"ui-select-tags-sizer ui-text-body\" aria-hidden=\"true\">\n {{ placeholder() }}\n </span>\n\n <div class=\"ui-select-tags\">\n @for (item of selectedItems(); track $index) {\n <ui-badge\n intent=\"secondary\"\n appearance=\"soft\"\n size=\"xs\"\n classes=\"ui-select-tag ui-text-caption\"\n >\n <span class=\"truncate\">{{ displayWith()(item) }}</span>\n\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ui-select-tag-remove\"\n [attr.aria-label]=\"'Remove ' + displayWith()(item)\"\n (click)=\"removeItem(item)\"\n >\n <ng-icon name=\"heroXMark\" class=\"size-3 shrink-0\" />\n </button>\n }\n </ui-badge>\n } @empty {\n <span class=\"text-muted-foreground-1 truncate ui-text-body\">\n {{ placeholder() }}\n </span>\n }\n </div>\n }\n </div>\n }\n\n @if (isOpen()) {\n <div uiDropdownContent class=\"py-2\">\n <div class=\"bg-white shadow-xs border border-dropdown-divider rounded-lg divide-y\">\n @if (searchMode() === 'dropdown') {\n <div class=\"p-2\">\n <ui-input\n [value]=\"query()\"\n (valueChange)=\"onQueryChange($event)\"\n (keydown)=\"onKeydown($event)\"\n [ariaExpanded]=\"true\"\n [ariaControls]=\"listId\"\n [ariaActiveDescendant]=\"activeId()\"\n inputRole=\"combobox\"\n ariaAutocomplete=\"list\"\n ariaLabel=\"Search options\"\n autocomplete=\"off\"\n placeholder=\"Search...\"\n />\n </div>\n }\n\n <div\n #scrollContainer\n class=\"py-1 max-h-60 overflow-y-auto\"\n role=\"listbox\"\n [attr.id]=\"listId\"\n [attr.aria-multiselectable]=\"multiple() || null\"\n (scroll)=\"onScroll(scrollContainer)\"\n >\n @for (row of rows(); track row.id) {\n @switch (row.kind) {\n @case ('group') {\n <div\n class=\"ui-select-group ui-text-caption\"\n role=\"presentation\"\n >\n {{ row.label }}\n </div>\n }\n @case ('clear') {\n <button\n type=\"button\"\n role=\"option\"\n aria-selected=\"false\"\n tabindex=\"-1\"\n class=\"text-muted-foreground-1 ui-select-option ui-text-body-alt\"\n [attr.id]=\"row.id\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"clear()\"\n >\n <span class=\"truncate\">{{ clearLabel() }}</span>\n </button>\n }\n @case ('item') {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"text-dropdown-item-foreground ui-select-option ui-text-body-alt\"\n [attr.id]=\"row.id\"\n [attr.aria-selected]=\"row.selected\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"onItemClick(row.item)\"\n >\n @if (optionTemplate(); as template) {\n <span class=\"flex items-center gap-2 min-w-0 grow\">\n <ng-container\n *ngTemplateOutlet=\"template; context: {\n $implicit: row.item,\n selected: row.selected,\n active: row.index === activeIndex()\n }\"\n />\n </span>\n } @else {\n <span class=\"truncate\">{{ row.label }}</span>\n }\n\n @if (row.selected) {\n <ng-icon\n name=\"heroCheck\"\n class=\"size-4 text-primary-600! shrink-0\"\n strokeWidth=\"2.5\"\n />\n }\n </button>\n }\n @case ('create') {\n <button\n type=\"button\"\n role=\"option\"\n aria-selected=\"false\"\n tabindex=\"-1\"\n class=\"justify-start! text-primary-600 ui-select-option ui-text-body-alt\"\n [attr.id]=\"row.id\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"onCreate()\"\n >\n <ng-icon name=\"heroPlus\" class=\"size-4 shrink-0\" />\n <span class=\"truncate\">{{ createLabel()(row.query) }}</span>\n </button>\n }\n }\n }\n\n @if (loading()) {\n <div class=\"px-3 py-2 text-muted-foreground ui-text-body-alt text-center\">\n Loading...\n </div>\n }\n\n @if (!loading() && items().length === 0 && !createQuery()) {\n <div class=\"px-3 py-2 text-muted-foreground ui-text-body-alt text-center\">\n No results\n </div>\n }\n </div>\n </div>\n </div>\n }\n</ui-dropdown>\n",
|
|
5053
|
+
template: "<ui-dropdown\n [isOpen]=\"isOpen\"\n [placement]=\"placement()\"\n [closeBehaviour]=\"closeBehaviour()\"\n matchWidth=\"minWidth\"\n class=\"w-full\"\n>\n @if (searchMode() === 'inline') {\n <ui-input\n [value]=\"isOpen() ? query() : triggerLabel()\"\n (valueChange)=\"onQueryChange($event)\"\n [placeholder]=\"triggerLabel()\"\n [disabled]=\"disabled()\"\n [id]=\"id()\"\n [describedBy]=\"describedBy()\"\n [ariaExpanded]=\"isOpen()\"\n [ariaControls]=\"listId\"\n [ariaActiveDescendant]=\"activeId()\"\n inputRole=\"combobox\"\n ariaAutocomplete=\"list\"\n ariaHasPopup=\"listbox\"\n class=\"border-0!\"\n classes=\"h-auto!\"\n autocomplete=\"off\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-template #trailing>\n <ng-icon\n name=\"heroChevronDown\"\n class=\"mx-3 size-4 text-muted-foreground transition-transform duration-100 shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n </ng-template>\n </ui-input>\n } @else {\n <div\n class=\"ui-select-trigger\"\n [class.ui-select-trigger--tags]=\"showTags()\"\n >\n <button\n type=\"button\"\n class=\"flex justify-between items-center gap-2 px-3 py-2 text-left ui-select\"\n aria-haspopup=\"listbox\"\n [attr.id]=\"id() || null\"\n [attr.aria-describedby]=\"describedBy() || null\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"searchMode() === 'none' ? activeId() : null\"\n [disabled]=\"disabled()\"\n [attr.data-invalid]=\"validationState() === false ? '' : null\"\n [attr.data-valid]=\"validationState() === true ? '' : null\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n @if (showTags()) {\n <!-- the visible tags sit on top, this names the button for screen readers -->\n <span class=\"sr-only\">{{ triggerLabel() }}</span>\n } @else if (!multiple() && triggerTemplate() && selectedItem() !== null) {\n <span class=\"flex items-center gap-2 min-w-0 ui-text-body\">\n <ng-container\n *ngTemplateOutlet=\"triggerTemplate()!; context: { $implicit: selectedItem()! }\"\n />\n </span>\n } @else if (multiple()) {\n <span class=\"ui-text-body ui-select-label\">\n <span\n class=\"ui-select-label-sizer\"\n aria-hidden=\"true\"\n >{{ placeholder() }}</span>\n <span class=\"ui-select-label-text\">{{\n triggerLabel()\n }}</span>\n </span>\n } @else {\n <span class=\"ui-text-body truncate\">{{\n triggerLabel()\n }}</span>\n }\n\n <ng-icon\n name=\"heroChevronDown\"\n class=\"ms-auto size-4 text-muted-foreground transition-transform duration-100 shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n </button>\n\n @if (showTags()) {\n <span\n class=\"ui-text-body ui-select-tags-sizer\"\n aria-hidden=\"true\"\n >\n {{ placeholder() }}\n </span>\n\n <div class=\"ui-select-tags\">\n @for (item of selectedItems(); track $index) {\n <ui-badge\n intent=\"secondary\"\n appearance=\"soft\"\n size=\"xs\"\n classes=\"ui-select-tag ui-text-caption\"\n >\n <span class=\"truncate\">{{\n displayWith()(item)\n }}</span>\n\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ui-select-tag-remove\"\n [attr.aria-label]=\"'Remove ' + displayWith()(item)\"\n (click)=\"removeItem(item)\"\n >\n <ng-icon\n name=\"heroXMark\"\n class=\"size-3 shrink-0\"\n />\n </button>\n }\n </ui-badge>\n } @empty {\n <span\n class=\"text-muted-foreground-1 ui-text-body truncate\"\n >\n {{ placeholder() }}\n </span>\n }\n </div>\n }\n </div>\n }\n\n @if (isOpen()) {\n <div uiDropdownContent class=\"py-2\">\n <ui-card radius=\"lg\" class=\"divide-y overflow-hidden\">\n @if (searchMode() === 'dropdown') {\n <div class=\"p-2\">\n <ui-input\n [value]=\"query()\"\n (valueChange)=\"onQueryChange($event)\"\n (keydown)=\"onKeydown($event)\"\n [ariaExpanded]=\"true\"\n [ariaControls]=\"listId\"\n [ariaActiveDescendant]=\"activeId()\"\n inputRole=\"combobox\"\n ariaAutocomplete=\"list\"\n ariaLabel=\"Search options\"\n autocomplete=\"off\"\n placeholder=\"Search...\"\n />\n </div>\n }\n\n <div\n #scrollContainer\n class=\"py-1 max-h-60 overflow-y-auto\"\n role=\"listbox\"\n [attr.id]=\"listId\"\n [attr.aria-multiselectable]=\"multiple() || null\"\n (scroll)=\"onScroll(scrollContainer)\"\n >\n @for (row of rows(); track row.id) {\n @switch (row.kind) {\n @case ('group') {\n <div\n class=\"ui-text-caption ui-select-group\"\n role=\"presentation\"\n >\n {{ row.label }}\n </div>\n }\n @case ('clear') {\n <button\n type=\"button\"\n role=\"option\"\n aria-selected=\"false\"\n tabindex=\"-1\"\n class=\"text-muted-foreground-1 ui-text-body-alt ui-select-option\"\n [attr.id]=\"row.id\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"clear()\"\n >\n <span class=\"truncate\">{{\n clearLabel()\n }}</span>\n </button>\n }\n @case ('item') {\n <button\n type=\"button\"\n role=\"option\"\n tabindex=\"-1\"\n class=\"text-dropdown-item-foreground ui-text-body-alt ui-select-option\"\n [attr.id]=\"row.id\"\n [attr.aria-selected]=\"row.selected\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"onItemClick(row.item)\"\n >\n @if (optionTemplate(); as template) {\n <span\n class=\"flex items-center gap-2 min-w-0 grow\"\n >\n <ng-container\n *ngTemplateOutlet=\"template; context: {\n $implicit: row.item,\n selected: row.selected,\n active: row.index === activeIndex()\n }\"\n />\n </span>\n } @else {\n <span class=\"truncate\">{{\n row.label\n }}</span>\n }\n\n @if (row.selected) {\n <ng-icon\n name=\"heroCheck\"\n class=\"size-4 text-primary-600! shrink-0\"\n strokeWidth=\"2.5\"\n />\n }\n </button>\n }\n @case ('create') {\n <button\n type=\"button\"\n role=\"option\"\n aria-selected=\"false\"\n tabindex=\"-1\"\n class=\"justify-start! text-primary-600 ui-text-body-alt ui-select-option\"\n [attr.id]=\"row.id\"\n [attr.data-active]=\"row.index === activeIndex() ? '' : null\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseenter)=\"activeIndex.set(row.index)\"\n (click)=\"onCreate()\"\n >\n <ng-icon\n name=\"heroPlus\"\n class=\"size-4 shrink-0\"\n />\n <span class=\"truncate\">{{\n createLabel()(row.query)\n }}</span>\n </button>\n }\n }\n }\n\n @if (loading()) {\n <div class=\"px-3 py-2 text-muted-foreground ui-text-body-alt text-center\">\n Loading...\n </div>\n }\n\n @if (!loading() && items().length === 0 && !createQuery()) {\n <div class=\"px-3 py-2 text-muted-foreground ui-text-body-alt text-center\">\n No results\n </div>\n }\n </div>\n </ui-card>\n </div>\n }\n</ui-dropdown>\n",
|
|
4638
5054
|
styles: ["@layer properties;:host{position:relative;display:inline-flex;width:100%;align-items:center;overflow:hidden;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200, oklch(92.8% .006 264.531));background-color:var(--layer)}:host:focus-within{z-index:10}:host:focus-within{border-color:var(--primary-focus)}:host:focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:host:focus-within{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){:host:focus-within{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}:host:has(.ui-select:disabled){opacity:50%}:host:has(.ui-select[data-invalid]){border-color:var(--color-danger-500, var(--color-red-500))}:host:has(.ui-select[data-invalid]):focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:host:has(.ui-select[data-invalid]):focus-within{--tw-ring-color: color-mix(in srgb, oklch(88.5% .062 18.334) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){:host:has(.ui-select[data-invalid]):focus-within{--tw-ring-color: color-mix(in oklab, var(--color-danger-200, var(--color-red-200)) 50%, transparent)}}:host:has(.ui-select[data-valid]){border-color:var(--color-success-500, var(--color-teal-500))}:host:has(.ui-select[data-valid]):focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:host:has(.ui-select[data-valid]):focus-within{--tw-ring-color: color-mix(in srgb, oklch(91% .096 180.426) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){:host:has(.ui-select[data-valid]):focus-within{--tw-ring-color: color-mix(in oklab, var(--color-success-200, var(--color-teal-200)) 50%, transparent)}}:host-context(ui-input-group):has(.ui-select[data-invalid]){border-color:var(--color-danger-500, var(--color-red-500))!important;--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor) !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}:host-context(ui-input-group):has(.ui-select[data-valid]){border-color:var(--color-success-500, var(--color-teal-500))!important;--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor) !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}:host-context(ui-input-group:focus-within){border-color:var(--primary-focus)!important;--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor) !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ui-select{width:100%;height:100%;border-style:var(--tw-border-style);border-width:0px}.ui-select:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-select:focus{--tw-outline-style: none;outline-style:none}.ui-select-trigger{display:flex;width:100%;min-width:0px;align-items:center}.ui-select-label{position:relative;min-width:0px;flex:1}.ui-select-label-sizer{visibility:hidden;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-select-label-text{position:absolute;inset:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-select-trigger--tags{position:relative;display:grid}.ui-select-tags-sizer,.ui-select-tags{grid-column-start:1;grid-row-start:1}.ui-select-tags-sizer{visibility:hidden;height:0px;overflow:hidden;padding-inline-start:calc(var(--spacing, .25rem) * 3);padding-inline-end:calc(var(--spacing, .25rem) * 9);white-space:nowrap}.ui-select-trigger--tags .ui-select{position:absolute;inset:0}.ui-select-tags{pointer-events:none;position:relative;z-index:10;display:flex;min-height:calc(var(--spacing, .25rem) * 10);min-width:0px;flex:1;flex-wrap:wrap;align-items:center;gap:var(--spacing, .25rem);padding-block:calc(var(--spacing, .25rem) * 1.5);padding-inline-start:calc(var(--spacing, .25rem) * 2);padding-inline-end:calc(var(--spacing, .25rem) * 9);--tw-contain-size: inline-size;contain:var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)}.ui-select-tags>span{padding-inline:var(--spacing, .25rem)}.ui-select-tag{max-width:100%;min-width:0px;column-gap:var(--spacing, .25rem)}.ui-select-tag-remove{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full, calc(infinity * 1px))}.ui-select-tag-remove:hover{color:var(--foreground)}.ui-select-tag-remove:focus{--tw-outline-style: none;outline-style:none}.ui-select-tag-remove:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui-select-tag-remove:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(88.2% .059 254.128) 50%, transparent)}@supports (color: color-mix(in lab,red,red)){.ui-select-tag-remove:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-primary-200, var(--color-blue-200)) 50%, transparent)}}.ui-select-option{display:flex;width:100%;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);text-align:left}.ui-select-option:focus{--tw-outline-style: none !important;outline-style:none!important}@media(forced-colors:active){.ui-select-option:focus{outline:2px solid transparent!important;outline-offset:2px!important}}.ui-select-option[data-active]{background-color:var(--dropdown-item-hover)}.ui-select-group{padding-inline:calc(var(--spacing, .25rem) * 3);padding-top:calc(var(--spacing, .25rem) * 3);padding-bottom:var(--spacing, .25rem);--tw-tracking: var(--tracking-wide, .025em);letter-spacing:var(--tracking-wide, .025em);color:var(--muted-foreground-1);text-transform:uppercase}.ui-select-group:first-child{padding-top:var(--spacing, .25rem)}ui-input-group>:host{border-radius:0!important;border-style:var(--tw-border-style)!important;border-width:0px!important}ui-input-group>:host:focus-within{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}ui-input-group>:host(:not(:last-child)){border-right-style:var(--tw-border-style)!important;border-right-width:1px!important;border-color:var(--color-gray-200, oklch(92.8% .006 264.531))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-contain-size{syntax: \"*\"; inherits: false;}@property --tw-contain-layout{syntax: \"*\"; inherits: false;}@property --tw-contain-paint{syntax: \"*\"; inherits: false;}@property --tw-contain-style{syntax: \"*\"; inherits: false;}@property --tw-tracking{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-contain-size: initial;--tw-contain-layout: initial;--tw-contain-paint: initial;--tw-contain-style: initial;--tw-tracking: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
|
|
4639
5055
|
}]
|
|
4640
5056
|
}],
|
|
@@ -6209,69 +6625,120 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6209
6625
|
}]
|
|
6210
6626
|
}
|
|
6211
6627
|
});
|
|
6212
|
-
var
|
|
6213
|
-
|
|
6214
|
-
|
|
6215
|
-
|
|
6216
|
-
|
|
6628
|
+
var UiTooltipComponent = class UiTooltipComponent {
|
|
6629
|
+
anchor = inject(ElementRef);
|
|
6630
|
+
content = viewChild("content", {
|
|
6631
|
+
...ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {},
|
|
6632
|
+
read: ElementRef
|
|
6633
|
+
});
|
|
6634
|
+
text = input.required(...ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []);
|
|
6635
|
+
placement = input("top", ...ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []);
|
|
6636
|
+
trigger = input("hover", ...ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []);
|
|
6637
|
+
classes = input("", ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
6638
|
+
isOpen = input(signal(false), ...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
|
|
6639
|
+
closeBehaviour = computed(() => this.trigger() === "click" ? "whenClickOutside" : "none", ...ngDevMode ? [{ debugName: "closeBehaviour" }] : /* istanbul ignore next */ []);
|
|
6640
|
+
generatedClasses = computed(() => [
|
|
6641
|
+
"ui-tooltip",
|
|
6642
|
+
"ui-text-caption",
|
|
6643
|
+
this.classes()
|
|
6644
|
+
].filter(Boolean).join(" "), ...ngDevMode ? [{ debugName: "generatedClasses" }] : /* istanbul ignore next */ []);
|
|
6645
|
+
onHover(isHovering) {
|
|
6646
|
+
if (this.trigger() === "hover") this.isOpen().set(isHovering);
|
|
6647
|
+
}
|
|
6648
|
+
onFocus(isFocused) {
|
|
6649
|
+
if (["hover", "focus"].includes(this.trigger())) this.isOpen().set(isFocused);
|
|
6650
|
+
}
|
|
6651
|
+
onClick() {
|
|
6652
|
+
if (this.trigger() === "click") this.isOpen().update((value) => !value);
|
|
6653
|
+
}
|
|
6217
6654
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
6218
6655
|
minVersion: "12.0.0",
|
|
6219
6656
|
version: "22.2.1",
|
|
6220
6657
|
ngImport: i0,
|
|
6221
|
-
type:
|
|
6658
|
+
type: UiTooltipComponent,
|
|
6222
6659
|
deps: [],
|
|
6223
6660
|
target: i0.ɵɵFactoryTarget.Component
|
|
6224
6661
|
});
|
|
6225
6662
|
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
6226
6663
|
minVersion: "17.0.0",
|
|
6227
6664
|
version: "22.2.1",
|
|
6228
|
-
type:
|
|
6665
|
+
type: UiTooltipComponent,
|
|
6229
6666
|
isStandalone: true,
|
|
6230
|
-
selector: "ui-
|
|
6667
|
+
selector: "ui-tooltip",
|
|
6231
6668
|
inputs: {
|
|
6232
|
-
|
|
6233
|
-
classPropertyName: "
|
|
6234
|
-
publicName: "
|
|
6669
|
+
text: {
|
|
6670
|
+
classPropertyName: "text",
|
|
6671
|
+
publicName: "text",
|
|
6672
|
+
isSignal: true,
|
|
6673
|
+
isRequired: true,
|
|
6674
|
+
transformFunction: null
|
|
6675
|
+
},
|
|
6676
|
+
placement: {
|
|
6677
|
+
classPropertyName: "placement",
|
|
6678
|
+
publicName: "placement",
|
|
6235
6679
|
isSignal: true,
|
|
6236
6680
|
isRequired: false,
|
|
6237
6681
|
transformFunction: null
|
|
6238
6682
|
},
|
|
6239
|
-
|
|
6240
|
-
classPropertyName: "
|
|
6241
|
-
publicName: "
|
|
6683
|
+
trigger: {
|
|
6684
|
+
classPropertyName: "trigger",
|
|
6685
|
+
publicName: "trigger",
|
|
6242
6686
|
isSignal: true,
|
|
6243
6687
|
isRequired: false,
|
|
6244
6688
|
transformFunction: null
|
|
6245
6689
|
},
|
|
6246
|
-
|
|
6247
|
-
classPropertyName: "
|
|
6248
|
-
publicName: "
|
|
6690
|
+
classes: {
|
|
6691
|
+
classPropertyName: "classes",
|
|
6692
|
+
publicName: "classes",
|
|
6249
6693
|
isSignal: true,
|
|
6250
6694
|
isRequired: false,
|
|
6251
6695
|
transformFunction: null
|
|
6252
6696
|
},
|
|
6253
|
-
|
|
6254
|
-
classPropertyName: "
|
|
6255
|
-
publicName: "
|
|
6697
|
+
isOpen: {
|
|
6698
|
+
classPropertyName: "isOpen",
|
|
6699
|
+
publicName: "isOpen",
|
|
6256
6700
|
isSignal: true,
|
|
6257
6701
|
isRequired: false,
|
|
6258
6702
|
transformFunction: null
|
|
6259
6703
|
}
|
|
6260
6704
|
},
|
|
6705
|
+
host: {
|
|
6706
|
+
listeners: {
|
|
6707
|
+
"mouseenter": "onHover(true)",
|
|
6708
|
+
"mouseleave": "onHover(false)",
|
|
6709
|
+
"focusin": "onFocus(true)",
|
|
6710
|
+
"focusout": "onFocus(false)",
|
|
6711
|
+
"click": "onClick()"
|
|
6712
|
+
},
|
|
6713
|
+
classAttribute: "inline-flex size-fit"
|
|
6714
|
+
},
|
|
6715
|
+
viewQueries: [{
|
|
6716
|
+
propertyName: "content",
|
|
6717
|
+
first: true,
|
|
6718
|
+
predicate: ["content"],
|
|
6719
|
+
descendants: true,
|
|
6720
|
+
read: ElementRef,
|
|
6721
|
+
isSignal: true
|
|
6722
|
+
}],
|
|
6723
|
+
exportAs: ["uiTooltip"],
|
|
6261
6724
|
ngImport: i0,
|
|
6262
|
-
template: "<
|
|
6263
|
-
styles: ["@layer properties
|
|
6725
|
+
template: "<ui-overlay\n [isOpen]=\"isOpen()\"\n [closeBehaviour]=\"closeBehaviour()\"\n [content]=\"content()\"\n [anchor]=\"anchor\"\n [placement]=\"placement()\"\n>\n <ng-content />\n\n @if (isOpen()()) {\n <div #content class=\"p-1.5\" style=\"position: fixed; z-index: 60\">\n <div role=\"tooltip\" [class]=\"generatedClasses()\">{{ text() }}</div>\n </div>\n }\n</ui-overlay>\n",
|
|
6726
|
+
styles: ["@layer properties;.ui-tooltip{max-width:var(--container-xs, 20rem);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--tooltip-line);background-color:var(--tooltip);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);color:var(--tooltip-foreground);--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"],
|
|
6264
6727
|
dependencies: [{
|
|
6265
6728
|
kind: "component",
|
|
6266
|
-
type:
|
|
6267
|
-
selector: "
|
|
6729
|
+
type: UiOverlayComponent,
|
|
6730
|
+
selector: "ui-overlay",
|
|
6268
6731
|
inputs: [
|
|
6269
|
-
"
|
|
6270
|
-
"
|
|
6271
|
-
"
|
|
6272
|
-
"
|
|
6273
|
-
"
|
|
6274
|
-
|
|
6732
|
+
"content",
|
|
6733
|
+
"anchor",
|
|
6734
|
+
"closeBehaviour",
|
|
6735
|
+
"isOpen",
|
|
6736
|
+
"placement",
|
|
6737
|
+
"offset",
|
|
6738
|
+
"viewportPadding",
|
|
6739
|
+
"matchWidth"
|
|
6740
|
+
],
|
|
6741
|
+
exportAs: ["uiOverlay"]
|
|
6275
6742
|
}]
|
|
6276
6743
|
});
|
|
6277
6744
|
};
|
|
@@ -6279,101 +6746,279 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6279
6746
|
minVersion: "12.0.0",
|
|
6280
6747
|
version: "22.2.1",
|
|
6281
6748
|
ngImport: i0,
|
|
6282
|
-
type:
|
|
6749
|
+
type: UiTooltipComponent,
|
|
6283
6750
|
decorators: [{
|
|
6284
6751
|
type: Component,
|
|
6285
6752
|
args: [{
|
|
6286
|
-
selector: "ui-
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6753
|
+
selector: "ui-tooltip",
|
|
6754
|
+
exportAs: "uiTooltip",
|
|
6755
|
+
imports: [UiOverlayComponent],
|
|
6756
|
+
host: {
|
|
6757
|
+
class: "inline-flex size-fit",
|
|
6758
|
+
"(mouseenter)": "onHover(true)",
|
|
6759
|
+
"(mouseleave)": "onHover(false)",
|
|
6760
|
+
"(focusin)": "onFocus(true)",
|
|
6761
|
+
"(focusout)": "onFocus(false)",
|
|
6762
|
+
"(click)": "onClick()"
|
|
6763
|
+
},
|
|
6764
|
+
template: "<ui-overlay\n [isOpen]=\"isOpen()\"\n [closeBehaviour]=\"closeBehaviour()\"\n [content]=\"content()\"\n [anchor]=\"anchor\"\n [placement]=\"placement()\"\n>\n <ng-content />\n\n @if (isOpen()()) {\n <div #content class=\"p-1.5\" style=\"position: fixed; z-index: 60\">\n <div role=\"tooltip\" [class]=\"generatedClasses()\">{{ text() }}</div>\n </div>\n }\n</ui-overlay>\n",
|
|
6765
|
+
styles: ["@layer properties;.ui-tooltip{max-width:var(--container-xs, 20rem);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--tooltip-line);background-color:var(--tooltip);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);color:var(--tooltip-foreground);--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
|
|
6290
6766
|
}]
|
|
6291
6767
|
}],
|
|
6292
6768
|
propDecorators: {
|
|
6293
|
-
|
|
6769
|
+
content: [{
|
|
6770
|
+
type: i0.ViewChild,
|
|
6771
|
+
args: ["content", {
|
|
6772
|
+
read: ElementRef,
|
|
6773
|
+
isSignal: true
|
|
6774
|
+
}]
|
|
6775
|
+
}],
|
|
6776
|
+
text: [{
|
|
6294
6777
|
type: i0.Input,
|
|
6295
6778
|
args: [{
|
|
6296
6779
|
isSignal: true,
|
|
6297
|
-
alias: "
|
|
6780
|
+
alias: "text",
|
|
6781
|
+
required: true
|
|
6782
|
+
}]
|
|
6783
|
+
}],
|
|
6784
|
+
placement: [{
|
|
6785
|
+
type: i0.Input,
|
|
6786
|
+
args: [{
|
|
6787
|
+
isSignal: true,
|
|
6788
|
+
alias: "placement",
|
|
6298
6789
|
required: false
|
|
6299
6790
|
}]
|
|
6300
6791
|
}],
|
|
6301
|
-
|
|
6792
|
+
trigger: [{
|
|
6302
6793
|
type: i0.Input,
|
|
6303
6794
|
args: [{
|
|
6304
6795
|
isSignal: true,
|
|
6305
|
-
alias: "
|
|
6796
|
+
alias: "trigger",
|
|
6306
6797
|
required: false
|
|
6307
6798
|
}]
|
|
6308
6799
|
}],
|
|
6309
|
-
|
|
6800
|
+
classes: [{
|
|
6310
6801
|
type: i0.Input,
|
|
6311
6802
|
args: [{
|
|
6312
6803
|
isSignal: true,
|
|
6313
|
-
alias: "
|
|
6804
|
+
alias: "classes",
|
|
6314
6805
|
required: false
|
|
6315
6806
|
}]
|
|
6316
6807
|
}],
|
|
6317
|
-
|
|
6808
|
+
isOpen: [{
|
|
6318
6809
|
type: i0.Input,
|
|
6319
6810
|
args: [{
|
|
6320
6811
|
isSignal: true,
|
|
6321
|
-
alias: "
|
|
6812
|
+
alias: "isOpen",
|
|
6322
6813
|
required: false
|
|
6323
6814
|
}]
|
|
6324
6815
|
}]
|
|
6325
6816
|
}
|
|
6326
6817
|
});
|
|
6327
|
-
|
|
6328
|
-
"
|
|
6329
|
-
"
|
|
6330
|
-
"
|
|
6331
|
-
];
|
|
6332
|
-
|
|
6333
|
-
type = input("spinner", ...ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []);
|
|
6334
|
-
hasText = computed(() => TEXT_TYPES.includes(this.type()), ...ngDevMode ? [{ debugName: "hasText" }] : /* istanbul ignore next */ []);
|
|
6335
|
-
throbberSpokes = Array.from({ length: 12 }, (_, i) => i);
|
|
6818
|
+
var UiKpiComponent = class UiKpiComponent {
|
|
6819
|
+
title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
6820
|
+
value = input("", ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
|
|
6821
|
+
hint = input("", ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
|
|
6822
|
+
icon = input(...ngDevMode ? [void 0, { debugName: "icon" }] : /* istanbul ignore next */ []);
|
|
6823
|
+
iconPosition = input("left", ...ngDevMode ? [{ debugName: "iconPosition" }] : /* istanbul ignore next */ []);
|
|
6336
6824
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
6337
6825
|
minVersion: "12.0.0",
|
|
6338
6826
|
version: "22.2.1",
|
|
6339
6827
|
ngImport: i0,
|
|
6340
|
-
type:
|
|
6828
|
+
type: UiKpiComponent,
|
|
6341
6829
|
deps: [],
|
|
6342
6830
|
target: i0.ɵɵFactoryTarget.Component
|
|
6343
6831
|
});
|
|
6344
6832
|
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
6345
6833
|
minVersion: "17.0.0",
|
|
6346
6834
|
version: "22.2.1",
|
|
6347
|
-
type:
|
|
6835
|
+
type: UiKpiComponent,
|
|
6348
6836
|
isStandalone: true,
|
|
6349
|
-
selector: "ui-
|
|
6350
|
-
inputs: {
|
|
6351
|
-
|
|
6352
|
-
|
|
6353
|
-
|
|
6354
|
-
|
|
6355
|
-
|
|
6356
|
-
|
|
6357
|
-
|
|
6358
|
-
|
|
6359
|
-
|
|
6360
|
-
|
|
6361
|
-
|
|
6362
|
-
|
|
6363
|
-
|
|
6364
|
-
|
|
6365
|
-
|
|
6366
|
-
|
|
6367
|
-
|
|
6368
|
-
|
|
6369
|
-
|
|
6370
|
-
|
|
6371
|
-
|
|
6372
|
-
|
|
6373
|
-
|
|
6374
|
-
|
|
6375
|
-
|
|
6376
|
-
|
|
6837
|
+
selector: "ui-kpi",
|
|
6838
|
+
inputs: {
|
|
6839
|
+
title: {
|
|
6840
|
+
classPropertyName: "title",
|
|
6841
|
+
publicName: "title",
|
|
6842
|
+
isSignal: true,
|
|
6843
|
+
isRequired: false,
|
|
6844
|
+
transformFunction: null
|
|
6845
|
+
},
|
|
6846
|
+
value: {
|
|
6847
|
+
classPropertyName: "value",
|
|
6848
|
+
publicName: "value",
|
|
6849
|
+
isSignal: true,
|
|
6850
|
+
isRequired: false,
|
|
6851
|
+
transformFunction: null
|
|
6852
|
+
},
|
|
6853
|
+
hint: {
|
|
6854
|
+
classPropertyName: "hint",
|
|
6855
|
+
publicName: "hint",
|
|
6856
|
+
isSignal: true,
|
|
6857
|
+
isRequired: false,
|
|
6858
|
+
transformFunction: null
|
|
6859
|
+
},
|
|
6860
|
+
icon: {
|
|
6861
|
+
classPropertyName: "icon",
|
|
6862
|
+
publicName: "icon",
|
|
6863
|
+
isSignal: true,
|
|
6864
|
+
isRequired: false,
|
|
6865
|
+
transformFunction: null
|
|
6866
|
+
},
|
|
6867
|
+
iconPosition: {
|
|
6868
|
+
classPropertyName: "iconPosition",
|
|
6869
|
+
publicName: "iconPosition",
|
|
6870
|
+
isSignal: true,
|
|
6871
|
+
isRequired: false,
|
|
6872
|
+
transformFunction: null
|
|
6873
|
+
}
|
|
6874
|
+
},
|
|
6875
|
+
ngImport: i0,
|
|
6876
|
+
template: "<ui-card radius=\"xl\">\n <div class=\"flex gap-x-4 p-4 md:p-5\">\n @if (icon() && iconPosition() === 'left') {\n <div class=\"flex justify-center items-center bg-surface rounded-lg size-12 shrink-0\">\n <ng-icon\n [name]=\"icon()\"\n size=\"32\"\n class=\"size-8 text-muted-foreground-2 shrink-0\"\n strokeWidth=\"1.5\"\n />\n </div>\n }\n\n <div class=\"grow\">\n <div class=\"flex items-center gap-x-2 text-muted-foreground-2\">\n <span class=\"font-semibold ui-text-h4 text-sm uppercase\">\n {{ title() }}\n </span>\n\n @if (hint()) {\n <ui-tooltip\n [text]=\"hint()\"\n placement=\"top\"\n trigger=\"hover\"\n >\n <ng-icon name=\"heroQuestionMarkCircle\" size=\"18\" />\n </ui-tooltip>\n }\n </div>\n\n <div class=\"flex flex-wrap items-center gap-2 mt-1\">\n <h3 class=\"font-semibold text-foreground ui-text-h2\">\n <!-- falls back to the plain value when nothing is projected -->\n <ng-content select=\"[kpi-value]\">{{ value() }}</ng-content>\n </h3>\n <ng-content select=\"[kpi-badge]\"></ng-content>\n </div>\n </div>\n\n @if (icon() && iconPosition() === 'right') {\n <div class=\"flex justify-center items-center bg-surface rounded-lg size-12 shrink-0\">\n <ng-icon\n [name]=\"icon()\"\n size=\"32\"\n class=\"size-8 text-muted-foreground-2 shrink-0\"\n strokeWidth=\"1.5\"\n />\n </div>\n }\n </div>\n</ui-card>\n",
|
|
6877
|
+
dependencies: [
|
|
6878
|
+
{
|
|
6879
|
+
kind: "component",
|
|
6880
|
+
type: UiCardComponent,
|
|
6881
|
+
selector: "ui-card",
|
|
6882
|
+
inputs: ["radius"]
|
|
6883
|
+
},
|
|
6884
|
+
{
|
|
6885
|
+
kind: "component",
|
|
6886
|
+
type: NgIcon,
|
|
6887
|
+
selector: "ng-icon",
|
|
6888
|
+
inputs: [
|
|
6889
|
+
"name",
|
|
6890
|
+
"svg",
|
|
6891
|
+
"size",
|
|
6892
|
+
"strokeWidth",
|
|
6893
|
+
"color"
|
|
6894
|
+
]
|
|
6895
|
+
},
|
|
6896
|
+
{
|
|
6897
|
+
kind: "component",
|
|
6898
|
+
type: UiTooltipComponent,
|
|
6899
|
+
selector: "ui-tooltip",
|
|
6900
|
+
inputs: [
|
|
6901
|
+
"text",
|
|
6902
|
+
"placement",
|
|
6903
|
+
"trigger",
|
|
6904
|
+
"classes",
|
|
6905
|
+
"isOpen"
|
|
6906
|
+
],
|
|
6907
|
+
exportAs: ["uiTooltip"]
|
|
6908
|
+
}
|
|
6909
|
+
]
|
|
6910
|
+
});
|
|
6911
|
+
};
|
|
6912
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
6913
|
+
minVersion: "12.0.0",
|
|
6914
|
+
version: "22.2.1",
|
|
6915
|
+
ngImport: i0,
|
|
6916
|
+
type: UiKpiComponent,
|
|
6917
|
+
decorators: [{
|
|
6918
|
+
type: Component,
|
|
6919
|
+
args: [{
|
|
6920
|
+
selector: "ui-kpi",
|
|
6921
|
+
imports: [
|
|
6922
|
+
UiCardComponent,
|
|
6923
|
+
NgIcon,
|
|
6924
|
+
UiTooltipComponent
|
|
6925
|
+
],
|
|
6926
|
+
template: "<ui-card radius=\"xl\">\n <div class=\"flex gap-x-4 p-4 md:p-5\">\n @if (icon() && iconPosition() === 'left') {\n <div class=\"flex justify-center items-center bg-surface rounded-lg size-12 shrink-0\">\n <ng-icon\n [name]=\"icon()\"\n size=\"32\"\n class=\"size-8 text-muted-foreground-2 shrink-0\"\n strokeWidth=\"1.5\"\n />\n </div>\n }\n\n <div class=\"grow\">\n <div class=\"flex items-center gap-x-2 text-muted-foreground-2\">\n <span class=\"font-semibold ui-text-h4 text-sm uppercase\">\n {{ title() }}\n </span>\n\n @if (hint()) {\n <ui-tooltip\n [text]=\"hint()\"\n placement=\"top\"\n trigger=\"hover\"\n >\n <ng-icon name=\"heroQuestionMarkCircle\" size=\"18\" />\n </ui-tooltip>\n }\n </div>\n\n <div class=\"flex flex-wrap items-center gap-2 mt-1\">\n <h3 class=\"font-semibold text-foreground ui-text-h2\">\n <!-- falls back to the plain value when nothing is projected -->\n <ng-content select=\"[kpi-value]\">{{ value() }}</ng-content>\n </h3>\n <ng-content select=\"[kpi-badge]\"></ng-content>\n </div>\n </div>\n\n @if (icon() && iconPosition() === 'right') {\n <div class=\"flex justify-center items-center bg-surface rounded-lg size-12 shrink-0\">\n <ng-icon\n [name]=\"icon()\"\n size=\"32\"\n class=\"size-8 text-muted-foreground-2 shrink-0\"\n strokeWidth=\"1.5\"\n />\n </div>\n }\n </div>\n</ui-card>\n"
|
|
6927
|
+
}]
|
|
6928
|
+
}],
|
|
6929
|
+
propDecorators: {
|
|
6930
|
+
title: [{
|
|
6931
|
+
type: i0.Input,
|
|
6932
|
+
args: [{
|
|
6933
|
+
isSignal: true,
|
|
6934
|
+
alias: "title",
|
|
6935
|
+
required: false
|
|
6936
|
+
}]
|
|
6937
|
+
}],
|
|
6938
|
+
value: [{
|
|
6939
|
+
type: i0.Input,
|
|
6940
|
+
args: [{
|
|
6941
|
+
isSignal: true,
|
|
6942
|
+
alias: "value",
|
|
6943
|
+
required: false
|
|
6944
|
+
}]
|
|
6945
|
+
}],
|
|
6946
|
+
hint: [{
|
|
6947
|
+
type: i0.Input,
|
|
6948
|
+
args: [{
|
|
6949
|
+
isSignal: true,
|
|
6950
|
+
alias: "hint",
|
|
6951
|
+
required: false
|
|
6952
|
+
}]
|
|
6953
|
+
}],
|
|
6954
|
+
icon: [{
|
|
6955
|
+
type: i0.Input,
|
|
6956
|
+
args: [{
|
|
6957
|
+
isSignal: true,
|
|
6958
|
+
alias: "icon",
|
|
6959
|
+
required: false
|
|
6960
|
+
}]
|
|
6961
|
+
}],
|
|
6962
|
+
iconPosition: [{
|
|
6963
|
+
type: i0.Input,
|
|
6964
|
+
args: [{
|
|
6965
|
+
isSignal: true,
|
|
6966
|
+
alias: "iconPosition",
|
|
6967
|
+
required: false
|
|
6968
|
+
}]
|
|
6969
|
+
}]
|
|
6970
|
+
}
|
|
6971
|
+
});
|
|
6972
|
+
const TEXT_TYPES = [
|
|
6973
|
+
"blinking-caret",
|
|
6974
|
+
"shimmer-text",
|
|
6975
|
+
"loading-dots"
|
|
6976
|
+
];
|
|
6977
|
+
var UiLoadingComponent = class UiLoadingComponent {
|
|
6978
|
+
type = input("spinner", ...ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []);
|
|
6979
|
+
hasText = computed(() => TEXT_TYPES.includes(this.type()), ...ngDevMode ? [{ debugName: "hasText" }] : /* istanbul ignore next */ []);
|
|
6980
|
+
throbberSpokes = Array.from({ length: 12 }, (_, i) => i);
|
|
6981
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
6982
|
+
minVersion: "12.0.0",
|
|
6983
|
+
version: "22.2.1",
|
|
6984
|
+
ngImport: i0,
|
|
6985
|
+
type: UiLoadingComponent,
|
|
6986
|
+
deps: [],
|
|
6987
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
6988
|
+
});
|
|
6989
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
6990
|
+
minVersion: "17.0.0",
|
|
6991
|
+
version: "22.2.1",
|
|
6992
|
+
type: UiLoadingComponent,
|
|
6993
|
+
isStandalone: true,
|
|
6994
|
+
selector: "ui-loading",
|
|
6995
|
+
inputs: { type: {
|
|
6996
|
+
classPropertyName: "type",
|
|
6997
|
+
publicName: "type",
|
|
6998
|
+
isSignal: true,
|
|
6999
|
+
isRequired: false,
|
|
7000
|
+
transformFunction: null
|
|
7001
|
+
} },
|
|
7002
|
+
ngImport: i0,
|
|
7003
|
+
template: "<div class=\"ui-loading\" role=\"status\">\n @switch (type()) {\n @case ('throbber') {\n <svg\n class=\"ui-loading--throbber\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n @for (i of throbberSpokes; track i) {\n <line\n x1=\"12\"\n y1=\"2.5\"\n x2=\"12\"\n y2=\"7\"\n [attr.transform]=\"'rotate(' + i * (360 / throbberSpokes.length) + ' 12 12)'\"\n [style.animation-delay.s]=\"i / throbberSpokes.length - 1\"\n />\n }\n </svg>\n }\n @case ('pulse-ring') {\n <span\n class=\"ui-loading--pulse-ring ui-loading--pulse\"\n aria-hidden=\"true\"\n ></span>\n }\n @case ('pulse-dot') {\n <span\n class=\"ui-loading--pulse ui-loading--pulse-dot\"\n aria-hidden=\"true\"\n ></span>\n }\n @case ('wave') {\n <span\n class=\"ui-loading--row ui-loading--stagger\"\n aria-hidden=\"true\"\n >\n @for (i of [1, 2, 3, 4, 5]; track i) {\n <span class=\"ui-loading--bar\"></span>\n }\n </span>\n }\n @case ('equaliser') {\n <span\n class=\"ui-loading--row ui-loading--stagger ui-loading--bars\"\n aria-hidden=\"true\"\n >\n @for (i of [1, 2, 3, 4, 5]; track i) {\n <span class=\"ui-loading--bar\"></span>\n }\n </span>\n }\n @case ('terminal') {\n <span class=\"ui-loading--prompt\" aria-hidden=\"true\">></span>\n <span class=\"ui-loading--caret\" aria-hidden=\"true\"></span>\n }\n @case ('blinking-caret') {\n <span>Loading</span>\n <span class=\"ui-loading--caret\" aria-hidden=\"true\"></span>\n }\n @case ('shimmer-text') {\n <span class=\"ui-loading--shimmer\">Loading</span>\n }\n @case ('loading-dots') {\n <span>Loading</span>\n <span\n class=\"ui-loading--text-dots ui-loading--stagger\"\n aria-hidden=\"true\"\n >\n @for (i of [1, 2, 3]; track i) {\n <span class=\"ui-loading--text-dot\">.</span>\n }\n </span>\n }\n @case ('bouncing-dots') {\n <span\n class=\"ui-loading--row ui-loading--stagger\"\n aria-hidden=\"true\"\n >\n @for (i of [1, 2, 3]; track i) {\n <span class=\"ui-loading--dot ui-loading--dot-bounce\"></span>\n }\n </span>\n }\n @case ('fading-dots') {\n <span\n class=\"ui-loading--row ui-loading--stagger\"\n aria-hidden=\"true\"\n >\n @for (i of [1, 2, 3]; track i) {\n <span class=\"ui-loading--dot ui-loading--dot-fade\"></span>\n }\n </span>\n }\n @default {\n <span class=\"ui-loading--spinner\" aria-hidden=\"true\"></span>\n }\n }\n\n @if (!hasText()) {\n <span class=\"sr-only\">Loading</span>\n }\n</div>\n",
|
|
7004
|
+
styles: ["@layer properties;.ui-loading{display:inline-flex;align-items:center;column-gap:calc(var(--spacing, .25rem) * 2);--tw-leading: 1;line-height:1}.ui-loading--row{display:inline-flex;height:1em;align-items:center;column-gap:.2em}.ui-loading--spinner{display:inline-block;width:1em;height:1em;border-radius:var(--radius-full, calc(infinity * 1px));border-style:var(--tw-border-style);border-width:.15em;border-color:currentcolor;border-top-color:currentcolor;animation:ui-loading-spin .8s linear infinite}@supports (color: color-mix(in lab,red,red)){.ui-loading--spinner{border-color:color-mix(in oklab,currentcolor 20%,transparent)}}.ui-loading--throbber{width:1em;height:1em}.ui-loading--throbber line{stroke:currentColor;stroke-width:2;stroke-linecap:round;animation:ui-loading-spoke 1s linear infinite}.ui-loading--pulse{position:relative;display:inline-block;width:1em;height:1em}.ui-loading--pulse:before,.ui-loading--pulse:after{position:absolute;inset:0;border-radius:var(--radius-full, calc(infinity * 1px));content:\"\"}.ui-loading--pulse-ring:before,.ui-loading--pulse-ring:after{border-style:var(--tw-border-style);border-width:.12em;border-color:currentcolor}.ui-loading--pulse-dot:before,.ui-loading--pulse-dot:after{background-color:currentcolor}.ui-loading--pulse-dot:before{inset:.25em}.ui-loading--pulse:after{animation:ui-loading-echo 1.4s ease-out infinite}.ui-loading--bar{height:100%;width:.15em;border-radius:var(--radius-full, calc(infinity * 1px));background-color:currentcolor;animation:ui-loading-stretch 1s ease-in-out infinite}.ui-loading--bars{align-items:flex-end}.ui-loading--bars>.ui-loading--bar{transform-origin:bottom}.ui-loading--prompt{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace)}.ui-loading--caret{margin-inline-start:calc(var(--spacing, .25rem) * -1.5);height:1em;width:.5em;background-color:currentcolor;animation:ui-loading-blink 1s steps(1) infinite}.ui-loading--prompt+.ui-loading--caret{margin-inline-start:0px}.ui-loading--shimmer{-webkit-background-clip:text;background-clip:text;--tw-leading: var(--leading-normal, 1.5);line-height:var(--leading-normal, 1.5);-webkit-text-fill-color:transparent;background-image:linear-gradient(90deg,currentColor 35%,currentColor 50%,currentColor 65%);background-size:250% 100%;animation:ui-loading-shimmer 1.6s linear infinite}@supports (color: color-mix(in lab,red,red)){.ui-loading--shimmer{background-image:linear-gradient(90deg,color-mix(in oklab,currentColor 35%,transparent) 35%,currentColor 50%,color-mix(in oklab,currentColor 35%,transparent) 65%)}}.ui-loading--text-dots{margin-inline-start:calc(var(--spacing, .25rem) * -2)}.ui-loading--text-dot{display:inline-block;animation:ui-loading-bounce 1.2s ease-in-out infinite}.ui-loading--dot{width:.3em;height:.3em;border-radius:var(--radius-full, calc(infinity * 1px));background-color:currentcolor}.ui-loading--dot-bounce{opacity:60%;animation:ui-loading-bounce 1.2s ease-in-out infinite}.ui-loading--dot-fade{animation:ui-loading-fade 1.2s ease-in-out infinite}.ui-loading--stagger>:nth-child(2){animation-delay:.15s}.ui-loading--stagger>:nth-child(3){animation-delay:.3s}.ui-loading--stagger>:nth-child(4){animation-delay:.45s}.ui-loading--stagger>:nth-child(5){animation-delay:.6s}@keyframes ui-loading-spin{to{transform:rotate(360deg)}}@keyframes ui-loading-spoke{0%{opacity:1}to{opacity:.15}}@keyframes ui-loading-echo{0%{transform:scale(1);opacity:.6}to{transform:scale(2);opacity:0}}@keyframes ui-loading-stretch{0%,60%,to{transform:scaleY(.3)}30%{transform:scaleY(1)}}@keyframes ui-loading-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-.25em)}}@keyframes ui-loading-blink{0%{opacity:1}50%{opacity:0}}@keyframes ui-loading-shimmer{0%{background-position:100% 0}to{background-position:0 0}}@keyframes ui-loading-fade{0%,to{opacity:.25}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.ui-loading *,.ui-loading *:before,.ui-loading *:after{animation-duration:3s!important}}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
|
|
7005
|
+
});
|
|
7006
|
+
};
|
|
7007
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
7008
|
+
minVersion: "12.0.0",
|
|
7009
|
+
version: "22.2.1",
|
|
7010
|
+
ngImport: i0,
|
|
7011
|
+
type: UiLoadingComponent,
|
|
7012
|
+
decorators: [{
|
|
7013
|
+
type: Component,
|
|
7014
|
+
args: [{
|
|
7015
|
+
selector: "ui-loading",
|
|
7016
|
+
template: "<div class=\"ui-loading\" role=\"status\">\n @switch (type()) {\n @case ('throbber') {\n <svg\n class=\"ui-loading--throbber\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n @for (i of throbberSpokes; track i) {\n <line\n x1=\"12\"\n y1=\"2.5\"\n x2=\"12\"\n y2=\"7\"\n [attr.transform]=\"'rotate(' + i * (360 / throbberSpokes.length) + ' 12 12)'\"\n [style.animation-delay.s]=\"i / throbberSpokes.length - 1\"\n />\n }\n </svg>\n }\n @case ('pulse-ring') {\n <span\n class=\"ui-loading--pulse-ring ui-loading--pulse\"\n aria-hidden=\"true\"\n ></span>\n }\n @case ('pulse-dot') {\n <span\n class=\"ui-loading--pulse ui-loading--pulse-dot\"\n aria-hidden=\"true\"\n ></span>\n }\n @case ('wave') {\n <span\n class=\"ui-loading--row ui-loading--stagger\"\n aria-hidden=\"true\"\n >\n @for (i of [1, 2, 3, 4, 5]; track i) {\n <span class=\"ui-loading--bar\"></span>\n }\n </span>\n }\n @case ('equaliser') {\n <span\n class=\"ui-loading--row ui-loading--stagger ui-loading--bars\"\n aria-hidden=\"true\"\n >\n @for (i of [1, 2, 3, 4, 5]; track i) {\n <span class=\"ui-loading--bar\"></span>\n }\n </span>\n }\n @case ('terminal') {\n <span class=\"ui-loading--prompt\" aria-hidden=\"true\">></span>\n <span class=\"ui-loading--caret\" aria-hidden=\"true\"></span>\n }\n @case ('blinking-caret') {\n <span>Loading</span>\n <span class=\"ui-loading--caret\" aria-hidden=\"true\"></span>\n }\n @case ('shimmer-text') {\n <span class=\"ui-loading--shimmer\">Loading</span>\n }\n @case ('loading-dots') {\n <span>Loading</span>\n <span\n class=\"ui-loading--text-dots ui-loading--stagger\"\n aria-hidden=\"true\"\n >\n @for (i of [1, 2, 3]; track i) {\n <span class=\"ui-loading--text-dot\">.</span>\n }\n </span>\n }\n @case ('bouncing-dots') {\n <span\n class=\"ui-loading--row ui-loading--stagger\"\n aria-hidden=\"true\"\n >\n @for (i of [1, 2, 3]; track i) {\n <span class=\"ui-loading--dot ui-loading--dot-bounce\"></span>\n }\n </span>\n }\n @case ('fading-dots') {\n <span\n class=\"ui-loading--row ui-loading--stagger\"\n aria-hidden=\"true\"\n >\n @for (i of [1, 2, 3]; track i) {\n <span class=\"ui-loading--dot ui-loading--dot-fade\"></span>\n }\n </span>\n }\n @default {\n <span class=\"ui-loading--spinner\" aria-hidden=\"true\"></span>\n }\n }\n\n @if (!hasText()) {\n <span class=\"sr-only\">Loading</span>\n }\n</div>\n",
|
|
7017
|
+
styles: ["@layer properties;.ui-loading{display:inline-flex;align-items:center;column-gap:calc(var(--spacing, .25rem) * 2);--tw-leading: 1;line-height:1}.ui-loading--row{display:inline-flex;height:1em;align-items:center;column-gap:.2em}.ui-loading--spinner{display:inline-block;width:1em;height:1em;border-radius:var(--radius-full, calc(infinity * 1px));border-style:var(--tw-border-style);border-width:.15em;border-color:currentcolor;border-top-color:currentcolor;animation:ui-loading-spin .8s linear infinite}@supports (color: color-mix(in lab,red,red)){.ui-loading--spinner{border-color:color-mix(in oklab,currentcolor 20%,transparent)}}.ui-loading--throbber{width:1em;height:1em}.ui-loading--throbber line{stroke:currentColor;stroke-width:2;stroke-linecap:round;animation:ui-loading-spoke 1s linear infinite}.ui-loading--pulse{position:relative;display:inline-block;width:1em;height:1em}.ui-loading--pulse:before,.ui-loading--pulse:after{position:absolute;inset:0;border-radius:var(--radius-full, calc(infinity * 1px));content:\"\"}.ui-loading--pulse-ring:before,.ui-loading--pulse-ring:after{border-style:var(--tw-border-style);border-width:.12em;border-color:currentcolor}.ui-loading--pulse-dot:before,.ui-loading--pulse-dot:after{background-color:currentcolor}.ui-loading--pulse-dot:before{inset:.25em}.ui-loading--pulse:after{animation:ui-loading-echo 1.4s ease-out infinite}.ui-loading--bar{height:100%;width:.15em;border-radius:var(--radius-full, calc(infinity * 1px));background-color:currentcolor;animation:ui-loading-stretch 1s ease-in-out infinite}.ui-loading--bars{align-items:flex-end}.ui-loading--bars>.ui-loading--bar{transform-origin:bottom}.ui-loading--prompt{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace)}.ui-loading--caret{margin-inline-start:calc(var(--spacing, .25rem) * -1.5);height:1em;width:.5em;background-color:currentcolor;animation:ui-loading-blink 1s steps(1) infinite}.ui-loading--prompt+.ui-loading--caret{margin-inline-start:0px}.ui-loading--shimmer{-webkit-background-clip:text;background-clip:text;--tw-leading: var(--leading-normal, 1.5);line-height:var(--leading-normal, 1.5);-webkit-text-fill-color:transparent;background-image:linear-gradient(90deg,currentColor 35%,currentColor 50%,currentColor 65%);background-size:250% 100%;animation:ui-loading-shimmer 1.6s linear infinite}@supports (color: color-mix(in lab,red,red)){.ui-loading--shimmer{background-image:linear-gradient(90deg,color-mix(in oklab,currentColor 35%,transparent) 35%,currentColor 50%,color-mix(in oklab,currentColor 35%,transparent) 65%)}}.ui-loading--text-dots{margin-inline-start:calc(var(--spacing, .25rem) * -2)}.ui-loading--text-dot{display:inline-block;animation:ui-loading-bounce 1.2s ease-in-out infinite}.ui-loading--dot{width:.3em;height:.3em;border-radius:var(--radius-full, calc(infinity * 1px));background-color:currentcolor}.ui-loading--dot-bounce{opacity:60%;animation:ui-loading-bounce 1.2s ease-in-out infinite}.ui-loading--dot-fade{animation:ui-loading-fade 1.2s ease-in-out infinite}.ui-loading--stagger>:nth-child(2){animation-delay:.15s}.ui-loading--stagger>:nth-child(3){animation-delay:.3s}.ui-loading--stagger>:nth-child(4){animation-delay:.45s}.ui-loading--stagger>:nth-child(5){animation-delay:.6s}@keyframes ui-loading-spin{to{transform:rotate(360deg)}}@keyframes ui-loading-spoke{0%{opacity:1}to{opacity:.15}}@keyframes ui-loading-echo{0%{transform:scale(1);opacity:.6}to{transform:scale(2);opacity:0}}@keyframes ui-loading-stretch{0%,60%,to{transform:scaleY(.3)}30%{transform:scaleY(1)}}@keyframes ui-loading-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-.25em)}}@keyframes ui-loading-blink{0%{opacity:1}50%{opacity:0}}@keyframes ui-loading-shimmer{0%{background-position:100% 0}to{background-position:0 0}}@keyframes ui-loading-fade{0%,to{opacity:.25}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.ui-loading *,.ui-loading *:before,.ui-loading *:after{animation-duration:3s!important}}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
|
|
7018
|
+
}]
|
|
7019
|
+
}],
|
|
7020
|
+
propDecorators: { type: [{
|
|
7021
|
+
type: i0.Input,
|
|
6377
7022
|
args: [{
|
|
6378
7023
|
isSignal: true,
|
|
6379
7024
|
alias: "type",
|
|
@@ -6420,7 +7065,7 @@ var UiModalCloseButtonComponent = class UiModalCloseButtonComponent {
|
|
|
6420
7065
|
} },
|
|
6421
7066
|
outputs: { isOpen: "isOpenChange" },
|
|
6422
7067
|
ngImport: i0,
|
|
6423
|
-
template: "<ui-button\n appearance=\"white\"\n intent=\"secondary\"\n classes=\"p-2! border-transparent!\"\n (click)=\"isOpen.set(false)\"\n>\n <ng-icon name=\"heroXMark\" strokeWidth=\"2.5\" />\n</ui-button>\n",
|
|
7068
|
+
template: "<ui-button\n appearance=\"white\"\n intent=\"secondary\"\n classes=\"p-2! border-transparent! shadow-none!\"\n (click)=\"isOpen.set(false)\"\n>\n <ng-icon name=\"heroXMark\" strokeWidth=\"2.5\" />\n</ui-button>\n",
|
|
6424
7069
|
dependencies: [{
|
|
6425
7070
|
kind: "component",
|
|
6426
7071
|
type: UiButtonComponent,
|
|
@@ -6459,7 +7104,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6459
7104
|
args: [{
|
|
6460
7105
|
selector: "ui-modal-close-btn",
|
|
6461
7106
|
imports: [UiButtonComponent, NgIcon],
|
|
6462
|
-
template: "<ui-button\n appearance=\"white\"\n intent=\"secondary\"\n classes=\"p-2! border-transparent!\"\n (click)=\"isOpen.set(false)\"\n>\n <ng-icon name=\"heroXMark\" strokeWidth=\"2.5\" />\n</ui-button>\n"
|
|
7107
|
+
template: "<ui-button\n appearance=\"white\"\n intent=\"secondary\"\n classes=\"p-2! border-transparent! shadow-none!\"\n (click)=\"isOpen.set(false)\"\n>\n <ng-icon name=\"heroXMark\" strokeWidth=\"2.5\" />\n</ui-button>\n"
|
|
6463
7108
|
}]
|
|
6464
7109
|
}],
|
|
6465
7110
|
propDecorators: { isOpen: [{
|
|
@@ -6478,6 +7123,7 @@ var UiModalComponent = class UiModalComponent {
|
|
|
6478
7123
|
isOpen = model.required(...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
|
|
6479
7124
|
closeBehaviour = input("whenClickOutside", ...ngDevMode ? [{ debugName: "closeBehaviour" }] : /* istanbul ignore next */ []);
|
|
6480
7125
|
title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
7126
|
+
size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
|
|
6481
7127
|
classes = input("", ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
6482
7128
|
headerElement = contentChild("header", {
|
|
6483
7129
|
...ngDevMode ? { debugName: "headerElement" } : /* istanbul ignore next */ {},
|
|
@@ -6491,7 +7137,11 @@ var UiModalComponent = class UiModalComponent {
|
|
|
6491
7137
|
...ngDevMode ? { debugName: "panelElement" } : /* istanbul ignore next */ {},
|
|
6492
7138
|
read: ElementRef
|
|
6493
7139
|
});
|
|
6494
|
-
generatedClasses = computed(() => [
|
|
7140
|
+
generatedClasses = computed(() => [
|
|
7141
|
+
"ui-modal",
|
|
7142
|
+
`ui-modal--${this.size()}`,
|
|
7143
|
+
this.classes()
|
|
7144
|
+
].filter(Boolean).join(" "), ...ngDevMode ? [{ debugName: "generatedClasses" }] : /* istanbul ignore next */ []);
|
|
6495
7145
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
6496
7146
|
minVersion: "12.0.0",
|
|
6497
7147
|
version: "22.2.1",
|
|
@@ -6528,6 +7178,13 @@ var UiModalComponent = class UiModalComponent {
|
|
|
6528
7178
|
isRequired: false,
|
|
6529
7179
|
transformFunction: null
|
|
6530
7180
|
},
|
|
7181
|
+
size: {
|
|
7182
|
+
classPropertyName: "size",
|
|
7183
|
+
publicName: "size",
|
|
7184
|
+
isSignal: true,
|
|
7185
|
+
isRequired: false,
|
|
7186
|
+
transformFunction: null
|
|
7187
|
+
},
|
|
6531
7188
|
classes: {
|
|
6532
7189
|
classPropertyName: "classes",
|
|
6533
7190
|
publicName: "classes",
|
|
@@ -6557,8 +7214,8 @@ var UiModalComponent = class UiModalComponent {
|
|
|
6557
7214
|
isSignal: true
|
|
6558
7215
|
}],
|
|
6559
7216
|
ngImport: i0,
|
|
6560
|
-
template: "@if (isOpen()) {\n <div\n class=\"group z-50 fixed inset-0 flex justify-center items-center bg-black/40 starting:opacity-0 p-4 transition-opacity duration-150 ease-out\"\n animate.leave=\"fs-modal--leaving opacity-0\"\n >\n <ui-overlay\n [isOpen]=\"isOpen\"\n [closeBehaviour]=\"closeBehaviour()\"\n [content]=\"panelElement()\"\n tabIndex=\"-1\"\n role=\"dialog\"\n aria-modal=\"true\"\n class=\"block max-w-full starting:scale-95 group-[.fs-modal--leaving]:scale-95 transition duration-150 ease-out\"\n >\n <
|
|
6561
|
-
styles: ["
|
|
7217
|
+
template: "@if (isOpen()) {\n <div\n class=\"group z-50 fixed inset-0 flex justify-center items-center bg-black/40 starting:opacity-0 p-4 transition-opacity duration-150 ease-out\"\n animate.leave=\"fs-modal--leaving opacity-0\"\n >\n <ui-overlay\n [isOpen]=\"isOpen\"\n [closeBehaviour]=\"closeBehaviour()\"\n [content]=\"panelElement()\"\n tabIndex=\"-1\"\n role=\"dialog\"\n aria-modal=\"true\"\n class=\"block max-w-full starting:scale-95 group-[.fs-modal--leaving]:scale-95 transition duration-150 ease-out\"\n >\n <ui-card #panel radius=\"xl\" [class]=\"generatedClasses()\">\n <div class=\"flex flex-col max-h-[calc(100dvh-2rem-2px)]\">\n <header class=\"flex justify-between items-center gap-x-5 p-5 border-neutral border-b shrink-0\">\n @if (headerElement()) {\n <ng-container *ngTemplateOutlet=\"headerElement()\" />\n } @else {\n <span class=\"ui-text-h3\">{{ title() }}</span>\n <ui-modal-close-btn [(isOpen)]=\"isOpen\" />\n }\n </header>\n <div class=\"flex-1 min-h-0 overflow-auto\">\n <ng-content />\n </div>\n\n @if (footerElement()) {\n <footer class=\"flex justify-end items-center gap-2.5 p-5 shrink-0\">\n <ng-container *ngTemplateOutlet=\"footerElement()\" />\n </footer>\n }\n </div>\n </ui-card>\n </ui-overlay>\n </div>\n}\n",
|
|
7218
|
+
styles: [".ui-modal--backdrop{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;overflow-y:auto;background-color:color-mix(in srgb,oklch(21% .034 264.665) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.ui-modal--backdrop{background-color:color-mix(in oklab,var(--color-gray-900, oklch(21% .034 264.665)) 50%,transparent)}}.ui-modal{pointer-events:auto;max-height:100vh;overflow:hidden}@media(width>=40rem){.ui-modal--sm{margin-inline:auto;width:100%;max-width:var(--container-lg, 32rem)}}@media(width>=48rem){.ui-modal--md{margin-inline:auto;width:100%;max-width:var(--container-2xl, 42rem)}}@media(width>=64rem){.ui-modal--lg{margin-inline:auto;width:100%;max-width:var(--container-4xl, 56rem)}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"],
|
|
6562
7219
|
dependencies: [
|
|
6563
7220
|
{
|
|
6564
7221
|
kind: "component",
|
|
@@ -6592,6 +7249,12 @@ var UiModalComponent = class UiModalComponent {
|
|
|
6592
7249
|
"ngTemplateOutlet",
|
|
6593
7250
|
"ngTemplateOutletInjector"
|
|
6594
7251
|
]
|
|
7252
|
+
},
|
|
7253
|
+
{
|
|
7254
|
+
kind: "component",
|
|
7255
|
+
type: UiCardComponent,
|
|
7256
|
+
selector: "ui-card",
|
|
7257
|
+
inputs: ["radius"]
|
|
6595
7258
|
}
|
|
6596
7259
|
]
|
|
6597
7260
|
});
|
|
@@ -6608,10 +7271,11 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6608
7271
|
imports: [
|
|
6609
7272
|
UiOverlayComponent,
|
|
6610
7273
|
UiModalCloseButtonComponent,
|
|
6611
|
-
NgTemplateOutlet
|
|
7274
|
+
NgTemplateOutlet,
|
|
7275
|
+
UiCardComponent
|
|
6612
7276
|
],
|
|
6613
|
-
template: "@if (isOpen()) {\n <div\n class=\"group z-50 fixed inset-0 flex justify-center items-center bg-black/40 starting:opacity-0 p-4 transition-opacity duration-150 ease-out\"\n animate.leave=\"fs-modal--leaving opacity-0\"\n >\n <ui-overlay\n [isOpen]=\"isOpen\"\n [closeBehaviour]=\"closeBehaviour()\"\n [content]=\"panelElement()\"\n tabIndex=\"-1\"\n role=\"dialog\"\n aria-modal=\"true\"\n class=\"block max-w-full starting:scale-95 group-[.fs-modal--leaving]:scale-95 transition duration-150 ease-out\"\n >\n <
|
|
6614
|
-
styles: ["
|
|
7277
|
+
template: "@if (isOpen()) {\n <div\n class=\"group z-50 fixed inset-0 flex justify-center items-center bg-black/40 starting:opacity-0 p-4 transition-opacity duration-150 ease-out\"\n animate.leave=\"fs-modal--leaving opacity-0\"\n >\n <ui-overlay\n [isOpen]=\"isOpen\"\n [closeBehaviour]=\"closeBehaviour()\"\n [content]=\"panelElement()\"\n tabIndex=\"-1\"\n role=\"dialog\"\n aria-modal=\"true\"\n class=\"block max-w-full starting:scale-95 group-[.fs-modal--leaving]:scale-95 transition duration-150 ease-out\"\n >\n <ui-card #panel radius=\"xl\" [class]=\"generatedClasses()\">\n <div class=\"flex flex-col max-h-[calc(100dvh-2rem-2px)]\">\n <header class=\"flex justify-between items-center gap-x-5 p-5 border-neutral border-b shrink-0\">\n @if (headerElement()) {\n <ng-container *ngTemplateOutlet=\"headerElement()\" />\n } @else {\n <span class=\"ui-text-h3\">{{ title() }}</span>\n <ui-modal-close-btn [(isOpen)]=\"isOpen\" />\n }\n </header>\n <div class=\"flex-1 min-h-0 overflow-auto\">\n <ng-content />\n </div>\n\n @if (footerElement()) {\n <footer class=\"flex justify-end items-center gap-2.5 p-5 shrink-0\">\n <ng-container *ngTemplateOutlet=\"footerElement()\" />\n </footer>\n }\n </div>\n </ui-card>\n </ui-overlay>\n </div>\n}\n",
|
|
7278
|
+
styles: [".ui-modal--backdrop{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;overflow-y:auto;background-color:color-mix(in srgb,oklch(21% .034 264.665) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.ui-modal--backdrop{background-color:color-mix(in oklab,var(--color-gray-900, oklch(21% .034 264.665)) 50%,transparent)}}.ui-modal{pointer-events:auto;max-height:100vh;overflow:hidden}@media(width>=40rem){.ui-modal--sm{margin-inline:auto;width:100%;max-width:var(--container-lg, 32rem)}}@media(width>=48rem){.ui-modal--md{margin-inline:auto;width:100%;max-width:var(--container-2xl, 42rem)}}@media(width>=64rem){.ui-modal--lg{margin-inline:auto;width:100%;max-width:var(--container-4xl, 56rem)}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
|
|
6615
7279
|
}]
|
|
6616
7280
|
}],
|
|
6617
7281
|
propDecorators: {
|
|
@@ -6642,6 +7306,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6642
7306
|
required: false
|
|
6643
7307
|
}]
|
|
6644
7308
|
}],
|
|
7309
|
+
size: [{
|
|
7310
|
+
type: i0.Input,
|
|
7311
|
+
args: [{
|
|
7312
|
+
isSignal: true,
|
|
7313
|
+
alias: "size",
|
|
7314
|
+
required: false
|
|
7315
|
+
}]
|
|
7316
|
+
}],
|
|
6645
7317
|
classes: [{
|
|
6646
7318
|
type: i0.Input,
|
|
6647
7319
|
args: [{
|
|
@@ -8580,7 +9252,7 @@ var UiToastComponent = class UiToastComponent {
|
|
|
8580
9252
|
"focusout": "setFocused(false)"
|
|
8581
9253
|
} },
|
|
8582
9254
|
ngImport: i0,
|
|
8583
|
-
template: "<
|
|
9255
|
+
template: "<ui-card\n radius=\"xl\"\n class=\"p-4 w-full max-w-xs\"\n [class]=\"classes()\"\n [attr.role]=\"role()\"\n tabindex=\"-1\"\n>\n <div class=\"flex gap-x-3\">\n <div class=\"inline-flex\" [class]=\"iconColour()\">\n <ng-icon\n [name]=\"icon()\"\n class=\"shrink-0\"\n size=\"24\"\n />\n </div>\n <div class=\"grow\">\n <p class=\"text-layer-foreground ui-text-body\">\n <ng-content />\n </p>\n </div>\n @if (dismissable()) {\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n (click)=\"dismissed.emit()\"\n >\n <ng-icon name=\"heroXMark\" />\n </button>\n }\n </div>\n</ui-card>\n",
|
|
8584
9256
|
dependencies: [{
|
|
8585
9257
|
kind: "component",
|
|
8586
9258
|
type: NgIcon,
|
|
@@ -8592,6 +9264,11 @@ var UiToastComponent = class UiToastComponent {
|
|
|
8592
9264
|
"strokeWidth",
|
|
8593
9265
|
"color"
|
|
8594
9266
|
]
|
|
9267
|
+
}, {
|
|
9268
|
+
kind: "component",
|
|
9269
|
+
type: UiCardComponent,
|
|
9270
|
+
selector: "ui-card",
|
|
9271
|
+
inputs: ["radius"]
|
|
8595
9272
|
}]
|
|
8596
9273
|
});
|
|
8597
9274
|
};
|
|
@@ -8604,14 +9281,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
8604
9281
|
type: Component,
|
|
8605
9282
|
args: [{
|
|
8606
9283
|
selector: "ui-toast",
|
|
8607
|
-
imports: [NgIcon],
|
|
9284
|
+
imports: [NgIcon, UiCardComponent],
|
|
8608
9285
|
host: {
|
|
8609
9286
|
"(mouseenter)": "setHovered(true)",
|
|
8610
9287
|
"(mouseleave)": "setHovered(false)",
|
|
8611
9288
|
"(focusin)": "setFocused(true)",
|
|
8612
9289
|
"(focusout)": "setFocused(false)"
|
|
8613
9290
|
},
|
|
8614
|
-
template: "<
|
|
9291
|
+
template: "<ui-card\n radius=\"xl\"\n class=\"p-4 w-full max-w-xs\"\n [class]=\"classes()\"\n [attr.role]=\"role()\"\n tabindex=\"-1\"\n>\n <div class=\"flex gap-x-3\">\n <div class=\"inline-flex\" [class]=\"iconColour()\">\n <ng-icon\n [name]=\"icon()\"\n class=\"shrink-0\"\n size=\"24\"\n />\n </div>\n <div class=\"grow\">\n <p class=\"text-layer-foreground ui-text-body\">\n <ng-content />\n </p>\n </div>\n @if (dismissable()) {\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n (click)=\"dismissed.emit()\"\n >\n <ng-icon name=\"heroXMark\" />\n </button>\n }\n </div>\n</ui-card>\n"
|
|
8615
9292
|
}]
|
|
8616
9293
|
}],
|
|
8617
9294
|
ctorParameters: () => [],
|
|
@@ -8819,196 +9496,6 @@ const ToasterPositions = [
|
|
|
8819
9496
|
"bottom-center",
|
|
8820
9497
|
"bottom-right"
|
|
8821
9498
|
];
|
|
8822
|
-
var UiTooltipComponent = class UiTooltipComponent {
|
|
8823
|
-
anchor = inject(ElementRef);
|
|
8824
|
-
content = viewChild("content", {
|
|
8825
|
-
...ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {},
|
|
8826
|
-
read: ElementRef
|
|
8827
|
-
});
|
|
8828
|
-
text = input.required(...ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []);
|
|
8829
|
-
placement = input("top", ...ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []);
|
|
8830
|
-
trigger = input("hover", ...ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []);
|
|
8831
|
-
classes = input("", ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
8832
|
-
isOpen = input(signal(false), ...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
|
|
8833
|
-
closeBehaviour = computed(() => this.trigger() === "click" ? "whenClickOutside" : "none", ...ngDevMode ? [{ debugName: "closeBehaviour" }] : /* istanbul ignore next */ []);
|
|
8834
|
-
generatedClasses = computed(() => [
|
|
8835
|
-
"ui-tooltip",
|
|
8836
|
-
"ui-text-caption",
|
|
8837
|
-
this.classes()
|
|
8838
|
-
].filter(Boolean).join(" "), ...ngDevMode ? [{ debugName: "generatedClasses" }] : /* istanbul ignore next */ []);
|
|
8839
|
-
onHover(isHovering) {
|
|
8840
|
-
if (this.trigger() === "hover") this.isOpen().set(isHovering);
|
|
8841
|
-
}
|
|
8842
|
-
onFocus(isFocused) {
|
|
8843
|
-
if (["hover", "focus"].includes(this.trigger())) this.isOpen().set(isFocused);
|
|
8844
|
-
}
|
|
8845
|
-
onClick() {
|
|
8846
|
-
if (this.trigger() === "click") this.isOpen().update((value) => !value);
|
|
8847
|
-
}
|
|
8848
|
-
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
8849
|
-
minVersion: "12.0.0",
|
|
8850
|
-
version: "22.2.1",
|
|
8851
|
-
ngImport: i0,
|
|
8852
|
-
type: UiTooltipComponent,
|
|
8853
|
-
deps: [],
|
|
8854
|
-
target: i0.ɵɵFactoryTarget.Component
|
|
8855
|
-
});
|
|
8856
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
8857
|
-
minVersion: "17.0.0",
|
|
8858
|
-
version: "22.2.1",
|
|
8859
|
-
type: UiTooltipComponent,
|
|
8860
|
-
isStandalone: true,
|
|
8861
|
-
selector: "ui-tooltip",
|
|
8862
|
-
inputs: {
|
|
8863
|
-
text: {
|
|
8864
|
-
classPropertyName: "text",
|
|
8865
|
-
publicName: "text",
|
|
8866
|
-
isSignal: true,
|
|
8867
|
-
isRequired: true,
|
|
8868
|
-
transformFunction: null
|
|
8869
|
-
},
|
|
8870
|
-
placement: {
|
|
8871
|
-
classPropertyName: "placement",
|
|
8872
|
-
publicName: "placement",
|
|
8873
|
-
isSignal: true,
|
|
8874
|
-
isRequired: false,
|
|
8875
|
-
transformFunction: null
|
|
8876
|
-
},
|
|
8877
|
-
trigger: {
|
|
8878
|
-
classPropertyName: "trigger",
|
|
8879
|
-
publicName: "trigger",
|
|
8880
|
-
isSignal: true,
|
|
8881
|
-
isRequired: false,
|
|
8882
|
-
transformFunction: null
|
|
8883
|
-
},
|
|
8884
|
-
classes: {
|
|
8885
|
-
classPropertyName: "classes",
|
|
8886
|
-
publicName: "classes",
|
|
8887
|
-
isSignal: true,
|
|
8888
|
-
isRequired: false,
|
|
8889
|
-
transformFunction: null
|
|
8890
|
-
},
|
|
8891
|
-
isOpen: {
|
|
8892
|
-
classPropertyName: "isOpen",
|
|
8893
|
-
publicName: "isOpen",
|
|
8894
|
-
isSignal: true,
|
|
8895
|
-
isRequired: false,
|
|
8896
|
-
transformFunction: null
|
|
8897
|
-
}
|
|
8898
|
-
},
|
|
8899
|
-
host: {
|
|
8900
|
-
listeners: {
|
|
8901
|
-
"mouseenter": "onHover(true)",
|
|
8902
|
-
"mouseleave": "onHover(false)",
|
|
8903
|
-
"focusin": "onFocus(true)",
|
|
8904
|
-
"focusout": "onFocus(false)",
|
|
8905
|
-
"click": "onClick()"
|
|
8906
|
-
},
|
|
8907
|
-
classAttribute: "inline-flex size-fit"
|
|
8908
|
-
},
|
|
8909
|
-
viewQueries: [{
|
|
8910
|
-
propertyName: "content",
|
|
8911
|
-
first: true,
|
|
8912
|
-
predicate: ["content"],
|
|
8913
|
-
descendants: true,
|
|
8914
|
-
read: ElementRef,
|
|
8915
|
-
isSignal: true
|
|
8916
|
-
}],
|
|
8917
|
-
exportAs: ["uiTooltip"],
|
|
8918
|
-
ngImport: i0,
|
|
8919
|
-
template: "<ui-overlay\n [isOpen]=\"isOpen()\"\n [closeBehaviour]=\"closeBehaviour()\"\n [content]=\"content()\"\n [anchor]=\"anchor\"\n [placement]=\"placement()\"\n>\n <ng-content />\n\n @if (isOpen()()) {\n <div #content class=\"p-1.5\" style=\"position: fixed; z-index: 60\">\n <div role=\"tooltip\" [class]=\"generatedClasses()\">{{ text() }}</div>\n </div>\n }\n</ui-overlay>\n",
|
|
8920
|
-
styles: ["@layer properties;.ui-tooltip{max-width:var(--container-xs, 20rem);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--tooltip-line);background-color:var(--tooltip);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);color:var(--tooltip-foreground);--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"],
|
|
8921
|
-
dependencies: [{
|
|
8922
|
-
kind: "component",
|
|
8923
|
-
type: UiOverlayComponent,
|
|
8924
|
-
selector: "ui-overlay",
|
|
8925
|
-
inputs: [
|
|
8926
|
-
"content",
|
|
8927
|
-
"anchor",
|
|
8928
|
-
"closeBehaviour",
|
|
8929
|
-
"isOpen",
|
|
8930
|
-
"placement",
|
|
8931
|
-
"offset",
|
|
8932
|
-
"viewportPadding",
|
|
8933
|
-
"matchWidth"
|
|
8934
|
-
],
|
|
8935
|
-
exportAs: ["uiOverlay"]
|
|
8936
|
-
}]
|
|
8937
|
-
});
|
|
8938
|
-
};
|
|
8939
|
-
i0.ɵɵngDeclareClassMetadata({
|
|
8940
|
-
minVersion: "12.0.0",
|
|
8941
|
-
version: "22.2.1",
|
|
8942
|
-
ngImport: i0,
|
|
8943
|
-
type: UiTooltipComponent,
|
|
8944
|
-
decorators: [{
|
|
8945
|
-
type: Component,
|
|
8946
|
-
args: [{
|
|
8947
|
-
selector: "ui-tooltip",
|
|
8948
|
-
exportAs: "uiTooltip",
|
|
8949
|
-
imports: [UiOverlayComponent],
|
|
8950
|
-
host: {
|
|
8951
|
-
class: "inline-flex size-fit",
|
|
8952
|
-
"(mouseenter)": "onHover(true)",
|
|
8953
|
-
"(mouseleave)": "onHover(false)",
|
|
8954
|
-
"(focusin)": "onFocus(true)",
|
|
8955
|
-
"(focusout)": "onFocus(false)",
|
|
8956
|
-
"(click)": "onClick()"
|
|
8957
|
-
},
|
|
8958
|
-
template: "<ui-overlay\n [isOpen]=\"isOpen()\"\n [closeBehaviour]=\"closeBehaviour()\"\n [content]=\"content()\"\n [anchor]=\"anchor\"\n [placement]=\"placement()\"\n>\n <ng-content />\n\n @if (isOpen()()) {\n <div #content class=\"p-1.5\" style=\"position: fixed; z-index: 60\">\n <div role=\"tooltip\" [class]=\"generatedClasses()\">{{ text() }}</div>\n </div>\n }\n</ui-overlay>\n",
|
|
8959
|
-
styles: ["@layer properties;.ui-tooltip{max-width:var(--container-xs, 20rem);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--tooltip-line);background-color:var(--tooltip);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);color:var(--tooltip-foreground);--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"]
|
|
8960
|
-
}]
|
|
8961
|
-
}],
|
|
8962
|
-
propDecorators: {
|
|
8963
|
-
content: [{
|
|
8964
|
-
type: i0.ViewChild,
|
|
8965
|
-
args: ["content", {
|
|
8966
|
-
read: ElementRef,
|
|
8967
|
-
isSignal: true
|
|
8968
|
-
}]
|
|
8969
|
-
}],
|
|
8970
|
-
text: [{
|
|
8971
|
-
type: i0.Input,
|
|
8972
|
-
args: [{
|
|
8973
|
-
isSignal: true,
|
|
8974
|
-
alias: "text",
|
|
8975
|
-
required: true
|
|
8976
|
-
}]
|
|
8977
|
-
}],
|
|
8978
|
-
placement: [{
|
|
8979
|
-
type: i0.Input,
|
|
8980
|
-
args: [{
|
|
8981
|
-
isSignal: true,
|
|
8982
|
-
alias: "placement",
|
|
8983
|
-
required: false
|
|
8984
|
-
}]
|
|
8985
|
-
}],
|
|
8986
|
-
trigger: [{
|
|
8987
|
-
type: i0.Input,
|
|
8988
|
-
args: [{
|
|
8989
|
-
isSignal: true,
|
|
8990
|
-
alias: "trigger",
|
|
8991
|
-
required: false
|
|
8992
|
-
}]
|
|
8993
|
-
}],
|
|
8994
|
-
classes: [{
|
|
8995
|
-
type: i0.Input,
|
|
8996
|
-
args: [{
|
|
8997
|
-
isSignal: true,
|
|
8998
|
-
alias: "classes",
|
|
8999
|
-
required: false
|
|
9000
|
-
}]
|
|
9001
|
-
}],
|
|
9002
|
-
isOpen: [{
|
|
9003
|
-
type: i0.Input,
|
|
9004
|
-
args: [{
|
|
9005
|
-
isSignal: true,
|
|
9006
|
-
alias: "isOpen",
|
|
9007
|
-
required: false
|
|
9008
|
-
}]
|
|
9009
|
-
}]
|
|
9010
|
-
}
|
|
9011
|
-
});
|
|
9012
9499
|
var UiLayoutComponent = class UiLayoutComponent {
|
|
9013
9500
|
sidebar = contentChild("sidebar", ...ngDevMode ? [{ debugName: "sidebar" }] : /* istanbul ignore next */ []);
|
|
9014
9501
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
@@ -10578,7 +11065,7 @@ var UiDatepickerComponent = class UiDatepickerComponent {
|
|
|
10578
11065
|
isSignal: true
|
|
10579
11066
|
}],
|
|
10580
11067
|
ngImport: i0,
|
|
10581
|
-
template: "<ui-dropdown\n [isOpen]=\"isOpen\"\n placement=\"bottom-start\"\n closeBehaviour=\"whenClickOutside\"\n class=\"w-full\"\n>\n <ui-input\n [value]=\"display()\"\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [describedBy]=\"describedBy()\"\n [ariaExpanded]=\"isOpen()\"\n ariaHasPopup=\"dialog\"\n [validationState]=\"validationState()\"\n classes=\"cursor-pointer\"\n autocomplete=\"off\"\n readonly\n (click)=\"toggle()\"\n (keydown)=\"handleInputKeydown($event)\"\n >\n <ng-template #leading>\n <ng-icon\n name=\"heroCalendar\"\n class=\"ms-3 text-muted-foreground-1 shrink-0\"\n />\n </ng-template>\n\n <ng-template #trailing>\n @if (clearable() && value() && !disabled()) {\n <button\n type=\"button\"\n class=\"inline-flex justify-center items-center w-8
|
|
11068
|
+
template: "<ui-dropdown\n [isOpen]=\"isOpen\"\n placement=\"bottom-start\"\n closeBehaviour=\"whenClickOutside\"\n class=\"w-full\"\n>\n <ui-input\n [value]=\"display()\"\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [describedBy]=\"describedBy()\"\n [ariaExpanded]=\"isOpen()\"\n ariaHasPopup=\"dialog\"\n [validationState]=\"validationState()\"\n classes=\"cursor-pointer\"\n autocomplete=\"off\"\n readonly\n (click)=\"toggle()\"\n (keydown)=\"handleInputKeydown($event)\"\n >\n <ng-template #leading>\n <ng-icon\n name=\"heroCalendar\"\n class=\"ms-3 text-muted-foreground-1 shrink-0\"\n />\n </ng-template>\n\n <ng-template #trailing>\n @if (clearable() && value() && !disabled()) {\n <button\n type=\"button\"\n class=\"inline-flex justify-center items-center self-stretch w-8 text-muted-foreground-1 hover:text-foreground\"\n aria-label=\"Clear date\"\n (click)=\"clear($event)\"\n >\n <ng-icon name=\"heroXMark\" class=\"shrink-0\" />\n </button>\n }\n </ng-template>\n </ui-input>\n\n @if (isOpen()) {\n <div uiDropdownContent class=\"py-2\">\n <ui-card radius=\"xl\" class=\"p-3\">\n <ui-calendar\n [value]=\"datePart()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [isDateDisabled]=\"isDateDisabled()\"\n [weekStart]=\"weekStart()\"\n [locale]=\"locale()\"\n (valueChange)=\"handlePick($event)\"\n (keydown)=\"handlePanelKeydown($event)\"\n />\n\n @if (withTime()) {\n <div class=\"flex justify-between items-center gap-x-2 mt-3 pt-3 border-gray-200 border-t\">\n <ui-time-select\n [value]=\"timePart()\"\n [minuteStep]=\"minuteStep()\"\n (valueChange)=\"handleTime($event)\"\n (keydown)=\"handlePanelKeydown($event)\"\n />\n\n <ui-button size=\"sm\" (click)=\"close()\">Done</ui-button>\n </div>\n }\n </ui-card>\n </div>\n }\n</ui-dropdown>\n",
|
|
10582
11069
|
dependencies: [
|
|
10583
11070
|
{
|
|
10584
11071
|
kind: "component",
|
|
@@ -10694,6 +11181,12 @@ var UiDatepickerComponent = class UiDatepickerComponent {
|
|
|
10694
11181
|
"strokeWidth",
|
|
10695
11182
|
"color"
|
|
10696
11183
|
]
|
|
11184
|
+
},
|
|
11185
|
+
{
|
|
11186
|
+
kind: "component",
|
|
11187
|
+
type: UiCardComponent,
|
|
11188
|
+
selector: "ui-card",
|
|
11189
|
+
inputs: ["radius"]
|
|
10697
11190
|
}
|
|
10698
11191
|
]
|
|
10699
11192
|
});
|
|
@@ -10714,10 +11207,11 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10714
11207
|
UiDropdownDirective,
|
|
10715
11208
|
UiButtonComponent,
|
|
10716
11209
|
UiTimeSelectComponent,
|
|
10717
|
-
NgIcon
|
|
11210
|
+
NgIcon,
|
|
11211
|
+
UiCardComponent
|
|
10718
11212
|
],
|
|
10719
11213
|
host: { class: "block w-full" },
|
|
10720
|
-
template: "<ui-dropdown\n [isOpen]=\"isOpen\"\n placement=\"bottom-start\"\n closeBehaviour=\"whenClickOutside\"\n class=\"w-full\"\n>\n <ui-input\n [value]=\"display()\"\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [describedBy]=\"describedBy()\"\n [ariaExpanded]=\"isOpen()\"\n ariaHasPopup=\"dialog\"\n [validationState]=\"validationState()\"\n classes=\"cursor-pointer\"\n autocomplete=\"off\"\n readonly\n (click)=\"toggle()\"\n (keydown)=\"handleInputKeydown($event)\"\n >\n <ng-template #leading>\n <ng-icon\n name=\"heroCalendar\"\n class=\"ms-3 text-muted-foreground-1 shrink-0\"\n />\n </ng-template>\n\n <ng-template #trailing>\n @if (clearable() && value() && !disabled()) {\n <button\n type=\"button\"\n class=\"inline-flex justify-center items-center w-8
|
|
11214
|
+
template: "<ui-dropdown\n [isOpen]=\"isOpen\"\n placement=\"bottom-start\"\n closeBehaviour=\"whenClickOutside\"\n class=\"w-full\"\n>\n <ui-input\n [value]=\"display()\"\n [id]=\"id()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [describedBy]=\"describedBy()\"\n [ariaExpanded]=\"isOpen()\"\n ariaHasPopup=\"dialog\"\n [validationState]=\"validationState()\"\n classes=\"cursor-pointer\"\n autocomplete=\"off\"\n readonly\n (click)=\"toggle()\"\n (keydown)=\"handleInputKeydown($event)\"\n >\n <ng-template #leading>\n <ng-icon\n name=\"heroCalendar\"\n class=\"ms-3 text-muted-foreground-1 shrink-0\"\n />\n </ng-template>\n\n <ng-template #trailing>\n @if (clearable() && value() && !disabled()) {\n <button\n type=\"button\"\n class=\"inline-flex justify-center items-center self-stretch w-8 text-muted-foreground-1 hover:text-foreground\"\n aria-label=\"Clear date\"\n (click)=\"clear($event)\"\n >\n <ng-icon name=\"heroXMark\" class=\"shrink-0\" />\n </button>\n }\n </ng-template>\n </ui-input>\n\n @if (isOpen()) {\n <div uiDropdownContent class=\"py-2\">\n <ui-card radius=\"xl\" class=\"p-3\">\n <ui-calendar\n [value]=\"datePart()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [isDateDisabled]=\"isDateDisabled()\"\n [weekStart]=\"weekStart()\"\n [locale]=\"locale()\"\n (valueChange)=\"handlePick($event)\"\n (keydown)=\"handlePanelKeydown($event)\"\n />\n\n @if (withTime()) {\n <div class=\"flex justify-between items-center gap-x-2 mt-3 pt-3 border-gray-200 border-t\">\n <ui-time-select\n [value]=\"timePart()\"\n [minuteStep]=\"minuteStep()\"\n (valueChange)=\"handleTime($event)\"\n (keydown)=\"handlePanelKeydown($event)\"\n />\n\n <ui-button size=\"sm\" (click)=\"close()\">Done</ui-button>\n </div>\n }\n </ui-card>\n </div>\n }\n</ui-dropdown>\n"
|
|
10721
11215
|
}]
|
|
10722
11216
|
}],
|
|
10723
11217
|
propDecorators: {
|
|
@@ -10909,7 +11403,7 @@ var UiDropdownButtonComponent = class UiDropdownButtonComponent {
|
|
|
10909
11403
|
},
|
|
10910
11404
|
outputs: { isOpen: "isOpenChange" },
|
|
10911
11405
|
ngImport: i0,
|
|
10912
|
-
template: "<ui-button\n [intent]=\"intent()\"\n [appearance]=\"appearance()\"\n (click)=\"isOpen.update(value => !value)\"\n>\n <ng-content />\n <ng-icon\n name=\"heroChevronDown\"\n class=\"size-4 shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n</ui-button>\n",
|
|
11406
|
+
template: "<ui-button\n [intent]=\"intent()\"\n [appearance]=\"appearance()\"\n (click)=\"isOpen.update(value => !value)\"\n>\n <ng-content />\n <ng-icon\n name=\"heroChevronDown\"\n class=\"size-4 transition-transform duration-100 shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n</ui-button>\n",
|
|
10913
11407
|
dependencies: [{
|
|
10914
11408
|
kind: "component",
|
|
10915
11409
|
type: UiButtonComponent,
|
|
@@ -10948,7 +11442,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10948
11442
|
args: [{
|
|
10949
11443
|
selector: "ui-dropdown-button",
|
|
10950
11444
|
imports: [UiButtonComponent, NgIcon],
|
|
10951
|
-
template: "<ui-button\n [intent]=\"intent()\"\n [appearance]=\"appearance()\"\n (click)=\"isOpen.update(value => !value)\"\n>\n <ng-content />\n <ng-icon\n name=\"heroChevronDown\"\n class=\"size-4 shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n</ui-button>\n"
|
|
11445
|
+
template: "<ui-button\n [intent]=\"intent()\"\n [appearance]=\"appearance()\"\n (click)=\"isOpen.update(value => !value)\"\n>\n <ng-content />\n <ng-icon\n name=\"heroChevronDown\"\n class=\"size-4 transition-transform duration-100 shrink-0\"\n [class.rotate-180]=\"isOpen()\"\n />\n</ui-button>\n"
|
|
10952
11446
|
}]
|
|
10953
11447
|
}],
|
|
10954
11448
|
propDecorators: {
|
|
@@ -11013,33 +11507,42 @@ var UiDropdownMenuComponent = class UiDropdownMenuComponent {
|
|
|
11013
11507
|
transformFunction: null
|
|
11014
11508
|
} },
|
|
11015
11509
|
ngImport: i0,
|
|
11016
|
-
template: "<
|
|
11017
|
-
dependencies: [
|
|
11018
|
-
|
|
11019
|
-
|
|
11020
|
-
|
|
11021
|
-
|
|
11022
|
-
|
|
11023
|
-
|
|
11024
|
-
|
|
11025
|
-
|
|
11026
|
-
|
|
11027
|
-
|
|
11028
|
-
|
|
11029
|
-
|
|
11030
|
-
|
|
11031
|
-
|
|
11032
|
-
|
|
11033
|
-
|
|
11034
|
-
|
|
11035
|
-
|
|
11036
|
-
"
|
|
11037
|
-
"
|
|
11038
|
-
|
|
11039
|
-
|
|
11040
|
-
"
|
|
11041
|
-
|
|
11042
|
-
|
|
11510
|
+
template: "<ui-card radius=\"lg\" class=\"divide-y w-3xs max-w-md\" role=\"menu\">\n @for (item of items(); track $index) {\n @if ('divider' in item) {\n <div class=\"my-1 border-border border-t\"></div>\n } @else if ('children' in item) {\n <div class=\"flex flex-col gap-y-0.5 p-1\">\n <span\n class=\"block px-4 pt-2 pb-1 font-medium text-muted-foreground ui-text-caption uppercase\"\n >\n {{ item.label }}\n </span>\n\n @for (child of item.children; track child.label) {\n <ui-button\n appearance=\"none\"\n classes=\"flex items-center gap-x-3.5 px-3 py-2 rounded-lg ui-text-body-alt text-dropdown-item-foreground hover:bg-dropdown-item-hover focus:bg-dropdown-item-focus w-full border-transparent focus:outline-hidden!\"\n (click)=\"child.onClick()\"\n >\n @if (child.icon) {\n <ng-icon\n [name]=\"child.icon\"\n size=\"18\"\n strokeWidth=\"1.5\"\n class=\"size-4 shrink-0\"\n />\n }\n\n {{ child.label }}\n </ui-button>\n }\n </div>\n } @else {\n <div class=\"p-1\">\n <ui-button\n appearance=\"none\"\n classes=\"flex items-center gap-x-3.5 px-3 py-2 rounded-lg ui-text-body-alt text-dropdown-item-foreground hover:bg-dropdown-item-hover focus:bg-dropdown-item-focus w-full border-transparent focus:outline-hidden!\"\n (click)=\"item.onClick()\"\n >\n @if (item.icon) {\n <ng-icon\n [name]=\"item.icon\"\n size=\"18\"\n strokeWidth=\"2\"\n class=\"size-4 shrink-0\"\n />\n }\n\n {{ item.label }}\n </ui-button>\n </div>\n }\n }\n</ui-card>\n",
|
|
11511
|
+
dependencies: [
|
|
11512
|
+
{
|
|
11513
|
+
kind: "component",
|
|
11514
|
+
type: UiButtonComponent,
|
|
11515
|
+
selector: "ui-button",
|
|
11516
|
+
inputs: [
|
|
11517
|
+
"appearance",
|
|
11518
|
+
"intent",
|
|
11519
|
+
"size",
|
|
11520
|
+
"classes",
|
|
11521
|
+
"type",
|
|
11522
|
+
"ariaLabel",
|
|
11523
|
+
"disabled",
|
|
11524
|
+
"loading"
|
|
11525
|
+
]
|
|
11526
|
+
},
|
|
11527
|
+
{
|
|
11528
|
+
kind: "component",
|
|
11529
|
+
type: UiCardComponent,
|
|
11530
|
+
selector: "ui-card",
|
|
11531
|
+
inputs: ["radius"]
|
|
11532
|
+
},
|
|
11533
|
+
{
|
|
11534
|
+
kind: "component",
|
|
11535
|
+
type: NgIcon,
|
|
11536
|
+
selector: "ng-icon",
|
|
11537
|
+
inputs: [
|
|
11538
|
+
"name",
|
|
11539
|
+
"svg",
|
|
11540
|
+
"size",
|
|
11541
|
+
"strokeWidth",
|
|
11542
|
+
"color"
|
|
11543
|
+
]
|
|
11544
|
+
}
|
|
11545
|
+
]
|
|
11043
11546
|
});
|
|
11044
11547
|
};
|
|
11045
11548
|
i0.ɵɵngDeclareClassMetadata({
|
|
@@ -11051,8 +11554,12 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11051
11554
|
type: Component,
|
|
11052
11555
|
args: [{
|
|
11053
11556
|
selector: "ui-dropdown-menu",
|
|
11054
|
-
imports: [
|
|
11055
|
-
|
|
11557
|
+
imports: [
|
|
11558
|
+
UiButtonComponent,
|
|
11559
|
+
UiCardComponent,
|
|
11560
|
+
NgIcon
|
|
11561
|
+
],
|
|
11562
|
+
template: "<ui-card radius=\"lg\" class=\"divide-y w-3xs max-w-md\" role=\"menu\">\n @for (item of items(); track $index) {\n @if ('divider' in item) {\n <div class=\"my-1 border-border border-t\"></div>\n } @else if ('children' in item) {\n <div class=\"flex flex-col gap-y-0.5 p-1\">\n <span\n class=\"block px-4 pt-2 pb-1 font-medium text-muted-foreground ui-text-caption uppercase\"\n >\n {{ item.label }}\n </span>\n\n @for (child of item.children; track child.label) {\n <ui-button\n appearance=\"none\"\n classes=\"flex items-center gap-x-3.5 px-3 py-2 rounded-lg ui-text-body-alt text-dropdown-item-foreground hover:bg-dropdown-item-hover focus:bg-dropdown-item-focus w-full border-transparent focus:outline-hidden!\"\n (click)=\"child.onClick()\"\n >\n @if (child.icon) {\n <ng-icon\n [name]=\"child.icon\"\n size=\"18\"\n strokeWidth=\"1.5\"\n class=\"size-4 shrink-0\"\n />\n }\n\n {{ child.label }}\n </ui-button>\n }\n </div>\n } @else {\n <div class=\"p-1\">\n <ui-button\n appearance=\"none\"\n classes=\"flex items-center gap-x-3.5 px-3 py-2 rounded-lg ui-text-body-alt text-dropdown-item-foreground hover:bg-dropdown-item-hover focus:bg-dropdown-item-focus w-full border-transparent focus:outline-hidden!\"\n (click)=\"item.onClick()\"\n >\n @if (item.icon) {\n <ng-icon\n [name]=\"item.icon\"\n size=\"18\"\n strokeWidth=\"2\"\n class=\"size-4 shrink-0\"\n />\n }\n\n {{ item.label }}\n </ui-button>\n </div>\n }\n }\n</ui-card>\n"
|
|
11056
11563
|
}]
|
|
11057
11564
|
}],
|
|
11058
11565
|
propDecorators: { items: [{
|
|
@@ -11506,6 +12013,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11506
12013
|
}]
|
|
11507
12014
|
}
|
|
11508
12015
|
});
|
|
11509
|
-
export { AlertAppearances, AlertIntents, BadgeAppearances, BadgeIntents, BadgeSizes, BarChartOrientations, ButtonAppearances, ButtonIntents, ButtonSizes, ButtonTypes, CalendarModes, FileRejectionReasons, InputAriaAutocompletes, InputAriaHasPopups, InputModes, InputTypes, LineChartCurves, MoneySignDisplays, ProgressIntents, ProgressLabelPositions, ProgressOrientations, ProgressShapes, ProgressSizes, SelectLocalDataSource, SelectMultipleDisplays, SelectRemoteDataSource, SkeletonShapes, TableLocalDataSource, TableRemoteDataSource, TextareaResizeOptions, ToastIntents, ToasterPositions, UI_LOADING_TYPES, UiAlertComponent, UiBadgeComponent, UiBarChartComponent, UiButtonComponent, UiButtonGroupComponent, UiCalendarComponent, UiChartComponent, UiChartFrameComponent, UiChartLegendComponent, UiChartTableComponent, UiCheckboxComponent, UiColourComponent, UiContainerComponent, UiCounterComponent, UiDateRangePickerComponent, UiDatepickerComponent, UiDrawerComponent, UiDropdownButtonComponent, UiDropdownComponent, UiDropdownDirective, UiDropdownMenuComponent, UiDropzoneComponent, UiFieldComponent, UiFileInputComponent, UiInputAddonComponent, UiInputComponent, UiInputGroupComponent, UiKpiComponent, UiLayoutComponent, UiLineChartComponent, UiLoadingComponent, UiModalComponent, UiMoneyComponent, UiOverlayComponent, UiPaginationComponent, UiProgressComponent, UiRadioComponent, UiSelectComponent, UiSidebarComponent, UiSidebarItemComponent, UiSkeletonComponent, UiSwitchComponent, UiTabComponent, UiTabDirective, UiTableComponent, UiTextareaComponent, UiTimeSelectComponent, UiToastComponent, UiToastService, UiToasterComponent, UiTooltipComponent, WeekStarts, defaultDateRangePresets, financialYearPreset, lastDaysPreset, monthPreset, thisWeekPreset, todayPreset, yearPreset };
|
|
12016
|
+
export { AlertAppearances, AlertIntents, BadgeAppearances, BadgeIntents, BadgeSizes, BarChartOrientations, ButtonAppearances, ButtonIntents, ButtonSizes, ButtonTypes, CalendarModes, FileRejectionReasons, InputAriaAutocompletes, InputAriaHasPopups, InputModes, InputTypes, LineChartCurves, MoneySignDisplays, PieChartVariants, ProgressIntents, ProgressLabelPositions, ProgressOrientations, ProgressShapes, ProgressSizes, SelectLocalDataSource, SelectMultipleDisplays, SelectRemoteDataSource, SkeletonShapes, TableLocalDataSource, TableRemoteDataSource, TextareaResizeOptions, ToastIntents, ToasterPositions, UI_LOADING_TYPES, UiAlertComponent, UiBadgeComponent, UiBarChartComponent, UiButtonComponent, UiButtonGroupComponent, UiCalendarComponent, UiChartComponent, UiChartFrameComponent, UiChartLegendComponent, UiChartTableComponent, UiCheckboxComponent, UiColourComponent, UiContainerComponent, UiCounterComponent, UiDateRangePickerComponent, UiDatepickerComponent, UiDrawerComponent, UiDropdownButtonComponent, UiDropdownComponent, UiDropdownDirective, UiDropdownMenuComponent, UiDropzoneComponent, UiFieldComponent, UiFileInputComponent, UiInputAddonComponent, UiInputComponent, UiInputGroupComponent, UiKpiComponent, UiLayoutComponent, UiLineChartComponent, UiLoadingComponent, UiModalComponent, UiMoneyComponent, UiOverlayComponent, UiPaginationComponent, UiPieChartComponent, UiProgressComponent, UiRadioComponent, UiSelectComponent, UiSidebarComponent, UiSidebarItemComponent, UiSkeletonComponent, UiSwitchComponent, UiTabComponent, UiTabDirective, UiTableComponent, UiTextareaComponent, UiTimeSelectComponent, UiToastComponent, UiToastService, UiToasterComponent, UiTooltipComponent, WeekStarts, defaultDateRangePresets, financialYearPreset, lastDaysPreset, monthPreset, thisWeekPreset, todayPreset, yearPreset };
|
|
11510
12017
|
|
|
11511
12018
|
//# sourceMappingURL=area8975-ui.mjs.map
|