@area8975/ui 0.1.0 → 0.1.1-dev.12
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 +913 -399
- package/fesm2022/area8975-ui.mjs.map +1 -1
- package/package.json +2 -2
- package/types/area8975-ui.d.ts +146 -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,74 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
3554
3856
|
}]
|
|
3555
3857
|
}
|
|
3556
3858
|
});
|
|
3859
|
+
const CardRadii = [
|
|
3860
|
+
"none",
|
|
3861
|
+
"sm",
|
|
3862
|
+
"md",
|
|
3863
|
+
"lg",
|
|
3864
|
+
"xl"
|
|
3865
|
+
];
|
|
3866
|
+
const radiusClasses = {
|
|
3867
|
+
none: "rounded-none",
|
|
3868
|
+
sm: "rounded-sm",
|
|
3869
|
+
md: "rounded-md",
|
|
3870
|
+
lg: "rounded-lg",
|
|
3871
|
+
xl: "rounded-xl"
|
|
3872
|
+
};
|
|
3873
|
+
var UiCardComponent = class UiCardComponent {
|
|
3874
|
+
radius = input("md", ...ngDevMode ? [{ debugName: "radius" }] : /* istanbul ignore next */ []);
|
|
3875
|
+
generatedClasses = computed(() => radiusClasses[this.radius()], ...ngDevMode ? [{ debugName: "generatedClasses" }] : /* istanbul ignore next */ []);
|
|
3876
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
3877
|
+
minVersion: "12.0.0",
|
|
3878
|
+
version: "22.2.1",
|
|
3879
|
+
ngImport: i0,
|
|
3880
|
+
type: UiCardComponent,
|
|
3881
|
+
deps: [],
|
|
3882
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
3883
|
+
});
|
|
3884
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
3885
|
+
minVersion: "17.1.0",
|
|
3886
|
+
version: "22.2.1",
|
|
3887
|
+
type: UiCardComponent,
|
|
3888
|
+
isStandalone: true,
|
|
3889
|
+
selector: "ui-card",
|
|
3890
|
+
inputs: { radius: {
|
|
3891
|
+
classPropertyName: "radius",
|
|
3892
|
+
publicName: "radius",
|
|
3893
|
+
isSignal: true,
|
|
3894
|
+
isRequired: false,
|
|
3895
|
+
transformFunction: null
|
|
3896
|
+
} },
|
|
3897
|
+
host: { properties: { "class": "generatedClasses()" } },
|
|
3898
|
+
ngImport: i0,
|
|
3899
|
+
template: "<ng-content />",
|
|
3900
|
+
isInline: true,
|
|
3901
|
+
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"]
|
|
3902
|
+
});
|
|
3903
|
+
};
|
|
3904
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
3905
|
+
minVersion: "12.0.0",
|
|
3906
|
+
version: "22.2.1",
|
|
3907
|
+
ngImport: i0,
|
|
3908
|
+
type: UiCardComponent,
|
|
3909
|
+
decorators: [{
|
|
3910
|
+
type: Component,
|
|
3911
|
+
args: [{
|
|
3912
|
+
selector: "ui-card",
|
|
3913
|
+
template: "<ng-content />",
|
|
3914
|
+
host: { "[class]": "generatedClasses()" },
|
|
3915
|
+
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"]
|
|
3916
|
+
}]
|
|
3917
|
+
}],
|
|
3918
|
+
propDecorators: { radius: [{
|
|
3919
|
+
type: i0.Input,
|
|
3920
|
+
args: [{
|
|
3921
|
+
isSignal: true,
|
|
3922
|
+
alias: "radius",
|
|
3923
|
+
required: false
|
|
3924
|
+
}]
|
|
3925
|
+
}] }
|
|
3926
|
+
});
|
|
3557
3927
|
var UiOverlayPositioner = class UiOverlayPositioner {
|
|
3558
3928
|
position = (reference, overlay, options) => computePosition(reference, overlay, {
|
|
3559
3929
|
placement: options.placement,
|
|
@@ -3591,30 +3961,76 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
3591
3961
|
args: [{ providedIn: "root" }]
|
|
3592
3962
|
}]
|
|
3593
3963
|
});
|
|
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 */ []);
|
|
3964
|
+
var UiOverlayStack = class UiOverlayStack {
|
|
3965
|
+
entries = [];
|
|
3604
3966
|
constructor() {
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
document.removeEventListener("keydown", this.onKeyDown);
|
|
3611
|
-
});
|
|
3967
|
+
document.addEventListener("click", this.onDocumentClick);
|
|
3968
|
+
document.addEventListener("keydown", this.onKeyDown);
|
|
3969
|
+
inject(DestroyRef).onDestroy(() => {
|
|
3970
|
+
document.removeEventListener("click", this.onDocumentClick);
|
|
3971
|
+
document.removeEventListener("keydown", this.onKeyDown);
|
|
3612
3972
|
});
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3973
|
+
}
|
|
3974
|
+
push = (entry) => {
|
|
3975
|
+
this.remove(entry);
|
|
3976
|
+
this.entries.push(entry);
|
|
3977
|
+
};
|
|
3978
|
+
remove = (entry) => {
|
|
3979
|
+
const index = this.entries.indexOf(entry);
|
|
3980
|
+
if (index !== -1) this.entries.splice(index, 1);
|
|
3981
|
+
};
|
|
3982
|
+
top = () => this.entries.at(-1);
|
|
3983
|
+
onDocumentClick = (event) => this.top()?.onDocumentClick(event);
|
|
3984
|
+
onKeyDown = (event) => this.top()?.onKeyDown(event);
|
|
3985
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
3986
|
+
minVersion: "12.0.0",
|
|
3987
|
+
version: "22.2.1",
|
|
3988
|
+
ngImport: i0,
|
|
3989
|
+
type: UiOverlayStack,
|
|
3990
|
+
deps: [],
|
|
3991
|
+
target: i0.ɵɵFactoryTarget.Injectable
|
|
3992
|
+
});
|
|
3993
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({
|
|
3994
|
+
minVersion: "12.0.0",
|
|
3995
|
+
version: "22.2.1",
|
|
3996
|
+
ngImport: i0,
|
|
3997
|
+
type: UiOverlayStack,
|
|
3998
|
+
providedIn: "root"
|
|
3999
|
+
});
|
|
4000
|
+
};
|
|
4001
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
4002
|
+
minVersion: "12.0.0",
|
|
4003
|
+
version: "22.2.1",
|
|
4004
|
+
ngImport: i0,
|
|
4005
|
+
type: UiOverlayStack,
|
|
4006
|
+
decorators: [{
|
|
4007
|
+
type: Injectable,
|
|
4008
|
+
args: [{ providedIn: "root" }]
|
|
4009
|
+
}],
|
|
4010
|
+
ctorParameters: () => []
|
|
4011
|
+
});
|
|
4012
|
+
var UiOverlayComponent = class UiOverlayComponent {
|
|
4013
|
+
positioner = inject(UiOverlayPositioner);
|
|
4014
|
+
stack = inject(UiOverlayStack);
|
|
4015
|
+
content = input(...ngDevMode ? [void 0, { debugName: "content" }] : /* istanbul ignore next */ []);
|
|
4016
|
+
anchor = input(...ngDevMode ? [void 0, { debugName: "anchor" }] : /* istanbul ignore next */ []);
|
|
4017
|
+
closeBehaviour = input("whenClickAnywhere", ...ngDevMode ? [{ debugName: "closeBehaviour" }] : /* istanbul ignore next */ []);
|
|
4018
|
+
isOpen = input.required(...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
|
|
4019
|
+
placement = input("bottom-start", ...ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []);
|
|
4020
|
+
offset = input(0, ...ngDevMode ? [{ debugName: "offset" }] : /* istanbul ignore next */ []);
|
|
4021
|
+
viewportPadding = input(0, ...ngDevMode ? [{ debugName: "viewportPadding" }] : /* istanbul ignore next */ []);
|
|
4022
|
+
matchWidth = input(null, ...ngDevMode ? [{ debugName: "matchWidth" }] : /* istanbul ignore next */ []);
|
|
4023
|
+
constructor() {
|
|
4024
|
+
effect((onCleanup) => {
|
|
4025
|
+
if (!this.isOpen()()) return;
|
|
4026
|
+
this.stack.push(this);
|
|
4027
|
+
onCleanup(() => this.stack.remove(this));
|
|
4028
|
+
});
|
|
4029
|
+
effect((onCleanup) => {
|
|
4030
|
+
const anchor = this.anchor();
|
|
4031
|
+
const content = this.content();
|
|
4032
|
+
if (!this.isOpen()() || !anchor || !content) return;
|
|
4033
|
+
const referenceElement = anchor.nativeElement;
|
|
3618
4034
|
const floatingElement = content.nativeElement;
|
|
3619
4035
|
const update = () => {
|
|
3620
4036
|
const matchWidth = this.matchWidth();
|
|
@@ -4516,7 +4932,7 @@ var UiSelectComponent = class UiSelectComponent {
|
|
|
4516
4932
|
isSignal: true
|
|
4517
4933
|
}],
|
|
4518
4934
|
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",
|
|
4935
|
+
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
4936
|
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
4937
|
dependencies: [
|
|
4522
4938
|
{
|
|
@@ -4591,6 +5007,12 @@ var UiSelectComponent = class UiSelectComponent {
|
|
|
4591
5007
|
"classes"
|
|
4592
5008
|
]
|
|
4593
5009
|
},
|
|
5010
|
+
{
|
|
5011
|
+
kind: "component",
|
|
5012
|
+
type: UiCardComponent,
|
|
5013
|
+
selector: "ui-card",
|
|
5014
|
+
inputs: ["radius"]
|
|
5015
|
+
},
|
|
4594
5016
|
{
|
|
4595
5017
|
kind: "component",
|
|
4596
5018
|
type: NgIcon,
|
|
@@ -4630,11 +5052,12 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
4630
5052
|
UiDropdownDirective,
|
|
4631
5053
|
UiInputComponent,
|
|
4632
5054
|
UiBadgeComponent,
|
|
5055
|
+
UiCardComponent,
|
|
4633
5056
|
NgIcon,
|
|
4634
5057
|
NgTemplateOutlet
|
|
4635
5058
|
],
|
|
4636
5059
|
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",
|
|
5060
|
+
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
5061
|
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
5062
|
}]
|
|
4640
5063
|
}],
|
|
@@ -6209,69 +6632,120 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6209
6632
|
}]
|
|
6210
6633
|
}
|
|
6211
6634
|
});
|
|
6212
|
-
var
|
|
6213
|
-
|
|
6214
|
-
|
|
6215
|
-
|
|
6216
|
-
|
|
6635
|
+
var UiTooltipComponent = class UiTooltipComponent {
|
|
6636
|
+
anchor = inject(ElementRef);
|
|
6637
|
+
content = viewChild("content", {
|
|
6638
|
+
...ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {},
|
|
6639
|
+
read: ElementRef
|
|
6640
|
+
});
|
|
6641
|
+
text = input.required(...ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []);
|
|
6642
|
+
placement = input("top", ...ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []);
|
|
6643
|
+
trigger = input("hover", ...ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []);
|
|
6644
|
+
classes = input("", ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
6645
|
+
isOpen = input(signal(false), ...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
|
|
6646
|
+
closeBehaviour = computed(() => this.trigger() === "click" ? "whenClickOutside" : "none", ...ngDevMode ? [{ debugName: "closeBehaviour" }] : /* istanbul ignore next */ []);
|
|
6647
|
+
generatedClasses = computed(() => [
|
|
6648
|
+
"ui-tooltip",
|
|
6649
|
+
"ui-text-caption",
|
|
6650
|
+
this.classes()
|
|
6651
|
+
].filter(Boolean).join(" "), ...ngDevMode ? [{ debugName: "generatedClasses" }] : /* istanbul ignore next */ []);
|
|
6652
|
+
onHover(isHovering) {
|
|
6653
|
+
if (this.trigger() === "hover") this.isOpen().set(isHovering);
|
|
6654
|
+
}
|
|
6655
|
+
onFocus(isFocused) {
|
|
6656
|
+
if (["hover", "focus"].includes(this.trigger())) this.isOpen().set(isFocused);
|
|
6657
|
+
}
|
|
6658
|
+
onClick() {
|
|
6659
|
+
if (this.trigger() === "click") this.isOpen().update((value) => !value);
|
|
6660
|
+
}
|
|
6217
6661
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
6218
6662
|
minVersion: "12.0.0",
|
|
6219
6663
|
version: "22.2.1",
|
|
6220
6664
|
ngImport: i0,
|
|
6221
|
-
type:
|
|
6665
|
+
type: UiTooltipComponent,
|
|
6222
6666
|
deps: [],
|
|
6223
6667
|
target: i0.ɵɵFactoryTarget.Component
|
|
6224
6668
|
});
|
|
6225
6669
|
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
6226
6670
|
minVersion: "17.0.0",
|
|
6227
6671
|
version: "22.2.1",
|
|
6228
|
-
type:
|
|
6672
|
+
type: UiTooltipComponent,
|
|
6229
6673
|
isStandalone: true,
|
|
6230
|
-
selector: "ui-
|
|
6674
|
+
selector: "ui-tooltip",
|
|
6231
6675
|
inputs: {
|
|
6232
|
-
|
|
6233
|
-
classPropertyName: "
|
|
6234
|
-
publicName: "
|
|
6676
|
+
text: {
|
|
6677
|
+
classPropertyName: "text",
|
|
6678
|
+
publicName: "text",
|
|
6679
|
+
isSignal: true,
|
|
6680
|
+
isRequired: true,
|
|
6681
|
+
transformFunction: null
|
|
6682
|
+
},
|
|
6683
|
+
placement: {
|
|
6684
|
+
classPropertyName: "placement",
|
|
6685
|
+
publicName: "placement",
|
|
6235
6686
|
isSignal: true,
|
|
6236
6687
|
isRequired: false,
|
|
6237
6688
|
transformFunction: null
|
|
6238
6689
|
},
|
|
6239
|
-
|
|
6240
|
-
classPropertyName: "
|
|
6241
|
-
publicName: "
|
|
6690
|
+
trigger: {
|
|
6691
|
+
classPropertyName: "trigger",
|
|
6692
|
+
publicName: "trigger",
|
|
6242
6693
|
isSignal: true,
|
|
6243
6694
|
isRequired: false,
|
|
6244
6695
|
transformFunction: null
|
|
6245
6696
|
},
|
|
6246
|
-
|
|
6247
|
-
classPropertyName: "
|
|
6248
|
-
publicName: "
|
|
6697
|
+
classes: {
|
|
6698
|
+
classPropertyName: "classes",
|
|
6699
|
+
publicName: "classes",
|
|
6249
6700
|
isSignal: true,
|
|
6250
6701
|
isRequired: false,
|
|
6251
6702
|
transformFunction: null
|
|
6252
6703
|
},
|
|
6253
|
-
|
|
6254
|
-
classPropertyName: "
|
|
6255
|
-
publicName: "
|
|
6704
|
+
isOpen: {
|
|
6705
|
+
classPropertyName: "isOpen",
|
|
6706
|
+
publicName: "isOpen",
|
|
6256
6707
|
isSignal: true,
|
|
6257
6708
|
isRequired: false,
|
|
6258
6709
|
transformFunction: null
|
|
6259
6710
|
}
|
|
6260
6711
|
},
|
|
6712
|
+
host: {
|
|
6713
|
+
listeners: {
|
|
6714
|
+
"mouseenter": "onHover(true)",
|
|
6715
|
+
"mouseleave": "onHover(false)",
|
|
6716
|
+
"focusin": "onFocus(true)",
|
|
6717
|
+
"focusout": "onFocus(false)",
|
|
6718
|
+
"click": "onClick()"
|
|
6719
|
+
},
|
|
6720
|
+
classAttribute: "inline-flex size-fit"
|
|
6721
|
+
},
|
|
6722
|
+
viewQueries: [{
|
|
6723
|
+
propertyName: "content",
|
|
6724
|
+
first: true,
|
|
6725
|
+
predicate: ["content"],
|
|
6726
|
+
descendants: true,
|
|
6727
|
+
read: ElementRef,
|
|
6728
|
+
isSignal: true
|
|
6729
|
+
}],
|
|
6730
|
+
exportAs: ["uiTooltip"],
|
|
6261
6731
|
ngImport: i0,
|
|
6262
|
-
template: "<
|
|
6263
|
-
styles: ["@layer properties
|
|
6732
|
+
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",
|
|
6733
|
+
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
6734
|
dependencies: [{
|
|
6265
6735
|
kind: "component",
|
|
6266
|
-
type:
|
|
6267
|
-
selector: "
|
|
6736
|
+
type: UiOverlayComponent,
|
|
6737
|
+
selector: "ui-overlay",
|
|
6268
6738
|
inputs: [
|
|
6269
|
-
"
|
|
6270
|
-
"
|
|
6271
|
-
"
|
|
6272
|
-
"
|
|
6273
|
-
"
|
|
6274
|
-
|
|
6739
|
+
"content",
|
|
6740
|
+
"anchor",
|
|
6741
|
+
"closeBehaviour",
|
|
6742
|
+
"isOpen",
|
|
6743
|
+
"placement",
|
|
6744
|
+
"offset",
|
|
6745
|
+
"viewportPadding",
|
|
6746
|
+
"matchWidth"
|
|
6747
|
+
],
|
|
6748
|
+
exportAs: ["uiOverlay"]
|
|
6275
6749
|
}]
|
|
6276
6750
|
});
|
|
6277
6751
|
};
|
|
@@ -6279,107 +6753,285 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6279
6753
|
minVersion: "12.0.0",
|
|
6280
6754
|
version: "22.2.1",
|
|
6281
6755
|
ngImport: i0,
|
|
6282
|
-
type:
|
|
6756
|
+
type: UiTooltipComponent,
|
|
6283
6757
|
decorators: [{
|
|
6284
6758
|
type: Component,
|
|
6285
6759
|
args: [{
|
|
6286
|
-
selector: "ui-
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6760
|
+
selector: "ui-tooltip",
|
|
6761
|
+
exportAs: "uiTooltip",
|
|
6762
|
+
imports: [UiOverlayComponent],
|
|
6763
|
+
host: {
|
|
6764
|
+
class: "inline-flex size-fit",
|
|
6765
|
+
"(mouseenter)": "onHover(true)",
|
|
6766
|
+
"(mouseleave)": "onHover(false)",
|
|
6767
|
+
"(focusin)": "onFocus(true)",
|
|
6768
|
+
"(focusout)": "onFocus(false)",
|
|
6769
|
+
"(click)": "onClick()"
|
|
6770
|
+
},
|
|
6771
|
+
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",
|
|
6772
|
+
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
6773
|
}]
|
|
6291
6774
|
}],
|
|
6292
6775
|
propDecorators: {
|
|
6293
|
-
|
|
6776
|
+
content: [{
|
|
6777
|
+
type: i0.ViewChild,
|
|
6778
|
+
args: ["content", {
|
|
6779
|
+
read: ElementRef,
|
|
6780
|
+
isSignal: true
|
|
6781
|
+
}]
|
|
6782
|
+
}],
|
|
6783
|
+
text: [{
|
|
6294
6784
|
type: i0.Input,
|
|
6295
6785
|
args: [{
|
|
6296
6786
|
isSignal: true,
|
|
6297
|
-
alias: "
|
|
6787
|
+
alias: "text",
|
|
6788
|
+
required: true
|
|
6789
|
+
}]
|
|
6790
|
+
}],
|
|
6791
|
+
placement: [{
|
|
6792
|
+
type: i0.Input,
|
|
6793
|
+
args: [{
|
|
6794
|
+
isSignal: true,
|
|
6795
|
+
alias: "placement",
|
|
6298
6796
|
required: false
|
|
6299
6797
|
}]
|
|
6300
6798
|
}],
|
|
6301
|
-
|
|
6799
|
+
trigger: [{
|
|
6302
6800
|
type: i0.Input,
|
|
6303
6801
|
args: [{
|
|
6304
6802
|
isSignal: true,
|
|
6305
|
-
alias: "
|
|
6803
|
+
alias: "trigger",
|
|
6306
6804
|
required: false
|
|
6307
6805
|
}]
|
|
6308
6806
|
}],
|
|
6309
|
-
|
|
6807
|
+
classes: [{
|
|
6310
6808
|
type: i0.Input,
|
|
6311
6809
|
args: [{
|
|
6312
6810
|
isSignal: true,
|
|
6313
|
-
alias: "
|
|
6811
|
+
alias: "classes",
|
|
6314
6812
|
required: false
|
|
6315
6813
|
}]
|
|
6316
6814
|
}],
|
|
6317
|
-
|
|
6815
|
+
isOpen: [{
|
|
6318
6816
|
type: i0.Input,
|
|
6319
6817
|
args: [{
|
|
6320
6818
|
isSignal: true,
|
|
6321
|
-
alias: "
|
|
6819
|
+
alias: "isOpen",
|
|
6322
6820
|
required: false
|
|
6323
6821
|
}]
|
|
6324
6822
|
}]
|
|
6325
6823
|
}
|
|
6326
6824
|
});
|
|
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);
|
|
6825
|
+
var UiKpiComponent = class UiKpiComponent {
|
|
6826
|
+
title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
6827
|
+
value = input("", ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
|
|
6828
|
+
hint = input("", ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
|
|
6829
|
+
icon = input(...ngDevMode ? [void 0, { debugName: "icon" }] : /* istanbul ignore next */ []);
|
|
6830
|
+
iconPosition = input("left", ...ngDevMode ? [{ debugName: "iconPosition" }] : /* istanbul ignore next */ []);
|
|
6336
6831
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
6337
6832
|
minVersion: "12.0.0",
|
|
6338
6833
|
version: "22.2.1",
|
|
6339
6834
|
ngImport: i0,
|
|
6340
|
-
type:
|
|
6835
|
+
type: UiKpiComponent,
|
|
6341
6836
|
deps: [],
|
|
6342
6837
|
target: i0.ɵɵFactoryTarget.Component
|
|
6343
6838
|
});
|
|
6344
6839
|
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
6345
6840
|
minVersion: "17.0.0",
|
|
6346
6841
|
version: "22.2.1",
|
|
6347
|
-
type:
|
|
6842
|
+
type: UiKpiComponent,
|
|
6348
6843
|
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
|
-
|
|
6377
|
-
|
|
6378
|
-
|
|
6379
|
-
|
|
6380
|
-
|
|
6381
|
-
|
|
6382
|
-
|
|
6844
|
+
selector: "ui-kpi",
|
|
6845
|
+
inputs: {
|
|
6846
|
+
title: {
|
|
6847
|
+
classPropertyName: "title",
|
|
6848
|
+
publicName: "title",
|
|
6849
|
+
isSignal: true,
|
|
6850
|
+
isRequired: false,
|
|
6851
|
+
transformFunction: null
|
|
6852
|
+
},
|
|
6853
|
+
value: {
|
|
6854
|
+
classPropertyName: "value",
|
|
6855
|
+
publicName: "value",
|
|
6856
|
+
isSignal: true,
|
|
6857
|
+
isRequired: false,
|
|
6858
|
+
transformFunction: null
|
|
6859
|
+
},
|
|
6860
|
+
hint: {
|
|
6861
|
+
classPropertyName: "hint",
|
|
6862
|
+
publicName: "hint",
|
|
6863
|
+
isSignal: true,
|
|
6864
|
+
isRequired: false,
|
|
6865
|
+
transformFunction: null
|
|
6866
|
+
},
|
|
6867
|
+
icon: {
|
|
6868
|
+
classPropertyName: "icon",
|
|
6869
|
+
publicName: "icon",
|
|
6870
|
+
isSignal: true,
|
|
6871
|
+
isRequired: false,
|
|
6872
|
+
transformFunction: null
|
|
6873
|
+
},
|
|
6874
|
+
iconPosition: {
|
|
6875
|
+
classPropertyName: "iconPosition",
|
|
6876
|
+
publicName: "iconPosition",
|
|
6877
|
+
isSignal: true,
|
|
6878
|
+
isRequired: false,
|
|
6879
|
+
transformFunction: null
|
|
6880
|
+
}
|
|
6881
|
+
},
|
|
6882
|
+
ngImport: i0,
|
|
6883
|
+
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",
|
|
6884
|
+
dependencies: [
|
|
6885
|
+
{
|
|
6886
|
+
kind: "component",
|
|
6887
|
+
type: UiCardComponent,
|
|
6888
|
+
selector: "ui-card",
|
|
6889
|
+
inputs: ["radius"]
|
|
6890
|
+
},
|
|
6891
|
+
{
|
|
6892
|
+
kind: "component",
|
|
6893
|
+
type: NgIcon,
|
|
6894
|
+
selector: "ng-icon",
|
|
6895
|
+
inputs: [
|
|
6896
|
+
"name",
|
|
6897
|
+
"svg",
|
|
6898
|
+
"size",
|
|
6899
|
+
"strokeWidth",
|
|
6900
|
+
"color"
|
|
6901
|
+
]
|
|
6902
|
+
},
|
|
6903
|
+
{
|
|
6904
|
+
kind: "component",
|
|
6905
|
+
type: UiTooltipComponent,
|
|
6906
|
+
selector: "ui-tooltip",
|
|
6907
|
+
inputs: [
|
|
6908
|
+
"text",
|
|
6909
|
+
"placement",
|
|
6910
|
+
"trigger",
|
|
6911
|
+
"classes",
|
|
6912
|
+
"isOpen"
|
|
6913
|
+
],
|
|
6914
|
+
exportAs: ["uiTooltip"]
|
|
6915
|
+
}
|
|
6916
|
+
]
|
|
6917
|
+
});
|
|
6918
|
+
};
|
|
6919
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
6920
|
+
minVersion: "12.0.0",
|
|
6921
|
+
version: "22.2.1",
|
|
6922
|
+
ngImport: i0,
|
|
6923
|
+
type: UiKpiComponent,
|
|
6924
|
+
decorators: [{
|
|
6925
|
+
type: Component,
|
|
6926
|
+
args: [{
|
|
6927
|
+
selector: "ui-kpi",
|
|
6928
|
+
imports: [
|
|
6929
|
+
UiCardComponent,
|
|
6930
|
+
NgIcon,
|
|
6931
|
+
UiTooltipComponent
|
|
6932
|
+
],
|
|
6933
|
+
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"
|
|
6934
|
+
}]
|
|
6935
|
+
}],
|
|
6936
|
+
propDecorators: {
|
|
6937
|
+
title: [{
|
|
6938
|
+
type: i0.Input,
|
|
6939
|
+
args: [{
|
|
6940
|
+
isSignal: true,
|
|
6941
|
+
alias: "title",
|
|
6942
|
+
required: false
|
|
6943
|
+
}]
|
|
6944
|
+
}],
|
|
6945
|
+
value: [{
|
|
6946
|
+
type: i0.Input,
|
|
6947
|
+
args: [{
|
|
6948
|
+
isSignal: true,
|
|
6949
|
+
alias: "value",
|
|
6950
|
+
required: false
|
|
6951
|
+
}]
|
|
6952
|
+
}],
|
|
6953
|
+
hint: [{
|
|
6954
|
+
type: i0.Input,
|
|
6955
|
+
args: [{
|
|
6956
|
+
isSignal: true,
|
|
6957
|
+
alias: "hint",
|
|
6958
|
+
required: false
|
|
6959
|
+
}]
|
|
6960
|
+
}],
|
|
6961
|
+
icon: [{
|
|
6962
|
+
type: i0.Input,
|
|
6963
|
+
args: [{
|
|
6964
|
+
isSignal: true,
|
|
6965
|
+
alias: "icon",
|
|
6966
|
+
required: false
|
|
6967
|
+
}]
|
|
6968
|
+
}],
|
|
6969
|
+
iconPosition: [{
|
|
6970
|
+
type: i0.Input,
|
|
6971
|
+
args: [{
|
|
6972
|
+
isSignal: true,
|
|
6973
|
+
alias: "iconPosition",
|
|
6974
|
+
required: false
|
|
6975
|
+
}]
|
|
6976
|
+
}]
|
|
6977
|
+
}
|
|
6978
|
+
});
|
|
6979
|
+
const TEXT_TYPES = [
|
|
6980
|
+
"blinking-caret",
|
|
6981
|
+
"shimmer-text",
|
|
6982
|
+
"loading-dots"
|
|
6983
|
+
];
|
|
6984
|
+
var UiLoadingComponent = class UiLoadingComponent {
|
|
6985
|
+
type = input("spinner", ...ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []);
|
|
6986
|
+
hasText = computed(() => TEXT_TYPES.includes(this.type()), ...ngDevMode ? [{ debugName: "hasText" }] : /* istanbul ignore next */ []);
|
|
6987
|
+
throbberSpokes = Array.from({ length: 12 }, (_, i) => i);
|
|
6988
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
6989
|
+
minVersion: "12.0.0",
|
|
6990
|
+
version: "22.2.1",
|
|
6991
|
+
ngImport: i0,
|
|
6992
|
+
type: UiLoadingComponent,
|
|
6993
|
+
deps: [],
|
|
6994
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
6995
|
+
});
|
|
6996
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
6997
|
+
minVersion: "17.0.0",
|
|
6998
|
+
version: "22.2.1",
|
|
6999
|
+
type: UiLoadingComponent,
|
|
7000
|
+
isStandalone: true,
|
|
7001
|
+
selector: "ui-loading",
|
|
7002
|
+
inputs: { type: {
|
|
7003
|
+
classPropertyName: "type",
|
|
7004
|
+
publicName: "type",
|
|
7005
|
+
isSignal: true,
|
|
7006
|
+
isRequired: false,
|
|
7007
|
+
transformFunction: null
|
|
7008
|
+
} },
|
|
7009
|
+
ngImport: i0,
|
|
7010
|
+
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",
|
|
7011
|
+
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"]
|
|
7012
|
+
});
|
|
7013
|
+
};
|
|
7014
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
7015
|
+
minVersion: "12.0.0",
|
|
7016
|
+
version: "22.2.1",
|
|
7017
|
+
ngImport: i0,
|
|
7018
|
+
type: UiLoadingComponent,
|
|
7019
|
+
decorators: [{
|
|
7020
|
+
type: Component,
|
|
7021
|
+
args: [{
|
|
7022
|
+
selector: "ui-loading",
|
|
7023
|
+
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",
|
|
7024
|
+
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"]
|
|
7025
|
+
}]
|
|
7026
|
+
}],
|
|
7027
|
+
propDecorators: { type: [{
|
|
7028
|
+
type: i0.Input,
|
|
7029
|
+
args: [{
|
|
7030
|
+
isSignal: true,
|
|
7031
|
+
alias: "type",
|
|
7032
|
+
required: false
|
|
7033
|
+
}]
|
|
7034
|
+
}] }
|
|
6383
7035
|
});
|
|
6384
7036
|
const UI_LOADING_TYPES = [
|
|
6385
7037
|
"spinner",
|
|
@@ -6420,7 +7072,7 @@ var UiModalCloseButtonComponent = class UiModalCloseButtonComponent {
|
|
|
6420
7072
|
} },
|
|
6421
7073
|
outputs: { isOpen: "isOpenChange" },
|
|
6422
7074
|
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",
|
|
7075
|
+
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
7076
|
dependencies: [{
|
|
6425
7077
|
kind: "component",
|
|
6426
7078
|
type: UiButtonComponent,
|
|
@@ -6459,7 +7111,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6459
7111
|
args: [{
|
|
6460
7112
|
selector: "ui-modal-close-btn",
|
|
6461
7113
|
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"
|
|
7114
|
+
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
7115
|
}]
|
|
6464
7116
|
}],
|
|
6465
7117
|
propDecorators: { isOpen: [{
|
|
@@ -6478,6 +7130,7 @@ var UiModalComponent = class UiModalComponent {
|
|
|
6478
7130
|
isOpen = model.required(...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
|
|
6479
7131
|
closeBehaviour = input("whenClickOutside", ...ngDevMode ? [{ debugName: "closeBehaviour" }] : /* istanbul ignore next */ []);
|
|
6480
7132
|
title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
|
|
7133
|
+
size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
|
|
6481
7134
|
classes = input("", ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
6482
7135
|
headerElement = contentChild("header", {
|
|
6483
7136
|
...ngDevMode ? { debugName: "headerElement" } : /* istanbul ignore next */ {},
|
|
@@ -6491,7 +7144,11 @@ var UiModalComponent = class UiModalComponent {
|
|
|
6491
7144
|
...ngDevMode ? { debugName: "panelElement" } : /* istanbul ignore next */ {},
|
|
6492
7145
|
read: ElementRef
|
|
6493
7146
|
});
|
|
6494
|
-
generatedClasses = computed(() => [
|
|
7147
|
+
generatedClasses = computed(() => [
|
|
7148
|
+
"ui-modal",
|
|
7149
|
+
`ui-modal--${this.size()}`,
|
|
7150
|
+
this.classes()
|
|
7151
|
+
].filter(Boolean).join(" "), ...ngDevMode ? [{ debugName: "generatedClasses" }] : /* istanbul ignore next */ []);
|
|
6495
7152
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
6496
7153
|
minVersion: "12.0.0",
|
|
6497
7154
|
version: "22.2.1",
|
|
@@ -6528,6 +7185,13 @@ var UiModalComponent = class UiModalComponent {
|
|
|
6528
7185
|
isRequired: false,
|
|
6529
7186
|
transformFunction: null
|
|
6530
7187
|
},
|
|
7188
|
+
size: {
|
|
7189
|
+
classPropertyName: "size",
|
|
7190
|
+
publicName: "size",
|
|
7191
|
+
isSignal: true,
|
|
7192
|
+
isRequired: false,
|
|
7193
|
+
transformFunction: null
|
|
7194
|
+
},
|
|
6531
7195
|
classes: {
|
|
6532
7196
|
classPropertyName: "classes",
|
|
6533
7197
|
publicName: "classes",
|
|
@@ -6557,8 +7221,8 @@ var UiModalComponent = class UiModalComponent {
|
|
|
6557
7221
|
isSignal: true
|
|
6558
7222
|
}],
|
|
6559
7223
|
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: ["
|
|
7224
|
+
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",
|
|
7225
|
+
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
7226
|
dependencies: [
|
|
6563
7227
|
{
|
|
6564
7228
|
kind: "component",
|
|
@@ -6592,6 +7256,12 @@ var UiModalComponent = class UiModalComponent {
|
|
|
6592
7256
|
"ngTemplateOutlet",
|
|
6593
7257
|
"ngTemplateOutletInjector"
|
|
6594
7258
|
]
|
|
7259
|
+
},
|
|
7260
|
+
{
|
|
7261
|
+
kind: "component",
|
|
7262
|
+
type: UiCardComponent,
|
|
7263
|
+
selector: "ui-card",
|
|
7264
|
+
inputs: ["radius"]
|
|
6595
7265
|
}
|
|
6596
7266
|
]
|
|
6597
7267
|
});
|
|
@@ -6608,10 +7278,11 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6608
7278
|
imports: [
|
|
6609
7279
|
UiOverlayComponent,
|
|
6610
7280
|
UiModalCloseButtonComponent,
|
|
6611
|
-
NgTemplateOutlet
|
|
7281
|
+
NgTemplateOutlet,
|
|
7282
|
+
UiCardComponent
|
|
6612
7283
|
],
|
|
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: ["
|
|
7284
|
+
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",
|
|
7285
|
+
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
7286
|
}]
|
|
6616
7287
|
}],
|
|
6617
7288
|
propDecorators: {
|
|
@@ -6642,6 +7313,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6642
7313
|
required: false
|
|
6643
7314
|
}]
|
|
6644
7315
|
}],
|
|
7316
|
+
size: [{
|
|
7317
|
+
type: i0.Input,
|
|
7318
|
+
args: [{
|
|
7319
|
+
isSignal: true,
|
|
7320
|
+
alias: "size",
|
|
7321
|
+
required: false
|
|
7322
|
+
}]
|
|
7323
|
+
}],
|
|
6645
7324
|
classes: [{
|
|
6646
7325
|
type: i0.Input,
|
|
6647
7326
|
args: [{
|
|
@@ -8580,7 +9259,7 @@ var UiToastComponent = class UiToastComponent {
|
|
|
8580
9259
|
"focusout": "setFocused(false)"
|
|
8581
9260
|
} },
|
|
8582
9261
|
ngImport: i0,
|
|
8583
|
-
template: "<
|
|
9262
|
+
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
9263
|
dependencies: [{
|
|
8585
9264
|
kind: "component",
|
|
8586
9265
|
type: NgIcon,
|
|
@@ -8592,6 +9271,11 @@ var UiToastComponent = class UiToastComponent {
|
|
|
8592
9271
|
"strokeWidth",
|
|
8593
9272
|
"color"
|
|
8594
9273
|
]
|
|
9274
|
+
}, {
|
|
9275
|
+
kind: "component",
|
|
9276
|
+
type: UiCardComponent,
|
|
9277
|
+
selector: "ui-card",
|
|
9278
|
+
inputs: ["radius"]
|
|
8595
9279
|
}]
|
|
8596
9280
|
});
|
|
8597
9281
|
};
|
|
@@ -8604,14 +9288,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
8604
9288
|
type: Component,
|
|
8605
9289
|
args: [{
|
|
8606
9290
|
selector: "ui-toast",
|
|
8607
|
-
imports: [NgIcon],
|
|
9291
|
+
imports: [NgIcon, UiCardComponent],
|
|
8608
9292
|
host: {
|
|
8609
9293
|
"(mouseenter)": "setHovered(true)",
|
|
8610
9294
|
"(mouseleave)": "setHovered(false)",
|
|
8611
9295
|
"(focusin)": "setFocused(true)",
|
|
8612
9296
|
"(focusout)": "setFocused(false)"
|
|
8613
9297
|
},
|
|
8614
|
-
template: "<
|
|
9298
|
+
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
9299
|
}]
|
|
8616
9300
|
}],
|
|
8617
9301
|
ctorParameters: () => [],
|
|
@@ -8819,196 +9503,6 @@ const ToasterPositions = [
|
|
|
8819
9503
|
"bottom-center",
|
|
8820
9504
|
"bottom-right"
|
|
8821
9505
|
];
|
|
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
9506
|
var UiLayoutComponent = class UiLayoutComponent {
|
|
9013
9507
|
sidebar = contentChild("sidebar", ...ngDevMode ? [{ debugName: "sidebar" }] : /* istanbul ignore next */ []);
|
|
9014
9508
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
@@ -10578,7 +11072,7 @@ var UiDatepickerComponent = class UiDatepickerComponent {
|
|
|
10578
11072
|
isSignal: true
|
|
10579
11073
|
}],
|
|
10580
11074
|
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
|
|
11075
|
+
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
11076
|
dependencies: [
|
|
10583
11077
|
{
|
|
10584
11078
|
kind: "component",
|
|
@@ -10694,6 +11188,12 @@ var UiDatepickerComponent = class UiDatepickerComponent {
|
|
|
10694
11188
|
"strokeWidth",
|
|
10695
11189
|
"color"
|
|
10696
11190
|
]
|
|
11191
|
+
},
|
|
11192
|
+
{
|
|
11193
|
+
kind: "component",
|
|
11194
|
+
type: UiCardComponent,
|
|
11195
|
+
selector: "ui-card",
|
|
11196
|
+
inputs: ["radius"]
|
|
10697
11197
|
}
|
|
10698
11198
|
]
|
|
10699
11199
|
});
|
|
@@ -10714,10 +11214,11 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10714
11214
|
UiDropdownDirective,
|
|
10715
11215
|
UiButtonComponent,
|
|
10716
11216
|
UiTimeSelectComponent,
|
|
10717
|
-
NgIcon
|
|
11217
|
+
NgIcon,
|
|
11218
|
+
UiCardComponent
|
|
10718
11219
|
],
|
|
10719
11220
|
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
|
|
11221
|
+
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
11222
|
}]
|
|
10722
11223
|
}],
|
|
10723
11224
|
propDecorators: {
|
|
@@ -10909,7 +11410,7 @@ var UiDropdownButtonComponent = class UiDropdownButtonComponent {
|
|
|
10909
11410
|
},
|
|
10910
11411
|
outputs: { isOpen: "isOpenChange" },
|
|
10911
11412
|
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",
|
|
11413
|
+
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
11414
|
dependencies: [{
|
|
10914
11415
|
kind: "component",
|
|
10915
11416
|
type: UiButtonComponent,
|
|
@@ -10948,7 +11449,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
10948
11449
|
args: [{
|
|
10949
11450
|
selector: "ui-dropdown-button",
|
|
10950
11451
|
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"
|
|
11452
|
+
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
11453
|
}]
|
|
10953
11454
|
}],
|
|
10954
11455
|
propDecorators: {
|
|
@@ -11013,33 +11514,42 @@ var UiDropdownMenuComponent = class UiDropdownMenuComponent {
|
|
|
11013
11514
|
transformFunction: null
|
|
11014
11515
|
} },
|
|
11015
11516
|
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
|
-
|
|
11517
|
+
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",
|
|
11518
|
+
dependencies: [
|
|
11519
|
+
{
|
|
11520
|
+
kind: "component",
|
|
11521
|
+
type: UiButtonComponent,
|
|
11522
|
+
selector: "ui-button",
|
|
11523
|
+
inputs: [
|
|
11524
|
+
"appearance",
|
|
11525
|
+
"intent",
|
|
11526
|
+
"size",
|
|
11527
|
+
"classes",
|
|
11528
|
+
"type",
|
|
11529
|
+
"ariaLabel",
|
|
11530
|
+
"disabled",
|
|
11531
|
+
"loading"
|
|
11532
|
+
]
|
|
11533
|
+
},
|
|
11534
|
+
{
|
|
11535
|
+
kind: "component",
|
|
11536
|
+
type: UiCardComponent,
|
|
11537
|
+
selector: "ui-card",
|
|
11538
|
+
inputs: ["radius"]
|
|
11539
|
+
},
|
|
11540
|
+
{
|
|
11541
|
+
kind: "component",
|
|
11542
|
+
type: NgIcon,
|
|
11543
|
+
selector: "ng-icon",
|
|
11544
|
+
inputs: [
|
|
11545
|
+
"name",
|
|
11546
|
+
"svg",
|
|
11547
|
+
"size",
|
|
11548
|
+
"strokeWidth",
|
|
11549
|
+
"color"
|
|
11550
|
+
]
|
|
11551
|
+
}
|
|
11552
|
+
]
|
|
11043
11553
|
});
|
|
11044
11554
|
};
|
|
11045
11555
|
i0.ɵɵngDeclareClassMetadata({
|
|
@@ -11051,8 +11561,12 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11051
11561
|
type: Component,
|
|
11052
11562
|
args: [{
|
|
11053
11563
|
selector: "ui-dropdown-menu",
|
|
11054
|
-
imports: [
|
|
11055
|
-
|
|
11564
|
+
imports: [
|
|
11565
|
+
UiButtonComponent,
|
|
11566
|
+
UiCardComponent,
|
|
11567
|
+
NgIcon
|
|
11568
|
+
],
|
|
11569
|
+
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
11570
|
}]
|
|
11057
11571
|
}],
|
|
11058
11572
|
propDecorators: { items: [{
|
|
@@ -11506,6 +12020,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
11506
12020
|
}]
|
|
11507
12021
|
}
|
|
11508
12022
|
});
|
|
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 };
|
|
12023
|
+
export { AlertAppearances, AlertIntents, BadgeAppearances, BadgeIntents, BadgeSizes, BarChartOrientations, ButtonAppearances, ButtonIntents, ButtonSizes, ButtonTypes, CalendarModes, CardRadii, 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, UiCardComponent, 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, radiusClasses, thisWeekPreset, todayPreset, yearPreset };
|
|
11510
12024
|
|
|
11511
12025
|
//# sourceMappingURL=area8975-ui.mjs.map
|