sera-components 1.8.7 → 1.9.1

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.
@@ -1,4 +1,4 @@
1
- import { DataProperty, DataType, DB, ObjectProperty, NestedProperty } from 'sera-db';
1
+ import { DataProperty, DataType, DB, ObjectProperty, NestedProperty, Constructor } from 'sera-db';
2
2
  import { BooleanInput } from './boolean-input';
3
3
  import { NumberInput } from './number-input';
4
4
  import { TextInput } from './text-input';
@@ -21,7 +21,7 @@ export type InputInterface<T> = {
21
21
  db: DB;
22
22
  property: DataProperty | ObjectProperty | NestedProperty;
23
23
  value: T;
24
- onChange: (value: T) => void;
24
+ onChange: (value: T | ((cls: Constructor<any>, value: T) => T)) => void;
25
25
  error?: boolean | string;
26
26
  freeze?: boolean;
27
27
  };
@@ -0,0 +1,22 @@
1
+ import { default as React } from 'react';
2
+ import { DraftEmbeddedRecord, DraftRecord, GenericRecord, GenericEmbeddedRecord, NestedProperty, ObjectProperty, PropertyNames, Table, DB } from 'sera-db';
3
+ import { EmbeddedFieldGroup } from '../../embedded-form';
4
+ import { FormItemLayout } from '../../form-item';
5
+ export { MultiEmbeddedObjectInput } from './multi-embedded-object-input';
6
+ export { SingleEmbeddedObjectInput } from './single-embedded-object-input';
7
+ export declare function makeEmbeddedObjectItem<ID extends string | number, R extends GenericRecord<ID, DR>, DR extends DraftRecord<ID>, NR extends GenericEmbeddedRecord<NDR>, NDR extends DraftEmbeddedRecord>({ property, label, visible, freeze, layout, embeddedFieldGroups, }: {
8
+ property: ObjectProperty | NestedProperty;
9
+ label?: React.ReactNode;
10
+ visible?: (record: R | DR) => boolean;
11
+ freeze?: boolean;
12
+ layout?: FormItemLayout;
13
+ embeddedFieldGroups?: EmbeddedFieldGroup<NR, NDR, PropertyNames<NDR>>[];
14
+ }): (store: Table<ID, R, DR>, record: R | DR) => import("react/jsx-runtime").JSX.Element;
15
+ export declare function makeEmbeddedObjectEmbeddedItem<DR extends DraftEmbeddedRecord, NR extends GenericEmbeddedRecord<NDR>, NDR extends DraftEmbeddedRecord>({ property, label, visible, freeze, layout, embeddedFieldGroups, }: {
16
+ property: ObjectProperty | NestedProperty;
17
+ label?: React.ReactNode;
18
+ visible?: (record: DR) => boolean;
19
+ freeze?: boolean;
20
+ layout?: FormItemLayout;
21
+ embeddedFieldGroups?: EmbeddedFieldGroup<NR, NDR, PropertyNames<NDR>>[];
22
+ }): (db: DB, record: DR) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { EmbeddedObjectInputProps } from './shared';
2
+ export declare const MultiEmbeddedObjectInput: (({ db, property, value: objects, onChange, embeddedFieldGroups, freeze, }: EmbeddedObjectInputProps<any[]>) => import("react/jsx-runtime").JSX.Element) & {
3
+ displayName: string;
4
+ };
@@ -0,0 +1,9 @@
1
+ import { InputInterface } from '../../../data/inputs';
2
+ import { DataProperty, EmbeddedSchema, NestedProperty, ObjectProperty } from 'sera-db';
3
+ import { EmbeddedFieldGroup } from '../../embedded-form';
4
+ export type EmbeddedObjectProperty = ObjectProperty;
5
+ export type EmbeddedObjectInputProps<T> = InputInterface<T> & {
6
+ embeddedFieldGroups?: EmbeddedFieldGroup<any, any, any>[];
7
+ };
8
+ export declare function getEmbeddedObjectProperty(property: DataProperty | ObjectProperty | NestedProperty): ObjectProperty;
9
+ export declare function getEmbeddedObjectSchema(db: InputInterface<any>["db"], property: DataProperty | ObjectProperty | NestedProperty): EmbeddedSchema<any, any, any, any>;
@@ -0,0 +1,4 @@
1
+ import { EmbeddedObjectInputProps } from './shared';
2
+ export declare const SingleEmbeddedObjectInput: (({ db, property, value: object, onChange, embeddedFieldGroups, freeze, }: EmbeddedObjectInputProps<any>) => import("react/jsx-runtime").JSX.Element | null) & {
3
+ displayName: string;
4
+ };
@@ -9,7 +9,7 @@ export interface EmbeddedFieldGroup<R extends GenericEmbeddedRecord<DR>, DR exte
9
9
  } | NestedProperty | {
10
10
  prop: NestedProperty;
11
11
  args?: FieldArgs<R, DR>;
12
- } | ((record: DR) => React.ReactNode))[][];
12
+ } | ((db: DB, record: DR) => React.ReactNode))[][];
13
13
  }
14
14
  export interface SeraEmbeddedFormProps<R extends GenericEmbeddedRecord<DR>, DR extends DraftEmbeddedRecord, PF extends PropertyNames<R>, F extends PropertyNames<DR>> {
15
15
  schema: EmbeddedSchema<R, DR, PF, F>;
@@ -26,6 +26,7 @@ export interface SeraEmbeddedFormProps<R extends GenericEmbeddedRecord<DR>, DR e
26
26
  record: DR;
27
27
  styles?: React.CSSProperties;
28
28
  className?: string;
29
+ component?: React.ElementType;
29
30
  onSubmit?: (record: DR) => void;
30
31
  }
31
32
  /**
@@ -36,6 +36,7 @@ export interface SeraFormProps<ID extends string | number, R extends GenericReco
36
36
  record: ST["cls"] | ST["draftCls"];
37
37
  styles?: React.CSSProperties;
38
38
  className?: string;
39
+ component?: React.ElementType;
39
40
  onSubmit?: (record: ST["draftCls"]) => void;
40
41
  }
41
42
  /**
@@ -74,4 +75,8 @@ export interface SeraFormProps<ID extends string | number, R extends GenericReco
74
75
  export declare const SeraForm: <ID extends string | number, R extends GenericRecord<ID, DR>, DR extends DraftRecord<ID>, PF extends PropertyNames<R>, F extends PropertyNames<DR>, ST extends SchemaType<ID, R, DR, PF, F>>(props: SeraFormProps<ID, R, DR, PF, F, ST>) => import("react/jsx-runtime").JSX.Element;
75
76
  export declare function getInputComponent(property: DataProperty | ObjectProperty | NestedProperty, input?: React.ComponentType<InputInterface<any>>): ((<ID extends string | number>({ db, property, value: recordIds, onChange, freeze, }: InputInterface<ID[]>) => import("react/jsx-runtime").JSX.Element) & {
76
77
  displayName: string;
77
- }) | import('react').FC<InputInterface<any>> | import('react').ComponentClass<InputInterface<any>, any>;
78
+ }) | import('react').FC<InputInterface<any>> | import('react').ComponentClass<InputInterface<any>, any> | ((({ db, property, value: objects, onChange, embeddedFieldGroups, freeze, }: import('./composite-items/embedded-object-item/shared').EmbeddedObjectInputProps<any[]>) => import("react/jsx-runtime").JSX.Element) & {
79
+ displayName: string;
80
+ }) | ((({ db, property, value: object, onChange, embeddedFieldGroups, freeze, }: import('./composite-items/embedded-object-item/shared').EmbeddedObjectInputProps<any>) => import("react/jsx-runtime").JSX.Element | null) & {
81
+ displayName: string;
82
+ });
@@ -4,3 +4,4 @@ export * from './form-item-label';
4
4
  export * from './embedded-form';
5
5
  export * from './embedded-form-item';
6
6
  export * from './composite-items/address-form-item';
7
+ export * from './composite-items/embedded-object-item';