@myrmidon/cadmus-part-general-ui 14.0.1 → 14.0.3
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.
|
@@ -43,6 +43,8 @@ import * as i5$2 from '@cisstech/nge/markdown';
|
|
|
43
43
|
import { NgeMarkdownModule } from '@cisstech/nge/markdown';
|
|
44
44
|
import { DecoratedCountsComponent } from '@myrmidon/cadmus-refs-decorated-counts';
|
|
45
45
|
import { ProperNameComponent, CadmusProperNamePipe } from '@myrmidon/cadmus-refs-proper-name';
|
|
46
|
+
import { FlagSetComponent } from '@myrmidon/cadmus-ui-flag-set';
|
|
47
|
+
import { NoteSetComponent } from '@myrmidon/cadmus-ui-note-set';
|
|
46
48
|
import { PhysicalMeasurementSetComponent } from '@myrmidon/cadmus-mat-physical-size';
|
|
47
49
|
import { PhysicalStateComponent } from '@myrmidon/cadmus-mat-physical-state';
|
|
48
50
|
import { moveItemInArray, CdkDropListGroup, CdkDropList, CdkDrag, CdkDragPlaceholder } from '@angular/cdk/drag-drop';
|
|
@@ -289,10 +291,10 @@ class AssertedHistoricalDateComponent {
|
|
|
289
291
|
}
|
|
290
292
|
this.date.set(this.getDate());
|
|
291
293
|
}
|
|
292
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
293
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
294
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AssertedHistoricalDateComponent, deps: [{ token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
295
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: AssertedHistoricalDateComponent, isStandalone: true, selector: "cadmus-asserted-historical-date", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, tagEntries: { classPropertyName: "tagEntries", publicName: "tagEntries", isSignal: true, isRequired: false, transformFunction: null }, assertionTagEntries: { classPropertyName: "assertionTagEntries", publicName: "assertionTagEntries", isSignal: true, isRequired: false, transformFunction: null }, docReferenceTypeEntries: { classPropertyName: "docReferenceTypeEntries", publicName: "docReferenceTypeEntries", isSignal: true, isRequired: false, transformFunction: null }, docReferenceTagEntries: { classPropertyName: "docReferenceTagEntries", publicName: "docReferenceTagEntries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { date: "dateChange", dateCancel: "dateCancel" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <!-- tag (bound) -->\r\n @if (tagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of tagEntries(); track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if (tag.hasError('max-length') && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <div>\r\n <!-- date -->\r\n <cadmus-refs-historical-date\r\n [date]=\"hd.value || undefined\"\r\n (dateChange)=\"onDateChange($event)\"\r\n />\r\n <mat-expansion-panel>\r\n <!-- assertion -->\r\n <mat-expansion-panel-header>date assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assertionTagEntries()\"\r\n [refTypeEntries]=\"docReferenceTypeEntries()\"\r\n [refTagEntries]=\"docReferenceTagEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Discard changes\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n mat-icon-button\r\n matTooltip=\"Accept changes\"\r\n [disabled]=\"form.invalid\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i4$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.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: "ngmodule", type: MatSelectModule }, { kind: "component", type: i7.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: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: HistoricalDateComponent, selector: "cadmus-refs-historical-date", inputs: ["date", "label", "disabled"], outputs: ["dateChange"] }, { kind: "component", type: AssertionComponent, selector: "cadmus-refs-assertion", inputs: ["assTagEntries", "refTypeEntries", "refTagEntries", "assertion", "noLookup", "noCitation", "defaultPicker"], outputs: ["assertionChange"] }] });
|
|
294
296
|
}
|
|
295
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
297
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AssertedHistoricalDateComponent, decorators: [{
|
|
296
298
|
type: Component,
|
|
297
299
|
args: [{ selector: 'cadmus-asserted-historical-date', imports: [
|
|
298
300
|
ReactiveFormsModule,
|
|
@@ -481,12 +483,12 @@ class AssertedHistoricalDatesPartComponent extends ModelEditorComponentBase {
|
|
|
481
483
|
this.dates.markAsDirty();
|
|
482
484
|
this.dates.updateValueAndValidity();
|
|
483
485
|
}
|
|
484
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
485
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
486
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AssertedHistoricalDatesPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
487
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: AssertedHistoricalDatesPartComponent, isStandalone: true, selector: "cadmus-asserted-historical-dates-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Historical Dates\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n color=\"primary\"\r\n [disabled]=\"maxDateCount > 0 && dates.value.length >= maxDateCount\"\r\n (click)=\"addDate()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> date\r\n </button>\r\n </div>\r\n @if (dates.value.length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>date</th>\r\n <th>tag</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (date of dates.value; track date; let i = $index; let first =\r\n $first; let last = $last) {\r\n <tr [class.selected]=\"date === edited\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this date\"\r\n (click)=\"editDate(date, i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this date up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveDateUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this date down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveDateDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this date\"\r\n (click)=\"deleteDate(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ date | historicalDate }}</td>\r\n <td>{{ date.tag | flatLookup : tagEntries : \"id\" : \"value\" }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n } @if (edited) {\r\n <fieldset>\r\n <mat-expansion-panel [expanded]=\"edited\" [disabled]=\"!edited\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Date #</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <cadmus-asserted-historical-date\r\n [date]=\"edited\"\r\n (dateChange)=\"saveDate($event!)\"\r\n [tagEntries]=\"tagEntries\"\r\n [assertionTagEntries]=\"assertionTagEntries\"\r\n [docReferenceTagEntries]=\"docReferenceTagEntries\"\r\n [docReferenceTypeEntries]=\"docReferenceTypeEntries\"\r\n (dateCancel)=\"closeDate()\"\r\n />\r\n </mat-expansion-panel>\r\n </fieldset>\r\n }\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\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: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i5$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i4$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i4$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: AssertedHistoricalDateComponent, selector: "cadmus-asserted-historical-date", inputs: ["date", "tagEntries", "assertionTagEntries", "docReferenceTypeEntries", "docReferenceTagEntries"], outputs: ["dateChange", "dateCancel"] }, { kind: "component", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "pipe", type: i9.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type:
|
|
486
488
|
// cadmus
|
|
487
489
|
FlatLookupPipe, name: "flatLookup" }, { kind: "pipe", type: HistoricalDatePipe, name: "historicalDate" }] });
|
|
488
490
|
}
|
|
489
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
491
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AssertedHistoricalDatesPartComponent, decorators: [{
|
|
490
492
|
type: Component,
|
|
491
493
|
args: [{ selector: 'cadmus-asserted-historical-dates-part', imports: [
|
|
492
494
|
CommonModule,
|
|
@@ -560,10 +562,10 @@ class BibAuthorsEditorComponent {
|
|
|
560
562
|
this.authors.removeAt(i);
|
|
561
563
|
}
|
|
562
564
|
}
|
|
563
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
564
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
565
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BibAuthorsEditorComponent, deps: [{ token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
566
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: BibAuthorsEditorComponent, isStandalone: true, selector: "cadmus-bib-authors-editor", inputs: { parentForm: { classPropertyName: "parentForm", publicName: "parentForm", isSignal: true, isRequired: true, transformFunction: null }, controlName: { classPropertyName: "controlName", publicName: "controlName", isSignal: true, isRequired: false, transformFunction: null }, roleEntries: { classPropertyName: "roleEntries", publicName: "roleEntries", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (parentForm()) {\n<form [formGroup]=\"parentForm()\">\n <div [formArrayName]=\"controlName()\">\n @if (!authors || !authors.length) {\n <div style=\"margin: 8px 0\">\n <button\n type=\"button\"\n mat-flat-button\n (click)=\"addAuthor()\"\n class=\"mat-primary\"\n >\n <mat-icon>add_circle</mat-icon>\n author\n </button>\n </div>\n } @for ( item of authors?.controls; track item; let i = $index; let first =\n $first; let last = $last) {\n <div>\n <!-- child form -->\n <div [formGroupName]=\"i\" class=\"form-row\">\n <!-- child actions -->\n <div>\n {{ i + 1 }}.\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this author\"\n (click)=\"removeAuthor(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Add author below\"\n (click)=\"addAuthorBelow(i)\"\n >\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\n </button>\n <button\n [disabled]=\"first\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move author up\"\n (click)=\"moveAuthorUp(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 author down\"\n (click)=\"moveAuthorDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n </div>\n <!-- child controls -->\n <!-- last -->\n <mat-form-field>\n <mat-label>last name</mat-label>\n <input matInput formControlName=\"lastName\" spellcheck=\"false\" />\n @if ( item.get('lastName')?.hasError('required') &&\n (item.get('lastName')?.dirty || item.get('lastName')?.touched) ) {\n <mat-error>last name required</mat-error>\n } @if ( item.get('lastName')?.hasError('maxLength') &&\n (item.get('lastName')?.dirty || item.get('lastName')?.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n <!-- first -->\n <mat-form-field>\n <mat-label>first name</mat-label>\n <input matInput formControlName=\"firstName\" spellcheck=\"false\" />\n <mat-error>too long</mat-error>\n </mat-form-field>\n <!-- roleId -->\n @if (roleEntries()?.length) {\n <mat-form-field>\n <mat-label>role</mat-label>\n <mat-select formControlName=\"roleId\">\n <mat-option [value]=\"null\">(no role)</mat-option>\n @for (e of roleEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n } @else {\n <mat-form-field>\n <mat-label>role</mat-label>\n <input matInput formControlName=\"roleId\" spellcheck=\"false\" />\n <mat-error>too long</mat-error>\n </mat-form-field>\n }\n </div>\n </div>\n }\n </div>\n</form>\n}\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { 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: 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"] }] });
|
|
565
567
|
}
|
|
566
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
568
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BibAuthorsEditorComponent, decorators: [{
|
|
567
569
|
type: Component,
|
|
568
570
|
args: [{ selector: 'cadmus-bib-authors-editor', imports: [
|
|
569
571
|
FormsModule,
|
|
@@ -578,7 +580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
578
580
|
MatError,
|
|
579
581
|
MatSelect,
|
|
580
582
|
MatOption,
|
|
581
|
-
], template: "@if (parentForm()) {\
|
|
583
|
+
], template: "@if (parentForm()) {\n<form [formGroup]=\"parentForm()\">\n <div [formArrayName]=\"controlName()\">\n @if (!authors || !authors.length) {\n <div style=\"margin: 8px 0\">\n <button\n type=\"button\"\n mat-flat-button\n (click)=\"addAuthor()\"\n class=\"mat-primary\"\n >\n <mat-icon>add_circle</mat-icon>\n author\n </button>\n </div>\n } @for ( item of authors?.controls; track item; let i = $index; let first =\n $first; let last = $last) {\n <div>\n <!-- child form -->\n <div [formGroupName]=\"i\" class=\"form-row\">\n <!-- child actions -->\n <div>\n {{ i + 1 }}.\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this author\"\n (click)=\"removeAuthor(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Add author below\"\n (click)=\"addAuthorBelow(i)\"\n >\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\n </button>\n <button\n [disabled]=\"first\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move author up\"\n (click)=\"moveAuthorUp(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 author down\"\n (click)=\"moveAuthorDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n </div>\n <!-- child controls -->\n <!-- last -->\n <mat-form-field>\n <mat-label>last name</mat-label>\n <input matInput formControlName=\"lastName\" spellcheck=\"false\" />\n @if ( item.get('lastName')?.hasError('required') &&\n (item.get('lastName')?.dirty || item.get('lastName')?.touched) ) {\n <mat-error>last name required</mat-error>\n } @if ( item.get('lastName')?.hasError('maxLength') &&\n (item.get('lastName')?.dirty || item.get('lastName')?.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n <!-- first -->\n <mat-form-field>\n <mat-label>first name</mat-label>\n <input matInput formControlName=\"firstName\" spellcheck=\"false\" />\n <mat-error>too long</mat-error>\n </mat-form-field>\n <!-- roleId -->\n @if (roleEntries()?.length) {\n <mat-form-field>\n <mat-label>role</mat-label>\n <mat-select formControlName=\"roleId\">\n <mat-option [value]=\"null\">(no role)</mat-option>\n @for (e of roleEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n } @else {\n <mat-form-field>\n <mat-label>role</mat-label>\n <input matInput formControlName=\"roleId\" spellcheck=\"false\" />\n <mat-error>too long</mat-error>\n </mat-form-field>\n }\n </div>\n </div>\n }\n </div>\n</form>\n}\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
|
|
582
584
|
}], ctorParameters: () => [{ type: i2.FormBuilder }] });
|
|
583
585
|
|
|
584
586
|
/**
|
|
@@ -847,10 +849,10 @@ class BibliographyEntryComponent {
|
|
|
847
849
|
}
|
|
848
850
|
this.entry.set(this.getEntry());
|
|
849
851
|
}
|
|
850
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
851
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: BibliographyEntryComponent, isStandalone: true, selector: "cadmus-bibliography-entry", inputs: { entry: { classPropertyName: "entry", publicName: "entry", isSignal: true, isRequired: false, transformFunction: null }, langEntries: { classPropertyName: "langEntries", publicName: "langEntries", isSignal: true, isRequired: false, transformFunction: null }, typeEntries: { classPropertyName: "typeEntries", publicName: "typeEntries", isSignal: true, isRequired: false, transformFunction: null }, tagEntries: { classPropertyName: "tagEntries", publicName: "tagEntries", isSignal: true, isRequired: false, transformFunction: null }, roleEntries: { classPropertyName: "roleEntries", publicName: "roleEntries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { entry: "entryChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group>\r\n <!-- general -->\r\n <mat-tab label=\"General\">\r\n <!-- typeId -->\r\n <div class=\"form-row\">\r\n @if (typeEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <mat-select formControlName=\"type\">\r\n @for (e of typeEntries() || []; track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n } @else {\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n spellcheck=\"false\"\r\n formControlName=\"type\"\r\n />\r\n @if (type.hasError('required') && (type.dirty || type.touched)) {\r\n <mat-error>entry type required</mat-error>\r\n } @if (type.hasError('maxLength') && (type.dirty || type.touched)) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- tag (bound) -->\r\n @if (tagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of tagEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- language (bound) -->\r\n @if (langEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <mat-select formControlName=\"language\">\r\n @for (e of langEntries() || []; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- language (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <input matInput [formControl]=\"language\" />\r\n @if ( language.hasError('required') && (language.dirty ||\r\n language.touched) ) {\r\n <mat-error>required</mat-error>\r\n } @if ( language.hasError('pattern') && (language.dirty ||\r\n language.touched) ) {\r\n <mat-error>invalid</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- key -->\r\n <mat-form-field>\r\n <mat-label>key</mat-label>\r\n <input matInput [formControl]=\"key\" />\r\n @if (key.hasError('maxLength') && (key.dirty || key.touched)) {\r\n <mat-error>key too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- authors -->\r\n <fieldset>\r\n <legend>author(s)</legend>\r\n <cadmus-bib-authors-editor\r\n [parentForm]=\"form\"\r\n [controlName]=\"'authors'\"\r\n [roleEntries]=\"roleEntries()\"\r\n />\r\n </fieldset>\r\n\r\n <!-- title -->\r\n <div>\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>title</mat-label>\r\n <input matInput type=\"text\" formControlName=\"title\" />\r\n @if (title.hasError('required') && (title.dirty || title.touched)) {\r\n <mat-error>title required</mat-error>\r\n } @if ( title.hasError('maxLength') && (title.dirty || title.touched)\r\n ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- note -->\r\n <div>\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <textarea matInput formControlName=\"note\" rows=\"2\"></textarea>\r\n @if (note.hasError('maxLength') && (note.dirty || note.touched)) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </mat-tab>\r\n\r\n <!-- container -->\r\n <mat-tab label=\"Container\">\r\n <!-- contributors -->\r\n <cadmus-bib-authors-editor\r\n [parentForm]=\"form\"\r\n [controlName]=\"'contributors'\"\r\n [roleEntries]=\"roleEntries()\"\r\n />\r\n\r\n <!-- container -->\r\n <div>\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>container</mat-label>\r\n <input matInput type=\"text\" formControlName=\"container\" />\r\n @if ( container.hasError('maxLength') && (container.dirty ||\r\n container.touched) ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- number -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label>number</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n spellcheck=\"false\"\r\n formControlName=\"number\"\r\n />\r\n @if ( number.hasError('maxLength') && (number.dirty || number.touched)\r\n ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- firstPage -->\r\n \r\n <mat-form-field [style.width.em]=\"5\">\r\n <mat-label>from</mat-label>\r\n <input matInput type=\"number\" formControlName=\"firstPage\" />\r\n @if ( firstPage.hasError('min') && (firstPage.dirty ||\r\n firstPage.touched) ) {\r\n <mat-error>page less than 0</mat-error>\r\n } @if ( firstPage.hasError('max') && (firstPage.dirty ||\r\n firstPage.touched) ) {\r\n <mat-error>page number too big</mat-error>\r\n }\r\n </mat-form-field>\r\n -\r\n <!-- lastPage -->\r\n <mat-form-field [style.width.em]=\"5\">\r\n <mat-label>to</mat-label>\r\n <input matInput type=\"number\" formControlName=\"lastPage\" />\r\n @if ( lastPage.hasError('min') && (lastPage.dirty || lastPage.touched)\r\n ) {\r\n <mat-error>page less than 0</mat-error>\r\n } @if ( lastPage.hasError('max') && (lastPage.dirty ||\r\n lastPage.touched) ) {\r\n <mat-error>page number too big</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- publisher -->\r\n <mat-form-field>\r\n <mat-label>publisher</mat-label>\r\n <input matInput [formControl]=\"publisher\" />\r\n @if ( publisher.hasError('maxLength') && (publisher.dirty ||\r\n publisher.touched) ) {\r\n <mat-error>publisher too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- placePub -->\r\n <mat-form-field>\r\n <mat-label>place</mat-label>\r\n <input matInput type=\"text\" formControlName=\"placePub\" />\r\n @if ( placePub.hasError('maxLength') && (placePub.dirty ||\r\n placePub.touched) ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- yearPub -->\r\n <mat-form-field class=\"nr\">\r\n <mat-label>year</mat-label>\r\n <input matInput type=\"number\" formControlName=\"yearPub\" />\r\n @if ( yearPub.hasError('min') && (yearPub.dirty || yearPub.touched) )\r\n {\r\n <mat-error>year less than 0</mat-error>\r\n } @if ( yearPub.hasError('max') && (yearPub.dirty || yearPub.touched)\r\n ) {\r\n <mat-error>year past the current one</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- edition -->\r\n <mat-form-field class=\"nr\">\r\n <mat-label>ed.</mat-label>\r\n <input matInput type=\"number\" formControlName=\"edition\" />\r\n @if ( edition.hasError('min') && (edition.dirty || edition.touched) )\r\n {\r\n <mat-error>edition less than 0</mat-error>\r\n } @if ( edition.hasError('max') && (edition.dirty || edition.touched)\r\n ) {\r\n <mat-error>edition greater than 100</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- location -->\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n formControlName=\"location\"\r\n spellcheck=\"false\"\r\n />\r\n @if ( location.hasError('maxLength') && (location.dirty ||\r\n location.touched) ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- accessDate -->\r\n <mat-form-field>\r\n <mat-label>access date</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker\"\r\n formControlName=\"accessDate\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </mat-tab>\r\n\r\n <!-- keywords -->\r\n <mat-tab label=\"Keywords\">\r\n <form [formGroup]=\"keyForm\" (submit)=\"addKeyword()\">\r\n <div class=\"form-row\">\r\n <!-- language (bound) -->\r\n @if (langEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <mat-select formControlName=\"keyLanguage\">\r\n @for (e of langEntries() || []; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- language (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <input matInput [formControl]=\"keyLanguage\" />\r\n @if ( keyLanguage.hasError('required') && (keyLanguage.dirty ||\r\n keyLanguage.touched) ) {\r\n <mat-error>required</mat-error>\r\n } @if ( keyLanguage.hasError('pattern') && (keyLanguage.dirty ||\r\n keyLanguage.touched) ) {\r\n <mat-error>invalid</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- value -->\r\n <mat-form-field>\r\n <mat-label>value</mat-label>\r\n <input matInput type=\"text\" formControlName=\"keyValue\" />\r\n @if ( keyValue.hasError('required') && (keyValue.dirty ||\r\n keyValue.touched) ) {\r\n <mat-error>required</mat-error>\r\n } @if ( keyValue.hasError('maxLength') && (keyValue.dirty ||\r\n keyValue.touched) ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <button\r\n mat-flat-button\r\n type=\"submit\"\r\n [disabled]=\"keyForm.invalid\"\r\n matTooltip=\"Add new keyword\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon> keyword\r\n </button>\r\n </div>\r\n </form>\r\n <!-- list -->\r\n @if (keywords.length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>language</th>\r\n <th>value</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for ( k of keywords; track k; let i = $index; let first = $first; let\r\n last = $last) {\r\n <tr>\r\n <td>\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Remove this keyword\"\r\n (click)=\"deleteKeyword(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"first\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move keyword up\"\r\n (click)=\"moveKeywordUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"last\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move keyword down\"\r\n (click)=\"moveKeywordDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ k.language }}</td>\r\n <td>{{ k.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n }\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Cancel edit\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon class=\"mat-warn\">cancel</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n mat-icon-button\r\n matTooltip=\"Save entry\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".long-text{width:90%;max-width:800px}.nr{width:6em}th{font-weight:400;color:silver}.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:6px;margin-bottom:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { 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: "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: "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: BibAuthorsEditorComponent, selector: "cadmus-bib-authors-editor", inputs: ["parentForm", "controlName", "roleEntries"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { 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: "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: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }] });
|
|
852
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BibliographyEntryComponent, deps: [{ token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
853
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: BibliographyEntryComponent, isStandalone: true, selector: "cadmus-bibliography-entry", inputs: { entry: { classPropertyName: "entry", publicName: "entry", isSignal: true, isRequired: false, transformFunction: null }, langEntries: { classPropertyName: "langEntries", publicName: "langEntries", isSignal: true, isRequired: false, transformFunction: null }, typeEntries: { classPropertyName: "typeEntries", publicName: "typeEntries", isSignal: true, isRequired: false, transformFunction: null }, tagEntries: { classPropertyName: "tagEntries", publicName: "tagEntries", isSignal: true, isRequired: false, transformFunction: null }, roleEntries: { classPropertyName: "roleEntries", publicName: "roleEntries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { entry: "entryChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-tab-group>\n <!-- general -->\n <mat-tab label=\"General\">\n <!-- typeId -->\n <div class=\"form-row\">\n @if (typeEntries()?.length) {\n <mat-form-field>\n <mat-label>type</mat-label>\n <mat-select formControlName=\"type\">\n @for (e of typeEntries() || []; track e) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n } @else {\n <mat-form-field>\n <mat-label>type</mat-label>\n <input\n matInput\n type=\"text\"\n spellcheck=\"false\"\n formControlName=\"type\"\n />\n @if (type.hasError('required') && (type.dirty || type.touched)) {\n <mat-error>entry type required</mat-error>\n } @if (type.hasError('maxLength') && (type.dirty || type.touched)) {\n <mat-error>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 (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n }\n\n <!-- language (bound) -->\n @if (langEntries()?.length) {\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select formControlName=\"language\">\n @for (e of langEntries() || []; track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\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 ( language.hasError('required') && (language.dirty ||\n language.touched) ) {\n <mat-error>required</mat-error>\n } @if ( language.hasError('pattern') && (language.dirty ||\n language.touched) ) {\n <mat-error>invalid</mat-error>\n }\n </mat-form-field>\n }\n\n <!-- key -->\n <mat-form-field>\n <mat-label>key</mat-label>\n <input matInput [formControl]=\"key\" />\n @if (key.hasError('maxLength') && (key.dirty || key.touched)) {\n <mat-error>key too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- authors -->\n <fieldset>\n <legend>author(s)</legend>\n <cadmus-bib-authors-editor\n [parentForm]=\"form\"\n [controlName]=\"'authors'\"\n [roleEntries]=\"roleEntries()\"\n />\n </fieldset>\n\n <!-- title -->\n <div>\n <mat-form-field class=\"long-text\">\n <mat-label>title</mat-label>\n <input matInput type=\"text\" formControlName=\"title\" />\n @if (title.hasError('required') && (title.dirty || title.touched)) {\n <mat-error>title required</mat-error>\n } @if ( title.hasError('maxLength') && (title.dirty || title.touched)\n ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- note -->\n <div>\n <mat-form-field class=\"long-text\">\n <mat-label>note</mat-label>\n <textarea matInput formControlName=\"note\" rows=\"2\"></textarea>\n @if (note.hasError('maxLength') && (note.dirty || note.touched)) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n </div>\n </mat-tab>\n\n <!-- container -->\n <mat-tab label=\"Container\">\n <!-- contributors -->\n <cadmus-bib-authors-editor\n [parentForm]=\"form\"\n [controlName]=\"'contributors'\"\n [roleEntries]=\"roleEntries()\"\n />\n\n <!-- container -->\n <div>\n <mat-form-field class=\"long-text\">\n <mat-label>container</mat-label>\n <input matInput type=\"text\" formControlName=\"container\" />\n @if ( container.hasError('maxLength') && (container.dirty ||\n container.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- number -->\n <div>\n <mat-form-field>\n <mat-label>number</mat-label>\n <input\n matInput\n type=\"text\"\n spellcheck=\"false\"\n formControlName=\"number\"\n />\n @if ( number.hasError('maxLength') && (number.dirty || number.touched)\n ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n\n <!-- firstPage -->\n \n <mat-form-field [style.width.em]=\"5\">\n <mat-label>from</mat-label>\n <input matInput type=\"number\" formControlName=\"firstPage\" />\n @if ( firstPage.hasError('min') && (firstPage.dirty ||\n firstPage.touched) ) {\n <mat-error>page less than 0</mat-error>\n } @if ( firstPage.hasError('max') && (firstPage.dirty ||\n firstPage.touched) ) {\n <mat-error>page number too big</mat-error>\n }\n </mat-form-field>\n -\n <!-- lastPage -->\n <mat-form-field [style.width.em]=\"5\">\n <mat-label>to</mat-label>\n <input matInput type=\"number\" formControlName=\"lastPage\" />\n @if ( lastPage.hasError('min') && (lastPage.dirty || lastPage.touched)\n ) {\n <mat-error>page less than 0</mat-error>\n } @if ( lastPage.hasError('max') && (lastPage.dirty ||\n lastPage.touched) ) {\n <mat-error>page number too big</mat-error>\n }\n </mat-form-field>\n </div>\n\n <div class=\"form-row\">\n <!-- publisher -->\n <mat-form-field>\n <mat-label>publisher</mat-label>\n <input matInput [formControl]=\"publisher\" />\n @if ( publisher.hasError('maxLength') && (publisher.dirty ||\n publisher.touched) ) {\n <mat-error>publisher too long</mat-error>\n }\n </mat-form-field>\n\n <!-- placePub -->\n <mat-form-field>\n <mat-label>place</mat-label>\n <input matInput type=\"text\" formControlName=\"placePub\" />\n @if ( placePub.hasError('maxLength') && (placePub.dirty ||\n placePub.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n\n <!-- yearPub -->\n <mat-form-field class=\"nr\">\n <mat-label>year</mat-label>\n <input matInput type=\"number\" formControlName=\"yearPub\" />\n @if ( yearPub.hasError('min') && (yearPub.dirty || yearPub.touched) )\n {\n <mat-error>year less than 0</mat-error>\n } @if ( yearPub.hasError('max') && (yearPub.dirty || yearPub.touched)\n ) {\n <mat-error>year past the current one</mat-error>\n }\n </mat-form-field>\n\n <!-- edition -->\n <mat-form-field class=\"nr\">\n <mat-label>ed.</mat-label>\n <input matInput type=\"number\" formControlName=\"edition\" />\n @if ( edition.hasError('min') && (edition.dirty || edition.touched) )\n {\n <mat-error>edition less than 0</mat-error>\n } @if ( edition.hasError('max') && (edition.dirty || edition.touched)\n ) {\n <mat-error>edition greater than 100</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- location -->\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label>location</mat-label>\n <input\n matInput\n type=\"text\"\n formControlName=\"location\"\n spellcheck=\"false\"\n />\n @if ( location.hasError('maxLength') && (location.dirty ||\n location.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n\n <!-- accessDate -->\n <mat-form-field>\n <mat-label>access date</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n formControlName=\"accessDate\"\n />\n <mat-datepicker-toggle\n matSuffix\n [for]=\"picker\"\n ></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n </mat-tab>\n\n <!-- keywords -->\n <mat-tab label=\"Keywords\">\n <form [formGroup]=\"keyForm\" (submit)=\"addKeyword()\">\n <div class=\"form-row\">\n <!-- language (bound) -->\n @if (langEntries()?.length) {\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select formControlName=\"keyLanguage\">\n @for (e of langEntries() || []; track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- language (free) -->\n @else {\n <mat-form-field>\n <mat-label>language</mat-label>\n <input matInput [formControl]=\"keyLanguage\" />\n @if ( keyLanguage.hasError('required') && (keyLanguage.dirty ||\n keyLanguage.touched) ) {\n <mat-error>required</mat-error>\n } @if ( keyLanguage.hasError('pattern') && (keyLanguage.dirty ||\n keyLanguage.touched) ) {\n <mat-error>invalid</mat-error>\n }\n </mat-form-field>\n }\n\n <!-- value -->\n <mat-form-field>\n <mat-label>value</mat-label>\n <input matInput type=\"text\" formControlName=\"keyValue\" />\n @if ( keyValue.hasError('required') && (keyValue.dirty ||\n keyValue.touched) ) {\n <mat-error>required</mat-error>\n } @if ( keyValue.hasError('maxLength') && (keyValue.dirty ||\n keyValue.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"keyForm.invalid\"\n matTooltip=\"Add new keyword\"\n >\n <mat-icon class=\"mat-primary\">add_circle</mat-icon> keyword\n </button>\n </div>\n </form>\n <!-- list -->\n @if (keywords.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>language</th>\n <th>value</th>\n </tr>\n </thead>\n <tbody>\n @for ( k of keywords; track k; let i = $index; let first = $first; let\n last = $last) {\n <tr>\n <td>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this keyword\"\n (click)=\"deleteKeyword(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n <button\n [disabled]=\"first\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move keyword up\"\n (click)=\"moveKeywordUp(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 keyword down\"\n (click)=\"moveKeywordDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n </td>\n <td>{{ k.language }}</td>\n <td>{{ k.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n </mat-tab>\n </mat-tab-group>\n\n <!-- buttons -->\n <div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Cancel edit\"\n (click)=\"cancel()\"\n >\n <mat-icon class=\"mat-warn\">cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n [disabled]=\"form.invalid\"\n mat-icon-button\n matTooltip=\"Save entry\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".long-text{width:90%;max-width:800px}.nr{width:6em}th{font-weight:400;color:silver}.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:6px;margin-bottom:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { 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: "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: "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: BibAuthorsEditorComponent, selector: "cadmus-bib-authors-editor", inputs: ["parentForm", "controlName", "roleEntries"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { 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: "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: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }] });
|
|
852
854
|
}
|
|
853
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
855
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BibliographyEntryComponent, decorators: [{
|
|
854
856
|
type: Component,
|
|
855
857
|
args: [{ selector: 'cadmus-bibliography-entry', imports: [
|
|
856
858
|
FormsModule,
|
|
@@ -872,7 +874,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
872
874
|
MatTooltip,
|
|
873
875
|
MatIcon,
|
|
874
876
|
MatIconButton,
|
|
875
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group>\r\n <!-- general -->\r\n <mat-tab label=\"General\">\r\n <!-- typeId -->\r\n <div class=\"form-row\">\r\n @if (typeEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <mat-select formControlName=\"type\">\r\n @for (e of typeEntries() || []; track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n } @else {\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n spellcheck=\"false\"\r\n formControlName=\"type\"\r\n />\r\n @if (type.hasError('required') && (type.dirty || type.touched)) {\r\n <mat-error>entry type required</mat-error>\r\n } @if (type.hasError('maxLength') && (type.dirty || type.touched)) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- tag (bound) -->\r\n @if (tagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of tagEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- language (bound) -->\r\n @if (langEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <mat-select formControlName=\"language\">\r\n @for (e of langEntries() || []; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- language (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <input matInput [formControl]=\"language\" />\r\n @if ( language.hasError('required') && (language.dirty ||\r\n language.touched) ) {\r\n <mat-error>required</mat-error>\r\n } @if ( language.hasError('pattern') && (language.dirty ||\r\n language.touched) ) {\r\n <mat-error>invalid</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- key -->\r\n <mat-form-field>\r\n <mat-label>key</mat-label>\r\n <input matInput [formControl]=\"key\" />\r\n @if (key.hasError('maxLength') && (key.dirty || key.touched)) {\r\n <mat-error>key too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- authors -->\r\n <fieldset>\r\n <legend>author(s)</legend>\r\n <cadmus-bib-authors-editor\r\n [parentForm]=\"form\"\r\n [controlName]=\"'authors'\"\r\n [roleEntries]=\"roleEntries()\"\r\n />\r\n </fieldset>\r\n\r\n <!-- title -->\r\n <div>\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>title</mat-label>\r\n <input matInput type=\"text\" formControlName=\"title\" />\r\n @if (title.hasError('required') && (title.dirty || title.touched)) {\r\n <mat-error>title required</mat-error>\r\n } @if ( title.hasError('maxLength') && (title.dirty || title.touched)\r\n ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- note -->\r\n <div>\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <textarea matInput formControlName=\"note\" rows=\"2\"></textarea>\r\n @if (note.hasError('maxLength') && (note.dirty || note.touched)) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </mat-tab>\r\n\r\n <!-- container -->\r\n <mat-tab label=\"Container\">\r\n <!-- contributors -->\r\n <cadmus-bib-authors-editor\r\n [parentForm]=\"form\"\r\n [controlName]=\"'contributors'\"\r\n [roleEntries]=\"roleEntries()\"\r\n />\r\n\r\n <!-- container -->\r\n <div>\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>container</mat-label>\r\n <input matInput type=\"text\" formControlName=\"container\" />\r\n @if ( container.hasError('maxLength') && (container.dirty ||\r\n container.touched) ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- number -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label>number</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n spellcheck=\"false\"\r\n formControlName=\"number\"\r\n />\r\n @if ( number.hasError('maxLength') && (number.dirty || number.touched)\r\n ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- firstPage -->\r\n \r\n <mat-form-field [style.width.em]=\"5\">\r\n <mat-label>from</mat-label>\r\n <input matInput type=\"number\" formControlName=\"firstPage\" />\r\n @if ( firstPage.hasError('min') && (firstPage.dirty ||\r\n firstPage.touched) ) {\r\n <mat-error>page less than 0</mat-error>\r\n } @if ( firstPage.hasError('max') && (firstPage.dirty ||\r\n firstPage.touched) ) {\r\n <mat-error>page number too big</mat-error>\r\n }\r\n </mat-form-field>\r\n -\r\n <!-- lastPage -->\r\n <mat-form-field [style.width.em]=\"5\">\r\n <mat-label>to</mat-label>\r\n <input matInput type=\"number\" formControlName=\"lastPage\" />\r\n @if ( lastPage.hasError('min') && (lastPage.dirty || lastPage.touched)\r\n ) {\r\n <mat-error>page less than 0</mat-error>\r\n } @if ( lastPage.hasError('max') && (lastPage.dirty ||\r\n lastPage.touched) ) {\r\n <mat-error>page number too big</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- publisher -->\r\n <mat-form-field>\r\n <mat-label>publisher</mat-label>\r\n <input matInput [formControl]=\"publisher\" />\r\n @if ( publisher.hasError('maxLength') && (publisher.dirty ||\r\n publisher.touched) ) {\r\n <mat-error>publisher too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- placePub -->\r\n <mat-form-field>\r\n <mat-label>place</mat-label>\r\n <input matInput type=\"text\" formControlName=\"placePub\" />\r\n @if ( placePub.hasError('maxLength') && (placePub.dirty ||\r\n placePub.touched) ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- yearPub -->\r\n <mat-form-field class=\"nr\">\r\n <mat-label>year</mat-label>\r\n <input matInput type=\"number\" formControlName=\"yearPub\" />\r\n @if ( yearPub.hasError('min') && (yearPub.dirty || yearPub.touched) )\r\n {\r\n <mat-error>year less than 0</mat-error>\r\n } @if ( yearPub.hasError('max') && (yearPub.dirty || yearPub.touched)\r\n ) {\r\n <mat-error>year past the current one</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- edition -->\r\n <mat-form-field class=\"nr\">\r\n <mat-label>ed.</mat-label>\r\n <input matInput type=\"number\" formControlName=\"edition\" />\r\n @if ( edition.hasError('min') && (edition.dirty || edition.touched) )\r\n {\r\n <mat-error>edition less than 0</mat-error>\r\n } @if ( edition.hasError('max') && (edition.dirty || edition.touched)\r\n ) {\r\n <mat-error>edition greater than 100</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- location -->\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label>location</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n formControlName=\"location\"\r\n spellcheck=\"false\"\r\n />\r\n @if ( location.hasError('maxLength') && (location.dirty ||\r\n location.touched) ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- accessDate -->\r\n <mat-form-field>\r\n <mat-label>access date</mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"picker\"\r\n formControlName=\"accessDate\"\r\n />\r\n <mat-datepicker-toggle\r\n matSuffix\r\n [for]=\"picker\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </mat-tab>\r\n\r\n <!-- keywords -->\r\n <mat-tab label=\"Keywords\">\r\n <form [formGroup]=\"keyForm\" (submit)=\"addKeyword()\">\r\n <div class=\"form-row\">\r\n <!-- language (bound) -->\r\n @if (langEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <mat-select formControlName=\"keyLanguage\">\r\n @for (e of langEntries() || []; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- language (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <input matInput [formControl]=\"keyLanguage\" />\r\n @if ( keyLanguage.hasError('required') && (keyLanguage.dirty ||\r\n keyLanguage.touched) ) {\r\n <mat-error>required</mat-error>\r\n } @if ( keyLanguage.hasError('pattern') && (keyLanguage.dirty ||\r\n keyLanguage.touched) ) {\r\n <mat-error>invalid</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- value -->\r\n <mat-form-field>\r\n <mat-label>value</mat-label>\r\n <input matInput type=\"text\" formControlName=\"keyValue\" />\r\n @if ( keyValue.hasError('required') && (keyValue.dirty ||\r\n keyValue.touched) ) {\r\n <mat-error>required</mat-error>\r\n } @if ( keyValue.hasError('maxLength') && (keyValue.dirty ||\r\n keyValue.touched) ) {\r\n <mat-error>too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <button\r\n mat-flat-button\r\n type=\"submit\"\r\n [disabled]=\"keyForm.invalid\"\r\n matTooltip=\"Add new keyword\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon> keyword\r\n </button>\r\n </div>\r\n </form>\r\n <!-- list -->\r\n @if (keywords.length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>language</th>\r\n <th>value</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for ( k of keywords; track k; let i = $index; let first = $first; let\r\n last = $last) {\r\n <tr>\r\n <td>\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Remove this keyword\"\r\n (click)=\"deleteKeyword(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"first\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move keyword up\"\r\n (click)=\"moveKeywordUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"last\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move keyword down\"\r\n (click)=\"moveKeywordDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ k.language }}</td>\r\n <td>{{ k.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n }\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- buttons -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Cancel edit\"\r\n (click)=\"cancel()\"\r\n >\r\n <mat-icon class=\"mat-warn\">cancel</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n mat-icon-button\r\n matTooltip=\"Save entry\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".long-text{width:90%;max-width:800px}.nr{width:6em}th{font-weight:400;color:silver}.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:6px;margin-bottom:8px}\n"] }]
|
|
877
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-tab-group>\n <!-- general -->\n <mat-tab label=\"General\">\n <!-- typeId -->\n <div class=\"form-row\">\n @if (typeEntries()?.length) {\n <mat-form-field>\n <mat-label>type</mat-label>\n <mat-select formControlName=\"type\">\n @for (e of typeEntries() || []; track e) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n } @else {\n <mat-form-field>\n <mat-label>type</mat-label>\n <input\n matInput\n type=\"text\"\n spellcheck=\"false\"\n formControlName=\"type\"\n />\n @if (type.hasError('required') && (type.dirty || type.touched)) {\n <mat-error>entry type required</mat-error>\n } @if (type.hasError('maxLength') && (type.dirty || type.touched)) {\n <mat-error>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 (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n }\n\n <!-- language (bound) -->\n @if (langEntries()?.length) {\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select formControlName=\"language\">\n @for (e of langEntries() || []; track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\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 ( language.hasError('required') && (language.dirty ||\n language.touched) ) {\n <mat-error>required</mat-error>\n } @if ( language.hasError('pattern') && (language.dirty ||\n language.touched) ) {\n <mat-error>invalid</mat-error>\n }\n </mat-form-field>\n }\n\n <!-- key -->\n <mat-form-field>\n <mat-label>key</mat-label>\n <input matInput [formControl]=\"key\" />\n @if (key.hasError('maxLength') && (key.dirty || key.touched)) {\n <mat-error>key too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- authors -->\n <fieldset>\n <legend>author(s)</legend>\n <cadmus-bib-authors-editor\n [parentForm]=\"form\"\n [controlName]=\"'authors'\"\n [roleEntries]=\"roleEntries()\"\n />\n </fieldset>\n\n <!-- title -->\n <div>\n <mat-form-field class=\"long-text\">\n <mat-label>title</mat-label>\n <input matInput type=\"text\" formControlName=\"title\" />\n @if (title.hasError('required') && (title.dirty || title.touched)) {\n <mat-error>title required</mat-error>\n } @if ( title.hasError('maxLength') && (title.dirty || title.touched)\n ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- note -->\n <div>\n <mat-form-field class=\"long-text\">\n <mat-label>note</mat-label>\n <textarea matInput formControlName=\"note\" rows=\"2\"></textarea>\n @if (note.hasError('maxLength') && (note.dirty || note.touched)) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n </div>\n </mat-tab>\n\n <!-- container -->\n <mat-tab label=\"Container\">\n <!-- contributors -->\n <cadmus-bib-authors-editor\n [parentForm]=\"form\"\n [controlName]=\"'contributors'\"\n [roleEntries]=\"roleEntries()\"\n />\n\n <!-- container -->\n <div>\n <mat-form-field class=\"long-text\">\n <mat-label>container</mat-label>\n <input matInput type=\"text\" formControlName=\"container\" />\n @if ( container.hasError('maxLength') && (container.dirty ||\n container.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- number -->\n <div>\n <mat-form-field>\n <mat-label>number</mat-label>\n <input\n matInput\n type=\"text\"\n spellcheck=\"false\"\n formControlName=\"number\"\n />\n @if ( number.hasError('maxLength') && (number.dirty || number.touched)\n ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n\n <!-- firstPage -->\n \n <mat-form-field [style.width.em]=\"5\">\n <mat-label>from</mat-label>\n <input matInput type=\"number\" formControlName=\"firstPage\" />\n @if ( firstPage.hasError('min') && (firstPage.dirty ||\n firstPage.touched) ) {\n <mat-error>page less than 0</mat-error>\n } @if ( firstPage.hasError('max') && (firstPage.dirty ||\n firstPage.touched) ) {\n <mat-error>page number too big</mat-error>\n }\n </mat-form-field>\n -\n <!-- lastPage -->\n <mat-form-field [style.width.em]=\"5\">\n <mat-label>to</mat-label>\n <input matInput type=\"number\" formControlName=\"lastPage\" />\n @if ( lastPage.hasError('min') && (lastPage.dirty || lastPage.touched)\n ) {\n <mat-error>page less than 0</mat-error>\n } @if ( lastPage.hasError('max') && (lastPage.dirty ||\n lastPage.touched) ) {\n <mat-error>page number too big</mat-error>\n }\n </mat-form-field>\n </div>\n\n <div class=\"form-row\">\n <!-- publisher -->\n <mat-form-field>\n <mat-label>publisher</mat-label>\n <input matInput [formControl]=\"publisher\" />\n @if ( publisher.hasError('maxLength') && (publisher.dirty ||\n publisher.touched) ) {\n <mat-error>publisher too long</mat-error>\n }\n </mat-form-field>\n\n <!-- placePub -->\n <mat-form-field>\n <mat-label>place</mat-label>\n <input matInput type=\"text\" formControlName=\"placePub\" />\n @if ( placePub.hasError('maxLength') && (placePub.dirty ||\n placePub.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n\n <!-- yearPub -->\n <mat-form-field class=\"nr\">\n <mat-label>year</mat-label>\n <input matInput type=\"number\" formControlName=\"yearPub\" />\n @if ( yearPub.hasError('min') && (yearPub.dirty || yearPub.touched) )\n {\n <mat-error>year less than 0</mat-error>\n } @if ( yearPub.hasError('max') && (yearPub.dirty || yearPub.touched)\n ) {\n <mat-error>year past the current one</mat-error>\n }\n </mat-form-field>\n\n <!-- edition -->\n <mat-form-field class=\"nr\">\n <mat-label>ed.</mat-label>\n <input matInput type=\"number\" formControlName=\"edition\" />\n @if ( edition.hasError('min') && (edition.dirty || edition.touched) )\n {\n <mat-error>edition less than 0</mat-error>\n } @if ( edition.hasError('max') && (edition.dirty || edition.touched)\n ) {\n <mat-error>edition greater than 100</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- location -->\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label>location</mat-label>\n <input\n matInput\n type=\"text\"\n formControlName=\"location\"\n spellcheck=\"false\"\n />\n @if ( location.hasError('maxLength') && (location.dirty ||\n location.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n\n <!-- accessDate -->\n <mat-form-field>\n <mat-label>access date</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n formControlName=\"accessDate\"\n />\n <mat-datepicker-toggle\n matSuffix\n [for]=\"picker\"\n ></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n </mat-tab>\n\n <!-- keywords -->\n <mat-tab label=\"Keywords\">\n <form [formGroup]=\"keyForm\" (submit)=\"addKeyword()\">\n <div class=\"form-row\">\n <!-- language (bound) -->\n @if (langEntries()?.length) {\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select formControlName=\"keyLanguage\">\n @for (e of langEntries() || []; track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- language (free) -->\n @else {\n <mat-form-field>\n <mat-label>language</mat-label>\n <input matInput [formControl]=\"keyLanguage\" />\n @if ( keyLanguage.hasError('required') && (keyLanguage.dirty ||\n keyLanguage.touched) ) {\n <mat-error>required</mat-error>\n } @if ( keyLanguage.hasError('pattern') && (keyLanguage.dirty ||\n keyLanguage.touched) ) {\n <mat-error>invalid</mat-error>\n }\n </mat-form-field>\n }\n\n <!-- value -->\n <mat-form-field>\n <mat-label>value</mat-label>\n <input matInput type=\"text\" formControlName=\"keyValue\" />\n @if ( keyValue.hasError('required') && (keyValue.dirty ||\n keyValue.touched) ) {\n <mat-error>required</mat-error>\n } @if ( keyValue.hasError('maxLength') && (keyValue.dirty ||\n keyValue.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"keyForm.invalid\"\n matTooltip=\"Add new keyword\"\n >\n <mat-icon class=\"mat-primary\">add_circle</mat-icon> keyword\n </button>\n </div>\n </form>\n <!-- list -->\n @if (keywords.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>language</th>\n <th>value</th>\n </tr>\n </thead>\n <tbody>\n @for ( k of keywords; track k; let i = $index; let first = $first; let\n last = $last) {\n <tr>\n <td>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this keyword\"\n (click)=\"deleteKeyword(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n <button\n [disabled]=\"first\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move keyword up\"\n (click)=\"moveKeywordUp(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 keyword down\"\n (click)=\"moveKeywordDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n </td>\n <td>{{ k.language }}</td>\n <td>{{ k.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n </mat-tab>\n </mat-tab-group>\n\n <!-- buttons -->\n <div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Cancel edit\"\n (click)=\"cancel()\"\n >\n <mat-icon class=\"mat-warn\">cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n [disabled]=\"form.invalid\"\n mat-icon-button\n matTooltip=\"Save entry\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".long-text{width:90%;max-width:800px}.nr{width:6em}th{font-weight:400;color:silver}.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:6px;margin-bottom:8px}\n"] }]
|
|
876
878
|
}], ctorParameters: () => [{ type: i2.FormBuilder }] });
|
|
877
879
|
|
|
878
880
|
/**
|
|
@@ -1243,10 +1245,10 @@ class BibliographyPartComponent extends ModelEditorComponentBase {
|
|
|
1243
1245
|
}
|
|
1244
1246
|
return sb.join('');
|
|
1245
1247
|
}
|
|
1246
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1247
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
1248
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BibliographyPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1249
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: BibliographyPartComponent, isStandalone: true, selector: "cadmus-bibliography-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Bibliography Part\"\n }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addEntry()\"\n >\n <mat-icon>add_circle</mat-icon> entry\n </button>\n @if (entries.value.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>type</th>\n <th>author(s)</th>\n <th>title</th>\n </tr>\n </thead>\n <tbody>\n @for ( entry of entries.value; track entry; let i = $index; let first\n = $first; let last = $last) {\n <tr [class.selected]=\"editedEntry === entry\">\n <td class=\"fit-width\">\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Edit entry\"\n (click)=\"editEntry(entry, i)\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move entry up\"\n [disabled]=\"first\"\n (click)=\"moveEntryUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move entry down\"\n [disabled]=\"last\"\n (click)=\"moveEntryDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this entry\"\n (click)=\"removeEntry(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ entryTypeToString(entry.typeId) }}</td>\n <td>{{ getAuthors(entry.authors || []) }}</td>\n <td>{{ entry.title }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n <!-- entry editor -->\n <mat-expansion-panel\n id=\"editor\"\n [expanded]=\"editedEntry\"\n [disabled]=\"!editedEntry\"\n >\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ editedEntry?.title || \"entry\" }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <fieldset>\n <cadmus-bibliography-entry\n [entry]=\"editedEntry\"\n [langEntries]=\"langEntries\"\n [typeEntries]=\"typeEntries\"\n [tagEntries]=\"tagEntries\"\n [roleEntries]=\"roleEntries\"\n (editorClose)=\"closeEntry()\"\n (entryChange)=\"saveEntry($event!)\"\n />\n </fieldset>\n </mat-expansion-panel>\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}#editor{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i4$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i4$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { 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: "directive", type: MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: BibliographyEntryComponent, selector: "cadmus-bibliography-entry", inputs: ["entry", "langEntries", "typeEntries", "tagEntries", "roleEntries"], outputs: ["entryChange", "editorClose"] }, { kind: "component", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }] });
|
|
1248
1250
|
}
|
|
1249
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: BibliographyPartComponent, decorators: [{
|
|
1250
1252
|
type: Component,
|
|
1251
1253
|
args: [{ selector: 'cadmus-bibliography-part', imports: [
|
|
1252
1254
|
FormsModule,
|
|
@@ -1265,7 +1267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
1265
1267
|
TitleCasePipe,
|
|
1266
1268
|
BibliographyEntryComponent,
|
|
1267
1269
|
CloseSaveButtonsComponent,
|
|
1268
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\
|
|
1270
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Bibliography Part\"\n }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addEntry()\"\n >\n <mat-icon>add_circle</mat-icon> entry\n </button>\n @if (entries.value.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>type</th>\n <th>author(s)</th>\n <th>title</th>\n </tr>\n </thead>\n <tbody>\n @for ( entry of entries.value; track entry; let i = $index; let first\n = $first; let last = $last) {\n <tr [class.selected]=\"editedEntry === entry\">\n <td class=\"fit-width\">\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Edit entry\"\n (click)=\"editEntry(entry, i)\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move entry up\"\n [disabled]=\"first\"\n (click)=\"moveEntryUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move entry down\"\n [disabled]=\"last\"\n (click)=\"moveEntryDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this entry\"\n (click)=\"removeEntry(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ entryTypeToString(entry.typeId) }}</td>\n <td>{{ getAuthors(entry.authors || []) }}</td>\n <td>{{ entry.title }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n <!-- entry editor -->\n <mat-expansion-panel\n id=\"editor\"\n [expanded]=\"editedEntry\"\n [disabled]=\"!editedEntry\"\n >\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ editedEntry?.title || \"entry\" }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <fieldset>\n <cadmus-bibliography-entry\n [entry]=\"editedEntry\"\n [langEntries]=\"langEntries\"\n [typeEntries]=\"typeEntries\"\n [tagEntries]=\"tagEntries\"\n [roleEntries]=\"roleEntries\"\n (editorClose)=\"closeEntry()\"\n (entryChange)=\"saveEntry($event!)\"\n />\n </fieldset>\n </mat-expansion-panel>\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}#editor{margin-top:8px}\n"] }]
|
|
1269
1271
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }, { type: i3.DialogService }] });
|
|
1270
1272
|
|
|
1271
1273
|
/**
|
|
@@ -1419,10 +1421,10 @@ class CategoriesPartComponent extends ModelEditorComponentBase {
|
|
|
1419
1421
|
renderLabel(label) {
|
|
1420
1422
|
return renderLabelFromLastColon(label);
|
|
1421
1423
|
}
|
|
1422
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1423
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
1424
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CategoriesPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
1425
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: CategoriesPartComponent, isStandalone: true, selector: "cadmus-categories-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon>picture_in_picture</mat-icon>\n </div>\n <mat-card-title\n [matBadge]=\"categories.value.length\"\n matBadgeOverlap=\"false\"\n >\n {{ (modelName() | titlecase) || \"Categories Part\" }}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <div id=\"container\">\n <!-- available categories (from thesaurus) -->\n <fieldset id=\"picker\">\n <legend>available categories</legend>\n <cadmus-thesaurus-tree\n [entries]=\"entries\"\n rootLabel=\"categories\"\n [renderLabel]=\"renderLabel\"\n (entryChange)=\"onEntryChange($event)\"\n />\n </fieldset>\n\n <!-- categories -->\n @if (categories.value.length) {\n <fieldset id=\"list\">\n <legend>assigned categories</legend>\n <table>\n <tbody>\n @for (entry of categories.value; track entry; let i = $index) {\n <tr>\n <td>\n <button\n type=\"button\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this category\"\n (click)=\"removeCategory(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td [matTooltip]=\"entry.id\">{{ entry.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n </fieldset>\n }\n </div>\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: [".example-tree-progress-bar{margin-left:30px}.example-tree-nested-node{padding-left:30px}mat-tree{margin-left:40px}.mat-tree-node{padding:0;background-color:#fff}.mat-nested-tree-node{top:-24px}ul,li{list-style:none;margin:0;padding:0}li.example-tree-container{border-bottom:0}ul{padding-left:40px}li{padding-left:40px;border:1px dotted grey;border-width:0 0 1px 1px;position:relative;top:-24px}li.mat-tree-node,li div{margin:0;position:relative;top:24px}li ul{border-top:1px dotted grey;margin-left:-40px;padding-left:60px}.mat-nested-tree-node:last-child ul{border-left:1px solid white;margin-left:-41px}.mat-mdc-icon-button{z-index:100}h3{border-bottom:1px solid silver}div#picker{grid-area:picker}div#list{grid-area:list}div#container{display:grid;grid-template-rows:1fr;grid-template-columns:auto auto;grid-template-areas:\"picker list\";gap:8px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"picker\" \"list\"}}fieldset{border:1px solid silver;border-radius:8px;padding:8px 16px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { 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: "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: "component", type: ThesaurusTreeComponent, selector: "cadmus-thesaurus-tree", inputs: ["entries", "rootLabel", "renderLabel"], outputs: ["entryChange"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }] });
|
|
1424
1426
|
}
|
|
1425
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1427
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CategoriesPartComponent, decorators: [{
|
|
1426
1428
|
type: Component,
|
|
1427
1429
|
args: [{ selector: 'cadmus-categories-part', imports: [
|
|
1428
1430
|
FormsModule,
|
|
@@ -1440,7 +1442,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
1440
1442
|
TitleCasePipe,
|
|
1441
1443
|
CloseSaveButtonsComponent,
|
|
1442
1444
|
ThesaurusTreeComponent,
|
|
1443
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\
|
|
1445
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon>picture_in_picture</mat-icon>\n </div>\n <mat-card-title\n [matBadge]=\"categories.value.length\"\n matBadgeOverlap=\"false\"\n >\n {{ (modelName() | titlecase) || \"Categories Part\" }}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <div id=\"container\">\n <!-- available categories (from thesaurus) -->\n <fieldset id=\"picker\">\n <legend>available categories</legend>\n <cadmus-thesaurus-tree\n [entries]=\"entries\"\n rootLabel=\"categories\"\n [renderLabel]=\"renderLabel\"\n (entryChange)=\"onEntryChange($event)\"\n />\n </fieldset>\n\n <!-- categories -->\n @if (categories.value.length) {\n <fieldset id=\"list\">\n <legend>assigned categories</legend>\n <table>\n <tbody>\n @for (entry of categories.value; track entry; let i = $index) {\n <tr>\n <td>\n <button\n type=\"button\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this category\"\n (click)=\"removeCategory(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td [matTooltip]=\"entry.id\">{{ entry.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n </fieldset>\n }\n </div>\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: [".example-tree-progress-bar{margin-left:30px}.example-tree-nested-node{padding-left:30px}mat-tree{margin-left:40px}.mat-tree-node{padding:0;background-color:#fff}.mat-nested-tree-node{top:-24px}ul,li{list-style:none;margin:0;padding:0}li.example-tree-container{border-bottom:0}ul{padding-left:40px}li{padding-left:40px;border:1px dotted grey;border-width:0 0 1px 1px;position:relative;top:-24px}li.mat-tree-node,li div{margin:0;position:relative;top:24px}li ul{border-top:1px dotted grey;margin-left:-40px;padding-left:60px}.mat-nested-tree-node:last-child ul{border-left:1px solid white;margin-left:-41px}.mat-mdc-icon-button{z-index:100}h3{border-bottom:1px solid silver}div#picker{grid-area:picker}div#list{grid-area:list}div#container{display:grid;grid-template-rows:1fr;grid-template-columns:auto auto;grid-template-areas:\"picker list\";gap:8px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"picker\" \"list\"}}fieldset{border:1px solid silver;border-radius:8px;padding:8px 16px}\n"] }]
|
|
1444
1446
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }] });
|
|
1445
1447
|
|
|
1446
1448
|
const CHRONOLOGY_FRAGMENT_TYPEID = 'fr.it.vedph.chronology';
|
|
@@ -1617,10 +1619,10 @@ class ChronologyFragmentComponent extends ModelEditorComponentBase {
|
|
|
1617
1619
|
fr.tag = this.tag.value || undefined;
|
|
1618
1620
|
return fr;
|
|
1619
1621
|
}
|
|
1620
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1621
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
1622
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ChronologyFragmentComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
1623
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: ChronologyFragmentComponent, isStandalone: true, selector: "cadmus-chronology-fragment", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Chronology Fragment\" }}\n {{ data()?.value?.location }}</mat-card-title\n >\n <mat-card-subtitle>\n {{ data()?.value?.baseText }}\n </mat-card-subtitle>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"form-row\">\n <!-- free tag -->\n @if (!tagEntries) {\n <div>\n <mat-form-field>\n <mat-label>tag</mat-label>\n <input type=\"text\" matInput formControlName=\"tag\" />\n @if (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n </div>\n }\n <!-- bound tag -->\n @else {\n <div>\n <mat-form-field>\n <mat-label>tag</mat-label>\n <mat-select formControlName=\"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 </div>\n }\n\n <!-- label -->\n <div>\n <mat-form-field>\n <mat-label>label</mat-label>\n <input matInput type=\"text\" formControlName=\"label\" />\n @if ( label.hasError('maxLength') && (label.dirty || label.touched)\n ) {\n <mat-error>label too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- event ID -->\n <div>\n <mat-form-field>\n <mat-label>event ID</mat-label>\n <input\n matInput\n type=\"text\"\n formControlName=\"eventId\"\n spellcheck=\"false\"\n />\n @if ( eventId.hasError('maxLength') && (eventId.dirty ||\n eventId.touched) ) {\n <mat-error>event ID too long</mat-error>\n }\n </mat-form-field>\n </div>\n </div>\n\n <!-- date -->\n <div>\n <cadmus-refs-historical-date\n [date]=\"date.value || undefined\"\n (dateChange)=\"onDateChange($event!)\"\n />\n </div>\n </mat-card-content>\n\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: [".tab-icon{margin-right:8px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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: MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { 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: HistoricalDateComponent, selector: "cadmus-refs-historical-date", inputs: ["date", "label", "disabled"], outputs: ["dateChange"] }, { 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: TitleCasePipe, name: "titlecase" }] });
|
|
1622
1624
|
}
|
|
1623
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1625
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ChronologyFragmentComponent, decorators: [{
|
|
1624
1626
|
type: Component,
|
|
1625
1627
|
args: [{ selector: 'cadmus-chronology-fragment', imports: [
|
|
1626
1628
|
FormsModule,
|
|
@@ -1642,7 +1644,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
1642
1644
|
MatCardActions,
|
|
1643
1645
|
TitleCasePipe,
|
|
1644
1646
|
CloseSaveButtonsComponent,
|
|
1645
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\
|
|
1647
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Chronology Fragment\" }}\n {{ data()?.value?.location }}</mat-card-title\n >\n <mat-card-subtitle>\n {{ data()?.value?.baseText }}\n </mat-card-subtitle>\n </mat-card-header>\n\n <mat-card-content>\n <div class=\"form-row\">\n <!-- free tag -->\n @if (!tagEntries) {\n <div>\n <mat-form-field>\n <mat-label>tag</mat-label>\n <input type=\"text\" matInput formControlName=\"tag\" />\n @if (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n </div>\n }\n <!-- bound tag -->\n @else {\n <div>\n <mat-form-field>\n <mat-label>tag</mat-label>\n <mat-select formControlName=\"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 </div>\n }\n\n <!-- label -->\n <div>\n <mat-form-field>\n <mat-label>label</mat-label>\n <input matInput type=\"text\" formControlName=\"label\" />\n @if ( label.hasError('maxLength') && (label.dirty || label.touched)\n ) {\n <mat-error>label too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- event ID -->\n <div>\n <mat-form-field>\n <mat-label>event ID</mat-label>\n <input\n matInput\n type=\"text\"\n formControlName=\"eventId\"\n spellcheck=\"false\"\n />\n @if ( eventId.hasError('maxLength') && (eventId.dirty ||\n eventId.touched) ) {\n <mat-error>event ID too long</mat-error>\n }\n </mat-form-field>\n </div>\n </div>\n\n <!-- date -->\n <div>\n <cadmus-refs-historical-date\n [date]=\"date.value || undefined\"\n (dateChange)=\"onDateChange($event!)\"\n />\n </div>\n </mat-card-content>\n\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: [".tab-icon{margin-right:8px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
|
|
1646
1648
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }] });
|
|
1647
1649
|
|
|
1648
1650
|
/**
|
|
@@ -2030,10 +2032,10 @@ class ChronotopesPartComponent extends ModelEditorComponentBase {
|
|
|
2030
2032
|
this.chronotopes.updateValueAndValidity();
|
|
2031
2033
|
this.chronotopes.markAsDirty();
|
|
2032
2034
|
}
|
|
2033
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2034
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
2035
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ChronotopesPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2036
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: ChronotopesPartComponent, isStandalone: true, selector: "cadmus-chronotopes-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Chronotopes 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)=\"addChronotope()\"\n >\n <mat-icon>add_circle</mat-icon> chronotope\n </button>\n </div>\n @if (chronotopes.value.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>place</th>\n <th>date</th>\n </tr>\n </thead>\n <tbody>\n @for ( entry of chronotopes.value; track entry; let i = $index; let\n first = $first; let last = $last) {\n <tr [class.selected]=\"entry === editedChronotope\">\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this chronotope\"\n (click)=\"editChronotope(entry, 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 chronotope up\"\n [disabled]=\"first\"\n (click)=\"moveChronotopeUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this chronotope down\"\n [disabled]=\"last\"\n (click)=\"moveChronotopeDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this chronotope\"\n (click)=\"deleteChronotope(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ entry.place?.value }}</td>\n <td>{{ entry.date | historicalDate }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <mat-expansion-panel\n [expanded]=\"editedChronotope\"\n [disabled]=\"!editedChronotope\"\n >\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ (editedChronotope | assertedChronotopes) || \"chronotope\" }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <fieldset>\n <cadmus-refs-asserted-chronotope\n [tagEntries]=\"tagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [chronotope]=\"editedChronotope\"\n (chronotopeChange)=\"onChronotopeChange($event!)\"\n />\n <div class=\"form-row\">\n <button type=\"button\" (click)=\"closeChronotope()\" mat-icon-button>\n <mat-icon class=\"mat-warn\">cancel</mat-icon>\n </button>\n <button type=\"button\" (click)=\"saveChronotope()\" mat-icon-button>\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n <span>chronotope</span>\n </div>\n </fieldset>\n </mat-expansion-panel>\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}#editor{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i4$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i4$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { 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: AssertedChronotopeComponent, selector: "cadmus-refs-asserted-chronotope", inputs: ["chronotope", "tagEntries", "assTagEntries", "refTypeEntries", "refTagEntries"], outputs: ["chronotopeChange"] }, { 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: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: HistoricalDatePipe, name: "historicalDate" }, { kind: "pipe", type: AssertedChronotopesPipe, name: "assertedChronotopes" }] });
|
|
2035
2037
|
}
|
|
2036
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2038
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ChronotopesPartComponent, decorators: [{
|
|
2037
2039
|
type: Component,
|
|
2038
2040
|
args: [{ selector: 'cadmus-chronotopes-part', imports: [
|
|
2039
2041
|
FormsModule,
|
|
@@ -2054,7 +2056,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
2054
2056
|
HistoricalDatePipe,
|
|
2055
2057
|
AssertedChronotopesPipe,
|
|
2056
2058
|
CloseSaveButtonsComponent,
|
|
2057
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\
|
|
2059
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Chronotopes 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)=\"addChronotope()\"\n >\n <mat-icon>add_circle</mat-icon> chronotope\n </button>\n </div>\n @if (chronotopes.value.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>place</th>\n <th>date</th>\n </tr>\n </thead>\n <tbody>\n @for ( entry of chronotopes.value; track entry; let i = $index; let\n first = $first; let last = $last) {\n <tr [class.selected]=\"entry === editedChronotope\">\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this chronotope\"\n (click)=\"editChronotope(entry, 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 chronotope up\"\n [disabled]=\"first\"\n (click)=\"moveChronotopeUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this chronotope down\"\n [disabled]=\"last\"\n (click)=\"moveChronotopeDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this chronotope\"\n (click)=\"deleteChronotope(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ entry.place?.value }}</td>\n <td>{{ entry.date | historicalDate }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <mat-expansion-panel\n [expanded]=\"editedChronotope\"\n [disabled]=\"!editedChronotope\"\n >\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ (editedChronotope | assertedChronotopes) || \"chronotope\" }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <fieldset>\n <cadmus-refs-asserted-chronotope\n [tagEntries]=\"tagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [chronotope]=\"editedChronotope\"\n (chronotopeChange)=\"onChronotopeChange($event!)\"\n />\n <div class=\"form-row\">\n <button type=\"button\" (click)=\"closeChronotope()\" mat-icon-button>\n <mat-icon class=\"mat-warn\">cancel</mat-icon>\n </button>\n <button type=\"button\" (click)=\"saveChronotope()\" mat-icon-button>\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n <span>chronotope</span>\n </div>\n </fieldset>\n </mat-expansion-panel>\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}#editor{margin-top:8px}\n"] }]
|
|
2058
2060
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }, { type: i3.DialogService }] });
|
|
2059
2061
|
|
|
2060
2062
|
/**
|
|
@@ -2344,7 +2346,7 @@ const COMMENT_FRAGMENT_SCHEMA = {
|
|
|
2344
2346
|
* Comment part/fragment editor component.
|
|
2345
2347
|
* Thesauri: comment-tags, doc-reference-tags, doc-reference-types, comment-categories,
|
|
2346
2348
|
* languages, keyword-indexes, keyword-tags, comment-id-scopes, comment-id-tags,
|
|
2347
|
-
* assertion-tags
|
|
2349
|
+
* assertion-tags.
|
|
2348
2350
|
*/
|
|
2349
2351
|
class CommentEditorComponent extends ModelEditorComponentBase {
|
|
2350
2352
|
_editService;
|
|
@@ -2379,18 +2381,6 @@ class CommentEditorComponent extends ModelEditorComponentBase {
|
|
|
2379
2381
|
idTagEntries;
|
|
2380
2382
|
// assertion-tags
|
|
2381
2383
|
assTagEntries;
|
|
2382
|
-
// pin-link-settings; these include:
|
|
2383
|
-
// - by-type: true/false
|
|
2384
|
-
// - switch-mode: true/false
|
|
2385
|
-
// - edit-target: true/false
|
|
2386
|
-
setTagEntries;
|
|
2387
|
-
// settings
|
|
2388
|
-
// by-type: true/false
|
|
2389
|
-
pinByTypeMode;
|
|
2390
|
-
// switch-mode: true/false
|
|
2391
|
-
canSwitchMode;
|
|
2392
|
-
// edit-target: true/false
|
|
2393
|
-
canEditTarget;
|
|
2394
2384
|
constructor(authService, formBuilder, _editService, _editorBindings) {
|
|
2395
2385
|
super(authService, formBuilder);
|
|
2396
2386
|
this._editService = _editService;
|
|
@@ -2472,24 +2462,6 @@ class CommentEditorComponent extends ModelEditorComponentBase {
|
|
|
2472
2462
|
keywords: this.keywords,
|
|
2473
2463
|
});
|
|
2474
2464
|
}
|
|
2475
|
-
/**
|
|
2476
|
-
* Load settings from thesaurus entries.
|
|
2477
|
-
*
|
|
2478
|
-
* @param entries The thesaurus entries if any.
|
|
2479
|
-
*/
|
|
2480
|
-
loadSettings(entries) {
|
|
2481
|
-
if (!entries?.length) {
|
|
2482
|
-
this.pinByTypeMode = undefined;
|
|
2483
|
-
this.canSwitchMode = undefined;
|
|
2484
|
-
this.canEditTarget = undefined;
|
|
2485
|
-
}
|
|
2486
|
-
this.pinByTypeMode =
|
|
2487
|
-
entries?.find((e) => e.id === 'by-type')?.value === 'true';
|
|
2488
|
-
this.canSwitchMode =
|
|
2489
|
-
entries?.find((e) => e.id === 'switch-mode')?.value === 'true';
|
|
2490
|
-
this.canEditTarget =
|
|
2491
|
-
entries?.find((e) => e.id === 'edit-target')?.value === 'true';
|
|
2492
|
-
}
|
|
2493
2465
|
updateThesauri(thesauri) {
|
|
2494
2466
|
let key = 'comment-tags';
|
|
2495
2467
|
if (this.hasThesaurus(key)) {
|
|
@@ -2561,8 +2533,6 @@ class CommentEditorComponent extends ModelEditorComponentBase {
|
|
|
2561
2533
|
else {
|
|
2562
2534
|
this.assTagEntries = undefined;
|
|
2563
2535
|
}
|
|
2564
|
-
// load settings from thesaurus
|
|
2565
|
-
this.loadSettings(thesauri['pin-link-settings']?.entries);
|
|
2566
2536
|
}
|
|
2567
2537
|
updateForm(part) {
|
|
2568
2538
|
if (!part) {
|
|
@@ -2736,10 +2706,10 @@ class CommentEditorComponent extends ModelEditorComponentBase {
|
|
|
2736
2706
|
}
|
|
2737
2707
|
return entries.length ? entries : undefined;
|
|
2738
2708
|
}
|
|
2739
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2740
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: CommentEditorComponent, isStandalone: true, selector: "cadmus-comment-editor", providers: [CadmusTextEdService], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Comment</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group>\r\n <mat-tab label=\"comment\">\r\n <!-- tag (bound) -->\r\n <div>\r\n @if (comTagEntries?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of comTagEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n <!-- text -->\r\n <div>\r\n <nge-monaco-editor\r\n style=\"--editor-height: 800px\"\r\n (ready)=\"onCreateEditor($event)\"\r\n />\r\n @if (text.hasError('required') && (text.touched || text.dirty)) {\r\n <mat-error>text required</mat-error>\r\n }\r\n </div>\r\n <div id=\"pvw\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>preview</mat-expansion-panel-header>\r\n <nge-markdown [data]=\"text.value || undefined\" />\r\n </mat-expansion-panel>\r\n </div>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"references\">\r\n <!-- references -->\r\n <fieldset>\r\n <legend>references</legend>\r\n <cadmus-refs-doc-references\r\n [references]=\"references.value\"\r\n [tagEntries]=\"refTagEntries\"\r\n [typeEntries]=\"refTypeEntries\"\r\n (referencesChange)=\"onReferencesChange($event)\"\r\n />\r\n </fieldset>\r\n\r\n <!-- links -->\r\n <fieldset>\r\n <legend>links</legend>\r\n <cadmus-refs-asserted-composite-ids\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [pinByTypeMode]=\"pinByTypeMode\"\r\n [canSwitchMode]=\"canSwitchMode\"\r\n [canEditTarget]=\"canEditTarget\"\r\n [ids]=\"links.value\"\r\n (idsChange)=\"onIdsChange($event)\"\r\n />\r\n </fieldset>\r\n </mat-tab>\r\n\r\n <!-- categories -->\r\n @if (catEntries?.length) {\r\n <mat-tab label=\"categories\">\r\n <div id=\"container\">\r\n <div id=\"picker\">\r\n <fieldset>\r\n <legend>available categories</legend>\r\n <cadmus-thesaurus-tree\r\n [entries]=\"catEntries\"\r\n rootLabel=\"categories\"\r\n [renderLabel]=\"renderLabel\"\r\n (entryChange)=\"onCategoryChange($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n @if (categories.value.length) {\r\n <div id=\"list\">\r\n <fieldset>\r\n <legend>assigned categories</legend>\r\n <table>\r\n <tbody>\r\n @for (entry of categories.value; track entry; let i =\r\n $index) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Remove this category\"\r\n (click)=\"removeCategory(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td [matTooltip]=\"entry.id\">{{ entry.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </fieldset>\r\n </div>\r\n }\r\n </div>\r\n </mat-tab>\r\n }\r\n\r\n <!-- keywords -->\r\n <mat-tab label=\"keywords\">\r\n <div formArrayName=\"keywords\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n class=\"mat-primary\"\r\n (click)=\"addKeyword()\"\r\n >\r\n <mat-icon>add_circle</mat-icon>\r\n keyword\r\n </button>\r\n </div>\r\n <!-- keyword -->\r\n @for ( item of keywords.controls; track item; let i = $index; let\r\n first = $first; let last = $last) {\r\n <div>\r\n <!-- child form -->\r\n <div [formGroupName]=\"i\" class=\"form-row\">\r\n <!-- child actions -->\r\n <span>{{ i + 1 }}.</span>\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Remove this keyword\"\r\n (click)=\"removeKeyword(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"first\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move keyword up\"\r\n (click)=\"moveKeywordUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"last\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move keyword down\"\r\n (click)=\"moveKeywordDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <!-- child controls -->\r\n <!-- indexId (bound) -->\r\n @if (idxEntries?.length) {\r\n <mat-form-field>\r\n <mat-label>index</mat-label>\r\n <mat-select formControlName=\"indexId\">\r\n @for (e of idxEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- indexId (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>index</mat-label>\r\n <input matInput formControlName=\"indexId\" />\r\n @if ( $any(item)['controls'].indexId.errors?.maxLength &&\r\n ($any(item)['controls'].indexId.dirty ||\r\n $any(item)['controls'].indexId.touched) ) {\r\n <mat-error>ID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- tag (bound) -->\r\n @if (keyTagEntries?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select formControlName=\"tag\">\r\n @for (e of keyTagEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput formControlName=\"tag\" />\r\n @if ( $any(item)['controls'].tag.errors?.maxLength &&\r\n ($any(item)['controls'].tag.dirty ||\r\n $any(item)['controls'].tag.touched) ) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- language (bound) -->\r\n @if (langEntries?.length) {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <mat-select formControlName=\"language\">\r\n @for (e of langEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ( $any(item)['controls'].language.errors?.required &&\r\n ($any(item)['controls'].language.dirty ||\r\n $any(item)['controls'].language.touched) ) {\r\n <mat-error>language required</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- language (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <input matInput formControlName=\"language\" />\r\n @if ( $any(item)['controls'].language.errors?.required &&\r\n ($any(item)['controls'].language.dirty ||\r\n $any(item)['controls'].language.touched) ) {\r\n <mat-error>language required</mat-error>\r\n } @if ( $any(item)['controls'].language.errors?.maxLength &&\r\n ($any(item)['controls'].language.dirty ||\r\n $any(item)['controls'].language.touched) ) {\r\n <mat-error>language too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- value -->\r\n <mat-form-field>\r\n <mat-label>value</mat-label>\r\n <input matInput formControlName=\"value\" />\r\n @if ( $any(item)['controls'].value.errors?.required &&\r\n ($any(item)['controls'].value.dirty ||\r\n $any(item)['controls'].value.touched) ) {\r\n <mat-error>value required</mat-error>\r\n } @if ( $any(item)['controls'].value.errors?.maxLength &&\r\n ($any(item)['controls'].value.dirty ||\r\n $any(item)['controls'].value.touched) ) {\r\n <mat-error>value too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- note -->\r\n <mat-form-field>\r\n <mat-label>note</mat-label>\r\n <input matInput formControlName=\"note\" />\r\n @if ( $any(item)['controls'].note.errors?.maxLength &&\r\n ($any(item)['controls'].note.dirty ||\r\n $any(item)['controls'].note.touched) ) {\r\n <mat-error>note too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [".ind-long-text{width:100%;max-width:600px;margin-left:4em}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}td.fit-width{width:1px;white-space:nowrap}fieldset{border:1px solid silver;border-radius:6px;padding:4px;margin:8px 0}legend{color:silver}div#pvw{border:1px solid silver;border-radius:6px;padding:6px;margin:16px 0}div#picker{grid-area:picker}div#list{grid-area:list}div#container{display:grid;grid-template-rows:1fr;grid-template-columns:auto auto;grid-template-areas:\"picker list\";gap:8px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"picker\" \"list\"}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { 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: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { 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: "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: "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: "ngmodule", type: NgeMonacoModule }, { kind: "component", type: i4$3.NgeMonacoEditorComponent, selector: "nge-monaco-editor", inputs: ["autoLayout", "options"], outputs: ["ready"] }, { 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: "ngmodule", type: NgeMarkdownModule }, { kind: "component", type: i5$2.NgeMarkdownComponent, selector: "nge-markdown, [nge-markdown]", inputs: ["file", "data", "theme"], outputs: ["render"] }, { kind: "component", type: DocReferencesComponent, selector: "cadmus-refs-doc-references", inputs: ["references", "typeEntries", "tagEntries"], outputs: ["referencesChange"] }, { kind: "component", type: AssertedCompositeIdsComponent, selector: "cadmus-refs-asserted-composite-ids", inputs: ["ids", "idScopeEntries", "idTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "defaultPartTypeKey"], outputs: ["idsChange"] }, { 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: 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: MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: ThesaurusTreeComponent, selector: "cadmus-thesaurus-tree", inputs: ["entries", "rootLabel", "renderLabel"], outputs: ["entryChange"] }, { kind: "component", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }] });
|
|
2709
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CommentEditorComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3$1.CadmusTextEdService }, { token: CADMUS_TEXT_ED_BINDINGS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
2710
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: CommentEditorComponent, isStandalone: true, selector: "cadmus-comment-editor", providers: [CadmusTextEdService], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon>picture_in_picture</mat-icon>\n </div>\n <mat-card-title>Comment</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <mat-tab-group>\n <mat-tab label=\"comment\">\n <!-- tag (bound) -->\n <div>\n @if (comTagEntries?.length) {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <mat-select [formControl]=\"tag\">\n @for (e of comTagEntries; 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 (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n }\n </div>\n <!-- text -->\n <div>\n <nge-monaco-editor\n style=\"--editor-height: 800px\"\n (ready)=\"onCreateEditor($event)\"\n />\n @if (text.hasError('required') && (text.touched || text.dirty)) {\n <mat-error>text required</mat-error>\n }\n </div>\n <div id=\"pvw\">\n <mat-expansion-panel>\n <mat-expansion-panel-header>preview</mat-expansion-panel-header>\n <nge-markdown [data]=\"text.value || undefined\" />\n </mat-expansion-panel>\n </div>\n </mat-tab>\n\n <mat-tab label=\"references\">\n <!-- references -->\n <fieldset>\n <legend>references</legend>\n <cadmus-refs-doc-references\n [references]=\"references.value\"\n [tagEntries]=\"refTagEntries\"\n [typeEntries]=\"refTypeEntries\"\n (referencesChange)=\"onReferencesChange($event)\"\n />\n </fieldset>\n\n <!-- links -->\n <fieldset>\n <legend>links</legend>\n <cadmus-refs-asserted-composite-ids\n [idScopeEntries]=\"idScopeEntries\"\n [idTagEntries]=\"idTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [refTagEntries]=\"refTagEntries\"\n [pinByTypeMode]=\"true\"\n [canSwitchMode]=\"true\"\n [canEditTarget]=\"true\"\n [ids]=\"links.value\"\n (idsChange)=\"onIdsChange($event)\"\n />\n </fieldset>\n </mat-tab>\n\n <!-- categories -->\n @if (catEntries?.length) {\n <mat-tab label=\"categories\">\n <div id=\"container\">\n <div id=\"picker\">\n <fieldset>\n <legend>available categories</legend>\n <cadmus-thesaurus-tree\n [entries]=\"catEntries\"\n rootLabel=\"categories\"\n [renderLabel]=\"renderLabel\"\n (entryChange)=\"onCategoryChange($event)\"\n />\n </fieldset>\n </div>\n @if (categories.value.length) {\n <div id=\"list\">\n <fieldset>\n <legend>assigned categories</legend>\n <table>\n <tbody>\n @for (entry of categories.value; track entry; let i =\n $index) {\n <tr>\n <td>\n <button\n type=\"button\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this category\"\n (click)=\"removeCategory(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td [matTooltip]=\"entry.id\">{{ entry.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n </fieldset>\n </div>\n }\n </div>\n </mat-tab>\n }\n\n <!-- keywords -->\n <mat-tab label=\"keywords\">\n <div formArrayName=\"keywords\">\n <div>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addKeyword()\"\n >\n <mat-icon>add_circle</mat-icon>\n keyword\n </button>\n </div>\n <!-- keyword -->\n @for ( item of keywords.controls; track item; let i = $index; let\n first = $first; let last = $last) {\n <div>\n <!-- child form -->\n <div [formGroupName]=\"i\" class=\"form-row\">\n <!-- child actions -->\n <span>{{ i + 1 }}.</span>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this keyword\"\n (click)=\"removeKeyword(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n <button\n [disabled]=\"first\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move keyword up\"\n (click)=\"moveKeywordUp(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 keyword down\"\n (click)=\"moveKeywordDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <!-- child controls -->\n <!-- indexId (bound) -->\n @if (idxEntries?.length) {\n <mat-form-field>\n <mat-label>index</mat-label>\n <mat-select formControlName=\"indexId\">\n @for (e of idxEntries; track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- indexId (free) -->\n @else {\n <mat-form-field>\n <mat-label>index</mat-label>\n <input matInput formControlName=\"indexId\" />\n @if ( $any(item)['controls'].indexId.errors?.maxLength &&\n ($any(item)['controls'].indexId.dirty ||\n $any(item)['controls'].indexId.touched) ) {\n <mat-error>ID too long</mat-error>\n }\n </mat-form-field>\n }\n <!-- tag (bound) -->\n @if (keyTagEntries?.length) {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <mat-select formControlName=\"tag\">\n @for (e of keyTagEntries; 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 formControlName=\"tag\" />\n @if ( $any(item)['controls'].tag.errors?.maxLength &&\n ($any(item)['controls'].tag.dirty ||\n $any(item)['controls'].tag.touched) ) {\n <mat-error>tag 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 formControlName=\"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(item)['controls'].language.errors?.required &&\n ($any(item)['controls'].language.dirty ||\n $any(item)['controls'].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 formControlName=\"language\" />\n @if ( $any(item)['controls'].language.errors?.required &&\n ($any(item)['controls'].language.dirty ||\n $any(item)['controls'].language.touched) ) {\n <mat-error>language required</mat-error>\n } @if ( $any(item)['controls'].language.errors?.maxLength &&\n ($any(item)['controls'].language.dirty ||\n $any(item)['controls'].language.touched) ) {\n <mat-error>language too long</mat-error>\n }\n </mat-form-field>\n }\n <!-- value -->\n <mat-form-field>\n <mat-label>value</mat-label>\n <input matInput formControlName=\"value\" />\n @if ( $any(item)['controls'].value.errors?.required &&\n ($any(item)['controls'].value.dirty ||\n $any(item)['controls'].value.touched) ) {\n <mat-error>value required</mat-error>\n } @if ( $any(item)['controls'].value.errors?.maxLength &&\n ($any(item)['controls'].value.dirty ||\n $any(item)['controls'].value.touched) ) {\n <mat-error>value too long</mat-error>\n }\n </mat-form-field>\n <!-- note -->\n <mat-form-field>\n <mat-label>note</mat-label>\n <input matInput formControlName=\"note\" />\n @if ( $any(item)['controls'].note.errors?.maxLength &&\n ($any(item)['controls'].note.dirty ||\n $any(item)['controls'].note.touched) ) {\n <mat-error>note too long</mat-error>\n }\n </mat-form-field>\n </div>\n </div>\n }\n </div>\n </mat-tab>\n </mat-tab-group>\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: [".ind-long-text{width:100%;max-width:600px;margin-left:4em}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}td.fit-width{width:1px;white-space:nowrap}fieldset{border:1px solid silver;border-radius:6px;padding:4px;margin:8px 0}legend{color:silver}div#pvw{border:1px solid silver;border-radius:6px;padding:6px;margin:16px 0}div#picker{grid-area:picker}div#list{grid-area:list}div#container{display:grid;grid-template-rows:1fr;grid-template-columns:auto auto;grid-template-areas:\"picker list\";gap:8px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"picker\" \"list\"}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { 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: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { 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: "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: "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: "ngmodule", type: NgeMonacoModule }, { kind: "component", type: i4$3.NgeMonacoEditorComponent, selector: "nge-monaco-editor", inputs: ["autoLayout", "options"], outputs: ["ready"] }, { 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: "ngmodule", type: NgeMarkdownModule }, { kind: "component", type: i5$2.NgeMarkdownComponent, selector: "nge-markdown, [nge-markdown]", inputs: ["file", "data", "theme"], outputs: ["render"] }, { kind: "component", type: DocReferencesComponent, selector: "cadmus-refs-doc-references", inputs: ["references", "typeEntries", "tagEntries"], outputs: ["referencesChange"] }, { kind: "component", type: AssertedCompositeIdsComponent, selector: "cadmus-refs-asserted-composite-ids", inputs: ["ids", "idScopeEntries", "idTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "defaultPartTypeKey"], outputs: ["idsChange"] }, { 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: 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: MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: ThesaurusTreeComponent, selector: "cadmus-thesaurus-tree", inputs: ["entries", "rootLabel", "renderLabel"], outputs: ["entryChange"] }, { kind: "component", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }] });
|
|
2741
2711
|
}
|
|
2742
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2712
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CommentEditorComponent, decorators: [{
|
|
2743
2713
|
type: Component,
|
|
2744
2714
|
args: [{ selector: 'cadmus-comment-editor', imports: [
|
|
2745
2715
|
FormsModule,
|
|
@@ -2770,7 +2740,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
2770
2740
|
MatCardActions,
|
|
2771
2741
|
ThesaurusTreeComponent,
|
|
2772
2742
|
CloseSaveButtonsComponent,
|
|
2773
|
-
], providers: [CadmusTextEdService], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>Comment</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-tab-group>\r\n <mat-tab label=\"comment\">\r\n <!-- tag (bound) -->\r\n <div>\r\n @if (comTagEntries?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of comTagEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n <!-- text -->\r\n <div>\r\n <nge-monaco-editor\r\n style=\"--editor-height: 800px\"\r\n (ready)=\"onCreateEditor($event)\"\r\n />\r\n @if (text.hasError('required') && (text.touched || text.dirty)) {\r\n <mat-error>text required</mat-error>\r\n }\r\n </div>\r\n <div id=\"pvw\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>preview</mat-expansion-panel-header>\r\n <nge-markdown [data]=\"text.value || undefined\" />\r\n </mat-expansion-panel>\r\n </div>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"references\">\r\n <!-- references -->\r\n <fieldset>\r\n <legend>references</legend>\r\n <cadmus-refs-doc-references\r\n [references]=\"references.value\"\r\n [tagEntries]=\"refTagEntries\"\r\n [typeEntries]=\"refTypeEntries\"\r\n (referencesChange)=\"onReferencesChange($event)\"\r\n />\r\n </fieldset>\r\n\r\n <!-- links -->\r\n <fieldset>\r\n <legend>links</legend>\r\n <cadmus-refs-asserted-composite-ids\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [pinByTypeMode]=\"pinByTypeMode\"\r\n [canSwitchMode]=\"canSwitchMode\"\r\n [canEditTarget]=\"canEditTarget\"\r\n [ids]=\"links.value\"\r\n (idsChange)=\"onIdsChange($event)\"\r\n />\r\n </fieldset>\r\n </mat-tab>\r\n\r\n <!-- categories -->\r\n @if (catEntries?.length) {\r\n <mat-tab label=\"categories\">\r\n <div id=\"container\">\r\n <div id=\"picker\">\r\n <fieldset>\r\n <legend>available categories</legend>\r\n <cadmus-thesaurus-tree\r\n [entries]=\"catEntries\"\r\n rootLabel=\"categories\"\r\n [renderLabel]=\"renderLabel\"\r\n (entryChange)=\"onCategoryChange($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n @if (categories.value.length) {\r\n <div id=\"list\">\r\n <fieldset>\r\n <legend>assigned categories</legend>\r\n <table>\r\n <tbody>\r\n @for (entry of categories.value; track entry; let i =\r\n $index) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Remove this category\"\r\n (click)=\"removeCategory(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td [matTooltip]=\"entry.id\">{{ entry.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </fieldset>\r\n </div>\r\n }\r\n </div>\r\n </mat-tab>\r\n }\r\n\r\n <!-- keywords -->\r\n <mat-tab label=\"keywords\">\r\n <div formArrayName=\"keywords\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n class=\"mat-primary\"\r\n (click)=\"addKeyword()\"\r\n >\r\n <mat-icon>add_circle</mat-icon>\r\n keyword\r\n </button>\r\n </div>\r\n <!-- keyword -->\r\n @for ( item of keywords.controls; track item; let i = $index; let\r\n first = $first; let last = $last) {\r\n <div>\r\n <!-- child form -->\r\n <div [formGroupName]=\"i\" class=\"form-row\">\r\n <!-- child actions -->\r\n <span>{{ i + 1 }}.</span>\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Remove this keyword\"\r\n (click)=\"removeKeyword(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"first\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move keyword up\"\r\n (click)=\"moveKeywordUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"last\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move keyword down\"\r\n (click)=\"moveKeywordDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <!-- child controls -->\r\n <!-- indexId (bound) -->\r\n @if (idxEntries?.length) {\r\n <mat-form-field>\r\n <mat-label>index</mat-label>\r\n <mat-select formControlName=\"indexId\">\r\n @for (e of idxEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- indexId (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>index</mat-label>\r\n <input matInput formControlName=\"indexId\" />\r\n @if ( $any(item)['controls'].indexId.errors?.maxLength &&\r\n ($any(item)['controls'].indexId.dirty ||\r\n $any(item)['controls'].indexId.touched) ) {\r\n <mat-error>ID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- tag (bound) -->\r\n @if (keyTagEntries?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select formControlName=\"tag\">\r\n @for (e of keyTagEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput formControlName=\"tag\" />\r\n @if ( $any(item)['controls'].tag.errors?.maxLength &&\r\n ($any(item)['controls'].tag.dirty ||\r\n $any(item)['controls'].tag.touched) ) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- language (bound) -->\r\n @if (langEntries?.length) {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <mat-select formControlName=\"language\">\r\n @for (e of langEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ( $any(item)['controls'].language.errors?.required &&\r\n ($any(item)['controls'].language.dirty ||\r\n $any(item)['controls'].language.touched) ) {\r\n <mat-error>language required</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- language (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>language</mat-label>\r\n <input matInput formControlName=\"language\" />\r\n @if ( $any(item)['controls'].language.errors?.required &&\r\n ($any(item)['controls'].language.dirty ||\r\n $any(item)['controls'].language.touched) ) {\r\n <mat-error>language required</mat-error>\r\n } @if ( $any(item)['controls'].language.errors?.maxLength &&\r\n ($any(item)['controls'].language.dirty ||\r\n $any(item)['controls'].language.touched) ) {\r\n <mat-error>language too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- value -->\r\n <mat-form-field>\r\n <mat-label>value</mat-label>\r\n <input matInput formControlName=\"value\" />\r\n @if ( $any(item)['controls'].value.errors?.required &&\r\n ($any(item)['controls'].value.dirty ||\r\n $any(item)['controls'].value.touched) ) {\r\n <mat-error>value required</mat-error>\r\n } @if ( $any(item)['controls'].value.errors?.maxLength &&\r\n ($any(item)['controls'].value.dirty ||\r\n $any(item)['controls'].value.touched) ) {\r\n <mat-error>value too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- note -->\r\n <mat-form-field>\r\n <mat-label>note</mat-label>\r\n <input matInput formControlName=\"note\" />\r\n @if ( $any(item)['controls'].note.errors?.maxLength &&\r\n ($any(item)['controls'].note.dirty ||\r\n $any(item)['controls'].note.touched) ) {\r\n <mat-error>note too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [".ind-long-text{width:100%;max-width:600px;margin-left:4em}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}td.fit-width{width:1px;white-space:nowrap}fieldset{border:1px solid silver;border-radius:6px;padding:4px;margin:8px 0}legend{color:silver}div#pvw{border:1px solid silver;border-radius:6px;padding:6px;margin:16px 0}div#picker{grid-area:picker}div#list{grid-area:list}div#container{display:grid;grid-template-rows:1fr;grid-template-columns:auto auto;grid-template-areas:\"picker list\";gap:8px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"picker\" \"list\"}}\n"] }]
|
|
2743
|
+
], providers: [CadmusTextEdService], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon>picture_in_picture</mat-icon>\n </div>\n <mat-card-title>Comment</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <mat-tab-group>\n <mat-tab label=\"comment\">\n <!-- tag (bound) -->\n <div>\n @if (comTagEntries?.length) {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <mat-select [formControl]=\"tag\">\n @for (e of comTagEntries; 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 (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n }\n </div>\n <!-- text -->\n <div>\n <nge-monaco-editor\n style=\"--editor-height: 800px\"\n (ready)=\"onCreateEditor($event)\"\n />\n @if (text.hasError('required') && (text.touched || text.dirty)) {\n <mat-error>text required</mat-error>\n }\n </div>\n <div id=\"pvw\">\n <mat-expansion-panel>\n <mat-expansion-panel-header>preview</mat-expansion-panel-header>\n <nge-markdown [data]=\"text.value || undefined\" />\n </mat-expansion-panel>\n </div>\n </mat-tab>\n\n <mat-tab label=\"references\">\n <!-- references -->\n <fieldset>\n <legend>references</legend>\n <cadmus-refs-doc-references\n [references]=\"references.value\"\n [tagEntries]=\"refTagEntries\"\n [typeEntries]=\"refTypeEntries\"\n (referencesChange)=\"onReferencesChange($event)\"\n />\n </fieldset>\n\n <!-- links -->\n <fieldset>\n <legend>links</legend>\n <cadmus-refs-asserted-composite-ids\n [idScopeEntries]=\"idScopeEntries\"\n [idTagEntries]=\"idTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [refTagEntries]=\"refTagEntries\"\n [pinByTypeMode]=\"true\"\n [canSwitchMode]=\"true\"\n [canEditTarget]=\"true\"\n [ids]=\"links.value\"\n (idsChange)=\"onIdsChange($event)\"\n />\n </fieldset>\n </mat-tab>\n\n <!-- categories -->\n @if (catEntries?.length) {\n <mat-tab label=\"categories\">\n <div id=\"container\">\n <div id=\"picker\">\n <fieldset>\n <legend>available categories</legend>\n <cadmus-thesaurus-tree\n [entries]=\"catEntries\"\n rootLabel=\"categories\"\n [renderLabel]=\"renderLabel\"\n (entryChange)=\"onCategoryChange($event)\"\n />\n </fieldset>\n </div>\n @if (categories.value.length) {\n <div id=\"list\">\n <fieldset>\n <legend>assigned categories</legend>\n <table>\n <tbody>\n @for (entry of categories.value; track entry; let i =\n $index) {\n <tr>\n <td>\n <button\n type=\"button\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this category\"\n (click)=\"removeCategory(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td [matTooltip]=\"entry.id\">{{ entry.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n </fieldset>\n </div>\n }\n </div>\n </mat-tab>\n }\n\n <!-- keywords -->\n <mat-tab label=\"keywords\">\n <div formArrayName=\"keywords\">\n <div>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addKeyword()\"\n >\n <mat-icon>add_circle</mat-icon>\n keyword\n </button>\n </div>\n <!-- keyword -->\n @for ( item of keywords.controls; track item; let i = $index; let\n first = $first; let last = $last) {\n <div>\n <!-- child form -->\n <div [formGroupName]=\"i\" class=\"form-row\">\n <!-- child actions -->\n <span>{{ i + 1 }}.</span>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Remove this keyword\"\n (click)=\"removeKeyword(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n <button\n [disabled]=\"first\"\n mat-icon-button\n type=\"button\"\n matTooltip=\"Move keyword up\"\n (click)=\"moveKeywordUp(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 keyword down\"\n (click)=\"moveKeywordDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <!-- child controls -->\n <!-- indexId (bound) -->\n @if (idxEntries?.length) {\n <mat-form-field>\n <mat-label>index</mat-label>\n <mat-select formControlName=\"indexId\">\n @for (e of idxEntries; track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <!-- indexId (free) -->\n @else {\n <mat-form-field>\n <mat-label>index</mat-label>\n <input matInput formControlName=\"indexId\" />\n @if ( $any(item)['controls'].indexId.errors?.maxLength &&\n ($any(item)['controls'].indexId.dirty ||\n $any(item)['controls'].indexId.touched) ) {\n <mat-error>ID too long</mat-error>\n }\n </mat-form-field>\n }\n <!-- tag (bound) -->\n @if (keyTagEntries?.length) {\n <mat-form-field>\n <mat-label>tag</mat-label>\n <mat-select formControlName=\"tag\">\n @for (e of keyTagEntries; 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 formControlName=\"tag\" />\n @if ( $any(item)['controls'].tag.errors?.maxLength &&\n ($any(item)['controls'].tag.dirty ||\n $any(item)['controls'].tag.touched) ) {\n <mat-error>tag 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 formControlName=\"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(item)['controls'].language.errors?.required &&\n ($any(item)['controls'].language.dirty ||\n $any(item)['controls'].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 formControlName=\"language\" />\n @if ( $any(item)['controls'].language.errors?.required &&\n ($any(item)['controls'].language.dirty ||\n $any(item)['controls'].language.touched) ) {\n <mat-error>language required</mat-error>\n } @if ( $any(item)['controls'].language.errors?.maxLength &&\n ($any(item)['controls'].language.dirty ||\n $any(item)['controls'].language.touched) ) {\n <mat-error>language too long</mat-error>\n }\n </mat-form-field>\n }\n <!-- value -->\n <mat-form-field>\n <mat-label>value</mat-label>\n <input matInput formControlName=\"value\" />\n @if ( $any(item)['controls'].value.errors?.required &&\n ($any(item)['controls'].value.dirty ||\n $any(item)['controls'].value.touched) ) {\n <mat-error>value required</mat-error>\n } @if ( $any(item)['controls'].value.errors?.maxLength &&\n ($any(item)['controls'].value.dirty ||\n $any(item)['controls'].value.touched) ) {\n <mat-error>value too long</mat-error>\n }\n </mat-form-field>\n <!-- note -->\n <mat-form-field>\n <mat-label>note</mat-label>\n <input matInput formControlName=\"note\" />\n @if ( $any(item)['controls'].note.errors?.maxLength &&\n ($any(item)['controls'].note.dirty ||\n $any(item)['controls'].note.touched) ) {\n <mat-error>note too long</mat-error>\n }\n </mat-form-field>\n </div>\n </div>\n }\n </div>\n </mat-tab>\n </mat-tab-group>\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: [".ind-long-text{width:100%;max-width:600px;margin-left:4em}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}td.fit-width{width:1px;white-space:nowrap}fieldset{border:1px solid silver;border-radius:6px;padding:4px;margin:8px 0}legend{color:silver}div#pvw{border:1px solid silver;border-radius:6px;padding:6px;margin:16px 0}div#picker{grid-area:picker}div#list{grid-area:list}div#container{display:grid;grid-template-rows:1fr;grid-template-columns:auto auto;grid-template-areas:\"picker list\";gap:8px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"picker\" \"list\"}}\n"] }]
|
|
2774
2744
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }, { type: i3$1.CadmusTextEdService }, { type: undefined, decorators: [{
|
|
2775
2745
|
type: Inject,
|
|
2776
2746
|
args: [CADMUS_TEXT_ED_BINDINGS_TOKEN]
|
|
@@ -2930,10 +2900,10 @@ class DecoratedCountsPartComponent extends ModelEditorComponentBase {
|
|
|
2930
2900
|
this.counts.markAsDirty();
|
|
2931
2901
|
this.counts.updateValueAndValidity();
|
|
2932
2902
|
}
|
|
2933
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2934
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
2903
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: DecoratedCountsPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
2904
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: DecoratedCountsPartComponent, isStandalone: true, selector: "cadmus-decorated-counts-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Decorated Counts Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cadmus-refs-decorated-counts\r\n [idEntries]=\"idEntries\"\r\n [tagEntries]=\"tagEntries\"\r\n [counts]=\"counts.value\"\r\n (countsChange)=\"onCountsChange($event!)\"\r\n />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: DecoratedCountsComponent, selector: "cadmus-refs-decorated-counts", inputs: ["counts", "allowCustomId", "distinct", "idEntries", "tagEntries"], outputs: ["countsChange"] }, { 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: TitleCasePipe, name: "titlecase" }] });
|
|
2935
2905
|
}
|
|
2936
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2906
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: DecoratedCountsPartComponent, decorators: [{
|
|
2937
2907
|
type: Component,
|
|
2938
2908
|
args: [{ selector: 'cadmus-decorated-counts-part', imports: [
|
|
2939
2909
|
FormsModule,
|
|
@@ -3110,10 +3080,10 @@ class DistrictLocationPartComponent extends ModelEditorComponentBase {
|
|
|
3110
3080
|
part.note = this.note.value?.trim() || undefined;
|
|
3111
3081
|
return part;
|
|
3112
3082
|
}
|
|
3113
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3114
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
3083
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: DistrictLocationPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
3084
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: DistrictLocationPartComponent, isStandalone: true, selector: "cadmus-district-location-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"District Location Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <!-- place -->\r\n <div>\r\n <fieldset>\r\n <legend i18n>place</legend>\r\n <cadmus-refs-proper-name\r\n [langEntries]=\"langEntries\"\r\n [typeEntries]=\"typeEntries\"\r\n [name]=\"initialName || undefined\"\r\n [hideAssertion]=\"true\"\r\n (nameChange)=\"onNameChange($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n\r\n <!-- note -->\r\n <div>\r\n <mat-form-field class=\"long-text\">\r\n <mat-label i18n>note</mat-label>\r\n <textarea matInput [formControl]=\"note\"></textarea>\r\n @if ($any(note).errors?.maxLength && (note.dirty || note.touched)) {\r\n <mat-error i18n>note too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\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}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.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: ProperNameComponent, selector: "cadmus-refs-proper-name", inputs: ["name", "typeEntries", "langEntries", "tagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "hideAssertion"], outputs: ["nameChange"] }, { 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: "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: TitleCasePipe, name: "titlecase" }] });
|
|
3115
3085
|
}
|
|
3116
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
3086
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: DistrictLocationPartComponent, decorators: [{
|
|
3117
3087
|
type: Component,
|
|
3118
3088
|
args: [{ selector: 'cadmus-district-location-part', imports: [
|
|
3119
3089
|
FormsModule,
|
|
@@ -3285,10 +3255,10 @@ class DocReferencesPartComponent extends ModelEditorComponentBase {
|
|
|
3285
3255
|
this.references.updateValueAndValidity();
|
|
3286
3256
|
this.references.markAsDirty();
|
|
3287
3257
|
}
|
|
3288
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3289
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
3258
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: DocReferencesPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
3259
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: DocReferencesPartComponent, isStandalone: true, selector: "cadmus-doc-references-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Document References Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cadmus-refs-doc-references\r\n [references]=\"references.value\"\r\n [typeEntries]=\"typeEntries\"\r\n [tagEntries]=\"tagEntries\"\r\n (referencesChange)=\"onReferencesChange($event)\"\r\n />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: DocReferencesComponent, selector: "cadmus-refs-doc-references", inputs: ["references", "typeEntries", "tagEntries"], outputs: ["referencesChange"] }, { 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: TitleCasePipe, name: "titlecase" }] });
|
|
3290
3260
|
}
|
|
3291
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
3261
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: DocReferencesPartComponent, decorators: [{
|
|
3292
3262
|
type: Component,
|
|
3293
3263
|
args: [{ selector: 'cadmus-doc-references-part', imports: [
|
|
3294
3264
|
FormsModule,
|
|
@@ -3486,10 +3456,10 @@ class ExternalIdsPartComponent extends ModelEditorComponentBase {
|
|
|
3486
3456
|
this.ids.markAsDirty();
|
|
3487
3457
|
this.ids.updateValueAndValidity();
|
|
3488
3458
|
}
|
|
3489
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3490
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
3459
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ExternalIdsPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
3460
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: ExternalIdsPartComponent, isStandalone: true, selector: "cadmus-refs-external-ids-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"External IDs Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cadmus-refs-asserted-ids\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [ids]=\"ids.value\"\r\n (idsChange)=\"onIdsChange($event)\"\r\n />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: AssertedIdsComponent, selector: "cadmus-refs-asserted-ids", inputs: ["ids", "idScopeEntries", "idTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries"], outputs: ["idsChange"] }, { 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: TitleCasePipe, name: "titlecase" }] });
|
|
3491
3461
|
}
|
|
3492
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
3462
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ExternalIdsPartComponent, decorators: [{
|
|
3493
3463
|
type: Component,
|
|
3494
3464
|
args: [{ selector: 'cadmus-refs-external-ids-part', imports: [
|
|
3495
3465
|
FormsModule,
|
|
@@ -3507,6 +3477,212 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
3507
3477
|
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"External IDs Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cadmus-refs-asserted-ids\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [ids]=\"ids.value\"\r\n (idsChange)=\"onIdsChange($event)\"\r\n />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n" }]
|
|
3508
3478
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }] });
|
|
3509
3479
|
|
|
3480
|
+
/**
|
|
3481
|
+
* The type ID used to identify the FlagsPart type.
|
|
3482
|
+
*/
|
|
3483
|
+
const FLAGS_PART_TYPEID = 'it.vedph.flags';
|
|
3484
|
+
/**
|
|
3485
|
+
* JSON schema for the Flags part.
|
|
3486
|
+
* You can use the JSON schema tool at https://jsonschema.net/.
|
|
3487
|
+
*/
|
|
3488
|
+
const FLAGS_PART_SCHEMA = {
|
|
3489
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
3490
|
+
$id: 'www.vedph.it/cadmus/parts/__PRJ__/__LIB__/' + FLAGS_PART_TYPEID + '.json',
|
|
3491
|
+
type: 'object',
|
|
3492
|
+
title: 'FlagsPart',
|
|
3493
|
+
required: [
|
|
3494
|
+
'id',
|
|
3495
|
+
'itemId',
|
|
3496
|
+
'typeId',
|
|
3497
|
+
'timeCreated',
|
|
3498
|
+
'creatorId',
|
|
3499
|
+
'timeModified',
|
|
3500
|
+
'userId',
|
|
3501
|
+
'flags',
|
|
3502
|
+
],
|
|
3503
|
+
properties: {
|
|
3504
|
+
timeCreated: {
|
|
3505
|
+
type: 'string',
|
|
3506
|
+
pattern: '^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d+Z$',
|
|
3507
|
+
},
|
|
3508
|
+
creatorId: {
|
|
3509
|
+
type: 'string',
|
|
3510
|
+
},
|
|
3511
|
+
timeModified: {
|
|
3512
|
+
type: 'string',
|
|
3513
|
+
pattern: '^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d+Z$',
|
|
3514
|
+
},
|
|
3515
|
+
userId: {
|
|
3516
|
+
type: 'string',
|
|
3517
|
+
},
|
|
3518
|
+
id: {
|
|
3519
|
+
type: 'string',
|
|
3520
|
+
pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',
|
|
3521
|
+
},
|
|
3522
|
+
itemId: {
|
|
3523
|
+
type: 'string',
|
|
3524
|
+
pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',
|
|
3525
|
+
},
|
|
3526
|
+
typeId: {
|
|
3527
|
+
type: 'string',
|
|
3528
|
+
pattern: '^[a-z][-0-9a-z._]*$',
|
|
3529
|
+
},
|
|
3530
|
+
roleId: {
|
|
3531
|
+
type: ['string', 'null'],
|
|
3532
|
+
pattern: '^([a-z][-0-9a-z._]*)?$',
|
|
3533
|
+
},
|
|
3534
|
+
flags: {
|
|
3535
|
+
type: 'array',
|
|
3536
|
+
items: {
|
|
3537
|
+
type: 'string',
|
|
3538
|
+
pattern: '^[a-z][-0-9a-z._]*$',
|
|
3539
|
+
},
|
|
3540
|
+
minItems: 1,
|
|
3541
|
+
},
|
|
3542
|
+
notes: {
|
|
3543
|
+
type: 'object',
|
|
3544
|
+
additionalProperties: {
|
|
3545
|
+
type: 'string',
|
|
3546
|
+
},
|
|
3547
|
+
},
|
|
3548
|
+
},
|
|
3549
|
+
};
|
|
3550
|
+
|
|
3551
|
+
function entryToFlag(entry) {
|
|
3552
|
+
return {
|
|
3553
|
+
id: entry.id,
|
|
3554
|
+
label: entry.value,
|
|
3555
|
+
};
|
|
3556
|
+
}
|
|
3557
|
+
/**
|
|
3558
|
+
* Flags part editor component.
|
|
3559
|
+
* Thesauri: flags.
|
|
3560
|
+
* Settings: note set definitions for this part type (and role). If not defined,
|
|
3561
|
+
* no notes will be available.
|
|
3562
|
+
* See https://github.com/vedph/cadmus-bricks-shell-v3/blob/master/projects/myrmidon/cadmus-ui-note-set/README.md.
|
|
3563
|
+
*/
|
|
3564
|
+
class FlagsPartComponent extends ModelEditorComponentBase {
|
|
3565
|
+
flags;
|
|
3566
|
+
notes;
|
|
3567
|
+
// note settings
|
|
3568
|
+
settings = signal(undefined, ...(ngDevMode ? [{ debugName: "settings" }] : []));
|
|
3569
|
+
// flags
|
|
3570
|
+
flagEntries = signal([], ...(ngDevMode ? [{ debugName: "flagEntries" }] : []));
|
|
3571
|
+
// flags mapped from thesaurus entries
|
|
3572
|
+
featureFlags = computed(() => this.flagEntries()?.map((e) => entryToFlag(e)) || [], ...(ngDevMode ? [{ debugName: "featureFlags" }] : []));
|
|
3573
|
+
constructor(authService, formBuilder) {
|
|
3574
|
+
super(authService, formBuilder);
|
|
3575
|
+
// form
|
|
3576
|
+
this.flags = formBuilder.control([], {
|
|
3577
|
+
validators: NgxToolsValidators.strictMinLengthValidator(1),
|
|
3578
|
+
nonNullable: true,
|
|
3579
|
+
});
|
|
3580
|
+
this.notes = formBuilder.control({ definitions: [], notes: {} }, {
|
|
3581
|
+
nonNullable: true,
|
|
3582
|
+
});
|
|
3583
|
+
}
|
|
3584
|
+
async ngOnInit() {
|
|
3585
|
+
super.ngOnInit();
|
|
3586
|
+
// load settings for this part
|
|
3587
|
+
if (this._appRepository) {
|
|
3588
|
+
this.settings.set(await this._appRepository.getSettingFor(FLAGS_PART_TYPEID, this.identity()?.roleId || undefined));
|
|
3589
|
+
console.log('Flags part settings:', this.settings);
|
|
3590
|
+
}
|
|
3591
|
+
}
|
|
3592
|
+
buildForm(formBuilder) {
|
|
3593
|
+
return formBuilder.group({
|
|
3594
|
+
flags: this.flags,
|
|
3595
|
+
notes: this.notes,
|
|
3596
|
+
});
|
|
3597
|
+
}
|
|
3598
|
+
updateThesauri(thesauri) {
|
|
3599
|
+
const key = 'flags';
|
|
3600
|
+
if (this.hasThesaurus(key)) {
|
|
3601
|
+
this.flagEntries.set(thesauri[key].entries || []);
|
|
3602
|
+
}
|
|
3603
|
+
else {
|
|
3604
|
+
this.flagEntries.set([]);
|
|
3605
|
+
}
|
|
3606
|
+
}
|
|
3607
|
+
getNoteSet(part) {
|
|
3608
|
+
// no notes if no settings defining them
|
|
3609
|
+
if (!this.settings()) {
|
|
3610
|
+
return { definitions: [], notes: {} };
|
|
3611
|
+
}
|
|
3612
|
+
// build a note set by merging definitions from settings with notes from part
|
|
3613
|
+
return { ...this.settings(), notes: part.notes || {} };
|
|
3614
|
+
}
|
|
3615
|
+
updateForm(part) {
|
|
3616
|
+
if (!part) {
|
|
3617
|
+
this.form.reset();
|
|
3618
|
+
return;
|
|
3619
|
+
}
|
|
3620
|
+
// flags
|
|
3621
|
+
this.flags.setValue(part.flags || []);
|
|
3622
|
+
// notes
|
|
3623
|
+
this.notes.setValue(this.getNoteSet(part));
|
|
3624
|
+
this.form.markAsPristine();
|
|
3625
|
+
}
|
|
3626
|
+
onDataSet(data) {
|
|
3627
|
+
// thesauri
|
|
3628
|
+
if (data?.thesauri) {
|
|
3629
|
+
this.updateThesauri(data.thesauri);
|
|
3630
|
+
}
|
|
3631
|
+
// form
|
|
3632
|
+
this.updateForm(data?.value);
|
|
3633
|
+
}
|
|
3634
|
+
onFlagsCheckedIdsChange(ids) {
|
|
3635
|
+
this.flags.setValue(ids);
|
|
3636
|
+
this.flags.markAsDirty();
|
|
3637
|
+
this.flags.updateValueAndValidity();
|
|
3638
|
+
}
|
|
3639
|
+
onNoteChange(note) {
|
|
3640
|
+
console.log(`Note "${note.key}" changed to: ${note.value}`);
|
|
3641
|
+
}
|
|
3642
|
+
onSetChange(set) {
|
|
3643
|
+
console.log('Complete set updated:', set);
|
|
3644
|
+
this.notes.setValue(set);
|
|
3645
|
+
}
|
|
3646
|
+
getValue() {
|
|
3647
|
+
let part = this.getEditedPart(FLAGS_PART_TYPEID);
|
|
3648
|
+
part.flags = this.flags.value || [];
|
|
3649
|
+
// remove keys with null/undefined values
|
|
3650
|
+
const notesObj = this.notes.value?.notes || {};
|
|
3651
|
+
const filteredNotes = {};
|
|
3652
|
+
for (const key of Object.keys(notesObj)) {
|
|
3653
|
+
if (notesObj[key] != null) {
|
|
3654
|
+
filteredNotes[key] = notesObj[key];
|
|
3655
|
+
}
|
|
3656
|
+
}
|
|
3657
|
+
part.notes =
|
|
3658
|
+
Object.keys(filteredNotes).length > 0 ? filteredNotes : undefined;
|
|
3659
|
+
return part;
|
|
3660
|
+
}
|
|
3661
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FlagsPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
3662
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: FlagsPartComponent, isStandalone: true, selector: "cadmus-flags-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>\r\n {{ (modelName() | titlecase) || \"Flags Part\" }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <div>\r\n @if (flagEntries().length) {\r\n <div>\r\n <cadmus-ui-flag-set\r\n [flags]=\"featureFlags()\"\r\n [checkedIds]=\"flags.value\"\r\n (checkedIdsChange)=\"onFlagsCheckedIdsChange($event)\"\r\n />\r\n </div>\r\n } @if (settings()) {\r\n <div>\r\n <fieldset>\r\n <legend>notes</legend>\r\n <cadmus-ui-note-set\r\n [(set)]=\"notes.value\"\r\n (noteChange)=\"onNoteChange($event)\"\r\n (setChange)=\"onSetChange($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n }\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["fieldset{border:1px solid silver;border-radius:4px;padding:8px;margin:8px 0}fieldset legend{color:silver}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i5$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type:
|
|
3663
|
+
// cadmus
|
|
3664
|
+
FlagSetComponent, selector: "cadmus-ui-flag-set", inputs: ["flags", "checkedIds", "allowCustom", "hideToolbar", "numbering"], outputs: ["checkedIdsChange"] }, { kind: "component", type: NoteSetComponent, selector: "cadmus-ui-note-set", inputs: ["set"], outputs: ["setChange", "noteChange"] }, { kind: "component", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "pipe", type: i9.TitleCasePipe, name: "titlecase" }] });
|
|
3665
|
+
}
|
|
3666
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: FlagsPartComponent, decorators: [{
|
|
3667
|
+
type: Component,
|
|
3668
|
+
args: [{ selector: 'cadmus-flags-part', imports: [
|
|
3669
|
+
CommonModule,
|
|
3670
|
+
ReactiveFormsModule,
|
|
3671
|
+
MatButtonModule,
|
|
3672
|
+
MatCardModule,
|
|
3673
|
+
MatExpansionModule,
|
|
3674
|
+
MatFormFieldModule,
|
|
3675
|
+
MatIconModule,
|
|
3676
|
+
MatInputModule,
|
|
3677
|
+
MatSelectModule,
|
|
3678
|
+
MatTooltipModule,
|
|
3679
|
+
// cadmus
|
|
3680
|
+
FlagSetComponent,
|
|
3681
|
+
NoteSetComponent,
|
|
3682
|
+
CloseSaveButtonsComponent,
|
|
3683
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>\r\n {{ (modelName() | titlecase) || \"Flags Part\" }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <div>\r\n @if (flagEntries().length) {\r\n <div>\r\n <cadmus-ui-flag-set\r\n [flags]=\"featureFlags()\"\r\n [checkedIds]=\"flags.value\"\r\n (checkedIdsChange)=\"onFlagsCheckedIdsChange($event)\"\r\n />\r\n </div>\r\n } @if (settings()) {\r\n <div>\r\n <fieldset>\r\n <legend>notes</legend>\r\n <cadmus-ui-note-set\r\n [(set)]=\"notes.value\"\r\n (noteChange)=\"onNoteChange($event)\"\r\n (setChange)=\"onSetChange($event)\"\r\n />\r\n </fieldset>\r\n </div>\r\n }\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: ["fieldset{border:1px solid silver;border-radius:4px;padding:8px;margin:8px 0}fieldset legend{color:silver}\n"] }]
|
|
3684
|
+
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }] });
|
|
3685
|
+
|
|
3510
3686
|
/**
|
|
3511
3687
|
* The type ID used to identify the EventsPart type.
|
|
3512
3688
|
*/
|
|
@@ -3932,13 +4108,6 @@ class RelatedEntityComponent {
|
|
|
3932
4108
|
* Thesaurus doc-reference-types.
|
|
3933
4109
|
*/
|
|
3934
4110
|
refTypeEntries = input(...(ngDevMode ? [undefined, { debugName: "refTypeEntries" }] : []));
|
|
3935
|
-
// settings for lookup
|
|
3936
|
-
// by-type: true/false
|
|
3937
|
-
pinByTypeMode = input(...(ngDevMode ? [undefined, { debugName: "pinByTypeMode" }] : []));
|
|
3938
|
-
// switch-mode: true/false
|
|
3939
|
-
canSwitchMode = input(...(ngDevMode ? [undefined, { debugName: "canSwitchMode" }] : []));
|
|
3940
|
-
// edit-target: true/false
|
|
3941
|
-
canEditTarget = input(...(ngDevMode ? [undefined, { debugName: "canEditTarget" }] : []));
|
|
3942
4111
|
editorClose = output();
|
|
3943
4112
|
// form
|
|
3944
4113
|
relation;
|
|
@@ -3990,10 +4159,10 @@ class RelatedEntityComponent {
|
|
|
3990
4159
|
}
|
|
3991
4160
|
this.entity.set(this.getEntity());
|
|
3992
4161
|
}
|
|
3993
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3994
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
4162
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: RelatedEntityComponent, deps: [{ token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
4163
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: RelatedEntityComponent, isStandalone: true, selector: "cadmus-related-entity", inputs: { entity: { classPropertyName: "entity", publicName: "entity", isSignal: true, isRequired: false, transformFunction: null }, relationEntries: { classPropertyName: "relationEntries", publicName: "relationEntries", isSignal: true, isRequired: false, transformFunction: null }, idScopeEntries: { classPropertyName: "idScopeEntries", publicName: "idScopeEntries", isSignal: true, isRequired: false, transformFunction: null }, idTagEntries: { classPropertyName: "idTagEntries", publicName: "idTagEntries", isSignal: true, isRequired: false, transformFunction: null }, assTagEntries: { classPropertyName: "assTagEntries", publicName: "assTagEntries", isSignal: true, isRequired: false, transformFunction: null }, refTagEntries: { classPropertyName: "refTagEntries", publicName: "refTagEntries", isSignal: true, isRequired: false, transformFunction: null }, refTypeEntries: { classPropertyName: "refTypeEntries", publicName: "refTypeEntries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { entity: "entityChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"form-row\" (submit)=\"save()\">\r\n <!-- relation (bound) -->\r\n @if (relationEntries()?.length) {\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>relation</mat-label>\r\n <mat-select [formControl]=\"relation\">\r\n @for (e of relationEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ( $any(relation).errors?.required && (relation.dirty ||\r\n relation.touched) ) {\r\n <mat-error>relation required</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- relation (free) -->\r\n @else {\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>relation</mat-label>\r\n <input matInput [formControl]=\"relation\" />\r\n @if ( $any(relation).errors?.required && (relation.dirty ||\r\n relation.touched) ) {\r\n <mat-error>relation required</mat-error>\r\n } @if ( $any(relation).errors?.maxLength && (relation.dirty ||\r\n relation.touched) ) {\r\n <mat-error>relation too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- id -->\r\n <cadmus-refs-asserted-composite-id\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [pinByTypeMode]=\"true\"\r\n [canSwitchMode]=\"true\"\r\n [canEditTarget]=\"true\"\r\n [id]=\"id.value || undefined\"\r\n (idChange)=\"onIdChange($event!)\"\r\n />\r\n\r\n <button mat-icon-button type=\"button\" (click)=\"cancel()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-icon-button type=\"submit\" matTooltip=\"Save entity\">\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n</form>\r\n", styles: [".long-text{width:100%;max-width:800px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.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: "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: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { 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: "component", type: AssertedCompositeIdComponent, selector: "cadmus-refs-asserted-composite-id", inputs: ["idScopeEntries", "idTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "id", "hasSubmit", "pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "defaultPartTypeKey"], outputs: ["idChange", "editorClose", "extMoreRequest"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
3995
4164
|
}
|
|
3996
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
4165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: RelatedEntityComponent, decorators: [{
|
|
3997
4166
|
type: Component,
|
|
3998
4167
|
args: [{ selector: 'cadmus-related-entity', imports: [
|
|
3999
4168
|
FormsModule,
|
|
@@ -4008,7 +4177,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
4008
4177
|
MatIconButton,
|
|
4009
4178
|
MatIcon,
|
|
4010
4179
|
MatTooltip,
|
|
4011
|
-
], template: "<form [formGroup]=\"form\" class=\"form-row\" (submit)=\"save()\">\r\n <!-- relation (bound) -->\r\n @if (relationEntries()?.length) {\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>relation</mat-label>\r\n <mat-select [formControl]=\"relation\">\r\n @for (e of relationEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ( $any(relation).errors?.required && (relation.dirty ||\r\n relation.touched) ) {\r\n <mat-error>relation required</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- relation (free) -->\r\n @else {\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>relation</mat-label>\r\n <input matInput [formControl]=\"relation\" />\r\n @if ( $any(relation).errors?.required && (relation.dirty ||\r\n relation.touched) ) {\r\n <mat-error>relation required</mat-error>\r\n } @if ( $any(relation).errors?.maxLength && (relation.dirty ||\r\n relation.touched) ) {\r\n <mat-error>relation too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- id -->\r\n <cadmus-refs-asserted-composite-id\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [pinByTypeMode]=\"
|
|
4180
|
+
], template: "<form [formGroup]=\"form\" class=\"form-row\" (submit)=\"save()\">\r\n <!-- relation (bound) -->\r\n @if (relationEntries()?.length) {\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>relation</mat-label>\r\n <mat-select [formControl]=\"relation\">\r\n @for (e of relationEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ( $any(relation).errors?.required && (relation.dirty ||\r\n relation.touched) ) {\r\n <mat-error>relation required</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- relation (free) -->\r\n @else {\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>relation</mat-label>\r\n <input matInput [formControl]=\"relation\" />\r\n @if ( $any(relation).errors?.required && (relation.dirty ||\r\n relation.touched) ) {\r\n <mat-error>relation required</mat-error>\r\n } @if ( $any(relation).errors?.maxLength && (relation.dirty ||\r\n relation.touched) ) {\r\n <mat-error>relation too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- id -->\r\n <cadmus-refs-asserted-composite-id\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [pinByTypeMode]=\"true\"\r\n [canSwitchMode]=\"true\"\r\n [canEditTarget]=\"true\"\r\n [id]=\"id.value || undefined\"\r\n (idChange)=\"onIdChange($event!)\"\r\n />\r\n\r\n <button mat-icon-button type=\"button\" (click)=\"cancel()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-icon-button type=\"submit\" matTooltip=\"Save entity\">\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n</form>\r\n", styles: [".long-text{width:100%;max-width:800px}\n"] }]
|
|
4012
4181
|
}], ctorParameters: () => [{ type: i2.FormBuilder }] });
|
|
4013
4182
|
|
|
4014
4183
|
const RELATION_SEP = ':';
|
|
@@ -4058,13 +4227,6 @@ class HistoricalEventEditorComponent {
|
|
|
4058
4227
|
* Thesaurus doc-reference-types.
|
|
4059
4228
|
*/
|
|
4060
4229
|
refTypeEntries = input(...(ngDevMode ? [undefined, { debugName: "refTypeEntries" }] : []));
|
|
4061
|
-
/*
|
|
4062
|
-
* Thesaurus pin-link-settings; these include:
|
|
4063
|
-
* - by-type: true/false
|
|
4064
|
-
* - switch-mode: true/false
|
|
4065
|
-
* - edit-target: true/false
|
|
4066
|
-
*/
|
|
4067
|
-
setTagEntries = input(...(ngDevMode ? [undefined, { debugName: "setTagEntries" }] : []));
|
|
4068
4230
|
/**
|
|
4069
4231
|
* The number of event type portions to cut from the event type ID when
|
|
4070
4232
|
* building the prefix used to filter the corresponding relations IDs.
|
|
@@ -4076,13 +4238,6 @@ class HistoricalEventEditorComponent {
|
|
|
4076
4238
|
* join back the portions and append a final colon, generating "person:".
|
|
4077
4239
|
*/
|
|
4078
4240
|
eventTypeTailCut = input(0, ...(ngDevMode ? [{ debugName: "eventTypeTailCut" }] : []));
|
|
4079
|
-
// settings for lookup
|
|
4080
|
-
// by-type: true/false
|
|
4081
|
-
pinByTypeMode = input(...(ngDevMode ? [undefined, { debugName: "pinByTypeMode" }] : []));
|
|
4082
|
-
// switch-mode: true/false
|
|
4083
|
-
canSwitchMode = input(...(ngDevMode ? [undefined, { debugName: "canSwitchMode" }] : []));
|
|
4084
|
-
// edit-target: true/false
|
|
4085
|
-
canEditTarget = input(...(ngDevMode ? [undefined, { debugName: "canEditTarget" }] : []));
|
|
4086
4241
|
/**
|
|
4087
4242
|
* True to disable ID lookup via scoped pin lookup.
|
|
4088
4243
|
*/
|
|
@@ -4100,7 +4255,9 @@ class HistoricalEventEditorComponent {
|
|
|
4100
4255
|
assertion;
|
|
4101
4256
|
form;
|
|
4102
4257
|
// related entity
|
|
4258
|
+
// the prefix used to filter the relation entries
|
|
4103
4259
|
typeEntryPrefix = signal(undefined, ...(ngDevMode ? [{ debugName: "typeEntryPrefix" }] : []));
|
|
4260
|
+
// the current relation entries, filtered by the type prefix
|
|
4104
4261
|
currentRelEntries = computed(() => {
|
|
4105
4262
|
if (!this.relationEntries()?.length) {
|
|
4106
4263
|
return [];
|
|
@@ -4109,7 +4266,8 @@ class HistoricalEventEditorComponent {
|
|
|
4109
4266
|
if (!prefix) {
|
|
4110
4267
|
return this.relationEntries();
|
|
4111
4268
|
}
|
|
4112
|
-
|
|
4269
|
+
const filtered = this.relationEntries().filter((e) => e.id.startsWith(prefix));
|
|
4270
|
+
return filtered;
|
|
4113
4271
|
}, ...(ngDevMode ? [{ debugName: "currentRelEntries" }] : []));
|
|
4114
4272
|
editedEntity;
|
|
4115
4273
|
constructor(formBuilder) {
|
|
@@ -4150,7 +4308,7 @@ class HistoricalEventEditorComponent {
|
|
|
4150
4308
|
}
|
|
4151
4309
|
getTypeEntryPrefix(id) {
|
|
4152
4310
|
let p = id;
|
|
4153
|
-
//
|
|
4311
|
+
// remove tail if any: by convention, an entry ID ending with ".-"
|
|
4154
4312
|
// is always treated as a tailed ID where the ending "-" should be removed.
|
|
4155
4313
|
// This is because that's the convention for representing parent entries
|
|
4156
4314
|
// like "person.job.-" with children like "person.job.bishop".
|
|
@@ -4168,13 +4326,14 @@ class HistoricalEventEditorComponent {
|
|
|
4168
4326
|
}
|
|
4169
4327
|
return p.replace('.', RELATION_SEP) + RELATION_SEP;
|
|
4170
4328
|
}
|
|
4329
|
+
updateTypeEntryPrefix(id) {
|
|
4330
|
+
const prefix = this.getTypeEntryPrefix(id);
|
|
4331
|
+
this.typeEntryPrefix.set(prefix);
|
|
4332
|
+
}
|
|
4171
4333
|
onTypeEntryChange(entry) {
|
|
4172
4334
|
setTimeout(() => {
|
|
4173
4335
|
this.type.setValue(entry.id);
|
|
4174
|
-
|
|
4175
|
-
this.typeEntryPrefix.set(this.relationEntries?.length
|
|
4176
|
-
? this.getTypeEntryPrefix(entry.id)
|
|
4177
|
-
: undefined);
|
|
4336
|
+
this.updateTypeEntryPrefix(entry.id);
|
|
4178
4337
|
}, 0);
|
|
4179
4338
|
}
|
|
4180
4339
|
updateForm(model) {
|
|
@@ -4182,19 +4341,19 @@ class HistoricalEventEditorComponent {
|
|
|
4182
4341
|
this.form.reset();
|
|
4183
4342
|
return;
|
|
4184
4343
|
}
|
|
4185
|
-
this.eid.setValue(model.eid);
|
|
4186
|
-
this.type.setValue(model.type);
|
|
4187
|
-
this.tag.setValue(model.tag || null);
|
|
4188
|
-
this.description.setValue(model.description || null);
|
|
4189
|
-
this.note.setValue(model.note || null);
|
|
4190
|
-
this.chronotopes.setValue(model.chronotopes || []);
|
|
4191
|
-
this.hasAssertion.setValue(model.assertion ? true : false);
|
|
4192
|
-
this.assertion.setValue(model.assertion || null);
|
|
4193
|
-
this.relatedEntities.setValue(model.relatedEntities || []);
|
|
4194
|
-
if (this.relationEntries?.length) {
|
|
4195
|
-
this.typeEntryPrefix.set(this.getTypeEntryPrefix(model.type));
|
|
4196
|
-
}
|
|
4344
|
+
this.eid.setValue(model.eid, { emitEvent: false });
|
|
4345
|
+
this.type.setValue(model.type, { emitEvent: false });
|
|
4346
|
+
this.tag.setValue(model.tag || null, { emitEvent: false });
|
|
4347
|
+
this.description.setValue(model.description || null, { emitEvent: false });
|
|
4348
|
+
this.note.setValue(model.note || null, { emitEvent: false });
|
|
4349
|
+
this.chronotopes.setValue(model.chronotopes || [], { emitEvent: false });
|
|
4350
|
+
this.hasAssertion.setValue(model.assertion ? true : false, { emitEvent: false });
|
|
4351
|
+
this.assertion.setValue(model.assertion || null, { emitEvent: false });
|
|
4352
|
+
this.relatedEntities.setValue(model.relatedEntities || [], { emitEvent: false });
|
|
4197
4353
|
this.form.markAsPristine();
|
|
4354
|
+
setTimeout(() => {
|
|
4355
|
+
this.updateTypeEntryPrefix(model.type);
|
|
4356
|
+
}, 0);
|
|
4198
4357
|
}
|
|
4199
4358
|
getModel() {
|
|
4200
4359
|
return {
|
|
@@ -4280,10 +4439,10 @@ class HistoricalEventEditorComponent {
|
|
|
4280
4439
|
}
|
|
4281
4440
|
this.event.set(this.getModel());
|
|
4282
4441
|
}
|
|
4283
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4284
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: HistoricalEventEditorComponent, isStandalone: true, selector: "cadmus-historical-event-editor", inputs: { event: { classPropertyName: "event", publicName: "event", isSignal: true, isRequired: false, transformFunction: null }, eventTypeEntries: { classPropertyName: "eventTypeEntries", publicName: "eventTypeEntries", isSignal: true, isRequired: false, transformFunction: null }, eventTagEntries: { classPropertyName: "eventTagEntries", publicName: "eventTagEntries", isSignal: true, isRequired: false, transformFunction: null }, relationEntries: { classPropertyName: "relationEntries", publicName: "relationEntries", isSignal: true, isRequired: false, transformFunction: null }, ctTagEntries: { classPropertyName: "ctTagEntries", publicName: "ctTagEntries", isSignal: true, isRequired: false, transformFunction: null }, idScopeEntries: { classPropertyName: "idScopeEntries", publicName: "idScopeEntries", isSignal: true, isRequired: false, transformFunction: null }, idTagEntries: { classPropertyName: "idTagEntries", publicName: "idTagEntries", isSignal: true, isRequired: false, transformFunction: null }, assTagEntries: { classPropertyName: "assTagEntries", publicName: "assTagEntries", isSignal: true, isRequired: false, transformFunction: null }, refTagEntries: { classPropertyName: "refTagEntries", publicName: "refTagEntries", isSignal: true, isRequired: false, transformFunction: null }, refTypeEntries: { classPropertyName: "refTypeEntries", publicName: "refTypeEntries", isSignal: true, isRequired: false, transformFunction: null }, setTagEntries: { classPropertyName: "setTagEntries", publicName: "setTagEntries", isSignal: true, isRequired: false, transformFunction: null }, eventTypeTailCut: { classPropertyName: "eventTypeTailCut", publicName: "eventTypeTailCut", isSignal: true, isRequired: false, transformFunction: null }, pinByTypeMode: { classPropertyName: "pinByTypeMode", publicName: "pinByTypeMode", isSignal: true, isRequired: false, transformFunction: null }, canSwitchMode: { classPropertyName: "canSwitchMode", publicName: "canSwitchMode", isSignal: true, isRequired: false, transformFunction: null }, canEditTarget: { classPropertyName: "canEditTarget", publicName: "canEditTarget", isSignal: true, isRequired: false, transformFunction: null }, noLookup: { classPropertyName: "noLookup", publicName: "noLookup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { event: "eventChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group>\r\n <mat-tab label=\"general\">\r\n @if (eventTypeEntries()?.length) {\r\n <!-- bound type -->\r\n <div id=\"container\">\r\n <div id=\"ids\" class=\"form-row\">\r\n <!-- eid -->\r\n <mat-form-field>\r\n <mat-label>EID</mat-label>\r\n <input matInput [formControl]=\"eid\" />\r\n @if ($any(eid).errors?.required && (eid.dirty || eid.touched)) {\r\n <mat-error>EID required</mat-error>\r\n } @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\r\n <mat-error>EID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- tag (bound) -->\r\n @if (eventTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of eventTagEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n <!-- type (bound) -->\r\n <div id=\"type\">\r\n <fieldset>\r\n <legend>type</legend>\r\n @if (type.value) {\r\n <div class=\"sel-type\">\r\n {{\r\n type.value | flatLookup : eventTypeEntries() : \"id\" : \"value\"\r\n }}\r\n </div>\r\n } @else {\r\n <mat-error>no type</mat-error>\r\n }\r\n <cadmus-thesaurus-tree\r\n [entries]=\"eventTypeEntries()\"\r\n rootLabel=\"types\"\r\n [renderLabel]=\"renderLabel\"\r\n (entryChange)=\"onTypeEntryChange($event)\"\r\n />\r\n @if ($any(type).errors?.required && (type.dirty || type.touched)) {\r\n <mat-error>type required</mat-error>\r\n }\r\n </fieldset>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- free type -->\r\n <div class=\"form-row\">\r\n <!-- eid -->\r\n <mat-form-field>\r\n <mat-label>EID</mat-label>\r\n <input matInput [formControl]=\"eid\" />\r\n @if ($any(eid).errors?.required && (eid.dirty || eid.touched)) {\r\n <mat-error>EID required</mat-error>\r\n } @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\r\n <mat-error>EID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- type (free) -->\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <input matInput [formControl]=\"type\" />\r\n @if ($any(type).errors?.required && (type.dirty || type.touched)) {\r\n <mat-error>type required</mat-error>\r\n } @if ($any(type).errors?.maxLength && (type.dirty || type.touched)) {\r\n <mat-error>type too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- tag (bound) -->\r\n @if (eventTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of eventTagEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n <div>\r\n <!-- description -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>description</mat-label>\r\n <textarea matInput [formControl]=\"description\"></textarea>\r\n @if ( $any(description).errors?.maxLength && (description.dirty ||\r\n description.touched) ) {\r\n <mat-error>description too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <textarea matInput [formControl]=\"note\"></textarea>\r\n @if ($any(note).errors?.maxLength && (note.dirty || note.touched)) {\r\n <mat-error>note too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <!-- chronotopes -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>chronotopes</mat-expansion-panel-header>\r\n <fieldset>\r\n <legend>chronotopes</legend>\r\n <cadmus-asserted-chronotope-set\r\n [tagEntries]=\"ctTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [chronotopes]=\"chronotopes.value || undefined\"\r\n (chronotopesChange)=\"onChronotopesChange($event!)\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n\r\n <!-- assertion -->\r\n <mat-checkbox [formControl]=\"hasAssertion\">assertion</mat-checkbox>\r\n <mat-expansion-panel\r\n [expanded]=\"hasAssertion.value\"\r\n [disabled]=\"!hasAssertion.value\"\r\n >\r\n <fieldset>\r\n <legend>assertion</legend>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"related\">\r\n <!-- list -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n class=\"mat-primary\"\r\n (click)=\"addEntity()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> related\r\n </button>\r\n </div>\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>relation</th>\r\n <th>ID</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (e of relatedEntities.value; track e.id; let i = $index) {\r\n <tr [class.selected]=\"editedEntity === e\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"editEntity(e, i)\"\r\n matTooltip=\"Edit this entity\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"deleteEntity(i)\"\r\n matTooltip=\"Delete this entity\"\r\n >\r\n <mat-icon class=\"mat-warn\">delete</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n {{ e.relation | flatLookup : relationEntries() : \"id\" : \"value\" }}\r\n </td>\r\n <td>{{ e.id.target.label }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n <!-- entity editor -->\r\n <mat-expansion-panel [disabled]=\"!editedEntity\" [expanded]=\"editedEntity\">\r\n <mat-expansion-panel-header>entity</mat-expansion-panel-header>\r\n <fieldset>\r\n <cadmus-related-entity\r\n [relationEntries]=\"currentRelEntries()\"\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [pinByTypeMode]=\"pinByTypeMode()\"\r\n [canSwitchMode]=\"canSwitchMode()\"\r\n [canEditTarget]=\"canEditTarget()\"\r\n [entity]=\"editedEntity\"\r\n (entityChange)=\"onEntityChange($event!)\"\r\n (editorClose)=\"closeEntity()\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- buttons -->\r\n <hr />\r\n <div class=\"button-row\">\r\n <button type=\"button\" mat-icon-button (click)=\"cancel()\">\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n mat-icon-button\r\n matTooltip=\"Save event\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n <span>event</span>\r\n </div>\r\n</form>\r\n", styles: [".long-text{width:90%;max-width:800px}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}legend{color:silver}.sel-type{background-color:#d8d8d8;border-radius:4px;padding:6px;margin-bottom:8px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.button-row{display:flex;align-items:center;flex-wrap:wrap}div#container{display:grid;grid-template-rows:auto;grid-template-columns:auto 1fr;grid-template-areas:\"ids type\";gap:8px;margin-bottom:8px}div#ids{grid-area:ids}div#type{grid-area:type}@media only screen and (max-width: 959px){div#container{grid-template-columns:1fr;grid-template-areas:\"ids\" \"type\"}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { 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: 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: AssertedChronotopeSetComponent, selector: "cadmus-asserted-chronotope-set", inputs: ["chronotopes", "tagEntries", "assTagEntries", "refTypeEntries", "refTagEntries"], outputs: ["chronotopesChange"] }, { 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: AssertionComponent, selector: "cadmus-refs-assertion", inputs: ["assTagEntries", "refTypeEntries", "refTagEntries", "assertion", "noLookup", "noCitation", "defaultPicker"], outputs: ["assertionChange"] }, { 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: RelatedEntityComponent, selector: "cadmus-related-entity", inputs: ["entity", "relationEntries", "idScopeEntries", "idTagEntries", "assTagEntries", "refTagEntries", "refTypeEntries", "pinByTypeMode", "canSwitchMode", "canEditTarget"], outputs: ["entityChange", "editorClose"] }, { kind: "component", type: ThesaurusTreeComponent, selector: "cadmus-thesaurus-tree", inputs: ["entries", "rootLabel", "renderLabel"], outputs: ["entryChange"] }, { kind: "pipe", type: FlatLookupPipe, name: "flatLookup" }] });
|
|
4442
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: HistoricalEventEditorComponent, deps: [{ token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
4443
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: HistoricalEventEditorComponent, isStandalone: true, selector: "cadmus-historical-event-editor", inputs: { event: { classPropertyName: "event", publicName: "event", isSignal: true, isRequired: false, transformFunction: null }, eventTypeEntries: { classPropertyName: "eventTypeEntries", publicName: "eventTypeEntries", isSignal: true, isRequired: false, transformFunction: null }, eventTagEntries: { classPropertyName: "eventTagEntries", publicName: "eventTagEntries", isSignal: true, isRequired: false, transformFunction: null }, relationEntries: { classPropertyName: "relationEntries", publicName: "relationEntries", isSignal: true, isRequired: false, transformFunction: null }, ctTagEntries: { classPropertyName: "ctTagEntries", publicName: "ctTagEntries", isSignal: true, isRequired: false, transformFunction: null }, idScopeEntries: { classPropertyName: "idScopeEntries", publicName: "idScopeEntries", isSignal: true, isRequired: false, transformFunction: null }, idTagEntries: { classPropertyName: "idTagEntries", publicName: "idTagEntries", isSignal: true, isRequired: false, transformFunction: null }, assTagEntries: { classPropertyName: "assTagEntries", publicName: "assTagEntries", isSignal: true, isRequired: false, transformFunction: null }, refTagEntries: { classPropertyName: "refTagEntries", publicName: "refTagEntries", isSignal: true, isRequired: false, transformFunction: null }, refTypeEntries: { classPropertyName: "refTypeEntries", publicName: "refTypeEntries", isSignal: true, isRequired: false, transformFunction: null }, eventTypeTailCut: { classPropertyName: "eventTypeTailCut", publicName: "eventTypeTailCut", isSignal: true, isRequired: false, transformFunction: null }, noLookup: { classPropertyName: "noLookup", publicName: "noLookup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { event: "eventChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group>\r\n <mat-tab label=\"general\">\r\n @if (eventTypeEntries()?.length) {\r\n <!-- bound type -->\r\n <div id=\"container\">\r\n <div id=\"ids\" class=\"form-row\">\r\n <!-- eid -->\r\n <mat-form-field>\r\n <mat-label>EID</mat-label>\r\n <input matInput [formControl]=\"eid\" />\r\n @if ($any(eid).errors?.required && (eid.dirty || eid.touched)) {\r\n <mat-error>EID required</mat-error>\r\n } @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\r\n <mat-error>EID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- tag (bound) -->\r\n @if (eventTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of eventTagEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n <!-- type (bound) -->\r\n <div id=\"type\">\r\n <fieldset>\r\n <legend>type</legend>\r\n @if (type.value) {\r\n <div class=\"sel-type\">\r\n {{\r\n type.value | flatLookup : eventTypeEntries() : \"id\" : \"value\"\r\n }}\r\n </div>\r\n } @else {\r\n <mat-error>no type</mat-error>\r\n }\r\n <cadmus-thesaurus-tree\r\n [entries]=\"eventTypeEntries()\"\r\n rootLabel=\"types\"\r\n [renderLabel]=\"renderLabel\"\r\n (entryChange)=\"onTypeEntryChange($event)\"\r\n />\r\n @if ($any(type).errors?.required && (type.dirty || type.touched)) {\r\n <mat-error>type required</mat-error>\r\n }\r\n </fieldset>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- free type -->\r\n <div class=\"form-row\">\r\n <!-- eid -->\r\n <mat-form-field>\r\n <mat-label>EID</mat-label>\r\n <input matInput [formControl]=\"eid\" />\r\n @if ($any(eid).errors?.required && (eid.dirty || eid.touched)) {\r\n <mat-error>EID required</mat-error>\r\n } @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\r\n <mat-error>EID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- type (free) -->\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <input matInput [formControl]=\"type\" />\r\n @if ($any(type).errors?.required && (type.dirty || type.touched)) {\r\n <mat-error>type required</mat-error>\r\n } @if ($any(type).errors?.maxLength && (type.dirty || type.touched)) {\r\n <mat-error>type too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- tag (bound) -->\r\n @if (eventTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of eventTagEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n <div>\r\n <!-- description -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>description</mat-label>\r\n <textarea matInput [formControl]=\"description\"></textarea>\r\n @if ( $any(description).errors?.maxLength && (description.dirty ||\r\n description.touched) ) {\r\n <mat-error>description too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <textarea matInput [formControl]=\"note\"></textarea>\r\n @if ($any(note).errors?.maxLength && (note.dirty || note.touched)) {\r\n <mat-error>note too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <!-- chronotopes -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>chronotopes</mat-expansion-panel-header>\r\n <fieldset>\r\n <legend>chronotopes</legend>\r\n <cadmus-asserted-chronotope-set\r\n [tagEntries]=\"ctTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [chronotopes]=\"chronotopes.value || undefined\"\r\n (chronotopesChange)=\"onChronotopesChange($event!)\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n\r\n <!-- assertion -->\r\n <mat-checkbox [formControl]=\"hasAssertion\">assertion</mat-checkbox>\r\n <mat-expansion-panel\r\n [expanded]=\"hasAssertion.value\"\r\n [disabled]=\"!hasAssertion.value\"\r\n >\r\n <fieldset>\r\n <legend>assertion</legend>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"related\">\r\n <!-- list -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n class=\"mat-primary\"\r\n (click)=\"addEntity()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> related\r\n </button>\r\n </div>\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>relation</th>\r\n <th>ID</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (e of relatedEntities.value; track e.id; let i = $index) {\r\n <tr [class.selected]=\"editedEntity === e\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"editEntity(e, i)\"\r\n matTooltip=\"Edit this entity\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"deleteEntity(i)\"\r\n matTooltip=\"Delete this entity\"\r\n >\r\n <mat-icon class=\"mat-warn\">delete</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n {{ e.relation | flatLookup : relationEntries() : \"id\" : \"value\" }}\r\n </td>\r\n <td>{{ e.id.target.label }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n <!-- entity editor -->\r\n <mat-expansion-panel [disabled]=\"!editedEntity\" [expanded]=\"editedEntity\">\r\n <mat-expansion-panel-header>entity</mat-expansion-panel-header>\r\n <fieldset>\r\n <cadmus-related-entity\r\n [relationEntries]=\"currentRelEntries()\"\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [entity]=\"editedEntity\"\r\n (entityChange)=\"onEntityChange($event!)\"\r\n (editorClose)=\"closeEntity()\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- buttons -->\r\n <hr />\r\n <div class=\"button-row\">\r\n <button type=\"button\" mat-icon-button (click)=\"cancel()\">\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n mat-icon-button\r\n matTooltip=\"Save event\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n <span>event</span>\r\n </div>\r\n</form>\r\n", styles: [".long-text{width:90%;max-width:800px}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}legend{color:silver}.sel-type{background-color:#d8d8d8;border-radius:4px;padding:6px;margin-bottom:8px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.button-row{display:flex;align-items:center;flex-wrap:wrap}div#container{display:grid;grid-template-rows:auto;grid-template-columns:auto 1fr;grid-template-areas:\"ids type\";gap:8px;margin-bottom:8px}div#ids{grid-area:ids}div#type{grid-area:type}@media only screen and (max-width: 959px){div#container{grid-template-columns:1fr;grid-template-areas:\"ids\" \"type\"}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { 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: 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: AssertedChronotopeSetComponent, selector: "cadmus-asserted-chronotope-set", inputs: ["chronotopes", "tagEntries", "assTagEntries", "refTypeEntries", "refTagEntries"], outputs: ["chronotopesChange"] }, { 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: AssertionComponent, selector: "cadmus-refs-assertion", inputs: ["assTagEntries", "refTypeEntries", "refTagEntries", "assertion", "noLookup", "noCitation", "defaultPicker"], outputs: ["assertionChange"] }, { 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: RelatedEntityComponent, selector: "cadmus-related-entity", inputs: ["entity", "relationEntries", "idScopeEntries", "idTagEntries", "assTagEntries", "refTagEntries", "refTypeEntries"], outputs: ["entityChange", "editorClose"] }, { kind: "component", type: ThesaurusTreeComponent, selector: "cadmus-thesaurus-tree", inputs: ["entries", "rootLabel", "renderLabel"], outputs: ["entryChange"] }, { kind: "pipe", type: FlatLookupPipe, name: "flatLookup" }] });
|
|
4285
4444
|
}
|
|
4286
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
4445
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: HistoricalEventEditorComponent, decorators: [{
|
|
4287
4446
|
type: Component,
|
|
4288
4447
|
args: [{ selector: 'cadmus-historical-event-editor', imports: [
|
|
4289
4448
|
FormsModule,
|
|
@@ -4308,7 +4467,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
4308
4467
|
RelatedEntityComponent,
|
|
4309
4468
|
FlatLookupPipe,
|
|
4310
4469
|
ThesaurusTreeComponent,
|
|
4311
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group>\r\n <mat-tab label=\"general\">\r\n @if (eventTypeEntries()?.length) {\r\n <!-- bound type -->\r\n <div id=\"container\">\r\n <div id=\"ids\" class=\"form-row\">\r\n <!-- eid -->\r\n <mat-form-field>\r\n <mat-label>EID</mat-label>\r\n <input matInput [formControl]=\"eid\" />\r\n @if ($any(eid).errors?.required && (eid.dirty || eid.touched)) {\r\n <mat-error>EID required</mat-error>\r\n } @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\r\n <mat-error>EID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- tag (bound) -->\r\n @if (eventTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of eventTagEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n <!-- type (bound) -->\r\n <div id=\"type\">\r\n <fieldset>\r\n <legend>type</legend>\r\n @if (type.value) {\r\n <div class=\"sel-type\">\r\n {{\r\n type.value | flatLookup : eventTypeEntries() : \"id\" : \"value\"\r\n }}\r\n </div>\r\n } @else {\r\n <mat-error>no type</mat-error>\r\n }\r\n <cadmus-thesaurus-tree\r\n [entries]=\"eventTypeEntries()\"\r\n rootLabel=\"types\"\r\n [renderLabel]=\"renderLabel\"\r\n (entryChange)=\"onTypeEntryChange($event)\"\r\n />\r\n @if ($any(type).errors?.required && (type.dirty || type.touched)) {\r\n <mat-error>type required</mat-error>\r\n }\r\n </fieldset>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- free type -->\r\n <div class=\"form-row\">\r\n <!-- eid -->\r\n <mat-form-field>\r\n <mat-label>EID</mat-label>\r\n <input matInput [formControl]=\"eid\" />\r\n @if ($any(eid).errors?.required && (eid.dirty || eid.touched)) {\r\n <mat-error>EID required</mat-error>\r\n } @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\r\n <mat-error>EID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- type (free) -->\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <input matInput [formControl]=\"type\" />\r\n @if ($any(type).errors?.required && (type.dirty || type.touched)) {\r\n <mat-error>type required</mat-error>\r\n } @if ($any(type).errors?.maxLength && (type.dirty || type.touched)) {\r\n <mat-error>type too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- tag (bound) -->\r\n @if (eventTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of eventTagEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n <div>\r\n <!-- description -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>description</mat-label>\r\n <textarea matInput [formControl]=\"description\"></textarea>\r\n @if ( $any(description).errors?.maxLength && (description.dirty ||\r\n description.touched) ) {\r\n <mat-error>description too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <textarea matInput [formControl]=\"note\"></textarea>\r\n @if ($any(note).errors?.maxLength && (note.dirty || note.touched)) {\r\n <mat-error>note too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <!-- chronotopes -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>chronotopes</mat-expansion-panel-header>\r\n <fieldset>\r\n <legend>chronotopes</legend>\r\n <cadmus-asserted-chronotope-set\r\n [tagEntries]=\"ctTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [chronotopes]=\"chronotopes.value || undefined\"\r\n (chronotopesChange)=\"onChronotopesChange($event!)\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n\r\n <!-- assertion -->\r\n <mat-checkbox [formControl]=\"hasAssertion\">assertion</mat-checkbox>\r\n <mat-expansion-panel\r\n [expanded]=\"hasAssertion.value\"\r\n [disabled]=\"!hasAssertion.value\"\r\n >\r\n <fieldset>\r\n <legend>assertion</legend>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"related\">\r\n <!-- list -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n class=\"mat-primary\"\r\n (click)=\"addEntity()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> related\r\n </button>\r\n </div>\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>relation</th>\r\n <th>ID</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (e of relatedEntities.value; track e.id; let i = $index) {\r\n <tr [class.selected]=\"editedEntity === e\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"editEntity(e, i)\"\r\n matTooltip=\"Edit this entity\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"deleteEntity(i)\"\r\n matTooltip=\"Delete this entity\"\r\n >\r\n <mat-icon class=\"mat-warn\">delete</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n {{ e.relation | flatLookup : relationEntries() : \"id\" : \"value\" }}\r\n </td>\r\n <td>{{ e.id.target.label }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n <!-- entity editor -->\r\n <mat-expansion-panel [disabled]=\"!editedEntity\" [expanded]=\"editedEntity\">\r\n <mat-expansion-panel-header>entity</mat-expansion-panel-header>\r\n <fieldset>\r\n <cadmus-related-entity\r\n [relationEntries]=\"currentRelEntries()\"\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [pinByTypeMode]=\"pinByTypeMode()\"\r\n [canSwitchMode]=\"canSwitchMode()\"\r\n [canEditTarget]=\"canEditTarget()\"\r\n [entity]=\"editedEntity\"\r\n (entityChange)=\"onEntityChange($event!)\"\r\n (editorClose)=\"closeEntity()\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- buttons -->\r\n <hr />\r\n <div class=\"button-row\">\r\n <button type=\"button\" mat-icon-button (click)=\"cancel()\">\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n mat-icon-button\r\n matTooltip=\"Save event\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n <span>event</span>\r\n </div>\r\n</form>\r\n", styles: [".long-text{width:90%;max-width:800px}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}legend{color:silver}.sel-type{background-color:#d8d8d8;border-radius:4px;padding:6px;margin-bottom:8px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.button-row{display:flex;align-items:center;flex-wrap:wrap}div#container{display:grid;grid-template-rows:auto;grid-template-columns:auto 1fr;grid-template-areas:\"ids type\";gap:8px;margin-bottom:8px}div#ids{grid-area:ids}div#type{grid-area:type}@media only screen and (max-width: 959px){div#container{grid-template-columns:1fr;grid-template-areas:\"ids\" \"type\"}}\n"] }]
|
|
4470
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-tab-group>\r\n <mat-tab label=\"general\">\r\n @if (eventTypeEntries()?.length) {\r\n <!-- bound type -->\r\n <div id=\"container\">\r\n <div id=\"ids\" class=\"form-row\">\r\n <!-- eid -->\r\n <mat-form-field>\r\n <mat-label>EID</mat-label>\r\n <input matInput [formControl]=\"eid\" />\r\n @if ($any(eid).errors?.required && (eid.dirty || eid.touched)) {\r\n <mat-error>EID required</mat-error>\r\n } @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\r\n <mat-error>EID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- tag (bound) -->\r\n @if (eventTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of eventTagEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n <!-- type (bound) -->\r\n <div id=\"type\">\r\n <fieldset>\r\n <legend>type</legend>\r\n @if (type.value) {\r\n <div class=\"sel-type\">\r\n {{\r\n type.value | flatLookup : eventTypeEntries() : \"id\" : \"value\"\r\n }}\r\n </div>\r\n } @else {\r\n <mat-error>no type</mat-error>\r\n }\r\n <cadmus-thesaurus-tree\r\n [entries]=\"eventTypeEntries()\"\r\n rootLabel=\"types\"\r\n [renderLabel]=\"renderLabel\"\r\n (entryChange)=\"onTypeEntryChange($event)\"\r\n />\r\n @if ($any(type).errors?.required && (type.dirty || type.touched)) {\r\n <mat-error>type required</mat-error>\r\n }\r\n </fieldset>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- free type -->\r\n <div class=\"form-row\">\r\n <!-- eid -->\r\n <mat-form-field>\r\n <mat-label>EID</mat-label>\r\n <input matInput [formControl]=\"eid\" />\r\n @if ($any(eid).errors?.required && (eid.dirty || eid.touched)) {\r\n <mat-error>EID required</mat-error>\r\n } @if ($any(eid).errors?.maxLength && (eid.dirty || eid.touched)) {\r\n <mat-error>EID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- type (free) -->\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <input matInput [formControl]=\"type\" />\r\n @if ($any(type).errors?.required && (type.dirty || type.touched)) {\r\n <mat-error>type required</mat-error>\r\n } @if ($any(type).errors?.maxLength && (type.dirty || type.touched)) {\r\n <mat-error>type too long</mat-error>\r\n }\r\n </mat-form-field>\r\n <!-- tag (bound) -->\r\n @if (eventTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of eventTagEntries(); track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag).errors?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n <div>\r\n <!-- description -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>description</mat-label>\r\n <textarea matInput [formControl]=\"description\"></textarea>\r\n @if ( $any(description).errors?.maxLength && (description.dirty ||\r\n description.touched) ) {\r\n <mat-error>description too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <!-- note -->\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <textarea matInput [formControl]=\"note\"></textarea>\r\n @if ($any(note).errors?.maxLength && (note.dirty || note.touched)) {\r\n <mat-error>note too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <!-- chronotopes -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>chronotopes</mat-expansion-panel-header>\r\n <fieldset>\r\n <legend>chronotopes</legend>\r\n <cadmus-asserted-chronotope-set\r\n [tagEntries]=\"ctTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [chronotopes]=\"chronotopes.value || undefined\"\r\n (chronotopesChange)=\"onChronotopesChange($event!)\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n\r\n <!-- assertion -->\r\n <mat-checkbox [formControl]=\"hasAssertion\">assertion</mat-checkbox>\r\n <mat-expansion-panel\r\n [expanded]=\"hasAssertion.value\"\r\n [disabled]=\"!hasAssertion.value\"\r\n >\r\n <fieldset>\r\n <legend>assertion</legend>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n\r\n <mat-tab label=\"related\">\r\n <!-- list -->\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n class=\"mat-primary\"\r\n (click)=\"addEntity()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> related\r\n </button>\r\n </div>\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>relation</th>\r\n <th>ID</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (e of relatedEntities.value; track e.id; let i = $index) {\r\n <tr [class.selected]=\"editedEntity === e\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"editEntity(e, i)\"\r\n matTooltip=\"Edit this entity\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"deleteEntity(i)\"\r\n matTooltip=\"Delete this entity\"\r\n >\r\n <mat-icon class=\"mat-warn\">delete</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n {{ e.relation | flatLookup : relationEntries() : \"id\" : \"value\" }}\r\n </td>\r\n <td>{{ e.id.target.label }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n\r\n <!-- entity editor -->\r\n <mat-expansion-panel [disabled]=\"!editedEntity\" [expanded]=\"editedEntity\">\r\n <mat-expansion-panel-header>entity</mat-expansion-panel-header>\r\n <fieldset>\r\n <cadmus-related-entity\r\n [relationEntries]=\"currentRelEntries()\"\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [entity]=\"editedEntity\"\r\n (entityChange)=\"onEntityChange($event!)\"\r\n (editorClose)=\"closeEntity()\"\r\n />\r\n </fieldset>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!-- buttons -->\r\n <hr />\r\n <div class=\"button-row\">\r\n <button type=\"button\" mat-icon-button (click)=\"cancel()\">\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n <button\r\n type=\"submit\"\r\n mat-icon-button\r\n matTooltip=\"Save event\"\r\n [disabled]=\"form.invalid || form.pristine\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n <span>event</span>\r\n </div>\r\n</form>\r\n", styles: [".long-text{width:90%;max-width:800px}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}legend{color:silver}.sel-type{background-color:#d8d8d8;border-radius:4px;padding:6px;margin-bottom:8px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.button-row{display:flex;align-items:center;flex-wrap:wrap}div#container{display:grid;grid-template-rows:auto;grid-template-columns:auto 1fr;grid-template-areas:\"ids type\";gap:8px;margin-bottom:8px}div#ids{grid-area:ids}div#type{grid-area:type}@media only screen and (max-width: 959px){div#container{grid-template-columns:1fr;grid-template-areas:\"ids\" \"type\"}}\n"] }]
|
|
4312
4471
|
}], ctorParameters: () => [{ type: i2.FormBuilder }] });
|
|
4313
4472
|
|
|
4314
4473
|
/**
|
|
@@ -4532,10 +4691,10 @@ class HistoricalDatePartComponent extends ModelEditorComponentBase {
|
|
|
4532
4691
|
this.references.updateValueAndValidity();
|
|
4533
4692
|
this.references.markAsDirty();
|
|
4534
4693
|
}
|
|
4535
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4536
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
4694
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: HistoricalDatePartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
4695
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: HistoricalDatePartComponent, isStandalone: true, selector: "cadmus-historical-date-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Historical Date Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cadmus-refs-historical-date\r\n [date]=\"date.value\"\r\n (dateChange)=\"onDateChange($event!)\"\r\n />\r\n <!-- references -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>references</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <cadmus-refs-doc-references\r\n [references]=\"references.value\"\r\n [typeEntries]=\"typeEntries\"\r\n [tagEntries]=\"tagEntries\"\r\n (referencesChange)=\"onReferencesChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [".tab-icon{margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: HistoricalDateComponent, selector: "cadmus-refs-historical-date", inputs: ["date", "label", "disabled"], outputs: ["dateChange"] }, { 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: "directive", type: MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: DocReferencesComponent, selector: "cadmus-refs-doc-references", inputs: ["references", "typeEntries", "tagEntries"], outputs: ["referencesChange"] }, { 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: TitleCasePipe, name: "titlecase" }] });
|
|
4537
4696
|
}
|
|
4538
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
4697
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: HistoricalDatePartComponent, decorators: [{
|
|
4539
4698
|
type: Component,
|
|
4540
4699
|
args: [{ selector: 'cadmus-historical-date-part', imports: [
|
|
4541
4700
|
FormsModule,
|
|
@@ -4561,19 +4720,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
4561
4720
|
* Historical events part.
|
|
4562
4721
|
* Thesauri: event-types, event-tags, event-relations, chronotope-tags,
|
|
4563
4722
|
* asserted-id-scopes, asserted-id-tags, assertion-tags, doc-reference-tags,
|
|
4564
|
-
* doc-reference-types, pin-link-scopes, pin-link-tags
|
|
4723
|
+
* doc-reference-types, pin-link-scopes, pin-link-tags.
|
|
4565
4724
|
*/
|
|
4566
4725
|
class HistoricalEventsPartComponent extends ModelEditorComponentBase {
|
|
4567
4726
|
_dialogService;
|
|
4568
4727
|
editedEventIndex;
|
|
4569
4728
|
editedEvent;
|
|
4570
|
-
// settings
|
|
4571
|
-
// by-type: true/false
|
|
4572
|
-
pinByTypeMode;
|
|
4573
|
-
// switch-mode: true/false
|
|
4574
|
-
canSwitchMode;
|
|
4575
|
-
// edit-target: true/false
|
|
4576
|
-
canEditTarget;
|
|
4577
4729
|
/**
|
|
4578
4730
|
* Thesaurus event-types.
|
|
4579
4731
|
*/
|
|
@@ -4625,24 +4777,6 @@ class HistoricalEventsPartComponent extends ModelEditorComponentBase {
|
|
|
4625
4777
|
events: this.events,
|
|
4626
4778
|
});
|
|
4627
4779
|
}
|
|
4628
|
-
/**
|
|
4629
|
-
* Load settings from thesaurus entries.
|
|
4630
|
-
*
|
|
4631
|
-
* @param entries The thesaurus entries if any.
|
|
4632
|
-
*/
|
|
4633
|
-
loadSettings(entries) {
|
|
4634
|
-
if (!entries?.length) {
|
|
4635
|
-
this.pinByTypeMode = undefined;
|
|
4636
|
-
this.canSwitchMode = undefined;
|
|
4637
|
-
this.canEditTarget = undefined;
|
|
4638
|
-
}
|
|
4639
|
-
this.pinByTypeMode =
|
|
4640
|
-
entries?.find((e) => e.id === 'by-type')?.value === 'true';
|
|
4641
|
-
this.canSwitchMode =
|
|
4642
|
-
entries?.find((e) => e.id === 'switch-mode')?.value === 'true';
|
|
4643
|
-
this.canEditTarget =
|
|
4644
|
-
entries?.find((e) => e.id === 'edit-target')?.value === 'true';
|
|
4645
|
-
}
|
|
4646
4780
|
updateThesauri(thesauri) {
|
|
4647
4781
|
let key = 'event-types';
|
|
4648
4782
|
if (this.hasThesaurus(key)) {
|
|
@@ -4708,8 +4842,6 @@ class HistoricalEventsPartComponent extends ModelEditorComponentBase {
|
|
|
4708
4842
|
else {
|
|
4709
4843
|
this.idTagEntries = undefined;
|
|
4710
4844
|
}
|
|
4711
|
-
// load settings from thesaurus
|
|
4712
|
-
this.loadSettings(thesauri['pin-link-settings']?.entries);
|
|
4713
4845
|
}
|
|
4714
4846
|
updateForm(part) {
|
|
4715
4847
|
this.closeEvent();
|
|
@@ -4801,10 +4933,10 @@ class HistoricalEventsPartComponent extends ModelEditorComponentBase {
|
|
|
4801
4933
|
this.events.updateValueAndValidity();
|
|
4802
4934
|
this.events.markAsDirty();
|
|
4803
4935
|
}
|
|
4804
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4805
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
4936
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: HistoricalEventsPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4937
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: HistoricalEventsPartComponent, isStandalone: true, selector: "cadmus-historical-events-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Events Part\"\n }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <!-- events list -->\n <div>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addEvent()\"\n >\n <mat-icon>add_circle</mat-icon> event\n </button>\n </div>\n @if (events.value.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>type</th>\n <th>tag</th>\n <th>ID</th>\n <th>place/date</th>\n <th>rel.</th>\n </tr>\n </thead>\n <tbody>\n @for ( entry of events.value; track entry; let i = $index; let first =\n $first; let last = $last) {\n <tr [class.selected]=\"editedEvent === entry\">\n <td class=\"fit-width\">\n <span class=\"nr\">{{ i + 1 }}.</span>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this event\"\n (click)=\"editEvent(entry, 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 event up\"\n [disabled]=\"first\"\n (click)=\"moveEventUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this event down\"\n [disabled]=\"last\"\n (click)=\"moveEventDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this event\"\n (click)=\"deleteEvent(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>\n {{ entry.type | flatLookup : eventTypeEntries : \"id\" : \"value\" }}\n </td>\n <td>{{ entry.tag }}</td>\n <td>{{ entry.eid }}</td>\n <td>{{ entry.chronotopes | assertedChronotopes }}</td>\n <td>{{ entry.relatedEntities?.length || 0 }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- event editor -->\n <mat-expansion-panel [expanded]=\"editedEvent\" [disabled]=\"!editedEvent\">\n @if (editedEvent) {\n <mat-expansion-panel-header>\n <span class=\"edited-title\">event</span>\n <span class=\"nr\">{{ editedEventIndex + 1 }}</span>\n </mat-expansion-panel-header>\n }\n <fieldset>\n <cadmus-historical-event-editor\n [eventTagEntries]=\"eventTagEntries\"\n [eventTypeEntries]=\"eventTypeEntries\"\n [relationEntries]=\"relationEntries\"\n [ctTagEntries]=\"ctTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [idScopeEntries]=\"idScopeEntries\"\n [idTagEntries]=\"idTagEntries\"\n [event]=\"editedEvent\"\n (eventChange)=\"onEventSave($event!)\"\n (editorClose)=\"closeEvent()\"\n />\n </fieldset>\n </mat-expansion-panel>\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}.edited-title{color:silver;margin-right:8px}.nr{color:#fff;background-color:silver;border:1px solid #c0c0c0;border-radius:4px;padding:0 2px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: HistoricalEventEditorComponent, selector: "cadmus-historical-event-editor", inputs: ["event", "eventTypeEntries", "eventTagEntries", "relationEntries", "ctTagEntries", "idScopeEntries", "idTagEntries", "assTagEntries", "refTagEntries", "refTypeEntries", "eventTypeTailCut", "noLookup"], outputs: ["eventChange", "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: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: AssertedChronotopesPipe, name: "assertedChronotopes" }, { kind: "pipe", type: FlatLookupPipe, name: "flatLookup" }] });
|
|
4806
4938
|
}
|
|
4807
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
4939
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: HistoricalEventsPartComponent, decorators: [{
|
|
4808
4940
|
type: Component,
|
|
4809
4941
|
args: [{ selector: 'cadmus-historical-events-part', imports: [
|
|
4810
4942
|
FormsModule,
|
|
@@ -4826,7 +4958,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
4826
4958
|
AssertedChronotopesPipe,
|
|
4827
4959
|
FlatLookupPipe,
|
|
4828
4960
|
CloseSaveButtonsComponent,
|
|
4829
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\
|
|
4961
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Events Part\"\n }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <!-- events list -->\n <div>\n <button\n type=\"button\"\n mat-flat-button\n class=\"mat-primary\"\n (click)=\"addEvent()\"\n >\n <mat-icon>add_circle</mat-icon> event\n </button>\n </div>\n @if (events.value.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>type</th>\n <th>tag</th>\n <th>ID</th>\n <th>place/date</th>\n <th>rel.</th>\n </tr>\n </thead>\n <tbody>\n @for ( entry of events.value; track entry; let i = $index; let first =\n $first; let last = $last) {\n <tr [class.selected]=\"editedEvent === entry\">\n <td class=\"fit-width\">\n <span class=\"nr\">{{ i + 1 }}.</span>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this event\"\n (click)=\"editEvent(entry, 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 event up\"\n [disabled]=\"first\"\n (click)=\"moveEventUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this event down\"\n [disabled]=\"last\"\n (click)=\"moveEventDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this event\"\n (click)=\"deleteEvent(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>\n {{ entry.type | flatLookup : eventTypeEntries : \"id\" : \"value\" }}\n </td>\n <td>{{ entry.tag }}</td>\n <td>{{ entry.eid }}</td>\n <td>{{ entry.chronotopes | assertedChronotopes }}</td>\n <td>{{ entry.relatedEntities?.length || 0 }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- event editor -->\n <mat-expansion-panel [expanded]=\"editedEvent\" [disabled]=\"!editedEvent\">\n @if (editedEvent) {\n <mat-expansion-panel-header>\n <span class=\"edited-title\">event</span>\n <span class=\"nr\">{{ editedEventIndex + 1 }}</span>\n </mat-expansion-panel-header>\n }\n <fieldset>\n <cadmus-historical-event-editor\n [eventTagEntries]=\"eventTagEntries\"\n [eventTypeEntries]=\"eventTypeEntries\"\n [relationEntries]=\"relationEntries\"\n [ctTagEntries]=\"ctTagEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [idScopeEntries]=\"idScopeEntries\"\n [idTagEntries]=\"idTagEntries\"\n [event]=\"editedEvent\"\n (eventChange)=\"onEventSave($event!)\"\n (editorClose)=\"closeEvent()\"\n />\n </fieldset>\n </mat-expansion-panel>\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}.edited-title{color:silver;margin-right:8px}.nr{color:#fff;background-color:silver;border:1px solid #c0c0c0;border-radius:4px;padding:0 2px}\n"] }]
|
|
4830
4962
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }, { type: i3.DialogService }] });
|
|
4831
4963
|
|
|
4832
4964
|
class IndexKeywordComponent {
|
|
@@ -4896,10 +5028,10 @@ class IndexKeywordComponent {
|
|
|
4896
5028
|
}
|
|
4897
5029
|
this.keyword.set(this.getKeyword());
|
|
4898
5030
|
}
|
|
4899
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4900
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
5031
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: IndexKeywordComponent, deps: [{ token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
5032
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: IndexKeywordComponent, isStandalone: true, selector: "cadmus-index-keyword", inputs: { keyword: { classPropertyName: "keyword", publicName: "keyword", isSignal: true, isRequired: false, transformFunction: null }, idxEntries: { classPropertyName: "idxEntries", publicName: "idxEntries", isSignal: true, isRequired: false, transformFunction: null }, tagEntries: { classPropertyName: "tagEntries", publicName: "tagEntries", isSignal: true, isRequired: false, transformFunction: null }, langEntries: { classPropertyName: "langEntries", publicName: "langEntries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keyword: "keywordChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"submit()\">\n <div class=\"form-row\">\n <!-- index ID -->\n @if (idxEntries()?.length) {\n <div>\n <mat-form-field>\n <mat-label>index ID</mat-label>\n <mat-select [formControl]=\"indexId\">\n <mat-option [value]=\"''\">(default)</mat-option>\n @for (e of idxEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n } @else {\n <div>\n <mat-form-field>\n <mat-label>index ID</mat-label>\n <input matInput type=\"text\" [formControl]=\"indexId\" />\n @if ( indexId.hasError('maxLength') && (indexId.dirty ||\n indexId.touched) ) {\n <mat-error>index ID too long</mat-error>\n } @if ( indexId.hasError('pattern') && (indexId.dirty ||\n indexId.touched) ) {\n <mat-error>invalid index ID</mat-error>\n }\n </mat-form-field>\n </div>\n }\n\n <!-- language -->\n @if (langEntries()?.length) {\n <div>\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select [formControl]=\"language\">\n <mat-option [value]=\"null\">(n/a)</mat-option>\n @for (e of langEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n } @else {\n <div>\n <mat-form-field>\n <mat-label>language</mat-label>\n <input matInput type=\"text\" [formControl]=\"language\" />\n @if ( language.hasError('pattern') && (language.dirty ||\n language.touched) ) {\n <mat-error>invalid language</mat-error>\n }\n </mat-form-field>\n </div>\n }\n\n <!-- value -->\n <div>\n <mat-form-field>\n <mat-label>value</mat-label>\n <input matInput type=\"text\" [formControl]=\"value\" autofocus />\n @if (value.hasError('maxLength') && (value.dirty || value.touched)) {\n <mat-error>value too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- tag -->\n <div>\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 (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n }\n </div>\n\n <!-- note -->\n <div>\n <mat-form-field>\n <mat-label>note</mat-label>\n <input matInput type=\"text\" [formControl]=\"note\" />\n @if (note.hasError('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=\"Close keyword\"\n (click)=\"cancel()\"\n >\n <mat-icon class=\"mat-warn\">cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n [disabled]=\"form.invalid || form.pristine\"\n mat-icon-button\n matTooltip=\"Save keyword\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.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: "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: "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: 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"] }] });
|
|
4901
5033
|
}
|
|
4902
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5034
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: IndexKeywordComponent, decorators: [{
|
|
4903
5035
|
type: Component,
|
|
4904
5036
|
args: [{ selector: 'cadmus-index-keyword', imports: [
|
|
4905
5037
|
FormsModule,
|
|
@@ -4913,7 +5045,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
4913
5045
|
MatIconButton,
|
|
4914
5046
|
MatTooltip,
|
|
4915
5047
|
MatIcon,
|
|
4916
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"submit()\">\
|
|
5048
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"submit()\">\n <div class=\"form-row\">\n <!-- index ID -->\n @if (idxEntries()?.length) {\n <div>\n <mat-form-field>\n <mat-label>index ID</mat-label>\n <mat-select [formControl]=\"indexId\">\n <mat-option [value]=\"''\">(default)</mat-option>\n @for (e of idxEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n } @else {\n <div>\n <mat-form-field>\n <mat-label>index ID</mat-label>\n <input matInput type=\"text\" [formControl]=\"indexId\" />\n @if ( indexId.hasError('maxLength') && (indexId.dirty ||\n indexId.touched) ) {\n <mat-error>index ID too long</mat-error>\n } @if ( indexId.hasError('pattern') && (indexId.dirty ||\n indexId.touched) ) {\n <mat-error>invalid index ID</mat-error>\n }\n </mat-form-field>\n </div>\n }\n\n <!-- language -->\n @if (langEntries()?.length) {\n <div>\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select [formControl]=\"language\">\n <mat-option [value]=\"null\">(n/a)</mat-option>\n @for (e of langEntries(); track e.id) {\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n } @else {\n <div>\n <mat-form-field>\n <mat-label>language</mat-label>\n <input matInput type=\"text\" [formControl]=\"language\" />\n @if ( language.hasError('pattern') && (language.dirty ||\n language.touched) ) {\n <mat-error>invalid language</mat-error>\n }\n </mat-form-field>\n </div>\n }\n\n <!-- value -->\n <div>\n <mat-form-field>\n <mat-label>value</mat-label>\n <input matInput type=\"text\" [formControl]=\"value\" autofocus />\n @if (value.hasError('maxLength') && (value.dirty || value.touched)) {\n <mat-error>value too long</mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- tag -->\n <div>\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 (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n }\n </div>\n\n <!-- note -->\n <div>\n <mat-form-field>\n <mat-label>note</mat-label>\n <input matInput type=\"text\" [formControl]=\"note\" />\n @if (note.hasError('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=\"Close keyword\"\n (click)=\"cancel()\"\n >\n <mat-icon class=\"mat-warn\">cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n [disabled]=\"form.invalid || form.pristine\"\n mat-icon-button\n matTooltip=\"Save keyword\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
|
|
4917
5049
|
}], ctorParameters: () => [{ type: i2.FormBuilder }] });
|
|
4918
5050
|
|
|
4919
5051
|
/**
|
|
@@ -5153,10 +5285,10 @@ class IndexKeywordsPartComponent extends ModelEditorComponentBase {
|
|
|
5153
5285
|
this.addKeyword(keyword);
|
|
5154
5286
|
this.editedKeyword = undefined;
|
|
5155
5287
|
}
|
|
5156
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5157
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
5288
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: IndexKeywordsPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
5289
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: IndexKeywordsPartComponent, isStandalone: true, selector: "cadmus-index-keywords-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title\r\n [matBadge]=\"keywords.value.length\"\r\n matBadgeOverlap=\"false\"\r\n >{{\r\n (modelName() | titlecase) || \"Index Keywords Part\"\r\n }}</mat-card-title\r\n >\r\n </mat-card-header>\r\n <mat-card-content>\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n class=\"mat-primary\"\r\n (click)=\"addNewKeyword()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> keyword\r\n </button>\r\n </div>\r\n\r\n @if (keywords.value.length) {\r\n <div id=\"list\">\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>index</th>\r\n <th>lang.</th>\r\n <th>keyword</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (k of keywords.value; track k) {\r\n <tr [class.selected]=\"editedKeyword === k\">\r\n <td class=\"fit-width\">\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Edit this keyword\"\r\n (click)=\"editKeyword(k)\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Delete this keyword\"\r\n (click)=\"deleteKeyword(k)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ k.indexId }}</td>\r\n <td>\r\n {{ k.language | flatLookup : langEntries : \"id\" : \"value\" }}\r\n </td>\r\n <td>{{ k.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n } @if (editedKeyword) {\r\n <fieldset>\r\n <mat-expansion-panel\r\n [disabled]=\"!editedKeyword\"\r\n [expanded]=\"editedKeyword\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title> keyword </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <cadmus-index-keyword\r\n [keyword]=\"editedKeyword\"\r\n [idxEntries]=\"idxEntries\"\r\n [langEntries]=\"langEntries\"\r\n [tagEntries]=\"tagEntries\"\r\n (editorClose)=\"onKeywordClose()\"\r\n (keywordChange)=\"onKeywordChange($event!)\"\r\n />\r\n </mat-expansion-panel>\r\n </fieldset>\r\n }\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\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}#list{margin-top:8px}fieldset{margin-top:8px;border:1px solid silver;border-radius:6px;padding:4px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { 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: "directive", type: MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: IndexKeywordComponent, selector: "cadmus-index-keyword", inputs: ["keyword", "idxEntries", "tagEntries", "langEntries"], outputs: ["keywordChange", "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: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: FlatLookupPipe, name: "flatLookup" }] });
|
|
5158
5290
|
}
|
|
5159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5291
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: IndexKeywordsPartComponent, decorators: [{
|
|
5160
5292
|
type: Component,
|
|
5161
5293
|
args: [{ selector: 'cadmus-index-keywords-part', imports: [
|
|
5162
5294
|
FormsModule,
|
|
@@ -5381,10 +5513,10 @@ class KeywordsPartComponent extends ModelEditorComponentBase {
|
|
|
5381
5513
|
this.keywords.updateValueAndValidity();
|
|
5382
5514
|
this.keywords.markAsDirty();
|
|
5383
5515
|
}
|
|
5384
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5385
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
5516
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: KeywordsPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
5517
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: KeywordsPartComponent, isStandalone: true, selector: "cadmus-keywords-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon>picture_in_picture</mat-icon>\n </div>\n <mat-card-title\n [matBadge]=\"keywords.value.length\"\n matBadgeOverlap=\"false\"\n >{{ (modelName() | titlecase) || \"Keywords Part\" }}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <!-- language -->\n <form [formGroup]=\"newForm\" (ngSubmit)=\"addKeyword()\" class=\"form-row\">\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select [formControl]=\"newLanguage\">\n @for (t of langEntries; track t.id) {\n <mat-option [value]=\"t.id\">\n {{ t.value }}\n </mat-option>\n }\n </mat-select>\n <mat-error>select a language</mat-error>\n </mat-form-field>\n <!-- value -->\n <mat-form-field>\n <mat-label>value</mat-label>\n <input\n matInput\n autofocus\n type=\"text\"\n id=\"value\"\n [formControl]=\"newValue\"\n />\n @if ( newValue.hasError('required') && (newValue.touched ||\n newValue.dirty) ) {\n <mat-error>enter a value</mat-error>\n } @if ( newValue.hasError('maxLength') && (newValue.touched ||\n newValue.dirty) ) {\n <mat-error>value too long</mat-error>\n }\n </mat-form-field>\n <button\n mat-flat-button\n type=\"submit\"\n class=\"mat-primary\"\n [disabled]=\"newForm.invalid\"\n >\n <mat-icon>add_circle</mat-icon> keyword\n </button>\n </form>\n <hr />\n @if (keywords.valid) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>lang.</th>\n <th>keyword</th>\n </tr>\n </thead>\n <tbody>\n @for (k of keywords.value; track k) {\n <tr>\n <td>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Delete this keyword\"\n (click)=\"deleteKeyword(k)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ k.language }}</td>\n <td>{{ k.value }}</td>\n </tr>\n }\n </tbody>\n </table>\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: ["th{text-align:left;font-weight:400;color:silver}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.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: MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { 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: "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: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { 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: "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: "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: TitleCasePipe, name: "titlecase" }] });
|
|
5386
5518
|
}
|
|
5387
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5519
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: KeywordsPartComponent, decorators: [{
|
|
5388
5520
|
type: Component,
|
|
5389
5521
|
args: [{ selector: 'cadmus-keywords-part', imports: [
|
|
5390
5522
|
FormsModule,
|
|
@@ -5408,7 +5540,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
5408
5540
|
MatCardActions,
|
|
5409
5541
|
TitleCasePipe,
|
|
5410
5542
|
CloseSaveButtonsComponent,
|
|
5411
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\
|
|
5543
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <div mat-card-avatar>\n <mat-icon>picture_in_picture</mat-icon>\n </div>\n <mat-card-title\n [matBadge]=\"keywords.value.length\"\n matBadgeOverlap=\"false\"\n >{{ (modelName() | titlecase) || \"Keywords Part\" }}</mat-card-title\n >\n </mat-card-header>\n <mat-card-content>\n <!-- language -->\n <form [formGroup]=\"newForm\" (ngSubmit)=\"addKeyword()\" class=\"form-row\">\n <mat-form-field>\n <mat-label>language</mat-label>\n <mat-select [formControl]=\"newLanguage\">\n @for (t of langEntries; track t.id) {\n <mat-option [value]=\"t.id\">\n {{ t.value }}\n </mat-option>\n }\n </mat-select>\n <mat-error>select a language</mat-error>\n </mat-form-field>\n <!-- value -->\n <mat-form-field>\n <mat-label>value</mat-label>\n <input\n matInput\n autofocus\n type=\"text\"\n id=\"value\"\n [formControl]=\"newValue\"\n />\n @if ( newValue.hasError('required') && (newValue.touched ||\n newValue.dirty) ) {\n <mat-error>enter a value</mat-error>\n } @if ( newValue.hasError('maxLength') && (newValue.touched ||\n newValue.dirty) ) {\n <mat-error>value too long</mat-error>\n }\n </mat-form-field>\n <button\n mat-flat-button\n type=\"submit\"\n class=\"mat-primary\"\n [disabled]=\"newForm.invalid\"\n >\n <mat-icon>add_circle</mat-icon> keyword\n </button>\n </form>\n <hr />\n @if (keywords.valid) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>lang.</th>\n <th>keyword</th>\n </tr>\n </thead>\n <tbody>\n @for (k of keywords.value; track k) {\n <tr>\n <td>\n <button\n mat-icon-button\n type=\"button\"\n matTooltip=\"Delete this keyword\"\n (click)=\"deleteKeyword(k)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ k.language }}</td>\n <td>{{ k.value }}</td>\n </tr>\n }\n </tbody>\n </table>\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: ["th{text-align:left;font-weight:400;color:silver}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
|
|
5412
5544
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }] });
|
|
5413
5545
|
|
|
5414
5546
|
/**
|
|
@@ -5645,10 +5777,10 @@ class MetadataPartComponent extends ModelEditorComponentBase {
|
|
|
5645
5777
|
}
|
|
5646
5778
|
return entries;
|
|
5647
5779
|
}
|
|
5648
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5649
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: MetadataPartComponent, isStandalone: true, selector: "cadmus-metadata-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Metadata Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <div formArrayName=\"metadata\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n class=\"mat-primary\"\r\n (click)=\"addMetadatum()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> metadatum\r\n </button>\r\n </div>\r\n @for ( g of metadata.controls; track g; let i = $index; let first =\r\n $first; let last = $last) {\r\n <div>\r\n <!-- child form -->\r\n <div [formGroupName]=\"i\" class=\"form-row\">\r\n <!-- child actions -->\r\n <span style=\"flex: 0 0 auto\">\r\n <span class=\"nr\">{{ i + 1 }}.</span>\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Remove this metadatum\"\r\n (click)=\"removeMetadatum(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"first\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move metadatum up\"\r\n (click)=\"moveMetadatumUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"last\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move metadatum down\"\r\n (click)=\"moveMetadatumDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n </span>\r\n <!-- child controls -->\r\n <!-- type (bound) -->\r\n @if (typeEntries?.length) {\r\n <mat-form-field class=\"type-col\">\r\n <mat-label>type</mat-label>\r\n <mat-select formControlName=\"type\">\r\n @for (e of typeEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ( $any(g)['controls'].type.errors?.required &&\r\n ($any(g)['controls'].type.dirty ||\r\n $any(g)['controls'].type.touched) ) {\r\n <mat-error>type required</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- type (free) -->\r\n @else {\r\n <mat-form-field class=\"type-col\">\r\n <mat-label>type</mat-label>\r\n <input matInput formControlName=\"type\" />\r\n @if ( $any(g)['controls'].type.errors?.required &&\r\n ($any(g)['controls'].type.dirty ||\r\n $any(g)['controls'].type.touched) ) {\r\n <mat-error>type required</mat-error>\r\n } @if ( $any(g)['controls'].type.errors?.maxLength &&\r\n ($any(g)['controls'].type.dirty ||\r\n $any(g)['controls'].type.touched) ) {\r\n <mat-error>type too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (nameEntries?.length) {\r\n <!-- name (bound) -->\r\n <mat-form-field>\r\n <mat-label>name</mat-label>\r\n <mat-select formControlName=\"name\">\r\n @for (e of nameEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ( $any(g)['controls'].name.errors?.required &&\r\n ($any(g)['controls'].name.dirty ||\r\n $any(g)['controls'].name.touched) ) {\r\n <mat-error>name required</mat-error>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n <!-- name (free) -->\r\n <mat-form-field>\r\n <mat-label>name</mat-label>\r\n <input matInput formControlName=\"name\" />\r\n <mat-hint>eid = entity ID</mat-hint>\r\n @if ( $any(g)['controls'].name.errors?.required &&\r\n ($any(g)['controls'].name.dirty ||\r\n $any(g)['controls'].name.touched) ) {\r\n <mat-error>name required</mat-error>\r\n } @if ( $any(g)['controls'].name.errors?.maxLength &&\r\n ($any(g)['controls'].name.dirty ||\r\n $any(g)['controls'].name.touched) ) {\r\n <mat-error>name too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- value -->\r\n <mat-form-field>\r\n <mat-label>value</mat-label>\r\n <input matInput formControlName=\"value\" />\r\n @if ( $any(g)['controls'].value.errors?.required &&\r\n ($any(g)['controls'].value.dirty ||\r\n $any(g)['controls'].value.touched) ) {\r\n <mat-error>value required</mat-error>\r\n } @if ( $any(g)['controls'].value.errors?.maxLength &&\r\n ($any(g)['controls'].value.dirty ||\r\n $any(g)['controls'].value.touched) ) {\r\n <mat-error>value too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:1 0 auto}.form-row .type-col{width:8em!important;flex:0 0 8em!important}.nr{color:#fff;background-color:silver;border:1px solid #c0c0c0;border-radius:4px;padding:0 2px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { 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: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { 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: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { 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: 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: TitleCasePipe, name: "titlecase" }] });
|
|
5780
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: MetadataPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
5781
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: MetadataPartComponent, isStandalone: true, selector: "cadmus-metadata-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Metadata Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <div formArrayName=\"metadata\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n class=\"mat-primary\"\r\n (click)=\"addMetadatum()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> metadatum\r\n </button>\r\n </div>\r\n @for ( g of metadata.controls; track g; let i = $index; let first =\r\n $first; let last = $last) {\r\n <div>\r\n <!-- child form -->\r\n <div [formGroupName]=\"i\" class=\"form-row\">\r\n <!-- child actions -->\r\n <span style=\"flex: 0 0 auto\">\r\n <span class=\"nr\">{{ i + 1 }}.</span>\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Remove this metadatum\"\r\n (click)=\"removeMetadatum(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"first\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move metadatum up\"\r\n (click)=\"moveMetadatumUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n [disabled]=\"last\"\r\n mat-icon-button\r\n type=\"button\"\r\n matTooltip=\"Move metadatum down\"\r\n (click)=\"moveMetadatumDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n </span>\r\n <!-- child controls -->\r\n <!-- type (bound) -->\r\n @if (typeEntries?.length) {\r\n <mat-form-field class=\"type-col\">\r\n <mat-label>type</mat-label>\r\n <mat-select formControlName=\"type\">\r\n @for (e of typeEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ( $any(g)['controls'].type.errors?.required &&\r\n ($any(g)['controls'].type.dirty ||\r\n $any(g)['controls'].type.touched) ) {\r\n <mat-error>type required</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- type (free) -->\r\n @else {\r\n <mat-form-field class=\"type-col\">\r\n <mat-label>type</mat-label>\r\n <input matInput formControlName=\"type\" />\r\n @if ( $any(g)['controls'].type.errors?.required &&\r\n ($any(g)['controls'].type.dirty ||\r\n $any(g)['controls'].type.touched) ) {\r\n <mat-error>type required</mat-error>\r\n } @if ( $any(g)['controls'].type.errors?.maxLength &&\r\n ($any(g)['controls'].type.dirty ||\r\n $any(g)['controls'].type.touched) ) {\r\n <mat-error>type too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (nameEntries?.length) {\r\n <!-- name (bound) -->\r\n <mat-form-field>\r\n <mat-label>name</mat-label>\r\n <mat-select formControlName=\"name\">\r\n @for (e of nameEntries; track e.id) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ( $any(g)['controls'].name.errors?.required &&\r\n ($any(g)['controls'].name.dirty ||\r\n $any(g)['controls'].name.touched) ) {\r\n <mat-error>name required</mat-error>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n <!-- name (free) -->\r\n <mat-form-field>\r\n <mat-label>name</mat-label>\r\n <input matInput formControlName=\"name\" />\r\n <mat-hint>eid = entity ID</mat-hint>\r\n @if ( $any(g)['controls'].name.errors?.required &&\r\n ($any(g)['controls'].name.dirty ||\r\n $any(g)['controls'].name.touched) ) {\r\n <mat-error>name required</mat-error>\r\n } @if ( $any(g)['controls'].name.errors?.maxLength &&\r\n ($any(g)['controls'].name.dirty ||\r\n $any(g)['controls'].name.touched) ) {\r\n <mat-error>name too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <!-- value -->\r\n <mat-form-field>\r\n <mat-label>value</mat-label>\r\n <input matInput formControlName=\"value\" />\r\n @if ( $any(g)['controls'].value.errors?.required &&\r\n ($any(g)['controls'].value.dirty ||\r\n $any(g)['controls'].value.touched) ) {\r\n <mat-error>value required</mat-error>\r\n } @if ( $any(g)['controls'].value.errors?.maxLength &&\r\n ($any(g)['controls'].value.dirty ||\r\n $any(g)['controls'].value.touched) ) {\r\n <mat-error>value too long</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:1 0 auto}.form-row .type-col{width:8em!important;flex:0 0 8em!important}.nr{color:#fff;background-color:silver;border:1px solid #c0c0c0;border-radius:4px;padding:0 2px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { 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: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { 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: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { 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: 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: TitleCasePipe, name: "titlecase" }] });
|
|
5650
5782
|
}
|
|
5651
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5783
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: MetadataPartComponent, decorators: [{
|
|
5652
5784
|
type: Component,
|
|
5653
5785
|
args: [{ selector: 'cadmus-metadata-part', imports: [
|
|
5654
5786
|
FormsModule,
|
|
@@ -5998,10 +6130,10 @@ class NamesPartComponent extends ModelEditorComponentBase {
|
|
|
5998
6130
|
this.names.updateValueAndValidity();
|
|
5999
6131
|
this.names.markAsDirty();
|
|
6000
6132
|
}
|
|
6001
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6002
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
6133
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NamesPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
6134
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: NamesPartComponent, isStandalone: true, selector: "cadmus-names-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Names 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)=\"addName()\"\n >\n <mat-icon>add_circle</mat-icon> name\n </button>\n </div>\n @if (names.value.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>name</th>\n <th>rank</th>\n </tr>\n </thead>\n <tbody>\n @for ( name of names.value; track name; let i = $index; let first =\n $first; let last = $last) {\n <tr [class.selected]=\"name === editedName\">\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this name\"\n (click)=\"editName(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 name up\"\n [disabled]=\"first\"\n (click)=\"moveNameUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this name down\"\n [disabled]=\"last\"\n (click)=\"moveNameDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this name\"\n (click)=\"deleteName(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ name | cadmusProperName }}</td>\n <td>{{ name.assertion?.rank || 0 }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- name editor -->\n @if (editedName) {\n <fieldset>\n <mat-expansion-panel [expanded]=\"editedName\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ editedName | cadmusProperName }}</mat-panel-title\n ></mat-expansion-panel-header\n >\n <cadmus-refs-proper-name\n [langEntries]=\"langEntries\"\n [tagEntries]=\"tagEntries\"\n [typeEntries]=\"typeEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [name]=\"editedName\"\n (nameChange)=\"onNameChange($event)\"\n />\n </mat-expansion-panel>\n </fieldset>\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: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i4$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i4$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: ProperNameComponent, selector: "cadmus-refs-proper-name", inputs: ["name", "typeEntries", "langEntries", "tagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "hideAssertion"], outputs: ["nameChange"] }, { 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: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: CadmusProperNamePipe, name: "cadmusProperName" }] });
|
|
6003
6135
|
}
|
|
6004
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NamesPartComponent, decorators: [{
|
|
6005
6137
|
type: Component,
|
|
6006
6138
|
args: [{ selector: 'cadmus-names-part', imports: [
|
|
6007
6139
|
FormsModule,
|
|
@@ -6021,7 +6153,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
6021
6153
|
TitleCasePipe,
|
|
6022
6154
|
CadmusProperNamePipe,
|
|
6023
6155
|
CloseSaveButtonsComponent,
|
|
6024
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\
|
|
6156
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Names 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)=\"addName()\"\n >\n <mat-icon>add_circle</mat-icon> name\n </button>\n </div>\n @if (names.value.length) {\n <table>\n <thead>\n <tr>\n <th></th>\n <th>name</th>\n <th>rank</th>\n </tr>\n </thead>\n <tbody>\n @for ( name of names.value; track name; let i = $index; let first =\n $first; let last = $last) {\n <tr [class.selected]=\"name === editedName\">\n <td class=\"fit-width\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit this name\"\n (click)=\"editName(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 name up\"\n [disabled]=\"first\"\n (click)=\"moveNameUp(i)\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Move this name down\"\n [disabled]=\"last\"\n (click)=\"moveNameDown(i)\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete this name\"\n (click)=\"deleteName(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td>{{ name | cadmusProperName }}</td>\n <td>{{ name.assertion?.rank || 0 }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- name editor -->\n @if (editedName) {\n <fieldset>\n <mat-expansion-panel [expanded]=\"editedName\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n {{ editedName | cadmusProperName }}</mat-panel-title\n ></mat-expansion-panel-header\n >\n <cadmus-refs-proper-name\n [langEntries]=\"langEntries\"\n [tagEntries]=\"tagEntries\"\n [typeEntries]=\"typeEntries\"\n [assTagEntries]=\"assTagEntries\"\n [refTagEntries]=\"refTagEntries\"\n [refTypeEntries]=\"refTypeEntries\"\n [name]=\"editedName\"\n (nameChange)=\"onNameChange($event)\"\n />\n </mat-expansion-panel>\n </fieldset>\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"] }]
|
|
6025
6157
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }, { type: i3.DialogService }] });
|
|
6026
6158
|
|
|
6027
6159
|
/**
|
|
@@ -6208,10 +6340,10 @@ class NotePartComponent extends ModelEditorComponentBase {
|
|
|
6208
6340
|
part.text = this.text.value?.trim() || '';
|
|
6209
6341
|
return part;
|
|
6210
6342
|
}
|
|
6211
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6212
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
6343
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NotePartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3$1.CadmusTextEdService }, { token: CADMUS_TEXT_ED_BINDINGS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
6344
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: NotePartComponent, isStandalone: true, selector: "cadmus-note-part", providers: [CadmusTextEdService], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Note Part\"\n }}</mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div id=\"container\">\n <div id=\"tga\">\n @if (!tagEntries) {\n <!-- free tag -->\n <mat-form-field>\n <mat-label>tag</mat-label>\n <input\n type=\"text\"\n matInput\n [formControl]=\"tag\"\n spellcheck=\"false\"\n />\n @if (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n } @else {\n <!-- bound tag -->\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 </div>\n\n <div id=\"content-wrapper\">\n <!-- text -->\n <div id=\"txt\">\n <nge-monaco-editor id=\"editor\" (ready)=\"onCreateEditor($event)\" />\n @if (text.hasError('required') && (text.touched || text.dirty)) {\n <mat-error>please enter some text</mat-error>\n }\n </div>\n <!-- preview -->\n <div id=\"pvw\">\n <nge-markdown [data]=\"text.value || undefined\" />\n </div>\n </div>\n </div>\n </mat-card-content>\n\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: ["div#container{display:flex;flex-direction:column;min-height:800px}div#tga{width:100%}div#content-wrapper{display:flex;flex-direction:row;flex:1}div#txt,div#pvw{flex:1;min-height:800px}div#editor{height:100%}div#pvw{border:1px solid silver;border-radius:6px;padding:6px;margin-left:8px}@media only screen and (max-width: 959px){div#content-wrapper{flex-direction:column}div#pvw{margin-left:0;margin-top:8px}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.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: 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: "ngmodule", type: NgeMonacoModule }, { kind: "component", type: i4$3.NgeMonacoEditorComponent, selector: "nge-monaco-editor", inputs: ["autoLayout", "options"], outputs: ["ready"] }, { kind: "ngmodule", type: NgeMarkdownModule }, { kind: "component", type: i5$2.NgeMarkdownComponent, selector: "nge-markdown, [nge-markdown]", inputs: ["file", "data", "theme"], outputs: ["render"] }, { 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: TitleCasePipe, name: "titlecase" }] });
|
|
6213
6345
|
}
|
|
6214
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6346
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NotePartComponent, decorators: [{
|
|
6215
6347
|
type: Component,
|
|
6216
6348
|
args: [{ selector: 'cadmus-note-part', imports: [
|
|
6217
6349
|
FormsModule,
|
|
@@ -6233,7 +6365,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
6233
6365
|
NgeMarkdownModule,
|
|
6234
6366
|
MatCardActions,
|
|
6235
6367
|
CloseSaveButtonsComponent,
|
|
6236
|
-
], providers: [CadmusTextEdService], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\
|
|
6368
|
+
], providers: [CadmusTextEdService], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Note Part\"\n }}</mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div id=\"container\">\n <div id=\"tga\">\n @if (!tagEntries) {\n <!-- free tag -->\n <mat-form-field>\n <mat-label>tag</mat-label>\n <input\n type=\"text\"\n matInput\n [formControl]=\"tag\"\n spellcheck=\"false\"\n />\n @if (tag.hasError('maxLength') && (tag.dirty || tag.touched)) {\n <mat-error>tag too long</mat-error>\n }\n </mat-form-field>\n } @else {\n <!-- bound tag -->\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 </div>\n\n <div id=\"content-wrapper\">\n <!-- text -->\n <div id=\"txt\">\n <nge-monaco-editor id=\"editor\" (ready)=\"onCreateEditor($event)\" />\n @if (text.hasError('required') && (text.touched || text.dirty)) {\n <mat-error>please enter some text</mat-error>\n }\n </div>\n <!-- preview -->\n <div id=\"pvw\">\n <nge-markdown [data]=\"text.value || undefined\" />\n </div>\n </div>\n </div>\n </mat-card-content>\n\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: ["div#container{display:flex;flex-direction:column;min-height:800px}div#tga{width:100%}div#content-wrapper{display:flex;flex-direction:row;flex:1}div#txt,div#pvw{flex:1;min-height:800px}div#editor{height:100%}div#pvw{border:1px solid silver;border-radius:6px;padding:6px;margin-left:8px}@media only screen and (max-width: 959px){div#content-wrapper{flex-direction:column}div#pvw{margin-left:0;margin-top:8px}}\n"] }]
|
|
6237
6369
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }, { type: i3$1.CadmusTextEdService }, { type: undefined, decorators: [{
|
|
6238
6370
|
type: Inject,
|
|
6239
6371
|
args: [CADMUS_TEXT_ED_BINDINGS_TOKEN]
|
|
@@ -6402,10 +6534,10 @@ class PhysicalMeasurementsPartComponent extends ModelEditorComponentBase {
|
|
|
6402
6534
|
this.measurements.markAsDirty();
|
|
6403
6535
|
this.measurements.updateValueAndValidity();
|
|
6404
6536
|
}
|
|
6405
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6406
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
6537
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PhysicalMeasurementsPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
6538
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: PhysicalMeasurementsPartComponent, isStandalone: true, selector: "cadmus-physical-measurements-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Physical Measurements Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cadmus-mat-physical-measurement-set\r\n [nameEntries]=\"nameEntries\"\r\n [unitEntries]=\"unitEntries || []\"\r\n [dimTagEntries]=\"dimTagEntries\"\r\n [measurements]=\"measurements.value\"\r\n (measurementsChange)=\"onMeasurementsChange($event!)\"\r\n />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: PhysicalMeasurementSetComponent, selector: "cadmus-mat-physical-measurement-set", inputs: ["measurements", "allowCustomName", "defaultUnit", "distinct", "hideTag", "unitEntries", "dimTagEntries", "nameEntries"], outputs: ["measurementsChange"] }, { 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: TitleCasePipe, name: "titlecase" }] });
|
|
6407
6539
|
}
|
|
6408
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6540
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PhysicalMeasurementsPartComponent, decorators: [{
|
|
6409
6541
|
type: Component,
|
|
6410
6542
|
args: [{ selector: 'cadmus-physical-measurements-part', imports: [
|
|
6411
6543
|
FormsModule,
|
|
@@ -6659,10 +6791,10 @@ class PhysicalStatesPartComponent extends ModelEditorComponentBase {
|
|
|
6659
6791
|
this.entries.markAsDirty();
|
|
6660
6792
|
this.entries.updateValueAndValidity();
|
|
6661
6793
|
}
|
|
6662
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6663
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
6794
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PhysicalStatesPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
6795
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: PhysicalStatesPartComponent, isStandalone: true, selector: "cadmus-physical-states-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Physical States Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <div>\r\n <button\r\n type=\"button\"\r\n mat-flat-button\r\n class=\"mat-primary\"\r\n (click)=\"addState()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> state\r\n </button>\r\n </div>\r\n @if (entries.value.length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>type</th>\r\n <th>date</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (entry of entries.value; track entry; let i = $index; let first =\r\n $first; let last = $last) {\r\n <tr [class.selected]=\"edited === entry\">\r\n <td class=\"fit-width\">\r\n <span class=\"nr\">{{ i + 1 }}.</span>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this state\"\r\n (click)=\"editState(entry, i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this state up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveStateUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this state down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveStateDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete this state\"\r\n (click)=\"deleteState(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>\r\n {{ entry.type | flatLookup : stateEntries : \"id\" : \"value\" }}\r\n </td>\r\n <td>{{ entry.date | date : \"yyyy-MM-dd\" }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n }\r\n <mat-expansion-panel [expanded]=\"edited\" [disabled]=\"!edited\">\r\n @if (edited) {\r\n <fieldset>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <span class=\"state-title\">state</span>\r\n <span class=\"nr\">{{ editedIndex + 1 }}</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <cadmus-mat-physical-state\r\n [featEntries]=\"featEntries\"\r\n [stateEntries]=\"stateEntries\"\r\n [reporterEntries]=\"reporterEntries\"\r\n [state]=\"edited\"\r\n (stateChange)=\"saveState($event!)\"\r\n (stateCancel)=\"closeState()\"\r\n />\r\n </fieldset>\r\n }\r\n </mat-expansion-panel>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\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}.state-title{color:silver;margin-right:8px}.nr{color:#fff;background-color:silver;border:1px solid #c0c0c0;border-radius:4px;padding:0 2px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i4$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i4$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { 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: PhysicalStateComponent, selector: "cadmus-mat-physical-state", inputs: ["state", "noRecognition", "stateEntries", "reporterEntries", "featEntries"], outputs: ["stateChange", "stateCancel"] }, { 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: DatePipe, name: "date" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: FlatLookupPipe, name: "flatLookup" }] });
|
|
6664
6796
|
}
|
|
6665
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6797
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PhysicalStatesPartComponent, decorators: [{
|
|
6666
6798
|
type: Component,
|
|
6667
6799
|
args: [{ selector: 'cadmus-physical-states-part', imports: [
|
|
6668
6800
|
FormsModule,
|
|
@@ -6832,17 +6964,10 @@ const PIN_LINKS_PART_SCHEMA = {
|
|
|
6832
6964
|
/**
|
|
6833
6965
|
* PinLinksPart editor component.
|
|
6834
6966
|
* Thesauri: pin-link-scopes, pin-link-tags, pin-link-assertion-tags,
|
|
6835
|
-
* pin-link-docref-types, pin-link-docref-tags
|
|
6967
|
+
* pin-link-docref-types, pin-link-docref-tags.
|
|
6836
6968
|
*/
|
|
6837
6969
|
class PinLinksPartComponent extends ModelEditorComponentBase {
|
|
6838
6970
|
links;
|
|
6839
|
-
// settings
|
|
6840
|
-
// by-type: true/false
|
|
6841
|
-
pinByTypeMode;
|
|
6842
|
-
// switch-mode: true/false
|
|
6843
|
-
canSwitchMode;
|
|
6844
|
-
// edit-target: true/false
|
|
6845
|
-
canEditTarget;
|
|
6846
6971
|
// pin-link-scopes
|
|
6847
6972
|
idScopeEntries;
|
|
6848
6973
|
// pin-link-tags
|
|
@@ -6853,11 +6978,6 @@ class PinLinksPartComponent extends ModelEditorComponentBase {
|
|
|
6853
6978
|
refTypeEntries;
|
|
6854
6979
|
// pin-link-docref-tags
|
|
6855
6980
|
refTagEntries;
|
|
6856
|
-
// pin-link-settings; these include:
|
|
6857
|
-
// - by-type: true/false
|
|
6858
|
-
// - switch-mode: true/false
|
|
6859
|
-
// - edit-target: true/false
|
|
6860
|
-
setTagEntries;
|
|
6861
6981
|
constructor(authService, formBuilder) {
|
|
6862
6982
|
super(authService, formBuilder);
|
|
6863
6983
|
// form
|
|
@@ -6875,24 +6995,6 @@ class PinLinksPartComponent extends ModelEditorComponentBase {
|
|
|
6875
6995
|
links: this.links,
|
|
6876
6996
|
});
|
|
6877
6997
|
}
|
|
6878
|
-
/**
|
|
6879
|
-
* Load settings from thesaurus entries.
|
|
6880
|
-
*
|
|
6881
|
-
* @param entries The thesaurus entries if any.
|
|
6882
|
-
*/
|
|
6883
|
-
loadSettings(entries) {
|
|
6884
|
-
if (!entries?.length) {
|
|
6885
|
-
this.pinByTypeMode = undefined;
|
|
6886
|
-
this.canSwitchMode = undefined;
|
|
6887
|
-
this.canEditTarget = undefined;
|
|
6888
|
-
}
|
|
6889
|
-
this.pinByTypeMode =
|
|
6890
|
-
entries?.find((e) => e.id === 'by-type')?.value === 'true';
|
|
6891
|
-
this.canSwitchMode =
|
|
6892
|
-
entries?.find((e) => e.id === 'switch-mode')?.value === 'true';
|
|
6893
|
-
this.canEditTarget =
|
|
6894
|
-
entries?.find((e) => e.id === 'edit-target')?.value === 'true';
|
|
6895
|
-
}
|
|
6896
6998
|
updateThesauri(thesauri) {
|
|
6897
6999
|
let key = 'pin-link-scopes';
|
|
6898
7000
|
if (this.hasThesaurus(key)) {
|
|
@@ -6929,8 +7031,6 @@ class PinLinksPartComponent extends ModelEditorComponentBase {
|
|
|
6929
7031
|
else {
|
|
6930
7032
|
this.refTagEntries = undefined;
|
|
6931
7033
|
}
|
|
6932
|
-
// load settings from thesaurus
|
|
6933
|
-
this.loadSettings(thesauri['pin-link-settings']?.entries);
|
|
6934
7034
|
}
|
|
6935
7035
|
updateForm(part) {
|
|
6936
7036
|
if (!part) {
|
|
@@ -6957,10 +7057,10 @@ class PinLinksPartComponent extends ModelEditorComponentBase {
|
|
|
6957
7057
|
this.links.updateValueAndValidity();
|
|
6958
7058
|
this.links.markAsDirty();
|
|
6959
7059
|
}
|
|
6960
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6961
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
7060
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PinLinksPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
7061
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: PinLinksPartComponent, isStandalone: true, selector: "cadmus-pin-links-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Pin Links Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cadmus-refs-asserted-composite-ids\r\n [ids]=\"links.value || []\"\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [pinByTypeMode]=\"true\"\r\n [canSwitchMode]=\"true\"\r\n [canEditTarget]=\"true\"\r\n (idsChange)=\"onIdsChange($event)\"\r\n />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: AssertedCompositeIdsComponent, selector: "cadmus-refs-asserted-composite-ids", inputs: ["ids", "idScopeEntries", "idTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "defaultPartTypeKey"], outputs: ["idsChange"] }, { 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: TitleCasePipe, name: "titlecase" }] });
|
|
6962
7062
|
}
|
|
6963
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7063
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PinLinksPartComponent, decorators: [{
|
|
6964
7064
|
type: Component,
|
|
6965
7065
|
args: [{ selector: 'cadmus-pin-links-part', imports: [
|
|
6966
7066
|
FormsModule,
|
|
@@ -6975,7 +7075,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
6975
7075
|
AssertedCompositeIdsComponent,
|
|
6976
7076
|
MatCardActions,
|
|
6977
7077
|
CloseSaveButtonsComponent,
|
|
6978
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Pin Links Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cadmus-refs-asserted-composite-ids\r\n [ids]=\"links.value || []\"\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [pinByTypeMode]=\"
|
|
7078
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Pin Links Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cadmus-refs-asserted-composite-ids\r\n [ids]=\"links.value || []\"\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [pinByTypeMode]=\"true\"\r\n [canSwitchMode]=\"true\"\r\n [canEditTarget]=\"true\"\r\n (idsChange)=\"onIdsChange($event)\"\r\n />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n" }]
|
|
6979
7079
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }] });
|
|
6980
7080
|
|
|
6981
7081
|
const PIN_LINKS_FRAGMENT_TYPEID = 'fr.it.vedph.pin-links';
|
|
@@ -7089,7 +7189,7 @@ const PIN_LINKS_FRAGMENT_SCHEMA = {
|
|
|
7089
7189
|
/**
|
|
7090
7190
|
* Pin-based links fragment editor component.
|
|
7091
7191
|
* Thesauri: pin-link-scopes, pin-link-tags, pin-link-assertion-tags,
|
|
7092
|
-
* pin-link-docref-types, pin-link-docref-tags
|
|
7192
|
+
* pin-link-docref-types, pin-link-docref-tags.
|
|
7093
7193
|
*/
|
|
7094
7194
|
class PinLinksFragmentComponent extends ModelEditorComponentBase {
|
|
7095
7195
|
links;
|
|
@@ -7110,11 +7210,6 @@ class PinLinksFragmentComponent extends ModelEditorComponentBase {
|
|
|
7110
7210
|
refTypeEntries;
|
|
7111
7211
|
// pin-link-docref-tags
|
|
7112
7212
|
refTagEntries;
|
|
7113
|
-
// pin-link-settings; these include:
|
|
7114
|
-
// - by-type: true/false
|
|
7115
|
-
// - switch-mode: true/false
|
|
7116
|
-
// - edit-target: true/false
|
|
7117
|
-
setTagEntries;
|
|
7118
7213
|
constructor(authService, formBuilder) {
|
|
7119
7214
|
super(authService, formBuilder);
|
|
7120
7215
|
// form
|
|
@@ -7132,24 +7227,6 @@ class PinLinksFragmentComponent extends ModelEditorComponentBase {
|
|
|
7132
7227
|
links: this.links,
|
|
7133
7228
|
});
|
|
7134
7229
|
}
|
|
7135
|
-
/**
|
|
7136
|
-
* Load settings from thesaurus entries.
|
|
7137
|
-
*
|
|
7138
|
-
* @param entries The thesaurus entries if any.
|
|
7139
|
-
*/
|
|
7140
|
-
loadSettings(entries) {
|
|
7141
|
-
if (!entries?.length) {
|
|
7142
|
-
this.pinByTypeMode = undefined;
|
|
7143
|
-
this.canSwitchMode = undefined;
|
|
7144
|
-
this.canEditTarget = undefined;
|
|
7145
|
-
}
|
|
7146
|
-
this.pinByTypeMode =
|
|
7147
|
-
entries?.find((e) => e.id === 'by-type')?.value === 'true';
|
|
7148
|
-
this.canSwitchMode =
|
|
7149
|
-
entries?.find((e) => e.id === 'switch-mode')?.value === 'true';
|
|
7150
|
-
this.canEditTarget =
|
|
7151
|
-
entries?.find((e) => e.id === 'edit-target')?.value === 'true';
|
|
7152
|
-
}
|
|
7153
7230
|
updateThesauri(thesauri) {
|
|
7154
7231
|
let key = 'pin-link-scopes';
|
|
7155
7232
|
if (this.hasThesaurus(key)) {
|
|
@@ -7186,8 +7263,6 @@ class PinLinksFragmentComponent extends ModelEditorComponentBase {
|
|
|
7186
7263
|
else {
|
|
7187
7264
|
this.refTagEntries = undefined;
|
|
7188
7265
|
}
|
|
7189
|
-
// load settings from thesaurus
|
|
7190
|
-
this.loadSettings(thesauri['pin-link-settings']?.entries);
|
|
7191
7266
|
}
|
|
7192
7267
|
updateForm(fr) {
|
|
7193
7268
|
if (!fr) {
|
|
@@ -7215,10 +7290,10 @@ class PinLinksFragmentComponent extends ModelEditorComponentBase {
|
|
|
7215
7290
|
this.links.updateValueAndValidity();
|
|
7216
7291
|
this.links.markAsDirty();
|
|
7217
7292
|
}
|
|
7218
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7219
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
7293
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PinLinksFragmentComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
7294
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: PinLinksFragmentComponent, isStandalone: true, selector: "cadmus-pin-links-fragment", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>textsms</mat-icon>\r\n </div>\r\n <mat-card-title\r\n >{{ (modelName() | titlecase) || \"Pin Links Fragment\" }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <cadmus-refs-asserted-composite-ids\r\n [ids]=\"links.value || []\"\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [pinByTypeMode]=\"true\"\r\n [canSwitchMode]=\"true\"\r\n [canEditTarget]=\"true\"\r\n (idsChange)=\"onIdsChange($event)\"\r\n />\r\n </mat-card-content>\r\n\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: AssertedCompositeIdsComponent, selector: "cadmus-refs-asserted-composite-ids", inputs: ["ids", "idScopeEntries", "idTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "defaultPartTypeKey"], outputs: ["idsChange"] }, { 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: TitleCasePipe, name: "titlecase" }] });
|
|
7220
7295
|
}
|
|
7221
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7296
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: PinLinksFragmentComponent, decorators: [{
|
|
7222
7297
|
type: Component,
|
|
7223
7298
|
args: [{ selector: 'cadmus-pin-links-fragment', imports: [
|
|
7224
7299
|
FormsModule,
|
|
@@ -7233,7 +7308,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
7233
7308
|
MatCardActions,
|
|
7234
7309
|
TitleCasePipe,
|
|
7235
7310
|
CloseSaveButtonsComponent,
|
|
7236
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>textsms</mat-icon>\r\n </div>\r\n <mat-card-title\r\n >{{ (modelName() | titlecase) || \"Pin Links Fragment\" }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <cadmus-refs-asserted-composite-ids\r\n [ids]=\"links.value || []\"\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [pinByTypeMode]=\"
|
|
7311
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>textsms</mat-icon>\r\n </div>\r\n <mat-card-title\r\n >{{ (modelName() | titlecase) || \"Pin Links Fragment\" }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <cadmus-refs-asserted-composite-ids\r\n [ids]=\"links.value || []\"\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [pinByTypeMode]=\"true\"\r\n [canSwitchMode]=\"true\"\r\n [canEditTarget]=\"true\"\r\n (idsChange)=\"onIdsChange($event)\"\r\n />\r\n </mat-card-content>\r\n\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n" }]
|
|
7237
7312
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }] });
|
|
7238
7313
|
|
|
7239
7314
|
/**
|
|
@@ -7482,10 +7557,10 @@ class TextTileComponent {
|
|
|
7482
7557
|
this.tile.set(this.getTile());
|
|
7483
7558
|
this.editing = false;
|
|
7484
7559
|
}
|
|
7485
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7486
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
7560
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TextTileComponent, deps: [{ token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
7561
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: TextTileComponent, isStandalone: true, selector: "cadmus-text-tile", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, checkable: { classPropertyName: "checkable", publicName: "checkable", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, tile: { classPropertyName: "tile", publicName: "tile", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", tile: "tileChange", editData: "editData" }, viewQueries: [{ propertyName: "textElement", first: true, predicate: ["textInput"], descendants: true }], ngImport: i0, template: "@if (tile()) {\n<div\n class=\"tile\"\n [class.checked]=\"checked\"\n [class.selected]=\"selected()\"\n [style.background-color]=\"color() || 'transparent'\"\n tabindex=\"1\"\n (keydown.F2)=\"edit()\"\n (keydown.F3)=\"requestEditData()\"\n (keydown.space)=\"toggleCheckedNonEdit()\"\n>\n @if (editing) {\n <form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-form-field>\n <mat-label>text [{{ tile()!.x }}]</mat-label>\n <input\n #textInput\n matInput\n type=\"text\"\n spellcheck=\"false\"\n formControlName=\"editedText\"\n (keydown.esc)=\"cancel()\"\n />\n @if ( editedText.hasError('required') && (editedText.dirty ||\n editedText.touched) ) {\n <mat-error>enter a text</mat-error>\n } @if ( editedText.hasError('maxLength') && (editedText.dirty ||\n editedText.touched) ) {\n <mat-error>text too long</mat-error>\n } @if ( editedText.hasError('pattern') && (editedText.dirty ||\n editedText.touched) ) {\n <mat-error>no whitespaces allowed</mat-error>\n }\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Discard text\"\n (click)=\"cancel()\"\n >\n <mat-icon class=\"mat-warn\">clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n [disabled]=\"form.invalid\"\n mat-icon-button\n matTooltip=\"Save text\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </form>\n } @if (!editing) {\n <ng-container style=\"display: flex; align-items: center\">\n <span class=\"text\">{{ text }}</span>\n @if (!readonly()) {\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit text (F2)\"\n (click)=\"edit()\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n } @if (checkable()) {\n <mat-checkbox\n [formControl]=\"checker\"\n matTooltip=\"Toggle check\"\n ></mat-checkbox>\n }\n </ng-container>\n }\n</div>\n}\n", styles: ["div.tile{margin:2px;padding-left:4px;padding-right:4px;border:1px solid transparent;border-radius:4px}div.tile:hover{margin:2px;padding-left:4px;padding-right:4px;border:1px solid gray;border-radius:4px}div.selected{border:2px solid gray #202020}div.checked{background-color:#f0f8ff}span.text{font-weight:700;color:#202020;padding:4px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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: 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: 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"] }] });
|
|
7487
7562
|
}
|
|
7488
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7563
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TextTileComponent, decorators: [{
|
|
7489
7564
|
type: Component,
|
|
7490
7565
|
args: [{ selector: 'cadmus-text-tile', imports: [
|
|
7491
7566
|
FormsModule,
|
|
@@ -7498,7 +7573,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
7498
7573
|
MatTooltip,
|
|
7499
7574
|
MatIcon,
|
|
7500
7575
|
MatCheckbox,
|
|
7501
|
-
], template: "@if (tile()) {\
|
|
7576
|
+
], template: "@if (tile()) {\n<div\n class=\"tile\"\n [class.checked]=\"checked\"\n [class.selected]=\"selected()\"\n [style.background-color]=\"color() || 'transparent'\"\n tabindex=\"1\"\n (keydown.F2)=\"edit()\"\n (keydown.F3)=\"requestEditData()\"\n (keydown.space)=\"toggleCheckedNonEdit()\"\n>\n @if (editing) {\n <form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-form-field>\n <mat-label>text [{{ tile()!.x }}]</mat-label>\n <input\n #textInput\n matInput\n type=\"text\"\n spellcheck=\"false\"\n formControlName=\"editedText\"\n (keydown.esc)=\"cancel()\"\n />\n @if ( editedText.hasError('required') && (editedText.dirty ||\n editedText.touched) ) {\n <mat-error>enter a text</mat-error>\n } @if ( editedText.hasError('maxLength') && (editedText.dirty ||\n editedText.touched) ) {\n <mat-error>text too long</mat-error>\n } @if ( editedText.hasError('pattern') && (editedText.dirty ||\n editedText.touched) ) {\n <mat-error>no whitespaces allowed</mat-error>\n }\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Discard text\"\n (click)=\"cancel()\"\n >\n <mat-icon class=\"mat-warn\">clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n [disabled]=\"form.invalid\"\n mat-icon-button\n matTooltip=\"Save text\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </form>\n } @if (!editing) {\n <ng-container style=\"display: flex; align-items: center\">\n <span class=\"text\">{{ text }}</span>\n @if (!readonly()) {\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit text (F2)\"\n (click)=\"edit()\"\n >\n <mat-icon class=\"mat-primary\">edit</mat-icon>\n </button>\n } @if (checkable()) {\n <mat-checkbox\n [formControl]=\"checker\"\n matTooltip=\"Toggle check\"\n ></mat-checkbox>\n }\n </ng-container>\n }\n</div>\n}\n", styles: ["div.tile{margin:2px;padding-left:4px;padding-right:4px;border:1px solid transparent;border-radius:4px}div.tile:hover{margin:2px;padding-left:4px;padding-right:4px;border:1px solid gray;border-radius:4px}div.selected{border:2px solid gray #202020}div.checked{background-color:#f0f8ff}span.text{font-weight:700;color:#202020;padding:4px}\n"] }]
|
|
7502
7577
|
}], ctorParameters: () => [{ type: i2.FormBuilder }], propDecorators: { textElement: [{
|
|
7503
7578
|
type: ViewChild,
|
|
7504
7579
|
args: ['textInput']
|
|
@@ -7646,10 +7721,10 @@ class TiledDataComponent {
|
|
|
7646
7721
|
}
|
|
7647
7722
|
this.data.set(this.getData());
|
|
7648
7723
|
}
|
|
7649
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7650
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
7724
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TiledDataComponent, deps: [{ token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7725
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: TiledDataComponent, isStandalone: true, selector: "cadmus-tiled-data", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, hiddenKeys: { classPropertyName: "hiddenKeys", publicName: "hiddenKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { data: "dataChange", cancel: "cancel" }, ngImport: i0, template: "<div>\n @if (title()) {\n <h3>{{ title() }}</h3>\n }\n <form [formGroup]=\"filterForm\">\n <mat-form-field>\n <mat-label>filter</mat-label>\n <input\n matInput\n type=\"text\"\n spellcheck=\"false\"\n formControlName=\"keyFilter\"\n />\n @if (keyFilter.value) {\n <button\n type=\"button\"\n mat-button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n (click)=\"keyFilter.setValue('')\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </form>\n <form [formGroup]=\"form\" (submit)=\"save()\">\n <table>\n <tbody>\n @for (key of keys; track key) {\n <tr>\n @if (key.visible) {\n <td>\n <button\n type=\"button\"\n (click)=\"deleteDatum(key)\"\n mat-icon-button\n matTooltip=\"Remove this datum\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td class=\"key-label\">\n {{ key.value }}\n </td>\n <td>\n <mat-form-field>\n <input\n matInput\n spellcheck=\"false\"\n [formControlName]=\"key.value\"\n />\n </mat-form-field>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n <div>\n <form [formGroup]=\"newForm\" (submit)=\"addDatum()\">\n <mat-form-field>\n <mat-label>key</mat-label>\n <input matInput type=\"text\" formControlName=\"newKey\" />\n @if ( newKey.hasError('required') && (newKey.dirty || newKey.touched)\n ) {\n <mat-error>enter a key</mat-error>\n } @if ( newKey.hasError('pattern') && (newKey.dirty || newKey.touched)\n ) {\n <mat-error>invalid key</mat-error>\n }\n </mat-form-field>\n \n <mat-form-field>\n <mat-label>value</mat-label>\n <input matInput type=\"text\" formControlName=\"newValue\" />\n @if ( newValue.hasError('maxLength') && (newValue.dirty ||\n newValue.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n <button type=\"submit\" matTooltip=\"Add new datum\" mat-icon-button>\n <mat-icon>add_circle</mat-icon>\n </button>\n </form>\n </div>\n <div>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"close()\"\n matTooltip=\"Close without saving\"\n >\n <mat-icon class=\"mat-warn\">clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-button\n class=\"mat-primary\"\n [disabled]=\"form.invalid\"\n matTooltip=\"Save data\"\n >\n <mat-icon>check_circle</mat-icon>\n save data\n </button>\n </div>\n </form>\n</div>\n", styles: ["td.key-label{padding-right:8px;color:gray;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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: "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: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }] });
|
|
7651
7726
|
}
|
|
7652
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7727
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TiledDataComponent, decorators: [{
|
|
7653
7728
|
type: Component,
|
|
7654
7729
|
args: [{ selector: 'cadmus-tiled-data', imports: [
|
|
7655
7730
|
FormsModule,
|
|
@@ -7663,7 +7738,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
7663
7738
|
MatIcon,
|
|
7664
7739
|
MatTooltip,
|
|
7665
7740
|
MatError,
|
|
7666
|
-
], template: "<div>\
|
|
7741
|
+
], template: "<div>\n @if (title()) {\n <h3>{{ title() }}</h3>\n }\n <form [formGroup]=\"filterForm\">\n <mat-form-field>\n <mat-label>filter</mat-label>\n <input\n matInput\n type=\"text\"\n spellcheck=\"false\"\n formControlName=\"keyFilter\"\n />\n @if (keyFilter.value) {\n <button\n type=\"button\"\n mat-button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n (click)=\"keyFilter.setValue('')\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </form>\n <form [formGroup]=\"form\" (submit)=\"save()\">\n <table>\n <tbody>\n @for (key of keys; track key) {\n <tr>\n @if (key.visible) {\n <td>\n <button\n type=\"button\"\n (click)=\"deleteDatum(key)\"\n mat-icon-button\n matTooltip=\"Remove this datum\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td class=\"key-label\">\n {{ key.value }}\n </td>\n <td>\n <mat-form-field>\n <input\n matInput\n spellcheck=\"false\"\n [formControlName]=\"key.value\"\n />\n </mat-form-field>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n <div>\n <form [formGroup]=\"newForm\" (submit)=\"addDatum()\">\n <mat-form-field>\n <mat-label>key</mat-label>\n <input matInput type=\"text\" formControlName=\"newKey\" />\n @if ( newKey.hasError('required') && (newKey.dirty || newKey.touched)\n ) {\n <mat-error>enter a key</mat-error>\n } @if ( newKey.hasError('pattern') && (newKey.dirty || newKey.touched)\n ) {\n <mat-error>invalid key</mat-error>\n }\n </mat-form-field>\n \n <mat-form-field>\n <mat-label>value</mat-label>\n <input matInput type=\"text\" formControlName=\"newValue\" />\n @if ( newValue.hasError('maxLength') && (newValue.dirty ||\n newValue.touched) ) {\n <mat-error>too long</mat-error>\n }\n </mat-form-field>\n <button type=\"submit\" matTooltip=\"Add new datum\" mat-icon-button>\n <mat-icon>add_circle</mat-icon>\n </button>\n </form>\n </div>\n <div>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"close()\"\n matTooltip=\"Close without saving\"\n >\n <mat-icon class=\"mat-warn\">clear</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-button\n class=\"mat-primary\"\n [disabled]=\"form.invalid\"\n matTooltip=\"Save data\"\n >\n <mat-icon>check_circle</mat-icon>\n save data\n </button>\n </div>\n </form>\n</div>\n", styles: ["td.key-label{padding-right:8px;color:gray;font-weight:700}\n"] }]
|
|
7667
7742
|
}], ctorParameters: () => [{ type: i2.FormBuilder }, { type: i3.DialogService }] });
|
|
7668
7743
|
|
|
7669
7744
|
class TiledTextPartComponent extends ModelEditorComponentBase {
|
|
@@ -7897,10 +7972,10 @@ class TiledTextPartComponent extends ModelEditorComponentBase {
|
|
|
7897
7972
|
return `${y},${tile.x}`;
|
|
7898
7973
|
}
|
|
7899
7974
|
}
|
|
7900
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7901
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: TiledTextPartComponent, isStandalone: true, selector: "cadmus-tiled-text-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <div mat-card-avatar>\r\n <mat-icon>picture_in_picture</mat-icon>\r\n </div>\r\n <mat-card-title>{{\r\n (modelName() | titlecase) || \"Tiled Text Part\"\r\n }}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <mat-tab-group [(selectedIndex)]=\"currentTabIndex\">\r\n <mat-tab label=\"Text\">\r\n <!-- citation -->\r\n <div>\r\n <mat-form-field style=\"min-width: 400px\">\r\n <mat-label>citation</mat-label>\r\n <input matInput formControlName=\"citation\" />\r\n @if ( citation.hasError('maxLength') && (citation.dirty ||\r\n citation.touched) ) {\r\n <mat-error></mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- rows -->\r\n @if (rows) {\r\n <div cdkDropListGroup>\r\n <!-- row -->\r\n @for ( row of rows.value; track row; let i = $index; let first =\r\n $first; let last = $last) {\r\n <div\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"drop($any($event), row)\"\r\n style=\"display: flex; flex-flow: row wrap\"\r\n >\r\n <!-- nr -->\r\n <span class=\"row-nr\">{{ i + 1 }}</span>\r\n <!-- tile -->\r\n @for (tile of row.tiles || []; track tile) {\r\n <cadmus-text-tile\r\n [tile]=\"tile\"\r\n [selected]=\"tile === selectedTile\"\r\n cdkDrag\r\n style=\"flex: 0 0 auto\"\r\n (click)=\"selectedTile = tile\"\r\n (editData)=\"editTileData(tile)\"\r\n (tileChange)=\"onTileChange($event!)\"\r\n >\r\n <div class=\"tile-placeholder\" *cdkDragPlaceholder></div>\r\n </cadmus-text-tile>\r\n }\r\n <!-- row tail buttons -->\r\n <div class=\"unmuted-hovering\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"addTile(row)\"\r\n matTooltip=\"Append new tile\"\r\n >\r\n <mat-icon>add_circle</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"moveRowUp(i)\"\r\n [disabled]=\"first\"\r\n matTooltip=\"Move this row up\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"moveRowDown(i)\"\r\n [disabled]=\"last\"\r\n matTooltip=\"Move this row down\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete whole row\"\r\n (click)=\"deleteRow(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit row's data\"\r\n (click)=\"editRowData(row)\"\r\n >\r\n <mat-icon>list</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <!-- bottom buttons -->\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Append new row\"\r\n (click)=\"addRow()\"\r\n >\r\n <mat-icon>add_circle</mat-icon>\r\n </button>\r\n <span>{{ getTileCoords() }}</span>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit selected tile's data\"\r\n [disabled]=\"!selectedTile\"\r\n (click)=\"editTileData(selectedTile!)\"\r\n >\r\n <mat-icon>list</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete the selected tile\"\r\n (click)=\"deleteSelectedTile()\"\r\n [disabled]=\"!selectedTile\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n\r\n <mat-card-actions>\r\n <cadmus-close-save-buttons\r\n [form]=\"form\"\r\n [noSave]=\"userLevel < 2\"\r\n (closeRequest)=\"close()\"\r\n />\r\n </mat-card-actions>\r\n </mat-tab>\r\n\r\n @if (editedData) {\r\n <mat-tab label=\"Data\">\r\n <cadmus-tiled-data\r\n [data]=\"editedData\"\r\n [title]=\"editedDataTitle\"\r\n [hiddenKeys]=\"['text']\"\r\n (cancel)=\"closeDataEditor()\"\r\n (dataChange)=\"saveEditedData($event)\"\r\n />\r\n </mat-tab>\r\n }\r\n </mat-tab-group>\r\n </mat-card-content>\r\n </mat-card>\r\n</form>\r\n", styles: ["span.row-nr{color:silver;font-weight:700}div.tile-placeholder{background:#ccc;border:dotted 3px #999;min-width:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.unmuted-hovering{opacity:.2}.unmuted-hovering:hover{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { 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: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: TextTileComponent, selector: "cadmus-text-tile", inputs: ["selected", "checkable", "readonly", "color", "checked", "tile"], outputs: ["checkedChange", "tileChange", "editData"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { 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: "directive", type: MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: TiledDataComponent, selector: "cadmus-tiled-data", inputs: ["title", "data", "hiddenKeys"], outputs: ["dataChange", "cancel"] }, { kind: "component", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }] });
|
|
7975
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TiledTextPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7976
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: TiledTextPartComponent, isStandalone: true, selector: "cadmus-tiled-text-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Tiled Text Part\"\n }}</mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-tab-group [(selectedIndex)]=\"currentTabIndex\">\n <mat-tab label=\"Text\">\n <!-- citation -->\n <div>\n <mat-form-field style=\"min-width: 400px\">\n <mat-label>citation</mat-label>\n <input matInput formControlName=\"citation\" />\n @if ( citation.hasError('maxLength') && (citation.dirty ||\n citation.touched) ) {\n <mat-error></mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- rows -->\n @if (rows) {\n <div cdkDropListGroup>\n <!-- row -->\n @for ( row of rows.value; track row; let i = $index; let first =\n $first; let last = $last) {\n <div\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($any($event), row)\"\n style=\"display: flex; flex-flow: row wrap\"\n >\n <!-- nr -->\n <span class=\"row-nr\">{{ i + 1 }}</span>\n <!-- tile -->\n @for (tile of row.tiles || []; track tile) {\n <cadmus-text-tile\n [tile]=\"tile\"\n [selected]=\"tile === selectedTile\"\n cdkDrag\n style=\"flex: 0 0 auto\"\n (click)=\"selectedTile = tile\"\n (editData)=\"editTileData(tile)\"\n (tileChange)=\"onTileChange($event!)\"\n >\n <div class=\"tile-placeholder\" *cdkDragPlaceholder></div>\n </cadmus-text-tile>\n }\n <!-- row tail buttons -->\n <div class=\"unmuted-hovering\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"addTile(row)\"\n matTooltip=\"Append new tile\"\n >\n <mat-icon>add_circle</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"moveRowUp(i)\"\n [disabled]=\"first\"\n matTooltip=\"Move this row up\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"moveRowDown(i)\"\n [disabled]=\"last\"\n matTooltip=\"Move this row down\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete whole row\"\n (click)=\"deleteRow(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit row's data\"\n (click)=\"editRowData(row)\"\n >\n <mat-icon>list</mat-icon>\n </button>\n </div>\n </div>\n }\n </div>\n }\n <!-- bottom buttons -->\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Append new row\"\n (click)=\"addRow()\"\n >\n <mat-icon>add_circle</mat-icon>\n </button>\n <span>{{ getTileCoords() }}</span>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit selected tile's data\"\n [disabled]=\"!selectedTile\"\n (click)=\"editTileData(selectedTile!)\"\n >\n <mat-icon>list</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete the selected tile\"\n (click)=\"deleteSelectedTile()\"\n [disabled]=\"!selectedTile\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n\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-tab>\n\n @if (editedData) {\n <mat-tab label=\"Data\">\n <cadmus-tiled-data\n [data]=\"editedData\"\n [title]=\"editedDataTitle\"\n [hiddenKeys]=\"['text']\"\n (cancel)=\"closeDataEditor()\"\n (dataChange)=\"saveEditedData($event)\"\n />\n </mat-tab>\n }\n </mat-tab-group>\n </mat-card-content>\n </mat-card>\n</form>\n", styles: ["span.row-nr{color:silver;font-weight:700}div.tile-placeholder{background:#ccc;border:dotted 3px #999;min-width:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.unmuted-hovering{opacity:.2}.unmuted-hovering:hover{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { 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: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: TextTileComponent, selector: "cadmus-text-tile", inputs: ["selected", "checkable", "readonly", "color", "checked", "tile"], outputs: ["checkedChange", "tileChange", "editData"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { 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: "directive", type: MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: TiledDataComponent, selector: "cadmus-tiled-data", inputs: ["title", "data", "hiddenKeys"], outputs: ["dataChange", "cancel"] }, { kind: "component", type: CloseSaveButtonsComponent, selector: "cadmus-close-save-buttons", inputs: ["form", "noSave"], outputs: ["closeRequest"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }] });
|
|
7902
7977
|
}
|
|
7903
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7978
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TiledTextPartComponent, decorators: [{
|
|
7904
7979
|
type: Component,
|
|
7905
7980
|
args: [{ selector: 'cadmus-tiled-text-part', imports: [
|
|
7906
7981
|
FormsModule,
|
|
@@ -7928,7 +8003,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
7928
8003
|
TitleCasePipe,
|
|
7929
8004
|
TiledDataComponent,
|
|
7930
8005
|
CloseSaveButtonsComponent,
|
|
7931
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\
|
|
8006
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Tiled Text Part\"\n }}</mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-tab-group [(selectedIndex)]=\"currentTabIndex\">\n <mat-tab label=\"Text\">\n <!-- citation -->\n <div>\n <mat-form-field style=\"min-width: 400px\">\n <mat-label>citation</mat-label>\n <input matInput formControlName=\"citation\" />\n @if ( citation.hasError('maxLength') && (citation.dirty ||\n citation.touched) ) {\n <mat-error></mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- rows -->\n @if (rows) {\n <div cdkDropListGroup>\n <!-- row -->\n @for ( row of rows.value; track row; let i = $index; let first =\n $first; let last = $last) {\n <div\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($any($event), row)\"\n style=\"display: flex; flex-flow: row wrap\"\n >\n <!-- nr -->\n <span class=\"row-nr\">{{ i + 1 }}</span>\n <!-- tile -->\n @for (tile of row.tiles || []; track tile) {\n <cadmus-text-tile\n [tile]=\"tile\"\n [selected]=\"tile === selectedTile\"\n cdkDrag\n style=\"flex: 0 0 auto\"\n (click)=\"selectedTile = tile\"\n (editData)=\"editTileData(tile)\"\n (tileChange)=\"onTileChange($event!)\"\n >\n <div class=\"tile-placeholder\" *cdkDragPlaceholder></div>\n </cadmus-text-tile>\n }\n <!-- row tail buttons -->\n <div class=\"unmuted-hovering\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"addTile(row)\"\n matTooltip=\"Append new tile\"\n >\n <mat-icon>add_circle</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"moveRowUp(i)\"\n [disabled]=\"first\"\n matTooltip=\"Move this row up\"\n >\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"moveRowDown(i)\"\n [disabled]=\"last\"\n matTooltip=\"Move this row down\"\n >\n <mat-icon>arrow_downward</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete whole row\"\n (click)=\"deleteRow(i)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit row's data\"\n (click)=\"editRowData(row)\"\n >\n <mat-icon>list</mat-icon>\n </button>\n </div>\n </div>\n }\n </div>\n }\n <!-- bottom buttons -->\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Append new row\"\n (click)=\"addRow()\"\n >\n <mat-icon>add_circle</mat-icon>\n </button>\n <span>{{ getTileCoords() }}</span>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Edit selected tile's data\"\n [disabled]=\"!selectedTile\"\n (click)=\"editTileData(selectedTile!)\"\n >\n <mat-icon>list</mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Delete the selected tile\"\n (click)=\"deleteSelectedTile()\"\n [disabled]=\"!selectedTile\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n\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-tab>\n\n @if (editedData) {\n <mat-tab label=\"Data\">\n <cadmus-tiled-data\n [data]=\"editedData\"\n [title]=\"editedDataTitle\"\n [hiddenKeys]=\"['text']\"\n (cancel)=\"closeDataEditor()\"\n (dataChange)=\"saveEditedData($event)\"\n />\n </mat-tab>\n }\n </mat-tab-group>\n </mat-card-content>\n </mat-card>\n</form>\n", styles: ["span.row-nr{color:silver;font-weight:700}div.tile-placeholder{background:#ccc;border:dotted 3px #999;min-width:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.unmuted-hovering{opacity:.2}.unmuted-hovering:hover{opacity:1}\n"] }]
|
|
7932
8007
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }, { type: i3.DialogService }] });
|
|
7933
8008
|
|
|
7934
8009
|
/**
|
|
@@ -8166,10 +8241,10 @@ class TokenTextPartComponent extends ModelEditorComponentBase {
|
|
|
8166
8241
|
}
|
|
8167
8242
|
});
|
|
8168
8243
|
}
|
|
8169
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8170
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
8244
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TokenTextPartComponent, deps: [{ token: i1.AuthJwtService }, { token: i2.FormBuilder }, { token: i3.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
8245
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: TokenTextPartComponent, isStandalone: true, selector: "cadmus-token-text-part", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Token Text Part\"\n }}</mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div id=\"container\">\n <div id=\"cit\">\n <!-- citation -->\n <mat-form-field>\n <mat-label>citation</mat-label>\n <input matInput [formControl]=\"citation\" />\n </mat-form-field>\n </div>\n\n <!-- transforms -->\n <div id=\"trs\">\n <mat-form-field>\n <mat-label>operation</mat-label>\n <mat-select [formControl]=\"transform\">\n <mat-option value=\"ws\">normalize ws</mat-option>\n <mat-option value=\"split\">split at stops</mat-option>\n </mat-select>\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Apply the selected text transformation\"\n (click)=\"applyTransform()\"\n >\n <mat-icon class=\"mat-warn\">find_replace</mat-icon>\n </button>\n </div>\n\n <!-- text -->\n <div id=\"txt\">\n <nge-monaco-editor\n style=\"--editor-height: 800px\"\n (ready)=\"onCreateEditor($event)\"\n />\n @if (text.hasError('required') && (text.touched || text.dirty)) {\n <mat-error>please enter some text</mat-error>\n }\n </div>\n </div>\n\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-content>\n </mat-card>\n</form>\n", styles: ["div#container{display:grid;grid-template-rows:auto 1fr;grid-template-columns:auto 1fr;grid-template-areas:\"cit trs\" \"txt txt\";gap:8px}div#cit{grid-area:cit}div#trs{grid-area:trs}div#txt{grid-area:txt}@media only screen and (max-width: 959px){div#container{grid-template-rows:auto auto 1fr;grid-template-columns:1fr;grid-template-areas:\"cit\" \"trs\" \"txt\"}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.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: 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: "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: 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: "ngmodule", type: NgeMonacoModule }, { kind: "component", type: i4$3.NgeMonacoEditorComponent, selector: "nge-monaco-editor", inputs: ["autoLayout", "options"], outputs: ["ready"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { 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: TitleCasePipe, name: "titlecase" }] });
|
|
8171
8246
|
}
|
|
8172
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
8247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TokenTextPartComponent, decorators: [{
|
|
8173
8248
|
type: Component,
|
|
8174
8249
|
args: [{ selector: 'cadmus-token-text-part', imports: [
|
|
8175
8250
|
FormsModule,
|
|
@@ -8192,7 +8267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
8192
8267
|
MatCardActions,
|
|
8193
8268
|
TitleCasePipe,
|
|
8194
8269
|
CloseSaveButtonsComponent,
|
|
8195
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\
|
|
8270
|
+
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <mat-card appearance=\"outlined\">\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) || \"Token Text Part\"\n }}</mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <div id=\"container\">\n <div id=\"cit\">\n <!-- citation -->\n <mat-form-field>\n <mat-label>citation</mat-label>\n <input matInput [formControl]=\"citation\" />\n </mat-form-field>\n </div>\n\n <!-- transforms -->\n <div id=\"trs\">\n <mat-form-field>\n <mat-label>operation</mat-label>\n <mat-select [formControl]=\"transform\">\n <mat-option value=\"ws\">normalize ws</mat-option>\n <mat-option value=\"split\">split at stops</mat-option>\n </mat-select>\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Apply the selected text transformation\"\n (click)=\"applyTransform()\"\n >\n <mat-icon class=\"mat-warn\">find_replace</mat-icon>\n </button>\n </div>\n\n <!-- text -->\n <div id=\"txt\">\n <nge-monaco-editor\n style=\"--editor-height: 800px\"\n (ready)=\"onCreateEditor($event)\"\n />\n @if (text.hasError('required') && (text.touched || text.dirty)) {\n <mat-error>please enter some text</mat-error>\n }\n </div>\n </div>\n\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-content>\n </mat-card>\n</form>\n", styles: ["div#container{display:grid;grid-template-rows:auto 1fr;grid-template-columns:auto 1fr;grid-template-areas:\"cit trs\" \"txt txt\";gap:8px}div#cit{grid-area:cit}div#trs{grid-area:trs}div#txt{grid-area:txt}@media only screen and (max-width: 959px){div#container{grid-template-rows:auto auto 1fr;grid-template-columns:1fr;grid-template-areas:\"cit\" \"trs\" \"txt\"}}\n"] }]
|
|
8196
8271
|
}], ctorParameters: () => [{ type: i1.AuthJwtService }, { type: i2.FormBuilder }, { type: i3.DialogService }] });
|
|
8197
8272
|
|
|
8198
8273
|
/*
|
|
@@ -8203,5 +8278,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
8203
8278
|
* Generated bundle index. Do not edit.
|
|
8204
8279
|
*/
|
|
8205
8280
|
|
|
8206
|
-
export { ASSERTED_HISTORICAL_DATES_PART_SCHEMA, ASSERTED_HISTORICAL_DATES_PART_TYPEID, AssertedHistoricalDateComponent, AssertedHistoricalDatesPartComponent, BIBLIOGRAPHY_PART_SCHEMA, BIBLIOGRAPHY_PART_TYPEID, BibAuthorsEditorComponent, BibliographyEntryComponent, BibliographyPartComponent, CATEGORIES_PART_SCHEMA, CATEGORIES_PART_TYPEID, CHRONOLOGY_FRAGMENT_SCHEMA, CHRONOLOGY_FRAGMENT_TYPEID, CHRONOTOPES_PART_TYPEID, COMMENT_FRAGMENT_SCHEMA, COMMENT_FRAGMENT_TYPEID, COMMENT_PART_SCHEMA, COMMENT_PART_TYPEID, CategoriesPartComponent, ChronologyFragmentComponent, ChronotopesPartComponent, Chronotopes_PART_SCHEMA, CommentEditorComponent, DECORATED_COUNTS_PART_SCHEMA, DECORATED_COUNTS_PART_TYPEID, DISTRICT_LOCATION_PART_SCHEMA, DISTRICT_LOCATION_PART_TYPEID, DOC_REFERENCES_PART_SCHEMA, DOC_REFERENCES_PART_TYPEID, DecoratedCountsPartComponent, DistrictLocationPartComponent, DocReferencesPartComponent, EXTERNAL_IDS_PART_SCHEMA, EXTERNAL_IDS_PART_TYPEID, ExternalIdsPartComponent, HISTORICAL_DATE_PART_SCHEMA, HISTORICAL_DATE_PART_TYPEID, HISTORICAL_EVENTS_PART_SCHEMA, HISTORICAL_EVENTS_PART_TYPEID, HistoricalDatePartComponent, HistoricalEventEditorComponent, HistoricalEventsPartComponent, INDEX_KEYWORDS_PART_SCHEMA, INDEX_KEYWORDS_PART_TYPEID, IndexKeywordComponent, IndexKeywordsPartComponent, KEYWORDS_PART_SCHEMA, KEYWORDS_PART_TYPEID, KeywordsPartComponent, METADATA_PART_SCHEMA, METADATA_PART_TYPEID, MetadataPartComponent, NAMES_PART_SCHEMA, NAMES_PART_TYPEID, NOTE_PART_SCHEMA, NOTE_PART_TYPEID, NamesPartComponent, NotePartComponent, PHYSICAL_MEASUREMENTS_PART_SCHEMA, PHYSICAL_MEASUREMENTS_PART_TYPEID, PHYSICAL_STATES_PART_SCHEMA, PHYSICAL_STATES_PART_TYPEID, PIN_LINKS_FRAGMENT_SCHEMA, PIN_LINKS_FRAGMENT_TYPEID, PIN_LINKS_PART_SCHEMA, PIN_LINKS_PART_TYPEID, PhysicalMeasurementsPartComponent, PhysicalStatesPartComponent, PinLinksFragmentComponent, PinLinksPartComponent, RelatedEntityComponent, TEXT_TILE_TEXT_DATA_NAME, TILEDTEXTPART_SCHEMA, TILED_TEXT_PART_TYPEID, TOKEN_TEXT_PART_SCHEMA, TOKEN_TEXT_PART_TYPEID, TextTileComponent, TiledDataComponent, TiledTextPartComponent, TokenTextPartComponent };
|
|
8281
|
+
export { ASSERTED_HISTORICAL_DATES_PART_SCHEMA, ASSERTED_HISTORICAL_DATES_PART_TYPEID, AssertedHistoricalDateComponent, AssertedHistoricalDatesPartComponent, BIBLIOGRAPHY_PART_SCHEMA, BIBLIOGRAPHY_PART_TYPEID, BibAuthorsEditorComponent, BibliographyEntryComponent, BibliographyPartComponent, CATEGORIES_PART_SCHEMA, CATEGORIES_PART_TYPEID, CHRONOLOGY_FRAGMENT_SCHEMA, CHRONOLOGY_FRAGMENT_TYPEID, CHRONOTOPES_PART_TYPEID, COMMENT_FRAGMENT_SCHEMA, COMMENT_FRAGMENT_TYPEID, COMMENT_PART_SCHEMA, COMMENT_PART_TYPEID, CategoriesPartComponent, ChronologyFragmentComponent, ChronotopesPartComponent, Chronotopes_PART_SCHEMA, CommentEditorComponent, DECORATED_COUNTS_PART_SCHEMA, DECORATED_COUNTS_PART_TYPEID, DISTRICT_LOCATION_PART_SCHEMA, DISTRICT_LOCATION_PART_TYPEID, DOC_REFERENCES_PART_SCHEMA, DOC_REFERENCES_PART_TYPEID, DecoratedCountsPartComponent, DistrictLocationPartComponent, DocReferencesPartComponent, EXTERNAL_IDS_PART_SCHEMA, EXTERNAL_IDS_PART_TYPEID, ExternalIdsPartComponent, FLAGS_PART_SCHEMA, FLAGS_PART_TYPEID, FlagsPartComponent, HISTORICAL_DATE_PART_SCHEMA, HISTORICAL_DATE_PART_TYPEID, HISTORICAL_EVENTS_PART_SCHEMA, HISTORICAL_EVENTS_PART_TYPEID, HistoricalDatePartComponent, HistoricalEventEditorComponent, HistoricalEventsPartComponent, INDEX_KEYWORDS_PART_SCHEMA, INDEX_KEYWORDS_PART_TYPEID, IndexKeywordComponent, IndexKeywordsPartComponent, KEYWORDS_PART_SCHEMA, KEYWORDS_PART_TYPEID, KeywordsPartComponent, METADATA_PART_SCHEMA, METADATA_PART_TYPEID, MetadataPartComponent, NAMES_PART_SCHEMA, NAMES_PART_TYPEID, NOTE_PART_SCHEMA, NOTE_PART_TYPEID, NamesPartComponent, NotePartComponent, PHYSICAL_MEASUREMENTS_PART_SCHEMA, PHYSICAL_MEASUREMENTS_PART_TYPEID, PHYSICAL_STATES_PART_SCHEMA, PHYSICAL_STATES_PART_TYPEID, PIN_LINKS_FRAGMENT_SCHEMA, PIN_LINKS_FRAGMENT_TYPEID, PIN_LINKS_PART_SCHEMA, PIN_LINKS_PART_TYPEID, PhysicalMeasurementsPartComponent, PhysicalStatesPartComponent, PinLinksFragmentComponent, PinLinksPartComponent, RelatedEntityComponent, TEXT_TILE_TEXT_DATA_NAME, TILEDTEXTPART_SCHEMA, TILED_TEXT_PART_TYPEID, TOKEN_TEXT_PART_SCHEMA, TOKEN_TEXT_PART_TYPEID, TextTileComponent, TiledDataComponent, TiledTextPartComponent, TokenTextPartComponent };
|
|
8207
8282
|
//# sourceMappingURL=myrmidon-cadmus-part-general-ui.mjs.map
|