@leanix/components 0.4.531 → 0.4.533
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/leanix-components.mjs +365 -365
- package/fesm2022/leanix-components.mjs.map +1 -1
- package/lib/core-ui/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/forms-ui/components/keyboard-select.directive.d.ts +1 -1
- package/lib/forms-ui/models/base-select.directive.d.ts +1 -1
- package/lib/tab-ui/components/tab-group/tab-group.component.d.ts +1 -1
- package/package.json +10 -14
- package/esm2022/index.mjs +0 -145
- package/esm2022/leanix-components.mjs +0 -5
- package/esm2022/lib/core-ui/components/avatar/avatar.component.mjs +0 -40
- package/esm2022/lib/core-ui/components/avatar/avatar.helpers.mjs +0 -49
- package/esm2022/lib/core-ui/components/avatar/avatar.model.mjs +0 -33
- package/esm2022/lib/core-ui/components/avatar-group/avatar-group.component.mjs +0 -75
- package/esm2022/lib/core-ui/components/badge/badge.component.mjs +0 -58
- package/esm2022/lib/core-ui/components/banner/banner.component.mjs +0 -68
- package/esm2022/lib/core-ui/components/banner/banner.models.mjs +0 -12
- package/esm2022/lib/core-ui/components/button/button.component.mjs +0 -179
- package/esm2022/lib/core-ui/components/button-group/button-group.component.mjs +0 -28
- package/esm2022/lib/core-ui/components/card/card.component.mjs +0 -26
- package/esm2022/lib/core-ui/components/collapsible/collapsible.component.mjs +0 -52
- package/esm2022/lib/core-ui/components/counter/counter.component.mjs +0 -30
- package/esm2022/lib/core-ui/components/ellipsis/ellipsis.component.mjs +0 -143
- package/esm2022/lib/core-ui/components/empty-state/empty-state.component.mjs +0 -41
- package/esm2022/lib/core-ui/components/icon-scale/icon-scale.component.mjs +0 -36
- package/esm2022/lib/core-ui/components/skeleton/skeleton.component.mjs +0 -44
- package/esm2022/lib/core-ui/components/spinner/spinner.component.mjs +0 -26
- package/esm2022/lib/core-ui/components/stepper/stepper.component.mjs +0 -70
- package/esm2022/lib/core-ui/components/table/table-header/table-header.component.mjs +0 -128
- package/esm2022/lib/core-ui/components/table/table.component.mjs +0 -77
- package/esm2022/lib/core-ui/components/tiny-spinner/tiny-spinner.component.mjs +0 -14
- package/esm2022/lib/core-ui/components/tokenizer/token/token.component.mjs +0 -20
- package/esm2022/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.mjs +0 -44
- package/esm2022/lib/core-ui/components/tokenizer/tokenizer.component.mjs +0 -149
- package/esm2022/lib/core-ui/core-ui.constants.mjs +0 -240
- package/esm2022/lib/core-ui/core-ui.module.mjs +0 -206
- package/esm2022/lib/core-ui/directives/after-view-init.directive.mjs +0 -33
- package/esm2022/lib/core-ui/directives/autoclose-group.service.mjs +0 -39
- package/esm2022/lib/core-ui/directives/autoclose.directive.mjs +0 -43
- package/esm2022/lib/core-ui/directives/autofocus.directive.mjs +0 -36
- package/esm2022/lib/core-ui/functions/core-css.helpers.mjs +0 -52
- package/esm2022/lib/core-ui/functions/highlight-text.function.mjs +0 -80
- package/esm2022/lib/core-ui/linkify/linkify.pipe.mjs +0 -146
- package/esm2022/lib/core-ui/linkify/unlinkify.pipe.mjs +0 -51
- package/esm2022/lib/core-ui/pipes/br.pipe.mjs +0 -24
- package/esm2022/lib/core-ui/pipes/contrast-color.pipe.mjs +0 -21
- package/esm2022/lib/core-ui/pipes/custom-date.pipe.mjs +0 -28
- package/esm2022/lib/core-ui/pipes/display-avatars.pipe.mjs +0 -37
- package/esm2022/lib/core-ui/pipes/highlight-range.pipe.mjs +0 -29
- package/esm2022/lib/core-ui/pipes/highlight-term.pipe.mjs +0 -57
- package/esm2022/lib/core-ui/pipes/lx-is-uuid.pipe.mjs +0 -22
- package/esm2022/lib/core-ui/pipes/lx-time-ago.pipe.mjs +0 -29
- package/esm2022/lib/core-ui/pipes/lx-translate.pipe.mjs +0 -50
- package/esm2022/lib/core-ui/pipes/markdown.pipe.mjs +0 -32
- package/esm2022/lib/core-ui/pipes/nbsp.pipe.mjs +0 -17
- package/esm2022/lib/core-ui/pipes/sort.pipe.mjs +0 -55
- package/esm2022/lib/core-ui/pipes/translation-after.pipe.mjs +0 -29
- package/esm2022/lib/core-ui/pipes/translation-before.pipe.mjs +0 -54
- package/esm2022/lib/core-ui/pipes/translation-between.pipe.mjs +0 -68
- package/esm2022/lib/core-ui/pipes/unescape-curly-braces.pipe.mjs +0 -17
- package/esm2022/lib/core-ui/services/resize-observer.service.mjs +0 -112
- package/esm2022/lib/core-ui/tooltip/to-cdk-position.function.mjs +0 -74
- package/esm2022/lib/core-ui/tooltip/tooltip-position.interface.mjs +0 -7
- package/esm2022/lib/core-ui/tooltip/tooltip.component.mjs +0 -26
- package/esm2022/lib/core-ui/tooltip/tooltip.directive.mjs +0 -117
- package/esm2022/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +0 -139
- package/esm2022/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.mjs +0 -38
- package/esm2022/lib/forms-ui/components/breadcrumb/breadcrumb.component.mjs +0 -55
- package/esm2022/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +0 -215
- package/esm2022/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.mjs +0 -135
- package/esm2022/lib/forms-ui/components/currency/currency-input.component.mjs +0 -159
- package/esm2022/lib/forms-ui/components/currency/currency-symbol-map.constant.mjs +0 -105
- package/esm2022/lib/forms-ui/components/currency/currency-symbol.component.mjs +0 -24
- package/esm2022/lib/forms-ui/components/date-input/date-input.component.mjs +0 -347
- package/esm2022/lib/forms-ui/components/date-picker-ui/date-formatter.mjs +0 -8
- package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.mjs +0 -312
- package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.mjs +0 -20
- package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.component.mjs +0 -206
- package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.config.mjs +0 -29
- package/esm2022/lib/forms-ui/components/date-picker-ui/daypicker.component.mjs +0 -319
- package/esm2022/lib/forms-ui/components/date-picker-ui/isBs3.mjs +0 -2
- package/esm2022/lib/forms-ui/components/date-picker-ui/monthpicker.component.mjs +0 -149
- package/esm2022/lib/forms-ui/components/date-picker-ui/yearpicker.component.mjs +0 -151
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/constants.mjs +0 -5
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +0 -49
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.mjs +0 -120
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.mjs +0 -39
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +0 -137
- package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.mjs +0 -38
- package/esm2022/lib/forms-ui/components/error-message/error-message.component.mjs +0 -16
- package/esm2022/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.mjs +0 -26
- package/esm2022/lib/forms-ui/components/form-error/form-error.component.mjs +0 -44
- package/esm2022/lib/forms-ui/components/icon/icon.component.mjs +0 -45
- package/esm2022/lib/forms-ui/components/input/input.component.mjs +0 -48
- package/esm2022/lib/forms-ui/components/keyboard-select.directive.mjs +0 -126
- package/esm2022/lib/forms-ui/components/multi-select/multi-select-selection/multi-select-selection.component.mjs +0 -28
- package/esm2022/lib/forms-ui/components/multi-select/multi-select.component.mjs +0 -318
- package/esm2022/lib/forms-ui/components/option/option.component.mjs +0 -99
- package/esm2022/lib/forms-ui/components/option-group/option-group.component.mjs +0 -29
- package/esm2022/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.mjs +0 -123
- package/esm2022/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +0 -297
- package/esm2022/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.mjs +0 -94
- package/esm2022/lib/forms-ui/components/picker/picker-trigger.directive.mjs +0 -47
- package/esm2022/lib/forms-ui/components/picker/picker.component.mjs +0 -218
- package/esm2022/lib/forms-ui/components/picker-option/picker-option.component.mjs +0 -118
- package/esm2022/lib/forms-ui/components/pill-item/pill-item.component.mjs +0 -33
- package/esm2022/lib/forms-ui/components/pill-list/pill-list.component.mjs +0 -58
- package/esm2022/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +0 -101
- package/esm2022/lib/forms-ui/components/select-list/select-list.component.mjs +0 -178
- package/esm2022/lib/forms-ui/components/single-select/single-select.component.mjs +0 -290
- package/esm2022/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.mjs +0 -71
- package/esm2022/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.mjs +0 -21
- package/esm2022/lib/forms-ui/components/switch/switch.component.mjs +0 -51
- package/esm2022/lib/forms-ui/directives/contenteditable.directive.mjs +0 -130
- package/esm2022/lib/forms-ui/directives/form-error.directive.mjs +0 -121
- package/esm2022/lib/forms-ui/directives/form-submit.directive.mjs +0 -29
- package/esm2022/lib/forms-ui/directives/keyboard-action-source.directive.mjs +0 -63
- package/esm2022/lib/forms-ui/directives/mark-invalid.directive.mjs +0 -39
- package/esm2022/lib/forms-ui/directives/max-length-counter.directive.mjs +0 -131
- package/esm2022/lib/forms-ui/directives/select-dropdown.directive.mjs +0 -32
- package/esm2022/lib/forms-ui/directives/selectable-item.directive.mjs +0 -34
- package/esm2022/lib/forms-ui/directives/selected-option.directive.mjs +0 -27
- package/esm2022/lib/forms-ui/forms-ui.module.mjs +0 -270
- package/esm2022/lib/forms-ui/helpers/key-codes.constants.mjs +0 -13
- package/esm2022/lib/forms-ui/helpers/keyboard-navigation.helpers.mjs +0 -38
- package/esm2022/lib/forms-ui/models/base-select.directive.mjs +0 -183
- package/esm2022/lib/forms-ui/models/dropdown-item.interface.mjs +0 -2
- package/esm2022/lib/forms-ui/models/single-select-padding.interface.mjs +0 -2
- package/esm2022/lib/forms-ui/models/sorting.interface.mjs +0 -7
- package/esm2022/lib/forms-ui/pipes/filter-selection.pipe.mjs +0 -33
- package/esm2022/lib/forms-ui/pipes/filter-term.pipe.mjs +0 -29
- package/esm2022/lib/forms-ui/pipes/format-number.pipe.mjs +0 -66
- package/esm2022/lib/forms-ui/validators/date-in-foreseeable-future.validator.mjs +0 -26
- package/esm2022/lib/forms-ui/validators/string-not-in-array.validator.mjs +0 -30
- package/esm2022/lib/modal-ui/components/modal/modal.component.mjs +0 -264
- package/esm2022/lib/modal-ui/components/modal-footer/modal-footer.component.mjs +0 -16
- package/esm2022/lib/modal-ui/components/modal-header/modal-header.component.mjs +0 -19
- package/esm2022/lib/modal-ui/directives/modal-content.directive.mjs +0 -14
- package/esm2022/lib/modal-ui/modal.constants.mjs +0 -18
- package/esm2022/lib/modal-ui/modal.module.mjs +0 -47
- package/esm2022/lib/popover-ui/components/popover/popover.component.mjs +0 -228
- package/esm2022/lib/popover-ui/directives/popover-click.directive.mjs +0 -52
- package/esm2022/lib/popover-ui/directives/popover-content.directive.mjs +0 -17
- package/esm2022/lib/popover-ui/directives/popover-hover.directive.mjs +0 -88
- package/esm2022/lib/popover-ui/popover-ui.module.mjs +0 -21
- package/esm2022/lib/shared/date-helpers.mjs +0 -35
- package/esm2022/lib/shared/html-helpers.function.mjs +0 -34
- package/esm2022/lib/shared/misc-helpers.mjs +0 -24
- package/esm2022/lib/shared/observe.mjs +0 -40
- package/esm2022/lib/tab-ui/components/tab/tab.component.mjs +0 -118
- package/esm2022/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.mjs +0 -12
- package/esm2022/lib/tab-ui/components/tab-group/tab-group.component.mjs +0 -150
- package/esm2022/lib/tab-ui/tab-ui.module.mjs +0 -20
- package/esm2022/ui5/icons/lx-icons.json +0 -177
- package/esm2022/ui5/icons/register-icons.mjs +0 -14
- package/esm2022/ui5/index.mjs +0 -8
- package/esm2022/ui5/leanix-components-ui5.mjs +0 -5
- package/esm2022/ui5/ui5.provider.mjs +0 -29
@@ -1,143 +0,0 @@
|
|
1
|
-
import { __decorate } from "tslib";
|
2
|
-
import { AsyncPipe, NgIf } from '@angular/common';
|
3
|
-
import { ChangeDetectionStrategy, Component, ElementRef, Inject, InjectionToken, Input, ViewChild } from '@angular/core';
|
4
|
-
import { escape } from 'lodash/fp';
|
5
|
-
import { BehaviorSubject, Subject, combineLatest, concat, merge } from 'rxjs';
|
6
|
-
import { debounceTime, distinctUntilChanged, filter, map, pairwise, skip, startWith, switchMap, take, takeUntil, withLatestFrom } from 'rxjs/operators';
|
7
|
-
import { Observe } from '../../../shared/observe';
|
8
|
-
import { ButtonComponent } from '../button/button.component';
|
9
|
-
import * as i0 from "@angular/core";
|
10
|
-
import * as i1 from "../../services/resize-observer.service";
|
11
|
-
import * as i2 from "@ngx-translate/core";
|
12
|
-
export const LX_ELLIPSIS_DEBOUNCE_ON_RESIZE = new InjectionToken('LX_ELLIPSIS_DEBOUNCE_ON_RESIZE', {
|
13
|
-
providedIn: 'root',
|
14
|
-
factory: () => EllipsisComponent.DEFAULT_RESIZE_DEBOUNCE_MS
|
15
|
-
});
|
16
|
-
/**
|
17
|
-
* You can set `max-width` CSS property on your `lx-ellipsis` host element or the parent element if you want its content to never exceed a specific width.
|
18
|
-
*/
|
19
|
-
export class EllipsisComponent {
|
20
|
-
/** @internal */
|
21
|
-
static { this.DEFAULT_RESIZE_DEBOUNCE_MS = 500; }
|
22
|
-
constructor(debounceMsAfterResize, cdRef, hostEl, resizeObserverService, translateService) {
|
23
|
-
this.debounceMsAfterResize = debounceMsAfterResize;
|
24
|
-
this.cdRef = cdRef;
|
25
|
-
this.hostEl = hostEl;
|
26
|
-
this.resizeObserverService = resizeObserverService;
|
27
|
-
this.translateService = translateService;
|
28
|
-
this.content = '';
|
29
|
-
/**
|
30
|
-
* Only set this to false if the content is not a user provided string
|
31
|
-
* or if you sanitize the provided content yourself.
|
32
|
-
*/
|
33
|
-
this.escapeHtmlInContent = true;
|
34
|
-
/** @internal */
|
35
|
-
this.isShowingMore$ = new BehaviorSubject(false);
|
36
|
-
this.destroyed$ = new Subject();
|
37
|
-
this.viewChecked$ = new Subject();
|
38
|
-
}
|
39
|
-
ngOnInit() {
|
40
|
-
this.sanitizedContent$ = this.content$.pipe(map((content) => {
|
41
|
-
if (this.escapeHtmlInContent && typeof content === 'string') {
|
42
|
-
return escape(content);
|
43
|
-
}
|
44
|
-
return content;
|
45
|
-
}));
|
46
|
-
this.showMoreButtonLabel$ = this.isShowingMore$.pipe(switchMap((isShowingMore) => {
|
47
|
-
const translationKey = isShowingMore ? 'common.showLess' : 'common.showMore';
|
48
|
-
return this.translateService.get(translationKey);
|
49
|
-
}));
|
50
|
-
const newWidthOnResize$ = new Subject();
|
51
|
-
const newHeightOnResize$ = new Subject();
|
52
|
-
this.resizeObserverService.observe(this.hostEl.nativeElement, (resizedElement) => {
|
53
|
-
newWidthOnResize$.next(resizedElement.contentRect.width);
|
54
|
-
newHeightOnResize$.next(resizedElement.contentRect.height);
|
55
|
-
});
|
56
|
-
const containerWidthChangedSignificantlyAfterResize$ = newWidthOnResize$.pipe(startWith(0), pairwise(), filter(([previousWidth, newWidth]) => Math.abs(newWidth - previousWidth) > 1), map(([, newWidth]) => newWidth));
|
57
|
-
const userTriggeredTriggeredShowLess$ = this.isShowingMore$.pipe(filter((isShowingMore) => !isShowingMore));
|
58
|
-
const reevaluateIfContentIsOverflowing$ = combineLatest([
|
59
|
-
this.contentSpanEl$,
|
60
|
-
userTriggeredTriggeredShowLess$,
|
61
|
-
containerWidthChangedSignificantlyAfterResize$
|
62
|
-
]);
|
63
|
-
const isContentOverflowing$ = merge(concat(reevaluateIfContentIsOverflowing$.pipe(take(1)), // debounce all but the first output
|
64
|
-
reevaluateIfContentIsOverflowing$.pipe(debounceTime(this.debounceMsAfterResize))), this.content$.pipe(skip(1), switchMap(() => this.viewChecked$))).pipe(withLatestFrom(this.contentSpanEl$), map(([, contentSpanRef]) => this.isContentOverflowing(contentSpanRef)));
|
65
|
-
const userTriggeredTriggeredShowMore$ = this.isShowingMore$.pipe(filter((isShowingMore) => isShowingMore));
|
66
|
-
const buttonHeight$ = this.showMoreButtonEl$.pipe(filter((showMoreButtonEl) => !!showMoreButtonEl), map((showMoreButtonEl) => showMoreButtonEl.nativeElement.offsetHeight), distinctUntilChanged());
|
67
|
-
const userIncreasedBrowserWindowSizeToThePointOfNoTruncationNecessary$ = combineLatest([
|
68
|
-
buttonHeight$,
|
69
|
-
newHeightOnResize$.pipe(distinctUntilChanged())
|
70
|
-
]).pipe(withLatestFrom(this.isShowingMore$), filter(([, isShowingMore]) => isShowingMore), map(([[buttonHeight, newHeight]]) => {
|
71
|
-
const heightOfOneLine = buttonHeight;
|
72
|
-
const showLessButtonMarginTop = 4;
|
73
|
-
const heightOfSpanInShowMoreMode = newHeight - buttonHeight - showLessButtonMarginTop;
|
74
|
-
const thresholdToDetectContentInSingleLine = 4;
|
75
|
-
const differenceBetweenContentSpanAndButtonHeight = Math.abs(heightOfOneLine - heightOfSpanInShowMoreMode);
|
76
|
-
const isSpanContentDisplayedInOneLineAgain = differenceBetweenContentSpanAndButtonHeight < thresholdToDetectContentInSingleLine;
|
77
|
-
return isSpanContentDisplayedInOneLineAgain;
|
78
|
-
}));
|
79
|
-
const contentFitsInOneLineAgainWhileShowMoreIsEnabled$ = userIncreasedBrowserWindowSizeToThePointOfNoTruncationNecessary$.pipe(startWith(false), pairwise(), filter(([previousTextIsNowInOneLineAgain]) => !previousTextIsNowInOneLineAgain), map(([, textIsNowInOneLineAgain]) => !textIsNowInOneLineAgain));
|
80
|
-
const contentIsOverflowingAndShowMoreIsNotEnabled$ = isContentOverflowing$.pipe(withLatestFrom(this.isShowingMore$), filter(([, isShowingMore]) => !isShowingMore), map(([isContentLongerThanContainerWidth]) => {
|
81
|
-
return isContentLongerThanContainerWidth;
|
82
|
-
}));
|
83
|
-
this.showButton$ = merge(userTriggeredTriggeredShowMore$, contentFitsInOneLineAgainWhileShowMoreIsEnabled$, contentIsOverflowingAndShowMoreIsNotEnabled$);
|
84
|
-
// As long as no parent component is listening on resize events,
|
85
|
-
// the ChangeDetectorRef.markForCheck() call done by the async pipe
|
86
|
-
// will not result in a change detection cycle in this component when its size changes.
|
87
|
-
// This is the least amount of ChangeDetectorRef.detectChanges() calls
|
88
|
-
// I was able to come up with. The Angular profiler shows acceptable numbers of change detection.
|
89
|
-
this.detectChangesWhenObservableEmits(isContentOverflowing$);
|
90
|
-
this.detectChangesWhenObservableEmits(this.showButton$);
|
91
|
-
this.detectChangesWhenObservableEmits(this.content$);
|
92
|
-
this.detectChangesWhenObservableEmits(contentIsOverflowingAndShowMoreIsNotEnabled$);
|
93
|
-
this.detectChangesWhenObservableEmits(isContentOverflowing$);
|
94
|
-
}
|
95
|
-
ngAfterViewChecked() {
|
96
|
-
this.viewChecked$.next();
|
97
|
-
}
|
98
|
-
/** @internal */
|
99
|
-
onShowMoreToggle() {
|
100
|
-
this.isShowingMore$.next(!this.isShowingMore$.getValue());
|
101
|
-
this.cdRef.detectChanges();
|
102
|
-
}
|
103
|
-
ngOnDestroy() {
|
104
|
-
this.resizeObserverService.unobserve(this.hostEl.nativeElement);
|
105
|
-
}
|
106
|
-
detectChangesWhenObservableEmits(observable$) {
|
107
|
-
observable$.pipe(takeUntil(this.destroyed$)).subscribe(() => this.cdRef.detectChanges());
|
108
|
-
}
|
109
|
-
isContentOverflowing(contentSpanElRef) {
|
110
|
-
const scrollWidth = contentSpanElRef.nativeElement.scrollWidth;
|
111
|
-
const offsetWidth = contentSpanElRef.nativeElement.clientWidth;
|
112
|
-
return offsetWidth < scrollWidth;
|
113
|
-
}
|
114
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EllipsisComponent, deps: [{ token: LX_ELLIPSIS_DEBOUNCE_ON_RESIZE }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.ResizeObserverService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
115
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: EllipsisComponent, isStandalone: true, selector: "lx-ellipsis", inputs: { content: "content", escapeHtmlInContent: "escapeHtmlInContent" }, viewQueries: [{ propertyName: "contentSpanEl", first: true, predicate: ["contentEl"], descendants: true }, { propertyName: "showMoreButtonEl", first: true, predicate: ["showMoreButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n", styles: [":host{display:block;white-space:pre-line;overflow-wrap:break-word}.content{display:inline-block;word-break:break-word}.truncate:not(.showMore){width:calc(100% - 140px);white-space:nowrap;overflow-wrap:normal;overflow:hidden;text-overflow:ellipsis}.content.showMore+button{margin-top:4px;display:block}button{white-space:nowrap;vertical-align:top}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "button[lx-button]", inputs: ["size", "color", "mode", "pressed", "selected", "square", "circle", "disabled", "icon", "endIcon", "showSpinner"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
116
|
-
}
|
117
|
-
__decorate([
|
118
|
-
Observe('contentSpanEl')
|
119
|
-
], EllipsisComponent.prototype, "contentSpanEl$", void 0);
|
120
|
-
__decorate([
|
121
|
-
Observe('showMoreButtonEl')
|
122
|
-
], EllipsisComponent.prototype, "showMoreButtonEl$", void 0);
|
123
|
-
__decorate([
|
124
|
-
Observe('content')
|
125
|
-
], EllipsisComponent.prototype, "content$", void 0);
|
126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EllipsisComponent, decorators: [{
|
127
|
-
type: Component,
|
128
|
-
args: [{ selector: 'lx-ellipsis', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, ButtonComponent, AsyncPipe], template: "<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n", styles: [":host{display:block;white-space:pre-line;overflow-wrap:break-word}.content{display:inline-block;word-break:break-word}.truncate:not(.showMore){width:calc(100% - 140px);white-space:nowrap;overflow-wrap:normal;overflow:hidden;text-overflow:ellipsis}.content.showMore+button{margin-top:4px;display:block}button{white-space:nowrap;vertical-align:top}\n"] }]
|
129
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
130
|
-
type: Inject,
|
131
|
-
args: [LX_ELLIPSIS_DEBOUNCE_ON_RESIZE]
|
132
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.ResizeObserverService }, { type: i2.TranslateService }], propDecorators: { content: [{
|
133
|
-
type: Input
|
134
|
-
}], escapeHtmlInContent: [{
|
135
|
-
type: Input
|
136
|
-
}], contentSpanEl$: [], contentSpanEl: [{
|
137
|
-
type: ViewChild,
|
138
|
-
args: ['contentEl']
|
139
|
-
}], showMoreButtonEl$: [], showMoreButtonEl: [{
|
140
|
-
type: ViewChild,
|
141
|
-
args: ['showMoreButton', { read: ElementRef }]
|
142
|
-
}], content$: [] } });
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY29yZS11aS9jb21wb25lbnRzL2VsbGlwc2lzL2VsbGlwc2lzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9lbGxpcHNpcy9lbGxpcHNpcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxjQUFjLEVBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBRTdELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUFTLGdDQUFnQyxFQUFFO0lBQ3pHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9B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QUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxnQkFBNkM7UUFDeEUsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUMvRCxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQy9ELE9BQU8sV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuQyxDQUFDOzhHQTFLVSxpQkFBaUIsa0JBb0NsQiw4QkFBOEI7a0dBcEM3QixpQkFBaUIsK1VBZ0JTLFVBQVUsNkJDbEVqRCwyV0FTQSxzWkR1Q1ksSUFBSSw2RkFBRSxlQUFlLHFMQUFFLFNBQVM7O0FBYVI7SUFBakMsT0FBTyxDQUFDLGVBQWUsQ0FBQzt5REFBa0U7QUFHdEQ7SUFBcEMsT0FBTyxDQUFDLGtCQUFrQixDQUFDOzREQUF1RTtBQWUzRjtJQURQLE9BQU8sQ0FBQyxTQUFTLENBQUM7bURBQ21COzJGQTdCM0IsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGFBQWEsbUJBR04sdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLFNBQVMsQ0FBQzs7MEJBc0N4QyxNQUFNOzJCQUFDLDhCQUE4QjtxS0FoQy9CLE9BQU87c0JBQWYsS0FBSztnQkFLRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRTRCLGNBQWMsTUFFeEIsYUFBYTtzQkFBcEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNlLGlCQUFpQixNQUVILGdCQUFnQjtzQkFBbEUsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBYXpDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZXNjYXBlIH0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgY29uY2F0LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHBhaXJ3aXNlLFxuICBza2lwLFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB3aXRoTGF0ZXN0RnJvbVxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL29ic2VydmUnO1xuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgTFhfRUxMSVBTSVNfREVCT1VOQ0VfT05fUkVTSVpFID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oJ0xYX0VMTElQU0lTX0RFQk9VTkNFX09OX1JFU0laRScsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBFbGxpcHNpc0NvbXBvbmVudC5ERUZBVUxUX1JFU0laRV9ERUJPVU5DRV9NU1xufSk7XG5cbi8qKlxuICogWW91IGNhbiBzZXQgYG1heC13aWR0aGAgQ1NTIHByb3BlcnR5IG9uIHlvdXIgYGx4LWVsbGlwc2lzYCBob3N0IGVsZW1lbnQgb3IgdGhlIHBhcmVudCBlbGVtZW50IGlmIHlvdSB3YW50IGl0cyBjb250ZW50IHRvIG5ldmVyIGV4Y2VlZCBhIHNwZWNpZmljIHdpZHRoLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1lbGxpcHNpcycsXG4gIHRlbXBsYXRlVXJsOiAnZWxsaXBzaXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtgZWxsaXBzaXMuY29tcG9uZW50LnNjc3NgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0lmLCBCdXR0b25Db21wb25lbnQsIEFzeW5jUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgRWxsaXBzaXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgc3RhdGljIERFRkFVTFRfUkVTSVpFX0RFQk9VTkNFX01TID0gNTAwO1xuXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IHN0cmluZyA9ICcnO1xuICAvKipcbiAgICogT25seSBzZXQgdGhpcyB0byBmYWxzZSBpZiB0aGUgY29udGVudCBpcyBub3QgYSB1c2VyIHByb3ZpZGVkIHN0cmluZ1xuICAgKiBvciBpZiB5b3Ugc2FuaXRpemUgdGhlIHByb3ZpZGVkIGNvbnRlbnQgeW91cnNlbGYuXG4gICAqL1xuICBASW5wdXQoKSBlc2NhcGVIdG1sSW5Db250ZW50ID0gdHJ1ZTtcblxuICBAT2JzZXJ2ZSgnY29udGVudFNwYW5FbCcpIHByaXZhdGUgY29udGVudFNwYW5FbCQhOiBPYnNlcnZhYmxlPEVsZW1lbnRSZWY8SFRNTFNwYW5FbGVtZW50Pj47XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQFZpZXdDaGlsZCgnY29udGVudEVsJykgY29udGVudFNwYW5FbCE6IEVsZW1lbnRSZWY8SFRNTFNwYW5FbGVtZW50PjtcbiAgQE9ic2VydmUoJ3Nob3dNb3JlQnV0dG9uRWwnKSBwcml2YXRlIHNob3dNb3JlQnV0dG9uRWwkITogT2JzZXJ2YWJsZTxFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50Pj47XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQFZpZXdDaGlsZCgnc2hvd01vcmVCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgc2hvd01vcmVCdXR0b25FbCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgaXNTaG93aW5nTW9yZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3dCdXR0b24kITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBzaG93TW9yZUJ1dHRvbkxhYmVsJCE6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKiogQGludGVybmFsICovXG4gIHNhbml0aXplZENvbnRlbnQkITogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBAT2JzZXJ2ZSgnY29udGVudCcpXG4gIHByaXZhdGUgY29udGVudCQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHZpZXdDaGVja2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMWF9FTExJUFNJU19ERUJPVU5DRV9PTl9SRVNJWkUpXG4gICAgcHJpdmF0ZSBkZWJvdW5jZU1zQWZ0ZXJSZXNpemU6IG51bWJlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGhvc3RFbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyU2VydmljZTogUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zYW5pdGl6ZWRDb250ZW50JCA9IHRoaXMuY29udGVudCQucGlwZShcbiAgICAgIG1hcCgoY29udGVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5lc2NhcGVIdG1sSW5Db250ZW50ICYmIHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiBlc2NhcGUoY29udGVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnNob3dNb3JlQnV0dG9uTGFiZWwkID0gdGhpcy5pc1Nob3dpbmdNb3JlJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChpc1Nob3dpbmdNb3JlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5ID0gaXNTaG93aW5nTW9yZSA/ICdjb21tb24uc2hvd0xlc3MnIDogJ2NvbW1vbi5zaG93TW9yZSc7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRyYW5zbGF0aW9uS2V5KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICBjb25zdCBuZXdXaWR0aE9uUmVzaXplJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgICBjb25zdCBuZXdIZWlnaHRPblJlc2l6ZSQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLmhvc3RFbC5uYXRpdmVFbGVtZW50LCAocmVzaXplZEVsZW1lbnQpID0+IHtcbiAgICAgIG5ld1dpZHRoT25SZXNpemUkLm5leHQocmVzaXplZEVsZW1lbnQuY29udGVudFJlY3Qud2lkdGgpO1xuICAgICAgbmV3SGVpZ2h0T25SZXNpemUkLm5leHQocmVzaXplZEVsZW1lbnQuY29udGVudFJlY3QuaGVpZ2h0KTtcbiAgICB9KTtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aENoYW5nZWRTaWduaWZpY2FudGx5QWZ0ZXJSZXNpemUkID0gbmV3V2lkdGhPblJlc2l6ZSQucGlwZShcbiAgICAgIHN0YXJ0V2l0aCgwKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBmaWx0ZXIoKFtwcmV2aW91c1dpZHRoLCBuZXdXaWR0aF0pID0+IE1hdGguYWJzKG5ld1dpZHRoIC0gcHJldmlvdXNXaWR0aCkgPiAxKSxcbiAgICAgIG1hcCgoWywgbmV3V2lkdGhdKSA9PiBuZXdXaWR0aClcbiAgICApO1xuICAgIGNvbnN0IHVzZXJUcmlnZ2VyZWRUcmlnZ2VyZWRTaG93TGVzcyQgPSB0aGlzLmlzU2hvd2luZ01vcmUkLnBpcGUoZmlsdGVyKChpc1Nob3dpbmdNb3JlKSA9PiAhaXNTaG93aW5nTW9yZSkpO1xuXG4gICAgY29uc3QgcmVldmFsdWF0ZUlmQ29udGVudElzT3ZlcmZsb3dpbmckID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNvbnRlbnRTcGFuRWwkLFxuICAgICAgdXNlclRyaWdnZXJlZFRyaWdnZXJlZFNob3dMZXNzJCxcbiAgICAgIGNvbnRhaW5lcldpZHRoQ2hhbmdlZFNpZ25pZmljYW50bHlBZnRlclJlc2l6ZSRcbiAgICBdKTtcblxuICAgIGNvbnN0IGlzQ29udGVudE92ZXJmbG93aW5nJCA9IG1lcmdlKFxuICAgICAgY29uY2F0KFxuICAgICAgICByZWV2YWx1YXRlSWZDb250ZW50SXNPdmVyZmxvd2luZyQucGlwZSh0YWtlKDEpKSwgLy8gZGVib3VuY2UgYWxsIGJ1dCB0aGUgZmlyc3Qgb3V0cHV0XG4gICAgICAgIHJlZXZhbHVhdGVJZkNvbnRlbnRJc092ZXJmbG93aW5nJC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlTXNBZnRlclJlc2l6ZSkpXG4gICAgICApLFxuICAgICAgdGhpcy5jb250ZW50JC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy52aWV3Q2hlY2tlZCQpXG4gICAgICApXG4gICAgKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb250ZW50U3BhbkVsJCksXG4gICAgICBtYXAoKFssIGNvbnRlbnRTcGFuUmVmXSkgPT4gdGhpcy5pc0NvbnRlbnRPdmVyZmxvd2luZyhjb250ZW50U3BhblJlZikpXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZXJUcmlnZ2VyZWRUcmlnZ2VyZWRTaG93TW9yZSQgPSB0aGlzLmlzU2hvd2luZ01vcmUkLnBpcGUoZmlsdGVyKChpc1Nob3dpbmdNb3JlKSA9PiBpc1Nob3dpbmdNb3JlKSk7XG5cbiAgICBjb25zdCBidXR0b25IZWlnaHQkID0gdGhpcy5zaG93TW9yZUJ1dHRvbkVsJC5waXBlKFxuICAgICAgZmlsdGVyKChzaG93TW9yZUJ1dHRvbkVsKSA9PiAhIXNob3dNb3JlQnV0dG9uRWwpLFxuICAgICAgbWFwKChzaG93TW9yZUJ1dHRvbkVsKSA9PiBzaG93TW9yZUJ1dHRvbkVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuICAgIGNvbnN0IHVzZXJJbmNyZWFzZWRCcm93c2VyV2luZG93U2l6ZVRvVGhlUG9pbnRPZk5vVHJ1bmNhdGlvbk5lY2Vzc2FyeSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIGJ1dHRvbkhlaWdodCQsXG4gICAgICBuZXdIZWlnaHRPblJlc2l6ZSQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgIF0pLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzU2hvd2luZ01vcmUkKSxcbiAgICAgIGZpbHRlcigoWywgaXNTaG93aW5nTW9yZV0pID0+IGlzU2hvd2luZ01vcmUpLFxuICAgICAgbWFwKChbW2J1dHRvbkhlaWdodCwgbmV3SGVpZ2h0XV0pID0+IHtcbiAgICAgICAgY29uc3QgaGVpZ2h0T2ZPbmVMaW5lID0gYnV0dG9uSGVpZ2h0O1xuICAgICAgICBjb25zdCBzaG93TGVzc0J1dHRvbk1hcmdpblRvcCA9IDQ7XG4gICAgICAgIGNvbnN0IGhlaWdodE9mU3BhbkluU2hvd01vcmVNb2RlID0gbmV3SGVpZ2h0IC0gYnV0dG9uSGVpZ2h0IC0gc2hvd0xlc3NCdXR0b25NYXJnaW5Ub3A7XG4gICAgICAgIGNvbnN0IHRocmVzaG9sZFRvRGV0ZWN0Q29udGVudEluU2luZ2xlTGluZSA9IDQ7XG4gICAgICAgIGNvbnN0IGRpZmZlcmVuY2VCZXR3ZWVuQ29udGVudFNwYW5BbmRCdXR0b25IZWlnaHQgPSBNYXRoLmFicyhoZWlnaHRPZk9uZUxpbmUgLSBoZWlnaHRPZlNwYW5JblNob3dNb3JlTW9kZSk7XG4gICAgICAgIGNvbnN0IGlzU3BhbkNvbnRlbnREaXNwbGF5ZWRJbk9uZUxpbmVBZ2FpbiA9IGRpZmZlcmVuY2VCZXR3ZWVuQ29udGVudFNwYW5BbmRCdXR0b25IZWlnaHQgPCB0aHJlc2hvbGRUb0RldGVjdENvbnRlbnRJblNpbmdsZUxpbmU7XG4gICAgICAgIHJldHVybiBpc1NwYW5Db250ZW50RGlzcGxheWVkSW5PbmVMaW5lQWdhaW47XG4gICAgICB9KVxuICAgICk7XG4gICAgY29uc3QgY29udGVudEZpdHNJbk9uZUxpbmVBZ2FpbldoaWxlU2hvd01vcmVJc0VuYWJsZWQkID0gdXNlckluY3JlYXNlZEJyb3dzZXJXaW5kb3dTaXplVG9UaGVQb2ludE9mTm9UcnVuY2F0aW9uTmVjZXNzYXJ5JC5waXBlKFxuICAgICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBmaWx0ZXIoKFtwcmV2aW91c1RleHRJc05vd0luT25lTGluZUFnYWluXSkgPT4gIXByZXZpb3VzVGV4dElzTm93SW5PbmVMaW5lQWdhaW4pLFxuICAgICAgbWFwKChbLCB0ZXh0SXNOb3dJbk9uZUxpbmVBZ2Fpbl0pID0+ICF0ZXh0SXNOb3dJbk9uZUxpbmVBZ2FpbilcbiAgICApO1xuICAgIGNvbnN0IGNvbnRlbnRJc092ZXJmbG93aW5nQW5kU2hvd01vcmVJc05vdEVuYWJsZWQkID0gaXNDb250ZW50T3ZlcmZsb3dpbmckLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzU2hvd2luZ01vcmUkKSxcbiAgICAgIGZpbHRlcigoWywgaXNTaG93aW5nTW9yZV0pID0+ICFpc1Nob3dpbmdNb3JlKSxcbiAgICAgIG1hcCgoW2lzQ29udGVudExvbmdlclRoYW5Db250YWluZXJXaWR0aF0pID0+IHtcbiAgICAgICAgcmV0dXJuIGlzQ29udGVudExvbmdlclRoYW5Db250YWluZXJXaWR0aDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnNob3dCdXR0b24kID0gbWVyZ2UoXG4gICAgICB1c2VyVHJpZ2dlcmVkVHJpZ2dlcmVkU2hvd01vcmUkLFxuICAgICAgY29udGVudEZpdHNJbk9uZUxpbmVBZ2FpbldoaWxlU2hvd01vcmVJc0VuYWJsZWQkLFxuICAgICAgY29udGVudElzT3ZlcmZsb3dpbmdBbmRTaG93TW9yZUlzTm90RW5hYmxlZCRcbiAgICApO1xuXG4gICAgLy8gQXMgbG9uZyBhcyBubyBwYXJlbnQgY29tcG9uZW50IGlzIGxpc3RlbmluZyBvbiByZXNpemUgZXZlbnRzLFxuICAgIC8vIHRoZSBDaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSBjYWxsIGRvbmUgYnkgdGhlIGFzeW5jIHBpcGVcbiAgICAvLyB3aWxsIG5vdCByZXN1bHQgaW4gYSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIGluIHRoaXMgY29tcG9uZW50IHdoZW4gaXRzIHNpemUgY2hhbmdlcy5cbiAgICAvLyBUaGlzIGlzIHRoZSBsZWFzdCBhbW91bnQgb2YgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpIGNhbGxzXG4gICAgLy8gSSB3YXMgYWJsZSB0byBjb21lIHVwIHdpdGguIFRoZSBBbmd1bGFyIHByb2ZpbGVyIHNob3dzIGFjY2VwdGFibGUgbnVtYmVycyBvZiBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc1doZW5PYnNlcnZhYmxlRW1pdHMoaXNDb250ZW50T3ZlcmZsb3dpbmckKTtcbiAgICB0aGlzLmRldGVjdENoYW5nZXNXaGVuT2JzZXJ2YWJsZUVtaXRzKHRoaXMuc2hvd0J1dHRvbiQpO1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc1doZW5PYnNlcnZhYmxlRW1pdHModGhpcy5jb250ZW50JCk7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzV2hlbk9ic2VydmFibGVFbWl0cyhjb250ZW50SXNPdmVyZmxvd2luZ0FuZFNob3dNb3JlSXNOb3RFbmFibGVkJCk7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzV2hlbk9ic2VydmFibGVFbWl0cyhpc0NvbnRlbnRPdmVyZmxvd2luZyQpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMudmlld0NoZWNrZWQkLm5leHQoKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgb25TaG93TW9yZVRvZ2dsZSgpIHtcbiAgICB0aGlzLmlzU2hvd2luZ01vcmUkLm5leHQoIXRoaXMuaXNTaG93aW5nTW9yZSQuZ2V0VmFsdWUoKSk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy5ob3N0RWwubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIGRldGVjdENoYW5nZXNXaGVuT2JzZXJ2YWJsZUVtaXRzKG9ic2VydmFibGUkOiBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICBvYnNlcnZhYmxlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbnRlbnRPdmVyZmxvd2luZyhjb250ZW50U3BhbkVsUmVmOiBFbGVtZW50UmVmPEhUTUxTcGFuRWxlbWVudD4pIHtcbiAgICBjb25zdCBzY3JvbGxXaWR0aCA9IGNvbnRlbnRTcGFuRWxSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aDtcbiAgICBjb25zdCBvZmZzZXRXaWR0aCA9IGNvbnRlbnRTcGFuRWxSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gb2Zmc2V0V2lkdGggPCBzY3JvbGxXaWR0aDtcbiAgfVxufVxuIiwiPHNwYW5cbiAgI2NvbnRlbnRFbFxuICBbY2xhc3Muc2hvd01vcmVdPVwiaXNTaG93aW5nTW9yZSQgfCBhc3luY1wiXG4gIGNsYXNzPVwiY29udGVudCB0cnVuY2F0ZSBseC1tYXJnaW4tcmlnaHRcIlxuICBbaW5uZXJIdG1sXT1cInNhbml0aXplZENvbnRlbnQkIHwgYXN5bmNcIlxuPjwvc3Bhbj5cbjxidXR0b24gKm5nSWY9XCJzaG93QnV0dG9uJCB8IGFzeW5jXCIgKGNsaWNrKT1cIm9uU2hvd01vcmVUb2dnbGUoKVwiIGx4LWJ1dHRvbiAjc2hvd01vcmVCdXR0b24gc2l6ZT1cImF1dG9cIiBtb2RlPVwibGlua1wiIGNvbG9yPVwicHJpbWFyeVwiPlxuICB7eyBzaG93TW9yZUJ1dHRvbkxhYmVsJCB8IGFzeW5jIH19XG48L2J1dHRvbj5cbiJdfQ==
|
@@ -1,41 +0,0 @@
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
2
|
-
import { Component, EventEmitter, HostBinding, Output, computed, input } from '@angular/core';
|
3
|
-
import { RouterLink } from '@angular/router';
|
4
|
-
import { ButtonComponent } from '../button/button.component';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
export class EmptyStateComponent {
|
7
|
-
constructor() {
|
8
|
-
this.title = input.required();
|
9
|
-
this.icon = input();
|
10
|
-
this.buttonLabel = input();
|
11
|
-
this.secondaryButtonLabel = input();
|
12
|
-
this.loading = input(false);
|
13
|
-
this.moreLinkLabel = input();
|
14
|
-
this.moreLink = input();
|
15
|
-
this.openMoreLinkInNewTab = input(true);
|
16
|
-
this.size = input('medium');
|
17
|
-
this.useRouterLink = computed(() => Array.isArray(this.moreLink()));
|
18
|
-
this.buttonClicked = new EventEmitter();
|
19
|
-
this.secondaryButtonClicked = new EventEmitter();
|
20
|
-
this.moreLinkClicked = new EventEmitter();
|
21
|
-
}
|
22
|
-
get _size() {
|
23
|
-
return this.size();
|
24
|
-
}
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: EmptyStateComponent, isStandalone: true, selector: "lx-empty-state", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, buttonLabel: { classPropertyName: "buttonLabel", publicName: "buttonLabel", isSignal: true, isRequired: false, transformFunction: null }, secondaryButtonLabel: { classPropertyName: "secondaryButtonLabel", publicName: "secondaryButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, moreLinkLabel: { classPropertyName: "moreLinkLabel", publicName: "moreLinkLabel", isSignal: true, isRequired: false, transformFunction: null }, moreLink: { classPropertyName: "moreLink", publicName: "moreLink", isSignal: true, isRequired: false, transformFunction: null }, openMoreLinkInNewTab: { classPropertyName: "openMoreLinkInNewTab", publicName: "openMoreLinkInNewTab", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClicked: "buttonClicked", secondaryButtonClicked: "secondaryButtonClicked", moreLinkClicked: "moreLinkClicked" }, host: { properties: { "attr.size": "this._size" } }, ngImport: i0, template: "<div class=\"tw-max-w-[434px] tw-text-center\">\n @if (icon()) {\n <i class=\"emptyStateIcon fas tw-text-primary\" [class]=\"'fa-' + icon()\" aria-hidden=\"true\"></i>\n }\n\n <h3 class=\"empty-state-title tw-mb-m tw-mt-xl tw-text-black\" [innerHTML]=\"title()\"></h3>\n\n <div class=\"empty-state-content tw-leading-[16px] tw-text-gray-50\">\n <ng-content />\n </div>\n\n <div class=\"tw-flex tw-justify-center tw-gap-m\">\n @if (secondaryButtonLabel()) {\n <div class=\"secondaryButton tw-my-xl\">\n <button lx-button size=\"large\" [showSpinner]=\"loading()\" (click)=\"secondaryButtonClicked.emit($event)\">\n {{ secondaryButtonLabel() }}\n </button>\n </div>\n }\n\n @if (buttonLabel()) {\n <div class=\"actionButton tw-my-xl\">\n <button lx-button size=\"large\" color=\"primary\" [showSpinner]=\"loading()\" (click)=\"buttonClicked.emit($event)\">\n {{ buttonLabel() }}\n </button>\n </div>\n }\n </div>\n\n @if (moreLinkLabel() && moreLink()) {\n <div>\n @if (useRouterLink()) {\n <a\n rel=\"noopener noreferrer\"\n class=\"tw-text-size-md tw-text-primary\"\n [routerLink]=\"moreLink()\"\n (click)=\"moreLinkClicked.emit($event)\"\n [target]=\"openMoreLinkInNewTab() ? '_blank' : '_self'\"\n >{{ moreLinkLabel() }}</a\n >\n } @else {\n <a\n rel=\"noopener noreferrer\"\n class=\"tw-text-size-md tw-text-primary\"\n [href]=\"moreLink()\"\n (click)=\"moreLinkClicked.emit($event)\"\n [target]=\"openMoreLinkInNewTab() ? '_blank' : '_self'\"\n >{{ moreLinkLabel() }}</a\n >\n }\n </div>\n }\n</div>\n", styles: [":host{display:flex;justify-content:center}:host .emptyStateIcon{font-size:var(--lxFontHeader1Size, 32px)}:host[size=small] .empty-state-title{font-size:var(--lxFontSize, 14px)}:host[size=small] .empty-state-content{font-size:var(--lxFontSmallSize, 12px)}:host[size=medium] .empty-state-title{font-size:var(--lxFontHeader2Size, 24px)}:host[size=medium] .empty-state-content{font-size:var(--lxFontSize, 14px)}i{position:relative}i:after{content:\"\";position:absolute;bottom:-8px;left:50%;transform:translate(-50%);height:6px;width:44px;background-color:#f0f2f5;border-radius:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ButtonComponent, selector: "button[lx-button]", inputs: ["size", "color", "mode", "pressed", "selected", "square", "circle", "disabled", "icon", "endIcon", "showSpinner"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
27
|
-
}
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EmptyStateComponent, decorators: [{
|
29
|
-
type: Component,
|
30
|
-
args: [{ selector: 'lx-empty-state', standalone: true, imports: [CommonModule, ButtonComponent, RouterLink], template: "<div class=\"tw-max-w-[434px] tw-text-center\">\n @if (icon()) {\n <i class=\"emptyStateIcon fas tw-text-primary\" [class]=\"'fa-' + icon()\" aria-hidden=\"true\"></i>\n }\n\n <h3 class=\"empty-state-title tw-mb-m tw-mt-xl tw-text-black\" [innerHTML]=\"title()\"></h3>\n\n <div class=\"empty-state-content tw-leading-[16px] tw-text-gray-50\">\n <ng-content />\n </div>\n\n <div class=\"tw-flex tw-justify-center tw-gap-m\">\n @if (secondaryButtonLabel()) {\n <div class=\"secondaryButton tw-my-xl\">\n <button lx-button size=\"large\" [showSpinner]=\"loading()\" (click)=\"secondaryButtonClicked.emit($event)\">\n {{ secondaryButtonLabel() }}\n </button>\n </div>\n }\n\n @if (buttonLabel()) {\n <div class=\"actionButton tw-my-xl\">\n <button lx-button size=\"large\" color=\"primary\" [showSpinner]=\"loading()\" (click)=\"buttonClicked.emit($event)\">\n {{ buttonLabel() }}\n </button>\n </div>\n }\n </div>\n\n @if (moreLinkLabel() && moreLink()) {\n <div>\n @if (useRouterLink()) {\n <a\n rel=\"noopener noreferrer\"\n class=\"tw-text-size-md tw-text-primary\"\n [routerLink]=\"moreLink()\"\n (click)=\"moreLinkClicked.emit($event)\"\n [target]=\"openMoreLinkInNewTab() ? '_blank' : '_self'\"\n >{{ moreLinkLabel() }}</a\n >\n } @else {\n <a\n rel=\"noopener noreferrer\"\n class=\"tw-text-size-md tw-text-primary\"\n [href]=\"moreLink()\"\n (click)=\"moreLinkClicked.emit($event)\"\n [target]=\"openMoreLinkInNewTab() ? '_blank' : '_self'\"\n >{{ moreLinkLabel() }}</a\n >\n }\n </div>\n }\n</div>\n", styles: [":host{display:flex;justify-content:center}:host .emptyStateIcon{font-size:var(--lxFontHeader1Size, 32px)}:host[size=small] .empty-state-title{font-size:var(--lxFontSize, 14px)}:host[size=small] .empty-state-content{font-size:var(--lxFontSmallSize, 12px)}:host[size=medium] .empty-state-title{font-size:var(--lxFontHeader2Size, 24px)}:host[size=medium] .empty-state-content{font-size:var(--lxFontSize, 14px)}i{position:relative}i:after{content:\"\";position:absolute;bottom:-8px;left:50%;transform:translate(-50%);height:6px;width:44px;background-color:#f0f2f5;border-radius:100%}\n"] }]
|
31
|
-
}], propDecorators: { _size: [{
|
32
|
-
type: HostBinding,
|
33
|
-
args: ['attr.size']
|
34
|
-
}], buttonClicked: [{
|
35
|
-
type: Output
|
36
|
-
}], secondaryButtonClicked: [{
|
37
|
-
type: Output
|
38
|
-
}], moreLinkClicked: [{
|
39
|
-
type: Output
|
40
|
-
}] } });
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY29yZS11aS9jb21wb25lbnRzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBUzdELE1BQU0sT0FBTyxtQkFBbUI7SUFQaEM7UUFRRSxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBRWpDLFNBQUksR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUN2QixnQkFBVyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQzlCLHlCQUFvQixHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxhQUFRLEdBQUcsS0FBSyxFQUFxQixDQUFDO1FBQ3RDLHlCQUFvQixHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUM1QyxTQUFJLEdBQUcsS0FBSyxDQUFxQixRQUFRLENBQUMsQ0FBQztRQUVwQyxrQkFBYSxHQUFvQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBTzdFLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUMvQywyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3hELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztLQUM1RDtJQVJDLElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7OEdBakJVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGs5Q0NaaEMsNnREQXFEQSw4bkJEN0NZLFlBQVksK0JBQUUsZUFBZSwwTEFBRSxVQUFVOzsyRkFJeEMsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDOzhCQW1CaEQsS0FBSztzQkFEUixXQUFXO3VCQUFDLFdBQVc7Z0JBS2QsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIE91dHB1dCwgU2lnbmFsLCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1lbXB0eS1zdGF0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1dHRvbkNvbXBvbmVudCwgUm91dGVyTGlua10sXG4gIHRlbXBsYXRlVXJsOiAnLi9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9lbXB0eS1zdGF0ZS5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRW1wdHlTdGF0ZUNvbXBvbmVudCB7XG4gIHRpdGxlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuXG4gIGljb24gPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGJ1dHRvbkxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBzZWNvbmRhcnlCdXR0b25MYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgbG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgbW9yZUxpbmtMYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgbW9yZUxpbmsgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oKTtcbiAgb3Blbk1vcmVMaW5rSW5OZXdUYWIgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgc2l6ZSA9IGlucHV0PCdzbWFsbCcgfCAnbWVkaXVtJz4oJ21lZGl1bScpO1xuXG4gIHB1YmxpYyB1c2VSb3V0ZXJMaW5rOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiBBcnJheS5pc0FycmF5KHRoaXMubW9yZUxpbmsoKSkpO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5zaXplJylcbiAgZ2V0IF9zaXplKCkge1xuICAgIHJldHVybiB0aGlzLnNpemUoKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBidXR0b25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgc2Vjb25kYXJ5QnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcbiAgQE91dHB1dCgpIG1vcmVMaW5rQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJ0dy1tYXgtdy1bNDM0cHhdIHR3LXRleHQtY2VudGVyXCI+XG4gIEBpZiAoaWNvbigpKSB7XG4gICAgPGkgY2xhc3M9XCJlbXB0eVN0YXRlSWNvbiBmYXMgdHctdGV4dC1wcmltYXJ5XCIgW2NsYXNzXT1cIidmYS0nICsgaWNvbigpXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICB9XG5cbiAgPGgzIGNsYXNzPVwiZW1wdHktc3RhdGUtdGl0bGUgdHctbWItbSB0dy1tdC14bCB0dy10ZXh0LWJsYWNrXCIgW2lubmVySFRNTF09XCJ0aXRsZSgpXCI+PC9oMz5cblxuICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGUtY29udGVudCB0dy1sZWFkaW5nLVsxNnB4XSB0dy10ZXh0LWdyYXktNTBcIj5cbiAgICA8bmctY29udGVudCAvPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidHctZmxleCB0dy1qdXN0aWZ5LWNlbnRlciB0dy1nYXAtbVwiPlxuICAgIEBpZiAoc2Vjb25kYXJ5QnV0dG9uTGFiZWwoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cInNlY29uZGFyeUJ1dHRvbiB0dy1teS14bFwiPlxuICAgICAgICA8YnV0dG9uIGx4LWJ1dHRvbiBzaXplPVwibGFyZ2VcIiBbc2hvd1NwaW5uZXJdPVwibG9hZGluZygpXCIgKGNsaWNrKT1cInNlY29uZGFyeUJ1dHRvbkNsaWNrZWQuZW1pdCgkZXZlbnQpXCI+XG4gICAgICAgICAge3sgc2Vjb25kYXJ5QnV0dG9uTGFiZWwoKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoYnV0dG9uTGFiZWwoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbkJ1dHRvbiB0dy1teS14bFwiPlxuICAgICAgICA8YnV0dG9uIGx4LWJ1dHRvbiBzaXplPVwibGFyZ2VcIiBjb2xvcj1cInByaW1hcnlcIiBbc2hvd1NwaW5uZXJdPVwibG9hZGluZygpXCIgKGNsaWNrKT1cImJ1dHRvbkNsaWNrZWQuZW1pdCgkZXZlbnQpXCI+XG4gICAgICAgICAge3sgYnV0dG9uTGFiZWwoKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgQGlmIChtb3JlTGlua0xhYmVsKCkgJiYgbW9yZUxpbmsoKSkge1xuICAgIDxkaXY+XG4gICAgICBAaWYgKHVzZVJvdXRlckxpbmsoKSkge1xuICAgICAgICA8YVxuICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgIGNsYXNzPVwidHctdGV4dC1zaXplLW1kIHR3LXRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwibW9yZUxpbmsoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1vcmVMaW5rQ2xpY2tlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgIFt0YXJnZXRdPVwib3Blbk1vcmVMaW5rSW5OZXdUYWIoKSA/ICdfYmxhbmsnIDogJ19zZWxmJ1wiXG4gICAgICAgICAgPnt7IG1vcmVMaW5rTGFiZWwoKSB9fTwvYVxuICAgICAgICA+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGFcbiAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICBjbGFzcz1cInR3LXRleHQtc2l6ZS1tZCB0dy10ZXh0LXByaW1hcnlcIlxuICAgICAgICAgIFtocmVmXT1cIm1vcmVMaW5rKClcIlxuICAgICAgICAgIChjbGljayk9XCJtb3JlTGlua0NsaWNrZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICBbdGFyZ2V0XT1cIm9wZW5Nb3JlTGlua0luTmV3VGFiKCkgPyAnX2JsYW5rJyA6ICdfc2VsZidcIlxuICAgICAgICAgID57eyBtb3JlTGlua0xhYmVsKCkgfX08L2FcbiAgICAgICAgPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
|
@@ -1,36 +0,0 @@
|
|
1
|
-
import { NgFor, NgStyle } from '@angular/common';
|
2
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class IconScaleComponent {
|
5
|
-
constructor() {
|
6
|
-
this.icon = {
|
7
|
-
type: 'star'
|
8
|
-
};
|
9
|
-
this.numberOfColoredItems = 0;
|
10
|
-
this.numberOfItems = 0;
|
11
|
-
/** @internal */
|
12
|
-
this.NAME = 'IconScaleComponent';
|
13
|
-
/** @internal */
|
14
|
-
this.iconArray = [];
|
15
|
-
}
|
16
|
-
ngOnChanges(_changes) {
|
17
|
-
this.iconArray = this.createIconArray(this.numberOfColoredItems, this.numberOfItems, this.icon?.order || 'ASC');
|
18
|
-
}
|
19
|
-
createIconArray(items, totalItems, order) {
|
20
|
-
const coloredItems = order === 'DESC' ? totalItems - items + 1 : items;
|
21
|
-
return [...Array(totalItems).keys()].map((index) => index < coloredItems);
|
22
|
-
}
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: IconScaleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: IconScaleComponent, isStandalone: true, selector: "lx-icon-scale", inputs: { icon: "icon", numberOfColoredItems: "numberOfColoredItems", numberOfItems: "numberOfItems" }, usesOnChanges: true, ngImport: i0, template: "<span\n *ngFor=\"let isColored of iconArray\"\n data-testid=\"icon-scale\"\n class=\"iconElement fas fa-{{ icon.type }}\"\n [ngStyle]=\"isColored ? { color: icon.color } : {}\"\n>\n</span>\n", styles: [".iconElement{color:#c2c9d6;width:15px}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
25
|
-
}
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: IconScaleComponent, decorators: [{
|
27
|
-
type: Component,
|
28
|
-
args: [{ selector: 'lx-icon-scale', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgFor, NgStyle], template: "<span\n *ngFor=\"let isColored of iconArray\"\n data-testid=\"icon-scale\"\n class=\"iconElement fas fa-{{ icon.type }}\"\n [ngStyle]=\"isColored ? { color: icon.color } : {}\"\n>\n</span>\n", styles: [".iconElement{color:#c2c9d6;width:15px}\n"] }]
|
29
|
-
}], propDecorators: { icon: [{
|
30
|
-
type: Input
|
31
|
-
}], numberOfColoredItems: [{
|
32
|
-
type: Input
|
33
|
-
}], numberOfItems: [{
|
34
|
-
type: Input
|
35
|
-
}] } });
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zY2FsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlLXVpL2NvbXBvbmVudHMvaWNvbi1zY2FsZS9pY29uLXNjYWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9pY29uLXNjYWxlL2ljb24tc2NhbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7O0FBbUJwRyxNQUFNLE9BQU8sa0JBQWtCO0lBUi9CO1FBU2tCLFNBQUksR0FBUztZQUMzQixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7UUFDYyx5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDekIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFbEMsZ0JBQWdCO1FBQ1AsU0FBSSxHQUFHLG9CQUFvQixDQUFDO1FBQ3JDLGdCQUFnQjtRQUNoQixjQUFTLEdBQWMsRUFBRSxDQUFDO0tBVzNCO0lBVFEsV0FBVyxDQUFDLFFBQXVCO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWEsRUFBRSxVQUFrQixFQUFFLEtBQXFCO1FBQzlFLE1BQU0sWUFBWSxHQUFHLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFdkUsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDNUUsQ0FBQzs4R0FwQlUsa0JBQWtCO2tHQUFsQixrQkFBa0Isc01DcEIvQixvTUFPQSxrR0RXWSxLQUFLLG1IQUFFLE9BQU87OzJGQUViLGtCQUFrQjtrQkFSOUIsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQzs4QkFHVCxJQUFJO3NCQUFuQixLQUFLO2dCQUdVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3IsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEljb24ge1xuICAvKiogRm9udC1hd2Vzb21lIGljb24gY2xhc3MsIGUuZy4gJ2FkZHJlc3MtYm9vaycuIFNlZSBodHRwOi8vZm9udGF3ZXNvbWUuaW8vaWNvbnMvICovXG4gIHR5cGU6IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICByZXZlcnNlPzogYm9vbGVhbjtcbiAgb3JkZXI/OiAnQVNDJyB8ICdERVNDJztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtaWNvbi1zY2FsZScsXG4gIHRlbXBsYXRlVXJsOiAnaWNvbi1zY2FsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydpY29uLXNjYWxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdGb3IsIE5nU3R5bGVdXG59KVxuZXhwb3J0IGNsYXNzIEljb25TY2FsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHB1YmxpYyBpY29uOiBJY29uID0ge1xuICAgIHR5cGU6ICdzdGFyJ1xuICB9O1xuICBASW5wdXQoKSBwdWJsaWMgbnVtYmVyT2ZDb2xvcmVkSXRlbXMgPSAwO1xuICBASW5wdXQoKSBwdWJsaWMgbnVtYmVyT2ZJdGVtcyA9IDA7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICByZWFkb25seSBOQU1FID0gJ0ljb25TY2FsZUNvbXBvbmVudCc7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgaWNvbkFycmF5OiBib29sZWFuW10gPSBbXTtcblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmljb25BcnJheSA9IHRoaXMuY3JlYXRlSWNvbkFycmF5KHRoaXMubnVtYmVyT2ZDb2xvcmVkSXRlbXMsIHRoaXMubnVtYmVyT2ZJdGVtcywgdGhpcy5pY29uPy5vcmRlciB8fCAnQVNDJyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUljb25BcnJheShpdGVtczogbnVtYmVyLCB0b3RhbEl0ZW1zOiBudW1iZXIsIG9yZGVyOiAnQVNDJyB8ICdERVNDJyk6IGJvb2xlYW5bXSB7XG4gICAgY29uc3QgY29sb3JlZEl0ZW1zID0gb3JkZXIgPT09ICdERVNDJyA/IHRvdGFsSXRlbXMgLSBpdGVtcyArIDEgOiBpdGVtcztcblxuICAgIHJldHVybiBbLi4uQXJyYXkodG90YWxJdGVtcykua2V5cygpXS5tYXAoKGluZGV4KSA9PiBpbmRleCA8IGNvbG9yZWRJdGVtcyk7XG4gIH1cbn1cbiIsIjxzcGFuXG4gICpuZ0Zvcj1cImxldCBpc0NvbG9yZWQgb2YgaWNvbkFycmF5XCJcbiAgZGF0YS10ZXN0aWQ9XCJpY29uLXNjYWxlXCJcbiAgY2xhc3M9XCJpY29uRWxlbWVudCBmYXMgZmEte3sgaWNvbi50eXBlIH19XCJcbiAgW25nU3R5bGVdPVwiaXNDb2xvcmVkID8geyBjb2xvcjogaWNvbi5jb2xvciB9IDoge31cIlxuPlxuPC9zcGFuPlxuIl19
|
@@ -1,44 +0,0 @@
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
/**
|
4
|
-
* Skeleton is a component that can be used to show a loading state of a component.
|
5
|
-
*
|
6
|
-
* Use skeleton loaders for pages or sections that load content progressively, like text and images. The component can
|
7
|
-
* be used to compose various scenarios like placeholders for thumbnails, lists, and avatars. See the example
|
8
|
-
* [patterns](?path=/docs/skeleton-patterns--docs) for more details.
|
9
|
-
*/
|
10
|
-
export class SkeletonComponent {
|
11
|
-
constructor() {
|
12
|
-
/**
|
13
|
-
* Color of the skeleton element. 'dark' or 'light' are supported. Default is 'light'.
|
14
|
-
*/
|
15
|
-
this.color = 'light';
|
16
|
-
}
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: SkeletonComponent, isStandalone: true, selector: "lx-skeleton", inputs: { width: "width", height: "height", borderRadius: "borderRadius", color: "color" }, host: { properties: { "style.width": "this.width", "style.height": "this.height", "style.border-radius": "this.borderRadius", "attr.color": "this.color" } }, ngImport: i0, template: '', isInline: true, styles: [":host{display:block;position:relative;overflow:hidden;width:100%;height:18px;border-radius:4px;animation:pulse 1.5s infinite;filter:drop-shadow(0px 0px 2px #fff)}:host[color=dark]{background-color:#e1e5eb}:host[color=light]{background-color:#eaedf1}:host:after{content:\"\";position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#c2c9d633 20%,#c2c9d680 60%,#fff0);animation:shimmer 1.5s cubic-bezier(.4,0,.2,1) infinite}@keyframes shimmer{to{transform:translate(100%)}}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@media (prefers-reduced-motion: reduce){:host:after{animation:none}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
19
|
-
}
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkeletonComponent, decorators: [{
|
21
|
-
type: Component,
|
22
|
-
args: [{ selector: 'lx-skeleton', template: '', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [":host{display:block;position:relative;overflow:hidden;width:100%;height:18px;border-radius:4px;animation:pulse 1.5s infinite;filter:drop-shadow(0px 0px 2px #fff)}:host[color=dark]{background-color:#e1e5eb}:host[color=light]{background-color:#eaedf1}:host:after{content:\"\";position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#c2c9d633 20%,#c2c9d680 60%,#fff0);animation:shimmer 1.5s cubic-bezier(.4,0,.2,1) infinite}@keyframes shimmer{to{transform:translate(100%)}}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@media (prefers-reduced-motion: reduce){:host:after{animation:none}}\n"] }]
|
23
|
-
}], propDecorators: { width: [{
|
24
|
-
type: HostBinding,
|
25
|
-
args: ['style.width']
|
26
|
-
}, {
|
27
|
-
type: Input
|
28
|
-
}], height: [{
|
29
|
-
type: HostBinding,
|
30
|
-
args: ['style.height']
|
31
|
-
}, {
|
32
|
-
type: Input
|
33
|
-
}], borderRadius: [{
|
34
|
-
type: HostBinding,
|
35
|
-
args: ['style.border-radius']
|
36
|
-
}, {
|
37
|
-
type: Input
|
38
|
-
}], color: [{
|
39
|
-
type: HostBinding,
|
40
|
-
args: ['attr.color']
|
41
|
-
}, {
|
42
|
-
type: Input
|
43
|
-
}] } });
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY29yZS11aS9jb21wb25lbnRzL3NrZWxldG9uL3NrZWxldG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXZGOzs7Ozs7R0FNRztBQVFILE1BQU0sT0FBTyxpQkFBaUI7SUFQOUI7UUF1QkU7O1dBRUc7UUFDaUMsVUFBSyxHQUFxQixPQUFPLENBQUM7S0FDdkU7OEdBcEJZLGlCQUFpQjtrR0FBakIsaUJBQWlCLGlVQUxsQixFQUFFOzsyRkFLRCxpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0UsYUFBYSxZQUNiLEVBQUUsbUJBRUssdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJOzhCQU1xQixLQUFLO3NCQUF6QyxXQUFXO3VCQUFDLGFBQWE7O3NCQUFHLEtBQUs7Z0JBS0ksTUFBTTtzQkFBM0MsV0FBVzt1QkFBQyxjQUFjOztzQkFBRyxLQUFLO2dCQUtVLFlBQVk7c0JBQXhELFdBQVc7dUJBQUMscUJBQXFCOztzQkFBRyxLQUFLO2dCQUtOLEtBQUs7c0JBQXhDLFdBQVc7dUJBQUMsWUFBWTs7c0JBQUcsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFNrZWxldG9uIGlzIGEgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gc2hvdyBhIGxvYWRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXG4gKlxuICogVXNlIHNrZWxldG9uIGxvYWRlcnMgZm9yIHBhZ2VzIG9yIHNlY3Rpb25zIHRoYXQgbG9hZCBjb250ZW50IHByb2dyZXNzaXZlbHksIGxpa2UgdGV4dCBhbmQgaW1hZ2VzLiBUaGUgY29tcG9uZW50IGNhblxuICogYmUgdXNlZCB0byBjb21wb3NlIHZhcmlvdXMgc2NlbmFyaW9zIGxpa2UgcGxhY2Vob2xkZXJzIGZvciB0aHVtYm5haWxzLCBsaXN0cywgYW5kIGF2YXRhcnMuIFNlZSB0aGUgZXhhbXBsZVxuICogW3BhdHRlcm5zXSg/cGF0aD0vZG9jcy9za2VsZXRvbi1wYXR0ZXJucy0tZG9jcykgZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtc2tlbGV0b24nLFxuICB0ZW1wbGF0ZTogJycsXG4gIHN0eWxlVXJsOiAnc2tlbGV0b24uY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBTa2VsZXRvbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBXaWR0aCBvZiB0aGUgc2tlbGV0b24gZWxlbWVudC4gVmFsaWQgQ1NTIHZhbHVlcyBhcmUgc3VwcG9ydGVkLiBEZWZhdWx0IGlzIDEwMCUgd2lkdGggb2YgdGhlIHBhcmVudC5cbiAgICovXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKSBASW5wdXQoKSB3aWR0aD86IHN0cmluZztcblxuICAvKipcbiAgICogSGVpZ2h0IG9mIHRoZSBza2VsZXRvbiBlbGVtZW50LiBWYWxpZCBDU1MgdmFsdWVzIGFyZSBzdXBwb3J0ZWQuIERlZmF1bHQgaXMgMTAwJSBoZWlnaHQgb2YgdGhlIHBhcmVudC5cbiAgICovXG4gIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JykgQElucHV0KCkgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb3JkZXIgcmFkaXVzIG9mIHRoZSBza2VsZXRvbiBlbGVtZW50LiBWYWxpZCBDU1MgdmFsdWVzIGFyZSBzdXBwb3J0ZWQuIERlZmF1bHQgaXMgNHB4LlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5ib3JkZXItcmFkaXVzJykgQElucHV0KCkgYm9yZGVyUmFkaXVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb2xvciBvZiB0aGUgc2tlbGV0b24gZWxlbWVudC4gJ2RhcmsnIG9yICdsaWdodCcgYXJlIHN1cHBvcnRlZC4gRGVmYXVsdCBpcyAnbGlnaHQnLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNvbG9yJykgQElucHV0KCkgY29sb3I6ICdkYXJrJyB8ICdsaWdodCcgPSAnbGlnaHQnO1xufVxuIl19
|
@@ -1,26 +0,0 @@
|
|
1
|
-
import { Component, HostBinding, Input } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
/**
|
4
|
-
* The following CSS classes should be used to style this component. The use of the inputs is deprecated.
|
5
|
-
* - `fullSpace`: Sets position to absolute with full height and width => fills ancestor with position set.
|
6
|
-
* - `fullSpaceFixed`: Sets position to fixed with full height and width => fills window
|
7
|
-
* (or ancestor with new rendering context, created, for example, with `transform: translate(0, 0)`
|
8
|
-
* - `fadeBackground`: Sets background to 60% transparent white. TODO: Always use for fullSpace* classes and remove.
|
9
|
-
*/
|
10
|
-
export class SpinnerComponent {
|
11
|
-
constructor() {
|
12
|
-
this.fadeBackground = false;
|
13
|
-
}
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
15
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: SpinnerComponent, isStandalone: true, selector: "lx-spinner", inputs: { fadeBackground: "fadeBackground" }, host: { properties: { "class.fadeBackgroundFromInput": "this.fadeBackground" } }, ngImport: i0, template: "<div class=\"container\">\n <div class=\"middle\">\n <div class=\"center\">\n <div class=\"spinner\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n <ng-content />\n </div>\n </div>\n</div>\n", styles: [":host{font-size:2rem}:host(.fullSpace){position:absolute;inset:0;z-index:1000}:host(.fullSpaceFixed){position:fixed;inset:0;z-index:1000}.container{display:table;height:100%;width:100%}.middle{display:table-cell;vertical-align:middle}.center{text-align:center}:host(.fadeBackground),:host(.fadeBackgroundFromInput){background-color:#fff9}.spinner{margin:0 auto;width:55px;height:25px;text-align:center;font-size:11.25px}.spinner>div{height:100%;width:6px;background-color:#0070f2;display:inline-block;margin:0 1px;animation:sk-stretchdelay 1.2s infinite ease-in-out}.spinner .rect2{animation-delay:-1.1s}.spinner .rect3{animation-delay:-1s}.spinner .rect4{animation-delay:-.9s}.spinner .rect5{animation-delay:-.8s}@-webkit-keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}@-moz-keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}@-ms-keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}@-o-keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}@keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}\n"] }); }
|
16
|
-
}
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SpinnerComponent, decorators: [{
|
18
|
-
type: Component,
|
19
|
-
args: [{ selector: 'lx-spinner', standalone: true, template: "<div class=\"container\">\n <div class=\"middle\">\n <div class=\"center\">\n <div class=\"spinner\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n <ng-content />\n </div>\n </div>\n</div>\n", styles: [":host{font-size:2rem}:host(.fullSpace){position:absolute;inset:0;z-index:1000}:host(.fullSpaceFixed){position:fixed;inset:0;z-index:1000}.container{display:table;height:100%;width:100%}.middle{display:table-cell;vertical-align:middle}.center{text-align:center}:host(.fadeBackground),:host(.fadeBackgroundFromInput){background-color:#fff9}.spinner{margin:0 auto;width:55px;height:25px;text-align:center;font-size:11.25px}.spinner>div{height:100%;width:6px;background-color:#0070f2;display:inline-block;margin:0 1px;animation:sk-stretchdelay 1.2s infinite ease-in-out}.spinner .rect2{animation-delay:-1.1s}.spinner .rect3{animation-delay:-1s}.spinner .rect4{animation-delay:-.9s}.spinner .rect5{animation-delay:-.8s}@-webkit-keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}@-moz-keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}@-ms-keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}@-o-keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}@keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}\n"] }]
|
20
|
-
}], propDecorators: { fadeBackground: [{
|
21
|
-
type: HostBinding,
|
22
|
-
args: ['class.fadeBackgroundFromInput']
|
23
|
-
}, {
|
24
|
-
type: Input
|
25
|
-
}] } });
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlLXVpL2NvbXBvbmVudHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU5RDs7Ozs7O0dBTUc7QUFPSCxNQUFNLE9BQU8sZ0JBQWdCO0lBTjdCO1FBT2dFLG1CQUFjLEdBQVksS0FBSyxDQUFDO0tBQy9GOzhHQUZZLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHNNQ2Y3Qiw2V0FjQTs7MkZEQ2EsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLFlBQVksY0FHVixJQUFJOzhCQUc4QyxjQUFjO3NCQUEzRSxXQUFXO3VCQUFDLCtCQUErQjs7c0JBQUcsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogVGhlIGZvbGxvd2luZyBDU1MgY2xhc3NlcyBzaG91bGQgYmUgdXNlZCB0byBzdHlsZSB0aGlzIGNvbXBvbmVudC4gVGhlIHVzZSBvZiB0aGUgaW5wdXRzIGlzIGRlcHJlY2F0ZWQuXG4gKiAtIGBmdWxsU3BhY2VgOiBTZXRzIHBvc2l0aW9uIHRvIGFic29sdXRlIHdpdGggZnVsbCBoZWlnaHQgYW5kIHdpZHRoID0+IGZpbGxzIGFuY2VzdG9yIHdpdGggcG9zaXRpb24gc2V0LlxuICogLSBgZnVsbFNwYWNlRml4ZWRgOiBTZXRzIHBvc2l0aW9uIHRvIGZpeGVkIHdpdGggZnVsbCBoZWlnaHQgYW5kIHdpZHRoID0+IGZpbGxzIHdpbmRvd1xuICogICAob3IgYW5jZXN0b3Igd2l0aCBuZXcgcmVuZGVyaW5nIGNvbnRleHQsIGNyZWF0ZWQsIGZvciBleGFtcGxlLCB3aXRoIGB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKWBcbiAqIC0gYGZhZGVCYWNrZ3JvdW5kYDogU2V0cyBiYWNrZ3JvdW5kIHRvIDYwJSB0cmFuc3BhcmVudCB3aGl0ZS4gVE9ETzogQWx3YXlzIHVzZSBmb3IgZnVsbFNwYWNlKiBjbGFzc2VzIGFuZCByZW1vdmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LXNwaW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJ3NwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc3Bpbm5lci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFNwaW5uZXJDb21wb25lbnQge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZhZGVCYWNrZ3JvdW5kRnJvbUlucHV0JykgQElucHV0KCkgcHVibGljIGZhZGVCYWNrZ3JvdW5kOiBib29sZWFuID0gZmFsc2U7XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJtaWRkbGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDFcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY3QyXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWN0M1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdDRcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY3Q1XCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
@@ -1,70 +0,0 @@
|
|
1
|
-
import { CdkStepper, CdkStepperModule } from '@angular/cdk/stepper';
|
2
|
-
import { CommonModule } from '@angular/common';
|
3
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "@angular/cdk/bidi";
|
6
|
-
import * as i2 from "@angular/common";
|
7
|
-
/**
|
8
|
-
* Stepper component is a wrapper around the Angular CDK Stepper component. It provides a way to create a linear
|
9
|
-
* sequence of steps that guide users through a process.
|
10
|
-
*
|
11
|
-
* ## Usage
|
12
|
-
*
|
13
|
-
* 1. Import `LxCoreUiModule` module from `@leanix/components` and `CdkStepperModule` module from `@angular/cdk/stepper` in your module where you want to use the component, or in case of a standalone parent component, import the
|
14
|
-
* `StepperComponent` and `CdkStepperModule` directly into your standalone component.
|
15
|
-
*
|
16
|
-
* - Module import:
|
17
|
-
*
|
18
|
-
* ```ts
|
19
|
-
* import { LxCoreUiModule } from '@leanix/components';
|
20
|
-
* import { CdkStepperModule } from '@angular/cdk/stepper';
|
21
|
-
* ```
|
22
|
-
*
|
23
|
-
* - Standalone component import:
|
24
|
-
*
|
25
|
-
* ```ts
|
26
|
-
* import { StepperComponent } from '@leanix/components';
|
27
|
-
* import { CdkStepperModule } from '@angular/cdk/stepper';
|
28
|
-
*
|
29
|
-
* @Component({
|
30
|
-
* selector: 'lx-my-component',
|
31
|
-
* standalone: true,
|
32
|
-
* imports: [CdkStepperModule, StepperComponent],
|
33
|
-
* templateUrl: './my-component.component.html'
|
34
|
-
* })
|
35
|
-
* export class MyComponent {}
|
36
|
-
* ```
|
37
|
-
*
|
38
|
-
* 2. Use the component in your template. All steps added to the stepper should be wrapped in a `cdk-step` element.
|
39
|
-
*
|
40
|
-
* Since this component extends the Angular CDK `CdkStepper` component, all the inputs, outputs, and methods available in the
|
41
|
-
* `CdkStepper` component are also available in the `StepperComponent` and are documented in the
|
42
|
-
* [Angular CDK documentation](https://material.angular.io/cdk/stepper/api).
|
43
|
-
*/
|
44
|
-
export class StepperComponent extends CdkStepper {
|
45
|
-
// TODO - Remove this constructor once the following issue is resolved: https://github.com/storybookjs/storybook/issues/23534#issuecomment-2042888436
|
46
|
-
// Storybook smoke tests for stepper component are failing without this constructor
|
47
|
-
constructor(_dir, _changeDetectorRef, _elementRef) {
|
48
|
-
super(_dir, _changeDetectorRef, _elementRef);
|
49
|
-
/** @internal */
|
50
|
-
this.size = 'normal';
|
51
|
-
}
|
52
|
-
get isSmallVariant() {
|
53
|
-
return this.size === 'small';
|
54
|
-
}
|
55
|
-
/** @internal */
|
56
|
-
isCompleted(index) {
|
57
|
-
return index < this.selectedIndex;
|
58
|
-
}
|
59
|
-
/** @internal */
|
60
|
-
isActiveStep(index) {
|
61
|
-
return index === this.selectedIndex;
|
62
|
-
}
|
63
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: StepperComponent, deps: [{ token: i1.Directionality }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
64
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: StepperComponent, isStandalone: true, selector: "lx-stepper", providers: [{ provide: CdkStepper, useExisting: StepperComponent }], usesInheritance: true, ngImport: i0, template: "<ul class=\"stepper\">\n @for (step of steps; track step.label; let i = $index) {\n <li class=\"step\" [ngClass]=\"{ 'step-completed': isCompleted(i) }\">\n <div\n class=\"step-container\"\n [class]=\"isSmallVariant ? 'step-container-small' : 'step-container-normal'\"\n [ngClass]=\"{ 'step-container-active': isActiveStep(i), 'step-container-completed': isCompleted(i) }\"\n >\n <div class=\"step-number\" [ngClass]=\"{ 'step-number-active': isActiveStep(i) }\">\n @if (isCompleted(i)) {\n <i [class]=\"'far fa-check check-icon'\" [ngClass]=\"{ 'small-icon': isSmallVariant }\"></i>\n } @else if (!isSmallVariant) {\n {{ i + 1 }}\n }\n </div>\n @if (!isSmallVariant) {\n <div class=\"step-title\">\n {{ step.label }}\n </div>\n }\n </div>\n </li>\n }\n</ul>\n@if (selected) {\n <div class=\"content\">\n <ng-container [ngTemplateOutlet]=\"selected!.content\" />\n </div>\n}\n", styles: [".stepper{display:flex;position:relative;align-items:center;padding-left:0}.step{position:relative;z-index:1;flex:1;display:flex;flex-direction:row;flex-shrink:0}.step:not(:last-child):after{content:\"\";position:relative;z-index:1;flex:auto;height:1px;min-width:30px;border-top:2px solid #b2bccc;align-self:center;margin-left:5px;margin-right:5px}.step-container{display:flex;flex-direction:column;justify-content:space-between;flex-shrink:0;border:2px solid #b2bccc;border-radius:50%;background-color:#fff;pointer-events:none}.step-container-normal{width:40px;height:40px}.step-container-small{width:22.5px;height:22.5px}.step-number{color:#b2bccc;font-size:15.5px;font-style:normal;font-weight:var(--lxFontNormal, 400);line-height:20px;width:100%;height:100%;padding-top:8px;text-align:center}.step-container-small .step-number{padding-top:0}.step-title{width:max-content;top:50px;position:absolute}.check-icon{font-size:20px;color:#0070f2}.small-icon{position:relative;font-size:var(--lxFontSmallSize, 12px)}@supports (-moz-appearance: none){.small-icon{top:-1px}}.content{margin-top:48px;height:100%}.step:first-child{justify-content:flex-start}.step:first-child .step-title{left:0}.step:not(:first-child):not(:last-child) .step-container{align-self:center}.step:not(:first-child):not(:last-child) .step-container .step-title{align-self:center}.step:last-child{justify-content:flex-end;align-items:flex-end;text-align:right;flex:0 0 auto}.step:last-child .step-container .step-title{align-self:flex-end;right:0}.step:last-child .step-number{margin-right:40%}.step:nth-child(n+19):last-child .step-number{margin-right:31%}.step-container.step-container-active{background-color:#0070f2;border-color:#0070f2}.step-number-active{color:#fff}.step.step-completed:not(:last-child):after{border-color:#0070f2}.step-container.step-container-completed{border-color:#0070f2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: CdkStepperModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
65
|
-
}
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: StepperComponent, decorators: [{
|
67
|
-
type: Component,
|
68
|
-
args: [{ selector: 'lx-stepper', standalone: true, imports: [CommonModule, CdkStepperModule], providers: [{ provide: CdkStepper, useExisting: StepperComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul class=\"stepper\">\n @for (step of steps; track step.label; let i = $index) {\n <li class=\"step\" [ngClass]=\"{ 'step-completed': isCompleted(i) }\">\n <div\n class=\"step-container\"\n [class]=\"isSmallVariant ? 'step-container-small' : 'step-container-normal'\"\n [ngClass]=\"{ 'step-container-active': isActiveStep(i), 'step-container-completed': isCompleted(i) }\"\n >\n <div class=\"step-number\" [ngClass]=\"{ 'step-number-active': isActiveStep(i) }\">\n @if (isCompleted(i)) {\n <i [class]=\"'far fa-check check-icon'\" [ngClass]=\"{ 'small-icon': isSmallVariant }\"></i>\n } @else if (!isSmallVariant) {\n {{ i + 1 }}\n }\n </div>\n @if (!isSmallVariant) {\n <div class=\"step-title\">\n {{ step.label }}\n </div>\n }\n </div>\n </li>\n }\n</ul>\n@if (selected) {\n <div class=\"content\">\n <ng-container [ngTemplateOutlet]=\"selected!.content\" />\n </div>\n}\n", styles: [".stepper{display:flex;position:relative;align-items:center;padding-left:0}.step{position:relative;z-index:1;flex:1;display:flex;flex-direction:row;flex-shrink:0}.step:not(:last-child):after{content:\"\";position:relative;z-index:1;flex:auto;height:1px;min-width:30px;border-top:2px solid #b2bccc;align-self:center;margin-left:5px;margin-right:5px}.step-container{display:flex;flex-direction:column;justify-content:space-between;flex-shrink:0;border:2px solid #b2bccc;border-radius:50%;background-color:#fff;pointer-events:none}.step-container-normal{width:40px;height:40px}.step-container-small{width:22.5px;height:22.5px}.step-number{color:#b2bccc;font-size:15.5px;font-style:normal;font-weight:var(--lxFontNormal, 400);line-height:20px;width:100%;height:100%;padding-top:8px;text-align:center}.step-container-small .step-number{padding-top:0}.step-title{width:max-content;top:50px;position:absolute}.check-icon{font-size:20px;color:#0070f2}.small-icon{position:relative;font-size:var(--lxFontSmallSize, 12px)}@supports (-moz-appearance: none){.small-icon{top:-1px}}.content{margin-top:48px;height:100%}.step:first-child{justify-content:flex-start}.step:first-child .step-title{left:0}.step:not(:first-child):not(:last-child) .step-container{align-self:center}.step:not(:first-child):not(:last-child) .step-container .step-title{align-self:center}.step:last-child{justify-content:flex-end;align-items:flex-end;text-align:right;flex:0 0 auto}.step:last-child .step-container .step-title{align-self:flex-end;right:0}.step:last-child .step-number{margin-right:40%}.step:nth-child(n+19):last-child .step-number{margin-right:31%}.step-container.step-container-active{background-color:#0070f2;border-color:#0070f2}.step-number-active{color:#fff}.step.step-completed:not(:last-child):after{border-color:#0070f2}.step-container.step-container-completed{border-color:#0070f2}\n"] }]
|
69
|
-
}], ctorParameters: () => [{ type: i1.Directionality }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }] });
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlLXVpL2NvbXBvbmVudHMvc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NvcmUtdWkvY29tcG9uZW50cy9zdGVwcGVyL3N0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQzs7OztBQUVsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NHO0FBVUgsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFVBQVU7SUFJOUMscUpBQXFKO0lBQ3JKLG1GQUFtRjtJQUNuRixZQUFZLElBQW9CLEVBQUUsa0JBQXFDLEVBQUUsV0FBb0M7UUFDM0csS0FBSyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQU4vQyxnQkFBZ0I7UUFDaEIsU0FBSSxHQUF1QixRQUFRLENBQUM7SUFNcEMsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsV0FBVyxDQUFDLEtBQWE7UUFDdkIsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLFlBQVksQ0FBQyxLQUFhO1FBQ3hCLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDdEMsQ0FBQzs4R0F0QlUsZ0JBQWdCO2tHQUFoQixnQkFBZ0IseURBSGhCLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLGlEQ2hEckUseWdDQTZCQSxzNEREZ0JZLFlBQVksbVNBQUUsZ0JBQWdCOzsyRkFNN0IsZ0JBQWdCO2tCQVQ1QixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsYUFHOUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxrQkFBa0IsRUFBRSxDQUFDLG1CQUNsRCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBDZGtTdGVwcGVyLCBDZGtTdGVwcGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU3RlcHBlciBjb21wb25lbnQgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgQW5ndWxhciBDREsgU3RlcHBlciBjb21wb25lbnQuIEl0IHByb3ZpZGVzIGEgd2F5IHRvIGNyZWF0ZSBhIGxpbmVhclxuICogc2VxdWVuY2Ugb2Ygc3RlcHMgdGhhdCBndWlkZSB1c2VycyB0aHJvdWdoIGEgcHJvY2Vzcy5cbiAqXG4gKiAjIyBVc2FnZVxuICpcbiAqIDEuIEltcG9ydCBgTHhDb3JlVWlNb2R1bGVgIG1vZHVsZSBmcm9tIGBAbGVhbml4L2NvbXBvbmVudHNgIGFuZCBgQ2RrU3RlcHBlck1vZHVsZWAgbW9kdWxlIGZyb20gYEBhbmd1bGFyL2Nkay9zdGVwcGVyYCBpbiB5b3VyIG1vZHVsZSB3aGVyZSB5b3Ugd2FudCB0byB1c2UgdGhlIGNvbXBvbmVudCwgb3IgaW4gY2FzZSBvZiBhIHN0YW5kYWxvbmUgcGFyZW50IGNvbXBvbmVudCwgaW1wb3J0IHRoZVxuICogICAgYFN0ZXBwZXJDb21wb25lbnRgIGFuZCBgQ2RrU3RlcHBlck1vZHVsZWAgZGlyZWN0bHkgaW50byB5b3VyIHN0YW5kYWxvbmUgY29tcG9uZW50LlxuICpcbiAqIC0gTW9kdWxlIGltcG9ydDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgTHhDb3JlVWlNb2R1bGUgfSBmcm9tICdAbGVhbml4L2NvbXBvbmVudHMnO1xuICogaW1wb3J0IHsgQ2RrU3RlcHBlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcbiAqIGBgYFxuICpcbiAqIC0gU3RhbmRhbG9uZSBjb21wb25lbnQgaW1wb3J0OlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBTdGVwcGVyQ29tcG9uZW50IH0gZnJvbSAnQGxlYW5peC9jb21wb25lbnRzJztcbiAqIGltcG9ydCB7IENka1N0ZXBwZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbHgtbXktY29tcG9uZW50JyxcbiAqICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAqICAgaW1wb3J0czogW0Nka1N0ZXBwZXJNb2R1bGUsIFN0ZXBwZXJDb21wb25lbnRdLFxuICogICB0ZW1wbGF0ZVVybDogJy4vbXktY29tcG9uZW50LmNvbXBvbmVudC5odG1sJ1xuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7fVxuICogYGBgXG4gKlxuICogMi4gVXNlIHRoZSBjb21wb25lbnQgaW4geW91ciB0ZW1wbGF0ZS4gQWxsIHN0ZXBzIGFkZGVkIHRvIHRoZSBzdGVwcGVyIHNob3VsZCBiZSB3cmFwcGVkIGluIGEgYGNkay1zdGVwYCBlbGVtZW50LlxuICpcbiAqIFNpbmNlIHRoaXMgY29tcG9uZW50IGV4dGVuZHMgdGhlIEFuZ3VsYXIgQ0RLIGBDZGtTdGVwcGVyYCBjb21wb25lbnQsIGFsbCB0aGUgaW5wdXRzLCBvdXRwdXRzLCBhbmQgbWV0aG9kcyBhdmFpbGFibGUgaW4gdGhlXG4gKiBgQ2RrU3RlcHBlcmAgY29tcG9uZW50IGFyZSBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgYFN0ZXBwZXJDb21wb25lbnRgIGFuZCBhcmUgZG9jdW1lbnRlZCBpbiB0aGVcbiAqIFtBbmd1bGFyIENESyBkb2N1bWVudGF0aW9uXShodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vY2RrL3N0ZXBwZXIvYXBpKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtc3RlcHBlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENka1N0ZXBwZXJNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zdGVwcGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDZGtTdGVwcGVyLCB1c2VFeGlzdGluZzogU3RlcHBlckNvbXBvbmVudCB9XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU3RlcHBlckNvbXBvbmVudCBleHRlbmRzIENka1N0ZXBwZXIge1xuICAvKiogQGludGVybmFsICovXG4gIHNpemU6ICdzbWFsbCcgfCAnbm9ybWFsJyA9ICdub3JtYWwnO1xuXG4gIC8vIFRPRE8gLSBSZW1vdmUgdGhpcyBjb25zdHJ1Y3RvciBvbmNlIHRoZSBmb2xsb3dpbmcgaXNzdWUgaXMgcmVzb2x2ZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yeWJvb2tqcy9zdG9yeWJvb2svaXNzdWVzLzIzNTM0I2lzc3VlY29tbWVudC0yMDQyODg4NDM2XG4gIC8vIFN0b3J5Ym9vayBzbW9rZSB0ZXN0cyBmb3Igc3RlcHBlciBjb21wb25lbnQgYXJlIGZhaWxpbmcgd2l0aG91dCB0aGlzIGNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKF9kaXI6IERpcmVjdGlvbmFsaXR5LCBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLCBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBzdXBlcihfZGlyLCBfY2hhbmdlRGV0ZWN0b3JSZWYsIF9lbGVtZW50UmVmKTtcbiAgfVxuXG4gIGdldCBpc1NtYWxsVmFyaWFudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSAnc21hbGwnO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBpc0NvbXBsZXRlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGluZGV4IDwgdGhpcy5zZWxlY3RlZEluZGV4O1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBpc0FjdGl2ZVN0ZXAoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5zZWxlY3RlZEluZGV4O1xuICB9XG59XG4iLCI8dWwgY2xhc3M9XCJzdGVwcGVyXCI+XG4gIEBmb3IgKHN0ZXAgb2Ygc3RlcHM7IHRyYWNrIHN0ZXAubGFiZWw7IGxldCBpID0gJGluZGV4KSB7XG4gICAgPGxpIGNsYXNzPVwic3RlcFwiIFtuZ0NsYXNzXT1cInsgJ3N0ZXAtY29tcGxldGVkJzogaXNDb21wbGV0ZWQoaSkgfVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInN0ZXAtY29udGFpbmVyXCJcbiAgICAgICAgW2NsYXNzXT1cImlzU21hbGxWYXJpYW50ID8gJ3N0ZXAtY29udGFpbmVyLXNtYWxsJyA6ICdzdGVwLWNvbnRhaW5lci1ub3JtYWwnXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnc3RlcC1jb250YWluZXItYWN0aXZlJzogaXNBY3RpdmVTdGVwKGkpLCAnc3RlcC1jb250YWluZXItY29tcGxldGVkJzogaXNDb21wbGV0ZWQoaSkgfVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLW51bWJlclwiIFtuZ0NsYXNzXT1cInsgJ3N0ZXAtbnVtYmVyLWFjdGl2ZSc6IGlzQWN0aXZlU3RlcChpKSB9XCI+XG4gICAgICAgICAgQGlmIChpc0NvbXBsZXRlZChpKSkge1xuICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmYXIgZmEtY2hlY2sgY2hlY2staWNvbidcIiBbbmdDbGFzc109XCJ7ICdzbWFsbC1pY29uJzogaXNTbWFsbFZhcmlhbnQgfVwiPjwvaT5cbiAgICAgICAgICB9IEBlbHNlIGlmICghaXNTbWFsbFZhcmlhbnQpIHtcbiAgICAgICAgICAgIHt7IGkgKyAxIH19XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmICghaXNTbWFsbFZhcmlhbnQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC10aXRsZVwiPlxuICAgICAgICAgICAge3sgc3RlcC5sYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICB9XG48L3VsPlxuQGlmIChzZWxlY3RlZCkge1xuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0ZWQhLmNvbnRlbnRcIiAvPlxuICA8L2Rpdj5cbn1cbiJdfQ==
|