CCM NG: ccm-cms-js now uses new structure of ccm-pagemodelseditor
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5617 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
81e92939e0
commit
835d36c607
|
|
@ -1,142 +1,134 @@
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { render } from "react-dom";
|
import { render } from "react-dom";
|
||||||
|
|
||||||
import { AbstractComponentModelEditor,
|
import {
|
||||||
ComponentModel,
|
// AbstractComponentModelEditor,
|
||||||
ComponentModelEditorProps,
|
ComponentModel,
|
||||||
ComponentModelEditorState,
|
BasicComponentModelEditorDialog,
|
||||||
|
BasicComponentModelEditorDialogProps,
|
||||||
|
BasicComponentModelEditorDialogState,
|
||||||
|
BasicComponentModelPropertiesList,
|
||||||
|
BasicComponentModelPropertiesListProps,
|
||||||
|
ComponentModelEditor,
|
||||||
|
ComponentModelEditorProps,
|
||||||
|
ComponentModelEditorDialogProps,
|
||||||
|
ComponentInfo,
|
||||||
|
EditorComponents,
|
||||||
|
// ComponentModelEditorProps,
|
||||||
|
// ComponentModelEditorState,
|
||||||
PageModelEditor,
|
PageModelEditor,
|
||||||
} from "ccm-pagemodelseditor";
|
} from "ccm-pagemodelseditor";
|
||||||
|
|
||||||
PageModelEditor.registerComponentModelEditor(
|
class CategoryTreeComponentPropertiesList
|
||||||
"org.librecms.pagemodel.CategoryTreeComponent",
|
extends React.Component<
|
||||||
(props: ComponentModelEditorProps<ComponentModel>) => {
|
BasicComponentModelPropertiesListProps<CategoryTreeComponent>, {}> {
|
||||||
return <CategoryTreeComponentEditor
|
|
||||||
ccmApplication={props.ccmApplication}
|
|
||||||
component={props.component as CategoryTreeComponent}
|
|
||||||
containerKey={props.containerKey}
|
|
||||||
dispatcherPrefix={props.dispatcherPrefix}
|
|
||||||
pageModelName={props.pageModelName} />
|
|
||||||
}
|
|
||||||
);
|
|
||||||
PageModelEditor.registerComponentModelEditor(
|
|
||||||
"org.librecms.pagemodel.ItemListComponent",
|
|
||||||
(props: ComponentModelEditorProps<ComponentModel>) => {
|
|
||||||
return <ItemListComponentEditor
|
|
||||||
ccmApplication={props.ccmApplication}
|
|
||||||
component={props.component as ItemListComponent}
|
|
||||||
containerKey={props.containerKey}
|
|
||||||
dispatcherPrefix={props.dispatcherPrefix}
|
|
||||||
pageModelName={props.pageModelName} />
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
render(
|
constructor(
|
||||||
<PageModelEditor />,
|
props: BasicComponentModelPropertiesListProps<CategoryTreeComponent>) {
|
||||||
document.getElementById("cms-content"),
|
|
||||||
);
|
|
||||||
|
|
||||||
interface CategoryTreeComponent extends ComponentModel {
|
super(props);
|
||||||
|
}
|
||||||
|
|
||||||
|
public render(): React.ReactNode {
|
||||||
|
|
||||||
|
return <BasicComponentModelPropertiesList
|
||||||
|
component={this.props.component}>
|
||||||
|
<dt>showFullTree</dt>
|
||||||
|
<dd>{this.props.component.showFullTree}</dd>
|
||||||
|
</BasicComponentModelPropertiesList>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CategoryTreeComponentEditorDialogState
|
||||||
|
extends BasicComponentModelEditorDialogState {
|
||||||
|
|
||||||
showFullTree: boolean;
|
showFullTree: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface CategoryTreeComponentEditorProps
|
class CategoryTreeComponentEditorDialog
|
||||||
extends ComponentModelEditorProps<CategoryTreeComponent> {
|
extends React.Component<
|
||||||
|
BasicComponentModelEditorDialogProps<CategoryTreeComponent>,
|
||||||
|
CategoryTreeComponentEditorDialogState> {
|
||||||
|
|
||||||
}
|
constructor(
|
||||||
|
props: BasicComponentModelEditorDialogProps<CategoryTreeComponent>) {
|
||||||
interface CategoryTreeComponentEditorState
|
|
||||||
extends ComponentModelEditorState {
|
|
||||||
|
|
||||||
showFullTree: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class CategoryTreeComponentEditor
|
|
||||||
extends AbstractComponentModelEditor<CategoryTreeComponent,
|
|
||||||
CategoryTreeComponentEditorProps,
|
|
||||||
CategoryTreeComponentEditorState> {
|
|
||||||
|
|
||||||
public constructor(props: CategoryTreeComponentEditorProps) {
|
|
||||||
|
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
this.setState({
|
this.state = {
|
||||||
...this.state as any,
|
|
||||||
dialogExpanded: "dialogClosed",
|
|
||||||
showFullTree: false,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public renderPropertyList(): React.ReactFragment {
|
|
||||||
|
|
||||||
return <React.Fragment>
|
|
||||||
<dt>Show full tree</dt>
|
|
||||||
<dd>{this.props.component.showFullTree}</dd>
|
|
||||||
</React.Fragment>;
|
|
||||||
}
|
|
||||||
|
|
||||||
public renderEditorDialog(): React.ReactFragment {
|
|
||||||
|
|
||||||
return <React.Fragment />;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ItemListComponent extends ComponentModel {
|
|
||||||
|
|
||||||
descending: boolean;
|
|
||||||
limitToType: string;
|
|
||||||
pageSize: number;
|
|
||||||
listOrder: string[],
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ItemListComponentEditorProps
|
|
||||||
extends ComponentModelEditorProps<ItemListComponent> {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ItemListComponentEditorState
|
|
||||||
extends ComponentModelEditorState {
|
|
||||||
|
|
||||||
descending: boolean;
|
|
||||||
limitToType: string;
|
|
||||||
pageSize: number;
|
|
||||||
listOrder: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
class ItemListComponentEditor
|
|
||||||
extends AbstractComponentModelEditor<ItemListComponent,
|
|
||||||
ItemListComponentEditorProps,
|
|
||||||
ItemListComponentEditorState> {
|
|
||||||
|
|
||||||
public constructor(props: ItemListComponentEditorProps) {
|
|
||||||
|
|
||||||
super(props as any);
|
|
||||||
|
|
||||||
this.setState({
|
|
||||||
...this.state,
|
...this.state,
|
||||||
dialogExpanded: "dialogClosed",
|
showFullTree: this.props.component.showFullTree,
|
||||||
descending: false,
|
};
|
||||||
limitToType: "",
|
|
||||||
pageSize: 30,
|
this.handleChange = this.handleChange.bind(this);
|
||||||
listOrder: [],
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public renderPropertyList(): React.ReactFragment {
|
public render(): React.ReactNode {
|
||||||
|
|
||||||
console.log("Rendering properties list for ItemListComponent...");
|
const idPrefix: string
|
||||||
console.log(`listOrder = ${this.props.component.listOrder}`);
|
= `${this.props.containerKey}_${this.props.component.key}_`;
|
||||||
|
|
||||||
return <React.Fragment>
|
return <BasicComponentModelEditorDialog
|
||||||
<dt>descending</dt>
|
ccmApplication={this.props.ccmApplication}
|
||||||
|
component={this.props.component}
|
||||||
|
containerKey={this.props.containerKey}
|
||||||
|
dispatcherPrefix={this.props.dispatcherPrefix}
|
||||||
|
getComponentModelProperties={this.getComponentModelProperties}
|
||||||
|
pageModelName={this.props.pageModelName}>
|
||||||
|
|
||||||
|
<label htmlFor={`${idPrefix}showFullTree`}>Show full tree?</label>
|
||||||
|
<input checked={this.props.component.showFullTree}
|
||||||
|
id={`${idPrefix}showFullTree`}
|
||||||
|
onChange={this.handleChange}
|
||||||
|
type="checkbox" />
|
||||||
|
</BasicComponentModelEditorDialog>
|
||||||
|
}
|
||||||
|
|
||||||
|
private getComponentModelProperties(): {[name: string]: any} {
|
||||||
|
|
||||||
|
return {
|
||||||
|
showFullTree: this.state.showFullTree,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private handleChange(event: React.ChangeEvent<HTMLInputElement>): void {
|
||||||
|
|
||||||
|
const target: HTMLInputElement = event.currentTarget;
|
||||||
|
const idPrefix: string
|
||||||
|
= `${this.props.containerKey}_${this.props.component.key}_`;
|
||||||
|
|
||||||
|
switch(target.id) {
|
||||||
|
case `${idPrefix}showFullTree`: {
|
||||||
|
this.setState({
|
||||||
|
...this.state,
|
||||||
|
showFullTree: target.checked,
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ItemListComponentPropertiesList extends React.Component<
|
||||||
|
BasicComponentModelPropertiesListProps<ItemListComponent>, {}> {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
props: BasicComponentModelPropertiesListProps<ItemListComponent>) {
|
||||||
|
|
||||||
|
super(props);
|
||||||
|
}
|
||||||
|
|
||||||
|
public render(): React.ReactNode {
|
||||||
|
|
||||||
|
return <BasicComponentModelPropertiesList
|
||||||
|
component={this.props.component}>
|
||||||
|
<dt>Descending?</dt>
|
||||||
<dd>{this.props.component.descending}</dd>
|
<dd>{this.props.component.descending}</dd>
|
||||||
<dt>limitToType</dt>
|
<dt>Limit to type</dt>
|
||||||
<dd>{this.props.component.limitToType}</dd>
|
<dd>{this.props.component.limitToType}</dd>
|
||||||
<dt>pageSize</dt>
|
<dt>Page size</dt>
|
||||||
<dd>{this.props.component.pageSize}</dd>
|
<dd>{this.props.component.pageSize}</dd>
|
||||||
<dt>listOrder</dt>
|
<dt>List Order</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{Array.isArray(this.props.component.listOrder) ?
|
{Array.isArray(this.props.component.listOrder) ?
|
||||||
(
|
(
|
||||||
|
|
@ -148,37 +140,342 @@ class ItemListComponentEditor
|
||||||
) : ("No order set")
|
) : ("No order set")
|
||||||
}
|
}
|
||||||
</dd>
|
</dd>
|
||||||
</React.Fragment>
|
</BasicComponentModelPropertiesList>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ItemListComponentEditorDialogState
|
||||||
|
extends BasicComponentModelEditorDialogState {
|
||||||
|
|
||||||
|
descending: boolean;
|
||||||
|
limitToType: string;
|
||||||
|
pageSize: number;
|
||||||
|
listOrder: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ItemListComponentEditorDialog extends React.Component<
|
||||||
|
BasicComponentModelEditorDialogProps<ItemListComponent>,
|
||||||
|
ItemListComponentEditorDialogState> {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
props: BasicComponentModelEditorDialogProps<ItemListComponent>) {
|
||||||
|
|
||||||
|
super(props);
|
||||||
|
|
||||||
|
this.state = {
|
||||||
|
...this.state,
|
||||||
|
descending: this.props.component.descending,
|
||||||
|
limitToType: this.props.component.limitToType,
|
||||||
|
pageSize: this.props.component.pageSize,
|
||||||
|
listOrder: this.props.component.listOrder,
|
||||||
|
};
|
||||||
|
|
||||||
|
this.handleChange = this.handleChange.bind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public renderEditorDialog(): React.ReactFragment {
|
public render(): React.ReactNode {
|
||||||
|
|
||||||
return <React.Fragment>
|
const idPrefix: string
|
||||||
<label htmlFor="descending">
|
= `${this.props.containerKey}_${this.props.component.key}_`;
|
||||||
|
|
||||||
|
return <BasicComponentModelEditorDialog
|
||||||
|
ccmApplication={this.props.ccmApplication}
|
||||||
|
component={this.props.component}
|
||||||
|
containerKey={this.props.containerKey}
|
||||||
|
dispatcherPrefix={this.props.dispatcherPrefix}
|
||||||
|
pageModelName={this.props.pageModelName}
|
||||||
|
getComponentModelProperties={this.getComponentModelProperties}>
|
||||||
|
<label htmlFor={`${idPrefix}descending`}>
|
||||||
Descending?
|
Descending?
|
||||||
</label>
|
</label>
|
||||||
<input checked={this.props.component.descending}
|
<input checked={this.props.component.descending}
|
||||||
id="descending"
|
id={`${idPrefix}descending`}
|
||||||
|
onChange={this.handleChange}
|
||||||
type="checkbox" />
|
type="checkbox" />
|
||||||
<label htmlFor="limitToType">Limit to type</label>
|
<label htmlFor={`${idPrefix}limitToType`}>
|
||||||
<input id="limitToType"
|
Limit to type
|
||||||
|
</label>
|
||||||
|
<input id={`${idPrefix}limitToType`}
|
||||||
maxLength={1024}
|
maxLength={1024}
|
||||||
|
onChange={this.handleChange}
|
||||||
size={64}
|
size={64}
|
||||||
type="text"
|
type="text"
|
||||||
value={this.props.component.limitToType}/>
|
value={this.props.component.limitToType}/>
|
||||||
<label htmlFor="pageSize">Page size</label>
|
<label htmlFor={`$idPrefix}pageSize`}>
|
||||||
<input id="pageSize"
|
Page size
|
||||||
|
</label>
|
||||||
|
<input id={`${idPrefix}pageSize`}
|
||||||
min="1"
|
min="1"
|
||||||
|
onChange={this.handleChange}
|
||||||
type="number"
|
type="number"
|
||||||
value={this.props.component.pageSize}/>
|
value={this.props.component.pageSize}/>
|
||||||
<label htmlFor="listOrder">List Order</label>
|
<label htmlFor={`${idPrefix}listOrder`}>
|
||||||
<textarea cols={40} id="listOrder" rows={5}>
|
List Order
|
||||||
|
</label>
|
||||||
|
<textarea cols={40}
|
||||||
|
id={`${idPrefix}listOrder`}
|
||||||
|
onChange={this.handleListOrderChange}
|
||||||
|
rows={5}>
|
||||||
{Array.isArray(this.props.component.listOrder) ? (
|
{Array.isArray(this.props.component.listOrder) ? (
|
||||||
this.props.component.listOrder.join(", ")
|
this.props.component.listOrder.join("\n")
|
||||||
) : (
|
) : (
|
||||||
""
|
""
|
||||||
)}
|
)}
|
||||||
</textarea>
|
</textarea>
|
||||||
</React.Fragment>;
|
|
||||||
|
</BasicComponentModelEditorDialog>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getComponentModelProperties(): {[name: string]: any} {
|
||||||
|
|
||||||
|
return {
|
||||||
|
descending: this.state.descending,
|
||||||
|
limitToType: this.state.limitToType,
|
||||||
|
pageSize: this.state.pageSize,
|
||||||
|
listOrder: this.state.listOrder,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private handleChange(event: React.ChangeEvent<HTMLInputElement>): void {
|
||||||
|
|
||||||
|
const target: HTMLInputElement = event.currentTarget;
|
||||||
|
const idPrefix: string
|
||||||
|
= `${this.props.containerKey}_${this.props.component.key}_`;
|
||||||
|
|
||||||
|
switch(target.id) {
|
||||||
|
case `${idPrefix}descending`: {
|
||||||
|
this.setState({
|
||||||
|
...this.state,
|
||||||
|
descending: target.checked,
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case `${idPrefix}limitToType`: {
|
||||||
|
this.setState({
|
||||||
|
...this.state,
|
||||||
|
limitToType: target.value,
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case `${idPrefix}pageSize`: {
|
||||||
|
this.setState({
|
||||||
|
...this.state,
|
||||||
|
pageSize: target.valueAsNumber,
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private handleListOrderChange(
|
||||||
|
event: React.ChangeEvent<HTMLTextAreaElement>) {
|
||||||
|
|
||||||
|
const target: HTMLTextAreaElement = event.currentTarget;
|
||||||
|
const componentId: string
|
||||||
|
= `${this.props.containerKey}_${this.props.component.key}`
|
||||||
|
+ `_listOrder`;
|
||||||
|
|
||||||
|
this.setState({
|
||||||
|
...this.state,
|
||||||
|
listOrder: target.value.split("\n"),
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PageModelEditor.registerComponentModelEditor(
|
||||||
|
// "org.librecms.pagemodel.CategoryTreeComponent",
|
||||||
|
// (props: ComponentModelEditorProps<ComponentModel>) => {
|
||||||
|
// return <CategoryTreeComponentEditor
|
||||||
|
// ccmApplication={props.ccmApplication}
|
||||||
|
// component={props.component as CategoryTreeComponent}
|
||||||
|
// containerKey={props.containerKey}
|
||||||
|
// dispatcherPrefix={props.dispatcherPrefix}
|
||||||
|
// pageModelName={props.pageModelName} />
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
// PageModelEditor.registerComponentModelEditor(
|
||||||
|
// "org.librecms.pagemodel.ItemListComponent",
|
||||||
|
// (props: ComponentModelEditorProps<ComponentModel>) => {
|
||||||
|
// return <ItemListComponentEditor
|
||||||
|
// ccmApplication={props.ccmApplication}
|
||||||
|
// component={props.component as ItemListComponent}
|
||||||
|
// containerKey={props.containerKey}
|
||||||
|
// dispatcherPrefix={props.dispatcherPrefix}
|
||||||
|
// pageModelName={props.pageModelName} />
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
|
||||||
|
render(
|
||||||
|
<PageModelEditor />,
|
||||||
|
document.getElementById("cms-content"),
|
||||||
|
);
|
||||||
|
|
||||||
|
interface CategoryTreeComponent extends ComponentModel {
|
||||||
|
|
||||||
|
showFullTree: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
// interface CategoryTreeComponentEditorProps
|
||||||
|
// extends ComponentModelEditorProps<CategoryTreeComponent> {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// interface CategoryTreeComponentEditorState
|
||||||
|
// extends ComponentModelEditorState {
|
||||||
|
//
|
||||||
|
// showFullTree: boolean;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// class CategoryTreeComponentEditor
|
||||||
|
// extends AbstractComponentModelEditor<CategoryTreeComponent,
|
||||||
|
// CategoryTreeComponentEditorProps,
|
||||||
|
// CategoryTreeComponentEditorState> {
|
||||||
|
//
|
||||||
|
// public constructor(props: CategoryTreeComponentEditorProps) {
|
||||||
|
//
|
||||||
|
// super(props);
|
||||||
|
//
|
||||||
|
// this.setState({
|
||||||
|
// ...this.state as any,
|
||||||
|
// dialogExpanded: "dialogClosed",
|
||||||
|
// showFullTree: false,
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public renderPropertyList(): React.ReactFragment {
|
||||||
|
//
|
||||||
|
// return <React.Fragment>
|
||||||
|
// <dt>Show full tree</dt>
|
||||||
|
// <dd>{this.props.component.showFullTree}</dd>
|
||||||
|
// </React.Fragment>;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public renderEditorDialog(): React.ReactFragment {
|
||||||
|
//
|
||||||
|
// return <React.Fragment />;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
interface ItemListComponent extends ComponentModel {
|
||||||
|
|
||||||
|
descending: boolean;
|
||||||
|
limitToType: string;
|
||||||
|
pageSize: number;
|
||||||
|
listOrder: string[],
|
||||||
|
}
|
||||||
|
|
||||||
|
ComponentModelEditor.registerEditorComponents(
|
||||||
|
"org.librecms.pagemodel.CategoryTreeComponent",
|
||||||
|
{
|
||||||
|
editorDialog:
|
||||||
|
CategoryTreeComponentEditorDialog as typeof React.Component,
|
||||||
|
propertiesList:
|
||||||
|
CategoryTreeComponentPropertiesList as typeof React.Component,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
ComponentModelEditor.registerEditorComponents(
|
||||||
|
"org.librecms.pagemodel.ItemListComponent",
|
||||||
|
{
|
||||||
|
editorDialog:
|
||||||
|
ItemListComponentEditorDialog as typeof React.Component,
|
||||||
|
propertiesList:
|
||||||
|
ItemListComponentPropertiesList as typeof React.Component,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// interface ItemListComponentEditorProps
|
||||||
|
// extends ComponentModelEditorProps<ItemListComponent> {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// interface ItemListComponentEditorState
|
||||||
|
// extends ComponentModelEditorState {
|
||||||
|
//
|
||||||
|
// descending: boolean;
|
||||||
|
// limitToType: string;
|
||||||
|
// pageSize: number;
|
||||||
|
// listOrder: string[];
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// class ItemListComponentEditor
|
||||||
|
// extends AbstractComponentModelEditor<ItemListComponent,
|
||||||
|
// ItemListComponentEditorProps,
|
||||||
|
// ItemListComponentEditorState> {
|
||||||
|
//
|
||||||
|
// public constructor(props: ItemListComponentEditorProps) {
|
||||||
|
//
|
||||||
|
// super(props as any);
|
||||||
|
//
|
||||||
|
// this.setState({
|
||||||
|
// ...this.state,
|
||||||
|
// dialogExpanded: "dialogClosed",
|
||||||
|
// descending: false,
|
||||||
|
// limitToType: "",
|
||||||
|
// pageSize: 30,
|
||||||
|
// listOrder: [],
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public renderPropertyList(): React.ReactFragment {
|
||||||
|
//
|
||||||
|
// console.log("Rendering properties list for ItemListComponent...");
|
||||||
|
// console.log(`listOrder = ${this.props.component.listOrder}`);
|
||||||
|
//
|
||||||
|
// return <React.Fragment>
|
||||||
|
// <dt>descending</dt>
|
||||||
|
// <dd>{this.props.component.descending}</dd>
|
||||||
|
// <dt>limitToType</dt>
|
||||||
|
// <dd>{this.props.component.limitToType}</dd>
|
||||||
|
// <dt>pageSize</dt>
|
||||||
|
// <dd>{this.props.component.pageSize}</dd>
|
||||||
|
// <dt>listOrder</dt>
|
||||||
|
// <dd>
|
||||||
|
// {Array.isArray(this.props.component.listOrder) ?
|
||||||
|
// (
|
||||||
|
// this.props.component.listOrder.map((order) => {
|
||||||
|
// <li>
|
||||||
|
// {order}
|
||||||
|
// </li>
|
||||||
|
// })
|
||||||
|
// ) : ("No order set")
|
||||||
|
// }
|
||||||
|
// </dd>
|
||||||
|
// </React.Fragment>
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public renderEditorDialog(): React.ReactFragment {
|
||||||
|
//
|
||||||
|
// return <React.Fragment>
|
||||||
|
// <label htmlFor="descending">
|
||||||
|
// Descending?
|
||||||
|
// </label>
|
||||||
|
// <input checked={this.props.component.descending}
|
||||||
|
// id="descending"
|
||||||
|
// type="checkbox" />
|
||||||
|
// <label htmlFor="limitToType">Limit to type</label>
|
||||||
|
// <input id="limitToType"
|
||||||
|
// maxLength={1024}
|
||||||
|
// size={64}
|
||||||
|
// type="text"
|
||||||
|
// value={this.props.component.limitToType}/>
|
||||||
|
// <label htmlFor="pageSize">Page size</label>
|
||||||
|
// <input id="pageSize"
|
||||||
|
// min="1"
|
||||||
|
// type="number"
|
||||||
|
// value={this.props.component.pageSize}/>
|
||||||
|
// <label htmlFor="listOrder">List Order</label>
|
||||||
|
// <textarea cols={40} id="listOrder" rows={5}>
|
||||||
|
// {Array.isArray(this.props.component.listOrder) ? (
|
||||||
|
// this.props.component.listOrder.join(", ")
|
||||||
|
// ) : (
|
||||||
|
// ""
|
||||||
|
// )}
|
||||||
|
// </textarea>
|
||||||
|
// </React.Fragment>;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,19 @@ import {
|
||||||
|
|
||||||
export {
|
export {
|
||||||
// OldAbstractComponentModelEditor,
|
// OldAbstractComponentModelEditor,
|
||||||
ComponentModel,
|
BasicComponentModelEditorDialog,
|
||||||
|
BasicComponentModelEditorDialogProps,
|
||||||
|
BasicComponentModelEditorDialogState,
|
||||||
|
BasicComponentModelPropertiesList,
|
||||||
|
BasicComponentModelPropertiesListProps,
|
||||||
// OldComponentModelEditorProps,
|
// OldComponentModelEditorProps,
|
||||||
// OldComponentModelEditorState,
|
// OldComponentModelEditorState,
|
||||||
|
ComponentModel,
|
||||||
|
ComponentModelEditor,
|
||||||
|
ComponentModelEditorProps,
|
||||||
|
ComponentModelEditorDialogProps,
|
||||||
ComponentInfo,
|
ComponentInfo,
|
||||||
|
EditorComponents,
|
||||||
PageModelEditor,
|
PageModelEditor,
|
||||||
PageModelEditorState,
|
PageModelEditorState,
|
||||||
// PageModelEditorProps,
|
// PageModelEditorProps,
|
||||||
|
|
@ -1128,8 +1137,8 @@ class BasicComponentModelEditorDialog
|
||||||
|
|
||||||
interface EditorComponents {
|
interface EditorComponents {
|
||||||
|
|
||||||
propertiesList: typeof React.Component;
|
|
||||||
editorDialog: typeof React.Component;
|
editorDialog: typeof React.Component;
|
||||||
|
propertiesList: typeof React.Component;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ComponentModelEditorProps {
|
interface ComponentModelEditorProps {
|
||||||
|
|
@ -1144,42 +1153,42 @@ interface ComponentModelEditorProps {
|
||||||
class ComponentModelEditor
|
class ComponentModelEditor
|
||||||
extends React.Component<ComponentModelEditorProps, {}> {
|
extends React.Component<ComponentModelEditorProps, {}> {
|
||||||
|
|
||||||
private editorComponents: {[type: string]: EditorComponents};
|
private static editorComponents: {[type: string]: EditorComponents} = {};
|
||||||
private propertiesListComponents: {[type: string]: typeof React.Component};
|
// private propertiesListComponents: {[type: string]: typeof React.Component};
|
||||||
private editorDialogComponents: {[type: string]: typeof React.Component};
|
// private editorDialogComponents: {[type: string]: typeof React.Component};
|
||||||
|
|
||||||
constructor(props: ComponentModelEditorProps) {
|
constructor(props: ComponentModelEditorProps) {
|
||||||
|
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
this.editorComponents = {};
|
// this.editorComponents = {};
|
||||||
this.propertiesListComponents = {};
|
// this.propertiesListComponents = {};
|
||||||
this.editorDialogComponents = {};
|
// this.editorDialogComponents = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
public registerEditorComponents(type: string,
|
public static registerEditorComponents(type: string,
|
||||||
components: EditorComponents) {
|
components: EditorComponents) {
|
||||||
|
|
||||||
this.editorComponents = {
|
ComponentModelEditor.editorComponents = {
|
||||||
...this.editorComponents,
|
...ComponentModelEditor.editorComponents,
|
||||||
type: components,
|
type: components,
|
||||||
};
|
};
|
||||||
|
|
||||||
this.propertiesListComponents = {
|
// this.propertiesListComponents = {
|
||||||
...this.propertiesListComponents,
|
// ...this.propertiesListComponents,
|
||||||
type: components.propertiesList,
|
// type: components.propertiesList,
|
||||||
};
|
// };
|
||||||
|
//
|
||||||
this.editorDialogComponents = {
|
// this.editorDialogComponents = {
|
||||||
...this.editorDialogComponents,
|
// ...this.editorDialogComponents,
|
||||||
type: components.editorDialog,
|
// type: components.editorDialog,
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
public render(): React.ReactNode {
|
public render(): React.ReactNode {
|
||||||
|
|
||||||
const components: EditorComponents
|
const components: EditorComponents
|
||||||
= this.editorComponents[this.props.component.type];
|
= ComponentModelEditor.editorComponents[this.props.component.type];
|
||||||
const PropertiesList: typeof React.Component
|
const PropertiesList: typeof React.Component
|
||||||
= components.propertiesList;
|
= components.propertiesList;
|
||||||
const EditorDialog: typeof React.Component
|
const EditorDialog: typeof React.Component
|
||||||
|
|
@ -1199,8 +1208,8 @@ class ComponentModelEditor
|
||||||
|
|
||||||
private getEditorComponents(type: string): EditorComponents {
|
private getEditorComponents(type: string): EditorComponents {
|
||||||
|
|
||||||
if (this.editorComponents.hasOwnProperty(type)) {
|
if (ComponentModelEditor.editorComponents.hasOwnProperty(type)) {
|
||||||
return this.editorComponents[type];
|
return ComponentModelEditor.editorComponents[type];
|
||||||
} else {
|
} else {
|
||||||
const basicComponents: EditorComponents = {
|
const basicComponents: EditorComponents = {
|
||||||
propertiesList:
|
propertiesList:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue