@nolwenture/formik-jsonschema-form 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/Form.stories.d.ts +1 -0
  2. package/dist/Form.stories.js +4 -0
  3. package/dist/FormPdf.d.ts +6 -0
  4. package/dist/FormPdf.js +48 -0
  5. package/dist/FormPdf.stories.d.ts +11 -0
  6. package/dist/FormPdf.stories.js +148 -0
  7. package/dist/FormPdf.test.d.ts +1 -0
  8. package/dist/FormPdf.test.js +13 -0
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.js +1 -0
  11. package/dist/pdfFields/AnyField.d.ts +3 -0
  12. package/dist/pdfFields/AnyField.js +22 -0
  13. package/dist/pdfFields/ArrayField.d.ts +3 -0
  14. package/dist/pdfFields/ArrayField.js +41 -0
  15. package/dist/pdfFields/BooleanField.d.ts +3 -0
  16. package/dist/pdfFields/BooleanField.js +27 -0
  17. package/dist/pdfFields/DateField.d.ts +3 -0
  18. package/dist/pdfFields/DateField.js +16 -0
  19. package/dist/pdfFields/EJSField.d.ts +3 -0
  20. package/dist/pdfFields/EJSField.js +24 -0
  21. package/dist/pdfFields/MultipleChoiceField.d.ts +3 -0
  22. package/dist/pdfFields/MultipleChoiceField.js +20 -0
  23. package/dist/pdfFields/NullField.d.ts +3 -0
  24. package/dist/pdfFields/NullField.js +8 -0
  25. package/dist/pdfFields/NumberField.d.ts +3 -0
  26. package/dist/pdfFields/NumberField.js +6 -0
  27. package/dist/pdfFields/ObjectField.d.ts +3 -0
  28. package/dist/pdfFields/ObjectField.js +59 -0
  29. package/dist/pdfFields/RadioField.d.ts +3 -0
  30. package/dist/pdfFields/RadioField.js +6 -0
  31. package/dist/pdfFields/SchemaField.d.ts +3 -0
  32. package/dist/pdfFields/SchemaField.js +31 -0
  33. package/dist/pdfFields/SearchMultiTagSelectField.d.ts +3 -0
  34. package/dist/pdfFields/SearchMultiTagSelectField.js +14 -0
  35. package/dist/pdfFields/SearchableSelectField.d.ts +3 -0
  36. package/dist/pdfFields/SearchableSelectField.js +9 -0
  37. package/dist/pdfFields/StringField.d.ts +3 -0
  38. package/dist/pdfFields/StringField.js +27 -0
  39. package/dist/pdfFields/TextAreaField.d.ts +3 -0
  40. package/dist/pdfFields/TextAreaField.js +13 -0
  41. package/dist/pdfFields/ToggleField.d.ts +3 -0
  42. package/dist/pdfFields/ToggleField.js +6 -0
  43. package/dist/pdfFields/index.d.ts +16 -0
  44. package/dist/pdfFields/index.js +16 -0
  45. package/dist/pdfFields/types.d.ts +10 -0
  46. package/dist/pdfFields/types.js +10 -0
  47. package/dist/pdfTemplates/ArrayFieldTemplate.d.ts +3 -0
  48. package/dist/pdfTemplates/ArrayFieldTemplate.js +16 -0
  49. package/dist/pdfTemplates/CollapsibleObjectFieldTemplate.d.ts +3 -0
  50. package/dist/pdfTemplates/CollapsibleObjectFieldTemplate.js +20 -0
  51. package/dist/pdfTemplates/FieldTemplate.d.ts +3 -0
  52. package/dist/pdfTemplates/FieldTemplate.js +15 -0
  53. package/dist/pdfTemplates/ObjectFieldTemplate.d.ts +3 -0
  54. package/dist/pdfTemplates/ObjectFieldTemplate.js +18 -0
  55. package/dist/pdfTemplates/index.d.ts +4 -0
  56. package/dist/pdfTemplates/index.js +4 -0
  57. package/dist/sampleData/completeSchema.d.ts +1 -0
  58. package/dist/sampleData/completeSchema.js +23 -2
  59. package/dist/sampleData/ejsSchema.d.ts +6 -0
  60. package/dist/sampleData/ejsSchema.js +25 -0
  61. package/dist/sampleData/multipleChoiceSchema.d.ts +6 -0
  62. package/dist/sampleData/multipleChoiceSchema.js +8 -1
  63. package/dist/sampleData/pdfProExampleSchema.d.ts +21 -0
  64. package/dist/sampleData/pdfProExampleSchema.js +185 -0
  65. package/dist/sampleData/simpleData.js +1 -0
  66. package/dist/styledComponents.d.ts +12 -1
  67. package/dist/styledComponents.js +55 -0
  68. package/dist/types.d.ts +26 -0
  69. package/dist/utils/getEnums.d.ts +13 -0
  70. package/dist/utils/getEnums.js +12 -0
  71. package/package.json +2 -1
@@ -488,6 +488,61 @@ export const SearchClearButton = styled.span `
488
488
  export const SearchInputContainer = styled.div `
489
489
  display: flex;
490
490
  `;
491
+ export const StringFieldPdf = styled.div `
492
+ white-space: pre-line;
493
+ `;
494
+ export const TextAreaPdf = styled.div `
495
+ white-space: pre-line;
496
+ `;
497
+ export const EJSField = styled.div `
498
+ width: 100%;
499
+ `;
500
+ export const BooleanFieldPdf = ({ name, className, value, label, }) => {
501
+ return (_jsx("div", { className: className, children: value === true ? (_jsxs("div", { children: [_jsx("span", { children: "\u2713" }), _jsx("span", { children: label !== undefined ? label : "Selected" })] })) : (_jsxs("div", { children: [_jsx("span", { children: "\u2716" }), _jsx("span", { children: label !== undefined ? label : "Not selected" })] })) }));
502
+ };
503
+ const NotSelected = styled.div `
504
+ opacity: 0.3;
505
+ display: flex;
506
+ align-items: center;
507
+ `;
508
+ const Selected = styled.div `
509
+ display: flex;
510
+ align-items: center;
511
+ `;
512
+ const SelectedBox = styled.span `
513
+ color: white;
514
+ background: black;
515
+ padding: 0 0.2rem;
516
+ font-size: small;
517
+ display: inline-flex;
518
+ justify-content: center;
519
+ align-items: center;
520
+ `;
521
+ const NotSelectedCircle = styled.span `
522
+ color: white;
523
+ background: black;
524
+ padding: 0.1rem;
525
+ border-radius: 50%;
526
+ font-size: x-small;
527
+ display: inline-flex;
528
+ justify-content: center;
529
+ align-items: center;
530
+ height: 1rem;
531
+ width: 1rem;
532
+ `;
533
+ export const MultipleChoiceFieldPdf = ({ inputProps, name, className, style, selected, notSelected, }) => {
534
+ return (_jsxs(MultipleChoiceFieldContainer, { className: className, style: getStyle(style !== null && style !== void 0 ? style : ""), children: [!selected && !notSelected && _jsx(_Fragment, { children: "Nothing was selected" }), selected &&
535
+ selected.length > 0 &&
536
+ selected.map((s) => {
537
+ var _a, _b;
538
+ return (_jsx(MultipleChoiceFieldElement, { children: _jsxs(Selected, { children: [_jsx(SelectedBox, { children: "\u2713" }), _jsx(MultipleChoiceFieldLabel, { children: (_a = s.title) !== null && _a !== void 0 ? _a : "Hello" })] }) }, (_b = s.title) !== null && _b !== void 0 ? _b : s));
539
+ }), notSelected &&
540
+ (notSelected === null || notSelected === void 0 ? void 0 : notSelected.length) > 0 &&
541
+ notSelected.map((n) => {
542
+ var _a;
543
+ return (_jsx(MultipleChoiceFieldElement, { children: _jsxs(NotSelected, { children: [_jsx(NotSelectedCircle, { children: "\u2715" }), _jsx(MultipleChoiceFieldLabel, { children: n.title })] }) }, (_a = n.title) !== null && _a !== void 0 ? _a : n));
544
+ })] }));
545
+ };
491
546
  // --> FileUploadField
492
547
  export const FileUploadButton = styled.button `
493
548
  background-color: #ccc;
package/dist/types.d.ts CHANGED
@@ -163,6 +163,11 @@ export type ComponentsType = {
163
163
  SearchClearButton: React.FunctionComponent<any>;
164
164
  SearchInputContainer: React.FunctionComponent<any>;
165
165
  FileUploadField: React.FunctionComponent<any>;
166
+ StringFieldPdf: React.FunctionComponent<any>;
167
+ TextAreaPdf: React.FunctionComponent<any>;
168
+ EJSField: React.FunctionComponent<any>;
169
+ BooleanFieldPdf: React.FunctionComponent<any>;
170
+ MultipleChoiceFieldPdf: React.FunctionComponent<any>;
166
171
  };
167
172
  export declare enum ObjectFieldButtonPurpose {
168
173
  ADD = 0,
@@ -212,6 +217,22 @@ export type MultipleChoiceFieldProps = {
212
217
  value?: string | number;
213
218
  form?: FormikContextType<unknown>;
214
219
  };
220
+ export type MultipleChoiceFieldPdfProps = {
221
+ selected: {
222
+ const: string | number;
223
+ title: string;
224
+ }[] | undefined;
225
+ notSelected: {
226
+ const: string | number;
227
+ title: string;
228
+ }[] | undefined;
229
+ inputProps?: any;
230
+ name?: React.ReactNode;
231
+ className?: string;
232
+ style?: string;
233
+ value?: string | number;
234
+ form?: FormikContextType<unknown>;
235
+ };
215
236
  export type ToggleSwitchFieldProps = {
216
237
  inputProps: any;
217
238
  name: React.ReactNode;
@@ -308,4 +329,9 @@ declare module "yup" {
308
329
  mixedOf(schemas: MixedOfProps): this;
309
330
  }
310
331
  }
332
+ export type StringFieldPdfProps = {
333
+ className: string;
334
+ name: string;
335
+ value: string | undefined;
336
+ };
311
337
  export {};
@@ -11,3 +11,16 @@ export declare const getEnums: ({ schema }: {
11
11
  title: string;
12
12
  }[];
13
13
  } | undefined;
14
+ export declare const getSelectedEnum: (selected: string | number | string[] | number[] | undefined, enums: {
15
+ values: never[];
16
+ type?: undefined;
17
+ } | {
18
+ type: string;
19
+ values: {
20
+ const: any;
21
+ title: string;
22
+ }[];
23
+ } | undefined) => undefined | {
24
+ const: string | number;
25
+ title: string;
26
+ }[];
@@ -31,3 +31,15 @@ export const getEnums = ({ schema }) => {
31
31
  };
32
32
  }
33
33
  };
34
+ export const getSelectedEnum = (selected, enums) => {
35
+ if (Array.isArray(selected)) {
36
+ const stuff = selected
37
+ .map((v) => enums === null || enums === void 0 ? void 0 : enums.values.find((e) => e.const === v))
38
+ .filter((e) => !!e);
39
+ return stuff.length > 0 ? stuff : undefined;
40
+ }
41
+ if (typeof selected === "string" || typeof selected === "number") {
42
+ return enums === null || enums === void 0 ? void 0 : enums.values.filter((e) => e.const === selected);
43
+ }
44
+ return undefined;
45
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nolwenture/formik-jsonschema-form",
3
- "version": "0.24.0",
3
+ "version": "0.25.0",
4
4
  "description": "Formik form generation from json schema",
5
5
  "author": "Antti Vikman <antti.vikman@nolwenture.com>",
6
6
  "contributors": [
@@ -57,6 +57,7 @@
57
57
  "@testing-library/jest-dom": "^6.4.2",
58
58
  "@testing-library/react": "^14.2.2",
59
59
  "@testing-library/user-event": "^14.5.2",
60
+ "@types/ejs": "^3.1.5",
60
61
  "@types/jest": "^29.5.12",
61
62
  "@types/node": "^20.12.2",
62
63
  "@types/react": "^18.2.73",