@myrmidon/cadmus-refs-asserted-ids 10.0.17 → 11.0.1
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.
|
@@ -21,6 +21,7 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
|
|
21
21
|
import { AssertionComponent } from '@myrmidon/cadmus-refs-assertion';
|
|
22
22
|
import { RefLookupComponent, RefLookupSetComponent, LOOKUP_CONFIGS_KEY } from '@myrmidon/cadmus-refs-lookup';
|
|
23
23
|
import { ThesaurusEntriesPickerComponent } from '@myrmidon/cadmus-thesaurus-store';
|
|
24
|
+
import { TaxoStorePicker } from '@myrmidon/taxo-store-picker';
|
|
24
25
|
import { map, of, distinctUntilChanged, debounceTime, forkJoin, take } from 'rxjs';
|
|
25
26
|
import * as i6 from '@angular/cdk/clipboard';
|
|
26
27
|
import { ClipboardModule } from '@angular/cdk/clipboard';
|
|
@@ -56,10 +57,10 @@ class ItemRefLookupService {
|
|
|
56
57
|
getName(item) {
|
|
57
58
|
return item?.title;
|
|
58
59
|
}
|
|
59
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
60
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
60
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ItemRefLookupService, deps: [{ token: i1.ItemService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
61
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ItemRefLookupService, providedIn: 'root' });
|
|
61
62
|
}
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ItemRefLookupService, decorators: [{
|
|
63
64
|
type: Injectable,
|
|
64
65
|
args: [{
|
|
65
66
|
providedIn: 'root',
|
|
@@ -142,10 +143,10 @@ class PinRefLookupService {
|
|
|
142
143
|
}
|
|
143
144
|
}));
|
|
144
145
|
}
|
|
145
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
146
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
146
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: PinRefLookupService, deps: [{ token: i1.ItemService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
147
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: PinRefLookupService, providedIn: 'root' });
|
|
147
148
|
}
|
|
148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: PinRefLookupService, decorators: [{
|
|
149
150
|
type: Injectable,
|
|
150
151
|
args: [{
|
|
151
152
|
providedIn: 'root',
|
|
@@ -175,16 +176,19 @@ class PinTargetLookupComponent {
|
|
|
175
176
|
* True when the by-type pin lookup mode is active.
|
|
176
177
|
* User can change mode unless modeSwitching is false.
|
|
177
178
|
*/
|
|
178
|
-
pinByTypeMode = model(
|
|
179
|
+
pinByTypeMode = model(/* @ts-ignore */
|
|
180
|
+
...(ngDevMode ? [undefined, { debugName: "pinByTypeMode" }] : /* istanbul ignore next */ []));
|
|
179
181
|
/**
|
|
180
182
|
* True when the user can switch between by-type and by-item mode.
|
|
181
183
|
*/
|
|
182
|
-
canSwitchMode = model(
|
|
184
|
+
canSwitchMode = model(/* @ts-ignore */
|
|
185
|
+
...(ngDevMode ? [undefined, { debugName: "canSwitchMode" }] : /* istanbul ignore next */ []));
|
|
183
186
|
/**
|
|
184
187
|
* True when the user can edit the target's gid/label for internal
|
|
185
188
|
* targets.
|
|
186
189
|
*/
|
|
187
|
-
canEditTarget = input(
|
|
190
|
+
canEditTarget = input(/* @ts-ignore */
|
|
191
|
+
...(ngDevMode ? [undefined, { debugName: "canEditTarget" }] : /* istanbul ignore next */ []));
|
|
188
192
|
/**
|
|
189
193
|
* The lookup definitions to be used for the by-type lookup. If
|
|
190
194
|
* not specified, the lookup definitions will be got via injection
|
|
@@ -193,24 +197,44 @@ class PinTargetLookupComponent {
|
|
|
193
197
|
* if this is not available either, the by-type lookup will be
|
|
194
198
|
* disabled.
|
|
195
199
|
*/
|
|
196
|
-
lookupDefinitions = model(
|
|
200
|
+
lookupDefinitions = model(/* @ts-ignore */
|
|
201
|
+
...(ngDevMode ? [undefined, { debugName: "lookupDefinitions" }] : /* istanbul ignore next */ []));
|
|
197
202
|
/**
|
|
198
203
|
* The optional configurations for using external lookup services.
|
|
199
204
|
*/
|
|
200
|
-
extLookupConfigs = input([],
|
|
205
|
+
extLookupConfigs = input([], /* @ts-ignore */
|
|
206
|
+
...(ngDevMode ? [{ debugName: "extLookupConfigs" }] : /* istanbul ignore next */ []));
|
|
201
207
|
/**
|
|
202
208
|
* Optional preset options for external lookup providers.
|
|
203
209
|
* Maps provider IDs to their available scopes.
|
|
204
210
|
*/
|
|
205
|
-
lookupProviderOptions = input(
|
|
211
|
+
lookupProviderOptions = input(/* @ts-ignore */
|
|
212
|
+
...(ngDevMode ? [undefined, { debugName: "lookupProviderOptions" }] : /* istanbul ignore next */ []));
|
|
206
213
|
/**
|
|
207
214
|
* The target to be edited.
|
|
208
215
|
*/
|
|
209
|
-
target = model(
|
|
216
|
+
target = model(/* @ts-ignore */
|
|
217
|
+
...(ngDevMode ? [undefined, { debugName: "target" }] : /* istanbul ignore next */ []));
|
|
218
|
+
/**
|
|
219
|
+
* True to hide the internal "external" target source checkbox,
|
|
220
|
+
* letting the parent component fully command the source mode via
|
|
221
|
+
* externalMode.
|
|
222
|
+
*/
|
|
223
|
+
hideTargetSelector = input(false, /* @ts-ignore */
|
|
224
|
+
...(ngDevMode ? [{ debugName: "hideTargetSelector" }] : /* istanbul ignore next */ []));
|
|
225
|
+
/**
|
|
226
|
+
* When set, commands whether the target source is external (true)
|
|
227
|
+
* or internal (false), overriding the internal heuristic based on
|
|
228
|
+
* the target's itemId. Leave unset to let this component decide on
|
|
229
|
+
* its own, as before.
|
|
230
|
+
*/
|
|
231
|
+
externalMode = input(/* @ts-ignore */
|
|
232
|
+
...(ngDevMode ? [undefined, { debugName: "externalMode" }] : /* istanbul ignore next */ []));
|
|
210
233
|
/**
|
|
211
234
|
* The default value for part type key when the by-type mode is active.
|
|
212
235
|
*/
|
|
213
|
-
defaultPartTypeKey = input(
|
|
236
|
+
defaultPartTypeKey = input(/* @ts-ignore */
|
|
237
|
+
...(ngDevMode ? [undefined, { debugName: "defaultPartTypeKey" }] : /* istanbul ignore next */ []));
|
|
214
238
|
/**
|
|
215
239
|
* Emitted when user closes the editor.
|
|
216
240
|
*/
|
|
@@ -226,14 +250,20 @@ class PinTargetLookupComponent {
|
|
|
226
250
|
filter = signal({
|
|
227
251
|
text: '',
|
|
228
252
|
limit: 10,
|
|
229
|
-
},
|
|
230
|
-
|
|
231
|
-
|
|
253
|
+
}, /* @ts-ignore */
|
|
254
|
+
...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
|
|
255
|
+
pinFilterOptions = signal(undefined, /* @ts-ignore */
|
|
256
|
+
...(ngDevMode ? [{ debugName: "pinFilterOptions" }] : /* istanbul ignore next */ []));
|
|
257
|
+
lookupData = signal(undefined, /* @ts-ignore */
|
|
258
|
+
...(ngDevMode ? [{ debugName: "lookupData" }] : /* istanbul ignore next */ []));
|
|
232
259
|
// by type
|
|
233
|
-
modelEntries = signal([],
|
|
234
|
-
|
|
260
|
+
modelEntries = signal([], /* @ts-ignore */
|
|
261
|
+
...(ngDevMode ? [{ debugName: "modelEntries" }] : /* istanbul ignore next */ []));
|
|
262
|
+
partTypeKeys = signal([], /* @ts-ignore */
|
|
263
|
+
...(ngDevMode ? [{ debugName: "partTypeKeys" }] : /* istanbul ignore next */ []));
|
|
235
264
|
// by item
|
|
236
|
-
itemParts = signal([],
|
|
265
|
+
itemParts = signal([], /* @ts-ignore */
|
|
266
|
+
...(ngDevMode ? [{ debugName: "itemParts" }] : /* istanbul ignore next */ []));
|
|
237
267
|
// form - by item
|
|
238
268
|
item;
|
|
239
269
|
itemPart;
|
|
@@ -295,6 +325,15 @@ class PinTargetLookupComponent {
|
|
|
295
325
|
console.log('target changed', target);
|
|
296
326
|
this.updateForm(target);
|
|
297
327
|
});
|
|
328
|
+
// when externalMode is commanded by the parent, sync it to the
|
|
329
|
+
// external form control
|
|
330
|
+
effect(() => {
|
|
331
|
+
const externalMode = this.externalMode();
|
|
332
|
+
if (externalMode !== undefined && this.external.value !== externalMode) {
|
|
333
|
+
this.external.setValue(externalMode);
|
|
334
|
+
this.external.markAsDirty();
|
|
335
|
+
}
|
|
336
|
+
});
|
|
298
337
|
}
|
|
299
338
|
emitTargetChange() {
|
|
300
339
|
if (!this._updatingForm) {
|
|
@@ -527,7 +566,9 @@ class PinTargetLookupComponent {
|
|
|
527
566
|
this._updatingForm = true;
|
|
528
567
|
this.item.setValue(item, { emitEvent: false });
|
|
529
568
|
this.form.markAsPristine();
|
|
530
|
-
this.
|
|
569
|
+
if (this.externalMode() === undefined) {
|
|
570
|
+
this.external.setValue(false, { emitEvent: false });
|
|
571
|
+
}
|
|
531
572
|
this.updateTargetFromData();
|
|
532
573
|
this._updatingForm = false;
|
|
533
574
|
},
|
|
@@ -536,15 +577,19 @@ class PinTargetLookupComponent {
|
|
|
536
577
|
console.error('Item service error', error);
|
|
537
578
|
}
|
|
538
579
|
this._updatingForm = true;
|
|
539
|
-
this.
|
|
580
|
+
if (this.externalMode() === undefined) {
|
|
581
|
+
this.external.setValue(false, { emitEvent: false });
|
|
582
|
+
}
|
|
540
583
|
this._updatingForm = false;
|
|
541
584
|
},
|
|
542
585
|
});
|
|
543
586
|
}
|
|
544
587
|
else {
|
|
545
|
-
this.
|
|
546
|
-
|
|
547
|
-
|
|
588
|
+
if (this.externalMode() === undefined) {
|
|
589
|
+
this.external.setValue(true, {
|
|
590
|
+
emitEvent: false,
|
|
591
|
+
});
|
|
592
|
+
}
|
|
548
593
|
this.updateTargetFromData();
|
|
549
594
|
}
|
|
550
595
|
}
|
|
@@ -655,8 +700,8 @@ class PinTargetLookupComponent {
|
|
|
655
700
|
}
|
|
656
701
|
this.emitTargetChange();
|
|
657
702
|
}
|
|
658
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
659
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: PinTargetLookupComponent, isStandalone: true, selector: "cadmus-pin-target-lookup", inputs: { 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 }, lookupDefinitions: { classPropertyName: "lookupDefinitions", publicName: "lookupDefinitions", isSignal: true, isRequired: false, transformFunction: null }, extLookupConfigs: { classPropertyName: "extLookupConfigs", publicName: "extLookupConfigs", isSignal: true, isRequired: false, transformFunction: null }, lookupProviderOptions: { classPropertyName: "lookupProviderOptions", publicName: "lookupProviderOptions", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, defaultPartTypeKey: { classPropertyName: "defaultPartTypeKey", publicName: "defaultPartTypeKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pinByTypeMode: "pinByTypeModeChange", canSwitchMode: "canSwitchModeChange", lookupDefinitions: "lookupDefinitionsChange", target: "targetChange", editorClose: "editorClose", extMoreRequest: "extMoreRequest", extLookupConfigChange: "extLookupConfigChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- external -->\r\n <mat-checkbox [formControl]=\"external\">external</mat-checkbox>\r\n <!-- mode switcher -->\r\n @if (!external.value) {\r\n <div>\r\n @if (canSwitchMode()) {\r\n <mat-checkbox [formControl]=\"byTypeMode\"> by type</mat-checkbox>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- label -->\r\n <div>\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n @if ($any(label).errors?.required && (label.dirty || label.touched)) {\r\n <mat-error>label required</mat-error>\r\n } @if ( $any(label).errors?.maxLength && (label.dirty || label.touched)\r\n ) {\r\n <mat-error>label too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && label.value) {\r\n <div class=\"info\"><span class=\"label\">label</span>{{ label.value }}</div>\r\n }\r\n </div>\r\n\r\n <!-- gid -->\r\n <div id=\"gid-container\">\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>GID</mat-label>\r\n <input matInput [formControl]=\"gid\" />\r\n @if ($any(gid).errors?.required && (gid.dirty || gid.touched)) {\r\n <mat-error>GID required</mat-error>\r\n } @if ($any(gid).errors?.maxLength && (gid.dirty || gid.touched)) {\r\n <mat-error>GID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && gid.value) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span> <span class=\"gid\">{{ gid.value }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- external lookup set -->\r\n @if (external.value && extLookupConfigs().length) {\r\n <fieldset>\r\n <legend>external lookup</legend>\r\n <cadmus-refs-lookup-set\r\n [configs]=\"extLookupConfigs()\"\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n (itemChange)=\"onExtItemChange($event)\"\r\n (moreRequest)=\"onExtMoreRequest($event)\"\r\n (configChange)=\"onExtConfigChange($any($event))\"\r\n />\r\n </fieldset>\r\n }\r\n\r\n <!-- BY ITEM -->\r\n @if (!external.value) {\r\n <fieldset>\r\n <legend>internal lookup</legend>\r\n <div class=\"form-row\">\r\n @if (!byTypeMode.value) {\r\n <fieldset class=\"form-row\">\r\n <legend>pin filters</legend>\r\n <!-- item filter -->\r\n <cadmus-refs-lookup\r\n [service]=\"itemLookupService\"\r\n label=\"item\"\r\n (itemChange)=\"onItemLookupChange($event)\"\r\n />\r\n <!-- part filter -->\r\n @if (itemParts().length) {\r\n <mat-form-field>\r\n <mat-label>part</mat-label>\r\n <mat-select [formControl]=\"itemPart\">\r\n <mat-option [value]=\"null\">(any)</mat-option>\r\n @for (p of itemParts(); track p) {\r\n <mat-option [value]=\"p\">{{\r\n p.typeId | flatLookup : modelEntries() : \"id\" : \"value\"\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-hint>parts: {{ itemParts().length }}</mat-hint>\r\n </mat-form-field>\r\n }\r\n </fieldset>\r\n }\r\n <!-- BY TYPE -->\r\n @if (byTypeMode.value) {\r\n <div>\r\n <!-- part type filter -->\r\n @if (partTypeKeys().length) {\r\n <mat-form-field>\r\n <mat-label>part type</mat-label>\r\n <mat-select [formControl]=\"partTypeKey\">\r\n @for (k of partTypeKeys(); track k) {\r\n <mat-option [value]=\"k\">{{ k }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n <!-- PIN -->\r\n @if (partTypeKey.value) {\r\n <div>\r\n <!-- pin lookup -->\r\n <cadmus-refs-lookup\r\n [service]=\"pinLookupService\"\r\n [baseFilter]=\"filter()\"\r\n [options]=\"pinFilterOptions()\"\r\n label=\"pin\"\r\n (itemChange)=\"onPinLookupChange($event)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n <!-- data -->\r\n @if (lookupData()?.pin?.name) {\r\n <mat-expansion-panel id=\"data\">\r\n <mat-expansion-panel-header>pin data</mat-expansion-panel-header>\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <th></th>\r\n <th>source</th>\r\n <th>value</th>\r\n </thead>\r\n <tbody>\r\n <!-- pin name -->\r\n @if (lookupData()?.pin?.name) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.name\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin name</td>\r\n <td>{{ lookupData()!.pin.name }}</td>\r\n </tr>\r\n }\r\n <!-- pin value -->\r\n @if (lookupData()?.pin?.value) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin value</td>\r\n <td>{{ lookupData()!.pin.value }}</td>\r\n </tr>\r\n }\r\n <!-- item ID -->\r\n @if (lookupData()?.pin?.itemId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.itemId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item ID</td>\r\n <td>{{ lookupData()!.pin.itemId }}</td>\r\n </tr>\r\n }\r\n <!-- item title -->\r\n @if (lookupData()?.item?.title) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.item!.title\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item title</td>\r\n <td>{{ lookupData()!.item!.title }}</td>\r\n </tr>\r\n }\r\n <!-- part ID -->\r\n @if (lookupData()?.pin?.partId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.partId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part ID</td>\r\n <td>{{ lookupData()!.pin.partId }}</td>\r\n </tr>\r\n }\r\n <!-- part type ID -->\r\n @if (lookupData()?.pin?.partTypeId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.partTypeId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part type ID</td>\r\n <td>{{ lookupData()!.pin!.partTypeId }}</td>\r\n </tr>\r\n }\r\n <!-- part role ID -->\r\n @if (lookupData()?.pin?.roleId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.roleId!\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part role ID</td>\r\n <td>{{ lookupData()!.pin!.roleId }}</td>\r\n </tr>\r\n }\r\n <!-- part's metadata -->\r\n @for ( m of lookupData()?.metaPart?.metadata || []; track m; 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 [cdkCopyToClipboard]=\"m.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"metadata\">{{ m.name }}</td>\r\n <td class=\"metadata\">{{ m.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </mat-expansion-panel>\r\n }\r\n </fieldset>\r\n }\r\n\r\n <!-- buttons -->\r\n <div class=\"button-row\" id=\"toolbar\">\r\n <button mat-icon-button type=\"button\" (click)=\"close()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-flat-button type=\"submit\" [disabled]=\"form.invalid\">\r\n <mat-icon>check_circle</mat-icon>\r\n target\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".metadata{color:#4a3001}.info{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;color:var(--mat-sys-on-surface-variant);padding:4px;margin:8px 0}.info .label{color:var(--mat-sys-on-surface-variant);margin:0 6px}#data{margin:8px 0}table{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:4px;margin-top:8px}tr:nth-child(odd){background-color:var(--mat-sys-surface-container)}td.fit-width{width:1px;white-space:nowrap}th{font-weight:400;text-align:left;color:var(--mat-sys-on-surface-variant)}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#gid-container{flex:1 1 auto}#gid-container mat-form-field{width:100%}.button-row{display:flex;align-items:center;flex-wrap:wrap}.label{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:4px}fieldset{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:8px;margin-bottom:8px}legend{color:var(--mat-sys-on-surface-variant)}div#toolbar{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type:
|
|
703
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: PinTargetLookupComponent, deps: [{ token: 'indexLookupDefinitions' }, { token: ItemRefLookupService }, { token: PinRefLookupService }, { token: i1.ItemService }, { token: i1.ThesaurusService }, { token: i4.MatSnackBar }, { token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
704
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: PinTargetLookupComponent, isStandalone: true, selector: "cadmus-pin-target-lookup", inputs: { 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 }, lookupDefinitions: { classPropertyName: "lookupDefinitions", publicName: "lookupDefinitions", isSignal: true, isRequired: false, transformFunction: null }, extLookupConfigs: { classPropertyName: "extLookupConfigs", publicName: "extLookupConfigs", isSignal: true, isRequired: false, transformFunction: null }, lookupProviderOptions: { classPropertyName: "lookupProviderOptions", publicName: "lookupProviderOptions", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, hideTargetSelector: { classPropertyName: "hideTargetSelector", publicName: "hideTargetSelector", isSignal: true, isRequired: false, transformFunction: null }, externalMode: { classPropertyName: "externalMode", publicName: "externalMode", isSignal: true, isRequired: false, transformFunction: null }, defaultPartTypeKey: { classPropertyName: "defaultPartTypeKey", publicName: "defaultPartTypeKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pinByTypeMode: "pinByTypeModeChange", canSwitchMode: "canSwitchModeChange", lookupDefinitions: "lookupDefinitionsChange", target: "targetChange", editorClose: "editorClose", extMoreRequest: "extMoreRequest", extLookupConfigChange: "extLookupConfigChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- external -->\r\n @if (!hideTargetSelector()) {\r\n <mat-checkbox [formControl]=\"external\">external</mat-checkbox>\r\n }\r\n <!-- mode switcher -->\r\n @if (!external.value) {\r\n <div>\r\n @if (canSwitchMode()) {\r\n <mat-checkbox [formControl]=\"byTypeMode\"> by type</mat-checkbox>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- label -->\r\n <div>\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n @if ($any(label).errors?.required && (label.dirty || label.touched)) {\r\n <mat-error>label required</mat-error>\r\n } @if ( $any(label).errors?.maxLength && (label.dirty || label.touched)\r\n ) {\r\n <mat-error>label too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && label.value) {\r\n <div class=\"info\"><span class=\"label\">label</span>{{ label.value }}</div>\r\n }\r\n </div>\r\n\r\n <!-- gid -->\r\n <div id=\"gid-container\">\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>GID</mat-label>\r\n <input matInput [formControl]=\"gid\" />\r\n @if ($any(gid).errors?.required && (gid.dirty || gid.touched)) {\r\n <mat-error>GID required</mat-error>\r\n } @if ($any(gid).errors?.maxLength && (gid.dirty || gid.touched)) {\r\n <mat-error>GID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && gid.value) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span> <span class=\"gid\">{{ gid.value }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- external lookup set -->\r\n @if (external.value && extLookupConfigs().length) {\r\n <fieldset>\r\n <legend>external lookup</legend>\r\n <cadmus-refs-lookup-set\r\n [configs]=\"extLookupConfigs()\"\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n (itemChange)=\"onExtItemChange($event)\"\r\n (moreRequest)=\"onExtMoreRequest($event)\"\r\n (configChange)=\"onExtConfigChange($any($event))\"\r\n />\r\n </fieldset>\r\n }\r\n\r\n <!-- BY ITEM -->\r\n @if (!external.value) {\r\n <fieldset>\r\n <legend>internal lookup</legend>\r\n <div class=\"form-row\">\r\n @if (!byTypeMode.value) {\r\n <fieldset class=\"form-row\">\r\n <legend>pin filters</legend>\r\n <!-- item filter -->\r\n <cadmus-refs-lookup\r\n [service]=\"itemLookupService\"\r\n label=\"item\"\r\n (itemChange)=\"onItemLookupChange($event)\"\r\n />\r\n <!-- part filter -->\r\n @if (itemParts().length) {\r\n <mat-form-field>\r\n <mat-label>part</mat-label>\r\n <mat-select [formControl]=\"itemPart\">\r\n <mat-option [value]=\"null\">(any)</mat-option>\r\n @for (p of itemParts(); track p) {\r\n <mat-option [value]=\"p\">{{\r\n p.typeId | flatLookup : modelEntries() : \"id\" : \"value\"\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-hint>parts: {{ itemParts().length }}</mat-hint>\r\n </mat-form-field>\r\n }\r\n </fieldset>\r\n }\r\n <!-- BY TYPE -->\r\n @if (byTypeMode.value) {\r\n <div>\r\n <!-- part type filter -->\r\n @if (partTypeKeys().length) {\r\n <mat-form-field>\r\n <mat-label>part type</mat-label>\r\n <mat-select [formControl]=\"partTypeKey\">\r\n @for (k of partTypeKeys(); track k) {\r\n <mat-option [value]=\"k\">{{ k }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n <!-- PIN -->\r\n @if (partTypeKey.value) {\r\n <div>\r\n <!-- pin lookup -->\r\n <cadmus-refs-lookup\r\n [service]=\"pinLookupService\"\r\n [baseFilter]=\"filter()\"\r\n [options]=\"pinFilterOptions()\"\r\n label=\"pin\"\r\n (itemChange)=\"onPinLookupChange($event)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n <!-- data -->\r\n @if (lookupData()?.pin?.name) {\r\n <mat-expansion-panel id=\"data\">\r\n <mat-expansion-panel-header>pin data</mat-expansion-panel-header>\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <th></th>\r\n <th>source</th>\r\n <th>value</th>\r\n </thead>\r\n <tbody>\r\n <!-- pin name -->\r\n @if (lookupData()?.pin?.name) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.name\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin name</td>\r\n <td>{{ lookupData()!.pin.name }}</td>\r\n </tr>\r\n }\r\n <!-- pin value -->\r\n @if (lookupData()?.pin?.value) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin value</td>\r\n <td>{{ lookupData()!.pin.value }}</td>\r\n </tr>\r\n }\r\n <!-- item ID -->\r\n @if (lookupData()?.pin?.itemId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.itemId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item ID</td>\r\n <td>{{ lookupData()!.pin.itemId }}</td>\r\n </tr>\r\n }\r\n <!-- item title -->\r\n @if (lookupData()?.item?.title) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.item!.title\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item title</td>\r\n <td>{{ lookupData()!.item!.title }}</td>\r\n </tr>\r\n }\r\n <!-- part ID -->\r\n @if (lookupData()?.pin?.partId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.partId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part ID</td>\r\n <td>{{ lookupData()!.pin.partId }}</td>\r\n </tr>\r\n }\r\n <!-- part type ID -->\r\n @if (lookupData()?.pin?.partTypeId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.partTypeId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part type ID</td>\r\n <td>{{ lookupData()!.pin!.partTypeId }}</td>\r\n </tr>\r\n }\r\n <!-- part role ID -->\r\n @if (lookupData()?.pin?.roleId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.roleId!\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part role ID</td>\r\n <td>{{ lookupData()!.pin!.roleId }}</td>\r\n </tr>\r\n }\r\n <!-- part's metadata -->\r\n @for ( m of lookupData()?.metaPart?.metadata || []; track m; 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 [cdkCopyToClipboard]=\"m.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"metadata\">{{ m.name }}</td>\r\n <td class=\"metadata\">{{ m.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </mat-expansion-panel>\r\n }\r\n </fieldset>\r\n }\r\n\r\n <!-- buttons -->\r\n <div class=\"button-row\" id=\"toolbar\">\r\n <button mat-icon-button type=\"button\" (click)=\"close()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-flat-button type=\"submit\" [disabled]=\"form.invalid\">\r\n <mat-icon>check_circle</mat-icon>\r\n target\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".metadata{color:#4a3001}.info{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;color:var(--mat-sys-on-surface-variant);padding:4px;margin:8px 0}.info .label{color:var(--mat-sys-on-surface-variant);margin:0 6px}#data{margin:8px 0}table{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:4px;margin-top:8px}tr:nth-child(odd){background-color:var(--mat-sys-surface-container)}td.fit-width{width:1px;white-space:nowrap}th{font-weight:400;text-align:left;color:var(--mat-sys-on-surface-variant)}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#gid-container{flex:1 1 auto}#gid-container mat-form-field{width:100%}.button-row{display:flex;align-items:center;flex-wrap:wrap}.label{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:4px}fieldset{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:8px;margin-bottom:8px}legend{color:var(--mat-sys-on-surface-variant)}div#toolbar{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type:
|
|
660
705
|
// material
|
|
661
706
|
ClipboardModule }, { kind: "directive", type: i6.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.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: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8$1.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: i9.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type:
|
|
662
707
|
// bricks
|
|
@@ -664,7 +709,7 @@ class PinTargetLookupComponent {
|
|
|
664
709
|
// myrmidon
|
|
665
710
|
FlatLookupPipe, name: "flatLookup" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
666
711
|
}
|
|
667
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
712
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: PinTargetLookupComponent, decorators: [{
|
|
668
713
|
type: Component,
|
|
669
714
|
args: [{ selector: 'cadmus-pin-target-lookup', imports: [
|
|
670
715
|
FormsModule,
|
|
@@ -684,23 +729,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
684
729
|
// bricks
|
|
685
730
|
RefLookupComponent,
|
|
686
731
|
RefLookupSetComponent,
|
|
687
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- external -->\r\n <mat-checkbox [formControl]=\"external\">external</mat-checkbox>\r\n <!-- mode switcher -->\r\n @if (!external.value) {\r\n <div>\r\n @if (canSwitchMode()) {\r\n <mat-checkbox [formControl]=\"byTypeMode\"> by type</mat-checkbox>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- label -->\r\n <div>\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n @if ($any(label).errors?.required && (label.dirty || label.touched)) {\r\n <mat-error>label required</mat-error>\r\n } @if ( $any(label).errors?.maxLength && (label.dirty || label.touched)\r\n ) {\r\n <mat-error>label too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && label.value) {\r\n <div class=\"info\"><span class=\"label\">label</span>{{ label.value }}</div>\r\n }\r\n </div>\r\n\r\n <!-- gid -->\r\n <div id=\"gid-container\">\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>GID</mat-label>\r\n <input matInput [formControl]=\"gid\" />\r\n @if ($any(gid).errors?.required && (gid.dirty || gid.touched)) {\r\n <mat-error>GID required</mat-error>\r\n } @if ($any(gid).errors?.maxLength && (gid.dirty || gid.touched)) {\r\n <mat-error>GID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && gid.value) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span> <span class=\"gid\">{{ gid.value }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- external lookup set -->\r\n @if (external.value && extLookupConfigs().length) {\r\n <fieldset>\r\n <legend>external lookup</legend>\r\n <cadmus-refs-lookup-set\r\n [configs]=\"extLookupConfigs()\"\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n (itemChange)=\"onExtItemChange($event)\"\r\n (moreRequest)=\"onExtMoreRequest($event)\"\r\n (configChange)=\"onExtConfigChange($any($event))\"\r\n />\r\n </fieldset>\r\n }\r\n\r\n <!-- BY ITEM -->\r\n @if (!external.value) {\r\n <fieldset>\r\n <legend>internal lookup</legend>\r\n <div class=\"form-row\">\r\n @if (!byTypeMode.value) {\r\n <fieldset class=\"form-row\">\r\n <legend>pin filters</legend>\r\n <!-- item filter -->\r\n <cadmus-refs-lookup\r\n [service]=\"itemLookupService\"\r\n label=\"item\"\r\n (itemChange)=\"onItemLookupChange($event)\"\r\n />\r\n <!-- part filter -->\r\n @if (itemParts().length) {\r\n <mat-form-field>\r\n <mat-label>part</mat-label>\r\n <mat-select [formControl]=\"itemPart\">\r\n <mat-option [value]=\"null\">(any)</mat-option>\r\n @for (p of itemParts(); track p) {\r\n <mat-option [value]=\"p\">{{\r\n p.typeId | flatLookup : modelEntries() : \"id\" : \"value\"\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-hint>parts: {{ itemParts().length }}</mat-hint>\r\n </mat-form-field>\r\n }\r\n </fieldset>\r\n }\r\n <!-- BY TYPE -->\r\n @if (byTypeMode.value) {\r\n <div>\r\n <!-- part type filter -->\r\n @if (partTypeKeys().length) {\r\n <mat-form-field>\r\n <mat-label>part type</mat-label>\r\n <mat-select [formControl]=\"partTypeKey\">\r\n @for (k of partTypeKeys(); track k) {\r\n <mat-option [value]=\"k\">{{ k }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n <!-- PIN -->\r\n @if (partTypeKey.value) {\r\n <div>\r\n <!-- pin lookup -->\r\n <cadmus-refs-lookup\r\n [service]=\"pinLookupService\"\r\n [baseFilter]=\"filter()\"\r\n [options]=\"pinFilterOptions()\"\r\n label=\"pin\"\r\n (itemChange)=\"onPinLookupChange($event)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n <!-- data -->\r\n @if (lookupData()?.pin?.name) {\r\n <mat-expansion-panel id=\"data\">\r\n <mat-expansion-panel-header>pin data</mat-expansion-panel-header>\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <th></th>\r\n <th>source</th>\r\n <th>value</th>\r\n </thead>\r\n <tbody>\r\n <!-- pin name -->\r\n @if (lookupData()?.pin?.name) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.name\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin name</td>\r\n <td>{{ lookupData()!.pin.name }}</td>\r\n </tr>\r\n }\r\n <!-- pin value -->\r\n @if (lookupData()?.pin?.value) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin value</td>\r\n <td>{{ lookupData()!.pin.value }}</td>\r\n </tr>\r\n }\r\n <!-- item ID -->\r\n @if (lookupData()?.pin?.itemId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.itemId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item ID</td>\r\n <td>{{ lookupData()!.pin.itemId }}</td>\r\n </tr>\r\n }\r\n <!-- item title -->\r\n @if (lookupData()?.item?.title) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.item!.title\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item title</td>\r\n <td>{{ lookupData()!.item!.title }}</td>\r\n </tr>\r\n }\r\n <!-- part ID -->\r\n @if (lookupData()?.pin?.partId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.partId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part ID</td>\r\n <td>{{ lookupData()!.pin.partId }}</td>\r\n </tr>\r\n }\r\n <!-- part type ID -->\r\n @if (lookupData()?.pin?.partTypeId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.partTypeId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part type ID</td>\r\n <td>{{ lookupData()!.pin!.partTypeId }}</td>\r\n </tr>\r\n }\r\n <!-- part role ID -->\r\n @if (lookupData()?.pin?.roleId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.roleId!\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part role ID</td>\r\n <td>{{ lookupData()!.pin!.roleId }}</td>\r\n </tr>\r\n }\r\n <!-- part's metadata -->\r\n @for ( m of lookupData()?.metaPart?.metadata || []; track m; 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 [cdkCopyToClipboard]=\"m.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"metadata\">{{ m.name }}</td>\r\n <td class=\"metadata\">{{ m.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </mat-expansion-panel>\r\n }\r\n </fieldset>\r\n }\r\n\r\n <!-- buttons -->\r\n <div class=\"button-row\" id=\"toolbar\">\r\n <button mat-icon-button type=\"button\" (click)=\"close()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-flat-button type=\"submit\" [disabled]=\"form.invalid\">\r\n <mat-icon>check_circle</mat-icon>\r\n target\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".metadata{color:#4a3001}.info{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;color:var(--mat-sys-on-surface-variant);padding:4px;margin:8px 0}.info .label{color:var(--mat-sys-on-surface-variant);margin:0 6px}#data{margin:8px 0}table{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:4px;margin-top:8px}tr:nth-child(odd){background-color:var(--mat-sys-surface-container)}td.fit-width{width:1px;white-space:nowrap}th{font-weight:400;text-align:left;color:var(--mat-sys-on-surface-variant)}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#gid-container{flex:1 1 auto}#gid-container mat-form-field{width:100%}.button-row{display:flex;align-items:center;flex-wrap:wrap}.label{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:4px}fieldset{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:8px;margin-bottom:8px}legend{color:var(--mat-sys-on-surface-variant)}div#toolbar{margin-top:8px}\n"] }]
|
|
732
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- external -->\r\n @if (!hideTargetSelector()) {\r\n <mat-checkbox [formControl]=\"external\">external</mat-checkbox>\r\n }\r\n <!-- mode switcher -->\r\n @if (!external.value) {\r\n <div>\r\n @if (canSwitchMode()) {\r\n <mat-checkbox [formControl]=\"byTypeMode\"> by type</mat-checkbox>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- label -->\r\n <div>\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n @if ($any(label).errors?.required && (label.dirty || label.touched)) {\r\n <mat-error>label required</mat-error>\r\n } @if ( $any(label).errors?.maxLength && (label.dirty || label.touched)\r\n ) {\r\n <mat-error>label too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && label.value) {\r\n <div class=\"info\"><span class=\"label\">label</span>{{ label.value }}</div>\r\n }\r\n </div>\r\n\r\n <!-- gid -->\r\n <div id=\"gid-container\">\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>GID</mat-label>\r\n <input matInput [formControl]=\"gid\" />\r\n @if ($any(gid).errors?.required && (gid.dirty || gid.touched)) {\r\n <mat-error>GID required</mat-error>\r\n } @if ($any(gid).errors?.maxLength && (gid.dirty || gid.touched)) {\r\n <mat-error>GID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && gid.value) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span> <span class=\"gid\">{{ gid.value }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- external lookup set -->\r\n @if (external.value && extLookupConfigs().length) {\r\n <fieldset>\r\n <legend>external lookup</legend>\r\n <cadmus-refs-lookup-set\r\n [configs]=\"extLookupConfigs()\"\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n (itemChange)=\"onExtItemChange($event)\"\r\n (moreRequest)=\"onExtMoreRequest($event)\"\r\n (configChange)=\"onExtConfigChange($any($event))\"\r\n />\r\n </fieldset>\r\n }\r\n\r\n <!-- BY ITEM -->\r\n @if (!external.value) {\r\n <fieldset>\r\n <legend>internal lookup</legend>\r\n <div class=\"form-row\">\r\n @if (!byTypeMode.value) {\r\n <fieldset class=\"form-row\">\r\n <legend>pin filters</legend>\r\n <!-- item filter -->\r\n <cadmus-refs-lookup\r\n [service]=\"itemLookupService\"\r\n label=\"item\"\r\n (itemChange)=\"onItemLookupChange($event)\"\r\n />\r\n <!-- part filter -->\r\n @if (itemParts().length) {\r\n <mat-form-field>\r\n <mat-label>part</mat-label>\r\n <mat-select [formControl]=\"itemPart\">\r\n <mat-option [value]=\"null\">(any)</mat-option>\r\n @for (p of itemParts(); track p) {\r\n <mat-option [value]=\"p\">{{\r\n p.typeId | flatLookup : modelEntries() : \"id\" : \"value\"\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-hint>parts: {{ itemParts().length }}</mat-hint>\r\n </mat-form-field>\r\n }\r\n </fieldset>\r\n }\r\n <!-- BY TYPE -->\r\n @if (byTypeMode.value) {\r\n <div>\r\n <!-- part type filter -->\r\n @if (partTypeKeys().length) {\r\n <mat-form-field>\r\n <mat-label>part type</mat-label>\r\n <mat-select [formControl]=\"partTypeKey\">\r\n @for (k of partTypeKeys(); track k) {\r\n <mat-option [value]=\"k\">{{ k }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n <!-- PIN -->\r\n @if (partTypeKey.value) {\r\n <div>\r\n <!-- pin lookup -->\r\n <cadmus-refs-lookup\r\n [service]=\"pinLookupService\"\r\n [baseFilter]=\"filter()\"\r\n [options]=\"pinFilterOptions()\"\r\n label=\"pin\"\r\n (itemChange)=\"onPinLookupChange($event)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n <!-- data -->\r\n @if (lookupData()?.pin?.name) {\r\n <mat-expansion-panel id=\"data\">\r\n <mat-expansion-panel-header>pin data</mat-expansion-panel-header>\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <th></th>\r\n <th>source</th>\r\n <th>value</th>\r\n </thead>\r\n <tbody>\r\n <!-- pin name -->\r\n @if (lookupData()?.pin?.name) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.name\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin name</td>\r\n <td>{{ lookupData()!.pin.name }}</td>\r\n </tr>\r\n }\r\n <!-- pin value -->\r\n @if (lookupData()?.pin?.value) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin value</td>\r\n <td>{{ lookupData()!.pin.value }}</td>\r\n </tr>\r\n }\r\n <!-- item ID -->\r\n @if (lookupData()?.pin?.itemId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.itemId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item ID</td>\r\n <td>{{ lookupData()!.pin.itemId }}</td>\r\n </tr>\r\n }\r\n <!-- item title -->\r\n @if (lookupData()?.item?.title) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.item!.title\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item title</td>\r\n <td>{{ lookupData()!.item!.title }}</td>\r\n </tr>\r\n }\r\n <!-- part ID -->\r\n @if (lookupData()?.pin?.partId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.partId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part ID</td>\r\n <td>{{ lookupData()!.pin.partId }}</td>\r\n </tr>\r\n }\r\n <!-- part type ID -->\r\n @if (lookupData()?.pin?.partTypeId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.partTypeId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part type ID</td>\r\n <td>{{ lookupData()!.pin!.partTypeId }}</td>\r\n </tr>\r\n }\r\n <!-- part role ID -->\r\n @if (lookupData()?.pin?.roleId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData()!.pin!.roleId!\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part role ID</td>\r\n <td>{{ lookupData()!.pin!.roleId }}</td>\r\n </tr>\r\n }\r\n <!-- part's metadata -->\r\n @for ( m of lookupData()?.metaPart?.metadata || []; track m; 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 [cdkCopyToClipboard]=\"m.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"metadata\">{{ m.name }}</td>\r\n <td class=\"metadata\">{{ m.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </mat-expansion-panel>\r\n }\r\n </fieldset>\r\n }\r\n\r\n <!-- buttons -->\r\n <div class=\"button-row\" id=\"toolbar\">\r\n <button mat-icon-button type=\"button\" (click)=\"close()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-flat-button type=\"submit\" [disabled]=\"form.invalid\">\r\n <mat-icon>check_circle</mat-icon>\r\n target\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".metadata{color:#4a3001}.info{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;color:var(--mat-sys-on-surface-variant);padding:4px;margin:8px 0}.info .label{color:var(--mat-sys-on-surface-variant);margin:0 6px}#data{margin:8px 0}table{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:4px;margin-top:8px}tr:nth-child(odd){background-color:var(--mat-sys-surface-container)}td.fit-width{width:1px;white-space:nowrap}th{font-weight:400;text-align:left;color:var(--mat-sys-on-surface-variant)}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#gid-container{flex:1 1 auto}#gid-container mat-form-field{width:100%}.button-row{display:flex;align-items:center;flex-wrap:wrap}.label{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:4px}fieldset{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:8px;margin-bottom:8px}legend{color:var(--mat-sys-on-surface-variant)}div#toolbar{margin-top:8px}\n"] }]
|
|
688
733
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
689
734
|
type: Inject,
|
|
690
735
|
args: ['indexLookupDefinitions']
|
|
691
|
-
}] }, { type: ItemRefLookupService }, { type: PinRefLookupService }, { type: i1.ItemService }, { type: i1.ThesaurusService }, { type: i4.MatSnackBar }, { type: i1$1.FormBuilder }], propDecorators: { pinByTypeMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinByTypeMode", required: false }] }, { type: i0.Output, args: ["pinByTypeModeChange"] }], canSwitchMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "canSwitchMode", required: false }] }, { type: i0.Output, args: ["canSwitchModeChange"] }], canEditTarget: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEditTarget", required: false }] }], lookupDefinitions: [{ type: i0.Input, args: [{ isSignal: true, alias: "lookupDefinitions", required: false }] }, { type: i0.Output, args: ["lookupDefinitionsChange"] }], extLookupConfigs: [{ type: i0.Input, args: [{ isSignal: true, alias: "extLookupConfigs", required: false }] }], lookupProviderOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "lookupProviderOptions", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }, { type: i0.Output, args: ["targetChange"] }], defaultPartTypeKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPartTypeKey", required: false }] }], editorClose: [{ type: i0.Output, args: ["editorClose"] }], extMoreRequest: [{ type: i0.Output, args: ["extMoreRequest"] }], extLookupConfigChange: [{ type: i0.Output, args: ["extLookupConfigChange"] }] } });
|
|
736
|
+
}] }, { type: ItemRefLookupService }, { type: PinRefLookupService }, { type: i1.ItemService }, { type: i1.ThesaurusService }, { type: i4.MatSnackBar }, { type: i1$1.FormBuilder }], propDecorators: { pinByTypeMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinByTypeMode", required: false }] }, { type: i0.Output, args: ["pinByTypeModeChange"] }], canSwitchMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "canSwitchMode", required: false }] }, { type: i0.Output, args: ["canSwitchModeChange"] }], canEditTarget: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEditTarget", required: false }] }], lookupDefinitions: [{ type: i0.Input, args: [{ isSignal: true, alias: "lookupDefinitions", required: false }] }, { type: i0.Output, args: ["lookupDefinitionsChange"] }], extLookupConfigs: [{ type: i0.Input, args: [{ isSignal: true, alias: "extLookupConfigs", required: false }] }], lookupProviderOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "lookupProviderOptions", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }, { type: i0.Output, args: ["targetChange"] }], hideTargetSelector: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideTargetSelector", required: false }] }], externalMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "externalMode", required: false }] }], defaultPartTypeKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPartTypeKey", required: false }] }], editorClose: [{ type: i0.Output, args: ["editorClose"] }], extMoreRequest: [{ type: i0.Output, args: ["extMoreRequest"] }], extLookupConfigChange: [{ type: i0.Output, args: ["extLookupConfigChange"] }] } });
|
|
692
737
|
|
|
738
|
+
/**
|
|
739
|
+
* The prefix prepended to the GID of any target sourced from a taxonomy
|
|
740
|
+
* tree, so that it can be told apart from a plain external GID when
|
|
741
|
+
* reloading an existing ID.
|
|
742
|
+
*/
|
|
743
|
+
const TAXONOMY_GID_PREFIX = '@TX:';
|
|
744
|
+
/**
|
|
745
|
+
* The key used to retrieve the taxonomy lookup configurations via
|
|
746
|
+
* RamStorageService.
|
|
747
|
+
*/
|
|
748
|
+
const LOOKUP_TAXOSTORE_CONFIGS_KEY = 'cadmus-refs-asserted-ids.taxostore-configs';
|
|
693
749
|
/**
|
|
694
750
|
* An asserted composite ID editor. This allows the user to edit an asserted
|
|
695
|
-
* composite ID, which can be an external ID or a
|
|
751
|
+
* composite ID, which can be an external ID, a lookup ID or a taxonomy ID.
|
|
696
752
|
*/
|
|
697
753
|
class AssertedCompositeIdComponent {
|
|
698
754
|
lookupService;
|
|
699
755
|
lookupDefs;
|
|
700
756
|
_updatingForm;
|
|
701
757
|
_lookupConfigDirty = true;
|
|
702
|
-
extLookupConfigs = signal([],
|
|
703
|
-
|
|
758
|
+
extLookupConfigs = signal([], /* @ts-ignore */
|
|
759
|
+
...(ngDevMode ? [{ debugName: "extLookupConfigs" }] : /* istanbul ignore next */ []));
|
|
760
|
+
targetExpanded = signal(false, /* @ts-ignore */
|
|
761
|
+
...(ngDevMode ? [{ debugName: "targetExpanded" }] : /* istanbul ignore next */ []));
|
|
762
|
+
/**
|
|
763
|
+
* The taxonomy lookup configurations, if any.
|
|
764
|
+
*/
|
|
765
|
+
taxoLookupConfigs = signal([], /* @ts-ignore */
|
|
766
|
+
...(ngDevMode ? [{ debugName: "taxoLookupConfigs" }] : /* istanbul ignore next */ []));
|
|
767
|
+
/**
|
|
768
|
+
* True if at least 1 taxonomy lookup configuration is available, so
|
|
769
|
+
* that the taxonomy source mode can be selected.
|
|
770
|
+
*/
|
|
771
|
+
hasTaxonomy = computed(() => this.taxoLookupConfigs().length > 0, /* @ts-ignore */
|
|
772
|
+
...(ngDevMode ? [{ debugName: "hasTaxonomy" }] : /* istanbul ignore next */ []));
|
|
773
|
+
/**
|
|
774
|
+
* The currently selected target source mode.
|
|
775
|
+
*/
|
|
776
|
+
targetMode = signal('internal', /* @ts-ignore */
|
|
777
|
+
...(ngDevMode ? [{ debugName: "targetMode" }] : /* istanbul ignore next */ []));
|
|
778
|
+
/**
|
|
779
|
+
* The taxonomy lookup configuration currently selected when
|
|
780
|
+
* targetMode is 'taxonomy'.
|
|
781
|
+
*/
|
|
782
|
+
selectedTaxoConfig = signal(undefined, /* @ts-ignore */
|
|
783
|
+
...(ngDevMode ? [{ debugName: "selectedTaxoConfig" }] : /* istanbul ignore next */ []));
|
|
704
784
|
// form
|
|
705
785
|
target;
|
|
706
786
|
scope;
|
|
@@ -710,39 +790,50 @@ class AssertedCompositeIdComponent {
|
|
|
710
790
|
assertion;
|
|
711
791
|
form;
|
|
712
792
|
// asserted-id-scopes
|
|
713
|
-
idScopeEntries = input(
|
|
793
|
+
idScopeEntries = input(/* @ts-ignore */
|
|
794
|
+
...(ngDevMode ? [undefined, { debugName: "idScopeEntries" }] : /* istanbul ignore next */ []));
|
|
714
795
|
// asserted-id-tags
|
|
715
|
-
idTagEntries = input(
|
|
796
|
+
idTagEntries = input(/* @ts-ignore */
|
|
797
|
+
...(ngDevMode ? [undefined, { debugName: "idTagEntries" }] : /* istanbul ignore next */ []));
|
|
716
798
|
// assertion-tags
|
|
717
|
-
assTagEntries = input(
|
|
799
|
+
assTagEntries = input(/* @ts-ignore */
|
|
800
|
+
...(ngDevMode ? [undefined, { debugName: "assTagEntries" }] : /* istanbul ignore next */ []));
|
|
718
801
|
// doc-reference-types
|
|
719
|
-
refTypeEntries = input(
|
|
802
|
+
refTypeEntries = input(/* @ts-ignore */
|
|
803
|
+
...(ngDevMode ? [undefined, { debugName: "refTypeEntries" }] : /* istanbul ignore next */ []));
|
|
720
804
|
// doc-reference-tags
|
|
721
|
-
refTagEntries = input(
|
|
805
|
+
refTagEntries = input(/* @ts-ignore */
|
|
806
|
+
...(ngDevMode ? [undefined, { debugName: "refTagEntries" }] : /* istanbul ignore next */ []));
|
|
722
807
|
// asserted-id-features
|
|
723
|
-
featureEntries = input(
|
|
808
|
+
featureEntries = input(/* @ts-ignore */
|
|
809
|
+
...(ngDevMode ? [undefined, { debugName: "featureEntries" }] : /* istanbul ignore next */ []));
|
|
724
810
|
/**
|
|
725
811
|
* The ID being edited.
|
|
726
812
|
*/
|
|
727
|
-
id = model(
|
|
813
|
+
id = model(/* @ts-ignore */
|
|
814
|
+
...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
|
|
728
815
|
/**
|
|
729
816
|
* True if the UI has a submit button.
|
|
730
817
|
*/
|
|
731
|
-
hasSubmit = input(
|
|
818
|
+
hasSubmit = input(/* @ts-ignore */
|
|
819
|
+
...(ngDevMode ? [undefined, { debugName: "hasSubmit" }] : /* istanbul ignore next */ []));
|
|
732
820
|
/**
|
|
733
821
|
* True when the internal UI preselected mode should be by type rather than
|
|
734
822
|
* by item. User can change mode unless modeSwitching is false.
|
|
735
823
|
*/
|
|
736
|
-
pinByTypeMode = input(
|
|
824
|
+
pinByTypeMode = input(/* @ts-ignore */
|
|
825
|
+
...(ngDevMode ? [undefined, { debugName: "pinByTypeMode" }] : /* istanbul ignore next */ []));
|
|
737
826
|
/**
|
|
738
827
|
* True when the user can switch between by-type and by-item mode in
|
|
739
828
|
* the internal UI.
|
|
740
829
|
*/
|
|
741
|
-
canSwitchMode = input(
|
|
830
|
+
canSwitchMode = input(/* @ts-ignore */
|
|
831
|
+
...(ngDevMode ? [undefined, { debugName: "canSwitchMode" }] : /* istanbul ignore next */ []));
|
|
742
832
|
/**
|
|
743
833
|
* True when the user can edit the target's gid/label for internal targets.
|
|
744
834
|
*/
|
|
745
|
-
canEditTarget = input(
|
|
835
|
+
canEditTarget = input(/* @ts-ignore */
|
|
836
|
+
...(ngDevMode ? [undefined, { debugName: "canEditTarget" }] : /* istanbul ignore next */ []));
|
|
746
837
|
/**
|
|
747
838
|
* The lookup definitions to be used for the by-type lookup in the internal UI.
|
|
748
839
|
* If not specified, the lookup definitions will be got via injection
|
|
@@ -751,16 +842,19 @@ class AssertedCompositeIdComponent {
|
|
|
751
842
|
* if this is not available either, the by-type lookup will be
|
|
752
843
|
* disabled.
|
|
753
844
|
*/
|
|
754
|
-
lookupDefinitions = input(
|
|
845
|
+
lookupDefinitions = input(/* @ts-ignore */
|
|
846
|
+
...(ngDevMode ? [undefined, { debugName: "lookupDefinitions" }] : /* istanbul ignore next */ []));
|
|
755
847
|
/**
|
|
756
848
|
* Optional preset options for external lookup providers.
|
|
757
849
|
* Maps provider IDs to their available scopes.
|
|
758
850
|
*/
|
|
759
|
-
lookupProviderOptions = input(
|
|
851
|
+
lookupProviderOptions = input(/* @ts-ignore */
|
|
852
|
+
...(ngDevMode ? [undefined, { debugName: "lookupProviderOptions" }] : /* istanbul ignore next */ []));
|
|
760
853
|
/**
|
|
761
854
|
* The default part type key to be used.
|
|
762
855
|
*/
|
|
763
|
-
defaultPartTypeKey = input(
|
|
856
|
+
defaultPartTypeKey = input(/* @ts-ignore */
|
|
857
|
+
...(ngDevMode ? [undefined, { debugName: "defaultPartTypeKey" }] : /* istanbul ignore next */ []));
|
|
764
858
|
/**
|
|
765
859
|
* Emitted whenever the user requests to close the editor.
|
|
766
860
|
*/
|
|
@@ -780,7 +874,8 @@ class AssertedCompositeIdComponent {
|
|
|
780
874
|
return [];
|
|
781
875
|
}
|
|
782
876
|
return entries.filter((e) => features.includes(e.id));
|
|
783
|
-
},
|
|
877
|
+
}, /* @ts-ignore */
|
|
878
|
+
...(ngDevMode ? [{ debugName: "idFeatures" }] : /* istanbul ignore next */ []));
|
|
784
879
|
constructor(formBuilder, lookupService, lookupDefs, settings) {
|
|
785
880
|
this.lookupService = lookupService;
|
|
786
881
|
this.lookupDefs = lookupDefs;
|
|
@@ -801,6 +896,8 @@ class AssertedCompositeIdComponent {
|
|
|
801
896
|
});
|
|
802
897
|
// external lookup configs
|
|
803
898
|
this.extLookupConfigs.set(settings.retrieve(LOOKUP_CONFIGS_KEY) || []);
|
|
899
|
+
// taxonomy lookup configs
|
|
900
|
+
this.taxoLookupConfigs.set(settings.retrieve(LOOKUP_TAXOSTORE_CONFIGS_KEY) || []);
|
|
804
901
|
// when id changes, update form
|
|
805
902
|
effect(() => {
|
|
806
903
|
const id = this.id();
|
|
@@ -832,10 +929,23 @@ class AssertedCompositeIdComponent {
|
|
|
832
929
|
this.targetExpanded.set(false);
|
|
833
930
|
}
|
|
834
931
|
}
|
|
932
|
+
/**
|
|
933
|
+
* Reset the target to an empty value without collapsing the target
|
|
934
|
+
* panel. This is used when switching source mode, as opposed to
|
|
935
|
+
* onTargetChange, which is used when the user has actually picked a
|
|
936
|
+
* target and the panel can be collapsed.
|
|
937
|
+
*/
|
|
938
|
+
resetTarget() {
|
|
939
|
+
this.target.setValue({ gid: '', label: '' }, { emitEvent: false });
|
|
940
|
+
this.target.markAsDirty();
|
|
941
|
+
this.target.updateValueAndValidity({ emitEvent: false });
|
|
942
|
+
}
|
|
835
943
|
updateForm(id) {
|
|
836
944
|
this._updatingForm = true;
|
|
837
945
|
if (!id) {
|
|
838
946
|
this.form.reset();
|
|
947
|
+
this.targetMode.set('internal');
|
|
948
|
+
this.selectedTaxoConfig.set(undefined);
|
|
839
949
|
}
|
|
840
950
|
else {
|
|
841
951
|
this.target.setValue(id.target, { emitEvent: false });
|
|
@@ -845,9 +955,91 @@ class AssertedCompositeIdComponent {
|
|
|
845
955
|
this.note.setValue(id.note || null, { emitEvent: false });
|
|
846
956
|
this.assertion.setValue(id.assertion || null, { emitEvent: false });
|
|
847
957
|
this.form.markAsPristine();
|
|
958
|
+
this.updateTargetMode(id.target);
|
|
848
959
|
}
|
|
849
960
|
this._updatingForm = false;
|
|
850
961
|
}
|
|
962
|
+
/**
|
|
963
|
+
* Detect the target source mode from the target itself, and update
|
|
964
|
+
* targetMode and selectedTaxoConfig accordingly.
|
|
965
|
+
*/
|
|
966
|
+
updateTargetMode(target) {
|
|
967
|
+
// internal targets always have a pin name
|
|
968
|
+
if (target?.name) {
|
|
969
|
+
this.targetMode.set('internal');
|
|
970
|
+
this.selectedTaxoConfig.set(undefined);
|
|
971
|
+
return;
|
|
972
|
+
}
|
|
973
|
+
// taxonomy targets have a GID prefixed by TAXONOMY_GID_PREFIX, followed
|
|
974
|
+
// by the tree ID (with spaces replaced by underscores) and the node key
|
|
975
|
+
if (target?.gid?.startsWith(TAXONOMY_GID_PREFIX)) {
|
|
976
|
+
this.targetMode.set('taxonomy');
|
|
977
|
+
const rest = target.gid.substring(TAXONOMY_GID_PREFIX.length);
|
|
978
|
+
const treeIdPart = rest.split('/', 1)[0];
|
|
979
|
+
const configs = this.taxoLookupConfigs();
|
|
980
|
+
this.selectedTaxoConfig.set(configs.find((c) => c.treeId.replace(/\s+/g, '_') === treeIdPart) ||
|
|
981
|
+
configs[0]);
|
|
982
|
+
return;
|
|
983
|
+
}
|
|
984
|
+
// anything else is a plain external target
|
|
985
|
+
this.targetMode.set('external');
|
|
986
|
+
this.selectedTaxoConfig.set(undefined);
|
|
987
|
+
}
|
|
988
|
+
/**
|
|
989
|
+
* Called when the user changes the target source mode.
|
|
990
|
+
*/
|
|
991
|
+
onTargetModeChange(mode) {
|
|
992
|
+
if (this.targetMode() === mode) {
|
|
993
|
+
return;
|
|
994
|
+
}
|
|
995
|
+
this.targetMode.set(mode);
|
|
996
|
+
if (mode === 'taxonomy') {
|
|
997
|
+
if (!this.selectedTaxoConfig()) {
|
|
998
|
+
this.selectedTaxoConfig.set(this.taxoLookupConfigs()[0]);
|
|
999
|
+
}
|
|
1000
|
+
// a target from another mode is not a taxonomy target: reset it
|
|
1001
|
+
if (!this.target.value?.gid?.startsWith(TAXONOMY_GID_PREFIX)) {
|
|
1002
|
+
this.resetTarget();
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
else {
|
|
1006
|
+
this.selectedTaxoConfig.set(undefined);
|
|
1007
|
+
// a taxonomy target is not valid for internal/external mode: reset it
|
|
1008
|
+
if (this.target.value?.gid?.startsWith(TAXONOMY_GID_PREFIX)) {
|
|
1009
|
+
this.resetTarget();
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
/**
|
|
1014
|
+
* Called when the user changes the taxonomy tree to pick nodes from.
|
|
1015
|
+
*/
|
|
1016
|
+
onTaxoConfigChange(config) {
|
|
1017
|
+
if (this.selectedTaxoConfig() === config) {
|
|
1018
|
+
return;
|
|
1019
|
+
}
|
|
1020
|
+
this.selectedTaxoConfig.set(config);
|
|
1021
|
+
// the previously picked node belongs to another tree: reset target
|
|
1022
|
+
if (this.target.value?.gid?.startsWith(TAXONOMY_GID_PREFIX)) {
|
|
1023
|
+
this.resetTarget();
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
/**
|
|
1027
|
+
* Called when the user picks a node from the taxonomy picker.
|
|
1028
|
+
*/
|
|
1029
|
+
onTaxoNodePick(node) {
|
|
1030
|
+
if (!node) {
|
|
1031
|
+
return;
|
|
1032
|
+
}
|
|
1033
|
+
const config = this.selectedTaxoConfig();
|
|
1034
|
+
if (!config) {
|
|
1035
|
+
return;
|
|
1036
|
+
}
|
|
1037
|
+
const treeIdPart = config.treeId.replace(/\s+/g, '_');
|
|
1038
|
+
this.onTargetChange({
|
|
1039
|
+
gid: `${TAXONOMY_GID_PREFIX}${treeIdPart}/${node.key}`,
|
|
1040
|
+
label: node.label,
|
|
1041
|
+
});
|
|
1042
|
+
}
|
|
851
1043
|
getId() {
|
|
852
1044
|
const external = !this.target.value?.name;
|
|
853
1045
|
const target = this.target.value;
|
|
@@ -901,18 +1093,20 @@ class AssertedCompositeIdComponent {
|
|
|
901
1093
|
this.id.set(this.getId());
|
|
902
1094
|
}
|
|
903
1095
|
}
|
|
904
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
905
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: AssertedCompositeIdComponent, isStandalone: true, selector: "cadmus-refs-asserted-composite-id", inputs: { 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 }, refTypeEntries: { classPropertyName: "refTypeEntries", publicName: "refTypeEntries", isSignal: true, isRequired: false, transformFunction: null }, refTagEntries: { classPropertyName: "refTagEntries", publicName: "refTagEntries", isSignal: true, isRequired: false, transformFunction: null }, featureEntries: { classPropertyName: "featureEntries", publicName: "featureEntries", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, hasSubmit: { classPropertyName: "hasSubmit", publicName: "hasSubmit", 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 }, lookupDefinitions: { classPropertyName: "lookupDefinitions", publicName: "lookupDefinitions", isSignal: true, isRequired: false, transformFunction: null }, lookupProviderOptions: { classPropertyName: "lookupProviderOptions", publicName: "lookupProviderOptions", isSignal: true, isRequired: false, transformFunction: null }, defaultPartTypeKey: { classPropertyName: "defaultPartTypeKey", publicName: "defaultPartTypeKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { id: "idChange", editorClose: "editorClose", extMoreRequest: "extMoreRequest" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries(); 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 class=\"short-text\">\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\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries(); 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 <!-- scope (free) -->\r\n @else {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if (\r\n $any(scope.errors)?.maxLength && (scope.dirty || scope.touched)\r\n ) {\r\n <mat-error>scope too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- label and GID -->\r\n @if (target.value?.label) {\r\n <div class=\"info\">\r\n <span class=\"label\">label</span>{{ target.value?.label }}\r\n </div>\r\n }\r\n @if (target.value?.gid) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span>{{ target.value?.gid }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- target -->\r\n <div class=\"boxed\">\r\n <mat-expansion-panel\r\n [expanded]=\"targetExpanded()\"\r\n (expandedChange)=\"targetExpanded.set($event)\"\r\n >\r\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\r\n <cadmus-pin-target-lookup\r\n [pinByTypeMode]=\"pinByTypeMode()\"\r\n [canSwitchMode]=\"canSwitchMode()\"\r\n [canEditTarget]=\"canEditTarget()\"\r\n [lookupDefinitions]=\"lookupDefinitions()\"\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey()\"\r\n [target]=\"target.value || undefined\"\r\n [extLookupConfigs]=\"extLookupConfigs()\"\r\n (targetChange)=\"onTargetChange($event)\"\r\n (editorClose)=\"onEditorClose()\"\r\n (extMoreRequest)=\"onExtMoreRequest($event)\"\r\n (extLookupConfigChange)=\"onExtLookupConfigChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n <!-- features -->\r\n @if (featureEntries()?.length) {\r\n <div class=\"margin-top-sm\">\r\n <fieldset>\r\n <legend>features</legend>\r\n <cadmus-thesaurus-entries-picker\r\n [availableEntries]=\"featureEntries()!\"\r\n [hierarchicLabels]=\"true\"\r\n [entries]=\"idFeatures()\"\r\n (entriesChange)=\"onEntriesChange($event)\"\r\n emptyMessage=\"\"\r\n />\r\n </fieldset>\r\n </div>\r\n }\r\n\r\n <!-- note -->\r\n <div class=\"margin-top-sm\">\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\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\r\n <!-- assertion -->\r\n <div class=\"boxed margin-top\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n\r\n <!-- buttons -->\r\n @if (hasSubmit()) {\r\n <div>\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\" [disabled]=\"form.invalid\">\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.boxed{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:6px}.short-text{width:8em}.long-text{width:100%;max-width:800px}.pin-info{font-size:90%;color:var(--mat-sys-on-surface-variant)}fieldset{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:6px}legend{color:var(--mat-sys-on-surface-variant)}.margin-top-sm{margin-top:6px}.margin-top{margin-top:12px}.info{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;background-color:var(--mat-sys-surface-variant);color:var(--mat-sys-on-surface-variant);padding:4px}.info .label{background-color:var(--mat-sys-surface-variant);color:var(--mat-sys-on-surface-variant);margin:0 6px}@media only screen and (max-width:959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"editor\" \"lookup\"}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type:
|
|
1096
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AssertedCompositeIdComponent, deps: [{ token: i1$1.FormBuilder }, { token: PinRefLookupService }, { token: 'indexLookupDefinitions' }, { token: i3.RamStorageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1097
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: AssertedCompositeIdComponent, isStandalone: true, selector: "cadmus-refs-asserted-composite-id", inputs: { 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 }, refTypeEntries: { classPropertyName: "refTypeEntries", publicName: "refTypeEntries", isSignal: true, isRequired: false, transformFunction: null }, refTagEntries: { classPropertyName: "refTagEntries", publicName: "refTagEntries", isSignal: true, isRequired: false, transformFunction: null }, featureEntries: { classPropertyName: "featureEntries", publicName: "featureEntries", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, hasSubmit: { classPropertyName: "hasSubmit", publicName: "hasSubmit", 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 }, lookupDefinitions: { classPropertyName: "lookupDefinitions", publicName: "lookupDefinitions", isSignal: true, isRequired: false, transformFunction: null }, lookupProviderOptions: { classPropertyName: "lookupProviderOptions", publicName: "lookupProviderOptions", isSignal: true, isRequired: false, transformFunction: null }, defaultPartTypeKey: { classPropertyName: "defaultPartTypeKey", publicName: "defaultPartTypeKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { id: "idChange", editorClose: "editorClose", extMoreRequest: "extMoreRequest" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries(); 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 class=\"short-text\">\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\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries(); 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 <!-- scope (free) -->\r\n @else {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if (\r\n $any(scope.errors)?.maxLength && (scope.dirty || scope.touched)\r\n ) {\r\n <mat-error>scope too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- label and GID -->\r\n @if (target.value?.label) {\r\n <div class=\"info\">\r\n <span class=\"label\">label</span>{{ target.value?.label }}\r\n </div>\r\n }\r\n @if (target.value?.gid) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span>{{ target.value?.gid }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- target -->\r\n <div class=\"boxed\">\r\n <mat-expansion-panel\r\n [expanded]=\"targetExpanded()\"\r\n (expandedChange)=\"targetExpanded.set($event)\"\r\n >\r\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\r\n\r\n <!-- target source mode -->\r\n <div class=\"form-row\">\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>source</mat-label>\r\n <mat-select\r\n [value]=\"targetMode()\"\r\n (selectionChange)=\"onTargetModeChange($event.value)\"\r\n >\r\n <mat-option value=\"internal\">\uD83D\uDD17 internal</mat-option>\r\n <mat-option value=\"external\">\uD83C\uDF10 external</mat-option>\r\n @if (hasTaxonomy()) {\r\n <mat-option value=\"taxonomy\">\uD83C\uDF34 taxonomy</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n @if (targetMode() === 'taxonomy') {\r\n <!-- taxonomy source -->\r\n @if (taxoLookupConfigs().length > 1) {\r\n <div class=\"form-row\">\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tree</mat-label>\r\n <mat-select\r\n [value]=\"selectedTaxoConfig()\"\r\n (selectionChange)=\"onTaxoConfigChange($event.value)\"\r\n >\r\n @for (c of taxoLookupConfigs(); track c.treeId) {\r\n <mat-option [value]=\"c\">{{ c.treeName }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (selectedTaxoConfig(); as taxoConfig) {\r\n <ts-taxo-store-picker\r\n [treeId]=\"taxoConfig.treeId\"\r\n [hasTopNodeFilter]=\"taxoConfig.hasTopNodeFilter ?? false\"\r\n [hasFlagsFilter]=\"taxoConfig.hasFlagsFilter ?? false\"\r\n [availableFlags]=\"taxoConfig.availableFlags ?? []\"\r\n [canEdit]=\"taxoConfig.canEdit ?? true\"\r\n [canAdd]=\"taxoConfig.canAdd ?? true\"\r\n [canDelete]=\"taxoConfig.canDelete ?? true\"\r\n [hideLoc]=\"taxoConfig.hideLoc ?? false\"\r\n [hideFilter]=\"taxoConfig.hideFilter ?? false\"\r\n [label]=\"taxoConfig.treeName\"\r\n (nodePick)=\"onTaxoNodePick($event)\"\r\n />\r\n }\r\n } @else {\r\n <cadmus-pin-target-lookup\r\n [hideTargetSelector]=\"true\"\r\n [externalMode]=\"targetMode() === 'external'\"\r\n [pinByTypeMode]=\"pinByTypeMode()\"\r\n [canSwitchMode]=\"canSwitchMode()\"\r\n [canEditTarget]=\"canEditTarget()\"\r\n [lookupDefinitions]=\"lookupDefinitions()\"\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey()\"\r\n [target]=\"target.value || undefined\"\r\n [extLookupConfigs]=\"extLookupConfigs()\"\r\n (targetChange)=\"onTargetChange($event)\"\r\n (editorClose)=\"onEditorClose()\"\r\n (extMoreRequest)=\"onExtMoreRequest($event)\"\r\n (extLookupConfigChange)=\"onExtLookupConfigChange($event)\"\r\n />\r\n }\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n <!-- features -->\r\n @if (featureEntries()?.length) {\r\n <div class=\"margin-top-sm\">\r\n <fieldset>\r\n <legend>features</legend>\r\n <cadmus-thesaurus-entries-picker\r\n [availableEntries]=\"featureEntries()!\"\r\n [hierarchicLabels]=\"true\"\r\n [entries]=\"idFeatures()\"\r\n (entriesChange)=\"onEntriesChange($event)\"\r\n emptyMessage=\"\"\r\n />\r\n </fieldset>\r\n </div>\r\n }\r\n\r\n <!-- note -->\r\n <div class=\"margin-top-sm\">\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\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\r\n <!-- assertion -->\r\n <div class=\"boxed margin-top\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n\r\n <!-- buttons -->\r\n @if (hasSubmit()) {\r\n <div>\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\" [disabled]=\"form.invalid\">\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.boxed{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:6px}.short-text{width:12em}.long-text{width:100%;max-width:800px}.pin-info{font-size:90%;color:var(--mat-sys-on-surface-variant)}fieldset{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:6px}legend{color:var(--mat-sys-on-surface-variant)}.margin-top-sm{margin-top:6px}.margin-top{margin-top:12px}.info{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;background-color:var(--mat-sys-surface-variant);color:var(--mat-sys-on-surface-variant);padding:4px}.info .label{background-color:var(--mat-sys-surface-variant);color:var(--mat-sys-on-surface-variant);margin:0 6px}@media only screen and (max-width:959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"editor\" \"lookup\"}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type:
|
|
906
1098
|
// material
|
|
907
1099
|
MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8$1.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: i9.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type:
|
|
908
1100
|
// bricks
|
|
909
1101
|
AssertionComponent, selector: "cadmus-refs-assertion", inputs: ["assTagEntries", "refTypeEntries", "refTagEntries", "assertion", "noLookup", "noCitation", "defaultPicker", "lookupProviderOptions"], outputs: ["assertionChange"] }, { kind: "component", type:
|
|
910
1102
|
// cadmus
|
|
911
1103
|
ThesaurusEntriesPickerComponent, selector: "cadmus-thesaurus-entries-picker", inputs: ["availableEntries", "entries", "hierarchicLabels", "autoSort", "allowCustom", "minEntries", "maxEntries", "expanded", "emptyMessage"], outputs: ["entriesChange", "expandedChange"] }, { kind: "component", type:
|
|
1104
|
+
// taxonomy
|
|
1105
|
+
TaxoStorePicker, selector: "ts-taxo-store-picker", inputs: ["treeId", "hasTopNodeFilter", "hasFlagsFilter", "availableFlags", "canEdit", "canAdd", "canDelete", "hideLoc", "hideFilter", "label"], outputs: ["nodePick"] }, { kind: "component", type:
|
|
912
1106
|
// local
|
|
913
|
-
PinTargetLookupComponent, selector: "cadmus-pin-target-lookup", inputs: ["pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "extLookupConfigs", "lookupProviderOptions", "target", "defaultPartTypeKey"], outputs: ["pinByTypeModeChange", "canSwitchModeChange", "lookupDefinitionsChange", "targetChange", "editorClose", "extMoreRequest", "extLookupConfigChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1107
|
+
PinTargetLookupComponent, selector: "cadmus-pin-target-lookup", inputs: ["pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "extLookupConfigs", "lookupProviderOptions", "target", "hideTargetSelector", "externalMode", "defaultPartTypeKey"], outputs: ["pinByTypeModeChange", "canSwitchModeChange", "lookupDefinitionsChange", "targetChange", "editorClose", "extMoreRequest", "extLookupConfigChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
914
1108
|
}
|
|
915
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AssertedCompositeIdComponent, decorators: [{
|
|
916
1110
|
type: Component,
|
|
917
1111
|
args: [{ selector: 'cadmus-refs-asserted-composite-id', imports: [
|
|
918
1112
|
ReactiveFormsModule,
|
|
@@ -928,9 +1122,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
928
1122
|
AssertionComponent,
|
|
929
1123
|
// cadmus
|
|
930
1124
|
ThesaurusEntriesPickerComponent,
|
|
1125
|
+
// taxonomy
|
|
1126
|
+
TaxoStorePicker,
|
|
931
1127
|
// local
|
|
932
1128
|
PinTargetLookupComponent,
|
|
933
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries(); 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 class=\"short-text\">\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\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries(); 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 <!-- scope (free) -->\r\n @else {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if (\r\n $any(scope.errors)?.maxLength && (scope.dirty || scope.touched)\r\n ) {\r\n <mat-error>scope too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- label and GID -->\r\n @if (target.value?.label) {\r\n <div class=\"info\">\r\n <span class=\"label\">label</span>{{ target.value?.label }}\r\n </div>\r\n }\r\n @if (target.value?.gid) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span>{{ target.value?.gid }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- target -->\r\n <div class=\"boxed\">\r\n <mat-expansion-panel\r\n [expanded]=\"targetExpanded()\"\r\n (expandedChange)=\"targetExpanded.set($event)\"\r\n >\r\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\r\n <cadmus-pin-target-lookup\r\n
|
|
1129
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries(); 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 class=\"short-text\">\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\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries(); 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 <!-- scope (free) -->\r\n @else {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if (\r\n $any(scope.errors)?.maxLength && (scope.dirty || scope.touched)\r\n ) {\r\n <mat-error>scope too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- label and GID -->\r\n @if (target.value?.label) {\r\n <div class=\"info\">\r\n <span class=\"label\">label</span>{{ target.value?.label }}\r\n </div>\r\n }\r\n @if (target.value?.gid) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span>{{ target.value?.gid }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- target -->\r\n <div class=\"boxed\">\r\n <mat-expansion-panel\r\n [expanded]=\"targetExpanded()\"\r\n (expandedChange)=\"targetExpanded.set($event)\"\r\n >\r\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\r\n\r\n <!-- target source mode -->\r\n <div class=\"form-row\">\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>source</mat-label>\r\n <mat-select\r\n [value]=\"targetMode()\"\r\n (selectionChange)=\"onTargetModeChange($event.value)\"\r\n >\r\n <mat-option value=\"internal\">\uD83D\uDD17 internal</mat-option>\r\n <mat-option value=\"external\">\uD83C\uDF10 external</mat-option>\r\n @if (hasTaxonomy()) {\r\n <mat-option value=\"taxonomy\">\uD83C\uDF34 taxonomy</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n @if (targetMode() === 'taxonomy') {\r\n <!-- taxonomy source -->\r\n @if (taxoLookupConfigs().length > 1) {\r\n <div class=\"form-row\">\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tree</mat-label>\r\n <mat-select\r\n [value]=\"selectedTaxoConfig()\"\r\n (selectionChange)=\"onTaxoConfigChange($event.value)\"\r\n >\r\n @for (c of taxoLookupConfigs(); track c.treeId) {\r\n <mat-option [value]=\"c\">{{ c.treeName }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n @if (selectedTaxoConfig(); as taxoConfig) {\r\n <ts-taxo-store-picker\r\n [treeId]=\"taxoConfig.treeId\"\r\n [hasTopNodeFilter]=\"taxoConfig.hasTopNodeFilter ?? false\"\r\n [hasFlagsFilter]=\"taxoConfig.hasFlagsFilter ?? false\"\r\n [availableFlags]=\"taxoConfig.availableFlags ?? []\"\r\n [canEdit]=\"taxoConfig.canEdit ?? true\"\r\n [canAdd]=\"taxoConfig.canAdd ?? true\"\r\n [canDelete]=\"taxoConfig.canDelete ?? true\"\r\n [hideLoc]=\"taxoConfig.hideLoc ?? false\"\r\n [hideFilter]=\"taxoConfig.hideFilter ?? false\"\r\n [label]=\"taxoConfig.treeName\"\r\n (nodePick)=\"onTaxoNodePick($event)\"\r\n />\r\n }\r\n } @else {\r\n <cadmus-pin-target-lookup\r\n [hideTargetSelector]=\"true\"\r\n [externalMode]=\"targetMode() === 'external'\"\r\n [pinByTypeMode]=\"pinByTypeMode()\"\r\n [canSwitchMode]=\"canSwitchMode()\"\r\n [canEditTarget]=\"canEditTarget()\"\r\n [lookupDefinitions]=\"lookupDefinitions()\"\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey()\"\r\n [target]=\"target.value || undefined\"\r\n [extLookupConfigs]=\"extLookupConfigs()\"\r\n (targetChange)=\"onTargetChange($event)\"\r\n (editorClose)=\"onEditorClose()\"\r\n (extMoreRequest)=\"onExtMoreRequest($event)\"\r\n (extLookupConfigChange)=\"onExtLookupConfigChange($event)\"\r\n />\r\n }\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n <!-- features -->\r\n @if (featureEntries()?.length) {\r\n <div class=\"margin-top-sm\">\r\n <fieldset>\r\n <legend>features</legend>\r\n <cadmus-thesaurus-entries-picker\r\n [availableEntries]=\"featureEntries()!\"\r\n [hierarchicLabels]=\"true\"\r\n [entries]=\"idFeatures()\"\r\n (entriesChange)=\"onEntriesChange($event)\"\r\n emptyMessage=\"\"\r\n />\r\n </fieldset>\r\n </div>\r\n }\r\n\r\n <!-- note -->\r\n <div class=\"margin-top-sm\">\r\n <mat-form-field class=\"long-text\">\r\n <mat-label>note</mat-label>\r\n <input matInput [formControl]=\"note\" />\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\r\n <!-- assertion -->\r\n <div class=\"boxed margin-top\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n\r\n <!-- buttons -->\r\n @if (hasSubmit()) {\r\n <div>\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\" [disabled]=\"form.invalid\">\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.boxed{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:6px}.short-text{width:12em}.long-text{width:100%;max-width:800px}.pin-info{font-size:90%;color:var(--mat-sys-on-surface-variant)}fieldset{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:6px}legend{color:var(--mat-sys-on-surface-variant)}.margin-top-sm{margin-top:6px}.margin-top{margin-top:12px}.info{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;background-color:var(--mat-sys-surface-variant);color:var(--mat-sys-on-surface-variant);padding:4px}.info .label{background-color:var(--mat-sys-surface-variant);color:var(--mat-sys-on-surface-variant);margin:0 6px}@media only screen and (max-width:959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"editor\" \"lookup\"}}\n"] }]
|
|
934
1130
|
}], ctorParameters: () => [{ type: i1$1.FormBuilder }, { type: PinRefLookupService }, { type: undefined, decorators: [{
|
|
935
1131
|
type: Inject,
|
|
936
1132
|
args: ['indexLookupDefinitions']
|
|
@@ -944,35 +1140,47 @@ class AssertedCompositeIdsComponent {
|
|
|
944
1140
|
/**
|
|
945
1141
|
* The asserted IDs.
|
|
946
1142
|
*/
|
|
947
|
-
ids = model([],
|
|
948
|
-
|
|
949
|
-
|
|
1143
|
+
ids = model([], /* @ts-ignore */
|
|
1144
|
+
...(ngDevMode ? [{ debugName: "ids" }] : /* istanbul ignore next */ []));
|
|
1145
|
+
editedIndex = signal(-1, /* @ts-ignore */
|
|
1146
|
+
...(ngDevMode ? [{ debugName: "editedIndex" }] : /* istanbul ignore next */ []));
|
|
1147
|
+
edited = signal(undefined, /* @ts-ignore */
|
|
1148
|
+
...(ngDevMode ? [{ debugName: "edited" }] : /* istanbul ignore next */ []));
|
|
950
1149
|
// asserted-id-scopes
|
|
951
|
-
idScopeEntries = input(
|
|
1150
|
+
idScopeEntries = input(/* @ts-ignore */
|
|
1151
|
+
...(ngDevMode ? [undefined, { debugName: "idScopeEntries" }] : /* istanbul ignore next */ []));
|
|
952
1152
|
// asserted-id-tags
|
|
953
|
-
idTagEntries = input(
|
|
1153
|
+
idTagEntries = input(/* @ts-ignore */
|
|
1154
|
+
...(ngDevMode ? [undefined, { debugName: "idTagEntries" }] : /* istanbul ignore next */ []));
|
|
954
1155
|
// assertion-tags
|
|
955
|
-
assTagEntries = input(
|
|
1156
|
+
assTagEntries = input(/* @ts-ignore */
|
|
1157
|
+
...(ngDevMode ? [undefined, { debugName: "assTagEntries" }] : /* istanbul ignore next */ []));
|
|
956
1158
|
// doc-reference-types
|
|
957
|
-
refTypeEntries = input(
|
|
1159
|
+
refTypeEntries = input(/* @ts-ignore */
|
|
1160
|
+
...(ngDevMode ? [undefined, { debugName: "refTypeEntries" }] : /* istanbul ignore next */ []));
|
|
958
1161
|
// doc-reference-tags
|
|
959
|
-
refTagEntries = input(
|
|
1162
|
+
refTagEntries = input(/* @ts-ignore */
|
|
1163
|
+
...(ngDevMode ? [undefined, { debugName: "refTagEntries" }] : /* istanbul ignore next */ []));
|
|
960
1164
|
// asserted-id-features
|
|
961
|
-
featureEntries = input(
|
|
1165
|
+
featureEntries = input(/* @ts-ignore */
|
|
1166
|
+
...(ngDevMode ? [undefined, { debugName: "featureEntries" }] : /* istanbul ignore next */ []));
|
|
962
1167
|
/**
|
|
963
1168
|
* True when the internal UI preselected mode should be by type rather than
|
|
964
1169
|
* by item. User can change mode unless modeSwitching is false.
|
|
965
1170
|
*/
|
|
966
|
-
pinByTypeMode = input(
|
|
1171
|
+
pinByTypeMode = input(/* @ts-ignore */
|
|
1172
|
+
...(ngDevMode ? [undefined, { debugName: "pinByTypeMode" }] : /* istanbul ignore next */ []));
|
|
967
1173
|
/**
|
|
968
1174
|
* True when the user can switch between by-type and by-item mode in
|
|
969
1175
|
* the internal UI.
|
|
970
1176
|
*/
|
|
971
|
-
canSwitchMode = input(
|
|
1177
|
+
canSwitchMode = input(/* @ts-ignore */
|
|
1178
|
+
...(ngDevMode ? [undefined, { debugName: "canSwitchMode" }] : /* istanbul ignore next */ []));
|
|
972
1179
|
/**
|
|
973
1180
|
* True when the user can edit the target's gid/label for internal targets.
|
|
974
1181
|
*/
|
|
975
|
-
canEditTarget = input(
|
|
1182
|
+
canEditTarget = input(/* @ts-ignore */
|
|
1183
|
+
...(ngDevMode ? [undefined, { debugName: "canEditTarget" }] : /* istanbul ignore next */ []));
|
|
976
1184
|
/**
|
|
977
1185
|
* The lookup definitions to be used for the by-type lookup in the internal UI.
|
|
978
1186
|
* If not specified, the lookup definitions will be got via injection
|
|
@@ -981,16 +1189,19 @@ class AssertedCompositeIdsComponent {
|
|
|
981
1189
|
* if this is not available either, the by-type lookup will be
|
|
982
1190
|
* disabled.
|
|
983
1191
|
*/
|
|
984
|
-
lookupDefinitions = input(
|
|
1192
|
+
lookupDefinitions = input(/* @ts-ignore */
|
|
1193
|
+
...(ngDevMode ? [undefined, { debugName: "lookupDefinitions" }] : /* istanbul ignore next */ []));
|
|
985
1194
|
/**
|
|
986
1195
|
* The default part type key.
|
|
987
1196
|
*/
|
|
988
|
-
defaultPartTypeKey = input(
|
|
1197
|
+
defaultPartTypeKey = input(/* @ts-ignore */
|
|
1198
|
+
...(ngDevMode ? [undefined, { debugName: "defaultPartTypeKey" }] : /* istanbul ignore next */ []));
|
|
989
1199
|
/**
|
|
990
1200
|
* Optional preset options for external lookup providers.
|
|
991
1201
|
* Maps provider IDs to their available scopes.
|
|
992
1202
|
*/
|
|
993
|
-
lookupProviderOptions = input(
|
|
1203
|
+
lookupProviderOptions = input(/* @ts-ignore */
|
|
1204
|
+
...(ngDevMode ? [undefined, { debugName: "lookupProviderOptions" }] : /* istanbul ignore next */ []));
|
|
994
1205
|
constructor(_dialogService) {
|
|
995
1206
|
this._dialogService = _dialogService;
|
|
996
1207
|
}
|
|
@@ -1056,10 +1267,10 @@ class AssertedCompositeIdsComponent {
|
|
|
1056
1267
|
onIdChange(id) {
|
|
1057
1268
|
this.saveId(id);
|
|
1058
1269
|
}
|
|
1059
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1060
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1270
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AssertedCompositeIdsComponent, deps: [{ token: i1$2.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1271
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: AssertedCompositeIdsComponent, isStandalone: true, selector: "cadmus-refs-asserted-composite-ids", inputs: { ids: { classPropertyName: "ids", publicName: "ids", 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 }, refTypeEntries: { classPropertyName: "refTypeEntries", publicName: "refTypeEntries", isSignal: true, isRequired: false, transformFunction: null }, refTagEntries: { classPropertyName: "refTagEntries", publicName: "refTagEntries", isSignal: true, isRequired: false, transformFunction: null }, featureEntries: { classPropertyName: "featureEntries", publicName: "featureEntries", 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 }, lookupDefinitions: { classPropertyName: "lookupDefinitions", publicName: "lookupDefinitions", isSignal: true, isRequired: false, transformFunction: null }, defaultPartTypeKey: { classPropertyName: "defaultPartTypeKey", publicName: "defaultPartTypeKey", isSignal: true, isRequired: false, transformFunction: null }, lookupProviderOptions: { classPropertyName: "lookupProviderOptions", publicName: "lookupProviderOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ids: "idsChange" }, ngImport: i0, template: "<div>\r\n <!-- buttons -->\r\n <button type=\"button\" class=\"mat-primary\" mat-flat-button (click)=\"addId()\">\r\n <mat-icon>add_circle</mat-icon> ID\r\n </button>\r\n <!-- list -->\r\n @if (ids().length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>scope</th>\r\n <th>type</th>\r\n <th>label</th>\r\n <th>gid</th>\r\n <th>features</th>\r\n <th>ass.</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (\r\n id of ids();\r\n track id;\r\n let i = $index;\r\n let first = $first;\r\n let last = $last\r\n ) {\r\n <tr [class.selected]=\"i === editedIndex()\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this ID\"\r\n (click)=\"editId(id, 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 ID up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveIdUp(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 ID down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveIdDown(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 ID\"\r\n (click)=\"deleteId(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ id.scope }}</td>\r\n <td>\r\n <mat-icon>{{ id?.target?.name ? \"login\" : \"logout\" }}</mat-icon>\r\n </td>\r\n <td>{{ id?.target?.label }}</td>\r\n <td>{{ id?.target?.gid }}</td>\r\n <td>\r\n @for (f of id?.features; let last = $last; track f) {\r\n {{ f | flatLookup: featureEntries() : \"id\" : \"value\" }}\r\n @if (!last) {\r\n ,\r\n }\r\n }\r\n </td>\r\n <td>{{ id?.assertion ? \"Y\" : \"N\" }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n }\r\n <!-- editor -->\r\n @if (edited()) {\r\n <mat-expansion-panel [expanded]=\"edited()\" [disabled]=\"!edited()\">\r\n <mat-expansion-panel-header\r\n ><mat-icon>{{ edited()?.target?.name ? \"login\" : \"logout\" }}</mat-icon>\r\n ID {{ edited()?.target?.label }}</mat-expansion-panel-header\r\n >\r\n <cadmus-refs-asserted-composite-id\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [featureEntries]=\"featureEntries()\"\r\n [hasSubmit]=\"true\"\r\n [pinByTypeMode]=\"pinByTypeMode()\"\r\n [canSwitchMode]=\"canSwitchMode()\"\r\n [canEditTarget]=\"canEditTarget()\"\r\n [lookupDefinitions]=\"lookupDefinitions()\"\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey()\"\r\n [id]=\"edited()\"\r\n (idChange)=\"onIdChange($event)\"\r\n (editorClose)=\"closeId()\"\r\n />\r\n </mat-expansion-panel>\r\n }\r\n</div>\r\n", styles: ["table{width:100%;border-collapse:collapse}tbody tr:nth-child(odd){background-color:var(--mat-sys-surface-container)}th{text-align:left;font-weight:400;color:var(--mat-sys-on-surface-variant)}tbody tr:hover{background-color:var(--mat-sys-surface-container-high)}td.fit-width{width:1px;white-space:nowrap}tbody tr.selected{background-color:var(--mat-sys-secondary-container);color:var(--mat-sys-on-secondary-container)}fieldset{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:6px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "component", type: AssertedCompositeIdComponent, selector: "cadmus-refs-asserted-composite-id", inputs: ["idScopeEntries", "idTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "featureEntries", "id", "hasSubmit", "pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "lookupProviderOptions", "defaultPartTypeKey"], outputs: ["idChange", "editorClose", "extMoreRequest"] }, { kind: "pipe", type: FlatLookupPipe, name: "flatLookup" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1061
1272
|
}
|
|
1062
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AssertedCompositeIdsComponent, decorators: [{
|
|
1063
1274
|
type: Component,
|
|
1064
1275
|
args: [{ selector: 'cadmus-refs-asserted-composite-ids', imports: [
|
|
1065
1276
|
FormsModule,
|
|
@@ -1091,8 +1302,10 @@ class ScopedPinLookupComponent {
|
|
|
1091
1302
|
// lookup
|
|
1092
1303
|
key;
|
|
1093
1304
|
keyForm;
|
|
1094
|
-
keys = signal([],
|
|
1095
|
-
|
|
1305
|
+
keys = signal([], /* @ts-ignore */
|
|
1306
|
+
...(ngDevMode ? [{ debugName: "keys" }] : /* istanbul ignore next */ []));
|
|
1307
|
+
info = signal(undefined, /* @ts-ignore */
|
|
1308
|
+
...(ngDevMode ? [{ debugName: "info" }] : /* istanbul ignore next */ []));
|
|
1096
1309
|
// builder
|
|
1097
1310
|
id;
|
|
1098
1311
|
idForm;
|
|
@@ -1104,7 +1317,8 @@ class ScopedPinLookupComponent {
|
|
|
1104
1317
|
* Optional preset options for lookup providers.
|
|
1105
1318
|
* Maps provider IDs to their available scopes.
|
|
1106
1319
|
*/
|
|
1107
|
-
lookupProviderOptions = input(
|
|
1320
|
+
lookupProviderOptions = input(/* @ts-ignore */
|
|
1321
|
+
...(ngDevMode ? [undefined, { debugName: "lookupProviderOptions" }] : /* istanbul ignore next */ []));
|
|
1108
1322
|
constructor(formBuilder, _itemService, lookupService, lookupDefs) {
|
|
1109
1323
|
this._itemService = _itemService;
|
|
1110
1324
|
this.lookupService = lookupService;
|
|
@@ -1199,16 +1413,16 @@ class ScopedPinLookupComponent {
|
|
|
1199
1413
|
this.id.markAsDirty();
|
|
1200
1414
|
this.id.updateValueAndValidity();
|
|
1201
1415
|
}
|
|
1202
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1203
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1416
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ScopedPinLookupComponent, deps: [{ token: i1$1.FormBuilder }, { token: i1.ItemService }, { token: PinRefLookupService }, { token: 'indexLookupDefinitions' }], target: i0.ɵɵFactoryTarget.Component });
|
|
1417
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: ScopedPinLookupComponent, isStandalone: true, selector: "cadmus-scoped-pin-lookup", inputs: { lookupProviderOptions: { classPropertyName: "lookupProviderOptions", publicName: "lookupProviderOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { idPick: "idPick" }, ngImport: i0, template: "<div>\r\n <!-- lookup -->\r\n <div>\r\n <form [formGroup]=\"keyForm\" class=\"form-row\">\r\n <!-- key -->\r\n @if (keys().length > 1) {\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <mat-select [formControl]=\"key\">\r\n @for (k of keys(); track k) {\r\n <mat-option [value]=\"k\">{{ k }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ($any(key).errors?.required && (key.dirty || key.touched)) {\r\n <mat-error>type required</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <cadmus-refs-lookup\r\n [service]=\"lookupService\"\r\n label=\"pin\"\r\n [options]=\"key.value ? lookupDefs[key.value] : undefined\"\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n (itemChange)=\"onItemChange($event)\"\r\n />\r\n </form>\r\n </div>\r\n\r\n <!-- builder -->\r\n @if (info()) {\r\n <mat-expansion-panel [expanded]=\"info()\" [disabled]=\"!info()\">\r\n <mat-expansion-panel-header>ID builder</mat-expansion-panel-header>\r\n <!-- ID -->\r\n <div>\r\n <form [formGroup]=\"idForm\" (submit)=\"pickId()\">\r\n <mat-form-field style=\"width: 100%\">\r\n <input matInput [formControl]=\"id\" />\r\n @if ($any(id).errors?.required && (id.dirty || id.touched)) {\r\n <mat-error>ID required</mat-error>\r\n }\r\n @if ($any(id).errors?.maxLength && (id.dirty || id.touched)) {\r\n <mat-error>ID too long</mat-error>\r\n }\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matSuffix\r\n (click)=\"resetId()\"\r\n [disabled]=\"!id.value\"\r\n >\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matSuffix\r\n (click)=\"pickId()\"\r\n [disabled]=\"idForm.invalid\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </form>\r\n </div>\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <th></th>\r\n <th>source</th>\r\n <th>value</th>\r\n </thead>\r\n <tbody>\r\n <!-- pin -->\r\n <tr class=\"fit-width\">\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('pin')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin</td>\r\n <td>{{ info()!.pin.value }}</td>\r\n </tr>\r\n <!-- item ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('itemId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>item ID</td>\r\n <td>{{ info()!.item?.id }}</td>\r\n </tr>\r\n <!-- item title -->\r\n <tr>\r\n <td></td>\r\n <td>item title</td>\r\n <td>{{ info()!.item?.title }}</td>\r\n </tr>\r\n <!-- part ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('partId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>part ID</td>\r\n <td>{{ info()!.part?.id }}</td>\r\n </tr>\r\n <!-- part type ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('partTypeId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>part type ID</td>\r\n <td>{{ info()!.part?.typeId }}</td>\r\n </tr>\r\n <!-- part role ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('partRoleId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>part role ID</td>\r\n <td>{{ info()!.part?.roleId }}</td>\r\n </tr>\r\n <!-- part's metadata -->\r\n @for (m of info()!.part?.metadata; track m; let i = $index) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('metadata', i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"metadata\">{{ m.name }}</td>\r\n <td class=\"metadata\">{{ m.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </mat-expansion-panel>\r\n }\r\n</div>\r\n", styles: [".metadata{color:#4a3001}table{width:100%;border-collapse:collapse}tbody tr:nth-child(odd){background-color:var(--mat-sys-surface-container)}th{text-align:left;font-weight:400;color:var(--mat-sys-on-surface-variant)}tbody tr:hover{background-color:var(--mat-sys-surface-container-high)}td.fit-width{width:1px;white-space:nowrap}tbody tr.selected{background-color:var(--mat-sys-secondary-container);color:var(--mat-sys-on-secondary-container)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type:
|
|
1204
1418
|
// material
|
|
1205
1419
|
MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8$1.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: i9.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type:
|
|
1206
1420
|
// bricks
|
|
1207
|
-
RefLookupComponent, selector: "cadmus-refs-lookup", inputs: ["label", "limit", "baseFilter", "service", "item", "itemId", "required", "hasMore", "linkTemplate", "optDialog", "options", "lookupProviderOptions"], outputs: ["itemChange", "optionsChange", "moreRequest"] }] });
|
|
1421
|
+
RefLookupComponent, selector: "cadmus-refs-lookup", inputs: ["label", "limit", "baseFilter", "service", "item", "itemId", "required", "hasMore", "linkTemplate", "optDialog", "options", "lookupProviderOptions"], outputs: ["itemChange", "optionsChange", "moreRequest"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1208
1422
|
}
|
|
1209
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1423
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ScopedPinLookupComponent, decorators: [{
|
|
1210
1424
|
type: Component,
|
|
1211
|
-
args: [{ selector: 'cadmus-scoped-pin-lookup', imports: [
|
|
1425
|
+
args: [{ selector: 'cadmus-scoped-pin-lookup', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1212
1426
|
FormsModule,
|
|
1213
1427
|
ReactiveFormsModule,
|
|
1214
1428
|
// material
|
|
@@ -1240,34 +1454,44 @@ class AssertedIdComponent {
|
|
|
1240
1454
|
scope;
|
|
1241
1455
|
assertion;
|
|
1242
1456
|
form;
|
|
1243
|
-
lookupExpanded = signal(false,
|
|
1457
|
+
lookupExpanded = signal(false, /* @ts-ignore */
|
|
1458
|
+
...(ngDevMode ? [{ debugName: "lookupExpanded" }] : /* istanbul ignore next */ []));
|
|
1244
1459
|
// asserted-id-scopes
|
|
1245
|
-
idScopeEntries = input(
|
|
1460
|
+
idScopeEntries = input(/* @ts-ignore */
|
|
1461
|
+
...(ngDevMode ? [undefined, { debugName: "idScopeEntries" }] : /* istanbul ignore next */ []));
|
|
1246
1462
|
// asserted-id-tags
|
|
1247
|
-
idTagEntries = input(
|
|
1463
|
+
idTagEntries = input(/* @ts-ignore */
|
|
1464
|
+
...(ngDevMode ? [undefined, { debugName: "idTagEntries" }] : /* istanbul ignore next */ []));
|
|
1248
1465
|
// assertion-tags
|
|
1249
|
-
assTagEntries = input(
|
|
1466
|
+
assTagEntries = input(/* @ts-ignore */
|
|
1467
|
+
...(ngDevMode ? [undefined, { debugName: "assTagEntries" }] : /* istanbul ignore next */ []));
|
|
1250
1468
|
// doc-reference-types
|
|
1251
|
-
refTypeEntries = input(
|
|
1469
|
+
refTypeEntries = input(/* @ts-ignore */
|
|
1470
|
+
...(ngDevMode ? [undefined, { debugName: "refTypeEntries" }] : /* istanbul ignore next */ []));
|
|
1252
1471
|
// doc-reference-tags
|
|
1253
|
-
refTagEntries = input(
|
|
1472
|
+
refTagEntries = input(/* @ts-ignore */
|
|
1473
|
+
...(ngDevMode ? [undefined, { debugName: "refTagEntries" }] : /* istanbul ignore next */ []));
|
|
1254
1474
|
/**
|
|
1255
1475
|
* The asserted ID being edited.
|
|
1256
1476
|
*/
|
|
1257
|
-
id = model(
|
|
1477
|
+
id = model(/* @ts-ignore */
|
|
1478
|
+
...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
|
|
1258
1479
|
/**
|
|
1259
1480
|
* True to hide the pin-based EID lookup UI.
|
|
1260
1481
|
*/
|
|
1261
|
-
noEidLookup = input(
|
|
1482
|
+
noEidLookup = input(/* @ts-ignore */
|
|
1483
|
+
...(ngDevMode ? [undefined, { debugName: "noEidLookup" }] : /* istanbul ignore next */ []));
|
|
1262
1484
|
/**
|
|
1263
1485
|
* Optional preset options for lookup providers.
|
|
1264
1486
|
* Maps provider IDs to their available scopes.
|
|
1265
1487
|
*/
|
|
1266
|
-
lookupProviderOptions = input(
|
|
1488
|
+
lookupProviderOptions = input(/* @ts-ignore */
|
|
1489
|
+
...(ngDevMode ? [undefined, { debugName: "lookupProviderOptions" }] : /* istanbul ignore next */ []));
|
|
1267
1490
|
/**
|
|
1268
1491
|
* True to show the submit button.
|
|
1269
1492
|
*/
|
|
1270
|
-
hasSubmit = input(
|
|
1493
|
+
hasSubmit = input(/* @ts-ignore */
|
|
1494
|
+
...(ngDevMode ? [undefined, { debugName: "hasSubmit" }] : /* istanbul ignore next */ []));
|
|
1271
1495
|
/**
|
|
1272
1496
|
* Emitted when the editor is closed.
|
|
1273
1497
|
*/
|
|
@@ -1353,14 +1577,14 @@ class AssertedIdComponent {
|
|
|
1353
1577
|
this.id.set(this.getId());
|
|
1354
1578
|
}
|
|
1355
1579
|
}
|
|
1356
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1357
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1580
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AssertedIdComponent, deps: [{ token: i1$1.FormBuilder }, { token: PinRefLookupService }, { token: 'indexLookupDefinitions' }], target: i0.ɵɵFactoryTarget.Component });
|
|
1581
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: AssertedIdComponent, isStandalone: true, selector: "cadmus-refs-asserted-id", inputs: { 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 }, refTypeEntries: { classPropertyName: "refTypeEntries", publicName: "refTypeEntries", isSignal: true, isRequired: false, transformFunction: null }, refTagEntries: { classPropertyName: "refTagEntries", publicName: "refTagEntries", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, noEidLookup: { classPropertyName: "noEidLookup", publicName: "noEidLookup", isSignal: true, isRequired: false, transformFunction: null }, lookupProviderOptions: { classPropertyName: "lookupProviderOptions", publicName: "lookupProviderOptions", isSignal: true, isRequired: false, transformFunction: null }, hasSubmit: { classPropertyName: "hasSubmit", publicName: "hasSubmit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { id: "idChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries(); 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 ($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\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries(); 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 <!-- scope (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if ($any(scope.errors)?.maxLength && (scope.dirty || scope.touched)) {\r\n <mat-error>scope too long</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 [formControl]=\"value\" />\r\n @if ($any(value.errors)?.required && (value.dirty || value.touched)) {\r\n <mat-error>value required</mat-error>\r\n } @if ($any(value.errors)?.maxLength && (value.dirty || value.touched))\r\n {\r\n <mat-error>value too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- label -->\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n @if ($any(label.errors)?.maxLength && (label.dirty || label.touched)) {\r\n <mat-error>label too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- lookup -->\r\n @if (!noEidLookup()) {\r\n <div>\r\n <mat-expansion-panel\r\n [expanded]=\"lookupExpanded()\"\r\n (expandedChange)=\"lookupExpanded.set($event)\"\r\n >\r\n <mat-expansion-panel-header>lookup</mat-expansion-panel-header>\r\n <cadmus-scoped-pin-lookup\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n (idPick)=\"onIdPick($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- assertion -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\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 @if (hasSubmit()) {\r\n <div>\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\" [disabled]=\"form.invalid\">\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap}.form-row *{flex:0 0 auto}.pin-info{font-size:90%;color:var(--mat-sys-on-surface-variant)}fieldset{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:6px}@media only screen and (max-width:959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"editor\" \"lookup\"}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type:
|
|
1358
1582
|
// material
|
|
1359
1583
|
MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8$1.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: i9.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: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type:
|
|
1360
1584
|
// bricks
|
|
1361
1585
|
AssertionComponent, selector: "cadmus-refs-assertion", inputs: ["assTagEntries", "refTypeEntries", "refTagEntries", "assertion", "noLookup", "noCitation", "defaultPicker", "lookupProviderOptions"], outputs: ["assertionChange"] }, { kind: "component", type: ScopedPinLookupComponent, selector: "cadmus-scoped-pin-lookup", inputs: ["lookupProviderOptions"], outputs: ["idPick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1362
1586
|
}
|
|
1363
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1587
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AssertedIdComponent, decorators: [{
|
|
1364
1588
|
type: Component,
|
|
1365
1589
|
args: [{ selector: 'cadmus-refs-asserted-id', imports: [
|
|
1366
1590
|
FormsModule,
|
|
@@ -1386,27 +1610,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
1386
1610
|
*/
|
|
1387
1611
|
class AssertedIdsComponent {
|
|
1388
1612
|
_dialogService;
|
|
1389
|
-
editedIndex = signal(-1,
|
|
1390
|
-
|
|
1613
|
+
editedIndex = signal(-1, /* @ts-ignore */
|
|
1614
|
+
...(ngDevMode ? [{ debugName: "editedIndex" }] : /* istanbul ignore next */ []));
|
|
1615
|
+
edited = signal(undefined, /* @ts-ignore */
|
|
1616
|
+
...(ngDevMode ? [{ debugName: "edited" }] : /* istanbul ignore next */ []));
|
|
1391
1617
|
/**
|
|
1392
1618
|
* The asserted IDs.
|
|
1393
1619
|
*/
|
|
1394
|
-
ids = model([],
|
|
1620
|
+
ids = model([], /* @ts-ignore */
|
|
1621
|
+
...(ngDevMode ? [{ debugName: "ids" }] : /* istanbul ignore next */ []));
|
|
1395
1622
|
// asserted-id-scopes
|
|
1396
|
-
idScopeEntries = input(
|
|
1623
|
+
idScopeEntries = input(/* @ts-ignore */
|
|
1624
|
+
...(ngDevMode ? [undefined, { debugName: "idScopeEntries" }] : /* istanbul ignore next */ []));
|
|
1397
1625
|
// asserted-id-tags
|
|
1398
|
-
idTagEntries = input(
|
|
1626
|
+
idTagEntries = input(/* @ts-ignore */
|
|
1627
|
+
...(ngDevMode ? [undefined, { debugName: "idTagEntries" }] : /* istanbul ignore next */ []));
|
|
1399
1628
|
// assertion-tags
|
|
1400
|
-
assTagEntries = input(
|
|
1629
|
+
assTagEntries = input(/* @ts-ignore */
|
|
1630
|
+
...(ngDevMode ? [undefined, { debugName: "assTagEntries" }] : /* istanbul ignore next */ []));
|
|
1401
1631
|
// doc-reference-types
|
|
1402
|
-
refTypeEntries = input(
|
|
1632
|
+
refTypeEntries = input(/* @ts-ignore */
|
|
1633
|
+
...(ngDevMode ? [undefined, { debugName: "refTypeEntries" }] : /* istanbul ignore next */ []));
|
|
1403
1634
|
// doc-reference-tags
|
|
1404
|
-
refTagEntries = input(
|
|
1635
|
+
refTagEntries = input(/* @ts-ignore */
|
|
1636
|
+
...(ngDevMode ? [undefined, { debugName: "refTagEntries" }] : /* istanbul ignore next */ []));
|
|
1405
1637
|
/**
|
|
1406
1638
|
* Optional preset options for lookup providers.
|
|
1407
1639
|
* Maps provider IDs to their available scopes.
|
|
1408
1640
|
*/
|
|
1409
|
-
lookupProviderOptions = input(
|
|
1641
|
+
lookupProviderOptions = input(/* @ts-ignore */
|
|
1642
|
+
...(ngDevMode ? [undefined, { debugName: "lookupProviderOptions" }] : /* istanbul ignore next */ []));
|
|
1410
1643
|
constructor(_dialogService) {
|
|
1411
1644
|
this._dialogService = _dialogService;
|
|
1412
1645
|
}
|
|
@@ -1473,14 +1706,14 @@ class AssertedIdsComponent {
|
|
|
1473
1706
|
onIdChange(id) {
|
|
1474
1707
|
this.saveId(id);
|
|
1475
1708
|
}
|
|
1476
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1477
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1709
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AssertedIdsComponent, deps: [{ token: i1$2.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1710
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: AssertedIdsComponent, isStandalone: true, selector: "cadmus-refs-asserted-ids", inputs: { ids: { classPropertyName: "ids", publicName: "ids", 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 }, refTypeEntries: { classPropertyName: "refTypeEntries", publicName: "refTypeEntries", isSignal: true, isRequired: false, transformFunction: null }, refTagEntries: { classPropertyName: "refTagEntries", publicName: "refTagEntries", isSignal: true, isRequired: false, transformFunction: null }, lookupProviderOptions: { classPropertyName: "lookupProviderOptions", publicName: "lookupProviderOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ids: "idsChange" }, ngImport: i0, template: "<div>\r\n <div>\r\n <button type=\"button\" mat-flat-button class=\"mat-primary\" (click)=\"addId()\">\r\n <mat-icon>add_circle</mat-icon> ID\r\n </button>\r\n </div>\r\n @if (ids().length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>scope</th>\r\n <th>value</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for ( id of ids(); track id; let i = $index; let first = $first; let last\r\n = $last) {\r\n <tr [class.selected]=\"i === editedIndex()\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this ID\"\r\n (click)=\"editId(id, 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 ID up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveIdUp(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 ID down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveIdDown(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 ID\"\r\n (click)=\"deleteId(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ id.scope }}</td>\r\n <td>{{ id.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n } @if (edited()) {\r\n <mat-expansion-panel [expanded]=\"edited()\" [disabled]=\"!edited()\">\r\n <mat-expansion-panel-header\r\n >ID #{{ editedIndex() + 1 }}</mat-expansion-panel-header\r\n >\r\n <cadmus-refs-asserted-id\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [lookupProviderOptions]=\"lookupProviderOptions()\"\r\n [hasSubmit]=\"true\"\r\n [id]=\"edited()\"\r\n (idChange)=\"onIdChange($event)\"\r\n (editorClose)=\"closeId()\"\r\n />\r\n </mat-expansion-panel>\r\n }\r\n</div>\r\n", styles: ["table{width:100%;border-collapse:collapse}tbody tr:nth-child(odd){background-color:var(--mat-sys-surface-container)}th{text-align:left;font-weight:400;color:var(--mat-sys-on-surface-variant)}tbody tr:hover{background-color:var(--mat-sys-surface-container-high)}td.fit-width{width:1px;white-space:nowrap}tbody tr.selected{background-color:var(--mat-sys-secondary-container);color:var(--mat-sys-on-secondary-container)}fieldset{border:1px solid var(--mat-sys-on-surface-variant);border-radius:6px;padding:6px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type:
|
|
1478
1711
|
// material
|
|
1479
1712
|
MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type:
|
|
1480
1713
|
// bricks
|
|
1481
1714
|
AssertedIdComponent, selector: "cadmus-refs-asserted-id", inputs: ["idScopeEntries", "idTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "id", "noEidLookup", "lookupProviderOptions", "hasSubmit"], outputs: ["idChange", "editorClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1482
1715
|
}
|
|
1483
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1716
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AssertedIdsComponent, decorators: [{
|
|
1484
1717
|
type: Component,
|
|
1485
1718
|
args: [{ selector: 'cadmus-refs-asserted-ids', imports: [
|
|
1486
1719
|
FormsModule,
|
|
@@ -1503,5 +1736,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
1503
1736
|
* Generated bundle index. Do not edit.
|
|
1504
1737
|
*/
|
|
1505
1738
|
|
|
1506
|
-
export { AssertedCompositeIdComponent, AssertedCompositeIdsComponent, AssertedIdComponent, AssertedIdsComponent, ItemRefLookupService, PinRefLookupService, PinTargetLookupComponent, ScopedPinLookupComponent };
|
|
1739
|
+
export { AssertedCompositeIdComponent, AssertedCompositeIdsComponent, AssertedIdComponent, AssertedIdsComponent, ItemRefLookupService, LOOKUP_TAXOSTORE_CONFIGS_KEY, PinRefLookupService, PinTargetLookupComponent, ScopedPinLookupComponent, TAXONOMY_GID_PREFIX };
|
|
1507
1740
|
//# sourceMappingURL=myrmidon-cadmus-refs-asserted-ids.mjs.map
|