@underlayerdev/ui 0.13.3 → 0.14.0
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/underlayerdev-ui-carousel.mjs +133 -0
- package/fesm2022/underlayerdev-ui-carousel.mjs.map +1 -0
- package/fesm2022/underlayerdev-ui.mjs +627 -581
- package/fesm2022/underlayerdev-ui.mjs.map +1 -1
- package/package.json +5 -1
- package/types/underlayerdev-ui-carousel.d.ts +30 -0
- package/types/underlayerdev-ui.d.ts +76 -27
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
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
|
-
import { inject, ElementRef, Component, input, DestroyRef, contentChildren, computed, ViewEncapsulation, signal, effect, Directive, output, model, booleanAttribute,
|
|
4
|
+
import { inject, ElementRef, Component, input, DestroyRef, contentChildren, computed, ViewEncapsulation, signal, effect, Directive, output, model, booleanAttribute, contentChild, HostListener, ViewChild, viewChild, Pipe, SecurityContext, Injectable, HostBinding } from '@angular/core';
|
|
5
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
|
-
import
|
|
10
|
+
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
11
11
|
import { fromEvent, map } from 'rxjs';
|
|
12
12
|
import { debounceTime } from 'rxjs/operators';
|
|
13
13
|
import { ImageCropperComponent as ImageCropperComponent$1 } from 'ngx-image-cropper';
|
|
14
|
-
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
15
14
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
16
15
|
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
17
16
|
|
|
@@ -1314,112 +1313,160 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
1314
1313
|
}, encapsulation: ViewEncapsulation.None, template: "@if (loading()) {\n <div class=\"ul-card__skeleton\">\n <div class=\"ul-card__media\">\n <ul-skeleton variant=\"rect\" borderRadius=\"lg\" [show]=\"true\" />\n </div>\n <div class=\"ul-card__content\">\n <div class=\"ul-card__content-title ul-card__content-title--single-line\">\n <ul-skeleton variant=\"text\" [lines]=\"2\" borderRadius=\"sm\" />\n </div>\n <div class=\"ul-card__content-subtitle ul-card__content-subtitle--single-line\">\n <ul-skeleton variant=\"text\" [lines]=\"1\" borderRadius=\"sm\" />\n </div>\n </div>\n </div>\n} @else {\n <div class=\"ul-card__media\">\n <ng-content select=\"[ulCardMedia]\" />\n <ng-content select=\"[ulCardMediaOverlay]\" />\n </div>\n <div class=\"ul-card__media-action\">\n <ng-content select=\"[ulCardMediaAction]\" />\n </div>\n\n <div class=\"ul-card__content\">\n @if (cardCaption()) {\n <div class=\"ul-card__content-caption\">\n {{ cardCaption() }}\n </div>\n }\n @if (cardTitle()) {\n <div\n class=\"ul-card__content-title\"\n [class.ul-card__content-title--single-line]=\"cardTitleSingleLine()\"\n >\n {{ cardTitle() }}\n </div>\n }\n @if (cardSubtitle()) {\n <div\n class=\"ul-card__content-subtitle\"\n [class.ul-card__content-subtitle--single-line]=\"cardSubtitleSingleLine()\"\n >\n {{ cardSubtitle() }}\n </div>\n }\n </div>\n\n <div class=\"ul-card__footer\">\n <ng-content select=\"[ulCardFooter]\" />\n </div>\n}\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-card{display:flex;position:relative;flex-direction:column;overflow:visible;width:100%;color:#ffffff80;border-radius:8px;gap:12px;outline:8px solid transparent;background-color:transparent;font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400;transition:background-color .25s cubic-bezier(.4,0,.2,1),outline .25s cubic-bezier(.4,0,.2,1)}@media(min-width:0px){.ul-card{min-width:100px}}@media(min-width:768px){.ul-card{min-width:180px}}@media(min-width:1280px){.ul-card{min-width:150px}}.ul-card:hover,.ul-card:focus,.ul-card:focus-within,.ul-card--focused{outline-color:#ffffff1a;background-color:#ffffff1a}.ul-card__media{position:relative;overflow:hidden;width:100%;background-color:#ffffff1a;border-radius:8px}@media(min-width:0px){.ul-card__media{min-height:100px}}@media(min-width:768px){.ul-card__media{min-height:180px}}@media(min-width:1280px){.ul-card__media{min-height:150px}}.ul-card__media>:first-child{width:100%;height:100%;display:block;object-fit:cover;filter:blur(var(--ul-card__media-blur, 0)) grayscale(var(--ul-card__media-grayscale, 0))}.ul-card__media>:nth-child(2){position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.ul-card__media-action{opacity:0;position:absolute;top:8px;right:8px;z-index:2;transition:opacity .15s cubic-bezier(.4,0,.2,1)}@media(max-width:1023px){.ul-card__media-action{opacity:1}}.ul-card:hover .ul-card__media-action,.ul-card:focus .ul-card__media-action,.ul-card:focus-within .ul-card__media-action{opacity:1}.ul-card__content{flex:1}.ul-card__content-caption{color:#ffffff80;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.ul-card__content-title{color:#fff;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:800;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ul-card__content-title--single-line{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.ul-card__content-subtitle{color:#ffffff80;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:800;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ul-card__content-subtitle--single-line{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.ul-card__footer{display:flex;gap:8px}.ul-card--disabled{cursor:not-allowed;pointer-events:none;opacity:.5}.ul-card--caption-sm .ul-card__content-caption{font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-card--footer-equal .ul-card__footer>*{flex:1}.ul-card--media-square .ul-card__media{aspect-ratio:1/1}.ul-card--media-portrait .ul-card__media{aspect-ratio:3/4}.ul-card__media img{width:100%;height:100%;object-fit:cover}.ul-card--media-blurred{--ul-card__media-blur: 16px}.ul-card--media-blurred .ul-card__media>:first-child{fill:#0000004d}.ul-card--media-grayscale{--ul-card__media-grayscale: 1}.ul-card--media-grayscale .ul-card__media>:first-child{opacity:.5;mix-blend-mode:luminosity}.ul-card__skeleton{display:flex;flex-direction:column;gap:12px;min-height:100px}.ul-card__skeleton>.ul-skeleton:first-child{width:100%;aspect-ratio:16/9}.ul-card__skeleton-body{margin-top:12px;display:flex;flex-direction:column;gap:8px}\n"] }]
|
|
1315
1314
|
}], propDecorators: { focused: [{ type: i0.Input, args: [{ isSignal: true, alias: "focused", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], cardDirection: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardDirection", required: false }] }], cardCaptionSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardCaptionSize", required: false }] }], footerDist: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerDist", required: false }] }], mediaAspectRatio: [{ type: i0.Input, args: [{ isSignal: true, alias: "mediaAspectRatio", required: false }] }], mediaBlur: [{ type: i0.Input, args: [{ isSignal: true, alias: "mediaBlur", required: false }] }], mediaGrayscale: [{ type: i0.Input, args: [{ isSignal: true, alias: "mediaGrayscale", required: false }] }], cardCaption: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardCaption", required: false }] }], cardTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardTitle", required: false }] }], cardTitleSingleLine: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardTitleSingleLine", required: false }] }], cardSubtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardSubtitle", required: false }] }], cardSubtitleSingleLine: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardSubtitleSingleLine", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }] } });
|
|
1316
1315
|
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1316
|
+
/**
|
|
1317
|
+
* A reusable input component that follows UDS design system guidelines.
|
|
1318
|
+
* Implements FormValueControl for use with Signal Forms [formField] directive.
|
|
1319
|
+
*
|
|
1320
|
+
* Use [(value)] for two-way binding, or bind with [formField]="myForm().email" for Signal Forms.
|
|
1321
|
+
*
|
|
1322
|
+
* Content projection: [ul-input-left-elements], [ul-input-right-elements].
|
|
1323
|
+
*/
|
|
1324
|
+
class InputComponent {
|
|
1325
|
+
type = input('text', /* @ts-ignore */
|
|
1326
|
+
...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
|
|
1327
|
+
size = input('md', /* @ts-ignore */
|
|
1328
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
1329
|
+
/** Border/hover style: border-only (hover = border only), subtle-tint (hover = border + 5% fill). */
|
|
1330
|
+
appearance = input('border-only', /* @ts-ignore */
|
|
1331
|
+
...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
|
|
1332
|
+
error = input(false, /* @ts-ignore */
|
|
1333
|
+
...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
|
|
1334
|
+
disabled = input(false, /* @ts-ignore */
|
|
1335
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
1336
|
+
readOnly = input(false, /* @ts-ignore */
|
|
1337
|
+
...(ngDevMode ? [{ debugName: "readOnly" }] : /* istanbul ignore next */ []));
|
|
1338
|
+
required = input(false, /* @ts-ignore */
|
|
1339
|
+
...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
|
|
1340
|
+
showRequiredIndicator = input(true, /* @ts-ignore */
|
|
1341
|
+
...(ngDevMode ? [{ debugName: "showRequiredIndicator" }] : /* istanbul ignore next */ []));
|
|
1342
|
+
placeholder = input('', /* @ts-ignore */
|
|
1343
|
+
...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
1344
|
+
label = input(null, /* @ts-ignore */
|
|
1345
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
1346
|
+
helperText = input(null, /* @ts-ignore */
|
|
1347
|
+
...(ngDevMode ? [{ debugName: "helperText" }] : /* istanbul ignore next */ []));
|
|
1348
|
+
errorText = input(null, /* @ts-ignore */
|
|
1349
|
+
...(ngDevMode ? [{ debugName: "errorText" }] : /* istanbul ignore next */ []));
|
|
1350
|
+
maxLength = input(/* @ts-ignore */
|
|
1351
|
+
...(ngDevMode ? [undefined, { debugName: "maxLength" }] : /* istanbul ignore next */ []));
|
|
1352
|
+
minLength = input(/* @ts-ignore */
|
|
1353
|
+
...(ngDevMode ? [undefined, { debugName: "minLength" }] : /* istanbul ignore next */ []));
|
|
1354
|
+
pattern = input([], /* @ts-ignore */
|
|
1355
|
+
...(ngDevMode ? [{ debugName: "pattern" }] : /* istanbul ignore next */ []));
|
|
1356
|
+
/** Native step for type="number". Defaults to 'any' (decimals allowed) rather than the
|
|
1357
|
+
* browser's own default of 1, which would silently reject e.g. "19.99" — pass an explicit
|
|
1358
|
+
* step (e.g. 1) to restrict to whole numbers. */
|
|
1359
|
+
step = input(undefined, /* @ts-ignore */
|
|
1360
|
+
...(ngDevMode ? [{ debugName: "step" }] : /* istanbul ignore next */ []));
|
|
1361
|
+
autocomplete = input('off', /* @ts-ignore */
|
|
1362
|
+
...(ngDevMode ? [{ debugName: "autocomplete" }] : /* istanbul ignore next */ []));
|
|
1363
|
+
/** When provided (e.g. by a parent form field), the input element uses this id instead of the internal one. */
|
|
1364
|
+
controlId = input(/* @ts-ignore */
|
|
1365
|
+
...(ngDevMode ? [undefined, { debugName: "controlId" }] : /* istanbul ignore next */ []));
|
|
1366
|
+
/** Aria-label for the toggle button when the password is hidden (i.e. the action reveals it). */
|
|
1367
|
+
showPasswordLabel = input('Show password', /* @ts-ignore */
|
|
1368
|
+
...(ngDevMode ? [{ debugName: "showPasswordLabel" }] : /* istanbul ignore next */ []));
|
|
1369
|
+
/** Aria-label for the toggle button when the password is visible (i.e. the action hides it). */
|
|
1370
|
+
hidePasswordLabel = input('Hide password', /* @ts-ignore */
|
|
1371
|
+
...(ngDevMode ? [{ debugName: "hidePasswordLabel" }] : /* istanbul ignore next */ []));
|
|
1372
|
+
/** FormUiControl optional: bound by [formField] when invalid */
|
|
1373
|
+
invalid = input(false, /* @ts-ignore */
|
|
1374
|
+
...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
|
|
1375
|
+
/** FormUiControl optional: bound by [formField] for validation errors */
|
|
1376
|
+
errors = input([], /* @ts-ignore */
|
|
1377
|
+
...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
1378
|
+
/** FormUiControl optional: control sets on blur */
|
|
1379
|
+
touched = model(false, /* @ts-ignore */
|
|
1380
|
+
...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
|
|
1381
|
+
/** FormUiControl optional: [formField] listens to this to mark the bound field touched on blur */
|
|
1382
|
+
touch = output();
|
|
1383
|
+
value = model('', /* @ts-ignore */
|
|
1384
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
1385
|
+
ids = createFormFieldIds('ul-input');
|
|
1386
|
+
effectiveControlId = computed(() => this.controlId() ?? this.ids.controlId, /* @ts-ignore */
|
|
1387
|
+
...(ngDevMode ? [{ debugName: "effectiveControlId" }] : /* istanbul ignore next */ []));
|
|
1388
|
+
effectiveHelperId = computed(() => this.controlId() ? `${this.controlId()}-helper` : this.ids.helperId, /* @ts-ignore */
|
|
1389
|
+
...(ngDevMode ? [{ debugName: "effectiveHelperId" }] : /* istanbul ignore next */ []));
|
|
1390
|
+
effectiveErrorId = computed(() => this.controlId() ? `${this.controlId()}-error` : this.ids.errorId, /* @ts-ignore */
|
|
1391
|
+
...(ngDevMode ? [{ debugName: "effectiveErrorId" }] : /* istanbul ignore next */ []));
|
|
1392
|
+
isFocused = signal(false, /* @ts-ignore */
|
|
1393
|
+
...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
|
|
1394
|
+
hasError = computed(() => this.error() || this.invalid(), /* @ts-ignore */
|
|
1395
|
+
...(ngDevMode ? [{ debugName: "hasError" }] : /* istanbul ignore next */ []));
|
|
1396
|
+
// [attr.pattern]="pattern()" would stringify an empty array to "" instead
|
|
1397
|
+
// of omitting the attribute — an empty native pattern matches only the
|
|
1398
|
+
// empty string, so every non-empty value would fail native validation.
|
|
1399
|
+
// Native <input pattern> only accepts one regex source, so multiple
|
|
1400
|
+
// patterns are combined as alternatives.
|
|
1401
|
+
nativePattern = computed(() => {
|
|
1402
|
+
const patterns = this.pattern();
|
|
1403
|
+
return patterns.length ? patterns.map((p) => p.source).join('|') : null;
|
|
1335
1404
|
}, /* @ts-ignore */
|
|
1336
|
-
...(ngDevMode ? [{ debugName: "
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
...(ngDevMode ? [{ debugName: "
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
}
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
this.
|
|
1405
|
+
...(ngDevMode ? [{ debugName: "nativePattern" }] : /* istanbul ignore next */ []));
|
|
1406
|
+
nativeStep = computed(() => {
|
|
1407
|
+
const step = this.step();
|
|
1408
|
+
if (step !== undefined)
|
|
1409
|
+
return step;
|
|
1410
|
+
return this.type() === 'number' ? 'any' : null;
|
|
1411
|
+
}, /* @ts-ignore */
|
|
1412
|
+
...(ngDevMode ? [{ debugName: "nativeStep" }] : /* istanbul ignore next */ []));
|
|
1413
|
+
isPasswordType = computed(() => this.type() === 'password', /* @ts-ignore */
|
|
1414
|
+
...(ngDevMode ? [{ debugName: "isPasswordType" }] : /* istanbul ignore next */ []));
|
|
1415
|
+
passwordRevealed = signal(false, /* @ts-ignore */
|
|
1416
|
+
...(ngDevMode ? [{ debugName: "passwordRevealed" }] : /* istanbul ignore next */ []));
|
|
1417
|
+
effectiveType = computed(() => this.isPasswordType() && this.passwordRevealed() ? 'text' : this.type(), /* @ts-ignore */
|
|
1418
|
+
...(ngDevMode ? [{ debugName: "effectiveType" }] : /* istanbul ignore next */ []));
|
|
1419
|
+
passwordToggleIcon = computed(() => this.passwordRevealed() ? 'eye_on' : 'eye_dashed', /* @ts-ignore */
|
|
1420
|
+
...(ngDevMode ? [{ debugName: "passwordToggleIcon" }] : /* istanbul ignore next */ []));
|
|
1421
|
+
passwordToggleLabel = computed(() => this.passwordRevealed() ? this.hidePasswordLabel() : this.showPasswordLabel(), /* @ts-ignore */
|
|
1422
|
+
...(ngDevMode ? [{ debugName: "passwordToggleLabel" }] : /* istanbul ignore next */ []));
|
|
1423
|
+
describedBy = computed(() => getFormFieldDescribedBy(this.effectiveHelperId(), this.effectiveErrorId(), !!this.helperText(), this.hasError(), !!this.errorText() || this.errors().length > 0), /* @ts-ignore */
|
|
1424
|
+
...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
|
|
1425
|
+
// Outputs
|
|
1426
|
+
inputBlur = output();
|
|
1427
|
+
inputFocus = output();
|
|
1428
|
+
/** Emitted when Enter is pressed in the field; typically used to submit a form. */
|
|
1429
|
+
inputEnter = output();
|
|
1430
|
+
onInput(event) {
|
|
1431
|
+
const value = event.target.value;
|
|
1432
|
+
this.value.set(value);
|
|
1364
1433
|
}
|
|
1365
|
-
|
|
1366
|
-
this.
|
|
1434
|
+
onBlur(event) {
|
|
1435
|
+
this.isFocused.set(false);
|
|
1436
|
+
this.touched.set(true);
|
|
1437
|
+
this.touch.emit();
|
|
1438
|
+
this.inputBlur.emit(event);
|
|
1367
1439
|
}
|
|
1368
|
-
|
|
1369
|
-
this.
|
|
1440
|
+
onFocus(event) {
|
|
1441
|
+
this.isFocused.set(true);
|
|
1442
|
+
this.inputFocus.emit(event);
|
|
1370
1443
|
}
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
throw new Error('Carousel instance not found');
|
|
1444
|
+
onKeydown(event) {
|
|
1445
|
+
if (event.key === 'Enter') {
|
|
1446
|
+
this.inputEnter.emit(event);
|
|
1375
1447
|
}
|
|
1376
|
-
this.instance.mount();
|
|
1377
|
-
this.mounted.emit(this.instance);
|
|
1378
1448
|
}
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
if (!carousel) {
|
|
1382
|
-
throw new Error('Carousel element not found');
|
|
1383
|
-
}
|
|
1384
|
-
// initialize the carousel
|
|
1385
|
-
this.instance = new Splide(carousel.nativeElement, {
|
|
1386
|
-
arrows: false,
|
|
1387
|
-
classes: {
|
|
1388
|
-
page: 'splide__pagination__page ul-carousel__pagination-dot',
|
|
1389
|
-
},
|
|
1390
|
-
...this.options(),
|
|
1391
|
-
});
|
|
1392
|
-
// mount the carousel
|
|
1393
|
-
if (this.autoMount()) {
|
|
1394
|
-
this.mount();
|
|
1395
|
-
}
|
|
1449
|
+
togglePasswordVisibility() {
|
|
1450
|
+
this.passwordRevealed.update((revealed) => !revealed);
|
|
1396
1451
|
}
|
|
1397
|
-
|
|
1398
|
-
|
|
1452
|
+
/**
|
|
1453
|
+
* Programmatically focuses the input element
|
|
1454
|
+
*/
|
|
1455
|
+
focus() {
|
|
1456
|
+
const inputEl = document.getElementById(this.effectiveControlId());
|
|
1457
|
+
inputEl?.focus();
|
|
1399
1458
|
}
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
<ng-content />
|
|
1406
|
-
</div>
|
|
1407
|
-
</div>
|
|
1408
|
-
</div>
|
|
1409
|
-
`, isInline: true, styles: ["@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;contain:strict;display:inline-block;height:20px;inset:0;margin:auto;position:absolute;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}.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-carousel{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;position:relative}.ul-carousel .splide__arrows{position:absolute;inset:0;z-index:1;pointer-events:none}.ul-carousel .splide__arrow{pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:0;border-radius:4096px;background-color:#0000004d;color:#fff;cursor:pointer;transition:background-color .25s cubic-bezier(.4,0,.2,1),opacity .25s cubic-bezier(.4,0,.2,1)}.ul-carousel .splide__arrow:hover:not(:disabled){background-color:#000000b3}.ul-carousel .splide__arrow svg{width:20px;height:20px;fill:currentColor}.ul-carousel .splide__arrow:disabled{opacity:.3;cursor:default}.ul-carousel .splide__arrow--prev{left:8px}.ul-carousel .splide__arrow--prev svg{transform:scaleX(-1)}.ul-carousel .splide__arrow--next{right:8px}.ul-carousel__pagination-dot{border:0;border-radius:50%;margin:1rem .2rem 0;padding:0;height:6px;width:6px;background-color:#ffffff80}.ul-carousel__pagination-dot.is-active{background-color:#fff}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
1459
|
+
select() {
|
|
1460
|
+
const inputEl = document.getElementById(this.effectiveControlId());
|
|
1461
|
+
inputEl?.select();
|
|
1462
|
+
}
|
|
1463
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1464
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: InputComponent, isStandalone: true, selector: "ul-input", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showRequiredIndicator: { classPropertyName: "showRequiredIndicator", publicName: "showRequiredIndicator", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: true, isRequired: false, transformFunction: null }, errorText: { classPropertyName: "errorText", publicName: "errorText", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: false, transformFunction: null }, controlId: { classPropertyName: "controlId", publicName: "controlId", isSignal: true, isRequired: false, transformFunction: null }, showPasswordLabel: { classPropertyName: "showPasswordLabel", publicName: "showPasswordLabel", isSignal: true, isRequired: false, transformFunction: null }, hidePasswordLabel: { classPropertyName: "hidePasswordLabel", publicName: "hidePasswordLabel", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touched: "touchedChange", touch: "touch", value: "valueChange", inputBlur: "inputBlur", inputFocus: "inputFocus", inputEnter: "inputEnter" }, ngImport: i0, template: "<div\n class=\"ul-input ul-input--{{ size() }} ul-input--appearance-{{ appearance() }}\"\n [class.ul-input--error]=\"hasError()\"\n [class.ul-input--disabled]=\"disabled()\"\n [class.ul-input--read-only]=\"readOnly()\"\n [class.ul-input--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]=\"effectiveControlId()\"\n [size]=\"size()\"\n [showRequiredIndicator]=\"showRequiredIndicator()\"\n />\n\n <div class=\"ul-input__group\" [class.ul-input__group--focused]=\"isFocused()\">\n <div class=\"ul-input__left-elements\">\n <ng-content select=\"[ul-input-left-elements]\" />\n </div>\n\n <input\n [id]=\"effectiveControlId()\"\n [type]=\"effectiveType()\"\n class=\"ul-input__field\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (keydown)=\"onKeydown($event)\"\n [disabled]=\"disabled()\"\n [readonly]=\"readOnly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [attr.pattern]=\"nativePattern()\"\n [attr.step]=\"nativeStep()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n />\n\n <div class=\"ul-input__right-elements\">\n @if (isPasswordType()) {\n <ul-button\n class=\"ul-input__password-toggle\"\n theme=\"ghost-white\"\n size=\"sm\"\n type=\"button\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"passwordToggleLabel()\"\n (buttonClick)=\"togglePasswordVisibility()\"\n >\n <ul-icon [icon]=\"passwordToggleIcon()\" />\n </ul-button>\n }\n <ng-content select=\"[ul-input-right-elements]\" />\n </div>\n </div>\n\n <ul-form-field-helper\n [id]=\"effectiveHelperId()\"\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-input{white-space:nowrap;box-sizing:border-box;display:flex;flex-direction:column;width:100%;gap:4px}.ul-input__group{display:flex;align-items:center;height:40px;padding:0 12px;gap:8px;border-radius:8px;box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent;color:#fff;transition:box-shadow .25s cubic-bezier(.4,0,.2,1),background-color .25s cubic-bezier(.4,0,.2,1);font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-input__group--focused{box-shadow:inset 0 0 0 2px #ffffff80}.ul-input--appearance-border-only:not(.ul-input--disabled) .ul-input__group:hover{box-shadow:inset 0 0 0 2px #ffffff4d}.ul-input--appearance-subtle-tint:not(.ul-input--disabled) .ul-input__group:hover{box-shadow:inset 0 0 0 2px #ffffff4d;background-color:#ffffff0d}.ul-input__field{all:unset;flex:1}.ul-input__field::placeholder{color:#ffffff80}.ul-input__field:hover::placeholder{color:#fff}.ul-input__left-elements,.ul-input__right-elements{display:flex;align-items:center;gap:8px}.ul-input__left-elements ::ng-deep .ul-icon,.ul-input__right-elements ::ng-deep .ul-icon{font-size:24px;line-height:24px}.ul-input__password-toggle ::ng-deep .ul-btn:hover,.ul-input__password-toggle ::ng-deep .ul-btn:active{background-color:transparent}.ul-input__password-toggle ::ng-deep .ul-btn:focus:not(:focus-visible){outline:none}.ul-input--sm .ul-input__group{height:32px;padding:0 8px;font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-input--sm .ul-input__left-elements,.ul-input--sm .ul-input__right-elements{gap:4px}.ul-input--sm .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--sm .ul-input__right-elements ::ng-deep .ul-icon{font-size:20px;line-height:20px}.ul-input--md .ul-input__group{height:40px;padding:0 12px;font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-input--md .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--md .ul-input__right-elements ::ng-deep .ul-icon{font-size:24px;line-height:24px}.ul-input--lg .ul-input__group{height:48px;padding:8px 12px;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-input--lg .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--lg .ul-input__right-elements ::ng-deep .ul-icon{font-size:28px;line-height:28px}.ul-input--xl .ul-input__group{height:64px;padding:8px 16px;font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:400}.ul-input--xl .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--xl .ul-input__right-elements ::ng-deep .ul-icon{font-size:32px;line-height:32px}.ul-input--error .ul-input__group{box-shadow:inset 0 0 0 2px #f69d9d}.ul-input--disabled .ul-input__group{box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent}.ul-input--disabled .ul-input__field,.ul-input--disabled .ul-input__field:disabled::placeholder{color:#ffffff4d}.ul-input--read-only .ul-input__group{box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent}.ul-input--read-only .ul-input__field,.ul-input--read-only .ul-input__field:read-only::placeholder{color:#ffffffb3}\n"], dependencies: [{ kind: "component", type: FormFieldLabelComponent, selector: "ul-form-field-label", inputs: ["label", "required", "for", "size", "showRequiredIndicator"] }, { kind: "component", type: FormFieldHelperComponent, selector: "ul-form-field-helper", inputs: ["id", "helperText", "errorText", "error"] }, { kind: "component", type: ButtonComponent, selector: "ul-button", inputs: ["size", "theme", "iconOnly", "vertical", "disabled", "type", "ariaLabel"], outputs: ["buttonClick"] }, { kind: "component", type: IconComponent, selector: "ul-icon", inputs: ["size", "weight", "icon"] }] });
|
|
1410
1465
|
}
|
|
1411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type:
|
|
1466
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: InputComponent, decorators: [{
|
|
1412
1467
|
type: Component,
|
|
1413
|
-
args: [{ selector: 'ul-
|
|
1414
|
-
|
|
1415
|
-
<div class="splide__track ul-carousel__track">
|
|
1416
|
-
<div class="splide__list">
|
|
1417
|
-
<ng-content />
|
|
1418
|
-
</div>
|
|
1419
|
-
</div>
|
|
1420
|
-
</div>
|
|
1421
|
-
`, encapsulation: ViewEncapsulation.None, styles: ["@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;contain:strict;display:inline-block;height:20px;inset:0;margin:auto;position:absolute;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}.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-carousel{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;position:relative}.ul-carousel .splide__arrows{position:absolute;inset:0;z-index:1;pointer-events:none}.ul-carousel .splide__arrow{pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:0;border-radius:4096px;background-color:#0000004d;color:#fff;cursor:pointer;transition:background-color .25s cubic-bezier(.4,0,.2,1),opacity .25s cubic-bezier(.4,0,.2,1)}.ul-carousel .splide__arrow:hover:not(:disabled){background-color:#000000b3}.ul-carousel .splide__arrow svg{width:20px;height:20px;fill:currentColor}.ul-carousel .splide__arrow:disabled{opacity:.3;cursor:default}.ul-carousel .splide__arrow--prev{left:8px}.ul-carousel .splide__arrow--prev svg{transform:scaleX(-1)}.ul-carousel .splide__arrow--next{right:8px}.ul-carousel__pagination-dot{border:0;border-radius:50%;margin:1rem .2rem 0;padding:0;height:6px;width:6px;background-color:#ffffff80}.ul-carousel__pagination-dot.is-active{background-color:#fff}\n"] }]
|
|
1422
|
-
}], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], autoMount: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoMount", required: false }] }], mounted: [{ type: i0.Output, args: ["mounted"] }], carousel: [{ type: i0.ViewChild, args: ['carousel', { isSignal: true }] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => CarouselItemComponent), { isSignal: true }] }] } });
|
|
1468
|
+
args: [{ selector: 'ul-input', imports: [FormFieldLabelComponent, FormFieldHelperComponent, ButtonComponent, IconComponent], template: "<div\n class=\"ul-input ul-input--{{ size() }} ul-input--appearance-{{ appearance() }}\"\n [class.ul-input--error]=\"hasError()\"\n [class.ul-input--disabled]=\"disabled()\"\n [class.ul-input--read-only]=\"readOnly()\"\n [class.ul-input--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]=\"effectiveControlId()\"\n [size]=\"size()\"\n [showRequiredIndicator]=\"showRequiredIndicator()\"\n />\n\n <div class=\"ul-input__group\" [class.ul-input__group--focused]=\"isFocused()\">\n <div class=\"ul-input__left-elements\">\n <ng-content select=\"[ul-input-left-elements]\" />\n </div>\n\n <input\n [id]=\"effectiveControlId()\"\n [type]=\"effectiveType()\"\n class=\"ul-input__field\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (keydown)=\"onKeydown($event)\"\n [disabled]=\"disabled()\"\n [readonly]=\"readOnly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [attr.pattern]=\"nativePattern()\"\n [attr.step]=\"nativeStep()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n />\n\n <div class=\"ul-input__right-elements\">\n @if (isPasswordType()) {\n <ul-button\n class=\"ul-input__password-toggle\"\n theme=\"ghost-white\"\n size=\"sm\"\n type=\"button\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"passwordToggleLabel()\"\n (buttonClick)=\"togglePasswordVisibility()\"\n >\n <ul-icon [icon]=\"passwordToggleIcon()\" />\n </ul-button>\n }\n <ng-content select=\"[ul-input-right-elements]\" />\n </div>\n </div>\n\n <ul-form-field-helper\n [id]=\"effectiveHelperId()\"\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-input{white-space:nowrap;box-sizing:border-box;display:flex;flex-direction:column;width:100%;gap:4px}.ul-input__group{display:flex;align-items:center;height:40px;padding:0 12px;gap:8px;border-radius:8px;box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent;color:#fff;transition:box-shadow .25s cubic-bezier(.4,0,.2,1),background-color .25s cubic-bezier(.4,0,.2,1);font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-input__group--focused{box-shadow:inset 0 0 0 2px #ffffff80}.ul-input--appearance-border-only:not(.ul-input--disabled) .ul-input__group:hover{box-shadow:inset 0 0 0 2px #ffffff4d}.ul-input--appearance-subtle-tint:not(.ul-input--disabled) .ul-input__group:hover{box-shadow:inset 0 0 0 2px #ffffff4d;background-color:#ffffff0d}.ul-input__field{all:unset;flex:1}.ul-input__field::placeholder{color:#ffffff80}.ul-input__field:hover::placeholder{color:#fff}.ul-input__left-elements,.ul-input__right-elements{display:flex;align-items:center;gap:8px}.ul-input__left-elements ::ng-deep .ul-icon,.ul-input__right-elements ::ng-deep .ul-icon{font-size:24px;line-height:24px}.ul-input__password-toggle ::ng-deep .ul-btn:hover,.ul-input__password-toggle ::ng-deep .ul-btn:active{background-color:transparent}.ul-input__password-toggle ::ng-deep .ul-btn:focus:not(:focus-visible){outline:none}.ul-input--sm .ul-input__group{height:32px;padding:0 8px;font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-input--sm .ul-input__left-elements,.ul-input--sm .ul-input__right-elements{gap:4px}.ul-input--sm .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--sm .ul-input__right-elements ::ng-deep .ul-icon{font-size:20px;line-height:20px}.ul-input--md .ul-input__group{height:40px;padding:0 12px;font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-input--md .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--md .ul-input__right-elements ::ng-deep .ul-icon{font-size:24px;line-height:24px}.ul-input--lg .ul-input__group{height:48px;padding:8px 12px;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-input--lg .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--lg .ul-input__right-elements ::ng-deep .ul-icon{font-size:28px;line-height:28px}.ul-input--xl .ul-input__group{height:64px;padding:8px 16px;font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:400}.ul-input--xl .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--xl .ul-input__right-elements ::ng-deep .ul-icon{font-size:32px;line-height:32px}.ul-input--error .ul-input__group{box-shadow:inset 0 0 0 2px #f69d9d}.ul-input--disabled .ul-input__group{box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent}.ul-input--disabled .ul-input__field,.ul-input--disabled .ul-input__field:disabled::placeholder{color:#ffffff4d}.ul-input--read-only .ul-input__group{box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent}.ul-input--read-only .ul-input__field,.ul-input--read-only .ul-input__field:read-only::placeholder{color:#ffffffb3}\n"] }]
|
|
1469
|
+
}], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", 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 }] }], 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 }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], minLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minLength", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }], controlId: [{ type: i0.Input, args: [{ isSignal: true, alias: "controlId", required: false }] }], showPasswordLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPasswordLabel", required: false }] }], hidePasswordLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "hidePasswordLabel", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], touch: [{ type: i0.Output, args: ["touch"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], inputBlur: [{ type: i0.Output, args: ["inputBlur"] }], inputFocus: [{ type: i0.Output, args: ["inputFocus"] }], inputEnter: [{ type: i0.Output, args: ["inputEnter"] }] } });
|
|
1423
1470
|
|
|
1424
1471
|
/**
|
|
1425
1472
|
* Checkbox component. Implements FormCheckboxControl for Signal Forms [formField].
|
|
@@ -1585,67 +1632,395 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
1585
1632
|
`, 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-checkbox{display:flex;flex-direction:column;align-items:flex-start}.ul-checkbox__row{display:inline-flex;align-items:flex-start;cursor:pointer}.ul-checkbox__row:has(.ul-checkbox__input:disabled){cursor:not-allowed}.ul-checkbox__row:hover .ul-checkbox__input:not([disabled])+.ul-checkbox__pseudo-input{box-shadow:0 0 0 2px #ffffff1a;border-color:#fff}.ul-checkbox__row:hover .ul-checkbox__input:not([disabled]):indeterminate+.ul-checkbox__pseudo-input,.ul-checkbox__row:hover .ul-checkbox__input:not([disabled]):checked+.ul-checkbox__pseudo-input{background-color:#6f3de0;border-color:#6f3de0}.ul-checkbox__row:hover .ul-checkbox__input:not([disabled]):indeterminate:active+.ul-checkbox__pseudo-input,.ul-checkbox__row:hover .ul-checkbox__input:not([disabled]):checked:active+.ul-checkbox__pseudo-input{background-color:#6f3de0;border-color:#6f3de0}.ul-checkbox__row:has(.ul-checkbox__input:indeterminate) .ul-checkbox__pseudo-input:before{opacity:1}.ul-checkbox__row--accessible-zone{padding:12px}.ul-checkbox__row--visible-zone{padding:12px;background:#fff3;border-radius:12px}.ul-checkbox__row--checked-visible-zone{padding:12px;border-radius:12px;transition:background-color .25s cubic-bezier(.4,0,.2,1)}.ul-checkbox__row--checked-visible-zone:has(.ul-checkbox__input:checked){background:#fff3}.ul-checkbox__row--error .ul-checkbox__pseudo-input{border-color:#f69d9d}.ul-checkbox__row--error .ul-checkbox__input:focus-visible+.ul-checkbox__pseudo-input{border-color:#f69d9d}.ul-checkbox__row--error .ul-checkbox__input:not([disabled]):active+.ul-checkbox__pseudo-input[class]{border-color:#f69d9d}.ul-checkbox__row--error .ul-checkbox__input:not([disabled]):checked+.ul-checkbox__pseudo-input,.ul-checkbox__row--error .ul-checkbox__input:not([disabled]):indeterminate+.ul-checkbox__pseudo-input{background-color:#c33a3a;border-color:#c33a3a}.ul-checkbox__row--error:hover .ul-checkbox__input:not([disabled])+.ul-checkbox__pseudo-input{box-shadow:0 0 0 2px #ffffff1a;border-color:#f69d9d}.ul-checkbox__row--error:hover .ul-checkbox__input:not([disabled]):indeterminate+.ul-checkbox__pseudo-input,.ul-checkbox__row--error:hover .ul-checkbox__input:not([disabled]):checked+.ul-checkbox__pseudo-input{background-color:#c33a3a;border-color:#c33a3a}.ul-checkbox__row--error:hover .ul-checkbox__input:not([disabled]):indeterminate:active+.ul-checkbox__pseudo-input,.ul-checkbox__row--error:hover .ul-checkbox__input:not([disabled]):checked:active+.ul-checkbox__pseudo-input{background-color:#c33a3a;border-color:#c33a3a}.ul-checkbox__row--lg .ul-checkbox__pseudo-input{width:24px;height:24px}.ul-checkbox__row--lg .ul-checkbox__pseudo-input:before{width:24px;height:24px;line-height:24px;font-size:24px}.ul-checkbox__input{position:absolute;opacity:0}.ul-checkbox__input:focus-visible+.ul-checkbox__pseudo-input{border-color:#ffffff80}.ul-checkbox__input:not([disabled]):active+.ul-checkbox__pseudo-input[class]{border-color:#fff;box-shadow:none}.ul-checkbox__input:not([disabled]):checked+.ul-checkbox__pseudo-input{background-color:#6f3de0;border-color:#6f3de0}.ul-checkbox__input:not([disabled]):checked+.ul-checkbox__pseudo-input:before{opacity:1}.ul-checkbox__input:disabled+.ul-checkbox__pseudo-input{border-color:#ffffff1a}.ul-checkbox__input:disabled~.ul-checkbox__label{color:#ffffff4d}.ul-checkbox__input:disabled:checked+.ul-checkbox__pseudo-input{background-color:#ffffff0d;border-color:transparent}.ul-checkbox__input:disabled:checked+.ul-checkbox__pseudo-input:before{opacity:1;color:#ffffff4d}.ul-checkbox__input:indeterminate+.ul-checkbox__pseudo-input{background-color:#6f3de0;border-color:#6f3de0}.ul-checkbox__input:indeterminate+.ul-checkbox__pseudo-input:before{content:\"minus_small\";opacity:1}.ul-checkbox__input[disabled]:indeterminate+.ul-checkbox__pseudo-input{background-color:#ffffff0d;border-color:transparent}.ul-checkbox__input[disabled]:indeterminate+.ul-checkbox__pseudo-input:before{opacity:1;color:#ffffff4d}.ul-checkbox__pseudo-input{margin:2px;border-radius:4px;border:1px solid rgba(255,255,255,.5);width:16px;height:16px;position:relative;flex-shrink:0;transition:border-color .25s cubic-bezier(.4,0,.2,1),background-color .25s cubic-bezier(.4,0,.2,1)}.ul-checkbox__pseudo-input:before{content:\"check_small\";font-family:Ultra Icons;top:-1px;left:-1px;width:16px;height:16px;position:absolute;color:#fff;line-height:16px;opacity:0;text-align:center;font-size:16px}.ul-checkbox__label{margin-left:8px;color:#fff;transition:color .25s cubic-bezier(.4,0,.2,1);font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-checkbox--sm .ul-checkbox__label{font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-checkbox:not(.ul-checkbox--sm) .ul-checkbox__label{margin-top:-2px;margin-bottom:-2px}\n"] }]
|
|
1586
1633
|
}], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }, { type: i0.Output, args: ["disabledChange"] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }, { type: i0.Output, args: ["indeterminateChange"] }], zone: [{ type: i0.Input, args: [{ isSignal: true, alias: "zone", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], helperText: [{ type: i0.Input, args: [{ isSignal: true, alias: "helperText", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], showRequiredIndicator: [{ type: i0.Input, args: [{ isSignal: true, alias: "showRequiredIndicator", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], errorText: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorText", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }] } });
|
|
1587
1634
|
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
*/
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1635
|
+
class ListItemComponent {
|
|
1636
|
+
checkbox = contentChild(CheckboxComponent, /* @ts-ignore */
|
|
1637
|
+
...(ngDevMode ? [{ debugName: "checkbox" }] : /* istanbul ignore next */ []));
|
|
1638
|
+
theme = input('ghost-white', /* @ts-ignore */
|
|
1639
|
+
...(ngDevMode ? [{ debugName: "theme" }] : /* istanbul ignore next */ []));
|
|
1640
|
+
disabled = input(false, /* @ts-ignore */
|
|
1641
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
1642
|
+
hideFocusOutline = input(false, /* @ts-ignore */
|
|
1643
|
+
...(ngDevMode ? [{ debugName: "hideFocusOutline" }] : /* istanbul ignore next */ []));
|
|
1644
|
+
selected = input(false, /* @ts-ignore */
|
|
1645
|
+
...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
|
|
1646
|
+
loading = input(false, /* @ts-ignore */
|
|
1647
|
+
...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
1648
|
+
clickHandler() {
|
|
1649
|
+
if (this.disabled() || this.loading()) {
|
|
1650
|
+
return;
|
|
1651
|
+
}
|
|
1652
|
+
if (!this.disabled()) {
|
|
1653
|
+
this.checkbox()?.checked.update((value) => !value);
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
1656
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1657
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.0", type: ListItemComponent, isStandalone: true, selector: "ul-list-item", inputs: { theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hideFocusOutline: { classPropertyName: "hideFocusOutline", publicName: "hideFocusOutline", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "checkbox", first: true, predicate: CheckboxComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
1658
|
+
<ul-skeleton [show]="loading()" variant="rect">
|
|
1659
|
+
<button
|
|
1660
|
+
type="button"
|
|
1661
|
+
class="ul-list-item ul-list-item--{{ theme() }}"
|
|
1662
|
+
[class.ul-list-item--no-focus-outline]="hideFocusOutline()"
|
|
1663
|
+
[class.ul-list-item--selected]="selected() || !!checkbox()?.checked()"
|
|
1664
|
+
(click)="clickHandler()"
|
|
1665
|
+
[disabled]="disabled() || loading()"
|
|
1666
|
+
>
|
|
1667
|
+
<div class="ul-list-item__before-label">
|
|
1668
|
+
<ng-content select="[ul-list-item-before-label]" />
|
|
1669
|
+
</div>
|
|
1670
|
+
<div class="ul-list-item__label">
|
|
1671
|
+
<ng-content select="[ul-list-item-label]" />
|
|
1672
|
+
</div>
|
|
1673
|
+
<div class="ul-list-item__after-label">
|
|
1674
|
+
<ng-content select="[ul-list-item-after-label]" />
|
|
1675
|
+
</div>
|
|
1676
|
+
</button>
|
|
1677
|
+
</ul-skeleton>
|
|
1678
|
+
`, 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}.ul-list-item{cursor:pointer;border:none;white-space:nowrap;box-sizing:border-box;text-align:start;display:flex;align-items:center;width:100%;gap:8px;border-radius:8px;padding:8px 12px;color:#ffffffb3;font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-list-item:hover{background-color:#fff3}.ul-list-item:active{background-color:#ffffff1a}.ul-list-item:selected{background-color:#fff3}.ul-list-item{background-color:#fff0;color:inherit}.ul-list-item:disabled,.ul-list-item[disabled]{background-color:#fff0}.ul-list-item:focus-visible{outline-offset:2px;outline:rgba(255,255,255,.3) solid 2px}.ul-list-item--no-focus-outline:focus-visible{outline:none;outline-offset:0}.ul-list-item--selected{background-color:transparent}.ul-list-item--transparent-white{background-color:#ffffff1a;color:inherit}.ul-list-item--transparent-white:hover{background-color:#fff3}.ul-list-item--transparent-white:active{background-color:#ffffff1a}.ul-list-item--transparent-white:selected{background-color:#fff3}.ul-list-item--transparent-white:disabled,.ul-list-item--transparent-white[disabled]{background-color:#ffffff0d}.ul-list-item--transparent-white{background-color:transparent}.ul-list-item--outline-white{background-color:transparent;border:1px solid rgba(255,255,255,.3);color:#fff}.ul-list-item--outline-white:hover:not(:disabled):not([disabled]){border-color:#fff}.ul-list-item--outline-white:active:not(:disabled):not([disabled]){border-color:#ffffff80}.ul-list-item--outline-white:disabled,.ul-list-item--outline-white[disabled]{border-color:#6c6c6c;color:#ffffff4d}.ul-list-item--outline-purple{background-color:transparent;border:1px solid #c2a8ff;color:#c2a8ff}.ul-list-item--outline-purple:hover:not(:disabled):not([disabled]){border-color:#c2a8ff}.ul-list-item--outline-purple:active:not(:disabled):not([disabled]){border-color:#c2a8ff}.ul-list-item--outline-purple:disabled,.ul-list-item--outline-purple[disabled]{border-color:#6c6c6c;color:#ffffff4d}.ul-list-item--transparent-white.ul-list-item--selected{background-color:#fff3}.ul-list-item__label{flex:1;color:#fff}.ul-list-item__before-label,.ul-list-item__after-label{display:flex;align-items:center;gap:8px}.ul-list-item .ul--icon{color:#fff}.ul-list-item:disabled,.ul-list-item[disabled]{cursor:not-allowed;color:#ffffff4d}.ul-list-item:disabled .ul-list-item__label,.ul-list-item[disabled] .ul-list-item__label{color:#ffffff4d}\n"], dependencies: [{ kind: "component", type: SkeletonComponent, selector: "ul-skeleton", inputs: ["variant", "width", "height", "lines", "borderRadius", "show"] }] });
|
|
1679
|
+
}
|
|
1680
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ListItemComponent, decorators: [{
|
|
1681
|
+
type: Component,
|
|
1682
|
+
args: [{ selector: 'ul-list-item', imports: [SkeletonComponent], template: `
|
|
1683
|
+
<ul-skeleton [show]="loading()" variant="rect">
|
|
1684
|
+
<button
|
|
1685
|
+
type="button"
|
|
1686
|
+
class="ul-list-item ul-list-item--{{ theme() }}"
|
|
1687
|
+
[class.ul-list-item--no-focus-outline]="hideFocusOutline()"
|
|
1688
|
+
[class.ul-list-item--selected]="selected() || !!checkbox()?.checked()"
|
|
1689
|
+
(click)="clickHandler()"
|
|
1690
|
+
[disabled]="disabled() || loading()"
|
|
1691
|
+
>
|
|
1692
|
+
<div class="ul-list-item__before-label">
|
|
1693
|
+
<ng-content select="[ul-list-item-before-label]" />
|
|
1694
|
+
</div>
|
|
1695
|
+
<div class="ul-list-item__label">
|
|
1696
|
+
<ng-content select="[ul-list-item-label]" />
|
|
1697
|
+
</div>
|
|
1698
|
+
<div class="ul-list-item__after-label">
|
|
1699
|
+
<ng-content select="[ul-list-item-after-label]" />
|
|
1700
|
+
</div>
|
|
1701
|
+
</button>
|
|
1702
|
+
</ul-skeleton>
|
|
1703
|
+
`, 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-list-item{cursor:pointer;border:none;white-space:nowrap;box-sizing:border-box;text-align:start;display:flex;align-items:center;width:100%;gap:8px;border-radius:8px;padding:8px 12px;color:#ffffffb3;font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-list-item:hover{background-color:#fff3}.ul-list-item:active{background-color:#ffffff1a}.ul-list-item:selected{background-color:#fff3}.ul-list-item{background-color:#fff0;color:inherit}.ul-list-item:disabled,.ul-list-item[disabled]{background-color:#fff0}.ul-list-item:focus-visible{outline-offset:2px;outline:rgba(255,255,255,.3) solid 2px}.ul-list-item--no-focus-outline:focus-visible{outline:none;outline-offset:0}.ul-list-item--selected{background-color:transparent}.ul-list-item--transparent-white{background-color:#ffffff1a;color:inherit}.ul-list-item--transparent-white:hover{background-color:#fff3}.ul-list-item--transparent-white:active{background-color:#ffffff1a}.ul-list-item--transparent-white:selected{background-color:#fff3}.ul-list-item--transparent-white:disabled,.ul-list-item--transparent-white[disabled]{background-color:#ffffff0d}.ul-list-item--transparent-white{background-color:transparent}.ul-list-item--outline-white{background-color:transparent;border:1px solid rgba(255,255,255,.3);color:#fff}.ul-list-item--outline-white:hover:not(:disabled):not([disabled]){border-color:#fff}.ul-list-item--outline-white:active:not(:disabled):not([disabled]){border-color:#ffffff80}.ul-list-item--outline-white:disabled,.ul-list-item--outline-white[disabled]{border-color:#6c6c6c;color:#ffffff4d}.ul-list-item--outline-purple{background-color:transparent;border:1px solid #c2a8ff;color:#c2a8ff}.ul-list-item--outline-purple:hover:not(:disabled):not([disabled]){border-color:#c2a8ff}.ul-list-item--outline-purple:active:not(:disabled):not([disabled]){border-color:#c2a8ff}.ul-list-item--outline-purple:disabled,.ul-list-item--outline-purple[disabled]{border-color:#6c6c6c;color:#ffffff4d}.ul-list-item--transparent-white.ul-list-item--selected{background-color:#fff3}.ul-list-item__label{flex:1;color:#fff}.ul-list-item__before-label,.ul-list-item__after-label{display:flex;align-items:center;gap:8px}.ul-list-item .ul--icon{color:#fff}.ul-list-item:disabled,.ul-list-item[disabled]{cursor:not-allowed;color:#ffffff4d}.ul-list-item:disabled .ul-list-item__label,.ul-list-item[disabled] .ul-list-item__label{color:#ffffff4d}\n"] }]
|
|
1704
|
+
}], propDecorators: { checkbox: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CheckboxComponent), { isSignal: true }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], hideFocusOutline: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideFocusOutline", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }] } });
|
|
1705
|
+
|
|
1706
|
+
class ModalComponent {
|
|
1707
|
+
/** Whether the modal is open. Supports two-way binding with [(open)]. */
|
|
1708
|
+
open = model(false, /* @ts-ignore */
|
|
1709
|
+
...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
1710
|
+
/** Visual variant: default, success, error, custom, or bottom-sheet (mobile-only layout). */
|
|
1711
|
+
variant = input('default', /* @ts-ignore */
|
|
1712
|
+
...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
1713
|
+
/** Optional title shown in the header. */
|
|
1714
|
+
title = input(undefined, /* @ts-ignore */
|
|
1715
|
+
...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
1716
|
+
/** Whether clicking the backdrop closes the modal. */
|
|
1717
|
+
closeOnBackdropClick = input(true, /* @ts-ignore */
|
|
1718
|
+
...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : /* istanbul ignore next */ []));
|
|
1719
|
+
/** Whether to show the close button in the header. */
|
|
1720
|
+
showCloseButton = input(true, /* @ts-ignore */
|
|
1721
|
+
...(ngDevMode ? [{ debugName: "showCloseButton" }] : /* istanbul ignore next */ []));
|
|
1722
|
+
/** Label for the primary confirm action in the confirmation variant. */
|
|
1723
|
+
confirmLabel = input('Confirm', /* @ts-ignore */
|
|
1724
|
+
...(ngDevMode ? [{ debugName: "confirmLabel" }] : /* istanbul ignore next */ []));
|
|
1725
|
+
/** Label for the secondary cancel action in the confirmation variant. */
|
|
1726
|
+
cancelLabel = input('Cancel', /* @ts-ignore */
|
|
1727
|
+
...(ngDevMode ? [{ debugName: "cancelLabel" }] : /* istanbul ignore next */ []));
|
|
1728
|
+
/** Optional CSS class for the panel (e.g. for custom variant). */
|
|
1729
|
+
customClass = input(undefined, /* @ts-ignore */
|
|
1730
|
+
...(ngDevMode ? [{ debugName: "customClass" }] : /* istanbul ignore next */ []));
|
|
1731
|
+
/**
|
|
1732
|
+
* Below the phone breakpoint, fills the entire viewport edge-to-edge (no
|
|
1733
|
+
* margin, no rounded corners, no visible backdrop) instead of the default
|
|
1734
|
+
* bottom-pinned sheet every variant otherwise gets there. Has no effect
|
|
1735
|
+
* above that breakpoint — desktop/tablet layout is unchanged either way.
|
|
1736
|
+
*/
|
|
1737
|
+
fullScreenInMobile = input(false, /* @ts-ignore */
|
|
1738
|
+
...(ngDevMode ? [{ debugName: "fullScreenInMobile" }] : /* istanbul ignore next */ []));
|
|
1739
|
+
/** Emitted when the modal is closed (button, backdrop, or escape). */
|
|
1740
|
+
closed = output();
|
|
1741
|
+
/** Emitted when the user confirms in the confirmation variant. */
|
|
1742
|
+
confirmed = output();
|
|
1743
|
+
/** Emitted when the user cancels in the confirmation variant. */
|
|
1744
|
+
cancelled = output();
|
|
1745
|
+
panelClass = computed(() => {
|
|
1746
|
+
const variant = this.variant();
|
|
1747
|
+
const custom = this.customClass();
|
|
1748
|
+
const classes = ['ul-modal__panel', `ul-modal__panel--${variant}`];
|
|
1749
|
+
if (this.fullScreenInMobile()) {
|
|
1750
|
+
classes.push('ul-modal__panel--fullscreen-mobile');
|
|
1751
|
+
}
|
|
1752
|
+
if (custom) {
|
|
1753
|
+
classes.push(custom);
|
|
1754
|
+
}
|
|
1755
|
+
return classes.join(' ');
|
|
1756
|
+
}, /* @ts-ignore */
|
|
1757
|
+
...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
|
|
1758
|
+
isConfirmation = computed(() => this.variant() === 'confirmation', /* @ts-ignore */
|
|
1759
|
+
...(ngDevMode ? [{ debugName: "isConfirmation" }] : /* istanbul ignore next */ []));
|
|
1760
|
+
isSuccess = computed(() => this.variant() === 'success', /* @ts-ignore */
|
|
1761
|
+
...(ngDevMode ? [{ debugName: "isSuccess" }] : /* istanbul ignore next */ []));
|
|
1762
|
+
isError = computed(() => this.variant() === 'error', /* @ts-ignore */
|
|
1763
|
+
...(ngDevMode ? [{ debugName: "isError" }] : /* istanbul ignore next */ []));
|
|
1764
|
+
modalTitle = computed(() => (this.isSuccess() || this.isError() ? '' : this.title()), /* @ts-ignore */
|
|
1765
|
+
...(ngDevMode ? [{ debugName: "modalTitle" }] : /* istanbul ignore next */ []));
|
|
1766
|
+
titleId = `ul-modal-title-${Math.random().toString(36).slice(2, 11)}`;
|
|
1767
|
+
bodyId = `ul-modal-body-${Math.random().toString(36).slice(2, 11)}`;
|
|
1768
|
+
close() {
|
|
1769
|
+
this.open.set(false);
|
|
1770
|
+
this.closed.emit();
|
|
1771
|
+
}
|
|
1772
|
+
onConfirm() {
|
|
1773
|
+
if (!this.isConfirmation()) {
|
|
1774
|
+
return;
|
|
1775
|
+
}
|
|
1776
|
+
this.confirmed.emit();
|
|
1777
|
+
this.close();
|
|
1778
|
+
}
|
|
1779
|
+
onCancel() {
|
|
1780
|
+
if (!this.isConfirmation()) {
|
|
1781
|
+
return;
|
|
1782
|
+
}
|
|
1783
|
+
this.cancelled.emit();
|
|
1784
|
+
this.close();
|
|
1785
|
+
}
|
|
1786
|
+
onBackdropClick(event) {
|
|
1787
|
+
if (this.closeOnBackdropClick() && event.target === event.currentTarget) {
|
|
1788
|
+
this.close();
|
|
1789
|
+
}
|
|
1790
|
+
}
|
|
1791
|
+
onEscape() {
|
|
1792
|
+
if (this.open()) {
|
|
1793
|
+
this.close();
|
|
1794
|
+
}
|
|
1795
|
+
}
|
|
1796
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1797
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: ModalComponent, isStandalone: true, selector: "ul-modal", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, confirmLabel: { classPropertyName: "confirmLabel", publicName: "confirmLabel", isSignal: true, isRequired: false, transformFunction: null }, cancelLabel: { classPropertyName: "cancelLabel", publicName: "cancelLabel", isSignal: true, isRequired: false, transformFunction: null }, customClass: { classPropertyName: "customClass", publicName: "customClass", isSignal: true, isRequired: false, transformFunction: null }, fullScreenInMobile: { classPropertyName: "fullScreenInMobile", publicName: "fullScreenInMobile", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", closed: "closed", confirmed: "confirmed", cancelled: "cancelled" }, host: { listeners: { "document:keydown.escape": "onEscape()" }, properties: { "attr.aria-hidden": "!open()" } }, ngImport: i0, template: "@if (open()) {\n <div\n class=\"ul-modal ul-modal--backdrop\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"title() ? titleId : null\"\n [attr.aria-describedby]=\"bodyId\"\n (click)=\"onBackdropClick($event)\"\n >\n <div [class]=\"panelClass()\" cdkTrapFocus (click)=\"$event.stopPropagation()\">\n @if (modalTitle() || showCloseButton()) {\n <header class=\"ul-modal__header\">\n @if (modalTitle()) {\n <h2 [id]=\"titleId\" class=\"ul-modal__title\">{{ title() }}</h2>\n }\n @if (showCloseButton()) {\n <ul-button\n type=\"button\"\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n ariaLabel=\"Close\"\n class=\"ul-modal__close\"\n (buttonClick)=\"close()\"\n >\n <ul-icon icon=\"close\" size=\"6\" />\n </ul-button>\n }\n </header>\n }\n <div class=\"ul-modal__body\" [id]=\"bodyId\">\n @if (isSuccess() || isError()) {\n <div class=\"ul-modal__status\" aria-hidden=\"true\">\n <ul-icon\n class=\"ul-modal__status-icon\"\n [icon]=\"isSuccess() ? 'check_circle' : 'cross_circle'\"\n size=\"16\"\n />\n </div>\n }\n <ng-content />\n </div>\n <div class=\"ul-modal__footer\">\n @if (isConfirmation()) {\n <ul-button theme=\"ghost-white\" (buttonClick)=\"onCancel()\">\n {{ cancelLabel() }}\n </ul-button>\n <ul-button theme=\"fill-purple\" (buttonClick)=\"onConfirm()\">\n {{ confirmLabel() }}\n </ul-button>\n } @else {\n <ng-content select=\"[ul-modal-footer]\" />\n }\n </div>\n </div>\n </div>\n}\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-modal--backdrop{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:16px;background-color:#000000b3;transition:opacity .25s cubic-bezier(.4,0,.2,1)}.ul-modal__panel{position:relative;display:flex;flex-direction:column;max-height:calc(100% - 32px);overflow:auto;border-radius:16px;font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400;color:#fff;transition:opacity .25s cubic-bezier(.4,0,.2,1),transform .25s cubic-bezier(.4,0,.2,1);background-color:#0a0a0a;padding:24px;border:1px solid rgba(255,255,255,.1)}.ul-modal__panel--confirmation{border:1px solid rgba(255,255,255,.1)}@media(max-width:767px){.ul-modal__panel--success{border:1px solid #7edc96}.ul-modal__panel--error{border:1px solid #f69d9d}}.ul-modal__panel--custom,.ul-modal__panel--bottom-sheet{border:1px solid rgba(255,255,255,.1)}.ul-modal__header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;flex-shrink:0}.ul-modal__title{margin:0;font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:800;color:#fff}.ul-modal__status{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:12px}.ul-modal__status-icon{flex-shrink:0}.ul-modal__close{flex-shrink:0;margin-left:auto}.ul-modal__body{flex:1 1 auto;min-height:0;color:#ffffffb3}.ul-modal__panel--success .ul-modal__status-icon{color:#7edc96}.ul-modal__panel--error .ul-modal__status-icon{color:#f69d9d}.ul-modal__panel--success .ul-modal__body,.ul-modal__panel--error .ul-modal__body{text-align:center;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}@media(min-width:768px){.ul-modal--backdrop{padding:24px}.ul-modal__panel{width:100%;max-width:512px}}@media(max-width:767px){.ul-modal--backdrop{align-items:flex-end;padding:0}.ul-modal__panel{width:100%;max-width:100%;border-radius:24px 24px 0 0;max-height:calc(100dvh - 32px);margin-top:auto;border-bottom:none}.ul-modal__panel--bottom-sheet{border-bottom:none}.ul-modal__panel--fullscreen-mobile{position:fixed;inset:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border-radius:0;border:none}}.ul-modal__footer{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:16px;flex-shrink:0;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ButtonComponent, selector: "ul-button", inputs: ["size", "theme", "iconOnly", "vertical", "disabled", "type", "ariaLabel"], outputs: ["buttonClick"] }, { kind: "component", type: IconComponent, selector: "ul-icon", inputs: ["size", "weight", "icon"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
1798
|
+
}
|
|
1799
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ModalComponent, decorators: [{
|
|
1800
|
+
type: Component,
|
|
1801
|
+
args: [{ selector: 'ul-modal', imports: [CdkTrapFocus, ButtonComponent, IconComponent], encapsulation: ViewEncapsulation.None, host: {
|
|
1802
|
+
'[attr.aria-hidden]': '!open()',
|
|
1803
|
+
}, template: "@if (open()) {\n <div\n class=\"ul-modal ul-modal--backdrop\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"title() ? titleId : null\"\n [attr.aria-describedby]=\"bodyId\"\n (click)=\"onBackdropClick($event)\"\n >\n <div [class]=\"panelClass()\" cdkTrapFocus (click)=\"$event.stopPropagation()\">\n @if (modalTitle() || showCloseButton()) {\n <header class=\"ul-modal__header\">\n @if (modalTitle()) {\n <h2 [id]=\"titleId\" class=\"ul-modal__title\">{{ title() }}</h2>\n }\n @if (showCloseButton()) {\n <ul-button\n type=\"button\"\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n ariaLabel=\"Close\"\n class=\"ul-modal__close\"\n (buttonClick)=\"close()\"\n >\n <ul-icon icon=\"close\" size=\"6\" />\n </ul-button>\n }\n </header>\n }\n <div class=\"ul-modal__body\" [id]=\"bodyId\">\n @if (isSuccess() || isError()) {\n <div class=\"ul-modal__status\" aria-hidden=\"true\">\n <ul-icon\n class=\"ul-modal__status-icon\"\n [icon]=\"isSuccess() ? 'check_circle' : 'cross_circle'\"\n size=\"16\"\n />\n </div>\n }\n <ng-content />\n </div>\n <div class=\"ul-modal__footer\">\n @if (isConfirmation()) {\n <ul-button theme=\"ghost-white\" (buttonClick)=\"onCancel()\">\n {{ cancelLabel() }}\n </ul-button>\n <ul-button theme=\"fill-purple\" (buttonClick)=\"onConfirm()\">\n {{ confirmLabel() }}\n </ul-button>\n } @else {\n <ng-content select=\"[ul-modal-footer]\" />\n }\n </div>\n </div>\n </div>\n}\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-modal--backdrop{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:16px;background-color:#000000b3;transition:opacity .25s cubic-bezier(.4,0,.2,1)}.ul-modal__panel{position:relative;display:flex;flex-direction:column;max-height:calc(100% - 32px);overflow:auto;border-radius:16px;font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400;color:#fff;transition:opacity .25s cubic-bezier(.4,0,.2,1),transform .25s cubic-bezier(.4,0,.2,1);background-color:#0a0a0a;padding:24px;border:1px solid rgba(255,255,255,.1)}.ul-modal__panel--confirmation{border:1px solid rgba(255,255,255,.1)}@media(max-width:767px){.ul-modal__panel--success{border:1px solid #7edc96}.ul-modal__panel--error{border:1px solid #f69d9d}}.ul-modal__panel--custom,.ul-modal__panel--bottom-sheet{border:1px solid rgba(255,255,255,.1)}.ul-modal__header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;flex-shrink:0}.ul-modal__title{margin:0;font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:800;color:#fff}.ul-modal__status{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:12px}.ul-modal__status-icon{flex-shrink:0}.ul-modal__close{flex-shrink:0;margin-left:auto}.ul-modal__body{flex:1 1 auto;min-height:0;color:#ffffffb3}.ul-modal__panel--success .ul-modal__status-icon{color:#7edc96}.ul-modal__panel--error .ul-modal__status-icon{color:#f69d9d}.ul-modal__panel--success .ul-modal__body,.ul-modal__panel--error .ul-modal__body{text-align:center;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}@media(min-width:768px){.ul-modal--backdrop{padding:24px}.ul-modal__panel{width:100%;max-width:512px}}@media(max-width:767px){.ul-modal--backdrop{align-items:flex-end;padding:0}.ul-modal__panel{width:100%;max-width:100%;border-radius:24px 24px 0 0;max-height:calc(100dvh - 32px);margin-top:auto;border-bottom:none}.ul-modal__panel--bottom-sheet{border-bottom:none}.ul-modal__panel--fullscreen-mobile{position:fixed;inset:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border-radius:0;border:none}}.ul-modal__footer{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:16px;flex-shrink:0;justify-content:flex-end}\n"] }]
|
|
1804
|
+
}], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], confirmLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmLabel", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], customClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "customClass", required: false }] }], fullScreenInMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullScreenInMobile", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], confirmed: [{ type: i0.Output, args: ["confirmed"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }], onEscape: [{
|
|
1805
|
+
type: HostListener,
|
|
1806
|
+
args: ['document:keydown.escape']
|
|
1807
|
+
}] } });
|
|
1808
|
+
|
|
1809
|
+
/**
|
|
1810
|
+
* Picker for a hierarchical category tree of unbounded depth: a closed field
|
|
1811
|
+
* that opens a drill-down + search modal (one level of children at a time,
|
|
1812
|
+
* with a breadcrumb trail back to root) and resolves to a single leaf
|
|
1813
|
+
* node's id. Implements FormValueControl for Signal Forms [formField]. Use
|
|
1814
|
+
* [(value)] for two-way binding.
|
|
1815
|
+
*
|
|
1816
|
+
* Rows are real buttons (ul-list-item), so Tab/Shift+Tab and Enter/Space
|
|
1817
|
+
* already give full keyboard access without extra arrow-key wiring — unlike
|
|
1818
|
+
* ul-search-select's single-line combobox overlay, there's no need for
|
|
1819
|
+
* ComboboxState here.
|
|
1820
|
+
*
|
|
1821
|
+
* @example
|
|
1822
|
+
* <ul-category-picker label="Category" [nodes]="categoryNodes" [(value)]="categoryId" />
|
|
1823
|
+
*/
|
|
1824
|
+
class CategoryPickerComponent {
|
|
1825
|
+
size = input('md', /* @ts-ignore */
|
|
1826
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
1827
|
+
label = input(null, /* @ts-ignore */
|
|
1828
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
1829
|
+
helperText = input(null, /* @ts-ignore */
|
|
1830
|
+
...(ngDevMode ? [{ debugName: "helperText" }] : /* istanbul ignore next */ []));
|
|
1831
|
+
errorText = input(null, /* @ts-ignore */
|
|
1832
|
+
...(ngDevMode ? [{ debugName: "errorText" }] : /* istanbul ignore next */ []));
|
|
1833
|
+
error = input(false, /* @ts-ignore */
|
|
1834
|
+
...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
|
|
1835
|
+
disabled = input(false, /* @ts-ignore */
|
|
1836
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
1837
|
+
required = input(false, /* @ts-ignore */
|
|
1838
|
+
...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
|
|
1839
|
+
showRequiredIndicator = input(true, /* @ts-ignore */
|
|
1840
|
+
...(ngDevMode ? [{ debugName: "showRequiredIndicator" }] : /* istanbul ignore next */ []));
|
|
1841
|
+
placeholder = input('Select a category', /* @ts-ignore */
|
|
1842
|
+
...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
1843
|
+
searchPlaceholder = input('Search categories', /* @ts-ignore */
|
|
1844
|
+
...(ngDevMode ? [{ debugName: "searchPlaceholder" }] : /* istanbul ignore next */ []));
|
|
1845
|
+
modalTitle = input('Select a category', /* @ts-ignore */
|
|
1846
|
+
...(ngDevMode ? [{ debugName: "modalTitle" }] : /* istanbul ignore next */ []));
|
|
1847
|
+
rootLabel = input('All categories', /* @ts-ignore */
|
|
1848
|
+
...(ngDevMode ? [{ debugName: "rootLabel" }] : /* istanbul ignore next */ []));
|
|
1849
|
+
noResultsText = input('No results', /* @ts-ignore */
|
|
1850
|
+
...(ngDevMode ? [{ debugName: "noResultsText" }] : /* istanbul ignore next */ []));
|
|
1851
|
+
nodes = input([], /* @ts-ignore */
|
|
1852
|
+
...(ngDevMode ? [{ debugName: "nodes" }] : /* istanbul ignore next */ []));
|
|
1853
|
+
invalid = input(false, /* @ts-ignore */
|
|
1854
|
+
...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
|
|
1855
|
+
errors = input([], /* @ts-ignore */
|
|
1856
|
+
...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
1857
|
+
/** Emitted when the modal closes, whether or not a value was picked — mirrors ul-select's touch. */
|
|
1858
|
+
touch = output();
|
|
1859
|
+
value = model(null, /* @ts-ignore */
|
|
1860
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
1861
|
+
ids = createFormFieldIds('ul-category-picker');
|
|
1862
|
+
open = signal(false, /* @ts-ignore */
|
|
1863
|
+
...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
1864
|
+
currentParentId = signal(null, /* @ts-ignore */
|
|
1865
|
+
...(ngDevMode ? [{ debugName: "currentParentId" }] : /* istanbul ignore next */ []));
|
|
1866
|
+
query = signal('', /* @ts-ignore */
|
|
1867
|
+
...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
|
|
1868
|
+
hasError = computed(() => this.error() || this.invalid(), /* @ts-ignore */
|
|
1869
|
+
...(ngDevMode ? [{ debugName: "hasError" }] : /* istanbul ignore next */ []));
|
|
1870
|
+
describedBy = computed(() => getFormFieldDescribedBy(this.ids.helperId, this.ids.errorId, !!this.helperText(), this.hasError(), !!this.errorText() || this.errors().length > 0), /* @ts-ignore */
|
|
1871
|
+
...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
|
|
1872
|
+
nodesById = computed(() => new Map(this.nodes().map((node) => [node.id, node])), /* @ts-ignore */
|
|
1873
|
+
...(ngDevMode ? [{ debugName: "nodesById" }] : /* istanbul ignore next */ []));
|
|
1874
|
+
selectedNode = computed(() => {
|
|
1875
|
+
const id = this.value();
|
|
1876
|
+
return id == null ? null : (this.nodesById().get(id) ?? null);
|
|
1877
|
+
}, /* @ts-ignore */
|
|
1878
|
+
...(ngDevMode ? [{ debugName: "selectedNode" }] : /* istanbul ignore next */ []));
|
|
1879
|
+
selectedLabel = computed(() => {
|
|
1880
|
+
const node = this.selectedNode();
|
|
1881
|
+
return node ? this.ancestorLabels(node.id).join(' › ') : '';
|
|
1882
|
+
}, /* @ts-ignore */
|
|
1883
|
+
...(ngDevMode ? [{ debugName: "selectedLabel" }] : /* istanbul ignore next */ []));
|
|
1884
|
+
currentChildren = computed(() => this.nodes().filter((node) => node.parentId === this.currentParentId()), /* @ts-ignore */
|
|
1885
|
+
...(ngDevMode ? [{ debugName: "currentChildren" }] : /* istanbul ignore next */ []));
|
|
1886
|
+
/** Root→current ancestor chain, for the breadcrumb trail (empty at the root level). */
|
|
1887
|
+
breadcrumb = computed(() => {
|
|
1888
|
+
const parentId = this.currentParentId();
|
|
1889
|
+
return parentId == null ? [] : this.ancestorNodes(parentId);
|
|
1890
|
+
}, /* @ts-ignore */
|
|
1891
|
+
...(ngDevMode ? [{ debugName: "breadcrumb" }] : /* istanbul ignore next */ []));
|
|
1892
|
+
normalizedQuery = computed(() => this.query().trim().toLowerCase(), /* @ts-ignore */
|
|
1893
|
+
...(ngDevMode ? [{ debugName: "normalizedQuery" }] : /* istanbul ignore next */ []));
|
|
1894
|
+
isSearching = computed(() => this.normalizedQuery().length > 0, /* @ts-ignore */
|
|
1895
|
+
...(ngDevMode ? [{ debugName: "isSearching" }] : /* istanbul ignore next */ []));
|
|
1896
|
+
searchResults = computed(() => {
|
|
1897
|
+
const q = this.normalizedQuery();
|
|
1898
|
+
if (!q)
|
|
1899
|
+
return [];
|
|
1900
|
+
return this.nodes()
|
|
1901
|
+
.filter((node) => node.isLeaf && node.label.toLowerCase().includes(q))
|
|
1902
|
+
.map((node) => ({
|
|
1903
|
+
node,
|
|
1904
|
+
breadcrumb: this.ancestorLabels(node.id).slice(0, -1).join(' › '),
|
|
1905
|
+
}));
|
|
1906
|
+
}, /* @ts-ignore */
|
|
1907
|
+
...(ngDevMode ? [{ debugName: "searchResults" }] : /* istanbul ignore next */ []));
|
|
1908
|
+
hasNoResults = computed(() => this.isSearching() && this.searchResults().length === 0, /* @ts-ignore */
|
|
1909
|
+
...(ngDevMode ? [{ debugName: "hasNoResults" }] : /* istanbul ignore next */ []));
|
|
1910
|
+
openPicker() {
|
|
1911
|
+
if (this.disabled())
|
|
1912
|
+
return;
|
|
1913
|
+
const selected = this.selectedNode();
|
|
1914
|
+
this.currentParentId.set(selected ? selected.parentId : null);
|
|
1915
|
+
this.query.set('');
|
|
1916
|
+
this.open.set(true);
|
|
1917
|
+
}
|
|
1918
|
+
closePicker() {
|
|
1919
|
+
this.open.set(false);
|
|
1920
|
+
this.touch.emit();
|
|
1921
|
+
}
|
|
1922
|
+
selectNode(node) {
|
|
1923
|
+
if (node.isLeaf) {
|
|
1924
|
+
this.value.set(node.id);
|
|
1925
|
+
this.closePicker();
|
|
1926
|
+
}
|
|
1927
|
+
else {
|
|
1928
|
+
this.currentParentId.set(node.id);
|
|
1929
|
+
this.query.set('');
|
|
1930
|
+
}
|
|
1931
|
+
}
|
|
1932
|
+
goToBreadcrumb(parentId) {
|
|
1933
|
+
this.currentParentId.set(parentId);
|
|
1934
|
+
this.query.set('');
|
|
1935
|
+
}
|
|
1936
|
+
ancestorNodes(id) {
|
|
1937
|
+
const chain = [];
|
|
1938
|
+
let current = this.nodesById().get(id);
|
|
1939
|
+
while (current) {
|
|
1940
|
+
chain.unshift(current);
|
|
1941
|
+
current = current.parentId == null ? undefined : this.nodesById().get(current.parentId);
|
|
1942
|
+
}
|
|
1943
|
+
return chain;
|
|
1944
|
+
}
|
|
1945
|
+
ancestorLabels(id) {
|
|
1946
|
+
return this.ancestorNodes(id).map((node) => node.label);
|
|
1947
|
+
}
|
|
1948
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: CategoryPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1949
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: CategoryPickerComponent, isStandalone: true, selector: "ul-category-picker", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: true, isRequired: false, transformFunction: null }, errorText: { classPropertyName: "errorText", publicName: "errorText", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showRequiredIndicator: { classPropertyName: "showRequiredIndicator", publicName: "showRequiredIndicator", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, modalTitle: { classPropertyName: "modalTitle", publicName: "modalTitle", isSignal: true, isRequired: false, transformFunction: null }, rootLabel: { classPropertyName: "rootLabel", publicName: "rootLabel", isSignal: true, isRequired: false, transformFunction: null }, noResultsText: { classPropertyName: "noResultsText", publicName: "noResultsText", isSignal: true, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touch: "touch", value: "valueChange" }, ngImport: i0, template: "<div\n class=\"ul-category-picker ul-category-picker--{{ size() }}\"\n [class.ul-category-picker--disabled]=\"disabled()\"\n [class.ul-category-picker--error]=\"hasError()\"\n [class.ul-category-picker--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 <button\n type=\"button\"\n [id]=\"ids.controlId\"\n class=\"ul-category-picker__control\"\n [disabled]=\"disabled()\"\n (click)=\"openPicker()\"\n >\n <span\n class=\"ul-category-picker__control-text\"\n [class.ul-category-picker__control-text--placeholder]=\"!selectedNode()\"\n >\n {{ selectedLabel() || placeholder() }}\n </span>\n <ul-icon size=\"5\" icon=\"chevron_down\" />\n </button>\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\n<ul-modal\n variant=\"bottom-sheet\"\n [fullScreenInMobile]=\"true\"\n [(open)]=\"open\"\n [title]=\"modalTitle()\"\n (closed)=\"closePicker()\"\n>\n @if (open()) {\n <div class=\"ul-category-picker__modal\">\n <ul-input\n [controlId]=\"ids.controlId + '-search'\"\n [value]=\"query()\"\n (valueChange)=\"query.set($event)\"\n [placeholder]=\"searchPlaceholder()\"\n [label]=\"null\"\n [helperText]=\"null\"\n [autocomplete]=\"'off'\"\n >\n <ng-container ul-input-right-elements>\n <ul-icon size=\"5\" icon=\"search\" />\n </ng-container>\n </ul-input>\n\n @if (isSearching()) {\n <div class=\"ul-category-picker__list ul-scrollable\" role=\"listbox\">\n @if (hasNoResults()) {\n <div class=\"ul-category-picker__empty\" role=\"status\">{{ noResultsText() }}</div>\n } @else {\n @for (result of searchResults(); track result.node.id) {\n <ul-list-item theme=\"ghost-white\" (click)=\"selectNode(result.node)\">\n <ng-container ul-list-item-before-label>\n @if (result.node.icon) {\n <ul-icon size=\"5\" [icon]=\"result.node.icon\" />\n }\n </ng-container>\n <ng-container ul-list-item-label>\n <div class=\"ul-category-picker__option-label\">{{ result.node.label }}</div>\n @if (result.breadcrumb) {\n <div class=\"ul-category-picker__option-breadcrumb\">{{ result.breadcrumb }}</div>\n }\n </ng-container>\n </ul-list-item>\n }\n }\n </div>\n } @else {\n @if (breadcrumb().length) {\n <div class=\"ul-category-picker__breadcrumb\">\n <button\n type=\"button\"\n class=\"ul-category-picker__breadcrumb-item\"\n (click)=\"goToBreadcrumb(null)\"\n >\n {{ rootLabel() }}\n </button>\n @for (ancestor of breadcrumb(); track ancestor.id; let last = $last) {\n <ul-icon size=\"4\" icon=\"chevron_right\" />\n @if (last) {\n <span\n class=\"ul-category-picker__breadcrumb-item ul-category-picker__breadcrumb-item--current\"\n aria-current=\"page\"\n >\n {{ ancestor.label }}\n </span>\n } @else {\n <button\n type=\"button\"\n class=\"ul-category-picker__breadcrumb-item\"\n (click)=\"goToBreadcrumb(ancestor.id)\"\n >\n {{ ancestor.label }}\n </button>\n }\n }\n </div>\n }\n\n <div class=\"ul-category-picker__list ul-scrollable\" role=\"listbox\">\n @for (node of currentChildren(); track node.id) {\n <ul-list-item theme=\"ghost-white\" (click)=\"selectNode(node)\">\n <ng-container ul-list-item-before-label>\n @if (node.icon) {\n <ul-icon size=\"5\" [icon]=\"node.icon\" />\n }\n </ng-container>\n <ng-container ul-list-item-label>{{ node.label }}</ng-container>\n <ng-container ul-list-item-after-label>\n @if (!node.isLeaf) {\n <ul-icon size=\"5\" icon=\"chevron_right\" />\n }\n </ng-container>\n </ul-list-item>\n }\n </div>\n }\n </div>\n }\n</ul-modal>\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-category-picker{white-space:nowrap;box-sizing:border-box;display:flex;flex-direction:column;width:100%;gap:4px}.ul-category-picker__control{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:40px;padding:0 12px;border:2px solid rgba(255,255,255,.1);border-radius:8px;background-color:transparent;cursor:pointer;transition:border-color .25s cubic-bezier(.4,0,.2,1)}.ul-category-picker__control:hover{border-color:#ffffff4d}.ul-category-picker__control:focus-visible{border-color:#ffffff80}.ul-category-picker__control-text{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400;color:#fff;overflow:hidden;text-overflow:ellipsis}.ul-category-picker__control-text--placeholder{color:#ffffffb3}.ul-category-picker--disabled .ul-category-picker__control{opacity:.6;cursor:not-allowed}.ul-category-picker--disabled .ul-category-picker__control:hover,.ul-category-picker--disabled .ul-category-picker__control:focus-visible{border-color:#ffffff1a}.ul-category-picker--error .ul-category-picker__control{border-color:#f69d9d}.ul-category-picker__modal{display:flex;flex-direction:column;gap:12px;min-height:0}.ul-category-picker__breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.ul-category-picker__breadcrumb-item{font-weight:400;background:none;border:none;padding:0;color:#ffffffb3;cursor:pointer}.ul-category-picker__breadcrumb-item:hover{color:#fff}.ul-category-picker__breadcrumb-item--current{color:#fff;cursor:default}.ul-category-picker__list{display:flex;flex-direction:column;gap:4px;overflow-y:auto}.ul-category-picker__option-label{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-category-picker__option-breadcrumb{font-weight:400;color:#ffffffb3}.ul-category-picker__empty{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400;color:#ffffffb3;padding:12px}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "ul-icon", inputs: ["size", "weight", "icon"] }, { kind: "component", type: InputComponent, selector: "ul-input", inputs: ["type", "size", "appearance", "error", "disabled", "readOnly", "required", "showRequiredIndicator", "placeholder", "label", "helperText", "errorText", "maxLength", "minLength", "pattern", "step", "autocomplete", "controlId", "showPasswordLabel", "hidePasswordLabel", "invalid", "errors", "touched", "value"], outputs: ["touchedChange", "touch", "valueChange", "inputBlur", "inputFocus", "inputEnter"] }, { kind: "component", type: ListItemComponent, selector: "ul-list-item", inputs: ["theme", "disabled", "hideFocusOutline", "selected", "loading"] }, { kind: "component", type: ModalComponent, selector: "ul-modal", inputs: ["open", "variant", "title", "closeOnBackdropClick", "showCloseButton", "confirmLabel", "cancelLabel", "customClass", "fullScreenInMobile"], outputs: ["openChange", "closed", "confirmed", "cancelled"] }, { kind: "component", type: FormFieldLabelComponent, selector: "ul-form-field-label", inputs: ["label", "required", "for", "size", "showRequiredIndicator"] }, { kind: "component", type: FormFieldHelperComponent, selector: "ul-form-field-helper", inputs: ["id", "helperText", "errorText", "error"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
1950
|
+
}
|
|
1951
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: CategoryPickerComponent, decorators: [{
|
|
1952
|
+
type: Component,
|
|
1953
|
+
args: [{ selector: 'ul-category-picker', imports: [
|
|
1954
|
+
IconComponent,
|
|
1955
|
+
InputComponent,
|
|
1956
|
+
ListItemComponent,
|
|
1957
|
+
ModalComponent,
|
|
1958
|
+
FormFieldLabelComponent,
|
|
1959
|
+
FormFieldHelperComponent,
|
|
1960
|
+
], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"ul-category-picker ul-category-picker--{{ size() }}\"\n [class.ul-category-picker--disabled]=\"disabled()\"\n [class.ul-category-picker--error]=\"hasError()\"\n [class.ul-category-picker--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 <button\n type=\"button\"\n [id]=\"ids.controlId\"\n class=\"ul-category-picker__control\"\n [disabled]=\"disabled()\"\n (click)=\"openPicker()\"\n >\n <span\n class=\"ul-category-picker__control-text\"\n [class.ul-category-picker__control-text--placeholder]=\"!selectedNode()\"\n >\n {{ selectedLabel() || placeholder() }}\n </span>\n <ul-icon size=\"5\" icon=\"chevron_down\" />\n </button>\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\n<ul-modal\n variant=\"bottom-sheet\"\n [fullScreenInMobile]=\"true\"\n [(open)]=\"open\"\n [title]=\"modalTitle()\"\n (closed)=\"closePicker()\"\n>\n @if (open()) {\n <div class=\"ul-category-picker__modal\">\n <ul-input\n [controlId]=\"ids.controlId + '-search'\"\n [value]=\"query()\"\n (valueChange)=\"query.set($event)\"\n [placeholder]=\"searchPlaceholder()\"\n [label]=\"null\"\n [helperText]=\"null\"\n [autocomplete]=\"'off'\"\n >\n <ng-container ul-input-right-elements>\n <ul-icon size=\"5\" icon=\"search\" />\n </ng-container>\n </ul-input>\n\n @if (isSearching()) {\n <div class=\"ul-category-picker__list ul-scrollable\" role=\"listbox\">\n @if (hasNoResults()) {\n <div class=\"ul-category-picker__empty\" role=\"status\">{{ noResultsText() }}</div>\n } @else {\n @for (result of searchResults(); track result.node.id) {\n <ul-list-item theme=\"ghost-white\" (click)=\"selectNode(result.node)\">\n <ng-container ul-list-item-before-label>\n @if (result.node.icon) {\n <ul-icon size=\"5\" [icon]=\"result.node.icon\" />\n }\n </ng-container>\n <ng-container ul-list-item-label>\n <div class=\"ul-category-picker__option-label\">{{ result.node.label }}</div>\n @if (result.breadcrumb) {\n <div class=\"ul-category-picker__option-breadcrumb\">{{ result.breadcrumb }}</div>\n }\n </ng-container>\n </ul-list-item>\n }\n }\n </div>\n } @else {\n @if (breadcrumb().length) {\n <div class=\"ul-category-picker__breadcrumb\">\n <button\n type=\"button\"\n class=\"ul-category-picker__breadcrumb-item\"\n (click)=\"goToBreadcrumb(null)\"\n >\n {{ rootLabel() }}\n </button>\n @for (ancestor of breadcrumb(); track ancestor.id; let last = $last) {\n <ul-icon size=\"4\" icon=\"chevron_right\" />\n @if (last) {\n <span\n class=\"ul-category-picker__breadcrumb-item ul-category-picker__breadcrumb-item--current\"\n aria-current=\"page\"\n >\n {{ ancestor.label }}\n </span>\n } @else {\n <button\n type=\"button\"\n class=\"ul-category-picker__breadcrumb-item\"\n (click)=\"goToBreadcrumb(ancestor.id)\"\n >\n {{ ancestor.label }}\n </button>\n }\n }\n </div>\n }\n\n <div class=\"ul-category-picker__list ul-scrollable\" role=\"listbox\">\n @for (node of currentChildren(); track node.id) {\n <ul-list-item theme=\"ghost-white\" (click)=\"selectNode(node)\">\n <ng-container ul-list-item-before-label>\n @if (node.icon) {\n <ul-icon size=\"5\" [icon]=\"node.icon\" />\n }\n </ng-container>\n <ng-container ul-list-item-label>{{ node.label }}</ng-container>\n <ng-container ul-list-item-after-label>\n @if (!node.isLeaf) {\n <ul-icon size=\"5\" icon=\"chevron_right\" />\n }\n </ng-container>\n </ul-list-item>\n }\n </div>\n }\n </div>\n }\n</ul-modal>\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-category-picker{white-space:nowrap;box-sizing:border-box;display:flex;flex-direction:column;width:100%;gap:4px}.ul-category-picker__control{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:40px;padding:0 12px;border:2px solid rgba(255,255,255,.1);border-radius:8px;background-color:transparent;cursor:pointer;transition:border-color .25s cubic-bezier(.4,0,.2,1)}.ul-category-picker__control:hover{border-color:#ffffff4d}.ul-category-picker__control:focus-visible{border-color:#ffffff80}.ul-category-picker__control-text{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400;color:#fff;overflow:hidden;text-overflow:ellipsis}.ul-category-picker__control-text--placeholder{color:#ffffffb3}.ul-category-picker--disabled .ul-category-picker__control{opacity:.6;cursor:not-allowed}.ul-category-picker--disabled .ul-category-picker__control:hover,.ul-category-picker--disabled .ul-category-picker__control:focus-visible{border-color:#ffffff1a}.ul-category-picker--error .ul-category-picker__control{border-color:#f69d9d}.ul-category-picker__modal{display:flex;flex-direction:column;gap:12px;min-height:0}.ul-category-picker__breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.ul-category-picker__breadcrumb-item{font-weight:400;background:none;border:none;padding:0;color:#ffffffb3;cursor:pointer}.ul-category-picker__breadcrumb-item:hover{color:#fff}.ul-category-picker__breadcrumb-item--current{color:#fff;cursor:default}.ul-category-picker__list{display:flex;flex-direction:column;gap:4px;overflow-y:auto}.ul-category-picker__option-label{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-category-picker__option-breadcrumb{font-weight:400;color:#ffffffb3}.ul-category-picker__empty{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400;color:#ffffffb3;padding:12px}\n"] }]
|
|
1961
|
+
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", 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 }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], modalTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "modalTitle", required: false }] }], rootLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootLabel", required: false }] }], noResultsText: [{ type: i0.Input, args: [{ isSignal: true, alias: "noResultsText", required: false }] }], nodes: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodes", 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"] }] } });
|
|
1962
|
+
|
|
1963
|
+
/**
|
|
1964
|
+
* A collapsible content component that supports both text and icon variants.
|
|
1965
|
+
* Uses CSS transitions for smooth animations and provides accessibility features.
|
|
1966
|
+
*
|
|
1967
|
+
* @example
|
|
1968
|
+
* ```html
|
|
1969
|
+
* <ul-collapse [maxHeight]="300" variant="text">
|
|
1970
|
+
* <div>Collapsible content here</div>
|
|
1971
|
+
* </ul-collapse>
|
|
1972
|
+
* ```
|
|
1973
|
+
*/
|
|
1974
|
+
class CollapseComponent {
|
|
1975
|
+
destroyRef = inject(DestroyRef);
|
|
1976
|
+
content;
|
|
1977
|
+
/**
|
|
1978
|
+
* The visual variant of the collapse toggle.
|
|
1979
|
+
* @default 'text'
|
|
1980
|
+
*/
|
|
1981
|
+
variant = input('text', /* @ts-ignore */
|
|
1982
|
+
...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
1983
|
+
/**
|
|
1984
|
+
* Controls the collapsed state of the component.
|
|
1985
|
+
* @default true
|
|
1986
|
+
*/
|
|
1987
|
+
collapsed = model(true, /* @ts-ignore */
|
|
1988
|
+
...(ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []));
|
|
1989
|
+
/**
|
|
1990
|
+
* Maximum height of the content when collapsed.
|
|
1991
|
+
* @default 200
|
|
1992
|
+
*/
|
|
1993
|
+
maxHeight = input.required(/* @ts-ignore */
|
|
1994
|
+
...(ngDevMode ? [{ debugName: "maxHeight" }] : /* istanbul ignore next */ []));
|
|
1995
|
+
/**
|
|
1996
|
+
* Custom label for the expand action.
|
|
1997
|
+
* @default 'See more'
|
|
1998
|
+
*/
|
|
1999
|
+
expandLabel = input('See more', /* @ts-ignore */
|
|
2000
|
+
...(ngDevMode ? [{ debugName: "expandLabel" }] : /* istanbul ignore next */ []));
|
|
2001
|
+
/**
|
|
2002
|
+
* Custom label for the collapse action.
|
|
2003
|
+
* @default 'See less'
|
|
2004
|
+
*/
|
|
2005
|
+
collapseLabel = input('See less', /* @ts-ignore */
|
|
2006
|
+
...(ngDevMode ? [{ debugName: "collapseLabel" }] : /* istanbul ignore next */ []));
|
|
2007
|
+
/** Current full height of the content */
|
|
2008
|
+
fullHeight = signal(0, /* @ts-ignore */
|
|
2009
|
+
...(ngDevMode ? [{ debugName: "fullHeight" }] : /* istanbul ignore next */ []));
|
|
2010
|
+
/** Whether the content is collapsible based on its height */
|
|
2011
|
+
isCollapsible = computed(() => {
|
|
2012
|
+
const max = Math.max(0, this.maxHeight());
|
|
2013
|
+
return this.fullHeight() > max;
|
|
2014
|
+
}, /* @ts-ignore */
|
|
2015
|
+
...(ngDevMode ? [{ debugName: "isCollapsible" }] : /* istanbul ignore next */ []));
|
|
2016
|
+
ngAfterViewInit() {
|
|
2017
|
+
// Initial height calculation
|
|
2018
|
+
this.updateFullHeight();
|
|
2019
|
+
// Listen for window resize events to recalculate height
|
|
2020
|
+
const resizeSubscription = fromEvent(window, 'resize')
|
|
2021
|
+
.pipe(debounceTime(100))
|
|
2022
|
+
.subscribe(() => this.updateFullHeight());
|
|
2023
|
+
this.destroyRef.onDestroy(() => resizeSubscription.unsubscribe());
|
|
1649
2024
|
}
|
|
1650
2025
|
/** Updates the full height of the content */
|
|
1651
2026
|
updateFullHeight() {
|
|
@@ -1829,77 +2204,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
1829
2204
|
args: [{ selector: 'ul-dock-item', imports: [IconComponent], encapsulation: ViewEncapsulation.None, template: "<button\n type=\"button\"\n class=\"ul-dock-item\"\n [class.ul-dock-item--active]=\"active()\"\n [class.ul-dock-item--accent]=\"variant() === 'accent'\"\n [disabled]=\"disabled()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n>\n @if (hasContentSlot()) {\n <ng-content select=\"[ul-dock-item-content]\" />\n } @else {\n <ul-icon [icon]=\"icon()!\" size=\"6\" />\n @if (label()) {\n <span class=\"ul-dock-item__label\">{{ label() }}</span>\n }\n }\n @if (badge()) {\n <span class=\"ul-dock-item__badge\">{{ badge() }}</span>\n }\n</button>\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-dock-item{position:relative;cursor:pointer;border:none;background:none;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;flex:1;padding:4px;border-radius:8px;color:#ffffffb3;font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-dock-item:focus-visible,.ul-dock-item:focus{outline-offset:2px;outline:rgba(255,255,255,.3) solid 2px}.ul-dock-item--active{color:#c2a8ff}.ul-dock-item--accent{color:#fff}.ul-dock-item--accent .ul-icon{background-color:#6f3de0;border-radius:4096px;padding:8px;box-sizing:content-box}.ul-dock-item--accent:hover .ul-icon{background-color:#7e4af7}.ul-dock-item--accent.ul-dock-item--active .ul-icon{background-color:#5935af}.ul-dock-item__label{line-height:1}.ul-dock-item__badge{position:absolute;top:4px;right:calc(50% - 16px);min-width:16px;height:16px;padding:0 4px;border-radius:4096px;background-color:#6f3de0;color:#fff;font-size:10px;line-height:16px;text-align:center}.ul-dock-item:disabled,.ul-dock-item[disabled]{cursor:not-allowed;color:#ffffff4d}\n"] }]
|
|
1830
2205
|
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], contentSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DockItemContentSlotDirective), { isSignal: true }] }] } });
|
|
1831
2206
|
|
|
1832
|
-
class ListItemComponent {
|
|
1833
|
-
checkbox = contentChild(CheckboxComponent, /* @ts-ignore */
|
|
1834
|
-
...(ngDevMode ? [{ debugName: "checkbox" }] : /* istanbul ignore next */ []));
|
|
1835
|
-
theme = input('ghost-white', /* @ts-ignore */
|
|
1836
|
-
...(ngDevMode ? [{ debugName: "theme" }] : /* istanbul ignore next */ []));
|
|
1837
|
-
disabled = input(false, /* @ts-ignore */
|
|
1838
|
-
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
1839
|
-
hideFocusOutline = input(false, /* @ts-ignore */
|
|
1840
|
-
...(ngDevMode ? [{ debugName: "hideFocusOutline" }] : /* istanbul ignore next */ []));
|
|
1841
|
-
selected = input(false, /* @ts-ignore */
|
|
1842
|
-
...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
|
|
1843
|
-
loading = input(false, /* @ts-ignore */
|
|
1844
|
-
...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
1845
|
-
clickHandler() {
|
|
1846
|
-
if (this.disabled() || this.loading()) {
|
|
1847
|
-
return;
|
|
1848
|
-
}
|
|
1849
|
-
if (!this.disabled()) {
|
|
1850
|
-
this.checkbox()?.checked.update((value) => !value);
|
|
1851
|
-
}
|
|
1852
|
-
}
|
|
1853
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1854
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.0", type: ListItemComponent, isStandalone: true, selector: "ul-list-item", inputs: { theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hideFocusOutline: { classPropertyName: "hideFocusOutline", publicName: "hideFocusOutline", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "checkbox", first: true, predicate: CheckboxComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
1855
|
-
<ul-skeleton [show]="loading()" variant="rect">
|
|
1856
|
-
<button
|
|
1857
|
-
type="button"
|
|
1858
|
-
class="ul-list-item ul-list-item--{{ theme() }}"
|
|
1859
|
-
[class.ul-list-item--no-focus-outline]="hideFocusOutline()"
|
|
1860
|
-
[class.ul-list-item--selected]="selected() || !!checkbox()?.checked()"
|
|
1861
|
-
(click)="clickHandler()"
|
|
1862
|
-
[disabled]="disabled() || loading()"
|
|
1863
|
-
>
|
|
1864
|
-
<div class="ul-list-item__before-label">
|
|
1865
|
-
<ng-content select="[ul-list-item-before-label]" />
|
|
1866
|
-
</div>
|
|
1867
|
-
<div class="ul-list-item__label">
|
|
1868
|
-
<ng-content select="[ul-list-item-label]" />
|
|
1869
|
-
</div>
|
|
1870
|
-
<div class="ul-list-item__after-label">
|
|
1871
|
-
<ng-content select="[ul-list-item-after-label]" />
|
|
1872
|
-
</div>
|
|
1873
|
-
</button>
|
|
1874
|
-
</ul-skeleton>
|
|
1875
|
-
`, 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}.ul-list-item{cursor:pointer;border:none;white-space:nowrap;box-sizing:border-box;text-align:start;display:flex;align-items:center;width:100%;gap:8px;border-radius:8px;padding:8px 12px;color:#ffffffb3;font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-list-item:hover{background-color:#fff3}.ul-list-item:active{background-color:#ffffff1a}.ul-list-item:selected{background-color:#fff3}.ul-list-item{background-color:#fff0;color:inherit}.ul-list-item:disabled,.ul-list-item[disabled]{background-color:#fff0}.ul-list-item:focus-visible{outline-offset:2px;outline:rgba(255,255,255,.3) solid 2px}.ul-list-item--no-focus-outline:focus-visible{outline:none;outline-offset:0}.ul-list-item--selected{background-color:transparent}.ul-list-item--transparent-white{background-color:#ffffff1a;color:inherit}.ul-list-item--transparent-white:hover{background-color:#fff3}.ul-list-item--transparent-white:active{background-color:#ffffff1a}.ul-list-item--transparent-white:selected{background-color:#fff3}.ul-list-item--transparent-white:disabled,.ul-list-item--transparent-white[disabled]{background-color:#ffffff0d}.ul-list-item--transparent-white{background-color:transparent}.ul-list-item--outline-white{background-color:transparent;border:1px solid rgba(255,255,255,.3);color:#fff}.ul-list-item--outline-white:hover:not(:disabled):not([disabled]){border-color:#fff}.ul-list-item--outline-white:active:not(:disabled):not([disabled]){border-color:#ffffff80}.ul-list-item--outline-white:disabled,.ul-list-item--outline-white[disabled]{border-color:#6c6c6c;color:#ffffff4d}.ul-list-item--outline-purple{background-color:transparent;border:1px solid #c2a8ff;color:#c2a8ff}.ul-list-item--outline-purple:hover:not(:disabled):not([disabled]){border-color:#c2a8ff}.ul-list-item--outline-purple:active:not(:disabled):not([disabled]){border-color:#c2a8ff}.ul-list-item--outline-purple:disabled,.ul-list-item--outline-purple[disabled]{border-color:#6c6c6c;color:#ffffff4d}.ul-list-item--transparent-white.ul-list-item--selected{background-color:#fff3}.ul-list-item__label{flex:1;color:#fff}.ul-list-item__before-label,.ul-list-item__after-label{display:flex;align-items:center;gap:8px}.ul-list-item .ul--icon{color:#fff}.ul-list-item:disabled,.ul-list-item[disabled]{cursor:not-allowed;color:#ffffff4d}.ul-list-item:disabled .ul-list-item__label,.ul-list-item[disabled] .ul-list-item__label{color:#ffffff4d}\n"], dependencies: [{ kind: "component", type: SkeletonComponent, selector: "ul-skeleton", inputs: ["variant", "width", "height", "lines", "borderRadius", "show"] }] });
|
|
1876
|
-
}
|
|
1877
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ListItemComponent, decorators: [{
|
|
1878
|
-
type: Component,
|
|
1879
|
-
args: [{ selector: 'ul-list-item', imports: [SkeletonComponent], template: `
|
|
1880
|
-
<ul-skeleton [show]="loading()" variant="rect">
|
|
1881
|
-
<button
|
|
1882
|
-
type="button"
|
|
1883
|
-
class="ul-list-item ul-list-item--{{ theme() }}"
|
|
1884
|
-
[class.ul-list-item--no-focus-outline]="hideFocusOutline()"
|
|
1885
|
-
[class.ul-list-item--selected]="selected() || !!checkbox()?.checked()"
|
|
1886
|
-
(click)="clickHandler()"
|
|
1887
|
-
[disabled]="disabled() || loading()"
|
|
1888
|
-
>
|
|
1889
|
-
<div class="ul-list-item__before-label">
|
|
1890
|
-
<ng-content select="[ul-list-item-before-label]" />
|
|
1891
|
-
</div>
|
|
1892
|
-
<div class="ul-list-item__label">
|
|
1893
|
-
<ng-content select="[ul-list-item-label]" />
|
|
1894
|
-
</div>
|
|
1895
|
-
<div class="ul-list-item__after-label">
|
|
1896
|
-
<ng-content select="[ul-list-item-after-label]" />
|
|
1897
|
-
</div>
|
|
1898
|
-
</button>
|
|
1899
|
-
</ul-skeleton>
|
|
1900
|
-
`, 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-list-item{cursor:pointer;border:none;white-space:nowrap;box-sizing:border-box;text-align:start;display:flex;align-items:center;width:100%;gap:8px;border-radius:8px;padding:8px 12px;color:#ffffffb3;font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-list-item:hover{background-color:#fff3}.ul-list-item:active{background-color:#ffffff1a}.ul-list-item:selected{background-color:#fff3}.ul-list-item{background-color:#fff0;color:inherit}.ul-list-item:disabled,.ul-list-item[disabled]{background-color:#fff0}.ul-list-item:focus-visible{outline-offset:2px;outline:rgba(255,255,255,.3) solid 2px}.ul-list-item--no-focus-outline:focus-visible{outline:none;outline-offset:0}.ul-list-item--selected{background-color:transparent}.ul-list-item--transparent-white{background-color:#ffffff1a;color:inherit}.ul-list-item--transparent-white:hover{background-color:#fff3}.ul-list-item--transparent-white:active{background-color:#ffffff1a}.ul-list-item--transparent-white:selected{background-color:#fff3}.ul-list-item--transparent-white:disabled,.ul-list-item--transparent-white[disabled]{background-color:#ffffff0d}.ul-list-item--transparent-white{background-color:transparent}.ul-list-item--outline-white{background-color:transparent;border:1px solid rgba(255,255,255,.3);color:#fff}.ul-list-item--outline-white:hover:not(:disabled):not([disabled]){border-color:#fff}.ul-list-item--outline-white:active:not(:disabled):not([disabled]){border-color:#ffffff80}.ul-list-item--outline-white:disabled,.ul-list-item--outline-white[disabled]{border-color:#6c6c6c;color:#ffffff4d}.ul-list-item--outline-purple{background-color:transparent;border:1px solid #c2a8ff;color:#c2a8ff}.ul-list-item--outline-purple:hover:not(:disabled):not([disabled]){border-color:#c2a8ff}.ul-list-item--outline-purple:active:not(:disabled):not([disabled]){border-color:#c2a8ff}.ul-list-item--outline-purple:disabled,.ul-list-item--outline-purple[disabled]{border-color:#6c6c6c;color:#ffffff4d}.ul-list-item--transparent-white.ul-list-item--selected{background-color:#fff3}.ul-list-item__label{flex:1;color:#fff}.ul-list-item__before-label,.ul-list-item__after-label{display:flex;align-items:center;gap:8px}.ul-list-item .ul--icon{color:#fff}.ul-list-item:disabled,.ul-list-item[disabled]{cursor:not-allowed;color:#ffffff4d}.ul-list-item:disabled .ul-list-item__label,.ul-list-item[disabled] .ul-list-item__label{color:#ffffff4d}\n"] }]
|
|
1901
|
-
}], propDecorators: { checkbox: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CheckboxComponent), { isSignal: true }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], hideFocusOutline: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideFocusOutline", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }] } });
|
|
1902
|
-
|
|
1903
2207
|
/**
|
|
1904
2208
|
* Renders `items` as `ul-list-item` + `cdkMenuItem` rows inside an
|
|
1905
2209
|
* already-open `cdkMenu` panel. Shared by `ul-dropdown` (which passes
|
|
@@ -2293,11 +2597,11 @@ class DropdownComponent {
|
|
|
2293
2597
|
this.closed.emit();
|
|
2294
2598
|
}
|
|
2295
2599
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2296
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.0", type: DropdownComponent, isStandalone: true, selector: "ul-dropdown", inputs: { theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, menuTriggerIcons: { classPropertyName: "menuTriggerIcons", publicName: "menuTriggerIcons", isSignal: true, isRequired: false, transformFunction: null }, triggerIconOnly: { classPropertyName: "triggerIconOnly", publicName: "triggerIconOnly", isSignal: true, isRequired: false, transformFunction: null }, iconOnlyLabel: { classPropertyName: "iconOnlyLabel", publicName: "iconOnlyLabel", isSignal: true, isRequired: false, transformFunction: null }, selectedIndex: { classPropertyName: "selectedIndex", publicName: "selectedIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedIndex: "selectedIndexChange", selectedItemChange: "selectedItemChange", closed: "closed" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MenuTriggerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ul-dropdown\">\n <ul-menu-trigger\n [theme]=\"theme()\"\n [disabled]=\"disabled()\"\n [iconOnly]=\"triggerIconOnly()\"\n [iconOnlyLabel]=\"iconOnlyLabel()\"\n [label]=\"selectedItem().label\"\n [leftIcons]=\"selectedItem().leftIcons ?? []\"\n [rightIcons]=\"triggerRightIcons()\"\n [menuTemplate]=\"menu\"\n [menuId]=\"menuId\"\n [isOpen]=\"isOpen()\"\n (opened)=\"onMenuOpened()\"\n (closed)=\"onMenuClosed()\"\n />\n\n <ng-template #menu>\n <div class=\"ul-dropdown__backdrop\" (click)=\"closeMenu()\"></div>\n <div cdkMenu class=\"ul-dropdown__content ul-scrollable\" [id]=\"menuId\">\n <ul-menu-items\n [items]=\"items()\"\n [theme]=\"theme()\"\n [selectedIndex]=\"selectedIndex()\"\n (itemTriggered)=\"handleItemTriggered($event)\"\n />\n </div>\n </ng-template>\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-dropdown{display:inline-flex;flex-direction:column;width:100%;gap:4px}.ul-dropdown__backdrop{display:none}@media(max-width:1023px){.ul-dropdown__backdrop{display:block;position:fixed;inset:0;background-color:#0000004d}}.ul-dropdown__content{display:flex;flex-direction:column;gap:4px;background-color:#232323;border-radius:16px;padding:4px;margin:4px 0;max-height:316px;overflow-y:auto}@media(max-width:1023px){.ul-dropdown__content{position:fixed;inset:auto 0 0;width:100%;max-height:40vh;margin:0;border-radius:16px 16px 0 0;gap:16px;display:flex;flex-direction:column;overflow-y:auto;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-dropdown__content ul-list-item .ul-list-item{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}}\n"], dependencies: [{ kind: "directive", type: CdkMenu, selector: "[cdkMenu]", outputs: ["closed"], exportAs: ["cdkMenu"] }, { kind: "component", type: MenuItemsComponent, selector: "ul-menu-items", inputs: ["items", "theme", "selectedIndex"], outputs: ["itemTriggered"] }, { kind: "component", type: MenuTriggerComponent, selector: "ul-menu-trigger", inputs: ["theme", "disabled", "iconOnly", "iconOnlyLabel", "label", "leftIcons", "rightIcons", "menuTemplate", "menuId", "isOpen"], outputs: ["opened", "closed"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
2600
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.0", type: DropdownComponent, isStandalone: true, selector: "ul-dropdown", inputs: { theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, menuTriggerIcons: { classPropertyName: "menuTriggerIcons", publicName: "menuTriggerIcons", isSignal: true, isRequired: false, transformFunction: null }, triggerIconOnly: { classPropertyName: "triggerIconOnly", publicName: "triggerIconOnly", isSignal: true, isRequired: false, transformFunction: null }, iconOnlyLabel: { classPropertyName: "iconOnlyLabel", publicName: "iconOnlyLabel", isSignal: true, isRequired: false, transformFunction: null }, selectedIndex: { classPropertyName: "selectedIndex", publicName: "selectedIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedIndex: "selectedIndexChange", selectedItemChange: "selectedItemChange", closed: "closed" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MenuTriggerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ul-dropdown\">\n <ul-menu-trigger\n [theme]=\"theme()\"\n [disabled]=\"disabled()\"\n [iconOnly]=\"triggerIconOnly()\"\n [iconOnlyLabel]=\"iconOnlyLabel()\"\n [label]=\"selectedItem().label\"\n [leftIcons]=\"selectedItem().leftIcons ?? []\"\n [rightIcons]=\"triggerRightIcons()\"\n [menuTemplate]=\"menu\"\n [menuId]=\"menuId\"\n [isOpen]=\"isOpen()\"\n (opened)=\"onMenuOpened()\"\n (closed)=\"onMenuClosed()\"\n />\n\n <ng-template #menu>\n <div class=\"ul-dropdown__backdrop\" (click)=\"closeMenu()\"></div>\n <div cdkMenu class=\"ul-dropdown__content ul-scrollable\" [id]=\"menuId\">\n <ul-menu-items\n [items]=\"items()\"\n [theme]=\"theme()\"\n [selectedIndex]=\"selectedIndex()\"\n (itemTriggered)=\"handleItemTriggered($event)\"\n />\n </div>\n </ng-template>\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-dropdown{display:inline-flex;flex-direction:column;width:100%;gap:4px}.ul-dropdown__backdrop{display:none}@media(max-width:1023px){.ul-dropdown__backdrop{display:block;position:fixed;inset:0;background-color:#0000004d}}.ul-dropdown__content{display:flex;flex-direction:column;gap:4px;background-color:#232323;border-radius:16px;padding:4px;margin:4px 0;max-height:316px;overflow-y:auto}@media(max-width:1023px){.ul-dropdown__content{position:fixed;inset:auto 0 0;width:100%;max-height:40vh;margin:0;border-radius:16px 16px 0 0;gap:16px;display:flex;padding-bottom:8px;flex-direction:column;overflow-y:auto;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-dropdown__content ul-list-item .ul-list-item{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}}\n"], dependencies: [{ kind: "directive", type: CdkMenu, selector: "[cdkMenu]", outputs: ["closed"], exportAs: ["cdkMenu"] }, { kind: "component", type: MenuItemsComponent, selector: "ul-menu-items", inputs: ["items", "theme", "selectedIndex"], outputs: ["itemTriggered"] }, { kind: "component", type: MenuTriggerComponent, selector: "ul-menu-trigger", inputs: ["theme", "disabled", "iconOnly", "iconOnlyLabel", "label", "leftIcons", "rightIcons", "menuTemplate", "menuId", "isOpen"], outputs: ["opened", "closed"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
2297
2601
|
}
|
|
2298
2602
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
2299
2603
|
type: Component,
|
|
2300
|
-
args: [{ selector: 'ul-dropdown', imports: [CdkMenu, MenuItemsComponent, MenuTriggerComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"ul-dropdown\">\n <ul-menu-trigger\n [theme]=\"theme()\"\n [disabled]=\"disabled()\"\n [iconOnly]=\"triggerIconOnly()\"\n [iconOnlyLabel]=\"iconOnlyLabel()\"\n [label]=\"selectedItem().label\"\n [leftIcons]=\"selectedItem().leftIcons ?? []\"\n [rightIcons]=\"triggerRightIcons()\"\n [menuTemplate]=\"menu\"\n [menuId]=\"menuId\"\n [isOpen]=\"isOpen()\"\n (opened)=\"onMenuOpened()\"\n (closed)=\"onMenuClosed()\"\n />\n\n <ng-template #menu>\n <div class=\"ul-dropdown__backdrop\" (click)=\"closeMenu()\"></div>\n <div cdkMenu class=\"ul-dropdown__content ul-scrollable\" [id]=\"menuId\">\n <ul-menu-items\n [items]=\"items()\"\n [theme]=\"theme()\"\n [selectedIndex]=\"selectedIndex()\"\n (itemTriggered)=\"handleItemTriggered($event)\"\n />\n </div>\n </ng-template>\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-dropdown{display:inline-flex;flex-direction:column;width:100%;gap:4px}.ul-dropdown__backdrop{display:none}@media(max-width:1023px){.ul-dropdown__backdrop{display:block;position:fixed;inset:0;background-color:#0000004d}}.ul-dropdown__content{display:flex;flex-direction:column;gap:4px;background-color:#232323;border-radius:16px;padding:4px;margin:4px 0;max-height:316px;overflow-y:auto}@media(max-width:1023px){.ul-dropdown__content{position:fixed;inset:auto 0 0;width:100%;max-height:40vh;margin:0;border-radius:16px 16px 0 0;gap:16px;display:flex;flex-direction:column;overflow-y:auto;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-dropdown__content ul-list-item .ul-list-item{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}}\n"] }]
|
|
2604
|
+
args: [{ selector: 'ul-dropdown', imports: [CdkMenu, MenuItemsComponent, MenuTriggerComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"ul-dropdown\">\n <ul-menu-trigger\n [theme]=\"theme()\"\n [disabled]=\"disabled()\"\n [iconOnly]=\"triggerIconOnly()\"\n [iconOnlyLabel]=\"iconOnlyLabel()\"\n [label]=\"selectedItem().label\"\n [leftIcons]=\"selectedItem().leftIcons ?? []\"\n [rightIcons]=\"triggerRightIcons()\"\n [menuTemplate]=\"menu\"\n [menuId]=\"menuId\"\n [isOpen]=\"isOpen()\"\n (opened)=\"onMenuOpened()\"\n (closed)=\"onMenuClosed()\"\n />\n\n <ng-template #menu>\n <div class=\"ul-dropdown__backdrop\" (click)=\"closeMenu()\"></div>\n <div cdkMenu class=\"ul-dropdown__content ul-scrollable\" [id]=\"menuId\">\n <ul-menu-items\n [items]=\"items()\"\n [theme]=\"theme()\"\n [selectedIndex]=\"selectedIndex()\"\n (itemTriggered)=\"handleItemTriggered($event)\"\n />\n </div>\n </ng-template>\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-dropdown{display:inline-flex;flex-direction:column;width:100%;gap:4px}.ul-dropdown__backdrop{display:none}@media(max-width:1023px){.ul-dropdown__backdrop{display:block;position:fixed;inset:0;background-color:#0000004d}}.ul-dropdown__content{display:flex;flex-direction:column;gap:4px;background-color:#232323;border-radius:16px;padding:4px;margin:4px 0;max-height:316px;overflow-y:auto}@media(max-width:1023px){.ul-dropdown__content{position:fixed;inset:auto 0 0;width:100%;max-height:40vh;margin:0;border-radius:16px 16px 0 0;gap:16px;display:flex;padding-bottom:8px;flex-direction:column;overflow-y:auto;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-dropdown__content ul-list-item .ul-list-item{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}}\n"] }]
|
|
2301
2605
|
}], propDecorators: { theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], menuTriggerIcons: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuTriggerIcons", required: false }] }], triggerIconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerIconOnly", required: false }] }], iconOnlyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnlyLabel", required: false }] }], selectedIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedIndex", required: false }] }, { type: i0.Output, args: ["selectedIndexChange"] }], selectedItemChange: [{ type: i0.Output, args: ["selectedItemChange"] }], closed: [{ type: i0.Output, args: ["closed"] }], trigger: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MenuTriggerComponent), { isSignal: true }] }] } });
|
|
2302
2606
|
|
|
2303
2607
|
/**
|
|
@@ -2592,201 +2896,98 @@ class HeroComponent {
|
|
|
2592
2896
|
...(ngDevMode ? [{ debugName: "badgesSlot" }] : /* istanbul ignore next */ []));
|
|
2593
2897
|
titleSlot = contentChild(PeHeroTitleSlotDirective, /* @ts-ignore */
|
|
2594
2898
|
...(ngDevMode ? [{ debugName: "titleSlot" }] : /* istanbul ignore next */ []));
|
|
2595
|
-
subtitleSlot = contentChild(PeHeroSubtitleSlotDirective, /* @ts-ignore */
|
|
2596
|
-
...(ngDevMode ? [{ debugName: "subtitleSlot" }] : /* istanbul ignore next */ []));
|
|
2597
|
-
actionsSlot = contentChild(PeHeroActionsSlotDirective, /* @ts-ignore */
|
|
2598
|
-
...(ngDevMode ? [{ debugName: "actionsSlot" }] : /* istanbul ignore next */ []));
|
|
2599
|
-
contentSlot = contentChild(PeHeroContentSlotDirective, /* @ts-ignore */
|
|
2600
|
-
...(ngDevMode ? [{ debugName: "contentSlot" }] : /* istanbul ignore next */ []));
|
|
2601
|
-
hasBadgesSlot = computed(() => !!this.badgesSlot(), /* @ts-ignore */
|
|
2602
|
-
...(ngDevMode ? [{ debugName: "hasBadgesSlot" }] : /* istanbul ignore next */ []));
|
|
2603
|
-
hasTitleSlot = computed(() => !!this.titleSlot(), /* @ts-ignore */
|
|
2604
|
-
...(ngDevMode ? [{ debugName: "hasTitleSlot" }] : /* istanbul ignore next */ []));
|
|
2605
|
-
hasSubtitleSlot = computed(() => !!this.subtitleSlot(), /* @ts-ignore */
|
|
2606
|
-
...(ngDevMode ? [{ debugName: "hasSubtitleSlot" }] : /* istanbul ignore next */ []));
|
|
2607
|
-
hasActionsSlot = computed(() => !!this.actionsSlot(), /* @ts-ignore */
|
|
2608
|
-
...(ngDevMode ? [{ debugName: "hasActionsSlot" }] : /* istanbul ignore next */ []));
|
|
2609
|
-
hasContentSlot = computed(() => !!this.contentSlot(), /* @ts-ignore */
|
|
2610
|
-
...(ngDevMode ? [{ debugName: "hasContentSlot" }] : /* istanbul ignore next */ []));
|
|
2611
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: HeroComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2612
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: HeroComponent, isStandalone: true, selector: "ul-hero", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, primaryAction: { classPropertyName: "primaryAction", publicName: "primaryAction", isSignal: true, isRequired: false, transformFunction: null }, secondaryAction: { classPropertyName: "secondaryAction", publicName: "secondaryAction", isSignal: true, isRequired: false, transformFunction: null }, badges: { classPropertyName: "badges", publicName: "badges", isSignal: true, isRequired: false, transformFunction: null }, backgroundImage: { classPropertyName: "backgroundImage", publicName: "backgroundImage", isSignal: true, isRequired: false, transformFunction: null }, backgroundOverlayGradient: { classPropertyName: "backgroundOverlayGradient", publicName: "backgroundOverlayGradient", isSignal: true, isRequired: false, transformFunction: null }, backgroundFilter: { classPropertyName: "backgroundFilter", publicName: "backgroundFilter", isSignal: true, isRequired: false, transformFunction: null }, alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, fullHeight: { classPropertyName: "fullHeight", publicName: "fullHeight", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "badgesSlot", first: true, predicate: PeHeroBadgesSlotDirective, descendants: true, isSignal: true }, { propertyName: "titleSlot", first: true, predicate: PeHeroTitleSlotDirective, descendants: true, isSignal: true }, { propertyName: "subtitleSlot", first: true, predicate: PeHeroSubtitleSlotDirective, descendants: true, isSignal: true }, { propertyName: "actionsSlot", first: true, predicate: PeHeroActionsSlotDirective, descendants: true, isSignal: true }, { propertyName: "contentSlot", first: true, predicate: PeHeroContentSlotDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<section\n class=\"ul-hero ul-hero-alignment-{{ alignment() }} ul-hero-size-{{ size() }}\"\n role=\"banner\"\n [attr.aria-label]=\"title()\"\n [class.ul-hero--full-height]=\"fullHeight()\"\n [class.ul-hero--has-background]=\"!!backgroundImage()\"\n>\n @if (backgroundImage()) {\n <div\n class=\"ul-hero__background\"\n [style.background-image]=\"'url(' + backgroundImage() + ')'\"\n [style.filter]=\"backgroundFilter() || null\"\n aria-hidden=\"true\"\n ></div>\n <div\n class=\"ul-hero__overlay\"\n [style.background]=\"backgroundOverlayGradient() || 'rgba(0, 0, 0, 0.4)'\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <div class=\"ul-hero__content\">\n @if (hasBadgesSlot()) {\n <div class=\"ul-hero__badges\">\n <ng-content select=\"[ul-hero-badges]\" />\n </div>\n } @else if (badges().length) {\n <div class=\"ul-hero__badges\">\n @for (badge of badges(); track badge) {\n <ul-pill variant=\"read-only\" theme=\"transparent-white\" size=\"md\">\n {{ badge }}\n </ul-pill>\n }\n </div>\n }\n\n @if (hasTitleSlot()) {\n <div class=\"ul-hero__title\">\n <ng-content select=\"[ul-hero-title]\" />\n </div>\n } @else {\n <h1 class=\"ul-hero__title\">{{ title() }}</h1>\n }\n\n @if (hasSubtitleSlot()) {\n <div class=\"ul-hero__subtitle\">\n <ng-content select=\"[ul-hero-subtitle]\" />\n </div>\n } @else if (subtitle()) {\n <p class=\"ul-hero__subtitle\">{{ subtitle() }}</p>\n }\n\n @if (hasContentSlot()) {\n <div class=\"ul-hero__extra\">\n <ng-content select=\"[ul-hero-content]\" />\n </div>\n }\n\n @if (hasActionsSlot()) {\n <div class=\"ul-hero__actions\">\n <ng-content select=\"[ul-hero-actions]\" />\n </div>\n } @else if (primaryAction() || secondaryAction()) {\n <div class=\"ul-hero__actions\">\n @if (primaryAction()) {\n @if (primaryAction()!.href) {\n <a [href]=\"primaryAction()!.href\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n </a>\n } @else if (primaryAction()!.routerLink) {\n <a [routerLink]=\"primaryAction()!.routerLink\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n </a>\n } @else {\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n }\n }\n @if (secondaryAction()) {\n @if (secondaryAction()!.href) {\n <a [href]=\"secondaryAction()!.href\" class=\"ul-hero__action-link\">\n <ul-button theme=\"ghost-white\" [size]=\"secondaryAction()!.size ?? 'md'\">\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n </a>\n } @else if (secondaryAction()!.routerLink) {\n <a [routerLink]=\"secondaryAction()!.routerLink\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n </a>\n } @else {\n <ul-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n }\n }\n </div>\n }\n </div>\n</section>\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-hero{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:0;padding:32px 16px;color:#fff}.ul-hero--full-height{min-height:100vh}.ul-hero--has-background .ul-hero__content{position:relative;z-index:1}.ul-hero--alignment-left .ul-hero__content{align-items:flex-start;text-align:left}.ul-hero--alignment-left .ul-hero__badges,.ul-hero--alignment-left .ul-hero__actions{justify-content:flex-start}.ul-hero--alignment-center .ul-hero__content{align-items:center;text-align:center}.ul-hero--alignment-center .ul-hero__badges,.ul-hero--alignment-center .ul-hero__actions{justify-content:center}.ul-hero--alignment-right .ul-hero__content{align-items:flex-end;text-align:right}.ul-hero--alignment-right .ul-hero__badges,.ul-hero--alignment-right .ul-hero__actions{justify-content:flex-end}.ul-hero__background{position:absolute;inset:0;background-size:cover;background-position:center;background-repeat:no-repeat;background-color:#232323}.ul-hero__overlay{position:absolute;inset:0;pointer-events:none}.ul-hero__content{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:100%}.ul-hero__badges{display:flex;flex-wrap:wrap;gap:8px}.ul-hero__title{margin:0;color:#fff;font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero__subtitle{margin:0;color:#ffffffb3;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400;max-width:100%}.ul-hero__extra{display:flex;flex-direction:column;gap:16px;width:100%}.ul-hero__actions{display:flex;flex-wrap:wrap;gap:12px;flex-direction:column}.ul-hero__action-link{color:inherit;text-decoration:none;display:inline-flex}.ul-hero--size-sm{padding:24px 16px}.ul-hero--size-sm .ul-hero__content{gap:12px}.ul-hero--size-sm .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-hero--size-sm .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-hero--size-md .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero--size-md .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-hero--size-lg{padding:48px 16px}.ul-hero--size-lg .ul-hero__content{gap:24px}.ul-hero--size-lg .ul-hero__title{font-family:Ultra Nunito Sans;line-height:40px;font-size:32px;letter-spacing:-.32px;font-weight:1000}.ul-hero--size-lg .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}@media(max-width:1279px){.ul-hero{padding:24px 16px}.ul-hero--size-sm{padding:16px}.ul-hero--size-lg{padding:32px 16px}.ul-hero .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-hero .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-hero .ul-hero__actions{flex-direction:column;width:100%;max-width:100%}.ul-hero .ul-hero__action-link,.ul-hero .ul-hero__actions>ul-button{width:100%}.ul-hero .ul-hero__action-link ul-button{width:100%}}@media(min-width:1024px)and (max-width:1279px){.ul-hero{padding:32px 24px}.ul-hero--size-lg{padding:40px 24px}.ul-hero .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-hero .ul-hero__actions{flex-direction:row;flex-wrap:wrap}}@media(min-width:1280px){.ul-hero{padding:40px 32px}.ul-hero--size-sm{padding:24px 32px}.ul-hero--size-lg{padding:64px 32px}.ul-hero .ul-hero__content{max-width:800px}.ul-hero .ul-hero__actions{flex-direction:row}}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "ul-button", inputs: ["size", "theme", "iconOnly", "vertical", "disabled", "type", "ariaLabel"], outputs: ["buttonClick"] }, { kind: "component", type: IconComponent, selector: "ul-icon", inputs: ["size", "weight", "icon"] }, { kind: "component", type: PillComponent, selector: "ul-pill", inputs: ["variant", "theme", "size", "disabled"], outputs: ["dismiss"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
2613
|
-
}
|
|
2614
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: HeroComponent, decorators: [{
|
|
2615
|
-
type: Component,
|
|
2616
|
-
args: [{ selector: 'ul-hero', imports: [ButtonComponent, IconComponent, PillComponent, RouterLink], encapsulation: ViewEncapsulation.None, template: "<section\n class=\"ul-hero ul-hero-alignment-{{ alignment() }} ul-hero-size-{{ size() }}\"\n role=\"banner\"\n [attr.aria-label]=\"title()\"\n [class.ul-hero--full-height]=\"fullHeight()\"\n [class.ul-hero--has-background]=\"!!backgroundImage()\"\n>\n @if (backgroundImage()) {\n <div\n class=\"ul-hero__background\"\n [style.background-image]=\"'url(' + backgroundImage() + ')'\"\n [style.filter]=\"backgroundFilter() || null\"\n aria-hidden=\"true\"\n ></div>\n <div\n class=\"ul-hero__overlay\"\n [style.background]=\"backgroundOverlayGradient() || 'rgba(0, 0, 0, 0.4)'\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <div class=\"ul-hero__content\">\n @if (hasBadgesSlot()) {\n <div class=\"ul-hero__badges\">\n <ng-content select=\"[ul-hero-badges]\" />\n </div>\n } @else if (badges().length) {\n <div class=\"ul-hero__badges\">\n @for (badge of badges(); track badge) {\n <ul-pill variant=\"read-only\" theme=\"transparent-white\" size=\"md\">\n {{ badge }}\n </ul-pill>\n }\n </div>\n }\n\n @if (hasTitleSlot()) {\n <div class=\"ul-hero__title\">\n <ng-content select=\"[ul-hero-title]\" />\n </div>\n } @else {\n <h1 class=\"ul-hero__title\">{{ title() }}</h1>\n }\n\n @if (hasSubtitleSlot()) {\n <div class=\"ul-hero__subtitle\">\n <ng-content select=\"[ul-hero-subtitle]\" />\n </div>\n } @else if (subtitle()) {\n <p class=\"ul-hero__subtitle\">{{ subtitle() }}</p>\n }\n\n @if (hasContentSlot()) {\n <div class=\"ul-hero__extra\">\n <ng-content select=\"[ul-hero-content]\" />\n </div>\n }\n\n @if (hasActionsSlot()) {\n <div class=\"ul-hero__actions\">\n <ng-content select=\"[ul-hero-actions]\" />\n </div>\n } @else if (primaryAction() || secondaryAction()) {\n <div class=\"ul-hero__actions\">\n @if (primaryAction()) {\n @if (primaryAction()!.href) {\n <a [href]=\"primaryAction()!.href\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n </a>\n } @else if (primaryAction()!.routerLink) {\n <a [routerLink]=\"primaryAction()!.routerLink\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n </a>\n } @else {\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n }\n }\n @if (secondaryAction()) {\n @if (secondaryAction()!.href) {\n <a [href]=\"secondaryAction()!.href\" class=\"ul-hero__action-link\">\n <ul-button theme=\"ghost-white\" [size]=\"secondaryAction()!.size ?? 'md'\">\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n </a>\n } @else if (secondaryAction()!.routerLink) {\n <a [routerLink]=\"secondaryAction()!.routerLink\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n </a>\n } @else {\n <ul-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n }\n }\n </div>\n }\n </div>\n</section>\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-hero{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:0;padding:32px 16px;color:#fff}.ul-hero--full-height{min-height:100vh}.ul-hero--has-background .ul-hero__content{position:relative;z-index:1}.ul-hero--alignment-left .ul-hero__content{align-items:flex-start;text-align:left}.ul-hero--alignment-left .ul-hero__badges,.ul-hero--alignment-left .ul-hero__actions{justify-content:flex-start}.ul-hero--alignment-center .ul-hero__content{align-items:center;text-align:center}.ul-hero--alignment-center .ul-hero__badges,.ul-hero--alignment-center .ul-hero__actions{justify-content:center}.ul-hero--alignment-right .ul-hero__content{align-items:flex-end;text-align:right}.ul-hero--alignment-right .ul-hero__badges,.ul-hero--alignment-right .ul-hero__actions{justify-content:flex-end}.ul-hero__background{position:absolute;inset:0;background-size:cover;background-position:center;background-repeat:no-repeat;background-color:#232323}.ul-hero__overlay{position:absolute;inset:0;pointer-events:none}.ul-hero__content{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:100%}.ul-hero__badges{display:flex;flex-wrap:wrap;gap:8px}.ul-hero__title{margin:0;color:#fff;font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero__subtitle{margin:0;color:#ffffffb3;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400;max-width:100%}.ul-hero__extra{display:flex;flex-direction:column;gap:16px;width:100%}.ul-hero__actions{display:flex;flex-wrap:wrap;gap:12px;flex-direction:column}.ul-hero__action-link{color:inherit;text-decoration:none;display:inline-flex}.ul-hero--size-sm{padding:24px 16px}.ul-hero--size-sm .ul-hero__content{gap:12px}.ul-hero--size-sm .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-hero--size-sm .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-hero--size-md .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero--size-md .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-hero--size-lg{padding:48px 16px}.ul-hero--size-lg .ul-hero__content{gap:24px}.ul-hero--size-lg .ul-hero__title{font-family:Ultra Nunito Sans;line-height:40px;font-size:32px;letter-spacing:-.32px;font-weight:1000}.ul-hero--size-lg .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}@media(max-width:1279px){.ul-hero{padding:24px 16px}.ul-hero--size-sm{padding:16px}.ul-hero--size-lg{padding:32px 16px}.ul-hero .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-hero .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-hero .ul-hero__actions{flex-direction:column;width:100%;max-width:100%}.ul-hero .ul-hero__action-link,.ul-hero .ul-hero__actions>ul-button{width:100%}.ul-hero .ul-hero__action-link ul-button{width:100%}}@media(min-width:1024px)and (max-width:1279px){.ul-hero{padding:32px 24px}.ul-hero--size-lg{padding:40px 24px}.ul-hero .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-hero .ul-hero__actions{flex-direction:row;flex-wrap:wrap}}@media(min-width:1280px){.ul-hero{padding:40px 32px}.ul-hero--size-sm{padding:24px 32px}.ul-hero--size-lg{padding:64px 32px}.ul-hero .ul-hero__content{max-width:800px}.ul-hero .ul-hero__actions{flex-direction:row}}\n"] }]
|
|
2617
|
-
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], primaryAction: [{ type: i0.Input, args: [{ isSignal: true, alias: "primaryAction", required: false }] }], secondaryAction: [{ type: i0.Input, args: [{ isSignal: true, alias: "secondaryAction", required: false }] }], badges: [{ type: i0.Input, args: [{ isSignal: true, alias: "badges", required: false }] }], backgroundImage: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundImage", required: false }] }], backgroundOverlayGradient: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundOverlayGradient", required: false }] }], backgroundFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundFilter", required: false }] }], alignment: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignment", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], fullHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullHeight", required: false }] }], badgesSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PeHeroBadgesSlotDirective), { isSignal: true }] }], titleSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PeHeroTitleSlotDirective), { isSignal: true }] }], subtitleSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PeHeroSubtitleSlotDirective), { isSignal: true }] }], actionsSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PeHeroActionsSlotDirective), { isSignal: true }] }], contentSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PeHeroContentSlotDirective), { isSignal: true }] }] } });
|
|
2618
|
-
|
|
2619
|
-
/**
|
|
2620
|
-
* Directive to handle image loading errors and display placeholders
|
|
2621
|
-
*/
|
|
2622
|
-
class ImageNotFoundDirective {
|
|
2623
|
-
// Controls whether to show a placeholder when image fails to load
|
|
2624
|
-
showPlaceholder = input(true, /* @ts-ignore */
|
|
2625
|
-
...(ngDevMode ? [{ debugName: "showPlaceholder" }] : /* istanbul ignore next */ []));
|
|
2626
|
-
// Signal to track if image failed to load
|
|
2627
|
-
imageNotFound = signal(false, /* @ts-ignore */
|
|
2628
|
-
...(ngDevMode ? [{ debugName: "imageNotFound" }] : /* istanbul ignore next */ []));
|
|
2629
|
-
// Signal to control alt and icon visibility of broken images.
|
|
2630
|
-
visibility = signal('hidden', /* @ts-ignore */
|
|
2631
|
-
...(ngDevMode ? [{ debugName: "visibility" }] : /* istanbul ignore next */ []));
|
|
2632
|
-
/**
|
|
2633
|
-
* Handles image loading errors
|
|
2634
|
-
* Hides the image and optionally shows placeholder
|
|
2635
|
-
*/
|
|
2636
|
-
handleError() {
|
|
2637
|
-
this.visibility.set('hidden');
|
|
2638
|
-
if (this.showPlaceholder()) {
|
|
2639
|
-
this.imageNotFound.set(true);
|
|
2640
|
-
}
|
|
2641
|
-
}
|
|
2642
|
-
/**
|
|
2643
|
-
* Handles successful image load
|
|
2644
|
-
* Shows the image and removes placeholder
|
|
2645
|
-
*/
|
|
2646
|
-
handleLoad() {
|
|
2647
|
-
this.imageNotFound.set(false);
|
|
2648
|
-
this.visibility.set('visible');
|
|
2649
|
-
}
|
|
2650
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ImageNotFoundDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2651
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.0", type: ImageNotFoundDirective, isStandalone: true, selector: "[ulCatchImageNotFound]", inputs: { showPlaceholder: { classPropertyName: "showPlaceholder", publicName: "showPlaceholder", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "load": "handleLoad()", "error": "handleError()" }, properties: { "class.ul-image--not-found": "imageNotFound()", "style.visibility": "visibility()" } }, ngImport: i0 });
|
|
2652
|
-
}
|
|
2653
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ImageNotFoundDirective, decorators: [{
|
|
2654
|
-
type: Directive,
|
|
2655
|
-
args: [{
|
|
2656
|
-
selector: '[ulCatchImageNotFound]',
|
|
2657
|
-
host: {
|
|
2658
|
-
'(load)': 'handleLoad()',
|
|
2659
|
-
'(error)': 'handleError()',
|
|
2660
|
-
'[class.ul-image--not-found]': 'imageNotFound()',
|
|
2661
|
-
'[style.visibility]': 'visibility()',
|
|
2662
|
-
},
|
|
2663
|
-
}]
|
|
2664
|
-
}], propDecorators: { showPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPlaceholder", required: false }] }] } });
|
|
2665
|
-
/**
|
|
2666
|
-
* Standalone placeholder for the case `ulCatchImageNotFound` can't cover: there is
|
|
2667
|
-
* no `<img>` to fail in the first place, because the source has no URL at all.
|
|
2668
|
-
* Renders the same icon-over-a-grey-box look as the directive's own placeholder —
|
|
2669
|
-
* both draw from the design system's `image_dashed` glyph and grey-lvl-1
|
|
2670
|
-
* background — so a "no image" listing and a "broken image" listing read
|
|
2671
|
-
* identically to a user.
|
|
2672
|
-
*
|
|
2673
|
-
* Positioned to fill its nearest positioned ancestor, same as the directive's
|
|
2674
|
-
* pseudo-element placeholder: the caller supplies a sized, `position: relative`
|
|
2675
|
-
* box (a gallery slot, a card's media area) and drops this in.
|
|
2676
|
-
*/
|
|
2677
|
-
class ImageNotFoundComponent {
|
|
2678
|
-
iconSize = input('12', /* @ts-ignore */
|
|
2679
|
-
...(ngDevMode ? [{ debugName: "iconSize" }] : /* istanbul ignore next */ []));
|
|
2680
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ImageNotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2681
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.0", type: ImageNotFoundComponent, isStandalone: true, selector: "ul-image-not-found", inputs: { iconSize: { classPropertyName: "iconSize", publicName: "iconSize", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `<ul-icon icon="image_dashed" [size]="iconSize()" />`, 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{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background-color:#232323;color:#ffffff4d}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "ul-icon", inputs: ["size", "weight", "icon"] }] });
|
|
2682
|
-
}
|
|
2683
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ImageNotFoundComponent, decorators: [{
|
|
2684
|
-
type: Component,
|
|
2685
|
-
args: [{ selector: 'ul-image-not-found', template: `<ul-icon icon="image_dashed" [size]="iconSize()" />`, imports: [IconComponent], 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{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background-color:#232323;color:#ffffff4d}\n"] }]
|
|
2686
|
-
}], propDecorators: { iconSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconSize", required: false }] }] } });
|
|
2687
|
-
|
|
2688
|
-
class ModalComponent {
|
|
2689
|
-
/** Whether the modal is open. Supports two-way binding with [(open)]. */
|
|
2690
|
-
open = model(false, /* @ts-ignore */
|
|
2691
|
-
...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
2692
|
-
/** Visual variant: default, success, error, custom, or bottom-sheet (mobile-only layout). */
|
|
2693
|
-
variant = input('default', /* @ts-ignore */
|
|
2694
|
-
...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
2695
|
-
/** Optional title shown in the header. */
|
|
2696
|
-
title = input(undefined, /* @ts-ignore */
|
|
2697
|
-
...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
2698
|
-
/** Whether clicking the backdrop closes the modal. */
|
|
2699
|
-
closeOnBackdropClick = input(true, /* @ts-ignore */
|
|
2700
|
-
...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : /* istanbul ignore next */ []));
|
|
2701
|
-
/** Whether to show the close button in the header. */
|
|
2702
|
-
showCloseButton = input(true, /* @ts-ignore */
|
|
2703
|
-
...(ngDevMode ? [{ debugName: "showCloseButton" }] : /* istanbul ignore next */ []));
|
|
2704
|
-
/** Label for the primary confirm action in the confirmation variant. */
|
|
2705
|
-
confirmLabel = input('Confirm', /* @ts-ignore */
|
|
2706
|
-
...(ngDevMode ? [{ debugName: "confirmLabel" }] : /* istanbul ignore next */ []));
|
|
2707
|
-
/** Label for the secondary cancel action in the confirmation variant. */
|
|
2708
|
-
cancelLabel = input('Cancel', /* @ts-ignore */
|
|
2709
|
-
...(ngDevMode ? [{ debugName: "cancelLabel" }] : /* istanbul ignore next */ []));
|
|
2710
|
-
/** Optional CSS class for the panel (e.g. for custom variant). */
|
|
2711
|
-
customClass = input(undefined, /* @ts-ignore */
|
|
2712
|
-
...(ngDevMode ? [{ debugName: "customClass" }] : /* istanbul ignore next */ []));
|
|
2713
|
-
/**
|
|
2714
|
-
* Below the phone breakpoint, fills the entire viewport edge-to-edge (no
|
|
2715
|
-
* margin, no rounded corners, no visible backdrop) instead of the default
|
|
2716
|
-
* bottom-pinned sheet every variant otherwise gets there. Has no effect
|
|
2717
|
-
* above that breakpoint — desktop/tablet layout is unchanged either way.
|
|
2718
|
-
*/
|
|
2719
|
-
fullScreenInMobile = input(false, /* @ts-ignore */
|
|
2720
|
-
...(ngDevMode ? [{ debugName: "fullScreenInMobile" }] : /* istanbul ignore next */ []));
|
|
2721
|
-
/** Emitted when the modal is closed (button, backdrop, or escape). */
|
|
2722
|
-
closed = output();
|
|
2723
|
-
/** Emitted when the user confirms in the confirmation variant. */
|
|
2724
|
-
confirmed = output();
|
|
2725
|
-
/** Emitted when the user cancels in the confirmation variant. */
|
|
2726
|
-
cancelled = output();
|
|
2727
|
-
panelClass = computed(() => {
|
|
2728
|
-
const variant = this.variant();
|
|
2729
|
-
const custom = this.customClass();
|
|
2730
|
-
const classes = ['ul-modal__panel', `ul-modal__panel--${variant}`];
|
|
2731
|
-
if (this.fullScreenInMobile()) {
|
|
2732
|
-
classes.push('ul-modal__panel--fullscreen-mobile');
|
|
2733
|
-
}
|
|
2734
|
-
if (custom) {
|
|
2735
|
-
classes.push(custom);
|
|
2736
|
-
}
|
|
2737
|
-
return classes.join(' ');
|
|
2738
|
-
}, /* @ts-ignore */
|
|
2739
|
-
...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
|
|
2740
|
-
isConfirmation = computed(() => this.variant() === 'confirmation', /* @ts-ignore */
|
|
2741
|
-
...(ngDevMode ? [{ debugName: "isConfirmation" }] : /* istanbul ignore next */ []));
|
|
2742
|
-
isSuccess = computed(() => this.variant() === 'success', /* @ts-ignore */
|
|
2743
|
-
...(ngDevMode ? [{ debugName: "isSuccess" }] : /* istanbul ignore next */ []));
|
|
2744
|
-
isError = computed(() => this.variant() === 'error', /* @ts-ignore */
|
|
2745
|
-
...(ngDevMode ? [{ debugName: "isError" }] : /* istanbul ignore next */ []));
|
|
2746
|
-
modalTitle = computed(() => (this.isSuccess() || this.isError() ? '' : this.title()), /* @ts-ignore */
|
|
2747
|
-
...(ngDevMode ? [{ debugName: "modalTitle" }] : /* istanbul ignore next */ []));
|
|
2748
|
-
titleId = `ul-modal-title-${Math.random().toString(36).slice(2, 11)}`;
|
|
2749
|
-
bodyId = `ul-modal-body-${Math.random().toString(36).slice(2, 11)}`;
|
|
2750
|
-
close() {
|
|
2751
|
-
this.open.set(false);
|
|
2752
|
-
this.closed.emit();
|
|
2753
|
-
}
|
|
2754
|
-
onConfirm() {
|
|
2755
|
-
if (!this.isConfirmation()) {
|
|
2756
|
-
return;
|
|
2757
|
-
}
|
|
2758
|
-
this.confirmed.emit();
|
|
2759
|
-
this.close();
|
|
2760
|
-
}
|
|
2761
|
-
onCancel() {
|
|
2762
|
-
if (!this.isConfirmation()) {
|
|
2763
|
-
return;
|
|
2764
|
-
}
|
|
2765
|
-
this.cancelled.emit();
|
|
2766
|
-
this.close();
|
|
2767
|
-
}
|
|
2768
|
-
onBackdropClick(event) {
|
|
2769
|
-
if (this.closeOnBackdropClick() && event.target === event.currentTarget) {
|
|
2770
|
-
this.close();
|
|
2899
|
+
subtitleSlot = contentChild(PeHeroSubtitleSlotDirective, /* @ts-ignore */
|
|
2900
|
+
...(ngDevMode ? [{ debugName: "subtitleSlot" }] : /* istanbul ignore next */ []));
|
|
2901
|
+
actionsSlot = contentChild(PeHeroActionsSlotDirective, /* @ts-ignore */
|
|
2902
|
+
...(ngDevMode ? [{ debugName: "actionsSlot" }] : /* istanbul ignore next */ []));
|
|
2903
|
+
contentSlot = contentChild(PeHeroContentSlotDirective, /* @ts-ignore */
|
|
2904
|
+
...(ngDevMode ? [{ debugName: "contentSlot" }] : /* istanbul ignore next */ []));
|
|
2905
|
+
hasBadgesSlot = computed(() => !!this.badgesSlot(), /* @ts-ignore */
|
|
2906
|
+
...(ngDevMode ? [{ debugName: "hasBadgesSlot" }] : /* istanbul ignore next */ []));
|
|
2907
|
+
hasTitleSlot = computed(() => !!this.titleSlot(), /* @ts-ignore */
|
|
2908
|
+
...(ngDevMode ? [{ debugName: "hasTitleSlot" }] : /* istanbul ignore next */ []));
|
|
2909
|
+
hasSubtitleSlot = computed(() => !!this.subtitleSlot(), /* @ts-ignore */
|
|
2910
|
+
...(ngDevMode ? [{ debugName: "hasSubtitleSlot" }] : /* istanbul ignore next */ []));
|
|
2911
|
+
hasActionsSlot = computed(() => !!this.actionsSlot(), /* @ts-ignore */
|
|
2912
|
+
...(ngDevMode ? [{ debugName: "hasActionsSlot" }] : /* istanbul ignore next */ []));
|
|
2913
|
+
hasContentSlot = computed(() => !!this.contentSlot(), /* @ts-ignore */
|
|
2914
|
+
...(ngDevMode ? [{ debugName: "hasContentSlot" }] : /* istanbul ignore next */ []));
|
|
2915
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: HeroComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2916
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: HeroComponent, isStandalone: true, selector: "ul-hero", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, primaryAction: { classPropertyName: "primaryAction", publicName: "primaryAction", isSignal: true, isRequired: false, transformFunction: null }, secondaryAction: { classPropertyName: "secondaryAction", publicName: "secondaryAction", isSignal: true, isRequired: false, transformFunction: null }, badges: { classPropertyName: "badges", publicName: "badges", isSignal: true, isRequired: false, transformFunction: null }, backgroundImage: { classPropertyName: "backgroundImage", publicName: "backgroundImage", isSignal: true, isRequired: false, transformFunction: null }, backgroundOverlayGradient: { classPropertyName: "backgroundOverlayGradient", publicName: "backgroundOverlayGradient", isSignal: true, isRequired: false, transformFunction: null }, backgroundFilter: { classPropertyName: "backgroundFilter", publicName: "backgroundFilter", isSignal: true, isRequired: false, transformFunction: null }, alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, fullHeight: { classPropertyName: "fullHeight", publicName: "fullHeight", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "badgesSlot", first: true, predicate: PeHeroBadgesSlotDirective, descendants: true, isSignal: true }, { propertyName: "titleSlot", first: true, predicate: PeHeroTitleSlotDirective, descendants: true, isSignal: true }, { propertyName: "subtitleSlot", first: true, predicate: PeHeroSubtitleSlotDirective, descendants: true, isSignal: true }, { propertyName: "actionsSlot", first: true, predicate: PeHeroActionsSlotDirective, descendants: true, isSignal: true }, { propertyName: "contentSlot", first: true, predicate: PeHeroContentSlotDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<section\n class=\"ul-hero ul-hero-alignment-{{ alignment() }} ul-hero-size-{{ size() }}\"\n role=\"banner\"\n [attr.aria-label]=\"title()\"\n [class.ul-hero--full-height]=\"fullHeight()\"\n [class.ul-hero--has-background]=\"!!backgroundImage()\"\n>\n @if (backgroundImage()) {\n <div\n class=\"ul-hero__background\"\n [style.background-image]=\"'url(' + backgroundImage() + ')'\"\n [style.filter]=\"backgroundFilter() || null\"\n aria-hidden=\"true\"\n ></div>\n <div\n class=\"ul-hero__overlay\"\n [style.background]=\"backgroundOverlayGradient() || 'rgba(0, 0, 0, 0.4)'\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <div class=\"ul-hero__content\">\n @if (hasBadgesSlot()) {\n <div class=\"ul-hero__badges\">\n <ng-content select=\"[ul-hero-badges]\" />\n </div>\n } @else if (badges().length) {\n <div class=\"ul-hero__badges\">\n @for (badge of badges(); track badge) {\n <ul-pill variant=\"read-only\" theme=\"transparent-white\" size=\"md\">\n {{ badge }}\n </ul-pill>\n }\n </div>\n }\n\n @if (hasTitleSlot()) {\n <div class=\"ul-hero__title\">\n <ng-content select=\"[ul-hero-title]\" />\n </div>\n } @else {\n <h1 class=\"ul-hero__title\">{{ title() }}</h1>\n }\n\n @if (hasSubtitleSlot()) {\n <div class=\"ul-hero__subtitle\">\n <ng-content select=\"[ul-hero-subtitle]\" />\n </div>\n } @else if (subtitle()) {\n <p class=\"ul-hero__subtitle\">{{ subtitle() }}</p>\n }\n\n @if (hasContentSlot()) {\n <div class=\"ul-hero__extra\">\n <ng-content select=\"[ul-hero-content]\" />\n </div>\n }\n\n @if (hasActionsSlot()) {\n <div class=\"ul-hero__actions\">\n <ng-content select=\"[ul-hero-actions]\" />\n </div>\n } @else if (primaryAction() || secondaryAction()) {\n <div class=\"ul-hero__actions\">\n @if (primaryAction()) {\n @if (primaryAction()!.href) {\n <a [href]=\"primaryAction()!.href\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n </a>\n } @else if (primaryAction()!.routerLink) {\n <a [routerLink]=\"primaryAction()!.routerLink\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n </a>\n } @else {\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n }\n }\n @if (secondaryAction()) {\n @if (secondaryAction()!.href) {\n <a [href]=\"secondaryAction()!.href\" class=\"ul-hero__action-link\">\n <ul-button theme=\"ghost-white\" [size]=\"secondaryAction()!.size ?? 'md'\">\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n </a>\n } @else if (secondaryAction()!.routerLink) {\n <a [routerLink]=\"secondaryAction()!.routerLink\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n </a>\n } @else {\n <ul-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n }\n }\n </div>\n }\n </div>\n</section>\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-hero{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:0;padding:32px 16px;color:#fff}.ul-hero--full-height{min-height:100vh}.ul-hero--has-background .ul-hero__content{position:relative;z-index:1}.ul-hero--alignment-left .ul-hero__content{align-items:flex-start;text-align:left}.ul-hero--alignment-left .ul-hero__badges,.ul-hero--alignment-left .ul-hero__actions{justify-content:flex-start}.ul-hero--alignment-center .ul-hero__content{align-items:center;text-align:center}.ul-hero--alignment-center .ul-hero__badges,.ul-hero--alignment-center .ul-hero__actions{justify-content:center}.ul-hero--alignment-right .ul-hero__content{align-items:flex-end;text-align:right}.ul-hero--alignment-right .ul-hero__badges,.ul-hero--alignment-right .ul-hero__actions{justify-content:flex-end}.ul-hero__background{position:absolute;inset:0;background-size:cover;background-position:center;background-repeat:no-repeat;background-color:#232323}.ul-hero__overlay{position:absolute;inset:0;pointer-events:none}.ul-hero__content{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:100%}.ul-hero__badges{display:flex;flex-wrap:wrap;gap:8px}.ul-hero__title{margin:0;color:#fff;font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero__subtitle{margin:0;color:#ffffffb3;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400;max-width:100%}.ul-hero__extra{display:flex;flex-direction:column;gap:16px;width:100%}.ul-hero__actions{display:flex;flex-wrap:wrap;gap:12px;flex-direction:column}.ul-hero__action-link{color:inherit;text-decoration:none;display:inline-flex}.ul-hero--size-sm{padding:24px 16px}.ul-hero--size-sm .ul-hero__content{gap:12px}.ul-hero--size-sm .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-hero--size-sm .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-hero--size-md .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero--size-md .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-hero--size-lg{padding:48px 16px}.ul-hero--size-lg .ul-hero__content{gap:24px}.ul-hero--size-lg .ul-hero__title{font-family:Ultra Nunito Sans;line-height:40px;font-size:32px;letter-spacing:-.32px;font-weight:1000}.ul-hero--size-lg .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}@media(max-width:1279px){.ul-hero{padding:24px 16px}.ul-hero--size-sm{padding:16px}.ul-hero--size-lg{padding:32px 16px}.ul-hero .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-hero .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-hero .ul-hero__actions{flex-direction:column;width:100%;max-width:100%}.ul-hero .ul-hero__action-link,.ul-hero .ul-hero__actions>ul-button{width:100%}.ul-hero .ul-hero__action-link ul-button{width:100%}}@media(min-width:1024px)and (max-width:1279px){.ul-hero{padding:32px 24px}.ul-hero--size-lg{padding:40px 24px}.ul-hero .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-hero .ul-hero__actions{flex-direction:row;flex-wrap:wrap}}@media(min-width:1280px){.ul-hero{padding:40px 32px}.ul-hero--size-sm{padding:24px 32px}.ul-hero--size-lg{padding:64px 32px}.ul-hero .ul-hero__content{max-width:800px}.ul-hero .ul-hero__actions{flex-direction:row}}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "ul-button", inputs: ["size", "theme", "iconOnly", "vertical", "disabled", "type", "ariaLabel"], outputs: ["buttonClick"] }, { kind: "component", type: IconComponent, selector: "ul-icon", inputs: ["size", "weight", "icon"] }, { kind: "component", type: PillComponent, selector: "ul-pill", inputs: ["variant", "theme", "size", "disabled"], outputs: ["dismiss"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
2917
|
+
}
|
|
2918
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: HeroComponent, decorators: [{
|
|
2919
|
+
type: Component,
|
|
2920
|
+
args: [{ selector: 'ul-hero', imports: [ButtonComponent, IconComponent, PillComponent, RouterLink], encapsulation: ViewEncapsulation.None, template: "<section\n class=\"ul-hero ul-hero-alignment-{{ alignment() }} ul-hero-size-{{ size() }}\"\n role=\"banner\"\n [attr.aria-label]=\"title()\"\n [class.ul-hero--full-height]=\"fullHeight()\"\n [class.ul-hero--has-background]=\"!!backgroundImage()\"\n>\n @if (backgroundImage()) {\n <div\n class=\"ul-hero__background\"\n [style.background-image]=\"'url(' + backgroundImage() + ')'\"\n [style.filter]=\"backgroundFilter() || null\"\n aria-hidden=\"true\"\n ></div>\n <div\n class=\"ul-hero__overlay\"\n [style.background]=\"backgroundOverlayGradient() || 'rgba(0, 0, 0, 0.4)'\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <div class=\"ul-hero__content\">\n @if (hasBadgesSlot()) {\n <div class=\"ul-hero__badges\">\n <ng-content select=\"[ul-hero-badges]\" />\n </div>\n } @else if (badges().length) {\n <div class=\"ul-hero__badges\">\n @for (badge of badges(); track badge) {\n <ul-pill variant=\"read-only\" theme=\"transparent-white\" size=\"md\">\n {{ badge }}\n </ul-pill>\n }\n </div>\n }\n\n @if (hasTitleSlot()) {\n <div class=\"ul-hero__title\">\n <ng-content select=\"[ul-hero-title]\" />\n </div>\n } @else {\n <h1 class=\"ul-hero__title\">{{ title() }}</h1>\n }\n\n @if (hasSubtitleSlot()) {\n <div class=\"ul-hero__subtitle\">\n <ng-content select=\"[ul-hero-subtitle]\" />\n </div>\n } @else if (subtitle()) {\n <p class=\"ul-hero__subtitle\">{{ subtitle() }}</p>\n }\n\n @if (hasContentSlot()) {\n <div class=\"ul-hero__extra\">\n <ng-content select=\"[ul-hero-content]\" />\n </div>\n }\n\n @if (hasActionsSlot()) {\n <div class=\"ul-hero__actions\">\n <ng-content select=\"[ul-hero-actions]\" />\n </div>\n } @else if (primaryAction() || secondaryAction()) {\n <div class=\"ul-hero__actions\">\n @if (primaryAction()) {\n @if (primaryAction()!.href) {\n <a [href]=\"primaryAction()!.href\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n </a>\n } @else if (primaryAction()!.routerLink) {\n <a [routerLink]=\"primaryAction()!.routerLink\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n </a>\n } @else {\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n }\n }\n @if (secondaryAction()) {\n @if (secondaryAction()!.href) {\n <a [href]=\"secondaryAction()!.href\" class=\"ul-hero__action-link\">\n <ul-button theme=\"ghost-white\" [size]=\"secondaryAction()!.size ?? 'md'\">\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n </a>\n } @else if (secondaryAction()!.routerLink) {\n <a [routerLink]=\"secondaryAction()!.routerLink\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n </a>\n } @else {\n <ul-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n }\n }\n </div>\n }\n </div>\n</section>\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-hero{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:0;padding:32px 16px;color:#fff}.ul-hero--full-height{min-height:100vh}.ul-hero--has-background .ul-hero__content{position:relative;z-index:1}.ul-hero--alignment-left .ul-hero__content{align-items:flex-start;text-align:left}.ul-hero--alignment-left .ul-hero__badges,.ul-hero--alignment-left .ul-hero__actions{justify-content:flex-start}.ul-hero--alignment-center .ul-hero__content{align-items:center;text-align:center}.ul-hero--alignment-center .ul-hero__badges,.ul-hero--alignment-center .ul-hero__actions{justify-content:center}.ul-hero--alignment-right .ul-hero__content{align-items:flex-end;text-align:right}.ul-hero--alignment-right .ul-hero__badges,.ul-hero--alignment-right .ul-hero__actions{justify-content:flex-end}.ul-hero__background{position:absolute;inset:0;background-size:cover;background-position:center;background-repeat:no-repeat;background-color:#232323}.ul-hero__overlay{position:absolute;inset:0;pointer-events:none}.ul-hero__content{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:100%}.ul-hero__badges{display:flex;flex-wrap:wrap;gap:8px}.ul-hero__title{margin:0;color:#fff;font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero__subtitle{margin:0;color:#ffffffb3;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400;max-width:100%}.ul-hero__extra{display:flex;flex-direction:column;gap:16px;width:100%}.ul-hero__actions{display:flex;flex-wrap:wrap;gap:12px;flex-direction:column}.ul-hero__action-link{color:inherit;text-decoration:none;display:inline-flex}.ul-hero--size-sm{padding:24px 16px}.ul-hero--size-sm .ul-hero__content{gap:12px}.ul-hero--size-sm .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-hero--size-sm .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-hero--size-md .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero--size-md .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-hero--size-lg{padding:48px 16px}.ul-hero--size-lg .ul-hero__content{gap:24px}.ul-hero--size-lg .ul-hero__title{font-family:Ultra Nunito Sans;line-height:40px;font-size:32px;letter-spacing:-.32px;font-weight:1000}.ul-hero--size-lg .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}@media(max-width:1279px){.ul-hero{padding:24px 16px}.ul-hero--size-sm{padding:16px}.ul-hero--size-lg{padding:32px 16px}.ul-hero .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-hero .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-hero .ul-hero__actions{flex-direction:column;width:100%;max-width:100%}.ul-hero .ul-hero__action-link,.ul-hero .ul-hero__actions>ul-button{width:100%}.ul-hero .ul-hero__action-link ul-button{width:100%}}@media(min-width:1024px)and (max-width:1279px){.ul-hero{padding:32px 24px}.ul-hero--size-lg{padding:40px 24px}.ul-hero .ul-hero__title{font-family:Ultra Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-hero .ul-hero__subtitle{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-hero .ul-hero__actions{flex-direction:row;flex-wrap:wrap}}@media(min-width:1280px){.ul-hero{padding:40px 32px}.ul-hero--size-sm{padding:24px 32px}.ul-hero--size-lg{padding:64px 32px}.ul-hero .ul-hero__content{max-width:800px}.ul-hero .ul-hero__actions{flex-direction:row}}\n"] }]
|
|
2921
|
+
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], primaryAction: [{ type: i0.Input, args: [{ isSignal: true, alias: "primaryAction", required: false }] }], secondaryAction: [{ type: i0.Input, args: [{ isSignal: true, alias: "secondaryAction", required: false }] }], badges: [{ type: i0.Input, args: [{ isSignal: true, alias: "badges", required: false }] }], backgroundImage: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundImage", required: false }] }], backgroundOverlayGradient: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundOverlayGradient", required: false }] }], backgroundFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundFilter", required: false }] }], alignment: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignment", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], fullHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullHeight", required: false }] }], badgesSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PeHeroBadgesSlotDirective), { isSignal: true }] }], titleSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PeHeroTitleSlotDirective), { isSignal: true }] }], subtitleSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PeHeroSubtitleSlotDirective), { isSignal: true }] }], actionsSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PeHeroActionsSlotDirective), { isSignal: true }] }], contentSlot: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PeHeroContentSlotDirective), { isSignal: true }] }] } });
|
|
2922
|
+
|
|
2923
|
+
/**
|
|
2924
|
+
* Directive to handle image loading errors and display placeholders
|
|
2925
|
+
*/
|
|
2926
|
+
class ImageNotFoundDirective {
|
|
2927
|
+
// Controls whether to show a placeholder when image fails to load
|
|
2928
|
+
showPlaceholder = input(true, /* @ts-ignore */
|
|
2929
|
+
...(ngDevMode ? [{ debugName: "showPlaceholder" }] : /* istanbul ignore next */ []));
|
|
2930
|
+
// Signal to track if image failed to load
|
|
2931
|
+
imageNotFound = signal(false, /* @ts-ignore */
|
|
2932
|
+
...(ngDevMode ? [{ debugName: "imageNotFound" }] : /* istanbul ignore next */ []));
|
|
2933
|
+
// Signal to control alt and icon visibility of broken images.
|
|
2934
|
+
visibility = signal('hidden', /* @ts-ignore */
|
|
2935
|
+
...(ngDevMode ? [{ debugName: "visibility" }] : /* istanbul ignore next */ []));
|
|
2936
|
+
/**
|
|
2937
|
+
* Handles image loading errors
|
|
2938
|
+
* Hides the image and optionally shows placeholder
|
|
2939
|
+
*/
|
|
2940
|
+
handleError() {
|
|
2941
|
+
this.visibility.set('hidden');
|
|
2942
|
+
if (this.showPlaceholder()) {
|
|
2943
|
+
this.imageNotFound.set(true);
|
|
2771
2944
|
}
|
|
2772
2945
|
}
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2946
|
+
/**
|
|
2947
|
+
* Handles successful image load
|
|
2948
|
+
* Shows the image and removes placeholder
|
|
2949
|
+
*/
|
|
2950
|
+
handleLoad() {
|
|
2951
|
+
this.imageNotFound.set(false);
|
|
2952
|
+
this.visibility.set('visible');
|
|
2777
2953
|
}
|
|
2778
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type:
|
|
2779
|
-
static
|
|
2954
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ImageNotFoundDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2955
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.0", type: ImageNotFoundDirective, isStandalone: true, selector: "[ulCatchImageNotFound]", inputs: { showPlaceholder: { classPropertyName: "showPlaceholder", publicName: "showPlaceholder", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "load": "handleLoad()", "error": "handleError()" }, properties: { "class.ul-image--not-found": "imageNotFound()", "style.visibility": "visibility()" } }, ngImport: i0 });
|
|
2780
2956
|
}
|
|
2781
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type:
|
|
2957
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ImageNotFoundDirective, decorators: [{
|
|
2958
|
+
type: Directive,
|
|
2959
|
+
args: [{
|
|
2960
|
+
selector: '[ulCatchImageNotFound]',
|
|
2961
|
+
host: {
|
|
2962
|
+
'(load)': 'handleLoad()',
|
|
2963
|
+
'(error)': 'handleError()',
|
|
2964
|
+
'[class.ul-image--not-found]': 'imageNotFound()',
|
|
2965
|
+
'[style.visibility]': 'visibility()',
|
|
2966
|
+
},
|
|
2967
|
+
}]
|
|
2968
|
+
}], propDecorators: { showPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPlaceholder", required: false }] }] } });
|
|
2969
|
+
/**
|
|
2970
|
+
* Standalone placeholder for the case `ulCatchImageNotFound` can't cover: there is
|
|
2971
|
+
* no `<img>` to fail in the first place, because the source has no URL at all.
|
|
2972
|
+
* Renders the same icon-over-a-grey-box look as the directive's own placeholder —
|
|
2973
|
+
* both draw from the design system's `image_dashed` glyph and grey-lvl-1
|
|
2974
|
+
* background — so a "no image" listing and a "broken image" listing read
|
|
2975
|
+
* identically to a user.
|
|
2976
|
+
*
|
|
2977
|
+
* Positioned to fill its nearest positioned ancestor, same as the directive's
|
|
2978
|
+
* pseudo-element placeholder: the caller supplies a sized, `position: relative`
|
|
2979
|
+
* box (a gallery slot, a card's media area) and drops this in.
|
|
2980
|
+
*/
|
|
2981
|
+
class ImageNotFoundComponent {
|
|
2982
|
+
iconSize = input('12', /* @ts-ignore */
|
|
2983
|
+
...(ngDevMode ? [{ debugName: "iconSize" }] : /* istanbul ignore next */ []));
|
|
2984
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ImageNotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2985
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.0", type: ImageNotFoundComponent, isStandalone: true, selector: "ul-image-not-found", inputs: { iconSize: { classPropertyName: "iconSize", publicName: "iconSize", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `<ul-icon icon="image_dashed" [size]="iconSize()" />`, 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{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background-color:#232323;color:#ffffff4d}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "ul-icon", inputs: ["size", "weight", "icon"] }] });
|
|
2986
|
+
}
|
|
2987
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ImageNotFoundComponent, decorators: [{
|
|
2782
2988
|
type: Component,
|
|
2783
|
-
args: [{ selector: 'ul-
|
|
2784
|
-
|
|
2785
|
-
}, template: "@if (open()) {\n <div\n class=\"ul-modal ul-modal--backdrop\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"title() ? titleId : null\"\n [attr.aria-describedby]=\"bodyId\"\n (click)=\"onBackdropClick($event)\"\n >\n <div [class]=\"panelClass()\" cdkTrapFocus (click)=\"$event.stopPropagation()\">\n @if (modalTitle() || showCloseButton()) {\n <header class=\"ul-modal__header\">\n @if (modalTitle()) {\n <h2 [id]=\"titleId\" class=\"ul-modal__title\">{{ title() }}</h2>\n }\n @if (showCloseButton()) {\n <ul-button\n type=\"button\"\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n ariaLabel=\"Close\"\n class=\"ul-modal__close\"\n (buttonClick)=\"close()\"\n >\n <ul-icon icon=\"close\" size=\"6\" />\n </ul-button>\n }\n </header>\n }\n <div class=\"ul-modal__body\" [id]=\"bodyId\">\n @if (isSuccess() || isError()) {\n <div class=\"ul-modal__status\" aria-hidden=\"true\">\n <ul-icon\n class=\"ul-modal__status-icon\"\n [icon]=\"isSuccess() ? 'check_circle' : 'cross_circle'\"\n size=\"16\"\n />\n </div>\n }\n <ng-content />\n </div>\n <div class=\"ul-modal__footer\">\n @if (isConfirmation()) {\n <ul-button theme=\"ghost-white\" (buttonClick)=\"onCancel()\">\n {{ cancelLabel() }}\n </ul-button>\n <ul-button theme=\"fill-purple\" (buttonClick)=\"onConfirm()\">\n {{ confirmLabel() }}\n </ul-button>\n } @else {\n <ng-content select=\"[ul-modal-footer]\" />\n }\n </div>\n </div>\n </div>\n}\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-modal--backdrop{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:16px;background-color:#000000b3;transition:opacity .25s cubic-bezier(.4,0,.2,1)}.ul-modal__panel{position:relative;display:flex;flex-direction:column;max-height:calc(100% - 32px);overflow:auto;border-radius:16px;font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400;color:#fff;transition:opacity .25s cubic-bezier(.4,0,.2,1),transform .25s cubic-bezier(.4,0,.2,1);background-color:#0a0a0a;padding:24px;border:1px solid rgba(255,255,255,.1)}.ul-modal__panel--confirmation{border:1px solid rgba(255,255,255,.1)}@media(max-width:767px){.ul-modal__panel--success{border:1px solid #7edc96}.ul-modal__panel--error{border:1px solid #f69d9d}}.ul-modal__panel--custom,.ul-modal__panel--bottom-sheet{border:1px solid rgba(255,255,255,.1)}.ul-modal__header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;flex-shrink:0}.ul-modal__title{margin:0;font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:800;color:#fff}.ul-modal__status{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:12px}.ul-modal__status-icon{flex-shrink:0}.ul-modal__close{flex-shrink:0;margin-left:auto}.ul-modal__body{flex:1 1 auto;min-height:0;color:#ffffffb3}.ul-modal__panel--success .ul-modal__status-icon{color:#7edc96}.ul-modal__panel--error .ul-modal__status-icon{color:#f69d9d}.ul-modal__panel--success .ul-modal__body,.ul-modal__panel--error .ul-modal__body{text-align:center;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}@media(min-width:768px){.ul-modal--backdrop{padding:24px}.ul-modal__panel{width:100%;max-width:512px}}@media(max-width:767px){.ul-modal--backdrop{align-items:flex-end;padding:0}.ul-modal__panel{width:100%;max-width:100%;border-radius:24px 24px 0 0;max-height:calc(100dvh - 32px);margin-top:auto;border-bottom:none}.ul-modal__panel--bottom-sheet{border-bottom:none}.ul-modal__panel--fullscreen-mobile{position:fixed;inset:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border-radius:0;border:none}}.ul-modal__footer{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:16px;flex-shrink:0;justify-content:flex-end}\n"] }]
|
|
2786
|
-
}], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], confirmLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmLabel", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], customClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "customClass", required: false }] }], fullScreenInMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullScreenInMobile", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], confirmed: [{ type: i0.Output, args: ["confirmed"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }], onEscape: [{
|
|
2787
|
-
type: HostListener,
|
|
2788
|
-
args: ['document:keydown.escape']
|
|
2789
|
-
}] } });
|
|
2989
|
+
args: [{ selector: 'ul-image-not-found', template: `<ul-icon icon="image_dashed" [size]="iconSize()" />`, imports: [IconComponent], 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{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background-color:#232323;color:#ffffff4d}\n"] }]
|
|
2990
|
+
}], propDecorators: { iconSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconSize", required: false }] }] } });
|
|
2790
2991
|
|
|
2791
2992
|
const DEFAULT_MAX_OUTPUT_SIZE = 1024;
|
|
2792
2993
|
// Matches $spacing-spacing-60 (240px) — the longer side of the fixed crop
|
|
@@ -2998,161 +3199,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
2998
3199
|
args: [{ selector: 'ul-image-cropper', imports: [ImageCropperComponent$1, ModalComponent, ButtonComponent], template: "<ul-modal [(open)]=\"open\" variant=\"custom\" [title]=\"title()\" (closed)=\"onClosed()\">\n @if (imageFile()) {\n <div class=\"ul-image-cropper\">\n <image-cropper\n class=\"ul-image-cropper__frame\"\n [imageFile]=\"cropperImageFile()\"\n [maintainAspectRatio]=\"isLocked()\"\n [aspectRatio]=\"effectiveAspectRatio()\"\n [roundCropper]=\"isRound()\"\n [cropperStaticWidth]=\"frameWidth()\"\n [cropperStaticHeight]=\"frameHeight()\"\n [allowMoveImage]=\"isLocked()\"\n [transform]=\"transform()\"\n [resizeToWidth]=\"maxOutputSize()\"\n [resizeToHeight]=\"maxOutputSize()\"\n [cropperFrameAriaLabel]=\"frameAriaLabel()\"\n format=\"jpeg\"\n output=\"blob\"\n (cropperReady)=\"onCropperReady($event)\"\n (transformChange)=\"onTransformChange($event)\"\n (loadImageFailed)=\"loadFailed.emit()\"\n />\n\n @if (isLocked()) {\n <label class=\"ul-image-cropper__zoom\">\n <span class=\"ul-image-cropper__zoom-label\">{{ zoomLabel() }}</span>\n <input\n type=\"range\"\n class=\"ul-image-cropper__zoom-input\"\n [min]=\"minZoom\"\n [max]=\"maxZoom\"\n [step]=\"zoomStep\"\n [value]=\"zoom()\"\n (input)=\"onZoomInput($event)\"\n />\n </label>\n }\n </div>\n }\n\n <div class=\"ul-modal__foter-content\" ul-modal-footer>\n <ul-button\n theme=\"fill-purple\"\n size=\"md\"\n [disabled]=\"!cropperReady()\"\n (buttonClick)=\"onConfirm()\"\n >\n {{ confirmLabel() }}\n </ul-button>\n </div>\n</ul-modal>\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-image-cropper{display:flex;flex-direction:column;align-items:center;gap:16px}.ul-image-cropper__frame{display:block;width:100%;height:320px;--cropper-overlay-color: rgba(10, 10, 10, .85);--cropper-outline-color: rgba(10, 10, 10, .85);--cropper-color: #6f3de0;--cropper-border: 2px solid #6f3de0;--cropper-hover-border: 2px solid #6f3de0;--cropper-focus-border: 2px solid #6f3de0;--cropper-resize-square-bg: #6f3de0;--cropper-resize-square-border: 1px solid #0a0a0a}.ul-image-cropper__zoom{display:flex;align-items:center;gap:12px;width:100%}.ul-image-cropper__zoom-label{font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400;color:#ffffffb3;flex-shrink:0}.ul-image-cropper__zoom-input{flex:1;accent-color:#6f3de0}.ul-modal__foter-content{width:100%;margin-top:32px}\n"] }]
|
|
2999
3200
|
}], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], imageFile: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageFile", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], aspectRatio: [{ type: i0.Input, args: [{ isSignal: true, alias: "aspectRatio", required: false }] }], maxOutputSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxOutputSize", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], confirmLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmLabel", required: false }] }], zoomLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "zoomLabel", required: false }] }], frameAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "frameAriaLabel", required: false }] }], cropped: [{ type: i0.Output, args: ["cropped"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }], loadFailed: [{ type: i0.Output, args: ["loadFailed"] }], cropperRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => ImageCropperComponent$1), { isSignal: true }] }] } });
|
|
3000
3201
|
|
|
3001
|
-
/**
|
|
3002
|
-
* A reusable input component that follows UDS design system guidelines.
|
|
3003
|
-
* Implements FormValueControl for use with Signal Forms [formField] directive.
|
|
3004
|
-
*
|
|
3005
|
-
* Use [(value)] for two-way binding, or bind with [formField]="myForm().email" for Signal Forms.
|
|
3006
|
-
*
|
|
3007
|
-
* Content projection: [ul-input-left-elements], [ul-input-right-elements].
|
|
3008
|
-
*/
|
|
3009
|
-
class InputComponent {
|
|
3010
|
-
type = input('text', /* @ts-ignore */
|
|
3011
|
-
...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
|
|
3012
|
-
size = input('md', /* @ts-ignore */
|
|
3013
|
-
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
3014
|
-
/** Border/hover style: border-only (hover = border only), subtle-tint (hover = border + 5% fill). */
|
|
3015
|
-
appearance = input('border-only', /* @ts-ignore */
|
|
3016
|
-
...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
|
|
3017
|
-
error = input(false, /* @ts-ignore */
|
|
3018
|
-
...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
|
|
3019
|
-
disabled = input(false, /* @ts-ignore */
|
|
3020
|
-
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
3021
|
-
readOnly = input(false, /* @ts-ignore */
|
|
3022
|
-
...(ngDevMode ? [{ debugName: "readOnly" }] : /* istanbul ignore next */ []));
|
|
3023
|
-
required = input(false, /* @ts-ignore */
|
|
3024
|
-
...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
|
|
3025
|
-
showRequiredIndicator = input(true, /* @ts-ignore */
|
|
3026
|
-
...(ngDevMode ? [{ debugName: "showRequiredIndicator" }] : /* istanbul ignore next */ []));
|
|
3027
|
-
placeholder = input('', /* @ts-ignore */
|
|
3028
|
-
...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
3029
|
-
label = input(null, /* @ts-ignore */
|
|
3030
|
-
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
3031
|
-
helperText = input(null, /* @ts-ignore */
|
|
3032
|
-
...(ngDevMode ? [{ debugName: "helperText" }] : /* istanbul ignore next */ []));
|
|
3033
|
-
errorText = input(null, /* @ts-ignore */
|
|
3034
|
-
...(ngDevMode ? [{ debugName: "errorText" }] : /* istanbul ignore next */ []));
|
|
3035
|
-
maxLength = input(/* @ts-ignore */
|
|
3036
|
-
...(ngDevMode ? [undefined, { debugName: "maxLength" }] : /* istanbul ignore next */ []));
|
|
3037
|
-
minLength = input(/* @ts-ignore */
|
|
3038
|
-
...(ngDevMode ? [undefined, { debugName: "minLength" }] : /* istanbul ignore next */ []));
|
|
3039
|
-
pattern = input([], /* @ts-ignore */
|
|
3040
|
-
...(ngDevMode ? [{ debugName: "pattern" }] : /* istanbul ignore next */ []));
|
|
3041
|
-
/** Native step for type="number". Defaults to 'any' (decimals allowed) rather than the
|
|
3042
|
-
* browser's own default of 1, which would silently reject e.g. "19.99" — pass an explicit
|
|
3043
|
-
* step (e.g. 1) to restrict to whole numbers. */
|
|
3044
|
-
step = input(undefined, /* @ts-ignore */
|
|
3045
|
-
...(ngDevMode ? [{ debugName: "step" }] : /* istanbul ignore next */ []));
|
|
3046
|
-
autocomplete = input('off', /* @ts-ignore */
|
|
3047
|
-
...(ngDevMode ? [{ debugName: "autocomplete" }] : /* istanbul ignore next */ []));
|
|
3048
|
-
/** When provided (e.g. by a parent form field), the input element uses this id instead of the internal one. */
|
|
3049
|
-
controlId = input(/* @ts-ignore */
|
|
3050
|
-
...(ngDevMode ? [undefined, { debugName: "controlId" }] : /* istanbul ignore next */ []));
|
|
3051
|
-
/** Aria-label for the toggle button when the password is hidden (i.e. the action reveals it). */
|
|
3052
|
-
showPasswordLabel = input('Show password', /* @ts-ignore */
|
|
3053
|
-
...(ngDevMode ? [{ debugName: "showPasswordLabel" }] : /* istanbul ignore next */ []));
|
|
3054
|
-
/** Aria-label for the toggle button when the password is visible (i.e. the action hides it). */
|
|
3055
|
-
hidePasswordLabel = input('Hide password', /* @ts-ignore */
|
|
3056
|
-
...(ngDevMode ? [{ debugName: "hidePasswordLabel" }] : /* istanbul ignore next */ []));
|
|
3057
|
-
/** FormUiControl optional: bound by [formField] when invalid */
|
|
3058
|
-
invalid = input(false, /* @ts-ignore */
|
|
3059
|
-
...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
|
|
3060
|
-
/** FormUiControl optional: bound by [formField] for validation errors */
|
|
3061
|
-
errors = input([], /* @ts-ignore */
|
|
3062
|
-
...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
3063
|
-
/** FormUiControl optional: control sets on blur */
|
|
3064
|
-
touched = model(false, /* @ts-ignore */
|
|
3065
|
-
...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
|
|
3066
|
-
/** FormUiControl optional: [formField] listens to this to mark the bound field touched on blur */
|
|
3067
|
-
touch = output();
|
|
3068
|
-
value = model('', /* @ts-ignore */
|
|
3069
|
-
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
3070
|
-
ids = createFormFieldIds('ul-input');
|
|
3071
|
-
effectiveControlId = computed(() => this.controlId() ?? this.ids.controlId, /* @ts-ignore */
|
|
3072
|
-
...(ngDevMode ? [{ debugName: "effectiveControlId" }] : /* istanbul ignore next */ []));
|
|
3073
|
-
effectiveHelperId = computed(() => this.controlId() ? `${this.controlId()}-helper` : this.ids.helperId, /* @ts-ignore */
|
|
3074
|
-
...(ngDevMode ? [{ debugName: "effectiveHelperId" }] : /* istanbul ignore next */ []));
|
|
3075
|
-
effectiveErrorId = computed(() => this.controlId() ? `${this.controlId()}-error` : this.ids.errorId, /* @ts-ignore */
|
|
3076
|
-
...(ngDevMode ? [{ debugName: "effectiveErrorId" }] : /* istanbul ignore next */ []));
|
|
3077
|
-
isFocused = signal(false, /* @ts-ignore */
|
|
3078
|
-
...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
|
|
3079
|
-
hasError = computed(() => this.error() || this.invalid(), /* @ts-ignore */
|
|
3080
|
-
...(ngDevMode ? [{ debugName: "hasError" }] : /* istanbul ignore next */ []));
|
|
3081
|
-
// [attr.pattern]="pattern()" would stringify an empty array to "" instead
|
|
3082
|
-
// of omitting the attribute — an empty native pattern matches only the
|
|
3083
|
-
// empty string, so every non-empty value would fail native validation.
|
|
3084
|
-
// Native <input pattern> only accepts one regex source, so multiple
|
|
3085
|
-
// patterns are combined as alternatives.
|
|
3086
|
-
nativePattern = computed(() => {
|
|
3087
|
-
const patterns = this.pattern();
|
|
3088
|
-
return patterns.length ? patterns.map((p) => p.source).join('|') : null;
|
|
3089
|
-
}, /* @ts-ignore */
|
|
3090
|
-
...(ngDevMode ? [{ debugName: "nativePattern" }] : /* istanbul ignore next */ []));
|
|
3091
|
-
nativeStep = computed(() => {
|
|
3092
|
-
const step = this.step();
|
|
3093
|
-
if (step !== undefined)
|
|
3094
|
-
return step;
|
|
3095
|
-
return this.type() === 'number' ? 'any' : null;
|
|
3096
|
-
}, /* @ts-ignore */
|
|
3097
|
-
...(ngDevMode ? [{ debugName: "nativeStep" }] : /* istanbul ignore next */ []));
|
|
3098
|
-
isPasswordType = computed(() => this.type() === 'password', /* @ts-ignore */
|
|
3099
|
-
...(ngDevMode ? [{ debugName: "isPasswordType" }] : /* istanbul ignore next */ []));
|
|
3100
|
-
passwordRevealed = signal(false, /* @ts-ignore */
|
|
3101
|
-
...(ngDevMode ? [{ debugName: "passwordRevealed" }] : /* istanbul ignore next */ []));
|
|
3102
|
-
effectiveType = computed(() => this.isPasswordType() && this.passwordRevealed() ? 'text' : this.type(), /* @ts-ignore */
|
|
3103
|
-
...(ngDevMode ? [{ debugName: "effectiveType" }] : /* istanbul ignore next */ []));
|
|
3104
|
-
passwordToggleIcon = computed(() => this.passwordRevealed() ? 'eye_on' : 'eye_dashed', /* @ts-ignore */
|
|
3105
|
-
...(ngDevMode ? [{ debugName: "passwordToggleIcon" }] : /* istanbul ignore next */ []));
|
|
3106
|
-
passwordToggleLabel = computed(() => this.passwordRevealed() ? this.hidePasswordLabel() : this.showPasswordLabel(), /* @ts-ignore */
|
|
3107
|
-
...(ngDevMode ? [{ debugName: "passwordToggleLabel" }] : /* istanbul ignore next */ []));
|
|
3108
|
-
describedBy = computed(() => getFormFieldDescribedBy(this.effectiveHelperId(), this.effectiveErrorId(), !!this.helperText(), this.hasError(), !!this.errorText() || this.errors().length > 0), /* @ts-ignore */
|
|
3109
|
-
...(ngDevMode ? [{ debugName: "describedBy" }] : /* istanbul ignore next */ []));
|
|
3110
|
-
// Outputs
|
|
3111
|
-
inputBlur = output();
|
|
3112
|
-
inputFocus = output();
|
|
3113
|
-
/** Emitted when Enter is pressed in the field; typically used to submit a form. */
|
|
3114
|
-
inputEnter = output();
|
|
3115
|
-
onInput(event) {
|
|
3116
|
-
const value = event.target.value;
|
|
3117
|
-
this.value.set(value);
|
|
3118
|
-
}
|
|
3119
|
-
onBlur(event) {
|
|
3120
|
-
this.isFocused.set(false);
|
|
3121
|
-
this.touched.set(true);
|
|
3122
|
-
this.touch.emit();
|
|
3123
|
-
this.inputBlur.emit(event);
|
|
3124
|
-
}
|
|
3125
|
-
onFocus(event) {
|
|
3126
|
-
this.isFocused.set(true);
|
|
3127
|
-
this.inputFocus.emit(event);
|
|
3128
|
-
}
|
|
3129
|
-
onKeydown(event) {
|
|
3130
|
-
if (event.key === 'Enter') {
|
|
3131
|
-
this.inputEnter.emit(event);
|
|
3132
|
-
}
|
|
3133
|
-
}
|
|
3134
|
-
togglePasswordVisibility() {
|
|
3135
|
-
this.passwordRevealed.update((revealed) => !revealed);
|
|
3136
|
-
}
|
|
3137
|
-
/**
|
|
3138
|
-
* Programmatically focuses the input element
|
|
3139
|
-
*/
|
|
3140
|
-
focus() {
|
|
3141
|
-
const inputEl = document.getElementById(this.effectiveControlId());
|
|
3142
|
-
inputEl?.focus();
|
|
3143
|
-
}
|
|
3144
|
-
select() {
|
|
3145
|
-
const inputEl = document.getElementById(this.effectiveControlId());
|
|
3146
|
-
inputEl?.select();
|
|
3147
|
-
}
|
|
3148
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3149
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: InputComponent, isStandalone: true, selector: "ul-input", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showRequiredIndicator: { classPropertyName: "showRequiredIndicator", publicName: "showRequiredIndicator", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: true, isRequired: false, transformFunction: null }, errorText: { classPropertyName: "errorText", publicName: "errorText", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: false, transformFunction: null }, controlId: { classPropertyName: "controlId", publicName: "controlId", isSignal: true, isRequired: false, transformFunction: null }, showPasswordLabel: { classPropertyName: "showPasswordLabel", publicName: "showPasswordLabel", isSignal: true, isRequired: false, transformFunction: null }, hidePasswordLabel: { classPropertyName: "hidePasswordLabel", publicName: "hidePasswordLabel", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touched: "touchedChange", touch: "touch", value: "valueChange", inputBlur: "inputBlur", inputFocus: "inputFocus", inputEnter: "inputEnter" }, ngImport: i0, template: "<div\n class=\"ul-input ul-input--{{ size() }} ul-input--appearance-{{ appearance() }}\"\n [class.ul-input--error]=\"hasError()\"\n [class.ul-input--disabled]=\"disabled()\"\n [class.ul-input--read-only]=\"readOnly()\"\n [class.ul-input--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]=\"effectiveControlId()\"\n [size]=\"size()\"\n [showRequiredIndicator]=\"showRequiredIndicator()\"\n />\n\n <div class=\"ul-input__group\" [class.ul-input__group--focused]=\"isFocused()\">\n <div class=\"ul-input__left-elements\">\n <ng-content select=\"[ul-input-left-elements]\" />\n </div>\n\n <input\n [id]=\"effectiveControlId()\"\n [type]=\"effectiveType()\"\n class=\"ul-input__field\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (keydown)=\"onKeydown($event)\"\n [disabled]=\"disabled()\"\n [readonly]=\"readOnly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [attr.pattern]=\"nativePattern()\"\n [attr.step]=\"nativeStep()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n />\n\n <div class=\"ul-input__right-elements\">\n @if (isPasswordType()) {\n <ul-button\n class=\"ul-input__password-toggle\"\n theme=\"ghost-white\"\n size=\"sm\"\n type=\"button\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"passwordToggleLabel()\"\n (buttonClick)=\"togglePasswordVisibility()\"\n >\n <ul-icon [icon]=\"passwordToggleIcon()\" />\n </ul-button>\n }\n <ng-content select=\"[ul-input-right-elements]\" />\n </div>\n </div>\n\n <ul-form-field-helper\n [id]=\"effectiveHelperId()\"\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-input{white-space:nowrap;box-sizing:border-box;display:flex;flex-direction:column;width:100%;gap:4px}.ul-input__group{display:flex;align-items:center;height:40px;padding:0 12px;gap:8px;border-radius:8px;box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent;color:#fff;transition:box-shadow .25s cubic-bezier(.4,0,.2,1),background-color .25s cubic-bezier(.4,0,.2,1);font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-input__group--focused{box-shadow:inset 0 0 0 2px #ffffff80}.ul-input--appearance-border-only:not(.ul-input--disabled) .ul-input__group:hover{box-shadow:inset 0 0 0 2px #ffffff4d}.ul-input--appearance-subtle-tint:not(.ul-input--disabled) .ul-input__group:hover{box-shadow:inset 0 0 0 2px #ffffff4d;background-color:#ffffff0d}.ul-input__field{all:unset;flex:1}.ul-input__field::placeholder{color:#ffffff80}.ul-input__field:hover::placeholder{color:#fff}.ul-input__left-elements,.ul-input__right-elements{display:flex;align-items:center;gap:8px}.ul-input__left-elements ::ng-deep .ul-icon,.ul-input__right-elements ::ng-deep .ul-icon{font-size:24px;line-height:24px}.ul-input__password-toggle ::ng-deep .ul-btn:hover,.ul-input__password-toggle ::ng-deep .ul-btn:active{background-color:transparent}.ul-input__password-toggle ::ng-deep .ul-btn:focus:not(:focus-visible){outline:none}.ul-input--sm .ul-input__group{height:32px;padding:0 8px;font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-input--sm .ul-input__left-elements,.ul-input--sm .ul-input__right-elements{gap:4px}.ul-input--sm .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--sm .ul-input__right-elements ::ng-deep .ul-icon{font-size:20px;line-height:20px}.ul-input--md .ul-input__group{height:40px;padding:0 12px;font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-input--md .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--md .ul-input__right-elements ::ng-deep .ul-icon{font-size:24px;line-height:24px}.ul-input--lg .ul-input__group{height:48px;padding:8px 12px;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-input--lg .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--lg .ul-input__right-elements ::ng-deep .ul-icon{font-size:28px;line-height:28px}.ul-input--xl .ul-input__group{height:64px;padding:8px 16px;font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:400}.ul-input--xl .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--xl .ul-input__right-elements ::ng-deep .ul-icon{font-size:32px;line-height:32px}.ul-input--error .ul-input__group{box-shadow:inset 0 0 0 2px #f69d9d}.ul-input--disabled .ul-input__group{box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent}.ul-input--disabled .ul-input__field,.ul-input--disabled .ul-input__field:disabled::placeholder{color:#ffffff4d}.ul-input--read-only .ul-input__group{box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent}.ul-input--read-only .ul-input__field,.ul-input--read-only .ul-input__field:read-only::placeholder{color:#ffffffb3}\n"], dependencies: [{ kind: "component", type: FormFieldLabelComponent, selector: "ul-form-field-label", inputs: ["label", "required", "for", "size", "showRequiredIndicator"] }, { kind: "component", type: FormFieldHelperComponent, selector: "ul-form-field-helper", inputs: ["id", "helperText", "errorText", "error"] }, { kind: "component", type: ButtonComponent, selector: "ul-button", inputs: ["size", "theme", "iconOnly", "vertical", "disabled", "type", "ariaLabel"], outputs: ["buttonClick"] }, { kind: "component", type: IconComponent, selector: "ul-icon", inputs: ["size", "weight", "icon"] }] });
|
|
3150
|
-
}
|
|
3151
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: InputComponent, decorators: [{
|
|
3152
|
-
type: Component,
|
|
3153
|
-
args: [{ selector: 'ul-input', imports: [FormFieldLabelComponent, FormFieldHelperComponent, ButtonComponent, IconComponent], template: "<div\n class=\"ul-input ul-input--{{ size() }} ul-input--appearance-{{ appearance() }}\"\n [class.ul-input--error]=\"hasError()\"\n [class.ul-input--disabled]=\"disabled()\"\n [class.ul-input--read-only]=\"readOnly()\"\n [class.ul-input--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]=\"effectiveControlId()\"\n [size]=\"size()\"\n [showRequiredIndicator]=\"showRequiredIndicator()\"\n />\n\n <div class=\"ul-input__group\" [class.ul-input__group--focused]=\"isFocused()\">\n <div class=\"ul-input__left-elements\">\n <ng-content select=\"[ul-input-left-elements]\" />\n </div>\n\n <input\n [id]=\"effectiveControlId()\"\n [type]=\"effectiveType()\"\n class=\"ul-input__field\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (keydown)=\"onKeydown($event)\"\n [disabled]=\"disabled()\"\n [readonly]=\"readOnly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [attr.pattern]=\"nativePattern()\"\n [attr.step]=\"nativeStep()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n />\n\n <div class=\"ul-input__right-elements\">\n @if (isPasswordType()) {\n <ul-button\n class=\"ul-input__password-toggle\"\n theme=\"ghost-white\"\n size=\"sm\"\n type=\"button\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"passwordToggleLabel()\"\n (buttonClick)=\"togglePasswordVisibility()\"\n >\n <ul-icon [icon]=\"passwordToggleIcon()\" />\n </ul-button>\n }\n <ng-content select=\"[ul-input-right-elements]\" />\n </div>\n </div>\n\n <ul-form-field-helper\n [id]=\"effectiveHelperId()\"\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-input{white-space:nowrap;box-sizing:border-box;display:flex;flex-direction:column;width:100%;gap:4px}.ul-input__group{display:flex;align-items:center;height:40px;padding:0 12px;gap:8px;border-radius:8px;box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent;color:#fff;transition:box-shadow .25s cubic-bezier(.4,0,.2,1),background-color .25s cubic-bezier(.4,0,.2,1);font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-input__group--focused{box-shadow:inset 0 0 0 2px #ffffff80}.ul-input--appearance-border-only:not(.ul-input--disabled) .ul-input__group:hover{box-shadow:inset 0 0 0 2px #ffffff4d}.ul-input--appearance-subtle-tint:not(.ul-input--disabled) .ul-input__group:hover{box-shadow:inset 0 0 0 2px #ffffff4d;background-color:#ffffff0d}.ul-input__field{all:unset;flex:1}.ul-input__field::placeholder{color:#ffffff80}.ul-input__field:hover::placeholder{color:#fff}.ul-input__left-elements,.ul-input__right-elements{display:flex;align-items:center;gap:8px}.ul-input__left-elements ::ng-deep .ul-icon,.ul-input__right-elements ::ng-deep .ul-icon{font-size:24px;line-height:24px}.ul-input__password-toggle ::ng-deep .ul-btn:hover,.ul-input__password-toggle ::ng-deep .ul-btn:active{background-color:transparent}.ul-input__password-toggle ::ng-deep .ul-btn:focus:not(:focus-visible){outline:none}.ul-input--sm .ul-input__group{height:32px;padding:0 8px;font-family:Ultra Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:400}.ul-input--sm .ul-input__left-elements,.ul-input--sm .ul-input__right-elements{gap:4px}.ul-input--sm .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--sm .ul-input__right-elements ::ng-deep .ul-icon{font-size:20px;line-height:20px}.ul-input--md .ul-input__group{height:40px;padding:0 12px;font-family:Ultra Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-input--md .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--md .ul-input__right-elements ::ng-deep .ul-icon{font-size:24px;line-height:24px}.ul-input--lg .ul-input__group{height:48px;padding:8px 12px;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-input--lg .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--lg .ul-input__right-elements ::ng-deep .ul-icon{font-size:28px;line-height:28px}.ul-input--xl .ul-input__group{height:64px;padding:8px 16px;font-family:Ultra Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:400}.ul-input--xl .ul-input__left-elements ::ng-deep .ul-icon,.ul-input--xl .ul-input__right-elements ::ng-deep .ul-icon{font-size:32px;line-height:32px}.ul-input--error .ul-input__group{box-shadow:inset 0 0 0 2px #f69d9d}.ul-input--disabled .ul-input__group{box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent}.ul-input--disabled .ul-input__field,.ul-input--disabled .ul-input__field:disabled::placeholder{color:#ffffff4d}.ul-input--read-only .ul-input__group{box-shadow:inset 0 0 0 2px #ffffff1a;background-color:transparent}.ul-input--read-only .ul-input__field,.ul-input--read-only .ul-input__field:read-only::placeholder{color:#ffffffb3}\n"] }]
|
|
3154
|
-
}], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", 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 }] }], 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 }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], minLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minLength", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }], controlId: [{ type: i0.Input, args: [{ isSignal: true, alias: "controlId", required: false }] }], showPasswordLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPasswordLabel", required: false }] }], hidePasswordLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "hidePasswordLabel", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], touch: [{ type: i0.Output, args: ["touch"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], inputBlur: [{ type: i0.Output, args: ["inputBlur"] }], inputFocus: [{ type: i0.Output, args: ["inputFocus"] }], inputEnter: [{ type: i0.Output, args: ["inputEnter"] }] } });
|
|
3155
|
-
|
|
3156
3202
|
const DEFAULT_DURATION_MS = 500;
|
|
3157
3203
|
const MOVE_CANCEL_THRESHOLD_PX = 10;
|
|
3158
3204
|
/**
|
|
@@ -3303,11 +3349,11 @@ class MenuComponent {
|
|
|
3303
3349
|
this.closed.emit();
|
|
3304
3350
|
}
|
|
3305
3351
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3306
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.0", type: MenuComponent, isStandalone: true, selector: "ul-menu", inputs: { theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, triggerIconOnly: { classPropertyName: "triggerIconOnly", publicName: "triggerIconOnly", isSignal: true, isRequired: false, transformFunction: null }, iconOnlyLabel: { classPropertyName: "iconOnlyLabel", publicName: "iconOnlyLabel", isSignal: true, isRequired: false, transformFunction: null }, triggerLabel: { classPropertyName: "triggerLabel", publicName: "triggerLabel", isSignal: true, isRequired: false, transformFunction: null }, triggerLeftIcons: { classPropertyName: "triggerLeftIcons", publicName: "triggerLeftIcons", isSignal: true, isRequired: false, transformFunction: null }, triggerRightIcons: { classPropertyName: "triggerRightIcons", publicName: "triggerRightIcons", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: "itemSelected", closed: "closed" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MenuTriggerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ul-menu-trigger\n [theme]=\"theme()\"\n [disabled]=\"disabled()\"\n [iconOnly]=\"triggerIconOnly()\"\n [iconOnlyLabel]=\"iconOnlyLabel()\"\n [label]=\"triggerLabel()\"\n [leftIcons]=\"triggerLeftIcons()\"\n [rightIcons]=\"triggerRightIcons()\"\n [menuTemplate]=\"menu\"\n [menuId]=\"menuId\"\n [isOpen]=\"isOpen()\"\n (opened)=\"onMenuOpened()\"\n (closed)=\"onMenuClosed()\"\n/>\n\n<ng-template #menu>\n <div class=\"ul-menu__backdrop\" (click)=\"closeMenu()\"></div>\n <div cdkMenu class=\"ul-menu\" [id]=\"menuId\">\n <ul-menu-items\n [items]=\"items()\"\n [theme]=\"theme()\"\n (itemTriggered)=\"handleItemTriggered($event)\"\n />\n <ng-content />\n </div>\n</ng-template>\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-menu{display:flex;flex-direction:column;gap:4px;background-color:#232323;border-radius:16px;padding:4px;margin:4px 0;min-width:200px}@media(max-width:1023px){.ul-menu{position:fixed;inset:auto 0 0;width:100%;max-height:40vh;margin:0;border-radius:16px 16px 0 0;gap:16px;display:flex;flex-direction:column;overflow-y:auto;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-menu ul-list-item .ul-list-item{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}}.ul-menu__backdrop{display:none}@media(max-width:1023px){.ul-menu__backdrop{display:block;position:fixed;inset:0;background-color:#0000004d}}\n"], dependencies: [{ kind: "directive", type: CdkMenu, selector: "[cdkMenu]", outputs: ["closed"], exportAs: ["cdkMenu"] }, { kind: "component", type: MenuItemsComponent, selector: "ul-menu-items", inputs: ["items", "theme", "selectedIndex"], outputs: ["itemTriggered"] }, { kind: "component", type: MenuTriggerComponent, selector: "ul-menu-trigger", inputs: ["theme", "disabled", "iconOnly", "iconOnlyLabel", "label", "leftIcons", "rightIcons", "menuTemplate", "menuId", "isOpen"], outputs: ["opened", "closed"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
3352
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.0", type: MenuComponent, isStandalone: true, selector: "ul-menu", inputs: { theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, triggerIconOnly: { classPropertyName: "triggerIconOnly", publicName: "triggerIconOnly", isSignal: true, isRequired: false, transformFunction: null }, iconOnlyLabel: { classPropertyName: "iconOnlyLabel", publicName: "iconOnlyLabel", isSignal: true, isRequired: false, transformFunction: null }, triggerLabel: { classPropertyName: "triggerLabel", publicName: "triggerLabel", isSignal: true, isRequired: false, transformFunction: null }, triggerLeftIcons: { classPropertyName: "triggerLeftIcons", publicName: "triggerLeftIcons", isSignal: true, isRequired: false, transformFunction: null }, triggerRightIcons: { classPropertyName: "triggerRightIcons", publicName: "triggerRightIcons", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: "itemSelected", closed: "closed" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MenuTriggerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ul-menu-trigger\n [theme]=\"theme()\"\n [disabled]=\"disabled()\"\n [iconOnly]=\"triggerIconOnly()\"\n [iconOnlyLabel]=\"iconOnlyLabel()\"\n [label]=\"triggerLabel()\"\n [leftIcons]=\"triggerLeftIcons()\"\n [rightIcons]=\"triggerRightIcons()\"\n [menuTemplate]=\"menu\"\n [menuId]=\"menuId\"\n [isOpen]=\"isOpen()\"\n (opened)=\"onMenuOpened()\"\n (closed)=\"onMenuClosed()\"\n/>\n\n<ng-template #menu>\n <div class=\"ul-menu__backdrop\" (click)=\"closeMenu()\"></div>\n <div cdkMenu class=\"ul-menu\" [id]=\"menuId\">\n <ul-menu-items\n [items]=\"items()\"\n [theme]=\"theme()\"\n (itemTriggered)=\"handleItemTriggered($event)\"\n />\n <ng-content />\n </div>\n</ng-template>\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-menu{display:flex;flex-direction:column;gap:4px;background-color:#232323;border-radius:16px;padding:4px;margin:4px 0;min-width:200px}@media(max-width:1023px){.ul-menu{position:fixed;inset:auto 0 0;width:100%;max-height:40vh;margin:0;border-radius:16px 16px 0 0;gap:16px;display:flex;padding-bottom:8px;flex-direction:column;overflow-y:auto;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-menu ul-list-item .ul-list-item{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}}.ul-menu__backdrop{display:none}@media(max-width:1023px){.ul-menu__backdrop{display:block;position:fixed;inset:0;background-color:#0000004d}}\n"], dependencies: [{ kind: "directive", type: CdkMenu, selector: "[cdkMenu]", outputs: ["closed"], exportAs: ["cdkMenu"] }, { kind: "component", type: MenuItemsComponent, selector: "ul-menu-items", inputs: ["items", "theme", "selectedIndex"], outputs: ["itemTriggered"] }, { kind: "component", type: MenuTriggerComponent, selector: "ul-menu-trigger", inputs: ["theme", "disabled", "iconOnly", "iconOnlyLabel", "label", "leftIcons", "rightIcons", "menuTemplate", "menuId", "isOpen"], outputs: ["opened", "closed"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
3307
3353
|
}
|
|
3308
3354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: MenuComponent, decorators: [{
|
|
3309
3355
|
type: Component,
|
|
3310
|
-
args: [{ selector: 'ul-menu', imports: [CdkMenu, MenuItemsComponent, MenuTriggerComponent], encapsulation: ViewEncapsulation.None, template: "<ul-menu-trigger\n [theme]=\"theme()\"\n [disabled]=\"disabled()\"\n [iconOnly]=\"triggerIconOnly()\"\n [iconOnlyLabel]=\"iconOnlyLabel()\"\n [label]=\"triggerLabel()\"\n [leftIcons]=\"triggerLeftIcons()\"\n [rightIcons]=\"triggerRightIcons()\"\n [menuTemplate]=\"menu\"\n [menuId]=\"menuId\"\n [isOpen]=\"isOpen()\"\n (opened)=\"onMenuOpened()\"\n (closed)=\"onMenuClosed()\"\n/>\n\n<ng-template #menu>\n <div class=\"ul-menu__backdrop\" (click)=\"closeMenu()\"></div>\n <div cdkMenu class=\"ul-menu\" [id]=\"menuId\">\n <ul-menu-items\n [items]=\"items()\"\n [theme]=\"theme()\"\n (itemTriggered)=\"handleItemTriggered($event)\"\n />\n <ng-content />\n </div>\n</ng-template>\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-menu{display:flex;flex-direction:column;gap:4px;background-color:#232323;border-radius:16px;padding:4px;margin:4px 0;min-width:200px}@media(max-width:1023px){.ul-menu{position:fixed;inset:auto 0 0;width:100%;max-height:40vh;margin:0;border-radius:16px 16px 0 0;gap:16px;display:flex;flex-direction:column;overflow-y:auto;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-menu ul-list-item .ul-list-item{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}}.ul-menu__backdrop{display:none}@media(max-width:1023px){.ul-menu__backdrop{display:block;position:fixed;inset:0;background-color:#0000004d}}\n"] }]
|
|
3356
|
+
args: [{ selector: 'ul-menu', imports: [CdkMenu, MenuItemsComponent, MenuTriggerComponent], encapsulation: ViewEncapsulation.None, template: "<ul-menu-trigger\n [theme]=\"theme()\"\n [disabled]=\"disabled()\"\n [iconOnly]=\"triggerIconOnly()\"\n [iconOnlyLabel]=\"iconOnlyLabel()\"\n [label]=\"triggerLabel()\"\n [leftIcons]=\"triggerLeftIcons()\"\n [rightIcons]=\"triggerRightIcons()\"\n [menuTemplate]=\"menu\"\n [menuId]=\"menuId\"\n [isOpen]=\"isOpen()\"\n (opened)=\"onMenuOpened()\"\n (closed)=\"onMenuClosed()\"\n/>\n\n<ng-template #menu>\n <div class=\"ul-menu__backdrop\" (click)=\"closeMenu()\"></div>\n <div cdkMenu class=\"ul-menu\" [id]=\"menuId\">\n <ul-menu-items\n [items]=\"items()\"\n [theme]=\"theme()\"\n (itemTriggered)=\"handleItemTriggered($event)\"\n />\n <ng-content />\n </div>\n</ng-template>\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-menu{display:flex;flex-direction:column;gap:4px;background-color:#232323;border-radius:16px;padding:4px;margin:4px 0;min-width:200px}@media(max-width:1023px){.ul-menu{position:fixed;inset:auto 0 0;width:100%;max-height:40vh;margin:0;border-radius:16px 16px 0 0;gap:16px;display:flex;padding-bottom:8px;flex-direction:column;overflow-y:auto;font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}.ul-menu ul-list-item .ul-list-item{font-family:Ultra Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400}}.ul-menu__backdrop{display:none}@media(max-width:1023px){.ul-menu__backdrop{display:block;position:fixed;inset:0;background-color:#0000004d}}\n"] }]
|
|
3311
3357
|
}], propDecorators: { theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], triggerIconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerIconOnly", required: false }] }], iconOnlyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnlyLabel", required: false }] }], triggerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerLabel", required: false }] }], triggerLeftIcons: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerLeftIcons", required: false }] }], triggerRightIcons: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerRightIcons", required: false }] }], itemSelected: [{ type: i0.Output, args: ["itemSelected"] }], closed: [{ type: i0.Output, args: ["closed"] }], trigger: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MenuTriggerComponent), { isSignal: true }] }] } });
|
|
3312
3358
|
|
|
3313
3359
|
/** Place on the element projected into [ul-navbar-logo] so the navbar can detect logo content. */
|
|
@@ -5149,5 +5195,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
5149
5195
|
* Generated bundle index. Do not edit.
|
|
5150
5196
|
*/
|
|
5151
5197
|
|
|
5152
|
-
export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent,
|
|
5198
|
+
export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CategoryPickerComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DockComponent, DockItemComponent, DockItemContentSlotDirective, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageCropperComponent, ImageNotFoundComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, LongPressDirective, MenuComponent, MenuItemsComponent, MenuTriggerComponent, ModalComponent, NavbarAppNameSlotDirective, NavbarAvatarSlotDirective, NavbarComponent, NavbarLogoSlotDirective, NavbarSearchSlotDirective, PeHeroActionsSlotDirective, PeHeroBadgesSlotDirective, PeHeroContentSlotDirective, PeHeroSubtitleSlotDirective, PeHeroTitleSlotDirective, PillComponent, PriceButtonComponent, RadialComponent, RadioComponent, RadioGroupComponent, RichTextComponent, SearchInputComponent, SearchSelectComponent, SelectComponent, SelectableRowComponent, SidebarComponent, SkeletonComponent, StatusComponent, StepperComponent, TableComponent, TextareaComponent, TextareaFieldDirective, ToastContainerComponent, ToastService, ToggleComponent, TooltipComponent, createFormFieldIds, getFormFieldDescribedBy, toastIcon };
|
|
5153
5199
|
//# sourceMappingURL=underlayerdev-ui.mjs.map
|