duck-dev-lib 0.0.95 → 0.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{duck-dev-lib-documentation-en-CEWt7DRN.mjs → duck-dev-lib-documentation-en-FazwFbO9.mjs} +22 -2
- package/fesm2022/{duck-dev-lib-documentation-en-CEWt7DRN.mjs.map → duck-dev-lib-documentation-en-FazwFbO9.mjs.map} +1 -1
- package/fesm2022/{duck-dev-lib-documentation-ru-LHt-QMeL.mjs → duck-dev-lib-documentation-ru-ztj5kIGA.mjs} +22 -2
- package/fesm2022/{duck-dev-lib-documentation-ru-LHt-QMeL.mjs.map → duck-dev-lib-documentation-ru-ztj5kIGA.mjs.map} +1 -1
- package/fesm2022/duck-dev-lib-documentation.mjs +348 -78
- package/fesm2022/duck-dev-lib-documentation.mjs.map +1 -1
- package/fesm2022/duck-dev-lib.mjs +315 -71
- package/fesm2022/duck-dev-lib.mjs.map +1 -1
- package/package.json +1 -1
- package/types/duck-dev-lib.d.ts +59 -18
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, HostBinding, Directive, computed, Component, output, signal, viewChildren,
|
|
2
|
+
import { input, HostBinding, Directive, numberAttribute, inject, ElementRef, Renderer2, DestroyRef, effect, computed, Component, output, signal, viewChildren, TemplateRef, contentChildren, afterNextRender, Injectable, ChangeDetectionStrategy, PLATFORM_ID, viewChild, ChangeDetectorRef, ContentChildren, afterRenderEffect, booleanAttribute } from '@angular/core';
|
|
3
3
|
import { NgStyle, CommonModule, NgTemplateOutlet, isPlatformBrowser, DOCUMENT } from '@angular/common';
|
|
4
4
|
import * as i1 from '@angular/forms';
|
|
5
5
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
@@ -76,6 +76,309 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImpor
|
|
|
76
76
|
args: ['style.gap']
|
|
77
77
|
}] } });
|
|
78
78
|
|
|
79
|
+
const DEFAULT_BLUR_PX = 2;
|
|
80
|
+
const DEFAULT_MAX_OPACITY = 0.88;
|
|
81
|
+
const DEFAULT_INTENSITY_PX = 28;
|
|
82
|
+
const DEFAULT_SIZE = '56px';
|
|
83
|
+
const DEFAULT_SURFACE = 'var(--dd-base-0)';
|
|
84
|
+
const DEFAULT_EDGE_EPSILON_PX = 1;
|
|
85
|
+
const EDGE_FADE_TRANSITION = 'opacity 0.12s linear';
|
|
86
|
+
class DdEdgeFadeDirective {
|
|
87
|
+
ddEdgeFadeTarget = input(null, { ...(ngDevMode ? { debugName: "ddEdgeFadeTarget" } : {}) });
|
|
88
|
+
ddEdgeFadeEdges = input('horizontal', { ...(ngDevMode ? { debugName: "ddEdgeFadeEdges" } : {}) });
|
|
89
|
+
ddEdgeFadeBlur = input(DEFAULT_BLUR_PX, { ...(ngDevMode ? { debugName: "ddEdgeFadeBlur" } : {}), transform: numberAttribute });
|
|
90
|
+
ddEdgeFadeOpacity = input(DEFAULT_MAX_OPACITY, { ...(ngDevMode ? { debugName: "ddEdgeFadeOpacity" } : {}), transform: numberAttribute });
|
|
91
|
+
ddEdgeFadeIntensity = input(DEFAULT_INTENSITY_PX, { ...(ngDevMode ? { debugName: "ddEdgeFadeIntensity" } : {}), transform: numberAttribute });
|
|
92
|
+
ddEdgeFadeSurface = input(DEFAULT_SURFACE, { ...(ngDevMode ? { debugName: "ddEdgeFadeSurface" } : {}) });
|
|
93
|
+
ddEdgeFadeSize = input(DEFAULT_SIZE, { ...(ngDevMode ? { debugName: "ddEdgeFadeSize" } : {}) });
|
|
94
|
+
ddEdgeFadeInlineOffset = input(0, { ...(ngDevMode ? { debugName: "ddEdgeFadeInlineOffset" } : {}) });
|
|
95
|
+
ddEdgeFadeBlockOffset = input(0, { ...(ngDevMode ? { debugName: "ddEdgeFadeBlockOffset" } : {}) });
|
|
96
|
+
hostRef = inject(ElementRef);
|
|
97
|
+
renderer = inject(Renderer2);
|
|
98
|
+
destroyRef = inject(DestroyRef);
|
|
99
|
+
edgeElements = new Map();
|
|
100
|
+
scrollTarget = null;
|
|
101
|
+
scrollCleanup = null;
|
|
102
|
+
resizeObserver = null;
|
|
103
|
+
mutationObserver = null;
|
|
104
|
+
frameId = 0;
|
|
105
|
+
viewReady = false;
|
|
106
|
+
constructor() {
|
|
107
|
+
effect(() => {
|
|
108
|
+
const config = this.getConfig();
|
|
109
|
+
this.ddEdgeFadeTarget();
|
|
110
|
+
if (!this.viewReady) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.bindScrollTarget();
|
|
114
|
+
this.syncEdgeElements(config.edges);
|
|
115
|
+
this.applyEdgeStyles(config);
|
|
116
|
+
this.queueOpacityUpdate(config);
|
|
117
|
+
});
|
|
118
|
+
this.destroyRef.onDestroy(() => {
|
|
119
|
+
this.cleanupTargetBinding();
|
|
120
|
+
this.clearFrame();
|
|
121
|
+
this.removeEdgeElements();
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
ngAfterViewInit() {
|
|
125
|
+
this.viewReady = true;
|
|
126
|
+
this.ensureHostPosition();
|
|
127
|
+
this.bindScrollTarget();
|
|
128
|
+
const config = this.getConfig();
|
|
129
|
+
this.syncEdgeElements(config.edges);
|
|
130
|
+
this.applyEdgeStyles(config);
|
|
131
|
+
this.queueOpacityUpdate(config);
|
|
132
|
+
}
|
|
133
|
+
bindScrollTarget() {
|
|
134
|
+
const nextTarget = this.resolveScrollTarget();
|
|
135
|
+
if (this.scrollTarget === nextTarget) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
this.cleanupTargetBinding();
|
|
139
|
+
this.scrollTarget = nextTarget;
|
|
140
|
+
this.scrollCleanup = this.renderer.listen(nextTarget, 'scroll', () => {
|
|
141
|
+
this.queueOpacityUpdate();
|
|
142
|
+
});
|
|
143
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
144
|
+
this.resizeObserver = new ResizeObserver(() => this.queueOpacityUpdate());
|
|
145
|
+
this.resizeObserver.observe(nextTarget);
|
|
146
|
+
this.resizeObserver.observe(this.hostRef.nativeElement);
|
|
147
|
+
}
|
|
148
|
+
if (typeof MutationObserver !== 'undefined') {
|
|
149
|
+
this.mutationObserver = new MutationObserver(() => this.queueOpacityUpdate());
|
|
150
|
+
this.mutationObserver.observe(nextTarget, {
|
|
151
|
+
childList: true,
|
|
152
|
+
subtree: true,
|
|
153
|
+
characterData: true,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
resolveScrollTarget() {
|
|
158
|
+
const target = this.ddEdgeFadeTarget();
|
|
159
|
+
const host = this.hostRef.nativeElement;
|
|
160
|
+
if (!target) {
|
|
161
|
+
return host;
|
|
162
|
+
}
|
|
163
|
+
if (typeof target === 'string') {
|
|
164
|
+
return host.querySelector(target) ?? host;
|
|
165
|
+
}
|
|
166
|
+
if (this.isHtmlElement(target)) {
|
|
167
|
+
return target;
|
|
168
|
+
}
|
|
169
|
+
const nativeElement = target.nativeElement;
|
|
170
|
+
return this.isHtmlElement(nativeElement) ? nativeElement : host;
|
|
171
|
+
}
|
|
172
|
+
syncEdgeElements(edges) {
|
|
173
|
+
const activeSides = this.getActiveSides(edges);
|
|
174
|
+
for (const side of activeSides) {
|
|
175
|
+
if (!this.edgeElements.has(side)) {
|
|
176
|
+
this.edgeElements.set(side, this.createEdgeElement(side));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
for (const [side, element] of this.edgeElements.entries()) {
|
|
180
|
+
if (!activeSides.includes(side)) {
|
|
181
|
+
this.renderer.removeChild(this.hostRef.nativeElement, element);
|
|
182
|
+
this.edgeElements.delete(side);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
createEdgeElement(side) {
|
|
187
|
+
const element = this.renderer.createElement('span');
|
|
188
|
+
this.renderer.addClass(element, 'dd-edge-fade');
|
|
189
|
+
this.renderer.addClass(element, `dd-edge-fade--${side}`);
|
|
190
|
+
this.renderer.setAttribute(element, 'aria-hidden', 'true');
|
|
191
|
+
this.renderer.setStyle(element, 'position', 'absolute');
|
|
192
|
+
this.renderer.setStyle(element, 'z-index', 'var(--dd-edge-fade-z-index, 1)');
|
|
193
|
+
this.renderer.setStyle(element, 'pointer-events', 'none');
|
|
194
|
+
this.renderer.setStyle(element, 'opacity', '0');
|
|
195
|
+
this.renderer.setStyle(element, 'transition', EDGE_FADE_TRANSITION);
|
|
196
|
+
this.renderer.appendChild(this.hostRef.nativeElement, element);
|
|
197
|
+
return element;
|
|
198
|
+
}
|
|
199
|
+
applyEdgeStyles(config) {
|
|
200
|
+
for (const [side, element] of this.edgeElements.entries()) {
|
|
201
|
+
this.renderer.setStyle(element, 'backdrop-filter', `blur(${config.blur}px)`);
|
|
202
|
+
element.style.setProperty('-webkit-backdrop-filter', `blur(${config.blur}px)`);
|
|
203
|
+
const gradient = this.getGradient(side, config.surface);
|
|
204
|
+
this.renderer.setStyle(element, 'background', gradient);
|
|
205
|
+
const mask = this.getMaskGradient(side);
|
|
206
|
+
this.renderer.setStyle(element, 'mask-image', mask);
|
|
207
|
+
element.style.setProperty('-webkit-mask-image', mask);
|
|
208
|
+
this.applySidePlacement(element, side, config);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
applySidePlacement(element, side, config) {
|
|
212
|
+
if (side === 'left' || side === 'right') {
|
|
213
|
+
this.renderer.setStyle(element, 'top', config.blockOffset);
|
|
214
|
+
this.renderer.setStyle(element, 'bottom', config.blockOffset);
|
|
215
|
+
this.renderer.setStyle(element, side, config.inlineOffset);
|
|
216
|
+
this.renderer.setStyle(element, 'width', config.size);
|
|
217
|
+
this.renderer.removeStyle(element, side === 'left' ? 'right' : 'left');
|
|
218
|
+
this.renderer.removeStyle(element, 'height');
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
this.renderer.setStyle(element, 'left', config.inlineOffset);
|
|
222
|
+
this.renderer.setStyle(element, 'right', config.inlineOffset);
|
|
223
|
+
this.renderer.setStyle(element, side, config.blockOffset);
|
|
224
|
+
this.renderer.setStyle(element, 'height', config.size);
|
|
225
|
+
this.renderer.removeStyle(element, side === 'top' ? 'bottom' : 'top');
|
|
226
|
+
this.renderer.removeStyle(element, 'width');
|
|
227
|
+
}
|
|
228
|
+
queueOpacityUpdate(config = this.getConfig()) {
|
|
229
|
+
if (!this.viewReady) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (typeof requestAnimationFrame === 'undefined') {
|
|
233
|
+
this.updateEdgeOpacity(config);
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
this.clearFrame();
|
|
237
|
+
this.frameId = requestAnimationFrame(() => {
|
|
238
|
+
this.frameId = 0;
|
|
239
|
+
this.updateEdgeOpacity(config);
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
updateEdgeOpacity(config) {
|
|
243
|
+
const target = this.scrollTarget ?? this.hostRef.nativeElement;
|
|
244
|
+
const maxScrollLeft = Math.max(0, target.scrollWidth - target.clientWidth);
|
|
245
|
+
const scrollLeft = Math.min(Math.max(target.scrollLeft, 0), maxScrollLeft);
|
|
246
|
+
const maxScrollTop = Math.max(0, target.scrollHeight - target.clientHeight);
|
|
247
|
+
const scrollTop = Math.min(Math.max(target.scrollTop, 0), maxScrollTop);
|
|
248
|
+
this.setEdgeOpacity('left', this.getOpacity(scrollLeft, config));
|
|
249
|
+
this.setEdgeOpacity('right', this.getOpacity(maxScrollLeft - scrollLeft, config));
|
|
250
|
+
this.setEdgeOpacity('top', this.getOpacity(scrollTop, config));
|
|
251
|
+
this.setEdgeOpacity('bottom', this.getOpacity(maxScrollTop - scrollTop, config));
|
|
252
|
+
}
|
|
253
|
+
setEdgeOpacity(side, opacity) {
|
|
254
|
+
const element = this.edgeElements.get(side);
|
|
255
|
+
if (!element) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
this.renderer.setStyle(element, 'opacity', String(opacity));
|
|
259
|
+
}
|
|
260
|
+
getOpacity(distanceFromEdge, config) {
|
|
261
|
+
if (distanceFromEdge <= DEFAULT_EDGE_EPSILON_PX) {
|
|
262
|
+
return 0;
|
|
263
|
+
}
|
|
264
|
+
return Math.min(distanceFromEdge / config.intensity, 1) * config.opacity;
|
|
265
|
+
}
|
|
266
|
+
getGradient(side, surface) {
|
|
267
|
+
return [
|
|
268
|
+
`linear-gradient(${this.getDirection(side)},`,
|
|
269
|
+
`color-mix(in srgb, ${surface} 94%, transparent) 0%,`,
|
|
270
|
+
`color-mix(in srgb, ${surface} 70%, transparent) 35%,`,
|
|
271
|
+
`color-mix(in srgb, ${surface} 28%, transparent) 70%,`,
|
|
272
|
+
'transparent 100%)',
|
|
273
|
+
].join(' ');
|
|
274
|
+
}
|
|
275
|
+
getMaskGradient(side) {
|
|
276
|
+
return [
|
|
277
|
+
`linear-gradient(${this.getDirection(side)},`,
|
|
278
|
+
'rgb(0 0 0 / 95%) 0%,',
|
|
279
|
+
'rgb(0 0 0 / 72%) 36%,',
|
|
280
|
+
'rgb(0 0 0 / 30%) 72%,',
|
|
281
|
+
'transparent 100%)',
|
|
282
|
+
].join(' ');
|
|
283
|
+
}
|
|
284
|
+
getDirection(side) {
|
|
285
|
+
switch (side) {
|
|
286
|
+
case 'right':
|
|
287
|
+
return '270deg';
|
|
288
|
+
case 'top':
|
|
289
|
+
return '180deg';
|
|
290
|
+
case 'bottom':
|
|
291
|
+
return '0deg';
|
|
292
|
+
case 'left':
|
|
293
|
+
default:
|
|
294
|
+
return '90deg';
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
getActiveSides(edges) {
|
|
298
|
+
switch (edges) {
|
|
299
|
+
case 'vertical':
|
|
300
|
+
return ['top', 'bottom'];
|
|
301
|
+
case 'both':
|
|
302
|
+
return ['left', 'right', 'top', 'bottom'];
|
|
303
|
+
case 'horizontal':
|
|
304
|
+
default:
|
|
305
|
+
return ['left', 'right'];
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
getConfig() {
|
|
309
|
+
return {
|
|
310
|
+
blur: this.getFiniteNumber(this.ddEdgeFadeBlur(), DEFAULT_BLUR_PX),
|
|
311
|
+
opacity: this.getFiniteNumber(this.ddEdgeFadeOpacity(), DEFAULT_MAX_OPACITY, 0, 1),
|
|
312
|
+
intensity: this.getFiniteNumber(this.ddEdgeFadeIntensity(), DEFAULT_INTENSITY_PX, 1),
|
|
313
|
+
edges: this.getEdges(this.ddEdgeFadeEdges()),
|
|
314
|
+
surface: this.ddEdgeFadeSurface() || DEFAULT_SURFACE,
|
|
315
|
+
size: this.getCssLength(this.ddEdgeFadeSize(), DEFAULT_SIZE),
|
|
316
|
+
inlineOffset: this.getCssLength(this.ddEdgeFadeInlineOffset(), '0px'),
|
|
317
|
+
blockOffset: this.getCssLength(this.ddEdgeFadeBlockOffset(), '0px'),
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
getEdges(edges) {
|
|
321
|
+
return edges === 'vertical' || edges === 'both' || edges === 'horizontal'
|
|
322
|
+
? edges
|
|
323
|
+
: 'horizontal';
|
|
324
|
+
}
|
|
325
|
+
getFiniteNumber(value, fallback, min = 0, max = Infinity) {
|
|
326
|
+
if (!Number.isFinite(value)) {
|
|
327
|
+
return fallback;
|
|
328
|
+
}
|
|
329
|
+
return Math.min(Math.max(value, min), max);
|
|
330
|
+
}
|
|
331
|
+
getCssLength(value, fallback) {
|
|
332
|
+
if (typeof value === 'number') {
|
|
333
|
+
return `${Math.max(0, value)}px`;
|
|
334
|
+
}
|
|
335
|
+
const normalized = `${value ?? ''}`.trim();
|
|
336
|
+
return normalized || fallback;
|
|
337
|
+
}
|
|
338
|
+
ensureHostPosition() {
|
|
339
|
+
if (typeof getComputedStyle === 'undefined') {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
const position = getComputedStyle(this.hostRef.nativeElement).position;
|
|
343
|
+
if (position === 'static') {
|
|
344
|
+
this.renderer.setStyle(this.hostRef.nativeElement, 'position', 'relative');
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
cleanupTargetBinding() {
|
|
348
|
+
this.scrollCleanup?.();
|
|
349
|
+
this.scrollCleanup = null;
|
|
350
|
+
this.resizeObserver?.disconnect();
|
|
351
|
+
this.resizeObserver = null;
|
|
352
|
+
this.mutationObserver?.disconnect();
|
|
353
|
+
this.mutationObserver = null;
|
|
354
|
+
this.scrollTarget = null;
|
|
355
|
+
}
|
|
356
|
+
clearFrame() {
|
|
357
|
+
if (this.frameId && typeof cancelAnimationFrame !== 'undefined') {
|
|
358
|
+
cancelAnimationFrame(this.frameId);
|
|
359
|
+
this.frameId = 0;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
removeEdgeElements() {
|
|
363
|
+
for (const element of this.edgeElements.values()) {
|
|
364
|
+
this.renderer.removeChild(this.hostRef.nativeElement, element);
|
|
365
|
+
}
|
|
366
|
+
this.edgeElements.clear();
|
|
367
|
+
}
|
|
368
|
+
isHtmlElement(value) {
|
|
369
|
+
return !!value && typeof value === 'object' && value.nodeType === 1;
|
|
370
|
+
}
|
|
371
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DdEdgeFadeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
372
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.1", type: DdEdgeFadeDirective, isStandalone: true, selector: "[ddEdgeFade]", inputs: { ddEdgeFadeTarget: { classPropertyName: "ddEdgeFadeTarget", publicName: "ddEdgeFadeTarget", isSignal: true, isRequired: false, transformFunction: null }, ddEdgeFadeEdges: { classPropertyName: "ddEdgeFadeEdges", publicName: "ddEdgeFadeEdges", isSignal: true, isRequired: false, transformFunction: null }, ddEdgeFadeBlur: { classPropertyName: "ddEdgeFadeBlur", publicName: "ddEdgeFadeBlur", isSignal: true, isRequired: false, transformFunction: null }, ddEdgeFadeOpacity: { classPropertyName: "ddEdgeFadeOpacity", publicName: "ddEdgeFadeOpacity", isSignal: true, isRequired: false, transformFunction: null }, ddEdgeFadeIntensity: { classPropertyName: "ddEdgeFadeIntensity", publicName: "ddEdgeFadeIntensity", isSignal: true, isRequired: false, transformFunction: null }, ddEdgeFadeSurface: { classPropertyName: "ddEdgeFadeSurface", publicName: "ddEdgeFadeSurface", isSignal: true, isRequired: false, transformFunction: null }, ddEdgeFadeSize: { classPropertyName: "ddEdgeFadeSize", publicName: "ddEdgeFadeSize", isSignal: true, isRequired: false, transformFunction: null }, ddEdgeFadeInlineOffset: { classPropertyName: "ddEdgeFadeInlineOffset", publicName: "ddEdgeFadeInlineOffset", isSignal: true, isRequired: false, transformFunction: null }, ddEdgeFadeBlockOffset: { classPropertyName: "ddEdgeFadeBlockOffset", publicName: "ddEdgeFadeBlockOffset", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
373
|
+
}
|
|
374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DdEdgeFadeDirective, decorators: [{
|
|
375
|
+
type: Directive,
|
|
376
|
+
args: [{
|
|
377
|
+
selector: '[ddEdgeFade]',
|
|
378
|
+
standalone: true,
|
|
379
|
+
}]
|
|
380
|
+
}], ctorParameters: () => [], propDecorators: { ddEdgeFadeTarget: [{ type: i0.Input, args: [{ isSignal: true, alias: "ddEdgeFadeTarget", required: false }] }], ddEdgeFadeEdges: [{ type: i0.Input, args: [{ isSignal: true, alias: "ddEdgeFadeEdges", required: false }] }], ddEdgeFadeBlur: [{ type: i0.Input, args: [{ isSignal: true, alias: "ddEdgeFadeBlur", required: false }] }], ddEdgeFadeOpacity: [{ type: i0.Input, args: [{ isSignal: true, alias: "ddEdgeFadeOpacity", required: false }] }], ddEdgeFadeIntensity: [{ type: i0.Input, args: [{ isSignal: true, alias: "ddEdgeFadeIntensity", required: false }] }], ddEdgeFadeSurface: [{ type: i0.Input, args: [{ isSignal: true, alias: "ddEdgeFadeSurface", required: false }] }], ddEdgeFadeSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "ddEdgeFadeSize", required: false }] }], ddEdgeFadeInlineOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "ddEdgeFadeInlineOffset", required: false }] }], ddEdgeFadeBlockOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "ddEdgeFadeBlockOffset", required: false }] }] } });
|
|
381
|
+
|
|
79
382
|
class ButtonBlurLift {
|
|
80
383
|
textButton = input.required({ ...(ngDevMode ? { debugName: "textButton" } : {}) });
|
|
81
384
|
colorButton = input(AccentEnumColor.White, { ...(ngDevMode ? { debugName: "colorButton" } : {}) });
|
|
@@ -2680,11 +2983,11 @@ class DuckDevAccordionNeobrutalTapeComponent {
|
|
|
2680
2983
|
this.isOpen.update((prev) => !prev);
|
|
2681
2984
|
}
|
|
2682
2985
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevAccordionNeobrutalTapeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2683
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.1", type: DuckDevAccordionNeobrutalTapeComponent, isStandalone: true, selector: "duck-dev-accordion-neobrutal-tape", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dd-accordion-tape\" [class.is-open]=\"isOpen()\" [ngStyle]=\"paletteStyle()\">\n <button\n type=\"button\"\n class=\"dd-accordion-tape__header\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-label]=\"title()\"\n (click)=\"toggle()\"\n >\n <span class=\"dd-accordion-tape__stripe-left\" aria-hidden=\"true\"></span>\n\n <span class=\"dd-accordion-tape__title-area\">\n <span class=\"dd-accordion-tape__title\">{{ title() }}</span>\n <span class=\"dd-accordion-tape__action\" [class.is-open]=\"isOpen()\" aria-hidden=\"true\">\n <duck-dev-icon name=\"duck-dev-chevron-right-medium\" />\n </span>\n </span>\n\n <span class=\"dd-accordion-tape__stripe-right\" aria-hidden=\"true\"></span>\n </button>\n\n <div\n class=\"dd-accordion-tape__body-shell\"\n [class.is-open]=\"isOpen()\"\n [attr.aria-hidden]=\"!isOpen()\"\n >\n <div class=\"dd-accordion-tape__body-frame\">\n <div class=\"dd-accordion-tape__body-content\">\n <ng-container [ngTemplateOutlet]=\"content()\" />\n </div>\n </div>\n </div>\n</div>\n", styles: [".dd-accordion-tape{display:block;position:relative}.dd-accordion-tape__header{display:flex;align-items:stretch;width:100%;padding:0;background:var(--dd-neo-tape-bg);border:3px solid var(--dd-neo-tape-border);cursor:pointer;color:var(--dd-neo-tape-text);text-align:left;position:relative;transform:rotate(-.8deg);box-shadow:4px 4px 0 var(--dd-neo-tape-accent);transition:transform .24s cubic-bezier(.22,1,.36,1),box-shadow .24s cubic-bezier(.22,1,.36,1)}.dd-accordion-tape__header:hover{transform:rotate(-.8deg) translate(-1px,-1px);box-shadow:6px 6px 0 var(--dd-neo-tape-accent)}.dd-accordion-tape.is-open .dd-accordion-tape__header{transform:rotate(-.4deg)}.dd-accordion-tape__stripe-left,.dd-accordion-tape__stripe-right{display:block;width:28px;flex-shrink:0}.dd-accordion-tape__stripe-left{background:repeating-linear-gradient(-45deg,var(--dd-neo-tape-stripe) 0 4px,transparent 4px 10px);border-right:3px solid var(--dd-neo-tape-border)}.dd-accordion-tape__stripe-right{background:repeating-linear-gradient(45deg,var(--dd-neo-tape-stripe) 0 4px,transparent 4px 10px);border-left:3px solid var(--dd-neo-tape-border)}.dd-accordion-tape__title-area{flex:1;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 12px;min-width:0}.dd-accordion-tape__title{font-size:15px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;line-height:1.2;text-wrap:balance}.dd-accordion-tape__action{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;transition:transform .38s cubic-bezier(.22,1.2,.36,1)}.dd-accordion-tape__action.is-open{transform:rotate(90deg)}.dd-accordion-tape__body-shell{display:grid;grid-template-rows:0fr;transition:grid-template-rows .46s cubic-bezier(.2,.9,.24,1)}.dd-accordion-tape__body-shell.is-open{grid-template-rows:1fr}.dd-accordion-tape__body-frame{min-height:0;overflow:hidden}.dd-accordion-tape__body-content{border:3px solid var(--dd-neo-tape-border);border-top:none;background:var(--dd-neo-paper);padding:0 20px;margin-top:-2px;position:relative;box-shadow:4px 4px 0 var(--dd-neo-tape-accent);opacity:0;transform:translateY(-8px);transition:opacity .22s ease,transform .38s cubic-bezier(.22,1,.36,1),padding .38s cubic-bezier(.22,1,.36,1)}.dd-accordion-tape__body-content:before{content:\"\";position:absolute;top:0;left:16px;right:16px;height:3px;background:repeating-linear-gradient(90deg,var(--dd-neo-tape-stripe) 0 6px,transparent 6px 12px)}.dd-accordion-tape__body-shell.is-open .dd-accordion-tape__body-content{padding-top:18px;padding-bottom:18px;opacity:1;transform:translateY(0);transition-delay:40ms,0ms,0ms}.dd-accordion-tape__body-content :first-child{margin-top:0}.dd-accordion-tape__body-content :last-child{margin-bottom:0}@media(max-width:640px){.dd-accordion-tape__stripe-left,.dd-accordion-tape__stripe-right{width:20px}.dd-accordion-tape__title{font-size:14px}.dd-accordion-tape__title-area{padding:12px 10px}.dd-accordion-tape__body-content{padding-left:16px;padding-right:16px}}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DuckDevIcon, selector: "duck-dev-icon", inputs: ["name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2986
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.1", type: DuckDevAccordionNeobrutalTapeComponent, isStandalone: true, selector: "duck-dev-accordion-neobrutal-tape", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dd-accordion-tape\" [class.is-open]=\"isOpen()\" [ngStyle]=\"paletteStyle()\">\n <button\n type=\"button\"\n class=\"dd-accordion-tape__header\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-label]=\"title()\"\n (click)=\"toggle()\"\n >\n <span class=\"dd-accordion-tape__stripe-left\" aria-hidden=\"true\"></span>\n\n <span class=\"dd-accordion-tape__title-area\">\n <span class=\"dd-accordion-tape__title\">{{ title() }}</span>\n <span class=\"dd-accordion-tape__action\" [class.is-open]=\"isOpen()\" aria-hidden=\"true\">\n <duck-dev-icon name=\"duck-dev-chevron-right-medium\" />\n </span>\n </span>\n\n <span class=\"dd-accordion-tape__stripe-right\" aria-hidden=\"true\"></span>\n </button>\n\n <div\n class=\"dd-accordion-tape__body-shell\"\n [class.is-open]=\"isOpen()\"\n [attr.aria-hidden]=\"!isOpen()\"\n >\n <div class=\"dd-accordion-tape__body-frame\">\n <div class=\"dd-accordion-tape__body-content\">\n <ng-container [ngTemplateOutlet]=\"content()\" />\n </div>\n </div>\n </div>\n</div>\n", styles: [".dd-accordion-tape{display:block;position:relative;color:var(--dd-neo-tape-text)}.dd-accordion-tape__header{display:flex;align-items:stretch;width:100%;padding:0;background:var(--dd-neo-tape-bg);border:3px solid var(--dd-neo-tape-border);cursor:pointer;color:var(--dd-neo-tape-text);text-align:left;position:relative;transform:rotate(-.8deg);box-shadow:4px 4px 0 var(--dd-neo-tape-accent);transition:transform .24s cubic-bezier(.22,1,.36,1),box-shadow .24s cubic-bezier(.22,1,.36,1)}.dd-accordion-tape__header:hover{transform:rotate(-.8deg) translate(-1px,-1px);box-shadow:6px 6px 0 var(--dd-neo-tape-accent)}.dd-accordion-tape.is-open .dd-accordion-tape__header{transform:rotate(-.4deg)}.dd-accordion-tape__stripe-left,.dd-accordion-tape__stripe-right{display:block;width:28px;flex-shrink:0}.dd-accordion-tape__stripe-left{background:repeating-linear-gradient(-45deg,var(--dd-neo-tape-stripe) 0 4px,transparent 4px 10px);border-right:3px solid var(--dd-neo-tape-border)}.dd-accordion-tape__stripe-right{background:repeating-linear-gradient(45deg,var(--dd-neo-tape-stripe) 0 4px,transparent 4px 10px);border-left:3px solid var(--dd-neo-tape-border)}.dd-accordion-tape__title-area{flex:1;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 12px;min-width:0}.dd-accordion-tape__title{font-size:15px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;line-height:1.2;text-wrap:balance}.dd-accordion-tape__action{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;transition:transform .38s cubic-bezier(.22,1.2,.36,1)}.dd-accordion-tape__action.is-open{transform:rotate(90deg)}.dd-accordion-tape__body-shell{display:grid;grid-template-rows:0fr;transition:grid-template-rows .46s cubic-bezier(.2,.9,.24,1)}.dd-accordion-tape__body-shell.is-open{grid-template-rows:1fr}.dd-accordion-tape__body-frame{min-height:0;overflow:hidden}.dd-accordion-tape__body-content{border:3px solid var(--dd-neo-tape-border);border-top:none;background:var(--dd-neo-paper);padding:0 20px;margin-top:-2px;position:relative;box-shadow:4px 4px 0 var(--dd-neo-tape-accent);opacity:0;transform:translateY(-8px);transition:opacity .22s ease,transform .38s cubic-bezier(.22,1,.36,1),padding .38s cubic-bezier(.22,1,.36,1)}.dd-accordion-tape__body-content:before{content:\"\";position:absolute;top:0;left:16px;right:16px;height:3px;background:repeating-linear-gradient(90deg,var(--dd-neo-tape-stripe) 0 6px,transparent 6px 12px)}.dd-accordion-tape__body-shell.is-open .dd-accordion-tape__body-content{padding-top:18px;padding-bottom:18px;opacity:1;transform:translateY(0);transition-delay:40ms,0ms,0ms}.dd-accordion-tape__body-content :first-child{margin-top:0}.dd-accordion-tape__body-content :last-child{margin-bottom:0}@media(max-width:640px){.dd-accordion-tape__stripe-left,.dd-accordion-tape__stripe-right{width:20px}.dd-accordion-tape__title{font-size:14px}.dd-accordion-tape__title-area{padding:12px 10px}.dd-accordion-tape__body-content{padding-left:16px;padding-right:16px}}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DuckDevIcon, selector: "duck-dev-icon", inputs: ["name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2684
2987
|
}
|
|
2685
2988
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevAccordionNeobrutalTapeComponent, decorators: [{
|
|
2686
2989
|
type: Component,
|
|
2687
|
-
args: [{ selector: 'duck-dev-accordion-neobrutal-tape', standalone: true, imports: [NgStyle, NgTemplateOutlet, DuckDevIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dd-accordion-tape\" [class.is-open]=\"isOpen()\" [ngStyle]=\"paletteStyle()\">\n <button\n type=\"button\"\n class=\"dd-accordion-tape__header\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-label]=\"title()\"\n (click)=\"toggle()\"\n >\n <span class=\"dd-accordion-tape__stripe-left\" aria-hidden=\"true\"></span>\n\n <span class=\"dd-accordion-tape__title-area\">\n <span class=\"dd-accordion-tape__title\">{{ title() }}</span>\n <span class=\"dd-accordion-tape__action\" [class.is-open]=\"isOpen()\" aria-hidden=\"true\">\n <duck-dev-icon name=\"duck-dev-chevron-right-medium\" />\n </span>\n </span>\n\n <span class=\"dd-accordion-tape__stripe-right\" aria-hidden=\"true\"></span>\n </button>\n\n <div\n class=\"dd-accordion-tape__body-shell\"\n [class.is-open]=\"isOpen()\"\n [attr.aria-hidden]=\"!isOpen()\"\n >\n <div class=\"dd-accordion-tape__body-frame\">\n <div class=\"dd-accordion-tape__body-content\">\n <ng-container [ngTemplateOutlet]=\"content()\" />\n </div>\n </div>\n </div>\n</div>\n", styles: [".dd-accordion-tape{display:block;position:relative}.dd-accordion-tape__header{display:flex;align-items:stretch;width:100%;padding:0;background:var(--dd-neo-tape-bg);border:3px solid var(--dd-neo-tape-border);cursor:pointer;color:var(--dd-neo-tape-text);text-align:left;position:relative;transform:rotate(-.8deg);box-shadow:4px 4px 0 var(--dd-neo-tape-accent);transition:transform .24s cubic-bezier(.22,1,.36,1),box-shadow .24s cubic-bezier(.22,1,.36,1)}.dd-accordion-tape__header:hover{transform:rotate(-.8deg) translate(-1px,-1px);box-shadow:6px 6px 0 var(--dd-neo-tape-accent)}.dd-accordion-tape.is-open .dd-accordion-tape__header{transform:rotate(-.4deg)}.dd-accordion-tape__stripe-left,.dd-accordion-tape__stripe-right{display:block;width:28px;flex-shrink:0}.dd-accordion-tape__stripe-left{background:repeating-linear-gradient(-45deg,var(--dd-neo-tape-stripe) 0 4px,transparent 4px 10px);border-right:3px solid var(--dd-neo-tape-border)}.dd-accordion-tape__stripe-right{background:repeating-linear-gradient(45deg,var(--dd-neo-tape-stripe) 0 4px,transparent 4px 10px);border-left:3px solid var(--dd-neo-tape-border)}.dd-accordion-tape__title-area{flex:1;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 12px;min-width:0}.dd-accordion-tape__title{font-size:15px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;line-height:1.2;text-wrap:balance}.dd-accordion-tape__action{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;transition:transform .38s cubic-bezier(.22,1.2,.36,1)}.dd-accordion-tape__action.is-open{transform:rotate(90deg)}.dd-accordion-tape__body-shell{display:grid;grid-template-rows:0fr;transition:grid-template-rows .46s cubic-bezier(.2,.9,.24,1)}.dd-accordion-tape__body-shell.is-open{grid-template-rows:1fr}.dd-accordion-tape__body-frame{min-height:0;overflow:hidden}.dd-accordion-tape__body-content{border:3px solid var(--dd-neo-tape-border);border-top:none;background:var(--dd-neo-paper);padding:0 20px;margin-top:-2px;position:relative;box-shadow:4px 4px 0 var(--dd-neo-tape-accent);opacity:0;transform:translateY(-8px);transition:opacity .22s ease,transform .38s cubic-bezier(.22,1,.36,1),padding .38s cubic-bezier(.22,1,.36,1)}.dd-accordion-tape__body-content:before{content:\"\";position:absolute;top:0;left:16px;right:16px;height:3px;background:repeating-linear-gradient(90deg,var(--dd-neo-tape-stripe) 0 6px,transparent 6px 12px)}.dd-accordion-tape__body-shell.is-open .dd-accordion-tape__body-content{padding-top:18px;padding-bottom:18px;opacity:1;transform:translateY(0);transition-delay:40ms,0ms,0ms}.dd-accordion-tape__body-content :first-child{margin-top:0}.dd-accordion-tape__body-content :last-child{margin-bottom:0}@media(max-width:640px){.dd-accordion-tape__stripe-left,.dd-accordion-tape__stripe-right{width:20px}.dd-accordion-tape__title{font-size:14px}.dd-accordion-tape__title-area{padding:12px 10px}.dd-accordion-tape__body-content{padding-left:16px;padding-right:16px}}\n"] }]
|
|
2990
|
+
args: [{ selector: 'duck-dev-accordion-neobrutal-tape', standalone: true, imports: [NgStyle, NgTemplateOutlet, DuckDevIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dd-accordion-tape\" [class.is-open]=\"isOpen()\" [ngStyle]=\"paletteStyle()\">\n <button\n type=\"button\"\n class=\"dd-accordion-tape__header\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-label]=\"title()\"\n (click)=\"toggle()\"\n >\n <span class=\"dd-accordion-tape__stripe-left\" aria-hidden=\"true\"></span>\n\n <span class=\"dd-accordion-tape__title-area\">\n <span class=\"dd-accordion-tape__title\">{{ title() }}</span>\n <span class=\"dd-accordion-tape__action\" [class.is-open]=\"isOpen()\" aria-hidden=\"true\">\n <duck-dev-icon name=\"duck-dev-chevron-right-medium\" />\n </span>\n </span>\n\n <span class=\"dd-accordion-tape__stripe-right\" aria-hidden=\"true\"></span>\n </button>\n\n <div\n class=\"dd-accordion-tape__body-shell\"\n [class.is-open]=\"isOpen()\"\n [attr.aria-hidden]=\"!isOpen()\"\n >\n <div class=\"dd-accordion-tape__body-frame\">\n <div class=\"dd-accordion-tape__body-content\">\n <ng-container [ngTemplateOutlet]=\"content()\" />\n </div>\n </div>\n </div>\n</div>\n", styles: [".dd-accordion-tape{display:block;position:relative;color:var(--dd-neo-tape-text)}.dd-accordion-tape__header{display:flex;align-items:stretch;width:100%;padding:0;background:var(--dd-neo-tape-bg);border:3px solid var(--dd-neo-tape-border);cursor:pointer;color:var(--dd-neo-tape-text);text-align:left;position:relative;transform:rotate(-.8deg);box-shadow:4px 4px 0 var(--dd-neo-tape-accent);transition:transform .24s cubic-bezier(.22,1,.36,1),box-shadow .24s cubic-bezier(.22,1,.36,1)}.dd-accordion-tape__header:hover{transform:rotate(-.8deg) translate(-1px,-1px);box-shadow:6px 6px 0 var(--dd-neo-tape-accent)}.dd-accordion-tape.is-open .dd-accordion-tape__header{transform:rotate(-.4deg)}.dd-accordion-tape__stripe-left,.dd-accordion-tape__stripe-right{display:block;width:28px;flex-shrink:0}.dd-accordion-tape__stripe-left{background:repeating-linear-gradient(-45deg,var(--dd-neo-tape-stripe) 0 4px,transparent 4px 10px);border-right:3px solid var(--dd-neo-tape-border)}.dd-accordion-tape__stripe-right{background:repeating-linear-gradient(45deg,var(--dd-neo-tape-stripe) 0 4px,transparent 4px 10px);border-left:3px solid var(--dd-neo-tape-border)}.dd-accordion-tape__title-area{flex:1;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 12px;min-width:0}.dd-accordion-tape__title{font-size:15px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;line-height:1.2;text-wrap:balance}.dd-accordion-tape__action{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;transition:transform .38s cubic-bezier(.22,1.2,.36,1)}.dd-accordion-tape__action.is-open{transform:rotate(90deg)}.dd-accordion-tape__body-shell{display:grid;grid-template-rows:0fr;transition:grid-template-rows .46s cubic-bezier(.2,.9,.24,1)}.dd-accordion-tape__body-shell.is-open{grid-template-rows:1fr}.dd-accordion-tape__body-frame{min-height:0;overflow:hidden}.dd-accordion-tape__body-content{border:3px solid var(--dd-neo-tape-border);border-top:none;background:var(--dd-neo-paper);padding:0 20px;margin-top:-2px;position:relative;box-shadow:4px 4px 0 var(--dd-neo-tape-accent);opacity:0;transform:translateY(-8px);transition:opacity .22s ease,transform .38s cubic-bezier(.22,1,.36,1),padding .38s cubic-bezier(.22,1,.36,1)}.dd-accordion-tape__body-content:before{content:\"\";position:absolute;top:0;left:16px;right:16px;height:3px;background:repeating-linear-gradient(90deg,var(--dd-neo-tape-stripe) 0 6px,transparent 6px 12px)}.dd-accordion-tape__body-shell.is-open .dd-accordion-tape__body-content{padding-top:18px;padding-bottom:18px;opacity:1;transform:translateY(0);transition-delay:40ms,0ms,0ms}.dd-accordion-tape__body-content :first-child{margin-top:0}.dd-accordion-tape__body-content :last-child{margin-bottom:0}@media(max-width:640px){.dd-accordion-tape__stripe-left,.dd-accordion-tape__stripe-right{width:20px}.dd-accordion-tape__title{font-size:14px}.dd-accordion-tape__title-area{padding:12px 10px}.dd-accordion-tape__body-content{padding-left:16px;padding-right:16px}}\n"] }]
|
|
2688
2991
|
}], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
|
|
2689
2992
|
|
|
2690
2993
|
class SliderClassic {
|
|
@@ -3483,11 +3786,11 @@ class DuckDevProgressNeobrutalSlab {
|
|
|
3483
3786
|
color = input(AccentEnumColor.Orange, { ...(ngDevMode ? { debugName: "color" } : {}) });
|
|
3484
3787
|
percent = computed(() => clampProgress(this.value()), { ...(ngDevMode ? { debugName: "percent" } : {}) });
|
|
3485
3788
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevProgressNeobrutalSlab, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3486
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.1", type: DuckDevProgressNeobrutalSlab, isStandalone: true, selector: "duck-dev-progress-neobrutal-slab", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, subtext: { classPropertyName: "subtext", publicName: "subtext", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"dd-progress-neo-slab\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-slab__header\">\n <div class=\"dd-progress-neo-slab__copy\">\n <span class=\"dd-progress-neo-slab__label\">{{ label() }}</span>\n @if (subtext()) {\n <span class=\"dd-progress-neo-slab__subtext\">{{ subtext() }}</span>\n }\n </div>\n <span class=\"dd-progress-neo-slab__value\">{{ percent() }}%</span>\n </header>\n\n <div class=\"dd-progress-neo-slab__track\">\n <span class=\"dd-progress-neo-slab__fill\" [style.width.%]=\"percent()\"></span>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-slab{display:flex;flex-direction:column;gap:14px;width:100%;padding:16px;border:4px solid var(--dd-neo-ink);background:linear-gradient(135deg,color-mix(in srgb,var(--dd-progress-panel) 22%,var(--dd-
|
|
3789
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.1", type: DuckDevProgressNeobrutalSlab, isStandalone: true, selector: "duck-dev-progress-neobrutal-slab", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, subtext: { classPropertyName: "subtext", publicName: "subtext", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"dd-progress-neo-slab\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-slab__header\">\n <div class=\"dd-progress-neo-slab__copy\">\n <span class=\"dd-progress-neo-slab__label\">{{ label() }}</span>\n @if (subtext()) {\n <span class=\"dd-progress-neo-slab__subtext\">{{ subtext() }}</span>\n }\n </div>\n <span class=\"dd-progress-neo-slab__value\">{{ percent() }}%</span>\n </header>\n\n <div class=\"dd-progress-neo-slab__track\">\n <span class=\"dd-progress-neo-slab__fill\" [style.width.%]=\"percent()\"></span>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-slab{display:flex;flex-direction:column;gap:14px;width:100%;padding:16px;border:4px solid var(--dd-neo-ink);background:linear-gradient(135deg,color-mix(in srgb,var(--dd-progress-panel) 22%,var(--dd-neo-paper)) 0 16%,transparent 16% 100%),var(--dd-progress-panel);box-shadow:8px 8px 0 var(--dd-progress-fill)}.dd-progress-neo-slab__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.dd-progress-neo-slab__copy{display:flex;flex-direction:column;gap:5px}.dd-progress-neo-slab__label{color:var(--dd-neo-ink);font-size:15px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.dd-progress-neo-slab__subtext{color:var(--dd-neo-ink);font-size:12px;font-weight:700;opacity:.72}.dd-progress-neo-slab__value{display:inline-flex;align-items:center;justify-content:center;min-width:64px;padding:6px 10px;border:3px solid var(--dd-neo-ink);background:var(--dd-progress-panel);color:var(--dd-neo-ink);font-size:13px;font-weight:900}.dd-progress-neo-slab__track{position:relative;height:24px;border:4px solid var(--dd-neo-ink);background:color-mix(in srgb,var(--dd-progress-panel) 50%,var(--dd-neo-ana-4));overflow:hidden}.dd-progress-neo-slab__fill{display:block;height:100%;background:linear-gradient(90deg,color-mix(in srgb,var(--dd-progress-fill) 92%,var(--dd-neo-paper)),var(--dd-progress-fill));transition:width .2s steps(10,end);box-shadow:inset -4px 0 0 var(--dd-neo-ink)}.dd-progress-neo-slab[data-color=violet]{--dd-progress-fill: var(--dd-neo-ana-6);--dd-progress-panel: color-mix(in srgb, var(--dd-neo-ana-6) 14%, var(--dd-neo-paper))}.dd-progress-neo-slab[data-color=orange]{--dd-progress-fill: var(--dd-neo-ana-1);--dd-progress-panel: color-mix(in srgb, var(--dd-neo-ana-3) 32%, var(--dd-neo-paper))}.dd-progress-neo-slab[data-color=gray]{--dd-progress-fill: var(--dd-neo-ana-2);--dd-progress-panel: var(--dd-neo-ana-4)}.dd-progress-neo-slab[data-color=dark]{--dd-progress-fill: var(--dd-neo-ink);--dd-progress-panel: color-mix(in srgb, var(--dd-neo-ink) 12%, var(--dd-neo-paper))}.dd-progress-neo-slab[data-color=white]{--dd-progress-fill: var(--dd-neo-paper);--dd-progress-panel: var(--dd-neo-ana-4)}\n"] });
|
|
3487
3790
|
}
|
|
3488
3791
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevProgressNeobrutalSlab, decorators: [{
|
|
3489
3792
|
type: Component,
|
|
3490
|
-
args: [{ selector: 'duck-dev-progress-neobrutal-slab', standalone: true, template: "<section class=\"dd-progress-neo-slab\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-slab__header\">\n <div class=\"dd-progress-neo-slab__copy\">\n <span class=\"dd-progress-neo-slab__label\">{{ label() }}</span>\n @if (subtext()) {\n <span class=\"dd-progress-neo-slab__subtext\">{{ subtext() }}</span>\n }\n </div>\n <span class=\"dd-progress-neo-slab__value\">{{ percent() }}%</span>\n </header>\n\n <div class=\"dd-progress-neo-slab__track\">\n <span class=\"dd-progress-neo-slab__fill\" [style.width.%]=\"percent()\"></span>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-slab{display:flex;flex-direction:column;gap:14px;width:100%;padding:16px;border:4px solid var(--dd-neo-ink);background:linear-gradient(135deg,color-mix(in srgb,var(--dd-progress-panel) 22%,var(--dd-
|
|
3793
|
+
args: [{ selector: 'duck-dev-progress-neobrutal-slab', standalone: true, template: "<section class=\"dd-progress-neo-slab\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-slab__header\">\n <div class=\"dd-progress-neo-slab__copy\">\n <span class=\"dd-progress-neo-slab__label\">{{ label() }}</span>\n @if (subtext()) {\n <span class=\"dd-progress-neo-slab__subtext\">{{ subtext() }}</span>\n }\n </div>\n <span class=\"dd-progress-neo-slab__value\">{{ percent() }}%</span>\n </header>\n\n <div class=\"dd-progress-neo-slab__track\">\n <span class=\"dd-progress-neo-slab__fill\" [style.width.%]=\"percent()\"></span>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-slab{display:flex;flex-direction:column;gap:14px;width:100%;padding:16px;border:4px solid var(--dd-neo-ink);background:linear-gradient(135deg,color-mix(in srgb,var(--dd-progress-panel) 22%,var(--dd-neo-paper)) 0 16%,transparent 16% 100%),var(--dd-progress-panel);box-shadow:8px 8px 0 var(--dd-progress-fill)}.dd-progress-neo-slab__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.dd-progress-neo-slab__copy{display:flex;flex-direction:column;gap:5px}.dd-progress-neo-slab__label{color:var(--dd-neo-ink);font-size:15px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.dd-progress-neo-slab__subtext{color:var(--dd-neo-ink);font-size:12px;font-weight:700;opacity:.72}.dd-progress-neo-slab__value{display:inline-flex;align-items:center;justify-content:center;min-width:64px;padding:6px 10px;border:3px solid var(--dd-neo-ink);background:var(--dd-progress-panel);color:var(--dd-neo-ink);font-size:13px;font-weight:900}.dd-progress-neo-slab__track{position:relative;height:24px;border:4px solid var(--dd-neo-ink);background:color-mix(in srgb,var(--dd-progress-panel) 50%,var(--dd-neo-ana-4));overflow:hidden}.dd-progress-neo-slab__fill{display:block;height:100%;background:linear-gradient(90deg,color-mix(in srgb,var(--dd-progress-fill) 92%,var(--dd-neo-paper)),var(--dd-progress-fill));transition:width .2s steps(10,end);box-shadow:inset -4px 0 0 var(--dd-neo-ink)}.dd-progress-neo-slab[data-color=violet]{--dd-progress-fill: var(--dd-neo-ana-6);--dd-progress-panel: color-mix(in srgb, var(--dd-neo-ana-6) 14%, var(--dd-neo-paper))}.dd-progress-neo-slab[data-color=orange]{--dd-progress-fill: var(--dd-neo-ana-1);--dd-progress-panel: color-mix(in srgb, var(--dd-neo-ana-3) 32%, var(--dd-neo-paper))}.dd-progress-neo-slab[data-color=gray]{--dd-progress-fill: var(--dd-neo-ana-2);--dd-progress-panel: var(--dd-neo-ana-4)}.dd-progress-neo-slab[data-color=dark]{--dd-progress-fill: var(--dd-neo-ink);--dd-progress-panel: color-mix(in srgb, var(--dd-neo-ink) 12%, var(--dd-neo-paper))}.dd-progress-neo-slab[data-color=white]{--dd-progress-fill: var(--dd-neo-paper);--dd-progress-panel: var(--dd-neo-ana-4)}\n"] }]
|
|
3491
3794
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], subtext: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtext", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
|
|
3492
3795
|
|
|
3493
3796
|
class DuckDevProgressNeobrutalStamp {
|
|
@@ -3497,11 +3800,11 @@ class DuckDevProgressNeobrutalStamp {
|
|
|
3497
3800
|
color = input(AccentEnumColor.Violet, { ...(ngDevMode ? { debugName: "color" } : {}) });
|
|
3498
3801
|
percent = computed(() => clampProgress(this.value()), { ...(ngDevMode ? { debugName: "percent" } : {}) });
|
|
3499
3802
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevProgressNeobrutalStamp, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3500
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.1", type: DuckDevProgressNeobrutalStamp, isStandalone: true, selector: "duck-dev-progress-neobrutal-stamp", inputs: { kicker: { classPropertyName: "kicker", publicName: "kicker", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"dd-progress-neo-stamp\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-stamp__header\">\n <span class=\"dd-progress-neo-stamp__kicker\">{{ kicker() }}</span>\n <span class=\"dd-progress-neo-stamp__value\">{{ percent() }}%</span>\n </header>\n\n <span class=\"dd-progress-neo-stamp__label\">{{ label() }}</span>\n\n <div class=\"dd-progress-neo-stamp__track\">\n <span class=\"dd-progress-neo-stamp__fill\" [style.width.%]=\"percent()\"></span>\n <span class=\"dd-progress-neo-stamp__grid\"></span>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-stamp{display:flex;flex-direction:column;gap:12px;width:100%;padding:16px;border:4px solid var(--dd-neo-ink);background:radial-gradient(circle at top left,color-mix(in srgb,var(--dd-progress-fill) 22%,var(--dd-
|
|
3803
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.1", type: DuckDevProgressNeobrutalStamp, isStandalone: true, selector: "duck-dev-progress-neobrutal-stamp", inputs: { kicker: { classPropertyName: "kicker", publicName: "kicker", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"dd-progress-neo-stamp\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-stamp__header\">\n <span class=\"dd-progress-neo-stamp__kicker\">{{ kicker() }}</span>\n <span class=\"dd-progress-neo-stamp__value\">{{ percent() }}%</span>\n </header>\n\n <span class=\"dd-progress-neo-stamp__label\">{{ label() }}</span>\n\n <div class=\"dd-progress-neo-stamp__track\">\n <span class=\"dd-progress-neo-stamp__fill\" [style.width.%]=\"percent()\"></span>\n <span class=\"dd-progress-neo-stamp__grid\"></span>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-stamp{display:flex;flex-direction:column;gap:12px;width:100%;padding:16px;border:4px solid var(--dd-neo-ink);background:radial-gradient(circle at top left,color-mix(in srgb,var(--dd-progress-fill) 22%,var(--dd-neo-paper)) 0 12%,transparent 13%),var(--dd-neo-paper);box-shadow:8px 8px 0 var(--dd-progress-fill)}.dd-progress-neo-stamp__header{display:flex;justify-content:space-between;gap:16px;align-items:center}.dd-progress-neo-stamp__kicker,.dd-progress-neo-stamp__value{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:6px 10px;border:3px solid var(--dd-neo-ink);background:var(--dd-progress-fill);color:var(--dd-neo-ink);font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.dd-progress-neo-stamp__label{color:var(--dd-neo-ink);font-size:15px;font-weight:900;line-height:1.25;text-transform:uppercase}.dd-progress-neo-stamp__track{position:relative;height:28px;border:4px solid var(--dd-neo-ink);background:color-mix(in srgb,var(--dd-progress-fill) 8%,var(--dd-neo-ana-4));overflow:hidden}.dd-progress-neo-stamp__fill{position:absolute;inset:0 auto 0 0;display:block;height:100%;background:linear-gradient(90deg,color-mix(in srgb,var(--dd-progress-fill) 92%,var(--dd-neo-paper)),color-mix(in srgb,var(--dd-progress-fill) 78%,var(--dd-neo-ink)));transition:width .18s ease;z-index:1}.dd-progress-neo-stamp__grid{display:none}.dd-progress-neo-stamp[data-color=violet]{--dd-progress-fill: var(--dd-neo-ana-6)}.dd-progress-neo-stamp[data-color=orange]{--dd-progress-fill: var(--dd-neo-ana-1)}.dd-progress-neo-stamp[data-color=gray]{--dd-progress-fill: var(--dd-neo-ana-2)}.dd-progress-neo-stamp[data-color=dark]{--dd-progress-fill: var(--dd-neo-ink)}.dd-progress-neo-stamp[data-color=white]{--dd-progress-fill: var(--dd-neo-paper)}\n"] });
|
|
3501
3804
|
}
|
|
3502
3805
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevProgressNeobrutalStamp, decorators: [{
|
|
3503
3806
|
type: Component,
|
|
3504
|
-
args: [{ selector: 'duck-dev-progress-neobrutal-stamp', standalone: true, template: "<section class=\"dd-progress-neo-stamp\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-stamp__header\">\n <span class=\"dd-progress-neo-stamp__kicker\">{{ kicker() }}</span>\n <span class=\"dd-progress-neo-stamp__value\">{{ percent() }}%</span>\n </header>\n\n <span class=\"dd-progress-neo-stamp__label\">{{ label() }}</span>\n\n <div class=\"dd-progress-neo-stamp__track\">\n <span class=\"dd-progress-neo-stamp__fill\" [style.width.%]=\"percent()\"></span>\n <span class=\"dd-progress-neo-stamp__grid\"></span>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-stamp{display:flex;flex-direction:column;gap:12px;width:100%;padding:16px;border:4px solid var(--dd-neo-ink);background:radial-gradient(circle at top left,color-mix(in srgb,var(--dd-progress-fill) 22%,var(--dd-
|
|
3807
|
+
args: [{ selector: 'duck-dev-progress-neobrutal-stamp', standalone: true, template: "<section class=\"dd-progress-neo-stamp\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-stamp__header\">\n <span class=\"dd-progress-neo-stamp__kicker\">{{ kicker() }}</span>\n <span class=\"dd-progress-neo-stamp__value\">{{ percent() }}%</span>\n </header>\n\n <span class=\"dd-progress-neo-stamp__label\">{{ label() }}</span>\n\n <div class=\"dd-progress-neo-stamp__track\">\n <span class=\"dd-progress-neo-stamp__fill\" [style.width.%]=\"percent()\"></span>\n <span class=\"dd-progress-neo-stamp__grid\"></span>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-stamp{display:flex;flex-direction:column;gap:12px;width:100%;padding:16px;border:4px solid var(--dd-neo-ink);background:radial-gradient(circle at top left,color-mix(in srgb,var(--dd-progress-fill) 22%,var(--dd-neo-paper)) 0 12%,transparent 13%),var(--dd-neo-paper);box-shadow:8px 8px 0 var(--dd-progress-fill)}.dd-progress-neo-stamp__header{display:flex;justify-content:space-between;gap:16px;align-items:center}.dd-progress-neo-stamp__kicker,.dd-progress-neo-stamp__value{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:6px 10px;border:3px solid var(--dd-neo-ink);background:var(--dd-progress-fill);color:var(--dd-neo-ink);font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.dd-progress-neo-stamp__label{color:var(--dd-neo-ink);font-size:15px;font-weight:900;line-height:1.25;text-transform:uppercase}.dd-progress-neo-stamp__track{position:relative;height:28px;border:4px solid var(--dd-neo-ink);background:color-mix(in srgb,var(--dd-progress-fill) 8%,var(--dd-neo-ana-4));overflow:hidden}.dd-progress-neo-stamp__fill{position:absolute;inset:0 auto 0 0;display:block;height:100%;background:linear-gradient(90deg,color-mix(in srgb,var(--dd-progress-fill) 92%,var(--dd-neo-paper)),color-mix(in srgb,var(--dd-progress-fill) 78%,var(--dd-neo-ink)));transition:width .18s ease;z-index:1}.dd-progress-neo-stamp__grid{display:none}.dd-progress-neo-stamp[data-color=violet]{--dd-progress-fill: var(--dd-neo-ana-6)}.dd-progress-neo-stamp[data-color=orange]{--dd-progress-fill: var(--dd-neo-ana-1)}.dd-progress-neo-stamp[data-color=gray]{--dd-progress-fill: var(--dd-neo-ana-2)}.dd-progress-neo-stamp[data-color=dark]{--dd-progress-fill: var(--dd-neo-ink)}.dd-progress-neo-stamp[data-color=white]{--dd-progress-fill: var(--dd-neo-paper)}\n"] }]
|
|
3505
3808
|
}], propDecorators: { kicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "kicker", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
|
|
3506
3809
|
|
|
3507
3810
|
class DuckDevProgressNeobrutalTicket {
|
|
@@ -3512,11 +3815,11 @@ class DuckDevProgressNeobrutalTicket {
|
|
|
3512
3815
|
color = input(AccentEnumColor.Dark, { ...(ngDevMode ? { debugName: "color" } : {}) });
|
|
3513
3816
|
percent = computed(() => clampProgress(this.value()), { ...(ngDevMode ? { debugName: "percent" } : {}) });
|
|
3514
3817
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevProgressNeobrutalTicket, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3515
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.1", type: DuckDevProgressNeobrutalTicket, isStandalone: true, selector: "duck-dev-progress-neobrutal-ticket", inputs: { leftTag: { classPropertyName: "leftTag", publicName: "leftTag", isSignal: true, isRequired: true, transformFunction: null }, rightTag: { classPropertyName: "rightTag", publicName: "rightTag", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"dd-progress-neo-ticket\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-ticket__header\">\n <span class=\"dd-progress-neo-ticket__tag\">{{ leftTag() }}</span>\n <span class=\"dd-progress-neo-ticket__tag\">{{ rightTag() }}</span>\n </header>\n\n <div class=\"dd-progress-neo-ticket__body\">\n <div class=\"dd-progress-neo-ticket__copy\">\n <span class=\"dd-progress-neo-ticket__label\">{{ label() }}</span>\n <span class=\"dd-progress-neo-ticket__percent\">{{ percent() }}%</span>\n </div>\n\n <div class=\"dd-progress-neo-ticket__track\">\n <span class=\"dd-progress-neo-ticket__fill\" [style.width.%]=\"percent()\"></span>\n </div>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-ticket{display:flex;flex-direction:column;gap:0;width:100%;border:4px solid var(--dd-neo-ink);background:var(--dd-neo-paper);box-shadow:8px 8px 0 var(--dd-progress-fill)}.dd-progress-neo-ticket__header{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:4px solid var(--dd-neo-ink)}.dd-progress-neo-ticket__tag{display:inline-flex;justify-content:center;align-items:center;min-height:40px;padding:8px 12px;background:color-mix(in srgb,var(--dd-progress-fill) 20%,var(--dd-neo-paper));color:var(--dd-
|
|
3818
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.1", type: DuckDevProgressNeobrutalTicket, isStandalone: true, selector: "duck-dev-progress-neobrutal-ticket", inputs: { leftTag: { classPropertyName: "leftTag", publicName: "leftTag", isSignal: true, isRequired: true, transformFunction: null }, rightTag: { classPropertyName: "rightTag", publicName: "rightTag", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section class=\"dd-progress-neo-ticket\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-ticket__header\">\n <span class=\"dd-progress-neo-ticket__tag\">{{ leftTag() }}</span>\n <span class=\"dd-progress-neo-ticket__tag\">{{ rightTag() }}</span>\n </header>\n\n <div class=\"dd-progress-neo-ticket__body\">\n <div class=\"dd-progress-neo-ticket__copy\">\n <span class=\"dd-progress-neo-ticket__label\">{{ label() }}</span>\n <span class=\"dd-progress-neo-ticket__percent\">{{ percent() }}%</span>\n </div>\n\n <div class=\"dd-progress-neo-ticket__track\">\n <span class=\"dd-progress-neo-ticket__fill\" [style.width.%]=\"percent()\"></span>\n </div>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-ticket{display:flex;flex-direction:column;gap:0;width:100%;border:4px solid var(--dd-neo-ink);background:var(--dd-neo-paper);box-shadow:8px 8px 0 var(--dd-progress-fill)}.dd-progress-neo-ticket__header{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:4px solid var(--dd-neo-ink)}.dd-progress-neo-ticket__tag{display:inline-flex;justify-content:center;align-items:center;min-height:40px;padding:8px 12px;background:color-mix(in srgb,var(--dd-progress-fill) 20%,var(--dd-neo-paper));color:var(--dd-neo-ink);font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.dd-progress-neo-ticket__tag:first-child{border-right:4px dashed var(--dd-neo-ink)}.dd-progress-neo-ticket__body{display:flex;flex-direction:column;gap:16px;padding:16px;background:linear-gradient(135deg,transparent 0 14px,color-mix(in srgb,var(--dd-progress-fill) 10%,var(--dd-neo-paper)) 14px 100%)}.dd-progress-neo-ticket__copy{display:flex;justify-content:space-between;gap:16px;align-items:center}.dd-progress-neo-ticket__label{color:var(--dd-neo-ink);font-size:15px;font-weight:900;line-height:1.2;text-transform:uppercase}.dd-progress-neo-ticket__percent{color:var(--dd-neo-ink);font-size:18px;font-weight:900;white-space:nowrap}.dd-progress-neo-ticket__track{position:relative;height:22px;border:4px solid var(--dd-neo-ink);overflow:hidden;background:color-mix(in srgb,var(--dd-progress-fill) 8%,var(--dd-neo-ana-4))}.dd-progress-neo-ticket__fill{display:block;height:100%;background:linear-gradient(90deg,color-mix(in srgb,var(--dd-progress-fill) 90%,var(--dd-neo-paper)),var(--dd-progress-fill));transition:width .22s ease;box-shadow:inset -4px 0 0 var(--dd-neo-ink)}.dd-progress-neo-ticket[data-color=violet]{--dd-progress-fill: var(--dd-neo-ana-6)}.dd-progress-neo-ticket[data-color=orange]{--dd-progress-fill: var(--dd-neo-ana-1)}.dd-progress-neo-ticket[data-color=gray]{--dd-progress-fill: var(--dd-neo-ana-2)}.dd-progress-neo-ticket[data-color=dark]{--dd-progress-fill: var(--dd-neo-ink)}.dd-progress-neo-ticket[data-color=white]{--dd-progress-fill: var(--dd-neo-paper)}\n"] });
|
|
3516
3819
|
}
|
|
3517
3820
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevProgressNeobrutalTicket, decorators: [{
|
|
3518
3821
|
type: Component,
|
|
3519
|
-
args: [{ selector: 'duck-dev-progress-neobrutal-ticket', standalone: true, template: "<section class=\"dd-progress-neo-ticket\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-ticket__header\">\n <span class=\"dd-progress-neo-ticket__tag\">{{ leftTag() }}</span>\n <span class=\"dd-progress-neo-ticket__tag\">{{ rightTag() }}</span>\n </header>\n\n <div class=\"dd-progress-neo-ticket__body\">\n <div class=\"dd-progress-neo-ticket__copy\">\n <span class=\"dd-progress-neo-ticket__label\">{{ label() }}</span>\n <span class=\"dd-progress-neo-ticket__percent\">{{ percent() }}%</span>\n </div>\n\n <div class=\"dd-progress-neo-ticket__track\">\n <span class=\"dd-progress-neo-ticket__fill\" [style.width.%]=\"percent()\"></span>\n </div>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-ticket{display:flex;flex-direction:column;gap:0;width:100%;border:4px solid var(--dd-neo-ink);background:var(--dd-neo-paper);box-shadow:8px 8px 0 var(--dd-progress-fill)}.dd-progress-neo-ticket__header{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:4px solid var(--dd-neo-ink)}.dd-progress-neo-ticket__tag{display:inline-flex;justify-content:center;align-items:center;min-height:40px;padding:8px 12px;background:color-mix(in srgb,var(--dd-progress-fill) 20%,var(--dd-neo-paper));color:var(--dd-
|
|
3822
|
+
args: [{ selector: 'duck-dev-progress-neobrutal-ticket', standalone: true, template: "<section class=\"dd-progress-neo-ticket\" [attr.data-color]=\"color()\">\n <header class=\"dd-progress-neo-ticket__header\">\n <span class=\"dd-progress-neo-ticket__tag\">{{ leftTag() }}</span>\n <span class=\"dd-progress-neo-ticket__tag\">{{ rightTag() }}</span>\n </header>\n\n <div class=\"dd-progress-neo-ticket__body\">\n <div class=\"dd-progress-neo-ticket__copy\">\n <span class=\"dd-progress-neo-ticket__label\">{{ label() }}</span>\n <span class=\"dd-progress-neo-ticket__percent\">{{ percent() }}%</span>\n </div>\n\n <div class=\"dd-progress-neo-ticket__track\">\n <span class=\"dd-progress-neo-ticket__fill\" [style.width.%]=\"percent()\"></span>\n </div>\n </div>\n</section>\n", styles: [":host{display:block;width:100%}.dd-progress-neo-ticket{display:flex;flex-direction:column;gap:0;width:100%;border:4px solid var(--dd-neo-ink);background:var(--dd-neo-paper);box-shadow:8px 8px 0 var(--dd-progress-fill)}.dd-progress-neo-ticket__header{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:4px solid var(--dd-neo-ink)}.dd-progress-neo-ticket__tag{display:inline-flex;justify-content:center;align-items:center;min-height:40px;padding:8px 12px;background:color-mix(in srgb,var(--dd-progress-fill) 20%,var(--dd-neo-paper));color:var(--dd-neo-ink);font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.dd-progress-neo-ticket__tag:first-child{border-right:4px dashed var(--dd-neo-ink)}.dd-progress-neo-ticket__body{display:flex;flex-direction:column;gap:16px;padding:16px;background:linear-gradient(135deg,transparent 0 14px,color-mix(in srgb,var(--dd-progress-fill) 10%,var(--dd-neo-paper)) 14px 100%)}.dd-progress-neo-ticket__copy{display:flex;justify-content:space-between;gap:16px;align-items:center}.dd-progress-neo-ticket__label{color:var(--dd-neo-ink);font-size:15px;font-weight:900;line-height:1.2;text-transform:uppercase}.dd-progress-neo-ticket__percent{color:var(--dd-neo-ink);font-size:18px;font-weight:900;white-space:nowrap}.dd-progress-neo-ticket__track{position:relative;height:22px;border:4px solid var(--dd-neo-ink);overflow:hidden;background:color-mix(in srgb,var(--dd-progress-fill) 8%,var(--dd-neo-ana-4))}.dd-progress-neo-ticket__fill{display:block;height:100%;background:linear-gradient(90deg,color-mix(in srgb,var(--dd-progress-fill) 90%,var(--dd-neo-paper)),var(--dd-progress-fill));transition:width .22s ease;box-shadow:inset -4px 0 0 var(--dd-neo-ink)}.dd-progress-neo-ticket[data-color=violet]{--dd-progress-fill: var(--dd-neo-ana-6)}.dd-progress-neo-ticket[data-color=orange]{--dd-progress-fill: var(--dd-neo-ana-1)}.dd-progress-neo-ticket[data-color=gray]{--dd-progress-fill: var(--dd-neo-ana-2)}.dd-progress-neo-ticket[data-color=dark]{--dd-progress-fill: var(--dd-neo-ink)}.dd-progress-neo-ticket[data-color=white]{--dd-progress-fill: var(--dd-neo-paper)}\n"] }]
|
|
3520
3823
|
}], propDecorators: { leftTag: [{ type: i0.Input, args: [{ isSignal: true, alias: "leftTag", required: true }] }], rightTag: [{ type: i0.Input, args: [{ isSignal: true, alias: "rightTag", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
|
|
3521
3824
|
|
|
3522
3825
|
class DuckDevSegmentButton {
|
|
@@ -5454,9 +5757,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImpor
|
|
|
5454
5757
|
args: [{ selector: 'dd-breadcrumb-classic', standalone: true, template: "<nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n <ol class=\"breadcrumb__list\">\n @for (item of items(); track $index; let last = $last) {\n <li\n class=\"breadcrumb__item\"\n animate.enter=\"breadcrumb__item--enter\"\n animate.leave=\"breadcrumb__item--leave\"\n >\n @if (!last && item.url) {\n <button class=\"breadcrumb__link\" type=\"button\" (click)=\"navigate.emit(item)\">\n {{ item.label }}\n </button>\n } @else {\n <span class=\"breadcrumb__current\" [attr.aria-current]=\"last ? 'page' : null\">{{\n item.label\n }}</span>\n }\n @if (!last) {\n <span class=\"breadcrumb__separator\" aria-hidden=\"true\">{{ separator() }}</span>\n }\n </li>\n }\n </ol>\n</nav>\n", styles: [":host{display:block;height:40px;box-sizing:border-box}.breadcrumb__list{display:flex;flex-wrap:nowrap;align-items:center;margin:0;padding:0;list-style:none;height:100%;overflow-x:auto;scrollbar-width:none}.breadcrumb__list::-webkit-scrollbar{display:none}.breadcrumb__item{display:inline-flex;align-items:center;min-width:0}.breadcrumb__link{display:inline-block;max-width:150px;padding:6px 4px;border:none;background:transparent;color:var(--dd-base-accent-blue);font:inherit;font-size:.875rem;font-weight:500;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .18s ease,opacity .18s ease}.breadcrumb__link:hover{color:var(--dd-base-secondary);text-decoration:underline}.breadcrumb__link:focus-visible{outline:2px solid var(--dd-base-accent-blue);outline-offset:2px;border-radius:3px}.breadcrumb__current{display:inline-block;max-width:150px;padding:6px 4px;color:var(--dd-base-500);font-size:.875rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.breadcrumb__separator{flex-shrink:0;margin:0 8px;color:var(--dd-base-400);font-size:.8rem;-webkit-user-select:none;user-select:none}@keyframes breadcrumb-item-enter{0%{opacity:0;max-width:0;transform:translate(-8px)}50%{opacity:.4;max-width:250px}to{opacity:1;max-width:250px;transform:translate(0)}}@keyframes breadcrumb-item-leave{0%{opacity:1;max-width:250px;transform:translate(0)}50%{opacity:0;max-width:250px}to{opacity:0;max-width:0;transform:translate(-8px)}}.breadcrumb__item--enter{animation:breadcrumb-item-enter .3s cubic-bezier(.16,1,.3,1) both}.breadcrumb__item--leave{animation:breadcrumb-item-leave .22s cubic-bezier(.4,0,1,1) both}@media(max-width:768px){.breadcrumb__link,.breadcrumb__current{max-width:150px;font-size:.84rem}.breadcrumb__separator{margin:0 6px}}@media(max-width:480px){:host{height:36px}.breadcrumb__link{max-width:120px;padding:8px 2px;font-size:.8rem}.breadcrumb__current{max-width:140px;padding:8px 2px;font-size:.8rem}.breadcrumb__separator{margin:0 4px;font-size:.72rem}}@media(max-width:360px){.breadcrumb__link{max-width:90px;font-size:.75rem}.breadcrumb__current{max-width:110px;font-size:.75rem}.breadcrumb__separator{margin:0 3px}}\n"] }]
|
|
5455
5758
|
}], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], separator: [{ type: i0.Input, args: [{ isSignal: true, alias: "separator", required: false }] }], navigate: [{ type: i0.Output, args: ["navigate"] }] } });
|
|
5456
5759
|
|
|
5457
|
-
const SCROLL_FADE_RANGE_PX = 28;
|
|
5458
|
-
const SCROLL_FADE_MAX_OPACITY = 0.88;
|
|
5459
|
-
const SCROLL_EDGE_EPSILON_PX = 1;
|
|
5460
5760
|
const LONG_PRESS_TOOLTIP_DELAY_MS = 500;
|
|
5461
5761
|
const LONG_PRESS_MOVE_TOLERANCE_PX = 6;
|
|
5462
5762
|
const TOOLTIP_HORIZONTAL_GAP_PX = 8;
|
|
@@ -5490,14 +5790,10 @@ class DuckDevBreadcrumbNeobrutal {
|
|
|
5490
5790
|
};
|
|
5491
5791
|
}, { ...(ngDevMode ? { debugName: "tooltipStyle" } : {}) });
|
|
5492
5792
|
isDragging = signal(false, { ...(ngDevMode ? { debugName: "isDragging" } : {}) });
|
|
5493
|
-
leftFadeOpacity = signal(0, { ...(ngDevMode ? { debugName: "leftFadeOpacity" } : {}) });
|
|
5494
|
-
rightFadeOpacity = signal(0, { ...(ngDevMode ? { debugName: "rightFadeOpacity" } : {}) });
|
|
5495
5793
|
dragStartX = 0;
|
|
5496
5794
|
scrollStartX = 0;
|
|
5497
5795
|
hasDragged = false;
|
|
5498
5796
|
destroyRef = inject(DestroyRef);
|
|
5499
|
-
resizeObserver = null;
|
|
5500
|
-
scrollFadeFrameId = 0;
|
|
5501
5797
|
emptyItemsClearTimerId = null;
|
|
5502
5798
|
longPressTimerId = null;
|
|
5503
5799
|
longPressPointerId = null;
|
|
@@ -5512,7 +5808,6 @@ class DuckDevBreadcrumbNeobrutal {
|
|
|
5512
5808
|
e.preventDefault();
|
|
5513
5809
|
const dx = e.clientX - this.dragStartX;
|
|
5514
5810
|
el.scrollLeft = this.scrollStartX - dx;
|
|
5515
|
-
this.updateScrollFades();
|
|
5516
5811
|
if (Math.abs(dx) > 3) {
|
|
5517
5812
|
this.hasDragged = true;
|
|
5518
5813
|
}
|
|
@@ -5536,26 +5831,16 @@ class DuckDevBreadcrumbNeobrutal {
|
|
|
5536
5831
|
constructor() {
|
|
5537
5832
|
effect(() => {
|
|
5538
5833
|
this.syncVisibleItems(this.items());
|
|
5539
|
-
this.queueScrollFadeUpdate();
|
|
5540
5834
|
});
|
|
5541
5835
|
this.destroyRef.onDestroy(() => {
|
|
5542
5836
|
document.removeEventListener('mousemove', this.onMouseMove);
|
|
5543
5837
|
document.removeEventListener('mouseup', this.onMouseUp);
|
|
5544
|
-
this.resizeObserver?.disconnect();
|
|
5545
|
-
if (this.scrollFadeFrameId && typeof cancelAnimationFrame !== 'undefined') {
|
|
5546
|
-
cancelAnimationFrame(this.scrollFadeFrameId);
|
|
5547
|
-
}
|
|
5548
5838
|
this.clearEmptyItemsTimer();
|
|
5549
5839
|
this.clearLongPressTimer();
|
|
5550
5840
|
});
|
|
5551
5841
|
}
|
|
5552
|
-
ngAfterViewInit() {
|
|
5553
|
-
this.observeScrollContainer();
|
|
5554
|
-
this.queueScrollFadeUpdate();
|
|
5555
|
-
}
|
|
5556
5842
|
onListScroll() {
|
|
5557
5843
|
this.hideTooltip();
|
|
5558
|
-
this.updateScrollFades();
|
|
5559
5844
|
}
|
|
5560
5845
|
onNavigate(item, index, event) {
|
|
5561
5846
|
if (this.hasDragged) {
|
|
@@ -5627,46 +5912,6 @@ class DuckDevBreadcrumbNeobrutal {
|
|
|
5627
5912
|
}
|
|
5628
5913
|
}
|
|
5629
5914
|
}
|
|
5630
|
-
observeScrollContainer() {
|
|
5631
|
-
const el = this.listRef()?.nativeElement;
|
|
5632
|
-
if (!el || typeof ResizeObserver === 'undefined') {
|
|
5633
|
-
return;
|
|
5634
|
-
}
|
|
5635
|
-
this.resizeObserver = new ResizeObserver(() => this.queueScrollFadeUpdate());
|
|
5636
|
-
this.resizeObserver.observe(el);
|
|
5637
|
-
}
|
|
5638
|
-
queueScrollFadeUpdate() {
|
|
5639
|
-
if (typeof requestAnimationFrame === 'undefined') {
|
|
5640
|
-
this.updateScrollFades();
|
|
5641
|
-
return;
|
|
5642
|
-
}
|
|
5643
|
-
if (this.scrollFadeFrameId) {
|
|
5644
|
-
cancelAnimationFrame(this.scrollFadeFrameId);
|
|
5645
|
-
}
|
|
5646
|
-
this.scrollFadeFrameId = requestAnimationFrame(() => {
|
|
5647
|
-
this.scrollFadeFrameId = 0;
|
|
5648
|
-
this.updateScrollFades();
|
|
5649
|
-
});
|
|
5650
|
-
}
|
|
5651
|
-
updateScrollFades() {
|
|
5652
|
-
const el = this.listRef()?.nativeElement;
|
|
5653
|
-
if (!el) {
|
|
5654
|
-
this.leftFadeOpacity.set(0);
|
|
5655
|
-
this.rightFadeOpacity.set(0);
|
|
5656
|
-
return;
|
|
5657
|
-
}
|
|
5658
|
-
const maxScrollLeft = Math.max(0, el.scrollWidth - el.clientWidth);
|
|
5659
|
-
const scrollLeft = Math.min(Math.max(el.scrollLeft, 0), maxScrollLeft);
|
|
5660
|
-
const rightScrollDistance = Math.max(0, maxScrollLeft - scrollLeft);
|
|
5661
|
-
this.leftFadeOpacity.set(this.getScrollFadeOpacity(scrollLeft));
|
|
5662
|
-
this.rightFadeOpacity.set(this.getScrollFadeOpacity(rightScrollDistance));
|
|
5663
|
-
}
|
|
5664
|
-
getScrollFadeOpacity(distanceFromEdge) {
|
|
5665
|
-
if (distanceFromEdge <= SCROLL_EDGE_EPSILON_PX) {
|
|
5666
|
-
return 0;
|
|
5667
|
-
}
|
|
5668
|
-
return Math.min(distanceFromEdge / SCROLL_FADE_RANGE_PX, 1) * SCROLL_FADE_MAX_OPACITY;
|
|
5669
|
-
}
|
|
5670
5915
|
clearLongPressTimer() {
|
|
5671
5916
|
if (this.longPressTimerId) {
|
|
5672
5917
|
clearTimeout(this.longPressTimerId);
|
|
@@ -5688,7 +5933,6 @@ class DuckDevBreadcrumbNeobrutal {
|
|
|
5688
5933
|
this.emptyItemsClearTimerId = null;
|
|
5689
5934
|
if (this.items().length === 0) {
|
|
5690
5935
|
this.retainedItems.set([]);
|
|
5691
|
-
this.queueScrollFadeUpdate();
|
|
5692
5936
|
}
|
|
5693
5937
|
}, EMPTY_ITEMS_CLEAR_DELAY_MS);
|
|
5694
5938
|
}
|
|
@@ -5779,11 +6023,11 @@ class DuckDevBreadcrumbNeobrutal {
|
|
|
5779
6023
|
}
|
|
5780
6024
|
}
|
|
5781
6025
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevBreadcrumbNeobrutal, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5782
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.1", type: DuckDevBreadcrumbNeobrutal, isStandalone: true, selector: "dd-breadcrumb-neobrutal", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigate: "navigate" }, viewQueries: [{ propertyName: "navRef", first: true, predicate: ["navEl"], descendants: true, isSignal: true }, { propertyName: "listRef", first: true, predicate: ["listEl"], descendants: true, isSignal: true }, { propertyName: "labelRefs", predicate: ["labelEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<nav\n class=\"neo-bc\"\n #navEl\n [class.neo-bc--mobile]=\"isMobile()\"\n aria-label=\"Breadcrumb\"\n [ngStyle]=\"breadcrumbStyle()\"\n [style.--neo-bc-left-fade-opacity]=\"leftFadeOpacity()\"\n [style.--neo-bc-right-fade-opacity]=\"rightFadeOpacity()\"\n>\n <ol\n class=\"neo-bc__list\"\n #listEl\n [class.neo-bc__list--dragging]=\"isDragging()\"\n (mousedown)=\"onListMouseDown($event)\"\n (scroll)=\"onListScroll()\"\n >\n @for (item of visibleItems(); track $index; let last = $last) {\n <li class=\"neo-bc__item\">\n @if (!last && item.url) {\n <button\n class=\"neo-bc__link\"\n type=\"button\"\n [attr.aria-label]=\"item.label\"\n (click)=\"onNavigate(item, $index, $event)\"\n (pointerdown)=\"onCrumbPointerDown($index, $event)\"\n (pointermove)=\"onCrumbPointerMove($event)\"\n (pointerup)=\"onCrumbPointerEnd($event, true)\"\n (pointercancel)=\"onCrumbPointerEnd($event)\"\n (pointerleave)=\"onCrumbPointerEnd($event)\"\n (contextmenu)=\"$event.preventDefault()\"\n (keydown.escape)=\"closeTooltip()\"\n >\n <span class=\"neo-bc__chip\">\n <span class=\"neo-bc__label\" #labelEl>{{ item.label }}</span>\n </span>\n </button>\n } @else {\n <span\n class=\"neo-bc__current\"\n tabindex=\"0\"\n [attr.aria-current]=\"last ? 'page' : null\"\n [attr.aria-label]=\"item.label\"\n (click)=\"onCurrentClick($index, $event)\"\n (pointerdown)=\"onCrumbPointerDown($index, $event)\"\n (pointermove)=\"onCrumbPointerMove($event)\"\n (pointerup)=\"onCrumbPointerEnd($event, true)\"\n (pointercancel)=\"onCrumbPointerEnd($event)\"\n (pointerleave)=\"onCrumbPointerEnd($event)\"\n (contextmenu)=\"$event.preventDefault()\"\n (keydown.enter)=\"onCurrentClick($index, $event)\"\n (keydown.space)=\"$event.preventDefault(); onCurrentClick($index, $event)\"\n (keydown.escape)=\"closeTooltip()\"\n >\n <span class=\"neo-bc__chip neo-bc__chip--active\">\n <span class=\"neo-bc__label\" #labelEl>{{ item.label }}</span>\n </span>\n </span>\n }\n <span\n class=\"neo-bc__arrow\"\n [class.neo-bc__arrow--visible]=\"!last\"\n aria-hidden=\"true\"\n ></span>\n </li>\n }\n </ol>\n <span class=\"neo-bc__scroll-fade neo-bc__scroll-fade--left\" aria-hidden=\"true\"></span>\n <span class=\"neo-bc__scroll-fade neo-bc__scroll-fade--right\" aria-hidden=\"true\"></span>\n <span\n class=\"neo-bc__tooltip\"\n [class.neo-bc__tooltip--visible]=\"tooltipVisible()\"\n [ngStyle]=\"tooltipStyle()\"\n role=\"tooltip\"\n >\n {{ tooltipLabel() }}\n </span>\n</nav>\n", styles: [":host{display:block;box-sizing:border-box}.neo-bc{--neo-bc-row-height: 31px;--neo-bc-block-padding-y: 20px;--neo-bc-border-y: 6px;--neo-bc-padding-x: 14px;--neo-bc-padding-y: 10px;--neo-bc-arrow-gap: 8px;--neo-bc-arrow-top: 6px;--neo-bc-arrow-bottom: 6px;--neo-bc-arrow-left: 8px;--neo-bc-scroll-fade-size: 56px;--neo-bc-left-fade-opacity: 0;--neo-bc-right-fade-opacity: 0;--neo-bc-crumb-max-width: 150px;--neo-bc-arrow-space: calc( var(--neo-bc-arrow-gap) + var(--neo-bc-arrow-left) + var(--neo-bc-arrow-gap) );position:relative;display:block;width:100%;height:calc(var(--neo-bc-row-height) + var(--neo-bc-block-padding-y) + var(--neo-bc-border-y));box-sizing:border-box;padding:var(--neo-bc-padding-y) var(--neo-bc-padding-x);border:3px solid var(--dd-neo-ink);background:var(--neo-bc-surface);box-shadow:5px 5px 0 var(--neo-bc-shadow),5px 5px 0 3px var(--dd-neo-shadow);transition:padding .2s ease,box-shadow .2s ease}.neo-bc__list{position:relative;display:flex;align-items:center;width:100%;height:100%;min-width:0;margin:0;padding:0;list-style:none;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;cursor:grab}.neo-bc__list--dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.neo-bc__scroll-fade{position:absolute;top:var(--neo-bc-padding-y);bottom:var(--neo-bc-padding-y);z-index:1;width:var(--neo-bc-scroll-fade-size);pointer-events:none;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);transition:opacity .12s linear}.neo-bc__scroll-fade--left{left:var(--neo-bc-padding-x);background:linear-gradient(90deg,color-mix(in srgb,var(--neo-bc-surface) 94%,transparent) 0%,color-mix(in srgb,var(--neo-bc-surface) 70%,transparent) 35%,color-mix(in srgb,var(--neo-bc-surface) 28%,transparent) 70%,transparent 100%);mask-image:linear-gradient(90deg,rgba(0,0,0,.95) 0%,rgba(0,0,0,.72) 36%,rgba(0,0,0,.3) 72%,transparent 100%);-webkit-mask-image:linear-gradient(90deg,rgba(0,0,0,.95) 0%,rgba(0,0,0,.72) 36%,rgba(0,0,0,.3) 72%,transparent 100%);opacity:var(--neo-bc-left-fade-opacity)}.neo-bc__scroll-fade--right{right:var(--neo-bc-padding-x);background:linear-gradient(270deg,color-mix(in srgb,var(--neo-bc-surface) 94%,transparent) 0%,color-mix(in srgb,var(--neo-bc-surface) 70%,transparent) 35%,color-mix(in srgb,var(--neo-bc-surface) 28%,transparent) 70%,transparent 100%);mask-image:linear-gradient(270deg,rgba(0,0,0,.95) 0%,rgba(0,0,0,.72) 36%,rgba(0,0,0,.3) 72%,transparent 100%);-webkit-mask-image:linear-gradient(270deg,rgba(0,0,0,.95) 0%,rgba(0,0,0,.72) 36%,rgba(0,0,0,.3) 72%,transparent 100%);opacity:var(--neo-bc-right-fade-opacity)}.neo-bc__item{position:relative;display:flex;align-items:center;flex-shrink:0;min-width:0}.neo-bc__chip{display:flex;align-items:center;width:100%;min-width:0;max-width:var(--neo-bc-crumb-max-width);box-sizing:border-box;padding:5px 12px;border:2px solid var(--neo-bc-link);background:transparent;color:var(--neo-bc-link);font-size:.78rem;font-weight:900;line-height:1.1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .16s ease,background .16s ease,box-shadow .16s ease}.neo-bc__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.neo-bc__link{position:relative;display:flex;align-items:center;max-width:var(--neo-bc-crumb-max-width);padding:0;border:none;background:transparent;font:inherit;cursor:pointer;touch-action:pan-x}.neo-bc__link:hover .neo-bc__chip{transform:translate(-1px,-1px);box-shadow:2px 2px 0 var(--neo-bc-shadow);background:color-mix(in srgb,var(--neo-bc-shadow) 14%,transparent)}.neo-bc__link:focus-visible .neo-bc__chip{outline:3px solid var(--neo-bc-link);outline-offset:1px}.neo-bc__current{position:relative;display:flex;align-items:center;max-width:var(--neo-bc-crumb-max-width);touch-action:pan-x}.neo-bc__current:focus-visible .neo-bc__chip{outline:3px solid var(--neo-bc-link);outline-offset:1px}.neo-bc__chip--active{border-color:var(--dd-neo-ink);background:var(--neo-bc-separator);color:var(--neo-bc-active)}.neo-bc__arrow{display:inline-block;flex-shrink:0;width:0;height:0;margin-left:0;border-style:solid;border-width:0;border-color:transparent transparent transparent var(--neo-bc-separator);opacity:0;transform-origin:left center;transform:scaleX(.2);transition:margin-left .2s ease,border-width .2s ease,opacity .2s ease,transform .2s ease}.neo-bc__arrow--visible{margin-right:var(--neo-bc-arrow-gap);margin-left:var(--neo-bc-arrow-gap);border-width:var(--neo-bc-arrow-top) 0 var(--neo-bc-arrow-bottom) var(--neo-bc-arrow-left);opacity:1;transform:scaleX(1)}.neo-bc__tooltip{position:absolute;z-index:3;display:block;max-width:min(320px,100% - 16px);padding:6px 10px;border:2px solid var(--dd-neo-ink);background:var(--neo-bc-surface);box-shadow:3px 3px 0 var(--neo-bc-shadow),3px 3px 0 2px var(--dd-neo-shadow);color:var(--neo-bc-link);font-size:.72rem;font-weight:900;line-height:1.2;overflow-wrap:anywhere;text-transform:none;opacity:0;visibility:hidden;transform:translate(-2px,-2px);pointer-events:none;transition:opacity .14s ease,transform .14s ease,visibility .14s ease}.neo-bc__tooltip--visible{opacity:1;visibility:visible;transform:translate(0)}@keyframes neo-bc-item-enter{0%{opacity:0;transform:scale(.96)}50%{opacity:.5}to{opacity:1;transform:scale(1)}}@keyframes neo-bc-item-leave{0%{opacity:1;transform:scale(1)}50%{opacity:0}to{opacity:0;transform:scale(.96)}}.neo-bc__item--enter{animation:neo-bc-item-enter .34s cubic-bezier(.16,1,.3,1) both}.neo-bc__item--leave{animation:neo-bc-item-leave .24s cubic-bezier(.4,0,1,1) both}@media(max-width:768px){.neo-bc{--neo-bc-row-height: 28px;--neo-bc-block-padding-y: 16px;--neo-bc-padding-x: 10px;--neo-bc-padding-y: 8px;--neo-bc-arrow-gap: 6px;--neo-bc-arrow-top: 5px;--neo-bc-arrow-bottom: 5px;--neo-bc-arrow-left: 7px;--neo-bc-scroll-fade-size: 48px;box-shadow:4px 4px 0 var(--neo-bc-shadow),4px 4px 0 3px var(--dd-neo-shadow)}.neo-bc__chip{padding:4px 10px;font-size:.72rem}}@media(max-width:480px){.neo-bc{--neo-bc-border-y: 4px;--neo-bc-arrow-gap: 4px;--neo-bc-arrow-top: 4px;--neo-bc-arrow-bottom: 4px;--neo-bc-arrow-left: 6px;--neo-bc-padding-x: 8px;--neo-bc-padding-y: 8px;--neo-bc-scroll-fade-size: 40px;border-width:2px;box-shadow:3px 3px 0 var(--neo-bc-shadow),3px 3px 0 2px var(--dd-neo-shadow)}.neo-bc__chip{padding:5px 8px;border-width:2px;font-size:.68rem;letter-spacing:.05em}.neo-bc__tooltip{max-width:min(260px,100% - 12px);font-size:.68rem}}@media(max-width:360px){.neo-bc{--neo-bc-row-height: 24px;--neo-bc-block-padding-y: 12px;--neo-bc-arrow-gap: 3px;--neo-bc-arrow-top: 3px;--neo-bc-arrow-bottom: 3px;--neo-bc-arrow-left: 5px;--neo-bc-padding-x: 6px;--neo-bc-padding-y: 6px;--neo-bc-scroll-fade-size: 34px}.neo-bc__chip{padding:4px 6px;font-size:.62rem;letter-spacing:.03em}}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
6026
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.1", type: DuckDevBreadcrumbNeobrutal, isStandalone: true, selector: "dd-breadcrumb-neobrutal", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navigate: "navigate" }, viewQueries: [{ propertyName: "navRef", first: true, predicate: ["navEl"], descendants: true, isSignal: true }, { propertyName: "listRef", first: true, predicate: ["listEl"], descendants: true, isSignal: true }, { propertyName: "labelRefs", predicate: ["labelEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<nav\n class=\"neo-bc\"\n #navEl\n [class.neo-bc--mobile]=\"isMobile()\"\n aria-label=\"Breadcrumb\"\n [ngStyle]=\"breadcrumbStyle()\"\n ddEdgeFade\n ddEdgeFadeTarget=\".neo-bc__list\"\n ddEdgeFadeSurface=\"var(--neo-bc-surface)\"\n ddEdgeFadeSize=\"var(--neo-bc-scroll-fade-size)\"\n ddEdgeFadeInlineOffset=\"var(--neo-bc-padding-x)\"\n ddEdgeFadeBlockOffset=\"var(--neo-bc-padding-y)\"\n>\n <ol\n class=\"neo-bc__list\"\n #listEl\n [class.neo-bc__list--dragging]=\"isDragging()\"\n (mousedown)=\"onListMouseDown($event)\"\n (scroll)=\"onListScroll()\"\n >\n @for (item of visibleItems(); track $index; let last = $last) {\n <li class=\"neo-bc__item\">\n @if (!last && item.url) {\n <button\n class=\"neo-bc__link\"\n type=\"button\"\n [attr.aria-label]=\"item.label\"\n (click)=\"onNavigate(item, $index, $event)\"\n (pointerdown)=\"onCrumbPointerDown($index, $event)\"\n (pointermove)=\"onCrumbPointerMove($event)\"\n (pointerup)=\"onCrumbPointerEnd($event, true)\"\n (pointercancel)=\"onCrumbPointerEnd($event)\"\n (pointerleave)=\"onCrumbPointerEnd($event)\"\n (contextmenu)=\"$event.preventDefault()\"\n (keydown.escape)=\"closeTooltip()\"\n >\n <span class=\"neo-bc__chip\">\n <span class=\"neo-bc__label\" #labelEl>{{ item.label }}</span>\n </span>\n </button>\n } @else {\n <span\n class=\"neo-bc__current\"\n tabindex=\"0\"\n [attr.aria-current]=\"last ? 'page' : null\"\n [attr.aria-label]=\"item.label\"\n (click)=\"onCurrentClick($index, $event)\"\n (pointerdown)=\"onCrumbPointerDown($index, $event)\"\n (pointermove)=\"onCrumbPointerMove($event)\"\n (pointerup)=\"onCrumbPointerEnd($event, true)\"\n (pointercancel)=\"onCrumbPointerEnd($event)\"\n (pointerleave)=\"onCrumbPointerEnd($event)\"\n (contextmenu)=\"$event.preventDefault()\"\n (keydown.enter)=\"onCurrentClick($index, $event)\"\n (keydown.space)=\"$event.preventDefault(); onCurrentClick($index, $event)\"\n (keydown.escape)=\"closeTooltip()\"\n >\n <span class=\"neo-bc__chip neo-bc__chip--active\">\n <span class=\"neo-bc__label\" #labelEl>{{ item.label }}</span>\n </span>\n </span>\n }\n <span\n class=\"neo-bc__arrow\"\n [class.neo-bc__arrow--visible]=\"!last\"\n aria-hidden=\"true\"\n ></span>\n </li>\n }\n </ol>\n <span\n class=\"neo-bc__tooltip\"\n [class.neo-bc__tooltip--visible]=\"tooltipVisible()\"\n [ngStyle]=\"tooltipStyle()\"\n role=\"tooltip\"\n >\n {{ tooltipLabel() }}\n </span>\n</nav>\n", styles: [":host{display:block;box-sizing:border-box}.neo-bc{--neo-bc-row-height: 31px;--neo-bc-block-padding-y: 20px;--neo-bc-border-y: 6px;--neo-bc-padding-x: 14px;--neo-bc-padding-y: 10px;--neo-bc-arrow-gap: 8px;--neo-bc-arrow-top: 6px;--neo-bc-arrow-bottom: 6px;--neo-bc-arrow-left: 8px;--neo-bc-scroll-fade-size: 56px;--neo-bc-crumb-max-width: 150px;--neo-bc-arrow-space: calc( var(--neo-bc-arrow-gap) + var(--neo-bc-arrow-left) + var(--neo-bc-arrow-gap) );position:relative;display:block;width:100%;height:calc(var(--neo-bc-row-height) + var(--neo-bc-block-padding-y) + var(--neo-bc-border-y));box-sizing:border-box;padding:var(--neo-bc-padding-y) var(--neo-bc-padding-x);border:3px solid var(--dd-neo-ink);background:var(--neo-bc-surface);box-shadow:5px 5px 0 var(--neo-bc-shadow),5px 5px 0 3px var(--dd-neo-shadow);transition:padding .2s ease,box-shadow .2s ease}.neo-bc__list{position:relative;display:flex;align-items:center;width:100%;height:100%;min-width:0;margin:0;padding:0;list-style:none;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;cursor:grab}.neo-bc__list--dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.neo-bc__item{position:relative;display:flex;align-items:center;flex-shrink:0;min-width:0}.neo-bc__chip{display:flex;align-items:center;width:100%;min-width:0;max-width:var(--neo-bc-crumb-max-width);box-sizing:border-box;padding:5px 12px;border:2px solid var(--neo-bc-link);background:transparent;color:var(--neo-bc-link);font-size:.78rem;font-weight:900;line-height:1.1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .16s ease,background .16s ease,box-shadow .16s ease}.neo-bc__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.neo-bc__link{position:relative;display:flex;align-items:center;max-width:var(--neo-bc-crumb-max-width);padding:0;border:none;background:transparent;font:inherit;cursor:pointer;touch-action:pan-x}.neo-bc__link:hover .neo-bc__chip{transform:translate(-1px,-1px);box-shadow:2px 2px 0 var(--neo-bc-shadow);background:color-mix(in srgb,var(--neo-bc-shadow) 14%,transparent)}.neo-bc__link:focus-visible .neo-bc__chip{outline:3px solid var(--neo-bc-link);outline-offset:1px}.neo-bc__current{position:relative;display:flex;align-items:center;max-width:var(--neo-bc-crumb-max-width);touch-action:pan-x}.neo-bc__current:focus-visible .neo-bc__chip{outline:3px solid var(--neo-bc-link);outline-offset:1px}.neo-bc__chip--active{border-color:var(--dd-neo-ink);background:var(--neo-bc-separator);color:var(--neo-bc-active)}.neo-bc__arrow{display:inline-block;flex-shrink:0;width:0;height:0;margin-left:0;border-style:solid;border-width:0;border-color:transparent transparent transparent var(--neo-bc-separator);opacity:0;transform-origin:left center;transform:scaleX(.2);transition:margin-left .2s ease,border-width .2s ease,opacity .2s ease,transform .2s ease}.neo-bc__arrow--visible{margin-right:var(--neo-bc-arrow-gap);margin-left:var(--neo-bc-arrow-gap);border-width:var(--neo-bc-arrow-top) 0 var(--neo-bc-arrow-bottom) var(--neo-bc-arrow-left);opacity:1;transform:scaleX(1)}.neo-bc__tooltip{position:absolute;z-index:3;display:block;max-width:min(320px,100% - 16px);padding:6px 10px;border:2px solid var(--dd-neo-ink);background:var(--neo-bc-surface);box-shadow:3px 3px 0 var(--neo-bc-shadow),3px 3px 0 2px var(--dd-neo-shadow);color:var(--neo-bc-link);font-size:.72rem;font-weight:900;line-height:1.2;overflow-wrap:anywhere;text-transform:none;opacity:0;visibility:hidden;transform:translate(-2px,-2px);pointer-events:none;transition:opacity .14s ease,transform .14s ease,visibility .14s ease}.neo-bc__tooltip--visible{opacity:1;visibility:visible;transform:translate(0)}@keyframes neo-bc-item-enter{0%{opacity:0;transform:scale(.96)}50%{opacity:.5}to{opacity:1;transform:scale(1)}}@keyframes neo-bc-item-leave{0%{opacity:1;transform:scale(1)}50%{opacity:0}to{opacity:0;transform:scale(.96)}}.neo-bc__item--enter{animation:neo-bc-item-enter .34s cubic-bezier(.16,1,.3,1) both}.neo-bc__item--leave{animation:neo-bc-item-leave .24s cubic-bezier(.4,0,1,1) both}@media(max-width:768px){.neo-bc{--neo-bc-row-height: 28px;--neo-bc-block-padding-y: 16px;--neo-bc-padding-x: 10px;--neo-bc-padding-y: 8px;--neo-bc-arrow-gap: 6px;--neo-bc-arrow-top: 5px;--neo-bc-arrow-bottom: 5px;--neo-bc-arrow-left: 7px;--neo-bc-scroll-fade-size: 48px;box-shadow:4px 4px 0 var(--neo-bc-shadow),4px 4px 0 3px var(--dd-neo-shadow)}.neo-bc__chip{padding:4px 10px;font-size:.72rem}}@media(max-width:480px){.neo-bc{--neo-bc-border-y: 4px;--neo-bc-arrow-gap: 4px;--neo-bc-arrow-top: 4px;--neo-bc-arrow-bottom: 4px;--neo-bc-arrow-left: 6px;--neo-bc-padding-x: 8px;--neo-bc-padding-y: 8px;--neo-bc-scroll-fade-size: 40px;border-width:2px;box-shadow:3px 3px 0 var(--neo-bc-shadow),3px 3px 0 2px var(--dd-neo-shadow)}.neo-bc__chip{padding:5px 8px;border-width:2px;font-size:.68rem;letter-spacing:.05em}.neo-bc__tooltip{max-width:min(260px,100% - 12px);font-size:.68rem}}@media(max-width:360px){.neo-bc{--neo-bc-row-height: 24px;--neo-bc-block-padding-y: 12px;--neo-bc-arrow-gap: 3px;--neo-bc-arrow-top: 3px;--neo-bc-arrow-bottom: 3px;--neo-bc-arrow-left: 5px;--neo-bc-padding-x: 6px;--neo-bc-padding-y: 6px;--neo-bc-scroll-fade-size: 34px}.neo-bc__chip{padding:4px 6px;font-size:.62rem;letter-spacing:.03em}}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: DdEdgeFadeDirective, selector: "[ddEdgeFade]", inputs: ["ddEdgeFadeTarget", "ddEdgeFadeEdges", "ddEdgeFadeBlur", "ddEdgeFadeOpacity", "ddEdgeFadeIntensity", "ddEdgeFadeSurface", "ddEdgeFadeSize", "ddEdgeFadeInlineOffset", "ddEdgeFadeBlockOffset"] }] });
|
|
5783
6027
|
}
|
|
5784
6028
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImport: i0, type: DuckDevBreadcrumbNeobrutal, decorators: [{
|
|
5785
6029
|
type: Component,
|
|
5786
|
-
args: [{ selector: 'dd-breadcrumb-neobrutal', standalone: true, imports: [NgStyle], template: "<nav\n class=\"neo-bc\"\n #navEl\n [class.neo-bc--mobile]=\"isMobile()\"\n aria-label=\"Breadcrumb\"\n [ngStyle]=\"breadcrumbStyle()\"\n
|
|
6030
|
+
args: [{ selector: 'dd-breadcrumb-neobrutal', standalone: true, imports: [NgStyle, DdEdgeFadeDirective], template: "<nav\n class=\"neo-bc\"\n #navEl\n [class.neo-bc--mobile]=\"isMobile()\"\n aria-label=\"Breadcrumb\"\n [ngStyle]=\"breadcrumbStyle()\"\n ddEdgeFade\n ddEdgeFadeTarget=\".neo-bc__list\"\n ddEdgeFadeSurface=\"var(--neo-bc-surface)\"\n ddEdgeFadeSize=\"var(--neo-bc-scroll-fade-size)\"\n ddEdgeFadeInlineOffset=\"var(--neo-bc-padding-x)\"\n ddEdgeFadeBlockOffset=\"var(--neo-bc-padding-y)\"\n>\n <ol\n class=\"neo-bc__list\"\n #listEl\n [class.neo-bc__list--dragging]=\"isDragging()\"\n (mousedown)=\"onListMouseDown($event)\"\n (scroll)=\"onListScroll()\"\n >\n @for (item of visibleItems(); track $index; let last = $last) {\n <li class=\"neo-bc__item\">\n @if (!last && item.url) {\n <button\n class=\"neo-bc__link\"\n type=\"button\"\n [attr.aria-label]=\"item.label\"\n (click)=\"onNavigate(item, $index, $event)\"\n (pointerdown)=\"onCrumbPointerDown($index, $event)\"\n (pointermove)=\"onCrumbPointerMove($event)\"\n (pointerup)=\"onCrumbPointerEnd($event, true)\"\n (pointercancel)=\"onCrumbPointerEnd($event)\"\n (pointerleave)=\"onCrumbPointerEnd($event)\"\n (contextmenu)=\"$event.preventDefault()\"\n (keydown.escape)=\"closeTooltip()\"\n >\n <span class=\"neo-bc__chip\">\n <span class=\"neo-bc__label\" #labelEl>{{ item.label }}</span>\n </span>\n </button>\n } @else {\n <span\n class=\"neo-bc__current\"\n tabindex=\"0\"\n [attr.aria-current]=\"last ? 'page' : null\"\n [attr.aria-label]=\"item.label\"\n (click)=\"onCurrentClick($index, $event)\"\n (pointerdown)=\"onCrumbPointerDown($index, $event)\"\n (pointermove)=\"onCrumbPointerMove($event)\"\n (pointerup)=\"onCrumbPointerEnd($event, true)\"\n (pointercancel)=\"onCrumbPointerEnd($event)\"\n (pointerleave)=\"onCrumbPointerEnd($event)\"\n (contextmenu)=\"$event.preventDefault()\"\n (keydown.enter)=\"onCurrentClick($index, $event)\"\n (keydown.space)=\"$event.preventDefault(); onCurrentClick($index, $event)\"\n (keydown.escape)=\"closeTooltip()\"\n >\n <span class=\"neo-bc__chip neo-bc__chip--active\">\n <span class=\"neo-bc__label\" #labelEl>{{ item.label }}</span>\n </span>\n </span>\n }\n <span\n class=\"neo-bc__arrow\"\n [class.neo-bc__arrow--visible]=\"!last\"\n aria-hidden=\"true\"\n ></span>\n </li>\n }\n </ol>\n <span\n class=\"neo-bc__tooltip\"\n [class.neo-bc__tooltip--visible]=\"tooltipVisible()\"\n [ngStyle]=\"tooltipStyle()\"\n role=\"tooltip\"\n >\n {{ tooltipLabel() }}\n </span>\n</nav>\n", styles: [":host{display:block;box-sizing:border-box}.neo-bc{--neo-bc-row-height: 31px;--neo-bc-block-padding-y: 20px;--neo-bc-border-y: 6px;--neo-bc-padding-x: 14px;--neo-bc-padding-y: 10px;--neo-bc-arrow-gap: 8px;--neo-bc-arrow-top: 6px;--neo-bc-arrow-bottom: 6px;--neo-bc-arrow-left: 8px;--neo-bc-scroll-fade-size: 56px;--neo-bc-crumb-max-width: 150px;--neo-bc-arrow-space: calc( var(--neo-bc-arrow-gap) + var(--neo-bc-arrow-left) + var(--neo-bc-arrow-gap) );position:relative;display:block;width:100%;height:calc(var(--neo-bc-row-height) + var(--neo-bc-block-padding-y) + var(--neo-bc-border-y));box-sizing:border-box;padding:var(--neo-bc-padding-y) var(--neo-bc-padding-x);border:3px solid var(--dd-neo-ink);background:var(--neo-bc-surface);box-shadow:5px 5px 0 var(--neo-bc-shadow),5px 5px 0 3px var(--dd-neo-shadow);transition:padding .2s ease,box-shadow .2s ease}.neo-bc__list{position:relative;display:flex;align-items:center;width:100%;height:100%;min-width:0;margin:0;padding:0;list-style:none;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;cursor:grab}.neo-bc__list--dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.neo-bc__item{position:relative;display:flex;align-items:center;flex-shrink:0;min-width:0}.neo-bc__chip{display:flex;align-items:center;width:100%;min-width:0;max-width:var(--neo-bc-crumb-max-width);box-sizing:border-box;padding:5px 12px;border:2px solid var(--neo-bc-link);background:transparent;color:var(--neo-bc-link);font-size:.78rem;font-weight:900;line-height:1.1;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .16s ease,background .16s ease,box-shadow .16s ease}.neo-bc__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.neo-bc__link{position:relative;display:flex;align-items:center;max-width:var(--neo-bc-crumb-max-width);padding:0;border:none;background:transparent;font:inherit;cursor:pointer;touch-action:pan-x}.neo-bc__link:hover .neo-bc__chip{transform:translate(-1px,-1px);box-shadow:2px 2px 0 var(--neo-bc-shadow);background:color-mix(in srgb,var(--neo-bc-shadow) 14%,transparent)}.neo-bc__link:focus-visible .neo-bc__chip{outline:3px solid var(--neo-bc-link);outline-offset:1px}.neo-bc__current{position:relative;display:flex;align-items:center;max-width:var(--neo-bc-crumb-max-width);touch-action:pan-x}.neo-bc__current:focus-visible .neo-bc__chip{outline:3px solid var(--neo-bc-link);outline-offset:1px}.neo-bc__chip--active{border-color:var(--dd-neo-ink);background:var(--neo-bc-separator);color:var(--neo-bc-active)}.neo-bc__arrow{display:inline-block;flex-shrink:0;width:0;height:0;margin-left:0;border-style:solid;border-width:0;border-color:transparent transparent transparent var(--neo-bc-separator);opacity:0;transform-origin:left center;transform:scaleX(.2);transition:margin-left .2s ease,border-width .2s ease,opacity .2s ease,transform .2s ease}.neo-bc__arrow--visible{margin-right:var(--neo-bc-arrow-gap);margin-left:var(--neo-bc-arrow-gap);border-width:var(--neo-bc-arrow-top) 0 var(--neo-bc-arrow-bottom) var(--neo-bc-arrow-left);opacity:1;transform:scaleX(1)}.neo-bc__tooltip{position:absolute;z-index:3;display:block;max-width:min(320px,100% - 16px);padding:6px 10px;border:2px solid var(--dd-neo-ink);background:var(--neo-bc-surface);box-shadow:3px 3px 0 var(--neo-bc-shadow),3px 3px 0 2px var(--dd-neo-shadow);color:var(--neo-bc-link);font-size:.72rem;font-weight:900;line-height:1.2;overflow-wrap:anywhere;text-transform:none;opacity:0;visibility:hidden;transform:translate(-2px,-2px);pointer-events:none;transition:opacity .14s ease,transform .14s ease,visibility .14s ease}.neo-bc__tooltip--visible{opacity:1;visibility:visible;transform:translate(0)}@keyframes neo-bc-item-enter{0%{opacity:0;transform:scale(.96)}50%{opacity:.5}to{opacity:1;transform:scale(1)}}@keyframes neo-bc-item-leave{0%{opacity:1;transform:scale(1)}50%{opacity:0}to{opacity:0;transform:scale(.96)}}.neo-bc__item--enter{animation:neo-bc-item-enter .34s cubic-bezier(.16,1,.3,1) both}.neo-bc__item--leave{animation:neo-bc-item-leave .24s cubic-bezier(.4,0,1,1) both}@media(max-width:768px){.neo-bc{--neo-bc-row-height: 28px;--neo-bc-block-padding-y: 16px;--neo-bc-padding-x: 10px;--neo-bc-padding-y: 8px;--neo-bc-arrow-gap: 6px;--neo-bc-arrow-top: 5px;--neo-bc-arrow-bottom: 5px;--neo-bc-arrow-left: 7px;--neo-bc-scroll-fade-size: 48px;box-shadow:4px 4px 0 var(--neo-bc-shadow),4px 4px 0 3px var(--dd-neo-shadow)}.neo-bc__chip{padding:4px 10px;font-size:.72rem}}@media(max-width:480px){.neo-bc{--neo-bc-border-y: 4px;--neo-bc-arrow-gap: 4px;--neo-bc-arrow-top: 4px;--neo-bc-arrow-bottom: 4px;--neo-bc-arrow-left: 6px;--neo-bc-padding-x: 8px;--neo-bc-padding-y: 8px;--neo-bc-scroll-fade-size: 40px;border-width:2px;box-shadow:3px 3px 0 var(--neo-bc-shadow),3px 3px 0 2px var(--dd-neo-shadow)}.neo-bc__chip{padding:5px 8px;border-width:2px;font-size:.68rem;letter-spacing:.05em}.neo-bc__tooltip{max-width:min(260px,100% - 12px);font-size:.68rem}}@media(max-width:360px){.neo-bc{--neo-bc-row-height: 24px;--neo-bc-block-padding-y: 12px;--neo-bc-arrow-gap: 3px;--neo-bc-arrow-top: 3px;--neo-bc-arrow-bottom: 3px;--neo-bc-arrow-left: 5px;--neo-bc-padding-x: 6px;--neo-bc-padding-y: 6px;--neo-bc-scroll-fade-size: 34px}.neo-bc__chip{padding:4px 6px;font-size:.62rem;letter-spacing:.03em}}\n"] }]
|
|
5787
6031
|
}], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], isMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "isMobile", required: false }] }], navigate: [{ type: i0.Output, args: ["navigate"] }], navRef: [{ type: i0.ViewChild, args: ['navEl', { isSignal: true }] }], listRef: [{ type: i0.ViewChild, args: ['listEl', { isSignal: true }] }], labelRefs: [{ type: i0.ViewChildren, args: ['labelEl', { isSignal: true }] }] } });
|
|
5788
6032
|
|
|
5789
6033
|
class DuckDevSelectorOption {
|
|
@@ -6059,5 +6303,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.1", ngImpor
|
|
|
6059
6303
|
* Generated bundle index. Do not edit.
|
|
6060
6304
|
*/
|
|
6061
6305
|
|
|
6062
|
-
export { AccentEnumColor, Badge, BadgeNeobrutalSlab, BadgeNeobrutalStamp, BadgeNeobrutalTicket, ButtonBlurLift, ButtonCasper, ButtonFlip, ButtonGlideOver, ButtonNeobrutalBurst, ButtonNeobrutalSlab, ButtonNeobrutalSticker, ButtonNeobrutalTag, ButtonNeobrutalTape, ButtonNeobrutalZigzag, DD_NEO_PALETTES, DdFlexDirectionDirective, DdTabPanel, DuckDevAccordionComponent as DuckDevAccordion, DuckDevAccordionNeobrutalComponent as DuckDevAccordionNeobrutal, DuckDevAccordionNeobrutalTapeComponent as DuckDevAccordionNeobrutalTape, DuckDevBreadcrumbClassic, DuckDevBreadcrumbNeobrutal, DuckDevCardAccent, DuckDevCardMinimal, DuckDevCardNeobrutalPoster, DuckDevCardNeobrutalSlab, DuckDevCardNeobrutalStamp, DuckDevCardNeobrutalTicket, DuckDevCardOutline, DuckDevCardSection, DuckDevCardSignal, DuckDevIcon, DuckDevInput, DuckDevInputNeobrutalPoster, DuckDevInputNeobrutalRadio, DuckDevInputNeobrutalSlab, DuckDevInputNeobrutalStrip, DuckDevInputNeobrutalToggle, DuckDevModalClassic, DuckDevNotification, DuckDevNotificationContainer, DuckDevNotificationService, DuckDevProgressLine, DuckDevProgressMeter, DuckDevProgressNeobrutalSlab, DuckDevProgressNeobrutalStamp, DuckDevProgressNeobrutalTicket, DuckDevProgressStack, DuckDevSegmentButton, DuckDevSegmentClassic, DuckDevSegmentNeobrutal, DuckDevSegmentNeobrutalVertical, DuckDevSelectorDrum, DuckDevSelectorOption, DuckDevSpeakerBubbleClassic, DuckDevSpeakerBubbleNeobrutalSlab, DuckDevSpeakerBubbleNeobrutalTicket, DuckDevSpeakerBubbleOutline, DuckDevSpeakerBubbleSoft, DuckDevTab, DuckDevTabNeobrutal, DuckDevTabVertical, DuckDevTooltip, DuckDevTooltipNeobrutalComponent, LoaderClassic, LoaderLoadingBubble, LoaderNeobrutalBars, LoaderNeobrutalMarquee, LoaderNeobrutalStamp, LoaderThreeDots, SliderClassic, getClassicSpeakerBubbleStyle, getNeobrutalSelectorStyle, getNeobrutalSpeakerBubbleStyle, useSpeakerBubbleTail };
|
|
6306
|
+
export { AccentEnumColor, Badge, BadgeNeobrutalSlab, BadgeNeobrutalStamp, BadgeNeobrutalTicket, ButtonBlurLift, ButtonCasper, ButtonFlip, ButtonGlideOver, ButtonNeobrutalBurst, ButtonNeobrutalSlab, ButtonNeobrutalSticker, ButtonNeobrutalTag, ButtonNeobrutalTape, ButtonNeobrutalZigzag, DD_NEO_PALETTES, DdEdgeFadeDirective, DdFlexDirectionDirective, DdTabPanel, DuckDevAccordionComponent as DuckDevAccordion, DuckDevAccordionNeobrutalComponent as DuckDevAccordionNeobrutal, DuckDevAccordionNeobrutalTapeComponent as DuckDevAccordionNeobrutalTape, DuckDevBreadcrumbClassic, DuckDevBreadcrumbNeobrutal, DuckDevCardAccent, DuckDevCardMinimal, DuckDevCardNeobrutalPoster, DuckDevCardNeobrutalSlab, DuckDevCardNeobrutalStamp, DuckDevCardNeobrutalTicket, DuckDevCardOutline, DuckDevCardSection, DuckDevCardSignal, DuckDevIcon, DuckDevInput, DuckDevInputNeobrutalPoster, DuckDevInputNeobrutalRadio, DuckDevInputNeobrutalSlab, DuckDevInputNeobrutalStrip, DuckDevInputNeobrutalToggle, DuckDevModalClassic, DuckDevNotification, DuckDevNotificationContainer, DuckDevNotificationService, DuckDevProgressLine, DuckDevProgressMeter, DuckDevProgressNeobrutalSlab, DuckDevProgressNeobrutalStamp, DuckDevProgressNeobrutalTicket, DuckDevProgressStack, DuckDevSegmentButton, DuckDevSegmentClassic, DuckDevSegmentNeobrutal, DuckDevSegmentNeobrutalVertical, DuckDevSelectorDrum, DuckDevSelectorOption, DuckDevSpeakerBubbleClassic, DuckDevSpeakerBubbleNeobrutalSlab, DuckDevSpeakerBubbleNeobrutalTicket, DuckDevSpeakerBubbleOutline, DuckDevSpeakerBubbleSoft, DuckDevTab, DuckDevTabNeobrutal, DuckDevTabVertical, DuckDevTooltip, DuckDevTooltipNeobrutalComponent, LoaderClassic, LoaderLoadingBubble, LoaderNeobrutalBars, LoaderNeobrutalMarquee, LoaderNeobrutalStamp, LoaderThreeDots, SliderClassic, getClassicSpeakerBubbleStyle, getNeobrutalSelectorStyle, getNeobrutalSpeakerBubbleStyle, useSpeakerBubbleTail };
|
|
6063
6307
|
//# sourceMappingURL=duck-dev-lib.mjs.map
|