@webiny/app-admin 6.4.0-beta.1 → 6.4.0-beta.3
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/base/Base/DefaultFieldRenderers.js +4 -0
- package/base/Base/DefaultFieldRenderers.js.map +1 -1
- package/base/Base/FieldRenderers/LexicalRenderer.d.ts +12 -0
- package/base/Base/FieldRenderers/LexicalRenderer.js +48 -0
- package/base/Base/FieldRenderers/LexicalRenderer.js.map +1 -0
- package/base/Base.js +2 -1
- package/base/Base.js.map +1 -1
- package/base/providers/UiProviders.js +6 -2
- package/base/providers/UiProviders.js.map +1 -1
- package/components/LexicalEditor/DefaultLexicalEditorConfig.d.ts +2 -0
- package/components/LexicalEditor/DefaultLexicalEditorConfig.js +81 -0
- package/components/LexicalEditor/DefaultLexicalEditorConfig.js.map +1 -0
- package/components/LexicalEditor/TypographyDropDown.d.ts +8 -0
- package/components/LexicalEditor/TypographyDropDown.js +60 -0
- package/components/LexicalEditor/TypographyDropDown.js.map +1 -0
- package/exports/admin/ui/lexical.d.ts +1 -0
- package/exports/admin/ui/lexical.js +1 -0
- package/exports/admin/ui.d.ts +0 -1
- package/exports/admin/ui.js +0 -1
- package/features/fileUrlFormatter/abstractions.d.ts +6 -0
- package/features/fileUrlFormatter/abstractions.js +5 -0
- package/features/fileUrlFormatter/abstractions.js.map +1 -0
- package/features/formModel/demo/FieldRenderersDemoPresenter.js +6 -1
- package/features/formModel/demo/FieldRenderersDemoPresenter.js.map +1 -1
- package/features/formModel/feature.js +2 -1
- package/features/formModel/feature.js.map +1 -1
- package/features/formModel/fieldTypes/LexicalFieldType.d.ts +19 -0
- package/features/formModel/fieldTypes/LexicalFieldType.js +23 -0
- package/features/formModel/fieldTypes/LexicalFieldType.js.map +1 -0
- package/features/formModel/fieldTypes/index.d.ts +1 -0
- package/features/formModel/fieldTypes/index.js +1 -0
- package/features/formModel/renderers.d.ts +1 -0
- package/features/formModel/renderers.js +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +23 -21
|
@@ -23,6 +23,7 @@ import { FilePickerRenderer } from "./FieldRenderers/FilePickerRenderer.js";
|
|
|
23
23
|
import { FileUrlPickerRenderer } from "./FieldRenderers/FileUrlPickerRenderer.js";
|
|
24
24
|
import { MultiFilePickerRenderer } from "./FieldRenderers/MultiFilePickerRenderer.js";
|
|
25
25
|
import { CodeEditorRenderer } from "./FieldRenderers/CodeEditorRenderer.js";
|
|
26
|
+
import { LexicalRenderer } from "./FieldRenderers/LexicalRenderer.js";
|
|
26
27
|
const DefaultFieldRenderers = ()=>/*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
|
|
27
28
|
name: "textInput",
|
|
28
29
|
component: InputRenderer
|
|
@@ -92,6 +93,9 @@ const DefaultFieldRenderers = ()=>/*#__PURE__*/ react.createElement(AdminConfig,
|
|
|
92
93
|
}), /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
|
|
93
94
|
name: "codeEditor",
|
|
94
95
|
component: CodeEditorRenderer
|
|
96
|
+
}), /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
|
|
97
|
+
name: "lexical",
|
|
98
|
+
component: LexicalRenderer
|
|
95
99
|
}));
|
|
96
100
|
export { DefaultFieldRenderers };
|
|
97
101
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base/Base/DefaultFieldRenderers.js","sources":["../../../src/base/Base/DefaultFieldRenderers.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"~/config/AdminConfig.js\";\nimport { InputRenderer } from \"~/base/Base/FieldRenderers/InputRenderer.js\";\nimport { SelectRenderer } from \"~/base/Base/FieldRenderers/SelectRenderer.js\";\nimport { ObjectRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js\";\nimport { ObjectAccordionMultipleRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js\";\nimport { DynamicZoneRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js\";\nimport { PassthroughRenderer } from \"~/base/Base/FieldRenderers/PassthroughRenderer.js\";\nimport { TextareaRenderer } from \"~/base/Base/FieldRenderers/TextareaRenderer.js\";\nimport { SwitchRenderer } from \"~/base/Base/FieldRenderers/SwitchRenderer.js\";\nimport { NumberInputRenderer } from \"~/base/Base/FieldRenderers/NumberInputRenderer.js\";\nimport { NumberInputsRenderer } from \"~/base/Base/FieldRenderers/NumberInputsRenderer.js\";\nimport { TextInputsRenderer } from \"~/base/Base/FieldRenderers/TextInputsRenderer.js\";\nimport { TextareasRenderer } from \"~/base/Base/FieldRenderers/TextareasRenderer.js\";\nimport { TagsRenderer } from \"~/base/Base/FieldRenderers/TagsRenderer.js\";\nimport { RadioButtonsRenderer } from \"~/base/Base/FieldRenderers/RadioButtonsRenderer.js\";\nimport { CheckboxesRenderer } from \"~/base/Base/FieldRenderers/CheckboxesRenderer.js\";\nimport { DateTimeRenderer } from \"~/base/Base/FieldRenderers/DateTimeRenderer.js\";\nimport { DateTimeInputsRenderer } from \"~/base/Base/FieldRenderers/DateTimeInputsRenderer.js\";\nimport { HiddenRenderer } from \"~/base/Base/FieldRenderers/HiddenRenderer.js\";\nimport { KeyValueTagsRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js\";\nimport { FilePickerRenderer } from \"~/base/Base/FieldRenderers/FilePickerRenderer.js\";\nimport { FileUrlPickerRenderer } from \"~/base/Base/FieldRenderers/FileUrlPickerRenderer.js\";\nimport { MultiFilePickerRenderer } from \"~/base/Base/FieldRenderers/MultiFilePickerRenderer.js\";\nimport { CodeEditorRenderer } from \"~/base/Base/FieldRenderers/CodeEditorRenderer.js\";\n\nexport const DefaultFieldRenderers = () => {\n return (\n <AdminConfig>\n <AdminConfig.Form.FieldRenderer name={\"textInput\"} component={InputRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textarea\"} component={TextareaRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dropdown\"} component={SelectRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionSingle\"}\n component={ObjectRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionMultiple\"}\n component={ObjectAccordionMultipleRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"dynamicZone\"} component={DynamicZoneRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"passthrough\"} component={PassthroughRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"switch\"} component={SwitchRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"numberInput\"} component={NumberInputRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"numberInputs\"}\n component={NumberInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"textInputs\"} component={TextInputsRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textareas\"} component={TextareasRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"tags\"} component={TagsRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"radioButtons\"}\n component={RadioButtonsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"checkboxes\"} component={CheckboxesRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dateTimeInput\"} component={DateTimeRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"dateTimeInputs\"}\n component={DateTimeInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"hidden\"} component={HiddenRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"keyValueTags\"}\n component={KeyValueTagsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"filePicker\"} component={FilePickerRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"multiFilePicker\"}\n component={MultiFilePickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"fileUrlPicker\"}\n component={FileUrlPickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"codeEditor\"} component={CodeEditorRenderer} />\n </AdminConfig>\n );\n};\n"],"names":["DefaultFieldRenderers","AdminConfig","InputRenderer","TextareaRenderer","SelectRenderer","ObjectRenderer","ObjectAccordionMultipleRenderer","DynamicZoneRenderer","PassthroughRenderer","SwitchRenderer","NumberInputRenderer","NumberInputsRenderer","TextInputsRenderer","TextareasRenderer","TagsRenderer","RadioButtonsRenderer","CheckboxesRenderer","DateTimeRenderer","DateTimeInputsRenderer","HiddenRenderer","KeyValueTagsRenderer","FilePickerRenderer","MultiFilePickerRenderer","FileUrlPickerRenderer","CodeEditorRenderer"],"mappings":"
|
|
1
|
+
{"version":3,"file":"base/Base/DefaultFieldRenderers.js","sources":["../../../src/base/Base/DefaultFieldRenderers.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"~/config/AdminConfig.js\";\nimport { InputRenderer } from \"~/base/Base/FieldRenderers/InputRenderer.js\";\nimport { SelectRenderer } from \"~/base/Base/FieldRenderers/SelectRenderer.js\";\nimport { ObjectRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js\";\nimport { ObjectAccordionMultipleRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js\";\nimport { DynamicZoneRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js\";\nimport { PassthroughRenderer } from \"~/base/Base/FieldRenderers/PassthroughRenderer.js\";\nimport { TextareaRenderer } from \"~/base/Base/FieldRenderers/TextareaRenderer.js\";\nimport { SwitchRenderer } from \"~/base/Base/FieldRenderers/SwitchRenderer.js\";\nimport { NumberInputRenderer } from \"~/base/Base/FieldRenderers/NumberInputRenderer.js\";\nimport { NumberInputsRenderer } from \"~/base/Base/FieldRenderers/NumberInputsRenderer.js\";\nimport { TextInputsRenderer } from \"~/base/Base/FieldRenderers/TextInputsRenderer.js\";\nimport { TextareasRenderer } from \"~/base/Base/FieldRenderers/TextareasRenderer.js\";\nimport { TagsRenderer } from \"~/base/Base/FieldRenderers/TagsRenderer.js\";\nimport { RadioButtonsRenderer } from \"~/base/Base/FieldRenderers/RadioButtonsRenderer.js\";\nimport { CheckboxesRenderer } from \"~/base/Base/FieldRenderers/CheckboxesRenderer.js\";\nimport { DateTimeRenderer } from \"~/base/Base/FieldRenderers/DateTimeRenderer.js\";\nimport { DateTimeInputsRenderer } from \"~/base/Base/FieldRenderers/DateTimeInputsRenderer.js\";\nimport { HiddenRenderer } from \"~/base/Base/FieldRenderers/HiddenRenderer.js\";\nimport { KeyValueTagsRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js\";\nimport { FilePickerRenderer } from \"~/base/Base/FieldRenderers/FilePickerRenderer.js\";\nimport { FileUrlPickerRenderer } from \"~/base/Base/FieldRenderers/FileUrlPickerRenderer.js\";\nimport { MultiFilePickerRenderer } from \"~/base/Base/FieldRenderers/MultiFilePickerRenderer.js\";\nimport { CodeEditorRenderer } from \"~/base/Base/FieldRenderers/CodeEditorRenderer.js\";\nimport { LexicalRenderer } from \"~/base/Base/FieldRenderers/LexicalRenderer.js\";\n\nexport const DefaultFieldRenderers = () => {\n return (\n <AdminConfig>\n <AdminConfig.Form.FieldRenderer name={\"textInput\"} component={InputRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textarea\"} component={TextareaRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dropdown\"} component={SelectRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionSingle\"}\n component={ObjectRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionMultiple\"}\n component={ObjectAccordionMultipleRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"dynamicZone\"} component={DynamicZoneRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"passthrough\"} component={PassthroughRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"switch\"} component={SwitchRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"numberInput\"} component={NumberInputRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"numberInputs\"}\n component={NumberInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"textInputs\"} component={TextInputsRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textareas\"} component={TextareasRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"tags\"} component={TagsRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"radioButtons\"}\n component={RadioButtonsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"checkboxes\"} component={CheckboxesRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dateTimeInput\"} component={DateTimeRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"dateTimeInputs\"}\n component={DateTimeInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"hidden\"} component={HiddenRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"keyValueTags\"}\n component={KeyValueTagsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"filePicker\"} component={FilePickerRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"multiFilePicker\"}\n component={MultiFilePickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"fileUrlPicker\"}\n component={FileUrlPickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"codeEditor\"} component={CodeEditorRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"lexical\"} component={LexicalRenderer} />\n </AdminConfig>\n );\n};\n"],"names":["DefaultFieldRenderers","AdminConfig","InputRenderer","TextareaRenderer","SelectRenderer","ObjectRenderer","ObjectAccordionMultipleRenderer","DynamicZoneRenderer","PassthroughRenderer","SwitchRenderer","NumberInputRenderer","NumberInputsRenderer","TextInputsRenderer","TextareasRenderer","TagsRenderer","RadioButtonsRenderer","CheckboxesRenderer","DateTimeRenderer","DateTimeInputsRenderer","HiddenRenderer","KeyValueTagsRenderer","FilePickerRenderer","MultiFilePickerRenderer","FileUrlPickerRenderer","CodeEditorRenderer","LexicalRenderer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2BO,MAAMA,wBAAwB,IAC1B,WAAP,GACI,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACA,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAa,WAAWC;sBAC9D,oBAACD,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAY,WAAWE;sBAC7D,oBAACF,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAY,WAAWG;sBAC7D,oBAACH,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWI;sBAEf,oBAACJ,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWK;sBAEf,oBAACL,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWM;sBAChE,oBAACN,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWO;sBAChE,oBAACP,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWQ;sBAC3D,oBAACR,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWS;sBAChE,oBAACT,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWU;sBAEf,oBAACV,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWW;sBAC/D,oBAACX,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAa,WAAWY;sBAC9D,oBAACZ,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAQ,WAAWa;sBACzD,oBAACb,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWc;sBAEf,oBAACd,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWe;sBAC/D,oBAACf,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAiB,WAAWgB;sBAClE,oBAAChB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWiB;sBAEf,oBAACjB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWkB;sBAC3D,oBAAClB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWmB;sBAEf,oBAACnB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWoB;sBAC/D,oBAACpB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWqB;sBAEf,oBAACrB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWsB;sBAEf,oBAACtB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWuB;sBAC/D,oBAACvB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAW,WAAWwB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
declare module "../../../features/formModel/abstractions.js" {
|
|
3
|
+
interface IFieldRendererRegistry {
|
|
4
|
+
lexical: {
|
|
5
|
+
fieldType: "lexical";
|
|
6
|
+
settings: undefined;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export declare const LexicalRenderer: React.ComponentType<{
|
|
11
|
+
field: import("../../..").IFieldVM;
|
|
12
|
+
}>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { StaticToolbar } from "@webiny/lexical-editor";
|
|
3
|
+
import { createFieldRenderer } from "../../../features/formModel/createFieldRenderer.js";
|
|
4
|
+
import { LexicalEditor } from "../../../components/LexicalEditor/LexicalEditor.js";
|
|
5
|
+
import { FormComponentDescription, FormComponentLabel, FormComponentNote } from "@webiny/admin-ui";
|
|
6
|
+
const placeholderStyles = {
|
|
7
|
+
position: "absolute",
|
|
8
|
+
top: 40,
|
|
9
|
+
left: 25
|
|
10
|
+
};
|
|
11
|
+
const contentEditableStyles = {
|
|
12
|
+
minHeight: 200,
|
|
13
|
+
display: "block",
|
|
14
|
+
padding: 10
|
|
15
|
+
};
|
|
16
|
+
const styles = {
|
|
17
|
+
backgroundColor: "#fff",
|
|
18
|
+
border: "1px solid #e1e1e1",
|
|
19
|
+
padding: "10px 14px",
|
|
20
|
+
minHeight: 200,
|
|
21
|
+
maxHeight: 350
|
|
22
|
+
};
|
|
23
|
+
const LexicalRenderer = createFieldRenderer(({ field })=>{
|
|
24
|
+
const value = field.value;
|
|
25
|
+
const toolbar = /*#__PURE__*/ react.createElement(StaticToolbar, null);
|
|
26
|
+
return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(FormComponentLabel, {
|
|
27
|
+
text: field.label,
|
|
28
|
+
hint: field.help,
|
|
29
|
+
disabled: field.disabled
|
|
30
|
+
}), /*#__PURE__*/ react.createElement(FormComponentDescription, {
|
|
31
|
+
text: field.description,
|
|
32
|
+
disabled: field.disabled
|
|
33
|
+
}), /*#__PURE__*/ react.createElement(LexicalEditor, {
|
|
34
|
+
placeholder: field.placeholder || "Enter your text here...",
|
|
35
|
+
staticToolbar: toolbar,
|
|
36
|
+
placeholderStyles: placeholderStyles,
|
|
37
|
+
contentEditableStyles: contentEditableStyles,
|
|
38
|
+
styles: styles,
|
|
39
|
+
value: value,
|
|
40
|
+
onChange: (value)=>field.onChange(value)
|
|
41
|
+
}), field.note ? /*#__PURE__*/ react.createElement(FormComponentNote, {
|
|
42
|
+
text: field.note,
|
|
43
|
+
disabled: field.disabled
|
|
44
|
+
}) : null);
|
|
45
|
+
});
|
|
46
|
+
export { LexicalRenderer };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=LexicalRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base/Base/FieldRenderers/LexicalRenderer.js","sources":["../../../../src/base/Base/FieldRenderers/LexicalRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { StaticToolbar } from \"@webiny/lexical-editor\";\nimport { createFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { LexicalEditor } from \"~/components/LexicalEditor/LexicalEditor.js\";\nimport type { RichTextValueWithHtml } from \"~/components/LexicalEditor/lexicalValueWithHtml.js\";\nimport { FormComponentLabel } from \"@webiny/admin-ui\";\nimport { FormComponentDescription } from \"@webiny/admin-ui\";\nimport { FormComponentNote } from \"@webiny/admin-ui\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n lexical: {\n fieldType: \"lexical\";\n settings: undefined;\n };\n }\n}\n\nconst placeholderStyles: React.CSSProperties = { position: \"absolute\", top: 40, left: 25 };\n\nconst contentEditableStyles: React.CSSProperties = {\n minHeight: 200,\n display: \"block\",\n padding: 10\n};\n\nconst styles: React.CSSProperties = {\n backgroundColor: \"#fff\",\n border: \"1px solid #e1e1e1\",\n padding: \"10px 14px\",\n minHeight: 200,\n maxHeight: 350\n};\n\nexport const LexicalRenderer = createFieldRenderer<\"lexical\">(({ field }) => {\n const value = field.value as RichTextValueWithHtml | undefined;\n const toolbar = <StaticToolbar />;\n\n return (\n <>\n <FormComponentLabel text={field.label} hint={field.help} disabled={field.disabled} />\n <FormComponentDescription text={field.description} disabled={field.disabled} />\n <LexicalEditor\n placeholder={field.placeholder || \"Enter your text here...\"}\n staticToolbar={toolbar}\n placeholderStyles={placeholderStyles}\n contentEditableStyles={contentEditableStyles}\n styles={styles}\n value={value}\n onChange={value => field.onChange(value)}\n />\n {field.note ? <FormComponentNote text={field.note} disabled={field.disabled} /> : null}\n </>\n );\n});\n"],"names":["placeholderStyles","contentEditableStyles","styles","LexicalRenderer","createFieldRenderer","field","value","toolbar","StaticToolbar","FormComponentLabel","FormComponentDescription","LexicalEditor","FormComponentNote"],"mappings":";;;;;AAkBA,MAAMA,oBAAyC;IAAE,UAAU;IAAY,KAAK;IAAI,MAAM;AAAG;AAEzF,MAAMC,wBAA6C;IAC/C,WAAW;IACX,SAAS;IACT,SAAS;AACb;AAEA,MAAMC,SAA8B;IAChC,iBAAiB;IACjB,QAAQ;IACR,SAAS;IACT,WAAW;IACX,WAAW;AACf;AAEO,MAAMC,kBAAkBC,oBAA+B,CAAC,EAAEC,KAAK,EAAE;IACpE,MAAMC,QAAQD,MAAM,KAAK;IACzB,MAAME,UAAU,WAAVA,GAAU,oBAACC,eAAaA;IAE9B,OAAO,WAAP,GACI,wDACI,oBAACC,oBAAkBA;QAAC,MAAMJ,MAAM,KAAK;QAAE,MAAMA,MAAM,IAAI;QAAE,UAAUA,MAAM,QAAQ;sBACjF,oBAACK,0BAAwBA;QAAC,MAAML,MAAM,WAAW;QAAE,UAAUA,MAAM,QAAQ;sBAC3E,oBAACM,eAAaA;QACV,aAAaN,MAAM,WAAW,IAAI;QAClC,eAAeE;QACf,mBAAmBP;QACnB,uBAAuBC;QACvB,QAAQC;QACR,OAAOI;QACP,UAAUA,CAAAA,QAASD,MAAM,QAAQ,CAACC;QAErCD,MAAM,IAAI,GAAG,WAAH,GAAG,oBAACO,mBAAiBA;QAAC,MAAMP,MAAM,IAAI;QAAE,UAAUA,MAAM,QAAQ;SAAO;AAG9F"}
|
package/base/Base.js
CHANGED
|
@@ -6,7 +6,8 @@ import { UserMenu } from "./Base/UserMenu.js";
|
|
|
6
6
|
import { LexicalPreset } from "./Base/LexicalPreset.js";
|
|
7
7
|
import { DefaultFieldRenderers } from "./Base/DefaultFieldRenderers.js";
|
|
8
8
|
import { DefaultLayoutRenderers } from "./Base/DefaultLayoutRenderers.js";
|
|
9
|
-
|
|
9
|
+
import { DefaultLexicalEditorConfig } from "../components/LexicalEditor/DefaultLexicalEditorConfig.js";
|
|
10
|
+
const BaseExtension = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Tenant, null), /*#__PURE__*/ react.createElement(Menus, null), /*#__PURE__*/ react.createElement(UserMenu, null), /*#__PURE__*/ react.createElement(RoutesConfig, null), /*#__PURE__*/ react.createElement(LexicalPreset, null), /*#__PURE__*/ react.createElement(DefaultFieldRenderers, null), /*#__PURE__*/ react.createElement(DefaultLayoutRenderers, null), /*#__PURE__*/ react.createElement(DefaultLexicalEditorConfig, null));
|
|
10
11
|
const Base = /*#__PURE__*/ memo(BaseExtension);
|
|
11
12
|
export { Base };
|
|
12
13
|
|
package/base/Base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base/Base.js","sources":["../../src/base/Base.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport { Menus } from \"./Base/Menus.js\";\nimport { RoutesConfig } from \"./Base/RoutesConfig.js\";\nimport { Tenant } from \"./Base/Tenant.js\";\nimport { UserMenu } from \"./Base/UserMenu.js\";\nimport { LexicalPreset } from \"./Base/LexicalPreset.js\";\nimport { DefaultFieldRenderers } from \"./Base/DefaultFieldRenderers.js\";\nimport { DefaultLayoutRenderers } from \"./Base/DefaultLayoutRenderers.js\";\n\nconst BaseExtension = () => {\n return (\n <>\n <Tenant />\n <Menus />\n <UserMenu />\n <RoutesConfig />\n <LexicalPreset />\n <DefaultFieldRenderers />\n <DefaultLayoutRenderers />\n </>\n );\n};\n\nexport const Base = memo(BaseExtension);\n"],"names":["BaseExtension","Tenant","Menus","UserMenu","RoutesConfig","LexicalPreset","DefaultFieldRenderers","DefaultLayoutRenderers","Base","memo"],"mappings":"
|
|
1
|
+
{"version":3,"file":"base/Base.js","sources":["../../src/base/Base.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport { Menus } from \"./Base/Menus.js\";\nimport { RoutesConfig } from \"./Base/RoutesConfig.js\";\nimport { Tenant } from \"./Base/Tenant.js\";\nimport { UserMenu } from \"./Base/UserMenu.js\";\nimport { LexicalPreset } from \"./Base/LexicalPreset.js\";\nimport { DefaultFieldRenderers } from \"./Base/DefaultFieldRenderers.js\";\nimport { DefaultLayoutRenderers } from \"./Base/DefaultLayoutRenderers.js\";\nimport { DefaultLexicalEditorConfig } from \"~/components/LexicalEditor/DefaultLexicalEditorConfig.js\";\n\nconst BaseExtension = () => {\n return (\n <>\n <Tenant />\n <Menus />\n <UserMenu />\n <RoutesConfig />\n <LexicalPreset />\n <DefaultFieldRenderers />\n <DefaultLayoutRenderers />\n <DefaultLexicalEditorConfig />\n </>\n );\n};\n\nexport const Base = memo(BaseExtension);\n"],"names":["BaseExtension","Tenant","Menus","UserMenu","RoutesConfig","LexicalPreset","DefaultFieldRenderers","DefaultLayoutRenderers","DefaultLexicalEditorConfig","Base","memo"],"mappings":";;;;;;;;;AAUA,MAAMA,gBAAgB,IACX,WAAP,GACI,wDACI,oBAACC,QAAMA,OAAAA,WAAAA,GACP,oBAACC,OAAKA,OAAAA,WAAAA,GACN,oBAACC,UAAQA,OAAAA,WAAAA,GACT,oBAACC,cAAYA,OAAAA,WAAAA,GACb,oBAACC,eAAaA,OAAAA,WAAAA,GACd,oBAACC,uBAAqBA,OAAAA,WAAAA,GACtB,oBAACC,wBAAsBA,OAAAA,WAAAA,GACvB,oBAACC,4BAA0BA;AAKhC,MAAMC,OAAO,WAAHA,GAAGC,KAAKV"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import react from "react";
|
|
2
|
-
import { SimpleLink, createProvider } from "@webiny/app";
|
|
2
|
+
import { SimpleLink, createProvider, useContainer } from "@webiny/app";
|
|
3
3
|
import { AdminUiProvider } from "@webiny/admin-ui";
|
|
4
4
|
import { compiler } from "markdown-to-jsx/react";
|
|
5
|
+
import { FileUrlFormatter } from "../../features/fileUrlFormatter/abstractions.js";
|
|
5
6
|
const options = {
|
|
6
7
|
overrides: {
|
|
7
8
|
a: {
|
|
@@ -15,9 +16,12 @@ const options = {
|
|
|
15
16
|
};
|
|
16
17
|
const markdownCompiler = (markdown)=>compiler(markdown, options);
|
|
17
18
|
const createUiProviders = ()=>createProvider((Component)=>function({ children }) {
|
|
19
|
+
const container = useContainer();
|
|
20
|
+
const fileUrlFormatter = container.resolve(FileUrlFormatter);
|
|
18
21
|
return /*#__PURE__*/ react.createElement(AdminUiProvider, {
|
|
19
22
|
linkComponent: SimpleLink,
|
|
20
|
-
markdownCompiler: markdownCompiler
|
|
23
|
+
markdownCompiler: markdownCompiler,
|
|
24
|
+
fileUrlFormatter: fileUrlFormatter
|
|
21
25
|
}, /*#__PURE__*/ react.createElement(Component, null, children));
|
|
22
26
|
});
|
|
23
27
|
export { createUiProviders };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base/providers/UiProviders.js","sources":["../../../src/base/providers/UiProviders.tsx"],"sourcesContent":["import React from \"react\";\nimport { createProvider, SimpleLink } from \"@webiny/app\";\nimport { AdminUiProvider } from \"@webiny/admin-ui\";\nimport { compiler } from \"markdown-to-jsx/react\";\n\nconst options = {\n overrides: {\n a: {\n component: ({ children, ...props }: any) => (\n <a {...props} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n )\n }\n }\n};\n\nconst markdownCompiler = (markdown: string) => {\n return compiler(markdown, options);\n};\n\ninterface UiProvidersProps {\n children: React.ReactNode;\n}\n\nexport const createUiProviders = () => {\n return createProvider(Component => {\n return function UiProviders({ children }: UiProvidersProps) {\n return (\n <AdminUiProvider
|
|
1
|
+
{"version":3,"file":"base/providers/UiProviders.js","sources":["../../../src/base/providers/UiProviders.tsx"],"sourcesContent":["import React from \"react\";\nimport { createProvider, SimpleLink, useContainer } from \"@webiny/app\";\nimport { AdminUiProvider } from \"@webiny/admin-ui\";\nimport { compiler } from \"markdown-to-jsx/react\";\nimport { FileUrlFormatter } from \"~/features/fileUrlFormatter/abstractions.js\";\n\nconst options = {\n overrides: {\n a: {\n component: ({ children, ...props }: any) => (\n <a {...props} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n )\n }\n }\n};\n\nconst markdownCompiler = (markdown: string) => {\n return compiler(markdown, options);\n};\n\ninterface UiProvidersProps {\n children: React.ReactNode;\n}\n\nexport const createUiProviders = () => {\n return createProvider(Component => {\n return function UiProviders({ children }: UiProvidersProps) {\n const container = useContainer();\n const fileUrlFormatter = container.resolve(FileUrlFormatter);\n\n return (\n <AdminUiProvider\n linkComponent={SimpleLink}\n markdownCompiler={markdownCompiler}\n fileUrlFormatter={fileUrlFormatter}\n >\n <Component>{children}</Component>\n </AdminUiProvider>\n );\n };\n });\n};\n"],"names":["options","children","props","markdownCompiler","markdown","compiler","createUiProviders","createProvider","Component","container","useContainer","fileUrlFormatter","FileUrlFormatter","AdminUiProvider","SimpleLink"],"mappings":";;;;;AAMA,MAAMA,UAAU;IACZ,WAAW;QACP,GAAG;YACC,WAAW,CAAC,EAAEC,QAAQ,EAAE,GAAGC,OAAY,iBACnC,oBAAC;oBAAG,GAAGA,KAAK;oBAAE,QAAO;oBAAS,KAAI;mBAC7BD;QAGb;IACJ;AACJ;AAEA,MAAME,mBAAmB,CAACC,WACfC,SAASD,UAAUJ;AAOvB,MAAMM,oBAAoB,IACtBC,eAAeC,CAAAA,YACX,SAAqB,EAAEP,QAAQ,EAAoB;YACtD,MAAMQ,YAAYC;YAClB,MAAMC,mBAAmBF,UAAU,OAAO,CAACG;YAE3C,OAAO,WAAP,GACI,oBAACC,iBAAeA;gBACZ,eAAeC;gBACf,kBAAkBX;gBAClB,kBAAkBQ;6BAElB,oBAACH,WAAAA,MAAWP;QAGxB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { BoldAction, BulletListAction, CodeHighlightAction, CodeHighlightPlugin, Divider, FontColorAction, FontColorPlugin, ImageAction, ImagesPlugin, ItalicAction, LexicalEditorConfig, LinkAction, LinkPlugin, ListPlugin, NumberedListAction, QuoteAction, QuotePlugin, TextAlignmentAction, TypographyAction, TypographyPlugin, UnderlineAction } from "@webiny/lexical-editor";
|
|
3
|
+
import { TypographyDropDown } from "./TypographyDropDown.js";
|
|
4
|
+
const { ToolbarElement: ToolbarElement, Plugin: Plugin } = LexicalEditorConfig;
|
|
5
|
+
const DefaultLexicalEditorConfig = ()=>/*#__PURE__*/ react.createElement(LexicalEditorConfig, {
|
|
6
|
+
priority: "primary"
|
|
7
|
+
}, /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
8
|
+
name: "fontColor",
|
|
9
|
+
element: /*#__PURE__*/ react.createElement(FontColorAction, null)
|
|
10
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
11
|
+
name: "typography",
|
|
12
|
+
element: /*#__PURE__*/ react.createElement(TypographyAction, null)
|
|
13
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
14
|
+
name: "textAlignment",
|
|
15
|
+
element: /*#__PURE__*/ react.createElement(TextAlignmentAction, null)
|
|
16
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
17
|
+
name: "divider1",
|
|
18
|
+
element: /*#__PURE__*/ react.createElement(Divider, null)
|
|
19
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
20
|
+
name: "boldAction",
|
|
21
|
+
element: /*#__PURE__*/ react.createElement(BoldAction, null)
|
|
22
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
23
|
+
name: "italic",
|
|
24
|
+
element: /*#__PURE__*/ react.createElement(ItalicAction, null)
|
|
25
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
26
|
+
name: "underline",
|
|
27
|
+
element: /*#__PURE__*/ react.createElement(UnderlineAction, null)
|
|
28
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
29
|
+
name: "codeHighlight",
|
|
30
|
+
element: /*#__PURE__*/ react.createElement(CodeHighlightAction, null)
|
|
31
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
32
|
+
name: "divider2",
|
|
33
|
+
element: /*#__PURE__*/ react.createElement(Divider, null)
|
|
34
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
35
|
+
name: "numberedList",
|
|
36
|
+
element: /*#__PURE__*/ react.createElement(NumberedListAction, null)
|
|
37
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
38
|
+
name: "bulletList",
|
|
39
|
+
element: /*#__PURE__*/ react.createElement(BulletListAction, null)
|
|
40
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
41
|
+
name: "divider",
|
|
42
|
+
element: /*#__PURE__*/ react.createElement(Divider, null)
|
|
43
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
44
|
+
name: "image",
|
|
45
|
+
element: /*#__PURE__*/ react.createElement(ImageAction, null)
|
|
46
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
47
|
+
name: "divider3",
|
|
48
|
+
element: /*#__PURE__*/ react.createElement(Divider, null)
|
|
49
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
50
|
+
name: "link",
|
|
51
|
+
element: /*#__PURE__*/ react.createElement(LinkAction, null)
|
|
52
|
+
}), /*#__PURE__*/ react.createElement(ToolbarElement, {
|
|
53
|
+
name: "quote",
|
|
54
|
+
element: /*#__PURE__*/ react.createElement(QuoteAction, null)
|
|
55
|
+
}), /*#__PURE__*/ react.createElement(Plugin, {
|
|
56
|
+
name: "fontColor",
|
|
57
|
+
element: /*#__PURE__*/ react.createElement(FontColorPlugin, null)
|
|
58
|
+
}), /*#__PURE__*/ react.createElement(Plugin, {
|
|
59
|
+
name: "list",
|
|
60
|
+
element: /*#__PURE__*/ react.createElement(ListPlugin, null)
|
|
61
|
+
}), /*#__PURE__*/ react.createElement(Plugin, {
|
|
62
|
+
name: "codeHighlight",
|
|
63
|
+
element: /*#__PURE__*/ react.createElement(CodeHighlightPlugin, null)
|
|
64
|
+
}), /*#__PURE__*/ react.createElement(Plugin, {
|
|
65
|
+
name: "typography",
|
|
66
|
+
element: /*#__PURE__*/ react.createElement(TypographyPlugin, null)
|
|
67
|
+
}), /*#__PURE__*/ react.createElement(Plugin, {
|
|
68
|
+
name: "link",
|
|
69
|
+
element: /*#__PURE__*/ react.createElement(LinkPlugin, null)
|
|
70
|
+
}), /*#__PURE__*/ react.createElement(Plugin, {
|
|
71
|
+
name: "images",
|
|
72
|
+
element: /*#__PURE__*/ react.createElement(ImagesPlugin, null)
|
|
73
|
+
}), /*#__PURE__*/ react.createElement(Plugin, {
|
|
74
|
+
name: "quote",
|
|
75
|
+
element: /*#__PURE__*/ react.createElement(QuotePlugin, null)
|
|
76
|
+
}), /*#__PURE__*/ react.createElement(TypographyAction.TypographyDropDown, {
|
|
77
|
+
element: /*#__PURE__*/ react.createElement(TypographyDropDown, null)
|
|
78
|
+
}));
|
|
79
|
+
export { DefaultLexicalEditorConfig };
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=DefaultLexicalEditorConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/LexicalEditor/DefaultLexicalEditorConfig.js","sources":["../../../src/components/LexicalEditor/DefaultLexicalEditorConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n TypographyAction,\n LexicalEditorConfig,\n FontColorAction,\n Divider,\n BoldAction,\n ItalicAction,\n UnderlineAction,\n CodeHighlightAction,\n NumberedListAction,\n BulletListAction,\n ImageAction,\n LinkAction,\n QuoteAction,\n ImagesPlugin,\n QuotePlugin,\n CodeHighlightPlugin,\n LinkPlugin,\n ListPlugin,\n TypographyPlugin,\n FontColorPlugin,\n TextAlignmentAction\n} from \"@webiny/lexical-editor\";\nimport { TypographyDropDown } from \"./TypographyDropDown.js\";\n\nconst { ToolbarElement, Plugin } = LexicalEditorConfig;\n\nexport const DefaultLexicalEditorConfig = () => {\n return (\n <LexicalEditorConfig priority={\"primary\"}>\n <ToolbarElement name=\"fontColor\" element={<FontColorAction />} />\n <ToolbarElement name=\"typography\" element={<TypographyAction />} />\n <ToolbarElement name=\"textAlignment\" element={<TextAlignmentAction />} />\n <ToolbarElement name=\"divider1\" element={<Divider />} />\n <ToolbarElement name=\"boldAction\" element={<BoldAction />} />\n <ToolbarElement name=\"italic\" element={<ItalicAction />} />\n <ToolbarElement name=\"underline\" element={<UnderlineAction />} />\n <ToolbarElement name=\"codeHighlight\" element={<CodeHighlightAction />} />\n <ToolbarElement name=\"divider2\" element={<Divider />} />\n <ToolbarElement name=\"numberedList\" element={<NumberedListAction />} />\n <ToolbarElement name=\"bulletList\" element={<BulletListAction />} />\n <ToolbarElement name=\"divider\" element={<Divider />} />\n <ToolbarElement name=\"image\" element={<ImageAction />} />\n <ToolbarElement name=\"divider3\" element={<Divider />} />\n <ToolbarElement name=\"link\" element={<LinkAction />} />\n <ToolbarElement name=\"quote\" element={<QuoteAction />} />\n <Plugin name={\"fontColor\"} element={<FontColorPlugin />} />\n <Plugin name={\"list\"} element={<ListPlugin />} />\n <Plugin name={\"codeHighlight\"} element={<CodeHighlightPlugin />} />\n <Plugin name={\"typography\"} element={<TypographyPlugin />} />\n <Plugin name={\"link\"} element={<LinkPlugin />} />\n <Plugin name={\"images\"} element={<ImagesPlugin />} />\n <Plugin name={\"quote\"} element={<QuotePlugin />} />\n <TypographyAction.TypographyDropDown element={<TypographyDropDown />} />\n </LexicalEditorConfig>\n );\n};\n"],"names":["ToolbarElement","Plugin","LexicalEditorConfig","DefaultLexicalEditorConfig","FontColorAction","TypographyAction","TextAlignmentAction","Divider","BoldAction","ItalicAction","UnderlineAction","CodeHighlightAction","NumberedListAction","BulletListAction","ImageAction","LinkAction","QuoteAction","FontColorPlugin","ListPlugin","CodeHighlightPlugin","TypographyPlugin","LinkPlugin","ImagesPlugin","QuotePlugin","TypographyDropDown"],"mappings":";;;AA0BA,MAAM,EAAEA,gBAAAA,cAAc,EAAEC,QAAAA,MAAM,EAAE,GAAGC;AAE5B,MAAMC,6BAA6B,IAC/B,WAAP,GACI,oBAACD,qBAAmBA;QAAC,UAAU;qBAC3B,oBAACF,gBAAcA;QAAC,MAAK;QAAY,uBAAS,oBAACI,iBAAeA;sBAC1D,oBAACJ,gBAAcA;QAAC,MAAK;QAAa,uBAAS,oBAACK,kBAAgBA;sBAC5D,oBAACL,gBAAcA;QAAC,MAAK;QAAgB,uBAAS,oBAACM,qBAAmBA;sBAClE,oBAACN,gBAAcA;QAAC,MAAK;QAAW,uBAAS,oBAACO,SAAOA;sBACjD,oBAACP,gBAAcA;QAAC,MAAK;QAAa,uBAAS,oBAACQ,YAAUA;sBACtD,oBAACR,gBAAcA;QAAC,MAAK;QAAS,uBAAS,oBAACS,cAAYA;sBACpD,oBAACT,gBAAcA;QAAC,MAAK;QAAY,uBAAS,oBAACU,iBAAeA;sBAC1D,oBAACV,gBAAcA;QAAC,MAAK;QAAgB,uBAAS,oBAACW,qBAAmBA;sBAClE,oBAACX,gBAAcA;QAAC,MAAK;QAAW,uBAAS,oBAACO,SAAOA;sBACjD,oBAACP,gBAAcA;QAAC,MAAK;QAAe,uBAAS,oBAACY,oBAAkBA;sBAChE,oBAACZ,gBAAcA;QAAC,MAAK;QAAa,uBAAS,oBAACa,kBAAgBA;sBAC5D,oBAACb,gBAAcA;QAAC,MAAK;QAAU,uBAAS,oBAACO,SAAOA;sBAChD,oBAACP,gBAAcA;QAAC,MAAK;QAAQ,uBAAS,oBAACc,aAAWA;sBAClD,oBAACd,gBAAcA;QAAC,MAAK;QAAW,uBAAS,oBAACO,SAAOA;sBACjD,oBAACP,gBAAcA;QAAC,MAAK;QAAO,uBAAS,oBAACe,YAAUA;sBAChD,oBAACf,gBAAcA;QAAC,MAAK;QAAQ,uBAAS,oBAACgB,aAAWA;sBAClD,oBAACf,QAAMA;QAAC,MAAM;QAAa,uBAAS,oBAACgB,iBAAeA;sBACpD,oBAAChB,QAAMA;QAAC,MAAM;QAAQ,uBAAS,oBAACiB,YAAUA;sBAC1C,oBAACjB,QAAMA;QAAC,MAAM;QAAiB,uBAAS,oBAACkB,qBAAmBA;sBAC5D,oBAAClB,QAAMA;QAAC,MAAM;QAAc,uBAAS,oBAACmB,kBAAgBA;sBACtD,oBAACnB,QAAMA;QAAC,MAAM;QAAQ,uBAAS,oBAACoB,YAAUA;sBAC1C,oBAACpB,QAAMA;QAAC,MAAM;QAAU,uBAAS,oBAACqB,cAAYA;sBAC9C,oBAACrB,QAAMA;QAAC,MAAM;QAAS,uBAAS,oBAACsB,aAAWA;sBAC5C,oBAAClB,iBAAiB,kBAAkB;QAAC,uBAAS,oBAACmB,oBAAkBA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import react, { useEffect, useState } from "react";
|
|
2
|
+
import { $getNearestNodeOfType } from "@lexical/utils";
|
|
3
|
+
import { DropDown, DropDownItem, useCurrentElement, useCurrentSelection, useTypographyAction } from "@webiny/lexical-editor";
|
|
4
|
+
import { $isHeadingNode, $isListNode, $isParagraphNode, $isQuoteNode, ListNode } from "@webiny/lexical-nodes";
|
|
5
|
+
import { useAdminConfig } from "../../config/AdminConfig.js";
|
|
6
|
+
const TypographyDropDown = ()=>{
|
|
7
|
+
const { value, applyTypography } = useTypographyAction();
|
|
8
|
+
const { lexicalTheme } = useAdminConfig();
|
|
9
|
+
const [styles, setStyles] = useState([]);
|
|
10
|
+
const { element } = useCurrentElement();
|
|
11
|
+
const { rangeSelection } = useCurrentSelection();
|
|
12
|
+
const getAllTextStyles = ()=>{
|
|
13
|
+
const headingsStyles = lexicalTheme.typography.headings || [];
|
|
14
|
+
const paragraphStyles = lexicalTheme.typography.paragraphs || [];
|
|
15
|
+
return [
|
|
16
|
+
...headingsStyles,
|
|
17
|
+
...paragraphStyles
|
|
18
|
+
];
|
|
19
|
+
};
|
|
20
|
+
const getListStyles = (tag)=>{
|
|
21
|
+
const listStyles = lexicalTheme.typography.lists?.filter((x)=>x.tag === tag) || [];
|
|
22
|
+
if (listStyles.length > 0) return listStyles;
|
|
23
|
+
const fallbackTag = "ul" === tag ? "ol" : "ul";
|
|
24
|
+
return lexicalTheme.typography.lists?.filter((x)=>x.tag === fallbackTag) || [];
|
|
25
|
+
};
|
|
26
|
+
useEffect(()=>{
|
|
27
|
+
if (!element || !rangeSelection) return;
|
|
28
|
+
if ($isParagraphNode(element) || $isHeadingNode(element)) setStyles(getAllTextStyles());
|
|
29
|
+
else if ($isListNode(element)) {
|
|
30
|
+
let type;
|
|
31
|
+
try {
|
|
32
|
+
const anchorNode = rangeSelection.anchor.getNode();
|
|
33
|
+
const parentList = $getNearestNodeOfType(anchorNode, ListNode);
|
|
34
|
+
if (parentList) type = parentList.getListType();
|
|
35
|
+
} catch {
|
|
36
|
+
type = element.getListType();
|
|
37
|
+
}
|
|
38
|
+
"bullet" === type ? setStyles(getListStyles("ul")) : setStyles(getListStyles("ol"));
|
|
39
|
+
} else $isQuoteNode(element) ? setStyles(lexicalTheme.typography.quotes || []) : setStyles([]);
|
|
40
|
+
}, [
|
|
41
|
+
element
|
|
42
|
+
]);
|
|
43
|
+
return /*#__PURE__*/ react.createElement(react.Fragment, null, styles?.length ? /*#__PURE__*/ react.createElement(DropDown, {
|
|
44
|
+
buttonClassName: "toolbar-item typography-dropdown",
|
|
45
|
+
buttonAriaLabel: "Typography formatting options",
|
|
46
|
+
buttonLabel: value?.label || "Typography",
|
|
47
|
+
stopCloseOnClickSelf: true,
|
|
48
|
+
disabled: false,
|
|
49
|
+
showScroll: true
|
|
50
|
+
}, styles?.map((option)=>/*#__PURE__*/ react.createElement(DropDownItem, {
|
|
51
|
+
className: `item typography-item ${value?.id === option.id ? "active dropdown-item-active" : ""}`,
|
|
52
|
+
onClick: ()=>applyTypography(option),
|
|
53
|
+
key: option.id
|
|
54
|
+
}, /*#__PURE__*/ react.createElement("span", {
|
|
55
|
+
className: "text"
|
|
56
|
+
}, option.label)))) : null);
|
|
57
|
+
};
|
|
58
|
+
export { TypographyDropDown };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=TypographyDropDown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/LexicalEditor/TypographyDropDown.js","sources":["../../../src/components/LexicalEditor/TypographyDropDown.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { $getNearestNodeOfType } from \"@lexical/utils\";\nimport {\n DropDown,\n DropDownItem,\n useCurrentSelection,\n useCurrentElement,\n useTypographyAction\n} from \"@webiny/lexical-editor\";\nimport {\n $isHeadingNode,\n $isParagraphNode,\n $isQuoteNode,\n $isListNode,\n ListNode\n} from \"@webiny/lexical-nodes\";\nimport { useAdminConfig } from \"~/config/AdminConfig.js\";\n\nexport type TypographyStyle = {\n id: string;\n label: string;\n tag: string;\n className: string;\n};\n\nexport const TypographyDropDown = () => {\n const { value, applyTypography } = useTypographyAction();\n const { lexicalTheme } = useAdminConfig();\n\n const [styles, setStyles] = useState<TypographyStyle[]>([]);\n const { element } = useCurrentElement();\n const { rangeSelection } = useCurrentSelection();\n\n const getAllTextStyles = (): TypographyStyle[] => {\n const headingsStyles = lexicalTheme.typography.headings || [];\n const paragraphStyles = lexicalTheme.typography.paragraphs || [];\n\n return [...headingsStyles, ...paragraphStyles];\n };\n\n const getListStyles = (tag: string): TypographyStyle[] => {\n const listStyles = lexicalTheme.typography.lists?.filter(x => x.tag === tag) || [];\n if (listStyles.length > 0) {\n return listStyles;\n }\n\n const fallbackTag = tag === \"ul\" ? \"ol\" : \"ul\";\n return lexicalTheme.typography.lists?.filter(x => x.tag === fallbackTag) || [];\n };\n\n useEffect(() => {\n if (!element || !rangeSelection) {\n return;\n }\n\n if ($isParagraphNode(element) || $isHeadingNode(element)) {\n setStyles(getAllTextStyles());\n } else if ($isListNode(element)) {\n let type;\n try {\n const anchorNode = rangeSelection.anchor.getNode();\n const parentList = $getNearestNodeOfType<ListNode>(anchorNode, ListNode);\n if (parentList) {\n type = parentList.getListType();\n }\n } catch {\n type = element.getListType();\n }\n\n if (type === \"bullet\") {\n setStyles(getListStyles(\"ul\"));\n } else {\n setStyles(getListStyles(\"ol\"));\n }\n } else if ($isQuoteNode(element)) {\n setStyles(lexicalTheme.typography.quotes || []);\n } else {\n setStyles([]);\n }\n }, [element]);\n\n return (\n <>\n {!!styles?.length ? (\n <DropDown\n buttonClassName=\"toolbar-item typography-dropdown\"\n buttonAriaLabel={\"Typography formatting options\"}\n buttonLabel={value?.label || \"Typography\"}\n stopCloseOnClickSelf={true}\n disabled={false}\n showScroll={true}\n >\n {styles?.map(option => (\n <DropDownItem\n className={`item typography-item ${\n value?.id === option.id ? \"active dropdown-item-active\" : \"\"\n }`}\n onClick={() => applyTypography(option)}\n key={option.id}\n >\n <span className=\"text\">{option.label}</span>\n </DropDownItem>\n ))}\n </DropDown>\n ) : null}\n </>\n );\n};\n"],"names":["TypographyDropDown","value","applyTypography","useTypographyAction","lexicalTheme","useAdminConfig","styles","setStyles","useState","element","useCurrentElement","rangeSelection","useCurrentSelection","getAllTextStyles","headingsStyles","paragraphStyles","getListStyles","tag","listStyles","x","fallbackTag","useEffect","$isParagraphNode","$isHeadingNode","$isListNode","type","anchorNode","parentList","$getNearestNodeOfType","ListNode","$isQuoteNode","DropDown","option","DropDownItem"],"mappings":";;;;;AAyBO,MAAMA,qBAAqB;IAC9B,MAAM,EAAEC,KAAK,EAAEC,eAAe,EAAE,GAAGC;IACnC,MAAM,EAAEC,YAAY,EAAE,GAAGC;IAEzB,MAAM,CAACC,QAAQC,UAAU,GAAGC,SAA4B,EAAE;IAC1D,MAAM,EAAEC,OAAO,EAAE,GAAGC;IACpB,MAAM,EAAEC,cAAc,EAAE,GAAGC;IAE3B,MAAMC,mBAAmB;QACrB,MAAMC,iBAAiBV,aAAa,UAAU,CAAC,QAAQ,IAAI,EAAE;QAC7D,MAAMW,kBAAkBX,aAAa,UAAU,CAAC,UAAU,IAAI,EAAE;QAEhE,OAAO;eAAIU;eAAmBC;SAAgB;IAClD;IAEA,MAAMC,gBAAgB,CAACC;QACnB,MAAMC,aAAad,aAAa,UAAU,CAAC,KAAK,EAAE,OAAOe,CAAAA,IAAKA,EAAE,GAAG,KAAKF,QAAQ,EAAE;QAClF,IAAIC,WAAW,MAAM,GAAG,GACpB,OAAOA;QAGX,MAAME,cAAcH,AAAQ,SAARA,MAAe,OAAO;QAC1C,OAAOb,aAAa,UAAU,CAAC,KAAK,EAAE,OAAOe,CAAAA,IAAKA,EAAE,GAAG,KAAKC,gBAAgB,EAAE;IAClF;IAEAC,UAAU;QACN,IAAI,CAACZ,WAAW,CAACE,gBACb;QAGJ,IAAIW,iBAAiBb,YAAYc,eAAed,UAC5CF,UAAUM;aACP,IAAIW,YAAYf,UAAU;YAC7B,IAAIgB;YACJ,IAAI;gBACA,MAAMC,aAAaf,eAAe,MAAM,CAAC,OAAO;gBAChD,MAAMgB,aAAaC,sBAAgCF,YAAYG;gBAC/D,IAAIF,YACAF,OAAOE,WAAW,WAAW;YAErC,EAAE,OAAM;gBACJF,OAAOhB,QAAQ,WAAW;YAC9B;YAEa,aAATgB,OACAlB,UAAUS,cAAc,SAExBT,UAAUS,cAAc;QAEhC,OAAWc,aAAarB,WACpBF,UAAUH,aAAa,UAAU,CAAC,MAAM,IAAI,EAAE,IAE9CG,UAAU,EAAE;IAEpB,GAAG;QAACE;KAAQ;IAEZ,OAAO,WAAP,GACI,0CACK,AAAEH,QAAQ,SAAS,WAAT,GACP,oBAACyB,UAAQA;QACL,iBAAgB;QAChB,iBAAiB;QACjB,aAAa9B,OAAO,SAAS;QAC7B,sBAAsB;QACtB,UAAU;QACV,YAAY;OAEXK,QAAQ,IAAI0B,CAAAA,SAAAA,WAAAA,GACT,oBAACC,cAAYA;YACT,WAAW,CAAC,qBAAqB,EAC7BhC,OAAO,OAAO+B,OAAO,EAAE,GAAG,gCAAgC,IAC5D;YACF,SAAS,IAAM9B,gBAAgB8B;YAC/B,KAAKA,OAAO,EAAE;yBAEd,oBAAC;YAAK,WAAU;WAAQA,OAAO,KAAK,OAIhD;AAGhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { LexicalEditor } from "../../../components/LexicalEditor/LexicalEditor.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { LexicalEditor } from "../../../components/LexicalEditor/LexicalEditor.js";
|
package/exports/admin/ui.d.ts
CHANGED
|
@@ -4,5 +4,4 @@ export { useHotkeys } from "../../hooks/useHotkeys.js";
|
|
|
4
4
|
export { useDialogs } from "../../components/Dialogs/useDialogs.js";
|
|
5
5
|
export { Logo } from "../../base/ui/Logo.js";
|
|
6
6
|
export { TenantSelector } from "../../base/ui/TenantSelector.js";
|
|
7
|
-
export { LexicalEditor } from "../../components/LexicalEditor/LexicalEditor.js";
|
|
8
7
|
export { AdminLayout } from "../../components/AdminLayout.js";
|
package/exports/admin/ui.js
CHANGED
|
@@ -3,5 +3,4 @@ export { useHotkeys } from "../../hooks/useHotkeys.js";
|
|
|
3
3
|
export { useDialogs } from "../../components/Dialogs/useDialogs.js";
|
|
4
4
|
export { Logo } from "../../base/ui/Logo.js";
|
|
5
5
|
export { TenantSelector } from "../../base/ui/TenantSelector.js";
|
|
6
|
-
export { LexicalEditor } from "../../components/LexicalEditor/LexicalEditor.js";
|
|
7
6
|
export { AdminLayout } from "../../components/AdminLayout.js";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FileUrlFormatter as IFileUrlFormatter, FileUrlParams } from "@webiny/admin-ui";
|
|
2
|
+
export declare const FileUrlFormatter: import("@webiny/di").Abstraction<IFileUrlFormatter>;
|
|
3
|
+
export declare namespace FileUrlFormatter {
|
|
4
|
+
type Interface = IFileUrlFormatter;
|
|
5
|
+
type Params = FileUrlParams;
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/fileUrlFormatter/abstractions.js","sources":["../../../src/features/fileUrlFormatter/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { FileUrlFormatter as IFileUrlFormatter, FileUrlParams } from \"@webiny/admin-ui\";\n\nexport const FileUrlFormatter = createAbstraction<IFileUrlFormatter>(\"FileUrlFormatter\");\n\nexport namespace FileUrlFormatter {\n export type Interface = IFileUrlFormatter;\n export type Params = FileUrlParams;\n}\n"],"names":["FileUrlFormatter","createAbstraction"],"mappings":";AAGO,MAAMA,mBAAmBC,kBAAqC"}
|
|
@@ -187,7 +187,8 @@ class FieldRenderersDemoPresenter {
|
|
|
187
187
|
}));
|
|
188
188
|
}),
|
|
189
189
|
fileImage: fields.file().label("Image (full metadata)").description("Stores the full file object (id, name, size, src, etc.)"),
|
|
190
|
-
fileUrl: fields.fileUrl().label("Image URL").description("Stores only the file URL as a string")
|
|
190
|
+
fileUrl: fields.fileUrl().label("Image URL").description("Stores only the file URL as a string"),
|
|
191
|
+
richText: fields.lexical().label("Rich Text").description("Lexical rich text editor")
|
|
191
192
|
}),
|
|
192
193
|
layout: (layout)=>[
|
|
193
194
|
layout.tabs("mainTabs").tab("text", (tab)=>{
|
|
@@ -258,6 +259,10 @@ class FieldRenderersDemoPresenter {
|
|
|
258
259
|
tab.label("Files").layout((l)=>[
|
|
259
260
|
l.row("fileImage", "fileUrl")
|
|
260
261
|
]);
|
|
262
|
+
}).tab("lexical", (tab)=>{
|
|
263
|
+
tab.label("Lexical").layout((l)=>[
|
|
264
|
+
l.row("richText")
|
|
265
|
+
]);
|
|
261
266
|
})
|
|
262
267
|
]
|
|
263
268
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/formModel/demo/FieldRenderersDemoPresenter.js","sources":["../../../../src/features/formModel/demo/FieldRenderersDemoPresenter.ts"],"sourcesContent":["import { makeAutoObservable, toJS } from \"mobx\";\nimport type { IFormModel, IFormModelFactory, IFormVM, IFormError } from \"../abstractions.js\";\n\nexport interface FieldRenderersDemoVM {\n form: IFormVM;\n data: Record<string, unknown>;\n lastSubmitted: Record<string, unknown> | null;\n isSubmitting: boolean;\n formErrors: IFormError[];\n}\n\nexport class FieldRenderersDemoPresenter {\n private form: IFormModel;\n private lastSubmitted: Record<string, unknown> | null = null;\n private isSubmitting = false;\n\n constructor(formFactory: IFormModelFactory) {\n this.form = formFactory.create({\n fields: fields => ({\n // --- Text ---\n textInput: fields\n .text()\n .label(\"Text Input\")\n .placeholder(\"Type here...\")\n .required(\"Text input is required\")\n .description(\"Standard text input\")\n .help(\"Enter any text value\")\n .note(\"Max 255 characters\"),\n textInputs: fields\n .text()\n .list()\n .label(\"Text Inputs\")\n .renderer(\"textInputs\", { addItemLabel: \"Add text\" })\n .description(\"Add multiple text values\")\n .help(\"Each value is stored separately\")\n .note(\"Press Enter to add quickly\"),\n tags: fields\n .text()\n .list()\n .label(\"Tags\")\n .renderer(\"tags\")\n .placeholder(\"Add values\")\n .defaultValue([])\n .description(\"Comma-separated tags\")\n .help(\"Type and press Enter to add a tag\")\n .note(\"Duplicates are ignored\"),\n textarea: fields\n .text()\n .label(\"Textarea\")\n .renderer(\"textarea\", { rows: 4 })\n .description(\"Multi-line text area\")\n .help(\"Supports plain text only\")\n .note(\"Resizable vertically\"),\n textareas: fields\n .text()\n .list()\n .label(\"Descriptions\")\n .renderer(\"textareas\", { addItemLabel: \"Add description\" })\n .description(\"Multiple long text values\")\n .help(\"Each textarea is independent\")\n .note(\"Click add to append a new block\"),\n\n // --- Number ---\n numberInput: fields\n .number()\n .label(\"Number\")\n .placeholder(\"0\")\n .required(\"Number is required\")\n .description(\"Single numeric value\")\n .help(\"Accepts integers and decimals\")\n .note(\"Use dot as decimal separator\"),\n numberInputs: fields\n .number()\n .list()\n .label(\"Number Inputs\")\n .renderer(\"numberInputs\", { addItemLabel: \"Add number\" })\n .description(\"Multiple numeric values\")\n .help(\"Each input accepts a number\")\n .note(\"Empty values are stored as empty strings\"),\n numberOptions: fields\n .number()\n .list()\n .label(\"Number Options\")\n .options([\n { label: \"Tier 1\", value: 100 },\n { label: \"Tier 2\", value: 200 }\n ])\n .description(\"Multiple numeric values\")\n .help(\"Each input accepts a number\")\n .note(\"Empty values are stored as empty strings\"),\n\n // --- Boolean ---\n boolSwitch: fields\n .boolean()\n .label(\"Boolean Switch\")\n .description(\"Toggle on/off\")\n .help(\"Click to toggle state\")\n .note(\"Default is unchecked\"),\n\n // --- Predefined Values ---\n dropdown: fields\n .text()\n .label(\"Dropdown\")\n .placeholder(\"Pick one\")\n .required(\"Dropdown selection is required\")\n .description(\"Single-select dropdown\")\n .help(\"Choose exactly one option\")\n .note(\"Required for form submission\")\n .options([\n { label: \"Option A\", value: \"a\" },\n { label: \"Option B\", value: \"b\" },\n { label: \"Option C\", value: \"c\" }\n ]),\n radioButtons: fields\n .text()\n .label(\"Radio Buttons\")\n .options([\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" }\n ])\n .renderer(\"radioButtons\")\n .description(\"Pick a size variant\")\n .help(\"Only one option can be selected\")\n .note(\"Selection is mutually exclusive\"),\n checkboxes: fields\n .text()\n .list()\n .label(\"Checkboxes\")\n .options([\n { label: \"Read\", value: \"read\" },\n { label: \"Write\", value: \"write\" },\n { label: \"Admin\", value: \"admin\" }\n ])\n .renderer(\"checkboxes\")\n .description(\"Multi-select permissions\")\n .help(\"Check all that apply\")\n .note(\"At least one is recommended\"),\n\n // --- Date/Time ---\n dateOnly: fields\n .datetime()\n .required()\n .dateOnly()\n .label(\"Date Only\")\n .description(\"Pick a calendar date\")\n .note(\"Value: YYYY-MM-DD\"),\n timeOnly: fields\n .datetime()\n .required()\n .timeOnly()\n .label(\"Time Only\")\n .description(\"Time without a date\")\n .note(\"24-hour format\"),\n dateTime: fields\n .datetime()\n .required()\n .withoutTimezone()\n .label(\"Date & Time\")\n .description(\"Date with time of day\")\n .note(\"Seconds default to :00\"),\n dateTimeTz: fields\n .datetime()\n .required()\n .withTimezone()\n .label(\"Date Time + Timezone\")\n .description(\"Full date, time, and timezone\")\n .note(\"Timezone defaults to your local zone\"),\n monthOnly: fields\n .datetime()\n .required()\n .monthOnly()\n .label(\"Month\")\n .description(\"Pick a month and year\")\n .note(\"Value: YYYY-MM\"),\n weekOnly: fields\n .datetime()\n .required()\n .weekOnly({ startsOn: 1 })\n .label(\"Week\")\n .description(\"Pick an ISO week\")\n .note(\"Value: YYYY-Www\"),\n yearOnly: fields\n .datetime()\n .required()\n .yearOnly({ range: [2020, 2035] })\n .label(\"Year\")\n .description(\"Pick a year\")\n .note(\"Value: number\"),\n dateRange: fields\n .datetime()\n .required()\n .dateRange()\n .label(\"Date Range\")\n .description(\"Pick a start and end date\")\n .note(\"Value: { from, to }\"),\n multipleDates: fields\n .datetime()\n .required()\n .multipleDates()\n .label(\"Multiple Dates\")\n .description(\"Select multiple dates\")\n .note(\"Value: string[]\"),\n multipleMonths: fields\n .datetime()\n .required()\n .multipleMonths()\n .label(\"Multiple Months\")\n .description(\"Select multiple months\")\n .note(\"Value: string[]\"),\n multipleYears: fields\n .datetime()\n .required()\n .multipleYears({ range: [2020, 2035] })\n .label(\"Multiple Years\")\n .description(\"Select multiple years\")\n .note(\"Value: number[]\"),\n dateTimeList: fields\n .datetime()\n .required()\n .withTimezone()\n .list()\n .label(\"Dates with TZ (multi)\")\n .description(\"Multiple date entries\")\n .note(\"Each date is independent\"),\n\n // --- Hidden ---\n hiddenField: fields\n .text()\n .hidden()\n .defaultValue(\"secret-value\")\n .description(\"Not visible in the UI\")\n .help(\"Carried in form data silently\")\n .note(\"Value is preset\"),\n\n // --- Key-Value Tags ---\n metaTags: fields\n .object()\n .list()\n .label(\"Meta Tags\")\n .description(\"Add SEO tags\")\n .renderer(\"keyValueTags\", { addItemLabel: \"Add tag\" })\n .fields(f => ({\n name: f.text().placeholder(\"Name\"),\n content: f.text().placeholder(\"Content\")\n })),\n\n // --- Conditional Visibility / Disabled ---\n enableFeature: fields\n .boolean()\n .label(\"Enable Feature\")\n .description(\"Toggle this to show or hide the feature fields below\"),\n featureName: fields\n .text()\n .label(\"Feature Name\")\n .placeholder(\"Name your feature...\")\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n }\n ]),\n featureMode: fields\n .text()\n .label(\"Feature Mode\")\n .options([\n { label: \"Simple\", value: \"simple\" },\n { label: \"Advanced\", value: \"advanced\" }\n ])\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n }\n ]),\n advancedConfig: fields\n .text()\n .label(\"Advanced Config\")\n .placeholder(\"JSON config...\")\n .renderer(\"textarea\", { rows: 3 })\n .description(\"Only editable in advanced mode\")\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n },\n {\n type: \"condition\",\n target: \"featureMode\",\n operator: \"neq\",\n value: \"advanced\",\n action: \"disable\"\n }\n ]),\n\n // --- Dynamic Zone (single template) ---\n contentBlock: fields\n .object()\n .label(\"Content Block\")\n .template(\"hero\", t => {\n t.label(\"Hero Banner\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n heading: f.text().label(\"Heading\").required(\"Required\"),\n image: f.text().label(\"Image URL\")\n }));\n })\n .template(\"text\", t => {\n t.label(\"Rich Text\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n body: f.text().label(\"Body\").renderer(\"textarea\")\n }));\n }),\n\n // --- Dynamic Zone (multi-value template list) ---\n sections: fields\n .object()\n .list()\n .label(\"Page Sections\")\n .renderer(\"dynamicZone\", { container: false })\n .template(\"hero\", t => {\n t.label(\"Hero Banner\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\"),\n uuid: f\n .text()\n .label(\"UUID\")\n .defaultValue(() => Date.now())\n .cloneValue(value => `${value}/${Date.now()}`)\n }));\n })\n .template(\"cta\", t => {\n t.label(\"Call To Action\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n label: f.text().label(\"Button Label\"),\n url: f.text().label(\"URL\")\n }));\n }),\n\n // --- Files ---\n fileImage: fields\n .file()\n .label(\"Image (full metadata)\")\n .description(\"Stores the full file object (id, name, size, src, etc.)\"),\n fileUrl: fields\n .fileUrl()\n .label(\"Image URL\")\n .description(\"Stores only the file URL as a string\")\n }),\n layout: layout => [\n layout\n .tabs(\"mainTabs\")\n .tab(\"text\", tab => {\n tab.label(\"Text\").layout(l => [\n l.row(\"textInput\"),\n l.row(\"textInputs\"),\n l.row(\"tags\"),\n l.row(\"textarea\"),\n l.row(\"textareas\"),\n l.row(\"metaTags\")\n ]);\n })\n .tab(\"numbers\", tab => {\n tab.label(\"Numbers & Boolean\").layout(l => [\n l.row(\"numberInput\"),\n l.row(\"numberInputs\"),\n l.row(\"numberOptions\"),\n l.separator(),\n l.row(\"boolSwitch\")\n ]);\n })\n .tab(\"selects\", tab => {\n tab.label(\"Selects\").layout(l => [\n l.row(\"dropdown\", \"radioButtons\"),\n l.row(\"checkboxes\")\n ]);\n })\n .tab(\"datetime\", tab => {\n tab.label(\"Date / Time\").layout(l => [\n l.row(\"dateOnly\", \"timeOnly\"),\n l.row(\"dateTime\"),\n l.row(\"dateTimeTz\"),\n l.separator(),\n l.row(\"monthOnly\", \"weekOnly\"),\n l.row(\"yearOnly\"),\n l.separator(),\n l.row(\"dateRange\"),\n l.row(\"multipleDates\"),\n l.row(\"multipleMonths\", \"multipleYears\"),\n l.separator(),\n l.row(\"dateTimeList\")\n ]);\n })\n .tab(\"rules\", tab => {\n tab.label(\"Rules\").layout(l => [\n l.row(\"enableFeature\"),\n l.row(\"featureName\", \"featureMode\"),\n l.row(\"advancedConfig\")\n ]);\n })\n .tab(\"dynamic\", tab => {\n tab.label(\"Dynamic Zones\").layout(l => [\n l.object(\"contentBlock\", {\n hero: inner => [inner.row(\"heading\"), inner.row(\"image\")],\n text: inner => [inner.row(\"body\")]\n }),\n l.object(\"sections\", {\n hero: inner => [\n inner.row(\"heading\", \"subheading\"),\n inner.row(\"uuid\")\n ],\n cta: inner => [inner.row(\"label\", \"url\")]\n })\n ]);\n })\n .tab(\"files\", tab => {\n tab.label(\"Files\").layout(l => [l.row(\"fileImage\", \"fileUrl\")]);\n })\n ]\n });\n\n makeAutoObservable(this);\n }\n\n get vm(): FieldRenderersDemoVM {\n return {\n form: this.form.vm,\n data: toJS(this.form.getData()),\n lastSubmitted: this.lastSubmitted,\n isSubmitting: this.isSubmitting,\n formErrors: this.form.errors\n };\n }\n\n focusField(path: string): void {\n this.form.focusField(path);\n }\n\n async submit(): Promise<void> {\n this.isSubmitting = true;\n try {\n const result = await this.form.submit<Record<string, unknown>>();\n if (result !== false) {\n this.lastSubmitted = toJS(result);\n }\n } finally {\n this.isSubmitting = false;\n }\n }\n\n reset(): void {\n this.form.reset();\n this.lastSubmitted = null;\n }\n}\n"],"names":["FieldRenderersDemoPresenter","formFactory","fields","f","t","Date","value","layout","tab","l","inner","makeAutoObservable","toJS","path","result"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"features/formModel/demo/FieldRenderersDemoPresenter.js","sources":["../../../../src/features/formModel/demo/FieldRenderersDemoPresenter.ts"],"sourcesContent":["import { makeAutoObservable, toJS } from \"mobx\";\nimport type { IFormModel, IFormModelFactory, IFormVM, IFormError } from \"../abstractions.js\";\n\nexport interface FieldRenderersDemoVM {\n form: IFormVM;\n data: Record<string, unknown>;\n lastSubmitted: Record<string, unknown> | null;\n isSubmitting: boolean;\n formErrors: IFormError[];\n}\n\nexport class FieldRenderersDemoPresenter {\n private form: IFormModel;\n private lastSubmitted: Record<string, unknown> | null = null;\n private isSubmitting = false;\n\n constructor(formFactory: IFormModelFactory) {\n this.form = formFactory.create({\n fields: fields => ({\n // --- Text ---\n textInput: fields\n .text()\n .label(\"Text Input\")\n .placeholder(\"Type here...\")\n .required(\"Text input is required\")\n .description(\"Standard text input\")\n .help(\"Enter any text value\")\n .note(\"Max 255 characters\"),\n textInputs: fields\n .text()\n .list()\n .label(\"Text Inputs\")\n .renderer(\"textInputs\", { addItemLabel: \"Add text\" })\n .description(\"Add multiple text values\")\n .help(\"Each value is stored separately\")\n .note(\"Press Enter to add quickly\"),\n tags: fields\n .text()\n .list()\n .label(\"Tags\")\n .renderer(\"tags\")\n .placeholder(\"Add values\")\n .defaultValue([])\n .description(\"Comma-separated tags\")\n .help(\"Type and press Enter to add a tag\")\n .note(\"Duplicates are ignored\"),\n textarea: fields\n .text()\n .label(\"Textarea\")\n .renderer(\"textarea\", { rows: 4 })\n .description(\"Multi-line text area\")\n .help(\"Supports plain text only\")\n .note(\"Resizable vertically\"),\n textareas: fields\n .text()\n .list()\n .label(\"Descriptions\")\n .renderer(\"textareas\", { addItemLabel: \"Add description\" })\n .description(\"Multiple long text values\")\n .help(\"Each textarea is independent\")\n .note(\"Click add to append a new block\"),\n\n // --- Number ---\n numberInput: fields\n .number()\n .label(\"Number\")\n .placeholder(\"0\")\n .required(\"Number is required\")\n .description(\"Single numeric value\")\n .help(\"Accepts integers and decimals\")\n .note(\"Use dot as decimal separator\"),\n numberInputs: fields\n .number()\n .list()\n .label(\"Number Inputs\")\n .renderer(\"numberInputs\", { addItemLabel: \"Add number\" })\n .description(\"Multiple numeric values\")\n .help(\"Each input accepts a number\")\n .note(\"Empty values are stored as empty strings\"),\n numberOptions: fields\n .number()\n .list()\n .label(\"Number Options\")\n .options([\n { label: \"Tier 1\", value: 100 },\n { label: \"Tier 2\", value: 200 }\n ])\n .description(\"Multiple numeric values\")\n .help(\"Each input accepts a number\")\n .note(\"Empty values are stored as empty strings\"),\n\n // --- Boolean ---\n boolSwitch: fields\n .boolean()\n .label(\"Boolean Switch\")\n .description(\"Toggle on/off\")\n .help(\"Click to toggle state\")\n .note(\"Default is unchecked\"),\n\n // --- Predefined Values ---\n dropdown: fields\n .text()\n .label(\"Dropdown\")\n .placeholder(\"Pick one\")\n .required(\"Dropdown selection is required\")\n .description(\"Single-select dropdown\")\n .help(\"Choose exactly one option\")\n .note(\"Required for form submission\")\n .options([\n { label: \"Option A\", value: \"a\" },\n { label: \"Option B\", value: \"b\" },\n { label: \"Option C\", value: \"c\" }\n ]),\n radioButtons: fields\n .text()\n .label(\"Radio Buttons\")\n .options([\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" }\n ])\n .renderer(\"radioButtons\")\n .description(\"Pick a size variant\")\n .help(\"Only one option can be selected\")\n .note(\"Selection is mutually exclusive\"),\n checkboxes: fields\n .text()\n .list()\n .label(\"Checkboxes\")\n .options([\n { label: \"Read\", value: \"read\" },\n { label: \"Write\", value: \"write\" },\n { label: \"Admin\", value: \"admin\" }\n ])\n .renderer(\"checkboxes\")\n .description(\"Multi-select permissions\")\n .help(\"Check all that apply\")\n .note(\"At least one is recommended\"),\n\n // --- Date/Time ---\n dateOnly: fields\n .datetime()\n .required()\n .dateOnly()\n .label(\"Date Only\")\n .description(\"Pick a calendar date\")\n .note(\"Value: YYYY-MM-DD\"),\n timeOnly: fields\n .datetime()\n .required()\n .timeOnly()\n .label(\"Time Only\")\n .description(\"Time without a date\")\n .note(\"24-hour format\"),\n dateTime: fields\n .datetime()\n .required()\n .withoutTimezone()\n .label(\"Date & Time\")\n .description(\"Date with time of day\")\n .note(\"Seconds default to :00\"),\n dateTimeTz: fields\n .datetime()\n .required()\n .withTimezone()\n .label(\"Date Time + Timezone\")\n .description(\"Full date, time, and timezone\")\n .note(\"Timezone defaults to your local zone\"),\n monthOnly: fields\n .datetime()\n .required()\n .monthOnly()\n .label(\"Month\")\n .description(\"Pick a month and year\")\n .note(\"Value: YYYY-MM\"),\n weekOnly: fields\n .datetime()\n .required()\n .weekOnly({ startsOn: 1 })\n .label(\"Week\")\n .description(\"Pick an ISO week\")\n .note(\"Value: YYYY-Www\"),\n yearOnly: fields\n .datetime()\n .required()\n .yearOnly({ range: [2020, 2035] })\n .label(\"Year\")\n .description(\"Pick a year\")\n .note(\"Value: number\"),\n dateRange: fields\n .datetime()\n .required()\n .dateRange()\n .label(\"Date Range\")\n .description(\"Pick a start and end date\")\n .note(\"Value: { from, to }\"),\n multipleDates: fields\n .datetime()\n .required()\n .multipleDates()\n .label(\"Multiple Dates\")\n .description(\"Select multiple dates\")\n .note(\"Value: string[]\"),\n multipleMonths: fields\n .datetime()\n .required()\n .multipleMonths()\n .label(\"Multiple Months\")\n .description(\"Select multiple months\")\n .note(\"Value: string[]\"),\n multipleYears: fields\n .datetime()\n .required()\n .multipleYears({ range: [2020, 2035] })\n .label(\"Multiple Years\")\n .description(\"Select multiple years\")\n .note(\"Value: number[]\"),\n dateTimeList: fields\n .datetime()\n .required()\n .withTimezone()\n .list()\n .label(\"Dates with TZ (multi)\")\n .description(\"Multiple date entries\")\n .note(\"Each date is independent\"),\n\n // --- Hidden ---\n hiddenField: fields\n .text()\n .hidden()\n .defaultValue(\"secret-value\")\n .description(\"Not visible in the UI\")\n .help(\"Carried in form data silently\")\n .note(\"Value is preset\"),\n\n // --- Key-Value Tags ---\n metaTags: fields\n .object()\n .list()\n .label(\"Meta Tags\")\n .description(\"Add SEO tags\")\n .renderer(\"keyValueTags\", { addItemLabel: \"Add tag\" })\n .fields(f => ({\n name: f.text().placeholder(\"Name\"),\n content: f.text().placeholder(\"Content\")\n })),\n\n // --- Conditional Visibility / Disabled ---\n enableFeature: fields\n .boolean()\n .label(\"Enable Feature\")\n .description(\"Toggle this to show or hide the feature fields below\"),\n featureName: fields\n .text()\n .label(\"Feature Name\")\n .placeholder(\"Name your feature...\")\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n }\n ]),\n featureMode: fields\n .text()\n .label(\"Feature Mode\")\n .options([\n { label: \"Simple\", value: \"simple\" },\n { label: \"Advanced\", value: \"advanced\" }\n ])\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n }\n ]),\n advancedConfig: fields\n .text()\n .label(\"Advanced Config\")\n .placeholder(\"JSON config...\")\n .renderer(\"textarea\", { rows: 3 })\n .description(\"Only editable in advanced mode\")\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n },\n {\n type: \"condition\",\n target: \"featureMode\",\n operator: \"neq\",\n value: \"advanced\",\n action: \"disable\"\n }\n ]),\n\n // --- Dynamic Zone (single template) ---\n contentBlock: fields\n .object()\n .label(\"Content Block\")\n .template(\"hero\", t => {\n t.label(\"Hero Banner\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n heading: f.text().label(\"Heading\").required(\"Required\"),\n image: f.text().label(\"Image URL\")\n }));\n })\n .template(\"text\", t => {\n t.label(\"Rich Text\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n body: f.text().label(\"Body\").renderer(\"textarea\")\n }));\n }),\n\n // --- Dynamic Zone (multi-value template list) ---\n sections: fields\n .object()\n .list()\n .label(\"Page Sections\")\n .renderer(\"dynamicZone\", { container: false })\n .template(\"hero\", t => {\n t.label(\"Hero Banner\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\"),\n uuid: f\n .text()\n .label(\"UUID\")\n .defaultValue(() => Date.now())\n .cloneValue(value => `${value}/${Date.now()}`)\n }));\n })\n .template(\"cta\", t => {\n t.label(\"Call To Action\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n label: f.text().label(\"Button Label\"),\n url: f.text().label(\"URL\")\n }));\n }),\n\n // --- Files ---\n fileImage: fields\n .file()\n .label(\"Image (full metadata)\")\n .description(\"Stores the full file object (id, name, size, src, etc.)\"),\n fileUrl: fields\n .fileUrl()\n .label(\"Image URL\")\n .description(\"Stores only the file URL as a string\"),\n\n // --- Lexical ---\n richText: fields\n .lexical()\n .label(\"Rich Text\")\n .description(\"Lexical rich text editor\")\n }),\n layout: layout => [\n layout\n .tabs(\"mainTabs\")\n .tab(\"text\", tab => {\n tab.label(\"Text\").layout(l => [\n l.row(\"textInput\"),\n l.row(\"textInputs\"),\n l.row(\"tags\"),\n l.row(\"textarea\"),\n l.row(\"textareas\"),\n l.row(\"metaTags\")\n ]);\n })\n .tab(\"numbers\", tab => {\n tab.label(\"Numbers & Boolean\").layout(l => [\n l.row(\"numberInput\"),\n l.row(\"numberInputs\"),\n l.row(\"numberOptions\"),\n l.separator(),\n l.row(\"boolSwitch\")\n ]);\n })\n .tab(\"selects\", tab => {\n tab.label(\"Selects\").layout(l => [\n l.row(\"dropdown\", \"radioButtons\"),\n l.row(\"checkboxes\")\n ]);\n })\n .tab(\"datetime\", tab => {\n tab.label(\"Date / Time\").layout(l => [\n l.row(\"dateOnly\", \"timeOnly\"),\n l.row(\"dateTime\"),\n l.row(\"dateTimeTz\"),\n l.separator(),\n l.row(\"monthOnly\", \"weekOnly\"),\n l.row(\"yearOnly\"),\n l.separator(),\n l.row(\"dateRange\"),\n l.row(\"multipleDates\"),\n l.row(\"multipleMonths\", \"multipleYears\"),\n l.separator(),\n l.row(\"dateTimeList\")\n ]);\n })\n .tab(\"rules\", tab => {\n tab.label(\"Rules\").layout(l => [\n l.row(\"enableFeature\"),\n l.row(\"featureName\", \"featureMode\"),\n l.row(\"advancedConfig\")\n ]);\n })\n .tab(\"dynamic\", tab => {\n tab.label(\"Dynamic Zones\").layout(l => [\n l.object(\"contentBlock\", {\n hero: inner => [inner.row(\"heading\"), inner.row(\"image\")],\n text: inner => [inner.row(\"body\")]\n }),\n l.object(\"sections\", {\n hero: inner => [\n inner.row(\"heading\", \"subheading\"),\n inner.row(\"uuid\")\n ],\n cta: inner => [inner.row(\"label\", \"url\")]\n })\n ]);\n })\n .tab(\"files\", tab => {\n tab.label(\"Files\").layout(l => [l.row(\"fileImage\", \"fileUrl\")]);\n })\n .tab(\"lexical\", tab => {\n tab.label(\"Lexical\").layout(l => [l.row(\"richText\")]);\n })\n ]\n });\n\n makeAutoObservable(this);\n }\n\n get vm(): FieldRenderersDemoVM {\n return {\n form: this.form.vm,\n data: toJS(this.form.getData()),\n lastSubmitted: this.lastSubmitted,\n isSubmitting: this.isSubmitting,\n formErrors: this.form.errors\n };\n }\n\n focusField(path: string): void {\n this.form.focusField(path);\n }\n\n async submit(): Promise<void> {\n this.isSubmitting = true;\n try {\n const result = await this.form.submit<Record<string, unknown>>();\n if (result !== false) {\n this.lastSubmitted = toJS(result);\n }\n } finally {\n this.isSubmitting = false;\n }\n }\n\n reset(): void {\n this.form.reset();\n this.lastSubmitted = null;\n }\n}\n"],"names":["FieldRenderersDemoPresenter","formFactory","fields","f","t","Date","value","layout","tab","l","inner","makeAutoObservable","toJS","path","result"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { FormModelFactory } from "./abstractions.js";
|
|
|
3
3
|
import { FormModelFactory as external_FormModelFactory_js_FormModelFactory } from "./FormModelFactory.js";
|
|
4
4
|
import { ConditionRuleEvaluator } from "./ConditionRuleEvaluator.js";
|
|
5
5
|
import { FieldBuilderRegistry } from "./FieldBuilderRegistry.js";
|
|
6
|
-
import { BooleanFieldType, DateTimeFieldType, FileFieldType, FileUrlFieldType, NumberFieldType, ObjectFieldType, TextFieldType } from "./fieldTypes/index.js";
|
|
6
|
+
import { BooleanFieldType, DateTimeFieldType, FileFieldType, FileUrlFieldType, LexicalFieldType, NumberFieldType, ObjectFieldType, TextFieldType } from "./fieldTypes/index.js";
|
|
7
7
|
const FormModelFeature = createFeature({
|
|
8
8
|
name: "FormModel",
|
|
9
9
|
register (container) {
|
|
@@ -14,6 +14,7 @@ const FormModelFeature = createFeature({
|
|
|
14
14
|
container.register(FileFieldType);
|
|
15
15
|
container.register(FileUrlFieldType);
|
|
16
16
|
container.register(ObjectFieldType);
|
|
17
|
+
container.register(LexicalFieldType);
|
|
17
18
|
container.register(FieldBuilderRegistry).inSingletonScope();
|
|
18
19
|
container.register(ConditionRuleEvaluator).inSingletonScope();
|
|
19
20
|
container.register(external_FormModelFactory_js_FormModelFactory).inSingletonScope();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/formModel/feature.js","sources":["../../../src/features/formModel/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { FormModelFactory as Abstraction } from \"./abstractions.js\";\nimport { FormModelFactory } from \"./FormModelFactory.js\";\nimport { ConditionRuleEvaluator } from \"./ConditionRuleEvaluator.js\";\nimport { FieldBuilderRegistry } from \"./FieldBuilderRegistry.js\";\nimport {\n TextFieldType,\n NumberFieldType,\n BooleanFieldType,\n DateTimeFieldType,\n FileFieldType,\n FileUrlFieldType,\n ObjectFieldType\n} from \"./fieldTypes/index.js\";\n\nexport const FormModelFeature = createFeature({\n name: \"FormModel\",\n register(container) {\n container.register(TextFieldType);\n container.register(NumberFieldType);\n container.register(BooleanFieldType);\n container.register(DateTimeFieldType);\n container.register(FileFieldType);\n container.register(FileUrlFieldType);\n container.register(ObjectFieldType);\n\n container.register(FieldBuilderRegistry).inSingletonScope();\n container.register(ConditionRuleEvaluator).inSingletonScope();\n container.register(FormModelFactory).inSingletonScope();\n },\n resolve(container) {\n return {\n formModelFactory: container.resolve(Abstraction)\n };\n }\n});\n"],"names":["FormModelFeature","createFeature","container","TextFieldType","NumberFieldType","BooleanFieldType","DateTimeFieldType","FileFieldType","FileUrlFieldType","ObjectFieldType","FieldBuilderRegistry","ConditionRuleEvaluator","FormModelFactory","Abstraction"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"features/formModel/feature.js","sources":["../../../src/features/formModel/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { FormModelFactory as Abstraction } from \"./abstractions.js\";\nimport { FormModelFactory } from \"./FormModelFactory.js\";\nimport { ConditionRuleEvaluator } from \"./ConditionRuleEvaluator.js\";\nimport { FieldBuilderRegistry } from \"./FieldBuilderRegistry.js\";\nimport {\n TextFieldType,\n NumberFieldType,\n BooleanFieldType,\n DateTimeFieldType,\n FileFieldType,\n FileUrlFieldType,\n ObjectFieldType,\n LexicalFieldType\n} from \"./fieldTypes/index.js\";\n\nexport const FormModelFeature = createFeature({\n name: \"FormModel\",\n register(container) {\n container.register(TextFieldType);\n container.register(NumberFieldType);\n container.register(BooleanFieldType);\n container.register(DateTimeFieldType);\n container.register(FileFieldType);\n container.register(FileUrlFieldType);\n container.register(ObjectFieldType);\n container.register(LexicalFieldType);\n\n container.register(FieldBuilderRegistry).inSingletonScope();\n container.register(ConditionRuleEvaluator).inSingletonScope();\n container.register(FormModelFactory).inSingletonScope();\n },\n resolve(container) {\n return {\n formModelFactory: container.resolve(Abstraction)\n };\n }\n});\n"],"names":["FormModelFeature","createFeature","container","TextFieldType","NumberFieldType","BooleanFieldType","DateTimeFieldType","FileFieldType","FileUrlFieldType","ObjectFieldType","LexicalFieldType","FieldBuilderRegistry","ConditionRuleEvaluator","FormModelFactory","Abstraction"],"mappings":";;;;;;AAgBO,MAAMA,mBAAmBC,cAAc;IAC1C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;QACnBN,UAAU,QAAQ,CAACO;QACnBP,UAAU,QAAQ,CAACQ;QAEnBR,UAAU,QAAQ,CAACS,sBAAsB,gBAAgB;QACzDT,UAAU,QAAQ,CAACU,wBAAwB,gBAAgB;QAC3DV,UAAU,QAAQ,CAACW,+CAAkB,gBAAgB;IACzD;IACA,SAAQX,SAAS;QACb,OAAO;YACH,kBAAkBA,UAAU,OAAO,CAACY;QACxC;IACJ;AACJ"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type IFieldTypeFactory } from "../abstractions.js";
|
|
2
|
+
import { FieldBuilder } from "../FieldBuilder.js";
|
|
3
|
+
import type { RichTextValueWithHtml } from "../../../components/LexicalEditor/lexicalValueWithHtml.js";
|
|
4
|
+
export declare class LexicalFieldBuilder extends FieldBuilder<"lexical"> {
|
|
5
|
+
constructor();
|
|
6
|
+
}
|
|
7
|
+
declare class LexicalFieldTypeFactory implements IFieldTypeFactory {
|
|
8
|
+
readonly type = "lexical";
|
|
9
|
+
create(_registry: any): LexicalFieldBuilder;
|
|
10
|
+
}
|
|
11
|
+
export declare const LexicalFieldType: typeof LexicalFieldTypeFactory & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<IFieldTypeFactory>;
|
|
13
|
+
};
|
|
14
|
+
declare module "../abstractions.js" {
|
|
15
|
+
interface IFieldBuilderRegistry {
|
|
16
|
+
lexical(): IFieldBuilder<"lexical", false, RichTextValueWithHtml | null>;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FieldType } from "../abstractions.js";
|
|
2
|
+
import { FieldBuilder } from "../FieldBuilder.js";
|
|
3
|
+
class LexicalFieldBuilder extends FieldBuilder {
|
|
4
|
+
constructor(){
|
|
5
|
+
super("lexical");
|
|
6
|
+
this._config.renderer = "lexical";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
class LexicalFieldTypeFactory {
|
|
10
|
+
create(_registry) {
|
|
11
|
+
return new LexicalFieldBuilder();
|
|
12
|
+
}
|
|
13
|
+
constructor(){
|
|
14
|
+
this.type = "lexical";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const LexicalFieldType = FieldType.createImplementation({
|
|
18
|
+
implementation: LexicalFieldTypeFactory,
|
|
19
|
+
dependencies: []
|
|
20
|
+
});
|
|
21
|
+
export { LexicalFieldBuilder, LexicalFieldType };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=LexicalFieldType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/formModel/fieldTypes/LexicalFieldType.js","sources":["../../../../src/features/formModel/fieldTypes/LexicalFieldType.ts"],"sourcesContent":["import { FieldType, type IFieldTypeFactory, type IFieldBuilder } from \"../abstractions.js\";\nimport { FieldBuilder } from \"../FieldBuilder.js\";\nimport type { RichTextValueWithHtml } from \"~/components/LexicalEditor/lexicalValueWithHtml.js\";\n\nexport class LexicalFieldBuilder extends FieldBuilder<\"lexical\"> {\n constructor() {\n super(\"lexical\");\n this._config.renderer = \"lexical\";\n }\n}\n\nclass LexicalFieldTypeFactory implements IFieldTypeFactory {\n readonly type = \"lexical\";\n create(_registry: any) {\n return new LexicalFieldBuilder();\n }\n}\n\nexport const LexicalFieldType = FieldType.createImplementation({\n implementation: LexicalFieldTypeFactory,\n dependencies: []\n});\n\ndeclare module \"../abstractions.js\" {\n interface IFieldBuilderRegistry {\n lexical(): IFieldBuilder<\"lexical\", false, RichTextValueWithHtml | null>;\n }\n}\n"],"names":["LexicalFieldBuilder","FieldBuilder","LexicalFieldTypeFactory","_registry","LexicalFieldType","FieldType"],"mappings":";;AAIO,MAAMA,4BAA4BC;IACrC,aAAc;QACV,KAAK,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG;IAC5B;AACJ;AAEA,MAAMC;IAEF,OAAOC,SAAc,EAAE;QACnB,OAAO,IAAIH;IACf;;aAHS,IAAI,GAAG;;AAIpB;AAEO,MAAMI,mBAAmBC,UAAU,oBAAoB,CAAC;IAC3D,gBAAgBH;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -5,3 +5,4 @@ export { DateTimeFieldType, DateTimeFieldBuilder } from "./DateTimeFieldType.js"
|
|
|
5
5
|
export { FileFieldType, FileFieldBuilder } from "./FileFieldType.js";
|
|
6
6
|
export { FileUrlFieldType, FileUrlFieldBuilder } from "./FileUrlFieldType.js";
|
|
7
7
|
export { ObjectFieldType, ObjectFieldBuilder } from "./ObjectFieldType.js";
|
|
8
|
+
export { LexicalFieldType, LexicalFieldBuilder } from "./LexicalFieldType.js";
|
|
@@ -5,3 +5,4 @@ export { DateTimeFieldBuilder, DateTimeFieldType } from "./DateTimeFieldType.js"
|
|
|
5
5
|
export { FileFieldBuilder, FileFieldType } from "./FileFieldType.js";
|
|
6
6
|
export { FileUrlFieldBuilder, FileUrlFieldType } from "./FileUrlFieldType.js";
|
|
7
7
|
export { ObjectFieldBuilder, ObjectFieldType } from "./ObjectFieldType.js";
|
|
8
|
+
export { LexicalFieldBuilder, LexicalFieldType } from "./LexicalFieldType.js";
|
|
@@ -18,3 +18,4 @@ import "../../base/Base/FieldRenderers/DateTimeInputsRenderer.js";
|
|
|
18
18
|
import "../../base/Base/FieldRenderers/HiddenRenderer.js";
|
|
19
19
|
import "../../base/Base/FieldRenderers/FilePickerRenderer.js";
|
|
20
20
|
import "../../base/Base/FieldRenderers/CodeEditorRenderer.js";
|
|
21
|
+
import "../../base/Base/FieldRenderers/LexicalRenderer.js";
|
|
@@ -18,3 +18,4 @@ import "../../base/Base/FieldRenderers/DateTimeInputsRenderer.js";
|
|
|
18
18
|
import "../../base/Base/FieldRenderers/HiddenRenderer.js";
|
|
19
19
|
import "../../base/Base/FieldRenderers/FilePickerRenderer.js";
|
|
20
20
|
import "../../base/Base/FieldRenderers/CodeEditorRenderer.js";
|
|
21
|
+
import "../../base/Base/FieldRenderers/LexicalRenderer.js";
|
package/index.d.ts
CHANGED
|
@@ -46,6 +46,7 @@ import "./features/formModel/fieldTypes/DateTimeFieldType.js";
|
|
|
46
46
|
import "./features/formModel/fieldTypes/FileFieldType.js";
|
|
47
47
|
import "./features/formModel/fieldTypes/FileUrlFieldType.js";
|
|
48
48
|
import "./features/formModel/fieldTypes/ObjectFieldType.js";
|
|
49
|
+
import "./features/formModel/fieldTypes/LexicalFieldType.js";
|
|
49
50
|
export { FormModelFactory } from "./features/formModel/abstractions.js";
|
|
50
51
|
export type { FormModel } from "./features/formModel/abstractions.js";
|
|
51
52
|
export type { IFieldRendererRegistry, FieldRendererName, FieldRendererSettings, IFormModelFactory, IFormModelConfig, ILayoutBuilder, ILayoutNodeBuilder, IRowBuilder, ISeparatorBuilder, ITabsBuilder, IElementBuilder, IObjectBuilder, IFieldBuilder, IOptionsFieldBuilder, IFieldBuilderRegistry, IFormModel, IField, FieldTypeMap, IFieldConfig, IFieldVM, IFieldValidation, IFormVM, IFormError, IValueOption, IRowNode, IRowNodeVM, LayoutNode, LayoutNodeVM, LayoutPosition, IPositionedLayoutNode, ILayoutNodeHandle, ILayoutModifier, IFormModifier, BeforeChangeCallback, AfterChangeCallback, AfterSetValueCallback } from "./features/formModel/abstractions.js";
|
package/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import "./features/formModel/fieldTypes/BooleanFieldType.js";
|
|
|
4
4
|
import "./features/formModel/fieldTypes/NumberFieldType.js";
|
|
5
5
|
import "./features/formModel/fieldTypes/TextFieldType.js";
|
|
6
6
|
import "./features/formModel/renderers.js";
|
|
7
|
+
import "./features/formModel/fieldTypes/LexicalFieldType.js";
|
|
7
8
|
import "./features/formModel/fieldTypes/ObjectFieldType.js";
|
|
8
9
|
import "./features/formModel/fieldTypes/FileUrlFieldType.js";
|
|
9
10
|
export * from "@webiny/app";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-admin",
|
|
3
|
-
"version": "6.4.0-beta.
|
|
3
|
+
"version": "6.4.0-beta.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -21,26 +21,28 @@
|
|
|
21
21
|
"@emotion/styled": "11.14.1",
|
|
22
22
|
"@fortawesome/fontawesome-svg-core": "7.2.0",
|
|
23
23
|
"@fortawesome/react-fontawesome": "3.3.1",
|
|
24
|
-
"@iconify/json": "2.2.
|
|
24
|
+
"@iconify/json": "2.2.476",
|
|
25
|
+
"@lexical/utils": "0.44.0",
|
|
25
26
|
"@svgr/webpack": "8.1.0",
|
|
26
27
|
"@types/react": "18.3.28",
|
|
27
|
-
"@webiny/admin-ui": "6.4.0-beta.
|
|
28
|
-
"@webiny/app": "6.4.0-beta.
|
|
29
|
-
"@webiny/di": "1.0.
|
|
30
|
-
"@webiny/feature": "6.4.0-beta.
|
|
31
|
-
"@webiny/form": "6.4.0-beta.
|
|
32
|
-
"@webiny/icons": "6.4.0-beta.
|
|
33
|
-
"@webiny/lexical-converter": "6.4.0-beta.
|
|
34
|
-
"@webiny/lexical-editor": "6.4.0-beta.
|
|
35
|
-
"@webiny/lexical-
|
|
36
|
-
"@webiny/
|
|
37
|
-
"@webiny/
|
|
38
|
-
"@webiny/react-
|
|
39
|
-
"@webiny/
|
|
40
|
-
"@webiny/
|
|
41
|
-
"@webiny/
|
|
42
|
-
"@webiny/
|
|
43
|
-
"@webiny/
|
|
28
|
+
"@webiny/admin-ui": "6.4.0-beta.3",
|
|
29
|
+
"@webiny/app": "6.4.0-beta.3",
|
|
30
|
+
"@webiny/di": "1.0.1",
|
|
31
|
+
"@webiny/feature": "6.4.0-beta.3",
|
|
32
|
+
"@webiny/form": "6.4.0-beta.3",
|
|
33
|
+
"@webiny/icons": "6.4.0-beta.3",
|
|
34
|
+
"@webiny/lexical-converter": "6.4.0-beta.3",
|
|
35
|
+
"@webiny/lexical-editor": "6.4.0-beta.3",
|
|
36
|
+
"@webiny/lexical-nodes": "6.4.0-beta.3",
|
|
37
|
+
"@webiny/lexical-theme": "6.4.0-beta.3",
|
|
38
|
+
"@webiny/plugins": "6.4.0-beta.3",
|
|
39
|
+
"@webiny/react-composition": "6.4.0-beta.3",
|
|
40
|
+
"@webiny/react-properties": "6.4.0-beta.3",
|
|
41
|
+
"@webiny/sdk": "6.4.0-beta.3",
|
|
42
|
+
"@webiny/telemetry": "6.4.0-beta.3",
|
|
43
|
+
"@webiny/utils": "6.4.0-beta.3",
|
|
44
|
+
"@webiny/validation": "6.4.0-beta.3",
|
|
45
|
+
"@webiny/wcp": "6.4.0-beta.3",
|
|
44
46
|
"apollo-cache": "1.3.5",
|
|
45
47
|
"apollo-client": "2.6.10",
|
|
46
48
|
"apollo-link": "1.2.14",
|
|
@@ -79,7 +81,7 @@
|
|
|
79
81
|
"@types/react-transition-group": "4.4.12",
|
|
80
82
|
"@types/store": "2.0.5",
|
|
81
83
|
"@types/tinycolor2": "1.4.6",
|
|
82
|
-
"@webiny/build-tools": "6.4.0-beta.
|
|
84
|
+
"@webiny/build-tools": "6.4.0-beta.3",
|
|
83
85
|
"rimraf": "6.1.3",
|
|
84
86
|
"typescript": "6.0.3",
|
|
85
87
|
"vitest": "4.1.6"
|
|
@@ -105,5 +107,5 @@
|
|
|
105
107
|
]
|
|
106
108
|
}
|
|
107
109
|
},
|
|
108
|
-
"gitHead": "
|
|
110
|
+
"gitHead": "2e58681d4344024bfb60e6180338e2f154ec87f0"
|
|
109
111
|
}
|