@praxisui/metadata-editor 8.0.0-beta.27 → 8.0.0-beta.29
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.
|
@@ -530,6 +530,7 @@ class DynamicEditorRendererComponent {
|
|
|
530
530
|
const order = [
|
|
531
531
|
'geral',
|
|
532
532
|
'apresent',
|
|
533
|
+
'display',
|
|
533
534
|
'valida',
|
|
534
535
|
'formato',
|
|
535
536
|
'comport',
|
|
@@ -594,7 +595,7 @@ class DynamicEditorRendererComponent {
|
|
|
594
595
|
.replace(/[ñ]/g, 'n');
|
|
595
596
|
if (normalized.includes('geral'))
|
|
596
597
|
return 'widgets';
|
|
597
|
-
if (normalized.includes('apresent'))
|
|
598
|
+
if (normalized.includes('apresent') || normalized.includes('display'))
|
|
598
599
|
return 'slideshow';
|
|
599
600
|
if (normalized.includes('dados') || normalized.includes('opcoes'))
|
|
600
601
|
return 'list_alt';
|
|
@@ -753,7 +754,7 @@ class DynamicEditorRendererComponent {
|
|
|
753
754
|
</mat-expansion-panel>
|
|
754
755
|
</mat-accordion>
|
|
755
756
|
</div>
|
|
756
|
-
`, isInline: true, styles: [":host{display:block}.editor-surface{padding:8px 0 2px;border-radius:12px;background:transparent}.section-accordion{display:block}.section-card{margin:6px 0 8px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);overflow:hidden}.section-card.mat-expanded{border-color:var(--md-sys-color-primary);box-shadow:0 2px 10px #0000000d}.section-card .mat-expansion-panel-body{background:var(--md-sys-color-surface-container-low)}.section-header{background:var(--md-sys-color-surface-container-low);border-bottom:1px solid var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));padding:2px 8px;min-height:32px;display:flex;align-items:center;color:var(--md-sys-color-on-surface)}.section-header .mat-expansion-panel-header-title,.section-header .mat-expansion-panel-header-description{display:flex;align-items:center;color:var(--md-sys-color-on-surface)}.section-title{display:inline-flex;align-items:center;gap:6px;font-weight:600;letter-spacing:.2px;color:var(--md-sys-color-on-surface);font-size:.9rem;line-height:1.2}.section-icon{color:var(--md-sys-color-primary, var(--md-sys-color-primary, #3f51b5));opacity:.9}.editor-row{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:8px}.editor-row>praxis-field-shell{flex:1 1 100%;min-width:280px}.editor-row praxis-field-shell .mat-mdc-form-field{width:100%;margin-bottom:8px}.editor-row.row-inline>praxis-field-shell{flex:0 0 auto}.editor-row.row-2>praxis-field-shell{flex:1 1 calc(50% - 12px);min-width:260px}.editor-row.row-3>praxis-field-shell{flex:1 1 calc(33.333% - 12px);min-width:220px}.editor-row>praxis-field-shell[data-field-name=controlType],.editor-row>praxis-field-shell[data-field-name=label],.editor-row>praxis-field-shell[data-field-name=placeholder]{flex:1 1 calc(50% - 12px);min-width:300px}praxis-field-shell[data-field-name=label] .mdc-floating-label,praxis-field-shell[data-field-name=placeholder] .mdc-floating-label{font-weight:600}.editor-row>praxis-field-shell[data-field-name=prefix],.editor-row>praxis-field-shell[data-field-name=suffix]{flex:0 0 200px;min-width:160px}.editor-row>praxis-field-shell[data-field-name=prefixIcon],.editor-row>praxis-field-shell[data-field-name=suffixIcon],.editor-row>praxis-field-shell[data-field-name=prefixIconColor],.editor-row>praxis-field-shell[data-field-name=suffixIconColor]{flex:1 1 auto;min-width:160px}.editor-item{display:flex;align-items:flex-start;gap:4px}.editor-item>ng-container,.editor-item>praxis-field-shell{flex:1;min-width:0}.actions-container{display:flex;align-items:center;gap:0;margin-top:12px;flex-shrink:0}.decorator-btn{position:static;color:var(--md-sys-color-primary, #3f51b5);opacity:.6;transform:scale(.8);width:32px;height:32px;line-height:32px;padding:0}.decorator-btn:hover{opacity:1}.icon-picker-btn,.hint-btn,.hint-btn.has-icon-picker{right:auto}.editor-row .mat-mdc-form-field-subscript-wrapper mat-hint{display:none!important}.editor-row .mat-mdc-form-field-subscript-wrapper mat-error{display:block!important}praxis-field-shell[data-field-name=showCharCount] .mdc-switch{transform:scale(1.05)}praxis-field-shell[data-field-name=showCharCount] .mat-mdc-slide-toggle{font-weight:600}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field-hint{display:flex;align-items:center;gap:8px;background:var(--md-sys-color-tertiary-container);border:1px solid var(--md-sys-color-tertiary);color:var(--md-sys-color-on-tertiary-container);padding:8px 10px;border-radius:6px;line-height:1.3;white-space:normal}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field-hint:before{content:\"\\26a0\\fe0f\";display:inline-block}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field-subscript-wrapper{margin-top:6px;margin-bottom:10px;min-height:auto}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field{margin-bottom:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: DynamicFieldLoaderDirective, selector: "[dynamicFieldLoader]", inputs: ["fields", "formGroup", "enableExternalControlBinding", "itemTemplate", "debugTrace", "debugTraceLabel", "readonlyMode", "disabledMode", "presentationMode", "visible", "canvasMode"], outputs: ["componentsCreated", "fieldCreated", "fieldDestroyed", "renderError", "canvasMouseEnter", "canvasMouseLeave", "canvasClick"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i5.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { 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: "directive", type: i5.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
757
|
+
`, isInline: true, styles: [":host{display:block}.editor-surface{padding:8px 0 2px;border-radius:12px;background:transparent}.section-accordion{display:block}.section-card{margin:6px 0 8px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);overflow:hidden}.section-card.mat-expanded{border-color:var(--md-sys-color-primary);box-shadow:0 2px 10px #0000000d}.section-card .mat-expansion-panel-body{background:var(--md-sys-color-surface-container-low)}.section-header{background:var(--md-sys-color-surface-container-low);border-bottom:1px solid var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));padding:2px 8px;min-height:32px;display:flex;align-items:center;color:var(--md-sys-color-on-surface)}.section-header .mat-expansion-panel-header-title,.section-header .mat-expansion-panel-header-description{display:flex;align-items:center;color:var(--md-sys-color-on-surface)}.section-title{display:inline-flex;align-items:center;gap:6px;font-weight:600;letter-spacing:.2px;color:var(--md-sys-color-on-surface);font-size:.9rem;line-height:1.2}.section-icon{color:var(--md-sys-color-primary, var(--md-sys-color-primary, #3f51b5));opacity:.9}.editor-row{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:8px}.editor-row>praxis-field-shell{flex:1 1 100%;min-width:280px}.editor-row praxis-field-shell .mat-mdc-form-field{width:100%;margin-bottom:8px}.editor-row.row-inline>praxis-field-shell{flex:0 0 auto}.editor-row.row-2>praxis-field-shell{flex:1 1 calc(50% - 12px);min-width:260px}.editor-row.row-3>praxis-field-shell{flex:1 1 calc(33.333% - 12px);min-width:220px}.editor-row>praxis-field-shell[data-field-name=controlType],.editor-row>praxis-field-shell[data-field-name=label],.editor-row>praxis-field-shell[data-field-name=placeholder]{flex:1 1 calc(50% - 12px);min-width:300px}praxis-field-shell[data-field-name=label] .mdc-floating-label,praxis-field-shell[data-field-name=placeholder] .mdc-floating-label{font-weight:600}.editor-row>praxis-field-shell[data-field-name=prefix],.editor-row>praxis-field-shell[data-field-name=suffix]{flex:0 0 200px;min-width:160px}.editor-row>praxis-field-shell[data-field-name=prefixIcon],.editor-row>praxis-field-shell[data-field-name=suffixIcon],.editor-row>praxis-field-shell[data-field-name=prefixIconColor],.editor-row>praxis-field-shell[data-field-name=suffixIconColor]{flex:1 1 auto;min-width:160px}.editor-item{display:flex;align-items:flex-start;gap:4px}.editor-item>ng-container,.editor-item>praxis-field-shell{flex:1;min-width:0}.actions-container{display:flex;align-items:center;gap:0;margin-top:12px;flex-shrink:0}.decorator-btn{position:static;color:var(--md-sys-color-primary, #3f51b5);opacity:.6;transform:scale(.8);width:32px;height:32px;line-height:32px;padding:0}.decorator-btn:hover{opacity:1}.icon-picker-btn,.hint-btn,.hint-btn.has-icon-picker{right:auto}.editor-row .mat-mdc-form-field-subscript-wrapper mat-hint{display:none!important}.editor-row .mat-mdc-form-field-subscript-wrapper mat-error{display:block!important}praxis-field-shell[data-field-name=showCharCount] .mdc-switch{transform:scale(1.05)}praxis-field-shell[data-field-name=showCharCount] .mat-mdc-slide-toggle{font-weight:600}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field-hint{display:flex;align-items:center;gap:8px;background:var(--md-sys-color-tertiary-container);border:1px solid var(--md-sys-color-tertiary);color:var(--md-sys-color-on-tertiary-container);padding:8px 10px;border-radius:6px;line-height:1.3;white-space:normal}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field-hint:before{content:\"\\26a0\\fe0f\";display:inline-block}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field-subscript-wrapper{margin-top:6px;margin-bottom:10px;min-height:auto}praxis-field-shell[data-field-name=controlType] .mat-mdc-form-field{margin-bottom:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: DynamicFieldLoaderDirective, selector: "[dynamicFieldLoader]", inputs: ["fields", "formGroup", "enableExternalControlBinding", "itemTemplate", "debugTrace", "debugTraceLabel", "readonlyMode", "disabledMode", "presentationMode", "visible", "canvasMode"], outputs: ["componentsCreated", "fieldCreated", "fieldDestroyed", "renderError", "canvasMouseEnter", "canvasMouseLeave", "canvasClick", "canvasFocus"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i5.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { 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: "directive", type: i5.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
757
758
|
}
|
|
758
759
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicEditorRendererComponent, decorators: [{
|
|
759
760
|
type: Component,
|
|
@@ -2235,6 +2236,172 @@ const entityLookupProperties = [
|
|
|
2235
2236
|
group: 'Exibicao de entidade',
|
|
2236
2237
|
hint: 'Campo opcional com mensagem de bloqueio quando selectable=false.',
|
|
2237
2238
|
},
|
|
2239
|
+
{
|
|
2240
|
+
name: 'optionSource.display.preset',
|
|
2241
|
+
label: 'Preset canonico',
|
|
2242
|
+
editorType: 'select',
|
|
2243
|
+
group: 'Display canonico',
|
|
2244
|
+
options: [
|
|
2245
|
+
{ value: 'compact', text: 'compact' },
|
|
2246
|
+
{ value: 'rich', text: 'rich' },
|
|
2247
|
+
{ value: 'directory', text: 'directory' },
|
|
2248
|
+
{ value: 'status', text: 'status' },
|
|
2249
|
+
{ value: 'reference', text: 'reference' },
|
|
2250
|
+
{ value: 'hierarchical', text: 'hierarchical' },
|
|
2251
|
+
],
|
|
2252
|
+
hint: 'Intencao visual da entidade. Use directory para pessoas/equipes, reference para codigo + descricao e status quando o estado operacional for central.',
|
|
2253
|
+
},
|
|
2254
|
+
{
|
|
2255
|
+
name: 'optionSource.display.usage',
|
|
2256
|
+
label: 'Uso preferencial',
|
|
2257
|
+
editorType: 'select',
|
|
2258
|
+
group: 'Display canonico',
|
|
2259
|
+
options: [
|
|
2260
|
+
{ value: 'form', text: 'form' },
|
|
2261
|
+
{ value: 'filter', text: 'filter' },
|
|
2262
|
+
{ value: 'table-cell', text: 'table-cell' },
|
|
2263
|
+
{ value: 'dashboard', text: 'dashboard' },
|
|
2264
|
+
{ value: 'wizard', text: 'wizard' },
|
|
2265
|
+
{ value: 'review', text: 'review' },
|
|
2266
|
+
],
|
|
2267
|
+
hint: 'Contexto principal de uso desta option-source sem amarrar a regra a um componente especifico.',
|
|
2268
|
+
},
|
|
2269
|
+
{
|
|
2270
|
+
name: 'optionSource.display.density',
|
|
2271
|
+
label: 'Densidade',
|
|
2272
|
+
editorType: 'select',
|
|
2273
|
+
group: 'Display canonico',
|
|
2274
|
+
options: [
|
|
2275
|
+
{ value: 'compact', text: 'compact' },
|
|
2276
|
+
{ value: 'comfortable', text: 'comfortable' },
|
|
2277
|
+
{ value: 'rich', text: 'rich' },
|
|
2278
|
+
],
|
|
2279
|
+
hint: 'Densidade preferencial para runtimes. Filtros costumam usar compact; formularios, comfortable; revisoes, rich.',
|
|
2280
|
+
},
|
|
2281
|
+
{
|
|
2282
|
+
name: 'optionSource.display.selectedLayout',
|
|
2283
|
+
label: 'Layout selecionado canonico',
|
|
2284
|
+
editorType: 'select',
|
|
2285
|
+
group: 'Display canonico',
|
|
2286
|
+
options: [
|
|
2287
|
+
{ value: 'card', text: 'card' },
|
|
2288
|
+
{ value: 'inline', text: 'inline' },
|
|
2289
|
+
{ value: 'compact', text: 'compact' },
|
|
2290
|
+
{ value: 'token', text: 'token' },
|
|
2291
|
+
],
|
|
2292
|
+
hint: 'Layout preferencial do valor selecionado publicado pela option-source.',
|
|
2293
|
+
},
|
|
2294
|
+
{
|
|
2295
|
+
name: 'optionSource.display.resultLayout',
|
|
2296
|
+
label: 'Layout de resultados canonico',
|
|
2297
|
+
editorType: 'select',
|
|
2298
|
+
group: 'Display canonico',
|
|
2299
|
+
options: [
|
|
2300
|
+
{ value: 'list', text: 'list' },
|
|
2301
|
+
{ value: 'denseList', text: 'denseList' },
|
|
2302
|
+
{ value: 'table', text: 'table' },
|
|
2303
|
+
{ value: 'card', text: 'card' },
|
|
2304
|
+
],
|
|
2305
|
+
hint: 'Layout preferencial da lista de resultados publicado pela option-source.',
|
|
2306
|
+
},
|
|
2307
|
+
{
|
|
2308
|
+
name: 'optionSource.display.primaryPropertyPath',
|
|
2309
|
+
label: 'Campo primario',
|
|
2310
|
+
editorType: 'text',
|
|
2311
|
+
group: 'Display canonico',
|
|
2312
|
+
hint: 'Campo semantico usado como titulo principal quando diferente de labelPropertyPath.',
|
|
2313
|
+
},
|
|
2314
|
+
{
|
|
2315
|
+
name: 'optionSource.display.fields',
|
|
2316
|
+
label: 'Campos ricos',
|
|
2317
|
+
editorType: 'textarea',
|
|
2318
|
+
group: 'Display canonico',
|
|
2319
|
+
hint: 'JSON array de subinformacoes ricas. Ex.: [{ "key": "role", "propertyPath": "cargo.nome", "label": "Cargo", "icon": "work", "presentation": "text", "tone": "neutral" }, { "key": "department", "propertyPath": "departamento.nome", "label": "Departamento", "icon": "groups", "presentation": "chip", "tone": "info" }].',
|
|
2320
|
+
},
|
|
2321
|
+
{
|
|
2322
|
+
name: 'optionSource.display.secondaryPropertyPaths',
|
|
2323
|
+
label: 'Campos secundarios canonicos',
|
|
2324
|
+
editorType: 'textarea',
|
|
2325
|
+
group: 'Display canonico',
|
|
2326
|
+
hint: 'JSON array ou uma linha por campo usado como subtitulo. Ex.: cargo.nome, departamento.nome.',
|
|
2327
|
+
},
|
|
2328
|
+
{
|
|
2329
|
+
name: 'optionSource.display.badgePropertyPaths',
|
|
2330
|
+
label: 'Campos de badges canonicos',
|
|
2331
|
+
editorType: 'textarea',
|
|
2332
|
+
group: 'Display canonico',
|
|
2333
|
+
hint: 'JSON array ou uma linha por campo materializado como badge/chip.',
|
|
2334
|
+
},
|
|
2335
|
+
{
|
|
2336
|
+
name: 'optionSource.display.avatarPropertyPath',
|
|
2337
|
+
label: 'Campo de avatar',
|
|
2338
|
+
editorType: 'text',
|
|
2339
|
+
group: 'Display canonico',
|
|
2340
|
+
hint: 'Campo usado para avatar/imagem; quando ausente, o runtime pode usar iniciais.',
|
|
2341
|
+
},
|
|
2342
|
+
{
|
|
2343
|
+
name: 'optionSource.display.showAvatar',
|
|
2344
|
+
label: 'Display: avatar',
|
|
2345
|
+
editorType: 'checkbox',
|
|
2346
|
+
group: 'Display canonico',
|
|
2347
|
+
},
|
|
2348
|
+
{
|
|
2349
|
+
name: 'optionSource.display.showCode',
|
|
2350
|
+
label: 'Display: codigo',
|
|
2351
|
+
editorType: 'checkbox',
|
|
2352
|
+
group: 'Display canonico',
|
|
2353
|
+
},
|
|
2354
|
+
{
|
|
2355
|
+
name: 'optionSource.display.showDescription',
|
|
2356
|
+
label: 'Display: descricao',
|
|
2357
|
+
editorType: 'checkbox',
|
|
2358
|
+
group: 'Display canonico',
|
|
2359
|
+
},
|
|
2360
|
+
{
|
|
2361
|
+
name: 'optionSource.display.showStatus',
|
|
2362
|
+
label: 'Display: status',
|
|
2363
|
+
editorType: 'checkbox',
|
|
2364
|
+
group: 'Display canonico',
|
|
2365
|
+
},
|
|
2366
|
+
{
|
|
2367
|
+
name: 'optionSource.display.showBadges',
|
|
2368
|
+
label: 'Display: badges',
|
|
2369
|
+
editorType: 'checkbox',
|
|
2370
|
+
group: 'Display canonico',
|
|
2371
|
+
},
|
|
2372
|
+
{
|
|
2373
|
+
name: 'optionSource.display.showDisabledReason',
|
|
2374
|
+
label: 'Display: motivo bloqueado',
|
|
2375
|
+
editorType: 'checkbox',
|
|
2376
|
+
group: 'Display canonico',
|
|
2377
|
+
},
|
|
2378
|
+
{
|
|
2379
|
+
name: 'optionSource.display.showResultCount',
|
|
2380
|
+
label: 'Display: contador de resultados',
|
|
2381
|
+
editorType: 'checkbox',
|
|
2382
|
+
group: 'Display canonico',
|
|
2383
|
+
},
|
|
2384
|
+
{
|
|
2385
|
+
name: 'optionSource.display.statusToneMap',
|
|
2386
|
+
label: 'Mapa canonico de tons',
|
|
2387
|
+
editorType: 'textarea',
|
|
2388
|
+
group: 'Display canonico',
|
|
2389
|
+
hint: 'JSON object. Ex.: { "ACTIVE": "success", "BLOCKED": "danger" }.',
|
|
2390
|
+
},
|
|
2391
|
+
{
|
|
2392
|
+
name: 'optionSource.display.badgeKeys',
|
|
2393
|
+
label: 'Chaves canonicas de badges',
|
|
2394
|
+
editorType: 'textarea',
|
|
2395
|
+
group: 'Display canonico',
|
|
2396
|
+
hint: 'JSON array ou uma linha por chave complementar de badge.',
|
|
2397
|
+
},
|
|
2398
|
+
{
|
|
2399
|
+
name: 'optionSource.display.maxVisibleBadges',
|
|
2400
|
+
label: 'Maximo canonico de badges',
|
|
2401
|
+
editorType: 'number',
|
|
2402
|
+
group: 'Display canonico',
|
|
2403
|
+
hint: 'Limite preferencial de badges antes de overflow.',
|
|
2404
|
+
},
|
|
2238
2405
|
{
|
|
2239
2406
|
name: 'selectedLayout',
|
|
2240
2407
|
label: 'Layout selecionado',
|
|
@@ -2551,6 +2718,55 @@ const entityLookupProperties = [
|
|
|
2551
2718
|
{ value: 'modal', text: 'Modal' },
|
|
2552
2719
|
],
|
|
2553
2720
|
},
|
|
2721
|
+
{
|
|
2722
|
+
name: 'optionSource.detail.kind',
|
|
2723
|
+
label: 'Tipo de detalhe',
|
|
2724
|
+
editorType: 'select',
|
|
2725
|
+
group: 'Navegacao',
|
|
2726
|
+
options: [
|
|
2727
|
+
{ value: 'surface', text: 'surface' },
|
|
2728
|
+
{ value: 'route', text: 'route' },
|
|
2729
|
+
{ value: 'href', text: 'href' },
|
|
2730
|
+
],
|
|
2731
|
+
hint: 'Use surface como contrato canonico de plataforma; route/href ficam como fallback legado.',
|
|
2732
|
+
},
|
|
2733
|
+
{
|
|
2734
|
+
name: 'optionSource.detail.surfaceId',
|
|
2735
|
+
label: 'Surface de detalhe',
|
|
2736
|
+
editorType: 'text',
|
|
2737
|
+
group: 'Navegacao',
|
|
2738
|
+
hint: 'Id da surface item-level preferida. Ex.: view, detail.',
|
|
2739
|
+
},
|
|
2740
|
+
{
|
|
2741
|
+
name: 'optionSource.detail.presentation',
|
|
2742
|
+
label: 'Apresentacao da surface',
|
|
2743
|
+
editorType: 'select',
|
|
2744
|
+
group: 'Navegacao',
|
|
2745
|
+
options: [
|
|
2746
|
+
{ value: 'drawer', text: 'Drawer' },
|
|
2747
|
+
{ value: 'modal', text: 'Modal' },
|
|
2748
|
+
],
|
|
2749
|
+
hint: 'Como o runtime deve materializar a surface de detalhe.',
|
|
2750
|
+
},
|
|
2751
|
+
{
|
|
2752
|
+
name: 'optionSource.detail.preferredWidget',
|
|
2753
|
+
label: 'Widget preferido',
|
|
2754
|
+
editorType: 'text',
|
|
2755
|
+
group: 'Navegacao',
|
|
2756
|
+
hint: 'Hint semantico para autoria/discovery. Ex.: praxis-dynamic-form.',
|
|
2757
|
+
},
|
|
2758
|
+
{
|
|
2759
|
+
name: 'optionSource.detail.mode',
|
|
2760
|
+
label: 'Modo da surface',
|
|
2761
|
+
editorType: 'select',
|
|
2762
|
+
group: 'Navegacao',
|
|
2763
|
+
options: [
|
|
2764
|
+
{ value: 'view', text: 'view' },
|
|
2765
|
+
{ value: 'edit', text: 'edit' },
|
|
2766
|
+
{ value: 'create', text: 'create' },
|
|
2767
|
+
],
|
|
2768
|
+
hint: 'Modo semantico da surface de detalhe.',
|
|
2769
|
+
},
|
|
2554
2770
|
{
|
|
2555
2771
|
name: 'optionSource.create.hrefTemplate',
|
|
2556
2772
|
label: 'Template create href',
|
|
@@ -7768,6 +7984,14 @@ class FieldMetadataEditorComponent {
|
|
|
7768
7984
|
this.normalizeJsonArrayProperty(filtering, 'sortOptions');
|
|
7769
7985
|
this.normalizeStringListProperty(filtering, 'quickFilterFields');
|
|
7770
7986
|
}
|
|
7987
|
+
const display = optionSource.display;
|
|
7988
|
+
if (display && typeof display === 'object') {
|
|
7989
|
+
this.normalizeJsonArrayProperty(display, 'fields');
|
|
7990
|
+
this.normalizeStringListProperty(display, 'secondaryPropertyPaths');
|
|
7991
|
+
this.normalizeStringListProperty(display, 'badgePropertyPaths');
|
|
7992
|
+
this.normalizeStringListProperty(display, 'badgeKeys');
|
|
7993
|
+
this.normalizeJsonObjectProperty(display, 'statusToneMap');
|
|
7994
|
+
}
|
|
7771
7995
|
}
|
|
7772
7996
|
this.normalizeStringListProperty(patch, 'badgeKeys');
|
|
7773
7997
|
this.normalizeJsonObjectProperty(patch, 'statusToneMap');
|
|
@@ -9188,6 +9412,31 @@ const optionSourceSchema = {
|
|
|
9188
9412
|
labelField: { type: 'string' },
|
|
9189
9413
|
dependsOn: { type: 'string' },
|
|
9190
9414
|
dependencyFilterMap: { type: 'object' },
|
|
9415
|
+
display: {
|
|
9416
|
+
type: 'object',
|
|
9417
|
+
properties: {
|
|
9418
|
+
preset: { enum: ['compact', 'rich', 'directory', 'status', 'reference', 'hierarchical'] },
|
|
9419
|
+
usage: { enum: ['form', 'filter', 'table-cell', 'dashboard', 'wizard', 'review'] },
|
|
9420
|
+
density: { enum: ['compact', 'comfortable', 'rich'] },
|
|
9421
|
+
selectedLayout: { enum: ['card', 'inline', 'compact', 'token'] },
|
|
9422
|
+
resultLayout: { enum: ['list', 'denseList', 'table', 'card'] },
|
|
9423
|
+
primaryPropertyPath: { type: 'string' },
|
|
9424
|
+
fields: { type: 'array' },
|
|
9425
|
+
secondaryPropertyPaths: { type: 'array' },
|
|
9426
|
+
badgePropertyPaths: { type: 'array' },
|
|
9427
|
+
statusToneMap: { type: 'object' },
|
|
9428
|
+
},
|
|
9429
|
+
},
|
|
9430
|
+
detail: {
|
|
9431
|
+
type: 'object',
|
|
9432
|
+
properties: {
|
|
9433
|
+
kind: { enum: ['surface', 'route', 'href'] },
|
|
9434
|
+
surfaceId: { type: 'string' },
|
|
9435
|
+
presentation: { enum: ['drawer', 'modal'] },
|
|
9436
|
+
preferredWidget: { type: 'string' },
|
|
9437
|
+
mode: { enum: ['view', 'edit', 'create'] },
|
|
9438
|
+
},
|
|
9439
|
+
},
|
|
9191
9440
|
options: { type: 'array' },
|
|
9192
9441
|
},
|
|
9193
9442
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/metadata-editor",
|
|
3
|
-
"version": "8.0.0-beta.
|
|
3
|
+
"version": "8.0.0-beta.29",
|
|
4
4
|
"description": "Metadata editor for Praxis UI fields and components with runtime integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^20.0.0",
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
"@angular/cdk": "^20.0.0",
|
|
9
9
|
"@angular/forms": "^20.0.0",
|
|
10
10
|
"@angular/material": "^20.0.0",
|
|
11
|
-
"@praxisui/ai": "^8.0.0-beta.
|
|
12
|
-
"@praxisui/core": "^8.0.0-beta.
|
|
13
|
-
"@praxisui/dynamic-fields": "^8.0.0-beta.
|
|
14
|
-
"@praxisui/settings-panel": "^8.0.0-beta.
|
|
11
|
+
"@praxisui/ai": "^8.0.0-beta.29",
|
|
12
|
+
"@praxisui/core": "^8.0.0-beta.29",
|
|
13
|
+
"@praxisui/dynamic-fields": "^8.0.0-beta.29",
|
|
14
|
+
"@praxisui/settings-panel": "^8.0.0-beta.29",
|
|
15
15
|
"rxjs": "~7.8.0"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|