@underlayerdev/ui 0.7.5 → 0.8.1
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.
|
@@ -2,16 +2,17 @@ import * as i1 from '@angular/cdk/accordion';
|
|
|
2
2
|
import { CdkAccordionItem, CdkAccordion } from '@angular/cdk/accordion';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { inject, ElementRef, Component, input, DestroyRef, contentChildren, computed, ViewEncapsulation, signal, effect, Directive, output, model, booleanAttribute, viewChild, ViewChild, contentChild, HostListener, Pipe, SecurityContext, Injectable, HostBinding } from '@angular/core';
|
|
5
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
6
6
|
import * as i1$1 from '@angular/common';
|
|
7
7
|
import { CommonModule, NgTemplateOutlet, CurrencyPipe } from '@angular/common';
|
|
8
8
|
import { RouterLink } from '@angular/router';
|
|
9
9
|
import { CdkMenuTrigger, CdkMenu, CdkMenuItem } from '@angular/cdk/menu';
|
|
10
10
|
import Splide from '@splidejs/splide';
|
|
11
|
-
import { fromEvent } from 'rxjs';
|
|
11
|
+
import { fromEvent, map } from 'rxjs';
|
|
12
12
|
import { debounceTime } from 'rxjs/operators';
|
|
13
13
|
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
14
14
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
15
|
+
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* AccordionItemComponent is a standalone Angular component that extends CdkAccordionItem.
|
|
@@ -3992,6 +3993,157 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
3992
3993
|
args: [{ selector: 'ul-select', imports: [DropdownComponent, FormFieldLabelComponent, FormFieldHelperComponent], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"ul-select ul-select--{{ size() }}\"\n [class.ul-select--disabled]=\"disabled()\"\n [class.ul-select--error]=\"hasError()\"\n [class.ul-select--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n [showRequiredIndicator]=\"showRequiredIndicator()\"\n />\n\n <div\n class=\"ul-select__control\"\n [id]=\"ids.controlId\"\n [class.ul-select__control--disabled]=\"disabled()\"\n >\n <ul-dropdown\n class=\"ul-select__dropdown\"\n [theme]=\"theme()\"\n [items]=\"items()\"\n [disabled]=\"disabled()\"\n [(selectedIndex)]=\"selectedIndex\"\n (selectedIndexChange)=\"onSelectedIndexChange($event)\"\n (closed)=\"onDropdownClosed()\"\n />\n </div>\n\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n", styles: [".ul-rich-text{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400;color:#fff}.ul-rich-text p,.ul-rich-text ul,.ul-rich-text ol,.ul-rich-text blockquote,.ul-rich-text pre{margin-top:0;margin-bottom:16px}.ul-rich-text:last-child,.ul-rich-text p:last-child,.ul-rich-text ul:last-child,.ul-rich-text ol:last-child,.ul-rich-text blockquote:last-child,.ul-rich-text pre:last-child{margin-bottom:0}.ul-rich-text h1,.ul-rich-text h2,.ul-rich-text h3,.ul-rich-text h4,.ul-rich-text h5,.ul-rich-text h6{margin-top:32px;margin-bottom:12px;font-weight:1000}.ul-rich-text h1{font-family:Ultra Nunito Sans;line-height:48px;font-size:48px;letter-spacing:-.48px;font-weight:1000}.ul-rich-text h2{font-family:Ultra Nunito Sans;line-height:48px;font-size:40px;letter-spacing:-.4px;font-weight:1000}.ul-rich-text h3{font-family:Ultra Nunito Sans;line-height:44px;font-size:36px;letter-spacing:-.36px;font-weight:1000}.ul-rich-text h4{font-family:Ultra Nunito Sans;line-height:40px;font-size:32px;letter-spacing:-.32px;font-weight:1000}.ul-rich-text h5{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-rich-text h6{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-rich-text ul,.ul-rich-text ol{padding-left:24px}.ul-rich-text ul ul,.ul-rich-text ul ol,.ul-rich-text ol ul,.ul-rich-text ol ol{margin-top:8px;margin-bottom:8px}.ul-rich-text li{margin-top:4px;margin-bottom:4px}.ul-rich-text strong{font-weight:800}.ul-rich-text code{font-family:Roboto Mono;line-height:20px;font-size:14px;letter-spacing:0px;font-weight:400}.ul-rich-text em{font-style:italic}.ul-rich-text a{color:#c2a8ff;text-decoration:underline;text-decoration-thickness:1px}.ul-rich-text a:hover{color:#d6c5ff}.ul-rich-text a:active{color:#a781ff}.ul-rich-text pre{padding:16px;border-radius:8px;background-color:#3b3b3b;overflow-x:auto}.ul-rich-text pre code{font-family:Roboto Mono;line-height:20px;font-size:14px;letter-spacing:0px;font-weight:400}.ul-rich-text blockquote{margin-left:0;padding-left:16px;border-left-width:2px;border-left-style:solid;border-left-color:#ffffff1a;color:#ffffffb3}.ul-rich-text--muted{color:#ffffffb3}.ul-rich-text--inverse,.ul-rich-text--inverse a{color:#000}.ul-rich-text--inverse a:hover,.ul-rich-text--inverse a:active{color:#000000b3}.ul-rich-text--body-m{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-rich-text--compact p,.ul-rich-text--compact ul,.ul-rich-text--compact ol,.ul-rich-text--compact blockquote,.ul-rich-text--compact pre{margin-bottom:8px}.ul-rich-text--compact h1,.ul-rich-text--compact h2,.ul-rich-text--compact h3,.ul-rich-text--compact h4,.ul-rich-text--compact h5,.ul-rich-text--compact h6{margin-top:16px;margin-bottom:8px}.ul-select{white-space:nowrap;box-sizing:border-box;display:flex;flex-direction:column;width:100%;gap:4px}.ul-select__control{display:flex;align-items:center;min-height:40px;border:2px solid rgba(255,255,255,.1);border-radius:8px;background-color:transparent;transition:border-color .25s cubic-bezier(.4,0,.2,1)}.ul-select__control:hover{border-color:#ffffff4d}.ul-select__control:focus-within{border-color:#ffffff80}.ul-select__control .ul-list-item:focus-visible,.ul-select__control .ul-list-item:focus{outline:none}.ul-select__control--disabled{opacity:.6;cursor:not-allowed}.ul-select--disabled .ul-select__control{border-color:#ffffff1a}.ul-select--disabled .ul-select__control:hover,.ul-select--disabled .ul-select__control:focus-within{border-color:#ffffff1a}.ul-select--disabled .ul-select__control{opacity:.6;cursor:not-allowed}.ul-select__dropdown{width:100%}\n"] }]
|
|
3993
3994
|
}], ctorParameters: () => [], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], helperText: [{ type: i0.Input, args: [{ isSignal: true, alias: "helperText", required: false }] }], errorText: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorText", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], showRequiredIndicator: [{ type: i0.Input, args: [{ isSignal: true, alias: "showRequiredIndicator", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], selectedIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedIndex", required: false }] }, { type: i0.Output, args: ["selectedIndexChange"] }] } });
|
|
3994
3995
|
|
|
3996
|
+
/**
|
|
3997
|
+
* Makes any row of projected content (thumbnail/media + label content, plus
|
|
3998
|
+
* anything else — a status pill, actions) selectable in a bulk-select list,
|
|
3999
|
+
* without the consumer having to hand-roll device detection or gesture
|
|
4000
|
+
* wiring themselves:
|
|
4001
|
+
*
|
|
4002
|
+
* - Fine-pointer/real-hover devices (desktop): a checkbox is always present
|
|
4003
|
+
* but invisible until the row is hovered, keyboard-focused, or already
|
|
4004
|
+
* checked — Gmail-list style.
|
|
4005
|
+
* - Coarse-pointer/no-hover devices (touch): long-press a row to select it;
|
|
4006
|
+
* every row then swaps its projected `[ul-selectable-row-media]` content
|
|
4007
|
+
* for a large checkbox — there's rarely room for both a thumbnail and an
|
|
4008
|
+
* easy-to-hit checkbox on a small card.
|
|
4009
|
+
*
|
|
4010
|
+
* This component only decides what to *show* and detects the long-press
|
|
4011
|
+
* gesture — it doesn't know about routing, so a consumer whose media/content
|
|
4012
|
+
* slots contain a routerLink-driven anchor still needs to null that binding
|
|
4013
|
+
* out itself while `selectionActive` (see ul-selectable-row's own usage in
|
|
4014
|
+
* undermarket's profile-listings for the pattern).
|
|
4015
|
+
*
|
|
4016
|
+
* @example
|
|
4017
|
+
* ```html
|
|
4018
|
+
* <ul-selectable-row
|
|
4019
|
+
* [selected]="isSelected(item.id)"
|
|
4020
|
+
* [selectionActive]="hasSelection()"
|
|
4021
|
+
* [ariaLabel]="'Select ' + item.title"
|
|
4022
|
+
* (selectedChange)="toggleSelect(item.id, $event)"
|
|
4023
|
+
* (longPress)="onRowLongPress(item.id)"
|
|
4024
|
+
* >
|
|
4025
|
+
* <img ul-selectable-row-media [src]="item.imageUrl" alt="" />
|
|
4026
|
+
* <div ul-selectable-row-content>{{ item.title }}</div>
|
|
4027
|
+
* <ul-pill>{{ item.status }}</ul-pill>
|
|
4028
|
+
* </ul-selectable-row>
|
|
4029
|
+
* ```
|
|
4030
|
+
*/
|
|
4031
|
+
class SelectableRowComponent {
|
|
4032
|
+
/** Whether this row is currently selected. */
|
|
4033
|
+
selected = input(false, /* @ts-ignore */
|
|
4034
|
+
...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
|
|
4035
|
+
/**
|
|
4036
|
+
* Whether the list is in selection mode (something, anywhere, is
|
|
4037
|
+
* selected) — drives the compact-mode media-for-checkbox swap.
|
|
4038
|
+
*/
|
|
4039
|
+
selectionActive = input(false, /* @ts-ignore */
|
|
4040
|
+
...(ngDevMode ? [{ debugName: "selectionActive" }] : /* istanbul ignore next */ []));
|
|
4041
|
+
/** Accessible label for this row's checkbox(es). */
|
|
4042
|
+
ariaLabel = input(null, /* @ts-ignore */
|
|
4043
|
+
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
4044
|
+
selectedChange = output();
|
|
4045
|
+
longPress = output();
|
|
4046
|
+
/**
|
|
4047
|
+
* Same distinction the hover-reveal CSS relies on — a width breakpoint
|
|
4048
|
+
* alone would misclassify a wide tablet in landscape, which has no real
|
|
4049
|
+
* hover, as "desktop".
|
|
4050
|
+
*/
|
|
4051
|
+
hasFinePointer = toSignal(inject(BreakpointObserver)
|
|
4052
|
+
.observe('(hover: hover) and (pointer: fine)')
|
|
4053
|
+
.pipe(map((state) => state.matches)), { initialValue: true });
|
|
4054
|
+
isCompact = computed(() => !this.hasFinePointer(), /* @ts-ignore */
|
|
4055
|
+
...(ngDevMode ? [{ debugName: "isCompact" }] : /* istanbul ignore next */ []));
|
|
4056
|
+
// Set for the click that immediately follows a successful long-press, so
|
|
4057
|
+
// that trailing click doesn't also toggle the row straight back off via
|
|
4058
|
+
// onHostClick below (see the same problem/fix in undermarket's
|
|
4059
|
+
// profile-listings for the version of this before it moved into here).
|
|
4060
|
+
justLongPressed = false;
|
|
4061
|
+
constructor() {
|
|
4062
|
+
inject(LongPressDirective).ulLongPress.subscribe(() => {
|
|
4063
|
+
this.justLongPressed = true;
|
|
4064
|
+
this.longPress.emit();
|
|
4065
|
+
});
|
|
4066
|
+
}
|
|
4067
|
+
/**
|
|
4068
|
+
* While selecting, a tap anywhere in the row toggles it — not just on the
|
|
4069
|
+
* checkbox. This applies on every device, not only once the checkbox has
|
|
4070
|
+
* replaced the media (compact): otherwise the row's content on
|
|
4071
|
+
* fine-pointer devices would only be togglable by precisely hitting the
|
|
4072
|
+
* small hover-revealed checkbox, which is inconsistent with how compact
|
|
4073
|
+
* mode behaves and isn't how Gmail/Photos-style bulk-select works even on
|
|
4074
|
+
* desktop web. It's safe to do unconditionally (regardless of what's
|
|
4075
|
+
* projected) because a consumer whose content contains a routerLink is
|
|
4076
|
+
* already expected to have nulled that binding out while
|
|
4077
|
+
* `selectionActive` — so there's no competing navigation to accidentally
|
|
4078
|
+
* trigger.
|
|
4079
|
+
*/
|
|
4080
|
+
onHostClick(event) {
|
|
4081
|
+
if (this.justLongPressed) {
|
|
4082
|
+
this.justLongPressed = false;
|
|
4083
|
+
return;
|
|
4084
|
+
}
|
|
4085
|
+
if (!this.selectionActive())
|
|
4086
|
+
return;
|
|
4087
|
+
// The checkbox already has its own (checkedChange) handler — without
|
|
4088
|
+
// this, a tap on it would toggle twice (once from checkedChange, once
|
|
4089
|
+
// from this handler catching the same click as it bubbles up).
|
|
4090
|
+
if (event.target.closest('ul-checkbox'))
|
|
4091
|
+
return;
|
|
4092
|
+
this.selectedChange.emit(!this.selected());
|
|
4093
|
+
}
|
|
4094
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: SelectableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4095
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: SelectableRowComponent, isStandalone: true, selector: "ul-selectable-row", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, selectionActive: { classPropertyName: "selectionActive", publicName: "selectionActive", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange", longPress: "longPress" }, host: { listeners: { "click": "onHostClick($event)" }, properties: { "class.ul-selectable-row": "selected()" } }, hostDirectives: [{ directive: LongPressDirective }], ngImport: i0, template: `
|
|
4096
|
+
@if (isCompact() && selectionActive()) {
|
|
4097
|
+
<ul-checkbox
|
|
4098
|
+
size="lg"
|
|
4099
|
+
[checked]="selected()"
|
|
4100
|
+
[attr.aria-label]="ariaLabel()"
|
|
4101
|
+
(checkedChange)="selectedChange.emit($event)"
|
|
4102
|
+
/>
|
|
4103
|
+
} @else {
|
|
4104
|
+
<ng-content select="[ul-selectable-row-media]" />
|
|
4105
|
+
}
|
|
4106
|
+
@if (!isCompact()) {
|
|
4107
|
+
<ul-checkbox
|
|
4108
|
+
class="ul-selectable-row__hover-checkbox"
|
|
4109
|
+
[checked]="selected()"
|
|
4110
|
+
[attr.aria-label]="ariaLabel()"
|
|
4111
|
+
(checkedChange)="selectedChange.emit($event)"
|
|
4112
|
+
/>
|
|
4113
|
+
}
|
|
4114
|
+
<ng-content select="[ul-selectable-row-content]" />
|
|
4115
|
+
<ng-content />
|
|
4116
|
+
`, isInline: true, styles: [".ul-rich-text{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400;color:#fff}.ul-rich-text p,.ul-rich-text ul,.ul-rich-text ol,.ul-rich-text blockquote,.ul-rich-text pre{margin-top:0;margin-bottom:16px}.ul-rich-text:last-child,.ul-rich-text p:last-child,.ul-rich-text ul:last-child,.ul-rich-text ol:last-child,.ul-rich-text blockquote:last-child,.ul-rich-text pre:last-child{margin-bottom:0}.ul-rich-text h1,.ul-rich-text h2,.ul-rich-text h3,.ul-rich-text h4,.ul-rich-text h5,.ul-rich-text h6{margin-top:32px;margin-bottom:12px;font-weight:1000}.ul-rich-text h1{font-family:Ultra Nunito Sans;line-height:48px;font-size:48px;letter-spacing:-.48px;font-weight:1000}.ul-rich-text h2{font-family:Ultra Nunito Sans;line-height:48px;font-size:40px;letter-spacing:-.4px;font-weight:1000}.ul-rich-text h3{font-family:Ultra Nunito Sans;line-height:44px;font-size:36px;letter-spacing:-.36px;font-weight:1000}.ul-rich-text h4{font-family:Ultra Nunito Sans;line-height:40px;font-size:32px;letter-spacing:-.32px;font-weight:1000}.ul-rich-text h5{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-rich-text h6{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-rich-text ul,.ul-rich-text ol{padding-left:24px}.ul-rich-text ul ul,.ul-rich-text ul ol,.ul-rich-text ol ul,.ul-rich-text ol ol{margin-top:8px;margin-bottom:8px}.ul-rich-text li{margin-top:4px;margin-bottom:4px}.ul-rich-text strong{font-weight:800}.ul-rich-text code{font-family:Roboto Mono;line-height:20px;font-size:14px;letter-spacing:0px;font-weight:400}.ul-rich-text em{font-style:italic}.ul-rich-text a{color:#c2a8ff;text-decoration:underline;text-decoration-thickness:1px}.ul-rich-text a:hover{color:#d6c5ff}.ul-rich-text a:active{color:#a781ff}.ul-rich-text pre{padding:16px;border-radius:8px;background-color:#3b3b3b;overflow-x:auto}.ul-rich-text pre code{font-family:Roboto Mono;line-height:20px;font-size:14px;letter-spacing:0px;font-weight:400}.ul-rich-text blockquote{margin-left:0;padding-left:16px;border-left-width:2px;border-left-style:solid;border-left-color:#ffffff1a;color:#ffffffb3}.ul-rich-text--muted{color:#ffffffb3}.ul-rich-text--inverse,.ul-rich-text--inverse a{color:#000}.ul-rich-text--inverse a:hover,.ul-rich-text--inverse a:active{color:#000000b3}.ul-rich-text--body-m{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-rich-text--compact p,.ul-rich-text--compact ul,.ul-rich-text--compact ol,.ul-rich-text--compact blockquote,.ul-rich-text--compact pre{margin-bottom:8px}.ul-rich-text--compact h1,.ul-rich-text--compact h2,.ul-rich-text--compact h3,.ul-rich-text--compact h4,.ul-rich-text--compact h5,.ul-rich-text--compact h6{margin-top:16px;margin-bottom:8px}:host{display:flex;align-items:center;width:100%;box-sizing:border-box;gap:16px;padding:4px;border-radius:8px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.ul-selectable-row__hover-checkbox{opacity:0;transition:opacity .25s cubic-bezier(.4,0,.2,1)}:host(:hover) .ul-selectable-row__hover-checkbox,:host(:focus-within) .ul-selectable-row__hover-checkbox,:host(:has(.ul-checkbox__input:checked)) .ul-selectable-row__hover-checkbox{opacity:1}\n"], dependencies: [{ kind: "component", type: CheckboxComponent, selector: "ul-checkbox", inputs: ["checked", "disabled", "indeterminate", "zone", "size", "label", "helperText", "required", "showRequiredIndicator", "error", "errorText", "invalid", "errors"], outputs: ["checkedChange", "disabledChange", "indeterminateChange"] }] });
|
|
4117
|
+
}
|
|
4118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: SelectableRowComponent, decorators: [{
|
|
4119
|
+
type: Component,
|
|
4120
|
+
args: [{ selector: 'ul-selectable-row', imports: [CheckboxComponent], hostDirectives: [LongPressDirective], host: {
|
|
4121
|
+
'[class.ul-selectable-row]': 'selected()',
|
|
4122
|
+
'(click)': 'onHostClick($event)',
|
|
4123
|
+
}, template: `
|
|
4124
|
+
@if (isCompact() && selectionActive()) {
|
|
4125
|
+
<ul-checkbox
|
|
4126
|
+
size="lg"
|
|
4127
|
+
[checked]="selected()"
|
|
4128
|
+
[attr.aria-label]="ariaLabel()"
|
|
4129
|
+
(checkedChange)="selectedChange.emit($event)"
|
|
4130
|
+
/>
|
|
4131
|
+
} @else {
|
|
4132
|
+
<ng-content select="[ul-selectable-row-media]" />
|
|
4133
|
+
}
|
|
4134
|
+
@if (!isCompact()) {
|
|
4135
|
+
<ul-checkbox
|
|
4136
|
+
class="ul-selectable-row__hover-checkbox"
|
|
4137
|
+
[checked]="selected()"
|
|
4138
|
+
[attr.aria-label]="ariaLabel()"
|
|
4139
|
+
(checkedChange)="selectedChange.emit($event)"
|
|
4140
|
+
/>
|
|
4141
|
+
}
|
|
4142
|
+
<ng-content select="[ul-selectable-row-content]" />
|
|
4143
|
+
<ng-content />
|
|
4144
|
+
`, styles: [".ul-rich-text{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400;color:#fff}.ul-rich-text p,.ul-rich-text ul,.ul-rich-text ol,.ul-rich-text blockquote,.ul-rich-text pre{margin-top:0;margin-bottom:16px}.ul-rich-text:last-child,.ul-rich-text p:last-child,.ul-rich-text ul:last-child,.ul-rich-text ol:last-child,.ul-rich-text blockquote:last-child,.ul-rich-text pre:last-child{margin-bottom:0}.ul-rich-text h1,.ul-rich-text h2,.ul-rich-text h3,.ul-rich-text h4,.ul-rich-text h5,.ul-rich-text h6{margin-top:32px;margin-bottom:12px;font-weight:1000}.ul-rich-text h1{font-family:Ultra Nunito Sans;line-height:48px;font-size:48px;letter-spacing:-.48px;font-weight:1000}.ul-rich-text h2{font-family:Ultra Nunito Sans;line-height:48px;font-size:40px;letter-spacing:-.4px;font-weight:1000}.ul-rich-text h3{font-family:Ultra Nunito Sans;line-height:44px;font-size:36px;letter-spacing:-.36px;font-weight:1000}.ul-rich-text h4{font-family:Ultra Nunito Sans;line-height:40px;font-size:32px;letter-spacing:-.32px;font-weight:1000}.ul-rich-text h5{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-rich-text h6{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-rich-text ul,.ul-rich-text ol{padding-left:24px}.ul-rich-text ul ul,.ul-rich-text ul ol,.ul-rich-text ol ul,.ul-rich-text ol ol{margin-top:8px;margin-bottom:8px}.ul-rich-text li{margin-top:4px;margin-bottom:4px}.ul-rich-text strong{font-weight:800}.ul-rich-text code{font-family:Roboto Mono;line-height:20px;font-size:14px;letter-spacing:0px;font-weight:400}.ul-rich-text em{font-style:italic}.ul-rich-text a{color:#c2a8ff;text-decoration:underline;text-decoration-thickness:1px}.ul-rich-text a:hover{color:#d6c5ff}.ul-rich-text a:active{color:#a781ff}.ul-rich-text pre{padding:16px;border-radius:8px;background-color:#3b3b3b;overflow-x:auto}.ul-rich-text pre code{font-family:Roboto Mono;line-height:20px;font-size:14px;letter-spacing:0px;font-weight:400}.ul-rich-text blockquote{margin-left:0;padding-left:16px;border-left-width:2px;border-left-style:solid;border-left-color:#ffffff1a;color:#ffffffb3}.ul-rich-text--muted{color:#ffffffb3}.ul-rich-text--inverse,.ul-rich-text--inverse a{color:#000}.ul-rich-text--inverse a:hover,.ul-rich-text--inverse a:active{color:#000000b3}.ul-rich-text--body-m{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-rich-text--compact p,.ul-rich-text--compact ul,.ul-rich-text--compact ol,.ul-rich-text--compact blockquote,.ul-rich-text--compact pre{margin-bottom:8px}.ul-rich-text--compact h1,.ul-rich-text--compact h2,.ul-rich-text--compact h3,.ul-rich-text--compact h4,.ul-rich-text--compact h5,.ul-rich-text--compact h6{margin-top:16px;margin-bottom:8px}:host{display:flex;align-items:center;width:100%;box-sizing:border-box;gap:16px;padding:4px;border-radius:8px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.ul-selectable-row__hover-checkbox{opacity:0;transition:opacity .25s cubic-bezier(.4,0,.2,1)}:host(:hover) .ul-selectable-row__hover-checkbox,:host(:focus-within) .ul-selectable-row__hover-checkbox,:host(:has(.ul-checkbox__input:checked)) .ul-selectable-row__hover-checkbox{opacity:1}\n"] }]
|
|
4145
|
+
}], ctorParameters: () => [], propDecorators: { selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], selectionActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionActive", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], selectedChange: [{ type: i0.Output, args: ["selectedChange"] }], longPress: [{ type: i0.Output, args: ["longPress"] }] } });
|
|
4146
|
+
|
|
3995
4147
|
class SidebarComponent {
|
|
3996
4148
|
items = input([], /* @ts-ignore */
|
|
3997
4149
|
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
@@ -4293,5 +4445,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
4293
4445
|
* Generated bundle index. Do not edit.
|
|
4294
4446
|
*/
|
|
4295
4447
|
|
|
4296
|
-
export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CarouselComponent, CarouselItemComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DockComponent, DockItemComponent, DockItemContentSlotDirective, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, LongPressDirective, MenuComponent, MenuItemsComponent, MenuTriggerComponent, ModalComponent, NavbarAppNameSlotDirective, NavbarAvatarSlotDirective, NavbarComponent, NavbarLogoSlotDirective, NavbarSearchSlotDirective, PeHeroActionsSlotDirective, PeHeroBadgesSlotDirective, PeHeroContentSlotDirective, PeHeroSubtitleSlotDirective, PeHeroTitleSlotDirective, PillComponent, PriceButtonComponent, RadialComponent, RadioComponent, RadioGroupComponent, RichTextComponent, SearchSelectComponent, SelectComponent, SidebarComponent, SkeletonComponent, StatusComponent, TableComponent, TextareaComponent, TextareaFieldDirective, ToastContainerComponent, ToastService, TooltipComponent, createFormFieldIds, getFormFieldDescribedBy, toastIcon };
|
|
4448
|
+
export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CarouselComponent, CarouselItemComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DockComponent, DockItemComponent, DockItemContentSlotDirective, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, LongPressDirective, MenuComponent, MenuItemsComponent, MenuTriggerComponent, ModalComponent, NavbarAppNameSlotDirective, NavbarAvatarSlotDirective, NavbarComponent, NavbarLogoSlotDirective, NavbarSearchSlotDirective, PeHeroActionsSlotDirective, PeHeroBadgesSlotDirective, PeHeroContentSlotDirective, PeHeroSubtitleSlotDirective, PeHeroTitleSlotDirective, PillComponent, PriceButtonComponent, RadialComponent, RadioComponent, RadioGroupComponent, RichTextComponent, SearchSelectComponent, SelectComponent, SelectableRowComponent, SidebarComponent, SkeletonComponent, StatusComponent, TableComponent, TextareaComponent, TextareaFieldDirective, ToastContainerComponent, ToastService, TooltipComponent, createFormFieldIds, getFormFieldDescribedBy, toastIcon };
|
|
4297
4449
|
//# sourceMappingURL=underlayerdev-ui.mjs.map
|