-
Notifications
You must be signed in to change notification settings - Fork 24
/
AllowedComponentsContainer.tsx
48 lines (43 loc) · 1.83 KB
/
AllowedComponentsContainer.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
* Copyright 2022 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
* OF ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
import React from 'react';
import { AllowedComponentList, ModelProps } from '../types/AEMModel';
import { ClassNames, Texts } from '../constants';
type Props = {
allowedComponents: AllowedComponentList;
className: string;
placeholderClassNames?: string;
title: string;
getItemClassNames?: (_key: string) => string;
} & ModelProps;
/**
* Represents allowed components container in AEM.
*/
const AllowedComponentsContainer = (props: Props): JSX.Element => {
const { placeholderClassNames = '', allowedComponents, title } = props;
const { components } = allowedComponents;
const listLabel = components && components.length > 0 ? title : Texts.EMPTY_LABEL;
return (
<div className={`${ClassNames.ALLOWED_LIST_PLACEHOLDER} ${ClassNames.NEW_SECTION} ${placeholderClassNames}`}>
<div data-text={listLabel} className={ClassNames.ALLOWED_COMPONENT_TITLE} />
{components.map((component) => (
<div
data-cq-data-path={component.path}
key={component.path}
data-emptytext={component.title ? component.title : Texts.EMPTY_COMPONENT_TITLE}
className={ClassNames.ALLOWED_COMPONENT_PLACEHOLDER}
/>
))}
</div>
);
};
export default AllowedComponentsContainer;