@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
50 lines (49 loc) • 1.57 kB
JavaScript
"use client";
import _extends from "@babel/runtime/helpers/esm/extends";
import React from 'react';
import classnames from 'classnames';
import { createSpacingClasses } from "../space/SpacingHelper.js";
import Context from "../../shared/Context.js";
import TimelineItem from "./TimelineItem.js";
import { validateDOMAttributes, extendPropsWithContext } from "../../shared/component-helper.js";
export const defaultProps = {
className: null,
skeleton: false,
data: null,
children: null
};
const Timeline = localProps => {
const context = React.useContext(Context);
const allProps = extendPropsWithContext(localProps, defaultProps, context?.Timeline, {
skeleton: context?.skeleton
});
const {
className,
skeleton,
data,
children: childrenProp,
...props
} = allProps;
const spacingClasses = createSpacingClasses(props);
let children = childrenProp;
if (Array.isArray(childrenProp)) {
children = childrenProp.map((child, i) => {
return React.cloneElement(child, {
skeleton: skeleton,
key: i
});
});
}
validateDOMAttributes(allProps, props);
return React.createElement("ol", _extends({
className: classnames("dnb-timeline dnb-space__reset", spacingClasses, className)
}, props), data?.map((timelineItem, i) => React.createElement(TimelineItem, _extends({
key: i,
skeleton: skeleton
}, timelineItem))), children);
};
Timeline.Item = TimelineItem;
export { TimelineItem };
Timeline._supportsSpacingProps = true;
export default Timeline;
//# sourceMappingURL=Timeline.js.map