@measured/puck 0.11.0-canary.6145c32 → 0.11.0-canary.c8c02fd
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/README.md +14 -1
- package/dist/index.css +59 -32
- package/dist/index.d.ts +22 -2
- package/dist/index.js +542 -310
- package/package.json +1 -1
package/README.md
CHANGED
@@ -111,10 +111,11 @@ The plugin API follows a React paradigm. Each plugin passed to the Puck editor c
|
|
111
111
|
- `renderRoot` (`Component`): Render the root node of the preview content
|
112
112
|
- `renderRootFields` (`Component`): Render the root fields
|
113
113
|
- `renderFields` (`Component`): Render the fields for the currently selected component
|
114
|
+
- `renderComponentList` (`Component`): Render the component list
|
114
115
|
|
115
116
|
Each render function receives three props:
|
116
117
|
|
117
|
-
- **children** (`ReactNode`): The normal contents of the root or field. You must render this.
|
118
|
+
- **children** (`ReactNode`): The normal contents of the root or field. You must render this if provided.
|
118
119
|
- **state** (`AppState`): The current application state, including data and UI state
|
119
120
|
- **dispatch** (`(action: PuckAction) => void`): The Puck dispatcher, used for making data changes or updating the UI. See the [action definitions](https://github.com/measuredco/puck/blob/main/packages/core/reducer/actions.tsx) for a full reference of available mutations.
|
120
121
|
|
@@ -241,6 +242,7 @@ The `<Puck>` component renders the Puck editor.
|
|
241
242
|
- **data** (`Data`): Initial data to render
|
242
243
|
- **onChange** (`(Data) => void` [optional]): Callback that triggers when the user makes a change
|
243
244
|
- **onPublish** (`(Data) => void` [optional]): Callback that triggers when the user hits the "Publish" button
|
245
|
+
- **renderComponentList** (`Component` [optional]): Render function for wrapping the component list
|
244
246
|
- **renderHeader** (`Component` [optional]): Render function for overriding the Puck header component
|
245
247
|
- **renderHeaderActions** (`Component` [optional]): Render function for overriding the Puck header actions. Use a fragment.
|
246
248
|
- **headerTitle** (`string` [optional]): Set the title shown in the header title
|
@@ -275,6 +277,12 @@ The `Config` object describes which components Puck should render, how they shou
|
|
275
277
|
- **fields** (`Field`): The Field objects describing the input data stored against this component.
|
276
278
|
- **render** (`Component`): Render function for your React component. Receives props as defined in fields.
|
277
279
|
- **defaultProps** (`object` [optional]): Default props to pass to your component. Will show in fields.
|
280
|
+
- **categories** (`object`): Component categories for rendering in the side bar or restricting in DropZones
|
281
|
+
- **[categoryName]** (`object`)
|
282
|
+
- **components** (`sting[]`, [optional]): Array containing the names of components in this category
|
283
|
+
- **title** (`sting`, [optional]): Title of the category
|
284
|
+
- **visible** (`boolean`, [optional]): Whether or not the category should be visible in the side bar
|
285
|
+
- **defaultExpanded** (`boolean`, [optional]): Whether or not the category should be expanded in the side bar by default
|
278
286
|
|
279
287
|
### `Field`
|
280
288
|
|
@@ -307,6 +315,11 @@ The `AppState` object stores the puck application state.
|
|
307
315
|
- **leftSideBarVisible** (boolean): Whether or not the left side bar is visible
|
308
316
|
- **itemSelector** (object): An object describing which item is selected
|
309
317
|
- **arrayState** (object): An object describing the internal state of array items
|
318
|
+
- **componentList** (object): An object describing the component list. Similar shape to `Config.categories`.
|
319
|
+
- **components** (`sting[]`, [optional]): Array containing the names of components in this category
|
320
|
+
- **title** (`sting`, [optional]): Title of the category
|
321
|
+
- **visible** (`boolean`, [optional]): Whether or not the category is visible in the side bar
|
322
|
+
- **expanded** (`boolean`, [optional]): Whether or not the category is expanded in the side bar
|
310
323
|
|
311
324
|
### `Data`
|
312
325
|
|
package/dist/index.css
CHANGED
@@ -475,17 +475,17 @@
|
|
475
475
|
}
|
476
476
|
|
477
477
|
/* css-module:/home/runner/work/puck/puck/packages/core/components/InputOrGroup/fields/ArrayField/styles.module.css/#css-module-data */
|
478
|
-
.
|
478
|
+
._ArrayField_32vor_5 {
|
479
479
|
display: flex;
|
480
480
|
flex-direction: column;
|
481
481
|
background-color: var(--puck-color-grey-8);
|
482
482
|
border: 1px solid var(--puck-color-grey-8);
|
483
483
|
border-radius: 4px;
|
484
484
|
}
|
485
|
-
._ArrayField--
|
485
|
+
._ArrayField--isDraggingFrom_32vor_13 {
|
486
486
|
background-color: var(--puck-color-azure-9);
|
487
487
|
}
|
488
|
-
._ArrayField-
|
488
|
+
._ArrayField-addButton_32vor_17 {
|
489
489
|
background-color: white;
|
490
490
|
border: none;
|
491
491
|
border-radius: 4px;
|
@@ -498,37 +498,37 @@
|
|
498
498
|
padding: 16px;
|
499
499
|
text-align: left;
|
500
500
|
}
|
501
|
-
._ArrayField--
|
501
|
+
._ArrayField--hasItems_32vor_31 > ._ArrayField-addButton_32vor_17 {
|
502
502
|
border-top-left-radius: 0;
|
503
503
|
border-top-right-radius: 0;
|
504
504
|
}
|
505
|
-
.
|
505
|
+
._ArrayField_32vor_5:not(._ArrayField--isDraggingFrom_32vor_13) > ._ArrayField-addButton_32vor_17:hover {
|
506
506
|
background: var(--puck-color-azure-9);
|
507
507
|
color: var(--puck-color-azure-4);
|
508
508
|
}
|
509
|
-
.
|
509
|
+
._ArrayFieldItem_32vor_45 {
|
510
510
|
background: white;
|
511
511
|
border-top-left-radius: 4px;
|
512
512
|
border-top-right-radius: 4px;
|
513
513
|
display: block;
|
514
514
|
margin-bottom: 1px;
|
515
515
|
}
|
516
|
-
._ArrayField--
|
516
|
+
._ArrayField--isDraggingFrom_32vor_13 > ._ArrayFieldItem_32vor_45:not(._ArrayFieldItem--isDragging_32vor_53) {
|
517
517
|
border-bottom: 1px solid var(--puck-color-grey-8);
|
518
518
|
margin-bottom: 0;
|
519
519
|
}
|
520
|
-
._ArrayFieldItem--
|
520
|
+
._ArrayFieldItem--isExpanded_32vor_58 {
|
521
521
|
border-bottom: 0;
|
522
522
|
outline: 1px solid var(--puck-color-azure-6);
|
523
523
|
}
|
524
|
-
._ArrayFieldItem--
|
524
|
+
._ArrayFieldItem--isDragging_32vor_53 {
|
525
525
|
box-shadow: rgba(140, 152, 164, 0.25) 0 3px 6px 0;
|
526
526
|
}
|
527
|
-
.
|
527
|
+
._ArrayFieldItem_32vor_45 + ._ArrayFieldItem_32vor_45 {
|
528
528
|
border-top-left-radius: 0;
|
529
529
|
border-top-right-radius: 0;
|
530
530
|
}
|
531
|
-
._ArrayFieldItem-
|
531
|
+
._ArrayFieldItem-summary_32vor_72 {
|
532
532
|
color: var(--puck-color-grey-3);
|
533
533
|
display: flex;
|
534
534
|
align-items: center;
|
@@ -539,48 +539,45 @@
|
|
539
539
|
position: relative;
|
540
540
|
overflow: hidden;
|
541
541
|
}
|
542
|
-
._ArrayFieldItem--
|
542
|
+
._ArrayFieldItem--isExpanded_32vor_58 > ._ArrayFieldItem-summary_32vor_72 {
|
543
543
|
font-weight: 600;
|
544
544
|
}
|
545
|
-
.
|
545
|
+
._ArrayFieldItem_32vor_45:first-of-type > ._ArrayFieldItem-summary_32vor_72 {
|
546
546
|
border-top-left-radius: 4px;
|
547
547
|
border-top-right-radius: 4px;
|
548
548
|
}
|
549
|
-
._ArrayFieldItem-
|
550
|
-
._ArrayFieldItem--
|
549
|
+
._ArrayFieldItem-summary_32vor_72:hover,
|
550
|
+
._ArrayFieldItem--isExpanded_32vor_58 > ._ArrayFieldItem-summary_32vor_72 {
|
551
551
|
background: var(--puck-color-azure-9);
|
552
552
|
cursor: pointer;
|
553
553
|
color: var(--puck-color-azure-4);
|
554
554
|
}
|
555
|
-
._ArrayFieldItem-
|
555
|
+
._ArrayFieldItem-body_32vor_100 {
|
556
556
|
display: none;
|
557
557
|
}
|
558
|
-
._ArrayFieldItem-
|
559
|
-
display: none;
|
560
|
-
}
|
561
|
-
._ArrayFieldItem--isExpanded_zp334_58 > ._ArrayFieldItem-body_zp334_104 {
|
558
|
+
._ArrayFieldItem--isExpanded_32vor_58 > ._ArrayFieldItem-body_32vor_100 {
|
562
559
|
display: block;
|
563
560
|
}
|
564
|
-
._ArrayFieldItem-
|
561
|
+
._ArrayFieldItem-fieldset_32vor_108 {
|
565
562
|
border: none;
|
566
563
|
border-top: 1px solid var(--puck-color-grey-8);
|
567
564
|
margin: 0;
|
568
565
|
padding: 16px;
|
569
566
|
}
|
570
|
-
._ArrayFieldItem-
|
567
|
+
._ArrayFieldItem-rhs_32vor_115 {
|
571
568
|
display: flex;
|
572
569
|
gap: 8px;
|
573
570
|
align-items: center;
|
574
571
|
}
|
575
|
-
._ArrayFieldItem-
|
572
|
+
._ArrayFieldItem-actions_32vor_121 {
|
576
573
|
display: flex;
|
577
574
|
gap: 8px;
|
578
575
|
opacity: 0;
|
579
576
|
}
|
580
|
-
._ArrayFieldItem-
|
577
|
+
._ArrayFieldItem-summary_32vor_72:hover > ._ArrayFieldItem-rhs_32vor_115 > ._ArrayFieldItem-actions_32vor_121 {
|
581
578
|
opacity: 1;
|
582
579
|
}
|
583
|
-
._ArrayFieldItem-
|
580
|
+
._ArrayFieldItem-action_32vor_121:hover {
|
584
581
|
background: var(--puck-color-grey-9);
|
585
582
|
border-radius: 4px;
|
586
583
|
color: var(--puck-color-blue);
|
@@ -723,11 +720,44 @@
|
|
723
720
|
}
|
724
721
|
|
725
722
|
/* css-module:/home/runner/work/puck/puck/packages/core/components/ComponentList/styles.module.css/#css-module-data */
|
726
|
-
.
|
723
|
+
._ComponentList_3rdy2_1 {
|
727
724
|
font-family: var(--puck-font-stack);
|
728
725
|
max-width: 100%;
|
729
726
|
}
|
730
|
-
._ComponentList
|
727
|
+
._ComponentList--isExpanded_3rdy2_6 + ._ComponentList_3rdy2_1 {
|
728
|
+
margin-top: 12px;
|
729
|
+
}
|
730
|
+
._ComponentList-content_3rdy2_10 {
|
731
|
+
display: none;
|
732
|
+
}
|
733
|
+
._ComponentList--isExpanded_3rdy2_6 > ._ComponentList-content_3rdy2_10 {
|
734
|
+
display: block;
|
735
|
+
}
|
736
|
+
._ComponentList-title_3rdy2_18 {
|
737
|
+
color: var(--puck-color-grey-4);
|
738
|
+
display: flex;
|
739
|
+
font-size: var(--puck-font-size-xxxs);
|
740
|
+
list-style: none;
|
741
|
+
padding: 8px;
|
742
|
+
text-transform: uppercase;
|
743
|
+
gap: 4px;
|
744
|
+
border-radius: 4px;
|
745
|
+
}
|
746
|
+
._ComponentList--isExpanded_3rdy2_6 ._ComponentList-title_3rdy2_18 {
|
747
|
+
margin-bottom: 4px;
|
748
|
+
}
|
749
|
+
._ComponentList-title_3rdy2_18:hover {
|
750
|
+
background-color: var(--puck-color-azure-9);
|
751
|
+
color: var(--puck-color-azure-4);
|
752
|
+
cursor: pointer;
|
753
|
+
}
|
754
|
+
._ComponentList-titleIcon_3rdy2_39 {
|
755
|
+
margin-left: auto;
|
756
|
+
}
|
757
|
+
._ComponentListItem_3rdy2_43:last-of-type ._ComponentListItem-draggable_3rdy2_43 {
|
758
|
+
margin-bottom: 0px;
|
759
|
+
}
|
760
|
+
._ComponentListItem-draggable_3rdy2_43 {
|
731
761
|
background: white;
|
732
762
|
padding: 12px;
|
733
763
|
display: flex;
|
@@ -740,13 +770,10 @@
|
|
740
770
|
cursor: grab;
|
741
771
|
margin-bottom: 12px;
|
742
772
|
}
|
743
|
-
.
|
744
|
-
margin-bottom: 0px;
|
745
|
-
}
|
746
|
-
._ComponentList-itemIcon_bvy0z_24 {
|
773
|
+
._ComponentListItemIcon_3rdy2_61 {
|
747
774
|
color: var(--puck-color-grey-4);
|
748
775
|
}
|
749
|
-
.
|
776
|
+
._ComponentList_3rdy2_1:not(._ComponentList--isDraggingFrom_3rdy2_65) ._ComponentListItem-draggable_3rdy2_43:hover {
|
750
777
|
background-color: var(--puck-color-azure-9);
|
751
778
|
color: var(--puck-color-azure-4);
|
752
779
|
}
|
package/dist/index.d.ts
CHANGED
@@ -64,11 +64,20 @@ type ComponentConfig<ComponentProps extends DefaultComponentProps = DefaultCompo
|
|
64
64
|
defaultProps?: DefaultProps;
|
65
65
|
fields?: Fields<ComponentProps>;
|
66
66
|
};
|
67
|
+
type Category<ComponentName> = {
|
68
|
+
components?: ComponentName[];
|
69
|
+
title?: string;
|
70
|
+
visible?: boolean;
|
71
|
+
defaultExpanded?: boolean;
|
72
|
+
};
|
67
73
|
type Config<Props extends {
|
68
74
|
[key: string]: any;
|
69
75
|
} = {
|
70
76
|
[key: string]: any;
|
71
|
-
}, RootProps extends DefaultRootProps = DefaultRootProps> = {
|
77
|
+
}, RootProps extends DefaultRootProps = DefaultRootProps, CategoryName extends string = string> = {
|
78
|
+
categories?: Record<CategoryName, Category<keyof Props>> & {
|
79
|
+
other?: Category<Props>;
|
80
|
+
};
|
72
81
|
components: {
|
73
82
|
[ComponentName in keyof Props]: ComponentConfig<Props[ComponentName], Props[ComponentName]>;
|
74
83
|
};
|
@@ -115,6 +124,12 @@ type UiState = {
|
|
115
124
|
leftSideBarVisible: boolean;
|
116
125
|
itemSelector: ItemSelector | null;
|
117
126
|
arrayState: Record<string, ArrayState | undefined>;
|
127
|
+
componentList: Record<string, {
|
128
|
+
components?: string[];
|
129
|
+
title?: string;
|
130
|
+
visible?: boolean;
|
131
|
+
expanded?: boolean;
|
132
|
+
}>;
|
118
133
|
};
|
119
134
|
type AppState = {
|
120
135
|
data: Data;
|
@@ -265,12 +280,17 @@ type Plugin = {
|
|
265
280
|
}) => ReactElement<any>;
|
266
281
|
};
|
267
282
|
|
268
|
-
declare function Puck({ config, data: initialData, onChange, onPublish, plugins, renderHeader, renderHeaderActions, headerTitle, headerPath, }: {
|
283
|
+
declare function Puck({ config, data: initialData, onChange, onPublish, plugins, renderComponentList, renderHeader, renderHeaderActions, headerTitle, headerPath, }: {
|
269
284
|
config: Config;
|
270
285
|
data: Data;
|
271
286
|
onChange?: (data: Data) => void;
|
272
287
|
onPublish: (data: Data) => void;
|
273
288
|
plugins?: Plugin[];
|
289
|
+
renderComponentList?: (props: {
|
290
|
+
children: ReactNode;
|
291
|
+
dispatch: (action: PuckAction) => void;
|
292
|
+
state: AppState;
|
293
|
+
}) => ReactElement;
|
274
294
|
renderHeader?: (props: {
|
275
295
|
children: ReactNode;
|
276
296
|
dispatch: (action: PuckAction) => void;
|