UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

82 lines (81 loc) 3.81 kB
"use client"; import _extends from "@babel/runtime/helpers/esm/extends"; import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } import "core-js/modules/web.dom-collections.iterator.js"; import React, { useCallback, useContext, useMemo } from 'react'; import SectionContext from './SectionContext'; import DataContext from '../../DataContext/Context'; import Provider from '../../DataContext/Provider/Provider'; import FieldPropsProvider from '../../Field/Provider'; import SectionContainerProvider from './containers/SectionContainerProvider'; import ViewContainer from './ViewContainer'; import EditContainer from './EditContainer'; import Toolbar from './Toolbar'; function SectionComponent(props) { var _path$startsWith, _nestedProps$overwrit; const { path, overwriteProps, translations, required, data, defaultData, validateInitially, containerMode = 'auto', onChange, errorPrioritization = ['contextSchema'], children } = props; if (path && !((_path$startsWith = path.startsWith) !== null && _path$startsWith !== void 0 && _path$startsWith.call(path, '/'))) { throw new Error(`path="${path}" must start with a slash`); } const { hasContext, addOnChangeHandler } = useContext(DataContext); const { path: nestedPath, props: nestedProps } = useContext(SectionContext) || {}; const handleChange = useCallback(function () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return onChange === null || onChange === void 0 ? void 0 : onChange(...args); }, [onChange]); addOnChangeHandler === null || addOnChangeHandler === void 0 ? void 0 : addOnChangeHandler(handleChange); const identifier = useMemo(() => { return `${nestedPath && nestedPath !== '/' ? nestedPath : ''}${path || ''}`; }, [path, nestedPath]); const fieldProps = required ? { required: true } : undefined; if (!hasContext) { return React.createElement(Provider, { data: data, defaultData: defaultData }, React.createElement(SectionComponent, props)); } const sectionProps = props; return React.createElement(SectionContext.Provider, { value: { path: identifier, errorPrioritization, props: sectionProps } }, React.createElement(SectionContainerProvider, { validateInitially: validateInitially, containerMode: containerMode }, React.createElement(FieldPropsProvider, _extends({ overwriteProps: _objectSpread(_objectSpread({}, overwriteProps), nestedProps === null || nestedProps === void 0 ? void 0 : (_nestedProps$overwrit = nestedProps.overwriteProps) === null || _nestedProps$overwrit === void 0 ? void 0 : _nestedProps$overwrit[path.substring(1)]), translations: translations }, fieldProps), children))); } SectionComponent.Toolbar = Toolbar; SectionComponent.ViewContainer = ViewContainer; SectionComponent.EditContainer = EditContainer; SectionComponent._supportsSpacingProps = undefined; export default SectionComponent; //# sourceMappingURL=Section.js.map