@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
52 lines (51 loc) • 1.91 kB
JavaScript
"use client";
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
const _excluded = ["className", "skeleton", "data", "children"];
import React from 'react';
import classnames from 'classnames';
import { createSpacingClasses } from '../space/SpacingHelper';
import Context from '../../shared/Context';
import TimelineItem from './TimelineItem';
import { validateDOMAttributes, extendPropsWithContext } from '../../shared/component-helper';
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 === null || context === void 0 ? void 0 : context.Timeline, {
skeleton: context === null || context === void 0 ? void 0 : context.skeleton
});
const {
className,
skeleton,
data,
children: childrenProp
} = allProps,
props = _objectWithoutProperties(allProps, _excluded);
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 === null || data === void 0 ? void 0 : 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