ngx-strata 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/styles/base.scss +7 -3
- package/assets/styles/colors.scss +3 -11
- package/assets/styles/components/accordion.scss +4 -2
- package/assets/styles/components/action-menu.scss +2 -2
- package/assets/styles/components/alert.scss +112 -0
- package/assets/styles/components/avatar.scss +40 -22
- package/assets/styles/components/button.scss +27 -20
- package/assets/styles/components/card.scss +21 -13
- package/assets/styles/components/checkbox.scss +11 -9
- package/assets/styles/components/input-field.scss +6 -3
- package/assets/styles/components/modal.scss +3 -9
- package/assets/styles/components/notification.scss +40 -20
- package/assets/styles/components/pagination.scss +16 -8
- package/assets/styles/components/progress.scss +32 -22
- package/assets/styles/components/radio.scss +101 -0
- package/assets/styles/components/segmented-control.scss +24 -7
- package/assets/styles/components/select.scss +8 -4
- package/assets/styles/components/sidemenu.scss +55 -0
- package/assets/styles/components/spinner.scss +10 -7
- package/assets/styles/components/table.scss +4 -2
- package/assets/styles/components/tabs.scss +71 -0
- package/assets/styles/components/tag.scss +17 -13
- package/assets/styles/components/toggle.scss +44 -42
- package/assets/styles/focus-outline.scss +2 -1
- package/assets/styles/primitives/color-primitives.scss +88 -0
- package/assets/styles/primitives/spacing-primitives.scss +16 -0
- package/assets/styles/public-api.scss +42 -34
- package/assets/styles/semantics/color-semantic.scss +121 -0
- package/assets/styles/typography.scss +124 -34
- package/dist/strata/strata.css +1 -1
- package/fesm2022/ngx-strata.mjs +871 -289
- package/fesm2022/ngx-strata.mjs.map +1 -1
- package/package.json +3 -3
- package/types/ngx-strata.d.ts +385 -184
- package/dist/my-lib/strata.css +0 -1
package/fesm2022/ngx-strata.mjs
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, provideAppInitializer, inject, makeEnvironmentProviders, InjectionToken, input, DOCUMENT, Input, Inject, Directive, signal, computed, effect, model, HostListener, Component, HostBinding, contentChild, ElementRef, output,
|
|
2
|
+
import { Injectable, provideAppInitializer, inject, makeEnvironmentProviders, InjectionToken, input, DOCUMENT, Input, Inject, Directive, signal, computed, effect, DestroyRef, model, HostListener, Component, HostBinding, contentChild, ElementRef, output, ViewContainerRef, viewChild, contentChildren, Renderer2, Pipe, booleanAttribute, ContentChildren, LOCALE_ID } from '@angular/core';
|
|
3
3
|
import { computePosition, offset, arrow, autoUpdate, flip, shift } from '@floating-ui/dom';
|
|
4
|
-
import { Observable, tap, map, BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { Observable, tap, map, fromEvent, filter, BehaviorSubject } from 'rxjs';
|
|
5
5
|
import { HttpClient } from '@angular/common/http';
|
|
6
6
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
7
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
8
|
import * as i1 from '@angular/forms';
|
|
8
9
|
import { FormsModule } from '@angular/forms';
|
|
9
10
|
import * as i2 from '@angular/common';
|
|
10
11
|
import { NgTemplateOutlet, CommonModule, DecimalPipe, formatNumber, getLocaleNumberSymbol, NumberSymbol } from '@angular/common';
|
|
12
|
+
import { Router, NavigationEnd, RouterLinkActive } from '@angular/router';
|
|
11
13
|
|
|
12
14
|
class IconLoader {
|
|
13
15
|
}
|
|
@@ -146,9 +148,20 @@ function provideIconRegistry() {
|
|
|
146
148
|
const DEFAULT_CONFIG = {
|
|
147
149
|
includeBaseIcons: true,
|
|
148
150
|
tooltipDelayMs: 500,
|
|
151
|
+
crossPlatformHotkeys: true,
|
|
152
|
+
shortcutLabels: {
|
|
153
|
+
meta: '⌘',
|
|
154
|
+
ctrl: 'Ctrl',
|
|
155
|
+
shift: 'Shift',
|
|
156
|
+
alt: 'Alt',
|
|
157
|
+
},
|
|
149
158
|
};
|
|
150
159
|
function provideStrata(config = {}) {
|
|
151
|
-
const mergedConfig = {
|
|
160
|
+
const mergedConfig = {
|
|
161
|
+
...DEFAULT_CONFIG,
|
|
162
|
+
...config,
|
|
163
|
+
shortcutLabels: { ...DEFAULT_CONFIG.shortcutLabels, ...config.shortcutLabels },
|
|
164
|
+
};
|
|
152
165
|
const providers = [
|
|
153
166
|
provideIconLoader(),
|
|
154
167
|
provideIconRegistry(),
|
|
@@ -164,7 +177,7 @@ function provideStrata(config = {}) {
|
|
|
164
177
|
}
|
|
165
178
|
const STRATA_CONFIG = new InjectionToken('STRATA_CONFIG');
|
|
166
179
|
|
|
167
|
-
class
|
|
180
|
+
class StrataTooltipDirective {
|
|
168
181
|
document;
|
|
169
182
|
element;
|
|
170
183
|
renderer;
|
|
@@ -259,16 +272,17 @@ class TooltipDirective {
|
|
|
259
272
|
}
|
|
260
273
|
this.tooltipContentElement?.removeAttribute('data-show');
|
|
261
274
|
this.tooltipContentElement?.setAttribute('aria-hidden', 'true');
|
|
262
|
-
this.autoUpdateCleanupFunction
|
|
275
|
+
if (this.autoUpdateCleanupFunction) {
|
|
276
|
+
this.autoUpdateCleanupFunction();
|
|
277
|
+
}
|
|
263
278
|
}
|
|
264
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
265
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
279
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataTooltipDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
280
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: StrataTooltipDirective, isStandalone: true, selector: "[stSimpleTooltip]", inputs: { stSimpleTooltip: { classPropertyName: "stSimpleTooltip", publicName: "stSimpleTooltip", isSignal: true, isRequired: true, transformFunction: null }, tooltipEnabled: { classPropertyName: "tooltipEnabled", publicName: "tooltipEnabled", isSignal: false, isRequired: false, transformFunction: null }, tooltipPlacement: { classPropertyName: "tooltipPlacement", publicName: "tooltipPlacement", isSignal: false, isRequired: false, transformFunction: null }, tooltipAlwaysShow: { classPropertyName: "tooltipAlwaysShow", publicName: "tooltipAlwaysShow", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
266
281
|
}
|
|
267
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataTooltipDirective, decorators: [{
|
|
268
283
|
type: Directive,
|
|
269
284
|
args: [{
|
|
270
285
|
selector: '[stSimpleTooltip]',
|
|
271
|
-
standalone: true,
|
|
272
286
|
}]
|
|
273
287
|
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
274
288
|
type: Inject,
|
|
@@ -344,7 +358,96 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
344
358
|
}]
|
|
345
359
|
}], ctorParameters: () => [] });
|
|
346
360
|
|
|
347
|
-
class
|
|
361
|
+
class HotkeyService {
|
|
362
|
+
config = inject(STRATA_CONFIG);
|
|
363
|
+
destroyRef = inject(DestroyRef);
|
|
364
|
+
registrations = new Map();
|
|
365
|
+
constructor() {
|
|
366
|
+
fromEvent(document, 'keydown')
|
|
367
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
368
|
+
.subscribe((event) => this.handleKeydown(event));
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Register a keyboard shortcut.
|
|
372
|
+
*
|
|
373
|
+
* @param combo - A combo string like `'meta+k'`, `'ctrl+shift+p'`, `'shift+?'`.
|
|
374
|
+
* Use `'meta'` for ⌘ on Mac / Win key on Windows. When `crossPlatformHotkeys` is
|
|
375
|
+
* enabled in StrataConfig (default), registering `meta+k` also fires on `ctrl+k`
|
|
376
|
+
* and vice-versa.
|
|
377
|
+
* @param handler - Callback invoked when the combo is matched.
|
|
378
|
+
* @param options - Optional configuration per registration.
|
|
379
|
+
* @returns A teardown function — call it to unregister the hotkey.
|
|
380
|
+
*/
|
|
381
|
+
register(combo, handler, options = {}) {
|
|
382
|
+
const id = Symbol();
|
|
383
|
+
const parsed = this.parseCombo(combo);
|
|
384
|
+
const combos = this.config.crossPlatformHotkeys ? this.expandCrossPlatform(parsed) : [parsed];
|
|
385
|
+
this.registrations.set(id, {
|
|
386
|
+
combos,
|
|
387
|
+
handler,
|
|
388
|
+
options: { allowInInput: false, ...options },
|
|
389
|
+
});
|
|
390
|
+
return () => this.registrations.delete(id);
|
|
391
|
+
}
|
|
392
|
+
handleKeydown(event) {
|
|
393
|
+
for (const registration of this.registrations.values()) {
|
|
394
|
+
if (!registration.options.allowInInput && this.isInputFocused(event)) {
|
|
395
|
+
continue;
|
|
396
|
+
}
|
|
397
|
+
if (registration.combos.some((combo) => this.matchesCombo(event, combo))) {
|
|
398
|
+
event.preventDefault();
|
|
399
|
+
registration.handler();
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
matchesCombo(event, combo) {
|
|
404
|
+
return (event.key.toLowerCase() === combo.key &&
|
|
405
|
+
event.metaKey === combo.meta &&
|
|
406
|
+
event.ctrlKey === combo.ctrl &&
|
|
407
|
+
event.shiftKey === combo.shift &&
|
|
408
|
+
event.altKey === combo.alt);
|
|
409
|
+
}
|
|
410
|
+
parseCombo(combo) {
|
|
411
|
+
const parts = combo.toLowerCase().split('+');
|
|
412
|
+
const key = parts[parts.length - 1];
|
|
413
|
+
return {
|
|
414
|
+
key,
|
|
415
|
+
meta: parts.includes('meta'),
|
|
416
|
+
ctrl: parts.includes('ctrl'),
|
|
417
|
+
shift: parts.includes('shift'),
|
|
418
|
+
alt: parts.includes('alt'),
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* When crossPlatformHotkeys is enabled, mirror meta ↔ ctrl so that
|
|
423
|
+
* a single `register('meta+k', ...)` call fires on both ⌘K (Mac) and Ctrl+K (Win/Linux).
|
|
424
|
+
*/
|
|
425
|
+
expandCrossPlatform(parsed) {
|
|
426
|
+
const combos = [parsed];
|
|
427
|
+
if (parsed.meta && !parsed.ctrl) {
|
|
428
|
+
combos.push({ ...parsed, meta: false, ctrl: true });
|
|
429
|
+
}
|
|
430
|
+
else if (parsed.ctrl && !parsed.meta) {
|
|
431
|
+
combos.push({ ...parsed, ctrl: false, meta: true });
|
|
432
|
+
}
|
|
433
|
+
return combos;
|
|
434
|
+
}
|
|
435
|
+
isInputFocused(event) {
|
|
436
|
+
const target = event.target;
|
|
437
|
+
if (!target)
|
|
438
|
+
return false;
|
|
439
|
+
const tag = target.tagName.toLowerCase();
|
|
440
|
+
return tag === 'input' || tag === 'textarea' || target.isContentEditable;
|
|
441
|
+
}
|
|
442
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: HotkeyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
443
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: HotkeyService, providedIn: 'root' });
|
|
444
|
+
}
|
|
445
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: HotkeyService, decorators: [{
|
|
446
|
+
type: Injectable,
|
|
447
|
+
args: [{ providedIn: 'root' }]
|
|
448
|
+
}], ctorParameters: () => [] });
|
|
449
|
+
|
|
450
|
+
class StrataCheckboxComponent {
|
|
348
451
|
value = model(false, ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
349
452
|
label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
350
453
|
name = input(undefined, ...(ngDevMode ? [{ debugName: "name" }] : []));
|
|
@@ -352,10 +455,10 @@ class CheckboxComponent {
|
|
|
352
455
|
event.stopImmediatePropagation();
|
|
353
456
|
this.value.set(!this.value());
|
|
354
457
|
}
|
|
355
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
356
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
458
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
459
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataCheckboxComponent, isStandalone: true, selector: "st-checkbox", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0, template: "<input type=\"checkbox\" [checked]=\"value()\" />\n<div class=\"checkbox-visual\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path\n d=\"M9.9997 15.1709L19.1921 5.97852L20.6063 7.39273L9.9997 17.9993L3.63574 11.6354L5.04996 10.2212L9.9997 15.1709Z\"\n ></path>\n </svg>\n</div>\n@if (label()) {\n <label [for]=\"name()\"> {{ label() }}</label>\n}\n" });
|
|
357
460
|
}
|
|
358
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
461
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataCheckboxComponent, decorators: [{
|
|
359
462
|
type: Component,
|
|
360
463
|
args: [{ selector: 'st-checkbox', imports: [], template: "<input type=\"checkbox\" [checked]=\"value()\" />\n<div class=\"checkbox-visual\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path\n d=\"M9.9997 15.1709L19.1921 5.97852L20.6063 7.39273L9.9997 17.9993L3.63574 11.6354L5.04996 10.2212L9.9997 15.1709Z\"\n ></path>\n </svg>\n</div>\n@if (label()) {\n <label [for]=\"name()\"> {{ label() }}</label>\n}\n" }]
|
|
361
464
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], onClick: [{
|
|
@@ -363,59 +466,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
363
466
|
args: ['click', ['$event']]
|
|
364
467
|
}] } });
|
|
365
468
|
|
|
366
|
-
class
|
|
469
|
+
class StrataToggleComponent {
|
|
367
470
|
checked = model(false, ...(ngDevMode ? [{ debugName: "checked" }] : []));
|
|
471
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
472
|
+
get isDisabled() {
|
|
473
|
+
return this.disabled();
|
|
474
|
+
}
|
|
368
475
|
get isChecked() {
|
|
369
476
|
return this.checked();
|
|
370
477
|
}
|
|
371
|
-
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
372
|
-
get sizeClass() {
|
|
373
|
-
return this.size();
|
|
374
|
-
}
|
|
375
478
|
onCheckChanged() {
|
|
479
|
+
if (this.disabled()) {
|
|
480
|
+
return;
|
|
481
|
+
}
|
|
376
482
|
this.checked.set(!this.checked());
|
|
377
483
|
}
|
|
378
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
379
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
484
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
485
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataToggleComponent, isStandalone: true, selector: "st-toggle", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { attributes: { "tabindex": "0" }, listeners: { "click": "onCheckChanged()" }, properties: { "attr.data-disabled": "this.isDisabled", "attr.data-checked": "this.isChecked" } }, ngImport: i0, template: "<div class=\"toggle-handle\"></div>\n" });
|
|
380
486
|
}
|
|
381
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
487
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataToggleComponent, decorators: [{
|
|
382
488
|
type: Component,
|
|
383
489
|
args: [{ selector: 'st-toggle', imports: [], host: {
|
|
384
490
|
'(click)': 'onCheckChanged()',
|
|
385
491
|
tabindex: '0',
|
|
386
492
|
}, template: "<div class=\"toggle-handle\"></div>\n" }]
|
|
387
|
-
}], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }],
|
|
493
|
+
}], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], isDisabled: [{
|
|
388
494
|
type: HostBinding,
|
|
389
|
-
args: ['attr.data-
|
|
390
|
-
}],
|
|
495
|
+
args: ['attr.data-disabled']
|
|
496
|
+
}], isChecked: [{
|
|
391
497
|
type: HostBinding,
|
|
392
|
-
args: ['
|
|
498
|
+
args: ['attr.data-checked']
|
|
393
499
|
}] } });
|
|
394
500
|
|
|
395
|
-
class
|
|
396
|
-
checkbox = contentChild(
|
|
397
|
-
toggle = contentChild(
|
|
501
|
+
class StrataActionMenuItemComponent {
|
|
502
|
+
checkbox = contentChild(StrataCheckboxComponent, { ...(ngDevMode ? { debugName: "checkbox" } : {}), read: ElementRef });
|
|
503
|
+
toggle = contentChild(StrataToggleComponent, { ...(ngDevMode ? { debugName: "toggle" } : {}), read: ElementRef });
|
|
398
504
|
closeMenuOnClick = input(true, ...(ngDevMode ? [{ debugName: "closeMenuOnClick" }] : []));
|
|
399
|
-
|
|
505
|
+
menuItemClicked = output();
|
|
400
506
|
elementRef = inject(ElementRef);
|
|
401
507
|
onHostClick(event) {
|
|
402
|
-
this.
|
|
508
|
+
this.menuItemClicked.emit(this.closeMenuOnClick());
|
|
403
509
|
event.stopPropagation();
|
|
404
510
|
this.checkbox()?.nativeElement.click();
|
|
405
511
|
this.toggle()?.nativeElement.click();
|
|
406
512
|
}
|
|
407
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
408
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type:
|
|
513
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataActionMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
514
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: StrataActionMenuItemComponent, isStandalone: true, selector: "st-action-menu-item", inputs: { closeMenuOnClick: { classPropertyName: "closeMenuOnClick", publicName: "closeMenuOnClick", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { menuItemClicked: "menuItemClicked" }, host: { listeners: { "click": "onHostClick($event)" } }, queries: [{ propertyName: "checkbox", first: true, predicate: StrataCheckboxComponent, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "toggle", first: true, predicate: StrataToggleComponent, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<span class=\"item-start\">\n <ng-content select=\"[area='start']\"></ng-content\n></span>\n<span class=\"item-default\"> <ng-content></ng-content></span>\n<span class=\"item-end\">\n <ng-content select=\"[area='end']\"></ng-content>\n</span>\n", styles: [":host{height:48px}\n"] });
|
|
409
515
|
}
|
|
410
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
516
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataActionMenuItemComponent, decorators: [{
|
|
411
517
|
type: Component,
|
|
412
518
|
args: [{ selector: 'st-action-menu-item', imports: [], template: "<span class=\"item-start\">\n <ng-content select=\"[area='start']\"></ng-content\n></span>\n<span class=\"item-default\"> <ng-content></ng-content></span>\n<span class=\"item-end\">\n <ng-content select=\"[area='end']\"></ng-content>\n</span>\n", styles: [":host{height:48px}\n"] }]
|
|
413
|
-
}], propDecorators: { checkbox: [{ type: i0.ContentChild, args: [i0.forwardRef(() =>
|
|
519
|
+
}], propDecorators: { checkbox: [{ type: i0.ContentChild, args: [i0.forwardRef(() => StrataCheckboxComponent), { ...{ read: ElementRef }, isSignal: true }] }], toggle: [{ type: i0.ContentChild, args: [i0.forwardRef(() => StrataToggleComponent), { ...{ read: ElementRef }, isSignal: true }] }], closeMenuOnClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeMenuOnClick", required: false }] }], menuItemClicked: [{ type: i0.Output, args: ["menuItemClicked"] }], onHostClick: [{
|
|
414
520
|
type: HostListener,
|
|
415
521
|
args: ['click', ['$event']]
|
|
416
522
|
}] } });
|
|
417
523
|
|
|
418
|
-
class
|
|
524
|
+
class StrataButtonDirective {
|
|
419
525
|
host = inject(ElementRef);
|
|
420
526
|
variant = input('secondary', ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
421
527
|
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
@@ -423,7 +529,6 @@ class ButtonDirective {
|
|
|
423
529
|
iconAtStart = signal(false, ...(ngDevMode ? [{ debugName: "iconAtStart" }] : []));
|
|
424
530
|
iconAtEnd = signal(false, ...(ngDevMode ? [{ debugName: "iconAtEnd" }] : []));
|
|
425
531
|
iconOnly = signal(false, ...(ngDevMode ? [{ debugName: "iconOnly" }] : []));
|
|
426
|
-
constructor() { }
|
|
427
532
|
get classes() {
|
|
428
533
|
return [
|
|
429
534
|
'st-button',
|
|
@@ -448,7 +553,7 @@ class ButtonDirective {
|
|
|
448
553
|
this.iconAtEnd.set(this.nodeIsStIcon(nodes[nodes.length - 1]));
|
|
449
554
|
}
|
|
450
555
|
nodeIsStIcon(node) {
|
|
451
|
-
if (node.nodeType === Node.TEXT_NODE && !node.textContent
|
|
556
|
+
if (node.nodeType === Node.TEXT_NODE && !node.textContent?.trim()) {
|
|
452
557
|
return false;
|
|
453
558
|
}
|
|
454
559
|
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
@@ -457,20 +562,21 @@ class ButtonDirective {
|
|
|
457
562
|
}
|
|
458
563
|
return false;
|
|
459
564
|
}
|
|
460
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
461
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
565
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
566
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: StrataButtonDirective, isStandalone: true, selector: "[stButton]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.classes" } }, ngImport: i0 });
|
|
462
567
|
}
|
|
463
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
568
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataButtonDirective, decorators: [{
|
|
464
569
|
type: Directive,
|
|
465
570
|
args: [{
|
|
466
571
|
selector: '[stButton]',
|
|
467
572
|
}]
|
|
468
|
-
}],
|
|
573
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], classes: [{
|
|
469
574
|
type: HostBinding,
|
|
470
575
|
args: ['class']
|
|
471
576
|
}] } });
|
|
472
577
|
|
|
473
|
-
class
|
|
578
|
+
class StrataCardComponent {
|
|
579
|
+
elementRef = inject(ElementRef);
|
|
474
580
|
elevated = input(false, ...(ngDevMode ? [{ debugName: "elevated" }] : []));
|
|
475
581
|
selectable = input(false, ...(ngDevMode ? [{ debugName: "selectable" }] : []));
|
|
476
582
|
padding = input(true, ...(ngDevMode ? [{ debugName: "padding" }] : []));
|
|
@@ -493,12 +599,18 @@ class CardComponent {
|
|
|
493
599
|
get isOutline() {
|
|
494
600
|
return this.variant() === 'outline';
|
|
495
601
|
}
|
|
496
|
-
|
|
497
|
-
|
|
602
|
+
handleKeyboardEvent(event) {
|
|
603
|
+
if (this.selectable()) {
|
|
604
|
+
event.preventDefault();
|
|
605
|
+
this.elementRef.nativeElement.click();
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
609
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataCardComponent, isStandalone: true, selector: "st-card", inputs: { elevated: { classPropertyName: "elevated", publicName: "elevated", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown.enter": "handleKeyboardEvent($event)", "keydown.space": "handleKeyboardEvent($event)" }, properties: { "class.with-padding": "this.withPadding", "class.selectable": "this.isSelectable", "attr.tabindex": "this.tabIndex", "class.elevated": "this.isElevated", "class.flat": "this.isFlat", "class.outline": "this.isOutline" } }, ngImport: i0, template: "<div class=\"cover-area\">\n <ng-content select=\"[area='cover']\"></ng-content>\n</div>\n<div class=\"card-content\">\n <ng-content></ng-content>\n</div>\n" });
|
|
498
610
|
}
|
|
499
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
611
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataCardComponent, decorators: [{
|
|
500
612
|
type: Component,
|
|
501
|
-
args: [{ selector: 'st-card', imports: [],
|
|
613
|
+
args: [{ selector: 'st-card', imports: [], template: "<div class=\"cover-area\">\n <ng-content select=\"[area='cover']\"></ng-content>\n</div>\n<div class=\"card-content\">\n <ng-content></ng-content>\n</div>\n" }]
|
|
502
614
|
}], propDecorators: { elevated: [{ type: i0.Input, args: [{ isSignal: true, alias: "elevated", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], withPadding: [{
|
|
503
615
|
type: HostBinding,
|
|
504
616
|
args: ['class.with-padding']
|
|
@@ -517,9 +629,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
517
629
|
}], isOutline: [{
|
|
518
630
|
type: HostBinding,
|
|
519
631
|
args: ['class.outline']
|
|
632
|
+
}], handleKeyboardEvent: [{
|
|
633
|
+
type: HostListener,
|
|
634
|
+
args: ['keydown.enter', ['$event']]
|
|
635
|
+
}, {
|
|
636
|
+
type: HostListener,
|
|
637
|
+
args: ['keydown.space', ['$event']]
|
|
520
638
|
}] } });
|
|
521
639
|
|
|
522
|
-
class
|
|
640
|
+
class StrataIconComponent {
|
|
523
641
|
defaultIcon = 'question';
|
|
524
642
|
name = input.required(...(ngDevMode ? [{ debugName: "name" }] : []));
|
|
525
643
|
size = model('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
@@ -557,16 +675,12 @@ class IconComponent {
|
|
|
557
675
|
this.svgMarkdown = value;
|
|
558
676
|
});
|
|
559
677
|
}
|
|
560
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
561
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
678
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
679
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataIconComponent, isStandalone: true, selector: "st-icon", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: "sizeChange" }, host: { properties: { "class.xs": "this.sizeClass", "class.sm": "this.sizeSmClass", "class.md": "this.sizeMdClass", "class.lg": "this.sizeLgClass" } }, usesOnChanges: true, ngImport: i0, template: "<span [innerHTML]=\"svgMarkdown\"></span>\n" });
|
|
562
680
|
}
|
|
563
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
681
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataIconComponent, decorators: [{
|
|
564
682
|
type: Component,
|
|
565
|
-
args: [{
|
|
566
|
-
selector: 'st-icon',
|
|
567
|
-
imports: [],
|
|
568
|
-
template: '<span [innerHTML]="svgMarkdown"></span>',
|
|
569
|
-
}]
|
|
683
|
+
args: [{ selector: 'st-icon', imports: [], template: "<span [innerHTML]=\"svgMarkdown\"></span>\n" }]
|
|
570
684
|
}], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }, { type: i0.Output, args: ["sizeChange"] }], sizeClass: [{
|
|
571
685
|
type: HostBinding,
|
|
572
686
|
args: ['class.xs']
|
|
@@ -581,7 +695,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
581
695
|
args: ['class.lg']
|
|
582
696
|
}] } });
|
|
583
697
|
|
|
584
|
-
class
|
|
698
|
+
class StrataOverlayDirective {
|
|
585
699
|
stOverlay = input.required(...(ngDevMode ? [{ debugName: "stOverlay" }] : []));
|
|
586
700
|
overlayOpen = model(false, ...(ngDevMode ? [{ debugName: "overlayOpen" }] : []));
|
|
587
701
|
overlayPlacement = input('bottom', ...(ngDevMode ? [{ debugName: "overlayPlacement" }] : []));
|
|
@@ -590,7 +704,6 @@ class OverlayDirective {
|
|
|
590
704
|
viewContainerRef = inject(ViewContainerRef);
|
|
591
705
|
overlayEl;
|
|
592
706
|
cleanup;
|
|
593
|
-
constructor() { }
|
|
594
707
|
ngOnChanges() {
|
|
595
708
|
if (this.overlayOpen()) {
|
|
596
709
|
this.create();
|
|
@@ -617,7 +730,7 @@ class OverlayDirective {
|
|
|
617
730
|
});
|
|
618
731
|
if (!this.overlayEl)
|
|
619
732
|
return;
|
|
620
|
-
const { width
|
|
733
|
+
const { width } = this.element.nativeElement.getBoundingClientRect();
|
|
621
734
|
Object.assign(this.overlayEl.style, {
|
|
622
735
|
position: 'absolute',
|
|
623
736
|
left: `${x}px`,
|
|
@@ -635,58 +748,99 @@ class OverlayDirective {
|
|
|
635
748
|
ngOnDestroy() {
|
|
636
749
|
this.destroy();
|
|
637
750
|
}
|
|
638
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
639
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
751
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
752
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: StrataOverlayDirective, isStandalone: true, selector: "[stOverlay]", inputs: { stOverlay: { classPropertyName: "stOverlay", publicName: "stOverlay", isSignal: true, isRequired: true, transformFunction: null }, overlayOpen: { classPropertyName: "overlayOpen", publicName: "overlayOpen", isSignal: true, isRequired: false, transformFunction: null }, overlayPlacement: { classPropertyName: "overlayPlacement", publicName: "overlayPlacement", isSignal: true, isRequired: false, transformFunction: null }, overlayOffset: { classPropertyName: "overlayOffset", publicName: "overlayOffset", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overlayOpen: "overlayOpenChange" }, usesOnChanges: true, ngImport: i0 });
|
|
640
753
|
}
|
|
641
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
754
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataOverlayDirective, decorators: [{
|
|
642
755
|
type: Directive,
|
|
643
756
|
args: [{
|
|
644
757
|
selector: '[stOverlay]',
|
|
645
758
|
}]
|
|
646
|
-
}],
|
|
759
|
+
}], propDecorators: { stOverlay: [{ type: i0.Input, args: [{ isSignal: true, alias: "stOverlay", required: true }] }], overlayOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayOpen", required: false }] }, { type: i0.Output, args: ["overlayOpenChange"] }], overlayPlacement: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayPlacement", required: false }] }], overlayOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayOffset", required: false }] }] } });
|
|
647
760
|
|
|
648
|
-
class
|
|
649
|
-
projectedButton = contentChild(
|
|
761
|
+
class StrataActionMenuComponent {
|
|
762
|
+
projectedButton = contentChild(StrataButtonDirective, { ...(ngDevMode ? { debugName: "projectedButton" } : {}), descendants: true,
|
|
650
763
|
read: ElementRef });
|
|
651
|
-
defaultButton = viewChild(
|
|
652
|
-
actionMenuItems = contentChildren(
|
|
764
|
+
defaultButton = viewChild(StrataButtonDirective, { ...(ngDevMode ? { debugName: "defaultButton" } : {}), read: ElementRef });
|
|
765
|
+
actionMenuItems = contentChildren(StrataActionMenuItemComponent, ...(ngDevMode ? [{ debugName: "actionMenuItems" }] : []));
|
|
653
766
|
placement = input('bottom-end', ...(ngDevMode ? [{ debugName: "placement" }] : []));
|
|
654
767
|
renderer = inject(Renderer2);
|
|
655
768
|
menuOpen = signal(false, ...(ngDevMode ? [{ debugName: "menuOpen" }] : []));
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
769
|
+
constructor() {
|
|
770
|
+
effect((onCleanup) => {
|
|
771
|
+
const button = this.projectedButton() ?? this.defaultButton();
|
|
772
|
+
if (!button) {
|
|
773
|
+
return;
|
|
774
|
+
}
|
|
775
|
+
const unlisten = this.renderer.listen(button.nativeElement, 'click', () => {
|
|
776
|
+
this.menuOpen.set(!this.menuOpen());
|
|
777
|
+
});
|
|
778
|
+
onCleanup(() => {
|
|
779
|
+
unlisten();
|
|
780
|
+
});
|
|
660
781
|
});
|
|
661
|
-
|
|
662
|
-
item.
|
|
782
|
+
effect((onCleanup) => {
|
|
783
|
+
const subs = this.actionMenuItems().map((item) => item.menuItemClicked.subscribe((shouldClose) => {
|
|
663
784
|
if (shouldClose) {
|
|
664
785
|
this.menuOpen.set(false);
|
|
665
786
|
}
|
|
787
|
+
}));
|
|
788
|
+
onCleanup(() => {
|
|
789
|
+
subs.forEach((sub) => sub.unsubscribe());
|
|
666
790
|
});
|
|
667
791
|
});
|
|
668
792
|
}
|
|
669
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
670
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
793
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataActionMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
794
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataActionMenuComponent, isStandalone: true, selector: "st-action-menu", inputs: { placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "projectedButton", first: true, predicate: StrataButtonDirective, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "actionMenuItems", predicate: StrataActionMenuItemComponent, isSignal: true }], viewQueries: [{ propertyName: "defaultButton", first: true, predicate: StrataButtonDirective, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<div [stOverlay]=\"menu\" [overlayOpen]=\"menuOpen()\" [overlayPlacement]=\"placement()\">\n <ng-content select=\"button[stButton]\"></ng-content>\n @if (!projectedButton()) {\n <button stButton><st-icon name=\"more\"></st-icon></button>\n }\n</div>\n\n<ng-template #menu>\n <st-card [padding]=\"false\" class=\"action-menu-card\"><ng-content select=\"st-action-menu-item\"></ng-content></st-card>\n</ng-template>\n", styles: ["st-card{width:fit-content}\n"], dependencies: [{ kind: "component", type: StrataCardComponent, selector: "st-card", inputs: ["elevated", "selectable", "padding", "variant"] }, { kind: "directive", type: StrataOverlayDirective, selector: "[stOverlay]", inputs: ["stOverlay", "overlayOpen", "overlayPlacement", "overlayOffset"], outputs: ["overlayOpenChange"] }, { kind: "component", type: StrataIconComponent, selector: "st-icon", inputs: ["name", "size"], outputs: ["sizeChange"] }, { kind: "directive", type: StrataButtonDirective, selector: "[stButton]", inputs: ["variant", "size", "fullWidth"] }] });
|
|
671
795
|
}
|
|
672
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataActionMenuComponent, decorators: [{
|
|
673
797
|
type: Component,
|
|
674
|
-
args: [{ selector: 'st-action-menu', imports: [
|
|
675
|
-
}], propDecorators: { projectedButton: [{ type: i0.ContentChild, args: [i0.forwardRef(() =>
|
|
798
|
+
args: [{ selector: 'st-action-menu', imports: [StrataCardComponent, StrataOverlayDirective, StrataIconComponent, StrataButtonDirective], template: "<div [stOverlay]=\"menu\" [overlayOpen]=\"menuOpen()\" [overlayPlacement]=\"placement()\">\n <ng-content select=\"button[stButton]\"></ng-content>\n @if (!projectedButton()) {\n <button stButton><st-icon name=\"more\"></st-icon></button>\n }\n</div>\n\n<ng-template #menu>\n <st-card [padding]=\"false\" class=\"action-menu-card\"><ng-content select=\"st-action-menu-item\"></ng-content></st-card>\n</ng-template>\n", styles: ["st-card{width:fit-content}\n"] }]
|
|
799
|
+
}], ctorParameters: () => [], propDecorators: { projectedButton: [{ type: i0.ContentChild, args: [i0.forwardRef(() => StrataButtonDirective), { ...{
|
|
676
800
|
descendants: true,
|
|
677
801
|
read: ElementRef,
|
|
678
|
-
}, isSignal: true }] }], defaultButton: [{ type: i0.ViewChild, args: [i0.forwardRef(() =>
|
|
802
|
+
}, isSignal: true }] }], defaultButton: [{ type: i0.ViewChild, args: [i0.forwardRef(() => StrataButtonDirective), { ...{
|
|
679
803
|
read: ElementRef,
|
|
680
|
-
}, isSignal: true }] }], actionMenuItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() =>
|
|
804
|
+
}, isSignal: true }] }], actionMenuItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrataActionMenuItemComponent), { isSignal: true }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }] } });
|
|
805
|
+
|
|
806
|
+
class StrataTextStackComponent {
|
|
807
|
+
overflow = input('truncate', ...(ngDevMode ? [{ debugName: "overflow" }] : []));
|
|
808
|
+
get cssClasses() {
|
|
809
|
+
return [this.overflow()];
|
|
810
|
+
}
|
|
811
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataTextStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
812
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataTextStackComponent, isStandalone: true, selector: "st-text-stack", inputs: { overflow: { classPropertyName: "overflow", publicName: "overflow", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.cssClasses" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""] });
|
|
813
|
+
}
|
|
814
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataTextStackComponent, decorators: [{
|
|
815
|
+
type: Component,
|
|
816
|
+
args: [{ selector: 'st-text-stack', imports: [], template: "<ng-content></ng-content>\n" }]
|
|
817
|
+
}], propDecorators: { overflow: [{ type: i0.Input, args: [{ isSignal: true, alias: "overflow", required: false }] }], cssClasses: [{
|
|
818
|
+
type: HostBinding,
|
|
819
|
+
args: ['class']
|
|
820
|
+
}] } });
|
|
821
|
+
|
|
822
|
+
class StrataAlertComponent {
|
|
823
|
+
header = input(undefined, ...(ngDevMode ? [{ debugName: "header" }] : []));
|
|
824
|
+
message = input.required(...(ngDevMode ? [{ debugName: "message" }] : []));
|
|
825
|
+
iconName = input(undefined, ...(ngDevMode ? [{ debugName: "iconName" }] : []));
|
|
826
|
+
dismissible = input(false, ...(ngDevMode ? [{ debugName: "dismissible" }] : []));
|
|
827
|
+
dismiss = output();
|
|
828
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
829
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataAlertComponent, isStandalone: true, selector: "st-alert", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div class=\"st-alert-container\">\n @if (iconName()) {\n <div class=\"st-alert-icon\">\n <st-icon [name]=\"iconName()!\"></st-icon>\n </div>\n }\n\n <div class=\"st-alert-content\">\n <st-text-stack overflow=\"wrap\">\n @if (header()) {\n <p class=\"st-body-bold st-alert-header\">{{ header() }}</p>\n }\n <p class=\"st-alert-message\">{{ message() }}</p>\n </st-text-stack>\n </div>\n\n\n\n\n <div class=\"st-alert-actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n\n @if (dismissible()) {\n <button stButton variant=\"ghost\" size=\"sm\" class=\"st-alert-dismiss\" (click)=\"dismiss.emit()\"\n aria-label=\"Dismiss alert\">\n <st-icon name=\"close\"></st-icon>\n </button>\n }\n</div>", dependencies: [{ kind: "component", type: StrataIconComponent, selector: "st-icon", inputs: ["name", "size"], outputs: ["sizeChange"] }, { kind: "directive", type: StrataButtonDirective, selector: "[stButton]", inputs: ["variant", "size", "fullWidth"] }, { kind: "component", type: StrataTextStackComponent, selector: "st-text-stack", inputs: ["overflow"] }] });
|
|
830
|
+
}
|
|
831
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAlertComponent, decorators: [{
|
|
832
|
+
type: Component,
|
|
833
|
+
args: [{ selector: 'st-alert', imports: [StrataIconComponent, StrataButtonDirective, StrataTextStackComponent], template: "<div class=\"st-alert-container\">\n @if (iconName()) {\n <div class=\"st-alert-icon\">\n <st-icon [name]=\"iconName()!\"></st-icon>\n </div>\n }\n\n <div class=\"st-alert-content\">\n <st-text-stack overflow=\"wrap\">\n @if (header()) {\n <p class=\"st-body-bold st-alert-header\">{{ header() }}</p>\n }\n <p class=\"st-alert-message\">{{ message() }}</p>\n </st-text-stack>\n </div>\n\n\n\n\n <div class=\"st-alert-actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n\n @if (dismissible()) {\n <button stButton variant=\"ghost\" size=\"sm\" class=\"st-alert-dismiss\" (click)=\"dismiss.emit()\"\n aria-label=\"Dismiss alert\">\n <st-icon name=\"close\"></st-icon>\n </button>\n }\n</div>" }]
|
|
834
|
+
}], propDecorators: { header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: true }] }], iconName: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconName", required: false }] }], dismissible: [{ type: i0.Input, args: [{ isSignal: true, alias: "dismissible", required: false }] }], dismiss: [{ type: i0.Output, args: ["dismiss"] }] } });
|
|
681
835
|
|
|
682
|
-
class
|
|
836
|
+
class StrataAccordionItemComponent {
|
|
683
837
|
title = input.required(...(ngDevMode ? [{ debugName: "title" }] : []));
|
|
684
838
|
open = model(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
|
|
685
839
|
toggled = output();
|
|
686
840
|
constructor() {
|
|
687
841
|
let firstRun = true;
|
|
688
842
|
effect(() => {
|
|
689
|
-
|
|
843
|
+
const value = this.open();
|
|
690
844
|
if (!firstRun) {
|
|
691
845
|
this.toggled.emit(value);
|
|
692
846
|
}
|
|
@@ -697,10 +851,10 @@ class AccordionItemComponent {
|
|
|
697
851
|
get isOpen() {
|
|
698
852
|
return this.open();
|
|
699
853
|
}
|
|
700
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
701
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
854
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
855
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataAccordionItemComponent, isStandalone: true, selector: "st-accordion-item", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", toggled: "toggled" }, host: { properties: { "attr.open": "this.isOpen" } }, ngImport: i0, template: "<div class=\"accordion-header\" (click)=\"this.open.set(!this.open())\">\n {{ title() }}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\n ></path>\n </svg>\n</div>\n\n<div class=\"accordion-content\">\n <ng-content></ng-content>\n</div>\n" });
|
|
702
856
|
}
|
|
703
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
857
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAccordionItemComponent, decorators: [{
|
|
704
858
|
type: Component,
|
|
705
859
|
args: [{ selector: 'st-accordion-item', imports: [], template: "<div class=\"accordion-header\" (click)=\"this.open.set(!this.open())\">\n {{ title() }}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\n ></path>\n </svg>\n</div>\n\n<div class=\"accordion-content\">\n <ng-content></ng-content>\n</div>\n" }]
|
|
706
860
|
}], ctorParameters: () => [], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], toggled: [{ type: i0.Output, args: ["toggled"] }], isOpen: [{
|
|
@@ -708,15 +862,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
708
862
|
args: ['attr.open']
|
|
709
863
|
}] } });
|
|
710
864
|
|
|
711
|
-
class
|
|
712
|
-
items = contentChildren(
|
|
865
|
+
class StrataAccordionGroupComponent {
|
|
866
|
+
items = contentChildren(StrataAccordionItemComponent, ...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
713
867
|
allowMultipleOpen = input(false, ...(ngDevMode ? [{ debugName: "allowMultipleOpen" }] : []));
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
item.toggled.subscribe((open) => {
|
|
868
|
+
constructor() {
|
|
869
|
+
effect((onCleanup) => {
|
|
870
|
+
const subs = this.items().map((item) => item.toggled.subscribe((open) => {
|
|
717
871
|
if (open && !this.allowMultipleOpen()) {
|
|
718
872
|
this.closeOtherItems(item);
|
|
719
873
|
}
|
|
874
|
+
}));
|
|
875
|
+
onCleanup(() => {
|
|
876
|
+
subs.forEach((sub) => sub.unsubscribe());
|
|
720
877
|
});
|
|
721
878
|
});
|
|
722
879
|
}
|
|
@@ -727,16 +884,16 @@ class AccordionGroupComponent {
|
|
|
727
884
|
}
|
|
728
885
|
});
|
|
729
886
|
}
|
|
730
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
731
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type:
|
|
887
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAccordionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
888
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: StrataAccordionGroupComponent, isStandalone: true, selector: "st-accordion-group", inputs: { allowMultipleOpen: { classPropertyName: "allowMultipleOpen", publicName: "allowMultipleOpen", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "items", predicate: StrataAccordionItemComponent, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n" });
|
|
732
889
|
}
|
|
733
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
890
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAccordionGroupComponent, decorators: [{
|
|
734
891
|
type: Component,
|
|
735
892
|
args: [{ selector: 'st-accordion-group', imports: [], template: "<ng-content></ng-content>\n" }]
|
|
736
|
-
}], propDecorators: { items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() =>
|
|
893
|
+
}], ctorParameters: () => [], propDecorators: { items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrataAccordionItemComponent), { isSignal: true }] }], allowMultipleOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowMultipleOpen", required: false }] }] } });
|
|
737
894
|
|
|
738
|
-
class
|
|
739
|
-
iconComponents = contentChildren(
|
|
895
|
+
class StrataAvatarComponent {
|
|
896
|
+
iconComponents = contentChildren(StrataIconComponent, { ...(ngDevMode ? { debugName: "iconComponents" } : {}), descendants: true });
|
|
740
897
|
text = input(null, ...(ngDevMode ? [{ debugName: "text" }] : []));
|
|
741
898
|
size = model('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
742
899
|
get elementClasses() {
|
|
@@ -749,19 +906,19 @@ class AvatarComponent {
|
|
|
749
906
|
});
|
|
750
907
|
});
|
|
751
908
|
}
|
|
752
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
753
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
909
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
910
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataAvatarComponent, isStandalone: true, selector: "st-avatar", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: "sizeChange" }, host: { properties: { "class": "this.elementClasses" } }, queries: [{ propertyName: "iconComponents", predicate: StrataIconComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (text() !== null) {\n <span>{{ text() }}</span>\n}\n<ng-content></ng-content>\n" });
|
|
754
911
|
}
|
|
755
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
912
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAvatarComponent, decorators: [{
|
|
756
913
|
type: Component,
|
|
757
914
|
args: [{ selector: 'st-avatar', imports: [], template: "@if (text() !== null) {\n <span>{{ text() }}</span>\n}\n<ng-content></ng-content>\n" }]
|
|
758
|
-
}], propDecorators: { iconComponents: [{ type: i0.ContentChildren, args: [i0.forwardRef(() =>
|
|
915
|
+
}], propDecorators: { iconComponents: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrataIconComponent), { ...{ descendants: true }, isSignal: true }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }, { type: i0.Output, args: ["sizeChange"] }], elementClasses: [{
|
|
759
916
|
type: HostBinding,
|
|
760
917
|
args: ['class']
|
|
761
918
|
}] } });
|
|
762
919
|
|
|
763
|
-
class
|
|
764
|
-
avatarRefs = contentChildren(
|
|
920
|
+
class StrataAvatarStackComponent {
|
|
921
|
+
avatarRefs = contentChildren(StrataAvatarComponent, { ...(ngDevMode ? { debugName: "avatarRefs" } : {}), descendants: true,
|
|
765
922
|
read: ElementRef });
|
|
766
923
|
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
767
924
|
spacing = input('mid', ...(ngDevMode ? [{ debugName: "spacing" }] : []));
|
|
@@ -799,13 +956,13 @@ class AvatarStackComponent {
|
|
|
799
956
|
});
|
|
800
957
|
}, 1);
|
|
801
958
|
}
|
|
802
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
803
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type:
|
|
959
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAvatarStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
960
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: StrataAvatarStackComponent, isStandalone: true, selector: "st-avatar-stack", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, firstOnFront: { classPropertyName: "firstOnFront", publicName: "firstOnFront", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.xs": "this.xsClass", "class.sm": "this.smClass", "class.md": "this.mdClass", "class.lg": "this.lgClass", "class.first-on-front": "this.firstOnFrontClass", "class.loose": "this.looseClass", "class.mid": "this.midClass", "class.tight": "this.tightClass" } }, queries: [{ propertyName: "avatarRefs", predicate: StrataAvatarComponent, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n" });
|
|
804
961
|
}
|
|
805
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
962
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAvatarStackComponent, decorators: [{
|
|
806
963
|
type: Component,
|
|
807
964
|
args: [{ selector: 'st-avatar-stack', imports: [], template: "<ng-content></ng-content>\n" }]
|
|
808
|
-
}], propDecorators: { avatarRefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() =>
|
|
965
|
+
}], propDecorators: { avatarRefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrataAvatarComponent), { ...{
|
|
809
966
|
descendants: true,
|
|
810
967
|
read: ElementRef,
|
|
811
968
|
}, isSignal: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], spacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spacing", required: false }] }], firstOnFront: [{ type: i0.Input, args: [{ isSignal: true, alias: "firstOnFront", required: false }] }], xsClass: [{
|
|
@@ -834,33 +991,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
834
991
|
args: ['class.tight']
|
|
835
992
|
}] } });
|
|
836
993
|
|
|
837
|
-
class
|
|
994
|
+
class StrataButtonGroupComponent {
|
|
838
995
|
renderer = inject(Renderer2);
|
|
839
996
|
justification = input('start', ...(ngDevMode ? [{ debugName: "justification" }] : []));
|
|
840
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
841
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
997
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
998
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataButtonGroupComponent, isStandalone: true, selector: "st-button-group", inputs: { justification: { classPropertyName: "justification", publicName: "justification", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-content select=\"[stButton], st-divider\" #buttons></ng-content>\n" });
|
|
842
999
|
}
|
|
843
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1000
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataButtonGroupComponent, decorators: [{
|
|
844
1001
|
type: Component,
|
|
845
1002
|
args: [{ selector: 'st-button-group', imports: [], template: "<ng-content select=\"[stButton], st-divider\" #buttons></ng-content>\n" }]
|
|
846
1003
|
}], propDecorators: { justification: [{ type: i0.Input, args: [{ isSignal: true, alias: "justification", required: false }] }] } });
|
|
847
1004
|
|
|
848
|
-
class
|
|
1005
|
+
class StrataNativeInputRefDirective {
|
|
849
1006
|
el = inject((ElementRef));
|
|
850
|
-
|
|
851
|
-
static
|
|
852
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: NativeInputRefDirective, isStandalone: true, selector: "input[stInput], textarea[stInput]", ngImport: i0 });
|
|
1007
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataNativeInputRefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1008
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: StrataNativeInputRefDirective, isStandalone: true, selector: "input[stInput], textarea[stInput]", ngImport: i0 });
|
|
853
1009
|
}
|
|
854
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1010
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataNativeInputRefDirective, decorators: [{
|
|
855
1011
|
type: Directive,
|
|
856
1012
|
args: [{
|
|
857
1013
|
selector: 'input[stInput], textarea[stInput]',
|
|
858
1014
|
}]
|
|
859
|
-
}]
|
|
1015
|
+
}] });
|
|
860
1016
|
|
|
861
|
-
class
|
|
862
|
-
iconComponents = contentChildren(
|
|
863
|
-
inputField = contentChild(
|
|
1017
|
+
class StrataInputFieldComponent {
|
|
1018
|
+
iconComponents = contentChildren(StrataIconComponent, { ...(ngDevMode ? { debugName: "iconComponents" } : {}), descendants: true });
|
|
1019
|
+
inputField = contentChild(StrataNativeInputRefDirective, { ...(ngDevMode ? { debugName: "inputField" } : {}), descendants: true });
|
|
864
1020
|
pendingFocus = signal(false, ...(ngDevMode ? [{ debugName: "pendingFocus" }] : []));
|
|
865
1021
|
constructor() {
|
|
866
1022
|
effect(() => {
|
|
@@ -875,7 +1031,6 @@ class InputFieldComponent {
|
|
|
875
1031
|
setTimeout(() => this.iconComponents().forEach((icon) => icon.size.set('sm')), 1);
|
|
876
1032
|
}
|
|
877
1033
|
focus() {
|
|
878
|
-
const input = this.inputField();
|
|
879
1034
|
this.pendingFocus.set(true);
|
|
880
1035
|
}
|
|
881
1036
|
blur() {
|
|
@@ -884,17 +1039,17 @@ class InputFieldComponent {
|
|
|
884
1039
|
get nativeInput() {
|
|
885
1040
|
return this.inputField()?.el.nativeElement;
|
|
886
1041
|
}
|
|
887
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
888
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type:
|
|
1042
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataInputFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1043
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: StrataInputFieldComponent, isStandalone: true, selector: "st-input-field", queries: [{ propertyName: "iconComponents", predicate: StrataIconComponent, descendants: true, isSignal: true }, { propertyName: "inputField", first: true, predicate: StrataNativeInputRefDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<div class=\"st-input-wrapper\">\n <div class=\"affix\">\n <ng-content select=\"[prefix]\"></ng-content>\n </div>\n <ng-content select=\"input,textarea\"></ng-content>\n <div class=\"affix\">\n <ng-content select=\"[suffix]\"></ng-content>\n </div>\n</div>\n" });
|
|
889
1044
|
}
|
|
890
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1045
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataInputFieldComponent, decorators: [{
|
|
891
1046
|
type: Component,
|
|
892
|
-
args: [{ selector: 'st-input-field', imports: [],
|
|
893
|
-
}], ctorParameters: () => [], propDecorators: { iconComponents: [{ type: i0.ContentChildren, args: [i0.forwardRef(() =>
|
|
1047
|
+
args: [{ selector: 'st-input-field', imports: [], template: "<ng-content select=\"label\"></ng-content>\n<div class=\"st-input-wrapper\">\n <div class=\"affix\">\n <ng-content select=\"[prefix]\"></ng-content>\n </div>\n <ng-content select=\"input,textarea\"></ng-content>\n <div class=\"affix\">\n <ng-content select=\"[suffix]\"></ng-content>\n </div>\n</div>\n" }]
|
|
1048
|
+
}], ctorParameters: () => [], propDecorators: { iconComponents: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrataIconComponent), { ...{ descendants: true }, isSignal: true }] }], inputField: [{ type: i0.ContentChild, args: [i0.forwardRef(() => StrataNativeInputRefDirective), { ...{
|
|
894
1049
|
descendants: true,
|
|
895
1050
|
}, isSignal: true }] }] } });
|
|
896
1051
|
|
|
897
|
-
class
|
|
1052
|
+
class StrataDropdownComponent {
|
|
898
1053
|
open = signal(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
|
|
899
1054
|
placeholder = input('Select', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
900
1055
|
placement = input('bottom-start', ...(ngDevMode ? [{ debugName: "placement" }] : []));
|
|
@@ -913,8 +1068,8 @@ class DropdownComponent {
|
|
|
913
1068
|
}
|
|
914
1069
|
return this.dropdownItems().filter((item) => item.text.toLowerCase().includes(this.searchQuery().toLowerCase().trim()));
|
|
915
1070
|
}, ...(ngDevMode ? [{ debugName: "shownItems" }] : []));
|
|
916
|
-
|
|
917
|
-
inputField = viewChild(
|
|
1071
|
+
itemSelected = output();
|
|
1072
|
+
inputField = viewChild(StrataInputFieldComponent, ...(ngDevMode ? [{ debugName: "inputField" }] : []));
|
|
918
1073
|
get classList() {
|
|
919
1074
|
return [this.size()];
|
|
920
1075
|
}
|
|
@@ -934,7 +1089,7 @@ class DropdownComponent {
|
|
|
934
1089
|
this.toggleDropdown();
|
|
935
1090
|
mouseEvent.stopPropagation();
|
|
936
1091
|
this.selected.set(item);
|
|
937
|
-
this.
|
|
1092
|
+
this.itemSelected.emit(item);
|
|
938
1093
|
}
|
|
939
1094
|
onItemHover(mouseEvent) {
|
|
940
1095
|
mouseEvent.stopPropagation();
|
|
@@ -950,45 +1105,45 @@ class DropdownComponent {
|
|
|
950
1105
|
hide() {
|
|
951
1106
|
this.open.set(false);
|
|
952
1107
|
}
|
|
953
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
954
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
1108
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1109
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataDropdownComponent, isStandalone: true, selector: "st-dropdown", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchQuery: { classPropertyName: "searchQuery", publicName: "searchQuery", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, dropdownItems: { classPropertyName: "dropdownItems", publicName: "dropdownItems", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { selected: "selectedChange", searchQuery: "searchQueryChange", itemSelected: "itemSelected" }, host: { properties: { "class": "this.classList" } }, viewQueries: [{ propertyName: "inputField", first: true, predicate: StrataInputFieldComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (label()) {\n <label [for]=\"name()\"> {{ label() }}</label>\n}\n<div\n class=\"dropdown-input\"\n [id]=\"name()\"\n #dropdownInput\n (click)=\"toggleDropdown($event)\"\n [attr.data-open]=\"open()\"\n tabindex=\"0\"\n [stOverlay]=\"selector\"\n [overlayOpen]=\"open()\"\n [overlayPlacement]=\"placement()\">\n @if (selected()) {\n {{ selected()!.text }}\n } @else {\n <span class=\"placeholder-text\">{{ placeholder() }}</span>\n }\n\n <st-icon name=\"expand-up-down\"></st-icon>\n</div>\n\n<ng-template #selector>\n <div class=\"dropdown-selector\" #dropdownSelector [class.full-width]=\"fullWidth()\">\n @if (searchable()) {\n <st-input-field>\n <input stInput #searchField type=\"text\" [(ngModel)]=\"searchQuery\" [placeholder]=\"searchPlaceholder()\" />\n <button\n stButton\n variant=\"ghost\"\n [class.visible]=\"searchQuery() !== undefined && searchQuery()!.length > 0\"\n suffix\n size=\"sm\"\n (click)=\"searchQuery.set(undefined)\">\n x\n </button>\n </st-input-field>\n }\n @for (item of shownItems(); track item.id) {\n <div class=\"dropdown-item\" (click)=\"onItemClick(item, $event)\" (mouseover)=\"onItemHover($event)\">\n {{ item.text }}\n </div>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: StrataIconComponent, selector: "st-icon", inputs: ["name", "size"], outputs: ["sizeChange"] }, { kind: "directive", type: StrataOverlayDirective, selector: "[stOverlay]", inputs: ["stOverlay", "overlayOpen", "overlayPlacement", "overlayOffset"], outputs: ["overlayOpenChange"] }, { kind: "component", type: StrataInputFieldComponent, selector: "st-input-field" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: StrataNativeInputRefDirective, selector: "input[stInput], textarea[stInput]" }, { kind: "directive", type: StrataButtonDirective, selector: "[stButton]", inputs: ["variant", "size", "fullWidth"] }] });
|
|
955
1110
|
}
|
|
956
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataDropdownComponent, decorators: [{
|
|
957
1112
|
type: Component,
|
|
958
1113
|
args: [{ selector: 'st-dropdown', imports: [
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
1114
|
+
StrataIconComponent,
|
|
1115
|
+
StrataOverlayDirective,
|
|
1116
|
+
StrataInputFieldComponent,
|
|
962
1117
|
FormsModule,
|
|
963
|
-
|
|
964
|
-
|
|
1118
|
+
StrataNativeInputRefDirective,
|
|
1119
|
+
StrataButtonDirective,
|
|
965
1120
|
], template: "@if (label()) {\n <label [for]=\"name()\"> {{ label() }}</label>\n}\n<div\n class=\"dropdown-input\"\n [id]=\"name()\"\n #dropdownInput\n (click)=\"toggleDropdown($event)\"\n [attr.data-open]=\"open()\"\n tabindex=\"0\"\n [stOverlay]=\"selector\"\n [overlayOpen]=\"open()\"\n [overlayPlacement]=\"placement()\">\n @if (selected()) {\n {{ selected()!.text }}\n } @else {\n <span class=\"placeholder-text\">{{ placeholder() }}</span>\n }\n\n <st-icon name=\"expand-up-down\"></st-icon>\n</div>\n\n<ng-template #selector>\n <div class=\"dropdown-selector\" #dropdownSelector [class.full-width]=\"fullWidth()\">\n @if (searchable()) {\n <st-input-field>\n <input stInput #searchField type=\"text\" [(ngModel)]=\"searchQuery\" [placeholder]=\"searchPlaceholder()\" />\n <button\n stButton\n variant=\"ghost\"\n [class.visible]=\"searchQuery() !== undefined && searchQuery()!.length > 0\"\n suffix\n size=\"sm\"\n (click)=\"searchQuery.set(undefined)\">\n x\n </button>\n </st-input-field>\n }\n @for (item of shownItems(); track item.id) {\n <div class=\"dropdown-item\" (click)=\"onItemClick(item, $event)\" (mouseover)=\"onItemHover($event)\">\n {{ item.text }}\n </div>\n }\n </div>\n</ng-template>\n" }]
|
|
966
|
-
}], propDecorators: { placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }, { type: i0.Output, args: ["selectedChange"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], searchQuery: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchQuery", required: false }] }, { type: i0.Output, args: ["searchQueryChange"] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], dropdownItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownItems", required: true }] }],
|
|
1121
|
+
}], propDecorators: { placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }, { type: i0.Output, args: ["selectedChange"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], searchQuery: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchQuery", required: false }] }, { type: i0.Output, args: ["searchQueryChange"] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], dropdownItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownItems", required: true }] }], itemSelected: [{ type: i0.Output, args: ["itemSelected"] }], inputField: [{ type: i0.ViewChild, args: [i0.forwardRef(() => StrataInputFieldComponent), { isSignal: true }] }], classList: [{
|
|
967
1122
|
type: HostBinding,
|
|
968
1123
|
args: ['class']
|
|
969
1124
|
}] } });
|
|
970
1125
|
|
|
971
|
-
class
|
|
1126
|
+
class StrataDividerComponent {
|
|
972
1127
|
label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
|
|
973
1128
|
margin = input(true, ...(ngDevMode ? [{ debugName: "margin" }] : []));
|
|
974
1129
|
vertical = input(false, ...(ngDevMode ? [{ debugName: "vertical" }] : []));
|
|
975
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
976
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
1130
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1131
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataDividerComponent, isStandalone: true, selector: "st-divider", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, margin: { classPropertyName: "margin", publicName: "margin", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: "vertical", publicName: "vertical", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!label() || vertical()) {\n <div class=\"divider-line\" [class.divider-margin]=\"margin()\" [class.vertical]=\"vertical()\"></div>\n} @else {\n <div class=\"divider-line-with-text\" [class.divider-margin]=\"margin()\">\n <div class=\"divider-line\"></div>\n <span>{{ label() }}</span>\n <div class=\"divider-line\"></div>\n </div>\n}\n" });
|
|
977
1132
|
}
|
|
978
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataDividerComponent, decorators: [{
|
|
979
1134
|
type: Component,
|
|
980
1135
|
args: [{ selector: 'st-divider', imports: [], template: "@if (!label() || vertical()) {\n <div class=\"divider-line\" [class.divider-margin]=\"margin()\" [class.vertical]=\"vertical()\"></div>\n} @else {\n <div class=\"divider-line-with-text\" [class.divider-margin]=\"margin()\">\n <div class=\"divider-line\"></div>\n <span>{{ label() }}</span>\n <div class=\"divider-line\"></div>\n </div>\n}\n" }]
|
|
981
1136
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], margin: [{ type: i0.Input, args: [{ isSignal: true, alias: "margin", required: false }] }], vertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "vertical", required: false }] }] } });
|
|
982
1137
|
|
|
983
|
-
class
|
|
1138
|
+
class StrataTagComponent {
|
|
984
1139
|
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
985
1140
|
get class() {
|
|
986
1141
|
return this.size();
|
|
987
1142
|
}
|
|
988
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
989
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
1143
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1144
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataTagComponent, isStandalone: true, selector: "st-tag", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
990
1145
|
}
|
|
991
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataTagComponent, decorators: [{
|
|
992
1147
|
type: Component,
|
|
993
1148
|
args: [{
|
|
994
1149
|
selector: 'st-tag',
|
|
@@ -1000,7 +1155,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1000
1155
|
args: ['class']
|
|
1001
1156
|
}] } });
|
|
1002
1157
|
|
|
1003
|
-
class
|
|
1158
|
+
class StrataKbdComponent {
|
|
1159
|
+
config = inject(STRATA_CONFIG);
|
|
1160
|
+
/**
|
|
1161
|
+
* The sequence of keys to display.
|
|
1162
|
+
* Can be an array like `['⌘', 'K']` or a string combo like `'meta+k'`.
|
|
1163
|
+
*/
|
|
1164
|
+
keys = input([], ...(ngDevMode ? [{ debugName: "keys" }] : []));
|
|
1165
|
+
resolvedKeys = computed(() => {
|
|
1166
|
+
const rawKeys = this.keys();
|
|
1167
|
+
const labels = this.config.shortcutLabels;
|
|
1168
|
+
const parseKey = (part) => {
|
|
1169
|
+
const p = part.trim().toLowerCase();
|
|
1170
|
+
if (p === 'meta')
|
|
1171
|
+
return labels?.meta || '⌘';
|
|
1172
|
+
if (p === 'ctrl')
|
|
1173
|
+
return labels?.ctrl || 'Ctrl';
|
|
1174
|
+
if (p === 'shift')
|
|
1175
|
+
return labels?.shift || 'Shift';
|
|
1176
|
+
if (p === 'alt')
|
|
1177
|
+
return labels?.alt || 'Alt';
|
|
1178
|
+
return p.length === 1 ? p.toUpperCase() : part.trim();
|
|
1179
|
+
};
|
|
1180
|
+
if (typeof rawKeys === 'string') {
|
|
1181
|
+
return rawKeys.split('+').map(parseKey);
|
|
1182
|
+
}
|
|
1183
|
+
return Array.isArray(rawKeys) ? rawKeys.map(parseKey) : [];
|
|
1184
|
+
}, ...(ngDevMode ? [{ debugName: "resolvedKeys" }] : []));
|
|
1185
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataKbdComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1186
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataKbdComponent, isStandalone: true, selector: "st-kbd", inputs: { keys: { classPropertyName: "keys", publicName: "keys", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@for (key of resolvedKeys(); track key) {\n<kbd class=\"st-kbd-key st-mono-s\">{{ key }}</kbd>\n}", styles: [":host{--st-kbd-bg: transparent;--st-kbd-border: var(--st-color-text-secondary);--st-kbd-text: var(--st-color-text-secondary);display:inline-flex;align-items:center;gap:4px}:host .st-kbd-key{font-style:normal;line-height:1;padding:3px 6px;border-radius:var(--st-border-radius-sm);background:var(--st-kbd-bg);border:1px solid var(--st-kbd-border);color:var(--st-kbd-text);white-space:nowrap;-webkit-user-select:none;user-select:none}\n"] });
|
|
1187
|
+
}
|
|
1188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataKbdComponent, decorators: [{
|
|
1189
|
+
type: Component,
|
|
1190
|
+
args: [{ selector: 'st-kbd', imports: [], template: "@for (key of resolvedKeys(); track key) {\n<kbd class=\"st-kbd-key st-mono-s\">{{ key }}</kbd>\n}", styles: [":host{--st-kbd-bg: transparent;--st-kbd-border: var(--st-color-text-secondary);--st-kbd-text: var(--st-color-text-secondary);display:inline-flex;align-items:center;gap:4px}:host .st-kbd-key{font-style:normal;line-height:1;padding:3px 6px;border-radius:var(--st-border-radius-sm);background:var(--st-kbd-bg);border:1px solid var(--st-kbd-border);color:var(--st-kbd-text);white-space:nowrap;-webkit-user-select:none;user-select:none}\n"] }]
|
|
1191
|
+
}], propDecorators: { keys: [{ type: i0.Input, args: [{ isSignal: true, alias: "keys", required: false }] }] } });
|
|
1192
|
+
|
|
1193
|
+
class StrataItemComponent {
|
|
1194
|
+
element = inject(ElementRef);
|
|
1004
1195
|
interactable = input(false, ...(ngDevMode ? [{ debugName: "interactable" }] : []));
|
|
1005
1196
|
get isInteractable() {
|
|
1006
1197
|
return this.interactable();
|
|
@@ -1008,10 +1199,17 @@ class ItemComponent {
|
|
|
1008
1199
|
get tabIndex() {
|
|
1009
1200
|
return this.interactable() ? 0 : null;
|
|
1010
1201
|
}
|
|
1011
|
-
|
|
1012
|
-
|
|
1202
|
+
onKeyDown(event) {
|
|
1203
|
+
const keyboardEvent = event;
|
|
1204
|
+
if (this.interactable()) {
|
|
1205
|
+
keyboardEvent.preventDefault();
|
|
1206
|
+
this.element.nativeElement.click();
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1210
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataItemComponent, isStandalone: true, selector: "st-item", inputs: { interactable: { classPropertyName: "interactable", publicName: "interactable", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown.enter": "onKeyDown($event)", "keydown.space": "onKeyDown($event)" }, properties: { "class.interactable": "this.isInteractable", "attr.tabindex": "this.tabIndex" } }, ngImport: i0, template: "<span class=\"item-start\">\n <ng-content select=\"[area='start']\"></ng-content\n></span>\n<span class=\"item-default\"> <ng-content></ng-content></span>\n<span class=\"item-end\">\n <ng-content select=\"[area='end']\"></ng-content>\n</span>\n", styles: [""] });
|
|
1013
1211
|
}
|
|
1014
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataItemComponent, decorators: [{
|
|
1015
1213
|
type: Component,
|
|
1016
1214
|
args: [{ selector: 'st-item', imports: [], template: "<span class=\"item-start\">\n <ng-content select=\"[area='start']\"></ng-content\n></span>\n<span class=\"item-default\"> <ng-content></ng-content></span>\n<span class=\"item-end\">\n <ng-content select=\"[area='end']\"></ng-content>\n</span>\n" }]
|
|
1017
1215
|
}], propDecorators: { interactable: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactable", required: false }] }], isInteractable: [{
|
|
@@ -1020,27 +1218,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1020
1218
|
}], tabIndex: [{
|
|
1021
1219
|
type: HostBinding,
|
|
1022
1220
|
args: ['attr.tabindex']
|
|
1221
|
+
}], onKeyDown: [{
|
|
1222
|
+
type: HostListener,
|
|
1223
|
+
args: ['keydown.enter', ['$event']]
|
|
1224
|
+
}, {
|
|
1225
|
+
type: HostListener,
|
|
1226
|
+
args: ['keydown.space', ['$event']]
|
|
1023
1227
|
}] } });
|
|
1024
1228
|
|
|
1025
|
-
class
|
|
1229
|
+
class StrataItemListComponent {
|
|
1026
1230
|
items = input.required(...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
1027
1231
|
dividers = input(true, ...(ngDevMode ? [{ debugName: "dividers" }] : []));
|
|
1028
1232
|
template = input(...(ngDevMode ? [undefined, { debugName: "template" }] : []));
|
|
1029
1233
|
get hostClasses() {
|
|
1030
1234
|
return [this.dividers() ? 'with-dividers' : ''];
|
|
1031
1235
|
}
|
|
1032
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1033
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
1236
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataItemListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1237
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataItemListComponent, isStandalone: true, selector: "st-item-list", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, dividers: { classPropertyName: "dividers", publicName: "dividers", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "@for (item of items(); track item; let last = $last) {\n <ng-template #defaultItemTemplate>\n <st-item>{{ item }}</st-item>\n </ng-template>\n <ng-container\n [ngTemplateOutlet]=\"template() || defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n}\n", dependencies: [{ kind: "component", type: StrataItemComponent, selector: "st-item", inputs: ["interactable"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: CommonModule }] });
|
|
1034
1238
|
}
|
|
1035
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1239
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataItemListComponent, decorators: [{
|
|
1036
1240
|
type: Component,
|
|
1037
|
-
args: [{ selector: 'st-item-list', imports: [
|
|
1241
|
+
args: [{ selector: 'st-item-list', imports: [StrataItemComponent, NgTemplateOutlet, CommonModule], template: "@for (item of items(); track item; let last = $last) {\n <ng-template #defaultItemTemplate>\n <st-item>{{ item }}</st-item>\n </ng-template>\n <ng-container\n [ngTemplateOutlet]=\"template() || defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n}\n" }]
|
|
1038
1242
|
}], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], dividers: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividers", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], hostClasses: [{
|
|
1039
1243
|
type: HostBinding,
|
|
1040
1244
|
args: ['class']
|
|
1041
1245
|
}] } });
|
|
1042
1246
|
|
|
1043
|
-
class
|
|
1247
|
+
class StrataAutoResizeDirective {
|
|
1044
1248
|
minimumRows = input(1, ...(ngDevMode ? [{ debugName: "minimumRows" }] : []));
|
|
1045
1249
|
maximumRows = input(...(ngDevMode ? [undefined, { debugName: "maximumRows" }] : []));
|
|
1046
1250
|
lineHeight = 0;
|
|
@@ -1051,7 +1255,6 @@ class AutoResizeDirective {
|
|
|
1051
1255
|
onWindowResize() {
|
|
1052
1256
|
this.resize();
|
|
1053
1257
|
}
|
|
1054
|
-
constructor() { }
|
|
1055
1258
|
ngAfterViewInit() {
|
|
1056
1259
|
this.calculateLineHeight();
|
|
1057
1260
|
this.resize();
|
|
@@ -1083,15 +1286,15 @@ class AutoResizeDirective {
|
|
|
1083
1286
|
textarea.style.height = `${newHeight}px`;
|
|
1084
1287
|
textarea.style.overflowY = scrollHeight > maxHeight ? 'auto' : 'hidden';
|
|
1085
1288
|
}
|
|
1086
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1087
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
1289
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAutoResizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1290
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: StrataAutoResizeDirective, isStandalone: true, selector: "[stAutoResize]", inputs: { minimumRows: { classPropertyName: "minimumRows", publicName: "minimumRows", isSignal: true, isRequired: false, transformFunction: null }, maximumRows: { classPropertyName: "maximumRows", publicName: "maximumRows", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onInput()", "window:resize": "onWindowResize()" } }, usesOnChanges: true, ngImport: i0 });
|
|
1088
1291
|
}
|
|
1089
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1292
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAutoResizeDirective, decorators: [{
|
|
1090
1293
|
type: Directive,
|
|
1091
1294
|
args: [{
|
|
1092
1295
|
selector: '[stAutoResize]',
|
|
1093
1296
|
}]
|
|
1094
|
-
}],
|
|
1297
|
+
}], propDecorators: { minimumRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "minimumRows", required: false }] }], maximumRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "maximumRows", required: false }] }], onInput: [{
|
|
1095
1298
|
type: HostListener,
|
|
1096
1299
|
args: ['input']
|
|
1097
1300
|
}], onWindowResize: [{
|
|
@@ -1099,15 +1302,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1099
1302
|
args: ['window:resize']
|
|
1100
1303
|
}] } });
|
|
1101
1304
|
|
|
1102
|
-
class
|
|
1305
|
+
class StrataPaginationComponent {
|
|
1103
1306
|
currentPage = model(1, ...(ngDevMode ? [{ debugName: "currentPage" }] : []));
|
|
1104
1307
|
totalPages = input.required(...(ngDevMode ? [{ debugName: "totalPages" }] : []));
|
|
1105
|
-
|
|
1308
|
+
pageSelected = output();
|
|
1106
1309
|
pageButtons = computed(() => this.calculatePageButtons(this.currentPage(), this.totalPages()), ...(ngDevMode ? [{ debugName: "pageButtons" }] : []));
|
|
1107
1310
|
hideNextPreviousAtStartEnd = input(false, ...(ngDevMode ? [{ debugName: "hideNextPreviousAtStartEnd" }] : []));
|
|
1108
1311
|
changePage(newPage) {
|
|
1109
1312
|
this.currentPage.set(newPage);
|
|
1110
|
-
this.
|
|
1313
|
+
this.pageSelected.emit(this.currentPage());
|
|
1111
1314
|
}
|
|
1112
1315
|
calculatePageButtons(currentPage, totalPages) {
|
|
1113
1316
|
const buttons = [];
|
|
@@ -1168,19 +1371,19 @@ class PaginationComponent {
|
|
|
1168
1371
|
clickable: true,
|
|
1169
1372
|
};
|
|
1170
1373
|
}
|
|
1171
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1172
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
1374
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1375
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataPaginationComponent, isStandalone: true, selector: "st-pagination", inputs: { currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, totalPages: { classPropertyName: "totalPages", publicName: "totalPages", isSignal: true, isRequired: true, transformFunction: null }, hideNextPreviousAtStartEnd: { classPropertyName: "hideNextPreviousAtStartEnd", publicName: "hideNextPreviousAtStartEnd", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentPage: "currentPageChange", pageSelected: "pageSelected" }, ngImport: i0, template: "<button\n [disabled]=\"currentPage() === 1\"\n [class.clickable]=\"true\"\n [class.hideOnDisabled]=\"hideNextPreviousAtStartEnd()\"\n (click)=\"changePage(currentPage() - 1)\"\n>\n Previous\n</button>\n@for (page of pageButtons(); track page) {\n <button\n [class.selected]=\"page.page === currentPage()\"\n [class.clickable]=\"page.clickable\"\n (click)=\"page.page ? changePage(page.page) : null\"\n >\n {{ page.text }}\n </button>\n}\n<button\n [disabled]=\"currentPage() === totalPages()\"\n (click)=\"changePage(currentPage() + 1)\"\n [class.clickable]=\"true\"\n [class.hideOnDisabled]=\"hideNextPreviousAtStartEnd()\"\n>\n Next\n</button>\n" });
|
|
1173
1376
|
}
|
|
1174
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1377
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataPaginationComponent, decorators: [{
|
|
1175
1378
|
type: Component,
|
|
1176
1379
|
args: [{ selector: 'st-pagination', imports: [], template: "<button\n [disabled]=\"currentPage() === 1\"\n [class.clickable]=\"true\"\n [class.hideOnDisabled]=\"hideNextPreviousAtStartEnd()\"\n (click)=\"changePage(currentPage() - 1)\"\n>\n Previous\n</button>\n@for (page of pageButtons(); track page) {\n <button\n [class.selected]=\"page.page === currentPage()\"\n [class.clickable]=\"page.clickable\"\n (click)=\"page.page ? changePage(page.page) : null\"\n >\n {{ page.text }}\n </button>\n}\n<button\n [disabled]=\"currentPage() === totalPages()\"\n (click)=\"changePage(currentPage() + 1)\"\n [class.clickable]=\"true\"\n [class.hideOnDisabled]=\"hideNextPreviousAtStartEnd()\"\n>\n Next\n</button>\n" }]
|
|
1177
|
-
}], propDecorators: { currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPage", required: false }] }, { type: i0.Output, args: ["currentPageChange"] }], totalPages: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPages", required: true }] }],
|
|
1380
|
+
}], propDecorators: { currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPage", required: false }] }, { type: i0.Output, args: ["currentPageChange"] }], totalPages: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPages", required: true }] }], pageSelected: [{ type: i0.Output, args: ["pageSelected"] }], hideNextPreviousAtStartEnd: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideNextPreviousAtStartEnd", required: false }] }] } });
|
|
1178
1381
|
|
|
1179
1382
|
class CapitalizePipe {
|
|
1180
1383
|
static capitalize(value) {
|
|
1181
1384
|
return value.substring(0, 1).toLocaleUpperCase() + value.substring(1);
|
|
1182
1385
|
}
|
|
1183
|
-
transform(value, ...
|
|
1386
|
+
transform(value, ..._args) {
|
|
1184
1387
|
return CapitalizePipe.capitalize(value);
|
|
1185
1388
|
}
|
|
1186
1389
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CapitalizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -1195,16 +1398,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1195
1398
|
}]
|
|
1196
1399
|
}] });
|
|
1197
1400
|
|
|
1198
|
-
class
|
|
1401
|
+
class StrataProgressLinearComponent {
|
|
1199
1402
|
min = input(0, ...(ngDevMode ? [{ debugName: "min" }] : []));
|
|
1200
1403
|
max = input(100, ...(ngDevMode ? [{ debugName: "max" }] : []));
|
|
1201
1404
|
value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
1202
|
-
type = input('linear', ...(ngDevMode ? [{ debugName: "type" }] : []));
|
|
1203
1405
|
showLabel = input(true, ...(ngDevMode ? [{ debugName: "showLabel" }] : []));
|
|
1204
1406
|
labelFormat = input('percentage', ...(ngDevMode ? [{ debugName: "labelFormat" }] : []));
|
|
1205
1407
|
growDirection = input('right', ...(ngDevMode ? [{ debugName: "growDirection" }] : []));
|
|
1206
|
-
size = input(120, ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
1207
|
-
strokeWidth = input(10, ...(ngDevMode ? [{ debugName: "strokeWidth" }] : []));
|
|
1208
1408
|
percentage = computed(() => {
|
|
1209
1409
|
if (this.max() <= this.min()) {
|
|
1210
1410
|
return 0;
|
|
@@ -1214,22 +1414,19 @@ class ProgressComponent {
|
|
|
1214
1414
|
const progressableValues = this.max() - this.min();
|
|
1215
1415
|
return (progressedValue / progressableValues) * 100;
|
|
1216
1416
|
}, ...(ngDevMode ? [{ debugName: "percentage" }] : []));
|
|
1217
|
-
radius = computed(() => (this.size() - this.strokeWidth()) / 2, ...(ngDevMode ? [{ debugName: "radius" }] : []));
|
|
1218
|
-
circumference = computed(() => 2 * Math.PI * this.radius(), ...(ngDevMode ? [{ debugName: "circumference" }] : []));
|
|
1219
|
-
dashOffset = computed(() => this.circumference() * (1 - this.percentage() / 100), ...(ngDevMode ? [{ debugName: "dashOffset" }] : []));
|
|
1220
1417
|
get cssClasses() {
|
|
1221
|
-
return [
|
|
1418
|
+
return [`grow-${this.growDirection()}`];
|
|
1222
1419
|
}
|
|
1223
1420
|
get percentageProperty() {
|
|
1224
1421
|
return this.percentage();
|
|
1225
1422
|
}
|
|
1226
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1227
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
1423
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataProgressLinearComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1424
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataProgressLinearComponent, isStandalone: true, selector: "st-progress-linear", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, showLabel: { classPropertyName: "showLabel", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, labelFormat: { classPropertyName: "labelFormat", publicName: "labelFormat", isSignal: true, isRequired: false, transformFunction: null }, growDirection: { classPropertyName: "growDirection", publicName: "growDirection", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.cssClasses", "style.--st-progress-percentage": "this.percentageProperty" } }, ngImport: i0, template: "<div class=\"linear-container\">\n <div class=\"linear-bar\" [style.width.%]=\"percentage()\"></div>\n</div>\n\n<ng-container [ngTemplateOutlet]=\"label\"></ng-container>\n\n<ng-template #label>\n @if (showLabel()) {\n <span class=\"label\">\n @switch (labelFormat()) {\n @case (\"percentage\") {\n {{ percentage() | number: \"1.0-0\" }}%\n }\n @case (\"value\") {\n {{ value() | number: \"1.0-0\" }}\n }\n }\n </span>\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DecimalPipe, name: "number" }] });
|
|
1228
1425
|
}
|
|
1229
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1426
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataProgressLinearComponent, decorators: [{
|
|
1230
1427
|
type: Component,
|
|
1231
|
-
args: [{ selector: 'st-progress', imports: [DecimalPipe, NgTemplateOutlet], template: "
|
|
1232
|
-
}], propDecorators: { min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }],
|
|
1428
|
+
args: [{ selector: 'st-progress-linear', imports: [DecimalPipe, NgTemplateOutlet], template: "<div class=\"linear-container\">\n <div class=\"linear-bar\" [style.width.%]=\"percentage()\"></div>\n</div>\n\n<ng-container [ngTemplateOutlet]=\"label\"></ng-container>\n\n<ng-template #label>\n @if (showLabel()) {\n <span class=\"label\">\n @switch (labelFormat()) {\n @case (\"percentage\") {\n {{ percentage() | number: \"1.0-0\" }}%\n }\n @case (\"value\") {\n {{ value() | number: \"1.0-0\" }}\n }\n }\n </span>\n }\n</ng-template>\n" }]
|
|
1429
|
+
}], propDecorators: { min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], showLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLabel", required: false }] }], labelFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelFormat", required: false }] }], growDirection: [{ type: i0.Input, args: [{ isSignal: true, alias: "growDirection", required: false }] }], cssClasses: [{
|
|
1233
1430
|
type: HostBinding,
|
|
1234
1431
|
args: ['class']
|
|
1235
1432
|
}], percentageProperty: [{
|
|
@@ -1237,11 +1434,116 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1237
1434
|
args: ['style.--st-progress-percentage']
|
|
1238
1435
|
}] } });
|
|
1239
1436
|
|
|
1240
|
-
class
|
|
1437
|
+
class StrataProgressRadialComponent {
|
|
1438
|
+
min = input(0, ...(ngDevMode ? [{ debugName: "min" }] : []));
|
|
1439
|
+
max = input(100, ...(ngDevMode ? [{ debugName: "max" }] : []));
|
|
1440
|
+
value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
1441
|
+
showLabel = input(true, ...(ngDevMode ? [{ debugName: "showLabel" }] : []));
|
|
1442
|
+
labelFormat = input('percentage', ...(ngDevMode ? [{ debugName: "labelFormat" }] : []));
|
|
1443
|
+
size = input(120, ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
1444
|
+
strokeWidth = input(10, ...(ngDevMode ? [{ debugName: "strokeWidth" }] : []));
|
|
1445
|
+
percentage = computed(() => {
|
|
1446
|
+
if (this.max() <= this.min()) {
|
|
1447
|
+
return 0;
|
|
1448
|
+
}
|
|
1449
|
+
const clampedValue = Math.min(Math.max(this.value(), this.min()), this.max());
|
|
1450
|
+
const progressedValue = clampedValue - this.min();
|
|
1451
|
+
const progressableValues = this.max() - this.min();
|
|
1452
|
+
return (progressedValue / progressableValues) * 100;
|
|
1453
|
+
}, ...(ngDevMode ? [{ debugName: "percentage" }] : []));
|
|
1454
|
+
radius = computed(() => (this.size() - this.strokeWidth()) / 2, ...(ngDevMode ? [{ debugName: "radius" }] : []));
|
|
1455
|
+
circumference = computed(() => 2 * Math.PI * this.radius(), ...(ngDevMode ? [{ debugName: "circumference" }] : []));
|
|
1456
|
+
dashOffset = computed(() => this.circumference() * (1 - this.percentage() / 100), ...(ngDevMode ? [{ debugName: "dashOffset" }] : []));
|
|
1457
|
+
get percentageProperty() {
|
|
1458
|
+
return this.percentage();
|
|
1459
|
+
}
|
|
1460
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataProgressRadialComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1461
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataProgressRadialComponent, isStandalone: true, selector: "st-progress-radial", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, showLabel: { classPropertyName: "showLabel", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, labelFormat: { classPropertyName: "labelFormat", publicName: "labelFormat", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, strokeWidth: { classPropertyName: "strokeWidth", publicName: "strokeWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--st-progress-percentage": "this.percentageProperty" } }, ngImport: i0, template: "<div class=\"radial-container\">\n <svg width=\"100%\" height=\"100%\">\n <circle class=\"background\"></circle>\n\n <circle class=\"progress\" stroke-linecap=\"round\"></circle>\n </svg>\n\n <ng-container [ngTemplateOutlet]=\"label\"></ng-container>\n</div>\n\n<ng-template #label>\n @if (showLabel()) {\n <span class=\"label\">\n @switch (labelFormat()) {\n @case (\"percentage\") {\n {{ percentage() | number: \"1.0-0\" }}%\n }\n @case (\"value\") {\n {{ value() | number: \"1.0-0\" }}\n }\n }\n </span>\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DecimalPipe, name: "number" }] });
|
|
1462
|
+
}
|
|
1463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataProgressRadialComponent, decorators: [{
|
|
1464
|
+
type: Component,
|
|
1465
|
+
args: [{ selector: 'st-progress-radial', imports: [DecimalPipe, NgTemplateOutlet], template: "<div class=\"radial-container\">\n <svg width=\"100%\" height=\"100%\">\n <circle class=\"background\"></circle>\n\n <circle class=\"progress\" stroke-linecap=\"round\"></circle>\n </svg>\n\n <ng-container [ngTemplateOutlet]=\"label\"></ng-container>\n</div>\n\n<ng-template #label>\n @if (showLabel()) {\n <span class=\"label\">\n @switch (labelFormat()) {\n @case (\"percentage\") {\n {{ percentage() | number: \"1.0-0\" }}%\n }\n @case (\"value\") {\n {{ value() | number: \"1.0-0\" }}\n }\n }\n </span>\n }\n</ng-template>\n" }]
|
|
1466
|
+
}], propDecorators: { min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], showLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLabel", required: false }] }], labelFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelFormat", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], strokeWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "strokeWidth", required: false }] }], percentageProperty: [{
|
|
1467
|
+
type: HostBinding,
|
|
1468
|
+
args: ['style.--st-progress-percentage']
|
|
1469
|
+
}] } });
|
|
1470
|
+
|
|
1471
|
+
class StrataRadioComponent {
|
|
1472
|
+
value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
1473
|
+
label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
1474
|
+
checked = model(false, ...(ngDevMode ? [{ debugName: "checked" }] : []));
|
|
1475
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
1476
|
+
select = output();
|
|
1477
|
+
get isChecked() {
|
|
1478
|
+
return this.checked();
|
|
1479
|
+
}
|
|
1480
|
+
get isDisabled() {
|
|
1481
|
+
return this.disabled();
|
|
1482
|
+
}
|
|
1483
|
+
onClick(event) {
|
|
1484
|
+
if (this.disabled()) {
|
|
1485
|
+
return;
|
|
1486
|
+
}
|
|
1487
|
+
event.stopImmediatePropagation();
|
|
1488
|
+
this.select.emit();
|
|
1489
|
+
this.checked.set(true);
|
|
1490
|
+
}
|
|
1491
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1492
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataRadioComponent, isStandalone: true, selector: "st-radio", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", select: "select" }, host: { listeners: { "click": "onClick($event)" }, properties: { "attr.data-checked": "this.isChecked", "attr.data-disabled": "this.isDisabled" } }, ngImport: i0, template: "<input type=\"radio\" [checked]=\"checked()\" [disabled]=\"disabled()\" />\n<div class=\"radio-visual\"></div>\n@if (label()) {\n <label>{{ label() }}</label>\n}\n" });
|
|
1493
|
+
}
|
|
1494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataRadioComponent, decorators: [{
|
|
1495
|
+
type: Component,
|
|
1496
|
+
args: [{ selector: 'st-radio', imports: [], template: "<input type=\"radio\" [checked]=\"checked()\" [disabled]=\"disabled()\" />\n<div class=\"radio-visual\"></div>\n@if (label()) {\n <label>{{ label() }}</label>\n}\n" }]
|
|
1497
|
+
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], select: [{ type: i0.Output, args: ["select"] }], isChecked: [{
|
|
1498
|
+
type: HostBinding,
|
|
1499
|
+
args: ['attr.data-checked']
|
|
1500
|
+
}], isDisabled: [{
|
|
1501
|
+
type: HostBinding,
|
|
1502
|
+
args: ['attr.data-disabled']
|
|
1503
|
+
}], onClick: [{
|
|
1504
|
+
type: HostListener,
|
|
1505
|
+
args: ['click', ['$event']]
|
|
1506
|
+
}] } });
|
|
1507
|
+
|
|
1508
|
+
class StrataRadioGroupComponent {
|
|
1509
|
+
value = model('', ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
1510
|
+
radios = contentChildren(StrataRadioComponent, { ...(ngDevMode ? { debugName: "radios" } : {}), descendants: true });
|
|
1511
|
+
constructor() {
|
|
1512
|
+
// Sync group value -> children checked state
|
|
1513
|
+
effect(() => {
|
|
1514
|
+
const currentValue = this.value();
|
|
1515
|
+
this.radios().forEach((radio) => {
|
|
1516
|
+
radio.checked.set(radio.value() === currentValue);
|
|
1517
|
+
});
|
|
1518
|
+
});
|
|
1519
|
+
// Handle child selection -> update group value
|
|
1520
|
+
effect((onCleanup) => {
|
|
1521
|
+
const radios = this.radios();
|
|
1522
|
+
const subs = radios.map((radio) => radio.select.subscribe(() => {
|
|
1523
|
+
this.value.set(radio.value());
|
|
1524
|
+
}));
|
|
1525
|
+
onCleanup(() => {
|
|
1526
|
+
subs.forEach((s) => s.unsubscribe());
|
|
1527
|
+
});
|
|
1528
|
+
});
|
|
1529
|
+
}
|
|
1530
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataRadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1531
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: StrataRadioGroupComponent, isStandalone: true, selector: "st-radio-group", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, queries: [{ propertyName: "radios", predicate: StrataRadioComponent, descendants: true, isSignal: true }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
|
|
1532
|
+
}
|
|
1533
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataRadioGroupComponent, decorators: [{
|
|
1534
|
+
type: Component,
|
|
1535
|
+
args: [{
|
|
1536
|
+
selector: 'st-radio-group',
|
|
1537
|
+
imports: [],
|
|
1538
|
+
template: `<ng-content></ng-content>`,
|
|
1539
|
+
}]
|
|
1540
|
+
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], radios: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrataRadioComponent), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
1541
|
+
|
|
1542
|
+
class StrataSegmentedControlItemComponent {
|
|
1241
1543
|
text = input.required(...(ngDevMode ? [{ debugName: "text" }] : []));
|
|
1242
1544
|
selected = model(false, ...(ngDevMode ? [{ debugName: "selected" }] : []));
|
|
1243
1545
|
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
1244
|
-
|
|
1546
|
+
selectionChanged = output();
|
|
1245
1547
|
get tabIndex() {
|
|
1246
1548
|
return this.selected() || this.disabled() ? null : 0;
|
|
1247
1549
|
}
|
|
@@ -1250,17 +1552,17 @@ class SegmentedControlItemComponent {
|
|
|
1250
1552
|
}
|
|
1251
1553
|
onClick() {
|
|
1252
1554
|
this.selected.set(true);
|
|
1253
|
-
this.
|
|
1555
|
+
this.selectionChanged.emit();
|
|
1254
1556
|
}
|
|
1255
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1256
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
1557
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSegmentedControlItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1558
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataSegmentedControlItemComponent, isStandalone: true, selector: "st-segmented-control-item", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selectedChange", selectionChanged: "selectionChanged" }, host: { listeners: { "click": "onClick()" }, properties: { "attr.tabindex": "this.tabIndex", "attr.disabled": "this.disabledAttribute" } }, ngImport: i0, template: "{{ text() }}\n", styles: [""] });
|
|
1257
1559
|
}
|
|
1258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1560
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSegmentedControlItemComponent, decorators: [{
|
|
1259
1561
|
type: Component,
|
|
1260
|
-
args: [{ selector: 'st-segmented-control-item', imports: [],
|
|
1562
|
+
args: [{ selector: 'st-segmented-control-item', imports: [], host: {
|
|
1261
1563
|
'(click)': 'onClick()',
|
|
1262
|
-
} }]
|
|
1263
|
-
}], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: true }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }, { type: i0.Output, args: ["selectedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }],
|
|
1564
|
+
}, template: "{{ text() }}\n" }]
|
|
1565
|
+
}], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: true }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }, { type: i0.Output, args: ["selectedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], selectionChanged: [{ type: i0.Output, args: ["selectionChanged"] }], tabIndex: [{
|
|
1264
1566
|
type: HostBinding,
|
|
1265
1567
|
args: ['attr.tabindex']
|
|
1266
1568
|
}], disabledAttribute: [{
|
|
@@ -1268,27 +1570,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1268
1570
|
args: ['attr.disabled']
|
|
1269
1571
|
}] } });
|
|
1270
1572
|
|
|
1271
|
-
class
|
|
1272
|
-
|
|
1273
|
-
|
|
1573
|
+
class StrataSegmentedControlComponent {
|
|
1574
|
+
elementRef = inject(ElementRef);
|
|
1575
|
+
destroyRef = inject(DestroyRef);
|
|
1576
|
+
fullWidth = input(false, { ...(ngDevMode ? { debugName: "fullWidth" } : {}), transform: booleanAttribute });
|
|
1577
|
+
segmentItems = contentChildren(StrataSegmentedControlItemComponent, ...(ngDevMode ? [{ debugName: "segmentItems" }] : []));
|
|
1578
|
+
segmentItemsRefs = contentChildren(StrataSegmentedControlItemComponent, { ...(ngDevMode ? { debugName: "segmentItemsRefs" } : {}), read: ElementRef });
|
|
1274
1579
|
selectedItem = signal(null, ...(ngDevMode ? [{ debugName: "selectedItem" }] : []));
|
|
1275
1580
|
selectedIndex = signal(0, ...(ngDevMode ? [{ debugName: "selectedIndex" }] : []));
|
|
1276
|
-
|
|
1277
|
-
|
|
1581
|
+
offsets = signal([], ...(ngDevMode ? [{ debugName: "offsets" }] : []));
|
|
1582
|
+
itemWidths = signal([], ...(ngDevMode ? [{ debugName: "itemWidths" }] : []));
|
|
1583
|
+
tops = signal([], ...(ngDevMode ? [{ debugName: "tops" }] : []));
|
|
1584
|
+
heights = signal([], ...(ngDevMode ? [{ debugName: "heights" }] : []));
|
|
1585
|
+
offset = computed(() => this.offsets()[this.selectedIndex()] ?? 0, ...(ngDevMode ? [{ debugName: "offset" }] : []));
|
|
1586
|
+
indicatorWidth = computed(() => this.itemWidths()[this.selectedIndex()] ?? 0, ...(ngDevMode ? [{ debugName: "indicatorWidth" }] : []));
|
|
1587
|
+
indicatorTop = computed(() => this.tops()[this.selectedIndex()] ?? 0, ...(ngDevMode ? [{ debugName: "indicatorTop" }] : []));
|
|
1588
|
+
indicatorHeight = computed(() => this.heights()[this.selectedIndex()] ?? 0, ...(ngDevMode ? [{ debugName: "indicatorHeight" }] : []));
|
|
1278
1589
|
ngAfterViewInit() {
|
|
1279
1590
|
if (this.segmentItems().length === 0) {
|
|
1280
1591
|
return;
|
|
1281
1592
|
}
|
|
1282
|
-
|
|
1283
|
-
for (let i = 0; i < this.segmentItems().length; i++) {
|
|
1284
|
-
widths.push(this.calculateOffset(i));
|
|
1285
|
-
}
|
|
1286
|
-
this.widths.set(widths);
|
|
1287
|
-
for (const item of this.segmentItems()) {
|
|
1288
|
-
item.onSelection.subscribe(() => {
|
|
1289
|
-
this.selectItem(item);
|
|
1290
|
-
});
|
|
1291
|
-
}
|
|
1593
|
+
this.updateDimensions();
|
|
1292
1594
|
const initiallySelected = this.segmentItems().find((item) => item.selected());
|
|
1293
1595
|
if (!initiallySelected) {
|
|
1294
1596
|
const firstItem = this.segmentItems()[0];
|
|
@@ -1298,31 +1600,152 @@ class SegmentedControlComponent {
|
|
|
1298
1600
|
else {
|
|
1299
1601
|
this.selectItem(initiallySelected);
|
|
1300
1602
|
}
|
|
1603
|
+
const observer = new ResizeObserver(() => {
|
|
1604
|
+
this.updateDimensions();
|
|
1605
|
+
});
|
|
1606
|
+
observer.observe(this.elementRef.nativeElement);
|
|
1607
|
+
this.destroyRef.onDestroy(() => observer.disconnect());
|
|
1608
|
+
}
|
|
1609
|
+
constructor() {
|
|
1610
|
+
effect((onCleanup) => {
|
|
1611
|
+
const items = this.segmentItems();
|
|
1612
|
+
const subs = items.map((item) => item.selectionChanged.subscribe(() => {
|
|
1613
|
+
this.selectItem(item);
|
|
1614
|
+
}));
|
|
1615
|
+
// Also update dimensions when items change
|
|
1616
|
+
this.updateDimensions();
|
|
1617
|
+
onCleanup(() => {
|
|
1618
|
+
subs.forEach((sub) => sub.unsubscribe());
|
|
1619
|
+
});
|
|
1620
|
+
});
|
|
1301
1621
|
}
|
|
1302
1622
|
selectItem(selectedItem) {
|
|
1303
1623
|
this.selectedItem.set(selectedItem);
|
|
1304
1624
|
this.selectedIndex.set(this.segmentItems().indexOf(selectedItem));
|
|
1305
1625
|
}
|
|
1306
|
-
|
|
1307
|
-
const
|
|
1308
|
-
if (
|
|
1309
|
-
return
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1626
|
+
updateDimensions() {
|
|
1627
|
+
const refs = this.segmentItemsRefs();
|
|
1628
|
+
if (!refs || refs.length === 0)
|
|
1629
|
+
return;
|
|
1630
|
+
const offsets = refs.map(ref => ref.nativeElement.offsetLeft);
|
|
1631
|
+
const widths = refs.map(ref => ref.nativeElement.offsetWidth);
|
|
1632
|
+
const tops = refs.map(ref => ref.nativeElement.offsetTop);
|
|
1633
|
+
const heights = refs.map(ref => ref.nativeElement.offsetHeight);
|
|
1634
|
+
this.offsets.set(offsets);
|
|
1635
|
+
this.itemWidths.set(widths);
|
|
1636
|
+
this.tops.set(tops);
|
|
1637
|
+
this.heights.set(heights);
|
|
1638
|
+
}
|
|
1639
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSegmentedControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1640
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: StrataSegmentedControlComponent, isStandalone: true, selector: "st-segmented-control", inputs: { fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.st-segmented-control-full-width": "fullWidth()" } }, queries: [{ propertyName: "segmentItems", predicate: StrataSegmentedControlItemComponent, isSignal: true }, { propertyName: "segmentItemsRefs", predicate: StrataSegmentedControlItemComponent, read: ElementRef, isSignal: true }], ngImport: i0, template: "<ng-content select=\"st-segmented-control-item\"></ng-content>\n<div class=\"selection-item\" id=\"selection-indicator\" \n [style.left]=\"this.offset() + 'px'\"\n [style.top]=\"this.indicatorTop() + 'px'\"\n [style.width]=\"this.indicatorWidth() + 'px'\"\n [style.height]=\"this.indicatorHeight() + 'px'\">\n {{ this.selectedItem()?.text() }}\n</div>\n" });
|
|
1317
1641
|
}
|
|
1318
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1642
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSegmentedControlComponent, decorators: [{
|
|
1319
1643
|
type: Component,
|
|
1320
|
-
args: [{ selector: 'st-segmented-control', imports: [],
|
|
1321
|
-
|
|
1644
|
+
args: [{ selector: 'st-segmented-control', imports: [], host: {
|
|
1645
|
+
'[class.st-segmented-control-full-width]': 'fullWidth()',
|
|
1646
|
+
}, template: "<ng-content select=\"st-segmented-control-item\"></ng-content>\n<div class=\"selection-item\" id=\"selection-indicator\" \n [style.left]=\"this.offset() + 'px'\"\n [style.top]=\"this.indicatorTop() + 'px'\"\n [style.width]=\"this.indicatorWidth() + 'px'\"\n [style.height]=\"this.indicatorHeight() + 'px'\">\n {{ this.selectedItem()?.text() }}\n</div>\n" }]
|
|
1647
|
+
}], ctorParameters: () => [], propDecorators: { fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], segmentItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrataSegmentedControlItemComponent), { isSignal: true }] }], segmentItemsRefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrataSegmentedControlItemComponent), { ...{
|
|
1322
1648
|
read: ElementRef,
|
|
1323
1649
|
}, isSignal: true }] }] } });
|
|
1324
1650
|
|
|
1325
|
-
class
|
|
1651
|
+
class StrataSidemenuComponent {
|
|
1652
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSidemenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1653
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: StrataSidemenuComponent, isStandalone: true, selector: "st-sidemenu", ngImport: i0, template: "<div class=\"st-sidemenu-header\">\n <ng-content select=\"[st-sidemenu-header]\"></ng-content>\n</div>\n<div class=\"st-sidemenu-content\">\n <ng-content></ng-content>\n</div>\n<div class=\"st-sidemenu-footer\">\n <ng-content select=\"[st-sidemenu-footer]\"></ng-content>\n</div>\n", styles: [":host{--st-sidemenu-min-width: 200px;--st-sidemenu-padding: var(--st-size-xs, 12px);--st-sidemenu-header-spacing: var(--st-size-sm, 16px);--st-sidemenu-footer-spacing: var(--st-size-sm, 16px);display:flex;flex-direction:column;height:100%;width:max-content;min-width:var(--st-sidemenu-min-width);box-sizing:border-box}:host .st-sidemenu-header{display:flex;flex-direction:column;margin-bottom:var(--st-sidemenu-header-spacing)}:host .st-sidemenu-header:empty{display:none;margin-bottom:0}:host .st-sidemenu-content{display:flex;flex-direction:column;flex:1;overflow-y:auto;padding:var(--st-sidemenu-padding)}:host .st-sidemenu-footer{display:flex;flex-direction:column;margin-top:auto;padding-top:var(--st-sidemenu-footer-spacing)}:host .st-sidemenu-footer:empty{display:none;padding-top:0}\n"] });
|
|
1654
|
+
}
|
|
1655
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSidemenuComponent, decorators: [{
|
|
1656
|
+
type: Component,
|
|
1657
|
+
args: [{ selector: 'st-sidemenu', template: "<div class=\"st-sidemenu-header\">\n <ng-content select=\"[st-sidemenu-header]\"></ng-content>\n</div>\n<div class=\"st-sidemenu-content\">\n <ng-content></ng-content>\n</div>\n<div class=\"st-sidemenu-footer\">\n <ng-content select=\"[st-sidemenu-footer]\"></ng-content>\n</div>\n", styles: [":host{--st-sidemenu-min-width: 200px;--st-sidemenu-padding: var(--st-size-xs, 12px);--st-sidemenu-header-spacing: var(--st-size-sm, 16px);--st-sidemenu-footer-spacing: var(--st-size-sm, 16px);display:flex;flex-direction:column;height:100%;width:max-content;min-width:var(--st-sidemenu-min-width);box-sizing:border-box}:host .st-sidemenu-header{display:flex;flex-direction:column;margin-bottom:var(--st-sidemenu-header-spacing)}:host .st-sidemenu-header:empty{display:none;margin-bottom:0}:host .st-sidemenu-content{display:flex;flex-direction:column;flex:1;overflow-y:auto;padding:var(--st-sidemenu-padding)}:host .st-sidemenu-footer{display:flex;flex-direction:column;margin-top:auto;padding-top:var(--st-sidemenu-footer-spacing)}:host .st-sidemenu-footer:empty{display:none;padding-top:0}\n"] }]
|
|
1658
|
+
}] });
|
|
1659
|
+
|
|
1660
|
+
class StrataSidemenuSectionComponent {
|
|
1661
|
+
label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
|
|
1662
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSidemenuSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1663
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataSidemenuSectionComponent, isStandalone: true, selector: "st-sidemenu-section", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (label()) {\n<p class=\"st-sidemenu-section-header st-label\">{{ label() }}</p>\n}\n<div class=\"st-sidemenu-section-content\">\n <ng-content></ng-content>\n</div>", styles: [":host{--st-sidemenu-section-spacing: var(--st-size-sm, 16px);--st-sidemenu-section-header-padding: var(--st-size-xxs, 8px) var(--st-size-xs, 12px);--st-sidemenu-section-header-spacing: var(--st-size-xxxs, 4px);--st-sidemenu-section-gap: var(--st-size-xxxs, 4px);display:flex;flex-direction:column;width:100%;margin-block-end:var(--st-sidemenu-section-spacing)}.st-sidemenu-section-header{padding:var(--st-sidemenu-section-header-padding);margin-block-end:var(--st-sidemenu-section-header-spacing)}.st-sidemenu-section-content{display:flex;flex-direction:column;gap:var(--st-sidemenu-section-gap)}\n"] });
|
|
1664
|
+
}
|
|
1665
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSidemenuSectionComponent, decorators: [{
|
|
1666
|
+
type: Component,
|
|
1667
|
+
args: [{ selector: 'st-sidemenu-section', template: "@if (label()) {\n<p class=\"st-sidemenu-section-header st-label\">{{ label() }}</p>\n}\n<div class=\"st-sidemenu-section-content\">\n <ng-content></ng-content>\n</div>", styles: [":host{--st-sidemenu-section-spacing: var(--st-size-sm, 16px);--st-sidemenu-section-header-padding: var(--st-size-xxs, 8px) var(--st-size-xs, 12px);--st-sidemenu-section-header-spacing: var(--st-size-xxxs, 4px);--st-sidemenu-section-gap: var(--st-size-xxxs, 4px);display:flex;flex-direction:column;width:100%;margin-block-end:var(--st-sidemenu-section-spacing)}.st-sidemenu-section-header{padding:var(--st-sidemenu-section-header-padding);margin-block-end:var(--st-sidemenu-section-header-spacing)}.st-sidemenu-section-content{display:flex;flex-direction:column;gap:var(--st-sidemenu-section-gap)}\n"] }]
|
|
1668
|
+
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] } });
|
|
1669
|
+
|
|
1670
|
+
class StrataSidemenuItemDirective {
|
|
1671
|
+
active = input(false, ...(ngDevMode ? [{ debugName: "active" }] : []));
|
|
1672
|
+
elementRef = inject(ElementRef);
|
|
1673
|
+
constructor() {
|
|
1674
|
+
effect(() => {
|
|
1675
|
+
if (this.active()) {
|
|
1676
|
+
this.elementRef.nativeElement.scrollIntoView({
|
|
1677
|
+
block: 'nearest',
|
|
1678
|
+
inline: 'nearest',
|
|
1679
|
+
});
|
|
1680
|
+
}
|
|
1681
|
+
});
|
|
1682
|
+
}
|
|
1683
|
+
isSidemenuItem = true;
|
|
1684
|
+
get isSelected() {
|
|
1685
|
+
return this.active();
|
|
1686
|
+
}
|
|
1687
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSidemenuItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1688
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: StrataSidemenuItemDirective, isStandalone: true, selector: "[stSidemenuItem]", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.st-sidemenu-item": "this.isSidemenuItem", "class.selected": "this.isSelected" } }, ngImport: i0 });
|
|
1689
|
+
}
|
|
1690
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSidemenuItemDirective, decorators: [{
|
|
1691
|
+
type: Directive,
|
|
1692
|
+
args: [{
|
|
1693
|
+
selector: '[stSidemenuItem]'
|
|
1694
|
+
}]
|
|
1695
|
+
}], ctorParameters: () => [], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], isSidemenuItem: [{
|
|
1696
|
+
type: HostBinding,
|
|
1697
|
+
args: ['class.st-sidemenu-item']
|
|
1698
|
+
}], isSelected: [{
|
|
1699
|
+
type: HostBinding,
|
|
1700
|
+
args: ['class.selected']
|
|
1701
|
+
}] } });
|
|
1702
|
+
|
|
1703
|
+
class StrataSidemenuItemGroupComponent {
|
|
1704
|
+
label = input.required(...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
1705
|
+
expanded = signal(false, ...(ngDevMode ? [{ debugName: "expanded" }] : []));
|
|
1706
|
+
hasActiveChild = signal(false, ...(ngDevMode ? [{ debugName: "hasActiveChild" }] : []));
|
|
1707
|
+
router = inject(Router, { optional: true });
|
|
1708
|
+
destroyRef = inject(DestroyRef);
|
|
1709
|
+
routerLinks;
|
|
1710
|
+
ngAfterContentInit() {
|
|
1711
|
+
setTimeout(() => {
|
|
1712
|
+
this.checkActiveState();
|
|
1713
|
+
});
|
|
1714
|
+
if (this.router) {
|
|
1715
|
+
this.router.events
|
|
1716
|
+
.pipe(filter((e) => e instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))
|
|
1717
|
+
.subscribe(() => {
|
|
1718
|
+
// Wait a tick for RouterLinkActive to update its isActive status
|
|
1719
|
+
setTimeout(() => {
|
|
1720
|
+
this.checkActiveState();
|
|
1721
|
+
});
|
|
1722
|
+
});
|
|
1723
|
+
}
|
|
1724
|
+
}
|
|
1725
|
+
toggle() {
|
|
1726
|
+
this.expanded.update((e) => !e);
|
|
1727
|
+
}
|
|
1728
|
+
checkActiveState() {
|
|
1729
|
+
if (!this.routerLinks)
|
|
1730
|
+
return;
|
|
1731
|
+
const isActive = this.routerLinks.some((rla) => rla.isActive);
|
|
1732
|
+
this.hasActiveChild.set(isActive);
|
|
1733
|
+
if (isActive) {
|
|
1734
|
+
this.expanded.set(true);
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSidemenuItemGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1738
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataSidemenuItemGroupComponent, isStandalone: true, selector: "st-sidemenu-item-group", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null } }, queries: [{ propertyName: "routerLinks", predicate: RouterLinkActive, descendants: true }], ngImport: i0, template: "<button stSidemenuItem type=\"button\" [active]=\"hasActiveChild()\" (click)=\"toggle()\">\n <span class=\"st-sidemenu-item-group-label\">{{ label() }}</span>\n <st-icon name=\"arrow-down\" size=\"sm\" class=\"st-sidemenu-item-group-icon\" [class.expanded]=\"expanded()\"></st-icon>\n</button>\n\n<div class=\"st-sidemenu-item-group-content\" [hidden]=\"!expanded()\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{--st-sidemenu-item-group-gap: var(--st-size-xxxs, 4px);--st-sidemenu-item-group-indent: var(--st-size-sm, 16px);--st-sidemenu-item-group-spacing: var(--st-size-xxxs, 4px);display:flex;flex-direction:column;width:100%}.st-sidemenu-item-group-icon{margin-left:auto;color:var(--st-color-text-secondary);transition:transform .2s ease}.st-sidemenu-item-group-icon.expanded{transform:rotate(180deg)}.st-sidemenu-item-group-content{display:flex;flex-direction:column;gap:var(--st-sidemenu-item-group-gap);padding-left:var(--st-sidemenu-item-group-indent);margin-top:var(--st-sidemenu-item-group-spacing)}.st-sidemenu-item-group-content[hidden]{display:none!important}\n"], dependencies: [{ kind: "directive", type: StrataSidemenuItemDirective, selector: "[stSidemenuItem]", inputs: ["active"] }, { kind: "component", type: StrataIconComponent, selector: "st-icon", inputs: ["name", "size"], outputs: ["sizeChange"] }] });
|
|
1739
|
+
}
|
|
1740
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSidemenuItemGroupComponent, decorators: [{
|
|
1741
|
+
type: Component,
|
|
1742
|
+
args: [{ selector: 'st-sidemenu-item-group', imports: [StrataSidemenuItemDirective, StrataIconComponent], template: "<button stSidemenuItem type=\"button\" [active]=\"hasActiveChild()\" (click)=\"toggle()\">\n <span class=\"st-sidemenu-item-group-label\">{{ label() }}</span>\n <st-icon name=\"arrow-down\" size=\"sm\" class=\"st-sidemenu-item-group-icon\" [class.expanded]=\"expanded()\"></st-icon>\n</button>\n\n<div class=\"st-sidemenu-item-group-content\" [hidden]=\"!expanded()\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{--st-sidemenu-item-group-gap: var(--st-size-xxxs, 4px);--st-sidemenu-item-group-indent: var(--st-size-sm, 16px);--st-sidemenu-item-group-spacing: var(--st-size-xxxs, 4px);display:flex;flex-direction:column;width:100%}.st-sidemenu-item-group-icon{margin-left:auto;color:var(--st-color-text-secondary);transition:transform .2s ease}.st-sidemenu-item-group-icon.expanded{transform:rotate(180deg)}.st-sidemenu-item-group-content{display:flex;flex-direction:column;gap:var(--st-sidemenu-item-group-gap);padding-left:var(--st-sidemenu-item-group-indent);margin-top:var(--st-sidemenu-item-group-spacing)}.st-sidemenu-item-group-content[hidden]{display:none!important}\n"] }]
|
|
1743
|
+
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], routerLinks: [{
|
|
1744
|
+
type: ContentChildren,
|
|
1745
|
+
args: [RouterLinkActive, { descendants: true }]
|
|
1746
|
+
}] } });
|
|
1747
|
+
|
|
1748
|
+
class StrataSliderComponent {
|
|
1326
1749
|
wrapper = viewChild.required('wrapper');
|
|
1327
1750
|
resizeObserver;
|
|
1328
1751
|
value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
|
|
@@ -1367,23 +1790,23 @@ class SliderComponent {
|
|
|
1367
1790
|
const size = styles.getPropertyValue('--st-slider-thumb-size');
|
|
1368
1791
|
return parseFloat(size);
|
|
1369
1792
|
}
|
|
1370
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1371
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type:
|
|
1793
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1794
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: StrataSliderComponent, isStandalone: true, selector: "st-slider", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, minimum: { classPropertyName: "minimum", publicName: "minimum", isSignal: true, isRequired: true, transformFunction: null }, maximum: { classPropertyName: "maximum", publicName: "maximum", isSignal: true, isRequired: true, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #wrapper\n class=\"range-wrapper\"\n [style.--steps]=\"steps()\"\n [class.stepped]=\"isStepped()\"\n>\n <input\n type=\"range\"\n [(ngModel)]=\"value\"\n [min]=\"minimum()\"\n [max]=\"maximum()\"\n [step]=\"computedStep()\"\n />\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
1372
1795
|
}
|
|
1373
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSliderComponent, decorators: [{
|
|
1374
1797
|
type: Component,
|
|
1375
1798
|
args: [{ selector: 'st-slider', imports: [FormsModule], template: "<div\n #wrapper\n class=\"range-wrapper\"\n [style.--steps]=\"steps()\"\n [class.stepped]=\"isStepped()\"\n>\n <input\n type=\"range\"\n [(ngModel)]=\"value\"\n [min]=\"minimum()\"\n [max]=\"maximum()\"\n [step]=\"computedStep()\"\n />\n</div>\n" }]
|
|
1376
1799
|
}], propDecorators: { wrapper: [{ type: i0.ViewChild, args: ['wrapper', { isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], minimum: [{ type: i0.Input, args: [{ isSignal: true, alias: "minimum", required: true }] }], maximum: [{ type: i0.Input, args: [{ isSignal: true, alias: "maximum", required: true }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }] } });
|
|
1377
1800
|
|
|
1378
|
-
class
|
|
1801
|
+
class StrataSpinnerComponent {
|
|
1379
1802
|
size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
1380
1803
|
get cssClasses() {
|
|
1381
1804
|
return [this.size()];
|
|
1382
1805
|
}
|
|
1383
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1384
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
1806
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1807
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: StrataSpinnerComponent, isStandalone: true, selector: "st-spinner", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.cssClasses" } }, ngImport: i0, template: "<span class=\"st-spinner\"></span>\n" });
|
|
1385
1808
|
}
|
|
1386
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1809
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataSpinnerComponent, decorators: [{
|
|
1387
1810
|
type: Component,
|
|
1388
1811
|
args: [{ selector: 'st-spinner', imports: [], template: "<span class=\"st-spinner\"></span>\n" }]
|
|
1389
1812
|
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], cssClasses: [{
|
|
@@ -1391,23 +1814,151 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1391
1814
|
args: ['class']
|
|
1392
1815
|
}] } });
|
|
1393
1816
|
|
|
1394
|
-
class
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1817
|
+
class StrataTabItemComponent {
|
|
1818
|
+
/**
|
|
1819
|
+
* The text label for the tab.
|
|
1820
|
+
* Can also be provided via content projection.
|
|
1821
|
+
*/
|
|
1822
|
+
text = input(...(ngDevMode ? [undefined, { debugName: "text" }] : []));
|
|
1823
|
+
/**
|
|
1824
|
+
* Whether the tab is currently selected.
|
|
1825
|
+
*/
|
|
1826
|
+
selected = model(false, ...(ngDevMode ? [{ debugName: "selected" }] : []));
|
|
1827
|
+
/**
|
|
1828
|
+
* Whether the tab is disabled.
|
|
1829
|
+
*/
|
|
1830
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
1831
|
+
/**
|
|
1832
|
+
* Emitted when the tab is clicked.
|
|
1833
|
+
*/
|
|
1834
|
+
selectionChanged = output();
|
|
1835
|
+
get isSelected() {
|
|
1836
|
+
return this.selected();
|
|
1837
|
+
}
|
|
1838
|
+
get isDisabled() {
|
|
1839
|
+
return this.disabled();
|
|
1840
|
+
}
|
|
1841
|
+
get tabIndex() {
|
|
1842
|
+
return this.selected() || this.disabled() ? null : 0;
|
|
1843
|
+
}
|
|
1844
|
+
get activeClass() {
|
|
1845
|
+
return this.selected();
|
|
1846
|
+
}
|
|
1847
|
+
get disabledClass() {
|
|
1848
|
+
return this.disabled();
|
|
1849
|
+
}
|
|
1850
|
+
onClick() {
|
|
1851
|
+
if (this.disabled()) {
|
|
1852
|
+
return;
|
|
1853
|
+
}
|
|
1854
|
+
this.selected.set(true);
|
|
1855
|
+
this.selectionChanged.emit();
|
|
1398
1856
|
}
|
|
1399
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1400
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
1857
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataTabItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1858
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataTabItemComponent, isStandalone: true, selector: "st-tab-item", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selectedChange", selectionChanged: "selectionChanged" }, host: { attributes: { "role": "tab" }, listeners: { "click": "onClick()" }, properties: { "attr.aria-selected": "this.isSelected", "attr.aria-disabled": "this.isDisabled", "attr.tabindex": "this.tabIndex", "class.active": "this.activeClass", "class.disabled": "this.disabledClass" } }, ngImport: i0, template: "@if (text()) {\n {{ text() }}\n} @else {\n <ng-content></ng-content>\n}\n" });
|
|
1401
1859
|
}
|
|
1402
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1860
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataTabItemComponent, decorators: [{
|
|
1403
1861
|
type: Component,
|
|
1404
|
-
args: [{ selector: 'st-
|
|
1405
|
-
|
|
1862
|
+
args: [{ selector: 'st-tab-item', imports: [], host: {
|
|
1863
|
+
'role': 'tab',
|
|
1864
|
+
'(click)': 'onClick()',
|
|
1865
|
+
}, template: "@if (text()) {\n {{ text() }}\n} @else {\n <ng-content></ng-content>\n}\n" }]
|
|
1866
|
+
}], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }, { type: i0.Output, args: ["selectedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], selectionChanged: [{ type: i0.Output, args: ["selectionChanged"] }], isSelected: [{
|
|
1406
1867
|
type: HostBinding,
|
|
1407
|
-
args: ['
|
|
1868
|
+
args: ['attr.aria-selected']
|
|
1869
|
+
}], isDisabled: [{
|
|
1870
|
+
type: HostBinding,
|
|
1871
|
+
args: ['attr.aria-disabled']
|
|
1872
|
+
}], tabIndex: [{
|
|
1873
|
+
type: HostBinding,
|
|
1874
|
+
args: ['attr.tabindex']
|
|
1875
|
+
}], activeClass: [{
|
|
1876
|
+
type: HostBinding,
|
|
1877
|
+
args: ['class.active']
|
|
1878
|
+
}], disabledClass: [{
|
|
1879
|
+
type: HostBinding,
|
|
1880
|
+
args: ['class.disabled']
|
|
1408
1881
|
}] } });
|
|
1409
1882
|
|
|
1410
|
-
class
|
|
1883
|
+
class StrataTabsComponent {
|
|
1884
|
+
tabItems = contentChildren(StrataTabItemComponent, { ...(ngDevMode ? { debugName: "tabItems" } : {}), descendants: true });
|
|
1885
|
+
tabItemsRefs = contentChildren(StrataTabItemComponent, { ...(ngDevMode ? { debugName: "tabItemsRefs" } : {}), descendants: true,
|
|
1886
|
+
read: ElementRef });
|
|
1887
|
+
indicator = viewChild('indicator', ...(ngDevMode ? [{ debugName: "indicator" }] : []));
|
|
1888
|
+
selectedTab = signal(null, ...(ngDevMode ? [{ debugName: "selectedTab" }] : []));
|
|
1889
|
+
selectedIndex = signal(0, ...(ngDevMode ? [{ debugName: "selectedIndex" }] : []));
|
|
1890
|
+
resizeObserver;
|
|
1891
|
+
constructor() {
|
|
1892
|
+
// Coordinate child selection
|
|
1893
|
+
effect((onCleanup) => {
|
|
1894
|
+
const items = this.tabItems();
|
|
1895
|
+
const subs = items.map((item, index) => item.selectionChanged.subscribe(() => {
|
|
1896
|
+
this.selectTab(item, index);
|
|
1897
|
+
}));
|
|
1898
|
+
onCleanup(() => {
|
|
1899
|
+
subs.forEach((sub) => sub.unsubscribe());
|
|
1900
|
+
});
|
|
1901
|
+
});
|
|
1902
|
+
// Handle responsive indicator updates
|
|
1903
|
+
effect((onCleanup) => {
|
|
1904
|
+
const indicatorEl = this.indicator()?.nativeElement;
|
|
1905
|
+
const refs = this.tabItemsRefs();
|
|
1906
|
+
const index = this.selectedIndex();
|
|
1907
|
+
if (!indicatorEl || refs.length === 0 || index < 0)
|
|
1908
|
+
return;
|
|
1909
|
+
const activeRef = refs[index].nativeElement;
|
|
1910
|
+
// Update immediately
|
|
1911
|
+
this.updateIndicator(activeRef, indicatorEl);
|
|
1912
|
+
// And on every resize of the active tab
|
|
1913
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
1914
|
+
this.updateIndicator(activeRef, indicatorEl);
|
|
1915
|
+
});
|
|
1916
|
+
this.resizeObserver.observe(activeRef);
|
|
1917
|
+
onCleanup(() => this.resizeObserver?.disconnect());
|
|
1918
|
+
});
|
|
1919
|
+
}
|
|
1920
|
+
ngAfterViewInit() {
|
|
1921
|
+
// Set initial selection
|
|
1922
|
+
const items = this.tabItems();
|
|
1923
|
+
if (items.length > 0) {
|
|
1924
|
+
const initiallySelected = items.find((item) => item.selected());
|
|
1925
|
+
if (initiallySelected) {
|
|
1926
|
+
this.selectTab(initiallySelected, items.indexOf(initiallySelected));
|
|
1927
|
+
}
|
|
1928
|
+
else {
|
|
1929
|
+
this.selectTab(items[0], 0);
|
|
1930
|
+
}
|
|
1931
|
+
}
|
|
1932
|
+
}
|
|
1933
|
+
updateIndicator(activeElement, indicatorElement) {
|
|
1934
|
+
indicatorElement.style.width = `${activeElement.offsetWidth}px`;
|
|
1935
|
+
indicatorElement.style.left = `${activeElement.offsetLeft}px`;
|
|
1936
|
+
}
|
|
1937
|
+
selectTab(tab, index) {
|
|
1938
|
+
// Unselect others
|
|
1939
|
+
this.tabItems().forEach((item) => {
|
|
1940
|
+
if (item !== tab) {
|
|
1941
|
+
item.selected.set(false);
|
|
1942
|
+
}
|
|
1943
|
+
});
|
|
1944
|
+
tab.selected.set(true);
|
|
1945
|
+
this.selectedTab.set(tab);
|
|
1946
|
+
this.selectedIndex.set(index);
|
|
1947
|
+
}
|
|
1948
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1949
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: StrataTabsComponent, isStandalone: true, selector: "st-tabs", host: { classAttribute: "st-tabs-host" }, queries: [{ propertyName: "tabItems", predicate: StrataTabItemComponent, descendants: true, isSignal: true }, { propertyName: "tabItemsRefs", predicate: StrataTabItemComponent, descendants: true, read: ElementRef, isSignal: true }], viewQueries: [{ propertyName: "indicator", first: true, predicate: ["indicator"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tabs-container\" role=\"tablist\">\n <ng-content></ng-content>\n <div #indicator class=\"selection-indicator\"></div>\n</div>\n" });
|
|
1950
|
+
}
|
|
1951
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataTabsComponent, decorators: [{
|
|
1952
|
+
type: Component,
|
|
1953
|
+
args: [{ selector: 'st-tabs', imports: [], host: {
|
|
1954
|
+
'class': 'st-tabs-host',
|
|
1955
|
+
}, template: "<div class=\"tabs-container\" role=\"tablist\">\n <ng-content></ng-content>\n <div #indicator class=\"selection-indicator\"></div>\n</div>\n" }]
|
|
1956
|
+
}], ctorParameters: () => [], propDecorators: { tabItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrataTabItemComponent), { ...{ descendants: true }, isSignal: true }] }], tabItemsRefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrataTabItemComponent), { ...{
|
|
1957
|
+
descendants: true,
|
|
1958
|
+
read: ElementRef,
|
|
1959
|
+
}, isSignal: true }] }], indicator: [{ type: i0.ViewChild, args: ['indicator', { isSignal: true }] }] } });
|
|
1960
|
+
|
|
1961
|
+
class StrataThemeDirective {
|
|
1411
1962
|
element = inject(ElementRef);
|
|
1412
1963
|
stTheme = input.required(...(ngDevMode ? [{ debugName: "stTheme" }] : []));
|
|
1413
1964
|
constructor() {
|
|
@@ -1423,14 +1974,13 @@ class ThemeDirective {
|
|
|
1423
1974
|
el.classList.add(`st-theme-${theme}`);
|
|
1424
1975
|
});
|
|
1425
1976
|
}
|
|
1426
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1427
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type:
|
|
1977
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataThemeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1978
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: StrataThemeDirective, isStandalone: true, selector: "[stTheme]", inputs: { stTheme: { classPropertyName: "stTheme", publicName: "stTheme", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
1428
1979
|
}
|
|
1429
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1980
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataThemeDirective, decorators: [{
|
|
1430
1981
|
type: Directive,
|
|
1431
1982
|
args: [{
|
|
1432
1983
|
selector: '[stTheme]',
|
|
1433
|
-
standalone: true,
|
|
1434
1984
|
}]
|
|
1435
1985
|
}], ctorParameters: () => [], propDecorators: { stTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "stTheme", required: true }] }] } });
|
|
1436
1986
|
|
|
@@ -1470,10 +2020,10 @@ class ModalService {
|
|
|
1470
2020
|
}
|
|
1471
2021
|
showAlert(config, callback) {
|
|
1472
2022
|
this.showModal({
|
|
1473
|
-
component:
|
|
2023
|
+
component: StrataAlertContentComponent,
|
|
1474
2024
|
size: 'xs',
|
|
1475
2025
|
hideCloseButton: true,
|
|
1476
|
-
onModalClosed: callback,
|
|
2026
|
+
onModalClosed: (val) => callback(val),
|
|
1477
2027
|
disableBackdropClosure: true,
|
|
1478
2028
|
inputs: {
|
|
1479
2029
|
title: config.title,
|
|
@@ -1502,7 +2052,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1502
2052
|
}]
|
|
1503
2053
|
}] });
|
|
1504
2054
|
|
|
1505
|
-
class
|
|
2055
|
+
class StrataAlertContentComponent {
|
|
1506
2056
|
modalService;
|
|
1507
2057
|
title = input.required(...(ngDevMode ? [{ debugName: "title" }] : []));
|
|
1508
2058
|
message = input(...(ngDevMode ? [undefined, { debugName: "message" }] : []));
|
|
@@ -1522,15 +2072,21 @@ class AlertContentComponent {
|
|
|
1522
2072
|
onCancel() {
|
|
1523
2073
|
this.modalService.closeCurrentModal(false);
|
|
1524
2074
|
}
|
|
1525
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1526
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
2075
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAlertContentComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2076
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataAlertContentComponent, isStandalone: true, selector: "st-alert-content", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, affirmativeButton: { classPropertyName: "affirmativeButton", publicName: "affirmativeButton", isSignal: true, isRequired: true, transformFunction: null }, cancelButton: { classPropertyName: "cancelButton", publicName: "cancelButton", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"alert-content\">\n @if (icon() !== undefined) {\n <st-avatar size=\"lg\" [stTheme]=\"theme()\">\n <st-icon [name]=\"computedIcon()\"></st-icon>\n </st-avatar>\n }\n\n <p class=\"alert-title\">{{ title() }}</p>\n @if (message()) {\n <p class=\"alert-message\">{{ message() }}</p>\n }\n</div>\n<st-button-group justification=\"expand\">\n @if (cancelButton()) {\n <button stButton (click)=\"onCancel()\">{{ cancelButton() }}</button>\n }\n <button stButton [stTheme]=\"theme()\" variant=\"primary\" (click)=\"onAffirmation()\">{{ affirmativeButton() }}</button>\n</st-button-group>\n", dependencies: [{ kind: "component", type: StrataAvatarComponent, selector: "st-avatar", inputs: ["text", "size"], outputs: ["sizeChange"] }, { kind: "component", type: StrataIconComponent, selector: "st-icon", inputs: ["name", "size"], outputs: ["sizeChange"] }, { kind: "directive", type: StrataThemeDirective, selector: "[stTheme]", inputs: ["stTheme"] }, { kind: "component", type: StrataButtonGroupComponent, selector: "st-button-group", inputs: ["justification"] }, { kind: "directive", type: StrataButtonDirective, selector: "[stButton]", inputs: ["variant", "size", "fullWidth"] }] });
|
|
1527
2077
|
}
|
|
1528
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
2078
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataAlertContentComponent, decorators: [{
|
|
1529
2079
|
type: Component,
|
|
1530
|
-
args: [{ selector: 'st-alert-content', imports: [
|
|
2080
|
+
args: [{ selector: 'st-alert-content', imports: [
|
|
2081
|
+
StrataAvatarComponent,
|
|
2082
|
+
StrataIconComponent,
|
|
2083
|
+
StrataThemeDirective,
|
|
2084
|
+
StrataButtonGroupComponent,
|
|
2085
|
+
StrataButtonDirective,
|
|
2086
|
+
], template: "<div class=\"alert-content\">\n @if (icon() !== undefined) {\n <st-avatar size=\"lg\" [stTheme]=\"theme()\">\n <st-icon [name]=\"computedIcon()\"></st-icon>\n </st-avatar>\n }\n\n <p class=\"alert-title\">{{ title() }}</p>\n @if (message()) {\n <p class=\"alert-message\">{{ message() }}</p>\n }\n</div>\n<st-button-group justification=\"expand\">\n @if (cancelButton()) {\n <button stButton (click)=\"onCancel()\">{{ cancelButton() }}</button>\n }\n <button stButton [stTheme]=\"theme()\" variant=\"primary\" (click)=\"onAffirmation()\">{{ affirmativeButton() }}</button>\n</st-button-group>\n" }]
|
|
1531
2087
|
}], ctorParameters: () => [{ type: ModalService }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], affirmativeButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "affirmativeButton", required: true }] }], cancelButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelButton", required: false }] }] } });
|
|
1532
2088
|
|
|
1533
|
-
class
|
|
2089
|
+
class StrataModalHeaderComponent {
|
|
1534
2090
|
modalService = inject(ModalService);
|
|
1535
2091
|
title = input(null, ...(ngDevMode ? [{ debugName: "title" }] : []));
|
|
1536
2092
|
showCloseButton = input(true, ...(ngDevMode ? [{ debugName: "showCloseButton" }] : []));
|
|
@@ -1538,15 +2094,15 @@ class ModalHeaderComponent {
|
|
|
1538
2094
|
this.modalService.closeCurrentModal();
|
|
1539
2095
|
event.stopPropagation();
|
|
1540
2096
|
}
|
|
1541
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1542
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
2097
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataModalHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2098
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataModalHeaderComponent, isStandalone: true, selector: "st-modal-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (title()) {\n<span class=\"st-body-l-bold\">{{ title() }}</span>\n}\n@if (showCloseButton()) {\n<button stButton (click)=\"onCloseButtonClicked($event)\" variant=\"ghost\">\n <st-icon name=\"close\" size=\"sm\"></st-icon>\n</button>\n}", dependencies: [{ kind: "directive", type: StrataButtonDirective, selector: "[stButton]", inputs: ["variant", "size", "fullWidth"] }, { kind: "component", type: StrataIconComponent, selector: "st-icon", inputs: ["name", "size"], outputs: ["sizeChange"] }] });
|
|
1543
2099
|
}
|
|
1544
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
2100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataModalHeaderComponent, decorators: [{
|
|
1545
2101
|
type: Component,
|
|
1546
|
-
args: [{ selector: 'st-modal-header', imports: [
|
|
2102
|
+
args: [{ selector: 'st-modal-header', imports: [StrataButtonDirective, StrataIconComponent], template: "@if (title()) {\n<span class=\"st-body-l-bold\">{{ title() }}</span>\n}\n@if (showCloseButton()) {\n<button stButton (click)=\"onCloseButtonClicked($event)\" variant=\"ghost\">\n <st-icon name=\"close\" size=\"sm\"></st-icon>\n</button>\n}" }]
|
|
1547
2103
|
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }] } });
|
|
1548
2104
|
|
|
1549
|
-
class
|
|
2105
|
+
class StrataModalComponent {
|
|
1550
2106
|
modalContents = viewChild.required('modalBody', {
|
|
1551
2107
|
read: ViewContainerRef,
|
|
1552
2108
|
});
|
|
@@ -1572,12 +2128,12 @@ class ModalComponent {
|
|
|
1572
2128
|
onCardClick(event) {
|
|
1573
2129
|
event.stopPropagation();
|
|
1574
2130
|
}
|
|
1575
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1576
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
2131
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2132
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataModalComponent, isStandalone: true, selector: "st-modal", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: "sizeChange" }, host: { properties: { "class": "this.sizeClass" } }, viewQueries: [{ propertyName: "modalContents", first: true, predicate: ["modalBody"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: "@if (configuration().title || !configuration().hideCloseButton) {\n <st-modal-header\n [title]=\"configuration().title\"\n [showCloseButton]=\"configuration().hideCloseButton === true ? false : true\"\n (click)=\"onCardClick($event)\"></st-modal-header>\n}\n\n<div class=\"modal-content\">\n <ng-template #modalBody></ng-template>\n</div>\n", dependencies: [{ kind: "component", type: StrataModalHeaderComponent, selector: "st-modal-header", inputs: ["title", "showCloseButton"] }] });
|
|
1577
2133
|
}
|
|
1578
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
2134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataModalComponent, decorators: [{
|
|
1579
2135
|
type: Component,
|
|
1580
|
-
args: [{ selector: 'st-modal', imports: [
|
|
2136
|
+
args: [{ selector: 'st-modal', imports: [StrataModalHeaderComponent], template: "@if (configuration().title || !configuration().hideCloseButton) {\n <st-modal-header\n [title]=\"configuration().title\"\n [showCloseButton]=\"configuration().hideCloseButton === true ? false : true\"\n (click)=\"onCardClick($event)\"></st-modal-header>\n}\n\n<div class=\"modal-content\">\n <ng-template #modalBody></ng-template>\n</div>\n" }]
|
|
1581
2137
|
}], propDecorators: { modalContents: [{ type: i0.ViewChild, args: ['modalBody', { ...{
|
|
1582
2138
|
read: ViewContainerRef,
|
|
1583
2139
|
}, isSignal: true }] }], configuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "configuration", required: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }, { type: i0.Output, args: ["sizeChange"] }], sizeClass: [{
|
|
@@ -1585,7 +2141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1585
2141
|
args: ['class']
|
|
1586
2142
|
}] } });
|
|
1587
2143
|
|
|
1588
|
-
class
|
|
2144
|
+
class StrataModalContainerComponent {
|
|
1589
2145
|
modalService;
|
|
1590
2146
|
injectedComponent;
|
|
1591
2147
|
currentModal = null;
|
|
@@ -1611,12 +2167,12 @@ class ModalContainerComponent {
|
|
|
1611
2167
|
stackTrack(index, item) {
|
|
1612
2168
|
return item.id;
|
|
1613
2169
|
}
|
|
1614
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1615
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
2170
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataModalContainerComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2171
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataModalContainerComponent, isStandalone: true, selector: "st-modal-container", ngImport: i0, template: "<div class=\"modal-wrapper\">\n @for (modal of stack.items; track modal.id; let last = $last) {\n <st-modal [ngClass]=\"{ 'hidden-under-other-modal': !last }\" [configuration]=\"modal\" [size]=\"modal.size\"> </st-modal>\n }\n</div>\n@if (!stack.empty()) {\n <div class=\"st-internal-backdrop active\" (click)=\"onBackdropClick($event)\"></div>\n}\n", dependencies: [{ kind: "component", type: StrataModalComponent, selector: "st-modal", inputs: ["configuration", "size"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
1616
2172
|
}
|
|
1617
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
2173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataModalContainerComponent, decorators: [{
|
|
1618
2174
|
type: Component,
|
|
1619
|
-
args: [{ selector: 'st-modal-container', imports: [
|
|
2175
|
+
args: [{ selector: 'st-modal-container', imports: [StrataModalComponent, CommonModule], template: "<div class=\"modal-wrapper\">\n @for (modal of stack.items; track modal.id; let last = $last) {\n <st-modal [ngClass]=\"{ 'hidden-under-other-modal': !last }\" [configuration]=\"modal\" [size]=\"modal.size\"> </st-modal>\n }\n</div>\n@if (!stack.empty()) {\n <div class=\"st-internal-backdrop active\" (click)=\"onBackdropClick($event)\"></div>\n}\n" }]
|
|
1620
2176
|
}], ctorParameters: () => [{ type: ModalService }] });
|
|
1621
2177
|
|
|
1622
2178
|
const DEFAULT_THEME = 'info';
|
|
@@ -1628,14 +2184,16 @@ class NotificationService {
|
|
|
1628
2184
|
const newNotificationId = crypto.randomUUID();
|
|
1629
2185
|
const duration = config.duration ?? DEFAULT_DURATION;
|
|
1630
2186
|
const currentStack = this.notificationStack();
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
2187
|
+
this.notificationStack.set([
|
|
2188
|
+
...currentStack,
|
|
2189
|
+
{
|
|
2190
|
+
id: newNotificationId,
|
|
2191
|
+
message: config.message,
|
|
2192
|
+
duration: duration,
|
|
2193
|
+
theme: config.theme ?? DEFAULT_THEME,
|
|
2194
|
+
icon: config.icon,
|
|
2195
|
+
}
|
|
2196
|
+
]);
|
|
1639
2197
|
this.hideNotification(newNotificationId, duration);
|
|
1640
2198
|
}
|
|
1641
2199
|
hideNotification(notificationId, duration) {
|
|
@@ -1654,34 +2212,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1654
2212
|
}]
|
|
1655
2213
|
}] });
|
|
1656
2214
|
|
|
1657
|
-
class
|
|
2215
|
+
class StrataNotificationComponent {
|
|
1658
2216
|
icon;
|
|
1659
2217
|
message;
|
|
1660
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1661
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
2218
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataNotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2219
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataNotificationComponent, isStandalone: true, selector: "st-notification", inputs: { icon: "icon", message: "message" }, ngImport: i0, template: "@if (icon) {\n <st-icon [name]=\"icon\"></st-icon>\n}\n{{ message }}\n", dependencies: [{ kind: "component", type: StrataIconComponent, selector: "st-icon", inputs: ["name", "size"], outputs: ["sizeChange"] }] });
|
|
1662
2220
|
}
|
|
1663
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
2221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataNotificationComponent, decorators: [{
|
|
1664
2222
|
type: Component,
|
|
1665
|
-
args: [{ selector: 'st-notification', imports: [
|
|
2223
|
+
args: [{ selector: 'st-notification', imports: [StrataIconComponent], template: "@if (icon) {\n <st-icon [name]=\"icon\"></st-icon>\n}\n{{ message }}\n" }]
|
|
1666
2224
|
}], propDecorators: { icon: [{
|
|
1667
2225
|
type: Input
|
|
1668
2226
|
}], message: [{
|
|
1669
2227
|
type: Input
|
|
1670
2228
|
}] } });
|
|
1671
2229
|
|
|
1672
|
-
class
|
|
2230
|
+
class StrataNotificationContainerComponent {
|
|
1673
2231
|
notificationService = inject(NotificationService);
|
|
1674
2232
|
notifications = this.notificationService.notificationStack;
|
|
1675
|
-
|
|
1676
|
-
static
|
|
1677
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: NotificationContainerComponent, isStandalone: true, selector: "st-notification-container", ngImport: i0, template: "@for (notification of notifications(); track notification.id) {\n <st-notification [icon]=\"notification.icon\" [message]=\"notification.message\" [stTheme]=\"notification.theme ?? 'info'\">\n </st-notification>\n}\n", dependencies: [{ kind: "component", type: NotificationComponent, selector: "st-notification", inputs: ["icon", "message"] }, { kind: "directive", type: ThemeDirective, selector: "[stTheme]", inputs: ["stTheme"] }] });
|
|
2233
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataNotificationContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2234
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataNotificationContainerComponent, isStandalone: true, selector: "st-notification-container", ngImport: i0, template: "@for (notification of notifications(); track notification.id) {\n <st-notification [icon]=\"notification.icon\" [message]=\"notification.message\" [stTheme]=\"notification.theme ?? 'info'\">\n </st-notification>\n}\n", dependencies: [{ kind: "component", type: StrataNotificationComponent, selector: "st-notification", inputs: ["icon", "message"] }, { kind: "directive", type: StrataThemeDirective, selector: "[stTheme]", inputs: ["stTheme"] }] });
|
|
1678
2235
|
}
|
|
1679
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
2236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataNotificationContainerComponent, decorators: [{
|
|
1680
2237
|
type: Component,
|
|
1681
|
-
args: [{ selector: 'st-notification-container', imports: [
|
|
1682
|
-
}]
|
|
2238
|
+
args: [{ selector: 'st-notification-container', imports: [StrataNotificationComponent, StrataThemeDirective], template: "@for (notification of notifications(); track notification.id) {\n <st-notification [icon]=\"notification.icon\" [message]=\"notification.message\" [stTheme]=\"notification.theme ?? 'info'\">\n </st-notification>\n}\n" }]
|
|
2239
|
+
}] });
|
|
1683
2240
|
|
|
1684
|
-
class
|
|
2241
|
+
class StrataNumberDisplayComponent {
|
|
1685
2242
|
locale = inject(LOCALE_ID);
|
|
1686
2243
|
value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
1687
2244
|
decimals = input(2, ...(ngDevMode ? [{ debugName: "decimals" }] : []));
|
|
@@ -1700,14 +2257,39 @@ class NumberDisplayComponent {
|
|
|
1700
2257
|
showPlus = input(false, ...(ngDevMode ? [{ debugName: "showPlus" }] : []));
|
|
1701
2258
|
deemphasizeDecimals = input(true, ...(ngDevMode ? [{ debugName: "deemphasizeDecimals" }] : []));
|
|
1702
2259
|
decimalPoint = computed(() => getLocaleNumberSymbol(this.locale, NumberSymbol.Decimal), ...(ngDevMode ? [{ debugName: "decimalPoint" }] : []));
|
|
1703
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
1704
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type:
|
|
2260
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataNumberDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2261
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataNumberDisplayComponent, isStandalone: true, selector: "st-number-display", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, decimals: { classPropertyName: "decimals", publicName: "decimals", isSignal: true, isRequired: false, transformFunction: null }, changedValue: { classPropertyName: "changedValue", publicName: "changedValue", isSignal: true, isRequired: false, transformFunction: null }, showPlus: { classPropertyName: "showPlus", publicName: "showPlus", isSignal: true, isRequired: false, transformFunction: null }, deemphasizeDecimals: { classPropertyName: "deemphasizeDecimals", publicName: "deemphasizeDecimals", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<p\n [ngClass]=\"{\n positive: changedValue() && value() > 0,\n negative: changedValue() && value() < 0,\n }\"\n>\n @if (showPlus() && this.value() > 0) {\n +\n }\n <span class=\"integer-value\">{{ separatedDigits().integer }}</span>\n @if (separatedDigits().decimals) {\n <span\n class=\"decimal-number\"\n [ngClass]=\"{ deemphasize: deemphasizeDecimals }\"\n >{{ decimalPoint() }}{{ separatedDigits().decimals }}</span\n >\n }\n</p>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
1705
2262
|
}
|
|
1706
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type:
|
|
2263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataNumberDisplayComponent, decorators: [{
|
|
1707
2264
|
type: Component,
|
|
1708
2265
|
args: [{ selector: 'st-number-display', imports: [CommonModule], template: "<p\n [ngClass]=\"{\n positive: changedValue() && value() > 0,\n negative: changedValue() && value() < 0,\n }\"\n>\n @if (showPlus() && this.value() > 0) {\n +\n }\n <span class=\"integer-value\">{{ separatedDigits().integer }}</span>\n @if (separatedDigits().decimals) {\n <span\n class=\"decimal-number\"\n [ngClass]=\"{ deemphasize: deemphasizeDecimals }\"\n >{{ decimalPoint() }}{{ separatedDigits().decimals }}</span\n >\n }\n</p>\n" }]
|
|
1709
2266
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], decimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "decimals", required: false }] }], changedValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "changedValue", required: false }] }], showPlus: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPlus", required: false }] }], deemphasizeDecimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "deemphasizeDecimals", required: false }] }] } });
|
|
1710
2267
|
|
|
2268
|
+
class StrataShellComponent {
|
|
2269
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2270
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: StrataShellComponent, isStandalone: true, selector: "st-shell", ngImport: i0, template: "<st-notification-container></st-notification-container>\n<st-modal-container></st-modal-container>\n<ng-content></ng-content>", dependencies: [{ kind: "component", type: StrataModalContainerComponent, selector: "st-modal-container" }, { kind: "component", type: StrataNotificationContainerComponent, selector: "st-notification-container" }] });
|
|
2271
|
+
}
|
|
2272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataShellComponent, decorators: [{
|
|
2273
|
+
type: Component,
|
|
2274
|
+
args: [{ selector: 'st-shell', imports: [StrataModalContainerComponent, StrataNotificationContainerComponent], template: "<st-notification-container></st-notification-container>\n<st-modal-container></st-modal-container>\n<ng-content></ng-content>" }]
|
|
2275
|
+
}] });
|
|
2276
|
+
|
|
2277
|
+
class StrataMessageStateComponent {
|
|
2278
|
+
header = input.required(...(ngDevMode ? [{ debugName: "header" }] : []));
|
|
2279
|
+
subtitle = input(undefined, ...(ngDevMode ? [{ debugName: "subtitle" }] : []));
|
|
2280
|
+
primaryActionText = input(undefined, ...(ngDevMode ? [{ debugName: "primaryActionText" }] : []));
|
|
2281
|
+
primaryActionTheme = input(undefined, ...(ngDevMode ? [{ debugName: "primaryActionTheme" }] : []));
|
|
2282
|
+
secondaryActionText = input(undefined, ...(ngDevMode ? [{ debugName: "secondaryActionText" }] : []));
|
|
2283
|
+
primaryAction = output();
|
|
2284
|
+
secondaryAction = output();
|
|
2285
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataMessageStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2286
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: StrataMessageStateComponent, isStandalone: true, selector: "st-message-state", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: true, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, primaryActionText: { classPropertyName: "primaryActionText", publicName: "primaryActionText", isSignal: true, isRequired: false, transformFunction: null }, primaryActionTheme: { classPropertyName: "primaryActionTheme", publicName: "primaryActionTheme", isSignal: true, isRequired: false, transformFunction: null }, secondaryActionText: { classPropertyName: "secondaryActionText", publicName: "secondaryActionText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div class=\"st-message-state-graphic\">\n <ng-content></ng-content>\n</div>\n\n<st-text-stack>\n <h3 class=\"st-message-state-header\">{{ header() }}</h3>\n @if (subtitle()) {\n <p class=\"st-message-state-subtitle\">{{ subtitle() }}</p>\n }\n</st-text-stack>\n\n@if (primaryActionText() || secondaryActionText()) {\n <div class=\"st-message-state-actions\">\n @if (secondaryActionText()) {\n <button \n stButton \n variant=\"secondary\" \n (click)=\"secondaryAction.emit()\">\n {{ secondaryActionText() }}\n </button>\n }\n @if (primaryActionText()) {\n <button \n stButton \n variant=\"primary\" \n [stTheme]=\"primaryActionTheme() || 'default'\" \n (click)=\"primaryAction.emit()\">\n {{ primaryActionText() }}\n </button>\n }\n </div>\n}\n", styles: [":host{--st-message-state-align-items: center;--st-message-state-text-align: center;--st-message-state-gap: var(--st-size-lg, 32px);--st-message-state-content-gap: var(--st-size-xxs, 8px);--st-message-state-actions-gap: var(--st-size-sm, 16px);--st-message-state-padding: var(--st-size-lg, 32px);display:flex;flex-direction:column;align-items:var(--st-message-state-align-items);text-align:var(--st-message-state-text-align);gap:var(--st-message-state-gap);padding:var(--st-message-state-padding);width:100%;box-sizing:border-box}.st-message-state-graphic{display:flex;justify-content:center;align-items:center}.st-message-state-content{display:flex;flex-direction:column;align-items:var(--st-message-state-align-items);gap:var(--st-message-state-content-gap);width:100%}.st-message-state-header{color:var(--st-color-text-primary);margin:0}.st-message-state-subtitle{color:var(--st-color-text-secondary);margin:0}.st-message-state-actions{display:flex;justify-content:center;gap:var(--st-message-state-actions-gap)}\n"], dependencies: [{ kind: "component", type: StrataTextStackComponent, selector: "st-text-stack", inputs: ["overflow"] }, { kind: "directive", type: StrataButtonDirective, selector: "[stButton]", inputs: ["variant", "size", "fullWidth"] }, { kind: "directive", type: StrataThemeDirective, selector: "[stTheme]", inputs: ["stTheme"] }] });
|
|
2287
|
+
}
|
|
2288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: StrataMessageStateComponent, decorators: [{
|
|
2289
|
+
type: Component,
|
|
2290
|
+
args: [{ selector: 'st-message-state', imports: [StrataTextStackComponent, StrataButtonDirective, StrataThemeDirective], template: "<div class=\"st-message-state-graphic\">\n <ng-content></ng-content>\n</div>\n\n<st-text-stack>\n <h3 class=\"st-message-state-header\">{{ header() }}</h3>\n @if (subtitle()) {\n <p class=\"st-message-state-subtitle\">{{ subtitle() }}</p>\n }\n</st-text-stack>\n\n@if (primaryActionText() || secondaryActionText()) {\n <div class=\"st-message-state-actions\">\n @if (secondaryActionText()) {\n <button \n stButton \n variant=\"secondary\" \n (click)=\"secondaryAction.emit()\">\n {{ secondaryActionText() }}\n </button>\n }\n @if (primaryActionText()) {\n <button \n stButton \n variant=\"primary\" \n [stTheme]=\"primaryActionTheme() || 'default'\" \n (click)=\"primaryAction.emit()\">\n {{ primaryActionText() }}\n </button>\n }\n </div>\n}\n", styles: [":host{--st-message-state-align-items: center;--st-message-state-text-align: center;--st-message-state-gap: var(--st-size-lg, 32px);--st-message-state-content-gap: var(--st-size-xxs, 8px);--st-message-state-actions-gap: var(--st-size-sm, 16px);--st-message-state-padding: var(--st-size-lg, 32px);display:flex;flex-direction:column;align-items:var(--st-message-state-align-items);text-align:var(--st-message-state-text-align);gap:var(--st-message-state-gap);padding:var(--st-message-state-padding);width:100%;box-sizing:border-box}.st-message-state-graphic{display:flex;justify-content:center;align-items:center}.st-message-state-content{display:flex;flex-direction:column;align-items:var(--st-message-state-align-items);gap:var(--st-message-state-content-gap);width:100%}.st-message-state-header{color:var(--st-color-text-primary);margin:0}.st-message-state-subtitle{color:var(--st-color-text-secondary);margin:0}.st-message-state-actions{display:flex;justify-content:center;gap:var(--st-message-state-actions-gap)}\n"] }]
|
|
2291
|
+
}], propDecorators: { header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: true }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], primaryActionText: [{ type: i0.Input, args: [{ isSignal: true, alias: "primaryActionText", required: false }] }], primaryActionTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "primaryActionTheme", required: false }] }], secondaryActionText: [{ type: i0.Input, args: [{ isSignal: true, alias: "secondaryActionText", required: false }] }], primaryAction: [{ type: i0.Output, args: ["primaryAction"] }], secondaryAction: [{ type: i0.Output, args: ["secondaryAction"] }] } });
|
|
2292
|
+
|
|
1711
2293
|
/*
|
|
1712
2294
|
* Public API Surface of ngx-strata
|
|
1713
2295
|
*/
|
|
@@ -1716,5 +2298,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1716
2298
|
* Generated bundle index. Do not edit.
|
|
1717
2299
|
*/
|
|
1718
2300
|
|
|
1719
|
-
export {
|
|
2301
|
+
export { CapitalizePipe, DEFAULT_DURATION, DEFAULT_THEME, DarkmodeService, HotkeyService, HttpIconLoader, IconLoader, IconRegistry, IconRegistryService, ModalService, NotificationService, STRATA_CONFIG, StrataAccordionGroupComponent, StrataAccordionItemComponent, StrataActionMenuComponent, StrataActionMenuItemComponent, StrataAlertComponent, StrataAlertContentComponent, StrataAutoResizeDirective, StrataAvatarComponent, StrataAvatarStackComponent, StrataButtonDirective, StrataButtonGroupComponent, StrataCardComponent, StrataCheckboxComponent, StrataDividerComponent, StrataDropdownComponent, StrataIconComponent, StrataInputFieldComponent, StrataItemComponent, StrataItemListComponent, StrataKbdComponent, StrataMessageStateComponent, StrataModalComponent, StrataModalContainerComponent, StrataModalHeaderComponent, StrataNativeInputRefDirective, StrataNotificationComponent, StrataNotificationContainerComponent, StrataNumberDisplayComponent, StrataOverlayDirective, StrataPaginationComponent, StrataProgressLinearComponent, StrataProgressRadialComponent, StrataRadioComponent, StrataRadioGroupComponent, StrataSegmentedControlComponent, StrataSegmentedControlItemComponent, StrataShellComponent, StrataSidemenuComponent, StrataSidemenuItemDirective, StrataSidemenuItemGroupComponent, StrataSidemenuSectionComponent, StrataSliderComponent, StrataSpinnerComponent, StrataTabItemComponent, StrataTabsComponent, StrataTagComponent, StrataTextStackComponent, StrataThemeDirective, StrataToggleComponent, StrataTooltipDirective, provideBaseIcons, provideIcons, provideStrata };
|
|
1720
2302
|
//# sourceMappingURL=ngx-strata.mjs.map
|