@wix/bex-core 2.333.0 → 2.337.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.
- package/dist/cjs/assets/locale/messages_ar.json +10 -2
- package/dist/cjs/assets/locale/messages_bg.json +10 -2
- package/dist/cjs/assets/locale/messages_ca.json +10 -2
- package/dist/cjs/assets/locale/messages_cs.json +8 -0
- package/dist/cjs/assets/locale/messages_da.json +8 -0
- package/dist/cjs/assets/locale/messages_de.json +8 -0
- package/dist/cjs/assets/locale/messages_el.json +10 -2
- package/dist/cjs/assets/locale/messages_en.json +10 -2
- package/dist/cjs/assets/locale/messages_es.json +8 -0
- package/dist/cjs/assets/locale/messages_fi.json +10 -2
- package/dist/cjs/assets/locale/messages_fr.json +8 -0
- package/dist/cjs/assets/locale/messages_he.json +10 -2
- package/dist/cjs/assets/locale/messages_hi.json +8 -0
- package/dist/cjs/assets/locale/messages_hu.json +10 -2
- package/dist/cjs/assets/locale/messages_id.json +8 -0
- package/dist/cjs/assets/locale/messages_it.json +8 -0
- package/dist/cjs/assets/locale/messages_ja.json +8 -0
- package/dist/cjs/assets/locale/messages_ko.json +8 -0
- package/dist/cjs/assets/locale/messages_lt.json +10 -2
- package/dist/cjs/assets/locale/messages_ms.json +10 -2
- package/dist/cjs/assets/locale/messages_nl.json +8 -0
- package/dist/cjs/assets/locale/messages_no.json +8 -0
- package/dist/cjs/assets/locale/messages_pl.json +8 -0
- package/dist/cjs/assets/locale/messages_pt.json +8 -0
- package/dist/cjs/assets/locale/messages_ro.json +10 -2
- package/dist/cjs/assets/locale/messages_ru.json +8 -0
- package/dist/cjs/assets/locale/messages_sk.json +10 -2
- package/dist/cjs/assets/locale/messages_sl.json +10 -2
- package/dist/cjs/assets/locale/messages_sv.json +8 -0
- package/dist/cjs/assets/locale/messages_th.json +8 -0
- package/dist/cjs/assets/locale/messages_tl.json +10 -2
- package/dist/cjs/assets/locale/messages_tr.json +8 -0
- package/dist/cjs/assets/locale/messages_uk.json +8 -0
- package/dist/cjs/assets/locale/messages_vi.json +8 -0
- package/dist/cjs/assets/locale/messages_zh.json +8 -0
- package/dist/cjs/assets/locale/version_file +1 -1
- package/dist/cjs/hooks/index.js +6 -0
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useImport.js +4 -0
- package/dist/cjs/hooks/useImport.js.map +1 -1
- package/dist/cjs/hooks/useSchemaSource.js +11 -0
- package/dist/cjs/hooks/useSchemaSource.js.map +1 -0
- package/dist/cjs/index.js +11 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/translations.js.map +1 -1
- package/dist/cjs/state/ImportState/ImportState.js +104 -15
- package/dist/cjs/state/ImportState/ImportState.js.map +1 -1
- package/dist/cjs/state/ImportState/__tests__/ImportState.engine.spec.js +32 -3
- package/dist/cjs/state/ImportState/__tests__/ImportState.engine.spec.js.map +1 -1
- package/dist/cjs/state/ImportState/__tests__/buildImportConfig.spec.js +156 -0
- package/dist/cjs/state/ImportState/__tests__/buildImportConfig.spec.js.map +1 -0
- package/dist/cjs/state/ImportState/detectFieldType.js +20 -2
- package/dist/cjs/state/ImportState/detectFieldType.js.map +1 -1
- package/dist/cjs/state/SourceState.js +150 -0
- package/dist/cjs/state/SourceState.js.map +1 -0
- package/dist/cjs/state/index.js +7 -0
- package/dist/cjs/state/index.js.map +1 -1
- package/dist/cjs/testkit/createInMemorySchemaSource.js +14 -8
- package/dist/cjs/testkit/createInMemorySchemaSource.js.map +1 -1
- package/dist/cjs/testkit/hubJobImportMocks.js +14 -4
- package/dist/cjs/testkit/hubJobImportMocks.js.map +1 -1
- package/dist/cjs/types/Field.js.map +1 -1
- package/dist/cjs/types/FieldTypeDefinition.js +79 -0
- package/dist/cjs/types/FieldTypeDefinition.js.map +1 -0
- package/dist/cjs/types/FieldsSource.js.map +1 -1
- package/dist/cjs/types/Schema.js.map +1 -1
- package/dist/cjs/types/SchemaSource.js +41 -20
- package/dist/cjs/types/SchemaSource.js.map +1 -1
- package/dist/cjs/types/__tests__/defineSchemaSource.fieldTypes.spec.js +78 -0
- package/dist/cjs/types/__tests__/defineSchemaSource.fieldTypes.spec.js.map +1 -0
- package/dist/esm/assets/locale/messages_ar.json +10 -2
- package/dist/esm/assets/locale/messages_bg.json +10 -2
- package/dist/esm/assets/locale/messages_ca.json +10 -2
- package/dist/esm/assets/locale/messages_cs.json +8 -0
- package/dist/esm/assets/locale/messages_da.json +8 -0
- package/dist/esm/assets/locale/messages_de.json +8 -0
- package/dist/esm/assets/locale/messages_el.json +10 -2
- package/dist/esm/assets/locale/messages_en.json +10 -2
- package/dist/esm/assets/locale/messages_es.json +8 -0
- package/dist/esm/assets/locale/messages_fi.json +10 -2
- package/dist/esm/assets/locale/messages_fr.json +8 -0
- package/dist/esm/assets/locale/messages_he.json +10 -2
- package/dist/esm/assets/locale/messages_hi.json +8 -0
- package/dist/esm/assets/locale/messages_hu.json +10 -2
- package/dist/esm/assets/locale/messages_id.json +8 -0
- package/dist/esm/assets/locale/messages_it.json +8 -0
- package/dist/esm/assets/locale/messages_ja.json +8 -0
- package/dist/esm/assets/locale/messages_ko.json +8 -0
- package/dist/esm/assets/locale/messages_lt.json +10 -2
- package/dist/esm/assets/locale/messages_ms.json +10 -2
- package/dist/esm/assets/locale/messages_nl.json +8 -0
- package/dist/esm/assets/locale/messages_no.json +8 -0
- package/dist/esm/assets/locale/messages_pl.json +8 -0
- package/dist/esm/assets/locale/messages_pt.json +8 -0
- package/dist/esm/assets/locale/messages_ro.json +10 -2
- package/dist/esm/assets/locale/messages_ru.json +8 -0
- package/dist/esm/assets/locale/messages_sk.json +10 -2
- package/dist/esm/assets/locale/messages_sl.json +10 -2
- package/dist/esm/assets/locale/messages_sv.json +8 -0
- package/dist/esm/assets/locale/messages_th.json +8 -0
- package/dist/esm/assets/locale/messages_tl.json +10 -2
- package/dist/esm/assets/locale/messages_tr.json +8 -0
- package/dist/esm/assets/locale/messages_uk.json +8 -0
- package/dist/esm/assets/locale/messages_vi.json +8 -0
- package/dist/esm/assets/locale/messages_zh.json +8 -0
- package/dist/esm/assets/locale/version_file +1 -1
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useImport.js +3 -1
- package/dist/esm/hooks/useImport.js.map +1 -1
- package/dist/esm/hooks/useSchemaSource.js +7 -0
- package/dist/esm/hooks/useSchemaSource.js.map +1 -0
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/state/ImportState/ImportState.js +67 -7
- package/dist/esm/state/ImportState/ImportState.js.map +1 -1
- package/dist/esm/state/ImportState/__tests__/ImportState.engine.spec.js +32 -4
- package/dist/esm/state/ImportState/__tests__/ImportState.engine.spec.js.map +1 -1
- package/dist/esm/state/ImportState/__tests__/buildImportConfig.spec.js +100 -0
- package/dist/esm/state/ImportState/__tests__/buildImportConfig.spec.js.map +1 -0
- package/dist/esm/state/ImportState/detectFieldType.js +15 -15
- package/dist/esm/state/ImportState/detectFieldType.js.map +1 -1
- package/dist/esm/state/SourceState.js +131 -0
- package/dist/esm/state/SourceState.js.map +1 -0
- package/dist/esm/state/index.js +1 -0
- package/dist/esm/state/index.js.map +1 -1
- package/dist/esm/testkit/createInMemorySchemaSource.js +9 -7
- package/dist/esm/testkit/createInMemorySchemaSource.js.map +1 -1
- package/dist/esm/testkit/hubJobImportMocks.js +14 -4
- package/dist/esm/testkit/hubJobImportMocks.js.map +1 -1
- package/dist/esm/types/FieldTypeDefinition.js +16 -0
- package/dist/esm/types/FieldTypeDefinition.js.map +1 -0
- package/dist/esm/types/SchemaSource.js +33 -14
- package/dist/esm/types/SchemaSource.js.map +1 -1
- package/dist/esm/types/__tests__/defineSchemaSource.fieldTypes.spec.js +51 -0
- package/dist/esm/types/__tests__/defineSchemaSource.fieldTypes.spec.js.map +1 -0
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/index.d.ts.map +1 -1
- package/dist/types/hooks/useImport.d.ts +9 -3
- package/dist/types/hooks/useImport.d.ts.map +1 -1
- package/dist/types/hooks/useSchemaSource.d.ts +4 -0
- package/dist/types/hooks/useSchemaSource.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/services/translations.d.ts +1 -1
- package/dist/types/services/translations.d.ts.map +1 -1
- package/dist/types/state/ImportState/ImportState.d.ts +53 -14
- package/dist/types/state/ImportState/ImportState.d.ts.map +1 -1
- package/dist/types/state/ImportState/__tests__/buildImportConfig.spec.d.ts +2 -0
- package/dist/types/state/ImportState/__tests__/buildImportConfig.spec.d.ts.map +1 -0
- package/dist/types/state/ImportState/detectFieldType.d.ts +3 -0
- package/dist/types/state/ImportState/detectFieldType.d.ts.map +1 -1
- package/dist/types/state/SourceState.d.ts +39 -0
- package/dist/types/state/SourceState.d.ts.map +1 -0
- package/dist/types/state/index.d.ts +1 -0
- package/dist/types/state/index.d.ts.map +1 -1
- package/dist/types/testkit/WixPatternsContainer.driver.d.ts +2 -0
- package/dist/types/testkit/WixPatternsContainer.driver.d.ts.map +1 -1
- package/dist/types/testkit/createInMemorySchemaSource.d.ts +12 -7
- package/dist/types/testkit/createInMemorySchemaSource.d.ts.map +1 -1
- package/dist/types/testkit/hubJobImportMocks.d.ts +8 -0
- package/dist/types/testkit/hubJobImportMocks.d.ts.map +1 -1
- package/dist/types/types/Field.d.ts +6 -1
- package/dist/types/types/Field.d.ts.map +1 -1
- package/dist/types/types/FieldTypeDefinition.d.ts +253 -0
- package/dist/types/types/FieldTypeDefinition.d.ts.map +1 -0
- package/dist/types/types/FieldsSource.d.ts +29 -1
- package/dist/types/types/FieldsSource.d.ts.map +1 -1
- package/dist/types/types/Schema.d.ts +10 -6
- package/dist/types/types/Schema.d.ts.map +1 -1
- package/dist/types/types/SchemaSource.d.ts +44 -10
- package/dist/types/types/SchemaSource.d.ts.map +1 -1
- package/dist/types/types/__tests__/defineSchemaSource.fieldTypes.spec.d.ts +2 -0
- package/dist/types/types/__tests__/defineSchemaSource.fieldTypes.spec.d.ts.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import type { ComponentType, MutableRefObject, ReactElement, ReactNode } from 'react';
|
|
2
|
+
import type { Field } from './Field';
|
|
3
|
+
import type { Filter } from '../model/filter';
|
|
4
|
+
import type { FieldsSource } from './FieldsSource';
|
|
5
|
+
export type ValidationRule = {
|
|
6
|
+
type: 'required';
|
|
7
|
+
message: string;
|
|
8
|
+
} | {
|
|
9
|
+
type: 'min' | 'max';
|
|
10
|
+
value: number;
|
|
11
|
+
message: string;
|
|
12
|
+
} | {
|
|
13
|
+
type: 'minLength' | 'maxLength';
|
|
14
|
+
value: number;
|
|
15
|
+
message: string;
|
|
16
|
+
} | {
|
|
17
|
+
type: 'pattern';
|
|
18
|
+
value: RegExp;
|
|
19
|
+
message: string;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'custom';
|
|
22
|
+
validate: (value: unknown) => boolean;
|
|
23
|
+
message: string;
|
|
24
|
+
} | {
|
|
25
|
+
type: 'specificValues';
|
|
26
|
+
values: {
|
|
27
|
+
id: string;
|
|
28
|
+
value: string;
|
|
29
|
+
}[];
|
|
30
|
+
message: string;
|
|
31
|
+
};
|
|
32
|
+
export interface Focusable {
|
|
33
|
+
focus: () => void;
|
|
34
|
+
}
|
|
35
|
+
export type EditTrigger = {
|
|
36
|
+
kind: 'type';
|
|
37
|
+
key: string;
|
|
38
|
+
} | 'enter' | 'click' | 'doubleClick';
|
|
39
|
+
export interface CellViewProps<V> {
|
|
40
|
+
value: V;
|
|
41
|
+
typeConfig?: unknown;
|
|
42
|
+
validation?: ValidationRule[];
|
|
43
|
+
/** Stable id of the column. Cell components can use it to derive unique DOM ids. */
|
|
44
|
+
columnId: string;
|
|
45
|
+
/** Stable key of the row. Cell components can use it to derive unique DOM ids. */
|
|
46
|
+
rowKey: string;
|
|
47
|
+
}
|
|
48
|
+
export interface CellEditProps<V> {
|
|
49
|
+
value: V;
|
|
50
|
+
onChange(value: V): void;
|
|
51
|
+
onCommit: () => void;
|
|
52
|
+
onCancel: () => void;
|
|
53
|
+
/**
|
|
54
|
+
* Signals that the cell is starting an editing operation that will move focus
|
|
55
|
+
* outside the table (e.g., opening a media manager or a modal). Calling this
|
|
56
|
+
* sets isEditing=true so the table does not clear cell focus while the
|
|
57
|
+
* external UI is open. Pair with onCommit (after the operation succeeds)
|
|
58
|
+
* or onCancel (if the user dismisses without a value change).
|
|
59
|
+
*/
|
|
60
|
+
onStartEdit?: () => void;
|
|
61
|
+
/** Ref to the focusable input element. Used for type-to-edit (focusing the input when user starts typing on a focused cell). */
|
|
62
|
+
inputRef?: MutableRefObject<Focusable | undefined | null>;
|
|
63
|
+
typeConfig?: unknown;
|
|
64
|
+
/** How edit mode was triggered. Edit components can use this to customize behavior (e.g., date picker auto-opens on 'type'). */
|
|
65
|
+
editTrigger?: EditTrigger | null;
|
|
66
|
+
/** Column-level validation rules. Edit components can derive UI behavior (e.g., maxLength blocking/tooltip) from these. */
|
|
67
|
+
validation?: ValidationRule[];
|
|
68
|
+
/** Stable id of the column. Cell components can use it to derive unique DOM ids. */
|
|
69
|
+
columnId: string;
|
|
70
|
+
/** Stable key of the row. Cell components can use it to derive unique DOM ids. */
|
|
71
|
+
rowKey: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Props passed to a cell type's optional `EditWrapper`. The table mounts the
|
|
75
|
+
* wrapper around the cell content and keeps it mounted across the edit↔view
|
|
76
|
+
* transition, so the wrapper can own behavior that must outlive the inline
|
|
77
|
+
* editor (e.g. a reference cell navigating to an overlay and refreshing on
|
|
78
|
+
* return). The wrapper hands anything the editor needs down via its own context.
|
|
79
|
+
*/
|
|
80
|
+
export interface CellEditWrapperProps {
|
|
81
|
+
/** The column's typeConfig (same value handed to the cell's Edit/View). */
|
|
82
|
+
typeConfig?: unknown;
|
|
83
|
+
/** Stable id of the column. */
|
|
84
|
+
columnId: string;
|
|
85
|
+
/** Stable key of the row. */
|
|
86
|
+
rowKey: string;
|
|
87
|
+
/** The cell content (the Edit or View component) to render inside the wrapper. */
|
|
88
|
+
children: ReactNode;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The editable-cell slot of a field type definition: how a cell of that type
|
|
92
|
+
* renders, edits, and moves through the clipboard. The definition's key
|
|
93
|
+
* identifies the type and the definition's `value` owns validation, so the
|
|
94
|
+
* slot carries neither.
|
|
95
|
+
*
|
|
96
|
+
* Members that take `V` use method syntax so a definition typed with a
|
|
97
|
+
* concrete value type stays assignable where a loosely typed definition is
|
|
98
|
+
* expected (see `FieldTypeDefinition`).
|
|
99
|
+
*/
|
|
100
|
+
export interface EditableCellConfig<V> {
|
|
101
|
+
/** Render cell in view mode (read-only display). */
|
|
102
|
+
ViewComponent(props: CellViewProps<V>): ReactElement | null;
|
|
103
|
+
/** Render cell in edit mode (inline editor). Optional — omit for view-only cells. */
|
|
104
|
+
EditComponent?(props: CellEditProps<V>): ReactElement | null;
|
|
105
|
+
/** Serialize value to clipboard string. */
|
|
106
|
+
serialize?(value: V): string;
|
|
107
|
+
/** Deserialize clipboard string to value. */
|
|
108
|
+
deserialize?(raw: string): V;
|
|
109
|
+
/** Can this cell type be edited? (default: true) */
|
|
110
|
+
editable?: boolean;
|
|
111
|
+
/** Can this cell type be cleared with Delete key? (default: true) */
|
|
112
|
+
clearable?: boolean;
|
|
113
|
+
/** Toggle value on single click (e.g., boolean checkbox). Skips focus→edit flow. */
|
|
114
|
+
toggleValue?(value: V): V;
|
|
115
|
+
/** Enter edit mode on single click (e.g., image cell with no value). */
|
|
116
|
+
editOnClick?(value: V): boolean;
|
|
117
|
+
/** Show the EditComponent when the cell is focused, without entering edit mode.
|
|
118
|
+
* Keyboard navigation remains active. Similar to toggleValue but without toggling. */
|
|
119
|
+
showEditWhenFocused?: boolean;
|
|
120
|
+
/** Optional wrapper component the cell type defines to own behavior that must
|
|
121
|
+
* outlive the inline editor. Mounted around the cell content and kept mounted
|
|
122
|
+
* across the edit↔view transition. */
|
|
123
|
+
EditWrapper?: ComponentType<CellEditWrapperProps>;
|
|
124
|
+
/** Cell content can grow past row height when focused. Only applies to
|
|
125
|
+
* showEditWhenFocused cells. */
|
|
126
|
+
growable?: boolean;
|
|
127
|
+
/** Called on type-to-edit. Return object with cleared value and/or prevent flag.
|
|
128
|
+
* Return undefined to block the key. Return {} to enter edit mode without changing the value. */
|
|
129
|
+
onTypeToEdit?(params: {
|
|
130
|
+
key: string;
|
|
131
|
+
validation?: ValidationRule[];
|
|
132
|
+
}): {
|
|
133
|
+
value?: V;
|
|
134
|
+
} | undefined;
|
|
135
|
+
/** Optional hook to normalize the committed value (e.g. auto-prepend https://).
|
|
136
|
+
* Called before the edit commits; the value is written back before committing. */
|
|
137
|
+
normalizeOnCommit?(value: V): V;
|
|
138
|
+
/** When true, type-to-edit flushes the edit-mode render synchronously and
|
|
139
|
+
* focuses the input within the same keydown event, then lets the browser's
|
|
140
|
+
* default action deliver the keystroke to the now-focused input naturally.
|
|
141
|
+
* Use for cells that wrap a controlled input whose value can't be seeded via props. */
|
|
142
|
+
nativeTypeToEdit?: boolean;
|
|
143
|
+
}
|
|
144
|
+
/** The props the filter builder passes to a definition's toolbar filter
|
|
145
|
+
* component — the same contract the built-in filter elements receive. */
|
|
146
|
+
export interface FilterTypeComponentProps<V = any> {
|
|
147
|
+
filter: Filter<V>;
|
|
148
|
+
toolbarItemProps?: {
|
|
149
|
+
label?: ReactNode;
|
|
150
|
+
};
|
|
151
|
+
toolbarTagProps?: {
|
|
152
|
+
label?: string;
|
|
153
|
+
};
|
|
154
|
+
accordionItemProps?: {
|
|
155
|
+
label?: string;
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/** The filter slot of a field type definition: the filter state registered on
|
|
159
|
+
* the collection query and the toolbar element that renders it. */
|
|
160
|
+
export interface FilterTypeConfig {
|
|
161
|
+
createFilter: (field: Field) => Filter<any>;
|
|
162
|
+
Component: ComponentType<FilterTypeComponentProps>;
|
|
163
|
+
}
|
|
164
|
+
/** Narrows a definition's filter slot to an active filter config. */
|
|
165
|
+
export declare function isFilterTypeConfig(filter: FieldTypeDefinition['filter']): filter is FilterTypeConfig;
|
|
166
|
+
/**
|
|
167
|
+
* The read-only table slot of a field type definition: how a cell of that
|
|
168
|
+
* type renders in the table, and the column's layout. Independent of
|
|
169
|
+
* `editableTable` — neither slot falls back to the other.
|
|
170
|
+
*/
|
|
171
|
+
export interface TableCellConfig<V> {
|
|
172
|
+
/** Render the cell. Method syntax keeps the definition assignable to
|
|
173
|
+
* `FieldTypeDefinition<unknown>` (see FieldTypeDefinition). */
|
|
174
|
+
CellComponent(props: {
|
|
175
|
+
value: V;
|
|
176
|
+
}): ReactElement | null;
|
|
177
|
+
/** Column width. Required — custom types get no built-in layout default. */
|
|
178
|
+
width: string;
|
|
179
|
+
/** Default: 'start'. */
|
|
180
|
+
align?: 'start' | 'center' | 'end';
|
|
181
|
+
}
|
|
182
|
+
/** An extra menu item a field type definition adds to a field's actions menu. */
|
|
183
|
+
export interface FieldTypeActionItem {
|
|
184
|
+
key: string;
|
|
185
|
+
label: string;
|
|
186
|
+
icon?: ReactNode;
|
|
187
|
+
skin?: 'destructive';
|
|
188
|
+
onClick: (field: Field) => void;
|
|
189
|
+
/** Default: visible. */
|
|
190
|
+
visible?: (field: Field) => boolean;
|
|
191
|
+
/** Returning a string disables the item and shows the tooltip. */
|
|
192
|
+
disabledTooltip?: (field: Field) => string | undefined;
|
|
193
|
+
}
|
|
194
|
+
/** The actions slot of a field type definition: extra items for the field's "more actions" menu. */
|
|
195
|
+
export interface FieldActionsConfig {
|
|
196
|
+
items?: FieldTypeActionItem[];
|
|
197
|
+
}
|
|
198
|
+
/** Display metadata for a field type: menu label and type icons. */
|
|
199
|
+
export interface FieldTypeDisplay {
|
|
200
|
+
label: string;
|
|
201
|
+
icons: {
|
|
202
|
+
Small: ComponentType;
|
|
203
|
+
Medium: ComponentType;
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/** Value semantics of a field type, independent of any rendering surface.
|
|
207
|
+
* Members use method syntax so a definition typed with a concrete value type
|
|
208
|
+
* stays assignable where a loosely typed definition is expected. */
|
|
209
|
+
export interface FieldValueBehavior<V> {
|
|
210
|
+
defaultValue?: V;
|
|
211
|
+
isEmpty?(value: V): boolean;
|
|
212
|
+
/** Returns an error message, or null when the value is valid. Every surface
|
|
213
|
+
* that validates a field of this type runs this. */
|
|
214
|
+
validate?(value: V, rules?: ValidationRule[]): string | null;
|
|
215
|
+
}
|
|
216
|
+
export interface FieldCapabilities {
|
|
217
|
+
sortable: boolean;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* A consumer-defined field type. Defined once on the fields source; every
|
|
221
|
+
* entry point that renders the field resolves its slot from here. `V` is the
|
|
222
|
+
* field's value type — `defineFieldType` infers it, and it keeps all the
|
|
223
|
+
* slots consistent with each other.
|
|
224
|
+
*
|
|
225
|
+
* Sources hold definitions of mixed value types in one
|
|
226
|
+
* `FieldTypeDefinition[]` (= `FieldTypeDefinition<unknown>[]`) array. That
|
|
227
|
+
* works because every member that takes `V` is declared with method syntax,
|
|
228
|
+
* which TypeScript checks bivariantly — so `FieldTypeDefinition<number>` is
|
|
229
|
+
* assignable to `FieldTypeDefinition<unknown>` without casts.
|
|
230
|
+
*/
|
|
231
|
+
export interface FieldTypeDefinition<V = unknown> {
|
|
232
|
+
/** Unique key for the type. A built-in type uses its `PatternsFieldType`; a
|
|
233
|
+
* consumer-defined type uses the string its fields reference via `customType`. */
|
|
234
|
+
type: string;
|
|
235
|
+
display: FieldTypeDisplay;
|
|
236
|
+
/** Filter behavior, or an explicit opt-out — never silently absent. */
|
|
237
|
+
filter: FilterTypeConfig | {
|
|
238
|
+
filterable: false;
|
|
239
|
+
};
|
|
240
|
+
value?: FieldValueBehavior<V>;
|
|
241
|
+
capabilities?: FieldCapabilities;
|
|
242
|
+
/** Absent ⇒ the field renders with the default cell in the read-only table. */
|
|
243
|
+
table?: TableCellConfig<V>;
|
|
244
|
+
/** Absent ⇒ the field renders as a read-only cell in editable surfaces. */
|
|
245
|
+
editableTable?: EditableCellConfig<V>;
|
|
246
|
+
/** Extra items for the field's "more actions" menu. */
|
|
247
|
+
actions?: FieldActionsConfig;
|
|
248
|
+
}
|
|
249
|
+
/** Identity factory: infers `V` and keeps the definition's slots type-checked. */
|
|
250
|
+
export declare function defineFieldType<V>(definition: FieldTypeDefinition<V>): FieldTypeDefinition<V>;
|
|
251
|
+
/** Resolves the definition a CUSTOM field references on its source. */
|
|
252
|
+
export declare function resolveFieldTypeDefinition(source: Pick<FieldsSource, 'fieldTypes'>, field: Field): FieldTypeDefinition<unknown> | undefined;
|
|
253
|
+
//# sourceMappingURL=FieldTypeDefinition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldTypeDefinition.d.ts","sourceRoot":"","sources":["../../../src/types/FieldTypeDefinition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Field, PatternsFieldType } from './Field';
|
|
2
2
|
import type { FieldActions, Schema } from './Schema';
|
|
3
|
+
import type { FieldTypeDefinition } from './FieldTypeDefinition';
|
|
3
4
|
/** A field the source has archived. Sources without archiving omit `archive`. */
|
|
4
5
|
export interface ArchivedFieldItem {
|
|
5
6
|
id: string;
|
|
@@ -12,6 +13,9 @@ export interface FieldTypeOption {
|
|
|
12
13
|
id: string;
|
|
13
14
|
label: string;
|
|
14
15
|
namePlaceholder?: string;
|
|
16
|
+
subtitle?: string;
|
|
17
|
+
/** Group heading in the type list; types sharing a heading form one group. */
|
|
18
|
+
group?: string;
|
|
15
19
|
/** Drives the type icon in the modal. */
|
|
16
20
|
patternsType: PatternsFieldType;
|
|
17
21
|
}
|
|
@@ -39,6 +43,23 @@ export interface FieldDraft {
|
|
|
39
43
|
writeUsers: boolean;
|
|
40
44
|
containsPii: boolean;
|
|
41
45
|
}
|
|
46
|
+
/** The add-modal subtitle: a line of text, an optional second note line, and an
|
|
47
|
+
* optional "learn more" link. */
|
|
48
|
+
export interface FieldModalSubtitle {
|
|
49
|
+
text: string;
|
|
50
|
+
note?: string;
|
|
51
|
+
learnMore?: {
|
|
52
|
+
label: string;
|
|
53
|
+
href: string;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** Title and subtitle a source supplies for the add/edit field modal. */
|
|
57
|
+
export interface FieldModalText {
|
|
58
|
+
addTitle: string;
|
|
59
|
+
editTitle: string;
|
|
60
|
+
/** Subtitle for the add modal; omit for none. */
|
|
61
|
+
addSubtitle?: FieldModalSubtitle;
|
|
62
|
+
}
|
|
42
63
|
/** Add/edit/delete capability a source exposes. Present ⇒ field management UI shows. */
|
|
43
64
|
export interface FieldManagement {
|
|
44
65
|
/** False ⇒ the add-field CTA is hidden entirely. */
|
|
@@ -58,8 +79,11 @@ export interface FieldManagement {
|
|
|
58
79
|
maxReached?: boolean;
|
|
59
80
|
/** Permission defaults; absent ⇒ the modal hides the permissions section. */
|
|
60
81
|
permissions?: FieldPermissions;
|
|
61
|
-
/**
|
|
82
|
+
/** Source-wide default for whether a field type can be marked PII. A field
|
|
83
|
+
* type overrides it by declaring `form.pii` in its definition. */
|
|
62
84
|
supportsPii?: boolean;
|
|
85
|
+
/** Title and subtitle for the add/edit field modal. */
|
|
86
|
+
fieldModalText: FieldModalText;
|
|
63
87
|
addField(draft: FieldDraft): Promise<void>;
|
|
64
88
|
editField(fieldId: string, draft: FieldDraft): Promise<void>;
|
|
65
89
|
/** Current values for an existing field, to prefill the edit modal. */
|
|
@@ -104,6 +128,10 @@ export interface FieldsSource {
|
|
|
104
128
|
* columns with no refetch. Present when the source holds its fields in a
|
|
105
129
|
* mergeable state (e.g. a loaded schema); used after an import creates fields. */
|
|
106
130
|
mergeFields?(fields: Schema['fields']): void;
|
|
131
|
+
/** Field-type definitions the source supports. Built-in types are keyed by
|
|
132
|
+
* their `PatternsFieldType`; consumer-defined types are keyed by the string a
|
|
133
|
+
* field references via `customType`. */
|
|
134
|
+
fieldTypes?: FieldTypeDefinition[];
|
|
107
135
|
/** Present when fields can be added/edited/deleted. */
|
|
108
136
|
fieldManagement?: FieldManagement;
|
|
109
137
|
/** The collection's field-mutation actions (delete/makePrimary/duplicate/…),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldsSource.d.ts","sourceRoot":"","sources":["../../../src/types/FieldsSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"FieldsSource.d.ts","sourceRoot":"","sources":["../../../src/types/FieldsSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,8 @@ export interface Schema {
|
|
|
24
24
|
displayField: string;
|
|
25
25
|
/** The identifier field. */
|
|
26
26
|
idField: string;
|
|
27
|
+
/** Group display order, present when fields carry a `group`. */
|
|
28
|
+
groups?: string[];
|
|
27
29
|
/** Absent when the schema's fields cannot be edited. */
|
|
28
30
|
schemaPermissions?: SchemaPermissions;
|
|
29
31
|
itemPermissions?: ItemPermissions;
|
|
@@ -53,13 +55,15 @@ export interface BulkInsertResult {
|
|
|
53
55
|
failed?: number;
|
|
54
56
|
errors?: BulkInsertError[];
|
|
55
57
|
}
|
|
56
|
-
/** Item data access shared by both pagination modes.
|
|
58
|
+
/** Item data access shared by both pagination modes. `find` (on
|
|
59
|
+
* `CollectionBackend`) is the only required call — the rest are capabilities
|
|
60
|
+
* a source provides when it (or its consumer) supports them. */
|
|
57
61
|
export interface CollectionBackendBase<T = Record<string, unknown>> {
|
|
58
|
-
get
|
|
59
|
-
create
|
|
60
|
-
update
|
|
61
|
-
delete
|
|
62
|
-
bulkDelete
|
|
62
|
+
get?: (entityId: string) => Promise<T>;
|
|
63
|
+
create?: (entity: Partial<T>) => Promise<T>;
|
|
64
|
+
update?: (entity: T) => Promise<T>;
|
|
65
|
+
delete?: (entityId: string) => Promise<void>;
|
|
66
|
+
bulkDelete?: (entityIds: string[]) => Promise<void>;
|
|
63
67
|
move?: (id: string, params: {
|
|
64
68
|
moveAfterId: string | null | undefined;
|
|
65
69
|
}) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../src/types/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,YAAY,EACb,MAAM,+BAA+B,CAAC;AAEvC,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,mCAAmC;AACnC,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;IAC1C,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,iBAAiB,EAAE,CACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,kBAAkB,CAAC,EAAE,CACnB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED
|
|
1
|
+
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../src/types/Schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Field, PatternsFieldType } from './Field';
|
|
2
|
+
import type { FieldTypeDefinition } from './FieldTypeDefinition';
|
|
2
3
|
import type { Schema, LoadedSchema } from './Schema';
|
|
3
|
-
import type { FieldPermissions } from './FieldsSource';
|
|
4
|
+
import type { FieldModalText, FieldPermissions } from './FieldsSource';
|
|
4
5
|
import type { OffsetQuery, OffsetQueryResult } from '../hooks/paginationModeConfig';
|
|
5
6
|
/** A field type a source allows creating. Declare one entry per
|
|
6
7
|
* `patternsType` — the type is the entry's identity. */
|
|
@@ -10,19 +11,22 @@ export interface CreatableFieldType {
|
|
|
10
11
|
label?: string;
|
|
11
12
|
/** Custom name-input placeholder. Absent ⇒ the UI's standard placeholder. */
|
|
12
13
|
namePlaceholder?: string;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
itemKey: (item: T) => string;
|
|
20
|
-
itemName: (item: T) => string;
|
|
14
|
+
/** A one-line description shown under the type in the add-field menu. */
|
|
15
|
+
subtitle?: string;
|
|
16
|
+
/** The group heading this type is listed under in the add-field menu, in
|
|
17
|
+
* first-seen order. Types sharing a heading form one group. Absent ⇒
|
|
18
|
+
* ungrouped. */
|
|
19
|
+
group?: string;
|
|
21
20
|
}
|
|
22
21
|
/** What a caller passes. Only `collectionId` and `loadSchema` are required. */
|
|
23
22
|
export interface SchemaSourceInput<T> {
|
|
24
23
|
collectionId: string;
|
|
25
24
|
loadSchema: () => Promise<LoadedSchema<T>>;
|
|
25
|
+
/** Sources for collections this one references, keyed by the referenced
|
|
26
|
+
* collection id. A renderer resolves a reference field through the matching
|
|
27
|
+
* entry — its `loadSchema` gives the referenced schema and `sourceFetchData`
|
|
28
|
+
* queries the referenced items. Default: none. */
|
|
29
|
+
references?: Record<string, SchemaSource<any>>;
|
|
26
30
|
paginationMode?: 'offset';
|
|
27
31
|
/** Stable row identity. Default: `row[idField]`. */
|
|
28
32
|
itemKey?: (item: T) => string;
|
|
@@ -32,6 +36,9 @@ export interface SchemaSourceInput<T> {
|
|
|
32
36
|
searchableFieldIds?: (schema: Schema) => string[];
|
|
33
37
|
/** Field types the add-field modal offers. Default: none. */
|
|
34
38
|
creatableFieldTypes?: CreatableFieldType[];
|
|
39
|
+
/** Consumer-defined field types. A field with `type: 'CUSTOM'` resolves its
|
|
40
|
+
* definition here by `customType`. Default: none. */
|
|
41
|
+
fieldTypes?: FieldTypeDefinition[];
|
|
35
42
|
/** Default: `schemaPermissions.createField`. */
|
|
36
43
|
canAddFields?: (schema: Schema) => boolean;
|
|
37
44
|
/** Default: `schemaPermissions.updateField && !field.isSystem`. */
|
|
@@ -42,20 +49,47 @@ export interface SchemaSourceInput<T> {
|
|
|
42
49
|
fieldPermissions?: FieldPermissions;
|
|
43
50
|
/** Default: `false`. */
|
|
44
51
|
supportsPii?: boolean;
|
|
52
|
+
/** Title and subtitle for the add/edit field modal. Absent ⇒ generic default. */
|
|
53
|
+
fieldModalText?: FieldModalText;
|
|
54
|
+
/** The value of a field on an item. Default: `item[field.id]`. */
|
|
55
|
+
getFieldValue?: (item: T, field: Field) => unknown;
|
|
56
|
+
/** Writes a field's value on an item, returning the updated item.
|
|
57
|
+
* Default: `{ ...item, [field.id]: value }`. */
|
|
58
|
+
setFieldValue?: (item: T, field: Field, value: unknown) => T;
|
|
45
59
|
}
|
|
46
60
|
/** The resolved source: defaults filled, `loadSchema` memoized. */
|
|
47
61
|
export interface SchemaSource<T> {
|
|
48
62
|
readonly collectionId: string;
|
|
49
63
|
loadSchema: () => Promise<LoadedSchema<T>>;
|
|
50
|
-
readonly
|
|
64
|
+
readonly paginationMode: 'offset';
|
|
65
|
+
/** Stable row identity. */
|
|
66
|
+
itemKey: (item: T) => string;
|
|
67
|
+
/** Row display label. */
|
|
68
|
+
itemName: (item: T) => string;
|
|
69
|
+
/** Sources for referenced collections, keyed by referenced collection id. */
|
|
70
|
+
readonly references: Record<string, SchemaSource<any>>;
|
|
51
71
|
readonly creatableFieldTypes: CreatableFieldType[];
|
|
72
|
+
readonly fieldTypes: FieldTypeDefinition[];
|
|
52
73
|
searchableFieldIds: (schema: Schema) => string[];
|
|
53
74
|
canAddFields: (schema: Schema) => boolean;
|
|
54
75
|
canEditField: (field: Field, schema: Schema) => boolean;
|
|
55
76
|
canDeleteField: (field: Field, schema: Schema) => boolean;
|
|
56
77
|
readonly fieldPermissions?: FieldPermissions;
|
|
57
78
|
readonly supportsPii: boolean;
|
|
79
|
+
readonly fieldModalText?: FieldModalText;
|
|
80
|
+
/** The value of a field on an item. */
|
|
81
|
+
getFieldValue: (item: T, field: Field) => unknown;
|
|
82
|
+
/** Writes a field's value on an item, returning the updated item. */
|
|
83
|
+
setFieldValue: (item: T, field: Field, value: unknown) => T;
|
|
58
84
|
}
|
|
85
|
+
/** The collection fetch derived from a source: loads once, then queries the
|
|
86
|
+
* backend's `find`.
|
|
87
|
+
*
|
|
88
|
+
* Free-text search covers the columns the page is showing: the table keeps
|
|
89
|
+
* `query.columns` in sync with them, so the scope comes off the query rather
|
|
90
|
+
* than being threaded in. Falls back to the source's own `searchableFieldIds`
|
|
91
|
+
* before any columns are known (or with no table attached). */
|
|
92
|
+
export declare function sourceFetchData<T>(source: SchemaSource<T>): (query: OffsetQuery) => Promise<OffsetQueryResult<T>>;
|
|
59
93
|
/** Fills source-neutral defaults over `input` and memoizes the load so the collection
|
|
60
94
|
* query and the table columns share a single fetch. */
|
|
61
95
|
export declare function defineSchemaSource<T>(input: SchemaSourceInput<T>): SchemaSource<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaSource.d.ts","sourceRoot":"","sources":["../../../src/types/SchemaSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAe,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemaSource.d.ts","sourceRoot":"","sources":["../../../src/types/SchemaSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineSchemaSource.fieldTypes.spec.d.ts","sourceRoot":"","sources":["../../../../src/types/__tests__/defineSchemaSource.fieldTypes.spec.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/bex-core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.337.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Kobi",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"exports"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@wix/bex-utils": "2.
|
|
44
|
+
"@wix/bex-utils": "2.124.0",
|
|
45
45
|
"chance": "^1.0.0",
|
|
46
46
|
"events": "^3.0.0",
|
|
47
47
|
"formstate": "^2.1.0",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"@types/react": "^16.0.0",
|
|
64
64
|
"@wix/auto-crud": "^1.0.108",
|
|
65
65
|
"@wix/babel-cli": "^1.11.0",
|
|
66
|
-
"@wix/cairo-integration-utils": "1.
|
|
66
|
+
"@wix/cairo-integration-utils": "1.99.0",
|
|
67
67
|
"@wix/eslint-config-yoshi": "^6.74.0",
|
|
68
68
|
"@wix/fe-essentials": "^1.233.0",
|
|
69
69
|
"@wix/fe-essentials-standalone": "^1.374.0",
|
|
@@ -169,5 +169,5 @@
|
|
|
169
169
|
"wallaby": {
|
|
170
170
|
"autoDetect": true
|
|
171
171
|
},
|
|
172
|
-
"falconPackageHash": "
|
|
172
|
+
"falconPackageHash": "9e8daff437b8846c5191500f8a4eb4d94cd28215cd481467ccb364f5"
|
|
173
173
|
}
|