UNPKG

@norges-domstoler/dds-page-generator

Version:
1,323 lines (1,301 loc) 43.1 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { CountryCodeInput: () => CountryCodeInput, DateOfBirthDatepicker: () => DateOfBirthDatepicker, DetailList: () => DetailList, DetailListRow: () => DetailListRow, EmailInput: () => EmailInput, EmailValidator: () => EmailValidator, FirstNameInput: () => FirstNameInput, HouseNumberInput: () => HouseNumberInput, LastNameInput: () => LastNameInput, NameRow: () => NameRow, NinInput: () => NinInput, NinValidator: () => NinValidator, NumbersOnlyValidator: () => NumbersOnlyValidator, PageGenerator: () => PageGenerator, PageGeneratorSupportedFields: () => PageGeneratorSupportedFields, PhoneNumberInput: () => PhoneNumberInput, PhoneNumberRow: () => PhoneNumberRow, PhoneNumberValidator: () => PhoneNumberValidator, PostalCodeInput: () => PostalCodeInput, PostalNumberInput: () => PostalNumberInput, PostalRow: () => PostalRow, RequiredDatePickerValidator: () => RequiredDatePickerValidator, RequiredSelectValidator: () => RequiredSelectValidator, RequiredValidator: () => RequiredValidator, SectionGenerator: () => SectionGenerator, StreetAddressRow: () => StreetAddressRow, StreetNameInput: () => StreetNameInput, getFormErrorMessage: () => getFormErrorMessage, isFieldWithValidations: () => isFieldWithValidations, isMultiValue: () => isMultiValue, isPageGeneratorRow: () => isPageGeneratorRow, isSectionGeneratorRow: () => isSectionGeneratorRow }); module.exports = __toCommonJS(index_exports); // src/components/PageGenerator/PageGenerator.tsx var import_dds_components7 = require("@norges-domstoler/dds-components"); // src/tokens/PageGeneratorTokens.tsx var import_dds_components = require("@norges-domstoler/dds-components"); var import_dds_design_tokens = require("@norges-domstoler/dds-design-tokens"); var PageGeneratorTokens = { Stack: { [import_dds_components.ScreenSize.XSmall]: "x1", [import_dds_components.ScreenSize.Small]: "x1", [import_dds_components.ScreenSize.Medium]: "x1", [import_dds_components.ScreenSize.Large]: "x1", [import_dds_components.ScreenSize.XLarge]: "x1.5" }, rowGaps: { xs: import_dds_design_tokens.ddsTokens.core.ddsSpacingX1, sm: import_dds_design_tokens.ddsTokens.core.ddsSpacingX1, md: import_dds_design_tokens.ddsTokens.core.ddsSpacingX1, lg: import_dds_design_tokens.ddsTokens.core.ddsSpacingX1, xl: import_dds_design_tokens.ddsTokens.core.ddsSpacingX15 } }; // src/components/PageGenerator/PageGeneratorContext.tsx var import_react = require("react"); var PageGeneratorContext = (0, import_react.createContext)({ fields: [], state: {}, fieldOnChange: () => { }, selectOnChange: () => { }, datePickerOnChange: () => { }, onBlur: () => { }, onBlurSelect: () => { }, formData: { errors: null, errorMessages: null, submitted: false, touched: false, valid: false }, validateAllFields: (next) => { } }); // src/components/PageGenerator/PageGeneratorProvider.tsx var import_react2 = require("react"); // src/helpers/isFieldWithValidations.tsx var isFieldWithValidations = (obj) => { return obj && obj.validations !== void 0; }; // src/helpers/isMultiValue.tsx var isMultiValue = (obj) => { return (obj == null ? void 0 : obj.values) !== void 0; }; // src/helpers/isPageGeneratorRow.tsx var isPageGeneratorRow = (obj) => { return obj.fields !== void 0; }; // src/helpers/isSectionGeneratorRow.tsx var isSectionGeneratorRow = (obj) => { return obj.fields !== void 0; }; // src/helpers/PageGeneratorFields.tsx var import_dds_components2 = require("@norges-domstoler/dds-components"); // src/types/PageGeneratorSupportedFields.tsx var PageGeneratorSupportedFields = /* @__PURE__ */ ((PageGeneratorSupportedFields2) => { PageGeneratorSupportedFields2["Button"] = "Button"; PageGeneratorSupportedFields2["Card"] = "Card"; PageGeneratorSupportedFields2["Checkbox"] = "Checkbox"; PageGeneratorSupportedFields2["CheckboxGroup"] = "CheckboxGroup"; PageGeneratorSupportedFields2["DatePicker"] = "DatePicker"; PageGeneratorSupportedFields2["DescriptionList"] = "DescriptionList"; PageGeneratorSupportedFields2["DescriptionListGroup"] = "DescriptionListGroup"; PageGeneratorSupportedFields2["DescriptionListDesc"] = "DescriptionListDesc"; PageGeneratorSupportedFields2["DescriptionListTerm"] = "DescriptionListTerm"; PageGeneratorSupportedFields2["DetailList"] = "DetailList"; PageGeneratorSupportedFields2["DetailListRow"] = "DetailListRow"; PageGeneratorSupportedFields2["DetailListTerm"] = "DetailListTerm"; PageGeneratorSupportedFields2["DetailListDesc"] = "DetailListDesc"; PageGeneratorSupportedFields2["Divider"] = "Divider"; PageGeneratorSupportedFields2["Drawer"] = "Drawer"; PageGeneratorSupportedFields2["DrawerGroup"] = "DrawerGroup"; PageGeneratorSupportedFields2["Fieldset"] = "Fieldset"; PageGeneratorSupportedFields2["GlobalMessage"] = "GlobalMessage"; PageGeneratorSupportedFields2["Heading"] = "Heading"; PageGeneratorSupportedFields2["HStack"] = "HStack"; PageGeneratorSupportedFields2["InputMessage"] = "InputMessage"; PageGeneratorSupportedFields2["Label"] = "Label"; PageGeneratorSupportedFields2["Legend"] = "Legend"; PageGeneratorSupportedFields2["Link"] = "Link"; PageGeneratorSupportedFields2["List"] = "List"; PageGeneratorSupportedFields2["ListItem"] = "ListItem"; PageGeneratorSupportedFields2["LocalMessage"] = "LocalMessage"; PageGeneratorSupportedFields2["Paragraph"] = "Paragraph"; PageGeneratorSupportedFields2["RadioButton"] = "RadioButton"; PageGeneratorSupportedFields2["RadioButtonGroup"] = "RadioButtonGroup"; PageGeneratorSupportedFields2["Select"] = "Select"; PageGeneratorSupportedFields2["Spinner"] = "Spinner"; PageGeneratorSupportedFields2["TextArea"] = "TextArea"; PageGeneratorSupportedFields2["TextInput"] = "TextInput"; PageGeneratorSupportedFields2["ToggleBar"] = "ToggleBar"; PageGeneratorSupportedFields2["ToggleRadio"] = "ToggleRadio"; PageGeneratorSupportedFields2["ToggleButton"] = "ToggleButton"; PageGeneratorSupportedFields2["ToggleButtonGroup"] = "ToggleButtonGroup"; PageGeneratorSupportedFields2["Typography"] = "Typography"; PageGeneratorSupportedFields2["VisuallyHidden"] = "VisuallyHidden"; PageGeneratorSupportedFields2["VStack"] = "VStack"; return PageGeneratorSupportedFields2; })(PageGeneratorSupportedFields || {}); // src/helpers/PageGeneratorFields.tsx var NinInput = ({ props, fieldProps }) => { return { component: "TextInput" /* TextInput */, props: { label: "F\xF8dselsnummer", type: "text", name: "nin", ...props }, ...fieldProps }; }; var FirstNameInput = ({ props, fieldProps }) => { return { component: "TextInput" /* TextInput */, props: { label: "Fornavn", type: "text", name: "firstName", ...props }, ...fieldProps }; }; var LastNameInput = ({ props, fieldProps }) => { return { component: "TextInput" /* TextInput */, props: { label: "Etternavn", type: "text", name: "lastName", ...props }, ...fieldProps }; }; var DateOfBirthDatepicker = (props) => { return { component: "DatePicker" /* DatePicker */, props: { label: "F\xF8dselsdato", name: "dateOfBirth", ...props }, name: "dateOfBirth" }; }; var EmailInput = ({ props, fieldProps }) => { return { component: "TextInput" /* TextInput */, props: { label: "E-post", name: "email", ...props }, ...fieldProps }; }; var StreetNameInput = ({ props, fieldProps }) => { return { component: "TextInput" /* TextInput */, props: { label: "Gatenavn", type: "text", name: "streetName", ...props }, ...fieldProps }; }; var HouseNumberInput = ({ props, fieldProps }) => { return { component: "TextInput" /* TextInput */, props: { label: "Husnummer", width: "90px", type: "text", name: "houseNumber", ...props }, ...fieldProps }; }; var CountryCodeInput = ({ props, fieldProps }) => { return { component: "TextInput" /* TextInput */, props: { label: "Landkode", width: "90px", name: "countryCode", tip: "Husk + foran landkoden", ...props }, ...fieldProps }; }; var PhoneNumberInput = ({ props, fieldProps }) => { const actualScreenSize = (0, import_dds_components2.useScreenSize)(); return { component: "TextInput" /* TextInput */, props: { label: "Telefon", width: actualScreenSize >= import_dds_components2.ScreenSize.XLarge ? "206px" : "214px", name: "phoneNumber", ...props }, ...fieldProps }; }; var PostalNumberInput = ({ props, fieldProps }) => { return { component: "TextInput" /* TextInput */, props: { label: "Postnummer", width: "90px", name: "postalNumber", ...props }, ...fieldProps }; }; var PostalCodeInput = ({ props, fieldProps }) => { const actualScreenSize = (0, import_dds_components2.useScreenSize)(); return { component: "TextInput" /* TextInput */, props: { label: "Poststed", type: "text", width: actualScreenSize >= import_dds_components2.ScreenSize.XLarge ? "206px" : "214px", name: "postalCode", ...props }, ...fieldProps }; }; var NameRow = (firstNameProps, lastNameProps, rowProps) => { return { fields: [ FirstNameInput(firstNameProps || {}), LastNameInput(lastNameProps || {}) ], ...rowProps }; }; var StreetAddressRow = (streetNameProps, houseNumberProps, rowProps) => { return { fields: [ StreetNameInput(streetNameProps || {}), HouseNumberInput(houseNumberProps || {}) ], ...rowProps }; }; var PhoneNumberRow = (countryCodeProps, phoneNumberProps, rowProps) => { return { fields: [ CountryCodeInput(countryCodeProps || {}), PhoneNumberInput(phoneNumberProps || {}) ], ...rowProps }; }; var PostalRow = (postalNumberProps, postalCodeProps, rowProps) => { return { fields: [ PostalNumberInput(postalNumberProps || {}), PostalCodeInput(postalCodeProps || {}) ], ...rowProps }; }; var DetailList = (rows) => { return { component: "DetailList" /* DetailList */, props: { striped: false, size: "small" }, children: rows.map((row) => { return { component: "DetailListRow" /* DetailListRow */, props: {}, children: [ { component: "DetailListTerm" /* DetailListTerm */, props: {}, innerHTML: row.term }, { component: "DetailListDesc" /* DetailListDesc */, props: { style: { textAlign: "right" } }, innerHTML: row.desc } ] }; }) }; }; var DetailListRow = (term, desc) => { return { term, desc: desc || "-" }; }; // src/helpers/Validators.tsx var import_fnrvalidator = require("@navikt/fnrvalidator"); var import_dds_components3 = require("@norges-domstoler/dds-components"); var import_jsx_runtime = require("react/jsx-runtime"); var RequiredValidator = (message, formMessage) => { return { message: message || "Feltet er p\xE5krevd", formMessage: formMessage || "Feltet er p\xE5krevd", rule: (value) => !!value && value.length > 0 }; }; var RequiredSelectValidator = (message, formMessage) => { return { message: message || "Feltet er p\xE5krevd", formMessage: formMessage || "Feltet er p\xE5krevd", rule: (value) => { if (Array.isArray(value)) { return value.length > 0; } return !!value; } }; }; var RequiredDatePickerValidator = (message, formMessage) => { return { message: message || "Feltet er p\xE5krevd", formMessage: formMessage || "Feltet er p\xE5krevd", rule: (value) => !!value }; }; var NumbersOnlyValidator = (message, formMessage) => { return { message: message || "Feltet kan bare inneholde tall", formMessage: formMessage || "Feltet kan bare inneholde tall", rule: (value) => value.length > 0 ? value.match(/^\d+$/) !== null : true }; }; var NinValidator = { message: "F\xF8dselsnummer er ugyldig", formMessage: "F\xF8dselsnummer er ugyldig", rule: (value) => { if (value.length > 0) { const result = (0, import_fnrvalidator.idnr)(value); return result.status === "valid"; } return true; } }; var PhoneNumberValidator = { message: "Kan bare inneholde tall", formMessage: "Telefonnummer kan bare inneholde tall", rule: (value) => value.length > 0 ? value.match(/^\d+$/) !== null : true }; var EmailValidator = { message: "E-post er ugyldig", formMessage: "E-post er ugyldig", rule: (value) => value.length > 0 ? value.match(/^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/) !== null : true }; var getFormErrorMessage = (errors, leadText) => { const actualErrors = Object.keys(errors).filter( (key) => errors[key].errors.length > 0 ); const formMessages = actualErrors.map((e) => { const obj = errors[e]; return obj.errors[0].formMessage || obj.errors[0].message; }); return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dds_components3.Paragraph, { children: leadText || "Disse feilene m\xE5 rettes f\xF8r du kan lagre:" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dds_components3.List, { children: formMessages.map((formMessage, index) => { return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dds_components3.ListItem, { children: formMessage }, index); }) }) ] }); }; // src/components/PageGenerator/PageGeneratorProvider.tsx var import_jsx_runtime2 = require("react/jsx-runtime"); var PageGeneratorProvider = ({ children, fields, formDataOnChange, state, setState }) => { const [formData, setFormData] = (0, import_react2.useState)({ errors: null, errorMessages: null, submitted: false, touched: false, valid: false }); (0, import_react2.useEffect)(() => { setFormData({ ...formData, submitted: false }); }, [state]); (0, import_react2.useEffect)(() => { let newErrorMessages = { ...formData.errorMessages }; if (formData.errors && Object.keys(formData.errors).length > 0) { Object.keys(formData.errors).forEach((key) => { if (formData.errors) { const error = formData.errors[key]; if (error && error.errors.length > 0) { newErrorMessages = { ...newErrorMessages, [key]: error.errors[0].message }; } else { newErrorMessages = { ...newErrorMessages, [key]: "" }; } } }); let valid = true; Object.keys(formData.errors).forEach((key) => { if (formData.errors && formData.errors[key].errors.length > 0) { valid = false; return; } }); let newFormData = { ...formData, valid }; if (newErrorMessages && (formData.touched || formData.submitted)) { newFormData = { ...newFormData, errorMessages: newErrorMessages }; } setFormData(newFormData); if (formDataOnChange) { formDataOnChange(newFormData); } } }, [formData.errors]); const findFieldByNameInternal = (name, fieldsToSearch) => { for (const f of fieldsToSearch) { if (isFieldWithValidations(f) && f.props && f.props.name === name) { return f; } if (isPageGeneratorRow(f) && f.fields && Array.isArray(f.fields)) { const result = findFieldByNameInternal(name, f.fields); if (result) { return result; } } } return null; }; const getFieldErrors = (name, value) => { var _a, _b; const field = findFieldByNameInternal(name, fields); if (field && isFieldWithValidations(field)) { const fieldErrors = (_b = (_a = field.validations) == null ? void 0 : _a.filter( (v) => !v.rule(value) )) != null ? _b : []; return fieldErrors; } return []; }; const validateField = (name, value) => { var _a, _b; const field = findFieldByNameInternal(name, fields); if (field && isFieldWithValidations(field)) { const fieldErrors = (_b = (_a = field.validations) == null ? void 0 : _a.filter( (v) => !v.rule(value) )) != null ? _b : []; const newErrors = { ...formData.errors, [name]: { value, errors: fieldErrors } }; setFormData({ ...formData, errors: newErrors, touched: true }); } }; const validateAllFields = (next) => { let newErrors = {}; fields.forEach((field) => { var _a; if (isFieldWithValidations(field) && state && ((_a = field.props) == null ? void 0 : _a.name)) { const value = state[field.props.name]; const name = field.props.name; const fieldErrors = getFieldErrors(name, value); newErrors = { ...newErrors, [name]: { value, errors: fieldErrors } }; } }); let valid = true; Object.keys(newErrors).forEach((key) => { if (newErrors[key].errors.length > 0) { valid = false; return; } }); setFormData({ ...formData, submitted: true, errors: newErrors, valid }); if (valid) { next(); } }; const onBlur = (event) => { const { name, value } = event.target; validateField(name, value); }; const onBlurSelect = (name) => { if (state) { validateField(name, state[name]); } }; const fieldOnChange = (event) => { var _a; const { id, name, value } = event.target; const checked = (_a = event.target) == null ? void 0 : _a.checked; setFormData({ ...formData, touched: true, errorMessages: { ...formData.errorMessages, [name]: "" } }); const newState = { ...state, [name || id]: event.target.type === "checkbox" ? checked : value }; if (setState) { setState(newState); } }; const selectOnChange = (chosen, name) => { let value = null; if (isMultiValue(chosen)) { value = Array.isArray(chosen) ? chosen : null; } else { value = chosen != null ? chosen : null; } setFormData({ ...formData, touched: true, submitted: false, errorMessages: { ...formData.errorMessages, [name]: "" } }); const newState = { ...state, [name]: value }; validateField(name, chosen); if (setState) { setState(newState); } }; const datePickerOnChange = (value, name) => { const newState = { ...state, [name]: value }; setFormData({ ...formData, touched: true, submitted: false, errorMessages: { ...formData.errorMessages, [name]: "" } }); validateField(name, value); if (setState) { setState(newState); } }; return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( PageGeneratorContext.Provider, { value: { fields, state, fieldOnChange, selectOnChange, datePickerOnChange, onBlur, onBlurSelect, formData, validateAllFields }, children: children(validateAllFields) } ); }; // src/components/Generate/GenerateGridChildren.tsx var import_react6 = require("react"); // src/components/Generate/GenerateGridChild.tsx var import_dds_components6 = require("@norges-domstoler/dds-components"); // src/components/Generate/GenerateComponent.tsx var import_dds_components4 = require("@norges-domstoler/dds-components"); var import_jsx_runtime3 = require("react/jsx-runtime"); var import_react3 = require("react"); var GenerateComponent = (props) => { const { index, field, gridChildProps } = props; const { fieldOnChange, selectOnChange, datePickerOnChange, onBlur, onBlurSelect, screenSize } = gridChildProps; const inputFieldOnChange = (event) => fieldOnChange(event); const textAreaFieldOnChange = (event) => fieldOnChange(event); const GridStyling = { marginLeft: void 0, marginRight: void 0 }; switch (field.component) { case "Button" /* Button */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Button, { ...field.props, key: index }, field.innerHTML); case "Card" /* Card */: if (field.innerHTML) { return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Card, { ...field.props, key: index }, field.innerHTML); } else if (field.children) { /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Card, { ...field.props, key: index }, /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SectionGenerator, { as: "fragment", fields: field.children })); } return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}); case "Checkbox" /* Checkbox */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Checkbox, { ...field.props, key: index, onChange: inputFieldOnChange }); case "CheckboxGroup" /* CheckboxGroup */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.CheckboxGroup, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "DatePicker" /* DatePicker */: return /* @__PURE__ */ (0, import_react3.createElement)( import_dds_components4.DatePicker, { ...field.props, key: index, onChange: (value) => datePickerOnChange(value, field.name), onBlur: (_event) => { onBlurSelect(field.name); } } ); case "DescriptionList" /* DescriptionList */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.DescriptionList, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "DescriptionListGroup" /* DescriptionListGroup */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.DescriptionListGroup, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "DescriptionListDesc" /* DescriptionListDesc */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.DescriptionListDesc, { ...field.props, key: index }, field.innerHTML); case "DescriptionListTerm" /* DescriptionListTerm */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.DescriptionListTerm, { ...field.props, key: index }, field.innerHTML); case "DetailList" /* DetailList */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.DetailList, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "DetailListRow" /* DetailListRow */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.DetailListRow, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "DetailListDesc" /* DetailListDesc */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.DetailListDesc, { ...field.props, key: index }, field.innerHTML); case "DetailListTerm" /* DetailListTerm */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.DetailListTerm, { ...field.props, key: index }, field.innerHTML); case "Divider" /* Divider */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Divider, { ...field.props, key: index }); case "Drawer" /* Drawer */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Drawer, { ...field.props, key: index }, field.innerHTML); case "DrawerGroup" /* DrawerGroup */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.DrawerGroup, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "Fieldset" /* Fieldset */: return /* @__PURE__ */ (0, import_react3.createElement)( import_dds_components4.Fieldset, { ...field.props, htmlProps: { ...field.props.htmlProps, className: "page-generator-fieldset", style: { ...GridStyling } }, key: index }, field.children.map((child, childIndex) => { if (child.component === "Legend") { return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); } else { return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateGridChild, { obj: child, index: childIndex }, childIndex ); } }) ); case "GlobalMessage" /* GlobalMessage */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.GlobalMessage, { ...field.props, key: index }, field.innerHTML); case "Heading" /* Heading */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Heading, { ...field.props, key: index }, field.innerHTML); case "HStack" /* HStack */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.HStack, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "InputMessage" /* InputMessage */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.InputMessage, { ...field.props, key: index }); case "Label" /* Label */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Label, { ...field.props, key: index }, field.innerHTML); case "Legend" /* Legend */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Legend, { ...field.props, key: index }, field.innerHTML); case "Link" /* Link */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Link, { ...field.props, key: index }, field.innerHTML); case "List" /* List */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.List, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "ListItem" /* ListItem */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.ListItem, { ...field.props, key: index }, field.innerHTML); case "LocalMessage" /* LocalMessage */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.LocalMessage, { ...field.props, key: index }, field.innerHTML); case "Paragraph" /* Paragraph */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Paragraph, { ...field.props, key: index }, field.innerHTML); case "RadioButton" /* RadioButton */: return /* @__PURE__ */ (0, import_react3.createElement)( import_dds_components4.RadioButton, { ...field.props, key: index, onChange: inputFieldOnChange } ); case "RadioButtonGroup" /* RadioButtonGroup */: field.props.direction = screenSize > import_dds_components4.ScreenSize.XSmall ? "row" : "column"; return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.RadioButtonGroup, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "Select" /* Select */: return /* @__PURE__ */ (0, import_react3.createElement)( import_dds_components4.Select, { ...field.props, key: index, onChange: (option) => selectOnChange(option, field.name), onBlur: (_event) => { onBlurSelect(field.name); } } ); case "Spinner" /* Spinner */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Spinner, { ...field.props, key: index }); case "TextArea" /* TextArea */: return /* @__PURE__ */ (0, import_react3.createElement)( import_dds_components4.TextArea, { ...field.props, key: index, onChange: textAreaFieldOnChange, onBlur } ); case "TextInput" /* TextInput */: return /* @__PURE__ */ (0, import_react3.createElement)( import_dds_components4.TextInput, { ...field.props, key: index, onChange: inputFieldOnChange, onBlur } ); case "ToggleBar" /* ToggleBar */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.ToggleBar, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "ToggleButton" /* ToggleButton */: return /* @__PURE__ */ (0, import_react3.createElement)( import_dds_components4.ToggleButton, { ...field.props, key: index, onChange: inputFieldOnChange } ); case "ToggleButtonGroup" /* ToggleButtonGroup */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.ToggleButtonGroup, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); case "ToggleRadio" /* ToggleRadio */: return /* @__PURE__ */ (0, import_react3.createElement)( import_dds_components4.ToggleRadio, { ...field.props, key: index, onChange: inputFieldOnChange } ); case "Typography" /* Typography */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.Typography, { ...field.props, key: index }, field.innerHTML); case "VisuallyHidden" /* VisuallyHidden */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.VisuallyHidden, { ...field.props, key: index }, field.innerHTML); case "VStack" /* VStack */: return /* @__PURE__ */ (0, import_react3.createElement)(import_dds_components4.VStack, { ...field.props, key: index }, field.children.map((child, childIndex) => { return !child.hide && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( GenerateComponent, { index: childIndex, field: child, gridChildProps: props.gridChildProps }, childIndex ); })); default: return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}); } }; // src/components/Generate/GenerateRow.tsx var import_dds_components5 = require("@norges-domstoler/dds-components"); var import_react4 = require("react"); var import_jsx_runtime4 = require("react/jsx-runtime"); var GenerateRow = (props) => { const { index, fields, gridChildProps } = props; const { formData } = (0, import_react4.useContext)(PageGeneratorContext); return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( import_dds_components5.HStack, { gap: PageGeneratorTokens.Stack[gridChildProps.screenSize] || 0, align: "flex-start", htmlProps: { style: { flexWrap: "wrap" } }, children: fields.map((field, childIndex) => { if (isFieldWithValidations(field) && field.props.name && formData.errorMessages) { field.props = { ...field.props, errorMessage: formData.errorMessages[field.props.name] }; } return !field.hide && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( GenerateComponent, { index: childIndex, field, gridChildProps }, childIndex ); }) }, index ); }; // src/components/Generate/GenerateGridChild.tsx var import_react5 = require("react"); var import_jsx_runtime5 = require("react/jsx-runtime"); var GenerateGridChild = (props) => { const isRow = isPageGeneratorRow(props.obj); const { fieldOnChange, selectOnChange, datePickerOnChange, onBlur, onBlurSelect, formData } = (0, import_react5.useContext)(PageGeneratorContext); const screenSize = (0, import_dds_components6.useScreenSize)(); const { obj, index } = props; const gridChildProps = { fieldOnChange, selectOnChange, datePickerOnChange, onBlur, onBlurSelect, screenSize }; if (isFieldWithValidations(obj) && obj.props.name && formData.errorMessages) { obj.props = { ...obj.props, errorMessage: formData.errorMessages[obj.props.name] }; } return !obj.hide && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_dds_components6.GridChild, { columnsOccupied: "all", children: [ isRow && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)( GenerateRow, { index, fields: obj.fields, gridChildProps } ), !isRow && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)( GenerateComponent, { index, field: obj, gridChildProps } ) ] }, index); }; // src/components/Generate/GenerateGridChildren.tsx var import_jsx_runtime6 = require("react/jsx-runtime"); var GenerateGridChildren = () => { const { fields } = (0, import_react6.useContext)(PageGeneratorContext); return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: fields.map((obj, index) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(GenerateGridChild, { obj, index }, index)) }); }; // src/components/PageGenerator/PageGenerator.tsx var import_jsx_runtime7 = require("react/jsx-runtime"); var PageGenerator = (props) => { const { id, className, htmlProps, fields = [], formDataOnChange, state, setState, as, onSubmit, ...rest } = props; const children = (validateAllFields) => { return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( import_dds_components7.Grid, { ...(0, import_dds_components7.getBaseHTMLProps)(id, className, htmlProps, rest), as, rowGap: PageGeneratorTokens.rowGaps, htmlProps: { ...htmlProps, ...onSubmit ? { onSubmit: (event) => { event.preventDefault(); if (onSubmit) { validateAllFields(onSubmit); } } } : {} }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(GenerateGridChildren, {}) } ); }; return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( PageGeneratorProvider, { fields, formDataOnChange, state, setState, children } ); }; PageGenerator.displayName = "PageGenerator"; // src/components/SectionGenerator/SectionGenerator.tsx var import_dds_components8 = require("@norges-domstoler/dds-components"); var import_react7 = __toESM(require("react")); var import_jsx_runtime8 = require("react/jsx-runtime"); var SectionGenerator = (props) => { const { fields = [], formDataOnChange, state, setState, as, id, className, htmlProps, ...rest } = props; const { fieldOnChange, selectOnChange, datePickerOnChange, onBlur, onBlurSelect, validateAllFields } = (0, import_react7.useContext)(PageGeneratorContext); const screenSize = (0, import_dds_components8.useScreenSize)(); const generateGridChildProps = { fieldOnChange, selectOnChange, datePickerOnChange, onBlur, onBlurSelect, screenSize }; const Parent = (props2) => { if (as === "div") { return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { ...(0, import_dds_components8.getBaseHTMLProps)(id, className, htmlProps, rest), children: props2.children }); } else if (as === "form") { return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("form", { ...(0, import_dds_components8.getBaseHTMLProps)(id, className, htmlProps, rest), children: props2.children }); } else if (as === "fragment") { return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react7.default.Fragment, { children: props2.children }); } else { return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment, {}); } }; const children = (validateAllFields2) => { return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Parent, { children: fields.map((obj, index) => { const isRow = isSectionGeneratorRow(obj); return !obj.hide && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_react7.default.Fragment, { children: [ isRow && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( GenerateRow, { index, fields: obj.fields, gridChildProps: generateGridChildProps } ), !isRow && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( GenerateComponent, { index, field: obj, gridChildProps: generateGridChildProps } ) ] }, index); }) }); }; return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( PageGeneratorProvider, { fields, formDataOnChange, state, setState, children } ); }; SectionGenerator.displayName = "SectionGenerator"; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { CountryCodeInput, DateOfBirthDatepicker, DetailList, DetailListRow, EmailInput, EmailValidator, FirstNameInput, HouseNumberInput, LastNameInput, NameRow, NinInput, NinValidator, NumbersOnlyValidator, PageGenerator, PageGeneratorSupportedFields, PhoneNumberInput, PhoneNumberRow, PhoneNumberValidator, PostalCodeInput, PostalNumberInput, PostalRow, RequiredDatePickerValidator, RequiredSelectValidator, RequiredValidator, SectionGenerator, StreetAddressRow, StreetNameInput, getFormErrorMessage, isFieldWithValidations, isMultiValue, isPageGeneratorRow, isSectionGeneratorRow }); //# sourceMappingURL=index.js.map