@leanix/components 0.2.239 → 0.2.242
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/esm2020/index.mjs +3 -1
- package/esm2020/lib/core-ui/core-ui.module.mjs +11 -1
- package/esm2020/lib/core-ui/pipes/linkify/linkify.pipe.mjs +130 -0
- package/esm2020/lib/core-ui/pipes/linkify/unlinkify.pipe.mjs +48 -0
- package/esm2020/lib/core-ui/services/resize-observer.service.mjs +51 -2
- package/fesm2015/leanix-components.mjs +229 -3
- package/fesm2015/leanix-components.mjs.map +1 -1
- package/fesm2020/leanix-components.mjs +232 -3
- package/fesm2020/leanix-components.mjs.map +1 -1
- package/index.d.ts +2 -0
- package/lib/core-ui/core-ui.module.d.ts +20 -18
- package/lib/core-ui/pipes/linkify/linkify.pipe.d.ts +48 -0
- package/lib/core-ui/pipes/linkify/unlinkify.pipe.d.ts +20 -0
- package/lib/core-ui/services/resize-observer.service.d.ts +8 -0
- package/package.json +1 -1
@@ -8,7 +8,7 @@ import * as i1 from '@angular/cdk/overlay';
|
|
8
8
|
import { OverlayModule, CdkConnectedOverlay } from '@angular/cdk/overlay';
|
9
9
|
import { __decorate } from 'tslib';
|
10
10
|
import * as i6 from 'rxjs';
|
11
|
-
import { BehaviorSubject, Subject, combineLatest, merge, concat, fromEvent, Observable, ReplaySubject, of
|
11
|
+
import { BehaviorSubject, timer, Subject, combineLatest, merge, concat, fromEvent, Observable, ReplaySubject, of } from 'rxjs';
|
12
12
|
import { skipWhile, map, switchMap, startWith, pairwise, filter, take, debounceTime, skip, withLatestFrom, distinctUntilChanged, takeUntil, first, delay, mapTo, tap } from 'rxjs/operators';
|
13
13
|
import * as i1$1 from '@ngx-translate/core';
|
14
14
|
import { TranslatePipe, TranslateModule } from '@ngx-translate/core';
|
@@ -513,7 +513,16 @@ function isResizeableElement(element) {
|
|
513
513
|
class ResizeObserverService {
|
514
514
|
observe(element, callback, options) {
|
515
515
|
if (!this.resizeObserver) {
|
516
|
-
|
516
|
+
try {
|
517
|
+
this.resizeObserver = new ResizeObserver(this.resizeObserverCallback.bind(this));
|
518
|
+
}
|
519
|
+
catch {
|
520
|
+
// All the browsers we support implement the ResizeObserver API.
|
521
|
+
// For unsupported browsers, there's this "one time artifical resize event".
|
522
|
+
// They will not get the functionality tied to later resize events.
|
523
|
+
timer(500).subscribe(() => callback(this.getMockOneTimeResizeEventForUnsupportedBrowsers(element)));
|
524
|
+
return;
|
525
|
+
}
|
517
526
|
}
|
518
527
|
element.handleResize = callback;
|
519
528
|
this.resizeObserver.observe(element, options);
|
@@ -531,6 +540,45 @@ class ResizeObserverService {
|
|
531
540
|
}
|
532
541
|
});
|
533
542
|
}
|
543
|
+
/**
|
544
|
+
* All browsers we officially support implement the ResizeObserver API.
|
545
|
+
* Still as a curtesy do customers who for some reason have older browsers
|
546
|
+
* we call the callback once with the initial dimensions of the element
|
547
|
+
* and then do not react on resize events afterwards.
|
548
|
+
* This should still make them happier than a "browser not supported" warning.
|
549
|
+
*/
|
550
|
+
getMockOneTimeResizeEventForUnsupportedBrowsers(element) {
|
551
|
+
const contentRect = {
|
552
|
+
bottom: element.clientHeight,
|
553
|
+
height: element.clientHeight,
|
554
|
+
left: 0,
|
555
|
+
right: element.clientWidth,
|
556
|
+
top: 0,
|
557
|
+
width: element.clientWidth,
|
558
|
+
x: 0,
|
559
|
+
y: 0
|
560
|
+
};
|
561
|
+
return {
|
562
|
+
borderBoxSize: [{ blockSize: element.clientHeight, inlineSize: element.clientWidth }],
|
563
|
+
contentBoxSize: [
|
564
|
+
{
|
565
|
+
blockSize: element.clientHeight,
|
566
|
+
inlineSize: element.clientWidth
|
567
|
+
}
|
568
|
+
],
|
569
|
+
contentRect: {
|
570
|
+
...contentRect,
|
571
|
+
toJSON: () => JSON.stringify(contentRect)
|
572
|
+
},
|
573
|
+
devicePixelContentBoxSize: [
|
574
|
+
{
|
575
|
+
blockSize: element.clientWidth,
|
576
|
+
inlineSize: element.clientWidth
|
577
|
+
}
|
578
|
+
],
|
579
|
+
target: element
|
580
|
+
};
|
581
|
+
}
|
534
582
|
}
|
535
583
|
ResizeObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
536
584
|
ResizeObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ResizeObserverService, providedIn: 'root' });
|
@@ -1142,6 +1190,179 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
|
|
1142
1190
|
args: [{ name: 'lxHighlightTerm' }]
|
1143
1191
|
}] });
|
1144
1192
|
|
1193
|
+
/**
|
1194
|
+
* This pipe transforms...
|
1195
|
+
* - "raw" http(s) links
|
1196
|
+
* - markdown link syntax
|
1197
|
+
* ... into clickable anchor elements.
|
1198
|
+
*
|
1199
|
+
* You have an user interface where you don't want clickable links but also
|
1200
|
+
* don't want users to see the "ugly" markdown link syntax?
|
1201
|
+
* -> Use the 'lxUnlikify' pipe to replace markdown link syntax with just the link name
|
1202
|
+
*/
|
1203
|
+
class LxLinkifyPipe {
|
1204
|
+
transform(text) {
|
1205
|
+
if (text && typeof text === 'string') {
|
1206
|
+
const textWithRawLinks = this.wrapRawHttpLinksWithAnchorTags(text);
|
1207
|
+
const textWithRawAndNamedLinks = this.turnMarkdownStyleLinksIntoAnchorTags(textWithRawLinks);
|
1208
|
+
return textWithRawAndNamedLinks;
|
1209
|
+
}
|
1210
|
+
else {
|
1211
|
+
return text;
|
1212
|
+
}
|
1213
|
+
}
|
1214
|
+
turnMarkdownStyleLinksIntoAnchorTags(text) {
|
1215
|
+
let textWithRawAndNamedLinks = text;
|
1216
|
+
const namedLinkMatches = this.getAllRegexMatches(LxLinkifyPipe.NAMED_LINK_REGEX, text);
|
1217
|
+
namedLinkMatches.forEach((namedLinkMatch) => {
|
1218
|
+
const [source, name, url] = namedLinkMatch;
|
1219
|
+
const urlIsValid = url && !/javascript\:/i.test(url);
|
1220
|
+
if (source && name && urlIsValid) {
|
1221
|
+
textWithRawAndNamedLinks = textWithRawAndNamedLinks.replace(source, `<a href="${url}" target="_blank" rel="noopener noreferrer">${name}</a>`);
|
1222
|
+
}
|
1223
|
+
});
|
1224
|
+
return textWithRawAndNamedLinks;
|
1225
|
+
}
|
1226
|
+
wrapRawHttpLinksWithAnchorTags(text) {
|
1227
|
+
let textWithRawLinks = text;
|
1228
|
+
/**
|
1229
|
+
* Keeping track of this index prevents infinite loops
|
1230
|
+
* where a previously processed link starts with the same characters
|
1231
|
+
* as a second link.
|
1232
|
+
* e.g. https://angular.io/docs followed by https://angular.io
|
1233
|
+
*/
|
1234
|
+
let nextIndexToStartReplacingFrom = 0;
|
1235
|
+
const rawLinkMatches = this.getAllRegexMatches(LxLinkifyPipe.HTTP_LINK_REGEX, text);
|
1236
|
+
rawLinkMatches.forEach((rawLinkMatch) => {
|
1237
|
+
const [url] = rawLinkMatch;
|
1238
|
+
const wrapUrlInAnchor = (sanitizedUrlMatch) => {
|
1239
|
+
const firstPart = textWithRawLinks.substring(0, nextIndexToStartReplacingFrom);
|
1240
|
+
const anchorTagHtml = `<a href="${sanitizedUrlMatch}" target="_blank" rel="noopener noreferrer">${sanitizedUrlMatch}</a>`;
|
1241
|
+
const secondPart = textWithRawLinks.substring(nextIndexToStartReplacingFrom).replace(sanitizedUrlMatch, anchorTagHtml);
|
1242
|
+
textWithRawLinks = firstPart + secondPart;
|
1243
|
+
nextIndexToStartReplacingFrom = rawLinkMatch.index + anchorTagHtml.length;
|
1244
|
+
};
|
1245
|
+
if (url) {
|
1246
|
+
/*
|
1247
|
+
* TODO: get rid of all this code once Safari supports negative lookbehinds in regular expressions
|
1248
|
+
* The following is RegExp that handles the same stuff as the JS code below:
|
1249
|
+
*
|
1250
|
+
* /(?:(?:(?<!\]\())(?:https|http):\/\/)(?:[^\s/$.?#][^\s]*(?<![\.)]))/gi;
|
1251
|
+
*
|
1252
|
+
* Demo on regex101: https://regex101.com/r/7Vl9bg/1
|
1253
|
+
*
|
1254
|
+
* Check lookbehind support here: https://caniuse.com/?search=lookbehind
|
1255
|
+
*/
|
1256
|
+
const lastUrlCharacterIndex = rawLinkMatch.index + url.length - 1;
|
1257
|
+
const textUsedToPerformMatching = rawLinkMatch.input;
|
1258
|
+
const lastCharacterInUrl = textUsedToPerformMatching[lastUrlCharacterIndex];
|
1259
|
+
const twoCharactersInFrontOfTheLink = rawLinkMatch.index > 3
|
1260
|
+
? `${textUsedToPerformMatching[rawLinkMatch.index - 2]}${textUsedToPerformMatching[rawLinkMatch.index - 1]}`
|
1261
|
+
: '';
|
1262
|
+
const isMarkdownSyntaxLink = twoCharactersInFrontOfTheLink === '](';
|
1263
|
+
if (!isMarkdownSyntaxLink && lastCharacterInUrl === '.') {
|
1264
|
+
const characterAfterUrl = textUsedToPerformMatching[lastUrlCharacterIndex + 1];
|
1265
|
+
if (!characterAfterUrl || characterAfterUrl === ' ' || characterAfterUrl === '\n') {
|
1266
|
+
const urlWithoutDotAtTheEnd = url.slice(0, -1);
|
1267
|
+
wrapUrlInAnchor(urlWithoutDotAtTheEnd);
|
1268
|
+
}
|
1269
|
+
}
|
1270
|
+
else if (!isMarkdownSyntaxLink) {
|
1271
|
+
wrapUrlInAnchor(url);
|
1272
|
+
}
|
1273
|
+
}
|
1274
|
+
});
|
1275
|
+
return textWithRawLinks;
|
1276
|
+
}
|
1277
|
+
getAllRegexMatches(regex, input) {
|
1278
|
+
let match;
|
1279
|
+
const matches = [];
|
1280
|
+
while ((match = regex.exec(input)) !== null) {
|
1281
|
+
matches.push(match);
|
1282
|
+
}
|
1283
|
+
return matches;
|
1284
|
+
}
|
1285
|
+
}
|
1286
|
+
/**
|
1287
|
+
* This is not the "one URL regex to rule them all", but a more realistic one which should work
|
1288
|
+
* for any URLs that our customers include in text fields on a Fact Sheet.
|
1289
|
+
*
|
1290
|
+
* Regex rules explained in plain text:
|
1291
|
+
*
|
1292
|
+
* (?:(?:https?):\/\/) -> Links must start with "https://" or "http://"
|
1293
|
+
*
|
1294
|
+
* (?:[^\s/$.?#][^\s]*(?<![\.)])) LET'S SPLIT THIS ONE UP
|
1295
|
+
*
|
1296
|
+
* [^\s/$.?#][^\s]* -> Match any legal URL character until the next whitespace
|
1297
|
+
* (?<![\.)] -> A negative lookahead to prevent matching a dot or parenthesis following a URL
|
1298
|
+
*
|
1299
|
+
* Link to regex101: https://regex101.com/r/d3KtfH/1 (NOTE: please update this link when changing the regex)
|
1300
|
+
*/
|
1301
|
+
LxLinkifyPipe.HTTP_LINK_REGEX = /(?:(?:https?):\/\/)(?:[^\s/$.?#][^\s]*)/gi;
|
1302
|
+
/**
|
1303
|
+
* This will match the markdown link syntax: [link name](url)
|
1304
|
+
* Regex rules explained in plain text:
|
1305
|
+
*
|
1306
|
+
* (?:\[([^\]]*)\]) -> Match any characters inside square brackets
|
1307
|
+
* \(([^\s\/$.?#][^\s]*)\) -> Notice that this is the same regex as the HTTP_LINK_REGEX above,
|
1308
|
+
* but without the requirement for the http protocol.
|
1309
|
+
* This allows for links without including the protocol or also "mailto:hello@world.de" links
|
1310
|
+
*
|
1311
|
+
* Link to regex101: https://regex101.com/r/5UMUH8/1
|
1312
|
+
*/
|
1313
|
+
LxLinkifyPipe.NAMED_LINK_REGEX = /(?:\[([^\]]*)\])\(([^\s\/$.?#][^\s]*)\)/gi;
|
1314
|
+
LxLinkifyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: LxLinkifyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
1315
|
+
LxLinkifyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: LxLinkifyPipe, name: "lxLinkify" });
|
1316
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: LxLinkifyPipe, decorators: [{
|
1317
|
+
type: Pipe,
|
1318
|
+
args: [{ name: 'lxLinkify' }]
|
1319
|
+
}] });
|
1320
|
+
|
1321
|
+
/**
|
1322
|
+
* This pipe replaces markdown link syntax with just the link name (omits the link altogether).
|
1323
|
+
* Example: [Angular documentation](http://angular.io/docs) -> Angular documentation
|
1324
|
+
*
|
1325
|
+
* It can also be used for "bridging the gap" until your view is ready to use "lxLinkify"
|
1326
|
+
* and you just want to get rid of the "useless" markdown syntax fast.
|
1327
|
+
*
|
1328
|
+
* While there are views where we want markdown style links to be clickable anchor tags,
|
1329
|
+
* there are other views where this can degrade the UX.
|
1330
|
+
* Example: in the Fact Sheet list on the inventory list view, having an arbitrary number
|
1331
|
+
* of links on the page can slow down the keyboard navigation while navigating through the list.
|
1332
|
+
*/
|
1333
|
+
class LxUnlinkifyPipe {
|
1334
|
+
transform(text) {
|
1335
|
+
if (text && typeof text === 'string') {
|
1336
|
+
let textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName = text;
|
1337
|
+
const markdownLinkSyntaxMatches = this.getAllRegexMatches(LxLinkifyPipe.NAMED_LINK_REGEX, text);
|
1338
|
+
markdownLinkSyntaxMatches.forEach((markdownLinkSyntaxMatch) => {
|
1339
|
+
const [source, name] = markdownLinkSyntaxMatch;
|
1340
|
+
if (source && name) {
|
1341
|
+
textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName = textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName.replace(source, name);
|
1342
|
+
}
|
1343
|
+
});
|
1344
|
+
return textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName;
|
1345
|
+
}
|
1346
|
+
else {
|
1347
|
+
return text;
|
1348
|
+
}
|
1349
|
+
}
|
1350
|
+
getAllRegexMatches(regex, input) {
|
1351
|
+
let match;
|
1352
|
+
const matches = [];
|
1353
|
+
while ((match = regex.exec(input)) !== null) {
|
1354
|
+
matches.push(match);
|
1355
|
+
}
|
1356
|
+
return matches;
|
1357
|
+
}
|
1358
|
+
}
|
1359
|
+
LxUnlinkifyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: LxUnlinkifyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
1360
|
+
LxUnlinkifyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: LxUnlinkifyPipe, name: "lxUnlinkify" });
|
1361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: LxUnlinkifyPipe, decorators: [{
|
1362
|
+
type: Pipe,
|
1363
|
+
args: [{ name: 'lxUnlinkify' }]
|
1364
|
+
}] });
|
1365
|
+
|
1145
1366
|
function isUuid(s) {
|
1146
1367
|
const uuidRegEx = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
1147
1368
|
return uuidRegEx.test(s);
|
@@ -1491,6 +1712,8 @@ LxCoreUiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
1491
1712
|
HighlightTermPipe,
|
1492
1713
|
HtmlDirective,
|
1493
1714
|
IconScaleComponent,
|
1715
|
+
LxLinkifyPipe,
|
1716
|
+
LxUnlinkifyPipe,
|
1494
1717
|
LxTimeAgo,
|
1495
1718
|
LxTranslatePipe,
|
1496
1719
|
MarkdownPipe,
|
@@ -1521,6 +1744,8 @@ LxCoreUiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
1521
1744
|
HighlightTermPipe,
|
1522
1745
|
HtmlDirective,
|
1523
1746
|
IconScaleComponent,
|
1747
|
+
LxLinkifyPipe,
|
1748
|
+
LxUnlinkifyPipe,
|
1524
1749
|
LxTimeAgo,
|
1525
1750
|
LxTranslatePipe,
|
1526
1751
|
MarkdownPipe,
|
@@ -1558,6 +1783,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
|
|
1558
1783
|
HighlightTermPipe,
|
1559
1784
|
HtmlDirective,
|
1560
1785
|
IconScaleComponent,
|
1786
|
+
LxLinkifyPipe,
|
1787
|
+
LxUnlinkifyPipe,
|
1561
1788
|
LxTimeAgo,
|
1562
1789
|
LxTranslatePipe,
|
1563
1790
|
MarkdownPipe,
|
@@ -1592,6 +1819,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
|
|
1592
1819
|
HighlightTermPipe,
|
1593
1820
|
HtmlDirective,
|
1594
1821
|
IconScaleComponent,
|
1822
|
+
LxLinkifyPipe,
|
1823
|
+
LxUnlinkifyPipe,
|
1595
1824
|
LxTimeAgo,
|
1596
1825
|
LxTranslatePipe,
|
1597
1826
|
MarkdownPipe,
|
@@ -6301,5 +6530,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
|
|
6301
6530
|
* Generated bundle index. Do not edit.
|
6302
6531
|
*/
|
6303
6532
|
|
6304
|
-
export { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, AfterViewInitDirective, AutocloseDirective, AutofocusDirective, BACKSPACE, BadgeComponent, BaseSelectDirective, BasicDropdownComponent, BasicDropdownItemComponent, BrPipe, ButtonComponent, ButtonGroupComponent, CURRENCY_SYMBOL_MAP, CardComponent, CdkOptionsDropdownComponent, CdkOptionsSubDropdownComponent, CollapsibleComponent, ColoredLabelComponent, ContrastColorPipe, CurrencyInputComponent, CurrencySymbolComponent, CustomDatePipe, DATE_FN_LOCALE, DATE_FORMATS, DateInputComponent, DragAndDropListComponent, DragAndDropListItemComponent, ENTER, ESCAPE, EllipsisComponent, ErrorMessageComponent, FORM_CONTROL_ERROR_DISPLAY_STRATEGY, FORM_CONTROL_ERROR_NAMESPACE, FilterSelectionPipe, FilterTermPipe, FormErrorComponent, FormErrorDirective, FormSubmitDirective, FormatNumberPipe, GLOBAL_TRANSLATION_OPTIONS, HighlightRangePipe, HighlightTermPipe, HtmlDirective, IconComponent, IconScaleComponent, KeyboardActionSourceDirective, KeyboardSelectAction, KeyboardSelectDirective, LOCALE_FN, LX_ELLIPSIS_DEBOUNCE_ON_RESIZE, LxCoreUiModule, LxDragAndDropListModule, LxFormsModule, LxIsUuidPipe, LxModalModule, LxPopoverUiModule, LxTabUiModule, LxTimeAgo, LxTooltipModule, LxTranslatePipe, MODAL_CLOSE, MarkInvalidDirective, MarkdownPipe, ModalComponent, ModalContentDirective, ModalFooterComponent, ModalHeaderComponent, MultiSelectComponent, NbspPipe, OptionComponent, OptionGroupComponent, OptionGroupDropdownComponent, OptionsDropdownComponent, OptionsSubDropdownComponent, PickerComponent, PickerOptionComponent, PickerTriggerDirective, PillItemComponent, PillListComponent, PopoverClickDirective, PopoverComponent, PopoverContentDirective, PopoverHoverDirective, Required, ResizeObserverService, ResponsiveInputComponent, SPACE, SelectDropdownDirective, SelectableItemDirective, SelectedOptionDirective, SingleSelectComponent, SliderToggleComponent, SortPipe, Sorting, SortingDropdownComponent, SortingDropdownTriggerComponent, SpinnerComponent, TAB, TabComponent, TabGroupComponent, TableComponent, TableHeaderComponent, TinySpinnerComponent, TooltipComponent, TooltipDirective, TranslationAfterPipe, TranslationBeforePipe, TranslationBetweenPipe, UnescapeCurlyBracesPipe, ValidateDateInForeseeableFuture, getContrastColor, getTranslationParts, isValidHexColor, isValidX, isValidY, provideFormControlErrorDisplayStrategy, provideFormControlErrorNamespace, shorthandHexHandle };
|
6533
|
+
export { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, AfterViewInitDirective, AutocloseDirective, AutofocusDirective, BACKSPACE, BadgeComponent, BaseSelectDirective, BasicDropdownComponent, BasicDropdownItemComponent, BrPipe, ButtonComponent, ButtonGroupComponent, CURRENCY_SYMBOL_MAP, CardComponent, CdkOptionsDropdownComponent, CdkOptionsSubDropdownComponent, CollapsibleComponent, ColoredLabelComponent, ContrastColorPipe, CurrencyInputComponent, CurrencySymbolComponent, CustomDatePipe, DATE_FN_LOCALE, DATE_FORMATS, DateInputComponent, DragAndDropListComponent, DragAndDropListItemComponent, ENTER, ESCAPE, EllipsisComponent, ErrorMessageComponent, FORM_CONTROL_ERROR_DISPLAY_STRATEGY, FORM_CONTROL_ERROR_NAMESPACE, FilterSelectionPipe, FilterTermPipe, FormErrorComponent, FormErrorDirective, FormSubmitDirective, FormatNumberPipe, GLOBAL_TRANSLATION_OPTIONS, HighlightRangePipe, HighlightTermPipe, HtmlDirective, IconComponent, IconScaleComponent, KeyboardActionSourceDirective, KeyboardSelectAction, KeyboardSelectDirective, LOCALE_FN, LX_ELLIPSIS_DEBOUNCE_ON_RESIZE, LxCoreUiModule, LxDragAndDropListModule, LxFormsModule, LxIsUuidPipe, LxLinkifyPipe, LxModalModule, LxPopoverUiModule, LxTabUiModule, LxTimeAgo, LxTooltipModule, LxTranslatePipe, LxUnlinkifyPipe, MODAL_CLOSE, MarkInvalidDirective, MarkdownPipe, ModalComponent, ModalContentDirective, ModalFooterComponent, ModalHeaderComponent, MultiSelectComponent, NbspPipe, OptionComponent, OptionGroupComponent, OptionGroupDropdownComponent, OptionsDropdownComponent, OptionsSubDropdownComponent, PickerComponent, PickerOptionComponent, PickerTriggerDirective, PillItemComponent, PillListComponent, PopoverClickDirective, PopoverComponent, PopoverContentDirective, PopoverHoverDirective, Required, ResizeObserverService, ResponsiveInputComponent, SPACE, SelectDropdownDirective, SelectableItemDirective, SelectedOptionDirective, SingleSelectComponent, SliderToggleComponent, SortPipe, Sorting, SortingDropdownComponent, SortingDropdownTriggerComponent, SpinnerComponent, TAB, TabComponent, TabGroupComponent, TableComponent, TableHeaderComponent, TinySpinnerComponent, TooltipComponent, TooltipDirective, TranslationAfterPipe, TranslationBeforePipe, TranslationBetweenPipe, UnescapeCurlyBracesPipe, ValidateDateInForeseeableFuture, getContrastColor, getTranslationParts, isValidHexColor, isValidX, isValidY, provideFormControlErrorDisplayStrategy, provideFormControlErrorNamespace, shorthandHexHandle };
|
6305
6534
|
//# sourceMappingURL=leanix-components.mjs.map
|