@webiny/app-headless-cms 6.0.0 → 6.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/components/ContentEntries/SidebarFooter/SidebarFooter.js +1 -3
- package/admin/components/ContentEntries/SidebarFooter/SidebarFooter.js.map +1 -1
- package/admin/components/ContentEntryForm/ContentEntryForm.d.ts +1 -1
- package/admin/components/ContentEntryForm/ContentEntryForm.js.map +1 -1
- package/admin/components/ContentEntryForm/ContentEntryFormPreview.js +8 -2
- package/admin/components/ContentEntryForm/ContentEntryFormPreview.js.map +1 -1
- package/admin/components/ContentEntryForm/ContentEntryFormProvider.d.ts +2 -2
- package/admin/components/ContentEntryForm/ContentEntryFormProvider.js +31 -7
- package/admin/components/ContentEntryForm/ContentEntryFormProvider.js.map +1 -1
- package/admin/components/ContentEntryForm/Header/SaveContent/SaveContent.js +7 -4
- package/admin/components/ContentEntryForm/Header/SaveContent/SaveContent.js.map +1 -1
- package/admin/components/ContentEntryForm/ParentValue.js +1 -1
- package/admin/components/ContentEntryForm/ParentValue.js.map +1 -1
- package/admin/components/ContentModelEditor/ContentModelEditor.js +22 -5
- package/admin/components/ContentModelEditor/ContentModelEditor.js.map +1 -1
- package/admin/components/ContentModelEditor/FieldsSidebar.js +6 -2
- package/admin/components/ContentModelEditor/FieldsSidebar.js.map +1 -1
- package/admin/components/DragPreview.js +4 -2
- package/admin/components/DragPreview.js.map +1 -1
- package/admin/components/DropZone/Center.js +4 -2
- package/admin/components/DropZone/Center.js.map +1 -1
- package/admin/components/DropZone/Horizontal.js +3 -1
- package/admin/components/DropZone/Horizontal.js.map +1 -1
- package/admin/components/DropZone/Vertical.js +3 -1
- package/admin/components/DropZone/Vertical.js.map +1 -1
- package/admin/components/FieldEditor/FieldEditor.js +9 -3
- package/admin/components/FieldEditor/FieldEditor.js.map +1 -1
- package/admin/components/IsModelPublishable.js +3 -6
- package/admin/components/IsModelPublishable.js.map +1 -1
- package/admin/hooks/useIsModelPublishable.d.ts +1 -0
- package/admin/hooks/useIsModelPublishable.js +10 -0
- package/admin/hooks/useIsModelPublishable.js.map +1 -0
- package/admin/menus/HasContentEntryPermissions.d.ts +2 -2
- package/admin/menus/HasContentEntryPermissions.js.map +1 -1
- package/admin/plugins/editor/defaultBar/Name/Name.js +1 -5
- package/admin/plugins/editor/defaultBar/Name/Name.js.map +1 -1
- package/admin/plugins/fieldRenderers/DynamicSection.d.ts +1 -1
- package/admin/plugins/fieldRenderers/DynamicSection.js +1 -1
- package/admin/plugins/fieldRenderers/DynamicSection.js.map +1 -1
- package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.d.ts +2 -2
- package/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.js.map +1 -1
- package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.d.ts +2 -2
- package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js +1 -1
- package/admin/plugins/fieldRenderers/dynamicZone/SingleValueDynamicZone.js.map +1 -1
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.d.ts +1 -1
- package/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.js.map +1 -1
- package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.d.ts +1 -1
- package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.js +1 -1
- package/admin/plugins/fieldRenderers/dynamicZone/dynamicZoneRenderer.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/advanced/components/entry/elements/ButtonLink.js +2 -2
- package/admin/plugins/fieldRenderers/ref/advanced/components/entry/elements/ButtonLink.js.map +1 -1
- package/admin/plugins/fieldRenderers/ref/components/NewReferencedEntryDialog.js +8 -2
- package/admin/plugins/fieldRenderers/ref/components/NewReferencedEntryDialog.js.map +1 -1
- package/admin/plugins/icons.js +13 -12
- package/admin/plugins/icons.js.map +1 -1
- package/admin/views/contentEntries/ContentEntriesModule.js +1 -5
- package/admin/views/contentEntries/ContentEntriesModule.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/FullScreenContentEntry.js +2 -9
- package/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/FullScreenContentEntry.js.map +1 -1
- package/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/RevisionListDrawer/RevisionListDrawer.js +1 -2
- package/admin/views/contentEntries/ContentEntry/FullScreenContentEntry/RevisionListDrawer/RevisionListDrawer.js.map +1 -1
- package/admin/views/contentModels/ContentModelsDataList.js +4 -5
- package/admin/views/contentModels/ContentModelsDataList.js.map +1 -1
- package/admin/views/contentModels/fullDelete/FullyDeleteModelDialog.d.ts +1 -1
- package/admin/views/contentModels/fullDelete/FullyDeleteModelDialog.js +2 -2
- package/admin/views/contentModels/fullDelete/FullyDeleteModelDialog.js.map +1 -1
- package/admin/views/contentModels/fullDelete/dialog/state.d.ts +3 -3
- package/admin/views/contentModels/fullDelete/dialog/state.js +13 -9
- package/admin/views/contentModels/fullDelete/dialog/state.js.map +1 -1
- package/admin/views/contentModels/fullDelete/types.d.ts +1 -1
- package/admin/views/contentModels/fullDelete/types.js.map +1 -1
- package/admin/views/contentModels/importing/components/Model/DataListModelItem.js +10 -10
- package/admin/views/contentModels/importing/components/Model/DataListModelItem.js.map +1 -1
- package/package.json +38 -40
- package/admin/components/ContentEntries/Scheduler/actions/ScheduleEntryAction.d.ts +0 -2
- package/admin/components/ContentEntries/Scheduler/actions/ScheduleEntryAction.js +0 -82
- package/admin/components/ContentEntries/Scheduler/actions/ScheduleEntryAction.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/actions/hooks/useGetSchedulerItem.d.ts +0 -11
- package/admin/components/ContentEntries/Scheduler/actions/hooks/useGetSchedulerItem.js +0 -35
- package/admin/components/ContentEntries/Scheduler/actions/hooks/useGetSchedulerItem.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerCancelGraphQLGateway.d.ts +0 -7
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerCancelGraphQLGateway.js +0 -46
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerCancelGraphQLGateway.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerGetGraphQLGateway.d.ts +0 -20
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerGetGraphQLGateway.js +0 -69
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerGetGraphQLGateway.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerListGraphQLGateway.d.ts +0 -7
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerListGraphQLGateway.js +0 -86
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerListGraphQLGateway.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerPublishGraphQLGateway.d.ts +0 -7
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerPublishGraphQLGateway.js +0 -65
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerPublishGraphQLGateway.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerUnpublishGraphQLGateway.d.ts +0 -23
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerUnpublishGraphQLGateway.js +0 -67
- package/admin/components/ContentEntries/Scheduler/adapters/SchedulerUnpublishGraphQLGateway.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/adapters/graphql/fields.d.ts +0 -1
- package/admin/components/ContentEntries/Scheduler/adapters/graphql/fields.js +0 -20
- package/admin/components/ContentEntries/Scheduler/adapters/graphql/fields.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/adapters/index.d.ts +0 -5
- package/admin/components/ContentEntries/Scheduler/adapters/index.js +0 -7
- package/admin/components/ContentEntries/Scheduler/adapters/index.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/adapters/schema/schedulerEntry.d.ts +0 -61
- package/admin/components/ContentEntries/Scheduler/adapters/schema/schedulerEntry.js +0 -26
- package/admin/components/ContentEntries/Scheduler/adapters/schema/schedulerEntry.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/components/ScheduleSidebarButton.d.ts +0 -5
- package/admin/components/ContentEntries/Scheduler/components/ScheduleSidebarButton.js +0 -17
- package/admin/components/ContentEntries/Scheduler/components/ScheduleSidebarButton.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/components/Scheduler.d.ts +0 -2
- package/admin/components/ContentEntries/Scheduler/components/Scheduler.js +0 -54
- package/admin/components/ContentEntries/Scheduler/components/Scheduler.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/components/index.d.ts +0 -1
- package/admin/components/ContentEntries/Scheduler/components/index.js +0 -3
- package/admin/components/ContentEntries/Scheduler/components/index.js.map +0 -1
- package/admin/components/ContentEntries/Scheduler/index.d.ts +0 -1
- package/admin/components/ContentEntries/Scheduler/index.js +0 -3
- package/admin/components/ContentEntries/Scheduler/index.js.map +0 -1
|
@@ -18,7 +18,7 @@ const droppableContainerVariants = cva("bg-transparent box-border h-full min-h-[
|
|
|
18
18
|
});
|
|
19
19
|
const getInert = isDroppable => {
|
|
20
20
|
return isDroppable ? {} : {
|
|
21
|
-
inert:
|
|
21
|
+
inert: true
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
24
|
const Center = ({
|
|
@@ -35,7 +35,9 @@ const Center = ({
|
|
|
35
35
|
drop,
|
|
36
36
|
isDroppable
|
|
37
37
|
}) => /*#__PURE__*/React.createElement("div", Object.assign({
|
|
38
|
-
ref:
|
|
38
|
+
ref: element => {
|
|
39
|
+
drop(element);
|
|
40
|
+
},
|
|
39
41
|
style: {
|
|
40
42
|
width: "100%",
|
|
41
43
|
height: "100%",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Droppable","cn","cva","droppableContainerVariants","variants","isOver","true","false","isDroppable","defaultVariants","getInert","inert","Center","onDrop","children","style","createElement","drop","Object","assign","ref","width","height","className"],"sources":["Center.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport React from \"react\";\nimport type { DroppableProps, OnDropCallable } from \"./../Droppable.js\";\nimport { Droppable } from \"./../Droppable.js\";\nimport { cn, cva } from \"@webiny/admin-ui\";\n\nconst droppableContainerVariants = cva(\n \"bg-transparent box-border h-full min-h-[120px] relative user-select-none w-full border-md border-dashed\",\n {\n variants: {\n isOver: {\n true: \"border-accent-default text-accent-primary\",\n false: \"border-success-default text-success-primary\"\n },\n isDroppable: {\n false: \"border-success-default text-accent-primary\"\n }\n },\n defaultVariants: {\n isOver: false,\n isDroppable: true\n }\n }\n);\n\ninterface CenterProps {\n type?: string;\n onDrop: OnDropCallable;\n children: React.ReactNode;\n active?: boolean;\n highlight?: boolean;\n style?: CSSProperties;\n isDroppable?: DroppableProps[\"isDroppable\"];\n}\n\nconst getInert = (isDroppable: boolean) => {\n return isDroppable ? {} : { inert:
|
|
1
|
+
{"version":3,"names":["React","Droppable","cn","cva","droppableContainerVariants","variants","isOver","true","false","isDroppable","defaultVariants","getInert","inert","Center","onDrop","children","style","createElement","drop","Object","assign","ref","element","width","height","className"],"sources":["Center.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\nimport React from \"react\";\nimport type { DroppableProps, OnDropCallable } from \"./../Droppable.js\";\nimport { Droppable } from \"./../Droppable.js\";\nimport { cn, cva } from \"@webiny/admin-ui\";\n\nconst droppableContainerVariants = cva(\n \"bg-transparent box-border h-full min-h-[120px] relative user-select-none w-full border-md border-dashed\",\n {\n variants: {\n isOver: {\n true: \"border-accent-default text-accent-primary\",\n false: \"border-success-default text-success-primary\"\n },\n isDroppable: {\n false: \"border-success-default text-accent-primary\"\n }\n },\n defaultVariants: {\n isOver: false,\n isDroppable: true\n }\n }\n);\n\ninterface CenterProps {\n type?: string;\n onDrop: OnDropCallable;\n children: React.ReactNode;\n active?: boolean;\n highlight?: boolean;\n style?: CSSProperties;\n isDroppable?: DroppableProps[\"isDroppable\"];\n}\n\nconst getInert = (isDroppable: boolean) => {\n return isDroppable ? {} : { inert: true };\n};\n\nconst Center = ({ onDrop, children, style, isDroppable }: CenterProps) => {\n return (\n <Droppable onDrop={onDrop} isDroppable={isDroppable}>\n {({ isOver, drop, isDroppable }) => (\n <div\n ref={element => {\n drop(element);\n }}\n style={{ width: \"100%\", height: \"100%\", ...style }}\n data-testid={\"cms-editor-first-field-area\"}\n {...getInert(isDroppable)}\n >\n <div className={cn(droppableContainerVariants({ isOver, isDroppable }))}>\n <div className=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 m-0\">\n {children}\n </div>\n </div>\n </div>\n )}\n </Droppable>\n );\n};\n\nexport default Center;\n"],"mappings":"AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,SAAS;AAClB,SAASC,EAAE,EAAEC,GAAG,QAAQ,kBAAkB;AAE1C,MAAMC,0BAA0B,GAAGD,GAAG,CAClC,yGAAyG,EACzG;EACIE,QAAQ,EAAE;IACNC,MAAM,EAAE;MACJC,IAAI,EAAE,2CAA2C;MACjDC,KAAK,EAAE;IACX,CAAC;IACDC,WAAW,EAAE;MACTD,KAAK,EAAE;IACX;EACJ,CAAC;EACDE,eAAe,EAAE;IACbJ,MAAM,EAAE,KAAK;IACbG,WAAW,EAAE;EACjB;AACJ,CACJ,CAAC;AAYD,MAAME,QAAQ,GAAIF,WAAoB,IAAK;EACvC,OAAOA,WAAW,GAAG,CAAC,CAAC,GAAG;IAAEG,KAAK,EAAE;EAAK,CAAC;AAC7C,CAAC;AAED,MAAMC,MAAM,GAAGA,CAAC;EAAEC,MAAM;EAAEC,QAAQ;EAAEC,KAAK;EAAEP;AAAyB,CAAC,KAAK;EACtE,oBACIT,KAAA,CAAAiB,aAAA,CAAChB,SAAS;IAACa,MAAM,EAAEA,MAAO;IAACL,WAAW,EAAEA;EAAY,GAC/C,CAAC;IAAEH,MAAM;IAAEY,IAAI;IAAET;EAAY,CAAC,kBAC3BT,KAAA,CAAAiB,aAAA,QAAAE,MAAA,CAAAC,MAAA;IACIC,GAAG,EAAEC,OAAO,IAAI;MACZJ,IAAI,CAACI,OAAO,CAAC;IACjB,CAAE;IACFN,KAAK,EAAE;MAAEO,KAAK,EAAE,MAAM;MAAEC,MAAM,EAAE,MAAM;MAAE,GAAGR;IAAM,CAAE;IACnD,eAAa;EAA8B,GACvCL,QAAQ,CAACF,WAAW,CAAC,gBAEzBT,KAAA,CAAAiB,aAAA;IAAKQ,SAAS,EAAEvB,EAAE,CAACE,0BAA0B,CAAC;MAAEE,MAAM;MAAEG;IAAY,CAAC,CAAC;EAAE,gBACpET,KAAA,CAAAiB,aAAA;IAAKQ,SAAS,EAAC;EAA2E,GACrFV,QACA,CACJ,CACJ,CAEF,CAAC;AAEpB,CAAC;AAED,eAAeF,MAAM","ignoreList":[]}
|
|
@@ -26,7 +26,9 @@ const Horizontal = ({
|
|
|
26
26
|
isDragging,
|
|
27
27
|
drop
|
|
28
28
|
}) => /*#__PURE__*/React.createElement("div", {
|
|
29
|
-
ref:
|
|
29
|
+
ref: element => {
|
|
30
|
+
drop(element);
|
|
31
|
+
},
|
|
30
32
|
"data-testid": rest["data-testid"],
|
|
31
33
|
style: {
|
|
32
34
|
/* For dropzone debugging: border: "1px solid blue",*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Droppable","cn","OuterDiv","isOver","isDragging","last","createElement","className","Horizontal","onDrop","isVisible","rest","drop","ref","style","height","width","position","left","zIndex"],"sources":["Horizontal.tsx"],"sourcesContent":["import React from \"react\";\nimport type { IsVisibleCallable } from \"../Droppable.js\";\nimport { Droppable } from \"../Droppable.js\";\nimport type { DragSource } from \"~/types.js\";\nimport { cn } from \"@webiny/admin-ui\";\n\ninterface OuterDivProps {\n isOver: boolean;\n isDragging: boolean;\n last: boolean;\n}\n\nconst OuterDiv = ({ isOver, isDragging, last }: OuterDivProps) => (\n <div\n className={cn(\n \"absolute w-full z-10 bg-transparent flex justify-center\",\n last ? \"-bottom-md\" : \"-top-md\"\n )}\n >\n <div\n className={cn(\n \"h-md w-full z-3 border-dashed border-sm hidden\",\n isOver ? \"border-accent-default\" : \"border-success-default\",\n isDragging && \"block\"\n )}\n >\n <div\n className={cn(\n \"w-full h-full opacity-50\",\n isOver ? \"bg-primary-muted\" : \"bg-success-muted\"\n )}\n />\n </div>\n </div>\n);\n\ninterface HorizontalProps {\n onDrop(item: DragSource): void;\n last?: boolean;\n isVisible?: IsVisibleCallable;\n [\"data-testid\"]?: string;\n}\n\nconst Horizontal = ({ last, onDrop, isVisible, ...rest }: HorizontalProps) => {\n return (\n <Droppable onDrop={onDrop} isVisible={isVisible}>\n {({ isOver, isDragging, drop }) => (\n <div\n ref={drop}\n data-testid={rest[\"data-testid\"]}\n style={{\n /* For dropzone debugging: border: \"1px solid blue\",*/\n height: \"16px\",\n width: \"100%\",\n position: \"absolute\",\n [last ? \"bottom\" : \"top\"]: 0,\n left: 0,\n zIndex: isDragging ? 1000 : -1\n }}\n >\n <OuterDiv isOver={isOver} isDragging={isDragging} last={last ?? false} />\n </div>\n )}\n </Droppable>\n );\n};\n\nexport default Horizontal;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,SAAS;AAElB,SAASC,EAAE,QAAQ,kBAAkB;AAQrC,MAAMC,QAAQ,GAAGA,CAAC;EAAEC,MAAM;EAAEC,UAAU;EAAEC;AAAoB,CAAC,kBACzDN,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,yDAAyD,EACzDI,IAAI,GAAG,YAAY,GAAG,SAC1B;AAAE,gBAEFN,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,gDAAgD,EAChDE,MAAM,GAAG,uBAAuB,GAAG,wBAAwB,EAC3DC,UAAU,IAAI,OAClB;AAAE,gBAEFL,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,0BAA0B,EAC1BE,MAAM,GAAG,kBAAkB,GAAG,kBAClC;AAAE,CACL,CACA,CACJ,CACR;AASD,MAAMK,UAAU,GAAGA,CAAC;EAAEH,IAAI;EAAEI,MAAM;EAAEC,SAAS;EAAE,GAAGC;AAAsB,CAAC,KAAK;EAC1E,oBACIZ,KAAA,CAAAO,aAAA,CAACN,SAAS;IAACS,MAAM,EAAEA,MAAO;IAACC,SAAS,EAAEA;EAAU,GAC3C,CAAC;IAAEP,MAAM;IAAEC,UAAU;IAAEQ;EAAK,CAAC,kBAC1Bb,KAAA,CAAAO,aAAA;IACIO,GAAG,
|
|
1
|
+
{"version":3,"names":["React","Droppable","cn","OuterDiv","isOver","isDragging","last","createElement","className","Horizontal","onDrop","isVisible","rest","drop","ref","element","style","height","width","position","left","zIndex"],"sources":["Horizontal.tsx"],"sourcesContent":["import React from \"react\";\nimport type { IsVisibleCallable } from \"../Droppable.js\";\nimport { Droppable } from \"../Droppable.js\";\nimport type { DragSource } from \"~/types.js\";\nimport { cn } from \"@webiny/admin-ui\";\n\ninterface OuterDivProps {\n isOver: boolean;\n isDragging: boolean;\n last: boolean;\n}\n\nconst OuterDiv = ({ isOver, isDragging, last }: OuterDivProps) => (\n <div\n className={cn(\n \"absolute w-full z-10 bg-transparent flex justify-center\",\n last ? \"-bottom-md\" : \"-top-md\"\n )}\n >\n <div\n className={cn(\n \"h-md w-full z-3 border-dashed border-sm hidden\",\n isOver ? \"border-accent-default\" : \"border-success-default\",\n isDragging && \"block\"\n )}\n >\n <div\n className={cn(\n \"w-full h-full opacity-50\",\n isOver ? \"bg-primary-muted\" : \"bg-success-muted\"\n )}\n />\n </div>\n </div>\n);\n\ninterface HorizontalProps {\n onDrop(item: DragSource): void;\n last?: boolean;\n isVisible?: IsVisibleCallable;\n [\"data-testid\"]?: string;\n}\n\nconst Horizontal = ({ last, onDrop, isVisible, ...rest }: HorizontalProps) => {\n return (\n <Droppable onDrop={onDrop} isVisible={isVisible}>\n {({ isOver, isDragging, drop }) => (\n <div\n ref={element => {\n drop(element);\n }}\n data-testid={rest[\"data-testid\"]}\n style={{\n /* For dropzone debugging: border: \"1px solid blue\",*/\n height: \"16px\",\n width: \"100%\",\n position: \"absolute\",\n [last ? \"bottom\" : \"top\"]: 0,\n left: 0,\n zIndex: isDragging ? 1000 : -1\n }}\n >\n <OuterDiv isOver={isOver} isDragging={isDragging} last={last ?? false} />\n </div>\n )}\n </Droppable>\n );\n};\n\nexport default Horizontal;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,SAAS;AAElB,SAASC,EAAE,QAAQ,kBAAkB;AAQrC,MAAMC,QAAQ,GAAGA,CAAC;EAAEC,MAAM;EAAEC,UAAU;EAAEC;AAAoB,CAAC,kBACzDN,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,yDAAyD,EACzDI,IAAI,GAAG,YAAY,GAAG,SAC1B;AAAE,gBAEFN,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,gDAAgD,EAChDE,MAAM,GAAG,uBAAuB,GAAG,wBAAwB,EAC3DC,UAAU,IAAI,OAClB;AAAE,gBAEFL,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,0BAA0B,EAC1BE,MAAM,GAAG,kBAAkB,GAAG,kBAClC;AAAE,CACL,CACA,CACJ,CACR;AASD,MAAMK,UAAU,GAAGA,CAAC;EAAEH,IAAI;EAAEI,MAAM;EAAEC,SAAS;EAAE,GAAGC;AAAsB,CAAC,KAAK;EAC1E,oBACIZ,KAAA,CAAAO,aAAA,CAACN,SAAS;IAACS,MAAM,EAAEA,MAAO;IAACC,SAAS,EAAEA;EAAU,GAC3C,CAAC;IAAEP,MAAM;IAAEC,UAAU;IAAEQ;EAAK,CAAC,kBAC1Bb,KAAA,CAAAO,aAAA;IACIO,GAAG,EAAEC,OAAO,IAAI;MACZF,IAAI,CAACE,OAAO,CAAC;IACjB,CAAE;IACF,eAAaH,IAAI,CAAC,aAAa,CAAE;IACjCI,KAAK,EAAE;MACH;MACAC,MAAM,EAAE,MAAM;MACdC,KAAK,EAAE,MAAM;MACbC,QAAQ,EAAE,UAAU;MACpB,CAACb,IAAI,GAAG,QAAQ,GAAG,KAAK,GAAG,CAAC;MAC5Bc,IAAI,EAAE,CAAC;MACPC,MAAM,EAAEhB,UAAU,GAAG,IAAI,GAAG,CAAC;IACjC;EAAE,gBAEFL,KAAA,CAAAO,aAAA,CAACJ,QAAQ;IAACC,MAAM,EAAEA,MAAO;IAACC,UAAU,EAAEA,UAAW;IAACC,IAAI,EAAEA,IAAI,IAAI;EAAM,CAAE,CACvE,CAEF,CAAC;AAEpB,CAAC;AAED,eAAeG,UAAU","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Droppable","cn","OuterDivVertical","isOver","last","isDragging","createElement","className","Vertical","depth","onDrop","isVisible","drop","ref","style","width","maxWidth","height","position","top","zIndex"],"sources":["Vertical.tsx"],"sourcesContent":["import React from \"react\";\nimport type { IsVisibleCallable } from \"../Droppable.js\";\nimport { Droppable } from \"../Droppable.js\";\nimport type { DragSource } from \"~/types.js\";\nimport { cn } from \"@webiny/admin-ui\";\n\ninterface OuterDivVerticalProps {\n isOver: boolean;\n last?: boolean;\n isDragging?: boolean;\n}\n\nconst OuterDivVertical = ({ isOver, last, isDragging }: OuterDivVerticalProps) => (\n <div\n className={cn(\n \"absolute top-0 h-full w-[30%] z-10 bg-transparent\",\n last ? \"text-right -right-sm\" : \"text-left -left-sm\"\n )}\n >\n <div\n className={cn(\n \"absolute w-md h-full z-3 border-dashed border-sm hidden\",\n isOver ? \"border-accent-default\" : \"border-success-default\",\n last ? \"-right-sm\" : \"-left-sm\",\n isDragging && \"block\"\n )}\n >\n <div\n className={cn(\n \"w-full h-full opacity-50\",\n isOver ? \"bg-primary-muted\" : \"bg-success-muted\"\n )}\n />\n </div>\n </div>\n);\n\ninterface VerticalProps {\n depth?: number;\n onDrop(item: DragSource): void;\n last?: boolean;\n isVisible?: IsVisibleCallable;\n}\n\nconst Vertical = ({ depth, last, onDrop, isVisible }: VerticalProps) => {\n return (\n <Droppable onDrop={onDrop} isVisible={isVisible}>\n {({ isOver, isDragging, drop }) => (\n <div\n ref={drop}\n style={{\n /* For dropzone debugging: border: \"1px solid blue\",*/\n width: \"30%\",\n maxWidth: \"100px\",\n height: \"100%\",\n position: \"absolute\",\n top: 0,\n [last ? \"right\" : \"left\"]: 0,\n zIndex: isDragging ? 1000 + (depth || 0) : -1\n }}\n >\n <OuterDivVertical isOver={isOver} isDragging={isDragging} last={last} />\n </div>\n )}\n </Droppable>\n );\n};\n\nexport default Vertical;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,SAAS;AAElB,SAASC,EAAE,QAAQ,kBAAkB;AAQrC,MAAMC,gBAAgB,GAAGA,CAAC;EAAEC,MAAM;EAAEC,IAAI;EAAEC;AAAkC,CAAC,kBACzEN,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,mDAAmD,EACnDG,IAAI,GAAG,sBAAsB,GAAG,oBACpC;AAAE,gBAEFL,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,yDAAyD,EACzDE,MAAM,GAAG,uBAAuB,GAAG,wBAAwB,EAC3DC,IAAI,GAAG,WAAW,GAAG,UAAU,EAC/BC,UAAU,IAAI,OAClB;AAAE,gBAEFN,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,0BAA0B,EAC1BE,MAAM,GAAG,kBAAkB,GAAG,kBAClC;AAAE,CACL,CACA,CACJ,CACR;AASD,MAAMK,QAAQ,GAAGA,CAAC;EAAEC,KAAK;EAAEL,IAAI;EAAEM,MAAM;EAAEC;AAAyB,CAAC,KAAK;EACpE,oBACIZ,KAAA,CAAAO,aAAA,CAACN,SAAS;IAACU,MAAM,EAAEA,MAAO;IAACC,SAAS,EAAEA;EAAU,GAC3C,CAAC;IAAER,MAAM;IAAEE,UAAU;IAAEO;EAAK,CAAC,kBAC1Bb,KAAA,CAAAO,aAAA;IACIO,GAAG,
|
|
1
|
+
{"version":3,"names":["React","Droppable","cn","OuterDivVertical","isOver","last","isDragging","createElement","className","Vertical","depth","onDrop","isVisible","drop","ref","element","style","width","maxWidth","height","position","top","zIndex"],"sources":["Vertical.tsx"],"sourcesContent":["import React from \"react\";\nimport type { IsVisibleCallable } from \"../Droppable.js\";\nimport { Droppable } from \"../Droppable.js\";\nimport type { DragSource } from \"~/types.js\";\nimport { cn } from \"@webiny/admin-ui\";\n\ninterface OuterDivVerticalProps {\n isOver: boolean;\n last?: boolean;\n isDragging?: boolean;\n}\n\nconst OuterDivVertical = ({ isOver, last, isDragging }: OuterDivVerticalProps) => (\n <div\n className={cn(\n \"absolute top-0 h-full w-[30%] z-10 bg-transparent\",\n last ? \"text-right -right-sm\" : \"text-left -left-sm\"\n )}\n >\n <div\n className={cn(\n \"absolute w-md h-full z-3 border-dashed border-sm hidden\",\n isOver ? \"border-accent-default\" : \"border-success-default\",\n last ? \"-right-sm\" : \"-left-sm\",\n isDragging && \"block\"\n )}\n >\n <div\n className={cn(\n \"w-full h-full opacity-50\",\n isOver ? \"bg-primary-muted\" : \"bg-success-muted\"\n )}\n />\n </div>\n </div>\n);\n\ninterface VerticalProps {\n depth?: number;\n onDrop(item: DragSource): void;\n last?: boolean;\n isVisible?: IsVisibleCallable;\n}\n\nconst Vertical = ({ depth, last, onDrop, isVisible }: VerticalProps) => {\n return (\n <Droppable onDrop={onDrop} isVisible={isVisible}>\n {({ isOver, isDragging, drop }) => (\n <div\n ref={element => {\n drop(element);\n }}\n style={{\n /* For dropzone debugging: border: \"1px solid blue\",*/\n width: \"30%\",\n maxWidth: \"100px\",\n height: \"100%\",\n position: \"absolute\",\n top: 0,\n [last ? \"right\" : \"left\"]: 0,\n zIndex: isDragging ? 1000 + (depth || 0) : -1\n }}\n >\n <OuterDivVertical isOver={isOver} isDragging={isDragging} last={last} />\n </div>\n )}\n </Droppable>\n );\n};\n\nexport default Vertical;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,SAAS;AAElB,SAASC,EAAE,QAAQ,kBAAkB;AAQrC,MAAMC,gBAAgB,GAAGA,CAAC;EAAEC,MAAM;EAAEC,IAAI;EAAEC;AAAkC,CAAC,kBACzEN,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,mDAAmD,EACnDG,IAAI,GAAG,sBAAsB,GAAG,oBACpC;AAAE,gBAEFL,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,yDAAyD,EACzDE,MAAM,GAAG,uBAAuB,GAAG,wBAAwB,EAC3DC,IAAI,GAAG,WAAW,GAAG,UAAU,EAC/BC,UAAU,IAAI,OAClB;AAAE,gBAEFN,KAAA,CAAAO,aAAA;EACIC,SAAS,EAAEN,EAAE,CACT,0BAA0B,EAC1BE,MAAM,GAAG,kBAAkB,GAAG,kBAClC;AAAE,CACL,CACA,CACJ,CACR;AASD,MAAMK,QAAQ,GAAGA,CAAC;EAAEC,KAAK;EAAEL,IAAI;EAAEM,MAAM;EAAEC;AAAyB,CAAC,KAAK;EACpE,oBACIZ,KAAA,CAAAO,aAAA,CAACN,SAAS;IAACU,MAAM,EAAEA,MAAO;IAACC,SAAS,EAAEA;EAAU,GAC3C,CAAC;IAAER,MAAM;IAAEE,UAAU;IAAEO;EAAK,CAAC,kBAC1Bb,KAAA,CAAAO,aAAA;IACIO,GAAG,EAAEC,OAAO,IAAI;MACZF,IAAI,CAACE,OAAO,CAAC;IACjB,CAAE;IACFC,KAAK,EAAE;MACH;MACAC,KAAK,EAAE,KAAK;MACZC,QAAQ,EAAE,OAAO;MACjBC,MAAM,EAAE,MAAM;MACdC,QAAQ,EAAE,UAAU;MACpBC,GAAG,EAAE,CAAC;MACN,CAAChB,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,CAAC;MAC5BiB,MAAM,EAAEhB,UAAU,GAAG,IAAI,IAAII,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;IAChD;EAAE,gBAEFV,KAAA,CAAAO,aAAA,CAACJ,gBAAgB;IAACC,MAAM,EAAEA,MAAO;IAACE,UAAU,EAAEA,UAAW;IAACD,IAAI,EAAEA;EAAK,CAAE,CACtE,CAEF,CAAC;AAEpB,CAAC;AAED,eAAeI,QAAQ","ignoreList":[]}
|
|
@@ -120,7 +120,9 @@ const Editor = () => {
|
|
|
120
120
|
className: cn(["flex flex-column", "relative", "mb-md last-of-type:mb-none", "bg-neutral-dimmed", isDragging ? "opacity-30" : "opacity-100"])
|
|
121
121
|
}, /*#__PURE__*/React.createElement("div", {
|
|
122
122
|
className: cn(["cursor-grab", "absolute left-sm-plus top-sm-plus z-10"]),
|
|
123
|
-
ref:
|
|
123
|
+
ref: element => {
|
|
124
|
+
drag(element);
|
|
125
|
+
}
|
|
124
126
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
125
127
|
icon: /*#__PURE__*/React.createElement(DragIcon, null),
|
|
126
128
|
label: "Drag to move this row",
|
|
@@ -150,7 +152,9 @@ const Editor = () => {
|
|
|
150
152
|
}, ({
|
|
151
153
|
drag
|
|
152
154
|
}) => /*#__PURE__*/React.createElement("div", {
|
|
153
|
-
ref:
|
|
155
|
+
ref: element => {
|
|
156
|
+
drag(element);
|
|
157
|
+
},
|
|
154
158
|
className: cn(["relative", "flex-1 basis-full", "mx-sm"])
|
|
155
159
|
}, /*#__PURE__*/React.createElement("div", {
|
|
156
160
|
className: "cursor-grab bg-neutral-base p-md shadow-sm rounded-xs"
|
|
@@ -179,7 +183,9 @@ const Editor = () => {
|
|
|
179
183
|
drag
|
|
180
184
|
}) => /*#__PURE__*/React.createElement("div", {
|
|
181
185
|
className: cn(["relative", "flex-1 basis-full", "mx-sm"]),
|
|
182
|
-
ref:
|
|
186
|
+
ref: element => {
|
|
187
|
+
drag(element);
|
|
188
|
+
}
|
|
183
189
|
}, /*#__PURE__*/React.createElement(Vertical, {
|
|
184
190
|
depth: depth,
|
|
185
191
|
onDrop: item => onFieldDrop(item, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Fragment","get","i18n","ReactComponent","DragIcon","Center","Horizontal","Vertical","Draggable","EditFieldDialog","Field","LayoutCell","useModelFieldEditor","FieldEditorProvider","isLayoutField","ModelFieldProvider","cn","Icon","t","namespace","fieldTypes","Editor","parent","depth","insertField","updateField","deleteField","fields","noConflict","editField","onFieldDrop","onEndDrag","field","dropTarget","getFieldPlugin","getLayoutFieldPlugin","getField","collectLayoutFieldFields","layoutField","plugin","type","collectFields","id","canDropIntoField","draggable","fieldPlugin","canAccept","isVerticalDropzoneVisible","cb","item","allowLayout","isHorizontalDropzoneVisible","createElement","length","isDroppable","onDrop","row","index","map","rowKey","cell","fieldId","join","beginDrag","filter","pos","endDrag","key","drag","isDragging","className","ref","icon","label","color","size","isVisible","fieldIndex","rowIndex","cellIndex","includes","onEdit","onDelete","last","onClose","onSubmit","position","FieldEditor","props"],"sources":["FieldEditor.tsx"],"sourcesContent":["import React, { Fragment } from \"react\";\nimport get from \"lodash/get.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { ReactComponent as DragIcon } from \"@webiny/icons/drag_indicator.svg\";\nimport { Center, Horizontal, Vertical } from \"../DropZone/index.js\";\nimport Draggable from \"../Draggable.js\";\nimport EditFieldDialog from \"./EditFieldDialog.js\";\nimport Field from \"./Field.js\";\nimport { LayoutCell } from \"./LayoutCell.js\";\nimport { useModelFieldEditor } from \"./useModelFieldEditor.js\";\nimport type { IsVisibleCallable } from \"./FieldEditorContext.js\";\nimport { FieldEditorProvider } from \"./FieldEditorContext.js\";\nimport type { CmsEditorFieldsLayout, CmsModelField, DragSource } from \"~/types.js\";\nimport type { CmsLayoutField } from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { isLayoutField } from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { ModelFieldProvider } from \"~/admin/components/ModelFieldProvider/index.js\";\nimport { cn, Icon } from \"@webiny/admin-ui\";\n\nconst t = i18n.namespace(\"app-headless-cms/admin/components/editor\");\n\nconst fieldTypes: string[] = [\"field\", \"newField\"];\n\nconst Editor = () => {\n const {\n parent,\n depth,\n insertField,\n updateField,\n deleteField,\n fields,\n noConflict,\n editField,\n onFieldDrop,\n onEndDrag,\n field,\n dropTarget,\n getFieldPlugin,\n getLayoutFieldPlugin,\n getField\n } = useModelFieldEditor();\n\n /**\n * Collect all data fields referenced inside a layout descriptor (e.g. fields inside tabs).\n * Delegates to the layout field plugin's `collectFields` method if available.\n */\n const collectLayoutFieldFields = (layoutField: CmsLayoutField): CmsModelField[] => {\n const plugin = getLayoutFieldPlugin(layoutField.type);\n if (!plugin?.field.collectFields) {\n return [];\n }\n return plugin.field.collectFields({\n field: layoutField,\n getField: (id: string) => getField({ id })\n });\n };\n\n const canDropIntoField = (field: CmsModelField, draggable: DragSource) => {\n const fieldPlugin = getFieldPlugin(field.type);\n if (!fieldPlugin) {\n return true;\n }\n const canAccept = fieldPlugin.field.canAccept;\n if (typeof canAccept === \"function\" && !canAccept(field, draggable)) {\n return false;\n }\n\n return true;\n };\n\n const isVerticalDropzoneVisible = (cb: IsVisibleCallable) => {\n return (item: DragSource) => {\n // Layout fields always occupy full row — no side-by-side layout\n if (item.type === \"newLayoutField\" || item.type === \"layoutField\") {\n return false;\n }\n\n if (!parent) {\n return cb(item);\n }\n\n const fieldPlugin = getFieldPlugin(parent.type);\n if (fieldPlugin) {\n const allowLayout = fieldPlugin.field.allowLayout ?? true;\n if (!allowLayout) {\n return false;\n }\n }\n\n if (!canDropIntoField(parent, item)) {\n return false;\n }\n\n return cb(item);\n };\n };\n\n const isHorizontalDropzoneVisible = (cb: IsVisibleCallable) => {\n return (item: DragSource) => {\n if (!parent) {\n return cb(item);\n }\n\n if (!canDropIntoField(parent, item)) {\n return false;\n }\n\n return cb(item);\n };\n };\n\n return (\n <Fragment>\n {fields.length === 0 && (\n <Center\n isDroppable={isHorizontalDropzoneVisible(() => true)}\n onDrop={item =>\n onFieldDrop(item, {\n row: 0,\n index: 0\n })\n }\n >\n {t`Drop your first field here`}\n </Center>\n )}\n\n {fields.map((row, index) => {\n // Build a stable key for the row\n const rowKey = row\n .map(cell => (isLayoutField(cell) ? cell.id : (cell as CmsModelField).fieldId))\n .join(\".\");\n\n return (\n <Draggable\n beginDrag={{\n parent: parent ? parent.fieldId : null,\n type: \"row\",\n fields: row.filter(cell => !isLayoutField(cell)) as CmsModelField[],\n pos: { row: index }\n }}\n endDrag={onEndDrag}\n key={rowKey}\n >\n {(\n {\n drag,\n isDragging\n } /* RowContainer start - includes drag handle, drop zones and the Row itself. */\n ) => (\n <div\n className={cn([\n \"flex flex-column\",\n \"relative\",\n \"mb-md last-of-type:mb-none\",\n \"bg-neutral-dimmed\",\n isDragging ? \"opacity-30\" : \"opacity-100\"\n ])}\n >\n <div\n className={cn([\n \"cursor-grab\",\n \"absolute left-sm-plus top-sm-plus z-10\"\n ])}\n ref={drag}\n >\n <Icon\n icon={<DragIcon />}\n label={\"Drag to move this row\"}\n color={\"neutral-light\"}\n size={\"sm\"}\n />\n </div>\n <Horizontal\n isVisible={isHorizontalDropzoneVisible(noConflict())}\n data-testid={`cms-editor-row-droppable-top-${index}`}\n onDrop={item => onFieldDrop(item, { row: index, index: null })}\n />\n {/* Row start - includes field drop zones and fields */}\n <div\n className={cn([\n \"w-full flex justify-between\",\n \"pl-xl pr-sm py-sm\"\n ])}\n data-testid={\"cms.editor.field-row\"}\n >\n {row.map((cell, fieldIndex) => {\n if (isLayoutField(cell)) {\n return (\n <Draggable\n key={cell.id}\n beginDrag={{\n parent: parent ? parent.fieldId : null,\n type: \"layoutField\",\n layoutField: cell,\n fields: collectLayoutFieldFields(cell)\n }}\n endDrag={onEndDrag}\n >\n {({ drag }) => (\n <div\n ref={drag}\n className={cn([\n \"relative\",\n \"flex-1 basis-full\",\n \"mx-sm\"\n ])}\n >\n <div\n className={\n \"cursor-grab bg-neutral-base p-md shadow-sm rounded-xs\"\n }\n >\n <LayoutCell\n field={cell}\n rowIndex={index}\n cellIndex={fieldIndex}\n />\n </div>\n </div>\n )}\n </Draggable>\n );\n }\n\n const field = cell as CmsModelField;\n return (\n <ModelFieldProvider field={field} key={field.fieldId}>\n <Draggable\n beginDrag={{\n parent: parent ? parent.fieldId : null,\n type: \"field\",\n field,\n pos: {\n row: index,\n index: fieldIndex\n }\n }}\n endDrag={onEndDrag}\n >\n {({ drag }) => (\n <div\n className={cn([\n \"relative\",\n \"flex-1 basis-full\",\n \"mx-sm\"\n ])}\n ref={drag}\n >\n <Vertical\n depth={depth}\n onDrop={item =>\n onFieldDrop(item, {\n row: index,\n index: fieldIndex\n })\n }\n isVisible={isVerticalDropzoneVisible(\n noConflict(\n item =>\n fieldTypes.includes(\n item.type\n ) &&\n (row.length < 4 ||\n get(\n item,\n \"pos.row\"\n ) === index)\n )\n )}\n />\n\n <div\n className={\n \"cursor-grab bg-neutral-base p-md shadow-sm rounded-xs\"\n }\n >\n <Field\n parent={parent}\n field={field}\n onEdit={editField}\n onDelete={deleteField}\n />\n </div>\n\n {/* Field end */}\n {fieldIndex === row.length - 1 && (\n <Vertical\n last\n depth={depth}\n isVisible={isVerticalDropzoneVisible(\n noConflict(item => {\n return (\n fieldTypes.includes(\n item.type\n ) &&\n (row.length < 4 ||\n get(\n item,\n \"pos.row\"\n ) === index)\n );\n })\n )}\n onDrop={item =>\n onFieldDrop(item, {\n row: index,\n index: fieldIndex + 1\n })\n }\n />\n )}\n </div>\n )}\n </Draggable>\n </ModelFieldProvider>\n );\n })}\n </div>\n {/* Row end */}\n {index === fields.length - 1 ? (\n <Horizontal\n data-testid={`cms-editor-row-droppable-bottom-${index}`}\n last\n isVisible={isHorizontalDropzoneVisible(noConflict())}\n onDrop={item =>\n onFieldDrop(item, {\n row: index + 1,\n index: null\n })\n }\n />\n ) : null}\n </div>\n )}\n </Draggable>\n );\n })}\n\n {field ? (\n <ModelFieldProvider field={field}>\n <EditFieldDialog\n onClose={() => editField(null)}\n onSubmit={field => {\n if (field.id) {\n updateField(field);\n editField(null);\n return;\n }\n insertField({ field, position: dropTarget });\n\n editField(null);\n }}\n />\n </ModelFieldProvider>\n ) : null}\n </Fragment>\n );\n};\n\nexport interface FieldEditorProps {\n parent?: CmsModelField;\n layout: CmsEditorFieldsLayout;\n fields: CmsModelField[];\n onChange: (params: { fields: CmsModelField[]; layout: CmsEditorFieldsLayout }) => void;\n}\n\nexport const FieldEditor = (props: FieldEditorProps) => {\n return (\n <FieldEditorProvider {...props}>\n <Editor />\n </FieldEditorProvider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Fragment","get","i18n","ReactComponent","DragIcon","Center","Horizontal","Vertical","Draggable","EditFieldDialog","Field","LayoutCell","useModelFieldEditor","FieldEditorProvider","isLayoutField","ModelFieldProvider","cn","Icon","t","namespace","fieldTypes","Editor","parent","depth","insertField","updateField","deleteField","fields","noConflict","editField","onFieldDrop","onEndDrag","field","dropTarget","getFieldPlugin","getLayoutFieldPlugin","getField","collectLayoutFieldFields","layoutField","plugin","type","collectFields","id","canDropIntoField","draggable","fieldPlugin","canAccept","isVerticalDropzoneVisible","cb","item","allowLayout","isHorizontalDropzoneVisible","createElement","length","isDroppable","onDrop","row","index","map","rowKey","cell","fieldId","join","beginDrag","filter","pos","endDrag","key","drag","isDragging","className","ref","element","icon","label","color","size","isVisible","fieldIndex","rowIndex","cellIndex","includes","onEdit","onDelete","last","onClose","onSubmit","position","FieldEditor","props"],"sources":["FieldEditor.tsx"],"sourcesContent":["import React, { Fragment } from \"react\";\nimport get from \"lodash/get.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { ReactComponent as DragIcon } from \"@webiny/icons/drag_indicator.svg\";\nimport { Center, Horizontal, Vertical } from \"../DropZone/index.js\";\nimport Draggable from \"../Draggable.js\";\nimport EditFieldDialog from \"./EditFieldDialog.js\";\nimport Field from \"./Field.js\";\nimport { LayoutCell } from \"./LayoutCell.js\";\nimport { useModelFieldEditor } from \"./useModelFieldEditor.js\";\nimport type { IsVisibleCallable } from \"./FieldEditorContext.js\";\nimport { FieldEditorProvider } from \"./FieldEditorContext.js\";\nimport type { CmsEditorFieldsLayout, CmsModelField, DragSource } from \"~/types.js\";\nimport type { CmsLayoutField } from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { isLayoutField } from \"@webiny/app-headless-cms-common/types/model.js\";\nimport { ModelFieldProvider } from \"~/admin/components/ModelFieldProvider/index.js\";\nimport { cn, Icon } from \"@webiny/admin-ui\";\n\nconst t = i18n.namespace(\"app-headless-cms/admin/components/editor\");\n\nconst fieldTypes: string[] = [\"field\", \"newField\"];\n\nconst Editor = () => {\n const {\n parent,\n depth,\n insertField,\n updateField,\n deleteField,\n fields,\n noConflict,\n editField,\n onFieldDrop,\n onEndDrag,\n field,\n dropTarget,\n getFieldPlugin,\n getLayoutFieldPlugin,\n getField\n } = useModelFieldEditor();\n\n /**\n * Collect all data fields referenced inside a layout descriptor (e.g. fields inside tabs).\n * Delegates to the layout field plugin's `collectFields` method if available.\n */\n const collectLayoutFieldFields = (layoutField: CmsLayoutField): CmsModelField[] => {\n const plugin = getLayoutFieldPlugin(layoutField.type);\n if (!plugin?.field.collectFields) {\n return [];\n }\n return plugin.field.collectFields({\n field: layoutField,\n getField: (id: string) => getField({ id })\n });\n };\n\n const canDropIntoField = (field: CmsModelField, draggable: DragSource) => {\n const fieldPlugin = getFieldPlugin(field.type);\n if (!fieldPlugin) {\n return true;\n }\n const canAccept = fieldPlugin.field.canAccept;\n if (typeof canAccept === \"function\" && !canAccept(field, draggable)) {\n return false;\n }\n\n return true;\n };\n\n const isVerticalDropzoneVisible = (cb: IsVisibleCallable) => {\n return (item: DragSource) => {\n // Layout fields always occupy full row — no side-by-side layout\n if (item.type === \"newLayoutField\" || item.type === \"layoutField\") {\n return false;\n }\n\n if (!parent) {\n return cb(item);\n }\n\n const fieldPlugin = getFieldPlugin(parent.type);\n if (fieldPlugin) {\n const allowLayout = fieldPlugin.field.allowLayout ?? true;\n if (!allowLayout) {\n return false;\n }\n }\n\n if (!canDropIntoField(parent, item)) {\n return false;\n }\n\n return cb(item);\n };\n };\n\n const isHorizontalDropzoneVisible = (cb: IsVisibleCallable) => {\n return (item: DragSource) => {\n if (!parent) {\n return cb(item);\n }\n\n if (!canDropIntoField(parent, item)) {\n return false;\n }\n\n return cb(item);\n };\n };\n\n return (\n <Fragment>\n {fields.length === 0 && (\n <Center\n isDroppable={isHorizontalDropzoneVisible(() => true)}\n onDrop={item =>\n onFieldDrop(item, {\n row: 0,\n index: 0\n })\n }\n >\n {t`Drop your first field here`}\n </Center>\n )}\n\n {fields.map((row, index) => {\n // Build a stable key for the row\n const rowKey = row\n .map(cell => (isLayoutField(cell) ? cell.id : (cell as CmsModelField).fieldId))\n .join(\".\");\n\n return (\n <Draggable\n beginDrag={{\n parent: parent ? parent.fieldId : null,\n type: \"row\",\n fields: row.filter(cell => !isLayoutField(cell)) as CmsModelField[],\n pos: { row: index }\n }}\n endDrag={onEndDrag}\n key={rowKey}\n >\n {(\n {\n drag,\n isDragging\n } /* RowContainer start - includes drag handle, drop zones and the Row itself. */\n ) => (\n <div\n className={cn([\n \"flex flex-column\",\n \"relative\",\n \"mb-md last-of-type:mb-none\",\n \"bg-neutral-dimmed\",\n isDragging ? \"opacity-30\" : \"opacity-100\"\n ])}\n >\n <div\n className={cn([\n \"cursor-grab\",\n \"absolute left-sm-plus top-sm-plus z-10\"\n ])}\n ref={element => {\n drag(element);\n }}\n >\n <Icon\n icon={<DragIcon />}\n label={\"Drag to move this row\"}\n color={\"neutral-light\"}\n size={\"sm\"}\n />\n </div>\n <Horizontal\n isVisible={isHorizontalDropzoneVisible(noConflict())}\n data-testid={`cms-editor-row-droppable-top-${index}`}\n onDrop={item => onFieldDrop(item, { row: index, index: null })}\n />\n {/* Row start - includes field drop zones and fields */}\n <div\n className={cn([\n \"w-full flex justify-between\",\n \"pl-xl pr-sm py-sm\"\n ])}\n data-testid={\"cms.editor.field-row\"}\n >\n {row.map((cell, fieldIndex) => {\n if (isLayoutField(cell)) {\n return (\n <Draggable\n key={cell.id}\n beginDrag={{\n parent: parent ? parent.fieldId : null,\n type: \"layoutField\",\n layoutField: cell,\n fields: collectLayoutFieldFields(cell)\n }}\n endDrag={onEndDrag}\n >\n {({ drag }) => (\n <div\n ref={element => {\n drag(element);\n }}\n className={cn([\n \"relative\",\n \"flex-1 basis-full\",\n \"mx-sm\"\n ])}\n >\n <div\n className={\n \"cursor-grab bg-neutral-base p-md shadow-sm rounded-xs\"\n }\n >\n <LayoutCell\n field={cell}\n rowIndex={index}\n cellIndex={fieldIndex}\n />\n </div>\n </div>\n )}\n </Draggable>\n );\n }\n\n const field = cell as CmsModelField;\n return (\n <ModelFieldProvider field={field} key={field.fieldId}>\n <Draggable\n beginDrag={{\n parent: parent ? parent.fieldId : null,\n type: \"field\",\n field,\n pos: {\n row: index,\n index: fieldIndex\n }\n }}\n endDrag={onEndDrag}\n >\n {({ drag }) => (\n <div\n className={cn([\n \"relative\",\n \"flex-1 basis-full\",\n \"mx-sm\"\n ])}\n ref={element => {\n drag(element);\n }}\n >\n <Vertical\n depth={depth}\n onDrop={item =>\n onFieldDrop(item, {\n row: index,\n index: fieldIndex\n })\n }\n isVisible={isVerticalDropzoneVisible(\n noConflict(\n item =>\n fieldTypes.includes(\n item.type\n ) &&\n (row.length < 4 ||\n get(\n item,\n \"pos.row\"\n ) === index)\n )\n )}\n />\n\n <div\n className={\n \"cursor-grab bg-neutral-base p-md shadow-sm rounded-xs\"\n }\n >\n <Field\n parent={parent}\n field={field}\n onEdit={editField}\n onDelete={deleteField}\n />\n </div>\n\n {/* Field end */}\n {fieldIndex === row.length - 1 && (\n <Vertical\n last\n depth={depth}\n isVisible={isVerticalDropzoneVisible(\n noConflict(item => {\n return (\n fieldTypes.includes(\n item.type\n ) &&\n (row.length < 4 ||\n get(\n item,\n \"pos.row\"\n ) === index)\n );\n })\n )}\n onDrop={item =>\n onFieldDrop(item, {\n row: index,\n index: fieldIndex + 1\n })\n }\n />\n )}\n </div>\n )}\n </Draggable>\n </ModelFieldProvider>\n );\n })}\n </div>\n {/* Row end */}\n {index === fields.length - 1 ? (\n <Horizontal\n data-testid={`cms-editor-row-droppable-bottom-${index}`}\n last\n isVisible={isHorizontalDropzoneVisible(noConflict())}\n onDrop={item =>\n onFieldDrop(item, {\n row: index + 1,\n index: null\n })\n }\n />\n ) : null}\n </div>\n )}\n </Draggable>\n );\n })}\n\n {field ? (\n <ModelFieldProvider field={field}>\n <EditFieldDialog\n onClose={() => editField(null)}\n onSubmit={field => {\n if (field.id) {\n updateField(field);\n editField(null);\n return;\n }\n insertField({ field, position: dropTarget });\n\n editField(null);\n }}\n />\n </ModelFieldProvider>\n ) : null}\n </Fragment>\n );\n};\n\nexport interface FieldEditorProps {\n parent?: CmsModelField;\n layout: CmsEditorFieldsLayout;\n fields: CmsModelField[];\n onChange: (params: { fields: CmsModelField[]; layout: CmsEditorFieldsLayout }) => void;\n}\n\nexport const FieldEditor = (props: FieldEditorProps) => {\n return (\n <FieldEditorProvider {...props}>\n <Editor />\n </FieldEditorProvider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import {
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { useIsModelPublishable } from "../hooks/useIsModelPublishable.js";
|
|
3
3
|
export const IsModelPublishable = props => {
|
|
4
|
-
const
|
|
5
|
-
model
|
|
6
|
-
} = useModel();
|
|
7
|
-
const isPublishable = useMemo(() => !model.tags.includes("$publishing:false"), [model]);
|
|
4
|
+
const isPublishable = useIsModelPublishable();
|
|
8
5
|
return isPublishable ? /*#__PURE__*/React.createElement(React.Fragment, null, props.children) : null;
|
|
9
6
|
};
|
|
10
7
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","useIsModelPublishable","IsModelPublishable","props","isPublishable","createElement","Fragment","children"],"sources":["IsModelPublishable.tsx"],"sourcesContent":["import React from \"react\";\nimport { useIsModelPublishable } from \"~/admin/hooks/useIsModelPublishable.js\";\n\nexport interface IsPublishableProps {\n children: React.ReactNode;\n}\n\nexport const IsModelPublishable = (props: IsPublishableProps) => {\n const isPublishable = useIsModelPublishable();\n\n return isPublishable ? <>{props.children}</> : null;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,qBAAqB;AAM9B,OAAO,MAAMC,kBAAkB,GAAIC,KAAyB,IAAK;EAC7D,MAAMC,aAAa,GAAGH,qBAAqB,CAAC,CAAC;EAE7C,OAAOG,aAAa,gBAAGJ,KAAA,CAAAK,aAAA,CAAAL,KAAA,CAAAM,QAAA,QAAGH,KAAK,CAACI,QAAW,CAAC,GAAG,IAAI;AACvD,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useIsModelPublishable: () => boolean;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useModel } from "@webiny/app-headless-cms-common";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
export const useIsModelPublishable = () => {
|
|
4
|
+
const {
|
|
5
|
+
model
|
|
6
|
+
} = useModel();
|
|
7
|
+
return useMemo(() => !model.tags.includes("$publishing:false"), [model]);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=useIsModelPublishable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useModel","useMemo","useIsModelPublishable","model","tags","includes"],"sources":["useIsModelPublishable.ts"],"sourcesContent":["import { useModel } from \"@webiny/app-headless-cms-common\";\nimport { useMemo } from \"react\";\n\nexport const useIsModelPublishable = () => {\n const { model } = useModel();\n\n return useMemo(() => !model.tags.includes(\"$publishing:false\"), [model]);\n};\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,iCAAiC;AAC1D,SAASC,OAAO,QAAQ,OAAO;AAE/B,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACvC,MAAM;IAAEC;EAAM,CAAC,GAAGH,QAAQ,CAAC,CAAC;EAE5B,OAAOC,OAAO,CAAC,MAAM,CAACE,KAAK,CAACC,IAAI,CAACC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAACF,KAAK,CAAC,CAAC;AAC5E,CAAC","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@ import type { CmsGroup, CmsModel } from "../../types.js";
|
|
|
2
2
|
interface HasContentEntryPermissionsProps {
|
|
3
3
|
group: Pick<CmsGroup, "id" | "contentModels">;
|
|
4
4
|
contentModel?: Pick<CmsModel, "modelId">;
|
|
5
|
-
children: JSX.Element;
|
|
5
|
+
children: React.JSX.Element;
|
|
6
6
|
}
|
|
7
|
-
export declare const HasContentEntryPermissions: ({ group, contentModel, children }: HasContentEntryPermissionsProps) => JSX.Element | null;
|
|
7
|
+
export declare const HasContentEntryPermissions: ({ group, contentModel, children }: HasContentEntryPermissionsProps) => import("react").JSX.Element | null;
|
|
8
8
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["usePermission","HasContentEntryPermissions","group","contentModel","children","canReadEntries","contentModelGroup","hasContentEntryPermission","contentModels","some","length"],"sources":["HasContentEntryPermissions.ts"],"sourcesContent":["import type { CmsGroup, CmsModel } from \"~/types.js\";\nimport { usePermission } from \"~/admin/hooks/usePermission.js\";\n\ninterface HasContentEntryPermissionsProps {\n group: Pick<CmsGroup, \"id\" | \"contentModels\">;\n contentModel?: Pick<CmsModel, \"modelId\">;\n children: JSX.Element;\n}\n\nexport const HasContentEntryPermissions = ({\n group,\n contentModel,\n children\n}: HasContentEntryPermissionsProps) => {\n const { canReadEntries } = usePermission();\n\n if (contentModel && !canReadEntries({ contentModelGroup: group, contentModel })) {\n return null;\n }\n\n const hasContentEntryPermission = group.contentModels.some(contentModel =>\n canReadEntries({\n contentModelGroup: group,\n contentModel\n })\n );\n\n if (group.contentModels.length > 0 && !hasContentEntryPermission) {\n return null;\n }\n\n return children;\n};\n"],"mappings":"AACA,SAASA,aAAa;AAQtB,OAAO,MAAMC,0BAA0B,GAAGA,CAAC;EACvCC,KAAK;EACLC,YAAY;EACZC;AAC6B,CAAC,KAAK;EACnC,MAAM;IAAEC;EAAe,CAAC,GAAGL,aAAa,CAAC,CAAC;EAE1C,IAAIG,YAAY,IAAI,CAACE,cAAc,CAAC;IAAEC,iBAAiB,EAAEJ,KAAK;IAAEC;EAAa,CAAC,CAAC,EAAE;IAC7E,OAAO,IAAI;EACf;EAEA,MAAMI,yBAAyB,GAAGL,KAAK,CAACM,aAAa,CAACC,IAAI,CAACN,YAAY,IACnEE,cAAc,CAAC;IACXC,iBAAiB,EAAEJ,KAAK;IACxBC;EACJ,CAAC,CACL,CAAC;EAED,IAAID,KAAK,CAACM,aAAa,CAACE,MAAM,GAAG,CAAC,IAAI,CAACH,yBAAyB,EAAE;IAC9D,OAAO,IAAI;EACf;EAEA,OAAOH,QAAQ;AACnB,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["usePermission","HasContentEntryPermissions","group","contentModel","children","canReadEntries","contentModelGroup","hasContentEntryPermission","contentModels","some","length"],"sources":["HasContentEntryPermissions.ts"],"sourcesContent":["import type { CmsGroup, CmsModel } from \"~/types.js\";\nimport { usePermission } from \"~/admin/hooks/usePermission.js\";\n\ninterface HasContentEntryPermissionsProps {\n group: Pick<CmsGroup, \"id\" | \"contentModels\">;\n contentModel?: Pick<CmsModel, \"modelId\">;\n children: React.JSX.Element;\n}\n\nexport const HasContentEntryPermissions = ({\n group,\n contentModel,\n children\n}: HasContentEntryPermissionsProps) => {\n const { canReadEntries } = usePermission();\n\n if (contentModel && !canReadEntries({ contentModelGroup: group, contentModel })) {\n return null;\n }\n\n const hasContentEntryPermission = group.contentModels.some(contentModel =>\n canReadEntries({\n contentModelGroup: group,\n contentModel\n })\n );\n\n if (group.contentModels.length > 0 && !hasContentEntryPermission) {\n return null;\n }\n\n return children;\n};\n"],"mappings":"AACA,SAASA,aAAa;AAQtB,OAAO,MAAMC,0BAA0B,GAAGA,CAAC;EACvCC,KAAK;EACLC,YAAY;EACZC;AAC6B,CAAC,KAAK;EACnC,MAAM;IAAEC;EAAe,CAAC,GAAGL,aAAa,CAAC,CAAC;EAE1C,IAAIG,YAAY,IAAI,CAACE,cAAc,CAAC;IAAEC,iBAAiB,EAAEJ,KAAK;IAAEC;EAAa,CAAC,CAAC,EAAE;IAC7E,OAAO,IAAI;EACf;EAEA,MAAMI,yBAAyB,GAAGL,KAAK,CAACM,aAAa,CAACC,IAAI,CAACN,YAAY,IACnEE,cAAc,CAAC;IACXC,iBAAiB,EAAEJ,KAAK;IACxBC;EACJ,CAAC,CACL,CAAC;EAED,IAAID,KAAK,CAACM,aAAa,CAACE,MAAM,GAAG,CAAC,IAAI,CAACH,yBAAyB,EAAE;IAC9D,OAAO,IAAI;EACf;EAEA,OAAOH,QAAQ;AACnB,CAAC","ignoreList":[]}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import React, { useCallback, useState } from "react";
|
|
2
|
-
|
|
3
|
-
* Package react-hotkeyz does not have types.
|
|
4
|
-
*/
|
|
5
|
-
// @ts-expect-error
|
|
6
|
-
import { useHotkeys } from "react-hotkeyz";
|
|
2
|
+
import { useHotkeys } from "@webiny/app-admin";
|
|
7
3
|
import { i18n } from "@webiny/app/i18n/index.js";
|
|
8
4
|
import { useModelEditor } from "../../../../hooks/index.js";
|
|
9
5
|
import { Heading, Input, Tooltip } from "@webiny/admin-ui";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useState","useHotkeys","i18n","useModelEditor","Heading","Input","Tooltip","t","namespace","Name","data","setData","localName","setLocalName","editingEnabled","setEditing","cancelChanges","startEditing","name","saveName","event","preventDefault","zIndex","keys","disabled","esc","enter","autoFocus","window","Cypress","createElement","value","onChange","onBlur","variant","size","side","content","trigger","level","className","onClick"],"sources":["Name.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\
|
|
1
|
+
{"version":3,"names":["React","useCallback","useState","useHotkeys","i18n","useModelEditor","Heading","Input","Tooltip","t","namespace","Name","data","setData","localName","setLocalName","editingEnabled","setEditing","cancelChanges","startEditing","name","saveName","event","preventDefault","zIndex","keys","disabled","esc","enter","autoFocus","window","Cypress","createElement","value","onChange","onBlur","variant","size","side","content","trigger","level","className","onClick"],"sources":["Name.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport { useHotkeys } from \"@webiny/app-admin\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { useModelEditor } from \"~/admin/hooks/index.js\";\nimport { Heading, Input, Tooltip } from \"@webiny/admin-ui\";\n\nconst t = i18n.namespace(\"ContentModelEditor.Name\");\n\ndeclare global {\n interface Window {\n Cypress: any;\n }\n}\n\nexport const Name = () => {\n const { data, setData } = useModelEditor();\n const [localName, setLocalName] = useState<string>(\"\");\n const [editingEnabled, setEditing] = useState<boolean>(false);\n\n const cancelChanges = () => {\n setEditing(false);\n };\n\n const startEditing = (): void => {\n setLocalName(data.name);\n setEditing(true);\n };\n\n const saveName = useCallback(\n (event: KeyboardEvent | React.SyntheticEvent) => {\n event.preventDefault();\n setData(data => {\n data.name = localName;\n return data;\n });\n setEditing(false);\n },\n [localName]\n );\n\n useHotkeys({\n zIndex: 100,\n keys: {\n \"alt+cmd+enter\": startEditing\n }\n });\n\n useHotkeys({\n zIndex: 101,\n disabled: !editingEnabled,\n keys: {\n esc: (event: KeyboardEvent) => {\n event.preventDefault();\n cancelChanges();\n },\n enter: saveName\n }\n });\n\n // Disable autoFocus because for some reason, blur event would automatically be triggered when clicking\n // on the page title when doing Cypress testing. Not sure if this is RMWC or Cypress related issue.\n const autoFocus = !window.Cypress;\n\n return editingEnabled ? (\n <Input\n autoFocus={autoFocus}\n value={localName}\n onChange={setLocalName}\n onBlur={saveName}\n variant={\"ghost\"}\n size={\"md\"}\n />\n ) : (\n <Tooltip\n side={\"bottom\"}\n content={<span>{t`Rename content model`}</span>}\n trigger={\n <Heading\n level={5}\n className={\n \"px-xs border-sm border-neutral-base rounded-md hover:border-neutral-muted\"\n }\n data-testid=\"cms-editor-model-title\"\n onClick={startEditing}\n >\n {data.name}\n </Heading>\n }\n />\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AACpD,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,cAAc;AACvB,SAASC,OAAO,EAAEC,KAAK,EAAEC,OAAO,QAAQ,kBAAkB;AAE1D,MAAMC,CAAC,GAAGL,IAAI,CAACM,SAAS,CAAC,yBAAyB,CAAC;AAQnD,OAAO,MAAMC,IAAI,GAAGA,CAAA,KAAM;EACtB,MAAM;IAAEC,IAAI;IAAEC;EAAQ,CAAC,GAAGR,cAAc,CAAC,CAAC;EAC1C,MAAM,CAACS,SAAS,EAAEC,YAAY,CAAC,GAAGb,QAAQ,CAAS,EAAE,CAAC;EACtD,MAAM,CAACc,cAAc,EAAEC,UAAU,CAAC,GAAGf,QAAQ,CAAU,KAAK,CAAC;EAE7D,MAAMgB,aAAa,GAAGA,CAAA,KAAM;IACxBD,UAAU,CAAC,KAAK,CAAC;EACrB,CAAC;EAED,MAAME,YAAY,GAAGA,CAAA,KAAY;IAC7BJ,YAAY,CAACH,IAAI,CAACQ,IAAI,CAAC;IACvBH,UAAU,CAAC,IAAI,CAAC;EACpB,CAAC;EAED,MAAMI,QAAQ,GAAGpB,WAAW,CACvBqB,KAA2C,IAAK;IAC7CA,KAAK,CAACC,cAAc,CAAC,CAAC;IACtBV,OAAO,CAACD,IAAI,IAAI;MACZA,IAAI,CAACQ,IAAI,GAAGN,SAAS;MACrB,OAAOF,IAAI;IACf,CAAC,CAAC;IACFK,UAAU,CAAC,KAAK,CAAC;EACrB,CAAC,EACD,CAACH,SAAS,CACd,CAAC;EAEDX,UAAU,CAAC;IACPqB,MAAM,EAAE,GAAG;IACXC,IAAI,EAAE;MACF,eAAe,EAAEN;IACrB;EACJ,CAAC,CAAC;EAEFhB,UAAU,CAAC;IACPqB,MAAM,EAAE,GAAG;IACXE,QAAQ,EAAE,CAACV,cAAc;IACzBS,IAAI,EAAE;MACFE,GAAG,EAAGL,KAAoB,IAAK;QAC3BA,KAAK,CAACC,cAAc,CAAC,CAAC;QACtBL,aAAa,CAAC,CAAC;MACnB,CAAC;MACDU,KAAK,EAAEP;IACX;EACJ,CAAC,CAAC;;EAEF;EACA;EACA,MAAMQ,SAAS,GAAG,CAACC,MAAM,CAACC,OAAO;EAEjC,OAAOf,cAAc,gBACjBhB,KAAA,CAAAgC,aAAA,CAACzB,KAAK;IACFsB,SAAS,EAAEA,SAAU;IACrBI,KAAK,EAAEnB,SAAU;IACjBoB,QAAQ,EAAEnB,YAAa;IACvBoB,MAAM,EAAEd,QAAS;IACjBe,OAAO,EAAE,OAAQ;IACjBC,IAAI,EAAE;EAAK,CACd,CAAC,gBAEFrC,KAAA,CAAAgC,aAAA,CAACxB,OAAO;IACJ8B,IAAI,EAAE,QAAS;IACfC,OAAO,eAAEvC,KAAA,CAAAgC,aAAA,eAAOvB,CAAC,sBAA6B,CAAE;IAChD+B,OAAO,eACHxC,KAAA,CAAAgC,aAAA,CAAC1B,OAAO;MACJmC,KAAK,EAAE,CAAE;MACTC,SAAS,EACL,2EACH;MACD,eAAY,wBAAwB;MACpCC,OAAO,EAAExB;IAAa,GAErBP,IAAI,CAACQ,IACD;EACZ,CACJ,CACJ;AACL,CAAC","ignoreList":[]}
|
|
@@ -15,7 +15,7 @@ export interface DynamicSectionProps {
|
|
|
15
15
|
getBind: GetBindCallable;
|
|
16
16
|
disabled?: boolean;
|
|
17
17
|
showLabel?: boolean;
|
|
18
|
-
children: (params: DynamicSectionPropsChildrenParams) => JSX.Element;
|
|
18
|
+
children: (params: DynamicSectionPropsChildrenParams) => React.JSX.Element;
|
|
19
19
|
emptyValue?: any;
|
|
20
20
|
gridClassName?: string;
|
|
21
21
|
onAddItem?: (index: number) => void;
|
|
@@ -15,7 +15,7 @@ const style = {
|
|
|
15
15
|
styles: "padding:0!important"
|
|
16
16
|
} : {
|
|
17
17
|
name: "56q6jo-gridContainer",
|
|
18
|
-
styles: "padding:0!important;label:gridContainer;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR5bmFtaWNTZWN0aW9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1QnNCIiwiZmlsZSI6IkR5bmFtaWNTZWN0aW9uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc1NldCBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL2Nzc1wiO1xuaW1wb3J0IHsgaTE4biB9IGZyb20gXCJAd2ViaW55L2FwcC9pMThuL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBBZGRJY29uIH0gZnJvbSBcIkB3ZWJpbnkvaWNvbnMvYWRkLnN2Z1wiO1xuaW1wb3J0IHR5cGUgeyBHZXRCaW5kQ2FsbGFibGUgfSBmcm9tIFwifi9hZG1pbi9jb21wb25lbnRzL0NvbnRlbnRFbnRyeUZvcm0vdXNlQmluZC5qc1wiO1xuaW1wb3J0IHsgUGFyZW50RmllbGRQcm92aWRlciB9IGZyb20gXCJ+L2FkbWluL2hvb2tzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBQYXJlbnRWYWx1ZUluZGV4UHJvdmlkZXIgfSBmcm9tIFwifi9hZG1pbi9jb21wb25lbnRzL01vZGVsRmllbGRQcm92aWRlci9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kQ29tcG9uZW50LCBCaW5kQ29tcG9uZW50UmVuZGVyUHJvcCwgQ21zTW9kZWxGaWVsZCB9IGZyb20gXCJ+L3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBnZXRNdWx0aVZhbHVlUmVuZGVyZXJTZXR0aW5ncyB9IGZyb20gXCJ+L2FkbWluL3BsdWdpbnMvZmllbGRSZW5kZXJlcnMvTXVsdGlWYWx1ZVJlbmRlcmVyU2V0dGluZ3MuanNcIjtcbmltcG9ydCB7XG4gICAgQnV0dG9uLFxuICAgIGNuLFxuICAgIEZvcm1Db21wb25lbnREZXNjcmlwdGlvbixcbiAgICBGb3JtQ29tcG9uZW50RXJyb3JNZXNzYWdlLFxuICAgIEZvcm1Db21wb25lbnROb3RlLFxuICAgIEdyaWQsXG4gICAgU2VwYXJhdG9yXG59IGZyb20gXCJAd2ViaW55L2FkbWluLXVpXCI7XG5cbmNvbnN0IHQgPSBpMThuLm5zKFwiYXBwLWhlYWRsZXNzLWNtcy9hZG1pbi9maWVsZHMvdGV4dFwiKTtcblxuY29uc3Qgc3R5bGUgPSB7XG4gICAgZ3JpZENvbnRhaW5lcjogY3NzYFxuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgYFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljU2VjdGlvblByb3BzQ2hpbGRyZW5QYXJhbXMge1xuICAgIEJpbmQ6IEJpbmRDb21wb25lbnQ7XG4gICAgZmllbGQ6IENtc01vZGVsRmllbGQ7XG4gICAgYmluZDoge1xuICAgICAgICBpbmRleDogQmluZENvbXBvbmVudFJlbmRlclByb3A7XG4gICAgICAgIGZpZWxkOiBCaW5kQ29tcG9uZW50UmVuZGVyUHJvcDtcbiAgICB9O1xuICAgIGluZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY1NlY3Rpb25Qcm9wcyB7XG4gICAgZmllbGQ6IENtc01vZGVsRmllbGQ7XG4gICAgZ2V0QmluZDogR2V0QmluZENhbGxhYmxlO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBzaG93TGFiZWw/OiBib29sZWFuO1xuICAgIGNoaWxkcmVuOiAocGFyYW1zOiBEeW5hbWljU2VjdGlvblByb3BzQ2hpbGRyZW5QYXJhbXMpID0+IEpTWC5FbGVtZW50O1xuICAgIGVtcHR5VmFsdWU/OiBhbnk7XG4gICAgZ3JpZENsYXNzTmFtZT86IHN0cmluZztcbiAgICBvbkFkZEl0ZW0/OiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgICBhZGRWYWx1ZUJ1dHRvbkxhYmVsPzogc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0QWRkSXRlbSA9ICgpID0+IHtcbiAgICAvLyBObyBvcC5cbn07XG5cbmNvbnN0IER5bmFtaWNTZWN0aW9uID0gKHtcbiAgICBmaWVsZCxcbiAgICBnZXRCaW5kLFxuICAgIGNoaWxkcmVuLFxuICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgc2hvd0xhYmVsID0gdHJ1ZSxcbiAgICBlbXB0eVZhbHVlID0gXCJcIixcbiAgICBvbkFkZEl0ZW0gPSBkZWZhdWx0QWRkSXRlbSxcbiAgICBncmlkQ2xhc3NOYW1lLFxuICAgIC4uLnByb3BzXG59OiBEeW5hbWljU2VjdGlvblByb3BzKSA9PiB7XG4gICAgY29uc3QgQmluZCA9IGdldEJpbmQoKTtcblxuICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0TXVsdGlWYWx1ZVJlbmRlcmVyU2V0dGluZ3MoZmllbGQpO1xuICAgIGNvbnN0IGFkZFZhbHVlQnV0dG9uTGFiZWwgPVxuICAgICAgICBwcm9wcy5hZGRWYWx1ZUJ1dHRvbkxhYmVsID8/IHNldHRpbmdzLmFkZFZhbHVlQnV0dG9uTGFiZWwgPz8gXCJBZGQgVmFsdWVcIjtcblxuICAgIHJldHVybiAoXG4gICAgICAgIC8qIEZpcnN0IHdlIG1vdW50IHRoZSB0b3AgbGV2ZWwgZmllbGQsIGZvciBleGFtcGxlOiBcIml0ZW1zXCIgKi9cbiAgICAgICAgPEJpbmQ+XG4gICAgICAgICAgICB7YmluZEZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBcInZhbHVlXCIgLT4gYW4gYXJyYXkgb2YgaXRlbXNcbiAgICAgICAgICAgICAgICAgKiBcImFwcGVuZFZhbHVlXCIgLT4gYSBjYWxsYmFjayB0byBhZGQgYSBuZXcgdmFsdWUgdG8gdGhlIHRvcCBsZXZlbCBcIml0ZW1zXCIgYXJyYXlcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBjb25zdCB7IHZhbHVlLCBhcHBlbmRWYWx1ZSB9ID0gYmluZEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYmluZEZpZWxkVmFsdWU6IHN0cmluZ1tdID0gdmFsdWUgfHwgW107XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8QmluZC5WYWxpZGF0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhcmVudEZpZWxkUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfSBwYXRoPXtCaW5kLnBhcmVudE5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93TGFiZWwgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJtYi1zbSBmbGV4IGZsZXgtY29sIGdhcC15LXNtXCJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlcGFyYXRvciBsYWJlbFBvc2l0aW9uPXtcInN0YXJ0XCJ9IHZhcmlhbnQ9e1wiYWNjZW50XCJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17XCJ0ZXh0LWFjY2VudC1wcmltYXJ5IHRleHQtbGcgZm9udC1zZW1pYm9sZFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Ake2ZpZWxkLmxhYmVsfSAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZEZpZWxkVmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBgKCR7YmluZEZpZWxkVmFsdWUubGVuZ3RofSlgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU2VwYXJhdG9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpZWxkLmRlc2NyaXB0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbXBvbmVudERlc2NyaXB0aW9uIHRleHQ9e2ZpZWxkLmRlc2NyaXB0aW9ufSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjbGFzc05hbWU9e2NsYXNzU2V0KGdyaWRDbGFzc05hbWUsIHN0eWxlLmdyaWRDb250YWluZXIpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtiaW5kRmllbGRWYWx1ZS5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmluZEZpZWxkID0gZ2V0QmluZChpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQuQ29sdW1uIHNwYW49ezEyfSBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCaW5kRmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2JpbmRQcm9wcyA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCaW5kRmllbGQuVmFsaWRhdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQYXJlbnRWYWx1ZUluZGV4UHJvdmlkZXIgaW5kZXg9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5kOiBCaW5kRmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogYmluZFByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGJpbmRGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9QYXJlbnRWYWx1ZUluZGV4UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbXBvbmVudE5vdGUgdGV4dD17ZmllbGQubm90ZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CaW5kRmllbGQuVmFsaWRhdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CaW5kRmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZC5Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtiaW5kRmllbGQudmFsaWRhdGlvbi5pc1ZhbGlkID09PSBmYWxzZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQuQ29sdW1uIHNwYW49ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1Db21wb25lbnRFcnJvck1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9e2JpbmRGaWVsZC52YWxpZGF0aW9uLm1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmlkLkNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZC5Db2x1bW4gc3Bhbj17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRGaWVsZFZhbHVlLmxlbmd0aCA+IDAgPyBcInB0LW5vbmVcIiA6IFwicHQtc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17XCJ0ZXJ0aWFyeVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17PEFkZEljb24gLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PXt0KGFkZFZhbHVlQnV0dG9uTGFiZWwpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFZhbHVlKGVtcHR5VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkSXRlbShiaW5kRmllbGRWYWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZC5Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhcmVudEZpZWxkUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvQmluZC5WYWxpZGF0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L0JpbmQ+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IER5bmFtaWNTZWN0aW9uO1xuIl19 */",
|
|
18
|
+
styles: "padding:0!important;label:gridContainer;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR5bmFtaWNTZWN0aW9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1QnNCIiwiZmlsZSI6IkR5bmFtaWNTZWN0aW9uLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc1NldCBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL2Nzc1wiO1xuaW1wb3J0IHsgaTE4biB9IGZyb20gXCJAd2ViaW55L2FwcC9pMThuL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBBZGRJY29uIH0gZnJvbSBcIkB3ZWJpbnkvaWNvbnMvYWRkLnN2Z1wiO1xuaW1wb3J0IHR5cGUgeyBHZXRCaW5kQ2FsbGFibGUgfSBmcm9tIFwifi9hZG1pbi9jb21wb25lbnRzL0NvbnRlbnRFbnRyeUZvcm0vdXNlQmluZC5qc1wiO1xuaW1wb3J0IHsgUGFyZW50RmllbGRQcm92aWRlciB9IGZyb20gXCJ+L2FkbWluL2hvb2tzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBQYXJlbnRWYWx1ZUluZGV4UHJvdmlkZXIgfSBmcm9tIFwifi9hZG1pbi9jb21wb25lbnRzL01vZGVsRmllbGRQcm92aWRlci9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kQ29tcG9uZW50LCBCaW5kQ29tcG9uZW50UmVuZGVyUHJvcCwgQ21zTW9kZWxGaWVsZCB9IGZyb20gXCJ+L3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBnZXRNdWx0aVZhbHVlUmVuZGVyZXJTZXR0aW5ncyB9IGZyb20gXCJ+L2FkbWluL3BsdWdpbnMvZmllbGRSZW5kZXJlcnMvTXVsdGlWYWx1ZVJlbmRlcmVyU2V0dGluZ3MuanNcIjtcbmltcG9ydCB7XG4gICAgQnV0dG9uLFxuICAgIGNuLFxuICAgIEZvcm1Db21wb25lbnREZXNjcmlwdGlvbixcbiAgICBGb3JtQ29tcG9uZW50RXJyb3JNZXNzYWdlLFxuICAgIEZvcm1Db21wb25lbnROb3RlLFxuICAgIEdyaWQsXG4gICAgU2VwYXJhdG9yXG59IGZyb20gXCJAd2ViaW55L2FkbWluLXVpXCI7XG5cbmNvbnN0IHQgPSBpMThuLm5zKFwiYXBwLWhlYWRsZXNzLWNtcy9hZG1pbi9maWVsZHMvdGV4dFwiKTtcblxuY29uc3Qgc3R5bGUgPSB7XG4gICAgZ3JpZENvbnRhaW5lcjogY3NzYFxuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgYFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljU2VjdGlvblByb3BzQ2hpbGRyZW5QYXJhbXMge1xuICAgIEJpbmQ6IEJpbmRDb21wb25lbnQ7XG4gICAgZmllbGQ6IENtc01vZGVsRmllbGQ7XG4gICAgYmluZDoge1xuICAgICAgICBpbmRleDogQmluZENvbXBvbmVudFJlbmRlclByb3A7XG4gICAgICAgIGZpZWxkOiBCaW5kQ29tcG9uZW50UmVuZGVyUHJvcDtcbiAgICB9O1xuICAgIGluZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY1NlY3Rpb25Qcm9wcyB7XG4gICAgZmllbGQ6IENtc01vZGVsRmllbGQ7XG4gICAgZ2V0QmluZDogR2V0QmluZENhbGxhYmxlO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBzaG93TGFiZWw/OiBib29sZWFuO1xuICAgIGNoaWxkcmVuOiAocGFyYW1zOiBEeW5hbWljU2VjdGlvblByb3BzQ2hpbGRyZW5QYXJhbXMpID0+IFJlYWN0LkpTWC5FbGVtZW50O1xuICAgIGVtcHR5VmFsdWU/OiBhbnk7XG4gICAgZ3JpZENsYXNzTmFtZT86IHN0cmluZztcbiAgICBvbkFkZEl0ZW0/OiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgICBhZGRWYWx1ZUJ1dHRvbkxhYmVsPzogc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0QWRkSXRlbSA9ICgpID0+IHtcbiAgICAvLyBObyBvcC5cbn07XG5cbmNvbnN0IER5bmFtaWNTZWN0aW9uID0gKHtcbiAgICBmaWVsZCxcbiAgICBnZXRCaW5kLFxuICAgIGNoaWxkcmVuLFxuICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgc2hvd0xhYmVsID0gdHJ1ZSxcbiAgICBlbXB0eVZhbHVlID0gXCJcIixcbiAgICBvbkFkZEl0ZW0gPSBkZWZhdWx0QWRkSXRlbSxcbiAgICBncmlkQ2xhc3NOYW1lLFxuICAgIC4uLnByb3BzXG59OiBEeW5hbWljU2VjdGlvblByb3BzKSA9PiB7XG4gICAgY29uc3QgQmluZCA9IGdldEJpbmQoKTtcblxuICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0TXVsdGlWYWx1ZVJlbmRlcmVyU2V0dGluZ3MoZmllbGQpO1xuICAgIGNvbnN0IGFkZFZhbHVlQnV0dG9uTGFiZWwgPVxuICAgICAgICBwcm9wcy5hZGRWYWx1ZUJ1dHRvbkxhYmVsID8/IHNldHRpbmdzLmFkZFZhbHVlQnV0dG9uTGFiZWwgPz8gXCJBZGQgVmFsdWVcIjtcblxuICAgIHJldHVybiAoXG4gICAgICAgIC8qIEZpcnN0IHdlIG1vdW50IHRoZSB0b3AgbGV2ZWwgZmllbGQsIGZvciBleGFtcGxlOiBcIml0ZW1zXCIgKi9cbiAgICAgICAgPEJpbmQ+XG4gICAgICAgICAgICB7YmluZEZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBcInZhbHVlXCIgLT4gYW4gYXJyYXkgb2YgaXRlbXNcbiAgICAgICAgICAgICAgICAgKiBcImFwcGVuZFZhbHVlXCIgLT4gYSBjYWxsYmFjayB0byBhZGQgYSBuZXcgdmFsdWUgdG8gdGhlIHRvcCBsZXZlbCBcIml0ZW1zXCIgYXJyYXlcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBjb25zdCB7IHZhbHVlLCBhcHBlbmRWYWx1ZSB9ID0gYmluZEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYmluZEZpZWxkVmFsdWU6IHN0cmluZ1tdID0gdmFsdWUgfHwgW107XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8QmluZC5WYWxpZGF0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhcmVudEZpZWxkUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfSBwYXRoPXtCaW5kLnBhcmVudE5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93TGFiZWwgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJtYi1zbSBmbGV4IGZsZXgtY29sIGdhcC15LXNtXCJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlcGFyYXRvciBsYWJlbFBvc2l0aW9uPXtcInN0YXJ0XCJ9IHZhcmlhbnQ9e1wiYWNjZW50XCJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17XCJ0ZXh0LWFjY2VudC1wcmltYXJ5IHRleHQtbGcgZm9udC1zZW1pYm9sZFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Ake2ZpZWxkLmxhYmVsfSAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZEZpZWxkVmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBgKCR7YmluZEZpZWxkVmFsdWUubGVuZ3RofSlgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU2VwYXJhdG9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpZWxkLmRlc2NyaXB0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbXBvbmVudERlc2NyaXB0aW9uIHRleHQ9e2ZpZWxkLmRlc2NyaXB0aW9ufSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjbGFzc05hbWU9e2NsYXNzU2V0KGdyaWRDbGFzc05hbWUsIHN0eWxlLmdyaWRDb250YWluZXIpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtiaW5kRmllbGRWYWx1ZS5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmluZEZpZWxkID0gZ2V0QmluZChpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQuQ29sdW1uIHNwYW49ezEyfSBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCaW5kRmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2JpbmRQcm9wcyA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCaW5kRmllbGQuVmFsaWRhdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQYXJlbnRWYWx1ZUluZGV4UHJvdmlkZXIgaW5kZXg9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5kOiBCaW5kRmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogYmluZFByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGJpbmRGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9QYXJlbnRWYWx1ZUluZGV4UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbXBvbmVudE5vdGUgdGV4dD17ZmllbGQubm90ZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CaW5kRmllbGQuVmFsaWRhdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CaW5kRmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZC5Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtiaW5kRmllbGQudmFsaWRhdGlvbi5pc1ZhbGlkID09PSBmYWxzZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQuQ29sdW1uIHNwYW49ezEyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1Db21wb25lbnRFcnJvck1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9e2JpbmRGaWVsZC52YWxpZGF0aW9uLm1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmlkLkNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZC5Db2x1bW4gc3Bhbj17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRGaWVsZFZhbHVlLmxlbmd0aCA+IDAgPyBcInB0LW5vbmVcIiA6IFwicHQtc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17XCJ0ZXJ0aWFyeVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17PEFkZEljb24gLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PXt0KGFkZFZhbHVlQnV0dG9uTGFiZWwpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFZhbHVlKGVtcHR5VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkSXRlbShiaW5kRmllbGRWYWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZC5Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhcmVudEZpZWxkUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvQmluZC5WYWxpZGF0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L0JpbmQ+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IER5bmFtaWNTZWN0aW9uO1xuIl19 */",
|
|
19
19
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
20
20
|
})
|
|
21
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","classSet","css","i18n","ReactComponent","AddIcon","ParentFieldProvider","ParentValueIndexProvider","getMultiValueRendererSettings","Button","cn","FormComponentDescription","FormComponentErrorMessage","FormComponentNote","Grid","Separator","t","ns","style","gridContainer","process","env","NODE_ENV","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","defaultAddItem","DynamicSection","field","getBind","children","disabled","showLabel","emptyValue","onAddItem","gridClassName","props","Bind","settings","addValueButtonLabel","createElement","bindField","value","appendValue","bindFieldValue","ValidationContainer","path","parentName","className","labelPosition","variant","label","length","description","text","Fragment","map","_","index","BindField","Column","span","key","bindProps","bind","note","validation","isValid","invalid","message","icon","onClick"],"sources":["DynamicSection.tsx"],"sourcesContent":["import React from \"react\";\nimport classSet from \"classnames\";\nimport { css } from \"@emotion/css\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { ReactComponent as AddIcon } from \"@webiny/icons/add.svg\";\nimport type { GetBindCallable } from \"~/admin/components/ContentEntryForm/useBind.js\";\nimport { ParentFieldProvider } from \"~/admin/hooks/index.js\";\nimport { ParentValueIndexProvider } from \"~/admin/components/ModelFieldProvider/index.js\";\nimport type { BindComponent, BindComponentRenderProp, CmsModelField } from \"~/types.js\";\nimport { getMultiValueRendererSettings } from \"~/admin/plugins/fieldRenderers/MultiValueRendererSettings.js\";\nimport {\n Button,\n cn,\n FormComponentDescription,\n FormComponentErrorMessage,\n FormComponentNote,\n Grid,\n Separator\n} from \"@webiny/admin-ui\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst style = {\n gridContainer: css`\n padding: 0 !important;\n `\n};\n\nexport interface DynamicSectionPropsChildrenParams {\n Bind: BindComponent;\n field: CmsModelField;\n bind: {\n index: BindComponentRenderProp;\n field: BindComponentRenderProp;\n };\n index: number;\n}\n\nexport interface DynamicSectionProps {\n field: CmsModelField;\n getBind: GetBindCallable;\n disabled?: boolean;\n showLabel?: boolean;\n children: (params: DynamicSectionPropsChildrenParams) => JSX.Element;\n emptyValue?: any;\n gridClassName?: string;\n onAddItem?: (index: number) => void;\n addValueButtonLabel?: string;\n}\n\nconst defaultAddItem = () => {\n // No op.\n};\n\nconst DynamicSection = ({\n field,\n getBind,\n children,\n disabled = false,\n showLabel = true,\n emptyValue = \"\",\n onAddItem = defaultAddItem,\n gridClassName,\n ...props\n}: DynamicSectionProps) => {\n const Bind = getBind();\n\n const settings = getMultiValueRendererSettings(field);\n const addValueButtonLabel =\n props.addValueButtonLabel ?? settings.addValueButtonLabel ?? \"Add Value\";\n\n return (\n /* First we mount the top level field, for example: \"items\" */\n <Bind>\n {bindField => {\n /**\n * \"value\" -> an array of items\n * \"appendValue\" -> a callback to add a new value to the top level \"items\" array\n */\n const { value, appendValue } = bindField;\n\n const bindFieldValue: string[] = value || [];\n\n return (\n <Bind.ValidationContainer>\n <ParentFieldProvider value={value} path={Bind.parentName}>\n {showLabel && (\n <div className={\"mb-sm flex flex-col gap-y-sm\"}>\n <Separator labelPosition={\"start\"} variant={\"accent\"}>\n <span\n className={\"text-accent-primary text-lg font-semibold\"}\n >\n {`${field.label} ${\n bindFieldValue.length\n ? `(${bindFieldValue.length})`\n : \"\"\n }`}\n </span>\n </Separator>\n {field.description && (\n <FormComponentDescription text={field.description} />\n )}\n </div>\n )}\n <Grid className={classSet(gridClassName, style.gridContainer)}>\n <>\n {bindFieldValue.map((_, index) => {\n const BindField = getBind(index);\n return (\n <Grid.Column span={12} key={index}>\n <BindField>\n {bindProps => (\n <BindField.ValidationContainer>\n <ParentValueIndexProvider index={index}>\n {children({\n Bind: BindField,\n field,\n bind: {\n index: bindProps,\n field: bindField\n },\n index\n })}\n </ParentValueIndexProvider>\n <FormComponentNote text={field.note} />\n </BindField.ValidationContainer>\n )}\n </BindField>\n </Grid.Column>\n );\n })}\n </>\n <>\n {bindField.validation.isValid === false && (\n <Grid.Column span={12}>\n <FormComponentErrorMessage\n invalid\n text={bindField.validation.message}\n />\n </Grid.Column>\n )}\n </>\n {\n <Grid.Column span={12}>\n <div\n className={cn(\n bindFieldValue.length > 0 ? \"pt-none\" : \"pt-sm\"\n )}\n >\n <Button\n disabled={disabled}\n variant={\"tertiary\"}\n icon={<AddIcon />}\n text={t(addValueButtonLabel)}\n onClick={() => {\n appendValue(emptyValue);\n onAddItem(bindFieldValue.length);\n }}\n />\n </div>\n </Grid.Column>\n }\n </Grid>\n </ParentFieldProvider>\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n};\n\nexport default DynamicSection;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","classSet","css","i18n","ReactComponent","AddIcon","ParentFieldProvider","ParentValueIndexProvider","getMultiValueRendererSettings","Button","cn","FormComponentDescription","FormComponentErrorMessage","FormComponentNote","Grid","Separator","t","ns","style","gridContainer","process","env","NODE_ENV","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","defaultAddItem","DynamicSection","field","getBind","children","disabled","showLabel","emptyValue","onAddItem","gridClassName","props","Bind","settings","addValueButtonLabel","createElement","bindField","value","appendValue","bindFieldValue","ValidationContainer","path","parentName","className","labelPosition","variant","label","length","description","text","Fragment","map","_","index","BindField","Column","span","key","bindProps","bind","note","validation","isValid","invalid","message","icon","onClick"],"sources":["DynamicSection.tsx"],"sourcesContent":["import React from \"react\";\nimport classSet from \"classnames\";\nimport { css } from \"@emotion/css\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { ReactComponent as AddIcon } from \"@webiny/icons/add.svg\";\nimport type { GetBindCallable } from \"~/admin/components/ContentEntryForm/useBind.js\";\nimport { ParentFieldProvider } from \"~/admin/hooks/index.js\";\nimport { ParentValueIndexProvider } from \"~/admin/components/ModelFieldProvider/index.js\";\nimport type { BindComponent, BindComponentRenderProp, CmsModelField } from \"~/types.js\";\nimport { getMultiValueRendererSettings } from \"~/admin/plugins/fieldRenderers/MultiValueRendererSettings.js\";\nimport {\n Button,\n cn,\n FormComponentDescription,\n FormComponentErrorMessage,\n FormComponentNote,\n Grid,\n Separator\n} from \"@webiny/admin-ui\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/text\");\n\nconst style = {\n gridContainer: css`\n padding: 0 !important;\n `\n};\n\nexport interface DynamicSectionPropsChildrenParams {\n Bind: BindComponent;\n field: CmsModelField;\n bind: {\n index: BindComponentRenderProp;\n field: BindComponentRenderProp;\n };\n index: number;\n}\n\nexport interface DynamicSectionProps {\n field: CmsModelField;\n getBind: GetBindCallable;\n disabled?: boolean;\n showLabel?: boolean;\n children: (params: DynamicSectionPropsChildrenParams) => React.JSX.Element;\n emptyValue?: any;\n gridClassName?: string;\n onAddItem?: (index: number) => void;\n addValueButtonLabel?: string;\n}\n\nconst defaultAddItem = () => {\n // No op.\n};\n\nconst DynamicSection = ({\n field,\n getBind,\n children,\n disabled = false,\n showLabel = true,\n emptyValue = \"\",\n onAddItem = defaultAddItem,\n gridClassName,\n ...props\n}: DynamicSectionProps) => {\n const Bind = getBind();\n\n const settings = getMultiValueRendererSettings(field);\n const addValueButtonLabel =\n props.addValueButtonLabel ?? settings.addValueButtonLabel ?? \"Add Value\";\n\n return (\n /* First we mount the top level field, for example: \"items\" */\n <Bind>\n {bindField => {\n /**\n * \"value\" -> an array of items\n * \"appendValue\" -> a callback to add a new value to the top level \"items\" array\n */\n const { value, appendValue } = bindField;\n\n const bindFieldValue: string[] = value || [];\n\n return (\n <Bind.ValidationContainer>\n <ParentFieldProvider value={value} path={Bind.parentName}>\n {showLabel && (\n <div className={\"mb-sm flex flex-col gap-y-sm\"}>\n <Separator labelPosition={\"start\"} variant={\"accent\"}>\n <span\n className={\"text-accent-primary text-lg font-semibold\"}\n >\n {`${field.label} ${\n bindFieldValue.length\n ? `(${bindFieldValue.length})`\n : \"\"\n }`}\n </span>\n </Separator>\n {field.description && (\n <FormComponentDescription text={field.description} />\n )}\n </div>\n )}\n <Grid className={classSet(gridClassName, style.gridContainer)}>\n <>\n {bindFieldValue.map((_, index) => {\n const BindField = getBind(index);\n return (\n <Grid.Column span={12} key={index}>\n <BindField>\n {bindProps => (\n <BindField.ValidationContainer>\n <ParentValueIndexProvider index={index}>\n {children({\n Bind: BindField,\n field,\n bind: {\n index: bindProps,\n field: bindField\n },\n index\n })}\n </ParentValueIndexProvider>\n <FormComponentNote text={field.note} />\n </BindField.ValidationContainer>\n )}\n </BindField>\n </Grid.Column>\n );\n })}\n </>\n <>\n {bindField.validation.isValid === false && (\n <Grid.Column span={12}>\n <FormComponentErrorMessage\n invalid\n text={bindField.validation.message}\n />\n </Grid.Column>\n )}\n </>\n {\n <Grid.Column span={12}>\n <div\n className={cn(\n bindFieldValue.length > 0 ? \"pt-none\" : \"pt-sm\"\n )}\n >\n <Button\n disabled={disabled}\n variant={\"tertiary\"}\n icon={<AddIcon />}\n text={t(addValueButtonLabel)}\n onClick={() => {\n appendValue(emptyValue);\n onAddItem(bindFieldValue.length);\n }}\n />\n </div>\n </Grid.Column>\n }\n </Grid>\n </ParentFieldProvider>\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n};\n\nexport default DynamicSection;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,8 +13,8 @@ export interface MultiValueItemContainerProps {
|
|
|
13
13
|
onClone: (value: TemplateValue) => void;
|
|
14
14
|
title: React.ReactNode;
|
|
15
15
|
description: string;
|
|
16
|
-
icon: JSX.Element;
|
|
17
|
-
actions?: JSX.Element;
|
|
16
|
+
icon: React.JSX.Element;
|
|
17
|
+
actions?: React.JSX.Element;
|
|
18
18
|
template: CmsDynamicZoneTemplate;
|
|
19
19
|
children: React.ReactNode;
|
|
20
20
|
}
|