@salesforce/design-system-react
Version:
Salesforce Lightning Design System for React
156 lines (147 loc) • 3.72 kB
JSX
import React from 'react';
import Button from '~/components/button';
import Carousel from '~/components/carousel';
import IconSettings from '~/components/icon-settings';
import log from '~/utilities/log';
const items = [
{
buttonLabel: 'Get Started',
id: 1,
heading: 'Visit App Exchange',
description: 'Extend Salesforce with the #1 business marketplace.',
imageAssistiveText: 'Appy',
src: '/assets/images/carousel/carousel-01.jpg',
href: 'https://www.salesforce.com',
},
{
buttonLabel: 'Get Started',
id: 2,
heading: 'Click to Customize',
description:
'Use the Object Manager to add fields, build layouts, and more.',
imageAssistiveText: 'Apps',
src: '/assets/images/carousel/carousel-02.jpg',
href: 'https://www.salesforce.com',
},
{
buttonLabel: 'Get Started',
id: 3,
heading: 'Download Salesforce Apps',
description: "Get the mobile app that's just for Salesforce admins.",
imageAssistiveText: 'Salesforce Apps',
src: '/assets/images/carousel/carousel-03.jpg',
href: 'https://www.salesforce.com',
},
{
buttonLabel: 'Get Started',
id: 4,
heading: 'Carousel Item 4',
description: 'Description for carousel item #4',
imageAssistiveText: 'Apps',
src: '/assets/images/carousel/carousel-02.jpg',
href: 'https://www.salesforce.com',
},
{
buttonLabel: 'Learn More',
id: 5,
heading: 'Carousel Item 5',
description: 'Description for carousel item #5',
imageAssistiveText: 'Appy',
src: '/assets/images/carousel/carousel-01.jpg',
href: 'https://www.salesforce.com',
},
{
buttonLabel: 'Learn More',
id: 6,
heading: 'Carousel Item 6',
description: 'Description for carousel item #6',
imageAssistiveText: 'Salesforce Apps',
src: '/assets/images/carousel/carousel-03.jpg',
href: 'https://www.salesforce.com',
},
{
buttonLabel: 'Learn More',
id: 7,
heading: 'Carousel Item 7',
description: 'Description for carousel item #7',
imageAssistiveText: 'Apps',
src: '/assets/images/carousel/carousel-02.jpg',
href: 'https://www.salesforce.com',
},
];
class Example extends React.Component {
static displayName = 'WithCustomItemsExample';
renderCustomItem = ({ item }) => {
const onButtonClick = (event) => {
event.preventDefault();
log({
action: this.props.action,
event,
eventName: 'Button Clicked',
data: { item },
});
};
return (
<div
className="slds-carousel-custom-rendering"
style={{
padding: '0 8px',
margin: 0,
textAlign: 'center',
}}
>
<div className="slds-carousel__content-title">{item.heading}</div>
<div className="slds-carousel__image">
<img src={item.src} alt={item.imageAssistiveText} />
</div>
<Button
className="slds-button_outline-brand slds-m-around_small"
label="Button1"
onClick={(event) => {
onButtonClick(event);
}}
tabIndex={item.isInCurrentPanel ? '0' : '-1'}
/>
<Button
className="slds-button_outline-brand slds-m-around_small"
label="Button2"
onClick={(event) => {
onButtonClick(event);
}}
tabIndex={item.isInCurrentPanel ? '0' : '-1'}
/>
</div>
);
};
render() {
return (
<div
style={{
bottom: '1rem',
left: '1rem',
overflow: 'auto',
position: 'absolute',
right: '1rem',
top: '1rem',
}}
>
<IconSettings iconPath="/assets/icons">
<div
style={{
maxWidth: '1280px',
}}
>
<Carousel
hasPreviousNextPanelNavigation
id="carousel-with-custom-items-example"
items={items}
itemsPerPanel={3}
onRenderItem={this.renderCustomItem}
/>
</div>
</IconSettings>
</div>
);
}
}
export default Example;