@koobiq/components 20.0.0 → 20.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion-trigger.component.scss +0 -18
- package/accordion/accordion.component.scss +9 -2
- package/actions-panel/index.d.ts +1 -0
- package/alert/_alert-theme.scss +0 -4
- package/alert/alert-tokens.scss +4 -4
- package/app-switcher/app-switcher-dropdown-app.scss +2 -0
- package/breadcrumbs/breadcrumbs.scss +4 -0
- package/breadcrumbs/index.d.ts +2 -1
- package/button/button-group.scss +42 -2
- package/button-toggle/button-toggle.scss +23 -0
- package/button-toggle/index.d.ts +3 -1
- package/checkbox/checkbox.scss +5 -4
- package/clamped-text/index.d.ts +1 -0
- package/core/index.d.ts +402 -13
- package/core/styles/common/_animation.scss +4 -0
- package/core/styles/theming/_components-theming.scss +1 -1
- package/core/styles/theming/_scrollbar-theme.scss +4 -0
- package/datepicker/_datepicker-theme.scss +1 -1
- package/datepicker/datepicker-toggle.scss +3 -3
- package/dl/index.d.ts +1 -0
- package/dropdown/dropdown.scss +2 -2
- package/fesm2022/koobiq-components-accordion.mjs +4 -4
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +14 -5
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +2 -2
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +6 -6
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +6 -4
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +9 -6
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +4 -4
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +2 -2
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +4 -0
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +4 -0
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +449 -112
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +5 -5
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +3 -2
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +8 -13
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +33 -22
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +974 -758
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +66 -0
- package/fesm2022/koobiq-components-flag.mjs.map +1 -0
- package/fesm2022/koobiq-components-form-field.mjs +2 -2
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +2 -2
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +27 -6
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +39 -20
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +9 -5
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +10 -9
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +178 -19
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +12 -4
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +4 -4
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +2 -2
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +2 -2
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +3 -7
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +38 -16
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +4 -0
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +3 -3
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +2 -2
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +2 -2
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +6 -2
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +8 -6
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +19 -7
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +7 -0
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +7 -14
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +4 -4
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +6 -0
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +132 -14
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +1 -1
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +50 -2
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +44 -11
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +67 -41
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +16 -3
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/file-upload-tokens.scss +1 -0
- package/file-upload/index.d.ts +10 -7
- package/filter-bar/_filter-bar-theme.scss +86 -0
- package/filter-bar/filter-bar-tokens.scss +6 -0
- package/filter-bar/filter-bar.scss +10 -4
- package/filter-bar/filter-refresher.scss +1 -1
- package/filter-bar/filters.scss +23 -19
- package/filter-bar/index.d.ts +707 -338
- package/filter-bar/pipes/base-pipe.scss +14 -35
- package/filter-bar/pipes/pipe-date.scss +20 -14
- package/filter-bar/pipes/pipe-multi-tree-select.scss +5 -3
- package/filter-bar/pipes/pipe-multiselect.scss +5 -3
- package/filter-bar/pipes/pipe-readonly.scss +4 -13
- package/filter-bar/pipes/pipe-select.scss +3 -1
- package/filter-bar/pipes/pipe-tree-select.scss +3 -1
- package/flag/flag.scss +53 -0
- package/flag/index.d.ts +44 -0
- package/icon/icon-item-tokens.scss +1 -1
- package/inline-edit/index.d.ts +5 -0
- package/inline-edit/inline-edit.scss +7 -7
- package/link/link-tokens.scss +2 -2
- package/list/index.d.ts +11 -2
- package/loader-overlay/loader-overlay-tokens.scss +1 -1
- package/modal/_modal-animation.scss +6 -6
- package/modal/_modal-theme.scss +5 -0
- package/modal/index.d.ts +3 -1
- package/modal/modal.scss +15 -0
- package/navbar/index.d.ts +1 -0
- package/navbar/navbar-item.scss +9 -0
- package/notification-center/_notification-center-theme.scss +2 -1
- package/notification-center/index.d.ts +88 -3
- package/notification-center/notification-center.scss +42 -4
- package/notification-center/notification-item.scss +3 -2
- package/overflow-items/index.d.ts +1 -0
- package/package.json +7 -3
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/progress-bar.scss +4 -0
- package/progress-spinner/progress-spinner.scss +5 -1
- package/radio/index.d.ts +1 -5
- package/radio/radio.scss +18 -4
- package/schematics/collection.json +5 -0
- package/schematics/migrations/filter-bar-signals/README.md +66 -0
- package/schematics/migrations/filter-bar-signals/data.js +72 -0
- package/schematics/migrations/filter-bar-signals/index.js +316 -0
- package/schematics/migrations/filter-bar-signals/schema.json +20 -0
- package/schematics/migrations.json +5 -0
- package/schematics/ng-add/index.js +1 -1
- package/select/index.d.ts +10 -2
- package/sidebar/index.d.ts +1 -0
- package/skeleton/skeleton.scss +4 -0
- package/split-button/_split-button-theme.scss +2 -2
- package/splitter/_splitter-theme.scss +2 -2
- package/splitter/index.d.ts +1 -0
- package/table/_table-theme.scss +4 -0
- package/table/index.d.ts +3 -2
- package/tabs/index.d.ts +2 -0
- package/tabs/tab-header.scss +1 -0
- package/tabs/tabs-tokens.scss +1 -1
- package/textarea/index.d.ts +0 -1
- package/time-range/time-range.scss +0 -8
- package/timepicker/timepicker.scss +2 -2
- package/timezone/index.d.ts +1 -0
- package/title/index.d.ts +92 -2
- package/tooltip/index.d.ts +51 -3
- package/tree/_tree-theme.scss +2 -7
- package/tree/index.d.ts +19 -4
- package/tree/toggle.scss +5 -0
- package/tree/tree-option.scss +0 -4
- package/tree-select/_tree-select-theme.scss +1 -1
- package/tree-select/index.d.ts +9 -2
- package/username/index.d.ts +20 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { QueryList, inject, ElementRef, Directive, isDevMode, Input, ChangeDetectorRef, InjectionToken, LOCALE_ID, Type, Injectable, Renderer2, DestroyRef, afterNextRender, NgModule, Pipe, contentChildren, booleanAttribute, ViewEncapsulation, ChangeDetectionStrategy, Component, input, EventEmitter, Output, ViewChild, numberAttribute, signal, TemplateRef, NgZone, ViewContainerRef, RendererFactory2, Version } from '@angular/core';
|
|
2
|
+
import { QueryList, inject, ElementRef, Directive, isDevMode, Input, ChangeDetectorRef, InjectionToken, LOCALE_ID, Type, Injectable, Renderer2, DestroyRef, afterNextRender, NgModule, Pipe, contentChildren, booleanAttribute, ViewEncapsulation, ChangeDetectionStrategy, Component, input, EventEmitter, Output, ViewChild, numberAttribute, signal, ApplicationRef, TemplateRef, NgZone, ViewContainerRef, RendererFactory2, Version } from '@angular/core';
|
|
3
3
|
import { Subject, Subscription, merge, fromEvent, map as map$1, BehaviorSubject, interval, pairwise } from 'rxjs';
|
|
4
4
|
import { tap, debounceTime, filter, map, distinctUntilChanged, delay } from 'rxjs/operators';
|
|
5
5
|
import { _getEventTarget, Platform } from '@angular/cdk/platform';
|
|
@@ -11,10 +11,11 @@ import { DOCUMENT } from '@angular/common';
|
|
|
11
11
|
import { DateFormatter as DateFormatter$1 } from '@koobiq/date-formatter';
|
|
12
12
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
13
13
|
import { SharedResizeObserver } from '@angular/cdk/observers/private';
|
|
14
|
-
import { Overlay, ScrollDispatcher, CdkScrollable } from '@angular/cdk/overlay';
|
|
14
|
+
import { Overlay, OverlayContainer, ScrollDispatcher, CdkScrollable } from '@angular/cdk/overlay';
|
|
15
15
|
import { TooltipSizeArrowSize } from '@koobiq/design-tokens';
|
|
16
16
|
import { Directionality } from '@angular/cdk/bidi';
|
|
17
17
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
18
|
+
import { ViewportRuler } from '@angular/cdk/scrolling';
|
|
18
19
|
import { AsyncScheduler } from 'rxjs/internal/scheduler/AsyncScheduler';
|
|
19
20
|
|
|
20
21
|
const MAC_ENTER = 3;
|
|
@@ -1267,10 +1268,16 @@ const enUSLocaleData = {
|
|
|
1267
1268
|
error: 'The search with such name already exists',
|
|
1268
1269
|
errorHint: 'Could not save the filter. Try again or contact the administrator.',
|
|
1269
1270
|
saveButton: 'Save',
|
|
1270
|
-
cancelButton: 'Cancel'
|
|
1271
|
+
cancelButton: 'Cancel',
|
|
1272
|
+
actionsTooltip: 'Filter actions'
|
|
1271
1273
|
},
|
|
1272
1274
|
add: {
|
|
1273
|
-
tooltip: 'Add filter'
|
|
1275
|
+
tooltip: 'Add filter',
|
|
1276
|
+
addedAnnouncement: '{{ name }} filter added'
|
|
1277
|
+
},
|
|
1278
|
+
refresher: {
|
|
1279
|
+
refresh: 'Refresh',
|
|
1280
|
+
settings: 'Refresh settings'
|
|
1274
1281
|
},
|
|
1275
1282
|
pipe: {
|
|
1276
1283
|
clearButtonTooltip: 'Clear',
|
|
@@ -1324,10 +1331,13 @@ const enUSLocaleData = {
|
|
|
1324
1331
|
to: 'to',
|
|
1325
1332
|
apply: 'Apply',
|
|
1326
1333
|
cancel: 'Cancel',
|
|
1327
|
-
rangeLabel: '
|
|
1334
|
+
rangeLabel: 'Period',
|
|
1328
1335
|
allTime: 'for all time',
|
|
1329
1336
|
currentQuarter: 'for the current quarter',
|
|
1330
|
-
currentYear: 'for the current year'
|
|
1337
|
+
currentYear: 'for the current year',
|
|
1338
|
+
allTimeOption: 'All time',
|
|
1339
|
+
currentQuarterOption: 'Current quarter',
|
|
1340
|
+
currentYearOption: 'Current year'
|
|
1331
1341
|
},
|
|
1332
1342
|
durationTemplate: {
|
|
1333
1343
|
title: {
|
|
@@ -1369,31 +1379,31 @@ const enUSLocaleData = {
|
|
|
1369
1379
|
LAST_PART_SEPARATOR: '',
|
|
1370
1380
|
YEARS: `{years, plural,
|
|
1371
1381
|
one {# year}
|
|
1372
|
-
other {
|
|
1382
|
+
other {Last # years}
|
|
1373
1383
|
}`,
|
|
1374
1384
|
MONTHS: `{months, plural,
|
|
1375
|
-
one {
|
|
1376
|
-
other {
|
|
1385
|
+
one {Last month}
|
|
1386
|
+
other {Last # months}
|
|
1377
1387
|
}`,
|
|
1378
1388
|
WEEKS: `{weeks, plural,
|
|
1379
|
-
one {
|
|
1380
|
-
other {
|
|
1389
|
+
one {Last week}
|
|
1390
|
+
other {Last # weeks}
|
|
1381
1391
|
}`,
|
|
1382
1392
|
DAYS: `{days, plural,
|
|
1383
|
-
one {
|
|
1384
|
-
other {
|
|
1393
|
+
one {Last day}
|
|
1394
|
+
other {Last # days}
|
|
1385
1395
|
}`,
|
|
1386
1396
|
HOURS: `{hours, plural,
|
|
1387
|
-
one {
|
|
1388
|
-
other {
|
|
1397
|
+
one {Last hour}
|
|
1398
|
+
other {Last # hours}
|
|
1389
1399
|
}`,
|
|
1390
1400
|
MINUTES: `{minutes, plural,
|
|
1391
|
-
one {
|
|
1392
|
-
other {
|
|
1401
|
+
one {Last minute}
|
|
1402
|
+
other {Last # minutes}
|
|
1393
1403
|
}`,
|
|
1394
1404
|
SECONDS: `{seconds, plural,
|
|
1395
|
-
one {
|
|
1396
|
-
other {
|
|
1405
|
+
one {Last second}
|
|
1406
|
+
other {Last # seconds}
|
|
1397
1407
|
}`,
|
|
1398
1408
|
YEARS_FRACTION: `{years} years`,
|
|
1399
1409
|
MONTHS_FRACTION: `{months} months`
|
|
@@ -1407,7 +1417,8 @@ const enUSLocaleData = {
|
|
|
1407
1417
|
showPopUpNotifications: 'Show pop-up notifications',
|
|
1408
1418
|
noNotifications: 'No notifications',
|
|
1409
1419
|
failedToLoadNotifications: 'Failed to load notifications',
|
|
1410
|
-
repeat: 'Repeat'
|
|
1420
|
+
repeat: 'Repeat',
|
|
1421
|
+
loadingMore: 'Loading more notifications'
|
|
1411
1422
|
}
|
|
1412
1423
|
};
|
|
1413
1424
|
|
|
@@ -1482,10 +1493,16 @@ const esLALocaleData = {
|
|
|
1482
1493
|
error: 'Ya existe una búsqueda con ese nombre',
|
|
1483
1494
|
errorHint: 'No se pudo guardar el filtro. Intente de nuevo o comuníquese con el administrador.',
|
|
1484
1495
|
saveButton: 'Guardar',
|
|
1485
|
-
cancelButton: 'Cancelar'
|
|
1496
|
+
cancelButton: 'Cancelar',
|
|
1497
|
+
actionsTooltip: 'Acciones de filtro'
|
|
1486
1498
|
},
|
|
1487
1499
|
add: {
|
|
1488
|
-
tooltip: 'Agregar filtro'
|
|
1500
|
+
tooltip: 'Agregar filtro',
|
|
1501
|
+
addedAnnouncement: 'Filtro {{ name }} agregado'
|
|
1502
|
+
},
|
|
1503
|
+
refresher: {
|
|
1504
|
+
refresh: 'Actualizar',
|
|
1505
|
+
settings: 'Configuración de actualización'
|
|
1489
1506
|
},
|
|
1490
1507
|
pipe: {
|
|
1491
1508
|
clearButtonTooltip: 'Borrar',
|
|
@@ -1539,10 +1556,13 @@ const esLALocaleData = {
|
|
|
1539
1556
|
to: 'a',
|
|
1540
1557
|
apply: 'Aplicar',
|
|
1541
1558
|
cancel: 'Cancelar',
|
|
1542
|
-
rangeLabel: '
|
|
1559
|
+
rangeLabel: 'Período',
|
|
1543
1560
|
allTime: 'por todo el tiempo',
|
|
1544
1561
|
currentQuarter: 'por el trimestre actual',
|
|
1545
|
-
currentYear: 'por el año actual'
|
|
1562
|
+
currentYear: 'por el año actual',
|
|
1563
|
+
allTimeOption: 'Todo el tiempo',
|
|
1564
|
+
currentQuarterOption: 'Trimestre actual',
|
|
1565
|
+
currentYearOption: 'Año actual'
|
|
1546
1566
|
},
|
|
1547
1567
|
durationTemplate: {
|
|
1548
1568
|
title: {
|
|
@@ -1584,31 +1604,31 @@ const esLALocaleData = {
|
|
|
1584
1604
|
LAST_PART_SEPARATOR: '',
|
|
1585
1605
|
YEARS: `{years, plural,
|
|
1586
1606
|
one {# año}
|
|
1587
|
-
other {
|
|
1607
|
+
other {Últimos # años}
|
|
1588
1608
|
}`,
|
|
1589
1609
|
MONTHS: `{months, plural,
|
|
1590
|
-
one {
|
|
1591
|
-
other {
|
|
1610
|
+
one {Último mes}
|
|
1611
|
+
other {Últimos # meses}
|
|
1592
1612
|
}`,
|
|
1593
1613
|
WEEKS: `{weeks, plural,
|
|
1594
|
-
one {
|
|
1595
|
-
other {
|
|
1614
|
+
one {Última semana}
|
|
1615
|
+
other {Últimas # semanas}
|
|
1596
1616
|
}`,
|
|
1597
1617
|
DAYS: `{days, plural,
|
|
1598
|
-
one {
|
|
1599
|
-
other {
|
|
1618
|
+
one {Último día}
|
|
1619
|
+
other {Últimos # días}
|
|
1600
1620
|
}`,
|
|
1601
1621
|
HOURS: `{hours, plural,
|
|
1602
|
-
one {
|
|
1603
|
-
other {
|
|
1622
|
+
one {Última hora}
|
|
1623
|
+
other {Últimas # horas}
|
|
1604
1624
|
}`,
|
|
1605
1625
|
MINUTES: `{minutes, plural,
|
|
1606
|
-
one {
|
|
1607
|
-
other {
|
|
1626
|
+
one {Último minuto}
|
|
1627
|
+
other {Últimos # minutos}
|
|
1608
1628
|
}`,
|
|
1609
1629
|
SECONDS: `{seconds, plural,
|
|
1610
|
-
one {
|
|
1611
|
-
other {
|
|
1630
|
+
one {Último segundo}
|
|
1631
|
+
other {Últimos # segundos}
|
|
1612
1632
|
}`,
|
|
1613
1633
|
YEARS_FRACTION: `{years} años`,
|
|
1614
1634
|
MONTHS_FRACTION: `{months} meses`
|
|
@@ -1622,7 +1642,8 @@ const esLALocaleData = {
|
|
|
1622
1642
|
showPopUpNotifications: 'Mostrar notificaciones emergentes',
|
|
1623
1643
|
noNotifications: 'Sin notificaciones',
|
|
1624
1644
|
failedToLoadNotifications: 'Error al cargar las notificaciones',
|
|
1625
|
-
repeat: 'Repetir'
|
|
1645
|
+
repeat: 'Repetir',
|
|
1646
|
+
loadingMore: 'Cargando más notificaciones'
|
|
1626
1647
|
}
|
|
1627
1648
|
};
|
|
1628
1649
|
|
|
@@ -1697,10 +1718,16 @@ const ptBRLocaleData = {
|
|
|
1697
1718
|
error: 'A busca com esse nome já existe',
|
|
1698
1719
|
errorHint: 'O filtro não pôde ser salvo. Tente de novo ou entre em contato com o administrador.',
|
|
1699
1720
|
saveButton: 'Salvar',
|
|
1700
|
-
cancelButton: 'Cancelar'
|
|
1721
|
+
cancelButton: 'Cancelar',
|
|
1722
|
+
actionsTooltip: 'Ações do filtro'
|
|
1701
1723
|
},
|
|
1702
1724
|
add: {
|
|
1703
|
-
tooltip: 'Adicionar filtros'
|
|
1725
|
+
tooltip: 'Adicionar filtros',
|
|
1726
|
+
addedAnnouncement: 'Filtro {{ name }} adicionado'
|
|
1727
|
+
},
|
|
1728
|
+
refresher: {
|
|
1729
|
+
refresh: 'Atualizar',
|
|
1730
|
+
settings: 'Configurações de atualização'
|
|
1704
1731
|
},
|
|
1705
1732
|
pipe: {
|
|
1706
1733
|
clearButtonTooltip: 'Apagar',
|
|
@@ -1754,10 +1781,13 @@ const ptBRLocaleData = {
|
|
|
1754
1781
|
to: 'até',
|
|
1755
1782
|
apply: 'Aplicar',
|
|
1756
1783
|
cancel: 'Cancelar',
|
|
1757
|
-
rangeLabel: '
|
|
1784
|
+
rangeLabel: 'Período',
|
|
1758
1785
|
allTime: 'por todo o tempo',
|
|
1759
1786
|
currentQuarter: 'pelo trimestre atual',
|
|
1760
|
-
currentYear: 'pelo ano atual'
|
|
1787
|
+
currentYear: 'pelo ano atual',
|
|
1788
|
+
allTimeOption: 'Todo o tempo',
|
|
1789
|
+
currentQuarterOption: 'Trimestre atual',
|
|
1790
|
+
currentYearOption: 'Ano atual'
|
|
1761
1791
|
},
|
|
1762
1792
|
durationTemplate: {
|
|
1763
1793
|
title: {
|
|
@@ -1799,31 +1829,31 @@ const ptBRLocaleData = {
|
|
|
1799
1829
|
LAST_PART_SEPARATOR: '',
|
|
1800
1830
|
YEARS: `{years, plural,
|
|
1801
1831
|
one {# ano}
|
|
1802
|
-
other {
|
|
1832
|
+
other {Últimos # anos}
|
|
1803
1833
|
}`,
|
|
1804
1834
|
MONTHS: `{months, plural,
|
|
1805
|
-
one {
|
|
1806
|
-
other {
|
|
1835
|
+
one {Último mês}
|
|
1836
|
+
other {Últimos # meses}
|
|
1807
1837
|
}`,
|
|
1808
1838
|
WEEKS: `{weeks, plural,
|
|
1809
|
-
one {
|
|
1810
|
-
other {
|
|
1839
|
+
one {Última semana}
|
|
1840
|
+
other {Últimas # semanas}
|
|
1811
1841
|
}`,
|
|
1812
1842
|
DAYS: `{days, plural,
|
|
1813
|
-
one {
|
|
1814
|
-
other {
|
|
1843
|
+
one {Último dia}
|
|
1844
|
+
other {Últimos # dias}
|
|
1815
1845
|
}`,
|
|
1816
1846
|
HOURS: `{hours, plural,
|
|
1817
|
-
one {
|
|
1818
|
-
other {
|
|
1847
|
+
one {Última hora}
|
|
1848
|
+
other {Últimas # horas}
|
|
1819
1849
|
}`,
|
|
1820
1850
|
MINUTES: `{minutes, plural,
|
|
1821
|
-
one {
|
|
1822
|
-
other {
|
|
1851
|
+
one {Último minuto}
|
|
1852
|
+
other {Últimos # minutos}
|
|
1823
1853
|
}`,
|
|
1824
1854
|
SECONDS: `{seconds, plural,
|
|
1825
|
-
one {
|
|
1826
|
-
other {
|
|
1855
|
+
one {Último segundo}
|
|
1856
|
+
other {Últimos # segundos}
|
|
1827
1857
|
}`,
|
|
1828
1858
|
YEARS_FRACTION: `{years} anos`,
|
|
1829
1859
|
MONTHS_FRACTION: `{months} meses`
|
|
@@ -1837,7 +1867,8 @@ const ptBRLocaleData = {
|
|
|
1837
1867
|
showPopUpNotifications: 'Mostrar notificações pop-up',
|
|
1838
1868
|
noNotifications: 'Sem notificações',
|
|
1839
1869
|
failedToLoadNotifications: 'Falha ao carregar notificações',
|
|
1840
|
-
repeat: 'Repetir'
|
|
1870
|
+
repeat: 'Repetir',
|
|
1871
|
+
loadingMore: 'Carregando mais notificações'
|
|
1841
1872
|
}
|
|
1842
1873
|
};
|
|
1843
1874
|
|
|
@@ -1913,10 +1944,16 @@ const ruRULocaleData = {
|
|
|
1913
1944
|
error: 'Поиск с таким названием уже существует',
|
|
1914
1945
|
errorHint: 'Не удалось сохранить фильтр. Попробуйте снова или сообщите администратору.',
|
|
1915
1946
|
saveButton: 'Сохранить',
|
|
1916
|
-
cancelButton: 'Отмена'
|
|
1947
|
+
cancelButton: 'Отмена',
|
|
1948
|
+
actionsTooltip: 'Действия с фильтром'
|
|
1917
1949
|
},
|
|
1918
1950
|
add: {
|
|
1919
|
-
tooltip: 'Добавить фильтр'
|
|
1951
|
+
tooltip: 'Добавить фильтр',
|
|
1952
|
+
addedAnnouncement: 'Фильтр {{ name }} добавлен'
|
|
1953
|
+
},
|
|
1954
|
+
refresher: {
|
|
1955
|
+
refresh: 'Обновить',
|
|
1956
|
+
settings: 'Настройки обновления'
|
|
1920
1957
|
},
|
|
1921
1958
|
pipe: {
|
|
1922
1959
|
clearButtonTooltip: 'Очистить',
|
|
@@ -1970,10 +2007,13 @@ const ruRULocaleData = {
|
|
|
1970
2007
|
to: 'по',
|
|
1971
2008
|
apply: 'Применить',
|
|
1972
2009
|
cancel: 'Отмена',
|
|
1973
|
-
rangeLabel: '
|
|
2010
|
+
rangeLabel: 'Период',
|
|
1974
2011
|
allTime: 'за все время',
|
|
1975
2012
|
currentQuarter: 'за текущий квартал',
|
|
1976
|
-
currentYear: 'за текущий год'
|
|
2013
|
+
currentYear: 'за текущий год',
|
|
2014
|
+
allTimeOption: 'Все время',
|
|
2015
|
+
currentQuarterOption: 'Текущий квартал',
|
|
2016
|
+
currentYearOption: 'Текущий год'
|
|
1977
2017
|
},
|
|
1978
2018
|
durationTemplate: {
|
|
1979
2019
|
title: {
|
|
@@ -1981,7 +2021,7 @@ const ruRULocaleData = {
|
|
|
1981
2021
|
LAST_PART_SEPARATOR: 'и',
|
|
1982
2022
|
YEARS: `{years, plural,
|
|
1983
2023
|
one {# год}
|
|
1984
|
-
few {последние #
|
|
2024
|
+
few {последние # года}
|
|
1985
2025
|
other {последние # лет}
|
|
1986
2026
|
}`,
|
|
1987
2027
|
MONTHS: `{months, plural,
|
|
@@ -2021,39 +2061,39 @@ const ruRULocaleData = {
|
|
|
2021
2061
|
SEPARATOR: ' ',
|
|
2022
2062
|
LAST_PART_SEPARATOR: 'и',
|
|
2023
2063
|
YEARS: `{years, plural,
|
|
2024
|
-
one {
|
|
2025
|
-
few {
|
|
2026
|
-
other {
|
|
2064
|
+
one {Последний год}
|
|
2065
|
+
few {Последние # года}
|
|
2066
|
+
other {Последние # лет}
|
|
2027
2067
|
}`,
|
|
2028
2068
|
MONTHS: `{months, plural,
|
|
2029
|
-
one {
|
|
2030
|
-
few {
|
|
2031
|
-
other {
|
|
2069
|
+
one {Последний месяц}
|
|
2070
|
+
few {Последние # месяца}
|
|
2071
|
+
other {Последние # месяцев}
|
|
2032
2072
|
}`,
|
|
2033
2073
|
WEEKS: `{weeks, plural,
|
|
2034
|
-
one {
|
|
2035
|
-
few {
|
|
2036
|
-
other {
|
|
2074
|
+
one {Последняя неделя}
|
|
2075
|
+
few {Последние # недели}
|
|
2076
|
+
other {Последние # недель}
|
|
2037
2077
|
}`,
|
|
2038
2078
|
DAYS: `{days, plural,
|
|
2039
|
-
one {
|
|
2040
|
-
few {
|
|
2041
|
-
other {
|
|
2079
|
+
one {Последний день}
|
|
2080
|
+
few {Последние # дня}
|
|
2081
|
+
other {Последние # дней}
|
|
2042
2082
|
}`,
|
|
2043
2083
|
HOURS: `{hours, plural,
|
|
2044
|
-
one {
|
|
2045
|
-
few {
|
|
2046
|
-
other {
|
|
2084
|
+
one {Последний час}
|
|
2085
|
+
few {Последние # часа}
|
|
2086
|
+
other {Последние # часов}
|
|
2047
2087
|
}`,
|
|
2048
2088
|
MINUTES: `{minutes, plural,
|
|
2049
|
-
one {
|
|
2050
|
-
few {
|
|
2051
|
-
other {
|
|
2089
|
+
one {Последняя минута}
|
|
2090
|
+
few {Последние # минуты}
|
|
2091
|
+
other {Последние # минут}
|
|
2052
2092
|
}`,
|
|
2053
2093
|
SECONDS: `{seconds, plural,
|
|
2054
|
-
one {
|
|
2055
|
-
few {
|
|
2056
|
-
other {
|
|
2094
|
+
one {Последняя секунда}
|
|
2095
|
+
few {Последние # секунды}
|
|
2096
|
+
other {Последние # секунд}
|
|
2057
2097
|
}`,
|
|
2058
2098
|
YEARS_FRACTION: `{years} лет`,
|
|
2059
2099
|
MONTHS_FRACTION: `{months} месяцев`
|
|
@@ -2067,7 +2107,8 @@ const ruRULocaleData = {
|
|
|
2067
2107
|
showPopUpNotifications: 'Показывать всплывающие уведомления',
|
|
2068
2108
|
noNotifications: 'Нет уведомлений',
|
|
2069
2109
|
failedToLoadNotifications: 'Не удалось загрузить уведомления',
|
|
2070
|
-
repeat: 'Повторить'
|
|
2110
|
+
repeat: 'Повторить',
|
|
2111
|
+
loadingMore: 'Загрузка уведомлений'
|
|
2071
2112
|
}
|
|
2072
2113
|
};
|
|
2073
2114
|
|
|
@@ -2143,10 +2184,16 @@ const tkTMLocaleData = {
|
|
|
2143
2184
|
error: 'Şeýle atly gözleg eýýäm bar',
|
|
2144
2185
|
errorHint: 'Filtri ýazdyryp bolmady. Täzeden synanyň ýa-da administratora ýüz tutuň.',
|
|
2145
2186
|
saveButton: 'Ýazdyr',
|
|
2146
|
-
cancelButton: 'Ýatyr'
|
|
2187
|
+
cancelButton: 'Ýatyr',
|
|
2188
|
+
actionsTooltip: 'Filtr amallary'
|
|
2147
2189
|
},
|
|
2148
2190
|
add: {
|
|
2149
|
-
tooltip: 'Filtr goş'
|
|
2191
|
+
tooltip: 'Filtr goş',
|
|
2192
|
+
addedAnnouncement: '{{ name }} filtri goşuldy'
|
|
2193
|
+
},
|
|
2194
|
+
refresher: {
|
|
2195
|
+
refresh: 'Täzele',
|
|
2196
|
+
settings: 'Täzeleme sazlamalary'
|
|
2150
2197
|
},
|
|
2151
2198
|
pipe: {
|
|
2152
2199
|
clearButtonTooltip: 'Arassala',
|
|
@@ -2200,10 +2247,13 @@ const tkTMLocaleData = {
|
|
|
2200
2247
|
to: 'şuňa',
|
|
2201
2248
|
apply: 'Ulanmak',
|
|
2202
2249
|
cancel: 'Ýatyrmak',
|
|
2203
|
-
rangeLabel: '
|
|
2250
|
+
rangeLabel: 'Döwür',
|
|
2204
2251
|
allTime: 'hemme döwür üçin',
|
|
2205
2252
|
currentQuarter: 'şu çärýek üçin',
|
|
2206
|
-
currentYear: 'şu ýyl üçin'
|
|
2253
|
+
currentYear: 'şu ýyl üçin',
|
|
2254
|
+
allTimeOption: 'Hemme döwür',
|
|
2255
|
+
currentQuarterOption: 'Şu çärýek',
|
|
2256
|
+
currentYearOption: 'Şu ýyl'
|
|
2207
2257
|
},
|
|
2208
2258
|
durationTemplate: {
|
|
2209
2259
|
title: {
|
|
@@ -2248,27 +2298,27 @@ const tkTMLocaleData = {
|
|
|
2248
2298
|
other {# ýyl}
|
|
2249
2299
|
}`,
|
|
2250
2300
|
MONTHS: `{months, plural,
|
|
2251
|
-
one {
|
|
2301
|
+
one {Aý}
|
|
2252
2302
|
other {# aý}
|
|
2253
2303
|
}`,
|
|
2254
2304
|
WEEKS: `{weeks, plural,
|
|
2255
|
-
one {
|
|
2305
|
+
one {Hepde}
|
|
2256
2306
|
other {# hepde}
|
|
2257
2307
|
}`,
|
|
2258
2308
|
DAYS: `{days, plural,
|
|
2259
|
-
one {
|
|
2309
|
+
one {Gün}
|
|
2260
2310
|
other {# gün}
|
|
2261
2311
|
}`,
|
|
2262
2312
|
HOURS: `{hours, plural,
|
|
2263
|
-
one {
|
|
2313
|
+
one {Sagat}
|
|
2264
2314
|
other {# sagat}
|
|
2265
2315
|
}`,
|
|
2266
2316
|
MINUTES: `{minutes, plural,
|
|
2267
|
-
one {
|
|
2317
|
+
one {Minut}
|
|
2268
2318
|
other {# minut}
|
|
2269
2319
|
}`,
|
|
2270
2320
|
SECONDS: `{seconds, plural,
|
|
2271
|
-
one {
|
|
2321
|
+
one {Sekunt}
|
|
2272
2322
|
other {# sekunt}
|
|
2273
2323
|
}`,
|
|
2274
2324
|
YEARS_FRACTION: `{years} ýyl`,
|
|
@@ -2283,7 +2333,8 @@ const tkTMLocaleData = {
|
|
|
2283
2333
|
showPopUpNotifications: 'Açylýan bildirişleri görkeziň',
|
|
2284
2334
|
noNotifications: 'Duýduryş ýok',
|
|
2285
2335
|
failedToLoadNotifications: 'Duýduryşlary ýükläp bilmedi',
|
|
2286
|
-
repeat: 'Gaýtalama'
|
|
2336
|
+
repeat: 'Gaýtalama',
|
|
2337
|
+
loadingMore: 'Duýduryşlar ýüklenýär'
|
|
2287
2338
|
}
|
|
2288
2339
|
};
|
|
2289
2340
|
|
|
@@ -4592,6 +4643,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
4592
4643
|
}]
|
|
4593
4644
|
}] });
|
|
4594
4645
|
|
|
4646
|
+
/**
|
|
4647
|
+
* Canonical "select all / deselect all" toggle shared by the multi-select components (`Ctrl`/`Cmd` + `A`).
|
|
4648
|
+
*
|
|
4649
|
+
* Considers only selectable items and selects them all. When `allowDeselect` is `true` and every selectable
|
|
4650
|
+
* item is already selected, deselects them all instead; otherwise a repeated call is a no-op. No-op when
|
|
4651
|
+
* there are no selectable items.
|
|
4652
|
+
*
|
|
4653
|
+
* @returns the items whose selected state actually flipped, in input order.
|
|
4654
|
+
*/
|
|
4655
|
+
function toggleSelectAll(adapter, options) {
|
|
4656
|
+
const selectable = adapter.items.filter((item) => adapter.isSelectable(item));
|
|
4657
|
+
if (selectable.length === 0) {
|
|
4658
|
+
return [];
|
|
4659
|
+
}
|
|
4660
|
+
const shouldSelect = !options?.allowDeselect || selectable.some((item) => !adapter.isSelected(item));
|
|
4661
|
+
const changed = selectable.filter((item) => adapter.isSelected(item) !== shouldSelect);
|
|
4662
|
+
selectable.forEach((item) => adapter.setSelected(item, shouldSelect));
|
|
4663
|
+
return changed;
|
|
4664
|
+
}
|
|
4665
|
+
/** Event emitted by the `onSelectAll` outputs when the select-all toggle runs. */
|
|
4666
|
+
class KbqSelectAllEvent {
|
|
4667
|
+
constructor(
|
|
4668
|
+
/** Component that emitted the event. */
|
|
4669
|
+
source,
|
|
4670
|
+
/** The selectable options affected by the toggle. */
|
|
4671
|
+
options,
|
|
4672
|
+
/** `true` when all options were selected, `false` when all were deselected. */
|
|
4673
|
+
selected) {
|
|
4674
|
+
this.source = source;
|
|
4675
|
+
this.options = options;
|
|
4676
|
+
this.selected = selected;
|
|
4677
|
+
}
|
|
4678
|
+
}
|
|
4679
|
+
/**
|
|
4680
|
+
* Whether `Ctrl`/`Cmd` + `A` should select the text of a search `<input>` rather than toggle options.
|
|
4681
|
+
*
|
|
4682
|
+
* Returns `true` only when the input has text that is not already fully selected (nothing selected,
|
|
4683
|
+
* a partial selection, or just a caret). Returns `false` for an empty input (so select-all falls
|
|
4684
|
+
* straight through to the options) and when the whole value is already selected (a second press
|
|
4685
|
+
* then acts on the options).
|
|
4686
|
+
*/
|
|
4687
|
+
function shouldSelectSearchText(input) {
|
|
4688
|
+
if (!input) {
|
|
4689
|
+
return false;
|
|
4690
|
+
}
|
|
4691
|
+
const length = input.value.length;
|
|
4692
|
+
if (length === 0) {
|
|
4693
|
+
return false;
|
|
4694
|
+
}
|
|
4695
|
+
return !(input.selectionStart === 0 && input.selectionEnd === length);
|
|
4696
|
+
}
|
|
4697
|
+
|
|
4595
4698
|
const KBQ_TITLE_TEXT_REF = new InjectionToken('KbqTitleTextRef');
|
|
4596
4699
|
|
|
4597
4700
|
/**
|
|
@@ -4747,11 +4850,7 @@ class KbqOption extends KbqOptionBase {
|
|
|
4747
4850
|
}
|
|
4748
4851
|
/** @docs-private */
|
|
4749
4852
|
getHeight() {
|
|
4750
|
-
|
|
4751
|
-
// For SSR compatibility
|
|
4752
|
-
if (typeof element.getClientRects !== 'function')
|
|
4753
|
-
return 0;
|
|
4754
|
-
return element.getClientRects()[0]?.height ?? 0;
|
|
4853
|
+
return this.elementRef.nativeElement.getClientRects()[0]?.height ?? 0;
|
|
4755
4854
|
}
|
|
4756
4855
|
select(emitEvent = true) {
|
|
4757
4856
|
if (!this._selected) {
|
|
@@ -5335,6 +5434,143 @@ function objectValues(object) {
|
|
|
5335
5434
|
return object === null ? [] : baseValues(object, Object.keys(object));
|
|
5336
5435
|
}
|
|
5337
5436
|
|
|
5437
|
+
/**
|
|
5438
|
+
* Element used by {@link KbqShadowDomOverlayContainer} to locate the shadow root that should host overlays.
|
|
5439
|
+
*
|
|
5440
|
+
* When not provided, the container falls back to the application root component element.
|
|
5441
|
+
*/
|
|
5442
|
+
const KBQ_SHADOW_DOM_OVERLAY_HOST = new InjectionToken('KBQ_SHADOW_DOM_OVERLAY_HOST');
|
|
5443
|
+
/** Marks the structural overlay stylesheet that {@link KbqShadowDomOverlayContainer} clones into a shadow root. */
|
|
5444
|
+
const overlayStructuralStylesAttribute = 'data-kbq-overlay-structural-styles';
|
|
5445
|
+
/**
|
|
5446
|
+
* `OverlayContainer` that places the `.cdk-overlay-container` inside a shadow root instead of `document.body`.
|
|
5447
|
+
*
|
|
5448
|
+
* The default CDK `OverlayContainer` always appends its container to `document.body`. When the application is
|
|
5449
|
+
* rendered inside a shadow root (e.g. a Module Federation micro-frontend), overlays — toasts, modals, dropdowns,
|
|
5450
|
+
* tooltips, etc. — escape the shadow tree into the light DOM. There they lose access to the styles and theme tokens
|
|
5451
|
+
* scoped to the shadow root (Koobiq theme tokens are defined on the `.kbq-light` / `.kbq-dark` ancestor), which
|
|
5452
|
+
* results in unstyled overlays.
|
|
5453
|
+
*
|
|
5454
|
+
* This container resolves the target shadow root from {@link KBQ_SHADOW_DOM_OVERLAY_HOST} (or the root component when
|
|
5455
|
+
* the token is absent) and relocates the overlay container into it. After relocating, it also clones CDK's own
|
|
5456
|
+
* structural overlay stylesheet (`position`/`z-index`/backdrop, `.cdk-overlay-container:empty`) into the shadow root,
|
|
5457
|
+
* since those `document.head` styles do not cross the shadow boundary. If no shadow root is found — the common case
|
|
5458
|
+
* for an app rendered directly in the light DOM — the container is left on `document.body`, so it is safe to provide
|
|
5459
|
+
* unconditionally.
|
|
5460
|
+
*
|
|
5461
|
+
* Only **open** shadow roots can be resolved: a closed shadow root exposes neither `Element.shadowRoot` nor a
|
|
5462
|
+
* `ShadowRoot` from `getRootNode()`, so pass an element that already lives inside the closed tree if you must use one.
|
|
5463
|
+
*
|
|
5464
|
+
* Note: this fixes the overlay container *placement* and delivers the CDK structural overlay styles. The host
|
|
5465
|
+
* application is still responsible for delivering the **Koobiq component/theme styles** (the `.kbq-light` / `.kbq-dark`
|
|
5466
|
+
* tokens and component CSS) into the shadow root, since global `document.head` stylesheets do not cascade across a
|
|
5467
|
+
* shadow boundary.
|
|
5468
|
+
*
|
|
5469
|
+
* @see kbqShadowDomOverlayProvider
|
|
5470
|
+
*/
|
|
5471
|
+
class KbqShadowDomOverlayContainer extends OverlayContainer {
|
|
5472
|
+
constructor() {
|
|
5473
|
+
super(...arguments);
|
|
5474
|
+
this.host = inject(KBQ_SHADOW_DOM_OVERLAY_HOST, { optional: true });
|
|
5475
|
+
this.applicationRef = inject(ApplicationRef);
|
|
5476
|
+
}
|
|
5477
|
+
/** @internal CDK lifecycle hook — overridden to relocate the container into a shadow root. */
|
|
5478
|
+
_createContainer() {
|
|
5479
|
+
// Let CDK create the container (and run its test-environment cleanup). It is appended to `document.body`.
|
|
5480
|
+
super._createContainer();
|
|
5481
|
+
const shadowRoot = this.resolveShadowRoot();
|
|
5482
|
+
if (shadowRoot) {
|
|
5483
|
+
// Relocate the container into the shadow root and deliver the structural overlay styles alongside it.
|
|
5484
|
+
shadowRoot.appendChild(this._containerElement);
|
|
5485
|
+
this.deliverStructuralStyles(shadowRoot);
|
|
5486
|
+
}
|
|
5487
|
+
else if (this.host != null) {
|
|
5488
|
+
// An explicit host was provided but did not resolve to an open shadow root (wrong element, a closed
|
|
5489
|
+
// shadow root, or an element not yet inside a shadow tree). The container stays on `document.body`, so
|
|
5490
|
+
// overlays would render unstyled — warn instead of failing silently.
|
|
5491
|
+
// eslint-disable-next-line no-console
|
|
5492
|
+
console.warn('[KbqShadowDomOverlayContainer] The provided host did not resolve to an open shadow root; the ' +
|
|
5493
|
+
'overlay container stays on document.body. Ensure the host element (or an element inside its ' +
|
|
5494
|
+
'shadow tree) uses an open shadow root.');
|
|
5495
|
+
}
|
|
5496
|
+
}
|
|
5497
|
+
/**
|
|
5498
|
+
* Clones CDK's structural overlay stylesheet into the shadow root.
|
|
5499
|
+
*
|
|
5500
|
+
* CDK ships the overlay's structural CSS as a `ViewEncapsulation.None` component, so Angular injects it as a
|
|
5501
|
+
* `<style>` in `document.head` synchronously — `OverlayContainer.getContainerElement()` loads it before
|
|
5502
|
+
* `_createContainer()` runs. Those rules do not cross the shadow boundary, so a relocated container would
|
|
5503
|
+
* otherwise be unpositioned. Cloning the already-injected stylesheet keeps it version-matched to the installed
|
|
5504
|
+
* `@angular/cdk` and is idempotent.
|
|
5505
|
+
*/
|
|
5506
|
+
deliverStructuralStyles(shadowRoot) {
|
|
5507
|
+
if (shadowRoot.querySelector(`style[${overlayStructuralStylesAttribute}]`)) {
|
|
5508
|
+
return;
|
|
5509
|
+
}
|
|
5510
|
+
const sourceStyle = Array.from(this._document.head.querySelectorAll('style')).find((style) => style.textContent?.includes('.cdk-overlay-pane'));
|
|
5511
|
+
if (sourceStyle) {
|
|
5512
|
+
const clone = sourceStyle.cloneNode(true);
|
|
5513
|
+
clone.setAttribute(overlayStructuralStylesAttribute, '');
|
|
5514
|
+
shadowRoot.appendChild(clone);
|
|
5515
|
+
}
|
|
5516
|
+
}
|
|
5517
|
+
resolveShadowRoot() {
|
|
5518
|
+
const element = this.resolveHostElement();
|
|
5519
|
+
if (!element) {
|
|
5520
|
+
return null;
|
|
5521
|
+
}
|
|
5522
|
+
// The host can be the shadow host itself (the common case — the MFE root element)...
|
|
5523
|
+
const ownShadowRoot = element.shadowRoot;
|
|
5524
|
+
if (ownShadowRoot) {
|
|
5525
|
+
return ownShadowRoot;
|
|
5526
|
+
}
|
|
5527
|
+
// ...or an element that already lives inside the shadow tree.
|
|
5528
|
+
const rootNode = element.getRootNode();
|
|
5529
|
+
return typeof ShadowRoot !== 'undefined' && rootNode instanceof ShadowRoot ? rootNode : null;
|
|
5530
|
+
}
|
|
5531
|
+
resolveHostElement() {
|
|
5532
|
+
if (this.host) {
|
|
5533
|
+
const resolved = typeof this.host === 'function' ? this.host() : this.host;
|
|
5534
|
+
if (resolved instanceof ElementRef) {
|
|
5535
|
+
return resolved.nativeElement;
|
|
5536
|
+
}
|
|
5537
|
+
return resolved ?? null;
|
|
5538
|
+
}
|
|
5539
|
+
// No explicit host provided — fall back to the application root component element.
|
|
5540
|
+
return this.applicationRef.components[0]?.location.nativeElement ?? null;
|
|
5541
|
+
}
|
|
5542
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqShadowDomOverlayContainer, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5543
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqShadowDomOverlayContainer }); }
|
|
5544
|
+
}
|
|
5545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqShadowDomOverlayContainer, decorators: [{
|
|
5546
|
+
type: Injectable
|
|
5547
|
+
}] });
|
|
5548
|
+
/**
|
|
5549
|
+
* Providers that route all CDK overlays into a shadow root via {@link KbqShadowDomOverlayContainer}.
|
|
5550
|
+
*
|
|
5551
|
+
* Add it to the bootstrap providers of an application rendered inside a shadow root:
|
|
5552
|
+
*
|
|
5553
|
+
* ```ts
|
|
5554
|
+
* bootstrapApplication(AppComponent, {
|
|
5555
|
+
* providers: kbqShadowDomOverlayProvider(() => document.querySelector('my-mfe-root')!)
|
|
5556
|
+
* });
|
|
5557
|
+
* ```
|
|
5558
|
+
*
|
|
5559
|
+
* The provider replaces the global `OverlayContainer` token, so it cannot be combined with another custom
|
|
5560
|
+
* `OverlayContainer` (e.g. CDK's `FullscreenOverlayContainer`) — the last provider wins. Apps that need both must
|
|
5561
|
+
* subclass `KbqShadowDomOverlayContainer`.
|
|
5562
|
+
*
|
|
5563
|
+
* @param host element (or getter / `ElementRef`) inside the target shadow tree. When omitted, the application root
|
|
5564
|
+
* component element is used to resolve the shadow root.
|
|
5565
|
+
*/
|
|
5566
|
+
const kbqShadowDomOverlayProvider = (host) => {
|
|
5567
|
+
const providers = [{ provide: OverlayContainer, useClass: KbqShadowDomOverlayContainer }];
|
|
5568
|
+
if (host !== undefined) {
|
|
5569
|
+
providers.push({ provide: KBQ_SHADOW_DOM_OVERLAY_HOST, useValue: host });
|
|
5570
|
+
}
|
|
5571
|
+
return providers;
|
|
5572
|
+
};
|
|
5573
|
+
|
|
5338
5574
|
/**
|
|
5339
5575
|
* InjectionToken for providing component with popup. Used in select and tree-select for tooltip.
|
|
5340
5576
|
*/
|
|
@@ -5601,42 +5837,91 @@ const getOffset = ({ originX, overlayX, originY, overlayY }, { width, height })
|
|
|
5601
5837
|
}
|
|
5602
5838
|
return offset;
|
|
5603
5839
|
};
|
|
5840
|
+
/**
|
|
5841
|
+
* Abstract base directive for hover/focus/click-triggered pop-ups (e.g. tooltip and popover). It manages the
|
|
5842
|
+
* CDK overlay lifecycle, binds the trigger event listeners, resolves placement via a flexible connected position
|
|
5843
|
+
* strategy, and controls show/hide timing. Concrete subclasses supply the pop-up component type, its content,
|
|
5844
|
+
* and the overlay configuration.
|
|
5845
|
+
*/
|
|
5604
5846
|
class KbqPopUpTrigger {
|
|
5605
5847
|
constructor() {
|
|
5606
|
-
/** Stream that emits when the popupTrigger is hovered.
|
|
5848
|
+
/** Stream that emits when the popupTrigger is hovered.
|
|
5849
|
+
* @docs-private */
|
|
5607
5850
|
this.hovered = new BehaviorSubject(false);
|
|
5851
|
+
/** RxJS scheduler that drives the hide timeout; `undefined` falls back to the default async scheduler.
|
|
5852
|
+
* @docs-private */
|
|
5608
5853
|
this.scheduler = inject(AsyncScheduler, { optional: true }) || undefined;
|
|
5854
|
+
/** CDK Overlay service used to create and position the pop-up overlay.
|
|
5855
|
+
* @docs-private */
|
|
5609
5856
|
this.overlay = inject(Overlay);
|
|
5857
|
+
/** Reference to the host element the pop-up is anchored to.
|
|
5858
|
+
* @docs-private */
|
|
5610
5859
|
this.elementRef = inject(ElementRef);
|
|
5860
|
+
/** Angular zone, used to run the hide timer outside Angular and re-enter when hiding.
|
|
5861
|
+
* @docs-private */
|
|
5611
5862
|
this.ngZone = inject(NgZone);
|
|
5863
|
+
/** CDK ScrollDispatcher, used to track ancestor scroll containers so the pop-up repositions on scroll.
|
|
5864
|
+
* @docs-private */
|
|
5612
5865
|
this.scrollDispatcher = inject(ScrollDispatcher);
|
|
5866
|
+
/** CDK ViewportRuler, used to re-apply the stick-to-window position on window resize.
|
|
5867
|
+
* @docs-private */
|
|
5868
|
+
this.viewportRuler = inject(ViewportRuler);
|
|
5869
|
+
/** View container the pop-up component portal is attached to.
|
|
5870
|
+
* @docs-private */
|
|
5613
5871
|
this.hostView = inject(ViewContainerRef);
|
|
5872
|
+
/** Text direction (LTR/RTL) applied to the overlay when a `Directionality` is available.
|
|
5873
|
+
* @docs-private */
|
|
5614
5874
|
this.direction = inject(Directionality, { optional: true });
|
|
5875
|
+
/** Destroy reference used to auto-unsubscribe streams when the directive is destroyed.
|
|
5876
|
+
* @docs-private */
|
|
5615
5877
|
this.destroyRef = inject(DestroyRef);
|
|
5878
|
+
/** Nearest `CdkScrollable` ancestor, if any.
|
|
5879
|
+
* @docs-private */
|
|
5616
5880
|
this.scrollable = inject(CdkScrollable, { optional: true });
|
|
5881
|
+
/** Change detector used to refresh the trigger when its open state changes. */
|
|
5617
5882
|
this.popUpChangeDetectorRef = inject(ChangeDetectorRef);
|
|
5883
|
+
/** Backing field for `isOpen`. */
|
|
5618
5884
|
this._isOpen = false;
|
|
5885
|
+
/** Delay in milliseconds before the pop-up is shown.
|
|
5886
|
+
* @docs-private */
|
|
5619
5887
|
this.enterDelay = 0;
|
|
5888
|
+
/** Delay in milliseconds before the pop-up is hidden.
|
|
5889
|
+
* @docs-private */
|
|
5620
5890
|
this.leaveDelay = 0;
|
|
5891
|
+
/** Current resolved placement of the pop-up.
|
|
5892
|
+
* @docs-private */
|
|
5621
5893
|
this.placement = PopUpPlacements.Top;
|
|
5894
|
+
/** Ordered list of fallback placements to try before the default priority.
|
|
5895
|
+
* @docs-private */
|
|
5622
5896
|
this.placementPriority = null;
|
|
5897
|
+
/** Whether the pop-up is currently visible.
|
|
5898
|
+
* @docs-private */
|
|
5623
5899
|
this.visible = false;
|
|
5900
|
+
/** Map of event name to the handler currently bound on the host element.
|
|
5901
|
+
* @docs-private */
|
|
5624
5902
|
this.listeners = new Map();
|
|
5903
|
+
/** Map of placement name to its CDK connected position pair.
|
|
5904
|
+
* @docs-private */
|
|
5625
5905
|
this.availablePositions = POSITION_MAP;
|
|
5626
|
-
/** Hide pop-up with timeout. Need if you want to show pop-up after leaving trigger
|
|
5906
|
+
/** Hide pop-up with timeout. Need if you want to show pop-up after leaving trigger
|
|
5907
|
+
* @docs-private */
|
|
5627
5908
|
this.hideWithTimeout = false;
|
|
5628
|
-
/** prevents closure by any event
|
|
5909
|
+
/** prevents closure by any event
|
|
5910
|
+
* @docs-private */
|
|
5629
5911
|
this.preventClose = false;
|
|
5912
|
+
/** Detaches the overlay (if attached) and clears the current pop-up instance.
|
|
5913
|
+
* @docs-private */
|
|
5630
5914
|
this.detach = () => {
|
|
5631
5915
|
if (this.overlayRef?.hasAttached()) {
|
|
5632
5916
|
this.overlayRef.detach();
|
|
5633
5917
|
}
|
|
5634
5918
|
this.instance = null;
|
|
5635
5919
|
};
|
|
5920
|
+
/** Maps the CDK connection position back to a placement name, emits `placementChange`, and updates classes.
|
|
5921
|
+
* @docs-private */
|
|
5636
5922
|
this.onPositionChange = ($event) => {
|
|
5637
|
-
if (!this.instance)
|
|
5923
|
+
if (!this.instance)
|
|
5638
5924
|
return;
|
|
5639
|
-
}
|
|
5640
5925
|
let newPlacement = this.placement;
|
|
5641
5926
|
const { originX, originY, overlayX, overlayY } = $event.connectionPair;
|
|
5642
5927
|
Object.keys(this.availablePositions).some((key) => {
|
|
@@ -5653,13 +5938,16 @@ class KbqPopUpTrigger {
|
|
|
5653
5938
|
this.updateClassMap(newPlacement);
|
|
5654
5939
|
this.instance.detectChanges();
|
|
5655
5940
|
};
|
|
5941
|
+
/** Binds a single event listener to the pop-up's native element. */
|
|
5656
5942
|
this.addEventListener = (listener, event) => {
|
|
5657
5943
|
this.getNativeElement().addEventListener(event, listener);
|
|
5658
5944
|
};
|
|
5945
|
+
/** Unbinds a single event listener from the pop-up's native element. */
|
|
5659
5946
|
this.removeEventListener = (listener, event) => {
|
|
5660
5947
|
this.getNativeElement().removeEventListener(event, listener);
|
|
5661
5948
|
};
|
|
5662
5949
|
}
|
|
5950
|
+
/** Whether the pop-up overlay is currently open. */
|
|
5663
5951
|
get isOpen() {
|
|
5664
5952
|
return this._isOpen;
|
|
5665
5953
|
}
|
|
@@ -5667,14 +5955,18 @@ class KbqPopUpTrigger {
|
|
|
5667
5955
|
this._isOpen = value;
|
|
5668
5956
|
this.popUpChangeDetectorRef.markForCheck();
|
|
5669
5957
|
}
|
|
5958
|
+
/** Binds the DOM event listeners for the configured triggers. */
|
|
5670
5959
|
ngOnInit() {
|
|
5671
5960
|
this.initListeners();
|
|
5672
5961
|
}
|
|
5962
|
+
/** Disposes the overlay and removes all bound event listeners. */
|
|
5673
5963
|
ngOnDestroy() {
|
|
5674
5964
|
this.overlayRef?.dispose();
|
|
5675
5965
|
this.listeners.forEach(this.removeEventListener);
|
|
5676
5966
|
this.listeners.clear();
|
|
5677
5967
|
}
|
|
5968
|
+
/** Sets the placement (falling back to `Top` on an unknown value) and refreshes the classes and position.
|
|
5969
|
+
* @docs-private */
|
|
5678
5970
|
updatePlacement(value) {
|
|
5679
5971
|
if (POSITION_TO_CSS_MAP[value]) {
|
|
5680
5972
|
this.placement = value;
|
|
@@ -5689,6 +5981,8 @@ class KbqPopUpTrigger {
|
|
|
5689
5981
|
this.updatePosition();
|
|
5690
5982
|
}
|
|
5691
5983
|
}
|
|
5984
|
+
/** Sets the ordered list of fallback placements, or clears it when the value is empty.
|
|
5985
|
+
* @docs-private */
|
|
5692
5986
|
updatePlacementPriority(value) {
|
|
5693
5987
|
if (value && value.length > 0) {
|
|
5694
5988
|
this.placementPriority = value;
|
|
@@ -5697,6 +5991,8 @@ class KbqPopUpTrigger {
|
|
|
5697
5991
|
this.placementPriority = null;
|
|
5698
5992
|
}
|
|
5699
5993
|
}
|
|
5994
|
+
/** Coerces and applies an external visibility value by showing or hiding the pop-up when it changes.
|
|
5995
|
+
* @docs-private */
|
|
5700
5996
|
updateVisible(externalValue) {
|
|
5701
5997
|
const value = coerceBooleanProperty(externalValue);
|
|
5702
5998
|
if (this.visible !== value) {
|
|
@@ -5709,14 +6005,20 @@ class KbqPopUpTrigger {
|
|
|
5709
6005
|
}
|
|
5710
6006
|
}
|
|
5711
6007
|
}
|
|
6008
|
+
/** Closes the pop-up when `Escape` is pressed while it is open. Bound to the host `keydown` event.
|
|
6009
|
+
* @docs-private */
|
|
5712
6010
|
keydownHandler(event) {
|
|
5713
6011
|
if (this.isOpen && event.keyCode === ESCAPE) {
|
|
5714
6012
|
this.hide();
|
|
5715
6013
|
}
|
|
5716
6014
|
}
|
|
6015
|
+
/** Hides the pop-up. Bound to the host `touchend` event.
|
|
6016
|
+
* @docs-private */
|
|
5717
6017
|
touchendHandler() {
|
|
5718
6018
|
this.hide();
|
|
5719
6019
|
}
|
|
6020
|
+
/** Creates the overlay (if needed) and shows the pop-up after `delay` ms, wiring its visibility stream.
|
|
6021
|
+
* @docs-private */
|
|
5720
6022
|
show(delay = this.enterDelay) {
|
|
5721
6023
|
if (this.disabled || this.instance) {
|
|
5722
6024
|
return;
|
|
@@ -5739,6 +6041,14 @@ class KbqPopUpTrigger {
|
|
|
5739
6041
|
});
|
|
5740
6042
|
this.updatePosition();
|
|
5741
6043
|
this.instance.show(delay);
|
|
6044
|
+
// The position strategy re-applies the overlay position on window resize (its ViewportRuler
|
|
6045
|
+
// subscription is created inside OverlayRef.attach(), i.e. before this one), wiping the manual
|
|
6046
|
+
// styles written by setStickPosition. Re-apply them after the strategy has run.
|
|
6047
|
+
// No-op when stickToWindow is not set.
|
|
6048
|
+
this.viewportRuler
|
|
6049
|
+
.change()
|
|
6050
|
+
.pipe(takeUntilDestroyed(this.instance.destroyRef))
|
|
6051
|
+
.subscribe(() => this.instance?.setStickPosition());
|
|
5742
6052
|
if (this.hideWithTimeout && this.trigger.includes(PopUpTriggers.Hover)) {
|
|
5743
6053
|
this.ngZone.runOutsideAngular(() => {
|
|
5744
6054
|
interval(this.leaveDelay, this.scheduler)
|
|
@@ -5747,6 +6057,8 @@ class KbqPopUpTrigger {
|
|
|
5747
6057
|
});
|
|
5748
6058
|
}
|
|
5749
6059
|
}
|
|
6060
|
+
/** Hides the pop-up after `delay` ms, honoring `preventClose` and the hover state on mouseleave.
|
|
6061
|
+
* @docs-private */
|
|
5750
6062
|
hide(delay = this.leaveDelay) {
|
|
5751
6063
|
if (this.preventClose)
|
|
5752
6064
|
return;
|
|
@@ -5755,7 +6067,8 @@ class KbqPopUpTrigger {
|
|
|
5755
6067
|
this.ngZone.run(() => this.instance?.hide(delay));
|
|
5756
6068
|
}
|
|
5757
6069
|
}
|
|
5758
|
-
/** Create the overlay config and position strategy
|
|
6070
|
+
/** Create the overlay config and position strategy
|
|
6071
|
+
* @docs-private */
|
|
5759
6072
|
createOverlay() {
|
|
5760
6073
|
if (this.overlayRef) {
|
|
5761
6074
|
return this.overlayRef;
|
|
@@ -5780,9 +6093,13 @@ class KbqPopUpTrigger {
|
|
|
5780
6093
|
this.overlayRef.detachments().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.detach);
|
|
5781
6094
|
return this.overlayRef;
|
|
5782
6095
|
}
|
|
6096
|
+
/** Resets the overlay position origin back to the host element.
|
|
6097
|
+
* @docs-private */
|
|
5783
6098
|
resetOrigin() {
|
|
5784
6099
|
this.strategy.setOrigin(this.getNativeElement());
|
|
5785
6100
|
}
|
|
6101
|
+
/** Rebinds the host DOM listeners (click/hover/focus/keydown) according to the configured triggers.
|
|
6102
|
+
* @docs-private */
|
|
5786
6103
|
initListeners() {
|
|
5787
6104
|
this.clearListeners();
|
|
5788
6105
|
if (this.trigger.includes(PopUpTriggers.Click)) {
|
|
@@ -5807,13 +6124,16 @@ class KbqPopUpTrigger {
|
|
|
5807
6124
|
}
|
|
5808
6125
|
this.listeners.forEach(this.addEventListener);
|
|
5809
6126
|
}
|
|
6127
|
+
/** Returns the `mouseleave` handler — a delayed hide when `hideWithTimeout` is set, otherwise an immediate hide.
|
|
6128
|
+
* @docs-private */
|
|
5810
6129
|
getMouseLeaveListener() {
|
|
5811
6130
|
if (this.hideWithTimeout) {
|
|
5812
6131
|
return () => setTimeout(() => this.hide(), this.leaveDelay);
|
|
5813
6132
|
}
|
|
5814
6133
|
return this.hide;
|
|
5815
6134
|
}
|
|
5816
|
-
/** Updates the position of the current popover.
|
|
6135
|
+
/** Updates the position of the current popover.
|
|
6136
|
+
* @docs-private */
|
|
5817
6137
|
updatePosition(reapplyPosition = false) {
|
|
5818
6138
|
this.overlayRef = this.createOverlay();
|
|
5819
6139
|
this.subscribeOnClosingActions();
|
|
@@ -5824,21 +6144,24 @@ class KbqPopUpTrigger {
|
|
|
5824
6144
|
setTimeout(() => position.reapplyLastPosition());
|
|
5825
6145
|
}
|
|
5826
6146
|
}
|
|
6147
|
+
/** Moves browser focus to the pop-up's native element.
|
|
6148
|
+
* @docs-private */
|
|
5827
6149
|
focus() {
|
|
5828
6150
|
this.getNativeElement().focus();
|
|
5829
6151
|
}
|
|
5830
|
-
/**
|
|
6152
|
+
/** Returns the element the pop-up is bound to: the external element when set, otherwise the host element.
|
|
6153
|
+
* @docs-private */
|
|
5831
6154
|
getNativeElement() {
|
|
5832
6155
|
return this.externalNativeElement || this.elementRef.nativeElement;
|
|
5833
6156
|
}
|
|
5834
|
-
/**
|
|
6157
|
+
/** Sets an external element to anchor and measure the pop-up against instead of the host element.
|
|
6158
|
+
* @docs-private */
|
|
5835
6159
|
setExternalNativeElement(value) {
|
|
5836
6160
|
this.externalNativeElement = value;
|
|
5837
6161
|
}
|
|
5838
6162
|
/**
|
|
5839
6163
|
* Returns a list of positions that are aligned with the element's dimensions and offsets.
|
|
5840
|
-
* @
|
|
5841
|
-
*/
|
|
6164
|
+
* @docs-private */
|
|
5842
6165
|
getAdjustedPositions() {
|
|
5843
6166
|
const res = [];
|
|
5844
6167
|
for (const pos of this.getPrioritizedPositions()) {
|
|
@@ -5852,6 +6175,8 @@ class KbqPopUpTrigger {
|
|
|
5852
6175
|
}
|
|
5853
6176
|
return res;
|
|
5854
6177
|
}
|
|
6178
|
+
/** Maps a priority placement value (or array of values) to the matching connected position pairs.
|
|
6179
|
+
* @docs-private */
|
|
5855
6180
|
getPriorityPlacementStrategy(value) {
|
|
5856
6181
|
const result = [];
|
|
5857
6182
|
const possiblePositions = Object.keys(this.availablePositions);
|
|
@@ -5867,16 +6192,21 @@ class KbqPopUpTrigger {
|
|
|
5867
6192
|
}
|
|
5868
6193
|
return result;
|
|
5869
6194
|
}
|
|
6195
|
+
/** Returns the positions to try: the custom `placementPriority` when set, otherwise the default strategy.
|
|
6196
|
+
* @docs-private */
|
|
5870
6197
|
getPrioritizedPositions() {
|
|
5871
6198
|
if (this.placementPriority) {
|
|
5872
6199
|
return this.getPriorityPlacementStrategy(this.placementPriority);
|
|
5873
6200
|
}
|
|
5874
6201
|
return POSITION_PRIORITY_STRATEGY[this.placement];
|
|
5875
6202
|
}
|
|
6203
|
+
/** Removes all bound host event listeners and clears the listener map.
|
|
6204
|
+
* @docs-private */
|
|
5876
6205
|
clearListeners() {
|
|
5877
6206
|
this.listeners.forEach(this.removeEventListener);
|
|
5878
6207
|
this.listeners.clear();
|
|
5879
6208
|
}
|
|
6209
|
+
/** Wraps a trigger handler so it records the active trigger name and mouse event before running. */
|
|
5880
6210
|
createListener(name, listener) {
|
|
5881
6211
|
return [
|
|
5882
6212
|
name,
|
|
@@ -5887,11 +6217,13 @@ class KbqPopUpTrigger {
|
|
|
5887
6217
|
}
|
|
5888
6218
|
];
|
|
5889
6219
|
}
|
|
6220
|
+
/** Remembers the last mouse event on `mouseenter`, used for cursor-relative positioning. */
|
|
5890
6221
|
saveMouseEvent(event) {
|
|
5891
6222
|
if (this.triggerName === 'mouseenter') {
|
|
5892
6223
|
this.mouseEvent = event;
|
|
5893
6224
|
}
|
|
5894
6225
|
}
|
|
6226
|
+
/** (Re)subscribes to the closing-action streams and hides the pop-up, ignoring prevented click events. */
|
|
5895
6227
|
subscribeOnClosingActions() {
|
|
5896
6228
|
this.closingActionsSubscription?.unsubscribe();
|
|
5897
6229
|
this.closingActionsSubscription = this.closingActions()
|
|
@@ -6166,6 +6498,7 @@ class KbqMeasureScrollbarService {
|
|
|
6166
6498
|
}
|
|
6167
6499
|
constructor() {
|
|
6168
6500
|
this.document = inject(DOCUMENT);
|
|
6501
|
+
this.platform = inject(Platform);
|
|
6169
6502
|
this.scrollbarMeasure = {
|
|
6170
6503
|
position: 'absolute',
|
|
6171
6504
|
top: '-9999px',
|
|
@@ -6176,6 +6509,10 @@ class KbqMeasureScrollbarService {
|
|
|
6176
6509
|
this.initScrollBarWidth();
|
|
6177
6510
|
}
|
|
6178
6511
|
initScrollBarWidth() {
|
|
6512
|
+
if (!this.platform.isBrowser) {
|
|
6513
|
+
this._scrollBarWidth = 0;
|
|
6514
|
+
return;
|
|
6515
|
+
}
|
|
6179
6516
|
const scrollDiv = this.document.createElement('div');
|
|
6180
6517
|
for (const scrollProp in this.scrollbarMeasure) {
|
|
6181
6518
|
if (this.scrollbarMeasure.hasOwnProperty(scrollProp)) {
|
|
@@ -6407,11 +6744,11 @@ const validationTooltipShowDelay = 10;
|
|
|
6407
6744
|
*/
|
|
6408
6745
|
const validationTooltipHideDelay = 3000;
|
|
6409
6746
|
|
|
6410
|
-
const VERSION = new Version('20.
|
|
6747
|
+
const VERSION = new Version('20.1.0+sha-ba927bf');
|
|
6411
6748
|
|
|
6412
6749
|
/**
|
|
6413
6750
|
* Generated bundle index. Do not edit.
|
|
6414
6751
|
*/
|
|
6415
6752
|
|
|
6416
|
-
export { A, ALT, APOSTROPHE, ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT, AT_SIGN, AbsoluteDateFormatterImpurePipe, AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterImpurePipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterImpurePipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterImpurePipe, AbsoluteShortDateTimeFormatterPipe, ActiveDescendantKeyManager, B, BACKSLASH, BACKSPACE, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, BaseFormatterPipe, BaseLocaleAwareFormatterPipe, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, DateAdapter, DateFormatter, E, EIGHT, END, ENTER, EQUALS, ESCAPE, EXTENDED_OVERLAY_POSITIONS, EmptyFocusTrapStrategy, ErrorStateMatcher, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, FileValidators, FocusKeyManager, G, H, HOME, I, INSERT, J, K, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_DEFAULT_PRECISION_SEPARATOR, KBQ_FORM_FIELD_REF, KBQ_INVALID_VALUE_ERROR, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_LOCALE_SERVICE_LANG_ATTR_NAME, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_OVERFLOW_SHADOW_SOURCE, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_PARENT_POPUP, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_WINDOW, KbqAbsoluteLongDatePipe, KbqAbsoluteLongDateTimePipe, KbqAbsoluteShortDatePipe, KbqAbsoluteShortDateTimePipe, KbqAbstractSelect, KbqActionContainer, KbqAnimationCurves, KbqAnimationDurations, KbqColorDirective, KbqComponentColors, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqErrorStateTracker, KbqFieldSizingContent, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightBackgroundPipe, KbqHighlightModule, KbqHighlightPipe, KbqHover, KbqLine, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqMeasurementSystem, KbqNormalizeWhitespace, KbqOptgroup, KbqOption, KbqOptionActionComponent, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqOverflowShadowBottom, KbqOverflowShadowContainer, KbqOverflowShadowTop, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxModule, KbqRangeLongDatePipe, KbqRangeLongDateTimePipe, KbqRangeMiddleDateTimePipe, KbqRangeShortDatePipe, KbqRangeShortDateTimePipe, KbqReadStateDirective, KbqRectangleItem, KbqRelativeLongDatePipe, KbqRelativeLongDateTimePipe, KbqRelativeShortDatePipe, KbqRelativeShortDateTimePipe, KbqRoundDecimalPipe, KbqSelectFooter, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqTableNumberPipe, KbqThemeSelector, KbqVirtualOption, L, LAST_MEDIA, LEFT_ARROW, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, ListKeyManager, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, MockNgZone, MultipleMode, N, NINE, NUMBER_FORMAT_REGEXP, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PRINT_SCREEN, PasswordValidators, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, Q, QUESTION_MARK, R, RIGHT_ARROW, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterImpurePipe, RangeDateFormatterPipe, RangeDateTimeFormatterImpurePipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterImpurePipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterImpurePipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterImpurePipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterImpurePipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterImpurePipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterImpurePipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterImpurePipe, RelativeShortDateTimeFormatterPipe, S, SCROLL_LOCK, SELECT_PANEL_VIEWPORT_PADDING, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, ShowOnControlDirtyErrorStateMatcher, ShowOnFormSubmitErrorStateMatcher, ShowRequiredOnSubmitErrorStateMatcher, T, TAB, THREE, TILDE, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, TWO, ThemePalette, ThemeService, U, UP_ARROW, V, VERSION, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, applyPopupMargins, checkAndNormalizeLocalizedNumber, countGroupLabelsBeforeOption, createFakeEvent, createKeyboardEvent, createMouseEvent, createTouchEvent, defaultOffsetY, dispatchEvent, dispatchFakeEvent, dispatchKeyboardEvent, dispatchMouseEvent, dispatchTouchEvent, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, fadeAnimation, formatNumberWithLocale, getFormattedSizeParts, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getNodesWithoutComments, getOptionScrollPosition, hasModifierKey, isBoolean, isControl, isCopy, isDigit, isElement, isFunctionKey, isHorizontalMovement, isHtmlElement, isHtmlElementOrNull, isInput, isLeftBracket, isLetterKey, isMac, isNull, isNumberKey, isNumpadKey, isRightBracket, isSelectAll, isUndefined, isVerticalMovement, isWithin, kbqErrorStateMatcherProvider, kbqFilesizeFormatterConfigurationProvider, kbqHighlightBackgroundMark, kbqHighlightMark, kbqInjectNativeElement, kbqLocaleServiceLangAttrNameProvider, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, leftIconClassName, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, normalizeNumber, numberByParts, patchElementFocus, ptBRFormattersData, ptBRLocaleData, rightIconClassName, ruRUFormattersData, ruRULocaleData, selectEvents, tkTMFormattersData, tkTMLocaleData, typeInElement, validationTooltipHideDelay, validationTooltipShowDelay, wrappedErrorMessage };
|
|
6753
|
+
export { A, ALT, APOSTROPHE, ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT, AT_SIGN, AbsoluteDateFormatterImpurePipe, AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterImpurePipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterImpurePipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterImpurePipe, AbsoluteShortDateTimeFormatterPipe, ActiveDescendantKeyManager, B, BACKSLASH, BACKSPACE, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, BaseFormatterPipe, BaseLocaleAwareFormatterPipe, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, DateAdapter, DateFormatter, E, EIGHT, END, ENTER, EQUALS, ESCAPE, EXTENDED_OVERLAY_POSITIONS, EmptyFocusTrapStrategy, ErrorStateMatcher, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, FileValidators, FocusKeyManager, G, H, HOME, I, INSERT, J, K, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_DEFAULT_PRECISION_SEPARATOR, KBQ_FORM_FIELD_REF, KBQ_INVALID_VALUE_ERROR, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_LOCALE_SERVICE_LANG_ATTR_NAME, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_OVERFLOW_SHADOW_SOURCE, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_PARENT_POPUP, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD, KBQ_SHADOW_DOM_OVERLAY_HOST, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_WINDOW, KbqAbsoluteLongDatePipe, KbqAbsoluteLongDateTimePipe, KbqAbsoluteShortDatePipe, KbqAbsoluteShortDateTimePipe, KbqAbstractSelect, KbqActionContainer, KbqAnimationCurves, KbqAnimationDurations, KbqColorDirective, KbqComponentColors, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqErrorStateTracker, KbqFieldSizingContent, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightBackgroundPipe, KbqHighlightModule, KbqHighlightPipe, KbqHover, KbqLine, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqMeasurementSystem, KbqNormalizeWhitespace, KbqOptgroup, KbqOption, KbqOptionActionComponent, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqOverflowShadowBottom, KbqOverflowShadowContainer, KbqOverflowShadowTop, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxModule, KbqRangeLongDatePipe, KbqRangeLongDateTimePipe, KbqRangeMiddleDateTimePipe, KbqRangeShortDatePipe, KbqRangeShortDateTimePipe, KbqReadStateDirective, KbqRectangleItem, KbqRelativeLongDatePipe, KbqRelativeLongDateTimePipe, KbqRelativeShortDatePipe, KbqRelativeShortDateTimePipe, KbqRoundDecimalPipe, KbqSelectAllEvent, KbqSelectFooter, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqShadowDomOverlayContainer, KbqTableNumberPipe, KbqThemeSelector, KbqVirtualOption, L, LAST_MEDIA, LEFT_ARROW, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, ListKeyManager, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, MockNgZone, MultipleMode, N, NINE, NUMBER_FORMAT_REGEXP, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PRINT_SCREEN, PasswordValidators, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, Q, QUESTION_MARK, R, RIGHT_ARROW, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterImpurePipe, RangeDateFormatterPipe, RangeDateTimeFormatterImpurePipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterImpurePipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterImpurePipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterImpurePipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterImpurePipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterImpurePipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterImpurePipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterImpurePipe, RelativeShortDateTimeFormatterPipe, S, SCROLL_LOCK, SELECT_PANEL_VIEWPORT_PADDING, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, ShowOnControlDirtyErrorStateMatcher, ShowOnFormSubmitErrorStateMatcher, ShowRequiredOnSubmitErrorStateMatcher, T, TAB, THREE, TILDE, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, TWO, ThemePalette, ThemeService, U, UP_ARROW, V, VERSION, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, applyPopupMargins, checkAndNormalizeLocalizedNumber, countGroupLabelsBeforeOption, createFakeEvent, createKeyboardEvent, createMouseEvent, createTouchEvent, defaultOffsetY, dispatchEvent, dispatchFakeEvent, dispatchKeyboardEvent, dispatchMouseEvent, dispatchTouchEvent, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, fadeAnimation, formatNumberWithLocale, getFormattedSizeParts, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getNodesWithoutComments, getOptionScrollPosition, hasModifierKey, isBoolean, isControl, isCopy, isDigit, isElement, isFunctionKey, isHorizontalMovement, isHtmlElement, isHtmlElementOrNull, isInput, isLeftBracket, isLetterKey, isMac, isNull, isNumberKey, isNumpadKey, isRightBracket, isSelectAll, isUndefined, isVerticalMovement, isWithin, kbqErrorStateMatcherProvider, kbqFilesizeFormatterConfigurationProvider, kbqHighlightBackgroundMark, kbqHighlightMark, kbqInjectNativeElement, kbqLocaleServiceLangAttrNameProvider, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, kbqShadowDomOverlayProvider, leftIconClassName, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, normalizeNumber, numberByParts, patchElementFocus, ptBRFormattersData, ptBRLocaleData, rightIconClassName, ruRUFormattersData, ruRULocaleData, selectEvents, shouldSelectSearchText, tkTMFormattersData, tkTMLocaleData, toggleSelectAll, typeInElement, validationTooltipHideDelay, validationTooltipShowDelay, wrappedErrorMessage };
|
|
6417
6754
|
//# sourceMappingURL=koobiq-components-core.mjs.map
|