mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-4341] Customise the property title into the InfoDrawer from configuration (#5556)
* [ADF-4341] Customise the property title into the InfoDrawer from configuration * * docs added * * removed unnecessary logic and docs updated
This commit is contained in:
@@ -15,10 +15,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Property } from './property.interface';
|
||||
|
||||
export interface LayoutOrientedConfigItem {
|
||||
aspect?: string;
|
||||
type?: string;
|
||||
properties: string | string[];
|
||||
properties: string | string[] | Property[];
|
||||
includeAll?: boolean;
|
||||
exclude?: string | string[];
|
||||
editable?: boolean;
|
||||
|
@@ -16,7 +16,12 @@
|
||||
*/
|
||||
|
||||
import { LayoutOrientedConfigService } from './layout-oriented-config.service';
|
||||
import { LayoutOrientedConfig, Property, OrganisedPropertyGroup, PropertyGroupContainer } from '../../interfaces/content-metadata.interfaces';
|
||||
import {
|
||||
LayoutOrientedConfig,
|
||||
Property,
|
||||
OrganisedPropertyGroup,
|
||||
PropertyGroupContainer
|
||||
} from '../../interfaces/content-metadata.interfaces';
|
||||
|
||||
describe('LayoutOrientedConfigService', () => {
|
||||
|
||||
@@ -269,7 +274,32 @@ describe('LayoutOrientedConfigService', () => {
|
||||
expectations: [
|
||||
{ title: 'First group', properties: [property3, property4, property2] }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Custom Title',
|
||||
config: [
|
||||
{
|
||||
title: 'First group',
|
||||
items: [
|
||||
{ aspect: 'zestiria', properties: 'property3' },
|
||||
{ type: 'berseria', properties: ['property2', <any> { title: 'Custom title', name: 'property1' }] },
|
||||
{ type: 'otherTales', properties: [<any> { title: 'Custom title', name: 'property5' }] }
|
||||
]
|
||||
}
|
||||
],
|
||||
expectations: [
|
||||
{
|
||||
title: 'First group',
|
||||
properties: [
|
||||
property3,
|
||||
property2,
|
||||
<Property> { name: 'property1', title: 'Custom title', editable: true },
|
||||
<Property> { name: 'property5', title: 'Custom title', editable: true }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
testCases.forEach((testCase) => {
|
||||
@@ -287,7 +317,7 @@ describe('LayoutOrientedConfigService', () => {
|
||||
);
|
||||
|
||||
expectation.properties.forEach((property, j) => {
|
||||
expect(organisedPropertyGroups[i].properties[j]).toBe(property, `Property should match ${property.name}`);
|
||||
expect(organisedPropertyGroups[i].properties[j]).toEqual(property, `Property should match ${property.name}`);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@@ -41,7 +41,10 @@ export class LayoutOrientedConfigService implements ContentMetadataConfig {
|
||||
const organisedPropertyGroup = layoutBlocks.map((layoutBlock) => {
|
||||
const flattenedItems = this.flattenItems(layoutBlock.items),
|
||||
properties = flattenedItems.reduce((props, explodedItem) => {
|
||||
let property = getProperty(propertyGroups, explodedItem.groupName, explodedItem.propertyName) || [];
|
||||
const isProperty = typeof explodedItem.property === 'object';
|
||||
const propertyName = isProperty ? explodedItem.property.name : explodedItem.property;
|
||||
let property = getProperty(propertyGroups, explodedItem.groupName, propertyName) || [];
|
||||
if (isProperty) { property = this.setPropertyTitle(property, explodedItem.property); }
|
||||
property = this.setEditableProperty(property, explodedItem);
|
||||
return props.concat(property);
|
||||
}, []);
|
||||
@@ -101,13 +104,20 @@ export class LayoutOrientedConfigService implements ContentMetadataConfig {
|
||||
return propertyGroup;
|
||||
}
|
||||
|
||||
private setPropertyTitle(item: Property | Property[], property: Property): Property | Property[] {
|
||||
if (!Array.isArray(item)) {
|
||||
return { ...item, ...(item.name === property.name && !!property.title) && { title: property.title } };
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
private flattenItems(items) {
|
||||
return items.reduce((accumulator, item) => {
|
||||
const properties = Array.isArray(item.properties) ? item.properties : [item.properties];
|
||||
const flattenedProperties = properties.map((propertyName) => {
|
||||
const flattenedProperties = properties.map((property) => {
|
||||
return {
|
||||
groupName: item.aspect || item.type,
|
||||
propertyName,
|
||||
property,
|
||||
editable: item.editable
|
||||
};
|
||||
});
|
||||
|
Reference in New Issue
Block a user