@myrmidon/cadmus-part-epigraphy-formula-patterns 10.0.0 → 12.0.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/fesm2022/myrmidon-cadmus-part-epigraphy-formula-patterns.mjs +61 -63
- package/fesm2022/myrmidon-cadmus-part-epigraphy-formula-patterns.mjs.map +1 -1
- package/index.d.ts +240 -3
- package/package.json +9 -8
- package/lib/epi-formula-pattern/epi-formula-pattern.component.d.ts +0 -40
- package/lib/epi-formula-patterns-part/epi-formula-patterns-part.component.d.ts +0 -38
- package/lib/epi-formula-patterns-part-feature/epi-formula-patterns-part-feature.component.d.ts +0 -12
- package/lib/epi-formula-patterns-part.d.ts +0 -118
- package/lib/epi-formula-token/epi-formula-token.component.d.ts +0 -33
- package/lib/epi-formula-token.pipe.d.ts +0 -8
- package/public-api.d.ts +0 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { model, input, output, effect, Component, Pipe } from '@angular/core';
|
|
2
|
+
import { model, input, output, effect, Component, Pipe, signal } from '@angular/core';
|
|
3
3
|
import { TitleCasePipe } from '@angular/common';
|
|
4
4
|
import * as i1 from '@angular/forms';
|
|
5
5
|
import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
@@ -9,7 +9,7 @@ import { MatIcon } from '@angular/material/icon';
|
|
|
9
9
|
import { MatIconButton, MatButton } from '@angular/material/button';
|
|
10
10
|
import { MatTooltip } from '@angular/material/tooltip';
|
|
11
11
|
import { MatExpansionPanel, MatExpansionPanelHeader } from '@angular/material/expansion';
|
|
12
|
-
import { NgxToolsValidators } from '@myrmidon/ngx-tools';
|
|
12
|
+
import { NgxToolsValidators, deepCopy } from '@myrmidon/ngx-tools';
|
|
13
13
|
import { renderLabelFromLastColon, ThesaurusTreeComponent, ModelEditorComponentBase, CloseSaveButtonsComponent } from '@myrmidon/cadmus-ui';
|
|
14
14
|
import { take } from 'rxjs';
|
|
15
15
|
import { MatFormField, MatHint, MatError, MatLabel } from '@angular/material/form-field';
|
|
@@ -137,9 +137,9 @@ class EpiFormulaTokenComponent {
|
|
|
137
137
|
/**
|
|
138
138
|
* The token being edited.
|
|
139
139
|
*/
|
|
140
|
-
token = model();
|
|
140
|
+
token = model(...(ngDevMode ? [undefined, { debugName: "token" }] : []));
|
|
141
141
|
// epi-formula-token-tags
|
|
142
|
-
tagEntries = input();
|
|
142
|
+
tagEntries = input(...(ngDevMode ? [undefined, { debugName: "tagEntries" }] : []));
|
|
143
143
|
editorClose = output();
|
|
144
144
|
optional;
|
|
145
145
|
placeholder;
|
|
@@ -249,10 +249,10 @@ class EpiFormulaTokenComponent {
|
|
|
249
249
|
renderLabel(label) {
|
|
250
250
|
return renderLabelFromLastColon(label);
|
|
251
251
|
}
|
|
252
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
253
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
252
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaTokenComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
253
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: EpiFormulaTokenComponent, isStandalone: true, selector: "cadmus-epi-formula-token", inputs: { token: { classPropertyName: "token", publicName: "token", isSignal: true, isRequired: false, transformFunction: null }, tagEntries: { classPropertyName: "tagEntries", publicName: "tagEntries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { token: "tokenChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- placeholder -->\n <mat-checkbox [formControl]=\"placeholder\">placeholder</mat-checkbox>\n\n <!-- optional -->\n <mat-checkbox [formControl]=\"optional\">optional</mat-checkbox>\n </div>\n\n <!-- tags -->\n <fieldset>\n <legend>tags</legend>\n <div class=\"form-row\">\n <!-- picker -->\n <cadmus-thesaurus-tree\n [entries]=\"tagEntries()\"\n rootLabel=\"categories\"\n [renderLabel]=\"renderLabel\"\n (entryChange)=\"onEntryChange($event)\"\n />\n <!-- list -->\n @if (tags.value.length) {\n <table>\n <tbody>\n @for ( e of tags.value; track e; let i = $index; let first = $first;\n let last = $last) {\n <tr>\n <td>\n <button\n [disabled]=\"first\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move tag up\"\n (click)=\"moveTagUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n [disabled]=\"last\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move tag down\"\n (click)=\"moveTagDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"removeTag(i)\">\n <mat-icon class=\"mat-warn\">delete</mat-icon>\n </button>\n </td>\n <td>{{ e.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n } @else {\n <span class=\"error\">no tags</span>\n }\n </div>\n </fieldset>\n\n <!-- values -->\n <mat-form-field class=\"long-text\">\n <textarea [formControl]=\"values\" matInput rows=\"3\"></textarea>\n <mat-hint>value(s), one per line</mat-hint>\n @if ($any(values).errors?.required && (values.dirty || values.touched)) {\n <mat-error>value(s) required</mat-error>\n } @if ($any(values).errors?.maxLength && (values.dirty || values.touched)) {\n <mat-error>value(s) too long</mat-error>\n }\n </mat-form-field>\n\n <!-- note -->\n <div>\n <mat-form-field class=\"long-text\">\n <mat-label>note</mat-label>\n <textarea matInput [formControl]=\"note\"></textarea>\n @if ($any(note).errors?.maxLength && (note.dirty || note.touched)) {\n <mat-error>note too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Discard changes\"\n (click)=\"cancel()\"\n >\n <mat-icon class=\"mat-warn\">clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n matTooltip=\"Accept changes\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.long-text{width:100%;max-width:800px}.error{color:red}fieldset{border:1px solid silver;border-radius:6px;padding:4px;margin:8px 0}legend{color:silver}table{width:100%;border-collapse:collapse}tbody tr:nth-child(odd){background-color:#e2e2e2}th{text-align:left;font-weight:400;color:silver}td.fit-width{width:1px;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: ThesaurusTreeComponent, selector: "cadmus-thesaurus-tree", inputs: ["entries", "rootLabel", "renderLabel"], outputs: ["entryChange"] }] });
|
|
254
254
|
}
|
|
255
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
255
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaTokenComponent, decorators: [{
|
|
256
256
|
type: Component,
|
|
257
257
|
args: [{ selector: 'cadmus-epi-formula-token', imports: [
|
|
258
258
|
FormsModule,
|
|
@@ -293,10 +293,10 @@ class EpiFormulaTokenPipe {
|
|
|
293
293
|
sb.push(value.isOptional ? ']' : '>');
|
|
294
294
|
return sb.join('');
|
|
295
295
|
}
|
|
296
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
297
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
296
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaTokenPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
297
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaTokenPipe, isStandalone: true, name: "epiFormulaToken" });
|
|
298
298
|
}
|
|
299
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
299
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaTokenPipe, decorators: [{
|
|
300
300
|
type: Pipe,
|
|
301
301
|
args: [{ name: 'epiFormulaToken' }]
|
|
302
302
|
}] });
|
|
@@ -309,16 +309,16 @@ class EpiFormulaPatternComponent {
|
|
|
309
309
|
/**
|
|
310
310
|
* The pattern being edited.
|
|
311
311
|
*/
|
|
312
|
-
pattern = model();
|
|
312
|
+
pattern = model(...(ngDevMode ? [undefined, { debugName: "pattern" }] : []));
|
|
313
313
|
// epi-formula-pattern-languages
|
|
314
|
-
langEntries = input();
|
|
314
|
+
langEntries = input(...(ngDevMode ? [undefined, { debugName: "langEntries" }] : []));
|
|
315
315
|
// epi-formula-pattern-tags
|
|
316
|
-
tagEntries = input();
|
|
316
|
+
tagEntries = input(...(ngDevMode ? [undefined, { debugName: "tagEntries" }] : []));
|
|
317
317
|
// epi-formula-token-tags
|
|
318
|
-
tokTagEntries = input();
|
|
318
|
+
tokTagEntries = input(...(ngDevMode ? [undefined, { debugName: "tokTagEntries" }] : []));
|
|
319
319
|
editorClose = output();
|
|
320
|
-
|
|
321
|
-
|
|
320
|
+
edited = signal(undefined, ...(ngDevMode ? [{ debugName: "edited" }] : []));
|
|
321
|
+
editedIndex = signal(-1, ...(ngDevMode ? [{ debugName: "editedIndex" }] : []));
|
|
322
322
|
eid;
|
|
323
323
|
language;
|
|
324
324
|
tag;
|
|
@@ -326,7 +326,6 @@ class EpiFormulaPatternComponent {
|
|
|
326
326
|
form;
|
|
327
327
|
constructor(formBuilder, _dialogService) {
|
|
328
328
|
this._dialogService = _dialogService;
|
|
329
|
-
this.editedIndex = -1;
|
|
330
329
|
// form
|
|
331
330
|
this.eid = formBuilder.control(null, Validators.maxLength(500));
|
|
332
331
|
this.language = formBuilder.control('', {
|
|
@@ -368,20 +367,20 @@ class EpiFormulaPatternComponent {
|
|
|
368
367
|
this.editToken(token, -1);
|
|
369
368
|
}
|
|
370
369
|
editToken(token, index) {
|
|
371
|
-
this.editedIndex
|
|
372
|
-
this.edited
|
|
370
|
+
this.editedIndex.set(index);
|
|
371
|
+
this.edited.set(deepCopy(token));
|
|
373
372
|
}
|
|
374
373
|
closeToken() {
|
|
375
|
-
this.editedIndex
|
|
376
|
-
this.edited
|
|
374
|
+
this.editedIndex.set(-1);
|
|
375
|
+
this.edited.set(undefined);
|
|
377
376
|
}
|
|
378
377
|
saveToken(token) {
|
|
379
378
|
const tokens = [...this.tokens.value];
|
|
380
|
-
if (this.editedIndex === -1) {
|
|
379
|
+
if (this.editedIndex() === -1) {
|
|
381
380
|
tokens.push(token);
|
|
382
381
|
}
|
|
383
382
|
else {
|
|
384
|
-
tokens.splice(this.editedIndex, 1, token);
|
|
383
|
+
tokens.splice(this.editedIndex(), 1, token);
|
|
385
384
|
}
|
|
386
385
|
this.tokens.setValue(tokens);
|
|
387
386
|
this.tokens.markAsDirty();
|
|
@@ -394,7 +393,7 @@ class EpiFormulaPatternComponent {
|
|
|
394
393
|
.pipe(take(1))
|
|
395
394
|
.subscribe((yes) => {
|
|
396
395
|
if (yes) {
|
|
397
|
-
if (this.editedIndex === index) {
|
|
396
|
+
if (this.editedIndex() === index) {
|
|
398
397
|
this.closeToken();
|
|
399
398
|
}
|
|
400
399
|
const tokens = [...this.tokens.value];
|
|
@@ -410,10 +409,10 @@ class EpiFormulaPatternComponent {
|
|
|
410
409
|
return;
|
|
411
410
|
}
|
|
412
411
|
const token = this.tokens.value[index];
|
|
413
|
-
const
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
this.tokens.setValue(
|
|
412
|
+
const tokens = [...this.tokens.value];
|
|
413
|
+
tokens.splice(index, 1);
|
|
414
|
+
tokens.splice(index - 1, 0, token);
|
|
415
|
+
this.tokens.setValue(tokens);
|
|
417
416
|
this.tokens.markAsDirty();
|
|
418
417
|
this.tokens.updateValueAndValidity();
|
|
419
418
|
}
|
|
@@ -421,11 +420,11 @@ class EpiFormulaPatternComponent {
|
|
|
421
420
|
if (index + 1 >= this.tokens.value.length) {
|
|
422
421
|
return;
|
|
423
422
|
}
|
|
424
|
-
const
|
|
425
|
-
const
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
this.tokens.setValue(
|
|
423
|
+
const token = this.tokens.value[index];
|
|
424
|
+
const tokens = [...this.tokens.value];
|
|
425
|
+
tokens.splice(index, 1);
|
|
426
|
+
tokens.splice(index + 1, 0, token);
|
|
427
|
+
this.tokens.setValue(tokens);
|
|
429
428
|
this.tokens.markAsDirty();
|
|
430
429
|
this.tokens.updateValueAndValidity();
|
|
431
430
|
}
|
|
@@ -446,10 +445,10 @@ class EpiFormulaPatternComponent {
|
|
|
446
445
|
}
|
|
447
446
|
this.pattern.set(this.getPattern());
|
|
448
447
|
}
|
|
449
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
450
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: EpiFormulaPatternComponent, isStandalone: true, selector: "cadmus-epi-formula-pattern", inputs: { pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, langEntries: { classPropertyName: "langEntries", publicName: "langEntries", isSignal: true, isRequired: false, transformFunction: null }, tagEntries: { classPropertyName: "tagEntries", publicName: "tagEntries", isSignal: true, isRequired: false, transformFunction: null }, tokTagEntries: { classPropertyName: "tokTagEntries", publicName: "tokTagEntries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pattern: "patternChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- eid -->\n <mat-form-field>\n <mat-label>EID</mat-label>\n <input matInput [formControl]=\"eid\" />\n @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\n <mat-error>EID too long</mat-error>\n }\n </mat-form-field>\n\n <!-- language (bound) -->\n @if (langEntries()?.length) {\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select [formControl]=\"language\">\n @for (e of langEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n @if ( $any(language).errors?.required && (language.dirty ||\n language.touched) ) {\n <mat-error>language required</mat-error>\n }\n </mat-form-field>\n }\n <!-- language (free) -->\n @else {\n <mat-form-field>\n <mat-label>language</mat-label>\n <input matInput [formControl]=\"language\" />\n @if ( $any(language).errors?.required && (language.dirty ||\n language.touched) ) {\n <mat-error>language required</mat-error>\n } @if ( $any(language).errors?.maxLength && (language.dirty ||\n language.touched) ) {\n <mat-error>language too long</mat-error>\n }\n </mat-form-field>\n }\n\n <!-- tag (bound) -->\n @if (tagEntries()?.length) {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <mat-select [formControl]=\"tag\">\n @for (e of tagEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- tag (free) -->\n @else {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <input matInput [formControl]=\"tag\" />\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n }\n </div>\n\n <!-- tokens -->\n <fieldset>\n <legend>tokens</legend>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addToken()\"\n >\n <mat-icon>add_circle</mat-icon> token\n </button>\n @if (tokens.value.length) {\n <table>\n <tbody>\n @for ( token of tokens.value; track token; let i = $index; let first =\n $first; let last = $last) {\n <tr [class.selected]=\"token === edited\">\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this token\"\n (click)=\"editToken(token, i)\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this token up\"\n [disabled]=\"first\"\n (click)=\"moveTokenUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this token down\"\n [disabled]=\"last\"\n (click)=\"moveTokenDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this token\"\n (click)=\"deleteToken(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>\n {{ token | epiFormulaToken }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n } @if (edited) {\n <mat-expansion-panel [disabled]=\"!edited\" [expanded]=\"edited\">\n <mat-expansion-panel-header\n >Token #{{ editedIndex + 1 }}</mat-expansion-panel-header\n >\n <cadmus-epi-formula-token\n [token]=\"edited\"\n [tagEntries]=\"tokTagEntries()\"\n (tokenChange)=\"saveToken($event!)\"\n (editorClose)=\"closeToken()\"\n />\n </mat-expansion-panel>\n }\n </fieldset>\n\n <!-- buttons -->\n <div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Discard changes\"\n (click)=\"cancel()\"\n >\n <mat-icon class=\"mat-warn\">clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n matTooltip=\"Accept changes\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}fieldset{border:1px solid silver;border-radius:6px;padding:4px}legend{color:silver}table{width:100%;border-collapse:collapse}tbody tr:nth-child(odd){background-color:#e2e2e2}th{text-align:left;font-weight:400;color:silver}td.fit-width{width:1px;white-space:nowrap}tr.selected{background-color:#d0d0d0!important}fieldset{border:1px solid silver;border-radius:6px;padding:6px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "component", type: EpiFormulaTokenComponent, selector: "cadmus-epi-formula-token", inputs: ["token", "tagEntries"], outputs: ["tokenChange", "editorClose"] }, { kind: "pipe", type: EpiFormulaTokenPipe, name: "epiFormulaToken" }] });
|
|
448
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaPatternComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
449
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: EpiFormulaPatternComponent, isStandalone: true, selector: "cadmus-epi-formula-pattern", inputs: { pattern: { classPropertyName: "pattern", publicName: "pattern", isSignal: true, isRequired: false, transformFunction: null }, langEntries: { classPropertyName: "langEntries", publicName: "langEntries", isSignal: true, isRequired: false, transformFunction: null }, tagEntries: { classPropertyName: "tagEntries", publicName: "tagEntries", isSignal: true, isRequired: false, transformFunction: null }, tokTagEntries: { classPropertyName: "tokTagEntries", publicName: "tokTagEntries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pattern: "patternChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- eid -->\n <mat-form-field>\n <mat-label>EID</mat-label>\n <input matInput [formControl]=\"eid\" />\n @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\n <mat-error>EID too long</mat-error>\n }\n </mat-form-field>\n\n <!-- language (bound) -->\n @if (langEntries()?.length) {\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select [formControl]=\"language\">\n @for (e of langEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n @if ( $any(language).errors?.required && (language.dirty ||\n language.touched) ) {\n <mat-error>language required</mat-error>\n }\n </mat-form-field>\n }\n <!-- language (free) -->\n @else {\n <mat-form-field>\n <mat-label>language</mat-label>\n <input matInput [formControl]=\"language\" />\n @if ( $any(language).errors?.required && (language.dirty ||\n language.touched) ) {\n <mat-error>language required</mat-error>\n } @if ( $any(language).errors?.maxLength && (language.dirty ||\n language.touched) ) {\n <mat-error>language too long</mat-error>\n }\n </mat-form-field>\n }\n\n <!-- tag (bound) -->\n @if (tagEntries()?.length) {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <mat-select [formControl]=\"tag\">\n @for (e of tagEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- tag (free) -->\n @else {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <input matInput [formControl]=\"tag\" />\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n }\n </div>\n\n <!-- tokens -->\n <fieldset>\n <legend>tokens</legend>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addToken()\"\n >\n <mat-icon>add_circle</mat-icon> token\n </button>\n @if (tokens.value.length) {\n <table>\n <tbody>\n @for ( token of tokens.value; track token; let i = $index; let first =\n $first; let last = $last) {\n <tr [class.selected]=\"i === editedIndex()\">\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this token\"\n (click)=\"editToken(token, i)\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this token up\"\n [disabled]=\"first\"\n (click)=\"moveTokenUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this token down\"\n [disabled]=\"last\"\n (click)=\"moveTokenDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this token\"\n (click)=\"deleteToken(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>\n {{ token | epiFormulaToken }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n } @if (edited()) {\n <mat-expansion-panel [disabled]=\"!edited()\" [expanded]=\"edited()\">\n <mat-expansion-panel-header\n >Token #{{ editedIndex() + 1 }}</mat-expansion-panel-header\n >\n <cadmus-epi-formula-token\n [token]=\"edited()\"\n [tagEntries]=\"tokTagEntries()\"\n (tokenChange)=\"saveToken($event!)\"\n (editorClose)=\"closeToken()\"\n />\n </mat-expansion-panel>\n }\n </fieldset>\n\n <!-- buttons -->\n <div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Discard changes\"\n (click)=\"cancel()\"\n >\n <mat-icon class=\"mat-warn\">clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n matTooltip=\"Accept changes\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}fieldset{border:1px solid silver;border-radius:6px;padding:4px}legend{color:silver}table{width:100%;border-collapse:collapse}tbody tr:nth-child(odd){background-color:#e2e2e2}th{text-align:left;font-weight:400;color:silver}td.fit-width{width:1px;white-space:nowrap}tr.selected{background-color:#d0d0d0!important}fieldset{border:1px solid silver;border-radius:6px;padding:6px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: 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: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "component", type: EpiFormulaTokenComponent, selector: "cadmus-epi-formula-token", inputs: ["token", "tagEntries"], outputs: ["tokenChange", "editorClose"] }, { kind: "pipe", type: EpiFormulaTokenPipe, name: "epiFormulaToken" }] });
|
|
451
450
|
}
|
|
452
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
451
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaPatternComponent, decorators: [{
|
|
453
452
|
type: Component,
|
|
454
453
|
args: [{ selector: 'cadmus-epi-formula-pattern', imports: [
|
|
455
454
|
FormsModule,
|
|
@@ -468,7 +467,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
468
467
|
MatExpansionPanelHeader,
|
|
469
468
|
EpiFormulaTokenComponent,
|
|
470
469
|
EpiFormulaTokenPipe,
|
|
471
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- eid -->\n <mat-form-field>\n <mat-label>EID</mat-label>\n <input matInput [formControl]=\"eid\" />\n @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\n <mat-error>EID too long</mat-error>\n }\n </mat-form-field>\n\n <!-- language (bound) -->\n @if (langEntries()?.length) {\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select [formControl]=\"language\">\n @for (e of langEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n @if ( $any(language).errors?.required && (language.dirty ||\n language.touched) ) {\n <mat-error>language required</mat-error>\n }\n </mat-form-field>\n }\n <!-- language (free) -->\n @else {\n <mat-form-field>\n <mat-label>language</mat-label>\n <input matInput [formControl]=\"language\" />\n @if ( $any(language).errors?.required && (language.dirty ||\n language.touched) ) {\n <mat-error>language required</mat-error>\n } @if ( $any(language).errors?.maxLength && (language.dirty ||\n language.touched) ) {\n <mat-error>language too long</mat-error>\n }\n </mat-form-field>\n }\n\n <!-- tag (bound) -->\n @if (tagEntries()?.length) {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <mat-select [formControl]=\"tag\">\n @for (e of tagEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- tag (free) -->\n @else {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <input matInput [formControl]=\"tag\" />\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n }\n </div>\n\n <!-- tokens -->\n <fieldset>\n <legend>tokens</legend>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addToken()\"\n >\n <mat-icon>add_circle</mat-icon> token\n </button>\n @if (tokens.value.length) {\n <table>\n <tbody>\n @for ( token of tokens.value; track token; let i = $index; let first =\n $first; let last = $last) {\n <tr [class.selected]=\"
|
|
470
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- eid -->\n <mat-form-field>\n <mat-label>EID</mat-label>\n <input matInput [formControl]=\"eid\" />\n @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\n <mat-error>EID too long</mat-error>\n }\n </mat-form-field>\n\n <!-- language (bound) -->\n @if (langEntries()?.length) {\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select [formControl]=\"language\">\n @for (e of langEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n @if ( $any(language).errors?.required && (language.dirty ||\n language.touched) ) {\n <mat-error>language required</mat-error>\n }\n </mat-form-field>\n }\n <!-- language (free) -->\n @else {\n <mat-form-field>\n <mat-label>language</mat-label>\n <input matInput [formControl]=\"language\" />\n @if ( $any(language).errors?.required && (language.dirty ||\n language.touched) ) {\n <mat-error>language required</mat-error>\n } @if ( $any(language).errors?.maxLength && (language.dirty ||\n language.touched) ) {\n <mat-error>language too long</mat-error>\n }\n </mat-form-field>\n }\n\n <!-- tag (bound) -->\n @if (tagEntries()?.length) {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <mat-select [formControl]=\"tag\">\n @for (e of tagEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- tag (free) -->\n @else {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <input matInput [formControl]=\"tag\" />\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n }\n </div>\n\n <!-- tokens -->\n <fieldset>\n <legend>tokens</legend>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addToken()\"\n >\n <mat-icon>add_circle</mat-icon> token\n </button>\n @if (tokens.value.length) {\n <table>\n <tbody>\n @for ( token of tokens.value; track token; let i = $index; let first =\n $first; let last = $last) {\n <tr [class.selected]=\"i === editedIndex()\">\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this token\"\n (click)=\"editToken(token, i)\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this token up\"\n [disabled]=\"first\"\n (click)=\"moveTokenUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this token down\"\n [disabled]=\"last\"\n (click)=\"moveTokenDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this token\"\n (click)=\"deleteToken(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>\n {{ token | epiFormulaToken }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n } @if (edited()) {\n <mat-expansion-panel [disabled]=\"!edited()\" [expanded]=\"edited()\">\n <mat-expansion-panel-header\n >Token #{{ editedIndex() + 1 }}</mat-expansion-panel-header\n >\n <cadmus-epi-formula-token\n [token]=\"edited()\"\n [tagEntries]=\"tokTagEntries()\"\n (tokenChange)=\"saveToken($event!)\"\n (editorClose)=\"closeToken()\"\n />\n </mat-expansion-panel>\n }\n </fieldset>\n\n <!-- buttons -->\n <div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Discard changes\"\n (click)=\"cancel()\"\n >\n <mat-icon class=\"mat-warn\">clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n matTooltip=\"Accept changes\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}fieldset{border:1px solid silver;border-radius:6px;padding:4px}legend{color:silver}table{width:100%;border-collapse:collapse}tbody tr:nth-child(odd){background-color:#e2e2e2}th{text-align:left;font-weight:400;color:silver}td.fit-width{width:1px;white-space:nowrap}tr.selected{background-color:#d0d0d0!important}fieldset{border:1px solid silver;border-radius:6px;padding:6px}\n"] }]
|
|
472
471
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.DialogService }] });
|
|
473
472
|
|
|
474
473
|
/**
|
|
@@ -478,19 +477,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
478
477
|
*/
|
|
479
478
|
class EpiFormulaPatternsPartComponent extends ModelEditorComponentBase {
|
|
480
479
|
_dialogService;
|
|
481
|
-
|
|
482
|
-
|
|
480
|
+
edited = signal(undefined, ...(ngDevMode ? [{ debugName: "edited" }] : []));
|
|
481
|
+
editedIndex = signal(-1, ...(ngDevMode ? [{ debugName: "editedIndex" }] : []));
|
|
483
482
|
// epi-formula-pattern-languages
|
|
484
|
-
langEntries;
|
|
483
|
+
langEntries = signal(undefined, ...(ngDevMode ? [{ debugName: "langEntries" }] : []));
|
|
485
484
|
// epi-formula-pattern-tags
|
|
486
|
-
tagEntries;
|
|
485
|
+
tagEntries = signal(undefined, ...(ngDevMode ? [{ debugName: "tagEntries" }] : []));
|
|
487
486
|
// epi-formula-token-tags
|
|
488
|
-
tokTagEntries;
|
|
487
|
+
tokTagEntries = signal(undefined, ...(ngDevMode ? [{ debugName: "tokTagEntries" }] : []));
|
|
489
488
|
patterns;
|
|
490
489
|
constructor(authService, formBuilder, _dialogService) {
|
|
491
490
|
super(authService, formBuilder);
|
|
492
491
|
this._dialogService = _dialogService;
|
|
493
|
-
this.editedIndex = -1;
|
|
494
492
|
// form
|
|
495
493
|
this.patterns = formBuilder.control([], {
|
|
496
494
|
// at least 1 entry
|
|
@@ -509,24 +507,24 @@ class EpiFormulaPatternsPartComponent extends ModelEditorComponentBase {
|
|
|
509
507
|
updateThesauri(thesauri) {
|
|
510
508
|
let key = 'epi-formula-pattern-languages';
|
|
511
509
|
if (this.hasThesaurus(key)) {
|
|
512
|
-
this.langEntries
|
|
510
|
+
this.langEntries.set(thesauri[key].entries);
|
|
513
511
|
}
|
|
514
512
|
else {
|
|
515
|
-
this.langEntries
|
|
513
|
+
this.langEntries.set(undefined);
|
|
516
514
|
}
|
|
517
515
|
key = 'epi-formula-pattern-tags';
|
|
518
516
|
if (this.hasThesaurus(key)) {
|
|
519
|
-
this.tagEntries
|
|
517
|
+
this.tagEntries.set(thesauri[key].entries);
|
|
520
518
|
}
|
|
521
519
|
else {
|
|
522
|
-
this.tagEntries
|
|
520
|
+
this.tagEntries.set(undefined);
|
|
523
521
|
}
|
|
524
522
|
key = 'epi-formula-token-tags';
|
|
525
523
|
if (this.hasThesaurus(key)) {
|
|
526
|
-
this.tokTagEntries
|
|
524
|
+
this.tokTagEntries.set(thesauri[key].entries);
|
|
527
525
|
}
|
|
528
526
|
else {
|
|
529
|
-
this.tokTagEntries
|
|
527
|
+
this.tokTagEntries.set(undefined);
|
|
530
528
|
}
|
|
531
529
|
}
|
|
532
530
|
updateForm(part) {
|
|
@@ -558,20 +556,20 @@ class EpiFormulaPatternsPartComponent extends ModelEditorComponentBase {
|
|
|
558
556
|
this.editPattern(pattern, -1);
|
|
559
557
|
}
|
|
560
558
|
editPattern(entry, index) {
|
|
561
|
-
this.editedIndex
|
|
562
|
-
this.edited
|
|
559
|
+
this.editedIndex.set(index);
|
|
560
|
+
this.edited.set(deepCopy(entry));
|
|
563
561
|
}
|
|
564
562
|
closePattern() {
|
|
565
|
-
this.editedIndex
|
|
566
|
-
this.edited
|
|
563
|
+
this.editedIndex.set(-1);
|
|
564
|
+
this.edited.set(undefined);
|
|
567
565
|
}
|
|
568
566
|
savePattern(pattern) {
|
|
569
567
|
const patterns = [...this.patterns.value];
|
|
570
|
-
if (this.editedIndex === -1) {
|
|
568
|
+
if (this.editedIndex() === -1) {
|
|
571
569
|
patterns.push(pattern);
|
|
572
570
|
}
|
|
573
571
|
else {
|
|
574
|
-
patterns.splice(this.editedIndex, 1, pattern);
|
|
572
|
+
patterns.splice(this.editedIndex(), 1, pattern);
|
|
575
573
|
}
|
|
576
574
|
this.patterns.setValue(patterns);
|
|
577
575
|
this.patterns.markAsDirty();
|
|
@@ -584,7 +582,7 @@ class EpiFormulaPatternsPartComponent extends ModelEditorComponentBase {
|
|
|
584
582
|
.pipe(take$1(1))
|
|
585
583
|
.subscribe((yes) => {
|
|
586
584
|
if (yes) {
|
|
587
|
-
if (this.editedIndex === index) {
|
|
585
|
+
if (this.editedIndex() === index) {
|
|
588
586
|
this.closePattern();
|
|
589
587
|
}
|
|
590
588
|
const patterns = [...this.patterns.value];
|
|
@@ -619,10 +617,10 @@ class EpiFormulaPatternsPartComponent extends ModelEditorComponentBase {
|
|
|
619
617
|
this.patterns.markAsDirty();
|
|
620
618
|
this.patterns.updateValueAndValidity();
|
|
621
619
|
}
|
|
622
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
623
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
620
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaPatternsPartComponent, deps: [{ token: i1$1.AuthJwtService }, { token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
621
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: EpiFormulaPatternsPartComponent, isStandalone: true, selector: "cadmus-epi-formula-patterns-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card>\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon>picture_in_picture</mat-icon>\n </div>\n <mat-card-title>{{\n (modelName() | titlecase) || \"Epigraphic Formula Patterns Part\"\n }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <div>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addPattern()\"\n >\n <mat-icon>add_circle</mat-icon> pattern\n </button>\n </div>\n @if (patterns.value.length) {\n <table>\n <tbody>\n @for ( pattern of patterns.value; track pattern; let i = $index; let\n first = $first; let last = $last) {\n <tr [class.selected]=\"i === editedIndex()\">\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this pattern\"\n (click)=\"editPattern(pattern, i)\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this pattern up\"\n [disabled]=\"first\"\n (click)=\"movePatternUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this pattern down\"\n [disabled]=\"last\"\n (click)=\"movePatternDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this pattern\"\n (click)=\"deletePattern(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>\n <ul>\n @for (t of pattern.tokens; track t) {\n <li>\n {{ t | epiFormulaToken }}\n </li>\n }\n </ul>\n </td>\n </tr>\n }\n </tbody>\n </table>\n } @if (edited()) {\n <mat-expansion-panel [disabled]=\"!edited()\" [expanded]=\"edited()\">\n <mat-expansion-panel-header\n >Pattern #{{ editedIndex() }}</mat-expansion-panel-header\n >\n <cadmus-epi-formula-pattern\n [langEntries]=\"langEntries()\"\n [tagEntries]=\"tagEntries()\"\n [tokTagEntries]=\"tokTagEntries()\"\n [pattern]=\"edited()\"\n (editorClose)=\"closePattern()\"\n (patternChange)=\"savePattern($event!)\"\n />\n </mat-expansion-panel>\n }\n </mat-card-content>\n <mat-card-actions>\n <cadmus-close-save-buttons\n [form]=\"form\"\n [noSave]=\"userLevel < 2\"\n (closeRequest)=\"close()\"\n />\n </mat-card-actions>\n </mat-card>\n</form>\n", styles: ["table{width:100%;border-collapse:collapse}tbody tr:nth-child(odd){background-color:#e2e2e2}th{text-align:left;font-weight:400;color:silver}td.fit-width{width:1px;white-space:nowrap}tr.selected{background-color:#d0d0d0!important}fieldset{border:1px solid silver;border-radius:6px;padding:6px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: 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: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "component", type: EpiFormulaPatternComponent, selector: "cadmus-epi-formula-pattern", inputs: ["pattern", "langEntries", "tagEntries", "tokTagEntries"], outputs: ["patternChange", "editorClose"] }, { kind: "directive", type: MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "pipe", type: EpiFormulaTokenPipe, name: "epiFormulaToken" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }] });
|
|
624
622
|
}
|
|
625
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
623
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaPatternsPartComponent, decorators: [{
|
|
626
624
|
type: Component,
|
|
627
625
|
args: [{ selector: 'cadmus-epi-formula-patterns-part', imports: [
|
|
628
626
|
FormsModule,
|
|
@@ -643,7 +641,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
643
641
|
EpiFormulaTokenPipe,
|
|
644
642
|
TitleCasePipe,
|
|
645
643
|
CloseSaveButtonsComponent,
|
|
646
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card>\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon>picture_in_picture</mat-icon>\n </div>\n <mat-card-title>{{\n (modelName() | titlecase) || \"Epigraphic Formula Patterns Part\"\n }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <div>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addPattern()\"\n >\n <mat-icon>add_circle</mat-icon> pattern\n </button>\n </div>\n @if (patterns.value.length) {\n <table>\n <tbody>\n @for ( pattern of patterns.value; track pattern; let i = $index; let\n first = $first; let last = $last) {\n <tr [class.selected]=\"
|
|
644
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card>\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon>picture_in_picture</mat-icon>\n </div>\n <mat-card-title>{{\n (modelName() | titlecase) || \"Epigraphic Formula Patterns Part\"\n }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <div>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addPattern()\"\n >\n <mat-icon>add_circle</mat-icon> pattern\n </button>\n </div>\n @if (patterns.value.length) {\n <table>\n <tbody>\n @for ( pattern of patterns.value; track pattern; let i = $index; let\n first = $first; let last = $last) {\n <tr [class.selected]=\"i === editedIndex()\">\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this pattern\"\n (click)=\"editPattern(pattern, i)\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this pattern up\"\n [disabled]=\"first\"\n (click)=\"movePatternUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this pattern down\"\n [disabled]=\"last\"\n (click)=\"movePatternDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this pattern\"\n (click)=\"deletePattern(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>\n <ul>\n @for (t of pattern.tokens; track t) {\n <li>\n {{ t | epiFormulaToken }}\n </li>\n }\n </ul>\n </td>\n </tr>\n }\n </tbody>\n </table>\n } @if (edited()) {\n <mat-expansion-panel [disabled]=\"!edited()\" [expanded]=\"edited()\">\n <mat-expansion-panel-header\n >Pattern #{{ editedIndex() }}</mat-expansion-panel-header\n >\n <cadmus-epi-formula-pattern\n [langEntries]=\"langEntries()\"\n [tagEntries]=\"tagEntries()\"\n [tokTagEntries]=\"tokTagEntries()\"\n [pattern]=\"edited()\"\n (editorClose)=\"closePattern()\"\n (patternChange)=\"savePattern($event!)\"\n />\n </mat-expansion-panel>\n }\n </mat-card-content>\n <mat-card-actions>\n <cadmus-close-save-buttons\n [form]=\"form\"\n [noSave]=\"userLevel < 2\"\n (closeRequest)=\"close()\"\n />\n </mat-card-actions>\n </mat-card>\n</form>\n", styles: ["table{width:100%;border-collapse:collapse}tbody tr:nth-child(odd){background-color:#e2e2e2}th{text-align:left;font-weight:400;color:silver}td.fit-width{width:1px;white-space:nowrap}tr.selected{background-color:#d0d0d0!important}fieldset{border:1px solid silver;border-radius:6px;padding:6px}\n"] }]
|
|
647
645
|
}], ctorParameters: () => [{ type: i1$1.AuthJwtService }, { type: i1.FormBuilder }, { type: i2.DialogService }] });
|
|
648
646
|
|
|
649
647
|
class EpiFormulaPatternsPartFeatureComponent extends EditPartFeatureBase {
|
|
@@ -657,10 +655,10 @@ class EpiFormulaPatternsPartFeatureComponent extends EditPartFeatureBase {
|
|
|
657
655
|
'epi-formula-token-tags',
|
|
658
656
|
];
|
|
659
657
|
}
|
|
660
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
661
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
658
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaPatternsPartFeatureComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: i2$1.MatSnackBar }, { token: i3.ItemService }, { token: i3.ThesaurusService }, { token: i4.PartEditorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
659
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: EpiFormulaPatternsPartFeatureComponent, isStandalone: true, selector: "cadmus-epi-formula-patterns-part-feature", usesInheritance: true, ngImport: i0, template: "<cadmus-current-item-bar/>\n<cadmus-epi-formula-patterns-part\n [identity]=\"identity\"\n [data]=\"$any(data)\"\n (dataChange)=\"save($event!.value!)\"\n (editorClose)=\"close()\"\n (dirtyChange)=\"onDirtyChange($event)\"\n/>\n", styles: [""], dependencies: [{ kind: "component", type: CurrentItemBarComponent, selector: "cadmus-current-item-bar" }, { kind: "component", type: EpiFormulaPatternsPartComponent, selector: "cadmus-epi-formula-patterns-part" }] });
|
|
662
660
|
}
|
|
663
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
661
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: EpiFormulaPatternsPartFeatureComponent, decorators: [{
|
|
664
662
|
type: Component,
|
|
665
663
|
args: [{ selector: 'cadmus-epi-formula-patterns-part-feature', imports: [CurrentItemBarComponent, EpiFormulaPatternsPartComponent], template: "<cadmus-current-item-bar/>\n<cadmus-epi-formula-patterns-part\n [identity]=\"identity\"\n [data]=\"$any(data)\"\n (dataChange)=\"save($event!.value!)\"\n (editorClose)=\"close()\"\n (dirtyChange)=\"onDirtyChange($event)\"\n/>\n" }]
|
|
666
664
|
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: i2$1.MatSnackBar }, { type: i3.ItemService }, { type: i3.ThesaurusService }, { type: i4.PartEditorService }] });
|