@meshmakers/octo-ui 3.4.1480 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +108 -0
- package/entity-forms/README.md +462 -0
- package/fesm2022/meshmakers-octo-ui-branding-settings.mjs +2 -2
- package/fesm2022/meshmakers-octo-ui-branding-settings.mjs.map +1 -1
- package/fesm2022/meshmakers-octo-ui-entity-forms.mjs +7944 -0
- package/fesm2022/meshmakers-octo-ui-entity-forms.mjs.map +1 -0
- package/fesm2022/meshmakers-octo-ui-tree-navigation-settings.mjs +2 -2
- package/fesm2022/meshmakers-octo-ui-tree-navigation-settings.mjs.map +1 -1
- package/fesm2022/meshmakers-octo-ui.mjs +985 -402
- package/fesm2022/meshmakers-octo-ui.mjs.map +1 -1
- package/lib/runtime-browser/styles/_button.scss +123 -0
- package/lib/runtime-browser/styles/_field-input.scss +16 -0
- package/lib/runtime-browser/styles/_flat-button.scss +14 -0
- package/lib/runtime-browser/styles/_index.scss +1 -1
- package/lib/runtime-browser/styles/_styles.scss +781 -1407
- package/lib/runtime-browser/styles/_theme.scss +248 -288
- package/lib/runtime-browser/styles/_variables.scss +26 -41
- package/package.json +5 -1
- package/types/meshmakers-octo-ui-entity-forms.d.ts +2648 -0
- package/types/meshmakers-octo-ui.d.ts +197 -4
- package/lib/runtime-browser/styles/_lcars-button.scss +0 -57
- package/lib/runtime-browser/styles/_lcars-flat-btn.scss +0 -11
- package/lib/runtime-browser/styles/_lcars-input.scss +0 -13
|
@@ -2,7 +2,7 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { OnInit, OnDestroy, EventEmitter, OnChanges, SimpleChanges, AfterViewInit, Provider, InjectionToken, EnvironmentProviders } from '@angular/core';
|
|
3
3
|
import * as _progress_kendo_svg_icons from '@progress/kendo-svg-icons';
|
|
4
4
|
import { SVGIcon } from '@progress/kendo-svg-icons';
|
|
5
|
-
import { AttributeItem, AttributeValueTypeDto as AttributeValueTypeDto$1, CkTypeSelectorItem as CkTypeSelectorItem$1, RtEntityDto, FieldFilterDto, SearchFilterDto, SortDto, CkModelDto, CkTypeDto, GraphDirectionDto, RtAssociationDto, FieldFilterOperatorsDto, GetCkTypesDtoGQL, RuntimeEntityItem, RuntimeEntitySelectDataSource, RuntimeEntityDialogDataSource } from '@meshmakers/octo-services';
|
|
5
|
+
import { AttributeItem, AttributeValueTypeDto as AttributeValueTypeDto$1, CkTypeSelectorItem as CkTypeSelectorItem$1, RtEntityDto, FieldFilterDto, SearchFilterDto, SortDto, CkModelDto, CkTypeDto, GraphDirectionDto, RtAssociationDto, FieldFilterOperatorsDto, SecretStatus, GetCkTypesDtoGQL, RuntimeEntityItem, RuntimeEntitySelectDataSource, RuntimeEntityDialogDataSource } from '@meshmakers/octo-services';
|
|
6
6
|
import { GridDataResult, CellClickEvent, RowArgs, PageChangeEvent, SelectionEvent } from '@progress/kendo-angular-grid';
|
|
7
7
|
import { TreeItemDataTyped, TreeItemData, CommandItemExecuteEventArgs, CommandItem } from '@meshmakers/shared-services';
|
|
8
8
|
import * as _meshmakers_octo_ui from '@meshmakers/octo-ui';
|
|
@@ -664,11 +664,19 @@ declare class EntityIdInfoComponent {
|
|
|
664
664
|
rtCkTypeId: string;
|
|
665
665
|
/** The CkTypeId - full versioned Construction Kit type ID (e.g., System.Communication-2.0.3/MeshAdapter-1) */
|
|
666
666
|
ckTypeId?: string;
|
|
667
|
+
/** Button text (translatable, AB#5623). Default `Copy ID`. */
|
|
668
|
+
buttonText: string;
|
|
669
|
+
/** Tooltip of the button (translatable, AB#5623). Default `Copy Entity ID to clipboard`. */
|
|
670
|
+
tooltip: string;
|
|
671
|
+
/** Notification after copying; `{label}` is replaced by the copied ID kind (AB#5623). Default `{label} copied`. */
|
|
672
|
+
copiedMessage: string;
|
|
673
|
+
/** Notification when copying failed (AB#5623). Default `Failed to copy to clipboard`. */
|
|
674
|
+
copyFailedMessage: string;
|
|
667
675
|
protected get copyOptions(): CopyOption[];
|
|
668
676
|
private truncateValue;
|
|
669
677
|
protected copyToClipboard(option: CopyOption): Promise<void>;
|
|
670
678
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityIdInfoComponent, never>;
|
|
671
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityIdInfoComponent, "mm-entity-id-info", never, { "rtId": { "alias": "rtId"; "required": true; }; "rtCkTypeId": { "alias": "rtCkTypeId"; "required": true; }; "ckTypeId": { "alias": "ckTypeId"; "required": false; }; }, {}, never, never, true, never>;
|
|
679
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityIdInfoComponent, "mm-entity-id-info", never, { "rtId": { "alias": "rtId"; "required": true; }; "rtCkTypeId": { "alias": "rtCkTypeId"; "required": true; }; "ckTypeId": { "alias": "ckTypeId"; "required": false; }; "buttonText": { "alias": "buttonText"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "copiedMessage": { "alias": "copiedMessage"; "required": false; }; "copyFailedMessage": { "alias": "copyFailedMessage"; "required": false; }; }, {}, never, never, true, never>;
|
|
672
680
|
}
|
|
673
681
|
|
|
674
682
|
/** One resolved per-role override (presentation only). */
|
|
@@ -1292,6 +1300,81 @@ declare class OctoLoaderComponent {
|
|
|
1292
1300
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OctoLoaderComponent, "mm-octo-loader", never, { "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
|
|
1293
1301
|
}
|
|
1294
1302
|
|
|
1303
|
+
/** Marks projected content that replaces the page title text: `<span mmPageTitle>…</span>`. */
|
|
1304
|
+
declare class PageTitleDirective {
|
|
1305
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageTitleDirective, never>;
|
|
1306
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PageTitleDirective, "[mmPageTitle]", never, {}, {}, never, never, true, never>;
|
|
1307
|
+
}
|
|
1308
|
+
/** Marks projected content shown under the title: `<span mmPageSubtitle>…</span>`. */
|
|
1309
|
+
declare class PageSubtitleDirective {
|
|
1310
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageSubtitleDirective, never>;
|
|
1311
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PageSubtitleDirective, "[mmPageSubtitle]", never, {}, {}, never, never, true, never>;
|
|
1312
|
+
}
|
|
1313
|
+
/** Marks projected page actions (buttons), rendered at the end of the header: `<div mmPageActions>…</div>`. */
|
|
1314
|
+
declare class PageActionsDirective {
|
|
1315
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageActionsDirective, never>;
|
|
1316
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PageActionsDirective, "[mmPageActions]", never, {}, {}, never, never, true, never>;
|
|
1317
|
+
}
|
|
1318
|
+
/** Heading level used for the page title. */
|
|
1319
|
+
type PageHeadingLevel = 1 | 2 | 3;
|
|
1320
|
+
interface ProjectedSlots {
|
|
1321
|
+
title: boolean;
|
|
1322
|
+
subtitle: boolean;
|
|
1323
|
+
actions: boolean;
|
|
1324
|
+
}
|
|
1325
|
+
/**
|
|
1326
|
+
* Page layout: an optional header (title, subtitle, actions) above a content
|
|
1327
|
+
* area. Replaces the retired LCARS page triple (header, content panel and
|
|
1328
|
+
* READY footer); there is no footer.
|
|
1329
|
+
*
|
|
1330
|
+
* The header renders only when there is something to show — a `pageTitle` /
|
|
1331
|
+
* `pageSubtitle` input or projected `[mmPageTitle]`, `[mmPageSubtitle]` or
|
|
1332
|
+
* `[mmPageActions]` content — so pages inside a space shell, which already
|
|
1333
|
+
* shows the area title, can use `<mm-page>` as a bare content frame.
|
|
1334
|
+
* Projected content is detected from the rendered DOM, so the slots work
|
|
1335
|
+
* whether or not the consumer imports the marker directives (`MM_PAGE`).
|
|
1336
|
+
*
|
|
1337
|
+
* ```html
|
|
1338
|
+
* <mm-page pageTitle="Adapters" pageSubtitle="12 registered">
|
|
1339
|
+
* <div mmPageActions>
|
|
1340
|
+
* <button kendoButton themeColor="primary">New adapter</button>
|
|
1341
|
+
* </div>
|
|
1342
|
+
* <mm-list-view …></mm-list-view>
|
|
1343
|
+
* </mm-page>
|
|
1344
|
+
* ```
|
|
1345
|
+
*
|
|
1346
|
+
* The header is a plain `<div>` (no banner landmark) and the title defaults to
|
|
1347
|
+
* heading level 2 — the app/space shell owns level 1. Styling is token-based
|
|
1348
|
+
* (`--theme-*` with neutral fallbacks); the host fills its parent
|
|
1349
|
+
* (`height: 100%`) and the content area scrolls.
|
|
1350
|
+
*/
|
|
1351
|
+
declare class PageComponent {
|
|
1352
|
+
/** Title text. Alternatively project `[mmPageTitle]` content. */
|
|
1353
|
+
readonly pageTitle: _angular_core.InputSignal<string | null | undefined>;
|
|
1354
|
+
/** Subtitle text under the title. Alternatively project `[mmPageSubtitle]` content. */
|
|
1355
|
+
readonly pageSubtitle: _angular_core.InputSignal<string | null | undefined>;
|
|
1356
|
+
/** `aria-level` of the title. Defaults to 2 — the app/space shell owns level 1. */
|
|
1357
|
+
readonly headingLevel: _angular_core.InputSignal<PageHeadingLevel>;
|
|
1358
|
+
/** Pad the content area with the page gutter. Set `false` for full-bleed grids and editors. */
|
|
1359
|
+
readonly padded: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1360
|
+
private readonly titleSlot;
|
|
1361
|
+
private readonly subtitleSlot;
|
|
1362
|
+
private readonly actionsSlot;
|
|
1363
|
+
/** Which slots currently hold projected content (read from the DOM after each render). */
|
|
1364
|
+
protected readonly projected: _angular_core.WritableSignal<ProjectedSlots>;
|
|
1365
|
+
protected readonly hasTitle: _angular_core.Signal<boolean>;
|
|
1366
|
+
protected readonly hasSubtitle: _angular_core.Signal<boolean>;
|
|
1367
|
+
protected readonly hasHeader: _angular_core.Signal<boolean>;
|
|
1368
|
+
constructor();
|
|
1369
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageComponent, never>;
|
|
1370
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageComponent, "mm-page", never, { "pageTitle": { "alias": "pageTitle"; "required": false; "isSignal": true; }; "pageSubtitle": { "alias": "pageSubtitle"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; "padded": { "alias": "padded"; "required": false; "isSignal": true; }; }, {}, never, ["[mmPageTitle]", "[mmPageSubtitle]", "[mmPageActions]", "*"], true, never>;
|
|
1371
|
+
}
|
|
1372
|
+
/**
|
|
1373
|
+
* Everything a template needs for `<mm-page>` and its slots:
|
|
1374
|
+
* `imports: [...MM_PAGE]` (or `imports: [MM_PAGE]`).
|
|
1375
|
+
*/
|
|
1376
|
+
declare const MM_PAGE: readonly [typeof PageComponent, typeof PageTitleDirective, typeof PageSubtitleDirective, typeof PageActionsDirective];
|
|
1377
|
+
|
|
1295
1378
|
declare enum AttributeValueTypeDto {
|
|
1296
1379
|
BinaryDto = "BINARY",
|
|
1297
1380
|
BinaryLinkedDto = "BINARY_LINKED",
|
|
@@ -1309,6 +1392,8 @@ declare enum AttributeValueTypeDto {
|
|
|
1309
1392
|
IntArrayDto = "INT_ARRAY",
|
|
1310
1393
|
RecordDto = "RECORD",
|
|
1311
1394
|
RecordArrayDto = "RECORD_ARRAY",
|
|
1395
|
+
/** SECRET value type (AB#5528): the value is never read; `value` holds a `SecretState`. */
|
|
1396
|
+
SecretDto = "SECRET",
|
|
1312
1397
|
StringDto = "STRING",
|
|
1313
1398
|
StringArrayDto = "STRING_ARRAY",
|
|
1314
1399
|
TimeSpanDto = "TIME_SPAN"
|
|
@@ -1422,6 +1507,10 @@ declare const DEFAULT_PROPERTY_GRID_MESSAGES: PropertyGridMessages;
|
|
|
1422
1507
|
interface RtAttribute {
|
|
1423
1508
|
attributeName?: string | null;
|
|
1424
1509
|
value?: unknown;
|
|
1510
|
+
/** SECRET value type (AB#5528): null for non-secret attributes. */
|
|
1511
|
+
secretIsSet?: boolean | null;
|
|
1512
|
+
secretKeyMissing?: boolean | null;
|
|
1513
|
+
secretSetAt?: string | Date | null;
|
|
1425
1514
|
}
|
|
1426
1515
|
/** Represents an RtRecord with a ckRecordId and attributes */
|
|
1427
1516
|
interface RtRecord {
|
|
@@ -1567,6 +1656,11 @@ declare class PropertyGridComponent implements OnInit, OnChanges {
|
|
|
1567
1656
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PropertyGridComponent, "mm-property-grid", never, { "data": { "alias": "data"; "required": false; }; "config": { "alias": "config"; "required": false; }; "showTypeColumn": { "alias": "showTypeColumn"; "required": false; }; "messages": { "alias": "messages"; "required": false; }; }, { "propertyChange": "propertyChange"; "saveRequested": "saveRequested"; "binaryDownload": "binaryDownload"; }, never, never, true, never>;
|
|
1568
1657
|
}
|
|
1569
1658
|
|
|
1659
|
+
/**
|
|
1660
|
+
* A secret record member as projected by the server (AB#5528): the marker `{ isSet }` (optionally
|
|
1661
|
+
* with `keyMissing` / `setAt`), or a normalised `SecretState`. Nothing else has exactly these keys.
|
|
1662
|
+
*/
|
|
1663
|
+
declare function isSecretMarker(value: unknown): boolean;
|
|
1570
1664
|
/**
|
|
1571
1665
|
* Component for displaying property values with appropriate formatting
|
|
1572
1666
|
*/
|
|
@@ -1579,6 +1673,9 @@ declare class PropertyValueDisplayComponent implements OnInit, OnChanges {
|
|
|
1579
1673
|
binaryDownload: EventEmitter<BinaryDownloadEvent>;
|
|
1580
1674
|
isExpanded: boolean;
|
|
1581
1675
|
private readonly windowService;
|
|
1676
|
+
private readonly locale;
|
|
1677
|
+
/** Non-null when the value is a secret state (SECRET value type or record member marker). */
|
|
1678
|
+
secretStatus: SecretStatus | null;
|
|
1582
1679
|
expandableRecord: boolean;
|
|
1583
1680
|
complexType: boolean;
|
|
1584
1681
|
binaryLinkedWithDownload: boolean;
|
|
@@ -1605,6 +1702,8 @@ declare class PropertyValueDisplayComponent implements OnInit, OnChanges {
|
|
|
1605
1702
|
ngOnInit(): void;
|
|
1606
1703
|
ngOnChanges(changes: SimpleChanges): void;
|
|
1607
1704
|
private recomputeDerivedValues;
|
|
1705
|
+
/** Set / not set / key missing for a SECRET value or a record member marker `{ isSet }` (AB#5528). */
|
|
1706
|
+
private computeSecretStatus;
|
|
1608
1707
|
private computeFormattedValue;
|
|
1609
1708
|
private computeIsExpandableRecord;
|
|
1610
1709
|
/**
|
|
@@ -1813,6 +1912,10 @@ interface RuntimeBrowserMessages {
|
|
|
1813
1912
|
longitudeHint?: string;
|
|
1814
1913
|
/** Hint for GEO latitude input. */
|
|
1815
1914
|
latitudeHint?: string;
|
|
1915
|
+
/** Hint under a write-only secret field in the edit form (AB#5542). */
|
|
1916
|
+
secretWriteOnlyHint?: string;
|
|
1917
|
+
/** Warning when an edited field could not be saved because its value is not fully loaded (secret inside, AB#5542). */
|
|
1918
|
+
recordWithSecretNotSaved?: string;
|
|
1816
1919
|
/**
|
|
1817
1920
|
* Drag-and-drop messages for the binary attribute drop zone
|
|
1818
1921
|
* (forwarded to <kendo-fileselect-messages>).
|
|
@@ -1855,8 +1958,11 @@ interface RuntimeBrowserMessages {
|
|
|
1855
1958
|
errorMessage?: string;
|
|
1856
1959
|
};
|
|
1857
1960
|
title: string;
|
|
1961
|
+
/** @deprecated No longer rendered since the page uses `mm-page` (AB#5526). */
|
|
1858
1962
|
badgeLabel: string;
|
|
1963
|
+
/** @deprecated No longer rendered since the page uses `mm-page` (AB#5526). */
|
|
1859
1964
|
titlePrefix: string;
|
|
1965
|
+
/** @deprecated No longer rendered — the LCARS "READY" footer was removed (AB#5526). */
|
|
1860
1966
|
ready: string;
|
|
1861
1967
|
selectItem: string;
|
|
1862
1968
|
noPropertiesAvailable: string;
|
|
@@ -1901,6 +2007,12 @@ interface RuntimeBrowserMessages {
|
|
|
1901
2007
|
create: string;
|
|
1902
2008
|
edit: string;
|
|
1903
2009
|
delete: string;
|
|
2010
|
+
/** Danger confirmation of the toolbar Delete (AB#5579); `{name}` = entity name. Missing = English default. */
|
|
2011
|
+
confirmDeleteEntityTitle?: string;
|
|
2012
|
+
/** What the toolbar Delete loses. */
|
|
2013
|
+
confirmDeleteEntityConsequence?: string;
|
|
2014
|
+
/** Confirming button of the toolbar Delete (verb + object). */
|
|
2015
|
+
confirmDeleteEntityConfirmText?: string;
|
|
1904
2016
|
createEntity: string;
|
|
1905
2017
|
updateEntity: string;
|
|
1906
2018
|
name: string;
|
|
@@ -1952,6 +2064,8 @@ interface RuntimeBrowserMessages {
|
|
|
1952
2064
|
treeMoveOnRootUnsupported?: string;
|
|
1953
2065
|
/** Card header prefix for each mapping card: "MAPPING N". Default: "MAPPING" */
|
|
1954
2066
|
mappingHeader?: string;
|
|
2067
|
+
/** Tooltip / accessible name of a mapping card's remove button (AB#5579). */
|
|
2068
|
+
mappingRemove?: string;
|
|
1955
2069
|
/** Label for the source data point row. Default: "Source Data Point" */
|
|
1956
2070
|
mappingSourceDataPoint?: string;
|
|
1957
2071
|
/** Label for the "Add Mapping" toolbar button. Default: "+ Add Mapping" */
|
|
@@ -2422,6 +2536,7 @@ declare class RuntimeBrowserDetailsComponent implements OnChanges, AfterViewInit
|
|
|
2422
2536
|
private readonly createEntitiesGQL;
|
|
2423
2537
|
private readonly updateEntitiesGQL;
|
|
2424
2538
|
private readonly deleteEntitiesGQL;
|
|
2539
|
+
private readonly confirmation;
|
|
2425
2540
|
private readonly entitySelectorDialog;
|
|
2426
2541
|
private readonly attributeSelectorDialog;
|
|
2427
2542
|
dataMappings: DataPointMappingItem[];
|
|
@@ -2556,6 +2671,7 @@ declare class RuntimeBrowserComponent implements AfterViewInit {
|
|
|
2556
2671
|
protected readonly dataSource: RuntimeBrowserDataSource;
|
|
2557
2672
|
private readonly getRuntimeEntityByIdGQL;
|
|
2558
2673
|
private readonly inputService;
|
|
2674
|
+
private readonly confirmation;
|
|
2559
2675
|
private readonly router;
|
|
2560
2676
|
private readonly route;
|
|
2561
2677
|
private readonly stateService;
|
|
@@ -2827,6 +2943,82 @@ declare class RuntimeBrowserStateService {
|
|
|
2827
2943
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<RuntimeBrowserStateService>;
|
|
2828
2944
|
}
|
|
2829
2945
|
|
|
2946
|
+
/**
|
|
2947
|
+
* Attributes of a `System.Communication/DataPointMapping` entity that the runtime browser reads
|
|
2948
|
+
* (camelCase, as the `attributeNames` filter expects).
|
|
2949
|
+
*/
|
|
2950
|
+
declare const DATA_POINT_MAPPING_ATTRIBUTE_NAMES: readonly string[];
|
|
2951
|
+
/** Result of {@link SecretSafeAttributeNamesService.analyse}. */
|
|
2952
|
+
interface SecretSafeAttributeAnalysis {
|
|
2953
|
+
/** camelCase names to pass as `attributeNames` (attributes + record sub-attributes, no secrets). */
|
|
2954
|
+
readonly attributeNames: string[];
|
|
2955
|
+
/** camelCase names of the secret candidates found (top level and inside records). */
|
|
2956
|
+
readonly secretNames: string[];
|
|
2957
|
+
/**
|
|
2958
|
+
* camelCase names of SECRET-typed attributes (AB#5528) that are safe to READ: the server returns
|
|
2959
|
+
* `value: null` plus `secretIsSet` for them (records: the marker `{ isSet }`). Callers that show a
|
|
2960
|
+
* set / not-set badge append them to `attributeNames` and select `secretIsSet`. A name that is
|
|
2961
|
+
* also a non-SECRET (heuristic) secret somewhere is never listed.
|
|
2962
|
+
*/
|
|
2963
|
+
readonly secretStateNames: string[];
|
|
2964
|
+
/**
|
|
2965
|
+
* Top-level attributes (camelCase) that must NOT be written back by an editor because their
|
|
2966
|
+
* stored value is not (completely) loaded: records whose type contains a secret or a
|
|
2967
|
+
* sub-attribute excluded from `attributeNames`, a secret record attribute, and non-secret
|
|
2968
|
+
* attributes excluded by a name collision with a secret elsewhere. Top-level secret scalars are
|
|
2969
|
+
* not listed — they are write-only (an empty value is omitted, i.e. kept).
|
|
2970
|
+
*/
|
|
2971
|
+
readonly blockedAttributes: string[];
|
|
2972
|
+
}
|
|
2973
|
+
/**
|
|
2974
|
+
* Builds SECRET-safe `attributeNames` lists for the generic runtime documents (AB#5542).
|
|
2975
|
+
*
|
|
2976
|
+
* The generic `attributes` field returns every attribute — credentials included — unless it is
|
|
2977
|
+
* restricted. Screens that show "all attributes" of an arbitrary CK type (property grid, entity
|
|
2978
|
+
* detail, edit form, meshboard widgets) use {@link forCkType}: the CK type's attributes plus the
|
|
2979
|
+
* sub-attributes of its records (the server applies the same filter inside records), minus the
|
|
2980
|
+
* TYPE-AWARE secret candidates (`isSecretAttributeCandidate`: explicit `secret` metadata, or a
|
|
2981
|
+
* textual attribute with a credential-like name). Non-secret attributes are never dropped by name
|
|
2982
|
+
* (`isSecret: BOOLEAN`, a `credentials` RECORD stay in the list). Because one flat list filters
|
|
2983
|
+
* all nesting levels, a name that is a secret anywhere is excluded everywhere; editors must not
|
|
2984
|
+
* write back what was therefore not loaded ({@link SecretSafeAttributeAnalysis.blockedAttributes}).
|
|
2985
|
+
*
|
|
2986
|
+
* All reachable record definitions are loaded first and the "contains a secret / excluded name"
|
|
2987
|
+
* facts are computed over the whole record graph, so recursive record types are handled without
|
|
2988
|
+
* caching a premature "no secret" result for a record reached through a cycle.
|
|
2989
|
+
*
|
|
2990
|
+
* Failures of the type lookup yield an empty list (no attributes) — fail closed. Lookups go
|
|
2991
|
+
* through Apollo's cache, so repeated calls are cheap.
|
|
2992
|
+
*/
|
|
2993
|
+
declare class SecretSafeAttributeNamesService {
|
|
2994
|
+
private readonly resolver;
|
|
2995
|
+
private readonly typeAttributesGQL;
|
|
2996
|
+
/**
|
|
2997
|
+
* camelCase names of all non-secret attributes (incl. record sub-attributes) of a runtime type.
|
|
2998
|
+
* @param rtCkTypeId the type in RtCkTypeId format (`Basic/TreeNode`, as in `RtEntity.ckTypeId`).
|
|
2999
|
+
* @param options.includeSecretState also list the SECRET-typed attributes (safe to read, see
|
|
3000
|
+
* {@link SecretSafeAttributeAnalysis.secretStateNames}) — the document must select `secretIsSet`.
|
|
3001
|
+
*/
|
|
3002
|
+
forCkType(rtCkTypeId: string | null | undefined, options?: {
|
|
3003
|
+
includeSecretState?: boolean;
|
|
3004
|
+
}): Promise<string[]>;
|
|
3005
|
+
/**
|
|
3006
|
+
* Type-aware restriction of a requested name list (e.g. widget-configured fields): the requested
|
|
3007
|
+
* names (camelCased) that are non-secret attributes of the type. Names that are unknown to the
|
|
3008
|
+
* type or secret are dropped; a failed CK lookup yields `[]` (fail closed).
|
|
3009
|
+
*/
|
|
3010
|
+
restrict(rtCkTypeId: string | null | undefined, requested: readonly (string | null | undefined)[]): Promise<string[]>;
|
|
3011
|
+
/** Full analysis: safe names, secret names and the attributes an editor must not write back. */
|
|
3012
|
+
analyse(rtCkTypeId: string | null | undefined): Promise<SecretSafeAttributeAnalysis>;
|
|
3013
|
+
/** Loads every record definition reachable from the type's attributes (each once). */
|
|
3014
|
+
private loadRecordGraph;
|
|
3015
|
+
private loadType;
|
|
3016
|
+
/** Record sub-attributes by CkRecordId full name (cached by Apollo, errors yield []). */
|
|
3017
|
+
private loadRecord;
|
|
3018
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SecretSafeAttributeNamesService, never>;
|
|
3019
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SecretSafeAttributeNamesService>;
|
|
3020
|
+
}
|
|
3021
|
+
|
|
2830
3022
|
/** The per-tenant mapping coverage configuration as loaded for editing. */
|
|
2831
3023
|
interface MappingCoverageConfig {
|
|
2832
3024
|
/** rtId of the singleton, or null when it does not exist yet. */
|
|
@@ -2936,6 +3128,7 @@ declare class DataMappingOverviewComponent implements OnInit {
|
|
|
2936
3128
|
private readonly getEntityByIdGQL;
|
|
2937
3129
|
private readonly updateEntitiesGQL;
|
|
2938
3130
|
private readonly deleteEntitiesGQL;
|
|
3131
|
+
private readonly confirmation;
|
|
2939
3132
|
navigateToEntity: EventEmitter<{
|
|
2940
3133
|
rtId: string;
|
|
2941
3134
|
ckTypeId: string;
|
|
@@ -4158,5 +4351,5 @@ declare class ThemeModeToggleComponent {
|
|
|
4158
4351
|
*/
|
|
4159
4352
|
declare function provideOctoUi(): EnvironmentProviders;
|
|
4160
4353
|
|
|
4161
|
-
export { AssociationValidationService, AttributeSelectorDialogComponent, AttributeSelectorDialogService, AttributeSortSelectorDialogComponent, AttributeSortSelectorDialogService, AttributeValueTypeDto, BulkMappingDialogComponent, BulkMappingDialogService, CkTypeSelectorDialogComponent, CkTypeSelectorDialogService, CkTypeSelectorInputComponent, DEFAULT_CK_TYPE_SELECTOR_DIALOG_MESSAGES, DEFAULT_CK_TYPE_SELECTOR_INPUT_MESSAGES, DEFAULT_DATA_POINT, DEFAULT_MAPPING_COVERAGE_TREE_CONFIG, DEFAULT_PROPERTY_GRID_MESSAGES, DEFAULT_RUNTIME_BROWSER_MESSAGES, DataMappingOverviewComponent, DataPointPickerComponent, DataPointResolverService, DefaultPropertyCategory, EntityDetailComponent, EntityIdInfoComponent, EntitySelectorDialogComponent, EntitySelectorDialogService, FieldFilterEditorComponent, MAPPING_COVERAGE_CONFIG_CONSTANTS, MappingCoverageConfigService, MappingCoverageTreeComponent, MappingCoverageTreeDataSource, MappingEditDialogComponent, MappingEditDialogService, OctoGraphQlDataSource, OctoGraphQlHierarchyDataSource, OctoLoaderComponent, PropertyConverterService, PropertyDisplayMode, PropertyGridComponent, PropertyValueDisplayComponent, RUNTIME_BROWSER_MESSAGES, RecordDetailDialogComponent, RtEntityIdHelper, RuntimeBrowserComponent, RuntimeBrowserOutletComponent, RuntimeBrowserPageComponent, RuntimeBrowserStateService, RuntimeEntityVariableDialogComponent, RuntimeEntityVariableDialogService, TREE_NAVIGATION_CONFIG_CONSTANTS, TenantSwitcherComponent, ThemeModeService, ThemeModeToggleComponent, TreeNavigationConfigService, account_tree, add, analytics, app_registration, article, botService, category, chat, checklist, code, coerceDataPointValue, component_exchange, computeExpressionPreview, computer, createRuntimeBrowserRoutes, customer, dashboard, event_list, extractDataPointNames, extractDataPoints, graphic_eq, group, identityService, insert_link, manage_accounts, more_time, notifications, page_info, pages, person_search, playlist_add_check, pool, power, provideOctoUi, publicIcon, query_builder, schedule_send, settings, sort, storage, swagger, swagger_asset, swagger_bot, swagger_communication, swagger_identity, team_dashboard, tenancy, text_snippet, travel_explore, user_diagnostics, webhook, work };
|
|
4162
|
-
export type { AttributeItemLike, AttributeSelectorDialogData, AttributeSelectorDialogResult, AttributeSelectorResult, AttributeSortItem, AttributeSortSelectorDialogData, AttributeSortSelectorDialogResult, AttributeSortSelectorResult, BinaryDownloadEvent, BrowserItem, BrowserState, BulkMappingDialogData, BulkMappingDialogResult, BulkMappingValue, CkAssociationRole, CkTypeSelectorDialogData, CkTypeSelectorDialogMessages, CkTypeSelectorDialogResult, CkTypeSelectorInputMessages, CkTypeSelectorResult, CoverageEntityRef, CoverageMappingItem, CoverageNodePayload, CoverageTreeIcons, CoverageTreeItem, DataPointInfo, DataPointMappingItem, DataPointMappingOverviewItem, EntitySelectorDialogData, EntitySelectorDialogResult, EntitySelectorResult, ExpressionPreview, ExpressionValidationResult, ExpressionValidatorFn, FieldFilterItem, FilterVariable, MappingCoverageConfig, MappingCoverageTreeConfig, MappingEditDialogData, MappingEditDialogResult, MappingEditValue, MappingExpressionEvaluatorFn, MappingExpressionPreviewResult, MappingOverviewSummary, MoveValidationResult, PerspectiveDefinition, PerspectiveDirection, PerspectiveRootMode, PropertyChangeEvent, PropertyGridConfig, PropertyGridItem, PropertyGridMessages, ResolvedThemeMode, RtEntityId, RuntimeBrowserMessages, RuntimeBrowserRouteOptions, RuntimeEntityVariableDialogData, RuntimeEntityVariableDialogResult, RuntimeEntityVariableMapping, RuntimeEntityVariableResult, SortOption, ThemeModePreference, TreeNavigationConfig, TreeNavigationRoleConfig, TreeNavigationRoleOverride, ValidationMessage };
|
|
4354
|
+
export { AssociationValidationService, AttributeSelectorDialogComponent, AttributeSelectorDialogService, AttributeSortSelectorDialogComponent, AttributeSortSelectorDialogService, AttributeValueTypeDto, BulkMappingDialogComponent, BulkMappingDialogService, CkTypeSelectorDialogComponent, CkTypeSelectorDialogService, CkTypeSelectorInputComponent, DATA_POINT_MAPPING_ATTRIBUTE_NAMES, DEFAULT_CK_TYPE_SELECTOR_DIALOG_MESSAGES, DEFAULT_CK_TYPE_SELECTOR_INPUT_MESSAGES, DEFAULT_DATA_POINT, DEFAULT_MAPPING_COVERAGE_TREE_CONFIG, DEFAULT_PROPERTY_GRID_MESSAGES, DEFAULT_RUNTIME_BROWSER_MESSAGES, DataMappingOverviewComponent, DataPointPickerComponent, DataPointResolverService, DefaultPropertyCategory, EntityDetailComponent, EntityIdInfoComponent, EntitySelectorDialogComponent, EntitySelectorDialogService, FieldFilterEditorComponent, MAPPING_COVERAGE_CONFIG_CONSTANTS, MM_PAGE, MappingCoverageConfigService, MappingCoverageTreeComponent, MappingCoverageTreeDataSource, MappingEditDialogComponent, MappingEditDialogService, OctoGraphQlDataSource, OctoGraphQlHierarchyDataSource, OctoLoaderComponent, PageActionsDirective, PageComponent, PageSubtitleDirective, PageTitleDirective, PropertyConverterService, PropertyDisplayMode, PropertyGridComponent, PropertyValueDisplayComponent, RUNTIME_BROWSER_MESSAGES, RecordDetailDialogComponent, RtEntityIdHelper, RuntimeBrowserComponent, RuntimeBrowserOutletComponent, RuntimeBrowserPageComponent, RuntimeBrowserStateService, RuntimeEntityVariableDialogComponent, RuntimeEntityVariableDialogService, SecretSafeAttributeNamesService, TREE_NAVIGATION_CONFIG_CONSTANTS, TenantSwitcherComponent, ThemeModeService, ThemeModeToggleComponent, TreeNavigationConfigService, account_tree, add, analytics, app_registration, article, botService, category, chat, checklist, code, coerceDataPointValue, component_exchange, computeExpressionPreview, computer, createRuntimeBrowserRoutes, customer, dashboard, event_list, extractDataPointNames, extractDataPoints, graphic_eq, group, identityService, insert_link, isSecretMarker, manage_accounts, more_time, notifications, page_info, pages, person_search, playlist_add_check, pool, power, provideOctoUi, publicIcon, query_builder, schedule_send, settings, sort, storage, swagger, swagger_asset, swagger_bot, swagger_communication, swagger_identity, team_dashboard, tenancy, text_snippet, travel_explore, user_diagnostics, webhook, work };
|
|
4355
|
+
export type { AttributeItemLike, AttributeSelectorDialogData, AttributeSelectorDialogResult, AttributeSelectorResult, AttributeSortItem, AttributeSortSelectorDialogData, AttributeSortSelectorDialogResult, AttributeSortSelectorResult, BinaryDownloadEvent, BrowserItem, BrowserState, BulkMappingDialogData, BulkMappingDialogResult, BulkMappingValue, CkAssociationRole, CkTypeSelectorDialogData, CkTypeSelectorDialogMessages, CkTypeSelectorDialogResult, CkTypeSelectorInputMessages, CkTypeSelectorResult, CoverageEntityRef, CoverageMappingItem, CoverageNodePayload, CoverageTreeIcons, CoverageTreeItem, DataPointInfo, DataPointMappingItem, DataPointMappingOverviewItem, EntitySelectorDialogData, EntitySelectorDialogResult, EntitySelectorResult, ExpressionPreview, ExpressionValidationResult, ExpressionValidatorFn, FieldFilterItem, FilterVariable, MappingCoverageConfig, MappingCoverageTreeConfig, MappingEditDialogData, MappingEditDialogResult, MappingEditValue, MappingExpressionEvaluatorFn, MappingExpressionPreviewResult, MappingOverviewSummary, MoveValidationResult, PageHeadingLevel, PerspectiveDefinition, PerspectiveDirection, PerspectiveRootMode, PropertyChangeEvent, PropertyGridConfig, PropertyGridItem, PropertyGridMessages, ResolvedThemeMode, RtEntityId, RuntimeBrowserMessages, RuntimeBrowserRouteOptions, RuntimeEntityVariableDialogData, RuntimeEntityVariableDialogResult, RuntimeEntityVariableMapping, RuntimeEntityVariableResult, SecretSafeAttributeAnalysis, SortOption, ThemeModePreference, TreeNavigationConfig, TreeNavigationRoleConfig, TreeNavigationRoleOverride, ValidationMessage };
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
@use "variables" as *;
|
|
2
|
-
|
|
3
|
-
@mixin lcars-button {
|
|
4
|
-
background: var(--lcars-btn-base);
|
|
5
|
-
// Use theme-aware border + text so the secondary "ghost" style stays
|
|
6
|
-
// legible on light surfaces. Brand-mint at low alpha washes out on white.
|
|
7
|
-
border: 1px solid var(--theme-border-strong, var(--octo-mint-30));
|
|
8
|
-
color: var(--theme-text-accent, var(--octo-mint));
|
|
9
|
-
font-family: var(--lcars-font-primary);
|
|
10
|
-
font-weight: 600;
|
|
11
|
-
font-size: 0.8rem;
|
|
12
|
-
letter-spacing: 0.5px;
|
|
13
|
-
text-transform: uppercase;
|
|
14
|
-
border-radius: 4px;
|
|
15
|
-
transition: all 0.2s ease;
|
|
16
|
-
|
|
17
|
-
&:hover:not(:disabled) {
|
|
18
|
-
background: var(--lcars-btn-base-hover);
|
|
19
|
-
border-color: var(--theme-text-accent, var(--octo-mint-50));
|
|
20
|
-
box-shadow: 0 0 10px var(--octo-mint-30);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
&:active:not(:disabled) {
|
|
24
|
-
background: linear-gradient(
|
|
25
|
-
180deg,
|
|
26
|
-
var(--octo-mint-30),
|
|
27
|
-
var(--octo-mint-20)
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
&:disabled {
|
|
32
|
-
opacity: 0.5;
|
|
33
|
-
cursor: not-allowed;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
&.k-button-solid-primary,
|
|
37
|
-
&.k-button-primary,
|
|
38
|
-
&[themecolor="primary"] {
|
|
39
|
-
background: linear-gradient(
|
|
40
|
-
180deg,
|
|
41
|
-
var(--octo-mint-30),
|
|
42
|
-
var(--octo-mint-15)
|
|
43
|
-
);
|
|
44
|
-
border-color: var(--octo-mint-50);
|
|
45
|
-
color: var(--octo-text-color);
|
|
46
|
-
|
|
47
|
-
&:hover:not(:disabled) {
|
|
48
|
-
background: linear-gradient(
|
|
49
|
-
180deg,
|
|
50
|
-
var(--octo-mint-45),
|
|
51
|
-
var(--octo-mint-25)
|
|
52
|
-
);
|
|
53
|
-
border-color: var(--octo-mint);
|
|
54
|
-
box-shadow: 0 0 15px var(--octo-mint-40);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
@use "variables" as *;
|
|
2
|
-
|
|
3
|
-
@mixin lcars-flat-btn {
|
|
4
|
-
background: var(--lcars-btn-base) !important;
|
|
5
|
-
border: 1px solid var(--theme-border-strong, var(--octo-mint-30)) !important;
|
|
6
|
-
color: var(--theme-text-accent, var(--octo-mint)) !important;
|
|
7
|
-
&:hover:not(:disabled) {
|
|
8
|
-
background: var(--lcars-btn-base-hover) !important;
|
|
9
|
-
border-color: var(--theme-text-accent, var(--octo-mint-50)) !important;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
@use "variables" as *;
|
|
2
|
-
|
|
3
|
-
@mixin lcars-input {
|
|
4
|
-
background: var(--deep-sea) !important;
|
|
5
|
-
border: 1px solid var(--octo-mint-30) !important;
|
|
6
|
-
color: var(--octo-text-color) !important;
|
|
7
|
-
border-radius: 4px !important;
|
|
8
|
-
&:focus {
|
|
9
|
-
border-color: var(--octo-mint) !important;
|
|
10
|
-
box-shadow: var(--lcars-input-focus) !important;
|
|
11
|
-
outline: none !important;
|
|
12
|
-
}
|
|
13
|
-
}
|