@bitforgehq/ui 0.5.0-next.3 → 0.5.0-next.4
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/CHANGELOG.md +47 -0
- package/README.md +3 -3
- package/ai/MANIFEST.index.json +9 -0
- package/ai/MANIFEST.json +265 -5
- package/ai/REFERENCE.index.json +28 -0
- package/ai/REFERENCE.json +172 -3
- package/ai/UI_GUIDE.md +14 -5
- package/ai/components/badge.md +41 -1
- package/ai/components/image-tile.md +452 -0
- package/ai/components/menu-button.md +65 -9
- package/ai/components/pagination.md +59 -11
- package/ai/reference/bf-image-tile-aspect.md +28 -0
- package/ai/reference/bf-image-tile-caption-placement.md +27 -0
- package/ai/reference/bf-image-tile-harness.md +70 -0
- package/ai/reference/bf-labels.md +3 -1
- package/ai/reference/bf-pagination-position-label.md +22 -0
- package/ai/reference/provide-bf-labels.md +2 -1
- package/fesm2022/bitforgehq-ui-overlay.mjs +26 -3
- package/fesm2022/bitforgehq-ui-overlay.mjs.map +1 -1
- package/fesm2022/bitforgehq-ui-testing.mjs +59 -1
- package/fesm2022/bitforgehq-ui-testing.mjs.map +1 -1
- package/fesm2022/bitforgehq-ui.mjs +576 -55
- package/fesm2022/bitforgehq-ui.mjs.map +1 -1
- package/llms-full.txt +779 -9
- package/llms.txt +5 -0
- package/package.json +1 -1
- package/types/bitforgehq-ui-overlay.d.ts +11 -0
- package/types/bitforgehq-ui-testing.d.ts +83 -0
- package/types/bitforgehq-ui.d.ts +239 -12
|
@@ -123,6 +123,8 @@ const BF_DEFAULT_LABELS = {
|
|
|
123
123
|
chatStop: "Stop",
|
|
124
124
|
mediaCardSelect: "Select",
|
|
125
125
|
imageLoadFailed: "The image could not be loaded",
|
|
126
|
+
imageTileEmpty: "No image yet",
|
|
127
|
+
imageTileSelected: "Selected",
|
|
126
128
|
imageViewer: "Image viewer",
|
|
127
129
|
imageViewerPrevious: "Previous image",
|
|
128
130
|
imageViewerNext: "Next image",
|
|
@@ -256,6 +258,8 @@ function mergeLabels(parent, o) {
|
|
|
256
258
|
chatStop: o.chatStop ?? parent.chatStop,
|
|
257
259
|
mediaCardSelect: o.mediaCardSelect ?? parent.mediaCardSelect,
|
|
258
260
|
imageLoadFailed: o.imageLoadFailed ?? parent.imageLoadFailed,
|
|
261
|
+
imageTileEmpty: o.imageTileEmpty ?? parent.imageTileEmpty,
|
|
262
|
+
imageTileSelected: o.imageTileSelected ?? parent.imageTileSelected,
|
|
259
263
|
imageViewer: o.imageViewer ?? parent.imageViewer,
|
|
260
264
|
imageViewerPrevious: o.imageViewerPrevious ?? parent.imageViewerPrevious,
|
|
261
265
|
imageViewerNext: o.imageViewerNext ?? parent.imageViewerNext,
|
|
@@ -619,7 +623,7 @@ const PILL_HIT = {
|
|
|
619
623
|
bordered: ""
|
|
620
624
|
}
|
|
621
625
|
};
|
|
622
|
-
const BASE$
|
|
626
|
+
const BASE$12 = "relative inline-flex max-w-full min-w-0 items-center justify-center gap-2 rounded-control font-bold whitespace-nowrap transition-colors duration-150 select-none focus-visible:outline-hidden focus-visible:ring-4 focus-visible:ring-ring disabled:cursor-not-allowed disabled:bg-surface-sunken disabled:text-text-disabled disabled:border-transparent";
|
|
623
627
|
const VARIANT$6 = {
|
|
624
628
|
primary: "bg-primary text-on-primary hover:bg-primary-hover",
|
|
625
629
|
tonal: "bg-primary-soft text-primary-strong hover:bg-primary-soft-hover",
|
|
@@ -676,7 +680,7 @@ const TEXT_PADDING = {
|
|
|
676
680
|
lg: "px-3"
|
|
677
681
|
};
|
|
678
682
|
const BUTTON_CLASSES = {
|
|
679
|
-
base: BASE$
|
|
683
|
+
base: BASE$12,
|
|
680
684
|
variant: VARIANT$6,
|
|
681
685
|
pressed: PRESSED$2.button,
|
|
682
686
|
current: CURRENT,
|
|
@@ -714,7 +718,7 @@ var BfButtonComponent = class BfButtonComponent {
|
|
|
714
718
|
const pressed = this.isLink ? PRESSED$2.link[variant] : this.disabled() || this.loading() ? "" : PRESSED$2.button[variant];
|
|
715
719
|
const current = this.isLink ? CURRENT[variant] : "";
|
|
716
720
|
return [
|
|
717
|
-
BASE$
|
|
721
|
+
BASE$12,
|
|
718
722
|
VARIANT$6[variant],
|
|
719
723
|
pressed,
|
|
720
724
|
current,
|
|
@@ -953,7 +957,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
953
957
|
}]
|
|
954
958
|
}
|
|
955
959
|
});
|
|
956
|
-
const BASE$
|
|
960
|
+
const BASE$11 = "relative inline-flex shrink-0 cursor-pointer items-center justify-center rounded-control transition-colors duration-150 select-none focus-visible:outline-hidden focus-visible:ring-4 focus-visible:ring-ring disabled:cursor-not-allowed disabled:bg-surface-sunken disabled:text-text-disabled disabled:border-transparent";
|
|
957
961
|
const VARIANT$5 = {
|
|
958
962
|
tonal: "bg-primary-soft text-primary-strong hover:bg-primary-soft-hover",
|
|
959
963
|
primary: "bg-primary text-on-primary hover:bg-primary-hover",
|
|
@@ -980,7 +984,7 @@ const SIZE$4 = {
|
|
|
980
984
|
lg: "h-12 w-12"
|
|
981
985
|
};
|
|
982
986
|
const ICON_BUTTON_CLASSES = {
|
|
983
|
-
base: BASE$
|
|
987
|
+
base: BASE$11,
|
|
984
988
|
variant: VARIANT$5,
|
|
985
989
|
pressed: PRESSED$1.button,
|
|
986
990
|
size: SIZE$4
|
|
@@ -1004,7 +1008,7 @@ var BfIconButtonComponent = class BfIconButtonComponent {
|
|
|
1004
1008
|
const hit = PILL_HIT[size][variant === "outline" ? "bordered" : "plain"];
|
|
1005
1009
|
const pressed = this.isLink ? PRESSED$1.link[variant] : this.disabled() ? "" : PRESSED$1.button[variant];
|
|
1006
1010
|
return [
|
|
1007
|
-
BASE$
|
|
1011
|
+
BASE$11,
|
|
1008
1012
|
VARIANT$5[variant],
|
|
1009
1013
|
pressed,
|
|
1010
1014
|
SIZE$4[size],
|
|
@@ -1191,6 +1195,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1191
1195
|
}
|
|
1192
1196
|
});
|
|
1193
1197
|
const LABEL_BASE$1 = "inline-flex items-center rounded-control px-2.5 py-1.25 text-micro font-bold leading-none";
|
|
1198
|
+
const LABEL_ICON = "gap-1 [&_svg]:size-3 has-[[data-badge-icon]>*]:ps-2";
|
|
1194
1199
|
const COUNT_BASE = "inline-flex h-box min-w-box items-center justify-center rounded-control px-1.75 text-micro font-bold leading-none";
|
|
1195
1200
|
const COUNT_SOFT = "bg-primary text-on-primary";
|
|
1196
1201
|
const STRONG_FORCED = "forced-colors:outline forced-colors:outline-[CanvasText]";
|
|
@@ -1215,7 +1220,7 @@ var BfBadgeComponent = class BfBadgeComponent {
|
|
|
1215
1220
|
emphasis = input("soft", ...ngDevMode ? [{ debugName: "emphasis" }] : /* istanbul ignore next */ []);
|
|
1216
1221
|
count = input(void 0, ...ngDevMode ? [{ debugName: "count" }] : /* istanbul ignore next */ []);
|
|
1217
1222
|
countLabel = input("", ...ngDevMode ? [{ debugName: "countLabel" }] : /* istanbul ignore next */ []);
|
|
1218
|
-
classes = computed(() => this.emphasis() === "strong" ? `${LABEL_BASE$1} ${STRONG[this.variant()]} ${STRONG_FORCED}` : `${LABEL_BASE$1} ${VARIANT$4[this.variant()]}`, ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
1223
|
+
classes = computed(() => this.emphasis() === "strong" ? `${LABEL_BASE$1} ${LABEL_ICON} ${STRONG[this.variant()]} ${STRONG_FORCED}` : `${LABEL_BASE$1} ${LABEL_ICON} ${VARIANT$4[this.variant()]}`, ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
1219
1224
|
countText = computed(() => {
|
|
1220
1225
|
const c = this.count();
|
|
1221
1226
|
return c === void 0 ? null : c > 99 ? "99+" : String(c);
|
|
@@ -1276,7 +1281,10 @@ var BfBadgeComponent = class BfBadgeComponent {
|
|
|
1276
1281
|
}
|
|
1277
1282
|
</span>
|
|
1278
1283
|
} @else {
|
|
1279
|
-
<span [class]="classes()"
|
|
1284
|
+
<span [class]="classes()"
|
|
1285
|
+
><span data-badge-icon class="contents"><ng-content select="[bfSlot=icon-start]" /></span
|
|
1286
|
+
><ng-content
|
|
1287
|
+
/></span>
|
|
1280
1288
|
}
|
|
1281
1289
|
`,
|
|
1282
1290
|
isInline: true
|
|
@@ -1301,7 +1309,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
1301
1309
|
}
|
|
1302
1310
|
</span>
|
|
1303
1311
|
} @else {
|
|
1304
|
-
<span [class]="classes()"
|
|
1312
|
+
<span [class]="classes()"
|
|
1313
|
+
><span data-badge-icon class="contents"><ng-content select="[bfSlot=icon-start]" /></span
|
|
1314
|
+
><ng-content
|
|
1315
|
+
/></span>
|
|
1305
1316
|
}
|
|
1306
1317
|
`
|
|
1307
1318
|
}]
|
|
@@ -2420,7 +2431,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
2420
2431
|
}]
|
|
2421
2432
|
}
|
|
2422
2433
|
});
|
|
2423
|
-
const BASE$
|
|
2434
|
+
const BASE$10 = "block w-full rounded-field border bg-surface text-text placeholder:text-text-muted transition-colors focus:outline-hidden focus:border-primary focus:ring-2 focus:ring-ring read-only:bg-surface-muted disabled:cursor-not-allowed disabled:border-surface-sunken disabled:bg-surface-muted disabled:text-text-disabled";
|
|
2424
2435
|
const SIZE$3 = {
|
|
2425
2436
|
sm: "px-3 py-1.5 text-label-xs",
|
|
2426
2437
|
md: "px-3.5 py-2 text-label-sm",
|
|
@@ -2500,7 +2511,7 @@ var BfTextareaComponent = class BfTextareaComponent {
|
|
|
2500
2511
|
ariaLabelAttr = computed(() => this.label() ? null : this.ariaLabel() || null, ...ngDevMode ? [{ debugName: "ariaLabelAttr" }] : /* istanbul ignore next */ []);
|
|
2501
2512
|
ariaLabelledbyAttr = computed(() => this.label() ? null : this.ariaLabelledby() || null, ...ngDevMode ? [{ debugName: "ariaLabelledbyAttr" }] : /* istanbul ignore next */ []);
|
|
2502
2513
|
classes = computed(() => [
|
|
2503
|
-
BASE$
|
|
2514
|
+
BASE$10,
|
|
2504
2515
|
SIZE$3[this.resolvedSize()],
|
|
2505
2516
|
this.showError() ? "border-danger-border" : "border-border-strong",
|
|
2506
2517
|
this.growing() ? GROWING : "resize-y"
|
|
@@ -6464,7 +6475,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
6464
6475
|
}
|
|
6465
6476
|
});
|
|
6466
6477
|
const BF_CHIP_GROUP = new InjectionToken("BF_CHIP_GROUP");
|
|
6467
|
-
const BASE$
|
|
6478
|
+
const BASE$9 = "relative inline-flex max-w-full min-w-0 items-center gap-1.5 rounded-control border-[1.5px] font-bold whitespace-nowrap cursor-pointer transition-colors duration-150 select-none focus-visible:outline-hidden focus-visible:ring-4 focus-visible:ring-ring disabled:cursor-not-allowed disabled:border-transparent disabled:bg-surface-sunken disabled:text-text-disabled";
|
|
6468
6479
|
const SIZE$2 = {
|
|
6469
6480
|
sm: "h-8 px-3 text-label-xs",
|
|
6470
6481
|
md: "h-10 px-3.5 text-label-sm",
|
|
@@ -6516,7 +6527,7 @@ var BfChipComponent = class BfChipComponent {
|
|
|
6516
6527
|
const on = this.isSelected();
|
|
6517
6528
|
const pressed = this.isDisabled() ? "" : on ? PRESSED_ON[variant] : PRESSED_OFF;
|
|
6518
6529
|
return [
|
|
6519
|
-
BASE$
|
|
6530
|
+
BASE$9,
|
|
6520
6531
|
SIZE$2[size],
|
|
6521
6532
|
PILL_HIT[size].bordered,
|
|
6522
6533
|
on ? ON[variant] : OFF,
|
|
@@ -8279,7 +8290,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
8279
8290
|
}]
|
|
8280
8291
|
}
|
|
8281
8292
|
});
|
|
8282
|
-
const BASE$
|
|
8293
|
+
const BASE$8 = "relative flex h-full w-full flex-col gap-3 rounded-card text-start [&>[bfSlot=footer]]:mt-auto";
|
|
8283
8294
|
const VARIANT$3 = {
|
|
8284
8295
|
raised: "bg-surface text-text shadow-raised",
|
|
8285
8296
|
tint: "bg-primary-soft text-text",
|
|
@@ -8307,7 +8318,7 @@ var BfCardComponent = class BfCardComponent {
|
|
|
8307
8318
|
actions = signal(0, ...ngDevMode ? [{ debugName: "actions" }] : /* istanbul ignore next */ []);
|
|
8308
8319
|
actionFocusVisible = signal(false, ...ngDevMode ? [{ debugName: "actionFocusVisible" }] : /* istanbul ignore next */ []);
|
|
8309
8320
|
classes = computed(() => [
|
|
8310
|
-
BASE$
|
|
8321
|
+
BASE$8,
|
|
8311
8322
|
VARIANT$3[this.variant()],
|
|
8312
8323
|
PADDING$2[this.padding()],
|
|
8313
8324
|
this.interactive() ? INTERACTIVE : ACTION[this.actionState()]
|
|
@@ -8456,7 +8467,34 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
8456
8467
|
}]
|
|
8457
8468
|
}
|
|
8458
8469
|
});
|
|
8459
|
-
|
|
8470
|
+
function imageLoadState(src, loading, failed) {
|
|
8471
|
+
const status = linkedSignal({
|
|
8472
|
+
...ngDevMode ? { debugName: "status" } : /* istanbul ignore next */ {},
|
|
8473
|
+
source: src,
|
|
8474
|
+
computation: () => "pending"
|
|
8475
|
+
});
|
|
8476
|
+
const skeletonGone = linkedSignal({
|
|
8477
|
+
...ngDevMode ? { debugName: "skeletonGone" } : /* istanbul ignore next */ {},
|
|
8478
|
+
source: src,
|
|
8479
|
+
computation: () => false
|
|
8480
|
+
});
|
|
8481
|
+
const phase = computed(() => {
|
|
8482
|
+
if (failed() || status() === "error") return "failed";
|
|
8483
|
+
if (!src()) return loading() ? "loading" : "empty";
|
|
8484
|
+
return status() === "loaded" ? "loaded" : "loading";
|
|
8485
|
+
}, ...ngDevMode ? [{ debugName: "phase" }] : /* istanbul ignore next */ []);
|
|
8486
|
+
return {
|
|
8487
|
+
phase,
|
|
8488
|
+
sources: computed(() => src() && phase() !== "failed" ? [src()] : []),
|
|
8489
|
+
skeletonShown: computed(() => phase() === "loading" || phase() === "loaded" && !skeletonGone()),
|
|
8490
|
+
loaded: () => status.set("loaded"),
|
|
8491
|
+
errored: () => status.set("error"),
|
|
8492
|
+
skeletonFaded: (event) => {
|
|
8493
|
+
if (event.target === event.currentTarget && phase() === "loaded") skeletonGone.set(true);
|
|
8494
|
+
}
|
|
8495
|
+
};
|
|
8496
|
+
}
|
|
8497
|
+
const BASE$7 = "transition-opacity duration-slow ease-md motion-reduce:transition-none";
|
|
8460
8498
|
var BfFadeInDirective = class BfFadeInDirective {
|
|
8461
8499
|
image = inject(ElementRef).nativeElement;
|
|
8462
8500
|
shown = signal(false, ...ngDevMode ? [{ debugName: "shown" }] : /* istanbul ignore next */ []);
|
|
@@ -8506,7 +8544,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
8506
8544
|
args: [{
|
|
8507
8545
|
selector: "img[bfFadeIn]",
|
|
8508
8546
|
host: {
|
|
8509
|
-
class: BASE$
|
|
8547
|
+
class: BASE$7,
|
|
8510
8548
|
"[class.opacity-0]": "!shown()",
|
|
8511
8549
|
"[attr.data-loaded]": "shown() ? '' : null",
|
|
8512
8550
|
"(load)": "show()",
|
|
@@ -8663,24 +8701,24 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
8663
8701
|
}]
|
|
8664
8702
|
}
|
|
8665
8703
|
});
|
|
8666
|
-
const BASE$
|
|
8667
|
-
const SELECTED = {
|
|
8704
|
+
const BASE$6 = "relative flex h-full w-full flex-col rounded-card bg-surface text-text text-start shadow-raised outline-2 outline-offset-2 transition-[box-shadow,outline-color] duration-fast ease-md motion-reduce:transition-none";
|
|
8705
|
+
const SELECTED$1 = {
|
|
8668
8706
|
on: "outline-primary forced-colors:outline-[Highlight]",
|
|
8669
8707
|
off: "outline-transparent forced-colors:outline-0"
|
|
8670
8708
|
};
|
|
8671
|
-
const CUE = {
|
|
8709
|
+
const CUE$1 = {
|
|
8672
8710
|
none: "",
|
|
8673
8711
|
action: "cursor-pointer hover:shadow-floating has-[[data-bf-action]:active]:shadow-raised has-[[data-select]:active]:shadow-raised",
|
|
8674
8712
|
focused: "cursor-pointer hover:shadow-floating has-[[data-bf-action]:active]:shadow-raised has-[[data-select]:active]:shadow-raised ring-4 ring-ring"
|
|
8675
8713
|
};
|
|
8676
|
-
const ASPECT = {
|
|
8714
|
+
const ASPECT$1 = {
|
|
8677
8715
|
"16/9": "aspect-video",
|
|
8678
8716
|
"4/3": "aspect-[4/3]",
|
|
8679
8717
|
"1/1": "aspect-square",
|
|
8680
8718
|
"3/4": "aspect-[3/4]"
|
|
8681
8719
|
};
|
|
8682
|
-
const MEDIA = "relative w-full shrink-0 overflow-hidden rounded-t-card bg-surface-sunken";
|
|
8683
|
-
const SKELETON_LAYER = "absolute inset-0 transition-opacity duration-slow ease-md motion-reduce:transition-none";
|
|
8720
|
+
const MEDIA$1 = "relative w-full shrink-0 overflow-hidden rounded-t-card bg-surface-sunken";
|
|
8721
|
+
const SKELETON_LAYER$1 = "absolute inset-0 transition-opacity duration-slow ease-md motion-reduce:transition-none";
|
|
8684
8722
|
const SELECT = {
|
|
8685
8723
|
stretched: "cursor-pointer after:absolute after:inset-0 after:content-[''] focus-visible:outline-none focus-visible:after:outline-hidden",
|
|
8686
8724
|
corner: "absolute top-2 end-2 z-1 grid size-8 cursor-pointer place-items-center rounded-full focus-visible:ring-4 focus-visible:ring-ring focus-visible:outline-hidden pointer-coarse:after:absolute pointer-coarse:after:-inset-1.5 pointer-coarse:after:content-['']"
|
|
@@ -8724,24 +8762,11 @@ var BfMediaCardComponent = class BfMediaCardComponent {
|
|
|
8724
8762
|
bodyId = uniqueId("bf-media-card-body");
|
|
8725
8763
|
selectTextId = uniqueId("bf-media-card-select");
|
|
8726
8764
|
labelId = uniqueId("bf-media-card-label");
|
|
8727
|
-
skeletonLayerClasses = SKELETON_LAYER;
|
|
8728
|
-
|
|
8729
|
-
|
|
8730
|
-
|
|
8731
|
-
|
|
8732
|
-
});
|
|
8733
|
-
skeletonGone = linkedSignal({
|
|
8734
|
-
...ngDevMode ? { debugName: "skeletonGone" } : /* istanbul ignore next */ {},
|
|
8735
|
-
source: this.src,
|
|
8736
|
-
computation: () => false
|
|
8737
|
-
});
|
|
8738
|
-
state = computed(() => {
|
|
8739
|
-
if (this.failed() || this.imageStatus() === "error") return "failed";
|
|
8740
|
-
if (!this.src()) return this.loading() ? "loading" : "empty";
|
|
8741
|
-
return this.imageStatus() === "loaded" ? "loaded" : "loading";
|
|
8742
|
-
}, ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
|
|
8743
|
-
imageSources = computed(() => this.src() && this.state() !== "failed" ? [this.src()] : [], ...ngDevMode ? [{ debugName: "imageSources" }] : /* istanbul ignore next */ []);
|
|
8744
|
-
skeletonShown = computed(() => this.state() === "loading" || this.state() === "loaded" && !this.skeletonGone(), ...ngDevMode ? [{ debugName: "skeletonShown" }] : /* istanbul ignore next */ []);
|
|
8765
|
+
skeletonLayerClasses = SKELETON_LAYER$1;
|
|
8766
|
+
image = imageLoadState(this.src, this.loading, this.failed);
|
|
8767
|
+
state = this.image.phase;
|
|
8768
|
+
imageSources = this.image.sources;
|
|
8769
|
+
skeletonShown = this.image.skeletonShown;
|
|
8745
8770
|
bodyNamesSelect = computed(() => this.selectable() && !this.label(), ...ngDevMode ? [{ debugName: "bodyNamesSelect" }] : /* istanbul ignore next */ []);
|
|
8746
8771
|
failedText = computed(() => this.failedLabel() || this.labels.imageLoadFailed, ...ngDevMode ? [{ debugName: "failedText" }] : /* istanbul ignore next */ []);
|
|
8747
8772
|
selectMode = computed(() => this.actions() > 0 ? "corner" : "stretched", ...ngDevMode ? [{ debugName: "selectMode" }] : /* istanbul ignore next */ []);
|
|
@@ -8751,11 +8776,11 @@ var BfMediaCardComponent = class BfMediaCardComponent {
|
|
|
8751
8776
|
return this.actionFocusVisible() || stretched && this.selectFocusVisible() ? "focused" : "action";
|
|
8752
8777
|
}, ...ngDevMode ? [{ debugName: "cue" }] : /* istanbul ignore next */ []);
|
|
8753
8778
|
classes = computed(() => [
|
|
8754
|
-
BASE$
|
|
8755
|
-
SELECTED[this.selectable() && this.selected() ? "on" : "off"],
|
|
8756
|
-
CUE[this.cue()]
|
|
8779
|
+
BASE$6,
|
|
8780
|
+
SELECTED$1[this.selectable() && this.selected() ? "on" : "off"],
|
|
8781
|
+
CUE$1[this.cue()]
|
|
8757
8782
|
].filter(Boolean).join(" "), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
8758
|
-
mediaClasses = computed(() => `${MEDIA} ${ASPECT[this.aspect()]}`, ...ngDevMode ? [{ debugName: "mediaClasses" }] : /* istanbul ignore next */ []);
|
|
8783
|
+
mediaClasses = computed(() => `${MEDIA$1} ${ASPECT$1[this.aspect()]}`, ...ngDevMode ? [{ debugName: "mediaClasses" }] : /* istanbul ignore next */ []);
|
|
8759
8784
|
selectClasses = computed(() => SELECT[this.selectMode()], ...ngDevMode ? [{ debugName: "selectClasses" }] : /* istanbul ignore next */ []);
|
|
8760
8785
|
discClasses = computed(() => [DISC[this.selected() ? "on" : "off"], DISC_POSITION[this.selectMode()]].filter(Boolean).join(" "), ...ngDevMode ? [{ debugName: "discClasses" }] : /* istanbul ignore next */ []);
|
|
8761
8786
|
registerAction() {
|
|
@@ -8766,15 +8791,15 @@ var BfMediaCardComponent = class BfMediaCardComponent {
|
|
|
8766
8791
|
this.actionFocusVisible.set(visible);
|
|
8767
8792
|
}
|
|
8768
8793
|
imageLoaded() {
|
|
8769
|
-
this.
|
|
8794
|
+
this.image.loaded();
|
|
8770
8795
|
this.loaded.emit();
|
|
8771
8796
|
}
|
|
8772
8797
|
imageFailed() {
|
|
8773
|
-
this.
|
|
8798
|
+
this.image.errored();
|
|
8774
8799
|
this.errored.emit();
|
|
8775
8800
|
}
|
|
8776
8801
|
skeletonFaded(event) {
|
|
8777
|
-
|
|
8802
|
+
this.image.skeletonFaded(event);
|
|
8778
8803
|
}
|
|
8779
8804
|
toggle() {
|
|
8780
8805
|
const next = !this.selected();
|
|
@@ -9191,6 +9216,451 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
9191
9216
|
}]
|
|
9192
9217
|
}
|
|
9193
9218
|
});
|
|
9219
|
+
const BASE$5 = "group/tile relative grid h-full w-full rounded-card bg-surface text-text text-start shadow-raised forced-colors:border forced-colors:border-[CanvasText] outline-2 outline-offset-2 transition-[translate,box-shadow,outline-color] duration-base ease-md motion-reduce:transition-none";
|
|
9220
|
+
const LAYOUT$1 = {
|
|
9221
|
+
below: "grid-rows-[auto_1fr]",
|
|
9222
|
+
overlay: "[&>*]:[grid-area:1/1]"
|
|
9223
|
+
};
|
|
9224
|
+
const SELECTED = {
|
|
9225
|
+
on: "outline-primary forced-colors:outline-[Highlight]",
|
|
9226
|
+
off: "outline-transparent forced-colors:outline-0"
|
|
9227
|
+
};
|
|
9228
|
+
const ACTION_CUE = "cursor-pointer hover:shadow-floating motion-safe:hover:-translate-y-0.5 has-[[data-bf-action]:active]:shadow-raised motion-safe:has-[[data-bf-action]:active]:translate-y-0";
|
|
9229
|
+
const CUE = {
|
|
9230
|
+
none: "",
|
|
9231
|
+
action: ACTION_CUE,
|
|
9232
|
+
focused: `${ACTION_CUE} ring-4 ring-ring`
|
|
9233
|
+
};
|
|
9234
|
+
const ASPECT = {
|
|
9235
|
+
"1/1": "aspect-square",
|
|
9236
|
+
"4/3": "aspect-[4/3]",
|
|
9237
|
+
"16/9": "aspect-video",
|
|
9238
|
+
"3/4": "aspect-[3/4]"
|
|
9239
|
+
};
|
|
9240
|
+
const MEDIA = "relative w-full overflow-hidden bg-surface-sunken";
|
|
9241
|
+
const MEDIA_CORNERS = {
|
|
9242
|
+
below: "rounded-t-card",
|
|
9243
|
+
overlay: "rounded-card"
|
|
9244
|
+
};
|
|
9245
|
+
const ZOOM_BASE = "absolute inset-0";
|
|
9246
|
+
const ZOOM_ACTION = "motion-safe:transition-[scale] motion-safe:duration-slow motion-safe:ease-md motion-safe:group-hover/tile:scale-105";
|
|
9247
|
+
const SKELETON_LAYER = "absolute inset-0 transition-opacity duration-slow ease-md motion-reduce:transition-none";
|
|
9248
|
+
const CAPTION = {
|
|
9249
|
+
below: "flex min-w-0 flex-col gap-0.5 p-3",
|
|
9250
|
+
overlay: "dark z-0 flex min-w-0 flex-col gap-0.5 self-end rounded-b-card bg-linear-to-t from-scrim/80 via-scrim/55 to-transparent p-3 pt-10 text-text"
|
|
9251
|
+
};
|
|
9252
|
+
const TITLE$1 = "min-h-[2lh] text-label-sm font-bold [&>*]:line-clamp-2 [&>*]:break-words [&_a]:text-inherit [&_button]:line-clamp-2 [&_button]:text-start";
|
|
9253
|
+
const META = "text-caption text-text-muted empty:hidden";
|
|
9254
|
+
var BfImageTileComponent = class BfImageTileComponent {
|
|
9255
|
+
labels = inject(BF_LABELS);
|
|
9256
|
+
src = input("", ...ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []);
|
|
9257
|
+
alt = input("", ...ngDevMode ? [{ debugName: "alt" }] : /* istanbul ignore next */ []);
|
|
9258
|
+
aspect = input("1/1", ...ngDevMode ? [{ debugName: "aspect" }] : /* istanbul ignore next */ []);
|
|
9259
|
+
captionPlacement = input("below", ...ngDevMode ? [{ debugName: "captionPlacement" }] : /* istanbul ignore next */ []);
|
|
9260
|
+
loading = input(false, {
|
|
9261
|
+
...ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {},
|
|
9262
|
+
transform: booleanAttribute
|
|
9263
|
+
});
|
|
9264
|
+
failed = input(false, {
|
|
9265
|
+
...ngDevMode ? { debugName: "failed" } : /* istanbul ignore next */ {},
|
|
9266
|
+
transform: booleanAttribute
|
|
9267
|
+
});
|
|
9268
|
+
selected = input(false, {
|
|
9269
|
+
...ngDevMode ? { debugName: "selected" } : /* istanbul ignore next */ {},
|
|
9270
|
+
transform: booleanAttribute
|
|
9271
|
+
});
|
|
9272
|
+
placeholderLabel = input("", ...ngDevMode ? [{ debugName: "placeholderLabel" }] : /* istanbul ignore next */ []);
|
|
9273
|
+
failedLabel = input("", ...ngDevMode ? [{ debugName: "failedLabel" }] : /* istanbul ignore next */ []);
|
|
9274
|
+
loaded = output();
|
|
9275
|
+
errored = output();
|
|
9276
|
+
actions = signal(0, ...ngDevMode ? [{ debugName: "actions" }] : /* istanbul ignore next */ []);
|
|
9277
|
+
actionFocusVisible = signal(false, ...ngDevMode ? [{ debugName: "actionFocusVisible" }] : /* istanbul ignore next */ []);
|
|
9278
|
+
image = imageLoadState(this.src, this.loading, this.failed);
|
|
9279
|
+
state = this.image.phase;
|
|
9280
|
+
imageSources = this.image.sources;
|
|
9281
|
+
skeletonShown = this.image.skeletonShown;
|
|
9282
|
+
skeletonLayerClasses = SKELETON_LAYER;
|
|
9283
|
+
titleClasses = TITLE$1;
|
|
9284
|
+
metaClasses = META;
|
|
9285
|
+
hasAction = computed(() => this.actions() > 0, ...ngDevMode ? [{ debugName: "hasAction" }] : /* istanbul ignore next */ []);
|
|
9286
|
+
selectedIdValue;
|
|
9287
|
+
selectedId = computed(() => this.selected() ? this.selectedIdValue ??= uniqueId("bf-image-tile-selected") : null, ...ngDevMode ? [{ debugName: "selectedId" }] : /* istanbul ignore next */ []);
|
|
9288
|
+
actionLabelPrefix = computed(() => this.hasAction() ? this.selectedId() : null, ...ngDevMode ? [{ debugName: "actionLabelPrefix" }] : /* istanbul ignore next */ []);
|
|
9289
|
+
placeholderText = computed(() => this.placeholderLabel() || this.labels.imageTileEmpty, ...ngDevMode ? [{ debugName: "placeholderText" }] : /* istanbul ignore next */ []);
|
|
9290
|
+
failedText = computed(() => this.failedLabel() || this.labels.imageLoadFailed, ...ngDevMode ? [{ debugName: "failedText" }] : /* istanbul ignore next */ []);
|
|
9291
|
+
cue = computed(() => {
|
|
9292
|
+
if (!this.hasAction()) return "none";
|
|
9293
|
+
return this.actionFocusVisible() ? "focused" : "action";
|
|
9294
|
+
}, ...ngDevMode ? [{ debugName: "cue" }] : /* istanbul ignore next */ []);
|
|
9295
|
+
classes = computed(() => [
|
|
9296
|
+
BASE$5,
|
|
9297
|
+
LAYOUT$1[this.captionPlacement()],
|
|
9298
|
+
SELECTED[this.selected() ? "on" : "off"],
|
|
9299
|
+
CUE[this.cue()]
|
|
9300
|
+
].filter(Boolean).join(" "), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
|
|
9301
|
+
mediaClasses = computed(() => `${MEDIA} ${MEDIA_CORNERS[this.captionPlacement()]} ${ASPECT[this.aspect()]}`, ...ngDevMode ? [{ debugName: "mediaClasses" }] : /* istanbul ignore next */ []);
|
|
9302
|
+
zoomClasses = computed(() => this.hasAction() ? `${ZOOM_BASE} ${ZOOM_ACTION}` : ZOOM_BASE, ...ngDevMode ? [{ debugName: "zoomClasses" }] : /* istanbul ignore next */ []);
|
|
9303
|
+
statusClasses = computed(() => ["absolute inset-x-0 top-0 flex flex-col items-center justify-center gap-2 p-3 text-center", this.captionPlacement() === "overlay" ? "bottom-1/3" : "bottom-0"].join(" "), ...ngDevMode ? [{ debugName: "statusClasses" }] : /* istanbul ignore next */ []);
|
|
9304
|
+
captionClasses = computed(() => CAPTION[this.captionPlacement()], ...ngDevMode ? [{ debugName: "captionClasses" }] : /* istanbul ignore next */ []);
|
|
9305
|
+
registerAction() {
|
|
9306
|
+
this.actions.update((n) => n + 1);
|
|
9307
|
+
return () => this.actions.update((n) => n - 1);
|
|
9308
|
+
}
|
|
9309
|
+
setActionFocusVisible(visible) {
|
|
9310
|
+
this.actionFocusVisible.set(visible);
|
|
9311
|
+
}
|
|
9312
|
+
imageLoaded() {
|
|
9313
|
+
this.image.loaded();
|
|
9314
|
+
this.loaded.emit();
|
|
9315
|
+
}
|
|
9316
|
+
imageFailed() {
|
|
9317
|
+
this.image.errored();
|
|
9318
|
+
this.errored.emit();
|
|
9319
|
+
}
|
|
9320
|
+
skeletonFaded(event) {
|
|
9321
|
+
this.image.skeletonFaded(event);
|
|
9322
|
+
}
|
|
9323
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
9324
|
+
minVersion: "12.0.0",
|
|
9325
|
+
version: "22.1.7",
|
|
9326
|
+
ngImport: i0,
|
|
9327
|
+
type: BfImageTileComponent,
|
|
9328
|
+
deps: [],
|
|
9329
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
9330
|
+
});
|
|
9331
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
9332
|
+
minVersion: "17.0.0",
|
|
9333
|
+
version: "22.1.7",
|
|
9334
|
+
type: BfImageTileComponent,
|
|
9335
|
+
isStandalone: true,
|
|
9336
|
+
selector: "bf-image-tile",
|
|
9337
|
+
inputs: {
|
|
9338
|
+
src: {
|
|
9339
|
+
classPropertyName: "src",
|
|
9340
|
+
publicName: "src",
|
|
9341
|
+
isSignal: true,
|
|
9342
|
+
isRequired: false,
|
|
9343
|
+
transformFunction: null
|
|
9344
|
+
},
|
|
9345
|
+
alt: {
|
|
9346
|
+
classPropertyName: "alt",
|
|
9347
|
+
publicName: "alt",
|
|
9348
|
+
isSignal: true,
|
|
9349
|
+
isRequired: false,
|
|
9350
|
+
transformFunction: null
|
|
9351
|
+
},
|
|
9352
|
+
aspect: {
|
|
9353
|
+
classPropertyName: "aspect",
|
|
9354
|
+
publicName: "aspect",
|
|
9355
|
+
isSignal: true,
|
|
9356
|
+
isRequired: false,
|
|
9357
|
+
transformFunction: null
|
|
9358
|
+
},
|
|
9359
|
+
captionPlacement: {
|
|
9360
|
+
classPropertyName: "captionPlacement",
|
|
9361
|
+
publicName: "captionPlacement",
|
|
9362
|
+
isSignal: true,
|
|
9363
|
+
isRequired: false,
|
|
9364
|
+
transformFunction: null
|
|
9365
|
+
},
|
|
9366
|
+
loading: {
|
|
9367
|
+
classPropertyName: "loading",
|
|
9368
|
+
publicName: "loading",
|
|
9369
|
+
isSignal: true,
|
|
9370
|
+
isRequired: false,
|
|
9371
|
+
transformFunction: null
|
|
9372
|
+
},
|
|
9373
|
+
failed: {
|
|
9374
|
+
classPropertyName: "failed",
|
|
9375
|
+
publicName: "failed",
|
|
9376
|
+
isSignal: true,
|
|
9377
|
+
isRequired: false,
|
|
9378
|
+
transformFunction: null
|
|
9379
|
+
},
|
|
9380
|
+
selected: {
|
|
9381
|
+
classPropertyName: "selected",
|
|
9382
|
+
publicName: "selected",
|
|
9383
|
+
isSignal: true,
|
|
9384
|
+
isRequired: false,
|
|
9385
|
+
transformFunction: null
|
|
9386
|
+
},
|
|
9387
|
+
placeholderLabel: {
|
|
9388
|
+
classPropertyName: "placeholderLabel",
|
|
9389
|
+
publicName: "placeholderLabel",
|
|
9390
|
+
isSignal: true,
|
|
9391
|
+
isRequired: false,
|
|
9392
|
+
transformFunction: null
|
|
9393
|
+
},
|
|
9394
|
+
failedLabel: {
|
|
9395
|
+
classPropertyName: "failedLabel",
|
|
9396
|
+
publicName: "failedLabel",
|
|
9397
|
+
isSignal: true,
|
|
9398
|
+
isRequired: false,
|
|
9399
|
+
transformFunction: null
|
|
9400
|
+
}
|
|
9401
|
+
},
|
|
9402
|
+
outputs: {
|
|
9403
|
+
loaded: "loaded",
|
|
9404
|
+
errored: "errored"
|
|
9405
|
+
},
|
|
9406
|
+
host: { classAttribute: "block" },
|
|
9407
|
+
providers: [{
|
|
9408
|
+
provide: BF_ACTION_HOST,
|
|
9409
|
+
useExisting: BfImageTileComponent
|
|
9410
|
+
}],
|
|
9411
|
+
ngImport: i0,
|
|
9412
|
+
template: `
|
|
9413
|
+
<div
|
|
9414
|
+
[class]="classes()"
|
|
9415
|
+
[attr.data-placement]="captionPlacement()"
|
|
9416
|
+
[attr.data-selected]="selected() ? '' : null"
|
|
9417
|
+
>
|
|
9418
|
+
<div
|
|
9419
|
+
data-media
|
|
9420
|
+
[class]="mediaClasses()"
|
|
9421
|
+
[attr.data-state]="state()"
|
|
9422
|
+
[attr.aria-busy]="state() === 'loading' ? 'true' : null"
|
|
9423
|
+
>
|
|
9424
|
+
<div data-zoom [class]="zoomClasses()">
|
|
9425
|
+
@if (skeletonShown()) {
|
|
9426
|
+
<div
|
|
9427
|
+
data-skeleton
|
|
9428
|
+
[class]="skeletonLayerClasses"
|
|
9429
|
+
[class.opacity-0]="state() === 'loaded'"
|
|
9430
|
+
(transitionend)="skeletonFaded($event)"
|
|
9431
|
+
>
|
|
9432
|
+
<bf-skeleton shape="rect" height="100%" />
|
|
9433
|
+
@if (state() === 'loading') {
|
|
9434
|
+
<span class="sr-only">{{ labels.loading }}</span>
|
|
9435
|
+
}
|
|
9436
|
+
</div>
|
|
9437
|
+
}
|
|
9438
|
+
@for (url of imageSources(); track url) {
|
|
9439
|
+
<img
|
|
9440
|
+
bfFadeIn
|
|
9441
|
+
class="absolute inset-0 size-full object-cover"
|
|
9442
|
+
[src]="url"
|
|
9443
|
+
[alt]="alt()"
|
|
9444
|
+
(load)="imageLoaded()"
|
|
9445
|
+
(error)="imageFailed()"
|
|
9446
|
+
/>
|
|
9447
|
+
}
|
|
9448
|
+
</div>
|
|
9449
|
+
@if (state() === 'empty') {
|
|
9450
|
+
<div data-placeholder [class]="statusClasses()">
|
|
9451
|
+
<span class="text-text-muted inline-flex empty:hidden [&_svg]:size-6"
|
|
9452
|
+
><ng-content select="[bfSlot=placeholder-icon]"
|
|
9453
|
+
/></span>
|
|
9454
|
+
<p class="text-caption text-text-muted">{{ placeholderText() }}</p>
|
|
9455
|
+
</div>
|
|
9456
|
+
}
|
|
9457
|
+
@if (state() === 'failed') {
|
|
9458
|
+
<div data-failed [class]="statusClasses()">
|
|
9459
|
+
<p class="text-caption text-text-muted">{{ failedText() }}</p>
|
|
9460
|
+
</div>
|
|
9461
|
+
}
|
|
9462
|
+
<div data-badge class="absolute start-2 top-2 flex empty:hidden">
|
|
9463
|
+
<ng-content select="[bfSlot=badge]" />
|
|
9464
|
+
</div>
|
|
9465
|
+
</div>
|
|
9466
|
+
<div data-caption [class]="captionClasses()">
|
|
9467
|
+
@if (selectedId(); as id) {
|
|
9468
|
+
<!-- Read before the title; with a bfAction the link's name takes it (aria-labelledby),
|
|
9469
|
+
so the text itself is hidden from the tree to be read once. -->
|
|
9470
|
+
<span [id]="id" class="sr-only" [attr.aria-hidden]="hasAction() ? 'true' : null"
|
|
9471
|
+
>{{ labels.imageTileSelected }},
|
|
9472
|
+
</span>
|
|
9473
|
+
}
|
|
9474
|
+
<div data-title [class]="titleClasses"><ng-content /></div>
|
|
9475
|
+
<div data-meta [class]="metaClasses"><ng-content select="[bfSlot=meta]" /></div>
|
|
9476
|
+
</div>
|
|
9477
|
+
</div>
|
|
9478
|
+
`,
|
|
9479
|
+
isInline: true,
|
|
9480
|
+
dependencies: [{
|
|
9481
|
+
kind: "directive",
|
|
9482
|
+
type: BfFadeInDirective,
|
|
9483
|
+
selector: "img[bfFadeIn]"
|
|
9484
|
+
}, {
|
|
9485
|
+
kind: "component",
|
|
9486
|
+
type: BfSkeletonComponent,
|
|
9487
|
+
selector: "bf-skeleton",
|
|
9488
|
+
inputs: [
|
|
9489
|
+
"shape",
|
|
9490
|
+
"lines",
|
|
9491
|
+
"width",
|
|
9492
|
+
"height"
|
|
9493
|
+
]
|
|
9494
|
+
}]
|
|
9495
|
+
});
|
|
9496
|
+
};
|
|
9497
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
9498
|
+
minVersion: "12.0.0",
|
|
9499
|
+
version: "22.1.7",
|
|
9500
|
+
ngImport: i0,
|
|
9501
|
+
type: BfImageTileComponent,
|
|
9502
|
+
decorators: [{
|
|
9503
|
+
type: Component,
|
|
9504
|
+
args: [{
|
|
9505
|
+
selector: "bf-image-tile",
|
|
9506
|
+
imports: [BfFadeInDirective, BfSkeletonComponent],
|
|
9507
|
+
host: { class: "block" },
|
|
9508
|
+
providers: [{
|
|
9509
|
+
provide: BF_ACTION_HOST,
|
|
9510
|
+
useExisting: BfImageTileComponent
|
|
9511
|
+
}],
|
|
9512
|
+
template: `
|
|
9513
|
+
<div
|
|
9514
|
+
[class]="classes()"
|
|
9515
|
+
[attr.data-placement]="captionPlacement()"
|
|
9516
|
+
[attr.data-selected]="selected() ? '' : null"
|
|
9517
|
+
>
|
|
9518
|
+
<div
|
|
9519
|
+
data-media
|
|
9520
|
+
[class]="mediaClasses()"
|
|
9521
|
+
[attr.data-state]="state()"
|
|
9522
|
+
[attr.aria-busy]="state() === 'loading' ? 'true' : null"
|
|
9523
|
+
>
|
|
9524
|
+
<div data-zoom [class]="zoomClasses()">
|
|
9525
|
+
@if (skeletonShown()) {
|
|
9526
|
+
<div
|
|
9527
|
+
data-skeleton
|
|
9528
|
+
[class]="skeletonLayerClasses"
|
|
9529
|
+
[class.opacity-0]="state() === 'loaded'"
|
|
9530
|
+
(transitionend)="skeletonFaded($event)"
|
|
9531
|
+
>
|
|
9532
|
+
<bf-skeleton shape="rect" height="100%" />
|
|
9533
|
+
@if (state() === 'loading') {
|
|
9534
|
+
<span class="sr-only">{{ labels.loading }}</span>
|
|
9535
|
+
}
|
|
9536
|
+
</div>
|
|
9537
|
+
}
|
|
9538
|
+
@for (url of imageSources(); track url) {
|
|
9539
|
+
<img
|
|
9540
|
+
bfFadeIn
|
|
9541
|
+
class="absolute inset-0 size-full object-cover"
|
|
9542
|
+
[src]="url"
|
|
9543
|
+
[alt]="alt()"
|
|
9544
|
+
(load)="imageLoaded()"
|
|
9545
|
+
(error)="imageFailed()"
|
|
9546
|
+
/>
|
|
9547
|
+
}
|
|
9548
|
+
</div>
|
|
9549
|
+
@if (state() === 'empty') {
|
|
9550
|
+
<div data-placeholder [class]="statusClasses()">
|
|
9551
|
+
<span class="text-text-muted inline-flex empty:hidden [&_svg]:size-6"
|
|
9552
|
+
><ng-content select="[bfSlot=placeholder-icon]"
|
|
9553
|
+
/></span>
|
|
9554
|
+
<p class="text-caption text-text-muted">{{ placeholderText() }}</p>
|
|
9555
|
+
</div>
|
|
9556
|
+
}
|
|
9557
|
+
@if (state() === 'failed') {
|
|
9558
|
+
<div data-failed [class]="statusClasses()">
|
|
9559
|
+
<p class="text-caption text-text-muted">{{ failedText() }}</p>
|
|
9560
|
+
</div>
|
|
9561
|
+
}
|
|
9562
|
+
<div data-badge class="absolute start-2 top-2 flex empty:hidden">
|
|
9563
|
+
<ng-content select="[bfSlot=badge]" />
|
|
9564
|
+
</div>
|
|
9565
|
+
</div>
|
|
9566
|
+
<div data-caption [class]="captionClasses()">
|
|
9567
|
+
@if (selectedId(); as id) {
|
|
9568
|
+
<!-- Read before the title; with a bfAction the link's name takes it (aria-labelledby),
|
|
9569
|
+
so the text itself is hidden from the tree to be read once. -->
|
|
9570
|
+
<span [id]="id" class="sr-only" [attr.aria-hidden]="hasAction() ? 'true' : null"
|
|
9571
|
+
>{{ labels.imageTileSelected }},
|
|
9572
|
+
</span>
|
|
9573
|
+
}
|
|
9574
|
+
<div data-title [class]="titleClasses"><ng-content /></div>
|
|
9575
|
+
<div data-meta [class]="metaClasses"><ng-content select="[bfSlot=meta]" /></div>
|
|
9576
|
+
</div>
|
|
9577
|
+
</div>
|
|
9578
|
+
`
|
|
9579
|
+
}]
|
|
9580
|
+
}],
|
|
9581
|
+
propDecorators: {
|
|
9582
|
+
src: [{
|
|
9583
|
+
type: i0.Input,
|
|
9584
|
+
args: [{
|
|
9585
|
+
isSignal: true,
|
|
9586
|
+
alias: "src",
|
|
9587
|
+
required: false
|
|
9588
|
+
}]
|
|
9589
|
+
}],
|
|
9590
|
+
alt: [{
|
|
9591
|
+
type: i0.Input,
|
|
9592
|
+
args: [{
|
|
9593
|
+
isSignal: true,
|
|
9594
|
+
alias: "alt",
|
|
9595
|
+
required: false
|
|
9596
|
+
}]
|
|
9597
|
+
}],
|
|
9598
|
+
aspect: [{
|
|
9599
|
+
type: i0.Input,
|
|
9600
|
+
args: [{
|
|
9601
|
+
isSignal: true,
|
|
9602
|
+
alias: "aspect",
|
|
9603
|
+
required: false
|
|
9604
|
+
}]
|
|
9605
|
+
}],
|
|
9606
|
+
captionPlacement: [{
|
|
9607
|
+
type: i0.Input,
|
|
9608
|
+
args: [{
|
|
9609
|
+
isSignal: true,
|
|
9610
|
+
alias: "captionPlacement",
|
|
9611
|
+
required: false
|
|
9612
|
+
}]
|
|
9613
|
+
}],
|
|
9614
|
+
loading: [{
|
|
9615
|
+
type: i0.Input,
|
|
9616
|
+
args: [{
|
|
9617
|
+
isSignal: true,
|
|
9618
|
+
alias: "loading",
|
|
9619
|
+
required: false
|
|
9620
|
+
}]
|
|
9621
|
+
}],
|
|
9622
|
+
failed: [{
|
|
9623
|
+
type: i0.Input,
|
|
9624
|
+
args: [{
|
|
9625
|
+
isSignal: true,
|
|
9626
|
+
alias: "failed",
|
|
9627
|
+
required: false
|
|
9628
|
+
}]
|
|
9629
|
+
}],
|
|
9630
|
+
selected: [{
|
|
9631
|
+
type: i0.Input,
|
|
9632
|
+
args: [{
|
|
9633
|
+
isSignal: true,
|
|
9634
|
+
alias: "selected",
|
|
9635
|
+
required: false
|
|
9636
|
+
}]
|
|
9637
|
+
}],
|
|
9638
|
+
placeholderLabel: [{
|
|
9639
|
+
type: i0.Input,
|
|
9640
|
+
args: [{
|
|
9641
|
+
isSignal: true,
|
|
9642
|
+
alias: "placeholderLabel",
|
|
9643
|
+
required: false
|
|
9644
|
+
}]
|
|
9645
|
+
}],
|
|
9646
|
+
failedLabel: [{
|
|
9647
|
+
type: i0.Input,
|
|
9648
|
+
args: [{
|
|
9649
|
+
isSignal: true,
|
|
9650
|
+
alias: "failedLabel",
|
|
9651
|
+
required: false
|
|
9652
|
+
}]
|
|
9653
|
+
}],
|
|
9654
|
+
loaded: [{
|
|
9655
|
+
type: i0.Output,
|
|
9656
|
+
args: ["loaded"]
|
|
9657
|
+
}],
|
|
9658
|
+
errored: [{
|
|
9659
|
+
type: i0.Output,
|
|
9660
|
+
args: ["errored"]
|
|
9661
|
+
}]
|
|
9662
|
+
}
|
|
9663
|
+
});
|
|
9194
9664
|
const TRACK = "[grid-area:1/1] block w-full appearance-none overflow-hidden rounded-full bg-surface-sunken [&::-webkit-progress-bar]:bg-surface-sunken [&::-webkit-progress-bar]:rounded-full [&::-webkit-progress-value]:rounded-full [&::-webkit-progress-value]:transition-[width] motion-reduce:[&::-webkit-progress-value]:transition-none [&::-moz-progress-bar]:rounded-full indeterminate:[&::-moz-progress-bar]:bg-transparent";
|
|
9195
9665
|
const SIZE$1 = {
|
|
9196
9666
|
sm: "h-2",
|
|
@@ -14990,12 +15460,18 @@ var BfPaginationComponent = class BfPaginationComponent {
|
|
|
14990
15460
|
...ngDevMode ? { debugName: "compact" } : /* istanbul ignore next */ {},
|
|
14991
15461
|
transform: booleanAttribute
|
|
14992
15462
|
});
|
|
15463
|
+
positionLabel = input(void 0, ...ngDevMode ? [{ debugName: "positionLabel" }] : /* istanbul ignore next */ []);
|
|
15464
|
+
previousLabel = input("", ...ngDevMode ? [{ debugName: "previousLabel" }] : /* istanbul ignore next */ []);
|
|
15465
|
+
nextLabel = input("", ...ngDevMode ? [{ debugName: "nextLabel" }] : /* istanbul ignore next */ []);
|
|
14993
15466
|
size = input(void 0, ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
|
|
14994
15467
|
label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
|
|
14995
15468
|
labels = inject(BF_LABELS);
|
|
14996
15469
|
defaults = inject(BF_DEFAULTS);
|
|
14997
15470
|
resolvedSize = computed(() => this.size() ?? this.defaults.controlSize, ...ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []);
|
|
14998
15471
|
name = computed(() => this.label() || this.labels.pagination, ...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
|
|
15472
|
+
previousName = computed(() => this.previousLabel() || this.labels.previousPage, ...ngDevMode ? [{ debugName: "previousName" }] : /* istanbul ignore next */ []);
|
|
15473
|
+
nextName = computed(() => this.nextLabel() || this.labels.nextPage, ...ngDevMode ? [{ debugName: "nextName" }] : /* istanbul ignore next */ []);
|
|
15474
|
+
position = computed(() => (this.positionLabel() ?? this.labels.pageOf)(this.current(), this.count()), ...ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []);
|
|
14999
15475
|
count = computed(() => {
|
|
15000
15476
|
const pageCount = Math.floor(this.pageCount());
|
|
15001
15477
|
if (pageCount > 0) return pageCount;
|
|
@@ -15083,6 +15559,27 @@ var BfPaginationComponent = class BfPaginationComponent {
|
|
|
15083
15559
|
isRequired: false,
|
|
15084
15560
|
transformFunction: null
|
|
15085
15561
|
},
|
|
15562
|
+
positionLabel: {
|
|
15563
|
+
classPropertyName: "positionLabel",
|
|
15564
|
+
publicName: "positionLabel",
|
|
15565
|
+
isSignal: true,
|
|
15566
|
+
isRequired: false,
|
|
15567
|
+
transformFunction: null
|
|
15568
|
+
},
|
|
15569
|
+
previousLabel: {
|
|
15570
|
+
classPropertyName: "previousLabel",
|
|
15571
|
+
publicName: "previousLabel",
|
|
15572
|
+
isSignal: true,
|
|
15573
|
+
isRequired: false,
|
|
15574
|
+
transformFunction: null
|
|
15575
|
+
},
|
|
15576
|
+
nextLabel: {
|
|
15577
|
+
classPropertyName: "nextLabel",
|
|
15578
|
+
publicName: "nextLabel",
|
|
15579
|
+
isSignal: true,
|
|
15580
|
+
isRequired: false,
|
|
15581
|
+
transformFunction: null
|
|
15582
|
+
},
|
|
15086
15583
|
size: {
|
|
15087
15584
|
classPropertyName: "size",
|
|
15088
15585
|
publicName: "size",
|
|
@@ -15112,7 +15609,7 @@ var BfPaginationComponent = class BfPaginationComponent {
|
|
|
15112
15609
|
<button
|
|
15113
15610
|
type="button"
|
|
15114
15611
|
data-bf-pagination-previous
|
|
15115
|
-
[attr.aria-label]="
|
|
15612
|
+
[attr.aria-label]="previousName()"
|
|
15116
15613
|
[attr.aria-disabled]="current() <= 1 ? 'true' : null"
|
|
15117
15614
|
[class]="arrowClasses(current() <= 1)"
|
|
15118
15615
|
(click)="go(current() - 1)"
|
|
@@ -15122,7 +15619,7 @@ var BfPaginationComponent = class BfPaginationComponent {
|
|
|
15122
15619
|
</li>
|
|
15123
15620
|
@if (compact()) {
|
|
15124
15621
|
<li [class]="statusClasses()">
|
|
15125
|
-
<span aria-live="polite">{{
|
|
15622
|
+
<span aria-live="polite">{{ position() }}</span>
|
|
15126
15623
|
</li>
|
|
15127
15624
|
} @else {
|
|
15128
15625
|
@for (item of items(); track item) {
|
|
@@ -15148,7 +15645,7 @@ var BfPaginationComponent = class BfPaginationComponent {
|
|
|
15148
15645
|
<button
|
|
15149
15646
|
type="button"
|
|
15150
15647
|
data-bf-pagination-next
|
|
15151
|
-
[attr.aria-label]="
|
|
15648
|
+
[attr.aria-label]="nextName()"
|
|
15152
15649
|
[attr.aria-disabled]="current() >= count() ? 'true' : null"
|
|
15153
15650
|
[class]="arrowClasses(current() >= count())"
|
|
15154
15651
|
(click)="go(current() + 1)"
|
|
@@ -15183,7 +15680,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
15183
15680
|
<button
|
|
15184
15681
|
type="button"
|
|
15185
15682
|
data-bf-pagination-previous
|
|
15186
|
-
[attr.aria-label]="
|
|
15683
|
+
[attr.aria-label]="previousName()"
|
|
15187
15684
|
[attr.aria-disabled]="current() <= 1 ? 'true' : null"
|
|
15188
15685
|
[class]="arrowClasses(current() <= 1)"
|
|
15189
15686
|
(click)="go(current() - 1)"
|
|
@@ -15193,7 +15690,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
15193
15690
|
</li>
|
|
15194
15691
|
@if (compact()) {
|
|
15195
15692
|
<li [class]="statusClasses()">
|
|
15196
|
-
<span aria-live="polite">{{
|
|
15693
|
+
<span aria-live="polite">{{ position() }}</span>
|
|
15197
15694
|
</li>
|
|
15198
15695
|
} @else {
|
|
15199
15696
|
@for (item of items(); track item) {
|
|
@@ -15219,7 +15716,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
15219
15716
|
<button
|
|
15220
15717
|
type="button"
|
|
15221
15718
|
data-bf-pagination-next
|
|
15222
|
-
[attr.aria-label]="
|
|
15719
|
+
[attr.aria-label]="nextName()"
|
|
15223
15720
|
[attr.aria-disabled]="current() >= count() ? 'true' : null"
|
|
15224
15721
|
[class]="arrowClasses(current() >= count())"
|
|
15225
15722
|
(click)="go(current() + 1)"
|
|
@@ -15284,6 +15781,30 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
15284
15781
|
required: false
|
|
15285
15782
|
}]
|
|
15286
15783
|
}],
|
|
15784
|
+
positionLabel: [{
|
|
15785
|
+
type: i0.Input,
|
|
15786
|
+
args: [{
|
|
15787
|
+
isSignal: true,
|
|
15788
|
+
alias: "positionLabel",
|
|
15789
|
+
required: false
|
|
15790
|
+
}]
|
|
15791
|
+
}],
|
|
15792
|
+
previousLabel: [{
|
|
15793
|
+
type: i0.Input,
|
|
15794
|
+
args: [{
|
|
15795
|
+
isSignal: true,
|
|
15796
|
+
alias: "previousLabel",
|
|
15797
|
+
required: false
|
|
15798
|
+
}]
|
|
15799
|
+
}],
|
|
15800
|
+
nextLabel: [{
|
|
15801
|
+
type: i0.Input,
|
|
15802
|
+
args: [{
|
|
15803
|
+
isSignal: true,
|
|
15804
|
+
alias: "nextLabel",
|
|
15805
|
+
required: false
|
|
15806
|
+
}]
|
|
15807
|
+
}],
|
|
15287
15808
|
size: [{
|
|
15288
15809
|
type: i0.Input,
|
|
15289
15810
|
args: [{
|
|
@@ -17541,6 +18062,6 @@ function provideBfDocumentReset() {
|
|
|
17541
18062
|
inject(DestroyRef).onDestroy(() => resetBfDocument(document));
|
|
17542
18063
|
});
|
|
17543
18064
|
}
|
|
17544
|
-
export { BF_COLOR_SCHEME_STORAGE, BF_DEFAULTS, BF_DEFAULT_LABELS, BF_DEFAULT_VALUES, BF_LABELS, BF_SIDEBAR_STATE_STORAGE, BF_TABLE_SORT_SELECT, BF_TAB_BAR, BF_TAB_BAR_CONTROLLER, BF_TAB_LINKS, BfActionBarComponent, BfActionDirective, BfAlertComponent, BfAppFrameComponent, BfAvatarComponent, BfBadgeComponent, BfBreadcrumbComponent, BfBreadcrumbItemComponent, BfButtonComponent, BfCalendarComponent, BfCardComponent, BfChatMessageComponent, BfChatThreadComponent, BfCheckboxComponent, BfChipComponent, BfChipGroupComponent, BfColorSchemeService, BfDescriptionItemComponent, BfDescriptionListComponent, BfEmptyStateComponent, BfFadeInDirective, BfFieldComponent, BfFileInputComponent, BfIconButtonComponent, BfImageInputComponent, BfInputComponent, BfListComponent, BfListItemComponent, BfMediaCardComponent, BfMotionListDirective, BfNavGroupComponent, BfNavItemComponent, BfPageHeaderComponent, BfPaginationComponent, BfProgressComponent, BfProseDirective, BfRadioGroupComponent, BfSegmentedComponent, BfSidebarComponent, BfSidebarStateService, BfSkeletonComponent, BfSpinnerComponent, BfStatComponent, BfStepComponent, BfStepsComponent, BfTabBarComponent, BfTabComponent, BfTabGroupComponent, BfTabPanelComponent, BfTableCellDirective, BfTableComponent, BfTextareaComponent, BfThemeSwitchComponent, BfTimelineComponent, BfTimelineEventComponent, BfToggleComponent, BfToolbarComponent, BfTopNavComponent, bfFieldControlClass, bfValidationMessage, provideBfColorScheme, provideBfDefaults, provideBfLabels, provideBfSidebarState, BUTTON_CLASSES as ɵBF_BUTTON_CLASSES, ICON_BUTTON_CLASSES as ɵBF_ICON_BUTTON_CLASSES, BF_NAV as ɵBF_NAV, BfNativeSelectComponent as ɵBfNativeSelectComponent, FIELD_BOX as ɵFIELD_BOX, FIELD_ICON_END as ɵFIELD_ICON_END, FIELD_ICON_START as ɵFIELD_ICON_START, FIELD_PADDING_END as ɵFIELD_PADDING_END, FIELD_PADDING_START as ɵFIELD_PADDING_START, PILL_HIT as ɵPILL_HIT, choiceIndex as ɵchoiceIndex, choiceKey as ɵchoiceKey, compareIso as ɵcompareIso, createMemoryColorSchemeStorage as ɵcreateMemoryColorSchemeStorage, daysInMonth as ɵdaysInMonth, fieldDescribedBy as ɵfieldDescribedBy, fieldErrorMessageId as ɵfieldErrorMessageId, fieldErrorText as ɵfieldErrorText, fieldShowsError as ɵfieldShowsError, formatIsoDate as ɵformatIsoDate, localIsoDate as ɵlocalIsoDate, parseIsoDate as ɵparseIsoDate, provideBfDocumentReset as ɵprovideBfDocumentReset, uniqueId as ɵuniqueId, validIsoDate as ɵvalidIsoDate };
|
|
18065
|
+
export { BF_COLOR_SCHEME_STORAGE, BF_DEFAULTS, BF_DEFAULT_LABELS, BF_DEFAULT_VALUES, BF_LABELS, BF_SIDEBAR_STATE_STORAGE, BF_TABLE_SORT_SELECT, BF_TAB_BAR, BF_TAB_BAR_CONTROLLER, BF_TAB_LINKS, BfActionBarComponent, BfActionDirective, BfAlertComponent, BfAppFrameComponent, BfAvatarComponent, BfBadgeComponent, BfBreadcrumbComponent, BfBreadcrumbItemComponent, BfButtonComponent, BfCalendarComponent, BfCardComponent, BfChatMessageComponent, BfChatThreadComponent, BfCheckboxComponent, BfChipComponent, BfChipGroupComponent, BfColorSchemeService, BfDescriptionItemComponent, BfDescriptionListComponent, BfEmptyStateComponent, BfFadeInDirective, BfFieldComponent, BfFileInputComponent, BfIconButtonComponent, BfImageInputComponent, BfImageTileComponent, BfInputComponent, BfListComponent, BfListItemComponent, BfMediaCardComponent, BfMotionListDirective, BfNavGroupComponent, BfNavItemComponent, BfPageHeaderComponent, BfPaginationComponent, BfProgressComponent, BfProseDirective, BfRadioGroupComponent, BfSegmentedComponent, BfSidebarComponent, BfSidebarStateService, BfSkeletonComponent, BfSpinnerComponent, BfStatComponent, BfStepComponent, BfStepsComponent, BfTabBarComponent, BfTabComponent, BfTabGroupComponent, BfTabPanelComponent, BfTableCellDirective, BfTableComponent, BfTextareaComponent, BfThemeSwitchComponent, BfTimelineComponent, BfTimelineEventComponent, BfToggleComponent, BfToolbarComponent, BfTopNavComponent, bfFieldControlClass, bfValidationMessage, provideBfColorScheme, provideBfDefaults, provideBfLabels, provideBfSidebarState, BUTTON_CLASSES as ɵBF_BUTTON_CLASSES, ICON_BUTTON_CLASSES as ɵBF_ICON_BUTTON_CLASSES, BF_NAV as ɵBF_NAV, BfNativeSelectComponent as ɵBfNativeSelectComponent, FIELD_BOX as ɵFIELD_BOX, FIELD_ICON_END as ɵFIELD_ICON_END, FIELD_ICON_START as ɵFIELD_ICON_START, FIELD_PADDING_END as ɵFIELD_PADDING_END, FIELD_PADDING_START as ɵFIELD_PADDING_START, PILL_HIT as ɵPILL_HIT, choiceIndex as ɵchoiceIndex, choiceKey as ɵchoiceKey, compareIso as ɵcompareIso, createMemoryColorSchemeStorage as ɵcreateMemoryColorSchemeStorage, daysInMonth as ɵdaysInMonth, fieldDescribedBy as ɵfieldDescribedBy, fieldErrorMessageId as ɵfieldErrorMessageId, fieldErrorText as ɵfieldErrorText, fieldShowsError as ɵfieldShowsError, formatIsoDate as ɵformatIsoDate, localIsoDate as ɵlocalIsoDate, parseIsoDate as ɵparseIsoDate, provideBfDocumentReset as ɵprovideBfDocumentReset, uniqueId as ɵuniqueId, validIsoDate as ɵvalidIsoDate };
|
|
17545
18066
|
|
|
17546
18067
|
//# sourceMappingURL=bitforgehq-ui.mjs.map
|