@measured/puck 0.11.0-canary.b28404f → 0.11.0-canary.f9033e2

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -277,19 +277,9 @@ When the user interacts with this adaptor, they'll be presented with a list of i
277
277
 
278
278
  Dynamic prop resolution allows developers to resolve props for components without saving the data to the Puck data model.
279
279
 
280
- ### resolveProps()
281
-
282
- `resolveProps` is defined in the component config, and allows the developer to make asynchronous calls to change the props after they've been set by Puck.
283
-
284
- #### Args
285
-
286
- - **props** (`object`): the current props for your component stored in the Puck data
287
-
288
- #### Response
280
+ ### resolveData()
289
281
 
290
- - **props** (`object`): the resolved props for your component. Will not be stored in the Puck data
291
- - **readOnly** (`object`): an object describing which fields on the component are currently read-only
292
- - **[prop]** (`boolean`): boolean describing whether or not the prop field is read-only
282
+ `resolveData` is defined in the component config, and allows the developer to make asynchronous calls to change the [ComponentData](#componentdata) after they've been set by Puck. Receives [ComponentData](#componentdata) and returns [ComponentData](#componentdata).
293
283
 
294
284
  #### Examples
295
285
 
@@ -309,7 +299,7 @@ const config = {
309
299
  type: "text",
310
300
  },
311
301
  },
312
- resolveProps: async (props) => {
302
+ resolveData: async (props) => {
313
303
  return {
314
304
  props: {
315
305
  title: props.text,
@@ -329,7 +319,7 @@ const config = {
329
319
 
330
320
  ##### Combining with adaptors
331
321
 
332
- A more advanced pattern is to combine the `resolveProps` method with the adaptors to dynamically fetch data when rendering the component.
322
+ A more advanced pattern is to combine the `resolveData` method with the adaptors to dynamically fetch data when rendering the component.
333
323
 
334
324
  ```tsx
335
325
  const myAdaptor = {
@@ -355,7 +345,7 @@ const config = {
355
345
  type: "text",
356
346
  },
357
347
  },
358
- resolveProps: async (props) => {
348
+ resolveData: async (props) => {
359
349
  if (!myData.id) {
360
350
  return { props, readOnly: { title: false } };
361
351
  }
@@ -381,14 +371,16 @@ const config = {
381
371
  };
382
372
  ```
383
373
 
384
- ### resolveData()
374
+ ### resolveAllData()
375
+
376
+ `resolveAllData` is a utility function exported by Puck to enable the developer to run all their `resolveData` methods before rendering the component with `<Render>`.
385
377
 
386
- `resolveData` is a utility function exported by Puck to enable the developer to resolve their custom props before rendering their component with `<Render>`. This is ideally done on the server. If you're using `resolveProps`, you _must_ use `resolveData` before rendering.
378
+ If your `resolveData` methods rely on any external APIs, you should run this before rendering your page.
387
379
 
388
380
  ```tsx
389
- import { resolveData } from "@measured/puck";
381
+ import { resolveAllData } from "@measured/puck";
390
382
 
391
- const resolvedData = resolveData(data, config);
383
+ const resolvedData = resolveAllData(data, config);
392
384
  ```
393
385
 
394
386
  ## Reference
@@ -431,18 +423,13 @@ The `Config` object describes which components Puck should render, how they shou
431
423
  - **title** (`Field`): Title of the content, typically used for the page title.
432
424
  - **[fieldName]** (`Field`): User defined fields, used to describe the input data stored in the `root` key.
433
425
  - **render** (`Component`): Render a React component at the root of your component tree. Useful for defining context providers.
426
+ - **resolveData** (`async (data: ComponentData) => ComponentData` [optional]): Function to dynamically change props before rendering the root.
434
427
  - **components** (`object`): Definitions for each of the components you want to show in the visual editor
435
428
  - **[componentName]** (`object`)
436
429
  - **fields** (`Field`): The Field objects describing the input data stored against this component.
437
430
  - **render** (`Component`): Render function for your React component. Receives props as defined in fields.
438
431
  - **defaultProps** (`object` [optional]): Default props to pass to your component. Will show in fields.
439
- - **resolveProps** (`async (props: object) => object` [optional]): Function to dynamically change props before rendering the component.
440
- - Args
441
- - **props** (`object`): the current props for your component stored in the Puck data
442
- - Response
443
- - **props** (`object`): the resolved props for your component. Will not be stored in the Puck data
444
- - **readOnly** (`object`): an object describing which fields on the component are currently read-only
445
- - **[prop]** (`boolean`): boolean describing whether or not the prop field is read-only
432
+ - **resolveData** (`async (data: ComponentData) => ComponentData` [optional]): Function to dynamically change props before rendering the component.
446
433
  - **categories** (`object`): Component categories for rendering in the side bar or restricting in DropZones
447
434
  - **[categoryName]** (`object`)
448
435
  - **components** (`sting[]`, [optional]): Array containing the names of components in this category
@@ -532,13 +519,20 @@ The `AppState` object stores the puck application state.
532
519
 
533
520
  The `Data` object stores the puck page data.
534
521
 
535
- - **root** (`object`):
536
- - **title** (string): Title of the content, typically used for the page title
537
- - **[prop]** (string): User defined data from `root` fields
538
- - **content** (`object[]`):
539
- - **type** (string): Component name
540
- - **props** (object):
541
- - **[prop]** (string): User defined data from component fields
522
+ - **root** (`ComponentData`): The component data for the root of your configuration.
523
+ - **props** (object): Extends `ComponentData.props`, with some additional props
524
+ - **title** (`string`, [optional]): Title of the content, typically used for the page title
525
+ - **content** (`ComponentData[]`): Component data for the main content
526
+ - **zones** (`object`, [optional]): Component data for all DropZones
527
+ **[zoneCompound]** (`ComponentData[]`): Component data for a specific DropZone `zone` within a component instance
528
+
529
+ ### `ComponentData`
530
+
531
+ - **type** (`string`): Component name
532
+ - **props** (`object`):
533
+ - **[prop]** (`any`): User defined data from component fields
534
+ - **readOnly** (`object`): Object describing which fields on the component are currently read-only. Can use dot-notation for arrays, like `array[1].text` or `array[*].text`.
535
+ - **[prop]** (`boolean`): boolean describing whether or not the prop field is read-only
542
536
 
543
537
  ### `Plugin`
544
538