@processpuzzle/widgets 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/processpuzzle-widgets.mjs +148 -6
- package/fesm2022/processpuzzle-widgets.mjs.map +1 -1
- package/package.json +1 -5
- package/types/processpuzzle-widgets.d.ts +39 -3
- package/fesm2022/processpuzzle-widgets-mat-cards-grid.mjs +0 -113
- package/fesm2022/processpuzzle-widgets-mat-cards-grid.mjs.map +0 -1
- package/types/processpuzzle-widgets-mat-cards-grid.d.ts +0 -29
|
@@ -2,16 +2,20 @@ import { v4 } from 'uuid';
|
|
|
2
2
|
import { signalStore } from '@ngrx/signals';
|
|
3
3
|
import { BaseEntityFirestoreService, BaseEntityStore, BaseFormNavigatorStore, BaseEntityTabsStore, BaseEntityContainerStore } from '@processpuzzle/base-entity';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { inject, output, Component, computed, effect, Injectable, EnvironmentInjector, NgModule, isDevMode } from '@angular/core';
|
|
5
|
+
import { inject, output, Component, computed, effect, input, ChangeDetectionStrategy, Input, Injectable, EnvironmentInjector, NgModule, isDevMode } from '@angular/core';
|
|
6
6
|
import { MatIcon } from '@angular/material/icon';
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
7
|
+
import * as i2 from '@angular/material/button';
|
|
8
|
+
import { MatIconButton, MatButtonModule } from '@angular/material/button';
|
|
9
|
+
import { RUNTIME_CONFIGURATION, LayoutService, Stack } from '@processpuzzle/util';
|
|
9
10
|
import { TranslocoService, TranslocoDirective, provideTranslocoScope, TranslocoModule, provideTransloco } from '@jsverse/transloco';
|
|
10
|
-
import { NgClass } from '@angular/common';
|
|
11
|
+
import { NgClass, CommonModule } from '@angular/common';
|
|
11
12
|
import { MatListOption, MatSelectionList } from '@angular/material/list';
|
|
12
13
|
import { MatMenuTrigger, MatMenu } from '@angular/material/menu';
|
|
13
14
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
14
|
-
import {
|
|
15
|
+
import { MarkdownComponent } from 'ngx-markdown';
|
|
16
|
+
import * as i1 from '@angular/material/card';
|
|
17
|
+
import { MatCardModule } from '@angular/material/card';
|
|
18
|
+
import { RouterLink, Router, NavigationEnd } from '@angular/router';
|
|
15
19
|
import { BehaviorSubject } from 'rxjs';
|
|
16
20
|
import { CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
|
|
17
21
|
import { ShareButtons } from 'ngx-sharebuttons/buttons';
|
|
@@ -207,6 +211,144 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
207
211
|
`, imports: [MatIcon, MatIconButton], styles: [".like-button{position:relative;display:inline-block}.like-button span{position:absolute;bottom:0;right:5px;font-size:10px}\n"] }]
|
|
208
212
|
}], ctorParameters: () => [] });
|
|
209
213
|
|
|
214
|
+
class MarkdownPageComponent {
|
|
215
|
+
snackBar = inject(MatSnackBar);
|
|
216
|
+
markdownSrcInput = input('', ...(ngDevMode ? [{ debugName: "markdownSrcInput" }] : /* istanbul ignore next */ []));
|
|
217
|
+
markdownSrc = input(...(ngDevMode ? [undefined, { debugName: "markdownSrc" }] : /* istanbul ignore next */ []));
|
|
218
|
+
src = computed(() => this.markdownSrcInput() || this.markdownSrc() || '', ...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
|
|
219
|
+
// region event handling methods
|
|
220
|
+
onLoad($event) {
|
|
221
|
+
// TODO: find out the use of this event
|
|
222
|
+
}
|
|
223
|
+
onError($event) {
|
|
224
|
+
const message = typeof $event === 'string' ? $event : $event.message;
|
|
225
|
+
this.snackBar.open(`Error loading markdown: ${message}`, 'Close', {
|
|
226
|
+
duration: 5000,
|
|
227
|
+
horizontalPosition: 'center',
|
|
228
|
+
verticalPosition: 'bottom',
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MarkdownPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
232
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: MarkdownPageComponent, isStandalone: true, selector: "pp-markdown-page", inputs: { markdownSrcInput: { classPropertyName: "markdownSrcInput", publicName: "markdownSrcInput", isSignal: true, isRequired: false, transformFunction: null }, markdownSrc: { classPropertyName: "markdownSrc", publicName: "markdownSrc", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: ` <markdown [src]="src()" (load)="onLoad($event)" (error)="onError($event)"></markdown> `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
233
|
+
}
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MarkdownPageComponent, decorators: [{
|
|
235
|
+
type: Component,
|
|
236
|
+
args: [{
|
|
237
|
+
selector: 'pp-markdown-page',
|
|
238
|
+
imports: [CommonModule, MarkdownComponent],
|
|
239
|
+
template: ` <markdown [src]="src()" (load)="onLoad($event)" (error)="onError($event)"></markdown> `,
|
|
240
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
241
|
+
}]
|
|
242
|
+
}], propDecorators: { markdownSrcInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "markdownSrcInput", required: false }] }], markdownSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "markdownSrc", required: false }] }] } });
|
|
243
|
+
|
|
244
|
+
class MatCardsGridComponent {
|
|
245
|
+
cards = [];
|
|
246
|
+
layoutService = inject(LayoutService);
|
|
247
|
+
hasValue(textValue) {
|
|
248
|
+
return textValue.length > 0;
|
|
249
|
+
}
|
|
250
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MatCardsGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
251
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: MatCardsGridComponent, isStandalone: true, selector: "mat-cards-grid", inputs: { cards: "cards" }, ngImport: i0, template: `
|
|
252
|
+
<div [ngClass]="layoutService.layoutClass()">
|
|
253
|
+
@for (card of cards; track $index) {
|
|
254
|
+
<ng-container *transloco="let t; prefix: card.translocoPrefix">
|
|
255
|
+
<mat-card class="default-mat-card">
|
|
256
|
+
<mat-card-header>
|
|
257
|
+
@if (hasValue(card.title)) {
|
|
258
|
+
<mat-card-title>{{ t(card.title) }}</mat-card-title>
|
|
259
|
+
}
|
|
260
|
+
@if (hasValue(card.subtitle)) {
|
|
261
|
+
<mat-card-subtitle>{{ t(card.subtitle) }}</mat-card-subtitle>
|
|
262
|
+
}
|
|
263
|
+
@if (card.icon) {
|
|
264
|
+
<span class="toolbar-spacer"></span>
|
|
265
|
+
<button mat-icon-button>
|
|
266
|
+
<mat-icon class="icon-large material-symbols-outlined">{{ card.icon }}</mat-icon>
|
|
267
|
+
</button>
|
|
268
|
+
}
|
|
269
|
+
</mat-card-header>
|
|
270
|
+
@if (hasValue(card.content)) {
|
|
271
|
+
<mat-card-content>
|
|
272
|
+
<div>
|
|
273
|
+
{{ t(card.content[0]) }}
|
|
274
|
+
@if (card.content.length > 1) {
|
|
275
|
+
<ul>
|
|
276
|
+
@for (item of card.content.slice(1); track $index) {
|
|
277
|
+
<li>{{ t(item) }}</li>
|
|
278
|
+
}
|
|
279
|
+
</ul>
|
|
280
|
+
}
|
|
281
|
+
</div>
|
|
282
|
+
</mat-card-content>
|
|
283
|
+
}
|
|
284
|
+
@if (card.actions && card.actions.length > 0) {
|
|
285
|
+
<mat-card-actions>
|
|
286
|
+
@for (action of card.actions; track $index) {
|
|
287
|
+
<ng-container>
|
|
288
|
+
<button [matButton]="action.buttonType ?? 'elevated'" [routerLink]="action.link">{{ t(action.caption) }}</button>
|
|
289
|
+
</ng-container>
|
|
290
|
+
}
|
|
291
|
+
</mat-card-actions>
|
|
292
|
+
}
|
|
293
|
+
</mat-card>
|
|
294
|
+
</ng-container>
|
|
295
|
+
}
|
|
296
|
+
</div>
|
|
297
|
+
`, isInline: true, styles: [".web-layout{display:grid;grid-template-columns:repeat(3,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.tablet-layout{display:grid;grid-template-columns:repeat(2,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.handset-layout{display:grid;grid-template-columns:repeat(1,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.default-mat-card{display:flex;flex-direction:column;background-color:#99d9eb}mat-card-title{font-family:Winky Sans,sans-serif}mat-card-content{flex-grow:1;overflow:auto;font-family:cursive;font-size:medium;text-align:left;padding-bottom:10px}.icon-large{font-size:36px;width:36px;height:36px;margin-top:-10px;margin-right:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
298
|
+
}
|
|
299
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MatCardsGridComponent, decorators: [{
|
|
300
|
+
type: Component,
|
|
301
|
+
args: [{ selector: 'mat-cards-grid', standalone: true, imports: [MatCardModule, MatButtonModule, RouterLink, TranslocoDirective, NgClass, MatIcon], template: `
|
|
302
|
+
<div [ngClass]="layoutService.layoutClass()">
|
|
303
|
+
@for (card of cards; track $index) {
|
|
304
|
+
<ng-container *transloco="let t; prefix: card.translocoPrefix">
|
|
305
|
+
<mat-card class="default-mat-card">
|
|
306
|
+
<mat-card-header>
|
|
307
|
+
@if (hasValue(card.title)) {
|
|
308
|
+
<mat-card-title>{{ t(card.title) }}</mat-card-title>
|
|
309
|
+
}
|
|
310
|
+
@if (hasValue(card.subtitle)) {
|
|
311
|
+
<mat-card-subtitle>{{ t(card.subtitle) }}</mat-card-subtitle>
|
|
312
|
+
}
|
|
313
|
+
@if (card.icon) {
|
|
314
|
+
<span class="toolbar-spacer"></span>
|
|
315
|
+
<button mat-icon-button>
|
|
316
|
+
<mat-icon class="icon-large material-symbols-outlined">{{ card.icon }}</mat-icon>
|
|
317
|
+
</button>
|
|
318
|
+
}
|
|
319
|
+
</mat-card-header>
|
|
320
|
+
@if (hasValue(card.content)) {
|
|
321
|
+
<mat-card-content>
|
|
322
|
+
<div>
|
|
323
|
+
{{ t(card.content[0]) }}
|
|
324
|
+
@if (card.content.length > 1) {
|
|
325
|
+
<ul>
|
|
326
|
+
@for (item of card.content.slice(1); track $index) {
|
|
327
|
+
<li>{{ t(item) }}</li>
|
|
328
|
+
}
|
|
329
|
+
</ul>
|
|
330
|
+
}
|
|
331
|
+
</div>
|
|
332
|
+
</mat-card-content>
|
|
333
|
+
}
|
|
334
|
+
@if (card.actions && card.actions.length > 0) {
|
|
335
|
+
<mat-card-actions>
|
|
336
|
+
@for (action of card.actions; track $index) {
|
|
337
|
+
<ng-container>
|
|
338
|
+
<button [matButton]="action.buttonType ?? 'elevated'" [routerLink]="action.link">{{ t(action.caption) }}</button>
|
|
339
|
+
</ng-container>
|
|
340
|
+
}
|
|
341
|
+
</mat-card-actions>
|
|
342
|
+
}
|
|
343
|
+
</mat-card>
|
|
344
|
+
</ng-container>
|
|
345
|
+
}
|
|
346
|
+
</div>
|
|
347
|
+
`, styles: [".web-layout{display:grid;grid-template-columns:repeat(3,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.tablet-layout{display:grid;grid-template-columns:repeat(2,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.handset-layout{display:grid;grid-template-columns:repeat(1,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.default-mat-card{display:flex;flex-direction:column;background-color:#99d9eb}mat-card-title{font-family:Winky Sans,sans-serif}mat-card-content{flex-grow:1;overflow:auto;font-family:cursive;font-size:medium;text-align:left;padding-bottom:10px}.icon-large{font-size:36px;width:36px;height:36px;margin-top:-10px;margin-right:10px}\n"] }]
|
|
348
|
+
}], propDecorators: { cards: [{
|
|
349
|
+
type: Input
|
|
350
|
+
}] } });
|
|
351
|
+
|
|
210
352
|
class NavigateBackService {
|
|
211
353
|
noRouteAvailable = new BehaviorSubject('');
|
|
212
354
|
routeHistory = new Stack();
|
|
@@ -416,5 +558,5 @@ const widgetsRoutes = [{ path: 'anything', component: LanguageSelectorComponent,
|
|
|
416
558
|
* Generated bundle index. Do not edit.
|
|
417
559
|
*/
|
|
418
560
|
|
|
419
|
-
export { ApplicationProperty, ApplicationPropertyStore, LanguageSelectorComponent, LikeButtonComponent, NavigateBackComponent, NavigateBackService, ShareButtonComponent, ShareButtonModule, TranslocoHttpLoader, WidgetsModule, provideAppPropertyStore, widgetsRoutes };
|
|
561
|
+
export { ApplicationProperty, ApplicationPropertyStore, LanguageSelectorComponent, LikeButtonComponent, MarkdownPageComponent, MatCardsGridComponent, NavigateBackComponent, NavigateBackService, ShareButtonComponent, ShareButtonModule, TranslocoHttpLoader, WidgetsModule, provideAppPropertyStore, widgetsRoutes };
|
|
420
562
|
//# sourceMappingURL=processpuzzle-widgets.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processpuzzle-widgets.mjs","sources":["../../../../libs/widgets/src/app-property/app-property.ts","../../../../libs/widgets/src/app-property/app-property.service.ts","../../../../libs/widgets/src/app-property/app-property.store.ts","../../../../libs/widgets/src/language-selector/language-selector-list.component.ts","../../../../libs/widgets/src/language-selector/language-selector.component.ts","../../../../libs/widgets/src/like-button/like-button.component.ts","../../../../libs/widgets/src/navigate-back/navigate-back.service.ts","../../../../libs/widgets/src/navigate-back/navigate-back.component.ts","../../../../libs/widgets/src/app-property/app-property.mapper.ts","../../../../libs/widgets/src/app-property/app-property-store.provider.ts","../../../../libs/widgets/src/share-button/share-button.component.ts","../../../../libs/widgets/src/share-button/share-button.module.ts","../../../../libs/widgets/src/language-selector/transloco.loader.ts","../../../../libs/widgets/src/widgets.module.ts","../../../../libs/widgets/src/widgets.routes.ts","../../../../libs/widgets/src/public-api.ts","../../../../libs/widgets/src/processpuzzle-widgets.ts"],"sourcesContent":["import { BaseEntity } from '@processpuzzle/base-entity';\nimport { v4 as uuidv4 } from 'uuid';\n\nexport class ApplicationProperty implements BaseEntity {\n readonly id: string;\n private readonly propertyName: string;\n private propertyValue: string;\n\n constructor(id?: string, name?: string, value?: string) {\n this.id = id ?? uuidv4();\n this.propertyName = name ?? '';\n this.propertyValue = value ?? '';\n }\n\n // region properties\n public get name() {\n return this.propertyName;\n }\n\n public get value() {\n return this.propertyValue;\n }\n\n public set value(newValue: string) {\n this.propertyValue = newValue;\n }\n\n // endregion\n}\n","import { ApplicationProperty } from './app-property';\nimport { BaseEntityFirestoreService } from '@processpuzzle/base-entity';\nimport { ApplicationPropertyMapper } from './app-property.mapper';\n\nexport class ApplicationPropertyService extends BaseEntityFirestoreService<ApplicationProperty> {\n constructor(protected override entityMapper: ApplicationPropertyMapper) {\n super(entityMapper, 'application-properties');\n }\n}\n","import { signalStore } from '@ngrx/signals';\nimport { BaseEntityContainerStore, BaseEntityStore, BaseEntityTabsStore, BaseFormNavigatorStore } from '@processpuzzle/base-entity';\nimport { ApplicationProperty } from './app-property';\nimport { ApplicationPropertyService } from './app-property.service';\n\nexport const ApplicationPropertyStore = signalStore(\n { providedIn: 'root' },\n BaseEntityStore<ApplicationProperty>(ApplicationProperty, ApplicationPropertyService),\n BaseFormNavigatorStore('ApplicationProperty'),\n BaseEntityTabsStore(),\n BaseEntityContainerStore(),\n);\n","import { Component, inject, output } from '@angular/core';\nimport { RUNTIME_CONFIGURATION } from '@processpuzzle/util';\nimport { provideTranslocoScope, TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { NgClass } from '@angular/common';\nimport { MatListOption, MatSelectionList, MatSelectionListChange } from '@angular/material/list';\nimport { LanguageConfig } from './language-config';\n\n@Component({\n selector: 'pp-language-selector-list',\n template: `\n <ng-container *transloco=\"let t\">\n <div class=\"language-selector\">\n <mat-selection-list #selectionList (selectionChange)=\"onSelectionChange($event)\" [multiple]=\"false\">\n @for (language of languages; track language.code) {\n <mat-list-option\n [value]=\"language.code\"\n [selected]=\"selectedLanguage === language.code\"\n tabindex=\"0\"\n role=\"option\"\n [attr.aria-selected]=\"selectedLanguage === language.code ? 'true' : 'false'\"\n >\n <span [ngClass]=\"language.flag\"> - </span>\n <span class=\"language-label\">{{ t('widgets.' + language.label) }}</span>\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n </ng-container>\n `,\n styleUrls: ['language-selector-list.component.css'],\n imports: [NgClass, TranslocoDirective, MatListOption, MatSelectionList],\n providers: [provideTranslocoScope({ scope: 'widgets' })],\n})\nexport class LanguageSelectorListComponent {\n private readonly translocoService = inject(TranslocoService);\n private readonly runtimeConfiguration = inject(RUNTIME_CONFIGURATION) as { LANGUAGE_CONFIGURATION: LanguageConfig };\n readonly languages = this.runtimeConfiguration.LANGUAGE_CONFIGURATION.AVAILABLE_LANGUAGES;\n languageSelected = output<void>();\n private _selectedLanguage?: string;\n\n constructor() {\n this._selectedLanguage = this.translocoService.getActiveLang();\n }\n\n get selectedLanguage(): string {\n return this._selectedLanguage ?? this.translocoService.getActiveLang();\n }\n\n // region event handling methods\n onSelectionChange(event: MatSelectionListChange) {\n const selectedOption = event.source;\n const selectedValue = selectedOption.selectedOptions.selected[0]?.value;\n\n if (this.selectedLanguage !== selectedValue) {\n this.translocoService.setActiveLang(selectedValue);\n this._selectedLanguage = selectedValue;\n this.languageSelected.emit();\n }\n }\n\n // endregion\n}\n","import { Component } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { LanguageSelectorListComponent } from './language-selector-list.component';\nimport { provideTranslocoScope } from '@jsverse/transloco';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\n\n@Component({\n selector: 'pp-language-selector',\n template: `\n <div class=\"language-selector-container\">\n <button mat-icon-button [matMenuTriggerFor]=\"langMenu\" aria-label=\"Select Language Button\">\n <mat-icon>language</mat-icon>\n </button>\n <mat-menu #langMenu=\"matMenu\">\n <ng-container (click)=\"$event.stopPropagation()\">\n <pp-language-selector-list (languageSelected)=\"langMenu.closed.emit()\" />\n </ng-container>\n </mat-menu>\n </div>\n `,\n styleUrls: ['./language-selector.component.css'],\n imports: [MatIcon, MatIconButton, LanguageSelectorListComponent, MatMenuTrigger, MatMenu],\n providers: [provideTranslocoScope({ scope: 'widgets' })],\n})\nexport class LanguageSelectorComponent {\n // region Event handler methods\n // endregion\n // region protected, private helper methods\n // endregion\n}\n","import { Component, computed, effect, inject } from '@angular/core';\nimport { ApplicationPropertyStore } from '../app-property/app-property.store';\nimport { ApplicationProperty } from '../app-property/app-property';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'pp-like-button',\n template: `\n <div class=\"like-button\">\n <button mat-icon-button (click)=\"onLike()\" aria-label=\"Like Button\">\n <mat-icon>favorite</mat-icon>\n </button>\n <span>{{ likesCount()?.value }}</span>\n </div>\n `,\n styleUrls: ['./like-button.component.css'],\n imports: [MatIcon, MatIconButton],\n})\nexport class LikeButtonComponent {\n private readonly LIKES_PROPERTY = 'likes';\n private readonly snackBar = inject<MatSnackBar>(MatSnackBar);\n likesCount = computed(() => this.store.entities().find((property) => property.name === this.LIKES_PROPERTY));\n readonly store = inject(ApplicationPropertyStore);\n\n constructor() {\n this.configureEffects();\n }\n\n // region event handling methods\n onLike(): void {\n const count = this.likesCount();\n if (count) {\n count.value = (parseInt(count.value, 10) + 1).toString();\n this.store.update(count);\n } else {\n this.store.add(new ApplicationProperty(undefined, this.LIKES_PROPERTY, '1'));\n }\n }\n\n // endregion\n\n // region protected, private helper methods\n private configureEffects() {\n effect(() => {\n const currentError = this.store.error();\n\n if (currentError) {\n this.showErrorMessage(currentError);\n this.store.resetErrorState();\n }\n });\n }\n\n private showErrorMessage(error: string): void {\n this.snackBar.open(error, 'Close', {\n duration: 5000,\n panelClass: ['error-snackbar'],\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Stack } from '@processpuzzle/util';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigateBackService {\n public noRouteAvailable = new BehaviorSubject<string>('');\n private readonly routeHistory = new Stack<string>();\n private readonly router = inject<Router>(Router);\n\n constructor() {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.addRouteToStack(event.urlAfterRedirects); // Add the current route to the stack\n }\n });\n }\n\n // region public accessor methods\n public goBack(): void {\n if (this.routeHistory.size() > 1) {\n this.routeHistory.pop(); // Remove current route\n const previousRoute = this.routeHistory.pop(); // Get the previous route\n if (previousRoute) {\n this.router.navigateByUrl(previousRoute); // Navigate to the previous route\n }\n } else {\n console.log('No previous routes to navigate back to.');\n this.noRouteAvailable.next('No previous routes to navigate back to.');\n }\n }\n\n public getRouteStack(): Stack<string> {\n return this.routeHistory;\n }\n\n public clearHistory(): void {\n this.routeHistory.clear();\n }\n\n // endregion\n\n // protected, private helper methods\n private addRouteToStack(route: string): void {\n if (this.routeHistory.size() === 0 || this.routeHistory.peek() !== route) {\n this.routeHistory.push(route);\n }\n }\n\n // endregion\n}\n","import { Component, inject } from '@angular/core';\nimport { NavigateBackService } from './navigate-back.service';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\n\n@Component({\n selector: 'pp-navigate-back',\n imports: [MatIcon, MatIconButton],\n template: `\n <button mat-icon-button aria-label=\"Go back\" (click)=\"onNavigateBack()\">\n <mat-icon class=\"material-symbols-outlined fat-back-arrow\">arrow_back</mat-icon>\n </button>\n `,\n styles: [\n `\n .fat-back-arrow {\n font-size: 24px; /* Größerer und fetterer Pfeil */\n font-variation-settings: 'wght' 1200; /* Fettigkeitsgrad (700 = fett) */\n color: #000; /* Schwarz als Farbe */\n }\n `,\n ],\n})\nexport class NavigateBackComponent {\n readonly service = inject(NavigateBackService);\n\n // region event handling methods\n onNavigateBack(): void {\n this.service.goBack(); // Call the service to handle navigation\n }\n\n // endregion\n}\n","import { ApplicationProperty } from './app-property';\nimport { BaseEntityMapper } from '@processpuzzle/base-entity';\n\nexport class ApplicationPropertyMapper implements BaseEntityMapper<ApplicationProperty> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fromDto(dto: any): ApplicationProperty {\n return new ApplicationProperty(dto.id, dto.name, dto.value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n toDto(entity: ApplicationProperty): any {\n return { id: entity.id, name: entity.name, value: entity.value };\n }\n}\n","import { ApplicationPropertyStore } from './app-property.store';\nimport { EnvironmentInjector, Provider } from '@angular/core';\nimport { ApplicationPropertyService } from './app-property.service';\nimport { ApplicationPropertyMapper } from './app-property.mapper';\n\nexport function provideAppPropertyStore(): Provider[] {\n return [\n { provide: ApplicationPropertyService, useFactory: () => new ApplicationPropertyService(new ApplicationPropertyMapper()), deps: [EnvironmentInjector] },\n { provide: ApplicationPropertyStore, useFactory: () => new ApplicationPropertyStore(), deps: [ApplicationPropertyService] },\n ];\n}\n","import { Component } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ShareButtons } from 'ngx-sharebuttons/buttons';\n\n@Component({\n selector: 'pp-share-button',\n template: `\n <div>\n <button mat-icon-button (click)=\"onShare()\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" aria-label=\"Share Button\">\n <mat-icon>share</mat-icon>\n </button>\n </div>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\" [cdkConnectedOverlayOpen]=\"isOpen\" [cdkConnectedOverlayHasBackdrop]=\"true\" (backdropClick)=\"onClose()\">\n <div class=\"share-buttons-container\">\n <share-buttons />\n </div>\n </ng-template>\n `,\n styleUrls: ['./share-button.component.css'],\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, MatIcon, MatIconButton, ShareButtons],\n})\nexport class ShareButtonComponent {\n isOpen = false;\n\n // region Event handler methods\n onClose(): void {\n this.isOpen = false;\n }\n\n onShare(): void {\n this.toggleIsOpen();\n }\n\n // endregion\n\n // region protected, private helper methods\n private toggleIsOpen(): void {\n this.isOpen = !this.isOpen;\n }\n\n // endregion\n}\n","import { NgModule } from '@angular/core';\nimport { provideShareButtonsOptions } from 'ngx-sharebuttons';\nimport { shareIcons } from 'ngx-sharebuttons/icons';\n\n@NgModule({\n imports: [],\n declarations: [],\n providers: [provideShareButtonsOptions(shareIcons())],\n})\nexport class ShareButtonModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Translation, TranslocoLoader } from '@jsverse/transloco';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class TranslocoHttpLoader implements TranslocoLoader {\n private readonly http: HttpClient = inject(HttpClient);\n\n getTranslation(lang: string): Observable<Translation> {\n const path = `/assets/i18n/${lang}.json`;\n console.log(`Loading translations from: ${path}`);\n return this.http.get<Translation>(path);\n }\n}\n","import { provideTransloco, TranslocoModule } from '@jsverse/transloco';\nimport { isDevMode, NgModule } from '@angular/core';\nimport { provideShareButtonsOptions } from 'ngx-sharebuttons';\nimport { shareIcons } from 'ngx-sharebuttons/icons';\nimport { TranslocoHttpLoader } from './language-selector/transloco.loader';\n\n@NgModule({\n imports: [TranslocoModule],\n exports: [TranslocoModule],\n providers: [\n provideShareButtonsOptions(shareIcons()),\n // provideI18Configuration(),\n provideTransloco({\n config: {\n availableLangs: ['de', 'en', 'es', 'fr', 'hu'],\n defaultLang: 'en',\n fallbackLang: ['en'],\n reRenderOnLangChange: true,\n prodMode: !isDevMode(),\n },\n loader: TranslocoHttpLoader,\n }),\n ],\n})\nexport class WidgetsModule {}\n","import { Routes } from '@angular/router';\nimport { LanguageSelectorComponent } from './language-selector/language-selector.component';\nimport { provideTranslocoScope } from '@jsverse/transloco';\n\nexport const widgetsRoutes: Routes = [{ path: 'anything', component: LanguageSelectorComponent, providers: [provideTranslocoScope('widgets')] }];\n","/*\n * Public API Surface of @processpuzzle/widgets\n */\n\nexport { ApplicationProperty } from './app-property/app-property';\nexport { ApplicationPropertyStore } from './app-property/app-property.store';\nexport type { LanguageConfig, LanguageDefinition } from './language-selector/language-config';\nexport { LanguageSelectorComponent } from './language-selector/language-selector.component';\nexport { LikeButtonComponent } from './like-button/like-button.component';\nexport { NavigateBackComponent } from './navigate-back/navigate-back.component';\nexport { NavigateBackService } from './navigate-back/navigate-back.service';\nexport { provideAppPropertyStore } from './app-property/app-property-store.provider';\nexport { ShareButtonComponent } from './share-button/share-button.component';\nexport { ShareButtonModule } from './share-button/share-button.module';\nexport { TranslocoHttpLoader } from './language-selector/transloco.loader';\nexport { WidgetsModule } from './widgets.module';\nexport { widgetsRoutes } from './widgets.routes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"processpuzzle-widgets.mjs","sources":["../../../../libs/widgets/src/app-property/app-property.ts","../../../../libs/widgets/src/app-property/app-property.service.ts","../../../../libs/widgets/src/app-property/app-property.store.ts","../../../../libs/widgets/src/language-selector/language-selector-list.component.ts","../../../../libs/widgets/src/language-selector/language-selector.component.ts","../../../../libs/widgets/src/like-button/like-button.component.ts","../../../../libs/widgets/src/markdown-page/markdown-page.component.ts","../../../../libs/widgets/src/mat-cards-grid/mat-cards-grid.component.ts","../../../../libs/widgets/src/navigate-back/navigate-back.service.ts","../../../../libs/widgets/src/navigate-back/navigate-back.component.ts","../../../../libs/widgets/src/app-property/app-property.mapper.ts","../../../../libs/widgets/src/app-property/app-property-store.provider.ts","../../../../libs/widgets/src/share-button/share-button.component.ts","../../../../libs/widgets/src/share-button/share-button.module.ts","../../../../libs/widgets/src/language-selector/transloco.loader.ts","../../../../libs/widgets/src/widgets.module.ts","../../../../libs/widgets/src/widgets.routes.ts","../../../../libs/widgets/src/public-api.ts","../../../../libs/widgets/src/processpuzzle-widgets.ts"],"sourcesContent":["import { BaseEntity } from '@processpuzzle/base-entity';\nimport { v4 as uuidv4 } from 'uuid';\n\nexport class ApplicationProperty implements BaseEntity {\n readonly id: string;\n private readonly propertyName: string;\n private propertyValue: string;\n\n constructor(id?: string, name?: string, value?: string) {\n this.id = id ?? uuidv4();\n this.propertyName = name ?? '';\n this.propertyValue = value ?? '';\n }\n\n // region properties\n public get name() {\n return this.propertyName;\n }\n\n public get value() {\n return this.propertyValue;\n }\n\n public set value(newValue: string) {\n this.propertyValue = newValue;\n }\n\n // endregion\n}\n","import { ApplicationProperty } from './app-property';\nimport { BaseEntityFirestoreService } from '@processpuzzle/base-entity';\nimport { ApplicationPropertyMapper } from './app-property.mapper';\n\nexport class ApplicationPropertyService extends BaseEntityFirestoreService<ApplicationProperty> {\n constructor(protected override entityMapper: ApplicationPropertyMapper) {\n super(entityMapper, 'application-properties');\n }\n}\n","import { signalStore } from '@ngrx/signals';\nimport { BaseEntityContainerStore, BaseEntityStore, BaseEntityTabsStore, BaseFormNavigatorStore } from '@processpuzzle/base-entity';\nimport { ApplicationProperty } from './app-property';\nimport { ApplicationPropertyService } from './app-property.service';\n\nexport const ApplicationPropertyStore = signalStore(\n { providedIn: 'root' },\n BaseEntityStore<ApplicationProperty>(ApplicationProperty, ApplicationPropertyService),\n BaseFormNavigatorStore('ApplicationProperty'),\n BaseEntityTabsStore(),\n BaseEntityContainerStore(),\n);\n","import { Component, inject, output } from '@angular/core';\nimport { RUNTIME_CONFIGURATION } from '@processpuzzle/util';\nimport { provideTranslocoScope, TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { NgClass } from '@angular/common';\nimport { MatListOption, MatSelectionList, MatSelectionListChange } from '@angular/material/list';\nimport { LanguageConfig } from './language-config';\n\n@Component({\n selector: 'pp-language-selector-list',\n template: `\n <ng-container *transloco=\"let t\">\n <div class=\"language-selector\">\n <mat-selection-list #selectionList (selectionChange)=\"onSelectionChange($event)\" [multiple]=\"false\">\n @for (language of languages; track language.code) {\n <mat-list-option\n [value]=\"language.code\"\n [selected]=\"selectedLanguage === language.code\"\n tabindex=\"0\"\n role=\"option\"\n [attr.aria-selected]=\"selectedLanguage === language.code ? 'true' : 'false'\"\n >\n <span [ngClass]=\"language.flag\"> - </span>\n <span class=\"language-label\">{{ t('widgets.' + language.label) }}</span>\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n </ng-container>\n `,\n styleUrls: ['language-selector-list.component.css'],\n imports: [NgClass, TranslocoDirective, MatListOption, MatSelectionList],\n providers: [provideTranslocoScope({ scope: 'widgets' })],\n})\nexport class LanguageSelectorListComponent {\n private readonly translocoService = inject(TranslocoService);\n private readonly runtimeConfiguration = inject(RUNTIME_CONFIGURATION) as { LANGUAGE_CONFIGURATION: LanguageConfig };\n readonly languages = this.runtimeConfiguration.LANGUAGE_CONFIGURATION.AVAILABLE_LANGUAGES;\n languageSelected = output<void>();\n private _selectedLanguage?: string;\n\n constructor() {\n this._selectedLanguage = this.translocoService.getActiveLang();\n }\n\n get selectedLanguage(): string {\n return this._selectedLanguage ?? this.translocoService.getActiveLang();\n }\n\n // region event handling methods\n onSelectionChange(event: MatSelectionListChange) {\n const selectedOption = event.source;\n const selectedValue = selectedOption.selectedOptions.selected[0]?.value;\n\n if (this.selectedLanguage !== selectedValue) {\n this.translocoService.setActiveLang(selectedValue);\n this._selectedLanguage = selectedValue;\n this.languageSelected.emit();\n }\n }\n\n // endregion\n}\n","import { Component } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { LanguageSelectorListComponent } from './language-selector-list.component';\nimport { provideTranslocoScope } from '@jsverse/transloco';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\n\n@Component({\n selector: 'pp-language-selector',\n template: `\n <div class=\"language-selector-container\">\n <button mat-icon-button [matMenuTriggerFor]=\"langMenu\" aria-label=\"Select Language Button\">\n <mat-icon>language</mat-icon>\n </button>\n <mat-menu #langMenu=\"matMenu\">\n <ng-container (click)=\"$event.stopPropagation()\">\n <pp-language-selector-list (languageSelected)=\"langMenu.closed.emit()\" />\n </ng-container>\n </mat-menu>\n </div>\n `,\n styleUrls: ['./language-selector.component.css'],\n imports: [MatIcon, MatIconButton, LanguageSelectorListComponent, MatMenuTrigger, MatMenu],\n providers: [provideTranslocoScope({ scope: 'widgets' })],\n})\nexport class LanguageSelectorComponent {\n // region Event handler methods\n // endregion\n // region protected, private helper methods\n // endregion\n}\n","import { Component, computed, effect, inject } from '@angular/core';\nimport { ApplicationPropertyStore } from '../app-property/app-property.store';\nimport { ApplicationProperty } from '../app-property/app-property';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'pp-like-button',\n template: `\n <div class=\"like-button\">\n <button mat-icon-button (click)=\"onLike()\" aria-label=\"Like Button\">\n <mat-icon>favorite</mat-icon>\n </button>\n <span>{{ likesCount()?.value }}</span>\n </div>\n `,\n styleUrls: ['./like-button.component.css'],\n imports: [MatIcon, MatIconButton],\n})\nexport class LikeButtonComponent {\n private readonly LIKES_PROPERTY = 'likes';\n private readonly snackBar = inject<MatSnackBar>(MatSnackBar);\n likesCount = computed(() => this.store.entities().find((property) => property.name === this.LIKES_PROPERTY));\n readonly store = inject(ApplicationPropertyStore);\n\n constructor() {\n this.configureEffects();\n }\n\n // region event handling methods\n onLike(): void {\n const count = this.likesCount();\n if (count) {\n count.value = (parseInt(count.value, 10) + 1).toString();\n this.store.update(count);\n } else {\n this.store.add(new ApplicationProperty(undefined, this.LIKES_PROPERTY, '1'));\n }\n }\n\n // endregion\n\n // region protected, private helper methods\n private configureEffects() {\n effect(() => {\n const currentError = this.store.error();\n\n if (currentError) {\n this.showErrorMessage(currentError);\n this.store.resetErrorState();\n }\n });\n }\n\n private showErrorMessage(error: string): void {\n this.snackBar.open(error, 'Close', {\n duration: 5000,\n panelClass: ['error-snackbar'],\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MarkdownComponent } from 'ngx-markdown';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'pp-markdown-page',\n imports: [CommonModule, MarkdownComponent],\n template: ` <markdown [src]=\"src()\" (load)=\"onLoad($event)\" (error)=\"onError($event)\"></markdown> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MarkdownPageComponent {\n private snackBar = inject(MatSnackBar);\n markdownSrcInput = input<string>('');\n markdownSrc = input<string>();\n src = computed(() => this.markdownSrcInput() || this.markdownSrc() || '');\n\n // region event handling methods\n onLoad($event: string) {\n // TODO: find out the use of this event\n }\n\n onError($event: string | Error) {\n const message = typeof $event === 'string' ? $event : $event.message;\n this.snackBar.open(`Error loading markdown: ${message}`, 'Close', {\n duration: 5000,\n horizontalPosition: 'center',\n verticalPosition: 'bottom',\n });\n }\n // endregion\n}\n","import { Component, inject, Input } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NgClass } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { CardsGridSpec } from './cards-spec';\nimport { LayoutService } from '@processpuzzle/util';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'mat-cards-grid',\n standalone: true,\n imports: [MatCardModule, MatButtonModule, RouterLink, TranslocoDirective, NgClass, MatIcon],\n template: `\n <div [ngClass]=\"layoutService.layoutClass()\">\n @for (card of cards; track $index) {\n <ng-container *transloco=\"let t; prefix: card.translocoPrefix\">\n <mat-card class=\"default-mat-card\">\n <mat-card-header>\n @if (hasValue(card.title)) {\n <mat-card-title>{{ t(card.title) }}</mat-card-title>\n }\n @if (hasValue(card.subtitle)) {\n <mat-card-subtitle>{{ t(card.subtitle) }}</mat-card-subtitle>\n }\n @if (card.icon) {\n <span class=\"toolbar-spacer\"></span>\n <button mat-icon-button>\n <mat-icon class=\"icon-large material-symbols-outlined\">{{ card.icon }}</mat-icon>\n </button>\n }\n </mat-card-header>\n @if (hasValue(card.content)) {\n <mat-card-content>\n <div>\n {{ t(card.content[0]) }}\n @if (card.content.length > 1) {\n <ul>\n @for (item of card.content.slice(1); track $index) {\n <li>{{ t(item) }}</li>\n }\n </ul>\n }\n </div>\n </mat-card-content>\n }\n @if (card.actions && card.actions.length > 0) {\n <mat-card-actions>\n @for (action of card.actions; track $index) {\n <ng-container>\n <button [matButton]=\"action.buttonType ?? 'elevated'\" [routerLink]=\"action.link\">{{ t(action.caption) }}</button>\n </ng-container>\n }\n </mat-card-actions>\n }\n </mat-card>\n </ng-container>\n }\n </div>\n `,\n styleUrls: ['./mat-cards-grid.component.css'],\n})\nexport class MatCardsGridComponent {\n @Input() cards: CardsGridSpec[] = [];\n readonly layoutService = inject(LayoutService);\n\n hasValue(textValue: string | Array<string>) {\n return textValue.length > 0;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Stack } from '@processpuzzle/util';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigateBackService {\n public noRouteAvailable = new BehaviorSubject<string>('');\n private readonly routeHistory = new Stack<string>();\n private readonly router = inject<Router>(Router);\n\n constructor() {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.addRouteToStack(event.urlAfterRedirects); // Add the current route to the stack\n }\n });\n }\n\n // region public accessor methods\n public goBack(): void {\n if (this.routeHistory.size() > 1) {\n this.routeHistory.pop(); // Remove current route\n const previousRoute = this.routeHistory.pop(); // Get the previous route\n if (previousRoute) {\n this.router.navigateByUrl(previousRoute); // Navigate to the previous route\n }\n } else {\n console.log('No previous routes to navigate back to.');\n this.noRouteAvailable.next('No previous routes to navigate back to.');\n }\n }\n\n public getRouteStack(): Stack<string> {\n return this.routeHistory;\n }\n\n public clearHistory(): void {\n this.routeHistory.clear();\n }\n\n // endregion\n\n // protected, private helper methods\n private addRouteToStack(route: string): void {\n if (this.routeHistory.size() === 0 || this.routeHistory.peek() !== route) {\n this.routeHistory.push(route);\n }\n }\n\n // endregion\n}\n","import { Component, inject } from '@angular/core';\nimport { NavigateBackService } from './navigate-back.service';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\n\n@Component({\n selector: 'pp-navigate-back',\n imports: [MatIcon, MatIconButton],\n template: `\n <button mat-icon-button aria-label=\"Go back\" (click)=\"onNavigateBack()\">\n <mat-icon class=\"material-symbols-outlined fat-back-arrow\">arrow_back</mat-icon>\n </button>\n `,\n styles: [\n `\n .fat-back-arrow {\n font-size: 24px; /* Größerer und fetterer Pfeil */\n font-variation-settings: 'wght' 1200; /* Fettigkeitsgrad (700 = fett) */\n color: #000; /* Schwarz als Farbe */\n }\n `,\n ],\n})\nexport class NavigateBackComponent {\n readonly service = inject(NavigateBackService);\n\n // region event handling methods\n onNavigateBack(): void {\n this.service.goBack(); // Call the service to handle navigation\n }\n\n // endregion\n}\n","import { ApplicationProperty } from './app-property';\nimport { BaseEntityMapper } from '@processpuzzle/base-entity';\n\nexport class ApplicationPropertyMapper implements BaseEntityMapper<ApplicationProperty> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fromDto(dto: any): ApplicationProperty {\n return new ApplicationProperty(dto.id, dto.name, dto.value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n toDto(entity: ApplicationProperty): any {\n return { id: entity.id, name: entity.name, value: entity.value };\n }\n}\n","import { ApplicationPropertyStore } from './app-property.store';\nimport { EnvironmentInjector, Provider } from '@angular/core';\nimport { ApplicationPropertyService } from './app-property.service';\nimport { ApplicationPropertyMapper } from './app-property.mapper';\n\nexport function provideAppPropertyStore(): Provider[] {\n return [\n { provide: ApplicationPropertyService, useFactory: () => new ApplicationPropertyService(new ApplicationPropertyMapper()), deps: [EnvironmentInjector] },\n { provide: ApplicationPropertyStore, useFactory: () => new ApplicationPropertyStore(), deps: [ApplicationPropertyService] },\n ];\n}\n","import { Component } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ShareButtons } from 'ngx-sharebuttons/buttons';\n\n@Component({\n selector: 'pp-share-button',\n template: `\n <div>\n <button mat-icon-button (click)=\"onShare()\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" aria-label=\"Share Button\">\n <mat-icon>share</mat-icon>\n </button>\n </div>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\" [cdkConnectedOverlayOpen]=\"isOpen\" [cdkConnectedOverlayHasBackdrop]=\"true\" (backdropClick)=\"onClose()\">\n <div class=\"share-buttons-container\">\n <share-buttons />\n </div>\n </ng-template>\n `,\n styleUrls: ['./share-button.component.css'],\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, MatIcon, MatIconButton, ShareButtons],\n})\nexport class ShareButtonComponent {\n isOpen = false;\n\n // region Event handler methods\n onClose(): void {\n this.isOpen = false;\n }\n\n onShare(): void {\n this.toggleIsOpen();\n }\n\n // endregion\n\n // region protected, private helper methods\n private toggleIsOpen(): void {\n this.isOpen = !this.isOpen;\n }\n\n // endregion\n}\n","import { NgModule } from '@angular/core';\nimport { provideShareButtonsOptions } from 'ngx-sharebuttons';\nimport { shareIcons } from 'ngx-sharebuttons/icons';\n\n@NgModule({\n imports: [],\n declarations: [],\n providers: [provideShareButtonsOptions(shareIcons())],\n})\nexport class ShareButtonModule {}\n","import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Translation, TranslocoLoader } from '@jsverse/transloco';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class TranslocoHttpLoader implements TranslocoLoader {\n private readonly http: HttpClient = inject(HttpClient);\n\n getTranslation(lang: string): Observable<Translation> {\n const path = `/assets/i18n/${lang}.json`;\n console.log(`Loading translations from: ${path}`);\n return this.http.get<Translation>(path);\n }\n}\n","import { provideTransloco, TranslocoModule } from '@jsverse/transloco';\nimport { isDevMode, NgModule } from '@angular/core';\nimport { provideShareButtonsOptions } from 'ngx-sharebuttons';\nimport { shareIcons } from 'ngx-sharebuttons/icons';\nimport { TranslocoHttpLoader } from './language-selector/transloco.loader';\n\n@NgModule({\n imports: [TranslocoModule],\n exports: [TranslocoModule],\n providers: [\n provideShareButtonsOptions(shareIcons()),\n // provideI18Configuration(),\n provideTransloco({\n config: {\n availableLangs: ['de', 'en', 'es', 'fr', 'hu'],\n defaultLang: 'en',\n fallbackLang: ['en'],\n reRenderOnLangChange: true,\n prodMode: !isDevMode(),\n },\n loader: TranslocoHttpLoader,\n }),\n ],\n})\nexport class WidgetsModule {}\n","import { Routes } from '@angular/router';\nimport { LanguageSelectorComponent } from './language-selector/language-selector.component';\nimport { provideTranslocoScope } from '@jsverse/transloco';\n\nexport const widgetsRoutes: Routes = [{ path: 'anything', component: LanguageSelectorComponent, providers: [provideTranslocoScope('widgets')] }];\n","/*\n * Public API Surface of @processpuzzle/widgets\n */\n\nexport { ApplicationProperty } from './app-property/app-property';\nexport { ApplicationPropertyStore } from './app-property/app-property.store';\nexport { CardsGridSpec } from './mat-cards-grid/cards-spec';\nexport type { LanguageConfig, LanguageDefinition } from './language-selector/language-config';\nexport { LanguageSelectorComponent } from './language-selector/language-selector.component';\nexport { LikeButtonComponent } from './like-button/like-button.component';\nexport { MarkdownPageComponent } from './markdown-page/markdown-page.component';\nexport { MatCardsGridComponent } from './mat-cards-grid/mat-cards-grid.component';\nexport { NavigateBackComponent } from './navigate-back/navigate-back.component';\nexport { NavigateBackService } from './navigate-back/navigate-back.service';\nexport { provideAppPropertyStore } from './app-property/app-property-store.provider';\nexport { ShareButtonComponent } from './share-button/share-button.component';\nexport { ShareButtonModule } from './share-button/share-button.module';\nexport { TranslocoHttpLoader } from './language-selector/transloco.loader';\nexport { WidgetsModule } from './widgets.module';\nexport { widgetsRoutes } from './widgets.routes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@processpuzzle/widgets",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -43,10 +43,6 @@
|
|
|
43
43
|
".": {
|
|
44
44
|
"types": "./types/processpuzzle-widgets.d.ts",
|
|
45
45
|
"default": "./fesm2022/processpuzzle-widgets.mjs"
|
|
46
|
-
},
|
|
47
|
-
"./mat-cards-grid": {
|
|
48
|
-
"types": "./types/processpuzzle-widgets-mat-cards-grid.d.ts",
|
|
49
|
-
"default": "./fesm2022/processpuzzle-widgets-mat-cards-grid.mjs"
|
|
50
46
|
}
|
|
51
47
|
}
|
|
52
48
|
}
|
|
@@ -6,8 +6,9 @@ import * as _angular_material_table from '@angular/material/table';
|
|
|
6
6
|
import * as _angular_material_paginator from '@angular/material/paginator';
|
|
7
7
|
import * as _angular_core from '@angular/core';
|
|
8
8
|
import { Provider } from '@angular/core';
|
|
9
|
+
import { MatButtonAppearance } from '@angular/material/button';
|
|
9
10
|
import * as dist_libs_base_entity_types_processpuzzle_base_entity from 'dist/libs/base-entity/types/processpuzzle-base-entity';
|
|
10
|
-
import { Stack } from '@processpuzzle/util';
|
|
11
|
+
import { LayoutService, Stack } from '@processpuzzle/util';
|
|
11
12
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
12
13
|
import * as i1 from '@jsverse/transloco';
|
|
13
14
|
import { TranslocoLoader, Translation } from '@jsverse/transloco';
|
|
@@ -87,6 +88,22 @@ declare const ApplicationPropertyStore: _angular_core.Type<{
|
|
|
87
88
|
filterKey: string | undefined;
|
|
88
89
|
}>>;
|
|
89
90
|
|
|
91
|
+
interface ActionSpec {
|
|
92
|
+
link: string;
|
|
93
|
+
caption: string;
|
|
94
|
+
colour?: string;
|
|
95
|
+
buttonType?: MatButtonAppearance;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
interface CardsGridSpec {
|
|
99
|
+
icon?: string;
|
|
100
|
+
title: string;
|
|
101
|
+
subtitle: string;
|
|
102
|
+
content: Array<string>;
|
|
103
|
+
actions: Array<ActionSpec>;
|
|
104
|
+
translocoPrefix: string;
|
|
105
|
+
}
|
|
106
|
+
|
|
90
107
|
interface LanguageDefinition {
|
|
91
108
|
code: string;
|
|
92
109
|
label: string;
|
|
@@ -177,6 +194,25 @@ declare class LikeButtonComponent {
|
|
|
177
194
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LikeButtonComponent, "pp-like-button", never, {}, {}, never, never, true, never>;
|
|
178
195
|
}
|
|
179
196
|
|
|
197
|
+
declare class MarkdownPageComponent {
|
|
198
|
+
private snackBar;
|
|
199
|
+
markdownSrcInput: _angular_core.InputSignal<string>;
|
|
200
|
+
markdownSrc: _angular_core.InputSignal<string | undefined>;
|
|
201
|
+
src: _angular_core.Signal<string>;
|
|
202
|
+
onLoad($event: string): void;
|
|
203
|
+
onError($event: string | Error): void;
|
|
204
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MarkdownPageComponent, never>;
|
|
205
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MarkdownPageComponent, "pp-markdown-page", never, { "markdownSrcInput": { "alias": "markdownSrcInput"; "required": false; "isSignal": true; }; "markdownSrc": { "alias": "markdownSrc"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
declare class MatCardsGridComponent {
|
|
209
|
+
cards: CardsGridSpec[];
|
|
210
|
+
readonly layoutService: LayoutService;
|
|
211
|
+
hasValue(textValue: string | Array<string>): boolean;
|
|
212
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MatCardsGridComponent, never>;
|
|
213
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MatCardsGridComponent, "mat-cards-grid", never, { "cards": { "alias": "cards"; "required": false; }; }, {}, never, never, true, never>;
|
|
214
|
+
}
|
|
215
|
+
|
|
180
216
|
declare class NavigateBackService {
|
|
181
217
|
noRouteAvailable: BehaviorSubject<string>;
|
|
182
218
|
private readonly routeHistory;
|
|
@@ -229,5 +265,5 @@ declare class WidgetsModule {
|
|
|
229
265
|
|
|
230
266
|
declare const widgetsRoutes: Routes;
|
|
231
267
|
|
|
232
|
-
export { ApplicationProperty, ApplicationPropertyStore, LanguageSelectorComponent, LikeButtonComponent, NavigateBackComponent, NavigateBackService, ShareButtonComponent, ShareButtonModule, TranslocoHttpLoader, WidgetsModule, provideAppPropertyStore, widgetsRoutes };
|
|
233
|
-
export type { LanguageConfig, LanguageDefinition };
|
|
268
|
+
export { ApplicationProperty, ApplicationPropertyStore, LanguageSelectorComponent, LikeButtonComponent, MarkdownPageComponent, MatCardsGridComponent, NavigateBackComponent, NavigateBackService, ShareButtonComponent, ShareButtonModule, TranslocoHttpLoader, WidgetsModule, provideAppPropertyStore, widgetsRoutes };
|
|
269
|
+
export type { CardsGridSpec, LanguageConfig, LanguageDefinition };
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Input, Component } from '@angular/core';
|
|
3
|
-
import * as i1 from '@angular/material/card';
|
|
4
|
-
import { MatCardModule } from '@angular/material/card';
|
|
5
|
-
import * as i2 from '@angular/material/button';
|
|
6
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
-
import { NgClass } from '@angular/common';
|
|
8
|
-
import { RouterLink } from '@angular/router';
|
|
9
|
-
import { TranslocoDirective } from '@jsverse/transloco';
|
|
10
|
-
import { LayoutService } from '@processpuzzle/util';
|
|
11
|
-
|
|
12
|
-
class MatCardsGridComponent {
|
|
13
|
-
cards = [];
|
|
14
|
-
layoutService = inject(LayoutService);
|
|
15
|
-
hasValue(textValue) {
|
|
16
|
-
return textValue.length > 0;
|
|
17
|
-
}
|
|
18
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MatCardsGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: MatCardsGridComponent, isStandalone: true, selector: "mat-cards-grid", inputs: { cards: "cards" }, ngImport: i0, template: `
|
|
20
|
-
<div [ngClass]="layoutService.layoutClass()">
|
|
21
|
-
@for (card of cards; track $index) {
|
|
22
|
-
<ng-container *transloco="let t; prefix: card.translocoPrefix">
|
|
23
|
-
<mat-card class="default-mat-card">
|
|
24
|
-
<mat-card-header>
|
|
25
|
-
@if (hasValue(card.title)) {
|
|
26
|
-
<mat-card-title>{{ t(card.title) }}</mat-card-title>
|
|
27
|
-
}
|
|
28
|
-
@if (hasValue(card.subtitle)) {
|
|
29
|
-
<mat-card-subtitle>{{ t(card.subtitle) }}</mat-card-subtitle>
|
|
30
|
-
}
|
|
31
|
-
</mat-card-header>
|
|
32
|
-
@if (hasValue(card.content)) {
|
|
33
|
-
<mat-card-content>
|
|
34
|
-
<div>
|
|
35
|
-
{{ t(card.content[0]) }}
|
|
36
|
-
@if (card.content.length > 1) {
|
|
37
|
-
<ul>
|
|
38
|
-
@for (item of card.content.slice(1); track $index) {
|
|
39
|
-
<li>{{ t(item) }}</li>
|
|
40
|
-
}
|
|
41
|
-
</ul>
|
|
42
|
-
}
|
|
43
|
-
</div>
|
|
44
|
-
</mat-card-content>
|
|
45
|
-
}
|
|
46
|
-
@if (card.actions && card.actions.length > 0) {
|
|
47
|
-
<mat-card-actions>
|
|
48
|
-
@for (action of card.actions; track $index) {
|
|
49
|
-
<ng-container>
|
|
50
|
-
<button [matButton]="action.buttonType ?? 'elevated'" [routerLink]="action.link">{{ t(action.caption) }}</button>
|
|
51
|
-
</ng-container>
|
|
52
|
-
}
|
|
53
|
-
</mat-card-actions>
|
|
54
|
-
}
|
|
55
|
-
</mat-card>
|
|
56
|
-
</ng-container>
|
|
57
|
-
}
|
|
58
|
-
</div>
|
|
59
|
-
`, isInline: true, styles: [".web-layout{display:grid;grid-template-columns:repeat(3,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.tablet-layout{display:grid;grid-template-columns:repeat(2,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.handset-layout{display:grid;grid-template-columns:repeat(1,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.default-mat-card{display:flex;flex-direction:column;background-color:#99d9eb}mat-card-title{font-family:Winky Sans,sans-serif}mat-card-content{flex-grow:1;overflow:auto;font-family:cursive;font-size:medium;text-align:left;padding-bottom:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
60
|
-
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: MatCardsGridComponent, decorators: [{
|
|
62
|
-
type: Component,
|
|
63
|
-
args: [{ selector: 'mat-cards-grid', standalone: true, imports: [MatCardModule, MatButtonModule, RouterLink, TranslocoDirective, NgClass], template: `
|
|
64
|
-
<div [ngClass]="layoutService.layoutClass()">
|
|
65
|
-
@for (card of cards; track $index) {
|
|
66
|
-
<ng-container *transloco="let t; prefix: card.translocoPrefix">
|
|
67
|
-
<mat-card class="default-mat-card">
|
|
68
|
-
<mat-card-header>
|
|
69
|
-
@if (hasValue(card.title)) {
|
|
70
|
-
<mat-card-title>{{ t(card.title) }}</mat-card-title>
|
|
71
|
-
}
|
|
72
|
-
@if (hasValue(card.subtitle)) {
|
|
73
|
-
<mat-card-subtitle>{{ t(card.subtitle) }}</mat-card-subtitle>
|
|
74
|
-
}
|
|
75
|
-
</mat-card-header>
|
|
76
|
-
@if (hasValue(card.content)) {
|
|
77
|
-
<mat-card-content>
|
|
78
|
-
<div>
|
|
79
|
-
{{ t(card.content[0]) }}
|
|
80
|
-
@if (card.content.length > 1) {
|
|
81
|
-
<ul>
|
|
82
|
-
@for (item of card.content.slice(1); track $index) {
|
|
83
|
-
<li>{{ t(item) }}</li>
|
|
84
|
-
}
|
|
85
|
-
</ul>
|
|
86
|
-
}
|
|
87
|
-
</div>
|
|
88
|
-
</mat-card-content>
|
|
89
|
-
}
|
|
90
|
-
@if (card.actions && card.actions.length > 0) {
|
|
91
|
-
<mat-card-actions>
|
|
92
|
-
@for (action of card.actions; track $index) {
|
|
93
|
-
<ng-container>
|
|
94
|
-
<button [matButton]="action.buttonType ?? 'elevated'" [routerLink]="action.link">{{ t(action.caption) }}</button>
|
|
95
|
-
</ng-container>
|
|
96
|
-
}
|
|
97
|
-
</mat-card-actions>
|
|
98
|
-
}
|
|
99
|
-
</mat-card>
|
|
100
|
-
</ng-container>
|
|
101
|
-
}
|
|
102
|
-
</div>
|
|
103
|
-
`, styles: [".web-layout{display:grid;grid-template-columns:repeat(3,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.tablet-layout{display:grid;grid-template-columns:repeat(2,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.handset-layout{display:grid;grid-template-columns:repeat(1,minmax(min(200px,100%),1fr));column-gap:10px;row-gap:10px}.default-mat-card{display:flex;flex-direction:column;background-color:#99d9eb}mat-card-title{font-family:Winky Sans,sans-serif}mat-card-content{flex-grow:1;overflow:auto;font-family:cursive;font-size:medium;text-align:left;padding-bottom:10px}\n"] }]
|
|
104
|
-
}], propDecorators: { cards: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}] } });
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Generated bundle index. Do not edit.
|
|
110
|
-
*/
|
|
111
|
-
|
|
112
|
-
export { MatCardsGridComponent };
|
|
113
|
-
//# sourceMappingURL=processpuzzle-widgets-mat-cards-grid.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"processpuzzle-widgets-mat-cards-grid.mjs","sources":["../../../../libs/widgets/mat-cards-grid/src/mat-cards-grid.component.ts","../../../../libs/widgets/mat-cards-grid/processpuzzle-widgets-mat-cards-grid.ts"],"sourcesContent":["import { Component, inject, Input } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NgClass } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { CardsGridSpec } from './cards-spec';\nimport { LayoutService } from '@processpuzzle/util';\n\n@Component({\n selector: 'mat-cards-grid',\n standalone: true,\n imports: [MatCardModule, MatButtonModule, RouterLink, TranslocoDirective, NgClass],\n template: `\n <div [ngClass]=\"layoutService.layoutClass()\">\n @for (card of cards; track $index) {\n <ng-container *transloco=\"let t; prefix: card.translocoPrefix\">\n <mat-card class=\"default-mat-card\">\n <mat-card-header>\n @if (hasValue(card.title)) {\n <mat-card-title>{{ t(card.title) }}</mat-card-title>\n }\n @if (hasValue(card.subtitle)) {\n <mat-card-subtitle>{{ t(card.subtitle) }}</mat-card-subtitle>\n }\n </mat-card-header>\n @if (hasValue(card.content)) {\n <mat-card-content>\n <div>\n {{ t(card.content[0]) }}\n @if (card.content.length > 1) {\n <ul>\n @for (item of card.content.slice(1); track $index) {\n <li>{{ t(item) }}</li>\n }\n </ul>\n }\n </div>\n </mat-card-content>\n }\n @if (card.actions && card.actions.length > 0) {\n <mat-card-actions>\n @for (action of card.actions; track $index) {\n <ng-container>\n <button [matButton]=\"action.buttonType ?? 'elevated'\" [routerLink]=\"action.link\">{{ t(action.caption) }}</button>\n </ng-container>\n }\n </mat-card-actions>\n }\n </mat-card>\n </ng-container>\n }\n </div>\n `,\n styleUrls: ['./mat-cards-grid.component.css'],\n})\nexport class MatCardsGridComponent {\n @Input() cards: CardsGridSpec[] = [];\n readonly layoutService = inject(LayoutService);\n\n hasValue(textValue: string | Array<string>) {\n return textValue.length > 0;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;MAwDa,qBAAqB,CAAA;IACvB,KAAK,GAAoB,EAAE;AAC3B,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAE9C,IAAA,QAAQ,CAAC,SAAiC,EAAA;AACxC,QAAA,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC;IAC7B;uGANW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3CtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,olBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAzCS,aAAa,yoBAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,gMAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FA4CtE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA/CjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAA,QAAA,EACxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,olBAAA,CAAA,EAAA;;sBAIA;;;ACzDH;;AAEG;;;;"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { MatButtonAppearance } from '@angular/material/button';
|
|
2
|
-
import { LayoutService } from '@processpuzzle/util';
|
|
3
|
-
import * as i0 from '@angular/core';
|
|
4
|
-
|
|
5
|
-
interface ActionSpec {
|
|
6
|
-
link: string;
|
|
7
|
-
caption: string;
|
|
8
|
-
colour?: string;
|
|
9
|
-
buttonType?: MatButtonAppearance;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
interface CardsGridSpec {
|
|
13
|
-
title: string;
|
|
14
|
-
subtitle: string;
|
|
15
|
-
content: Array<string>;
|
|
16
|
-
actions: Array<ActionSpec>;
|
|
17
|
-
translocoPrefix: string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
declare class MatCardsGridComponent {
|
|
21
|
-
cards: CardsGridSpec[];
|
|
22
|
-
readonly layoutService: LayoutService;
|
|
23
|
-
hasValue(textValue: string | Array<string>): boolean;
|
|
24
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MatCardsGridComponent, never>;
|
|
25
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MatCardsGridComponent, "mat-cards-grid", never, { "cards": { "alias": "cards"; "required": false; }; }, {}, never, never, true, never>;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export { MatCardsGridComponent };
|
|
29
|
-
export type { ActionSpec, CardsGridSpec };
|