@db-ux/ngx-core-components 4.13.1-angular-signal-forms13-577b861 → 4.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, output, viewChild, signal, effect, VERSION, Component, model, HostBinding, Directive, TemplateRef, ContentChild } from '@angular/core';
|
|
2
|
+
import { input, output, viewChild, signal, effect, VERSION, Component, model, booleanAttribute, HostBinding, Directive, TemplateRef, ContentChild } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
@@ -634,7 +634,9 @@ const DEFAULT_INVALID_MESSAGE = 'TODO: Add an invalidMessage';
|
|
|
634
634
|
const DEFAULT_REMOVE = 'Remove';
|
|
635
635
|
const DEFAULT_BACK = 'Back';
|
|
636
636
|
const DEFAULT_SELECTED = 'Selected';
|
|
637
|
-
const
|
|
637
|
+
const DEFAULT_SCROLL_LEFT = 'Scroll left';
|
|
638
|
+
const DEFAULT_SCROLL_RIGHT = 'Scroll right';
|
|
639
|
+
const DEFAULT_BURGER_MENU = 'Open navigation menu';
|
|
638
640
|
const DEFAULT_ICON = 'brand';
|
|
639
641
|
const DEFAULT_ROWS = 4;
|
|
640
642
|
const DEFAULT_CLOSE_BUTTON = 'Close';
|
|
@@ -1615,7 +1617,7 @@ class DBCheckbox {
|
|
|
1615
1617
|
this.abortController = signal(undefined, ...(ngDevMode ? [{ debugName: "abortController" }] : /* istanbul ignore next */ []));
|
|
1616
1618
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
1617
1619
|
/** Signal Forms optional fields (Duck-Typing compatibility) */
|
|
1618
|
-
this.hidden = input(false, ...(ngDevMode ?
|
|
1620
|
+
this.hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1619
1621
|
this.errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
1620
1622
|
/** @internal Signal Forms validation state */
|
|
1621
1623
|
this._validMessage = signal('', ...(ngDevMode ? [{ debugName: "_validMessage" }] : /* istanbul ignore next */ []));
|
|
@@ -2056,7 +2058,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
2056
2058
|
</div> `, styles: [":host{display:contents}\n"] }]
|
|
2057
2059
|
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], propOverrides: [{ type: i0.Input, args: [{ isSignal: true, alias: "propOverrides", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], iconLeading: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconLeading", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], showIconLeading: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIconLeading", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], iconTrailing: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconTrailing", required: false }] }], showIconTrailing: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIconTrailing", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], noText: [{ type: i0.Input, args: [{ isSignal: true, alias: "noText", required: false }] }], _ref: [{ type: i0.ViewChild, args: ["_ref", { isSignal: true }] }] } });
|
|
2058
2060
|
|
|
2059
|
-
|
|
2061
|
+
/**
|
|
2062
|
+
* Generic base class for singleton document event listeners.
|
|
2063
|
+
* Manages a shared set of callbacks dispatched when a document-level
|
|
2064
|
+
* event fires.
|
|
2065
|
+
*
|
|
2066
|
+
* Subclasses own their static state (callbacks, instance) and expose
|
|
2067
|
+
* it via the abstract accessor methods below.
|
|
2068
|
+
*
|
|
2069
|
+
* @template TEvent - The event type passed to callbacks (Event, MouseEvent, etc.)
|
|
2070
|
+
*/
|
|
2071
|
+
class AbstractDocumentListener {
|
|
2072
|
+
addCallback(callback) {
|
|
2073
|
+
const id = uuid();
|
|
2074
|
+
const callbacks = this.getCallbacks();
|
|
2075
|
+
callbacks[id] = callback;
|
|
2076
|
+
return id;
|
|
2077
|
+
}
|
|
2078
|
+
removeCallback(id) {
|
|
2079
|
+
const callbacks = this.getCallbacks();
|
|
2080
|
+
delete callbacks[id];
|
|
2081
|
+
}
|
|
2082
|
+
}
|
|
2083
|
+
|
|
2084
|
+
class DocumentClickListener extends AbstractDocumentListener {
|
|
2060
2085
|
static { this.callbacks = {}; }
|
|
2061
2086
|
static { this._instance = null; }
|
|
2062
2087
|
static runCallbacks(event) {
|
|
@@ -2067,6 +2092,7 @@ class DocumentClickListener {
|
|
|
2067
2092
|
}
|
|
2068
2093
|
}
|
|
2069
2094
|
constructor() {
|
|
2095
|
+
super();
|
|
2070
2096
|
if (DocumentClickListener._instance) {
|
|
2071
2097
|
return DocumentClickListener._instance;
|
|
2072
2098
|
}
|
|
@@ -2075,17 +2101,12 @@ class DocumentClickListener {
|
|
|
2075
2101
|
self.document.addEventListener('click', event => DocumentClickListener.runCallbacks(event));
|
|
2076
2102
|
}
|
|
2077
2103
|
}
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
DocumentClickListener.callbacks[callbackID] = callback;
|
|
2081
|
-
return callbackID;
|
|
2082
|
-
}
|
|
2083
|
-
removeCallback(id) {
|
|
2084
|
-
delete DocumentClickListener.callbacks[id];
|
|
2104
|
+
getCallbacks() {
|
|
2105
|
+
return DocumentClickListener.callbacks;
|
|
2085
2106
|
}
|
|
2086
2107
|
}
|
|
2087
2108
|
|
|
2088
|
-
class DocumentScrollListener {
|
|
2109
|
+
class DocumentScrollListener extends AbstractDocumentListener {
|
|
2089
2110
|
static { this.callbacks = {}; }
|
|
2090
2111
|
static { this._instance = null; }
|
|
2091
2112
|
static runCallbacks(event) {
|
|
@@ -2096,6 +2117,7 @@ class DocumentScrollListener {
|
|
|
2096
2117
|
}
|
|
2097
2118
|
}
|
|
2098
2119
|
constructor() {
|
|
2120
|
+
super();
|
|
2099
2121
|
this.ticking = false;
|
|
2100
2122
|
if (DocumentScrollListener._instance) {
|
|
2101
2123
|
return DocumentScrollListener._instance;
|
|
@@ -2113,79 +2135,12 @@ class DocumentScrollListener {
|
|
|
2113
2135
|
}, true);
|
|
2114
2136
|
}
|
|
2115
2137
|
}
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
DocumentScrollListener.callbacks[callbackID] = callback;
|
|
2119
|
-
return callbackID;
|
|
2120
|
-
}
|
|
2121
|
-
removeCallback(id) {
|
|
2122
|
-
delete DocumentScrollListener.callbacks[id];
|
|
2138
|
+
getCallbacks() {
|
|
2139
|
+
return DocumentScrollListener.callbacks;
|
|
2123
2140
|
}
|
|
2124
2141
|
}
|
|
2125
2142
|
|
|
2126
2143
|
// TODO: We should reevaluate this as soon as CSS Anchor Positioning is supported in all relevant browsers
|
|
2127
|
-
const isInView = (el) => {
|
|
2128
|
-
const { top, bottom, left, right } = el.getBoundingClientRect();
|
|
2129
|
-
const { innerHeight, innerWidth } = window;
|
|
2130
|
-
let outTop = top < 0;
|
|
2131
|
-
let outBottom = bottom > innerHeight;
|
|
2132
|
-
let outLeft = left < 0;
|
|
2133
|
-
let outRight = right > innerWidth;
|
|
2134
|
-
// We need to check if it was already outside
|
|
2135
|
-
const outsideY = el.dataset['outsideVy'];
|
|
2136
|
-
const outsideX = el.dataset['outsideVx'];
|
|
2137
|
-
const parentRect = el?.parentElement?.getBoundingClientRect();
|
|
2138
|
-
if (parentRect) {
|
|
2139
|
-
if (outsideY) {
|
|
2140
|
-
const position = el.dataset['outsideVy'];
|
|
2141
|
-
if (position === 'top') {
|
|
2142
|
-
outTop = parentRect.top - (bottom - parentRect.bottom) < 0;
|
|
2143
|
-
}
|
|
2144
|
-
else {
|
|
2145
|
-
outBottom = parentRect.bottom + (parentRect.top - top) > innerHeight;
|
|
2146
|
-
}
|
|
2147
|
-
}
|
|
2148
|
-
if (outsideX) {
|
|
2149
|
-
const position = el.dataset['outsideVx'];
|
|
2150
|
-
if (position === 'left') {
|
|
2151
|
-
outLeft = parentRect.left - (right - parentRect.right) < 0;
|
|
2152
|
-
}
|
|
2153
|
-
else {
|
|
2154
|
-
outRight = parentRect.right + (parentRect.left - left) > innerWidth;
|
|
2155
|
-
}
|
|
2156
|
-
}
|
|
2157
|
-
}
|
|
2158
|
-
return {
|
|
2159
|
-
outTop,
|
|
2160
|
-
outBottom,
|
|
2161
|
-
outLeft,
|
|
2162
|
-
outRight
|
|
2163
|
-
};
|
|
2164
|
-
};
|
|
2165
|
-
const handleDataOutside = (el) => {
|
|
2166
|
-
const { outTop, outBottom, outLeft, outRight } = isInView(el);
|
|
2167
|
-
let dataOutsidePair = {};
|
|
2168
|
-
if (outTop || outBottom) {
|
|
2169
|
-
dataOutsidePair = {
|
|
2170
|
-
vy: outTop ? 'top' : 'bottom'
|
|
2171
|
-
};
|
|
2172
|
-
el.dataset['outsideVy'] = dataOutsidePair.vy;
|
|
2173
|
-
}
|
|
2174
|
-
else {
|
|
2175
|
-
delete el.dataset['outsideVy'];
|
|
2176
|
-
}
|
|
2177
|
-
if (outLeft || outRight) {
|
|
2178
|
-
dataOutsidePair = {
|
|
2179
|
-
...dataOutsidePair,
|
|
2180
|
-
vx: outRight ? 'right' : 'left'
|
|
2181
|
-
};
|
|
2182
|
-
el.dataset['outsideVx'] = dataOutsidePair.vx;
|
|
2183
|
-
}
|
|
2184
|
-
else {
|
|
2185
|
-
delete el.dataset['outsideVx'];
|
|
2186
|
-
}
|
|
2187
|
-
return dataOutsidePair;
|
|
2188
|
-
};
|
|
2189
2144
|
const handleFixedDropdown = (element, parent, placement) => {
|
|
2190
2145
|
if (!element || !parent)
|
|
2191
2146
|
return;
|
|
@@ -2201,9 +2156,11 @@ const handleFixedDropdown = (element, parent, placement) => {
|
|
|
2201
2156
|
// mobile max-inline-size guard and overflows the viewport.
|
|
2202
2157
|
element.style.inlineSize = '';
|
|
2203
2158
|
element.style.minInlineSize = '';
|
|
2204
|
-
// We skip
|
|
2205
|
-
|
|
2159
|
+
// We skip this if we are in mobile it's already fixed or if we don't have a floating dropdown
|
|
2160
|
+
const computedStyle = getComputedStyle(element);
|
|
2161
|
+
if (computedStyle.zIndex === '9999' || computedStyle.position !== 'fixed' && computedStyle.position !== 'absolute') {
|
|
2206
2162
|
return;
|
|
2163
|
+
}
|
|
2207
2164
|
const { top, bottom, childHeight, childWidth, width, right, left, correctedPlacement, innerWidth } = getFloatingProps(element, parent, placement);
|
|
2208
2165
|
// For auto width the dropdown is forced to be at least as wide as the trigger,
|
|
2209
2166
|
// but clamped to its own max-inline-size: CSS lets a min-inline-size override
|
|
@@ -2278,27 +2235,38 @@ const getFloatingProps = (element, parent, placement) => {
|
|
|
2278
2235
|
let childHeight = childRect.height;
|
|
2279
2236
|
let childWidth = childRect.width;
|
|
2280
2237
|
if (placement === 'bottom' || placement === 'top') {
|
|
2281
|
-
childWidth = childWidth / 2;
|
|
2238
|
+
childWidth = width > childWidth ? 0 : childWidth / 2;
|
|
2282
2239
|
}
|
|
2283
2240
|
if (placement === 'left' || placement === 'right') {
|
|
2284
|
-
childHeight = childHeight / 2;
|
|
2241
|
+
childHeight = height > childHeight ? 0 : childHeight / 2;
|
|
2285
2242
|
}
|
|
2286
|
-
const outsideBottom = bottom + childHeight > innerHeight;
|
|
2287
|
-
const outsideTop = top - childHeight < 0;
|
|
2288
|
-
const outsideLeft = left - childWidth < 0;
|
|
2289
|
-
const outsideRight = right + childWidth > innerWidth;
|
|
2243
|
+
const outsideBottom = Math.floor(bottom + childHeight) > innerHeight;
|
|
2244
|
+
const outsideTop = Math.ceil(top - childHeight) < 0;
|
|
2245
|
+
const outsideLeft = Math.ceil(left - childWidth) < 0;
|
|
2246
|
+
const outsideRight = Math.floor(right + childWidth) > innerWidth;
|
|
2290
2247
|
let correctedPlacement = placement;
|
|
2291
2248
|
if (placement.startsWith('bottom')) {
|
|
2292
2249
|
if (outsideBottom) {
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2250
|
+
if (!outsideTop) {
|
|
2251
|
+
correctedPlacement = placement?.replace('bottom', 'top');
|
|
2252
|
+
if (outsideLeft && outsideRight) {
|
|
2253
|
+
correctedPlacement = 'top';
|
|
2254
|
+
}
|
|
2255
|
+
else if (outsideLeft) {
|
|
2256
|
+
correctedPlacement = 'top-start';
|
|
2257
|
+
}
|
|
2258
|
+
else if (outsideRight) {
|
|
2259
|
+
correctedPlacement = 'top-end';
|
|
2260
|
+
}
|
|
2299
2261
|
}
|
|
2300
|
-
else
|
|
2301
|
-
|
|
2262
|
+
else {
|
|
2263
|
+
// Both outsideBottom and outsideTop: keep bottom but still apply horizontal correction
|
|
2264
|
+
if (outsideLeft) {
|
|
2265
|
+
correctedPlacement = 'bottom-start';
|
|
2266
|
+
}
|
|
2267
|
+
else if (outsideRight) {
|
|
2268
|
+
correctedPlacement = 'bottom-end';
|
|
2269
|
+
}
|
|
2302
2270
|
}
|
|
2303
2271
|
}
|
|
2304
2272
|
else {
|
|
@@ -2315,15 +2283,26 @@ const getFloatingProps = (element, parent, placement) => {
|
|
|
2315
2283
|
}
|
|
2316
2284
|
else if (placement.startsWith('top')) {
|
|
2317
2285
|
if (outsideTop) {
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2286
|
+
if (!outsideBottom) {
|
|
2287
|
+
correctedPlacement = placement?.replace('top', 'bottom');
|
|
2288
|
+
if (outsideLeft && outsideRight) {
|
|
2289
|
+
correctedPlacement = 'bottom';
|
|
2290
|
+
}
|
|
2291
|
+
else if (outsideLeft) {
|
|
2292
|
+
correctedPlacement = 'bottom-start';
|
|
2293
|
+
}
|
|
2294
|
+
else if (outsideRight) {
|
|
2295
|
+
correctedPlacement = 'bottom-end';
|
|
2296
|
+
}
|
|
2324
2297
|
}
|
|
2325
|
-
else
|
|
2326
|
-
|
|
2298
|
+
else {
|
|
2299
|
+
// Both outsideTop and outsideBottom: keep top but still apply horizontal correction
|
|
2300
|
+
if (outsideLeft) {
|
|
2301
|
+
correctedPlacement = 'top-start';
|
|
2302
|
+
}
|
|
2303
|
+
else if (outsideRight) {
|
|
2304
|
+
correctedPlacement = 'top-end';
|
|
2305
|
+
}
|
|
2327
2306
|
}
|
|
2328
2307
|
}
|
|
2329
2308
|
else {
|
|
@@ -2340,15 +2319,17 @@ const getFloatingProps = (element, parent, placement) => {
|
|
|
2340
2319
|
}
|
|
2341
2320
|
else if (placement.startsWith('left')) {
|
|
2342
2321
|
if (outsideLeft) {
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2322
|
+
if (!outsideRight) {
|
|
2323
|
+
correctedPlacement = placement?.replace('left', 'right');
|
|
2324
|
+
if (outsideBottom && outsideTop) {
|
|
2325
|
+
correctedPlacement = 'right';
|
|
2326
|
+
}
|
|
2327
|
+
else if (outsideBottom) {
|
|
2328
|
+
correctedPlacement = 'right-end';
|
|
2329
|
+
}
|
|
2330
|
+
else if (outsideTop) {
|
|
2331
|
+
correctedPlacement = 'right-start';
|
|
2332
|
+
}
|
|
2352
2333
|
}
|
|
2353
2334
|
}
|
|
2354
2335
|
else {
|
|
@@ -2365,15 +2346,17 @@ const getFloatingProps = (element, parent, placement) => {
|
|
|
2365
2346
|
}
|
|
2366
2347
|
else if (correctedPlacement.startsWith('right')) {
|
|
2367
2348
|
if (outsideRight) {
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2349
|
+
if (!outsideLeft) {
|
|
2350
|
+
correctedPlacement = placement?.replace('right', 'left');
|
|
2351
|
+
if (outsideBottom && outsideTop) {
|
|
2352
|
+
correctedPlacement = 'left';
|
|
2353
|
+
}
|
|
2354
|
+
else if (outsideBottom) {
|
|
2355
|
+
correctedPlacement = 'left-end';
|
|
2356
|
+
}
|
|
2357
|
+
else if (outsideTop) {
|
|
2358
|
+
correctedPlacement = 'left-start';
|
|
2359
|
+
}
|
|
2377
2360
|
}
|
|
2378
2361
|
}
|
|
2379
2362
|
else {
|
|
@@ -2399,7 +2382,8 @@ const getFloatingProps = (element, parent, placement) => {
|
|
|
2399
2382
|
childWidth: childRect.width,
|
|
2400
2383
|
correctedPlacement,
|
|
2401
2384
|
innerWidth,
|
|
2402
|
-
innerHeight
|
|
2385
|
+
innerHeight,
|
|
2386
|
+
outsideYBoth: outsideTop && outsideBottom
|
|
2403
2387
|
};
|
|
2404
2388
|
};
|
|
2405
2389
|
const MAX_ANCESTOR_DEPTH = 10;
|
|
@@ -2428,8 +2412,17 @@ const handleFixedPopover = (element, parent, placement) => {
|
|
|
2428
2412
|
const parentHasFloatingPosition = ['absolute', 'fixed'].includes(parentComputedStyles.position);
|
|
2429
2413
|
const ancestorWithCorrectedPlacement = getAncestorHasCorrectedPlacement(element);
|
|
2430
2414
|
const noFloatingAncestor = !ancestorWithCorrectedPlacement && !parentHasFloatingPosition;
|
|
2431
|
-
const
|
|
2432
|
-
|
|
2415
|
+
const computedStyle = getComputedStyle(element);
|
|
2416
|
+
// We skip if we don't have a floating popover
|
|
2417
|
+
if (computedStyle.position !== 'fixed' && computedStyle.position !== 'absolute') {
|
|
2418
|
+
return;
|
|
2419
|
+
}
|
|
2420
|
+
let distance = computedStyle.getPropertyValue('--db-popover-distance');
|
|
2421
|
+
if (!distance.length) {
|
|
2422
|
+
distance = '0px';
|
|
2423
|
+
}
|
|
2424
|
+
const elementPlacement = element?.dataset?.['placement'] ?? placement ?? 'bottom';
|
|
2425
|
+
let { top, height, width, childHeight, childWidth, right, left, bottom, correctedPlacement, innerWidth, innerHeight, outsideYBoth } = getFloatingProps(element, parent, elementPlacement);
|
|
2433
2426
|
if (ancestorWithCorrectedPlacement) {
|
|
2434
2427
|
const ancestorRect = ancestorWithCorrectedPlacement.getBoundingClientRect();
|
|
2435
2428
|
left = Math.abs(left - ancestorRect.left);
|
|
@@ -2477,6 +2470,10 @@ const handleFixedPopover = (element, parent, placement) => {
|
|
|
2477
2470
|
}
|
|
2478
2471
|
}
|
|
2479
2472
|
// Popover position
|
|
2473
|
+
// Reset shorthand inset properties from previous calls (e.g. outsideYBoth)
|
|
2474
|
+
// before writing new individual inset values
|
|
2475
|
+
element.style.insetBlock = '';
|
|
2476
|
+
element.style.insetInline = '';
|
|
2480
2477
|
if (correctedPlacement === 'right' || correctedPlacement === 'left') {
|
|
2481
2478
|
// center horizontally
|
|
2482
2479
|
element.style.insetBlockStart = `${top + height / 2}px`;
|
|
@@ -2525,10 +2522,218 @@ const handleFixedPopover = (element, parent, placement) => {
|
|
|
2525
2522
|
element.style.insetBlockStart = `calc(${parentHasFloatingPosition ? end : bottom}px + ${distance})`;
|
|
2526
2523
|
element.style.insetBlockEnd = `calc(${noFloatingAncestor && end > innerHeight ? innerHeight : end}px + ${distance})`;
|
|
2527
2524
|
}
|
|
2525
|
+
// In this case we are outside of top and bottom so we need to scroll
|
|
2526
|
+
// We use the full height in this case
|
|
2527
|
+
if (outsideYBoth) {
|
|
2528
|
+
element.style.overflow = 'hidden auto';
|
|
2529
|
+
element.style.insetBlock = distance;
|
|
2530
|
+
element.style.maxBlockSize = `calc(${innerHeight}px - 2 * ${distance})`;
|
|
2531
|
+
}
|
|
2532
|
+
else {
|
|
2533
|
+
element.style.overflow = '';
|
|
2534
|
+
element.style.maxBlockSize = '';
|
|
2535
|
+
}
|
|
2528
2536
|
element.style.position = 'fixed';
|
|
2529
2537
|
element.dataset['correctedPlacement'] = correctedPlacement;
|
|
2538
|
+
// Set data-outside-vy / data-outside-vx for CSS-based flipping
|
|
2539
|
+
handleDataOutside(element);
|
|
2540
|
+
};
|
|
2541
|
+
const handleDataOutside = (el) => {
|
|
2542
|
+
const { outTop, outBottom, outLeft, outRight } = isInView(el);
|
|
2543
|
+
let dataOutsidePair = {};
|
|
2544
|
+
if (outTop || outBottom) {
|
|
2545
|
+
dataOutsidePair = {
|
|
2546
|
+
vy: outTop ? 'top' : 'bottom'
|
|
2547
|
+
};
|
|
2548
|
+
el.dataset['outsideVy'] = dataOutsidePair.vy;
|
|
2549
|
+
}
|
|
2550
|
+
else {
|
|
2551
|
+
delete el.dataset['outsideVy'];
|
|
2552
|
+
}
|
|
2553
|
+
if (outLeft || outRight) {
|
|
2554
|
+
dataOutsidePair = {
|
|
2555
|
+
...dataOutsidePair,
|
|
2556
|
+
vx: outRight ? 'right' : 'left'
|
|
2557
|
+
};
|
|
2558
|
+
el.dataset['outsideVx'] = dataOutsidePair.vx;
|
|
2559
|
+
}
|
|
2560
|
+
else {
|
|
2561
|
+
delete el.dataset['outsideVx'];
|
|
2562
|
+
}
|
|
2563
|
+
return dataOutsidePair;
|
|
2564
|
+
};
|
|
2565
|
+
const isInView = (el) => {
|
|
2566
|
+
const { top, bottom, left, right } = el.getBoundingClientRect();
|
|
2567
|
+
const { innerHeight, innerWidth } = window;
|
|
2568
|
+
let outTop = top < 0;
|
|
2569
|
+
let outBottom = bottom > innerHeight;
|
|
2570
|
+
let outLeft = left < 0;
|
|
2571
|
+
let outRight = right > innerWidth;
|
|
2572
|
+
// We need to check if it was already outside
|
|
2573
|
+
const outsideY = el.dataset['outsideVy'];
|
|
2574
|
+
const outsideX = el.dataset['outsideVx'];
|
|
2575
|
+
const parentRect = el?.parentElement?.getBoundingClientRect();
|
|
2576
|
+
if (parentRect) {
|
|
2577
|
+
if (outsideY) {
|
|
2578
|
+
const position = el.dataset['outsideVy'];
|
|
2579
|
+
if (position === 'top') {
|
|
2580
|
+
outTop = parentRect.top - (bottom - parentRect.bottom) < 0;
|
|
2581
|
+
}
|
|
2582
|
+
else {
|
|
2583
|
+
outBottom = parentRect.bottom + (parentRect.top - top) > innerHeight;
|
|
2584
|
+
}
|
|
2585
|
+
}
|
|
2586
|
+
if (outsideX) {
|
|
2587
|
+
const position = el.dataset['outsideVx'];
|
|
2588
|
+
if (position === 'left') {
|
|
2589
|
+
outLeft = parentRect.left - (right - parentRect.right) < 0;
|
|
2590
|
+
}
|
|
2591
|
+
else {
|
|
2592
|
+
outRight = parentRect.right + (parentRect.left - left) > innerWidth;
|
|
2593
|
+
}
|
|
2594
|
+
}
|
|
2595
|
+
}
|
|
2596
|
+
return {
|
|
2597
|
+
outTop,
|
|
2598
|
+
outBottom,
|
|
2599
|
+
outLeft,
|
|
2600
|
+
outRight
|
|
2601
|
+
};
|
|
2530
2602
|
};
|
|
2531
2603
|
|
|
2604
|
+
/**
|
|
2605
|
+
* Generic base class for singleton observer listeners.
|
|
2606
|
+
* Uses a Map<Element, Map<id, callback>> for O(1) element lookup in the
|
|
2607
|
+
* observer handler — avoids quadratic scanning when many elements are observed.
|
|
2608
|
+
*
|
|
2609
|
+
* Subclasses own their static state (callbacksByElement, idToElement, observer,
|
|
2610
|
+
* instance) and expose it via the abstract accessor methods below.
|
|
2611
|
+
*
|
|
2612
|
+
* @template TObserver - The observer type (ResizeObserver, IntersectionObserver, etc.)
|
|
2613
|
+
* @template TEntry - The entry type passed to the callback
|
|
2614
|
+
*/
|
|
2615
|
+
class AbstractObserverListener {
|
|
2616
|
+
observe(element, callback) {
|
|
2617
|
+
const observer = this.getObserver();
|
|
2618
|
+
if (!observer)
|
|
2619
|
+
return undefined;
|
|
2620
|
+
const id = uuid();
|
|
2621
|
+
const callbacksByElement = this.getCallbacksByElement();
|
|
2622
|
+
const idToElement = this.getIdToElement();
|
|
2623
|
+
let elementCallbacks = callbacksByElement.get(element);
|
|
2624
|
+
if (!elementCallbacks) {
|
|
2625
|
+
elementCallbacks = new Map();
|
|
2626
|
+
callbacksByElement.set(element, elementCallbacks);
|
|
2627
|
+
// Only call observe on the native observer if this is a new element
|
|
2628
|
+
this.observeElement(observer, element);
|
|
2629
|
+
}
|
|
2630
|
+
elementCallbacks.set(id, callback);
|
|
2631
|
+
idToElement.set(id, element);
|
|
2632
|
+
return id;
|
|
2633
|
+
}
|
|
2634
|
+
unobserve(id) {
|
|
2635
|
+
const callbacksByElement = this.getCallbacksByElement();
|
|
2636
|
+
const idToElement = this.getIdToElement();
|
|
2637
|
+
const observer = this.getObserver();
|
|
2638
|
+
const element = idToElement.get(id);
|
|
2639
|
+
if (!element || !observer)
|
|
2640
|
+
return;
|
|
2641
|
+
const elementCallbacks = callbacksByElement.get(element);
|
|
2642
|
+
if (elementCallbacks) {
|
|
2643
|
+
elementCallbacks.delete(id);
|
|
2644
|
+
// If no more callbacks for this element, unobserve it
|
|
2645
|
+
if (elementCallbacks.size === 0) {
|
|
2646
|
+
callbacksByElement.delete(element);
|
|
2647
|
+
this.unobserveElement(observer, element);
|
|
2648
|
+
}
|
|
2649
|
+
}
|
|
2650
|
+
idToElement.delete(id);
|
|
2651
|
+
}
|
|
2652
|
+
/**
|
|
2653
|
+
* Called by subclass observer handlers to dispatch callbacks for an entry.
|
|
2654
|
+
*/
|
|
2655
|
+
dispatchEntry(element, entry) {
|
|
2656
|
+
const elementCallbacks = this.getCallbacksByElement().get(element);
|
|
2657
|
+
if (elementCallbacks) {
|
|
2658
|
+
elementCallbacks.forEach(callback => {
|
|
2659
|
+
callback(entry);
|
|
2660
|
+
});
|
|
2661
|
+
}
|
|
2662
|
+
}
|
|
2663
|
+
}
|
|
2664
|
+
|
|
2665
|
+
class IntersectionObserverListener extends AbstractObserverListener {
|
|
2666
|
+
static { this._instance = null; }
|
|
2667
|
+
static { this.callbacksByElement = new Map(); }
|
|
2668
|
+
static { this.idToElement = new Map(); }
|
|
2669
|
+
static { this.observer = null; }
|
|
2670
|
+
constructor() {
|
|
2671
|
+
super();
|
|
2672
|
+
if (IntersectionObserverListener._instance) {
|
|
2673
|
+
return IntersectionObserverListener._instance;
|
|
2674
|
+
}
|
|
2675
|
+
IntersectionObserverListener._instance = this;
|
|
2676
|
+
if (typeof window !== 'undefined' && 'IntersectionObserver' in window) {
|
|
2677
|
+
IntersectionObserverListener.observer = new IntersectionObserver(entries => {
|
|
2678
|
+
for (const entry of entries) {
|
|
2679
|
+
this.dispatchEntry(entry.target, entry);
|
|
2680
|
+
}
|
|
2681
|
+
});
|
|
2682
|
+
}
|
|
2683
|
+
}
|
|
2684
|
+
getCallbacksByElement() {
|
|
2685
|
+
return IntersectionObserverListener.callbacksByElement;
|
|
2686
|
+
}
|
|
2687
|
+
getIdToElement() {
|
|
2688
|
+
return IntersectionObserverListener.idToElement;
|
|
2689
|
+
}
|
|
2690
|
+
getObserver() {
|
|
2691
|
+
return IntersectionObserverListener.observer;
|
|
2692
|
+
}
|
|
2693
|
+
observeElement(observer, element) {
|
|
2694
|
+
observer.observe(element);
|
|
2695
|
+
}
|
|
2696
|
+
unobserveElement(observer, element) {
|
|
2697
|
+
observer.unobserve(element);
|
|
2698
|
+
}
|
|
2699
|
+
}
|
|
2700
|
+
|
|
2701
|
+
class ResizeObserverListener extends AbstractObserverListener {
|
|
2702
|
+
static { this._instance = null; }
|
|
2703
|
+
static { this.callbacksByElement = new Map(); }
|
|
2704
|
+
static { this.idToElement = new Map(); }
|
|
2705
|
+
static { this.observer = null; }
|
|
2706
|
+
constructor() {
|
|
2707
|
+
super();
|
|
2708
|
+
if (ResizeObserverListener._instance) {
|
|
2709
|
+
return ResizeObserverListener._instance;
|
|
2710
|
+
}
|
|
2711
|
+
ResizeObserverListener._instance = this;
|
|
2712
|
+
if (typeof window !== 'undefined' && 'ResizeObserver' in window) {
|
|
2713
|
+
ResizeObserverListener.observer = new ResizeObserver(entries => {
|
|
2714
|
+
for (const entry of entries) {
|
|
2715
|
+
this.dispatchEntry(entry.target, entry);
|
|
2716
|
+
}
|
|
2717
|
+
});
|
|
2718
|
+
}
|
|
2719
|
+
}
|
|
2720
|
+
getCallbacksByElement() {
|
|
2721
|
+
return ResizeObserverListener.callbacksByElement;
|
|
2722
|
+
}
|
|
2723
|
+
getIdToElement() {
|
|
2724
|
+
return ResizeObserverListener.idToElement;
|
|
2725
|
+
}
|
|
2726
|
+
getObserver() {
|
|
2727
|
+
return ResizeObserverListener.observer;
|
|
2728
|
+
}
|
|
2729
|
+
observeElement(observer, element) {
|
|
2730
|
+
observer.observe(element);
|
|
2731
|
+
}
|
|
2732
|
+
unobserveElement(observer, element) {
|
|
2733
|
+
observer.unobserve(element);
|
|
2734
|
+
}
|
|
2735
|
+
}
|
|
2736
|
+
|
|
2532
2737
|
const defaultProps$z = { width: "fixed" };
|
|
2533
2738
|
class DBCustomSelectDropdown {
|
|
2534
2739
|
setupObserver(element) {
|
|
@@ -2692,7 +2897,7 @@ class DBCustomSelectListItem {
|
|
|
2692
2897
|
this.hasDivider = signal(false, ...(ngDevMode ? [{ debugName: "hasDivider" }] : /* istanbul ignore next */ []));
|
|
2693
2898
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
2694
2899
|
/** Signal Forms optional fields (Duck-Typing compatibility) */
|
|
2695
|
-
this.hidden = input(false, ...(ngDevMode ?
|
|
2900
|
+
this.hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
2696
2901
|
this.errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
2697
2902
|
/** Signal Forms touch output — emitted on blur to mark the control as touched */
|
|
2698
2903
|
this.touch = output();
|
|
@@ -2993,7 +3198,10 @@ class DBInput {
|
|
|
2993
3198
|
// Only reflect regexes that are full-match (anchored with ^ and $) to the HTML pattern attribute.
|
|
2994
3199
|
// Partial-match regexes (e.g. /^https?:\/\//) would change semantics because browser patterns
|
|
2995
3200
|
// implicitly match the entire value (as if wrapped in ^(?:...)$).
|
|
2996
|
-
|
|
3201
|
+
// Additionally, skip regexes with flags (e.g. /i for case-insensitive) because HTML pattern
|
|
3202
|
+
// does not support flags — reflecting them would cause a semantics mismatch where Signal Forms
|
|
3203
|
+
// considers the value valid but the browser pattern rejects it.
|
|
3204
|
+
const fullMatch = p.filter((r) => r.source.startsWith('^') && r.source.endsWith('$') && !r.flags);
|
|
2997
3205
|
if (fullMatch.length === 0)
|
|
2998
3206
|
return undefined;
|
|
2999
3207
|
// Strip anchors since HTML pattern is implicitly anchored
|
|
@@ -3223,7 +3431,7 @@ class DBInput {
|
|
|
3223
3431
|
this.abortController = signal(undefined, ...(ngDevMode ? [{ debugName: "abortController" }] : /* istanbul ignore next */ []));
|
|
3224
3432
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
3225
3433
|
/** Signal Forms optional fields (Duck-Typing compatibility) */
|
|
3226
|
-
this.hidden = input(false, ...(ngDevMode ?
|
|
3434
|
+
this.hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3227
3435
|
this.errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
3228
3436
|
/** @internal Signal Forms validation state */
|
|
3229
3437
|
this._validMessage = signal('', ...(ngDevMode ? [{ debugName: "_validMessage" }] : /* istanbul ignore next */ []));
|
|
@@ -3607,7 +3815,7 @@ class DBTooltip {
|
|
|
3607
3815
|
void delay(() => {
|
|
3608
3816
|
// Due to race conditions we need to check for _ref again
|
|
3609
3817
|
if (this._ref()?.nativeElement) {
|
|
3610
|
-
handleFixedPopover(this._ref()?.nativeElement, parent
|
|
3818
|
+
handleFixedPopover(this._ref()?.nativeElement, parent);
|
|
3611
3819
|
}
|
|
3612
3820
|
}, 1);
|
|
3613
3821
|
}
|
|
@@ -3629,7 +3837,14 @@ class DBTooltip {
|
|
|
3629
3837
|
new DocumentScrollListener().removeCallback(this._documentScrollListenerCallbackId());
|
|
3630
3838
|
this._documentScrollListenerCallbackId.set(undefined);
|
|
3631
3839
|
}
|
|
3632
|
-
|
|
3840
|
+
if (this._resizeObserverCallbackId()) {
|
|
3841
|
+
new ResizeObserverListener().unobserve(this._resizeObserverCallbackId());
|
|
3842
|
+
this._resizeObserverCallbackId.set(undefined);
|
|
3843
|
+
}
|
|
3844
|
+
if (this._intersectionObserverCallbackId()) {
|
|
3845
|
+
new IntersectionObserverListener().unobserve(this._intersectionObserverCallbackId());
|
|
3846
|
+
this._intersectionObserverCallbackId.set(undefined);
|
|
3847
|
+
}
|
|
3633
3848
|
}
|
|
3634
3849
|
handleEnter(parent) {
|
|
3635
3850
|
// Register the shared scroll callback only for the first active
|
|
@@ -3638,7 +3853,12 @@ class DBTooltip {
|
|
|
3638
3853
|
this._activeTriggerCount.set((this._activeTriggerCount() ?? 0) + 1);
|
|
3639
3854
|
if (this._activeTriggerCount() === 1) {
|
|
3640
3855
|
this._documentScrollListenerCallbackId.set(new DocumentScrollListener().addCallback((event) => this.handleDocumentScroll(event, parent)));
|
|
3641
|
-
this.
|
|
3856
|
+
this._resizeObserverCallbackId.set(new ResizeObserverListener().observe(document.documentElement, () => this.handleAutoPlacement(parent)));
|
|
3857
|
+
this._intersectionObserverCallbackId.set(new IntersectionObserverListener().observe(this.getParent(), (entry) => {
|
|
3858
|
+
if (!entry.isIntersecting) {
|
|
3859
|
+
this.handleEscape(false);
|
|
3860
|
+
}
|
|
3861
|
+
}));
|
|
3642
3862
|
}
|
|
3643
3863
|
this.handleAutoPlacement(parent);
|
|
3644
3864
|
}
|
|
@@ -3651,8 +3871,14 @@ class DBTooltip {
|
|
|
3651
3871
|
new DocumentScrollListener().removeCallback(callbackId);
|
|
3652
3872
|
this._documentScrollListenerCallbackId.set(undefined);
|
|
3653
3873
|
}
|
|
3654
|
-
this.
|
|
3655
|
-
|
|
3874
|
+
if (this._resizeObserverCallbackId()) {
|
|
3875
|
+
new ResizeObserverListener().unobserve(this._resizeObserverCallbackId());
|
|
3876
|
+
this._resizeObserverCallbackId.set(undefined);
|
|
3877
|
+
}
|
|
3878
|
+
if (this._intersectionObserverCallbackId()) {
|
|
3879
|
+
new IntersectionObserverListener().unobserve(this._intersectionObserverCallbackId());
|
|
3880
|
+
this._intersectionObserverCallbackId.set(undefined);
|
|
3881
|
+
}
|
|
3656
3882
|
this._activeTriggerCount.set(0);
|
|
3657
3883
|
const bound = this._boundListeners() ?? [];
|
|
3658
3884
|
bound.forEach((entry) => {
|
|
@@ -3706,7 +3932,6 @@ class DBTooltip {
|
|
|
3706
3932
|
this.id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
|
|
3707
3933
|
this.propOverrides = input(...(ngDevMode ? [undefined, { debugName: "propOverrides" }] : /* istanbul ignore next */ []));
|
|
3708
3934
|
this.variant = input(...(ngDevMode ? [undefined, { debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
3709
|
-
this.placement = input(...(ngDevMode ? [undefined, { debugName: "placement" }] : /* istanbul ignore next */ []));
|
|
3710
3935
|
this.className = input(...(ngDevMode ? [undefined, { debugName: "className" }] : /* istanbul ignore next */ []));
|
|
3711
3936
|
this.emphasis = input(...(ngDevMode ? [undefined, { debugName: "emphasis" }] : /* istanbul ignore next */ []));
|
|
3712
3937
|
this.wrap = input(...(ngDevMode ? [undefined, { debugName: "wrap" }] : /* istanbul ignore next */ []));
|
|
@@ -3714,12 +3939,14 @@ class DBTooltip {
|
|
|
3714
3939
|
this.delay = input(...(ngDevMode ? [undefined, { debugName: "delay" }] : /* istanbul ignore next */ []));
|
|
3715
3940
|
this.width = input(...(ngDevMode ? [undefined, { debugName: "width" }] : /* istanbul ignore next */ []));
|
|
3716
3941
|
this.showArrow = input(...(ngDevMode ? [undefined, { debugName: "showArrow" }] : /* istanbul ignore next */ []));
|
|
3942
|
+
this.placement = input(...(ngDevMode ? [undefined, { debugName: "placement" }] : /* istanbul ignore next */ []));
|
|
3717
3943
|
this.text = input(...(ngDevMode ? [undefined, { debugName: "text" }] : /* istanbul ignore next */ []));
|
|
3718
3944
|
this._ref = viewChild("_ref", ...(ngDevMode ? [{ debugName: "_ref" }] : /* istanbul ignore next */ []));
|
|
3719
3945
|
this._id = signal(DEFAULT_ID, ...(ngDevMode ? [{ debugName: "_id" }] : /* istanbul ignore next */ []));
|
|
3720
3946
|
this.initialized = signal(false, ...(ngDevMode ? [{ debugName: "initialized" }] : /* istanbul ignore next */ []));
|
|
3721
3947
|
this._documentScrollListenerCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_documentScrollListenerCallbackId" }] : /* istanbul ignore next */ []));
|
|
3722
|
-
this.
|
|
3948
|
+
this._intersectionObserverCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_intersectionObserverCallbackId" }] : /* istanbul ignore next */ []));
|
|
3949
|
+
this._resizeObserverCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_resizeObserverCallbackId" }] : /* istanbul ignore next */ []));
|
|
3723
3950
|
this._attachedParent = signal(undefined, ...(ngDevMode ? [{ debugName: "_attachedParent" }] : /* istanbul ignore next */ []));
|
|
3724
3951
|
this._attachedId = signal(undefined, ...(ngDevMode ? [{ debugName: "_attachedId" }] : /* istanbul ignore next */ []));
|
|
3725
3952
|
this._activeTriggerCount = signal(0, ...(ngDevMode ? [{ debugName: "_activeTriggerCount" }] : /* istanbul ignore next */ []));
|
|
@@ -3792,15 +4019,6 @@ class DBTooltip {
|
|
|
3792
4019
|
this._attachedParent.set(parent);
|
|
3793
4020
|
this._attachedId.set(this._id());
|
|
3794
4021
|
}
|
|
3795
|
-
if (typeof window !== "undefined" &&
|
|
3796
|
-
"IntersectionObserver" in window) {
|
|
3797
|
-
this._observer.set(new IntersectionObserver((payload) => {
|
|
3798
|
-
const entry = payload.find(({ target }) => target === this.getParent());
|
|
3799
|
-
if (entry && !entry.isIntersecting) {
|
|
3800
|
-
this.handleEscape(false);
|
|
3801
|
-
}
|
|
3802
|
-
}));
|
|
3803
|
-
}
|
|
3804
4022
|
this.initialized.set(false);
|
|
3805
4023
|
}
|
|
3806
4024
|
}, Number(VERSION.major) < 19
|
|
@@ -3863,7 +4081,7 @@ class DBTooltip {
|
|
|
3863
4081
|
this.observer()?.disconnect();
|
|
3864
4082
|
}
|
|
3865
4083
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DBTooltip, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3866
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: DBTooltip, isStandalone: true, selector: "db-tooltip", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, propOverrides: { classPropertyName: "propOverrides", publicName: "propOverrides", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null },
|
|
4084
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: DBTooltip, isStandalone: true, selector: "db-tooltip", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, propOverrides: { classPropertyName: "propOverrides", publicName: "propOverrides", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, emphasis: { classPropertyName: "emphasis", publicName: "emphasis", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, showArrow: { classPropertyName: "showArrow", publicName: "showArrow", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "_ref", first: true, predicate: ["_ref"], descendants: true, isSignal: true }], ngImport: i0, template: `<i
|
|
3867
4085
|
role="tooltip"
|
|
3868
4086
|
aria-hidden="true"
|
|
3869
4087
|
data-gap="true"
|
|
@@ -3900,7 +4118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
3900
4118
|
(click)="handleClick($event)"
|
|
3901
4119
|
>@if(text()){{{text()}}} <ng-content></ng-content
|
|
3902
4120
|
></i> `, styles: [":host{display:contents}\n"] }]
|
|
3903
|
-
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], propOverrides: [{ type: i0.Input, args: [{ isSignal: true, alias: "propOverrides", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }],
|
|
4121
|
+
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], propOverrides: [{ type: i0.Input, args: [{ isSignal: true, alias: "propOverrides", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], emphasis: [{ type: i0.Input, args: [{ isSignal: true, alias: "emphasis", required: false }] }], wrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrap", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], showArrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "showArrow", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], _ref: [{ type: i0.ViewChild, args: ["_ref", { isSignal: true }] }] } });
|
|
3904
4122
|
|
|
3905
4123
|
const defaultProps$u = {};
|
|
3906
4124
|
class DBTag {
|
|
@@ -4037,7 +4255,7 @@ class DBTag {
|
|
|
4037
4255
|
<db-tooltip variant="label">{{getRemoveButtonText()}}</db-tooltip>
|
|
4038
4256
|
</button>
|
|
4039
4257
|
}
|
|
4040
|
-
</div> `, isInline: true, styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DBTooltip, selector: "db-tooltip", inputs: ["id", "propOverrides", "variant", "
|
|
4258
|
+
</div> `, isInline: true, styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DBTooltip, selector: "db-tooltip", inputs: ["id", "propOverrides", "variant", "className", "emphasis", "wrap", "animation", "delay", "width", "showArrow", "placement", "text"] }] }); }
|
|
4041
4259
|
}
|
|
4042
4260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DBTag, decorators: [{
|
|
4043
4261
|
type: Component,
|
|
@@ -4177,7 +4395,13 @@ class DBCustomSelect {
|
|
|
4177
4395
|
this._documentClickListenerCallbackId.set(new DocumentClickListener().addCallback((event) => this.handleDocumentClose(event)));
|
|
4178
4396
|
this._documentScrollListenerCallbackId.set(new DocumentScrollListener().addCallback((event) => this.handleDocumentScroll(event)));
|
|
4179
4397
|
this.handleAutoPlacement();
|
|
4180
|
-
this.
|
|
4398
|
+
this._resizeObserverCallbackId.set(new ResizeObserverListener().observe(document.documentElement, () => this.handleAutoPlacement()));
|
|
4399
|
+
this._intersectionObserverCallbackId.set(new IntersectionObserverListener().observe(this.detailsRef().nativeElement, (entry) => {
|
|
4400
|
+
if (!entry.isIntersecting &&
|
|
4401
|
+
this.detailsRef()?.nativeElement.open) {
|
|
4402
|
+
this.detailsRef().nativeElement.open = false;
|
|
4403
|
+
}
|
|
4404
|
+
}));
|
|
4181
4405
|
if (!event.target.dataset["test"]) {
|
|
4182
4406
|
// We need this workaround for snapshot testing
|
|
4183
4407
|
this.handleOpenByKeyboardFocus();
|
|
@@ -4190,7 +4414,12 @@ class DBCustomSelect {
|
|
|
4190
4414
|
if (this._documentScrollListenerCallbackId()) {
|
|
4191
4415
|
new DocumentScrollListener().removeCallback(this._documentScrollListenerCallbackId());
|
|
4192
4416
|
}
|
|
4193
|
-
|
|
4417
|
+
if (this._resizeObserverCallbackId()) {
|
|
4418
|
+
new ResizeObserverListener().unobserve(this._resizeObserverCallbackId());
|
|
4419
|
+
}
|
|
4420
|
+
if (this._intersectionObserverCallbackId()) {
|
|
4421
|
+
new IntersectionObserverListener().unobserve(this._intersectionObserverCallbackId());
|
|
4422
|
+
}
|
|
4194
4423
|
}
|
|
4195
4424
|
}
|
|
4196
4425
|
getNativeSelectValue() {
|
|
@@ -4678,13 +4907,14 @@ class DBCustomSelect {
|
|
|
4678
4907
|
this._documentClickListenerCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_documentClickListenerCallbackId" }] : /* istanbul ignore next */ []));
|
|
4679
4908
|
this._internalChangeTimestamp = signal(0, ...(ngDevMode ? [{ debugName: "_internalChangeTimestamp" }] : /* istanbul ignore next */ []));
|
|
4680
4909
|
this._documentScrollListenerCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_documentScrollListenerCallbackId" }] : /* istanbul ignore next */ []));
|
|
4681
|
-
this.
|
|
4910
|
+
this._intersectionObserverCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_intersectionObserverCallbackId" }] : /* istanbul ignore next */ []));
|
|
4911
|
+
this._resizeObserverCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_resizeObserverCallbackId" }] : /* istanbul ignore next */ []));
|
|
4682
4912
|
this._searchValue = signal(undefined, ...(ngDevMode ? [{ debugName: "_searchValue" }] : /* istanbul ignore next */ []));
|
|
4683
4913
|
this.selectAllChecked = signal(false, ...(ngDevMode ? [{ debugName: "selectAllChecked" }] : /* istanbul ignore next */ []));
|
|
4684
4914
|
this.selectAllIndeterminate = signal(false, ...(ngDevMode ? [{ debugName: "selectAllIndeterminate" }] : /* istanbul ignore next */ []));
|
|
4685
4915
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
4686
4916
|
/** Signal Forms optional fields (Duck-Typing compatibility) */
|
|
4687
|
-
this.hidden = input(false, ...(ngDevMode ?
|
|
4917
|
+
this.hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
4688
4918
|
this.errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
4689
4919
|
/** @internal Signal Forms validation state */
|
|
4690
4920
|
this._validMessage = signal('', ...(ngDevMode ? [{ debugName: "_validMessage" }] : /* istanbul ignore next */ []));
|
|
@@ -4693,11 +4923,15 @@ class DBCustomSelect {
|
|
|
4693
4923
|
/** Signal Forms alias — maps to 'values' for FormValueControl duck-typing */
|
|
4694
4924
|
this.value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
|
|
4695
4925
|
/**
|
|
4696
|
-
* @internal Tracks the origin of the last write to prevent
|
|
4697
|
-
*
|
|
4698
|
-
*
|
|
4926
|
+
* @internal Tracks the origin of the last write to prevent redundant
|
|
4927
|
+
* re-processing within the same synchronous microtask.
|
|
4928
|
+
* NOTE: The actual infinite-loop prevention relies on Angular's signal
|
|
4929
|
+
* equality check (setting a signal to the same value does not re-notify).
|
|
4930
|
+
* This marker is an optimization to skip unnecessary array conversions.
|
|
4699
4931
|
*/
|
|
4700
4932
|
this._syncSource = 'none';
|
|
4933
|
+
/** @internal Tracks whether the value alias has been explicitly bound (driven by Signal Forms). */
|
|
4934
|
+
this._valueAliasActive = false;
|
|
4701
4935
|
/** @internal Sync value → values (Signal Forms writes to value) */
|
|
4702
4936
|
this._syncValueToValues = effect(() => {
|
|
4703
4937
|
const v = this.value();
|
|
@@ -4705,10 +4939,20 @@ class DBCustomSelect {
|
|
|
4705
4939
|
this._syncSource = 'none';
|
|
4706
4940
|
return;
|
|
4707
4941
|
}
|
|
4942
|
+
// Only sync when the alias is actively driven (not initial undefined from unbound state)
|
|
4943
|
+
if (v === undefined && !this._valueAliasActive) {
|
|
4944
|
+
return;
|
|
4945
|
+
}
|
|
4946
|
+
this._valueAliasActive = true;
|
|
4708
4947
|
this._syncSource = 'value';
|
|
4709
4948
|
if (v !== undefined) {
|
|
4710
4949
|
this.values.set(Array.isArray(v) ? v : v ? [v] : []);
|
|
4711
4950
|
}
|
|
4951
|
+
else {
|
|
4952
|
+
// Reset: undefined clears the selection and resets the sync marker
|
|
4953
|
+
// so subsequent user interactions via 'values' are not blocked.
|
|
4954
|
+
this.values.set([]);
|
|
4955
|
+
}
|
|
4712
4956
|
}, ...(ngDevMode ? [{ debugName: "_syncValueToValues" }] : /* istanbul ignore next */ []));
|
|
4713
4957
|
/** @internal Sync values → value (CVA/user interaction writes to values) */
|
|
4714
4958
|
this._syncValuesToValue = effect(() => {
|
|
@@ -5088,23 +5332,24 @@ class DBCustomSelect {
|
|
|
5088
5332
|
if (typeof window !== "undefined") {
|
|
5089
5333
|
this.resetIds();
|
|
5090
5334
|
this._invalidMessage.set(this.invalidMessage() || DEFAULT_INVALID_MESSAGE);
|
|
5091
|
-
if (typeof window !== "undefined" && "IntersectionObserver" in window) {
|
|
5092
|
-
this._observer.set(new IntersectionObserver((payload) => {
|
|
5093
|
-
if (this.detailsRef()?.nativeElement) {
|
|
5094
|
-
const entry = payload.find(({ target }) => target === this.detailsRef()?.nativeElement);
|
|
5095
|
-
if (entry &&
|
|
5096
|
-
!entry.isIntersecting &&
|
|
5097
|
-
this.detailsRef()?.nativeElement.open) {
|
|
5098
|
-
this.detailsRef().nativeElement.open = false;
|
|
5099
|
-
}
|
|
5100
|
-
}
|
|
5101
|
-
}));
|
|
5102
|
-
}
|
|
5103
5335
|
this.setupObserver(element);
|
|
5104
5336
|
}
|
|
5105
5337
|
}
|
|
5106
5338
|
ngOnDestroy() {
|
|
5107
5339
|
this.abortController()?.abort();
|
|
5340
|
+
// Clean up singleton observers if dropdown was open when unmounting
|
|
5341
|
+
if (this._documentClickListenerCallbackId()) {
|
|
5342
|
+
new DocumentClickListener().removeCallback(this._documentClickListenerCallbackId());
|
|
5343
|
+
}
|
|
5344
|
+
if (this._documentScrollListenerCallbackId()) {
|
|
5345
|
+
new DocumentScrollListener().removeCallback(this._documentScrollListenerCallbackId());
|
|
5346
|
+
}
|
|
5347
|
+
if (this._resizeObserverCallbackId()) {
|
|
5348
|
+
new ResizeObserverListener().unobserve(this._resizeObserverCallbackId());
|
|
5349
|
+
}
|
|
5350
|
+
if (this._intersectionObserverCallbackId()) {
|
|
5351
|
+
new IntersectionObserverListener().unobserve(this._intersectionObserverCallbackId());
|
|
5352
|
+
}
|
|
5108
5353
|
this.observer()?.disconnect();
|
|
5109
5354
|
}
|
|
5110
5355
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DBCustomSelect, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -5320,7 +5565,7 @@ class DBCustomSelect {
|
|
|
5320
5565
|
role="status"
|
|
5321
5566
|
>{{_voiceOverFallback()}}</span
|
|
5322
5567
|
>
|
|
5323
|
-
</div> `, isInline: true, styles: [":host{display:contents}:host([hidden]){display:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DBTag, selector: "db-tag", inputs: ["removeButton", "id", "propOverrides", "className", "semantic", "emphasis", "icon", "showCheckState", "showIcon", "noText", "overflow", "text", "behavior"], outputs: ["remove"] }, { kind: "component", type: DBCustomSelectDropdown, selector: "db-custom-select-dropdown", inputs: ["id", "propOverrides", "className", "width"] }, { kind: "component", type: DBInput, selector: "db-input", inputs: ["invalidMessage", "id", "propOverrides", "dataListId", "message", "showMessage", "value", "validMessage", "validation", "required", "minLength", "maxLength", "pattern", "dataList", "className", "variant", "showLabel", "showIconLeading", "showIcon", "iconLeading", "icon", "iconTrailing", "showRequiredAsterisk", "showIconTrailing", "label", "fieldSizing", "name", "type", "multiple", "accept", "placeholder", "disabled", "step", "maxlength", "minlength", "max", "min", "readOnly", "readonly", "form", "size", "autocomplete", "autofocus", "enterkeyhint", "inputmode", "ariaDescribedBy", "messageSize", "messageIcon", "validMessageSize", "invalidMessageSize", "hidden", "errors"], outputs: ["valueChange", "disabledChange", "input", "change", "blur", "focus", "touch"] }, { kind: "component", type: DBCustomSelectList, selector: "db-custom-select-list", inputs: ["multiple", "label", "id", "propOverrides", "className"] }, { kind: "component", type: DBCustomSelectListItem, selector: "db-custom-select-list-item", inputs: ["isGroupTitle", "showDivider", "type", "checked", "id", "propOverrides", "className", "groupTitle", "icon", "showIcon", "name", "disabled", "value", "label", "hidden", "errors"], outputs: ["checkedChange", "disabledChange", "change", "touch"] }, { kind: "component", type: DBInfotext, selector: "db-infotext", inputs: ["id", "propOverrides", "className", "icon", "semantic", "size", "wrap", "showIcon", "text"] }, { kind: "component", type: DBButton, selector: "db-button", inputs: ["type", "commandfor", "id", "propOverrides", "className", "disabled", "iconLeading", "icon", "showIconLeading", "showIcon", "iconTrailing", "showIconTrailing", "size", "width", "variant", "wrap", "noText", "name", "form", "value", "command", "text"], outputs: ["click"] }, { kind: "component", type: DBTooltip, selector: "db-tooltip", inputs: ["id", "propOverrides", "variant", "
|
|
5568
|
+
</div> `, isInline: true, styles: [":host{display:contents}:host([hidden]){display:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DBTag, selector: "db-tag", inputs: ["removeButton", "id", "propOverrides", "className", "semantic", "emphasis", "icon", "showCheckState", "showIcon", "noText", "overflow", "text", "behavior"], outputs: ["remove"] }, { kind: "component", type: DBCustomSelectDropdown, selector: "db-custom-select-dropdown", inputs: ["id", "propOverrides", "className", "width"] }, { kind: "component", type: DBInput, selector: "db-input", inputs: ["invalidMessage", "id", "propOverrides", "dataListId", "message", "showMessage", "value", "validMessage", "validation", "required", "minLength", "maxLength", "pattern", "dataList", "className", "variant", "showLabel", "showIconLeading", "showIcon", "iconLeading", "icon", "iconTrailing", "showRequiredAsterisk", "showIconTrailing", "label", "fieldSizing", "name", "type", "multiple", "accept", "placeholder", "disabled", "step", "maxlength", "minlength", "max", "min", "readOnly", "readonly", "form", "size", "autocomplete", "autofocus", "enterkeyhint", "inputmode", "ariaDescribedBy", "messageSize", "messageIcon", "validMessageSize", "invalidMessageSize", "hidden", "errors"], outputs: ["valueChange", "disabledChange", "input", "change", "blur", "focus", "touch"] }, { kind: "component", type: DBCustomSelectList, selector: "db-custom-select-list", inputs: ["multiple", "label", "id", "propOverrides", "className"] }, { kind: "component", type: DBCustomSelectListItem, selector: "db-custom-select-list-item", inputs: ["isGroupTitle", "showDivider", "type", "checked", "id", "propOverrides", "className", "groupTitle", "icon", "showIcon", "name", "disabled", "value", "label", "hidden", "errors"], outputs: ["checkedChange", "disabledChange", "change", "touch"] }, { kind: "component", type: DBInfotext, selector: "db-infotext", inputs: ["id", "propOverrides", "className", "icon", "semantic", "size", "wrap", "showIcon", "text"] }, { kind: "component", type: DBButton, selector: "db-button", inputs: ["type", "commandfor", "id", "propOverrides", "className", "disabled", "iconLeading", "icon", "showIconLeading", "showIcon", "iconTrailing", "showIconTrailing", "size", "width", "variant", "wrap", "noText", "name", "form", "value", "command", "text"], outputs: ["click"] }, { kind: "component", type: DBTooltip, selector: "db-tooltip", inputs: ["id", "propOverrides", "variant", "className", "emphasis", "wrap", "animation", "delay", "width", "showArrow", "placement", "text"] }] }); }
|
|
5324
5569
|
}
|
|
5325
5570
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DBCustomSelect, decorators: [{
|
|
5326
5571
|
type: Component,
|
|
@@ -7501,7 +7746,7 @@ class DBPopover {
|
|
|
7501
7746
|
if (article) {
|
|
7502
7747
|
// This is a workaround for angular
|
|
7503
7748
|
void delay(() => {
|
|
7504
|
-
handleFixedPopover(article, this._ref()?.nativeElement
|
|
7749
|
+
handleFixedPopover(article, this._ref()?.nativeElement);
|
|
7505
7750
|
}, 1);
|
|
7506
7751
|
}
|
|
7507
7752
|
}
|
|
@@ -7513,11 +7758,29 @@ class DBPopover {
|
|
|
7513
7758
|
}
|
|
7514
7759
|
handleEnter() {
|
|
7515
7760
|
this.isExpanded.set(true);
|
|
7761
|
+
// Clean up any existing observers to prevent leaks from repeated enter
|
|
7762
|
+
if (this._documentScrollListenerCallbackId()) {
|
|
7763
|
+
new DocumentScrollListener().removeCallback(this._documentScrollListenerCallbackId());
|
|
7764
|
+
this._documentScrollListenerCallbackId.set(undefined);
|
|
7765
|
+
}
|
|
7766
|
+
if (this._resizeObserverCallbackId()) {
|
|
7767
|
+
new ResizeObserverListener().unobserve(this._resizeObserverCallbackId());
|
|
7768
|
+
this._resizeObserverCallbackId.set(undefined);
|
|
7769
|
+
}
|
|
7770
|
+
if (this._intersectionObserverCallbackId()) {
|
|
7771
|
+
new IntersectionObserverListener().unobserve(this._intersectionObserverCallbackId());
|
|
7772
|
+
this._intersectionObserverCallbackId.set(undefined);
|
|
7773
|
+
}
|
|
7516
7774
|
this._documentScrollListenerCallbackId.set(new DocumentScrollListener().addCallback((event) => this.handleDocumentScroll(event)));
|
|
7517
7775
|
this.handleAutoPlacement();
|
|
7776
|
+
this._resizeObserverCallbackId.set(new ResizeObserverListener().observe(document.documentElement, () => this.handleAutoPlacement()));
|
|
7518
7777
|
const child = this.getTrigger();
|
|
7519
7778
|
if (child) {
|
|
7520
|
-
this.
|
|
7779
|
+
this._intersectionObserverCallbackId.set(new IntersectionObserverListener().observe(child, (entry) => {
|
|
7780
|
+
if (!entry.isIntersecting) {
|
|
7781
|
+
this.handleEscape(false);
|
|
7782
|
+
}
|
|
7783
|
+
}));
|
|
7521
7784
|
}
|
|
7522
7785
|
}
|
|
7523
7786
|
handleLeave(event) {
|
|
@@ -7530,10 +7793,15 @@ class DBPopover {
|
|
|
7530
7793
|
this.isExpanded.set(false);
|
|
7531
7794
|
if (this._documentScrollListenerCallbackId()) {
|
|
7532
7795
|
new DocumentScrollListener().removeCallback(this._documentScrollListenerCallbackId());
|
|
7796
|
+
this._documentScrollListenerCallbackId.set(undefined);
|
|
7797
|
+
}
|
|
7798
|
+
if (this._resizeObserverCallbackId()) {
|
|
7799
|
+
new ResizeObserverListener().unobserve(this._resizeObserverCallbackId());
|
|
7800
|
+
this._resizeObserverCallbackId.set(undefined);
|
|
7533
7801
|
}
|
|
7534
|
-
|
|
7535
|
-
|
|
7536
|
-
this.
|
|
7802
|
+
if (this._intersectionObserverCallbackId()) {
|
|
7803
|
+
new IntersectionObserverListener().unobserve(this._intersectionObserverCallbackId());
|
|
7804
|
+
this._intersectionObserverCallbackId.set(undefined);
|
|
7537
7805
|
}
|
|
7538
7806
|
}
|
|
7539
7807
|
}
|
|
@@ -7577,7 +7845,6 @@ class DBPopover {
|
|
|
7577
7845
|
constructor() {
|
|
7578
7846
|
this.cls = cls;
|
|
7579
7847
|
this.getBooleanAsString = getBooleanAsString;
|
|
7580
|
-
this.placement = input(...(ngDevMode ? [undefined, { debugName: "placement" }] : /* istanbul ignore next */ []));
|
|
7581
7848
|
this.id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
|
|
7582
7849
|
this.propOverrides = input(...(ngDevMode ? [undefined, { debugName: "propOverrides" }] : /* istanbul ignore next */ []));
|
|
7583
7850
|
this.className = input(...(ngDevMode ? [undefined, { debugName: "className" }] : /* istanbul ignore next */ []));
|
|
@@ -7587,11 +7854,13 @@ class DBPopover {
|
|
|
7587
7854
|
this.open = input(...(ngDevMode ? [undefined, { debugName: "open" }] : /* istanbul ignore next */ []));
|
|
7588
7855
|
this.delay = input(...(ngDevMode ? [undefined, { debugName: "delay" }] : /* istanbul ignore next */ []));
|
|
7589
7856
|
this.width = input(...(ngDevMode ? [undefined, { debugName: "width" }] : /* istanbul ignore next */ []));
|
|
7857
|
+
this.placement = input(...(ngDevMode ? [undefined, { debugName: "placement" }] : /* istanbul ignore next */ []));
|
|
7590
7858
|
this._ref = viewChild("_ref", ...(ngDevMode ? [{ debugName: "_ref" }] : /* istanbul ignore next */ []));
|
|
7591
7859
|
this.initialized = signal(false, ...(ngDevMode ? [{ debugName: "initialized" }] : /* istanbul ignore next */ []));
|
|
7592
7860
|
this.isExpanded = signal(false, ...(ngDevMode ? [{ debugName: "isExpanded" }] : /* istanbul ignore next */ []));
|
|
7593
7861
|
this._documentScrollListenerCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_documentScrollListenerCallbackId" }] : /* istanbul ignore next */ []));
|
|
7594
|
-
this.
|
|
7862
|
+
this._intersectionObserverCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_intersectionObserverCallbackId" }] : /* istanbul ignore next */ []));
|
|
7863
|
+
this._resizeObserverCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_resizeObserverCallbackId" }] : /* istanbul ignore next */ []));
|
|
7595
7864
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
7596
7865
|
if (typeof window !== "undefined") {
|
|
7597
7866
|
effect(() => {
|
|
@@ -7613,15 +7882,6 @@ class DBPopover {
|
|
|
7613
7882
|
["mouseleave", "focusout"].forEach((event) => {
|
|
7614
7883
|
this._ref()?.nativeElement.addEventListener(event, () => this.handleLeave());
|
|
7615
7884
|
});
|
|
7616
|
-
if (typeof window !== "undefined" &&
|
|
7617
|
-
"IntersectionObserver" in window) {
|
|
7618
|
-
this._observer.set(new IntersectionObserver((payload) => {
|
|
7619
|
-
const entry = payload.find(({ target }) => target === this.getTrigger());
|
|
7620
|
-
if (entry && !entry.isIntersecting) {
|
|
7621
|
-
this.handleEscape(false);
|
|
7622
|
-
}
|
|
7623
|
-
}));
|
|
7624
|
-
}
|
|
7625
7885
|
}
|
|
7626
7886
|
}, Number(VERSION.major) < 19
|
|
7627
7887
|
? { allowSignalWrites: true }
|
|
@@ -7692,10 +7952,22 @@ class DBPopover {
|
|
|
7692
7952
|
}
|
|
7693
7953
|
}
|
|
7694
7954
|
ngOnDestroy() {
|
|
7955
|
+
if (this._documentScrollListenerCallbackId()) {
|
|
7956
|
+
new DocumentScrollListener().removeCallback(this._documentScrollListenerCallbackId());
|
|
7957
|
+
this._documentScrollListenerCallbackId.set(undefined);
|
|
7958
|
+
}
|
|
7959
|
+
if (this._resizeObserverCallbackId()) {
|
|
7960
|
+
new ResizeObserverListener().unobserve(this._resizeObserverCallbackId());
|
|
7961
|
+
this._resizeObserverCallbackId.set(undefined);
|
|
7962
|
+
}
|
|
7963
|
+
if (this._intersectionObserverCallbackId()) {
|
|
7964
|
+
new IntersectionObserverListener().unobserve(this._intersectionObserverCallbackId());
|
|
7965
|
+
this._intersectionObserverCallbackId.set(undefined);
|
|
7966
|
+
}
|
|
7695
7967
|
this.observer()?.disconnect();
|
|
7696
7968
|
}
|
|
7697
7969
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DBPopover, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7698
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.17", type: DBPopover, isStandalone: true, selector: "db-popover", inputs: {
|
|
7970
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.17", type: DBPopover, isStandalone: true, selector: "db-popover", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, propOverrides: { classPropertyName: "propOverrides", publicName: "propOverrides", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "_ref", first: true, predicate: ["_ref"], descendants: true, isSignal: true }], ngImport: i0, template: `<div
|
|
7699
7971
|
#_ref
|
|
7700
7972
|
[attr.id]="id() ?? propOverrides()?.id"
|
|
7701
7973
|
[class]="cls('db-popover', className())"
|
|
@@ -7736,7 +8008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
7736
8008
|
<ng-content></ng-content>
|
|
7737
8009
|
</article>
|
|
7738
8010
|
</div> `, styles: [":host{display:contents}\n"] }]
|
|
7739
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
8011
|
+
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], propOverrides: [{ type: i0.Input, args: [{ isSignal: true, alias: "propOverrides", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], spacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spacing", required: false }] }], gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], _ref: [{ type: i0.ViewChild, args: ["_ref", { isSignal: true }] }] } });
|
|
7740
8012
|
|
|
7741
8013
|
const defaultProps$h = {};
|
|
7742
8014
|
class DBRadio {
|
|
@@ -7819,7 +8091,7 @@ class DBRadio {
|
|
|
7819
8091
|
this.abortController = signal(undefined, ...(ngDevMode ? [{ debugName: "abortController" }] : /* istanbul ignore next */ []));
|
|
7820
8092
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
7821
8093
|
/** Signal Forms optional fields (Duck-Typing compatibility) */
|
|
7822
|
-
this.hidden = input(false, ...(ngDevMode ?
|
|
8094
|
+
this.hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
7823
8095
|
this.errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
7824
8096
|
/** Signal Forms touch output — emitted on blur to mark the control as touched */
|
|
7825
8097
|
this.touch = output();
|
|
@@ -8352,7 +8624,7 @@ class DBSelect {
|
|
|
8352
8624
|
this.abortController = signal(undefined, ...(ngDevMode ? [{ debugName: "abortController" }] : /* istanbul ignore next */ []));
|
|
8353
8625
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
8354
8626
|
/** Signal Forms optional fields (Duck-Typing compatibility) */
|
|
8355
|
-
this.hidden = input(false, ...(ngDevMode ?
|
|
8627
|
+
this.hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
8356
8628
|
this.errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
8357
8629
|
/** @internal Signal Forms validation state */
|
|
8358
8630
|
this._validMessage = signal('', ...(ngDevMode ? [{ debugName: "_validMessage" }] : /* istanbul ignore next */ []));
|
|
@@ -9056,7 +9328,7 @@ class DBSwitch {
|
|
|
9056
9328
|
this.abortController = signal(undefined, ...(ngDevMode ? [{ debugName: "abortController" }] : /* istanbul ignore next */ []));
|
|
9057
9329
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
9058
9330
|
/** Signal Forms optional fields (Duck-Typing compatibility) */
|
|
9059
|
-
this.hidden = input(false, ...(ngDevMode ?
|
|
9331
|
+
this.hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
9060
9332
|
this.errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
9061
9333
|
/** @internal Signal Forms validation state */
|
|
9062
9334
|
this._validMessage = signal('', ...(ngDevMode ? [{ debugName: "_validMessage" }] : /* istanbul ignore next */ []));
|
|
@@ -9420,7 +9692,7 @@ class DBTabItem {
|
|
|
9420
9692
|
this.boundSetSelectedOnChange = signal(undefined, ...(ngDevMode ? [{ debugName: "boundSetSelectedOnChange" }] : /* istanbul ignore next */ []));
|
|
9421
9693
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
9422
9694
|
/** Signal Forms optional fields (Duck-Typing compatibility) */
|
|
9423
|
-
this.hidden = input(false, ...(ngDevMode ?
|
|
9695
|
+
this.hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
9424
9696
|
this.errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
9425
9697
|
/** Signal Forms touch output — emitted on blur to mark the control as touched */
|
|
9426
9698
|
this.touch = output();
|
|
@@ -10971,13 +11243,13 @@ class DBTabs {
|
|
|
10971
11243
|
container.addEventListener("scroll", () => {
|
|
10972
11244
|
this.evaluateScrollButtons(container);
|
|
10973
11245
|
});
|
|
10974
|
-
//
|
|
10975
|
-
|
|
10976
|
-
|
|
11246
|
+
// Re-evaluate scroll buttons on container resize because it
|
|
11247
|
+
// provides more accurate, container-specific resize
|
|
11248
|
+
// detection than global window resize events.
|
|
11249
|
+
if (!this._resizeObserverCallbackId()) {
|
|
11250
|
+
this._resizeObserverCallbackId.set(new ResizeObserverListener().observe(container, () => {
|
|
10977
11251
|
this.evaluateScrollButtons(container);
|
|
10978
|
-
});
|
|
10979
|
-
observer.observe(container);
|
|
10980
|
-
this._resizeObserver.set(observer);
|
|
11252
|
+
}));
|
|
10981
11253
|
}
|
|
10982
11254
|
}
|
|
10983
11255
|
}
|
|
@@ -10986,7 +11258,7 @@ class DBTabs {
|
|
|
10986
11258
|
}
|
|
10987
11259
|
initTabs(init) {
|
|
10988
11260
|
if (this._ref()?.nativeElement) {
|
|
10989
|
-
const tabItems = Array.from(this._ref()?.nativeElement.
|
|
11261
|
+
const tabItems = Array.from(this._ref()?.nativeElement.querySelectorAll(":is(:scope > db-tab-list .db-tab-item, :scope > .db-tab-list .db-tab-item)"));
|
|
10990
11262
|
const tabPanels = Array.from(this._ref()?.nativeElement.querySelectorAll(":is(:scope > .db-tab-panel, :scope > db-tab-panel > .db-tab-panel)"));
|
|
10991
11263
|
for (const tabItem of tabItems) {
|
|
10992
11264
|
const index = tabItems.indexOf(tabItem);
|
|
@@ -11074,6 +11346,8 @@ class DBTabs {
|
|
|
11074
11346
|
}
|
|
11075
11347
|
constructor() {
|
|
11076
11348
|
this.cls = cls;
|
|
11349
|
+
this.DEFAULT_SCROLL_LEFT = DEFAULT_SCROLL_LEFT;
|
|
11350
|
+
this.DEFAULT_SCROLL_RIGHT = DEFAULT_SCROLL_RIGHT;
|
|
11077
11351
|
this.name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
|
|
11078
11352
|
this.tabs = input(...(ngDevMode ? [undefined, { debugName: "tabs" }] : /* istanbul ignore next */ []));
|
|
11079
11353
|
this.arrowScrollDistance = input(...(ngDevMode ? [undefined, { debugName: "arrowScrollDistance" }] : /* istanbul ignore next */ []));
|
|
@@ -11086,6 +11360,8 @@ class DBTabs {
|
|
|
11086
11360
|
this.className = input(...(ngDevMode ? [undefined, { debugName: "className" }] : /* istanbul ignore next */ []));
|
|
11087
11361
|
this.alignment = input(...(ngDevMode ? [undefined, { debugName: "alignment" }] : /* istanbul ignore next */ []));
|
|
11088
11362
|
this.width = input(...(ngDevMode ? [undefined, { debugName: "width" }] : /* istanbul ignore next */ []));
|
|
11363
|
+
this.scrollLeftText = input(...(ngDevMode ? [undefined, { debugName: "scrollLeftText" }] : /* istanbul ignore next */ []));
|
|
11364
|
+
this.scrollRightText = input(...(ngDevMode ? [undefined, { debugName: "scrollRightText" }] : /* istanbul ignore next */ []));
|
|
11089
11365
|
this.indexChange = output();
|
|
11090
11366
|
this.tabSelect = output();
|
|
11091
11367
|
this._ref = viewChild("_ref", ...(ngDevMode ? [{ debugName: "_ref" }] : /* istanbul ignore next */ []));
|
|
@@ -11094,7 +11370,7 @@ class DBTabs {
|
|
|
11094
11370
|
this.showScrollLeft = signal(false, ...(ngDevMode ? [{ debugName: "showScrollLeft" }] : /* istanbul ignore next */ []));
|
|
11095
11371
|
this.showScrollRight = signal(false, ...(ngDevMode ? [{ debugName: "showScrollRight" }] : /* istanbul ignore next */ []));
|
|
11096
11372
|
this.scrollContainer = signal(null, ...(ngDevMode ? [{ debugName: "scrollContainer" }] : /* istanbul ignore next */ []));
|
|
11097
|
-
this.
|
|
11373
|
+
this._resizeObserverCallbackId = signal(undefined, ...(ngDevMode ? [{ debugName: "_resizeObserverCallbackId" }] : /* istanbul ignore next */ []));
|
|
11098
11374
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
11099
11375
|
if (typeof window !== "undefined") {
|
|
11100
11376
|
effect(() => {
|
|
@@ -11179,12 +11455,14 @@ class DBTabs {
|
|
|
11179
11455
|
}
|
|
11180
11456
|
}
|
|
11181
11457
|
ngOnDestroy() {
|
|
11182
|
-
this.
|
|
11183
|
-
|
|
11458
|
+
if (this._resizeObserverCallbackId()) {
|
|
11459
|
+
new ResizeObserverListener().unobserve(this._resizeObserverCallbackId());
|
|
11460
|
+
this._resizeObserverCallbackId.set(undefined);
|
|
11461
|
+
}
|
|
11184
11462
|
this.observer()?.disconnect();
|
|
11185
11463
|
}
|
|
11186
11464
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DBTabs, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11187
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: DBTabs, isStandalone: true, selector: "db-tabs", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: false, transformFunction: null }, arrowScrollDistance: { classPropertyName: "arrowScrollDistance", publicName: "arrowScrollDistance", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, behavior: { classPropertyName: "behavior", publicName: "behavior", isSignal: true, isRequired: false, transformFunction: null }, initialSelectedMode: { classPropertyName: "initialSelectedMode", publicName: "initialSelectedMode", isSignal: true, isRequired: false, transformFunction: null }, initialSelectedIndex: { classPropertyName: "initialSelectedIndex", publicName: "initialSelectedIndex", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, propOverrides: { classPropertyName: "propOverrides", publicName: "propOverrides", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { indexChange: "indexChange", tabSelect: "tabSelect" }, viewQueries: [{ propertyName: "_ref", first: true, predicate: ["_ref"], descendants: true, isSignal: true }], ngImport: i0, template: `<div
|
|
11465
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: DBTabs, isStandalone: true, selector: "db-tabs", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: false, transformFunction: null }, arrowScrollDistance: { classPropertyName: "arrowScrollDistance", publicName: "arrowScrollDistance", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, behavior: { classPropertyName: "behavior", publicName: "behavior", isSignal: true, isRequired: false, transformFunction: null }, initialSelectedMode: { classPropertyName: "initialSelectedMode", publicName: "initialSelectedMode", isSignal: true, isRequired: false, transformFunction: null }, initialSelectedIndex: { classPropertyName: "initialSelectedIndex", publicName: "initialSelectedIndex", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, propOverrides: { classPropertyName: "propOverrides", publicName: "propOverrides", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, scrollLeftText: { classPropertyName: "scrollLeftText", publicName: "scrollLeftText", isSignal: true, isRequired: false, transformFunction: null }, scrollRightText: { classPropertyName: "scrollRightText", publicName: "scrollRightText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { indexChange: "indexChange", tabSelect: "tabSelect" }, viewQueries: [{ propertyName: "_ref", first: true, predicate: ["_ref"], descendants: true, isSignal: true }], ngImport: i0, template: `<div
|
|
11188
11466
|
#_ref
|
|
11189
11467
|
[attr.id]="id() ?? propOverrides()?.id"
|
|
11190
11468
|
[class]="cls('db-tabs', className())"
|
|
@@ -11200,12 +11478,11 @@ class DBTabs {
|
|
|
11200
11478
|
variant="ghost"
|
|
11201
11479
|
icon="chevron_left"
|
|
11202
11480
|
type="button"
|
|
11203
|
-
className="
|
|
11481
|
+
className="overflow-scroll-left-button"
|
|
11204
11482
|
[noText]="true"
|
|
11205
11483
|
(click)="scroll(true)"
|
|
11484
|
+
>{{scrollLeftText() ?? DEFAULT_SCROLL_LEFT}}</db-button
|
|
11206
11485
|
>
|
|
11207
|
-
Scroll left
|
|
11208
|
-
</db-button>
|
|
11209
11486
|
} @if(tabs()){
|
|
11210
11487
|
<db-tab-list>
|
|
11211
11488
|
@for (tab of convertTabs();track trackByTab0(index, tab);let index =
|
|
@@ -11228,12 +11505,11 @@ class DBTabs {
|
|
|
11228
11505
|
variant="ghost"
|
|
11229
11506
|
icon="chevron_right"
|
|
11230
11507
|
type="button"
|
|
11231
|
-
className="
|
|
11508
|
+
className="overflow-scroll-right-button"
|
|
11232
11509
|
[noText]="true"
|
|
11233
11510
|
(click)="scroll()"
|
|
11511
|
+
>{{scrollRightText() ?? DEFAULT_SCROLL_RIGHT}}</db-button
|
|
11234
11512
|
>
|
|
11235
|
-
Scroll right
|
|
11236
|
-
</db-button>
|
|
11237
11513
|
}
|
|
11238
11514
|
<ng-content></ng-content>
|
|
11239
11515
|
</div> `, isInline: true, styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DBButton, selector: "db-button", inputs: ["type", "commandfor", "id", "propOverrides", "className", "disabled", "iconLeading", "icon", "showIconLeading", "showIcon", "iconTrailing", "showIconTrailing", "size", "width", "variant", "wrap", "noText", "name", "form", "value", "command", "text"], outputs: ["click"] }, { kind: "component", type: DBTabList, selector: "db-tab-list", inputs: ["id", "propOverrides", "className"] }, { kind: "component", type: DBTabItem, selector: "db-tab-item", inputs: ["active", "name", "className", "id", "propOverrides", "iconLeading", "icon", "iconTrailing", "showIconLeading", "showIcon", "showIconTrailing", "noText", "disabled", "checked", "label", "hidden", "errors"], outputs: ["disabledChange", "checkedChange", "change", "touch"] }, { kind: "component", type: DBTabPanel, selector: "db-tab-panel", inputs: ["className", "id", "propOverrides", "content"] }] }); }
|
|
@@ -11256,12 +11532,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
11256
11532
|
variant="ghost"
|
|
11257
11533
|
icon="chevron_left"
|
|
11258
11534
|
type="button"
|
|
11259
|
-
className="
|
|
11535
|
+
className="overflow-scroll-left-button"
|
|
11260
11536
|
[noText]="true"
|
|
11261
11537
|
(click)="scroll(true)"
|
|
11538
|
+
>{{scrollLeftText() ?? DEFAULT_SCROLL_LEFT}}</db-button
|
|
11262
11539
|
>
|
|
11263
|
-
Scroll left
|
|
11264
|
-
</db-button>
|
|
11265
11540
|
} @if(tabs()){
|
|
11266
11541
|
<db-tab-list>
|
|
11267
11542
|
@for (tab of convertTabs();track trackByTab0(index, tab);let index =
|
|
@@ -11284,16 +11559,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
11284
11559
|
variant="ghost"
|
|
11285
11560
|
icon="chevron_right"
|
|
11286
11561
|
type="button"
|
|
11287
|
-
className="
|
|
11562
|
+
className="overflow-scroll-right-button"
|
|
11288
11563
|
[noText]="true"
|
|
11289
11564
|
(click)="scroll()"
|
|
11565
|
+
>{{scrollRightText() ?? DEFAULT_SCROLL_RIGHT}}</db-button
|
|
11290
11566
|
>
|
|
11291
|
-
Scroll right
|
|
11292
|
-
</db-button>
|
|
11293
11567
|
}
|
|
11294
11568
|
<ng-content></ng-content>
|
|
11295
11569
|
</div> `, styles: [":host{display:contents}\n"] }]
|
|
11296
|
-
}], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], tabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabs", required: false }] }], arrowScrollDistance: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowScrollDistance", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], behavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "behavior", required: false }] }], initialSelectedMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialSelectedMode", required: false }] }], initialSelectedIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialSelectedIndex", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], propOverrides: [{ type: i0.Input, args: [{ isSignal: true, alias: "propOverrides", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], alignment: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignment", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], indexChange: [{ type: i0.Output, args: ["indexChange"] }], tabSelect: [{ type: i0.Output, args: ["tabSelect"] }], _ref: [{ type: i0.ViewChild, args: ["_ref", { isSignal: true }] }] } });
|
|
11570
|
+
}], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], tabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabs", required: false }] }], arrowScrollDistance: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowScrollDistance", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], behavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "behavior", required: false }] }], initialSelectedMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialSelectedMode", required: false }] }], initialSelectedIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialSelectedIndex", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], propOverrides: [{ type: i0.Input, args: [{ isSignal: true, alias: "propOverrides", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], alignment: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignment", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], scrollLeftText: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollLeftText", required: false }] }], scrollRightText: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollRightText", required: false }] }], indexChange: [{ type: i0.Output, args: ["indexChange"] }], tabSelect: [{ type: i0.Output, args: ["tabSelect"] }], _ref: [{ type: i0.ViewChild, args: ["_ref", { isSignal: true }] }] } });
|
|
11297
11571
|
|
|
11298
11572
|
const TabsBehaviorList = ['scrollbar', 'arrows'];
|
|
11299
11573
|
const TabsInitialSelectedModeList = ['auto', 'manually'];
|
|
@@ -11493,7 +11767,7 @@ class DBTextarea {
|
|
|
11493
11767
|
this.abortController = signal(undefined, ...(ngDevMode ? [{ debugName: "abortController" }] : /* istanbul ignore next */ []));
|
|
11494
11768
|
this.observer = signal(undefined, ...(ngDevMode ? [{ debugName: "observer" }] : /* istanbul ignore next */ []));
|
|
11495
11769
|
/** Signal Forms optional fields (Duck-Typing compatibility) */
|
|
11496
|
-
this.hidden = input(false, ...(ngDevMode ?
|
|
11770
|
+
this.hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
11497
11771
|
this.errors = input(undefined, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
11498
11772
|
/** @internal Signal Forms validation state */
|
|
11499
11773
|
this._validMessage = signal('', ...(ngDevMode ? [{ debugName: "_validMessage" }] : /* istanbul ignore next */ []));
|
|
@@ -11841,5 +12115,5 @@ const AlignmentList = ['start', 'center', 'end'];
|
|
|
11841
12115
|
* Generated bundle index. Do not edit.
|
|
11842
12116
|
*/
|
|
11843
12117
|
|
|
11844
|
-
export { AccordionBehaviorList, AccordionVariantList, AlignmentList, AutoCompleteList, BadgePlacementList, ButtonTypeList, ButtonVariantList, COLOR, COLORS, COLORS_SIMPLE, COLOR_CONST, COLOR_SIMPLE, CardBehaviorList, CardElevationLevelList, CustomSelectDropdownWidthList, CustomSelectListItemTypeList, DBAccordion, DBAccordionItem, DBBadge, DBBrand, DBButton, DBCard, DBCheckbox, DBCustomButton, DBCustomSelect, DBCustomSelectDropdown, DBCustomSelectFormField, DBCustomSelectList, DBCustomSelectListItem, DBDivider, DBDrawer, DBHeader, DBIcon, DBInfotext, DBInput, DBLink, DBNavigation, DBNavigationItem, DBNotification, DBPage, DBPopover, DBRadio, DBSection, DBSelect, DBStack, DBSwitch, DBTabItem, DBTabList, DBTabPanel, DBTable, DBTableBody, DBTableCaption, DBTableColumnsSizeList, DBTableDataCell, DBTableDividerList, DBTableFooter, DBTableHead, DBTableHeaderCell, DBTableHeaderCellScopeList, DBTableMobileVariantList, DBTableRow, DBTableRowSizeList, DBTableRowSubHeaderEmphasisList, DBTableStickyHeaderList, DBTableVariantList, DBTabs, DBTag, DBTextarea, DBTooltip, DB_UX_LOCAL_STORAGE_FRAMEWORK, DB_UX_LOCAL_STORAGE_MODE, DEFAULT_BACK, DEFAULT_BURGER_MENU, DEFAULT_CLOSE_BUTTON, DEFAULT_DATALIST_ID_SUFFIX, DEFAULT_ICON, DEFAULT_ID, DEFAULT_INVALID_MESSAGE, DEFAULT_INVALID_MESSAGE_ID_SUFFIX, DEFAULT_LABEL, DEFAULT_LABEL_ID_SUFFIX, DEFAULT_MESSAGE, DEFAULT_MESSAGE_ID_SUFFIX, DEFAULT_PLACEHOLDER, DEFAULT_PLACEHOLDER_ID_SUFFIX, DEFAULT_REMOVE, DEFAULT_ROWS, DEFAULT_SELECTED, DEFAULT_SELECT_ID_SUFFIX, DEFAULT_VALID_MESSAGE, DEFAULT_VALID_MESSAGE_ID_SUFFIX, DEFAULT_VIEWPORT, DENSITIES, DENSITY, DENSITY_CONST, DESKTOP_VIEWPORT, DividerMarginList, DividerVariantList, DocumentClickListener, DocumentScrollListener, DrawerBackdropList, DrawerDirectionList, DrawerPositionList, DrawerVariantList, EmphasisList, FieldSizingList, GapSpacingList, IconWeightList, InputTypeList, LabelVariantHorizontalList, LabelVariantList, LinkContentList, LinkReferrerPolicyList, LinkSizeList, LinkTargetList, LinkVariantList, MarginList, MaxWidthList, MetaNavigationDirective, NavigationContentDirective, NavigationDirective, NavigationItemSafeTriangle, NotificationAriaLiveList, NotificationLinkVariantList, NotificationVariantList, OrientationList, PageDocumentOverflowList, PageVariantList, PlacementHorizontalList, PlacementList, PlacementVerticalList, PopoverDelayList, PopoverWidthList, SEMANTIC, SEMANTICS, SecondaryActionDirective, SelectedTypeList, SemanticList, SizeList, SpacingList, StackAlignmentList, StackDirectionList, StackJustifyContentList, StackVariantList, TESTING_VIEWPORTS, TabsBehaviorList, TabsInitialSelectedModeList, TagBehaviorList, TextareaResizeList, TextareaWrapList, TooltipVariantList, ValidationList, WidthList, addAttributeToChildren, cls, delay, getBoolean, getBooleanAsString, getFloatingProps, getHideProp, getInputValue, getNotificationRole, getNumber, getOptionKey, getSearchInput, getStep, handleDataOutside, handleFixedDropdown, handleFixedPopover, hasVoiceOver, isArrayOfStrings, isEventTargetNavigationItem, isIOSSafari, isKeyboardEvent, stringPropVisible, uuid };
|
|
12118
|
+
export { AccordionBehaviorList, AccordionVariantList, AlignmentList, AutoCompleteList, BadgePlacementList, ButtonTypeList, ButtonVariantList, COLOR, COLORS, COLORS_SIMPLE, COLOR_CONST, COLOR_SIMPLE, CardBehaviorList, CardElevationLevelList, CustomSelectDropdownWidthList, CustomSelectListItemTypeList, DBAccordion, DBAccordionItem, DBBadge, DBBrand, DBButton, DBCard, DBCheckbox, DBCustomButton, DBCustomSelect, DBCustomSelectDropdown, DBCustomSelectFormField, DBCustomSelectList, DBCustomSelectListItem, DBDivider, DBDrawer, DBHeader, DBIcon, DBInfotext, DBInput, DBLink, DBNavigation, DBNavigationItem, DBNotification, DBPage, DBPopover, DBRadio, DBSection, DBSelect, DBStack, DBSwitch, DBTabItem, DBTabList, DBTabPanel, DBTable, DBTableBody, DBTableCaption, DBTableColumnsSizeList, DBTableDataCell, DBTableDividerList, DBTableFooter, DBTableHead, DBTableHeaderCell, DBTableHeaderCellScopeList, DBTableMobileVariantList, DBTableRow, DBTableRowSizeList, DBTableRowSubHeaderEmphasisList, DBTableStickyHeaderList, DBTableVariantList, DBTabs, DBTag, DBTextarea, DBTooltip, DB_UX_LOCAL_STORAGE_FRAMEWORK, DB_UX_LOCAL_STORAGE_MODE, DEFAULT_BACK, DEFAULT_BURGER_MENU, DEFAULT_CLOSE_BUTTON, DEFAULT_DATALIST_ID_SUFFIX, DEFAULT_ICON, DEFAULT_ID, DEFAULT_INVALID_MESSAGE, DEFAULT_INVALID_MESSAGE_ID_SUFFIX, DEFAULT_LABEL, DEFAULT_LABEL_ID_SUFFIX, DEFAULT_MESSAGE, DEFAULT_MESSAGE_ID_SUFFIX, DEFAULT_PLACEHOLDER, DEFAULT_PLACEHOLDER_ID_SUFFIX, DEFAULT_REMOVE, DEFAULT_ROWS, DEFAULT_SCROLL_LEFT, DEFAULT_SCROLL_RIGHT, DEFAULT_SELECTED, DEFAULT_SELECT_ID_SUFFIX, DEFAULT_VALID_MESSAGE, DEFAULT_VALID_MESSAGE_ID_SUFFIX, DEFAULT_VIEWPORT, DENSITIES, DENSITY, DENSITY_CONST, DESKTOP_VIEWPORT, DividerMarginList, DividerVariantList, DocumentClickListener, DocumentScrollListener, DrawerBackdropList, DrawerDirectionList, DrawerPositionList, DrawerVariantList, EmphasisList, FieldSizingList, GapSpacingList, IconWeightList, InputTypeList, LabelVariantHorizontalList, LabelVariantList, LinkContentList, LinkReferrerPolicyList, LinkSizeList, LinkTargetList, LinkVariantList, MarginList, MaxWidthList, MetaNavigationDirective, NavigationContentDirective, NavigationDirective, NavigationItemSafeTriangle, NotificationAriaLiveList, NotificationLinkVariantList, NotificationVariantList, OrientationList, PageDocumentOverflowList, PageVariantList, PlacementHorizontalList, PlacementList, PlacementVerticalList, PopoverDelayList, PopoverWidthList, SEMANTIC, SEMANTICS, SecondaryActionDirective, SelectedTypeList, SemanticList, SizeList, SpacingList, StackAlignmentList, StackDirectionList, StackJustifyContentList, StackVariantList, TESTING_VIEWPORTS, TabsBehaviorList, TabsInitialSelectedModeList, TagBehaviorList, TextareaResizeList, TextareaWrapList, TooltipVariantList, ValidationList, WidthList, addAttributeToChildren, cls, delay, getBoolean, getBooleanAsString, getFloatingProps, getHideProp, getInputValue, getNotificationRole, getNumber, getOptionKey, getSearchInput, getStep, handleDataOutside, handleFixedDropdown, handleFixedPopover, hasVoiceOver, isArrayOfStrings, isEventTargetNavigationItem, isIOSSafari, isKeyboardEvent, stringPropVisible, uuid };
|
|
11845
12119
|
//# sourceMappingURL=db-ux-ngx-core-components.mjs.map
|