@dereekb/dbx-components-mcp 13.10.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/LICENSE +21 -0
- package/README.md +75 -0
- package/dbx-components-mcp.js +21503 -0
- package/generated/dereekb-date.semantic-types.mcp.generated.json +234 -0
- package/generated/dereekb-dbx-core.actions.mcp.generated.json +751 -0
- package/generated/dereekb-dbx-core.filters.mcp.generated.json +179 -0
- package/generated/dereekb-dbx-core.pipes.mcp.generated.json +681 -0
- package/generated/dereekb-dbx-form.forge-fields.mcp.generated.json +2556 -0
- package/generated/dereekb-dbx-web.ui-components.mcp.generated.json +2853 -0
- package/generated/dereekb-firebase-server.semantic-types.mcp.generated.json +66 -0
- package/generated/dereekb-firebase.semantic-types.mcp.generated.json +702 -0
- package/generated/dereekb-model.semantic-types.mcp.generated.json +365 -0
- package/generated/dereekb-util.semantic-types.mcp.generated.json +1997 -0
- package/package.json +13 -0
|
@@ -0,0 +1,2556 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"source": "@dereekb/dbx-form",
|
|
4
|
+
"module": "@dereekb/dbx-form",
|
|
5
|
+
"generatedAt": "1970-01-01T00:00:00.000Z",
|
|
6
|
+
"generator": "@dereekb/dbx-components-mcp/scripts/generate-manifests.mjs",
|
|
7
|
+
"entries": [
|
|
8
|
+
{
|
|
9
|
+
"slug": "password-field",
|
|
10
|
+
"factoryName": "dbxForgeTextPasswordField",
|
|
11
|
+
"tier": "field-derivative",
|
|
12
|
+
"produces": "string",
|
|
13
|
+
"arrayOutput": "no",
|
|
14
|
+
"description": "Password input (HTML `type=\"password\"`) with secure autocomplete defaults.\n\nDefaults to the key `'password'` and label `'Password'` unless overridden.",
|
|
15
|
+
"sourcePath": "template/login.ts",
|
|
16
|
+
"example": "dbxForgeTextPasswordField({ key: 'password', required: true })",
|
|
17
|
+
"properties": [],
|
|
18
|
+
"composesFromSlugs": [
|
|
19
|
+
"text"
|
|
20
|
+
],
|
|
21
|
+
"configInterface": "DbxForgeTextPasswordFieldConfig",
|
|
22
|
+
"sourceLocation": {
|
|
23
|
+
"file": "src/lib/forge/template/login.ts",
|
|
24
|
+
"line": 54
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"slug": "verify-password-field",
|
|
29
|
+
"factoryName": "dbxForgeTextVerifyPasswordField",
|
|
30
|
+
"tier": "field-derivative",
|
|
31
|
+
"produces": "string",
|
|
32
|
+
"arrayOutput": "no",
|
|
33
|
+
"description": "Companion to `password-field` for sign-up flows. Defaults `autocomplete` to `new-password`. Pair with `password-with-verify-fields` for cross-field equality validation.\n\nDefaults to the key `'verifyPassword'` and label `'Verify Password'` unless overridden.",
|
|
34
|
+
"sourcePath": "template/login.ts",
|
|
35
|
+
"example": "dbxForgeTextVerifyPasswordField({ key: 'verifyPassword' })",
|
|
36
|
+
"properties": [],
|
|
37
|
+
"composesFromSlugs": [
|
|
38
|
+
"password-field"
|
|
39
|
+
],
|
|
40
|
+
"configInterface": "DbxForgeTextPasswordFieldConfig",
|
|
41
|
+
"sourceLocation": {
|
|
42
|
+
"file": "src/lib/forge/template/login.ts",
|
|
43
|
+
"line": 85
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"slug": "password-with-verify-fields",
|
|
48
|
+
"factoryName": "dbxForgeTextPasswordWithVerifyField",
|
|
49
|
+
"tier": "template-builder",
|
|
50
|
+
"produces": "FieldDef[]",
|
|
51
|
+
"arrayOutput": "no",
|
|
52
|
+
"description": "Password + verify-password pair with cross-field equality validation wired up. Drop-in for sign-up flows.\n\nThe verify password field uses an expression-based custom validator that compares the\nverify field value against the primary password field's value via `formValue`.",
|
|
53
|
+
"sourcePath": "template/login.ts",
|
|
54
|
+
"example": "dbxForgeTextPasswordWithVerifyField({ password: { required: true } })",
|
|
55
|
+
"properties": [
|
|
56
|
+
{
|
|
57
|
+
"name": "password",
|
|
58
|
+
"type": "DbxForgeTextPasswordFieldConfig",
|
|
59
|
+
"description": "Optional configuration for the primary password field.",
|
|
60
|
+
"required": false
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "verifyPassword",
|
|
64
|
+
"type": "DbxForgeTextPasswordFieldConfig",
|
|
65
|
+
"description": "Optional configuration for the verify/confirm password field.",
|
|
66
|
+
"required": false
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"composesFromSlugs": [
|
|
70
|
+
"password-field",
|
|
71
|
+
"verify-password-field"
|
|
72
|
+
],
|
|
73
|
+
"configInterface": "DbxForgeTextPasswordWithVerifyFieldConfig",
|
|
74
|
+
"sourceLocation": {
|
|
75
|
+
"file": "src/lib/forge/template/login.ts",
|
|
76
|
+
"line": 131
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"slug": "username-password-login-fields",
|
|
81
|
+
"factoryName": "dbxForgeUsernamePasswordLoginFields",
|
|
82
|
+
"tier": "template-builder",
|
|
83
|
+
"produces": "FieldDef[]",
|
|
84
|
+
"arrayOutput": "no",
|
|
85
|
+
"description": "Complete login/signup field set: username, password, and optional verify-password. Drop into the top-level `fields: []`.\n\nWhen `verifyPassword` is provided, a second password field is added with a custom\nvalidator that ensures both password values match.",
|
|
86
|
+
"sourcePath": "template/login.ts",
|
|
87
|
+
"example": "dbxForgeUsernamePasswordLoginFields({ username: 'email', verifyPassword: true })",
|
|
88
|
+
"properties": [
|
|
89
|
+
{
|
|
90
|
+
"name": "username",
|
|
91
|
+
"type": "DbxForgeUsernameLoginFieldUsernameConfigInput",
|
|
92
|
+
"description": "Username field configuration. Use `'email'` or `'username'` for defaults,\nor provide a custom config.",
|
|
93
|
+
"required": true
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"name": "password",
|
|
97
|
+
"type": "DbxForgeTextPasswordFieldConfig",
|
|
98
|
+
"description": "Optional configuration for the password field.",
|
|
99
|
+
"required": false
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"name": "verifyPassword",
|
|
103
|
+
"type": "Maybe<boolean | DbxForgeTextPasswordFieldConfig>",
|
|
104
|
+
"description": "Whether to include a verify password field, or a custom configuration for it.\nSet to `true` for defaults, `false`/`undefined` to omit, or pass a config object.",
|
|
105
|
+
"required": false
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"composesFromSlugs": [
|
|
109
|
+
"username-login-field",
|
|
110
|
+
"password-field",
|
|
111
|
+
"verify-password-field"
|
|
112
|
+
],
|
|
113
|
+
"configInterface": "DbxForgeUsernameLoginFieldsConfig",
|
|
114
|
+
"sourceLocation": {
|
|
115
|
+
"file": "src/lib/forge/template/login.ts",
|
|
116
|
+
"line": 229
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"slug": "username-login-field",
|
|
121
|
+
"factoryName": "dbxForgeUsernameLoginField",
|
|
122
|
+
"tier": "field-derivative",
|
|
123
|
+
"produces": "string",
|
|
124
|
+
"arrayOutput": "no",
|
|
125
|
+
"description": "Username field for login forms. Accepts `\"email\"` or `\"username\"` as shorthand presets, or a full config object.\n\nSupports email or plain text input based on the provided configuration.",
|
|
126
|
+
"sourcePath": "template/login.ts",
|
|
127
|
+
"example": "dbxForgeUsernameLoginField({ username: 'email' })",
|
|
128
|
+
"properties": [
|
|
129
|
+
{
|
|
130
|
+
"name": "email",
|
|
131
|
+
"type": "Omit<DbxForgeEmailFieldConfig, 'key'>",
|
|
132
|
+
"description": "Configuration for an email-based username field.",
|
|
133
|
+
"required": false
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "username",
|
|
137
|
+
"type": "Omit<DbxForgeTextFieldConfig, 'key'>",
|
|
138
|
+
"description": "Configuration for a plain text username field.",
|
|
139
|
+
"required": false
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"composesFromSlugs": [
|
|
143
|
+
"text"
|
|
144
|
+
],
|
|
145
|
+
"configInterface": "DbxForgeUsernameLoginFieldUsernameConfigInput",
|
|
146
|
+
"sourceLocation": {
|
|
147
|
+
"file": "src/lib/forge/template/login.ts",
|
|
148
|
+
"line": 270
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"slug": "checklist",
|
|
153
|
+
"factoryName": "dbxForgeChecklistField",
|
|
154
|
+
"tier": "field-factory",
|
|
155
|
+
"produces": "T[]",
|
|
156
|
+
"arrayOutput": "yes",
|
|
157
|
+
"description": "Multi-checkbox group. Use for small static option sets where every option is visible at once.",
|
|
158
|
+
"sourcePath": "field/checklist/checklist.field.ts",
|
|
159
|
+
"example": "dbxForgeChecklistField<string>({ key: 'flags', props: { options: [{ value: 'a', label: 'A' }, { value: 'b', label: 'B' }] } })",
|
|
160
|
+
"properties": [],
|
|
161
|
+
"wrapperPattern": "unwrapped",
|
|
162
|
+
"ngFormType": "multi-checkbox",
|
|
163
|
+
"generic": "<T = unknown>",
|
|
164
|
+
"configInterface": "DbxForgeChecklistFieldConfig<T>",
|
|
165
|
+
"sourceLocation": {
|
|
166
|
+
"file": "src/lib/forge/field/checklist/checklist.field.ts",
|
|
167
|
+
"line": 41
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"slug": "component-field",
|
|
172
|
+
"factoryName": "dbxForgeComponentField",
|
|
173
|
+
"tier": "field-factory",
|
|
174
|
+
"produces": "T",
|
|
175
|
+
"arrayOutput": "no",
|
|
176
|
+
"description": "Escape hatch — injects any Angular component as the field renderer via DbxInjection. Use when no existing form field fits.\n\nUses {@link DbxInjectionComponent} to dynamically inject any Angular component\ninto the form. Generates a unique key when none is provided so that ng-forge's\nfield reconciliation treats each config change as a new field instance.",
|
|
177
|
+
"sourcePath": "field/component/component.field.ts",
|
|
178
|
+
"example": "dbxForgeComponentField<MyValue>({ key: 'custom', props: { component: MyCustomComp } })",
|
|
179
|
+
"properties": [
|
|
180
|
+
{
|
|
181
|
+
"name": "props",
|
|
182
|
+
"type": "DbxForgeComponentFieldProps<T>",
|
|
183
|
+
"description": "",
|
|
184
|
+
"required": true
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"name": "key",
|
|
188
|
+
"type": "string",
|
|
189
|
+
"description": "Key for the field. Optional for display-only components.",
|
|
190
|
+
"required": false
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "componentField (props)",
|
|
194
|
+
"type": "DbxInjectionComponentConfig<T>",
|
|
195
|
+
"description": "The injection component configuration that describes which component to render.",
|
|
196
|
+
"required": true
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"name": "allowDisabledEffects (props)",
|
|
200
|
+
"type": "boolean",
|
|
201
|
+
"description": "Whether to visually indicate the disabled state on this component.\n\nDefaults to `true`. Set to `false` for display-only components that should\nremain visually unchanged when the form is disabled.",
|
|
202
|
+
"required": false
|
|
203
|
+
}
|
|
204
|
+
],
|
|
205
|
+
"wrapperPattern": "unwrapped",
|
|
206
|
+
"ngFormType": "component",
|
|
207
|
+
"generic": "<T = unknown>",
|
|
208
|
+
"configInterface": "DbxForgeComponentFieldConfig<T>",
|
|
209
|
+
"sourceLocation": {
|
|
210
|
+
"file": "src/lib/forge/field/component/component.field.ts",
|
|
211
|
+
"line": 71
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"slug": "value-selection",
|
|
216
|
+
"factoryName": "dbxForgeValueSelectionField",
|
|
217
|
+
"tier": "field-factory",
|
|
218
|
+
"produces": "T",
|
|
219
|
+
"arrayOutput": "no",
|
|
220
|
+
"description": "Single-select dropdown over a static or async value list. Simpler than `source-select` when metadata lookup is unnecessary.\n\nThe component uses `<mat-form-field>` with `[formField]` for native ng-forge value binding,\nproper Material rendering, and built-in logic (hidden/disabled/readonly) support.\n\nSupports static arrays, Observable option sources, and `ValueSelectionOptionClear` entries.",
|
|
221
|
+
"sourcePath": "field/selection/selection.field.ts",
|
|
222
|
+
"example": "dbxForgeValueSelectionField<string>({ key: 'status', props: { options: [{ value: 'active', label: 'Active' }] } })",
|
|
223
|
+
"properties": [
|
|
224
|
+
{
|
|
225
|
+
"name": "props",
|
|
226
|
+
"type": "DbxForgeValueSelectionFieldProps<T>",
|
|
227
|
+
"description": "",
|
|
228
|
+
"required": true
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"name": "options (props)",
|
|
232
|
+
"type": "ObservableOrValue<ValueSelectionOption<T>[]>",
|
|
233
|
+
"description": "Options to select from.\n\nAccepts a static array or an Observable that emits option arrays.\nOptions may include {@link ValueSelectionOptionClear} entries with `clear: true`.",
|
|
234
|
+
"required": true
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"name": "addClearOption (props)",
|
|
238
|
+
"type": "boolean | string",
|
|
239
|
+
"description": "When true or a string, adds a clear/reset option at the top of the options list.\nIf a string is provided, it is used as the clear option label.\n\nIf the options already contain a clear option, no additional one is added.",
|
|
240
|
+
"required": false
|
|
241
|
+
}
|
|
242
|
+
],
|
|
243
|
+
"wrapperPattern": "material-form-field-wrapped",
|
|
244
|
+
"ngFormType": "dbx-value-selection",
|
|
245
|
+
"generic": "<T = unknown>",
|
|
246
|
+
"configInterface": "DbxForgeValueSelectionFieldConfig<T>",
|
|
247
|
+
"sourceLocation": {
|
|
248
|
+
"file": "src/lib/forge/field/selection/selection.field.ts",
|
|
249
|
+
"line": 56
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"slug": "text-editor",
|
|
254
|
+
"factoryName": "dbxForgeTextEditorField",
|
|
255
|
+
"tier": "field-factory",
|
|
256
|
+
"produces": "string",
|
|
257
|
+
"arrayOutput": "no",
|
|
258
|
+
"description": "Rich HTML text editor (ngx-editor). Output is the serialized HTML string.\n\nUses ngx-editor under the hood, outputting HTML format.\nThe field defaults to an empty string.",
|
|
259
|
+
"sourcePath": "field/texteditor/texteditor.field.ts",
|
|
260
|
+
"example": "dbxForgeTextEditorField({ key: 'content', label: 'Body', maxLength: 10000 })",
|
|
261
|
+
"properties": [
|
|
262
|
+
{
|
|
263
|
+
"name": "minLength (props)",
|
|
264
|
+
"type": "number",
|
|
265
|
+
"description": "Minimum text length.",
|
|
266
|
+
"required": false
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"name": "maxLength (props)",
|
|
270
|
+
"type": "number",
|
|
271
|
+
"description": "Maximum text length.",
|
|
272
|
+
"required": false
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"name": "hint (props)",
|
|
276
|
+
"type": "string",
|
|
277
|
+
"description": "Hint text shown below the editor.",
|
|
278
|
+
"required": false
|
|
279
|
+
}
|
|
280
|
+
],
|
|
281
|
+
"wrapperPattern": "unwrapped",
|
|
282
|
+
"ngFormType": "texteditor",
|
|
283
|
+
"configInterface": "DbxForgeTextEditorFieldConfig",
|
|
284
|
+
"sourceLocation": {
|
|
285
|
+
"file": "src/lib/forge/field/texteditor/texteditor.field.ts",
|
|
286
|
+
"line": 34
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"slug": "row",
|
|
291
|
+
"factoryName": "dbxForgeRow",
|
|
292
|
+
"tier": "primitive",
|
|
293
|
+
"produces": "RowField",
|
|
294
|
+
"arrayOutput": "no",
|
|
295
|
+
"description": "Flex row that lays child fields out in columns. Child fields typically carry a `col` property (1–12) for grid placement.\n\nUses the `@ng-forge/dynamic-forms` `RowField` type with a 12-column grid system.\nEach child field can specify a `col` value (1-12) for responsive sizing.",
|
|
296
|
+
"sourcePath": "field/wrapper/wrapper.ts",
|
|
297
|
+
"example": "dbxForgeRow({ fields: [ { ...dbxForgeTextField({ key: 'first' }), col: 6 }, { ...dbxForgeTextField({ key: 'last' }), col: 6 } ] })",
|
|
298
|
+
"properties": [
|
|
299
|
+
{
|
|
300
|
+
"name": "key",
|
|
301
|
+
"type": "string",
|
|
302
|
+
"description": "Optional key for the row. Defaults to a unique auto-generated key.\n\nMust be unique within the form config to avoid ng-forge duplicate key errors.",
|
|
303
|
+
"required": false
|
|
304
|
+
}
|
|
305
|
+
],
|
|
306
|
+
"returns": "RowField",
|
|
307
|
+
"configInterface": "DbxForgeRowConfig",
|
|
308
|
+
"sourceLocation": {
|
|
309
|
+
"file": "src/lib/forge/field/wrapper/wrapper.ts",
|
|
310
|
+
"line": 57
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"slug": "group",
|
|
315
|
+
"factoryName": "dbxForgeGroup",
|
|
316
|
+
"tier": "primitive",
|
|
317
|
+
"produces": "GroupField",
|
|
318
|
+
"arrayOutput": "no",
|
|
319
|
+
"description": "Creates a plain ng-forge `group` field. A group produces a nested object in\nthe form value under its `key`, so the key is semantically significant and\nmust be chosen deliberately.\n\nFor visual-only grouping (conditional visibility, layout wrappers, shared\nCSS class) that should NOT introduce a nested object in the form value, use\n{@link dbxForgeContainer} instead — that is what ng-forge's `container`\nfield type is for.\n\nFor sections with headers, use the section wrapper type instead.",
|
|
320
|
+
"sourcePath": "field/wrapper/wrapper.ts",
|
|
321
|
+
"example": "// Groups the address sub-fields under an `address` property in the form value.\nconst group = dbxForgeGroup({\n key: 'address',\n fields: [\n dbxForgeTextField({ key: 'city', label: 'City' }),\n dbxForgeTextField({ key: 'state', label: 'State' })\n ]\n});\n\n// Resulting form value shape:\n// { address: { city: '...', state: '...' } }",
|
|
322
|
+
"properties": [],
|
|
323
|
+
"returns": "GroupField",
|
|
324
|
+
"configInterface": "DbxForgeGroupConfig",
|
|
325
|
+
"sourceLocation": {
|
|
326
|
+
"file": "src/lib/forge/field/wrapper/wrapper.ts",
|
|
327
|
+
"line": 124
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"slug": "toggle-wrapper",
|
|
332
|
+
"factoryName": "dbxForgeToggleWrapper",
|
|
333
|
+
"tier": "composite-builder",
|
|
334
|
+
"produces": "RowField",
|
|
335
|
+
"arrayOutput": "no",
|
|
336
|
+
"description": "Wraps content fields in a Material slide toggle — the toggle state controls conditional visibility of the inner fields.\n\nUses ng-forge's built-in `toggle` field type (MatSlideToggle) and\n`FieldValueCondition` for conditional visibility. The toggle boolean value\nIS part of the form model. The hidden content is wrapped in a `container`\n(not a `group`), so the wrapped fields sit at the same level as the toggle\nin the form value — they are NOT nested under an extra object.\n\nStructure produced:\n```\nRow (outer)\n ├── toggle field (type: 'toggle', boolean value)\n └── Container (content, hidden when toggle === false)\n```\n\nThis is the forge equivalent of the formly `formlyToggleWrapper`.",
|
|
337
|
+
"sourcePath": "field/wrapper/wrapper.ts",
|
|
338
|
+
"example": "const toggle = dbxForgeToggleWrapper({\n key: 'showAdvanced',\n label: 'Show advanced options',\n fields: [\n dbxForgeTextField({ key: 'advanced1', label: 'Option 1' }),\n dbxForgeTextField({ key: 'advanced2', label: 'Option 2' })\n ]\n});\n\n// Resulting form value (flat — no nesting under the container):\n// { showAdvanced: true, advanced1: '...', advanced2: '...' }",
|
|
339
|
+
"properties": [
|
|
340
|
+
{
|
|
341
|
+
"name": "fields",
|
|
342
|
+
"type": "FieldDef<unknown>[]",
|
|
343
|
+
"description": "Fields to show/hide based on the toggle state.",
|
|
344
|
+
"required": true
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"name": "label",
|
|
348
|
+
"type": "string",
|
|
349
|
+
"description": "Label for the toggle control.",
|
|
350
|
+
"required": false
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
"name": "key",
|
|
354
|
+
"type": "string",
|
|
355
|
+
"description": "Key for the toggle boolean field. Defaults to auto-generated `_toggle_N`.",
|
|
356
|
+
"required": false
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"name": "className",
|
|
360
|
+
"type": "string",
|
|
361
|
+
"description": "Optional CSS class name applied to the outer row container.",
|
|
362
|
+
"required": false
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"name": "defaultOpen",
|
|
366
|
+
"type": "boolean",
|
|
367
|
+
"description": "Whether the toggle starts in the open state. Defaults to false.",
|
|
368
|
+
"required": false
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"name": "contentKey",
|
|
372
|
+
"type": "string",
|
|
373
|
+
"description": "Optional key for the content container. Auto-generated if omitted.\n\nThe container does not add a property to the form value; this is only a\nstable identifier for the container field.",
|
|
374
|
+
"required": false
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
"suffix": "Wrapper",
|
|
378
|
+
"composesFromSlugs": [
|
|
379
|
+
"toggle",
|
|
380
|
+
"group"
|
|
381
|
+
],
|
|
382
|
+
"configInterface": "DbxForgeToggleWrapperConfig",
|
|
383
|
+
"sourceLocation": {
|
|
384
|
+
"file": "src/lib/forge/field/wrapper/wrapper.ts",
|
|
385
|
+
"line": 290
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"slug": "expand-wrapper",
|
|
390
|
+
"factoryName": "dbxForgeExpandWrapper",
|
|
391
|
+
"tier": "composite-builder",
|
|
392
|
+
"produces": "RowField",
|
|
393
|
+
"arrayOutput": "no",
|
|
394
|
+
"description": "Wraps content fields behind a button or text \"expand\" control. Use for optional sections like \"Show advanced options\".\n\nUses a custom `dbx-forge-expand` field type for the expand trigger and\n`FieldValueCondition` for conditional visibility on the content. The\nexpand boolean value IS part of the form model. The hidden content is\nwrapped in a `container` (not a `group`), so the wrapped fields sit at the\nsame level as the expand control in the form value — they are NOT nested\nunder an extra object.\n\nStructure produced:\n```\nRow (outer)\n ├── expand field (type: 'dbx-forge-expand', boolean value)\n └── Container (content, hidden when expand field === false)\n```\n\nThis is the forge equivalent of the formly `formlyExpandWrapper`.",
|
|
395
|
+
"sourcePath": "field/wrapper/wrapper.ts",
|
|
396
|
+
"example": "const expand = dbxForgeExpandWrapper({\n key: 'showMore',\n label: 'Show more options',\n buttonType: 'button',\n fields: [\n dbxForgeTextField({ key: 'extra1', label: 'Extra 1' }),\n dbxForgeTextField({ key: 'extra2', label: 'Extra 2' })\n ]\n});\n\n// Resulting form value (flat — no nesting under the container):\n// { showMore: true, extra1: '...', extra2: '...' }",
|
|
397
|
+
"properties": [
|
|
398
|
+
{
|
|
399
|
+
"name": "fields",
|
|
400
|
+
"type": "FieldDef<unknown>[]",
|
|
401
|
+
"description": "Fields to show/hide when the expand control is toggled.",
|
|
402
|
+
"required": true
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"name": "label",
|
|
406
|
+
"type": "string",
|
|
407
|
+
"description": "Label for the expand trigger.",
|
|
408
|
+
"required": false
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"name": "buttonType",
|
|
412
|
+
"type": "DbxForgeExpandButtonType",
|
|
413
|
+
"description": "Visual style for the expand trigger. Defaults to `'text'`.",
|
|
414
|
+
"required": false
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"name": "key",
|
|
418
|
+
"type": "string",
|
|
419
|
+
"description": "Key for the expand boolean field. Defaults to auto-generated `_expand_N`.",
|
|
420
|
+
"required": false
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
"name": "className",
|
|
424
|
+
"type": "string",
|
|
425
|
+
"description": "Optional CSS class name applied to the outer row container.",
|
|
426
|
+
"required": false
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"name": "defaultOpen",
|
|
430
|
+
"type": "boolean",
|
|
431
|
+
"description": "Whether the expand starts in the open state. Defaults to false.",
|
|
432
|
+
"required": false
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"name": "contentKey",
|
|
436
|
+
"type": "string",
|
|
437
|
+
"description": "Optional key for the content container. Auto-generated if omitted.\n\nThe container does not add a property to the form value; this is only a\nstable identifier for the container field.",
|
|
438
|
+
"required": false
|
|
439
|
+
}
|
|
440
|
+
],
|
|
441
|
+
"suffix": "Wrapper",
|
|
442
|
+
"composesFromSlugs": [
|
|
443
|
+
"group"
|
|
444
|
+
],
|
|
445
|
+
"configInterface": "DbxForgeExpandWrapperConfig",
|
|
446
|
+
"sourceLocation": {
|
|
447
|
+
"file": "src/lib/forge/field/wrapper/wrapper.ts",
|
|
448
|
+
"line": 411
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"slug": "list-selection",
|
|
453
|
+
"factoryName": "dbxForgeListSelectionField",
|
|
454
|
+
"tier": "field-factory",
|
|
455
|
+
"produces": "K[]",
|
|
456
|
+
"arrayOutput": "yes",
|
|
457
|
+
"description": "Multi-select backed by a lazy-loadable custom list component. Use when you need complete control over item layout and pagination.",
|
|
458
|
+
"sourcePath": "field/selection/list/list.field.ts",
|
|
459
|
+
"example": "dbxForgeListSelectionField<Item, MyListComponent, string>({ key: 'items', props: { listComponentClass, readKey: (i) => i.id, state$ } })",
|
|
460
|
+
"properties": [
|
|
461
|
+
{
|
|
462
|
+
"name": "listComponentClass (props)",
|
|
463
|
+
"type": "Observable<Type<C>>",
|
|
464
|
+
"description": "List component class to render items from. Can be provided as an Observable for lazy loading.",
|
|
465
|
+
"required": true
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"name": "readKey (props)",
|
|
469
|
+
"type": "ReadKeyFunction<T, K>",
|
|
470
|
+
"description": "Read key function to extract the identifier from each item.",
|
|
471
|
+
"required": true
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"name": "state$ (props)",
|
|
475
|
+
"type": "Observable<ListLoadingState<T>>",
|
|
476
|
+
"description": "Observable that provides the items to select.",
|
|
477
|
+
"required": true
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"name": "loadMore (props)",
|
|
481
|
+
"type": "() => void",
|
|
482
|
+
"description": "Function that signals to load more items.",
|
|
483
|
+
"required": false
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
"name": "hint (props)",
|
|
487
|
+
"type": "string",
|
|
488
|
+
"description": "Hint text shown below the field.",
|
|
489
|
+
"required": false
|
|
490
|
+
}
|
|
491
|
+
],
|
|
492
|
+
"wrapperPattern": "material-form-field-wrapped",
|
|
493
|
+
"ngFormType": "dbx-list-selection",
|
|
494
|
+
"generic": "<T = unknown, C extends AbstractDbxSelectionListWrapperDirective<T> = AbstractDbxSelectionListWrapperDirective<T>, K extends PrimativeKey = PrimativeKey>",
|
|
495
|
+
"configInterface": "DbxForgeListSelectionFieldConfig<T, C, K>",
|
|
496
|
+
"sourceLocation": {
|
|
497
|
+
"file": "src/lib/forge/field/selection/list/list.field.ts",
|
|
498
|
+
"line": 83
|
|
499
|
+
}
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
"slug": "pickable-chip",
|
|
503
|
+
"factoryName": "dbxForgePickableChipField",
|
|
504
|
+
"tier": "field-factory",
|
|
505
|
+
"produces": "T | T[]",
|
|
506
|
+
"arrayOutput": "optional",
|
|
507
|
+
"description": "Selection field rendering selected values as Material chips. Defaults to multi-select; flip to single-select via the underlying props.",
|
|
508
|
+
"sourcePath": "field/selection/pickable/pickable-chip.field.ts",
|
|
509
|
+
"example": "dbxForgePickableChipField<Tag>({ key: 'tags', label: 'Tags', props: { loadValues: () => loadTags$, displayForValue: displayTag } })",
|
|
510
|
+
"properties": [
|
|
511
|
+
{
|
|
512
|
+
"name": "loadValues (props)",
|
|
513
|
+
"type": "PickableValueFieldLoadValuesFunction<T, M>",
|
|
514
|
+
"description": "",
|
|
515
|
+
"required": true
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"name": "displayForValue (props)",
|
|
519
|
+
"type": "PickableValueFieldDisplayFunction<T, M>",
|
|
520
|
+
"description": "",
|
|
521
|
+
"required": true
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
"name": "hashForValue (props)",
|
|
525
|
+
"type": "PickableValueFieldHashFunction<T, H>",
|
|
526
|
+
"description": "",
|
|
527
|
+
"required": false
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"name": "filterValues (props)",
|
|
531
|
+
"type": "PickableValueFieldFilterFunction<T, M>",
|
|
532
|
+
"description": "",
|
|
533
|
+
"required": false
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"name": "sortItems (props)",
|
|
537
|
+
"type": "PickableItemFieldItemSortFn<T, M>",
|
|
538
|
+
"description": "",
|
|
539
|
+
"required": false
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"name": "multiSelect (props)",
|
|
543
|
+
"type": "boolean",
|
|
544
|
+
"description": "",
|
|
545
|
+
"required": false
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"name": "asArrayValue (props)",
|
|
549
|
+
"type": "boolean",
|
|
550
|
+
"description": "",
|
|
551
|
+
"required": false
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"name": "showTextFilter (props)",
|
|
555
|
+
"type": "boolean",
|
|
556
|
+
"description": "",
|
|
557
|
+
"required": false
|
|
558
|
+
},
|
|
559
|
+
{
|
|
560
|
+
"name": "skipFilterFnOnEmpty (props)",
|
|
561
|
+
"type": "boolean",
|
|
562
|
+
"description": "",
|
|
563
|
+
"required": false
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
"name": "filterLabel (props)",
|
|
567
|
+
"type": "string",
|
|
568
|
+
"description": "",
|
|
569
|
+
"required": false
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
"name": "maxPicks (props)",
|
|
573
|
+
"type": "number",
|
|
574
|
+
"description": "",
|
|
575
|
+
"required": false
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"name": "showSelectAllButton (props)",
|
|
579
|
+
"type": "boolean",
|
|
580
|
+
"description": "",
|
|
581
|
+
"required": false
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
"name": "changeSelectionModeToViewOnDisabled (props)",
|
|
585
|
+
"type": "boolean",
|
|
586
|
+
"description": "",
|
|
587
|
+
"required": false
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
"name": "footerConfig (props)",
|
|
591
|
+
"type": "DbxInjectionComponentConfig",
|
|
592
|
+
"description": "",
|
|
593
|
+
"required": false
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
"name": "refreshDisplayValues$ (props)",
|
|
597
|
+
"type": "Observable<unknown>",
|
|
598
|
+
"description": "",
|
|
599
|
+
"required": false
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
"name": "hint (props)",
|
|
603
|
+
"type": "string",
|
|
604
|
+
"description": "",
|
|
605
|
+
"required": false
|
|
606
|
+
}
|
|
607
|
+
],
|
|
608
|
+
"wrapperPattern": "material-form-field-wrapped",
|
|
609
|
+
"ngFormType": "dbx-pickable-chip",
|
|
610
|
+
"generic": "<T = unknown, M = unknown, H extends PrimativeKey = PrimativeKey>",
|
|
611
|
+
"configInterface": "DbxForgePickableChipFieldConfig<T, M, H>",
|
|
612
|
+
"sourceLocation": {
|
|
613
|
+
"file": "src/lib/forge/field/selection/pickable/pickable-chip.field.ts",
|
|
614
|
+
"line": 37
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
"slug": "pickable-list",
|
|
619
|
+
"factoryName": "dbxForgePickableListField",
|
|
620
|
+
"tier": "field-factory",
|
|
621
|
+
"produces": "T | T[]",
|
|
622
|
+
"arrayOutput": "optional",
|
|
623
|
+
"description": "Scrollable-list variant of `pickable-chip` — same API, different presentation. Prefer this when the option set is large.",
|
|
624
|
+
"sourcePath": "field/selection/pickable/pickable-list.field.ts",
|
|
625
|
+
"example": "dbxForgePickableListField<Item>({ key: 'items', props: { loadValues, displayForValue } })",
|
|
626
|
+
"properties": [
|
|
627
|
+
{
|
|
628
|
+
"name": "loadValues (props)",
|
|
629
|
+
"type": "PickableValueFieldLoadValuesFunction<T, M>",
|
|
630
|
+
"description": "",
|
|
631
|
+
"required": true
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
"name": "displayForValue (props)",
|
|
635
|
+
"type": "PickableValueFieldDisplayFunction<T, M>",
|
|
636
|
+
"description": "",
|
|
637
|
+
"required": true
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
"name": "hashForValue (props)",
|
|
641
|
+
"type": "PickableValueFieldHashFunction<T, H>",
|
|
642
|
+
"description": "",
|
|
643
|
+
"required": false
|
|
644
|
+
},
|
|
645
|
+
{
|
|
646
|
+
"name": "filterValues (props)",
|
|
647
|
+
"type": "PickableValueFieldFilterFunction<T, M>",
|
|
648
|
+
"description": "",
|
|
649
|
+
"required": false
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
"name": "sortItems (props)",
|
|
653
|
+
"type": "PickableItemFieldItemSortFn<T, M>",
|
|
654
|
+
"description": "",
|
|
655
|
+
"required": false
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
"name": "multiSelect (props)",
|
|
659
|
+
"type": "boolean",
|
|
660
|
+
"description": "",
|
|
661
|
+
"required": false
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
"name": "asArrayValue (props)",
|
|
665
|
+
"type": "boolean",
|
|
666
|
+
"description": "",
|
|
667
|
+
"required": false
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
"name": "showTextFilter (props)",
|
|
671
|
+
"type": "boolean",
|
|
672
|
+
"description": "",
|
|
673
|
+
"required": false
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
"name": "skipFilterFnOnEmpty (props)",
|
|
677
|
+
"type": "boolean",
|
|
678
|
+
"description": "",
|
|
679
|
+
"required": false
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
"name": "filterLabel (props)",
|
|
683
|
+
"type": "string",
|
|
684
|
+
"description": "",
|
|
685
|
+
"required": false
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
"name": "maxPicks (props)",
|
|
689
|
+
"type": "number",
|
|
690
|
+
"description": "",
|
|
691
|
+
"required": false
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
"name": "showSelectAllButton (props)",
|
|
695
|
+
"type": "boolean",
|
|
696
|
+
"description": "",
|
|
697
|
+
"required": false
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
"name": "changeSelectionModeToViewOnDisabled (props)",
|
|
701
|
+
"type": "boolean",
|
|
702
|
+
"description": "",
|
|
703
|
+
"required": false
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
"name": "footerConfig (props)",
|
|
707
|
+
"type": "DbxInjectionComponentConfig",
|
|
708
|
+
"description": "",
|
|
709
|
+
"required": false
|
|
710
|
+
},
|
|
711
|
+
{
|
|
712
|
+
"name": "refreshDisplayValues$ (props)",
|
|
713
|
+
"type": "Observable<unknown>",
|
|
714
|
+
"description": "",
|
|
715
|
+
"required": false
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
"name": "hint (props)",
|
|
719
|
+
"type": "string",
|
|
720
|
+
"description": "",
|
|
721
|
+
"required": false
|
|
722
|
+
}
|
|
723
|
+
],
|
|
724
|
+
"wrapperPattern": "material-form-field-wrapped",
|
|
725
|
+
"ngFormType": "dbx-pickable-list",
|
|
726
|
+
"generic": "<T = unknown, M = unknown, H extends PrimativeKey = PrimativeKey>",
|
|
727
|
+
"configInterface": "DbxForgePickableListFieldConfig<T, M, H>",
|
|
728
|
+
"sourceLocation": {
|
|
729
|
+
"file": "src/lib/forge/field/selection/pickable/pickable-list.field.ts",
|
|
730
|
+
"line": 37
|
|
731
|
+
}
|
|
732
|
+
},
|
|
733
|
+
{
|
|
734
|
+
"slug": "searchable-string-chip",
|
|
735
|
+
"factoryName": "dbxForgeSearchableStringChipField",
|
|
736
|
+
"tier": "field-factory",
|
|
737
|
+
"produces": "string | string[]",
|
|
738
|
+
"arrayOutput": "optional",
|
|
739
|
+
"description": "String-value specialization of `searchable-chip`. `allowStringValues` is forced true — use for free-form tag entry.\n\nAlways sets `allowStringValues: true` on the inner field props so pressing Enter\n(or typing a separator key) commits the typed value as a chip.",
|
|
740
|
+
"sourcePath": "field/selection/searchable/searchable-chip.field.ts",
|
|
741
|
+
"example": "dbxForgeSearchableStringChipField({ key: 'tags', props: { search, displayForValue } })",
|
|
742
|
+
"properties": [
|
|
743
|
+
{
|
|
744
|
+
"name": "props",
|
|
745
|
+
"type": "Omit<DbxForgeSearchableChipFieldProps<string, M>, 'allowStringValues'>",
|
|
746
|
+
"description": "",
|
|
747
|
+
"required": false
|
|
748
|
+
}
|
|
749
|
+
],
|
|
750
|
+
"wrapperPattern": "material-form-field-wrapped",
|
|
751
|
+
"ngFormType": "dbx-searchable-chip",
|
|
752
|
+
"configInterface": "DbxForgeSearchableStringChipFieldConfig",
|
|
753
|
+
"sourceLocation": {
|
|
754
|
+
"file": "src/lib/forge/field/selection/searchable/searchable-chip.field.ts",
|
|
755
|
+
"line": 102
|
|
756
|
+
}
|
|
757
|
+
},
|
|
758
|
+
{
|
|
759
|
+
"slug": "searchable-chip",
|
|
760
|
+
"factoryName": "dbxForgeSearchableChipField",
|
|
761
|
+
"tier": "field-factory",
|
|
762
|
+
"produces": "T | T[]",
|
|
763
|
+
"arrayOutput": "optional",
|
|
764
|
+
"description": "Multi-value autocomplete with chips. Defaults to multi-select; supports free-form text entry when `allowStringValues` is set.",
|
|
765
|
+
"sourcePath": "field/selection/searchable/searchable-chip.field.ts",
|
|
766
|
+
"example": "dbxForgeSearchableChipField<Tag>({ key: 'tags', props: { search, displayForValue } })",
|
|
767
|
+
"properties": [
|
|
768
|
+
{
|
|
769
|
+
"name": "search (props)",
|
|
770
|
+
"type": "SearchableValueFieldStringSearchFn<T, M>",
|
|
771
|
+
"description": "",
|
|
772
|
+
"required": true
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"name": "displayForValue (props)",
|
|
776
|
+
"type": "SearchableValueFieldDisplayFn<T, M>",
|
|
777
|
+
"description": "",
|
|
778
|
+
"required": true
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
"name": "hashForValue (props)",
|
|
782
|
+
"type": "SearchableValueFieldHashFn<T, H>",
|
|
783
|
+
"description": "",
|
|
784
|
+
"required": false
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
"name": "allowStringValues (props)",
|
|
788
|
+
"type": "boolean",
|
|
789
|
+
"description": "",
|
|
790
|
+
"required": false
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
"name": "convertStringValue (props)",
|
|
794
|
+
"type": "(text: string) => T",
|
|
795
|
+
"description": "",
|
|
796
|
+
"required": false
|
|
797
|
+
},
|
|
798
|
+
{
|
|
799
|
+
"name": "showSelectedValue (props)",
|
|
800
|
+
"type": "boolean",
|
|
801
|
+
"description": "",
|
|
802
|
+
"required": false
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"name": "searchOnEmptyText (props)",
|
|
806
|
+
"type": "boolean",
|
|
807
|
+
"description": "",
|
|
808
|
+
"required": false
|
|
809
|
+
},
|
|
810
|
+
{
|
|
811
|
+
"name": "display (props)",
|
|
812
|
+
"type": "Partial<DbxInjectionComponentConfig>",
|
|
813
|
+
"description": "",
|
|
814
|
+
"required": false
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
"name": "useAnchor (props)",
|
|
818
|
+
"type": "boolean",
|
|
819
|
+
"description": "",
|
|
820
|
+
"required": false
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
"name": "anchorForValue (props)",
|
|
824
|
+
"type": "SearchableValueFieldAnchorFn<T, M>",
|
|
825
|
+
"description": "",
|
|
826
|
+
"required": false
|
|
827
|
+
},
|
|
828
|
+
{
|
|
829
|
+
"name": "showClearValue (props)",
|
|
830
|
+
"type": "boolean",
|
|
831
|
+
"description": "",
|
|
832
|
+
"required": false
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
"name": "searchLabel (props)",
|
|
836
|
+
"type": "string",
|
|
837
|
+
"description": "",
|
|
838
|
+
"required": false
|
|
839
|
+
},
|
|
840
|
+
{
|
|
841
|
+
"name": "refreshDisplayValues$ (props)",
|
|
842
|
+
"type": "Observable<unknown>",
|
|
843
|
+
"description": "",
|
|
844
|
+
"required": false
|
|
845
|
+
},
|
|
846
|
+
{
|
|
847
|
+
"name": "hint (props)",
|
|
848
|
+
"type": "string",
|
|
849
|
+
"description": "",
|
|
850
|
+
"required": false
|
|
851
|
+
},
|
|
852
|
+
{
|
|
853
|
+
"name": "textInputValidator (props)",
|
|
854
|
+
"type": "ValidatorFn | ValidatorFn[]",
|
|
855
|
+
"description": "",
|
|
856
|
+
"required": false
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
"name": "multiSelect (props)",
|
|
860
|
+
"type": "boolean",
|
|
861
|
+
"description": "",
|
|
862
|
+
"required": false
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
"name": "asArrayValue (props)",
|
|
866
|
+
"type": "boolean",
|
|
867
|
+
"description": "",
|
|
868
|
+
"required": false
|
|
869
|
+
}
|
|
870
|
+
],
|
|
871
|
+
"wrapperPattern": "material-form-field-wrapped",
|
|
872
|
+
"ngFormType": "dbx-searchable-chip",
|
|
873
|
+
"generic": "<T = unknown, M = unknown, H extends PrimativeKey = PrimativeKey>",
|
|
874
|
+
"configInterface": "DbxForgeSearchableChipFieldConfig<T, M, H>",
|
|
875
|
+
"sourceLocation": {
|
|
876
|
+
"file": "src/lib/forge/field/selection/searchable/searchable-chip.field.ts",
|
|
877
|
+
"line": 60
|
|
878
|
+
}
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
"slug": "searchable-text",
|
|
882
|
+
"factoryName": "dbxForgeSearchableTextField",
|
|
883
|
+
"tier": "field-factory",
|
|
884
|
+
"produces": "T",
|
|
885
|
+
"arrayOutput": "no",
|
|
886
|
+
"description": "Single-value autocomplete field with search-as-you-type. Optionally allows free-form typed strings as values.",
|
|
887
|
+
"sourcePath": "field/selection/searchable/searchable-text.field.ts",
|
|
888
|
+
"example": "dbxForgeSearchableTextField<User>({ key: 'user', props: { search, displayForValue } })",
|
|
889
|
+
"properties": [
|
|
890
|
+
{
|
|
891
|
+
"name": "search (props)",
|
|
892
|
+
"type": "SearchableValueFieldStringSearchFn<T, M>",
|
|
893
|
+
"description": "",
|
|
894
|
+
"required": true
|
|
895
|
+
},
|
|
896
|
+
{
|
|
897
|
+
"name": "displayForValue (props)",
|
|
898
|
+
"type": "SearchableValueFieldDisplayFn<T, M>",
|
|
899
|
+
"description": "",
|
|
900
|
+
"required": true
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
"name": "hashForValue (props)",
|
|
904
|
+
"type": "SearchableValueFieldHashFn<T, H>",
|
|
905
|
+
"description": "",
|
|
906
|
+
"required": false
|
|
907
|
+
},
|
|
908
|
+
{
|
|
909
|
+
"name": "allowStringValues (props)",
|
|
910
|
+
"type": "boolean",
|
|
911
|
+
"description": "",
|
|
912
|
+
"required": false
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
"name": "convertStringValue (props)",
|
|
916
|
+
"type": "(text: string) => T",
|
|
917
|
+
"description": "",
|
|
918
|
+
"required": false
|
|
919
|
+
},
|
|
920
|
+
{
|
|
921
|
+
"name": "showSelectedValue (props)",
|
|
922
|
+
"type": "boolean",
|
|
923
|
+
"description": "",
|
|
924
|
+
"required": false
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
"name": "searchOnEmptyText (props)",
|
|
928
|
+
"type": "boolean",
|
|
929
|
+
"description": "",
|
|
930
|
+
"required": false
|
|
931
|
+
},
|
|
932
|
+
{
|
|
933
|
+
"name": "display (props)",
|
|
934
|
+
"type": "Partial<DbxInjectionComponentConfig>",
|
|
935
|
+
"description": "",
|
|
936
|
+
"required": false
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
"name": "useAnchor (props)",
|
|
940
|
+
"type": "boolean",
|
|
941
|
+
"description": "",
|
|
942
|
+
"required": false
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
"name": "anchorForValue (props)",
|
|
946
|
+
"type": "SearchableValueFieldAnchorFn<T, M>",
|
|
947
|
+
"description": "",
|
|
948
|
+
"required": false
|
|
949
|
+
},
|
|
950
|
+
{
|
|
951
|
+
"name": "showClearValue (props)",
|
|
952
|
+
"type": "boolean",
|
|
953
|
+
"description": "",
|
|
954
|
+
"required": false
|
|
955
|
+
},
|
|
956
|
+
{
|
|
957
|
+
"name": "searchLabel (props)",
|
|
958
|
+
"type": "string",
|
|
959
|
+
"description": "",
|
|
960
|
+
"required": false
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
"name": "refreshDisplayValues$ (props)",
|
|
964
|
+
"type": "Observable<unknown>",
|
|
965
|
+
"description": "",
|
|
966
|
+
"required": false
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
"name": "hint (props)",
|
|
970
|
+
"type": "string",
|
|
971
|
+
"description": "",
|
|
972
|
+
"required": false
|
|
973
|
+
},
|
|
974
|
+
{
|
|
975
|
+
"name": "textInputValidator (props)",
|
|
976
|
+
"type": "ValidatorFn | ValidatorFn[]",
|
|
977
|
+
"description": "",
|
|
978
|
+
"required": false
|
|
979
|
+
}
|
|
980
|
+
],
|
|
981
|
+
"wrapperPattern": "material-form-field-wrapped",
|
|
982
|
+
"ngFormType": "dbx-searchable-text",
|
|
983
|
+
"generic": "<T = unknown, M = unknown, H extends PrimativeKey = PrimativeKey>",
|
|
984
|
+
"configInterface": "DbxForgeSearchableTextFieldConfig<T, M, H>",
|
|
985
|
+
"sourceLocation": {
|
|
986
|
+
"file": "src/lib/forge/field/selection/searchable/searchable-text.field.ts",
|
|
987
|
+
"line": 78
|
|
988
|
+
}
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
"slug": "source-select",
|
|
992
|
+
"factoryName": "dbxForgeSourceSelectField",
|
|
993
|
+
"tier": "field-factory",
|
|
994
|
+
"produces": "T | T[]",
|
|
995
|
+
"arrayOutput": "optional",
|
|
996
|
+
"description": "Selection field that stores just the value key (`T`) but resolves full metadata (`M`) async for display. Use for reference fields where the form should store only the id.\n\nThe component uses `<mat-form-field>` with `[formField]` for native ng-forge value binding,\nproper Material rendering, and built-in logic (hidden/disabled/readonly) support.",
|
|
997
|
+
"sourcePath": "field/selection/sourceselect/sourceselect.field.ts",
|
|
998
|
+
"example": "dbxForgeSourceSelectField<string, User>({ key: 'userId', props: { valueReader: (u) => u.id, metaLoader, displayForValue } })",
|
|
999
|
+
"properties": [
|
|
1000
|
+
{
|
|
1001
|
+
"name": "openSource (props)",
|
|
1002
|
+
"type": "Maybe<SourceSelectOpenFunction<M>>",
|
|
1003
|
+
"description": "",
|
|
1004
|
+
"required": false
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
"name": "loadSources (props)",
|
|
1008
|
+
"type": "Maybe<SourceSelectLoadSourcesFunction<M>>",
|
|
1009
|
+
"description": "",
|
|
1010
|
+
"required": false
|
|
1011
|
+
},
|
|
1012
|
+
{
|
|
1013
|
+
"name": "valueReader (props)",
|
|
1014
|
+
"type": "SourceSelectMetaValueReader<T, M>",
|
|
1015
|
+
"description": "",
|
|
1016
|
+
"required": true
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
"name": "metaLoader (props)",
|
|
1020
|
+
"type": "SourceSelectValueMetaLoader<T, M>",
|
|
1021
|
+
"description": "",
|
|
1022
|
+
"required": true
|
|
1023
|
+
},
|
|
1024
|
+
{
|
|
1025
|
+
"name": "displayForValue (props)",
|
|
1026
|
+
"type": "SourceSelectDisplayFunction<T, M>",
|
|
1027
|
+
"description": "",
|
|
1028
|
+
"required": true
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
"name": "selectButtonIcon (props)",
|
|
1032
|
+
"type": "Maybe<string>",
|
|
1033
|
+
"description": "",
|
|
1034
|
+
"required": false
|
|
1035
|
+
},
|
|
1036
|
+
{
|
|
1037
|
+
"name": "multiple (props)",
|
|
1038
|
+
"type": "Maybe<boolean>",
|
|
1039
|
+
"description": "",
|
|
1040
|
+
"required": false
|
|
1041
|
+
},
|
|
1042
|
+
{
|
|
1043
|
+
"name": "refreshDisplayValues$ (props)",
|
|
1044
|
+
"type": "Maybe<Observable<unknown>>",
|
|
1045
|
+
"description": "",
|
|
1046
|
+
"required": false
|
|
1047
|
+
},
|
|
1048
|
+
{
|
|
1049
|
+
"name": "filterable (props)",
|
|
1050
|
+
"type": "Maybe<boolean>",
|
|
1051
|
+
"description": "",
|
|
1052
|
+
"required": false
|
|
1053
|
+
},
|
|
1054
|
+
{
|
|
1055
|
+
"name": "filterableGroups (props)",
|
|
1056
|
+
"type": "Maybe<boolean>",
|
|
1057
|
+
"description": "",
|
|
1058
|
+
"required": false
|
|
1059
|
+
},
|
|
1060
|
+
{
|
|
1061
|
+
"name": "hint (props)",
|
|
1062
|
+
"type": "Maybe<string>",
|
|
1063
|
+
"description": "",
|
|
1064
|
+
"required": false
|
|
1065
|
+
}
|
|
1066
|
+
],
|
|
1067
|
+
"wrapperPattern": "unwrapped",
|
|
1068
|
+
"ngFormType": "dbx-source-select",
|
|
1069
|
+
"generic": "<T extends PrimativeKey = PrimativeKey, M = unknown>",
|
|
1070
|
+
"configInterface": "DbxForgeSourceSelectFieldConfig<T, M>",
|
|
1071
|
+
"sourceLocation": {
|
|
1072
|
+
"file": "src/lib/forge/field/selection/sourceselect/sourceselect.field.ts",
|
|
1073
|
+
"line": 73
|
|
1074
|
+
}
|
|
1075
|
+
},
|
|
1076
|
+
{
|
|
1077
|
+
"slug": "array-field",
|
|
1078
|
+
"factoryName": "dbxForgeArrayField",
|
|
1079
|
+
"tier": "primitive",
|
|
1080
|
+
"produces": "ArrayField",
|
|
1081
|
+
"arrayOutput": "yes",
|
|
1082
|
+
"description": "Repeatable array wrapper with add/remove/drag-to-reorder controls. Template fields are cloned per item. Internally built with `dbxForgeFieldFunction` but categorized as a primitive because composites wrap it.\n\nWraps the array with {@link DbxForgeArrayFieldWrapperComponent} for label/hint,\nand wraps each template item in a ContainerField with\n{@link DbxForgeArrayFieldElementWrapperComponent} for per-item drag handle,\nlabel, and remove button.",
|
|
1083
|
+
"sourcePath": "field/value/array/array.field.ts",
|
|
1084
|
+
"example": "dbxForgeArrayField({ key: 'tags', template: [dbxForgeTextField({ key: 'value' })] })",
|
|
1085
|
+
"properties": [
|
|
1086
|
+
{
|
|
1087
|
+
"name": "template",
|
|
1088
|
+
"type": "ContainerField['fields']",
|
|
1089
|
+
"description": "Template defining the fields for each array item.\nEach item is wrapped in a ContainerField with the element wrapper\nfor per-item drag handle, label, and remove button.\n\nThe array starts empty — items are added via the add button.",
|
|
1090
|
+
"required": true
|
|
1091
|
+
},
|
|
1092
|
+
{
|
|
1093
|
+
"name": "props",
|
|
1094
|
+
"type": "Omit<DbxForgeArrayFieldWrapperProps, 'itemTemplate'>",
|
|
1095
|
+
"description": "",
|
|
1096
|
+
"required": false
|
|
1097
|
+
},
|
|
1098
|
+
{
|
|
1099
|
+
"name": "elementProps",
|
|
1100
|
+
"type": "DbxForgeArrayFieldElementWrapperProps",
|
|
1101
|
+
"description": "",
|
|
1102
|
+
"required": false
|
|
1103
|
+
}
|
|
1104
|
+
],
|
|
1105
|
+
"returns": "ArrayField",
|
|
1106
|
+
"configInterface": "DbxForgeArrayFieldConfig",
|
|
1107
|
+
"sourceLocation": {
|
|
1108
|
+
"file": "src/lib/forge/field/value/array/array.field.ts",
|
|
1109
|
+
"line": 56
|
|
1110
|
+
}
|
|
1111
|
+
},
|
|
1112
|
+
{
|
|
1113
|
+
"slug": "toggle",
|
|
1114
|
+
"factoryName": "dbxForgeToggleField",
|
|
1115
|
+
"tier": "field-factory",
|
|
1116
|
+
"produces": "boolean",
|
|
1117
|
+
"arrayOutput": "no",
|
|
1118
|
+
"description": "Material slide toggle. Renders inside a styled outline box by default so it visually matches surrounding outlined form fields; pass `styledBox: false` to opt out.",
|
|
1119
|
+
"sourcePath": "field/value/boolean/boolean.field.ts",
|
|
1120
|
+
"example": "dbxForgeToggleField({ key: 'active', label: 'Active', value: true })",
|
|
1121
|
+
"properties": [
|
|
1122
|
+
{
|
|
1123
|
+
"name": "styledBox",
|
|
1124
|
+
"type": "boolean",
|
|
1125
|
+
"description": "Whether to render the toggle inside a styled outline box.\n\nDefaults to `true`.",
|
|
1126
|
+
"required": false
|
|
1127
|
+
}
|
|
1128
|
+
],
|
|
1129
|
+
"wrapperPattern": "unwrapped",
|
|
1130
|
+
"ngFormType": "toggle",
|
|
1131
|
+
"configInterface": "DbxForgeToggleFieldConfig",
|
|
1132
|
+
"sourceLocation": {
|
|
1133
|
+
"file": "src/lib/forge/field/value/boolean/boolean.field.ts",
|
|
1134
|
+
"line": 43
|
|
1135
|
+
}
|
|
1136
|
+
},
|
|
1137
|
+
{
|
|
1138
|
+
"slug": "checkbox",
|
|
1139
|
+
"factoryName": "dbxForgeCheckboxField",
|
|
1140
|
+
"tier": "field-factory",
|
|
1141
|
+
"produces": "boolean",
|
|
1142
|
+
"arrayOutput": "no",
|
|
1143
|
+
"description": "Material checkbox. Shares the styled-outline-box opt-out with toggle.",
|
|
1144
|
+
"sourcePath": "field/value/boolean/boolean.field.ts",
|
|
1145
|
+
"example": "dbxForgeCheckboxField({ key: 'agree', label: 'I agree to the terms' })",
|
|
1146
|
+
"properties": [
|
|
1147
|
+
{
|
|
1148
|
+
"name": "styledBox",
|
|
1149
|
+
"type": "boolean",
|
|
1150
|
+
"description": "Whether to render the checkbox inside a styled outline box.\n\nDefaults to `true`.",
|
|
1151
|
+
"required": false
|
|
1152
|
+
}
|
|
1153
|
+
],
|
|
1154
|
+
"wrapperPattern": "unwrapped",
|
|
1155
|
+
"ngFormType": "checkbox",
|
|
1156
|
+
"configInterface": "DbxForgeCheckboxFieldConfig",
|
|
1157
|
+
"sourceLocation": {
|
|
1158
|
+
"file": "src/lib/forge/field/value/boolean/boolean.field.ts",
|
|
1159
|
+
"line": 86
|
|
1160
|
+
}
|
|
1161
|
+
},
|
|
1162
|
+
{
|
|
1163
|
+
"slug": "date",
|
|
1164
|
+
"factoryName": "dbxForgeDateField",
|
|
1165
|
+
"tier": "field-factory",
|
|
1166
|
+
"produces": "Date",
|
|
1167
|
+
"arrayOutput": "no",
|
|
1168
|
+
"description": "Material datepicker (date-only, no time). For time-of-day picking use the `date-time` field; for ranges use `date-range-row` or `date-time-range-row`.\n\nUses the native ng-forge MatDatepickerField.",
|
|
1169
|
+
"sourcePath": "field/value/date/date.field.ts",
|
|
1170
|
+
"example": "dbxForgeDateField({ key: 'startDate', label: 'Start Date', required: true })",
|
|
1171
|
+
"properties": [],
|
|
1172
|
+
"wrapperPattern": "unwrapped",
|
|
1173
|
+
"ngFormType": "datepicker",
|
|
1174
|
+
"configInterface": "DbxForgeDateFieldConfig",
|
|
1175
|
+
"sourceLocation": {
|
|
1176
|
+
"file": "src/lib/forge/field/value/date/date.field.ts",
|
|
1177
|
+
"line": 32
|
|
1178
|
+
}
|
|
1179
|
+
},
|
|
1180
|
+
{
|
|
1181
|
+
"slug": "date-range-row",
|
|
1182
|
+
"factoryName": "dbxForgeDateRangeRow",
|
|
1183
|
+
"tier": "composite-builder",
|
|
1184
|
+
"produces": "RowField",
|
|
1185
|
+
"arrayOutput": "no",
|
|
1186
|
+
"description": "Two-column row of start/end date-time fields configured for date-only picking. Use when you need a paired start/end date range laid out horizontally.\n\nComposite builder that creates a pair of date pickers for selecting a date range (start and end dates)\narranged in a flex row. The pickers are synchronized so the start date stays before the end date.\n\nThis is the forge equivalent of formly's `formlyDateRangeField()`.",
|
|
1187
|
+
"sourcePath": "field/value/date/daterange.field.ts",
|
|
1188
|
+
"example": "dbxForgeDateRangeRow({ required: true, start: { key: 'from', label: 'From' }, end: { key: 'to', label: 'To' } })",
|
|
1189
|
+
"properties": [
|
|
1190
|
+
{
|
|
1191
|
+
"name": "required",
|
|
1192
|
+
"type": "boolean",
|
|
1193
|
+
"description": "",
|
|
1194
|
+
"required": false
|
|
1195
|
+
},
|
|
1196
|
+
{
|
|
1197
|
+
"name": "props",
|
|
1198
|
+
"type": "DbxForgeDateRangeRowSharedProps",
|
|
1199
|
+
"description": "",
|
|
1200
|
+
"required": false
|
|
1201
|
+
},
|
|
1202
|
+
{
|
|
1203
|
+
"name": "start",
|
|
1204
|
+
"type": "Partial<DbxForgeDateRangeFieldDateConfig>",
|
|
1205
|
+
"description": "",
|
|
1206
|
+
"required": false
|
|
1207
|
+
},
|
|
1208
|
+
{
|
|
1209
|
+
"name": "end",
|
|
1210
|
+
"type": "Partial<DbxForgeDateRangeFieldDateConfig>",
|
|
1211
|
+
"description": "",
|
|
1212
|
+
"required": false
|
|
1213
|
+
}
|
|
1214
|
+
],
|
|
1215
|
+
"suffix": "Row",
|
|
1216
|
+
"composesFromSlugs": [
|
|
1217
|
+
"date-time",
|
|
1218
|
+
"row"
|
|
1219
|
+
],
|
|
1220
|
+
"configInterface": "DbxForgeDateRangeRowConfig",
|
|
1221
|
+
"sourceLocation": {
|
|
1222
|
+
"file": "src/lib/forge/field/value/date/daterange.field.ts",
|
|
1223
|
+
"line": 60
|
|
1224
|
+
}
|
|
1225
|
+
},
|
|
1226
|
+
{
|
|
1227
|
+
"slug": "date-time",
|
|
1228
|
+
"factoryName": "dbxForgeDateTimeField",
|
|
1229
|
+
"tier": "field-factory",
|
|
1230
|
+
"produces": "DateTimeValue",
|
|
1231
|
+
"arrayOutput": "no",
|
|
1232
|
+
"description": "Combined date-time picker with timezone, value mode (DATE_STRING / TIMESTAMP / Date), and time mode (REQUIRED / OPTIONAL / NONE). Powers `date-range-row` and `date-time-range-row`.\n\nFull parity with formly `dateTimeField()` — supports timezone, valueMode, timeMode,\npickerConfig, presets, and all other features via the `props` slot.",
|
|
1233
|
+
"sourcePath": "field/value/date/datetime.field.ts",
|
|
1234
|
+
"example": "dbxForgeDateTimeField({ key: 'when', label: 'When', timezone: 'America/New_York' })",
|
|
1235
|
+
"properties": [
|
|
1236
|
+
{
|
|
1237
|
+
"name": "timeOnly (props)",
|
|
1238
|
+
"type": "boolean",
|
|
1239
|
+
"description": "",
|
|
1240
|
+
"required": false
|
|
1241
|
+
},
|
|
1242
|
+
{
|
|
1243
|
+
"name": "timeMode (props)",
|
|
1244
|
+
"type": "DbxDateTimeFieldTimeMode",
|
|
1245
|
+
"description": "",
|
|
1246
|
+
"required": false
|
|
1247
|
+
},
|
|
1248
|
+
{
|
|
1249
|
+
"name": "valueMode (props)",
|
|
1250
|
+
"type": "DbxDateTimeValueMode",
|
|
1251
|
+
"description": "",
|
|
1252
|
+
"required": false
|
|
1253
|
+
},
|
|
1254
|
+
{
|
|
1255
|
+
"name": "dateLabel (props)",
|
|
1256
|
+
"type": "string",
|
|
1257
|
+
"description": "",
|
|
1258
|
+
"required": false
|
|
1259
|
+
},
|
|
1260
|
+
{
|
|
1261
|
+
"name": "timeLabel (props)",
|
|
1262
|
+
"type": "string",
|
|
1263
|
+
"description": "",
|
|
1264
|
+
"required": false
|
|
1265
|
+
},
|
|
1266
|
+
{
|
|
1267
|
+
"name": "allDayLabel (props)",
|
|
1268
|
+
"type": "string",
|
|
1269
|
+
"description": "",
|
|
1270
|
+
"required": false
|
|
1271
|
+
},
|
|
1272
|
+
{
|
|
1273
|
+
"name": "atTimeLabel (props)",
|
|
1274
|
+
"type": "string",
|
|
1275
|
+
"description": "",
|
|
1276
|
+
"required": false
|
|
1277
|
+
},
|
|
1278
|
+
{
|
|
1279
|
+
"name": "minDate (props)",
|
|
1280
|
+
"type": "Date | string",
|
|
1281
|
+
"description": "",
|
|
1282
|
+
"required": false
|
|
1283
|
+
},
|
|
1284
|
+
{
|
|
1285
|
+
"name": "maxDate (props)",
|
|
1286
|
+
"type": "Date | string",
|
|
1287
|
+
"description": "",
|
|
1288
|
+
"required": false
|
|
1289
|
+
},
|
|
1290
|
+
{
|
|
1291
|
+
"name": "timezone (props)",
|
|
1292
|
+
"type": "Maybe<ObservableOrValueGetter<Maybe<TimezoneString>>>",
|
|
1293
|
+
"description": "",
|
|
1294
|
+
"required": false
|
|
1295
|
+
},
|
|
1296
|
+
{
|
|
1297
|
+
"name": "showTimezone (props)",
|
|
1298
|
+
"type": "Maybe<boolean>",
|
|
1299
|
+
"description": "",
|
|
1300
|
+
"required": false
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
"name": "pickerConfig (props)",
|
|
1304
|
+
"type": "ObservableOrValueGetter<DbxDateTimePickerConfiguration>",
|
|
1305
|
+
"description": "",
|
|
1306
|
+
"required": false
|
|
1307
|
+
},
|
|
1308
|
+
{
|
|
1309
|
+
"name": "hideDateHint (props)",
|
|
1310
|
+
"type": "boolean",
|
|
1311
|
+
"description": "",
|
|
1312
|
+
"required": false
|
|
1313
|
+
},
|
|
1314
|
+
{
|
|
1315
|
+
"name": "hideDatePicker (props)",
|
|
1316
|
+
"type": "boolean",
|
|
1317
|
+
"description": "",
|
|
1318
|
+
"required": false
|
|
1319
|
+
},
|
|
1320
|
+
{
|
|
1321
|
+
"name": "alwaysShowDateInput (props)",
|
|
1322
|
+
"type": "boolean",
|
|
1323
|
+
"description": "",
|
|
1324
|
+
"required": false
|
|
1325
|
+
},
|
|
1326
|
+
{
|
|
1327
|
+
"name": "showClearButton (props)",
|
|
1328
|
+
"type": "Maybe<boolean>",
|
|
1329
|
+
"description": "",
|
|
1330
|
+
"required": false
|
|
1331
|
+
},
|
|
1332
|
+
{
|
|
1333
|
+
"name": "autofillDateWhenTimeIsPicked (props)",
|
|
1334
|
+
"type": "boolean",
|
|
1335
|
+
"description": "",
|
|
1336
|
+
"required": false
|
|
1337
|
+
},
|
|
1338
|
+
{
|
|
1339
|
+
"name": "presets (props)",
|
|
1340
|
+
"type": "ObservableOrValueGetter<DateTimePresetConfiguration[]>",
|
|
1341
|
+
"description": "",
|
|
1342
|
+
"required": false
|
|
1343
|
+
},
|
|
1344
|
+
{
|
|
1345
|
+
"name": "timeDate (props)",
|
|
1346
|
+
"type": "Maybe<ObservableOrValueGetter<Maybe<DateOrDayString>>>",
|
|
1347
|
+
"description": "",
|
|
1348
|
+
"required": false
|
|
1349
|
+
},
|
|
1350
|
+
{
|
|
1351
|
+
"name": "fullDayFieldName (props)",
|
|
1352
|
+
"type": "string",
|
|
1353
|
+
"description": "",
|
|
1354
|
+
"required": false
|
|
1355
|
+
},
|
|
1356
|
+
{
|
|
1357
|
+
"name": "fullDayInUTC (props)",
|
|
1358
|
+
"type": "boolean",
|
|
1359
|
+
"description": "",
|
|
1360
|
+
"required": false
|
|
1361
|
+
},
|
|
1362
|
+
{
|
|
1363
|
+
"name": "minuteStep (props)",
|
|
1364
|
+
"type": "Maybe<number>",
|
|
1365
|
+
"description": "",
|
|
1366
|
+
"required": false
|
|
1367
|
+
},
|
|
1368
|
+
{
|
|
1369
|
+
"name": "inputOutputDebounceTime (props)",
|
|
1370
|
+
"type": "Milliseconds",
|
|
1371
|
+
"description": "",
|
|
1372
|
+
"required": false
|
|
1373
|
+
},
|
|
1374
|
+
{
|
|
1375
|
+
"name": "appearance (props)",
|
|
1376
|
+
"type": "'fill' | 'outline'",
|
|
1377
|
+
"description": "",
|
|
1378
|
+
"required": false
|
|
1379
|
+
},
|
|
1380
|
+
{
|
|
1381
|
+
"name": "hint (props)",
|
|
1382
|
+
"type": "DynamicText",
|
|
1383
|
+
"description": "",
|
|
1384
|
+
"required": false
|
|
1385
|
+
},
|
|
1386
|
+
{
|
|
1387
|
+
"name": "getSyncFieldsObs (props)",
|
|
1388
|
+
"type": "() => Observable<ArrayOrValue<DbxForgeDateTimeSyncField>>",
|
|
1389
|
+
"description": "",
|
|
1390
|
+
"required": false
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
"name": "openOnInputClick (props)",
|
|
1394
|
+
"type": "'picker' | 'input'",
|
|
1395
|
+
"description": "Behavior when the date input is clicked.\n\n- `'picker'` — opens the datepicker overlay (default)\n- `'input'` — normal text-selection / cursor-placement behavior",
|
|
1396
|
+
"required": false
|
|
1397
|
+
}
|
|
1398
|
+
],
|
|
1399
|
+
"wrapperPattern": "unwrapped",
|
|
1400
|
+
"ngFormType": "datetime",
|
|
1401
|
+
"configInterface": "DbxForgeDateTimeFieldConfig",
|
|
1402
|
+
"sourceLocation": {
|
|
1403
|
+
"file": "src/lib/forge/field/value/date/datetime.field.ts",
|
|
1404
|
+
"line": 72
|
|
1405
|
+
}
|
|
1406
|
+
},
|
|
1407
|
+
{
|
|
1408
|
+
"slug": "date-time-range-row",
|
|
1409
|
+
"factoryName": "dbxForgeDateTimeRangeRow",
|
|
1410
|
+
"tier": "composite-builder",
|
|
1411
|
+
"produces": "RowField",
|
|
1412
|
+
"arrayOutput": "no",
|
|
1413
|
+
"description": "Two-column row of time-only pickers for selecting a time range within a single day.\n\nThis is the forge equivalent of formly's `formlyDateTimeRangeField()`.",
|
|
1414
|
+
"sourcePath": "field/value/date/datetimerange.field.ts",
|
|
1415
|
+
"example": "dbxForgeDateTimeRangeRow({ start: { label: 'From' }, end: { label: 'Until' } })",
|
|
1416
|
+
"properties": [
|
|
1417
|
+
{
|
|
1418
|
+
"name": "required",
|
|
1419
|
+
"type": "boolean",
|
|
1420
|
+
"description": "",
|
|
1421
|
+
"required": false
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
"name": "props",
|
|
1425
|
+
"type": "DbxForgeDateTimeRangeRowSharedProps",
|
|
1426
|
+
"description": "",
|
|
1427
|
+
"required": false
|
|
1428
|
+
},
|
|
1429
|
+
{
|
|
1430
|
+
"name": "start",
|
|
1431
|
+
"type": "Partial<DbxForgeDateTimeRangeFieldTimeConfig>",
|
|
1432
|
+
"description": "",
|
|
1433
|
+
"required": false
|
|
1434
|
+
},
|
|
1435
|
+
{
|
|
1436
|
+
"name": "end",
|
|
1437
|
+
"type": "Partial<DbxForgeDateTimeRangeFieldTimeConfig>",
|
|
1438
|
+
"description": "",
|
|
1439
|
+
"required": false
|
|
1440
|
+
}
|
|
1441
|
+
],
|
|
1442
|
+
"suffix": "Row",
|
|
1443
|
+
"composesFromSlugs": [
|
|
1444
|
+
"date-time",
|
|
1445
|
+
"row"
|
|
1446
|
+
],
|
|
1447
|
+
"configInterface": "DbxForgeDateTimeRangeRowConfig",
|
|
1448
|
+
"sourceLocation": {
|
|
1449
|
+
"file": "src/lib/forge/field/value/date/datetimerange.field.ts",
|
|
1450
|
+
"line": 56
|
|
1451
|
+
}
|
|
1452
|
+
},
|
|
1453
|
+
{
|
|
1454
|
+
"slug": "fixed-date-range",
|
|
1455
|
+
"factoryName": "dbxForgeFixedDateRangeField",
|
|
1456
|
+
"tier": "field-factory",
|
|
1457
|
+
"produces": "DbxForgeFixedDateRangeValue",
|
|
1458
|
+
"arrayOutput": "no",
|
|
1459
|
+
"description": "Inline calendar-style date-range picker with fixed range length (e.g. \"7 days from start\"). Wrapped in a Material form-field container with a custom selection strategy.\n\nUses an inline `<mat-calendar>` with a custom selection strategy, matching the formly\n`fixedDateRangeField()` behavior. Supports multiple selection modes, timezone conversion,\ndate range input configuration, and optional text inputs.",
|
|
1460
|
+
"sourcePath": "field/value/date/fixeddaterange.field.ts",
|
|
1461
|
+
"example": "dbxForgeFixedDateRangeField({ key: 'range', label: 'Date Range' })",
|
|
1462
|
+
"properties": [
|
|
1463
|
+
{
|
|
1464
|
+
"name": "dateRangeInput (props)",
|
|
1465
|
+
"type": "ObservableOrValueGetter<DbxFixedDateRangeDateRangeInput>",
|
|
1466
|
+
"description": "Date range input to build the date range from a single picked date.\nRequired for 'single' mode and boundary-based selection modes.",
|
|
1467
|
+
"required": false
|
|
1468
|
+
},
|
|
1469
|
+
{
|
|
1470
|
+
"name": "selectionMode (props)",
|
|
1471
|
+
"type": "Maybe<ObservableOrValueGetter<DbxFixedDateRangeSelectionMode>>",
|
|
1472
|
+
"description": "Selection mode to use when picking dates on the calendar.\n\n- `'single'` — Picks one date, range computed from dateRangeInput config.\n- `'normal'` — Standard start/end range picking with two clicks.\n- `'arbitrary'` — Free-form range selection within a boundary.\n- `'arbitrary_quick'` — Like arbitrary, but immediately sets the value on first click.\n\nDefaults to `'single'`.",
|
|
1473
|
+
"required": false
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
"name": "valueMode (props)",
|
|
1477
|
+
"type": "DbxDateTimeValueMode",
|
|
1478
|
+
"description": "Value mode for the dates in the output DateRange.\nDefaults to DATE.",
|
|
1479
|
+
"required": false
|
|
1480
|
+
},
|
|
1481
|
+
{
|
|
1482
|
+
"name": "fullDayInUTC (props)",
|
|
1483
|
+
"type": "boolean",
|
|
1484
|
+
"description": "Whether to pass the date value as a UTC date, or a date in the current timezone.",
|
|
1485
|
+
"required": false
|
|
1486
|
+
},
|
|
1487
|
+
{
|
|
1488
|
+
"name": "pickerConfig (props)",
|
|
1489
|
+
"type": "ObservableOrValueGetter<DbxFixedDateRangePickerConfiguration>",
|
|
1490
|
+
"description": "Custom picker configuration (limits, schedule).",
|
|
1491
|
+
"required": false
|
|
1492
|
+
},
|
|
1493
|
+
{
|
|
1494
|
+
"name": "timezone (props)",
|
|
1495
|
+
"type": "Maybe<ObservableOrValueGetter<Maybe<TimezoneString>>>",
|
|
1496
|
+
"description": "The input timezone to default to. Ignored if fullDayInUTC is true.",
|
|
1497
|
+
"required": false
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
"name": "showTimezone (props)",
|
|
1501
|
+
"type": "Maybe<boolean>",
|
|
1502
|
+
"description": "Whether to display the timezone. Defaults to true.",
|
|
1503
|
+
"required": false
|
|
1504
|
+
},
|
|
1505
|
+
{
|
|
1506
|
+
"name": "presets (props)",
|
|
1507
|
+
"type": "ObservableOrValueGetter<DateTimePresetConfiguration[]>",
|
|
1508
|
+
"description": "Custom presets.",
|
|
1509
|
+
"required": false
|
|
1510
|
+
},
|
|
1511
|
+
{
|
|
1512
|
+
"name": "showRangeInput (props)",
|
|
1513
|
+
"type": "boolean",
|
|
1514
|
+
"description": "Whether to show the range input text fields. Defaults to true.",
|
|
1515
|
+
"required": false
|
|
1516
|
+
},
|
|
1517
|
+
{
|
|
1518
|
+
"name": "appearance (props)",
|
|
1519
|
+
"type": "'fill' | 'outline'",
|
|
1520
|
+
"description": "Material form field appearance.",
|
|
1521
|
+
"required": false
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
"name": "hint (props)",
|
|
1525
|
+
"type": "DynamicText",
|
|
1526
|
+
"description": "Hint text displayed below the field.",
|
|
1527
|
+
"required": false
|
|
1528
|
+
}
|
|
1529
|
+
],
|
|
1530
|
+
"wrapperPattern": "material-form-field-wrapped",
|
|
1531
|
+
"ngFormType": "fixeddaterange",
|
|
1532
|
+
"configInterface": "DbxForgeFixedDateRangeFieldConfig",
|
|
1533
|
+
"sourceLocation": {
|
|
1534
|
+
"file": "src/lib/forge/field/value/date/fixeddaterange.field.ts",
|
|
1535
|
+
"line": 51
|
|
1536
|
+
}
|
|
1537
|
+
},
|
|
1538
|
+
{
|
|
1539
|
+
"slug": "time-duration",
|
|
1540
|
+
"factoryName": "dbxForgeTimeDurationField",
|
|
1541
|
+
"tier": "field-factory",
|
|
1542
|
+
"produces": "TimeDurationValue",
|
|
1543
|
+
"arrayOutput": "no",
|
|
1544
|
+
"description": "Duration input with popover picker. Output shape varies by `valueMode` — number (ms/s/…), string, or structured object.\n\nUses a custom ng-forge ValueFieldComponent that provides a text input\naccepting duration strings (e.g. \"2h30m\") and a popover picker.",
|
|
1545
|
+
"sourcePath": "field/value/duration/duration.field.ts",
|
|
1546
|
+
"example": "dbxForgeTimeDurationField({ key: 'duration', label: 'Duration', outputUnit: 'm' })",
|
|
1547
|
+
"properties": [
|
|
1548
|
+
{
|
|
1549
|
+
"name": "outputUnit",
|
|
1550
|
+
"type": "TimeUnit",
|
|
1551
|
+
"description": "The unit of the output value.\n\nDefaults to `'ms'` (milliseconds).",
|
|
1552
|
+
"required": false
|
|
1553
|
+
},
|
|
1554
|
+
{
|
|
1555
|
+
"name": "valueMode",
|
|
1556
|
+
"type": "TimeDurationFieldValueMode",
|
|
1557
|
+
"description": "The output value mode.\n\nDefaults to `'number'`.",
|
|
1558
|
+
"required": false
|
|
1559
|
+
},
|
|
1560
|
+
{
|
|
1561
|
+
"name": "allowedUnits",
|
|
1562
|
+
"type": "TimeUnit[]",
|
|
1563
|
+
"description": "The time units available for the field.",
|
|
1564
|
+
"required": false
|
|
1565
|
+
},
|
|
1566
|
+
{
|
|
1567
|
+
"name": "pickerUnits",
|
|
1568
|
+
"type": "TimeUnit[]",
|
|
1569
|
+
"description": "Which units to show in the popover picker.\n\nDefaults to allowedUnits filtered to exclude 'ms'.",
|
|
1570
|
+
"required": false
|
|
1571
|
+
},
|
|
1572
|
+
{
|
|
1573
|
+
"name": "carryOver",
|
|
1574
|
+
"type": "boolean",
|
|
1575
|
+
"description": "Whether the popover picker should carry over values to the next larger unit.",
|
|
1576
|
+
"required": false
|
|
1577
|
+
}
|
|
1578
|
+
],
|
|
1579
|
+
"wrapperPattern": "unwrapped",
|
|
1580
|
+
"ngFormType": "timeduration",
|
|
1581
|
+
"configInterface": "DbxForgeTimeDurationFieldConfig",
|
|
1582
|
+
"sourceLocation": {
|
|
1583
|
+
"file": "src/lib/forge/field/value/duration/duration.field.ts",
|
|
1584
|
+
"line": 75
|
|
1585
|
+
}
|
|
1586
|
+
},
|
|
1587
|
+
{
|
|
1588
|
+
"slug": "dollar-amount",
|
|
1589
|
+
"factoryName": "dbxForgeDollarAmountField",
|
|
1590
|
+
"tier": "field-derivative",
|
|
1591
|
+
"produces": "number",
|
|
1592
|
+
"arrayOutput": "no",
|
|
1593
|
+
"description": "Forge number field pre-configured for dollar amount input with cent-level precision. Pre-sets `transform.precision` to `DOLLAR_AMOUNT_PRECISION` so values round to whole cents.",
|
|
1594
|
+
"sourcePath": "field/value/number/number.field.ts",
|
|
1595
|
+
"example": "const field = dbxForgeDollarAmountField({ key: 'price', label: 'Price', min: 0, required: true });",
|
|
1596
|
+
"properties": [
|
|
1597
|
+
{
|
|
1598
|
+
"name": "autocomplete",
|
|
1599
|
+
"type": "FieldAutocompleteAttributeOption",
|
|
1600
|
+
"description": "",
|
|
1601
|
+
"required": false
|
|
1602
|
+
},
|
|
1603
|
+
{
|
|
1604
|
+
"name": "min",
|
|
1605
|
+
"type": "number",
|
|
1606
|
+
"description": "",
|
|
1607
|
+
"required": false
|
|
1608
|
+
},
|
|
1609
|
+
{
|
|
1610
|
+
"name": "max",
|
|
1611
|
+
"type": "number",
|
|
1612
|
+
"description": "",
|
|
1613
|
+
"required": false
|
|
1614
|
+
},
|
|
1615
|
+
{
|
|
1616
|
+
"name": "step",
|
|
1617
|
+
"type": "number",
|
|
1618
|
+
"description": "Step increment for the input.",
|
|
1619
|
+
"required": false
|
|
1620
|
+
},
|
|
1621
|
+
{
|
|
1622
|
+
"name": "enforceStep",
|
|
1623
|
+
"type": "boolean",
|
|
1624
|
+
"description": "When true, validates that the value is divisible by `step`.\nRequires `step` to be set.",
|
|
1625
|
+
"required": false
|
|
1626
|
+
},
|
|
1627
|
+
{
|
|
1628
|
+
"name": "idempotentTransform",
|
|
1629
|
+
"type": "TransformNumberFunctionConfig",
|
|
1630
|
+
"description": "An idempotent number transformation applied as a value parser (e.g., rounding, precision, bounds).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
|
|
1631
|
+
"required": false
|
|
1632
|
+
}
|
|
1633
|
+
],
|
|
1634
|
+
"composesFromSlugs": [
|
|
1635
|
+
"number"
|
|
1636
|
+
],
|
|
1637
|
+
"configInterface": "DbxForgeDollarAmountFieldConfig",
|
|
1638
|
+
"sourceLocation": {
|
|
1639
|
+
"file": "src/lib/forge/field/value/number/number.field.ts",
|
|
1640
|
+
"line": 141
|
|
1641
|
+
}
|
|
1642
|
+
},
|
|
1643
|
+
{
|
|
1644
|
+
"slug": "number",
|
|
1645
|
+
"factoryName": "dbxForgeNumberField",
|
|
1646
|
+
"tier": "field-factory",
|
|
1647
|
+
"produces": "number",
|
|
1648
|
+
"arrayOutput": "no",
|
|
1649
|
+
"description": "Numeric input (HTML `type=\"number\"`). Supports min/max/step constraints, optional step enforcement (divisibility validator), and idempotent number transforms.\n\nWhen `step` is provided, sets the HTML `step` attribute on the input via `meta`.\nWhen both `step` and `enforceStep` are set, adds a custom divisibility validator.",
|
|
1650
|
+
"sourcePath": "field/value/number/number.field.ts",
|
|
1651
|
+
"example": "dbxForgeNumberField({ key: 'quantity', label: 'Quantity', min: 1, max: 100, step: 1, enforceStep: true })",
|
|
1652
|
+
"properties": [
|
|
1653
|
+
{
|
|
1654
|
+
"name": "autocomplete",
|
|
1655
|
+
"type": "FieldAutocompleteAttributeOption",
|
|
1656
|
+
"description": "",
|
|
1657
|
+
"required": false
|
|
1658
|
+
},
|
|
1659
|
+
{
|
|
1660
|
+
"name": "min",
|
|
1661
|
+
"type": "number",
|
|
1662
|
+
"description": "",
|
|
1663
|
+
"required": false
|
|
1664
|
+
},
|
|
1665
|
+
{
|
|
1666
|
+
"name": "max",
|
|
1667
|
+
"type": "number",
|
|
1668
|
+
"description": "",
|
|
1669
|
+
"required": false
|
|
1670
|
+
},
|
|
1671
|
+
{
|
|
1672
|
+
"name": "step",
|
|
1673
|
+
"type": "number",
|
|
1674
|
+
"description": "Step increment for the input.",
|
|
1675
|
+
"required": false
|
|
1676
|
+
},
|
|
1677
|
+
{
|
|
1678
|
+
"name": "enforceStep",
|
|
1679
|
+
"type": "boolean",
|
|
1680
|
+
"description": "When true, validates that the value is divisible by `step`.\nRequires `step` to be set.",
|
|
1681
|
+
"required": false
|
|
1682
|
+
},
|
|
1683
|
+
{
|
|
1684
|
+
"name": "idempotentTransform",
|
|
1685
|
+
"type": "TransformNumberFunctionConfig",
|
|
1686
|
+
"description": "An idempotent number transformation applied as a value parser (e.g., rounding, precision, bounds).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
|
|
1687
|
+
"required": false
|
|
1688
|
+
}
|
|
1689
|
+
],
|
|
1690
|
+
"wrapperPattern": "unwrapped",
|
|
1691
|
+
"ngFormType": "input",
|
|
1692
|
+
"configInterface": "DbxForgeNumberFieldConfig",
|
|
1693
|
+
"sourceLocation": {
|
|
1694
|
+
"file": "src/lib/forge/field/value/number/number.field.ts",
|
|
1695
|
+
"line": 72
|
|
1696
|
+
}
|
|
1697
|
+
},
|
|
1698
|
+
{
|
|
1699
|
+
"slug": "number-slider",
|
|
1700
|
+
"factoryName": "dbxForgeNumberSliderField",
|
|
1701
|
+
"tier": "field-factory",
|
|
1702
|
+
"produces": "number",
|
|
1703
|
+
"arrayOutput": "no",
|
|
1704
|
+
"description": "Material slider wrapped in a form-field container. Supports thumb label, tick interval, and step-derived tick spacing.\n\nThe wrapper provides the Material outlined form-field appearance (notched outline with\nfloating label, hint/error subscript). The inner slider uses the ng-forge built-in\n`slider` type.",
|
|
1705
|
+
"sourcePath": "field/value/number/slider.field.ts",
|
|
1706
|
+
"example": "dbxForgeNumberSliderField({ key: 'rating', label: 'Rating', min: 0, max: 10, step: 1 })",
|
|
1707
|
+
"properties": [
|
|
1708
|
+
{
|
|
1709
|
+
"name": "thumbLabel",
|
|
1710
|
+
"type": "boolean",
|
|
1711
|
+
"description": "Whether or not to show the thumb label while sliding.\n\nDefaults to true.",
|
|
1712
|
+
"required": false
|
|
1713
|
+
},
|
|
1714
|
+
{
|
|
1715
|
+
"name": "tickInterval",
|
|
1716
|
+
"type": "false | number",
|
|
1717
|
+
"description": "Tick interval. If not provided defaults to the step value, if provided.\nIf false, the ticks are disabled.",
|
|
1718
|
+
"required": false
|
|
1719
|
+
}
|
|
1720
|
+
],
|
|
1721
|
+
"wrapperPattern": "material-form-field-wrapped",
|
|
1722
|
+
"ngFormType": "slider",
|
|
1723
|
+
"configInterface": "DbxForgeNumberSliderFieldConfig",
|
|
1724
|
+
"sourceLocation": {
|
|
1725
|
+
"file": "src/lib/forge/field/value/number/slider.field.ts",
|
|
1726
|
+
"line": 46
|
|
1727
|
+
}
|
|
1728
|
+
},
|
|
1729
|
+
{
|
|
1730
|
+
"slug": "phone",
|
|
1731
|
+
"factoryName": "dbxForgePhoneField",
|
|
1732
|
+
"tier": "field-factory",
|
|
1733
|
+
"produces": "string",
|
|
1734
|
+
"arrayOutput": "no",
|
|
1735
|
+
"description": "International phone number input backed by ngx-mat-input-tel. Supports preferred-country lists, search, and optional extension input.\n\nUses the custom 'phone' field type which renders the ngx-mat-input-tel component\nbridged to Signal Forms.",
|
|
1736
|
+
"sourcePath": "field/value/phone/phone.field.ts",
|
|
1737
|
+
"example": "dbxForgePhoneField({ key: 'phone', label: 'Phone', preferredCountries: ['US', 'CA'] })",
|
|
1738
|
+
"properties": [
|
|
1739
|
+
{
|
|
1740
|
+
"name": "preferredCountries",
|
|
1741
|
+
"type": "string[]",
|
|
1742
|
+
"description": "Preferred countries to show at the top of the country selector.",
|
|
1743
|
+
"required": false
|
|
1744
|
+
},
|
|
1745
|
+
{
|
|
1746
|
+
"name": "onlyCountries",
|
|
1747
|
+
"type": "string[]",
|
|
1748
|
+
"description": "ISO country codes to restrict the dropdown to.",
|
|
1749
|
+
"required": false
|
|
1750
|
+
},
|
|
1751
|
+
{
|
|
1752
|
+
"name": "enableSearch",
|
|
1753
|
+
"type": "boolean",
|
|
1754
|
+
"description": "Whether or not to enable the search feature. True by default.",
|
|
1755
|
+
"required": false
|
|
1756
|
+
},
|
|
1757
|
+
{
|
|
1758
|
+
"name": "allowExtension",
|
|
1759
|
+
"type": "boolean",
|
|
1760
|
+
"description": "Whether or not to allow adding an extension. False by default.",
|
|
1761
|
+
"required": false
|
|
1762
|
+
},
|
|
1763
|
+
{
|
|
1764
|
+
"name": "autocomplete",
|
|
1765
|
+
"type": "DbxForgePhoneFieldAutocomplete",
|
|
1766
|
+
"description": "Sets the autocomplete attribute on the phone input.\n\nPass `'tel'` to enable phone autofill, or `false`/`'off'` to disable.",
|
|
1767
|
+
"required": false
|
|
1768
|
+
},
|
|
1769
|
+
{
|
|
1770
|
+
"name": "preferredCountries (props)",
|
|
1771
|
+
"type": "string[]",
|
|
1772
|
+
"description": "ISO country codes for countries shown first in the dropdown.",
|
|
1773
|
+
"required": false
|
|
1774
|
+
},
|
|
1775
|
+
{
|
|
1776
|
+
"name": "onlyCountries (props)",
|
|
1777
|
+
"type": "string[]",
|
|
1778
|
+
"description": "ISO country codes to restrict the dropdown to.",
|
|
1779
|
+
"required": false
|
|
1780
|
+
},
|
|
1781
|
+
{
|
|
1782
|
+
"name": "enableSearch (props)",
|
|
1783
|
+
"type": "boolean",
|
|
1784
|
+
"description": "Whether or not to enable the search feature. True by default.",
|
|
1785
|
+
"required": false
|
|
1786
|
+
},
|
|
1787
|
+
{
|
|
1788
|
+
"name": "allowExtension (props)",
|
|
1789
|
+
"type": "boolean",
|
|
1790
|
+
"description": "Whether or not to allow adding an extension. False by default.",
|
|
1791
|
+
"required": false
|
|
1792
|
+
},
|
|
1793
|
+
{
|
|
1794
|
+
"name": "appearance (props)",
|
|
1795
|
+
"type": "'fill' | 'outline'",
|
|
1796
|
+
"description": "Material form field appearance.",
|
|
1797
|
+
"required": false
|
|
1798
|
+
},
|
|
1799
|
+
{
|
|
1800
|
+
"name": "hint (props)",
|
|
1801
|
+
"type": "DynamicText",
|
|
1802
|
+
"description": "Hint text displayed below the field.",
|
|
1803
|
+
"required": false
|
|
1804
|
+
},
|
|
1805
|
+
{
|
|
1806
|
+
"name": "autocomplete (props)",
|
|
1807
|
+
"type": "'off' | 'tel'",
|
|
1808
|
+
"description": "Autocomplete value for the phone input. The underlying `ngx-mat-input-tel`\ncomponent supports `'off'` and `'tel'`.",
|
|
1809
|
+
"required": false
|
|
1810
|
+
}
|
|
1811
|
+
],
|
|
1812
|
+
"wrapperPattern": "unwrapped",
|
|
1813
|
+
"ngFormType": "phone",
|
|
1814
|
+
"configInterface": "DbxForgePhoneFieldConfig",
|
|
1815
|
+
"sourceLocation": {
|
|
1816
|
+
"file": "src/lib/forge/field/value/phone/phone.field.ts",
|
|
1817
|
+
"line": 78
|
|
1818
|
+
}
|
|
1819
|
+
},
|
|
1820
|
+
{
|
|
1821
|
+
"slug": "name",
|
|
1822
|
+
"factoryName": "dbxForgeNameField",
|
|
1823
|
+
"tier": "field-derivative",
|
|
1824
|
+
"produces": "string",
|
|
1825
|
+
"arrayOutput": "no",
|
|
1826
|
+
"description": "Pre-configured text field for capturing a full name with sensible min/max length defaults.",
|
|
1827
|
+
"sourcePath": "field/value/text/text.additional.field.ts",
|
|
1828
|
+
"example": "dbxForgeNameField({ key: 'fullName', label: 'Full Name', required: true })",
|
|
1829
|
+
"properties": [],
|
|
1830
|
+
"composesFromSlugs": [
|
|
1831
|
+
"text"
|
|
1832
|
+
],
|
|
1833
|
+
"configInterface": "DbxForgeNameFieldConfig",
|
|
1834
|
+
"sourceLocation": {
|
|
1835
|
+
"file": "src/lib/forge/field/value/text/text.additional.field.ts",
|
|
1836
|
+
"line": 24
|
|
1837
|
+
}
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
"slug": "email",
|
|
1841
|
+
"factoryName": "dbxForgeEmailField",
|
|
1842
|
+
"tier": "field-derivative",
|
|
1843
|
+
"produces": "string",
|
|
1844
|
+
"arrayOutput": "no",
|
|
1845
|
+
"description": "Text field pre-configured with email input type and email validator. Prefer this over configuring `dbxForgeTextField` with `inputType: \"email\"` directly.\n\nUses the `'email'` input type for built-in browser validation.",
|
|
1846
|
+
"sourcePath": "field/value/text/text.additional.field.ts",
|
|
1847
|
+
"example": "dbxForgeEmailField({ key: 'email', label: 'Email', required: true })",
|
|
1848
|
+
"properties": [
|
|
1849
|
+
{
|
|
1850
|
+
"name": "key",
|
|
1851
|
+
"type": "string",
|
|
1852
|
+
"description": "",
|
|
1853
|
+
"required": false
|
|
1854
|
+
},
|
|
1855
|
+
{
|
|
1856
|
+
"name": "label",
|
|
1857
|
+
"type": "string",
|
|
1858
|
+
"description": "",
|
|
1859
|
+
"required": false
|
|
1860
|
+
},
|
|
1861
|
+
{
|
|
1862
|
+
"name": "placeholder",
|
|
1863
|
+
"type": "string",
|
|
1864
|
+
"description": "",
|
|
1865
|
+
"required": false
|
|
1866
|
+
},
|
|
1867
|
+
{
|
|
1868
|
+
"name": "required",
|
|
1869
|
+
"type": "boolean",
|
|
1870
|
+
"description": "",
|
|
1871
|
+
"required": false
|
|
1872
|
+
},
|
|
1873
|
+
{
|
|
1874
|
+
"name": "readonly",
|
|
1875
|
+
"type": "boolean",
|
|
1876
|
+
"description": "",
|
|
1877
|
+
"required": false
|
|
1878
|
+
},
|
|
1879
|
+
{
|
|
1880
|
+
"name": "description",
|
|
1881
|
+
"type": "string",
|
|
1882
|
+
"description": "",
|
|
1883
|
+
"required": false
|
|
1884
|
+
},
|
|
1885
|
+
{
|
|
1886
|
+
"name": "autocomplete",
|
|
1887
|
+
"type": "FieldAutocompleteAttributeOption",
|
|
1888
|
+
"description": "Sets the autocomplete attribute on the input. Pass `false` to disable browser autofill.",
|
|
1889
|
+
"required": false
|
|
1890
|
+
}
|
|
1891
|
+
],
|
|
1892
|
+
"composesFromSlugs": [
|
|
1893
|
+
"text"
|
|
1894
|
+
],
|
|
1895
|
+
"configInterface": "DbxForgeEmailFieldConfig",
|
|
1896
|
+
"sourceLocation": {
|
|
1897
|
+
"file": "src/lib/forge/field/value/text/text.additional.field.ts",
|
|
1898
|
+
"line": 74
|
|
1899
|
+
}
|
|
1900
|
+
},
|
|
1901
|
+
{
|
|
1902
|
+
"slug": "city",
|
|
1903
|
+
"factoryName": "dbxForgeCityField",
|
|
1904
|
+
"tier": "field-derivative",
|
|
1905
|
+
"produces": "string",
|
|
1906
|
+
"arrayOutput": "no",
|
|
1907
|
+
"description": "City name input enforcing `ADDRESS_CITY_MAX_LENGTH`. Typically used inside the address composite set.",
|
|
1908
|
+
"sourcePath": "field/value/text/text.additional.field.ts",
|
|
1909
|
+
"example": "dbxForgeCityField({ required: true })",
|
|
1910
|
+
"properties": [
|
|
1911
|
+
{
|
|
1912
|
+
"name": "autocomplete",
|
|
1913
|
+
"type": "FieldAutocompleteAttributeOption",
|
|
1914
|
+
"description": "",
|
|
1915
|
+
"required": false
|
|
1916
|
+
},
|
|
1917
|
+
{
|
|
1918
|
+
"name": "inputType",
|
|
1919
|
+
"type": "DbxForgeTextFieldInputType",
|
|
1920
|
+
"description": "HTML input type. Defaults to `'text'`.",
|
|
1921
|
+
"required": false
|
|
1922
|
+
},
|
|
1923
|
+
{
|
|
1924
|
+
"name": "idempotentTransform",
|
|
1925
|
+
"type": "TransformStringFunctionConfig",
|
|
1926
|
+
"description": "An idempotent string transformation applied as a value parser (e.g., trim, uppercase).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
|
|
1927
|
+
"required": false
|
|
1928
|
+
}
|
|
1929
|
+
],
|
|
1930
|
+
"composesFromSlugs": [
|
|
1931
|
+
"text"
|
|
1932
|
+
],
|
|
1933
|
+
"configInterface": "DbxForgeCityFieldConfig",
|
|
1934
|
+
"sourceLocation": {
|
|
1935
|
+
"file": "src/lib/forge/field/value/text/text.additional.field.ts",
|
|
1936
|
+
"line": 112
|
|
1937
|
+
}
|
|
1938
|
+
},
|
|
1939
|
+
{
|
|
1940
|
+
"slug": "state",
|
|
1941
|
+
"factoryName": "dbxForgeStateField",
|
|
1942
|
+
"tier": "field-derivative",
|
|
1943
|
+
"produces": "string",
|
|
1944
|
+
"arrayOutput": "no",
|
|
1945
|
+
"description": "US state input. When `asCode: true`, validates two-letter codes and auto-uppercases input via an idempotent transform.",
|
|
1946
|
+
"sourcePath": "field/value/text/text.additional.field.ts",
|
|
1947
|
+
"example": "dbxForgeStateField({ asCode: true, required: true })",
|
|
1948
|
+
"properties": [
|
|
1949
|
+
{
|
|
1950
|
+
"name": "asCode",
|
|
1951
|
+
"type": "boolean",
|
|
1952
|
+
"description": "When true, validates and formats as a 2-letter state code (e.g., `'CA'`).",
|
|
1953
|
+
"required": false
|
|
1954
|
+
}
|
|
1955
|
+
],
|
|
1956
|
+
"composesFromSlugs": [
|
|
1957
|
+
"text"
|
|
1958
|
+
],
|
|
1959
|
+
"configInterface": "DbxForgeStateFieldConfig",
|
|
1960
|
+
"sourceLocation": {
|
|
1961
|
+
"file": "src/lib/forge/field/value/text/text.additional.field.ts",
|
|
1962
|
+
"line": 153
|
|
1963
|
+
}
|
|
1964
|
+
},
|
|
1965
|
+
{
|
|
1966
|
+
"slug": "country",
|
|
1967
|
+
"factoryName": "dbxForgeCountryField",
|
|
1968
|
+
"tier": "field-derivative",
|
|
1969
|
+
"produces": "string",
|
|
1970
|
+
"arrayOutput": "no",
|
|
1971
|
+
"description": "Country name input enforcing `ADDRESS_COUNTRY_MAX_LENGTH`. Typically used inside the address composite set.",
|
|
1972
|
+
"sourcePath": "field/value/text/text.additional.field.ts",
|
|
1973
|
+
"example": "dbxForgeCountryField({ required: true })",
|
|
1974
|
+
"properties": [
|
|
1975
|
+
{
|
|
1976
|
+
"name": "autocomplete",
|
|
1977
|
+
"type": "FieldAutocompleteAttributeOption",
|
|
1978
|
+
"description": "",
|
|
1979
|
+
"required": false
|
|
1980
|
+
},
|
|
1981
|
+
{
|
|
1982
|
+
"name": "inputType",
|
|
1983
|
+
"type": "DbxForgeTextFieldInputType",
|
|
1984
|
+
"description": "HTML input type. Defaults to `'text'`.",
|
|
1985
|
+
"required": false
|
|
1986
|
+
},
|
|
1987
|
+
{
|
|
1988
|
+
"name": "idempotentTransform",
|
|
1989
|
+
"type": "TransformStringFunctionConfig",
|
|
1990
|
+
"description": "An idempotent string transformation applied as a value parser (e.g., trim, uppercase).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
|
|
1991
|
+
"required": false
|
|
1992
|
+
}
|
|
1993
|
+
],
|
|
1994
|
+
"composesFromSlugs": [
|
|
1995
|
+
"text"
|
|
1996
|
+
],
|
|
1997
|
+
"configInterface": "DbxForgeCountryFieldConfig",
|
|
1998
|
+
"sourceLocation": {
|
|
1999
|
+
"file": "src/lib/forge/field/value/text/text.additional.field.ts",
|
|
2000
|
+
"line": 194
|
|
2001
|
+
}
|
|
2002
|
+
},
|
|
2003
|
+
{
|
|
2004
|
+
"slug": "zip-code",
|
|
2005
|
+
"factoryName": "dbxForgeZipCodeField",
|
|
2006
|
+
"tier": "field-derivative",
|
|
2007
|
+
"produces": "string",
|
|
2008
|
+
"arrayOutput": "no",
|
|
2009
|
+
"description": "US zip code input with pattern validation and max-length enforcement.",
|
|
2010
|
+
"sourcePath": "field/value/text/text.additional.field.ts",
|
|
2011
|
+
"example": "dbxForgeZipCodeField({ required: true })",
|
|
2012
|
+
"properties": [
|
|
2013
|
+
{
|
|
2014
|
+
"name": "autocomplete",
|
|
2015
|
+
"type": "FieldAutocompleteAttributeOption",
|
|
2016
|
+
"description": "",
|
|
2017
|
+
"required": false
|
|
2018
|
+
},
|
|
2019
|
+
{
|
|
2020
|
+
"name": "inputType",
|
|
2021
|
+
"type": "DbxForgeTextFieldInputType",
|
|
2022
|
+
"description": "HTML input type. Defaults to `'text'`.",
|
|
2023
|
+
"required": false
|
|
2024
|
+
},
|
|
2025
|
+
{
|
|
2026
|
+
"name": "idempotentTransform",
|
|
2027
|
+
"type": "TransformStringFunctionConfig",
|
|
2028
|
+
"description": "An idempotent string transformation applied as a value parser (e.g., trim, uppercase).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
|
|
2029
|
+
"required": false
|
|
2030
|
+
}
|
|
2031
|
+
],
|
|
2032
|
+
"composesFromSlugs": [
|
|
2033
|
+
"text"
|
|
2034
|
+
],
|
|
2035
|
+
"configInterface": "DbxForgeZipCodeFieldConfig",
|
|
2036
|
+
"sourceLocation": {
|
|
2037
|
+
"file": "src/lib/forge/field/value/text/text.additional.field.ts",
|
|
2038
|
+
"line": 230
|
|
2039
|
+
}
|
|
2040
|
+
},
|
|
2041
|
+
{
|
|
2042
|
+
"slug": "lat-lng",
|
|
2043
|
+
"factoryName": "dbxForgeLatLngTextField",
|
|
2044
|
+
"tier": "field-derivative",
|
|
2045
|
+
"produces": "string",
|
|
2046
|
+
"arrayOutput": "no",
|
|
2047
|
+
"description": "Latitude/longitude coordinate input with decimal-degree pattern validation.",
|
|
2048
|
+
"sourcePath": "field/value/text/text.additional.field.ts",
|
|
2049
|
+
"example": "dbxForgeLatLngTextField({ key: 'coords', label: 'Coordinates' })",
|
|
2050
|
+
"properties": [],
|
|
2051
|
+
"composesFromSlugs": [
|
|
2052
|
+
"text"
|
|
2053
|
+
],
|
|
2054
|
+
"configInterface": "DbxForgeLatLngTextFieldConfig",
|
|
2055
|
+
"sourceLocation": {
|
|
2056
|
+
"file": "src/lib/forge/field/value/text/text.additional.field.ts",
|
|
2057
|
+
"line": 267
|
|
2058
|
+
}
|
|
2059
|
+
},
|
|
2060
|
+
{
|
|
2061
|
+
"slug": "address-line",
|
|
2062
|
+
"factoryName": "dbxForgeAddressLineField",
|
|
2063
|
+
"tier": "field-derivative",
|
|
2064
|
+
"produces": "string",
|
|
2065
|
+
"arrayOutput": "no",
|
|
2066
|
+
"description": "Street address line input. The `line` prop controls which line (1 or 2) — it affects key and label generation.",
|
|
2067
|
+
"sourcePath": "field/value/text/text.address.field.ts",
|
|
2068
|
+
"example": "dbxForgeAddressLineField({ line: 2 })",
|
|
2069
|
+
"properties": [
|
|
2070
|
+
{
|
|
2071
|
+
"name": "line",
|
|
2072
|
+
"type": "0 | 1 | 2",
|
|
2073
|
+
"description": "Address line number: 0 for single \"Street\" line, 1 for \"Line 1\", 2 for \"Line 2\".",
|
|
2074
|
+
"required": false
|
|
2075
|
+
}
|
|
2076
|
+
],
|
|
2077
|
+
"composesFromSlugs": [
|
|
2078
|
+
"text"
|
|
2079
|
+
],
|
|
2080
|
+
"configInterface": "DbxForgeAddressLineFieldConfig",
|
|
2081
|
+
"sourceLocation": {
|
|
2082
|
+
"file": "src/lib/forge/field/value/text/text.address.field.ts",
|
|
2083
|
+
"line": 68
|
|
2084
|
+
}
|
|
2085
|
+
},
|
|
2086
|
+
{
|
|
2087
|
+
"slug": "address-fields",
|
|
2088
|
+
"factoryName": "dbxForgeAddressFields",
|
|
2089
|
+
"tier": "template-builder",
|
|
2090
|
+
"produces": "FieldDef[]",
|
|
2091
|
+
"arrayOutput": "no",
|
|
2092
|
+
"description": "Flat array of address fields (line(s), city, state, zip, optional country) with a sensible flex layout. Drop directly into a parent `fields: []`.",
|
|
2093
|
+
"sourcePath": "field/value/text/text.address.field.ts",
|
|
2094
|
+
"example": "dbxForgeAddressFields({ required: true, includeCountry: false })",
|
|
2095
|
+
"properties": [
|
|
2096
|
+
{
|
|
2097
|
+
"name": "line1Field",
|
|
2098
|
+
"type": "DbxForgeCityFieldConfig",
|
|
2099
|
+
"description": "",
|
|
2100
|
+
"required": false
|
|
2101
|
+
},
|
|
2102
|
+
{
|
|
2103
|
+
"name": "line2Field",
|
|
2104
|
+
"type": "DbxForgeCityFieldConfig",
|
|
2105
|
+
"description": "",
|
|
2106
|
+
"required": false
|
|
2107
|
+
},
|
|
2108
|
+
{
|
|
2109
|
+
"name": "cityField",
|
|
2110
|
+
"type": "DbxForgeCityFieldConfig",
|
|
2111
|
+
"description": "",
|
|
2112
|
+
"required": false
|
|
2113
|
+
},
|
|
2114
|
+
{
|
|
2115
|
+
"name": "stateField",
|
|
2116
|
+
"type": "DbxForgeStateFieldConfig",
|
|
2117
|
+
"description": "",
|
|
2118
|
+
"required": false
|
|
2119
|
+
},
|
|
2120
|
+
{
|
|
2121
|
+
"name": "zipCodeField",
|
|
2122
|
+
"type": "DbxForgeZipCodeFieldConfig",
|
|
2123
|
+
"description": "",
|
|
2124
|
+
"required": false
|
|
2125
|
+
},
|
|
2126
|
+
{
|
|
2127
|
+
"name": "countryField",
|
|
2128
|
+
"type": "DbxForgeCountryFieldConfig",
|
|
2129
|
+
"description": "",
|
|
2130
|
+
"required": false
|
|
2131
|
+
},
|
|
2132
|
+
{
|
|
2133
|
+
"name": "required",
|
|
2134
|
+
"type": "boolean",
|
|
2135
|
+
"description": "Whether or not to make required fields required.\n\nTrue by default.",
|
|
2136
|
+
"required": false
|
|
2137
|
+
},
|
|
2138
|
+
{
|
|
2139
|
+
"name": "includeLine2",
|
|
2140
|
+
"type": "boolean",
|
|
2141
|
+
"description": "Whether or not to include the second address line.\n\nTrue by default.",
|
|
2142
|
+
"required": false
|
|
2143
|
+
},
|
|
2144
|
+
{
|
|
2145
|
+
"name": "includeCountry",
|
|
2146
|
+
"type": "boolean",
|
|
2147
|
+
"description": "Whether or not to include the country.\n\nTrue by default.",
|
|
2148
|
+
"required": false
|
|
2149
|
+
}
|
|
2150
|
+
],
|
|
2151
|
+
"composesFromSlugs": [
|
|
2152
|
+
"address-line",
|
|
2153
|
+
"city",
|
|
2154
|
+
"state",
|
|
2155
|
+
"zip-code",
|
|
2156
|
+
"country"
|
|
2157
|
+
],
|
|
2158
|
+
"configInterface": "DbxForgeAddressFieldsConfig",
|
|
2159
|
+
"sourceLocation": {
|
|
2160
|
+
"file": "src/lib/forge/field/value/text/text.address.field.ts",
|
|
2161
|
+
"line": 101
|
|
2162
|
+
}
|
|
2163
|
+
},
|
|
2164
|
+
{
|
|
2165
|
+
"slug": "address-group",
|
|
2166
|
+
"factoryName": "dbxForgeAddressGroup",
|
|
2167
|
+
"tier": "composite-builder",
|
|
2168
|
+
"produces": "GroupField",
|
|
2169
|
+
"arrayOutput": "no",
|
|
2170
|
+
"description": "Wraps `address-fields` in a `GroupField` so the address is stored as a nested object under one key. Prefer this when the rest of the form doesn't want address fields flattened.",
|
|
2171
|
+
"sourcePath": "field/value/text/text.address.field.ts",
|
|
2172
|
+
"example": "dbxForgeAddressGroup({ key: 'billingAddress' })",
|
|
2173
|
+
"properties": [
|
|
2174
|
+
{
|
|
2175
|
+
"name": "line1Field",
|
|
2176
|
+
"type": "DbxForgeCityFieldConfig",
|
|
2177
|
+
"description": "",
|
|
2178
|
+
"required": false
|
|
2179
|
+
},
|
|
2180
|
+
{
|
|
2181
|
+
"name": "line2Field",
|
|
2182
|
+
"type": "DbxForgeCityFieldConfig",
|
|
2183
|
+
"description": "",
|
|
2184
|
+
"required": false
|
|
2185
|
+
},
|
|
2186
|
+
{
|
|
2187
|
+
"name": "cityField",
|
|
2188
|
+
"type": "DbxForgeCityFieldConfig",
|
|
2189
|
+
"description": "",
|
|
2190
|
+
"required": false
|
|
2191
|
+
},
|
|
2192
|
+
{
|
|
2193
|
+
"name": "stateField",
|
|
2194
|
+
"type": "DbxForgeStateFieldConfig",
|
|
2195
|
+
"description": "",
|
|
2196
|
+
"required": false
|
|
2197
|
+
},
|
|
2198
|
+
{
|
|
2199
|
+
"name": "zipCodeField",
|
|
2200
|
+
"type": "DbxForgeZipCodeFieldConfig",
|
|
2201
|
+
"description": "",
|
|
2202
|
+
"required": false
|
|
2203
|
+
},
|
|
2204
|
+
{
|
|
2205
|
+
"name": "countryField",
|
|
2206
|
+
"type": "DbxForgeCountryFieldConfig",
|
|
2207
|
+
"description": "",
|
|
2208
|
+
"required": false
|
|
2209
|
+
},
|
|
2210
|
+
{
|
|
2211
|
+
"name": "required",
|
|
2212
|
+
"type": "boolean",
|
|
2213
|
+
"description": "Whether or not to make required fields required.\n\nTrue by default.",
|
|
2214
|
+
"required": false
|
|
2215
|
+
},
|
|
2216
|
+
{
|
|
2217
|
+
"name": "includeLine2",
|
|
2218
|
+
"type": "boolean",
|
|
2219
|
+
"description": "Whether or not to include the second address line.\n\nTrue by default.",
|
|
2220
|
+
"required": false
|
|
2221
|
+
},
|
|
2222
|
+
{
|
|
2223
|
+
"name": "includeCountry",
|
|
2224
|
+
"type": "boolean",
|
|
2225
|
+
"description": "Whether or not to include the country.\n\nTrue by default.",
|
|
2226
|
+
"required": false
|
|
2227
|
+
},
|
|
2228
|
+
{
|
|
2229
|
+
"name": "key",
|
|
2230
|
+
"type": "string",
|
|
2231
|
+
"description": "",
|
|
2232
|
+
"required": false
|
|
2233
|
+
}
|
|
2234
|
+
],
|
|
2235
|
+
"suffix": "Group",
|
|
2236
|
+
"composesFromSlugs": [
|
|
2237
|
+
"address-fields",
|
|
2238
|
+
"group"
|
|
2239
|
+
],
|
|
2240
|
+
"configInterface": "DbxForgeAddressGroupConfig",
|
|
2241
|
+
"sourceLocation": {
|
|
2242
|
+
"file": "src/lib/forge/field/value/text/text.address.field.ts",
|
|
2243
|
+
"line": 159
|
|
2244
|
+
}
|
|
2245
|
+
},
|
|
2246
|
+
{
|
|
2247
|
+
"slug": "address-list",
|
|
2248
|
+
"factoryName": "dbxForgeAddressListField",
|
|
2249
|
+
"tier": "composite-builder",
|
|
2250
|
+
"produces": "ArrayField",
|
|
2251
|
+
"arrayOutput": "yes",
|
|
2252
|
+
"description": "Repeatable array of addresses built on top of `array-field` + `address-group`. Keeps the `Field` suffix because it returns a single composite field whose value is an array of addresses.",
|
|
2253
|
+
"sourcePath": "field/value/text/text.address.field.ts",
|
|
2254
|
+
"example": "dbxForgeAddressListField({ maxAddresses: 3 })",
|
|
2255
|
+
"properties": [
|
|
2256
|
+
{
|
|
2257
|
+
"name": "line1Field",
|
|
2258
|
+
"type": "DbxForgeCityFieldConfig",
|
|
2259
|
+
"description": "",
|
|
2260
|
+
"required": false
|
|
2261
|
+
},
|
|
2262
|
+
{
|
|
2263
|
+
"name": "line2Field",
|
|
2264
|
+
"type": "DbxForgeCityFieldConfig",
|
|
2265
|
+
"description": "",
|
|
2266
|
+
"required": false
|
|
2267
|
+
},
|
|
2268
|
+
{
|
|
2269
|
+
"name": "cityField",
|
|
2270
|
+
"type": "DbxForgeCityFieldConfig",
|
|
2271
|
+
"description": "",
|
|
2272
|
+
"required": false
|
|
2273
|
+
},
|
|
2274
|
+
{
|
|
2275
|
+
"name": "stateField",
|
|
2276
|
+
"type": "DbxForgeStateFieldConfig",
|
|
2277
|
+
"description": "",
|
|
2278
|
+
"required": false
|
|
2279
|
+
},
|
|
2280
|
+
{
|
|
2281
|
+
"name": "zipCodeField",
|
|
2282
|
+
"type": "DbxForgeZipCodeFieldConfig",
|
|
2283
|
+
"description": "",
|
|
2284
|
+
"required": false
|
|
2285
|
+
},
|
|
2286
|
+
{
|
|
2287
|
+
"name": "countryField",
|
|
2288
|
+
"type": "DbxForgeCountryFieldConfig",
|
|
2289
|
+
"description": "",
|
|
2290
|
+
"required": false
|
|
2291
|
+
},
|
|
2292
|
+
{
|
|
2293
|
+
"name": "required",
|
|
2294
|
+
"type": "boolean",
|
|
2295
|
+
"description": "Whether or not to make required fields required.\n\nTrue by default.",
|
|
2296
|
+
"required": false
|
|
2297
|
+
},
|
|
2298
|
+
{
|
|
2299
|
+
"name": "includeLine2",
|
|
2300
|
+
"type": "boolean",
|
|
2301
|
+
"description": "Whether or not to include the second address line.\n\nTrue by default.",
|
|
2302
|
+
"required": false
|
|
2303
|
+
},
|
|
2304
|
+
{
|
|
2305
|
+
"name": "includeCountry",
|
|
2306
|
+
"type": "boolean",
|
|
2307
|
+
"description": "Whether or not to include the country.\n\nTrue by default.",
|
|
2308
|
+
"required": false
|
|
2309
|
+
},
|
|
2310
|
+
{
|
|
2311
|
+
"name": "key",
|
|
2312
|
+
"type": "string",
|
|
2313
|
+
"description": "",
|
|
2314
|
+
"required": false
|
|
2315
|
+
},
|
|
2316
|
+
{
|
|
2317
|
+
"name": "maxAddresses",
|
|
2318
|
+
"type": "number",
|
|
2319
|
+
"description": "Maximum number of addresses allowed. Defaults to 6.",
|
|
2320
|
+
"required": false
|
|
2321
|
+
}
|
|
2322
|
+
],
|
|
2323
|
+
"suffix": "Field",
|
|
2324
|
+
"composesFromSlugs": [
|
|
2325
|
+
"address-group",
|
|
2326
|
+
"array-field"
|
|
2327
|
+
],
|
|
2328
|
+
"configInterface": "DbxForgeAddressListFieldConfig",
|
|
2329
|
+
"sourceLocation": {
|
|
2330
|
+
"file": "src/lib/forge/field/value/text/text.address.field.ts",
|
|
2331
|
+
"line": 199
|
|
2332
|
+
}
|
|
2333
|
+
},
|
|
2334
|
+
{
|
|
2335
|
+
"slug": "text",
|
|
2336
|
+
"factoryName": "dbxForgeTextField",
|
|
2337
|
+
"tier": "field-factory",
|
|
2338
|
+
"produces": "string",
|
|
2339
|
+
"arrayOutput": "no",
|
|
2340
|
+
"description": "Single-line text input. Supports text/email/password input types, autocomplete attribute, regex pattern validation, and idempotent string transforms (trim, case changes, etc.).",
|
|
2341
|
+
"sourcePath": "field/value/text/text.field.ts",
|
|
2342
|
+
"example": "const emailField = dbxForgeTextField({\n key: 'email',\n label: 'Email',\n required: true,\n inputType: 'email',\n props: { placeholder: 'user@example.com' }\n});",
|
|
2343
|
+
"properties": [
|
|
2344
|
+
{
|
|
2345
|
+
"name": "autocomplete",
|
|
2346
|
+
"type": "FieldAutocompleteAttributeOption",
|
|
2347
|
+
"description": "",
|
|
2348
|
+
"required": false
|
|
2349
|
+
},
|
|
2350
|
+
{
|
|
2351
|
+
"name": "inputType",
|
|
2352
|
+
"type": "DbxForgeTextFieldInputType",
|
|
2353
|
+
"description": "HTML input type. Defaults to `'text'`.",
|
|
2354
|
+
"required": false
|
|
2355
|
+
},
|
|
2356
|
+
{
|
|
2357
|
+
"name": "idempotentTransform",
|
|
2358
|
+
"type": "TransformStringFunctionConfig",
|
|
2359
|
+
"description": "An idempotent string transformation applied as a value parser (e.g., trim, uppercase).\n\nFor non-idempotent transformations, you should directly configure the `transform` property instead.",
|
|
2360
|
+
"required": false
|
|
2361
|
+
}
|
|
2362
|
+
],
|
|
2363
|
+
"wrapperPattern": "unwrapped",
|
|
2364
|
+
"ngFormType": "input",
|
|
2365
|
+
"configInterface": "DbxForgeTextFieldConfig",
|
|
2366
|
+
"sourceLocation": {
|
|
2367
|
+
"file": "src/lib/forge/field/value/text/text.field.ts",
|
|
2368
|
+
"line": 79
|
|
2369
|
+
}
|
|
2370
|
+
},
|
|
2371
|
+
{
|
|
2372
|
+
"slug": "text-area",
|
|
2373
|
+
"factoryName": "dbxForgeTextAreaField",
|
|
2374
|
+
"tier": "field-factory",
|
|
2375
|
+
"produces": "string",
|
|
2376
|
+
"arrayOutput": "no",
|
|
2377
|
+
"description": "Multi-line textarea input. Supports row count, autocomplete attribute, pattern validation (RegExp → string conversion), and default value.",
|
|
2378
|
+
"sourcePath": "field/value/text/textarea.field.ts",
|
|
2379
|
+
"example": "const bioField = dbxForgeTextAreaField({\n key: 'bio',\n label: 'Biography',\n rows: 5,\n maxLength: 500\n});",
|
|
2380
|
+
"properties": [
|
|
2381
|
+
{
|
|
2382
|
+
"name": "autocomplete",
|
|
2383
|
+
"type": "FieldAutocompleteAttributeOption",
|
|
2384
|
+
"description": "",
|
|
2385
|
+
"required": false
|
|
2386
|
+
},
|
|
2387
|
+
{
|
|
2388
|
+
"name": "rows",
|
|
2389
|
+
"type": "number",
|
|
2390
|
+
"description": "Number of visible text rows. Defaults to 3.",
|
|
2391
|
+
"required": false
|
|
2392
|
+
},
|
|
2393
|
+
{
|
|
2394
|
+
"name": "defaultValue",
|
|
2395
|
+
"type": "string",
|
|
2396
|
+
"description": "Initial value for the textarea. Defaults to empty string.",
|
|
2397
|
+
"required": false
|
|
2398
|
+
}
|
|
2399
|
+
],
|
|
2400
|
+
"wrapperPattern": "unwrapped",
|
|
2401
|
+
"ngFormType": "textarea",
|
|
2402
|
+
"configInterface": "DbxForgeTextAreaFieldConfig",
|
|
2403
|
+
"sourceLocation": {
|
|
2404
|
+
"file": "src/lib/forge/field/value/text/textarea.field.ts",
|
|
2405
|
+
"line": 47
|
|
2406
|
+
}
|
|
2407
|
+
},
|
|
2408
|
+
{
|
|
2409
|
+
"slug": "flex-layout",
|
|
2410
|
+
"factoryName": "dbxForgeFlexLayout",
|
|
2411
|
+
"tier": "composite-builder",
|
|
2412
|
+
"produces": "GroupField",
|
|
2413
|
+
"arrayOutput": "no",
|
|
2414
|
+
"description": "Creates a responsive flex layout container that arranges child fields horizontally\nwith configurable sizing, breakpoints, and responsive behavior.\n\nEach child field gets a `dbx-flex-N` CSS class applied (merged with any existing className).\nThe container hosts the `dbx-forge-flex` wrapper, which renders the `dbxFlexGroup`\ndirective for responsive breakpoint handling.\n\nA `container` is used (not a `group`) because flex layout is purely visual —\nthe wrapped fields should remain at the same level in the form value, not be\nnested under an extra object.\n\nThis is the forge equivalent of {@link formlyFlexLayoutWrapper}.",
|
|
2415
|
+
"sourcePath": "field/wrapper/flex/flex.wrapper.ts",
|
|
2416
|
+
"example": "// Simple: all fields get default size (2)\ndbxForgeFlexLayout([dbxForgeCityField({}), dbxForgeStateField({}), dbxForgeZipCodeField({})])\n\n// Resulting form value shape (flat — no wrapper property):\n// { city: '...', state: '...', zip: '...' }\n\n// With per-field sizing and breakpoint\ndbxForgeFlexLayout([\n { field: dbxForgeCityField({}), size: 4 },\n dbxForgeStateField({}),\n dbxForgeZipCodeField({})\n], { breakpoint: 'small', size: 1 })\n\n// Full config\ndbxForgeFlexLayout([...fields], { breakpoint: 'large', breakToColumn: true, relative: true, size: 1 })",
|
|
2417
|
+
"properties": [
|
|
2418
|
+
{
|
|
2419
|
+
"name": "size",
|
|
2420
|
+
"type": "DbxFlexSize",
|
|
2421
|
+
"description": "Default flex size for fields that don't specify their own.",
|
|
2422
|
+
"required": false
|
|
2423
|
+
}
|
|
2424
|
+
],
|
|
2425
|
+
"suffix": "Layout",
|
|
2426
|
+
"composesFromSlugs": [
|
|
2427
|
+
"group"
|
|
2428
|
+
],
|
|
2429
|
+
"configInterface": "DbxForgeFlexLayoutConfig",
|
|
2430
|
+
"sourceLocation": {
|
|
2431
|
+
"file": "src/lib/forge/field/wrapper/flex/flex.wrapper.ts",
|
|
2432
|
+
"line": 115
|
|
2433
|
+
}
|
|
2434
|
+
},
|
|
2435
|
+
{
|
|
2436
|
+
"slug": "section-wrapper",
|
|
2437
|
+
"factoryName": "dbxForgeSectionWrapper",
|
|
2438
|
+
"tier": "primitive",
|
|
2439
|
+
"produces": "WrapperConfig",
|
|
2440
|
+
"arrayOutput": "no",
|
|
2441
|
+
"description": "Section wrapper config — attach via a field's `wrappers: []` array for a semantic section with header and optional card elevation.",
|
|
2442
|
+
"sourcePath": "field/wrapper/section/section.wrapper.ts",
|
|
2443
|
+
"example": "dbxForgeSectionWrapper({ headerConfig: { text: 'Contact Details' } })",
|
|
2444
|
+
"properties": [
|
|
2445
|
+
{
|
|
2446
|
+
"name": "type",
|
|
2447
|
+
"type": "typeof DBX_FORGE_SECTION_WRAPPER_TYPE_NAME",
|
|
2448
|
+
"description": "",
|
|
2449
|
+
"required": true
|
|
2450
|
+
},
|
|
2451
|
+
{
|
|
2452
|
+
"name": "headerConfig",
|
|
2453
|
+
"type": "DbxSectionHeaderConfig",
|
|
2454
|
+
"description": "Section header configuration.",
|
|
2455
|
+
"required": true
|
|
2456
|
+
},
|
|
2457
|
+
{
|
|
2458
|
+
"name": "elevate",
|
|
2459
|
+
"type": "boolean",
|
|
2460
|
+
"description": "Whether to apply elevated card styling to the section.",
|
|
2461
|
+
"required": false
|
|
2462
|
+
},
|
|
2463
|
+
{
|
|
2464
|
+
"name": "subsection",
|
|
2465
|
+
"type": "boolean",
|
|
2466
|
+
"description": "Whether to render as a `<dbx-subsection>` instead of `<dbx-section>`.",
|
|
2467
|
+
"required": false
|
|
2468
|
+
}
|
|
2469
|
+
],
|
|
2470
|
+
"returns": "WrapperConfig",
|
|
2471
|
+
"configInterface": "DbxForgeSectionWrapper",
|
|
2472
|
+
"sourceLocation": {
|
|
2473
|
+
"file": "src/lib/forge/field/wrapper/section/section.wrapper.ts",
|
|
2474
|
+
"line": 62
|
|
2475
|
+
}
|
|
2476
|
+
},
|
|
2477
|
+
{
|
|
2478
|
+
"slug": "subsection-wrapper",
|
|
2479
|
+
"factoryName": "dbxForgeSubsectionWrapper",
|
|
2480
|
+
"tier": "primitive",
|
|
2481
|
+
"produces": "WrapperConfig",
|
|
2482
|
+
"arrayOutput": "no",
|
|
2483
|
+
"description": "Subsection variant of `section-wrapper` — defaults to heading level 4 and `subsection: true`.",
|
|
2484
|
+
"sourcePath": "field/wrapper/section/section.wrapper.ts",
|
|
2485
|
+
"example": "dbxForgeSubsectionWrapper({ headerConfig: { text: 'Options' } })",
|
|
2486
|
+
"properties": [
|
|
2487
|
+
{
|
|
2488
|
+
"name": "type",
|
|
2489
|
+
"type": "typeof DBX_FORGE_SECTION_WRAPPER_TYPE_NAME",
|
|
2490
|
+
"description": "",
|
|
2491
|
+
"required": true
|
|
2492
|
+
},
|
|
2493
|
+
{
|
|
2494
|
+
"name": "headerConfig",
|
|
2495
|
+
"type": "DbxSectionHeaderConfig",
|
|
2496
|
+
"description": "Section header configuration.",
|
|
2497
|
+
"required": true
|
|
2498
|
+
},
|
|
2499
|
+
{
|
|
2500
|
+
"name": "elevate",
|
|
2501
|
+
"type": "boolean",
|
|
2502
|
+
"description": "Whether to apply elevated card styling to the section.",
|
|
2503
|
+
"required": false
|
|
2504
|
+
},
|
|
2505
|
+
{
|
|
2506
|
+
"name": "subsection",
|
|
2507
|
+
"type": "boolean",
|
|
2508
|
+
"description": "Whether to render as a `<dbx-subsection>` instead of `<dbx-section>`.",
|
|
2509
|
+
"required": false
|
|
2510
|
+
}
|
|
2511
|
+
],
|
|
2512
|
+
"returns": "WrapperConfig",
|
|
2513
|
+
"configInterface": "DbxForgeSectionWrapper",
|
|
2514
|
+
"sourceLocation": {
|
|
2515
|
+
"file": "src/lib/forge/field/wrapper/section/section.wrapper.ts",
|
|
2516
|
+
"line": 85
|
|
2517
|
+
}
|
|
2518
|
+
},
|
|
2519
|
+
{
|
|
2520
|
+
"slug": "style-wrapper",
|
|
2521
|
+
"factoryName": "dbxForgeStyleWrapper",
|
|
2522
|
+
"tier": "primitive",
|
|
2523
|
+
"produces": "WrapperConfig",
|
|
2524
|
+
"arrayOutput": "no",
|
|
2525
|
+
"description": "Style wrapper config — applies dynamic CSS classes (`ngClass`) and/or inline styles (`ngStyle`) to any field via its `wrappers: []`.",
|
|
2526
|
+
"sourcePath": "field/wrapper/style/style.wrapper.ts",
|
|
2527
|
+
"example": "dbxForgeStyleWrapper({ classGetter: 'highlighted' })",
|
|
2528
|
+
"properties": [
|
|
2529
|
+
{
|
|
2530
|
+
"name": "type",
|
|
2531
|
+
"type": "typeof DBX_FORGE_STYLE_WRAPPER_TYPE_NAME",
|
|
2532
|
+
"description": "",
|
|
2533
|
+
"required": true
|
|
2534
|
+
},
|
|
2535
|
+
{
|
|
2536
|
+
"name": "classGetter",
|
|
2537
|
+
"type": "MaybeObservableOrValue<string>",
|
|
2538
|
+
"description": "Observable or static value providing CSS class names via `[ngClass]`.",
|
|
2539
|
+
"required": false
|
|
2540
|
+
},
|
|
2541
|
+
{
|
|
2542
|
+
"name": "styleGetter",
|
|
2543
|
+
"type": "MaybeObservableOrValue<DbxForgeStyleObject>",
|
|
2544
|
+
"description": "Observable or static value providing inline styles via `[ngStyle]`.",
|
|
2545
|
+
"required": false
|
|
2546
|
+
}
|
|
2547
|
+
],
|
|
2548
|
+
"returns": "WrapperConfig",
|
|
2549
|
+
"configInterface": "DbxForgeStyleWrapper",
|
|
2550
|
+
"sourceLocation": {
|
|
2551
|
+
"file": "src/lib/forge/field/wrapper/style/style.wrapper.ts",
|
|
2552
|
+
"line": 63
|
|
2553
|
+
}
|
|
2554
|
+
}
|
|
2555
|
+
]
|
|
2556
|
+
}
|