- {renderSelectOption()}
- {compositeAttributes.length > 0 ? renderTable() : null}
-
- );
-};
-
-AttributeListTableComposite.propTypes = {
- attributesList: PropTypes.arrayOf(PropTypes.string).isRequired,
- compositeAttributes: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- onAddAttribute: PropTypes.func.isRequired,
- onClickDelete: PropTypes.func.isRequired,
- onMove: PropTypes.func.isRequired,
- invalid: PropTypes.bool,
- submitting: PropTypes.bool,
- isMonolistCompositeType: PropTypes.bool,
-};
-
-AttributeListTableComposite.defaultProps = {
- invalid: false,
- submitting: false,
- isMonolistCompositeType: false,
-};
-
-export default AttributeListTableComposite;
diff --git a/src/ui/common/contenttype-attributes/AttributeMonoListMonoSettings.js b/src/ui/common/contenttype-attributes/AttributeMonoListMonoSettings.js
deleted file mode 100644
index 25450489b..000000000
--- a/src/ui/common/contenttype-attributes/AttributeMonoListMonoSettings.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import { Row, Col } from 'patternfly-react';
-import { required } from '@entando/utils';
-import { Field, FormSection } from 'redux-form';
-
-import RenderSelectInput from 'ui/common/form/RenderSelectInput';
-import FormLabel from 'ui/common/form/FormLabel';
-
-const AttributeMonoListMonoSettings = ({ attributesList }) => {
- const selectAttribute = attributesList.map(item => ({
- value: item,
- text: item,
- }));
-
- return (
-
-
- {isDefault ? `${language.code} *` : language.code}
-
- *
-
- }
- placeholder={language.name}
- className="form-control"
- validate={[required, maxLength70]}
- onChange={(ev) => {
- if (isDefault && onChangeDefaultTitle) onChangeDefaultTitle(ev.currentTarget.value);
- }}
- />
- );
- });
-
- return (
-
- );
-};
-
-ActiveLanguagesFields.propTypes = {
- activeLanguages: PropTypes.arrayOf(PropTypes.shape({
- code: PropTypes.string,
- name: PropTypes.string,
- isActive: PropTypes.bool,
- isDefault: PropTypes.bool,
- })),
- defaultLanguage: PropTypes.string,
- onChangeDefaultTitle: PropTypes.func,
-};
-
-ActiveLanguagesFields.defaultProps = {
- activeLanguages: [],
- defaultLanguage: '',
- onChangeDefaultTitle: null,
-};
-
-export default ActiveLanguagesFields;
diff --git a/src/ui/common/form/AddContentTypeAttributeForm.js b/src/ui/common/form/AddContentTypeAttributeForm.js
deleted file mode 100644
index 1492fd008..000000000
--- a/src/ui/common/form/AddContentTypeAttributeForm.js
+++ /dev/null
@@ -1,266 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { reduxForm, FormSection } from 'redux-form';
-import { FormattedMessage, intlShape } from 'react-intl';
-import { Button, Row, Col } from 'patternfly-react';
-import AttributeInfo from 'ui/common/contenttype-attributes/AttributeInfo';
-import AttributeInfoComposite from 'ui/common/contenttype-attributes/AttributeInfoComposite';
-import AttributeRole from 'ui/common/contenttype-attributes/AttributeRole';
-import AttributeOgnlValidation from 'ui/common/contenttype-attributes/AttributeOgnlValidation';
-import AttributeHypeLongMonoTextSettings from 'ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings';
-import AttributeEnumSettings from 'ui/common/contenttype-attributes/AttributeEnumSettings';
-import AttributeEnumMapSettings from 'ui/common/contenttype-attributes/AttributeEnumMapSettings';
-import AttributeMonoListMonoSettings from 'ui/common/contenttype-attributes/AttributeMonoListMonoSettings';
-import AttributesNumber from 'ui/common/contenttype-attributes/AttributesNumber';
-import AttributesDateSettings from 'ui/common/contenttype-attributes/AttributesDateSettings';
-import AttributeListTableComposite from 'ui/common/contenttype-attributes/AttributeListTableComposite';
-import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer';
-
-import {
- MODE_ADD_COMPOSITE,
- MODE_EDIT_COMPOSITE,
- MODE_ADD_ATTRIBUTE_COMPOSITE,
- TYPE_COMPOSITE,
- TYPE_BOOLEAN,
- TYPE_CHECKBOX,
- TYPE_DATE,
- TYPE_ENUMERATOR,
- TYPE_ENUMERATOR_MAP,
- TYPE_MONOLIST,
- TYPE_LIST,
- TYPE_NUMBER,
- TYPE_THREESTATE,
- TYPE_TIMESTAMP,
-} from 'state/content-type/const';
-
-export class AttributeFormBody extends Component {
- componentDidMount() {
- const { onDidMount } = this.props;
- onDidMount();
- }
-
- render() {
- const {
- selectedAttributeType,
- contentTypeAttributeCode,
- mode,
- attributesList,
- handleSubmit,
- onCancel,
- onSubmit,
- allowedRoles,
- invalid,
- submitting,
- intl,
- onDiscard,
- onSave,
- dirty,
- languages,
- } = this.props;
- const isComposite = mode === MODE_ADD_COMPOSITE;
- const isEditComposite = mode === MODE_EDIT_COMPOSITE;
- const isAddAttributeComposite = mode === MODE_ADD_ATTRIBUTE_COMPOSITE;
- const labelsubmit = isEditComposite || isAddAttributeComposite ? 'cms.label.save' : 'cms.label.continue';
-
- const renderAttributeInfo = () => (isComposite ? (
-
- ) : (
-
- ));
-
- const handleCancelClick = () => {
- if (dirty) {
- onCancel();
- } else {
- onDiscard(mode);
- }
- };
-
- const renderAttributeRole = () => (!isComposite ? : null);
-
- const renderSelectedAttribute = () => {
- switch (selectedAttributeType.code) {
- case TYPE_BOOLEAN:
- return null;
- case TYPE_CHECKBOX:
- return null;
- case TYPE_THREESTATE:
- return null;
- case TYPE_TIMESTAMP:
- return null;
- case TYPE_MONOLIST:
- return (
-
- );
- case TYPE_LIST:
- return (
-
- );
- case TYPE_NUMBER:
- return (
-
-
-
- );
- case TYPE_DATE:
- return (
-
-
-
- );
- case TYPE_ENUMERATOR:
- return (
-
- );
- case TYPE_ENUMERATOR_MAP:
- return (
-
- );
- case TYPE_COMPOSITE: {
- return isComposite ? (
-
- ) : null;
- }
- default:
- return (
-
-
-
- );
- }
- };
-
- const renderOgnlValidation = () => (!isComposite ? (
-
-
-
- ) : null);
-
- return (
-
- );
- }
-}
-
-AttributeFormBody.propTypes = {
- intl: intlShape.isRequired,
- onDidMount: PropTypes.func,
- handleSubmit: PropTypes.func.isRequired,
- onCancel: PropTypes.func.isRequired,
- onSubmit: PropTypes.func.isRequired,
- contentTypeAttributeCode: PropTypes.string,
- invalid: PropTypes.bool,
- submitting: PropTypes.bool,
- initialValues: PropTypes.shape({
- type: PropTypes.string.isRequired,
- }),
- selectedAttributeType: PropTypes.shape({
- simple: PropTypes.bool,
- searchableOptionSupported: PropTypes.bool,
- indexableOptionSupported: PropTypes.bool,
- textFilterSupported: PropTypes.bool,
- dateFilterSupported: PropTypes.bool,
- numberFilterSupported: PropTypes.bool,
- enumeratorOptionsSupported: PropTypes.bool,
- enumeratorMapOptionsSupported: PropTypes.bool,
- listAttribute: PropTypes.bool,
- enumeratorExtractorBeans: PropTypes.arrayOf(PropTypes.string),
- enumeratorMapExtractorBeans: PropTypes.arrayOf(PropTypes.shape({})),
- code: PropTypes.string,
- }).isRequired,
- validation: PropTypes.shape({
- minLength: PropTypes.string,
- maxLength: PropTypes.string,
- regex: PropTypes.string,
- }),
- allowedRoles: PropTypes.arrayOf(PropTypes.shape({
- code: PropTypes.string,
- descr: PropTypes.string,
- })),
- mode: PropTypes.string.isRequired,
- compositeAttributes: PropTypes.arrayOf(PropTypes.shape({})),
- attributesList: PropTypes.arrayOf(PropTypes.string).isRequired,
- onDiscard: PropTypes.func.isRequired,
- onSave: PropTypes.func.isRequired,
- dirty: PropTypes.bool,
- languages: PropTypes.arrayOf(PropTypes.shape({})),
-};
-
-AttributeFormBody.defaultProps = {
- onDidMount: () => {},
- invalid: false,
- submitting: false,
- contentTypeAttributeCode: '',
- initialValues: {},
- validation: {
- minLength: '',
- maxLength: '',
- regex: '',
- },
- allowedRoles: [],
- compositeAttributes: [],
- dirty: false,
- languages: [],
-};
-
-const AttributeForm = reduxForm({
- form: 'addAttribute',
-})(AttributeFormBody);
-
-export default AttributeForm;
diff --git a/src/ui/common/form/ContentTypeMonolistAttributeForm.js b/src/ui/common/form/ContentTypeMonolistAttributeForm.js
deleted file mode 100644
index 8a650bbba..000000000
--- a/src/ui/common/form/ContentTypeMonolistAttributeForm.js
+++ /dev/null
@@ -1,250 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { reduxForm, FormSection, Field } from 'redux-form';
-import { FormattedMessage } from 'react-intl';
-import { Button, Row, Col, FormGroup, Alert } from 'patternfly-react';
-import AttributeOgnlValidation from 'ui/common/contenttype-attributes/AttributeOgnlValidation';
-import AttributeHypeLongMonoTextSettings from 'ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings';
-import AttributeEnumMapSettings from 'ui/common/contenttype-attributes/AttributeEnumMapSettings';
-import AttributesNumber from 'ui/common/contenttype-attributes/AttributesNumber';
-import AttributesDateSettings from 'ui/common/contenttype-attributes/AttributesDateSettings';
-import AttributeEnumSettings from 'ui/common/contenttype-attributes/AttributeEnumSettings';
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-import SwitchRenderer from 'ui/common/form/SwitchRenderer';
-import FormLabel from 'ui/common/form/FormLabel';
-import AttributeListTableComposite from 'ui/common/contenttype-attributes/AttributeListTableComposite';
-import AttributeInfoComposite from 'ui/common/contenttype-attributes/AttributeInfoComposite';
-
-import {
- TYPE_BOOLEAN,
- TYPE_CHECKBOX,
- TYPE_THREESTATE,
- TYPE_NUMBER,
- TYPE_DATE,
- TYPE_ENUMERATOR,
- TYPE_ENUMERATOR_MAP,
- TYPE_TEXT,
- TYPE_COMPOSITE,
- TYPE_MONOLIST,
- MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE,
- TYPE_MONOTEXT,
-} from 'state/content-type/const';
-
-const NO_INFO_ATTRIBUTE = [TYPE_BOOLEAN, TYPE_CHECKBOX, TYPE_THREESTATE];
-
-export class MonolistAttributeFormBody extends Component {
- componentDidMount() {
- const { onDidMount, ...allprops } = this.props;
- onDidMount(allprops);
- }
-
- componentDidUpdate(prevProps) {
- const { type, onFetchNestedAttribute } = this.props;
- if (type && type !== prevProps.type) {
- onFetchNestedAttribute(this.props);
- }
- }
-
- render() {
- const {
- attributeCode,
- selectedAttribute,
- selectedAttributeType,
- isIndexable,
- type,
- invalid,
- submitting,
- onSubmit,
- mode,
- attributesList,
- onAddAttribute,
- onClickDelete,
- onMove,
- compositeAttributes,
- handleSubmit,
- } = this.props;
- const isMonoListComposite = mode === MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE;
- const attributeType = isMonoListComposite ? TYPE_COMPOSITE : type;
-
- const renderIndexable = () => {
- if (isIndexable) {
- return (
-
-
-
-
-
-
- );
- }
- return '';
- };
-
- const renderAttributeInfo = () => {
- if (isMonoListComposite) {
- return ;
- }
-
- return !NO_INFO_ATTRIBUTE.includes(type) ? (
-
- ) : null;
- };
-
- const renderSelectedAttribute = () => {
- switch (attributeType) {
- case TYPE_TEXT:
- case TYPE_MONOTEXT:
- return (
-
-
-
- );
- case TYPE_NUMBER:
- return (
-
-
-
- );
- case TYPE_DATE:
- return (
-
-
-
- );
- case TYPE_ENUMERATOR:
- return (
-
- );
- case TYPE_ENUMERATOR_MAP:
- return (
-
- );
- case TYPE_COMPOSITE: {
- return isMonoListComposite ? (
-
- ) : null;
- }
- default:
- return null;
- }
- };
-
- const renderOgnlValidation = () => (!isMonoListComposite ? (
-
-
-
- ) : null);
-
- return (
-
-
-
- {type},
-
-
- {attributeCode} ({isMonoListComposite ? TYPE_MONOLIST : selectedAttributeType}).
-
-
-
- );
- }
-}
-
-MonolistAttributeFormBody.propTypes = {
- onDidMount: PropTypes.func.isRequired,
- handleSubmit: PropTypes.func.isRequired,
- onSubmit: PropTypes.func.isRequired,
- onAddAttribute: PropTypes.func,
- onClickDelete: PropTypes.func,
- onMove: PropTypes.func,
- type: PropTypes.string,
- attributeCode: PropTypes.string,
- selectedAttribute: PropTypes.shape({}),
- selectedAttributeType: PropTypes.string,
- mode: PropTypes.string,
- attributesList: PropTypes.arrayOf(PropTypes.string),
- isIndexable: PropTypes.bool,
- invalid: PropTypes.bool,
- submitting: PropTypes.bool,
- compositeAttributes: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- onFetchNestedAttribute: PropTypes.func,
-};
-
-MonolistAttributeFormBody.defaultProps = {
- onAddAttribute: null,
- onClickDelete: null,
- onMove: null,
- invalid: false,
- submitting: false,
- isIndexable: false,
- type: '',
- attributeCode: '',
- selectedAttribute: {},
- selectedAttributeType: TYPE_MONOLIST,
- mode: '',
- attributesList: [],
- onFetchNestedAttribute: () => {},
-};
-
-const MonolistAttributeForm = reduxForm({
- form: 'monoListAttribute',
-})(MonolistAttributeFormBody);
-
-export default MonolistAttributeForm;
diff --git a/src/ui/common/form/DebouncedInput.js b/src/ui/common/form/DebouncedInput.js
deleted file mode 100644
index b9c709247..000000000
--- a/src/ui/common/form/DebouncedInput.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import React, { useState, useEffect, useCallback } from 'react';
-import PropTypes from 'prop-types';
-import { debounce } from 'lodash';
-
-const DebouncedInput = ({ inputComponent: InputComponent, input, ...props }) => {
- const { value: inputValue, onChange } = input;
-
- const [currValue, setCurrValue] = useState(inputValue);
-
- useEffect(() => {
- setCurrValue(inputValue);
- }, [inputValue]);
-
- const debouncedOnChange = useCallback(debounce((value) => {
- onChange(value);
- }, 500), []);
-
- const debouncedInput = {
- ...input,
- value: currValue,
- onChange: (data) => {
- let value = data;
- if (data.target) {
- data.persist();
- ({ value } = data.target);
- }
- setCurrValue(value);
- debouncedOnChange(data);
- },
- };
-
- return (
-
- );
-};
-
-DebouncedInput.propTypes = {
- inputComponent: PropTypes.elementType.isRequired,
- input: PropTypes.shape({
- value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),
- onChange: PropTypes.func.isRequired,
- }).isRequired,
-};
-
-export default DebouncedInput;
diff --git a/src/ui/common/form/EditContentTypeAttributeForm.js b/src/ui/common/form/EditContentTypeAttributeForm.js
deleted file mode 100644
index f10974578..000000000
--- a/src/ui/common/form/EditContentTypeAttributeForm.js
+++ /dev/null
@@ -1,282 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { reduxForm, FormSection } from 'redux-form';
-import { FormattedMessage, intlShape } from 'react-intl';
-import { Button, Row, Col, Alert } from 'patternfly-react';
-import AttributeInfo from 'ui/common/contenttype-attributes/AttributeInfo';
-import AttributeInfoComposite from 'ui/common/contenttype-attributes/AttributeInfoComposite';
-import AttributeRole from 'ui/common/contenttype-attributes/AttributeRole';
-import AttributeOgnlValidation from 'ui/common/contenttype-attributes/AttributeOgnlValidation';
-import AttributeHypeLongMonoTextSettings from 'ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings';
-import AttributeEnumSettings from 'ui/common/contenttype-attributes/AttributeEnumSettings';
-import AttributeEnumMapSettings from 'ui/common/contenttype-attributes/AttributeEnumMapSettings';
-import AttributeMonoListMonoSettings from 'ui/common/contenttype-attributes/AttributeMonoListMonoSettings';
-import AttributesNumber from 'ui/common/contenttype-attributes/AttributesNumber';
-import AttributesDateSettings from 'ui/common/contenttype-attributes/AttributesDateSettings';
-import AttributeListTableComposite from 'ui/common/contenttype-attributes/AttributeListTableComposite';
-import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer';
-
-import {
- MODE_ADD_COMPOSITE,
- MODE_EDIT_COMPOSITE,
- MODE_ADD_ATTRIBUTE_COMPOSITE,
- MODE_EDIT,
- TYPE_COMPOSITE,
- TYPE_BOOLEAN,
- TYPE_CHECKBOX,
- TYPE_DATE,
- TYPE_ENUMERATOR,
- TYPE_ENUMERATOR_MAP,
- TYPE_MONOLIST,
- TYPE_LIST,
- TYPE_NUMBER,
- TYPE_THREESTATE,
- TYPE_TIMESTAMP,
-} from 'state/content-type/const';
-
-export class EditContentTypeAttributeFormBody extends Component {
- componentDidMount() {
- const { onDidMount } = this.props;
- onDidMount(this.props);
- }
-
- render() {
- const {
- selectedAttributeType,
- selectedAttributeTypeForAddComposite,
- attributeCode,
- mode,
- nestedAttributeComposite,
- isSearchable,
- isIndexable,
- attributesList,
- onSubmit,
- onCancel,
- allowedRoles,
- handleSubmit,
- invalid,
- submitting,
- intl,
- onDiscard,
- onSave,
- dirty,
- languages,
- } = this.props;
-
- const isComposite = mode === MODE_EDIT_COMPOSITE || mode === MODE_ADD_COMPOSITE;
- const isModeAddAttributeComposite = mode === MODE_ADD_ATTRIBUTE_COMPOSITE;
- const attributeType = isModeAddAttributeComposite
- ? selectedAttributeTypeForAddComposite.code
- : selectedAttributeType;
-
- const labelsubmit = !isComposite ? 'cms.label.continue' : 'cms.label.save';
-
- const renderAttributeInfo = () => (isComposite ? (
-
- ) : (
-
- ));
-
- const handleCancelClick = () => {
- if (dirty) {
- onCancel();
- } else {
- onDiscard(mode);
- }
- };
-
- const renderSelectedAttribute = () => {
- switch (attributeType) {
- case TYPE_BOOLEAN:
- return null;
- case TYPE_CHECKBOX:
- return null;
- case TYPE_THREESTATE:
- return null;
- case TYPE_TIMESTAMP:
- return null;
- case TYPE_MONOLIST:
- return isComposite ? (
-
- ) : (
-
- );
- case TYPE_LIST:
- return (
-
- );
- case TYPE_NUMBER:
- return (
-
-
-
- );
- case TYPE_DATE:
- return (
-
-
-
- );
- case TYPE_ENUMERATOR:
- return ;
- case TYPE_ENUMERATOR_MAP:
- return ;
- case TYPE_COMPOSITE:
- return isComposite ? : null;
-
- default:
- return (
-
-
-
- );
- }
- };
-
- const renderAttributeRole = () => (!isComposite ? : null);
-
- const renderOgnlValidation = () => (!isComposite ? (
-
-
-
- ) : null);
-
- const header = () => {
- switch (selectedAttributeType) {
- case TYPE_COMPOSITE:
- return (
-
- {attributeCode}
-
- );
- case TYPE_MONOLIST:
- return mode === MODE_EDIT_COMPOSITE ? (
-
-
- {TYPE_COMPOSITE},
-
-
- {isComposite ? attributeCode : nestedAttributeComposite} ({TYPE_MONOLIST})
-
- ) : null;
- default:
- return null;
- }
- };
-
- return (
-
- );
- }
-}
-
-EditContentTypeAttributeFormBody.propTypes = {
- intl: intlShape.isRequired,
- onDidMount: PropTypes.func,
- handleSubmit: PropTypes.func.isRequired,
- onCancel: PropTypes.func.isRequired,
- onSubmit: PropTypes.func.isRequired,
- contentTypeAttributeCode: PropTypes.string,
- invalid: PropTypes.bool,
- submitting: PropTypes.bool,
- selectedAttributeType: PropTypes.string,
- selectedAttributeTypeForAddComposite: PropTypes.PropTypes.shape({
- code: PropTypes.string,
- }),
- attributeCode: PropTypes.string.isRequired,
- allowedRoles: PropTypes.arrayOf(PropTypes.shape({
- code: PropTypes.string,
- descr: PropTypes.string,
- })),
- indexable: PropTypes.bool,
- listFilter: PropTypes.bool,
- mode: PropTypes.string.isRequired,
- attributesList: PropTypes.arrayOf(PropTypes.string).isRequired,
- nestedAttributeComposite: PropTypes.string.isRequired,
- isSearchable: PropTypes.bool,
- isIndexable: PropTypes.bool,
- onDiscard: PropTypes.func.isRequired,
- onSave: PropTypes.func.isRequired,
- dirty: PropTypes.bool,
- languages: PropTypes.arrayOf(PropTypes.shape({})),
-};
-
-EditContentTypeAttributeFormBody.defaultProps = {
- onDidMount: () => {},
- invalid: false,
- submitting: false,
- contentTypeAttributeCode: '',
- selectedAttributeType: '',
- selectedAttributeTypeForAddComposite: '',
- indexable: false,
- listFilter: false,
- allowedRoles: [],
- isSearchable: false,
- isIndexable: false,
- dirty: false,
- languages: [],
-};
-
-const EditContentTypeAttributeForm = reduxForm({
- form: 'attribute',
-})(EditContentTypeAttributeFormBody);
-
-export default EditContentTypeAttributeForm;
diff --git a/src/ui/common/form/HtmlCodeEditorRenderer.js b/src/ui/common/form/HtmlCodeEditorRenderer.js
deleted file mode 100644
index 727b4bd0b..000000000
--- a/src/ui/common/form/HtmlCodeEditorRenderer.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Col } from 'patternfly-react';
-
-import LoadableCodeMirror from 'ui/common/form/LoadableCodeMirror';
-
-
-const HtmlCodeEditorRenderer = ({
- input, name, label, meta: { touched, error }, help,
-}) => (
-
-
-
-
-
input.onChange(value)}
- onBlur={instance => input.onBlur(instance.doc.getValue())}
- onFocus={instance => input.onFocus(instance.doc.getValue())}
- options={{
- lineNumbers: true,
- mode: 'htmlembedded',
- styleActiveLine: true,
- }}
- />
- {touched && error && {error}
}
-
-
-
-);
-
-HtmlCodeEditorRenderer.propTypes = {
- name: PropTypes.string,
- label: PropTypes.node,
- meta: PropTypes.shape({
- touched: PropTypes.bool,
- error: PropTypes.string,
- }),
- help: PropTypes.node,
- input: PropTypes.shape({
- onChange: PropTypes.func.isRequired,
- onBlur: PropTypes.func.isRequired,
- onFocus: PropTypes.func.isRequired,
- value: PropTypes.string,
- }).isRequired,
-};
-
-HtmlCodeEditorRenderer.defaultProps = {
- name: '',
- label: '',
- meta: {},
- help: null,
-};
-export default HtmlCodeEditorRenderer;
diff --git a/src/ui/common/form/MultiSelectRenderer.js b/src/ui/common/form/MultiSelectRenderer.js
deleted file mode 100644
index 6b2c2e6ed..000000000
--- a/src/ui/common/form/MultiSelectRenderer.js
+++ /dev/null
@@ -1,118 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { defineMessages, intlShape } from 'react-intl';
-import { InputGroup, Button, Label } from 'patternfly-react';
-
-class MultiSelectRenderer extends Component {
- constructor(props) {
- super(props);
- this.pushField = this.pushField.bind(this);
- this.select = null;
- }
-
- pushField() {
- if (!this.select || !this.select.value) {
- return;
- }
- const { selectedValues, fields } = this.props;
-
- if (this.select.value && !selectedValues.includes(this.select.value)) {
- fields.push(this.select.value);
- }
- }
-
- render() {
- const {
- options,
- selectedValues,
- labelKey,
- valueKey,
- emptyOptionTextId,
- intl,
- fields,
- } = this.props;
- const filteredOptions = options
- .filter(opt => !selectedValues.includes(opt[valueKey]))
- .map(item => (
-
- ));
- const messages = defineMessages({
- emptyOption: {
- id: 'cms.chooseAnOption',
- defaultMessage: 'Choose Option',
- },
- });
-
- if (emptyOptionTextId) {
- filteredOptions.unshift((
-
- ));
- }
-
- const renderedTags = selectedValues.map((value, i) => (
-
- ));
-
- return (
-
-
-
-
-
-
-
-
- {renderedTags}
-
- );
- }
-}
-
-MultiSelectRenderer.propTypes = {
- fields: PropTypes.shape({
- push: PropTypes.func,
- remove: PropTypes.func,
- }).isRequired,
- options: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- selectedValues: PropTypes.arrayOf(PropTypes.string),
- valueKey: PropTypes.string,
- labelKey: PropTypes.string,
- emptyOptionTextId: PropTypes.string,
- intl: intlShape,
-};
-
-MultiSelectRenderer.defaultProps = {
- selectedValues: [],
- valueKey: 'value',
- labelKey: 'label',
- emptyOptionTextId: '',
- intl: {},
-};
-
-export default MultiSelectRenderer;
diff --git a/src/ui/common/form/RenderButton.js b/src/ui/common/form/RenderButton.js
deleted file mode 100644
index ff96dbf43..000000000
--- a/src/ui/common/form/RenderButton.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Col, ControlLabel, Button } from 'patternfly-react';
-
-const RenderButton = ({
- meta: { touched, error },
- labelSize,
- alignClass,
- label,
- help,
- inputSize,
- buttonContent,
- onClick,
- hasLabel,
-}) => {
- const containerClasses = touched && error ? 'form-group has-error' : 'form-group';
-
- const errorBox = touched && error ? {error} : null;
-
- return (
-
- {hasLabel && (
-
-
- {label} {help}
-
-
- )}
-
-
- {errorBox}
-
-
- );
-};
-
-RenderButton.propTypes = {
- meta: PropTypes.shape({
- touched: PropTypes.bool,
- error: PropTypes.shape({}),
- }),
- label: PropTypes.node,
- labelSize: PropTypes.number,
- alignClass: PropTypes.string,
- help: PropTypes.node,
- inputSize: PropTypes.number,
- buttonContent: PropTypes.node.isRequired,
- onClick: PropTypes.func.isRequired,
- hasLabel: PropTypes.bool,
-};
-
-RenderButton.defaultProps = {
- meta: {
- touched: false,
- error: {},
- },
- label: null,
- labelSize: 2,
- alignClass: 'text-right',
- help: null,
- inputSize: null,
- hasLabel: true,
-};
-export default RenderButton;
diff --git a/src/ui/common/form/RenderCMSDateTimePickerInput.js b/src/ui/common/form/RenderCMSDateTimePickerInput.js
deleted file mode 100644
index 836667a07..000000000
--- a/src/ui/common/form/RenderCMSDateTimePickerInput.js
+++ /dev/null
@@ -1,145 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { Row, Col } from 'patternfly-react';
-import { Field } from 'redux-form';
-import { FormattedMessage } from 'react-intl';
-import DatePicker from 'react-datepicker';
-import 'react-datepicker/dist/react-datepicker.css';
-import moment from 'moment';
-import { isNull, padStart } from 'lodash';
-
-class RenderCMSDateTimePickerInput extends Component {
- constructor(props) {
- super(props);
- this.handleChange = this.handleChange.bind(this);
- }
-
- handleChange(date) {
- const { dateFormat, input: { onChange: inputOnChange } } = this.props;
- const value = !isNull(date) ? date.format(dateFormat) : '';
- inputOnChange(value);
- }
-
- render() {
- const {
- input, name, label, help, locale, dateFormat, placeholder,
- meta: { touched, error }, hoursList, minutesList, secondsList,
- isClearable, hasLabel,
- } = this.props;
- const optionsHours = hoursList.map(item => padStart(item, 2, '0'));
- const optionsMinutes = minutesList.map(item => padStart(item, 2, '0'));
- const optionsSeconds = secondsList.map(item => padStart(item, 2, '0'));
-
- return (
-
- {hasLabel && (
-
- )}
-
-
-
-
-
-
-
- { optionsHours.map(value => ()) }
-
-
-
-
-
-
-
- { optionsMinutes.map(value => ()) }
-
-
-
-
-
-
-
- { optionsSeconds.map(value => ()) }
-
-
-
-
-
-
-
-
- {touched ? error : ''}
-
-
-
-
- );
- }
-}
-
-RenderCMSDateTimePickerInput.propTypes = {
- input: PropTypes.shape({
- onChange: PropTypes.func.isRequired,
- value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.shape({
- date: PropTypes.string,
- })]),
- name: PropTypes.string,
- }).isRequired,
- meta: PropTypes.shape({
- touched: PropTypes.bool,
- error: PropTypes.shape({}),
- }),
- name: PropTypes.string,
- placeholder: PropTypes.string,
- label: PropTypes.node,
- help: PropTypes.node,
- language: PropTypes.string,
- dateFormat: PropTypes.string,
- locale: PropTypes.string,
- hoursList: PropTypes.arrayOf(PropTypes.number),
- minutesList: PropTypes.arrayOf(PropTypes.number),
- secondsList: PropTypes.arrayOf(PropTypes.number),
- isClearable: PropTypes.bool,
- hasLabel: PropTypes.bool,
-};
-
-RenderCMSDateTimePickerInput.defaultProps = {
- name: '',
- placeholder: '',
- label: '',
- help: null,
- language: 'en',
- dateFormat: 'DD/MM/YYYY',
- locale: 'en',
- meta: {},
- hoursList: Array.from(Array(24).keys()),
- minutesList: Array.from(Array(60).keys()),
- secondsList: Array.from(Array(60).keys()),
- isClearable: true,
- hasLabel: true,
-};
-export default RenderCMSDateTimePickerInput;
diff --git a/src/ui/common/form/RenderContentTemplateInput.js b/src/ui/common/form/RenderContentTemplateInput.js
deleted file mode 100644
index d8b051047..000000000
--- a/src/ui/common/form/RenderContentTemplateInput.js
+++ /dev/null
@@ -1,293 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import AceEditor from 'react-ace';
-import ace from 'brace';
-import { Col, ControlLabel } from 'patternfly-react';
-
-import 'brace/mode/html';
-import 'brace/theme/tomorrow';
-import 'brace/snippets/html';
-import 'brace/ext/language_tools';
-
-const langTools = ace.acequire('ace/ext/language_tools');
-const tokenUtils = ace.acequire('ace/autocomplete/util');
-const { textCompleter, keyWordCompleter, snippetCompleter } = langTools;
-const defaultCompleters = [textCompleter, keyWordCompleter, snippetCompleter];
-
-const escChars = term => term.replace('$', '\\$').replace('#', '\\#');
-const isAttribFunction = term => /[a-zA-Z]+\([^)]*\)(\.[^)]*\))?/g.test(term);
-
-const createSuggestionItem = (key, namespace, lvl = 0, meta = '') => ({
- caption: key,
- value: key,
- score: 10000 + lvl,
- meta: meta || `${namespace} Object ${isAttribFunction(key) ? 'Method' : 'Property'}`,
-});
-
-const aceOnBlur = onBlur => (_event, editor) => {
- if (editor) {
- const value = editor.getValue();
- onBlur(value);
- }
-};
-
-class RenderContentTemplateInput extends Component {
- constructor(props) {
- super(props);
- this.state = {
- editor: null,
- dictionaryLoaded: false,
- dictionary: [],
- dictList: [],
- dictMapped: {},
- contentTemplateCompleter: null,
- };
- this.onEditorLoaded = this.onEditorLoaded.bind(this);
- }
-
- componentDidUpdate(prevProps) {
- const { dictionary } = this.props;
- if (dictionary !== prevProps.dictionary) {
- this.condenseRootDict();
- }
- }
-
- onEditorLoaded(editor) {
- this.setState({ editor });
-
- this.initCompleter();
-
- editor.commands.addCommand({
- name: 'dotCommandSubMethods',
- bindKey: { win: '.', mac: '.' },
- exec: () => {
- editor.insert('.');
- const { selection } = editor;
- const cursor = selection.getCursor();
- const extracted = this.extractCodeFromCursor(cursor);
- const { namespace } = extracted;
- if (!namespace) {
- this.enableRootSuggestions();
- return;
- }
-
- const [rootSpace, ...subSpace] = namespace.split('.');
-
- if (subSpace.length > 1) {
- this.enableRootSuggestions();
- return;
- }
-
- const verified = subSpace.length
- ? this.findTokenInDictMap(subSpace[0], rootSpace)
- : this.findTokenInDictMap(rootSpace);
- if (verified) {
- this.disableRootSuggestions();
- } else {
- this.enableRootSuggestions();
- }
- editor.execCommand('startAutocomplete');
- },
- });
- }
-
- disableRootSuggestions() {
- const { contentTemplateCompleter } = this.state;
- langTools.setCompleters([contentTemplateCompleter]);
- }
-
- enableRootSuggestions() {
- const { dictionary, contentTemplateCompleter } = this.state;
- langTools.setCompleters([...defaultCompleters, contentTemplateCompleter]);
- this.setState({
- dictList: [...dictionary],
- });
- }
-
- initCompleter() {
- const contentTemplateCompleter = {
- getCompletions: (
- _editor,
- session,
- cursor,
- prefix,
- callback,
- ) => {
- const extracted = this.extractCodeFromCursor(cursor, prefix);
- const { namespace } = extracted;
- if (!namespace) {
- this.enableRootSuggestions();
- } else {
- const [rootSpace, ...subSpace] = namespace.split('.');
-
- const verified = subSpace.length
- ? this.findTokenInDictMap(subSpace[0], rootSpace)
- : this.findTokenInDictMap(rootSpace);
- if (verified) {
- this.disableRootSuggestions();
- const { dictMapped } = this.state;
- if (verified.namespace) {
- const mappedToken = dictMapped[verified.namespace];
- const dictList = mappedToken[verified.term]
- .map(entry => createSuggestionItem(entry, verified.namespace, 2));
- this.setState({ dictList });
- } else {
- const mappedToken = dictMapped[verified.term];
- const dictList = Object.entries(mappedToken)
- .map(([entry]) => createSuggestionItem(entry, verified.term, 1));
- this.setState({ dictList });
- }
- } else {
- this.disableRootSuggestions();
- }
- }
- const { dictList } = this.state;
- callback(null, dictList);
- },
- };
- langTools.setCompleters([...defaultCompleters, contentTemplateCompleter]);
- this.setState({ contentTemplateCompleter });
- }
-
- condenseRootDict() {
- const { dictionary: _dict } = this.props;
- const dictMapped = _dict.reduce((acc, curr) => {
- acc[curr.code] = curr.methods;
- return acc;
- }, {});
-
- const dictionary = _dict.map(({ code }) => (
- createSuggestionItem(code, code, 0, `${code} Object`)
- ));
-
- this.setState({
- dictionary,
- dictMapped,
- dictList: [...dictionary],
- dictionaryLoaded: true,
- });
- }
-
- extractCodeFromCursor({ row, column }, prefixToken) {
- const { editor: { session } } = this.state;
- const codeline = (session.getDocument().getLine(row)).trim();
- const token = prefixToken || tokenUtils.retrievePrecedingIdentifier(codeline, column);
- const wholeToken = tokenUtils.retrievePrecedingIdentifier(
- codeline,
- column,
- /[.a-zA-Z_0-9$\-\u00A2-\uFFFF]/,
- );
- if (token === wholeToken) {
- return { token, namespace: '' };
- }
- const namespace = wholeToken.replace(/\.$/g, '');
- return { token, namespace };
- }
-
- findTokenInDictMap(token, parentToken) {
- const { dictMapped } = this.state;
- const findInDict = (term, dict) => (
- Object.keys(dict).find((key) => {
- const keyRegEx = new RegExp(`${escChars(key)}$`, 'g');
- return keyRegEx.test(term);
- })
- );
- if (!parentToken) {
- const term = findInDict(token, dictMapped);
- return term && { term };
- }
- const namespace = findInDict(parentToken, dictMapped);
- if (!namespace) {
- return false;
- }
- const term = findInDict(token, dictMapped[parentToken]);
- if (!term) return false;
- return { term, namespace };
- }
-
- render() {
- const {
- input, meta: { touched, error }, label, help,
- labelSize, inputSize, append, prepend, alignClass,
- } = this.props;
- const { dictionaryLoaded } = this.state;
- return (
-
- {
- labelSize > 0 ? (
-
-
- {label} {help}
-
-
- ) : ''
- }
-
- {prepend}
- {dictionaryLoaded && (
-
- )}
- {append &&
{append}}
- {touched && ((error &&
{error}))}
-
-
- );
- }
-}
-
-RenderContentTemplateInput.propTypes = {
- input: PropTypes.shape({
- name: PropTypes.string,
- value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
- onBlur: PropTypes.func,
- onChange: PropTypes.func,
- onFocus: PropTypes.func,
- }),
- label: PropTypes.node,
- meta: PropTypes.shape({
- touched: PropTypes.bool,
- error: PropTypes.shape({}),
- }),
- dictionary: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- help: PropTypes.node,
- labelSize: PropTypes.number,
- inputSize: PropTypes.number,
- prepend: PropTypes.node,
- append: PropTypes.string,
- alignClass: PropTypes.string,
-};
-
-RenderContentTemplateInput.defaultProps = {
- input: {},
- label: ,
- meta: {},
- help: null,
- labelSize: 2,
- inputSize: null,
- append: '',
- prepend: '',
- alignClass: 'text-right',
-};
-
-export default RenderContentTemplateInput;
diff --git a/src/ui/common/form/RenderListFieldItem.js b/src/ui/common/form/RenderListFieldItem.js
deleted file mode 100644
index 92490afe9..000000000
--- a/src/ui/common/form/RenderListFieldItem.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import React, { useState } from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import { Button, ButtonGroup } from 'patternfly-react';
-import { Collapse } from 'react-collapse';
-import Panel from 'react-bootstrap/lib/Panel';
-
-import SectionTitle from 'ui/common/SectionTitle';
-
-const RenderListFieldItem = ({
- children,
- onSwapItem,
- onRemoveItem,
- order,
- arraySize,
-}) => {
- const [opened, setOpened] = useState(true);
-
- const handleCollapse = () => setOpened(!opened);
-
- const buttonMoveUp = (index) => {
- if ((index) > 0) {
- return (
-
- );
- }
- return null;
- };
-
- const buttonMoveDown = (index) => {
- if ((index) < arraySize - 1) {
- return (
-
- );
- }
- return null;
- };
-
- return (
-
-
-
- }
- onClick={handleCollapse}
- collapsable
- noRequired
- isOpened={opened}
- className="RenderListField__heading"
- >
-
- {buttonMoveUp(order)}
- {buttonMoveDown(order, arraySize)}
-
-
-
-
-
-
- {children}
-
-
-
-
- );
-};
-
-RenderListFieldItem.propTypes = {
- children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
- onSwapItem: PropTypes.func.isRequired,
- onRemoveItem: PropTypes.func.isRequired,
- order: PropTypes.number.isRequired,
- arraySize: PropTypes.number.isRequired,
-};
-
-export default RenderListFieldItem;
diff --git a/src/ui/common/form/RenderVersionText.js b/src/ui/common/form/RenderVersionText.js
deleted file mode 100644
index ea8692da7..000000000
--- a/src/ui/common/form/RenderVersionText.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Col, ControlLabel } from 'patternfly-react';
-
-const RenderVersionText = ({
- input,
- label,
- labelSize,
- inputSize,
- alignClass,
- version,
- modifierText,
- creatorText,
- sameAuthorText,
- currentUserName,
- creatorUserName,
- modifierUserName,
-}) => (
-
-);
-
-RenderVersionText.propTypes = {
- version: PropTypes.string.isRequired,
- creatorText: PropTypes.string.isRequired,
- modifierText: PropTypes.string.isRequired,
- sameAuthorText: PropTypes.string.isRequired,
- currentUserName: PropTypes.string.isRequired,
- creatorUserName: PropTypes.string.isRequired,
- modifierUserName: PropTypes.string.isRequired,
- input: PropTypes.shape({
- name: PropTypes.string,
- }),
- label: PropTypes.node,
- labelSize: PropTypes.number,
- inputSize: PropTypes.number,
- alignClass: PropTypes.string,
-};
-
-RenderVersionText.defaultProps = {
- input: {},
- label: '',
- labelSize: 2,
- inputSize: null,
- alignClass: 'text-right',
-};
-export default RenderVersionText;
diff --git a/src/ui/common/form/ToggleButtonGroupField.js b/src/ui/common/form/ToggleButtonGroupField.js
deleted file mode 100644
index 9436ea8fb..000000000
--- a/src/ui/common/form/ToggleButtonGroupField.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { ToggleButtonGroup } from 'react-bootstrap';
-
-const ToggleButtonGroupField = ({ input, children }) => (
-
- {children}
-
-);
-
-ToggleButtonGroupField.propTypes = {
- input: PropTypes.shape({
- value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),
- }).isRequired,
- children: PropTypes.node.isRequired,
-};
-
-export default ToggleButtonGroupField;
diff --git a/src/ui/common/link-config/LinkConfigAttributes.js b/src/ui/common/link-config/LinkConfigAttributes.js
deleted file mode 100644
index 61674229f..000000000
--- a/src/ui/common/link-config/LinkConfigAttributes.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { FormattedMessage } from 'react-intl';
-import { Field } from 'redux-form';
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-
-const LinkConfigAttributes = () => (
-
-
-
-
-
-
-
-
-);
-
-export default LinkConfigAttributes;
diff --git a/src/ui/common/link-config/LinkConfigContentForm.js b/src/ui/common/link-config/LinkConfigContentForm.js
deleted file mode 100644
index 04b5f14bd..000000000
--- a/src/ui/common/link-config/LinkConfigContentForm.js
+++ /dev/null
@@ -1,71 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { reduxForm, Field, FormSection, fieldInputPropTypes } from 'redux-form';
-import { FormattedMessage } from 'react-intl';
-import { Button } from 'patternfly-react';
-
-import LinkConfigAttributes from 'ui/common/link-config/LinkConfigAttributes';
-import ContentsContainer from 'ui/common/content/ContentsContainer';
-
-const ContentsField = ({ input, mainGroup, joinGroups }) => (
-
-);
-
-ContentsField.propTypes = {
- input: PropTypes.shape(fieldInputPropTypes).isRequired,
- mainGroup: PropTypes.string.isRequired,
- joinGroups: PropTypes.arrayOf(PropTypes.string).isRequired,
-};
-
-const LinkConfigContentForm = ({
- onCancel, handleClick, content, mainGroup, joinGroups, attributes,
-}) => (
-
-
-
-
-
-
-
-
-
-
-);
-
-LinkConfigContentForm.propTypes = {
- onCancel: PropTypes.func.isRequired,
- content: PropTypes.string,
- mainGroup: PropTypes.string.isRequired,
- handleClick: PropTypes.func.isRequired,
- joinGroups: PropTypes.arrayOf(PropTypes.string).isRequired,
- attributes: PropTypes.shape({}),
-};
-
-LinkConfigContentForm.defaultProps = {
- content: '',
- attributes: {},
-};
-
-export default reduxForm({
- form: 'LinkConfigContent',
-})(LinkConfigContentForm);
diff --git a/src/ui/common/link-config/LinkConfigContentFormContainer.js b/src/ui/common/link-config/LinkConfigContentFormContainer.js
deleted file mode 100644
index 3b0a4f7f0..000000000
--- a/src/ui/common/link-config/LinkConfigContentFormContainer.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import { omit } from 'lodash';
-import { connect } from 'react-redux';
-import { formValueSelector, submit } from 'redux-form';
-import LinkConfigContentForm from 'ui/common/link-config/LinkConfigContentForm';
-
-const selector = formValueSelector('LinkConfigContent');
-
-export const mapStateToProps = (state, { parameters }) => ({
- initialValues: {
- content: parameters.contentDest,
- attributes: { ...omit(parameters, 'pageDest') },
- },
- content: selector(state, 'content'),
- attributes: selector(state, 'attributes'),
-});
-
-export const mapDispatchToProps = (dispatch, { onSubmit }) => ({
- handleClick: (content) => {
- submit('LinkConfigContent');
- onSubmit(content);
- },
-});
-
-const LinkConfigContentFormContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(LinkConfigContentForm);
-
-export default LinkConfigContentFormContainer;
diff --git a/src/ui/common/link-config/LinkConfigPageForm.js b/src/ui/common/link-config/LinkConfigPageForm.js
deleted file mode 100644
index 7b05d3a7c..000000000
--- a/src/ui/common/link-config/LinkConfigPageForm.js
+++ /dev/null
@@ -1,86 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import {
- reduxForm,
- Field,
- FormSection,
- fieldInputPropTypes,
-} from 'redux-form';
-import { Col, Button } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-
-import PageTreeContainer from 'ui/common/page/PageTreeSelectContainer';
-import FormLabel from 'ui/common/form/FormLabel';
-import LinkConfigAttributes from 'ui/common/link-config/LinkConfigAttributes';
-
-const PageTreeField = ({
- input, mainGroup, joinGroups, pageCode,
-}) => (
-
-);
-
-PageTreeField.propTypes = {
- input: PropTypes.shape(fieldInputPropTypes).isRequired,
- mainGroup: PropTypes.string.isRequired,
- joinGroups: PropTypes.arrayOf(PropTypes.string).isRequired,
- pageCode: PropTypes.string.isRequired,
-};
-
-const label = ;
-
-const LinkConfigPageForm = ({
- onCancel, handleSubmit, mainGroup, joinGroups, page, attributes,
-}) => (
-
-);
-
-LinkConfigPageForm.propTypes = {
- onCancel: PropTypes.func.isRequired,
- handleSubmit: PropTypes.func.isRequired,
- mainGroup: PropTypes.string.isRequired,
- joinGroups: PropTypes.arrayOf(PropTypes.string).isRequired,
- page: PropTypes.string,
- attributes: PropTypes.shape({}),
-};
-
-LinkConfigPageForm.defaultProps = {
- page: '',
- attributes: {},
-};
-
-export default reduxForm({
- form: 'LinkConfigPage',
-})(LinkConfigPageForm);
diff --git a/src/ui/common/link-config/LinkConfigPageFormContainer.js b/src/ui/common/link-config/LinkConfigPageFormContainer.js
deleted file mode 100644
index 98b687b50..000000000
--- a/src/ui/common/link-config/LinkConfigPageFormContainer.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import { connect } from 'react-redux';
-import { formValueSelector, submit } from 'redux-form';
-import { omit } from 'lodash';
-import LinkConfigPageForm from './LinkConfigPageForm';
-
-const selector = formValueSelector('LinkConfigPage');
-
-export const mapStateToProps = (state, { parameters, joinGroups, mainGroup }) => ({
- initialValues: {
- page: parameters.pageDest || '',
- attributes: { ...omit(parameters, 'pageDest') },
- },
- page: selector(state, 'page') || '',
- attributes: selector(state, 'attributes'),
- joinGroups,
- mainGroup,
-});
-
-export const mapDispatchToProps = (dispatch, { onSubmit, onCancel }) => ({
- handleSubmit: (data) => {
- submit('LinkConfigPage');
- onSubmit(data);
- },
- onCancel,
-});
-
-const LinkConfigPageFormContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(LinkConfigPageForm);
-export default LinkConfigPageFormContainer;
diff --git a/src/ui/common/link-config/LinkConfigUrlForm.js b/src/ui/common/link-config/LinkConfigUrlForm.js
deleted file mode 100644
index f0cef37aa..000000000
--- a/src/ui/common/link-config/LinkConfigUrlForm.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import {
- reduxForm,
- Field,
- FormSection,
-} from 'redux-form';
-import { Button } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-import FormLabel from 'ui/common/form/FormLabel';
-import LinkConfigAttributes from 'ui/common/link-config/LinkConfigAttributes';
-
-const label = ;
-
-const LinkConfigUrlForm = ({
- onCancel, handleSubmit, url, attributes,
-}) => (
-
-);
-
-LinkConfigUrlForm.propTypes = {
- onCancel: PropTypes.func.isRequired,
- handleSubmit: PropTypes.func.isRequired,
- url: PropTypes.string,
- attributes: PropTypes.shape({}),
-};
-
-LinkConfigUrlForm.defaultProps = {
- url: '',
- attributes: {},
-};
-
-export default reduxForm({
- form: 'LinkConfigUrl',
-})(LinkConfigUrlForm);
diff --git a/src/ui/common/link-config/LinkConfigUrlFormContainer.js b/src/ui/common/link-config/LinkConfigUrlFormContainer.js
deleted file mode 100644
index 7e51171ba..000000000
--- a/src/ui/common/link-config/LinkConfigUrlFormContainer.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { connect } from 'react-redux';
-import { formValueSelector, submit } from 'redux-form';
-import LinkConfigUrlForm from 'ui/common/link-config/LinkConfigUrlForm';
-import { omit } from 'lodash';
-
-const selector = formValueSelector('LinkConfigUrl');
-
-export const mapStateToProps = (state, { parameters }) => ({
- initialValues: {
- url: parameters.dest,
- attributes: { ...omit(parameters, 'dest') },
- },
- url: selector(state, 'url'),
- attributes: selector(state, 'attributes'),
-});
-
-export const mapDispatchToProps = (dispatch, { onSubmit, onCancel }) => ({
- handleSubmit: (data) => {
- submit('LinkConfigUrl');
- onSubmit(data);
- },
- onCancel,
-});
-
-const LinkConfigUrlFormContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(LinkConfigUrlForm);
-
-export default LinkConfigUrlFormContainer;
diff --git a/src/ui/common/page/PageTreeSelectContainer.js b/src/ui/common/page/PageTreeSelectContainer.js
deleted file mode 100644
index 033c4a67e..000000000
--- a/src/ui/common/page/PageTreeSelectContainer.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import { connect } from 'react-redux';
-
-import { PageTreeSelector } from '@entando/pagetreeselector';
-import { handleExpandPage, fetchPageTreeAll, collapseAll, clearTree } from 'state/pages/actions';
-import { HOMEPAGE_CODE } from 'state/pages/const';
-import { getPageTreePages } from 'state/pages/selectors';
-import { getLoading } from 'state/loading/selectors';
-
-
-export const mapStateToProps = (state, { input }) => ({
- pages: getPageTreePages(state),
- loading: getLoading(state).pageTree,
- input,
-});
-
-export const mapDispatchToProps = (dispatch, { status, ownerGroup, joinGroups }) => ({
- onDidMount: () => {
- dispatch(clearTree());
- dispatch(handleExpandPage(HOMEPAGE_CODE, status, ownerGroup, joinGroups));
- },
- onExpandPage: pageCode => dispatch(handleExpandPage(pageCode, status, ownerGroup, joinGroups)),
- onExpandAll: () => dispatch(fetchPageTreeAll()),
- onCollapseAll: () => dispatch(collapseAll()),
-});
-
-
-const PageTreeSelectContainer = connect(mapStateToProps, mapDispatchToProps)(PageTreeSelector);
-
-
-export default PageTreeSelectContainer;
diff --git a/src/ui/common/references/GenericRefsTable.js b/src/ui/common/references/GenericRefsTable.js
deleted file mode 100644
index ad397c1fb..000000000
--- a/src/ui/common/references/GenericRefsTable.js
+++ /dev/null
@@ -1,139 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
-import { Spinner, Alert, Paginator } from 'patternfly-react';
-import { Table } from 'react-bootstrap';
-import paginatorMessages from 'ui/paginatorMessages';
-
-class GenericRefsTable extends Component {
- constructor(props) {
- super(props);
- this.changePage = this.changePage.bind(this);
- this.changePageSize = this.changePageSize.bind(this);
- }
-
- componentDidMount() {
- const { componentDidMount } = this.props;
- componentDidMount();
- }
-
- changePage(page) {
- const { onPageChange, pagination: { pageSize }, referenceKey } = this.props;
- onPageChange(referenceKey, { page, pageSize });
- }
-
- changePageSize(pageSize) {
- const { onPageChange, referenceKey } = this.props;
- onPageChange(referenceKey, { page: 1, pageSize });
- }
-
- render() {
- const {
- referenceKey, references, loading, columns, pagination,
- } = this.props;
-
- const { page, pageSize: perPage, totalItems } = pagination;
- const paginationObj = {
- page,
- perPage,
- perPageOptions: [5, 10, 15, 25, 50],
- };
-
- const renderRows = () => references.map((reference, index) => (
-
- {Object.keys(columns)
- .filter(refKey => (Object.keys(reference)).includes(refKey))
- .map((objKey) => {
- const { tdClass, render } = columns[objKey] || {};
- return (
-
- {render(reference[objKey], reference.id)}
- |
- );
- })}
-
- ));
-
- const renderTable = () => {
- if (references.length > 0) {
- const messages = Object.keys(paginatorMessages).reduce((acc, curr) => (
- { ...acc, [curr]: this.props.intl.formatMessage(paginatorMessages[curr]) }
- ), {});
-
- return (
-
-
-
-
- {
- Object.keys(columns)
- .filter(refKey => (Object.keys(references[0])).includes(refKey))
- .map(objKey => (
-
-
- |
- ))}
-
-
-
- {renderRows()}
-
-
-
-
- );
- }
- return (
-
-
-
- );
- };
-
- return (
-
-
- {renderTable()}
-
-
- );
- }
-}
-
-GenericRefsTable.propTypes = {
- intl: intlShape.isRequired,
- componentDidMount: PropTypes.func,
- onPageChange: PropTypes.func.isRequired,
- loading: PropTypes.bool,
- references: PropTypes.arrayOf(PropTypes.shape({})),
- referenceKey: PropTypes.string,
- columns: PropTypes.shape({}),
- pagination: PropTypes.shape({
- page: PropTypes.number,
- totalItems: PropTypes.number,
- pageSize: PropTypes.number,
- }).isRequired,
-};
-
-GenericRefsTable.defaultProps = {
- componentDidMount: () => {},
- loading: false,
- references: [],
- referenceKey: '',
- columns: {},
-};
-
-export default injectIntl(GenericRefsTable);
diff --git a/src/ui/common/rich-text-editor/EditorToolbar.js b/src/ui/common/rich-text-editor/EditorToolbar.js
deleted file mode 100644
index 48a58373a..000000000
--- a/src/ui/common/rich-text-editor/EditorToolbar.js
+++ /dev/null
@@ -1,256 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { injectIntl, intlShape } from 'react-intl';
-import { compact } from 'lodash';
-
-const enlinkIcon = (
-
-);
-
-const enunlinkIcon = (
-
-);
-
-const undoIcon = (
-
-);
-
-const redoIcon = (
-
-);
-
-const tableIcon = (
-
-);
-
-const tableInsertRowIcon = (
-
-);
-
-const tableInsertColumnIcon = (
-
-);
-
-const tableDeleteRowIcon = (
-
-);
-
-const tableDeleteColumnIcon = (
-
-);
-
-const tableDeleteIcon = (
-
-);
-
-const hrIcon = (
-
-);
-
-const maximizeIcon = (
-
-);
-
-const ToolbarGroup = ({ children, className }) => (
-
- {children}
-
-);
-
-ToolbarGroup.propTypes = {
- children: PropTypes.node.isRequired,
- className: PropTypes.string,
-};
-
-ToolbarGroup.defaultProps = {
- className: '',
-};
-
-const renderToolbarButton = (format, value, icon, tooltipText) => (
-
-);
-
-const EditorToolbar = ({ intl, name, extraOptions }) => (
-
-
- {renderToolbarButton('history', 'undo', undoIcon, intl.formatMessage({ id: 'rte.undoWithExample' }))}
- {renderToolbarButton('history', 'redo', redoIcon, intl.formatMessage({ id: 'rte.redoWithExample' }))}
-
-
- {renderToolbarButton('entable', 'table', tableIcon, intl.formatMessage({ id: 'rte.insertTable' }))}
- {renderToolbarButton('entable', 'table-insert-row', tableInsertRowIcon, intl.formatMessage({ id: 'rte.insertTableRow' }))}
- {renderToolbarButton('entable', 'table-insert-column', tableInsertColumnIcon, intl.formatMessage({ id: 'rte.insertTableColumn' }))}
- {renderToolbarButton('entable', 'table-delete-row', tableDeleteRowIcon, intl.formatMessage({ id: 'rte.deleteTableRow' }))}
- {renderToolbarButton('entable', 'table-delete-column', tableDeleteColumnIcon, intl.formatMessage({ id: 'rte.deleteTableColumn' }))}
- {renderToolbarButton('entable', 'table-delete', tableDeleteIcon, intl.formatMessage({ id: 'rte.deleteTable' }))}
- {renderToolbarButton('divider', undefined, hrIcon, intl.formatMessage({ id: 'rte.insertHorizontalLine' }))}
- {renderToolbarButton('specialChar', undefined, 'Ω', intl.formatMessage({ id: 'rte.insertSpecialChar' }))}
-
-
- {renderToolbarButton('maximize', undefined, maximizeIcon, intl.formatMessage({ id: 'rte.maximize' }))}
-
-
- {renderToolbarButton('bold', undefined, undefined, intl.formatMessage({ id: 'rte.boldWithExample' }))}
- {renderToolbarButton('italic', undefined, undefined, intl.formatMessage({ id: 'rte.italicWithExample' }))}
- {renderToolbarButton('strike', undefined, undefined, intl.formatMessage({ id: 'rte.strikethrough' }))}
-
-
- {renderToolbarButton('clean', undefined, undefined, intl.formatMessage({ id: 'rte.removeFormat' }))}
-
-
- {renderToolbarButton('list', 'ordered', undefined, intl.formatMessage({ id: 'rte.toggleNumberList' }))}
- {renderToolbarButton('list', 'bullet', undefined, intl.formatMessage({ id: 'rte.toggleBulletedList' }))}
-
-
- {renderToolbarButton('indent', '-1', undefined, intl.formatMessage({ id: 'rte.decreaseIndent' }))}
- {renderToolbarButton('indent', '+1', undefined, intl.formatMessage({ id: 'rte.increaseIndent' }))}
-
-
- {renderToolbarButton('blockquote', undefined, undefined, intl.formatMessage({ id: 'rte.blockQuote' }))}
-
-
- {renderToolbarButton('enlink', 'link', enlinkIcon, intl.formatMessage({ id: 'rte.link' }))}
- {renderToolbarButton('enlink', 'unlink', enunlinkIcon, intl.formatMessage({ id: 'rte.unlink' }))}
-
-
- {renderToolbarButton('viewSource', undefined, undefined, intl.formatMessage({ id: 'rte.source' }))}
-
- {extraOptions && (
- {extraOptions}
- )}
-
-);
-
-EditorToolbar.propTypes = {
- intl: intlShape.isRequired,
- name: PropTypes.string,
- extraOptions: PropTypes.oneOfType([
- PropTypes.arrayOf(PropTypes.node),
- PropTypes.node,
- ]),
-};
-
-EditorToolbar.defaultProps = {
- name: 'editor-toolbar',
- extraOptions: null,
-};
-
-export default injectIntl(EditorToolbar);
diff --git a/src/ui/common/rich-text-editor/SpecialCharSelectorModal.js b/src/ui/common/rich-text-editor/SpecialCharSelectorModal.js
deleted file mode 100644
index 6073777ea..000000000
--- a/src/ui/common/rich-text-editor/SpecialCharSelectorModal.js
+++ /dev/null
@@ -1,191 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Modal, Button } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-
-import GenericModal from 'ui/common/modal/GenericModal';
-
-const SPECIAL_CHARS_LABELS = {
- Ŵ: 'Latin capital letter W with circumflex',
- ŵ: 'Latin small letter w with circumflex',
- Ŷ: 'Latin capital letter Y with circumflex',
- ŷ: 'Latin small letter y with circumflex',
- '‛': 'Single high-reversed-9 quotation mark',
- '►': 'Black right-pointing pointer',
- '€': 'Euro sign',
- '‘': 'Left single quotation mark',
- '’': 'Right single quotation mark',
- '“': 'Left double quotation mark',
- '”': 'Right double quotation mark',
- '–': 'En dash',
- '—': 'Em dash',
- '¡': 'Inverted exclamation mark',
- '¢': 'Cent sign',
- '£': 'Pound sign',
- '¤': 'Currency sign',
- '¥': 'Yen sign',
- '¦': 'Broken bar',
- '§': 'Section sign',
- '¨': 'Diaeresis',
- '©': 'Copyright sign',
- ª: 'Feminine ordinal indicator',
- '«': 'Left-pointing double angle quotation mark',
- '¬': 'Not sign',
- '®': 'Registered sign',
- '¯': 'Macron',
- '°': 'Degree sign',
- '²': 'Superscript two',
- '³': 'Superscript three',
- '´': 'Acute accent',
- µ: 'Micro sign',
- '¶': 'Pilcrow sign',
- '·': 'Middle dot',
- '¸': 'Cedilla',
- '¹': 'Superscript one',
- º: 'Masculine ordinal indicator',
- '»': 'Right-pointing double angle quotation mark',
- '¼': 'Vulgar fraction one quarter',
- '½': 'Vulgar fraction one half',
- '¾': 'Vulgar fraction three quarters',
- '¿': 'Inverted question mark',
- À: 'Latin capital letter A with grave accent',
- Á: 'Latin capital letter A with acute accent',
- Â: 'Latin capital letter A with circumflex',
- Ã: 'Latin capital letter A with tilde',
- Ä: 'Latin capital letter A with diaeresis',
- Å: 'Latin capital letter A with ring above',
- Æ: 'Latin capital letter Æ',
- Ç: 'Latin capital letter C with cedilla',
- È: 'Latin capital letter E with grave accent',
- É: 'Latin capital letter E with acute accent',
- Ê: 'Latin capital letter E with circumflex',
- Ë: 'Latin capital letter E with diaeresis',
- Ì: 'Latin capital letter I with grave accent',
- Í: 'Latin capital letter I with acute accent',
- Î: 'Latin capital letter I with circumflex',
- Ï: 'Latin capital letter I with diaeresis',
- Ð: 'Latin capital letter Eth',
- Ñ: 'Latin capital letter N with tilde',
- Ò: 'Latin capital letter O with grave accent',
- Ó: 'Latin capital letter O with acute accent',
- Ô: 'Latin capital letter O with circumflex',
- Õ: 'Latin capital letter O with tilde',
- Ö: 'Latin capital letter O with diaeresis',
- '×': 'Multiplication sign',
- Ø: 'Latin capital letter O with stroke',
- Ù: 'Latin capital letter U with grave accent',
- Ú: 'Latin capital letter U with acute accent',
- Û: 'Latin capital letter U with circumflex',
- Ü: 'Latin capital letter U with diaeresis',
- Ý: 'Latin capital letter Y with acute accent',
- Þ: 'Latin capital letter Thorn',
- ß: 'Latin small letter sharp s',
- à: 'Latin small letter a with grave accent',
- á: 'Latin small letter a with acute accent',
- â: 'Latin small letter a with circumflex',
- ã: 'Latin small letter a with tilde',
- ä: 'Latin small letter a with diaeresis',
- å: 'Latin small letter a with ring above',
- æ: 'Latin small letter æ',
- ç: 'Latin small letter c with cedilla',
- è: 'Latin small letter e with grave accent',
- é: 'Latin small letter e with acute accent',
- ê: 'Latin small letter e with circumflex',
- ë: 'Latin small letter e with diaeresis',
- ì: 'Latin small letter i with grave accent',
- í: 'Latin small letter i with acute accent',
- î: 'Latin small letter i with circumflex',
- ï: 'Latin small letter i with diaeresis',
- ð: 'Latin small letter eth',
- ñ: 'Latin small letter n with tilde',
- ò: 'Latin small letter o with grave accent',
- ó: 'Latin small letter o with acute accent',
- ô: 'Latin small letter o with circumflex',
- õ: 'Latin small letter o with tilde',
- ö: 'Latin small letter o with diaeresis',
- '÷': 'Division sign',
- ø: 'Latin small letter o with stroke',
- ù: 'Latin small letter u with grave accent',
- ú: 'Latin small letter u with acute accent',
- û: 'Latin small letter u with circumflex',
- ü: 'Latin small letter u with diaeresis',
- ý: 'Latin small letter y with acute accent',
- þ: 'Latin small letter thorn',
- ÿ: 'Latin small letter y with diaeresis',
- Œ: 'Latin capital ligature OE',
- œ: 'Latin small ligature oe',
- '‚': 'Single low-9 quotation mark',
- '„': 'Double low-9 quotation mark',
- '…': 'Horizontal ellipsis',
- '™': 'Trade mark sign',
- '•': 'Bullet',
- '→': 'Rightwards arrow',
- '⇒': 'Rightwards double arrow',
- '⇔': 'Left right double arrow',
- '♦': 'Black diamond suit',
- '≈': 'Almost equal to',
-};
-
-const SPECIAL_CHARS = [
- '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', '-', '.', '/',
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';',
- '<', '=', '>', '?', '@',
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
- '[', ']', '^', '_', '`',
- 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
- 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
- '{', '|', '}', '~',
- '€', '‘', '’', '“', '”', '–', '—', '¡', '¢', '£',
- '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬', '®', '¯',
- '°', '²', '³', '´', 'µ', '¶', '·', '¸', '¹', 'º', '»',
- '¼', '½', '¾', '¿', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å',
- 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï',
- 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', 'Ø', 'Ù',
- 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã',
- 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í',
- 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷',
- 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', 'Œ', 'œ',
- 'Ŵ', 'Ŷ', 'ŵ', 'ŷ', '‚', '‛', '„', '…', '™', '►', '•',
- '→', '⇒', '⇔', '♦', '≈',
-];
-
-const ID = 'SpecialCharSelectorModal';
-
-const SpecialCharSelectorModal = ({ isVisible, onSelect, onClose }) => {
- const renderedModalTitle = (
-
-
-
- );
-
- return (
- }
- onCloseModal={onClose}
- >
- {SPECIAL_CHARS.map(char => (
-
- ))}
-
- );
-};
-
-SpecialCharSelectorModal.propTypes = {
- isVisible: PropTypes.bool.isRequired,
- onSelect: PropTypes.func.isRequired,
- onClose: PropTypes.func.isRequired,
-};
-
-export default SpecialCharSelectorModal;
diff --git a/src/ui/component-repository/CategoryTabs.js b/src/ui/component-repository/CategoryTabs.js
deleted file mode 100644
index b1b0c653f..000000000
--- a/src/ui/component-repository/CategoryTabs.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { injectIntl, intlShape } from 'react-intl';
-import { Tabs, Tab } from 'patternfly-react';
-
-class CategoryTabs extends Component {
- componentWillMount() {
- this.props.onWillMount();
- }
-
- render() {
- const {
- componentRepositoryCategories,
- selectedECRCategory,
- onSelect,
- intl,
- } = this.props;
- const formatText = id => intl.formatMessage({ id });
-
- const categories = componentRepositoryCategories.map(category => (
- { label: formatText(`componentRepository.categories.${category}`, category), value: category }
- ));
-
- const handleSelect = (key) => {
- onSelect(categories[key].value);
- };
-
- const tabs = categories.map((category, index) => (
-
- ));
-
- const index = categories.indexOf(selectedECRCategory);
- const selectedECRCategoryIndex = index !== -1 ? index : 0;
-
- return (
-
- handleSelect(key)}
- >
- { tabs }
-
-
- );
- }
-}
-
-CategoryTabs.propTypes = {
- intl: intlShape.isRequired,
- componentRepositoryCategories: PropTypes.arrayOf(PropTypes.string).isRequired,
- selectedECRCategory: PropTypes.string.isRequired,
- onWillMount: PropTypes.func.isRequired,
- onSelect: PropTypes.func.isRequired,
-};
-
-export default injectIntl(CategoryTabs);
diff --git a/src/ui/component-repository/ComponentRepositoryFilter.js b/src/ui/component-repository/ComponentRepositoryFilter.js
deleted file mode 100644
index bd984aafd..000000000
--- a/src/ui/component-repository/ComponentRepositoryFilter.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import React, { Component } from 'react';
-import { injectIntl, intlShape, FormattedMessage } from 'react-intl';
-import PropTypes from 'prop-types';
-import { reduxForm } from 'redux-form';
-import { Alert } from 'patternfly-react';
-import CheckboxGroup from 'ui/component-repository/common/CheckboxGroup';
-import SidebarFilter from 'ui/component-repository/common/SidebarFilter';
-
-class ComponentRepositoryFilterBody extends Component {
- componentDidMount() {
- this.props.onDidMount();
- }
-
- render() {
- const { intl, componentRepositories, onChange } = this.props;
- const formatText = id => intl.formatMessage({ id });
-
- const options = componentRepositories.map(componentRepository => ({
- label: componentRepository.name,
- value: componentRepository.id,
- }));
-
- const renderECRCheckBox = (!componentRepositories || componentRepositories.length === 0)
- ?
- (
-
-
- ) : ();
-
- return (
-
- {renderECRCheckBox}
-
- );
- }
-}
-
-ComponentRepositoryFilterBody.propTypes = {
- intl: intlShape.isRequired,
- componentRepositories: PropTypes.arrayOf(PropTypes.object).isRequired,
- onDidMount: PropTypes.func.isRequired,
- onChange: PropTypes.func.isRequired,
-};
-
-export default reduxForm({
- form: 'componentRepositoryFilter',
- enableReinitialize: true,
- keepDirtyOnReinitialize: true,
-})(injectIntl(ComponentRepositoryFilterBody));
diff --git a/src/ui/component-repository/ComponentRepositoryFilterContainer.js b/src/ui/component-repository/ComponentRepositoryFilterContainer.js
deleted file mode 100644
index 8cbaee289..000000000
--- a/src/ui/component-repository/ComponentRepositoryFilterContainer.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { connect } from 'react-redux';
-import { getComponentRepositoryFilters } from 'state/component-repository/components/selectors';
-import { getComponentRepositoryList } from 'state/component-repository/component-repositories/selectors';
-import { filterByComponentRepositories } from 'state/component-repository/actions';
-import { fetchComponentRepositories } from 'state/component-repository/component-repositories/actions';
-import ComponentRepositoryFilter from 'ui/component-repository/ComponentRepositoryFilter';
-
-export const mapDispatchToProps = dispatch => ({
- onDidMount: () => dispatch(fetchComponentRepositories()),
- onChange: (eventOrValue) => {
- const { componentRepositories } = eventOrValue;
- if (componentRepositories) {
- dispatch(filterByComponentRepositories(componentRepositories));
- }
- },
-});
-
-export const mapStateToProps = state => ({
- componentRepositories: getComponentRepositoryList(state),
- initialValues: { componentRepositories: getComponentRepositoryFilters(state) },
-});
-
-export default connect(mapStateToProps, mapDispatchToProps, null, {
- pure: false,
-})(ComponentRepositoryFilter);
diff --git a/src/ui/component-repository/RatingFilter.js b/src/ui/component-repository/RatingFilter.js
deleted file mode 100644
index 87ed13c6c..000000000
--- a/src/ui/component-repository/RatingFilter.js
+++ /dev/null
@@ -1,67 +0,0 @@
-import { rangeRight } from 'lodash';
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { defineMessages, injectIntl, intlShape } from 'react-intl';
-import SidebarFilter from 'ui/component-repository/common/SidebarFilter';
-import RatingFilterItem from 'ui/component-repository/RatingFilterItem';
-
-const msgs = defineMessages({
- ratingFilterTitle: {
- id: 'componentRepository.sidebar.ratingFilter.title',
- defaultMessage: 'Rating Filter Title',
- },
-});
-
-class RatingFilter extends Component {
- toggleRatingFilter(selectedRating) {
- const { rating, onSelect } = this.props;
- const selectedRatingOrNull = rating === selectedRating ? null : selectedRating;
- onSelect(selectedRatingOrNull);
- }
-
- render() {
- const {
- minRating,
- maxRating,
- rating,
- intl,
- } = this.props;
-
- const ratingFilterItems = rangeRight(minRating, maxRating + 1).map(itemRating => (
-
- this.toggleRatingFilter(itemRating)}
- selected={itemRating === rating}
- rating={itemRating}
- maxRating={maxRating}
- />
-
- ));
-
- return (
-
-
-
- { ratingFilterItems }
-
-
-
- );
- }
-}
-
-RatingFilter.propTypes = {
- onSelect: PropTypes.func.isRequired,
- rating: PropTypes.number,
- minRating: PropTypes.number,
- maxRating: PropTypes.number,
- intl: intlShape.isRequired,
-};
-
-RatingFilter.defaultProps = {
- rating: null,
- minRating: 1,
- maxRating: 5,
-};
-
-export default injectIntl(RatingFilter);
diff --git a/src/ui/component-repository/RatingFilterContainer.js b/src/ui/component-repository/RatingFilterContainer.js
deleted file mode 100644
index 5c1069a86..000000000
--- a/src/ui/component-repository/RatingFilterContainer.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { connect } from 'react-redux';
-import RatingFilter from 'ui/component-repository/RatingFilter';
-import { filterByRating } from 'state/component-repository/actions';
-import { getECRRatingFilter } from 'state/component-repository/components/selectors';
-
-export const mapDispatchToProps = dispatch => ({
- onSelect: (rating) => {
- dispatch(filterByRating(rating));
- },
-});
-
-export const mapStateToProps = state => ({
- rating: getECRRatingFilter(state),
-});
-
-const RatingFilterContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(RatingFilter);
-
-export default RatingFilterContainer;
diff --git a/src/ui/component-repository/RatingFilterItem.js b/src/ui/component-repository/RatingFilterItem.js
deleted file mode 100644
index 3fd178fd8..000000000
--- a/src/ui/component-repository/RatingFilterItem.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import { range } from 'lodash';
-import React from 'react';
-import PropTypes from 'prop-types';
-import { defineMessages, injectIntl, intlShape } from 'react-intl';
-import StarIcon from 'ui/component-repository/common/StarIcon';
-
-const msgs = defineMessages({
- itemLabel: {
- id: 'componentRepository.sidebar.ratingFilter.itemLabel',
- defaultMessage: 'Item Label',
- },
-});
-
-const RatingFilterItem = ({
- intl,
- selected,
- rating,
- maxRating,
- onSelect,
-}) => {
- const selectedClass = selected ? ' RatingFilterItem--selected' : '';
- const className = `RatingFilterItem${selectedClass}`;
- const enterKey = 'Enter';
- const itemLabel = intl.formatMessage(msgs.itemLabel);
- return (
- onSelect(rating)}
- onKeyDown={e => e.key === enterKey && onSelect(rating)}
- aria-label={`${rating} ${itemLabel}`}
- >
- {
- range(maxRating).map(currentRating => (
-
- ))
- }
- {itemLabel}
-
- );
-};
-
-RatingFilterItem.propTypes = {
- intl: intlShape.isRequired,
- selected: PropTypes.bool,
- rating: PropTypes.number.isRequired,
- maxRating: PropTypes.number.isRequired,
- onSelect: PropTypes.func.isRequired,
-};
-
-RatingFilterItem.defaultProps = {
- selected: false,
-};
-
-export default injectIntl(RatingFilterItem);
diff --git a/src/ui/component-repository/common/StarIcon.js b/src/ui/component-repository/common/StarIcon.js
deleted file mode 100644
index 686d26bbc..000000000
--- a/src/ui/component-repository/common/StarIcon.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-
-const StarIcon = ({ filled, filledHalf }) => {
- const filledClass = filled ? ' StarIcon--filled' : '';
- const icon = filledHalf ? 'fa-star-half' : 'fa-star';
- const className = `fa ${icon} StarIcon${filledClass}`;
- return ;
-};
-
-StarIcon.propTypes = {
- filled: PropTypes.bool,
- filledHalf: PropTypes.bool,
-};
-
-StarIcon.defaultProps = {
- filled: false,
- filledHalf: false,
-};
-
-export default StarIcon;
diff --git a/src/ui/component-repository/common/StarRating.js b/src/ui/component-repository/common/StarRating.js
deleted file mode 100644
index ebd6363cc..000000000
--- a/src/ui/component-repository/common/StarRating.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import { range } from 'lodash';
-import React from 'react';
-import PropTypes from 'prop-types';
-import StarIcon from 'ui/component-repository/common/StarIcon';
-
-const StarRating = ({ rating }) => {
- const roundedRating = Math.round(rating);
- return (
-
- {
- range(rating).map(currentRating => (
-
- ))
- }
-
- );
-};
-
-StarRating.propTypes = {
- rating: PropTypes.number.isRequired,
-};
-
-export default StarRating;
diff --git a/src/ui/content-settings/ContentSettingsCropRatioInput.js b/src/ui/content-settings/ContentSettingsCropRatioInput.js
deleted file mode 100644
index 42ce3a272..000000000
--- a/src/ui/content-settings/ContentSettingsCropRatioInput.js
+++ /dev/null
@@ -1,138 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { Form, FormGroup, FormControl, Button, Icon } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-
-const propTypes = {
- value: PropTypes.string,
- isNew: PropTypes.bool,
- onAdd: PropTypes.func,
- onDelete: PropTypes.func,
- onSave: PropTypes.func,
- onError: PropTypes.func,
-};
-
-const defaultProps = {
- value: '',
- isNew: false,
- onAdd: () => {},
- onDelete: () => {},
- onSave: () => {},
- onError: () => {},
-};
-
-class ContentSettingsCropRatioInput extends Component {
- constructor(props) {
- super(props);
- this.state = {
- value: props.value,
- };
-
- this.handleInputChange = this.handleInputChange.bind(this);
- this.handleInputBlur = this.handleInputBlur.bind(this);
- this.handleAddClick = this.handleAddClick.bind(this);
- this.handleDeleteClick = this.handleDeleteClick.bind(this);
- this.handleSubmit = this.handleSubmit.bind(this);
- }
-
- getValidationState() {
- const { value: initialValue } = this.props;
- const { value } = this.state;
- if ((value.length > 0 || initialValue.length > 0) && value !== initialValue) {
- const isRatio = /^\d+[:]\d+$/.test(value);
- if (isRatio) return 'success';
- return 'error';
- }
-
- return null;
- }
-
- handleInputChange(e) {
- this.setState({
- value: e.target.value,
- });
- }
-
- handleInputBlur() {
- const { isNew, onError } = this.props;
- if (this.getValidationState() === 'success') {
- const { onSave } = this.props;
- const { value } = this.state;
- onSave(value);
- } else if (!isNew) {
- onError('cropvalueerror');
- }
- }
-
- handleAddClick() {
- this.handleSubmit();
- }
-
- handleDeleteClick() {
- const { onDelete } = this.props;
- onDelete();
- }
-
- handleSubmit(e) {
- if (e) e.preventDefault();
-
- const { isNew, onError } = this.props;
- if (isNew && this.getValidationState() === 'success') {
- const { onAdd } = this.props;
- const { value } = this.state;
- onAdd(value);
-
- this.setState({
- value: '',
- });
- } else {
- onError('cropvalueerror');
- }
- }
-
- render() {
- const { isNew } = this.props;
- const { value } = this.state;
-
- const renderedBtn = isNew ? (
-
- ) : (
-
- );
-
- return (
-
- );
- }
-}
-
-ContentSettingsCropRatioInput.propTypes = propTypes;
-ContentSettingsCropRatioInput.defaultProps = defaultProps;
-
-export default ContentSettingsCropRatioInput;
diff --git a/src/ui/content-settings/ContentSettingsCropRatios.js b/src/ui/content-settings/ContentSettingsCropRatios.js
deleted file mode 100644
index efef1d92b..000000000
--- a/src/ui/content-settings/ContentSettingsCropRatios.js
+++ /dev/null
@@ -1,71 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Row, Col } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-
-import RatioInput from 'ui/content-settings/ContentSettingsCropRatioInput';
-
-const propTypes = {
- cropRatios: PropTypes.arrayOf(PropTypes.string).isRequired,
- onAdd: PropTypes.func.isRequired,
- onDelete: PropTypes.func.isRequired,
- onUpdate: PropTypes.func.isRequired,
- onError: PropTypes.func.isRequired,
-};
-
-const ContentSettingsCropRatios = ({
- cropRatios, onAdd, onDelete, onUpdate, onError,
-}) => (
-
-
-
-
-
-
-
-
-
-
-
-
- {cropRatios.map(cropRatio => (
-
-
- onDelete(cropRatio)}
- onSave={newValue => onUpdate(cropRatio, newValue)}
- onError={onError}
- />
-
-
- ))}
-
-
-
-
-
-
-);
-
-ContentSettingsCropRatios.propTypes = propTypes;
-
-export default ContentSettingsCropRatios;
diff --git a/src/ui/content-settings/ContentSettingsCropRatiosContainer.js b/src/ui/content-settings/ContentSettingsCropRatiosContainer.js
deleted file mode 100644
index 1f4387ef1..000000000
--- a/src/ui/content-settings/ContentSettingsCropRatiosContainer.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import { connect } from 'react-redux';
-import { addToast, TOAST_SUCCESS, TOAST_ERROR } from '@entando/messages';
-import { defineMessages, injectIntl } from 'react-intl';
-
-import { getCropRatios } from 'state/content-settings/selectors';
-import { addCropRatio, removeCropRatio, updateCropRatio } from 'state/content-settings/actions';
-import ContentSettingsCropRatios from 'ui/content-settings/ContentSettingsCropRatios';
-
-const cropRatioSuccessMsgs = defineMessages({
- added: {
- id: 'cms.contentsettings.ratio.added.success',
- defaultMessage: 'Crop ratio added successfully',
- },
- deleted: {
- id: 'cms.contentsettings.ratio.deleted.success',
- defaultMessage: 'Crop ratio deleted successfully',
- },
- updated: {
- id: 'cms.contentsettings.ratio.updated.success',
- defaultMessage: 'Crop ratio updated successfully',
- },
-});
-
-const mapStateToProps = state => ({
- cropRatios: getCropRatios(state),
-});
-
-const mapDispatchToProps = (dispatch, { intl }) => ({
- onAdd: (cropRatio) => {
- dispatch(addCropRatio(cropRatio)).then((res) => {
- if (res) {
- dispatch(addToast(intl.formatMessage(cropRatioSuccessMsgs.added), TOAST_SUCCESS));
- }
- });
- },
- onDelete: (cropRatio) => {
- dispatch(removeCropRatio(cropRatio)).then((res) => {
- if (res) {
- dispatch(addToast(intl.formatMessage(cropRatioSuccessMsgs.deleted), TOAST_SUCCESS));
- }
- });
- },
- onUpdate: (cropRatio, newValue) => {
- dispatch(updateCropRatio(cropRatio, newValue)).then((res) => {
- if (res) {
- dispatch(addToast(intl.formatMessage(cropRatioSuccessMsgs.updated), TOAST_SUCCESS));
- }
- });
- },
- onError: (msg) => {
- const errorMsg = defineMessages({
- crop: {
- id: `cms.contentsettings.${msg}`,
- defaultMessage: 'Crop Error',
- },
- });
- dispatch(addToast(intl.formatMessage(errorMsg.crop), TOAST_ERROR));
- },
-});
-
-const ContentSettingsCropRatiosContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
-)(ContentSettingsCropRatios);
-
-export default injectIntl(ContentSettingsCropRatiosContainer);
diff --git a/src/ui/content-settings/ContentSettingsGeneral.js b/src/ui/content-settings/ContentSettingsGeneral.js
deleted file mode 100644
index 1a69f9e79..000000000
--- a/src/ui/content-settings/ContentSettingsGeneral.js
+++ /dev/null
@@ -1,218 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage, injectIntl, intlShape, defineMessages } from 'react-intl';
-import { Row, Col, Button, Icon, Spinner } from 'patternfly-react';
-
-import RadioInput from 'ui/common/form/RenderRadioInput';
-
-const messages = defineMessages({
- none: {
- id: 'cms.label.none',
- defaultMessage: 'None',
- },
- texteditor: {
- id: 'cms.label.textEditor',
- defaultMessage: 'Text Editor',
- },
- saving: {
- id: 'cms.label.saving',
- defaultMessage: 'Waiting',
- },
- reloading: {
- id: 'cms.label.reloading',
- defaultMessage: 'Refreshing',
- },
-});
-
-class ContentSettingsGeneral extends Component {
- componentDidMount() {
- const { onDidMount } = this.props;
- onDidMount();
- }
-
- render() {
- const {
- intl,
- referenceStatus,
- indexesStatus,
- indexesLastReloadDate,
- indexesLastReloadResult,
- editorSettings,
- onEditorChange,
- onReloadReferences,
- onReloadIndexes,
- isReloadingReferences,
- isReloadingIndexes,
- isEditorChanging,
- loading,
- } = this.props;
-
- const editorInput = {
- value: editorSettings.key,
- name: 'editor',
- onChange: onEditorChange,
- };
-
- const EDITOR_OPTIONS = [
- {
- id: 'none',
- label: intl.formatMessage(messages.none),
- },
- {
- id: 'fckeditor',
- label: intl.formatMessage(messages.texteditor),
- },
- ];
-
- const saving = intl.formatMessage(messages.saving);
- const reloading = intl.formatMessage(messages.reloading);
-
- const reloadStatusId = 'cms.contentsettings.label.reloadstatus';
-
- let lastReloadRemarkId = '';
- if (indexesLastReloadDate) {
- lastReloadRemarkId = `${reloadStatusId}.remark.${
- indexesLastReloadResult ? 'success' : 'failed'
- }`;
- }
-
- const statuses = defineMessages({
- reference: {
- id: `${reloadStatusId}.${referenceStatus}`,
- },
- indexes: {
- id: `${reloadStatusId}.${indexesStatus}`,
- },
- });
-
- const generateEditorSwitch = () => (
-
-
-
-
-
-
-
-
{' '}
- {isEditorChanging ? (
-
- ({saving}... )
-
- ) : (
- ''
- )}
-
-
- );
-
- return (
-
-
-
-
-
-
-
- {' '}
- {isReloadingReferences ? (
-
- ({reloading}... )
-
- ) : (
- ({intl.formatMessage(statuses.reference)})
- )}
-
-
-
-
-
-
-
-
- {' '}
- {isReloadingIndexes ? (
-
- ({reloading}... )
-
- ) : (
- ({intl.formatMessage(statuses.indexes)})
- )}
-
-
- {lastReloadRemarkId ? (
-
-
-
-
-
-
-
-
- ) : (
- ''
- )}
-
- {generateEditorSwitch()}
-
-
- );
- }
-}
-
-ContentSettingsGeneral.propTypes = {
- intl: intlShape.isRequired,
- onDidMount: PropTypes.func.isRequired,
- editorSettings: PropTypes.shape({
- label: PropTypes.string,
- key: PropTypes.string,
- }),
- indexesStatus: PropTypes.number,
- indexesLastReloadDate: PropTypes.string,
- indexesLastReloadResult: PropTypes.bool,
- referenceStatus: PropTypes.number,
- onReloadReferences: PropTypes.func.isRequired,
- onReloadIndexes: PropTypes.func.isRequired,
- onEditorChange: PropTypes.func.isRequired,
- isReloadingReferences: PropTypes.bool,
- isReloadingIndexes: PropTypes.bool,
- isEditorChanging: PropTypes.bool,
- loading: PropTypes.bool,
-};
-
-ContentSettingsGeneral.defaultProps = {
- indexesStatus: 1,
- referenceStatus: 1,
- editorSettings: { label: '', key: '' },
- indexesLastReloadDate: '',
- indexesLastReloadResult: PropTypes.bool,
- isReloadingReferences: false,
- isReloadingIndexes: false,
- isEditorChanging: false,
- loading: false,
-};
-
-export default injectIntl(ContentSettingsGeneral);
diff --git a/src/ui/content-settings/ContentSettingsGeneralContainer.js b/src/ui/content-settings/ContentSettingsGeneralContainer.js
deleted file mode 100644
index d705c4ddc..000000000
--- a/src/ui/content-settings/ContentSettingsGeneralContainer.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import { connect } from 'react-redux';
-import moment from 'moment';
-import {
- getIndexesStatus,
- getReferencesStatus,
- getIndexesLastReload,
- getEditorSettings,
-} from 'state/content-settings/selectors';
-import { getLoading } from 'state/loading/selectors';
-import {
- fetchContentSettings,
- sendPostReloadReferences,
- sendPostReloadIndexes,
- sendPutEditorSettings,
-} from 'state/content-settings/actions';
-import ContentSettingsGeneral from 'ui/content-settings/ContentSettingsGeneral';
-
-export const mapStateToProps = (state) => {
- const loads = getLoading(state);
-
- const indexesLastReload = getIndexesLastReload(state);
- let indexesLastReloadProps = {
- indexesLastReloadDate: null,
- indexesLastReloadResult: false,
- };
- if (indexesLastReload) {
- const mstamp = moment.unix(indexesLastReload.date / 1000);
- indexesLastReloadProps = {
- indexesLastReloadDate: mstamp.format('DD/MM/YYYY kk:mm'),
- indexesLastReloadResult: indexesLastReload.result === 1,
- };
- }
-
- return {
- ...indexesLastReloadProps,
- indexesStatus: getIndexesStatus(state),
- referenceStatus: getReferencesStatus(state),
- editorSettings: getEditorSettings(state),
- isReloadingReferences: loads.reloadReferences,
- isReloadingIndexes: loads.reloadIndexes,
- isEditorChanging: loads.putEditorSettings,
- loading: loads.getSettings,
- };
-};
-
-export const mapDispatchToProps = dispatch => ({
- onDidMount: () => dispatch(fetchContentSettings()),
- onReloadReferences: () => dispatch(sendPostReloadReferences()),
- onReloadIndexes: () => dispatch(sendPostReloadIndexes()),
- onEditorChange: key => dispatch(sendPutEditorSettings({ key })),
-});
-
-const ContentSettingsGeneralContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
-)(ContentSettingsGeneral);
-
-export default ContentSettingsGeneralContainer;
diff --git a/src/ui/content-settings/ContentSettingsPage.js b/src/ui/content-settings/ContentSettingsPage.js
deleted file mode 100644
index 343604e1a..000000000
--- a/src/ui/content-settings/ContentSettingsPage.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import React from 'react';
-import { Row, Col, CardGrid, Grid, Breadcrumb } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import ContentSettingsGeneralContainer from 'ui/content-settings/ContentSettingsGeneralContainer';
-import ContentSettingsCropRatiosContainer from 'ui/content-settings/ContentSettingsCropRatiosContainer';
-import ContentSettingsMetadataListContainer from 'ui/content-settings/metadata/ContentSettingsMetadataListContainer';
-import AddContentSettingsMetadataContainer from 'ui/content-settings/metadata/AddContentSettingsMetadataContainer';
-
-const ContentSettingsPage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default ContentSettingsPage;
diff --git a/src/ui/content-settings/metadata/AddContentSettingsMetadata.js b/src/ui/content-settings/metadata/AddContentSettingsMetadata.js
deleted file mode 100644
index 69668ab87..000000000
--- a/src/ui/content-settings/metadata/AddContentSettingsMetadata.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import React, { Fragment } from 'react';
-import PropTypes from 'prop-types';
-import { reduxForm, Field } from 'redux-form';
-import { Row, Col, Button } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-
-import ErrorsAlertContainer from 'ui/common/form/ErrorsAlertContainer';
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-import FormLabel from 'ui/common/form/FormLabel';
-
-const AddContentSettingsMetadataBody = ({ invalid, submitting, handleSubmit }) => (
-
-
-
-
-
-
-
-);
-
-AddContentSettingsMetadataBody.propTypes = {
- invalid: PropTypes.bool,
- submitting: PropTypes.bool,
- handleSubmit: PropTypes.func.isRequired,
-};
-
-AddContentSettingsMetadataBody.defaultProps = {
- invalid: false,
- submitting: false,
-};
-
-const AddContentSettingsMetadata = reduxForm({
- form: 'addsettingsmetadata',
- enableReinitialize: true,
-})(AddContentSettingsMetadataBody);
-
-export default AddContentSettingsMetadata;
diff --git a/src/ui/content-settings/metadata/AddContentSettingsMetadataContainer.js b/src/ui/content-settings/metadata/AddContentSettingsMetadataContainer.js
deleted file mode 100644
index 051112a10..000000000
--- a/src/ui/content-settings/metadata/AddContentSettingsMetadataContainer.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import { connect } from 'react-redux';
-import { addToast, TOAST_SUCCESS } from '@entando/messages';
-import { defineMessages, injectIntl } from 'react-intl';
-import { getLoading } from 'state/loading/selectors';
-import { reset } from 'redux-form';
-import { sendPostMetadataMap } from 'state/content-settings/actions';
-
-import AddContentSettingsMetadata from 'ui/content-settings/metadata/AddContentSettingsMetadata';
-
-const metadataMsgs = defineMessages({
- saved: {
- id: 'cms.contentsettings.form.saved',
- defaultMessage: '{name} saved.',
- },
-});
-
-export const mapStateToProps = state => ({
- loading: getLoading(state).contentSettings,
-});
-
-export const mapDispatchToProps = (dispatch, { intl }) => ({
- onSubmit: (values) => {
- const { key, mapping } = values;
- dispatch(sendPostMetadataMap(key, mapping)).then((res) => {
- if (res) {
- dispatch(reset('addsettingsmetadata'));
- dispatch(addToast(intl.formatMessage(metadataMsgs.saved, { name: key }), TOAST_SUCCESS));
- }
- });
- },
-});
-
-const AddContentSettingsMetadataContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(AddContentSettingsMetadata);
-
-export default injectIntl(AddContentSettingsMetadataContainer);
diff --git a/src/ui/content-settings/metadata/ContentSettingsMetadataList.js b/src/ui/content-settings/metadata/ContentSettingsMetadataList.js
deleted file mode 100644
index 757741c82..000000000
--- a/src/ui/content-settings/metadata/ContentSettingsMetadataList.js
+++ /dev/null
@@ -1,103 +0,0 @@
-import React, { Component, Fragment } from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import { Row, Col, Button, Icon } from 'patternfly-react';
-import DeleteContentMetadataModalContainer from 'ui/content-settings/metadata/DeleteContentMetadataModalContainer';
-import { reduxForm, Field } from 'redux-form';
-
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-import FormLabel from 'ui/common/form/FormLabel';
-
-class ContentSettingsMetadataListBody extends Component {
- constructor(props) {
- super(props);
- this.onClickDelete = this.onClickDelete.bind(this);
- this.onFieldKeyUp = this.onFieldKeyUp.bind(this);
- }
-
- onFieldKeyUp(ev) {
- if (ev.keyCode !== 13) return;
- const { submit } = this.props;
- submit();
- }
-
- onClickDelete(ev) {
- const { onPromptDelete } = this.props;
- const { key, metadata } = ev.currentTarget.dataset;
- onPromptDelete({ key, metadata });
- }
-
- render() {
- const { handleSubmit, metadata, loadings } = this.props;
- return (
-
-
-
-
- );
- }
-}
-
-ContentSettingsMetadataListBody.propTypes = {
- metadata: PropTypes.arrayOf(PropTypes.shape({})),
- handleSubmit: PropTypes.func.isRequired,
- submit: PropTypes.func.isRequired,
- loadings: PropTypes.shape({}),
- onPromptDelete: PropTypes.func.isRequired,
-};
-
-ContentSettingsMetadataListBody.defaultProps = {
- metadata: [],
- loadings: {},
-};
-
-const ContentSettingsMetadataList = reduxForm({
- form: 'settingsmetadata',
- enableReinitialize: true,
-})(ContentSettingsMetadataListBody);
-
-export default ContentSettingsMetadataList;
diff --git a/src/ui/content-settings/metadata/ContentSettingsMetadataListContainer.js b/src/ui/content-settings/metadata/ContentSettingsMetadataListContainer.js
deleted file mode 100644
index 9ff530e8b..000000000
--- a/src/ui/content-settings/metadata/ContentSettingsMetadataListContainer.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { connect } from 'react-redux';
-import {
- getMetadataMappingList,
- getMetadataMappingFormData,
-} from 'state/content-settings/selectors';
-import { checkAndPutMetadataMap } from 'state/content-settings/actions';
-import { setVisibleModal, setInfo } from 'state/modal/actions';
-import { getLoading } from 'state/loading/selectors';
-import { MODAL_ID } from 'ui/content-settings/metadata/DeleteContentMetadataModal';
-
-import ContentSettingsMetadataList from 'ui/content-settings/metadata/ContentSettingsMetadataList';
-
-export const mapStateToProps = (state) => {
- const metadata = getMetadataMappingList(state);
- const loadings = metadata.reduce((acc, { key }) => {
- acc[key] = getLoading(state)[key];
- return acc;
- }, {});
- return {
- metadata,
- loadings,
- initialValues: {
- ...getMetadataMappingFormData(state),
- },
- };
-};
-
-export const mapDispatchToProps = dispatch => ({
- onSubmit: (values) => {
- dispatch(checkAndPutMetadataMap(values));
- },
- onPromptDelete: (item) => {
- dispatch(setVisibleModal(MODAL_ID));
- dispatch(setInfo(item));
- },
-});
-
-const ContentSettingsMetadataListContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(ContentSettingsMetadataList);
-
-export default ContentSettingsMetadataListContainer;
diff --git a/src/ui/content-settings/metadata/DeleteContentMetadataModal.js b/src/ui/content-settings/metadata/DeleteContentMetadataModal.js
deleted file mode 100644
index b2f76f102..000000000
--- a/src/ui/content-settings/metadata/DeleteContentMetadataModal.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import GenericModalContainer from 'ui/common/modal/GenericModalContainer';
-import {
- Button,
- EmptyState,
- Modal,
- EmptyStateIcon,
- EmptyStateTitle,
- EmptyStateInfo,
-} from 'patternfly-react';
-
-export const MODAL_ID = 'DeleteContentMetadataModal';
-
-const DeleteContentMetadataModal = ({ onConfirmDelete, info }) => {
- const buttons = [
- ,
- ];
-
- const modalTitle = (
-
-
-
- );
-
- return (
-
-
-
-
-
- {`"${info.key}"`}
-
-
-
-
-
-
- );
-};
-
-DeleteContentMetadataModal.propTypes = {
- onConfirmDelete: PropTypes.func.isRequired,
- info: PropTypes.shape({
- id: PropTypes.number,
- descr: PropTypes.string,
- key: PropTypes.string,
- }),
-};
-
-DeleteContentMetadataModal.defaultProps = {
- info: {
- id: '',
- descr: '',
- },
-};
-
-export default DeleteContentMetadataModal;
diff --git a/src/ui/content-settings/metadata/DeleteContentMetadataModalContainer.js b/src/ui/content-settings/metadata/DeleteContentMetadataModalContainer.js
deleted file mode 100644
index 8213d06ae..000000000
--- a/src/ui/content-settings/metadata/DeleteContentMetadataModalContainer.js
+++ /dev/null
@@ -1,40 +0,0 @@
-import { connect } from 'react-redux';
-import { setVisibleModal } from 'state/modal/actions';
-import { getInfo } from 'state/modal/selectors';
-import { sendDeleteMetadataMap } from 'state/content-settings/actions';
-import { addToast, TOAST_SUCCESS } from '@entando/messages';
-import { defineMessages, injectIntl } from 'react-intl';
-
-import DeleteContentMetadataModal from 'ui/content-settings/metadata/DeleteContentMetadataModal';
-
-const contentTemplateMsgs = defineMessages({
- removed: {
- id: 'cms.contentsettings.metadata.infoDeleted',
- defaultMessage: '{name} deleted.',
- },
-});
-
-export const mapStateToProps = state => ({
- info: getInfo(state),
-});
-
-export const mapDispatchToProps = (dispatch, { intl }) => ({
- onConfirmDelete: (contMeta) => {
- dispatch(sendDeleteMetadataMap(contMeta.key)).then((res) => {
- if (res) {
- dispatch(addToast(
- intl.formatMessage(contentTemplateMsgs.removed, { name: contMeta.key }),
- TOAST_SUCCESS,
- ));
- }
- });
- dispatch(setVisibleModal(''));
- },
-});
-
-const DeleteContentMetadataModalContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
-)(DeleteContentMetadataModal);
-
-export default injectIntl(DeleteContentMetadataModalContainer);
diff --git a/src/ui/content-template/AddContentTemplateForm.js b/src/ui/content-template/AddContentTemplateForm.js
deleted file mode 100644
index bd60a63a4..000000000
--- a/src/ui/content-template/AddContentTemplateForm.js
+++ /dev/null
@@ -1,270 +0,0 @@
-import React, { Component, Fragment } from 'react';
-import PropTypes from 'prop-types';
-import { Field, reduxForm } from 'redux-form';
-import { Row, Col, Button, Modal } from 'patternfly-react';
-import { FormattedMessage, FormattedHTMLMessage, intlShape, defineMessages } from 'react-intl';
-import { required, maxLength } from '@entando/utils';
-
-import RenderDropdownTypeaheadInput from 'ui/common/form/RenderDropdownTypeaheadInput';
-import RenderContentTemplateInput from 'ui/common/form/RenderContentTemplateInput';
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-import FormLabel from 'ui/common/form/FormLabel';
-import DraggableDialog from 'ui/common/DraggableDialog';
-
-import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer';
-
-const EDIT_MODE = 'edit';
-const NEW_MODE = 'new';
-
-const max10Digits = value => (
- value && /^[0-9]{1,10}$/.test(value)
- ? undefined
- : (
-
- )
-);
-const maxLength50 = maxLength(50);
-
-const messages = defineMessages({
- chooseContentType: {
- id: 'cms.label.select',
- defaultMessage: 'Please select',
- },
- htmlModelAppend: {
- id: 'cms.contenttemplate.form.presscontext',
- defaultMessage: 'CTRL + Space',
- },
-});
-
-class AddContentTemplateFormBody extends Component {
- constructor(props) {
- super(props);
- this.state = {
- modalOpened: false,
- };
- this.handleModalOpen = this.handleModalOpen.bind(this);
- this.handleModalClose = this.handleModalClose.bind(this);
- }
-
- componentDidMount() {
- const { onDidMount } = this.props;
- onDidMount();
- }
-
- componentWillUnmount() {
- const { onDidUnmount } = this.props;
- onDidUnmount();
- }
-
- handleModalOpen() {
- this.setState({ modalOpened: true });
- }
-
- handleModalClose() {
- this.setState({ modalOpened: false });
- }
-
- render() {
- const {
- handleSubmit, invalid, submitting, intl, mode, contentTypes,
- dirty,
- onCancel,
- onDiscard,
- onSave,
- dictionary,
- onChangeContentType,
- } = this.props;
- const { modalOpened } = this.state;
-
- const handleCancelClick = () => {
- if (dirty) {
- onCancel();
- } else {
- onDiscard();
- }
- };
-
- return (
-
- );
- }
-}
-
-AddContentTemplateFormBody.propTypes = {
- intl: intlShape.isRequired,
- dictionary: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- handleSubmit: PropTypes.func.isRequired,
- onChangeContentType: PropTypes.func.isRequired,
- contentTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- invalid: PropTypes.bool,
- onDidMount: PropTypes.func.isRequired,
- onDidUnmount: PropTypes.func.isRequired,
- submitting: PropTypes.bool,
- mode: PropTypes.string,
- dirty: PropTypes.bool,
- onDiscard: PropTypes.func.isRequired,
- onCancel: PropTypes.func.isRequired,
- onSave: PropTypes.func.isRequired,
-};
-
-AddContentTemplateFormBody.defaultProps = {
- invalid: false,
- submitting: false,
- mode: NEW_MODE,
- dirty: false,
-};
-
-const AddContentTemplateForm = reduxForm({
- form: 'contenttemplateform',
-})(AddContentTemplateFormBody);
-
-export default AddContentTemplateForm;
diff --git a/src/ui/content-template/AddContentTemplateFormContainer.js b/src/ui/content-template/AddContentTemplateFormContainer.js
deleted file mode 100644
index 6739bec1c..000000000
--- a/src/ui/content-template/AddContentTemplateFormContainer.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import { connect } from 'react-redux';
-import { addToast, TOAST_SUCCESS } from '@entando/messages';
-import { injectIntl, defineMessages } from 'react-intl';
-import { withRouter } from 'react-router-dom';
-import { submit } from 'redux-form';
-import { routeConverter } from '@entando/utils';
-
-import { getContentTemplateDictionaryList } from 'state/content-template/selectors';
-import {
- fetchContentTemplateDictionary,
- sendPostContentTemplate,
- clearContentTemplate,
- clearContentTemplateDictionary,
-} from 'state/content-template/actions';
-import { fetchContentTypeListPaged, fetchContentType, clearSelectedContentType } from 'state/content-type/actions';
-import { getContentTypeList } from 'state/content-type/selectors';
-import { ROUTE_CMS_CONTENTTEMPLATE_LIST } from 'app-init/router';
-
-import { setVisibleModal } from 'state/modal/actions';
-import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal';
-
-import AddContentTemplateForm from 'ui/content-template/AddContentTemplateForm';
-
-const contentTemplateMsgs = defineMessages({
- saved: {
- id: 'cms.contenttemplate.form.saved',
- defaultMessage: '{name} saved.',
- },
-});
-
-export const mapStateToProps = state => ({
- dictionary: getContentTemplateDictionaryList(state),
- contentTypes: getContentTypeList(state),
-});
-
-export const mapDispatchToProps = (dispatch, { intl, history }) => ({
- onDidMount: () => {
- dispatch(fetchContentTemplateDictionary());
- dispatch(fetchContentTypeListPaged({ pageSize: 0 }));
- },
- onDidUnmount: () => {
- dispatch(clearContentTemplate());
- dispatch(clearContentTemplateDictionary());
- dispatch(clearSelectedContentType());
- },
- onChangeContentType: (code) => {
- dispatch(fetchContentType(code, false));
- },
- onSubmit: values => (
- dispatch(sendPostContentTemplate(values)).then((res) => {
- if (res) {
- dispatch(addToast(
- intl.formatMessage(contentTemplateMsgs.saved, { modelname: values.descr }),
- TOAST_SUCCESS,
- ));
- history.push(ROUTE_CMS_CONTENTTEMPLATE_LIST);
- }
- })),
- onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('contenttemplateform')); },
- onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)),
- onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTTEMPLATE_LIST)); },
-});
-
-const AddContentTemplateFormContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(AddContentTemplateForm);
-
-export default withRouter(injectIntl(AddContentTemplateFormContainer));
diff --git a/src/ui/content-template/AddContentTemplatePage.js b/src/ui/content-template/AddContentTemplatePage.js
deleted file mode 100644
index a42b5933e..000000000
--- a/src/ui/content-template/AddContentTemplatePage.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import React from 'react';
-import { Row, Col, Grid, Breadcrumb } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import AddContentTemplateFormContainer from 'ui/content-template/AddContentTemplateFormContainer';
-
-const AddContentTemplatePage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default AddContentTemplatePage;
diff --git a/src/ui/content-template/ContentTemplateList.js b/src/ui/content-template/ContentTemplateList.js
deleted file mode 100644
index fbed050d2..000000000
--- a/src/ui/content-template/ContentTemplateList.js
+++ /dev/null
@@ -1,184 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
-import {
- Spinner,
- DropdownKebab,
- MenuItem,
- PaginationRow,
-} from 'patternfly-react';
-import { DataTable } from '@entando/datatable';
-import { LinkMenuItem } from '@entando/menu';
-import { routeConverter } from '@entando/utils';
-import { ROUTE_CMS_CONTENTTEMPLATE_EDIT } from 'app-init/router';
-
-import DeleteContentTemplateModalContainer from 'ui/content-template/DeleteContentTemplateModalContainer';
-import paginatorMessages from 'ui/common/paginatorMessages';
-
-const perPageOptions = [5, 10, 15, 25, 50];
-
-class ContentTemplateList extends Component {
- constructor(props) {
- super(props);
-
- this.changePage = this.changePage.bind(this);
- this.changePageSize = this.changePageSize.bind(this);
- }
-
- componentDidMount() {
- const { onDidMount, columnOrder, onSetColumnOrder } = this.props;
- if (!columnOrder.length) {
- onSetColumnOrder(['id', 'contentType', 'descr']);
- }
- onDidMount();
- }
-
- getColumnDefs() {
- const { columnOrder } = this.props;
-
- const columnDefs = {
- id: {
- Header: ,
- attributes: {
- style: { width: '10%' },
- },
- },
- contentType: {
- Header: ,
- attributes: {
- style: { width: '20%' },
- },
- },
- descr: {
- Header: ,
- attributes: {
- style: { width: '60%' },
- },
- },
- };
-
- return columnOrder.map(column => ({
- ...columnDefs[column],
- accessor: column,
- }));
- }
-
- changePage(page) {
- const { fetchList, pageSize } = this.props;
- fetchList({ page, pageSize });
- }
-
- changePageSize(pageSize) {
- const { fetchList } = this.props;
- fetchList({ page: 1, pageSize });
- }
-
- render() {
- const {
- intl,
- contentTemplates,
- loading,
- onClickDelete,
- onSetColumnOrder,
- page,
- pageSize,
- totalItems,
- lastPage,
- } = this.props;
-
- const pagination = {
- page,
- perPage: pageSize,
- perPageOptions,
- };
-
- const columns = this.getColumnDefs() || [];
-
- const itemsStart = totalItems === 0 ? 0 : ((page - 1) * pageSize) + 1;
- const itemsEnd = Math.min(page * pageSize, totalItems);
-
- const rowAction = {
- Header: ,
- cellAttributes: {
- className: 'text-center',
- },
- Cell: ({ values: item }) => (
-
- }
- className="ContentTemplateList__menu-item-edit"
- />
-
-
- ),
- };
-
- const messages = Object.keys(paginatorMessages).reduce((acc, curr) => (
- { ...acc, [curr]: intl.formatMessage(paginatorMessages[curr]) }
- ), {});
-
- return (
-
-
-
- this.changePage(1)}
- onPreviousPage={() => this.changePage(page - 1)}
- onPageInput={this.onPageInput}
- onNextPage={() => this.changePage(page + 1)}
- onLastPage={() => this.changePage(lastPage)}
- messages={messages}
- />
-
-
-
- );
- }
-}
-
-ContentTemplateList.propTypes = {
- intl: intlShape.isRequired,
- contentTemplates: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- loading: PropTypes.bool,
- onDidMount: PropTypes.func.isRequired,
- fetchList: PropTypes.func.isRequired,
- onClickDelete: PropTypes.func.isRequired,
- page: PropTypes.number.isRequired,
- pageSize: PropTypes.number.isRequired,
- totalItems: PropTypes.number.isRequired,
- lastPage: PropTypes.number.isRequired,
- columnOrder: PropTypes.arrayOf(PropTypes.string),
- onSetColumnOrder: PropTypes.func,
-};
-
-ContentTemplateList.defaultProps = {
- loading: false,
- onSetColumnOrder: () => {},
- columnOrder: [],
-};
-
-export default injectIntl(ContentTemplateList);
diff --git a/src/ui/content-template/ContentTemplateListContainer.js b/src/ui/content-template/ContentTemplateListContainer.js
deleted file mode 100644
index e0849b03b..000000000
--- a/src/ui/content-template/ContentTemplateListContainer.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import { connect } from 'react-redux';
-import { getContentTemplateList, getContentTemplateFilters } from 'state/content-template/selectors';
-import {
- pageDefault,
- setListFilterProps,
- fetchContentTemplateListPaged,
-} from 'state/content-template/actions';
-import { getLoading } from 'state/loading/selectors';
-import { setVisibleModal, setInfo } from 'state/modal/actions';
-import { getPagination } from 'state/pagination/selectors';
-import { setColumnOrder } from 'state/table-column-order/actions';
-import { getColumnOrder } from 'state/table-column-order/selectors';
-import { NAMESPACE_CONTENT_TEMPLATES } from 'state/pagination/const';
-
-import ContentTemplateList from 'ui/content-template/ContentTemplateList';
-import { MODAL_ID } from 'ui/content-template/DeleteContentTemplateModal';
-
-export const mapStateToProps = (state) => {
- const {
- page, totalItems, pageSize, lastPage,
- } = getPagination(state, NAMESPACE_CONTENT_TEMPLATES);
- return {
- contentTemplates: getContentTemplateList(state),
- loading: getLoading(state).contentTemplateList,
- page,
- totalItems,
- pageSize,
- lastPage,
- filters: getContentTemplateFilters(state),
- columnOrder: getColumnOrder(state, 'contentTemplates'),
- };
-};
-
-export const mapDispatchToProps = dispatch => ({
- onDidMount: () => {
- dispatch(setListFilterProps({}));
- dispatch(fetchContentTemplateListPaged(pageDefault));
- },
- onSetColumnOrder: columnOrder => dispatch(setColumnOrder(columnOrder, 'contentTemplates')),
- fetchList: (page = pageDefault) => (
- dispatch(fetchContentTemplateListPaged(page))
- ),
- onClickDelete: (item) => {
- dispatch(setVisibleModal(MODAL_ID));
- dispatch(setInfo(item));
- },
-});
-
-const ContentTemplateListContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
-)(ContentTemplateList);
-
-export default ContentTemplateListContainer;
diff --git a/src/ui/content-template/ContentTemplateListPage.js b/src/ui/content-template/ContentTemplateListPage.js
deleted file mode 100644
index 15b665ca8..000000000
--- a/src/ui/content-template/ContentTemplateListPage.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import React from 'react';
-import { Link } from 'react-router-dom';
-import { Row, Col, Grid, Breadcrumb, Button } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import ContentTemplateSearchFormContainer from 'ui/content-template/ContentTemplateSearchFormContainer';
-import ContentTemplateListContainer from 'ui/content-template/ContentTemplateListContainer';
-import { ROUTE_CMS_CONTENTTEMPLATE_ADD } from 'app-init/router';
-
-const ContentTemplateListPage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default ContentTemplateListPage;
diff --git a/src/ui/content-template/ContentTemplateSearchForm.js b/src/ui/content-template/ContentTemplateSearchForm.js
deleted file mode 100644
index 9b5954578..000000000
--- a/src/ui/content-template/ContentTemplateSearchForm.js
+++ /dev/null
@@ -1,110 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { Row, Col, Grid, Button, DropdownButton, MenuItem, Label, Icon } from 'patternfly-react';
-import { Field, reduxForm } from 'redux-form';
-import { defineMessages, injectIntl, intlShape, FormattedMessage } from 'react-intl';
-import RenderSearchFormInput from 'ui/common/form/RenderSearchFormInput';
-
-class ContentTemplateSearchFormBody extends Component {
- constructor(props) {
- super(props);
- this.clearSearch = this.clearSearch.bind(this);
- this.messages = defineMessages({
- searchPlaceholder: {
- id: 'cms.contenttemplate.searchPlaceholder',
- defaultMessage: 'Search Content Template',
- },
- valueName: {
- id: 'cms.contenttemplate.searchFilter.valueName',
- defaultMessage: 'Name',
- },
- });
- }
-
- componentDidMount() {
- const { onDidMount } = this.props;
- onDidMount();
- }
-
- clearSearch() {
- const { reset, submit, searchTerm } = this.props;
- reset();
- if (searchTerm !== '') setTimeout(submit, 10);
- }
-
- render() {
- const {
- intl,
- handleSubmit,
- selectOptions,
- onChangeSearchType,
- selectedAttribute,
- } = this.props;
-
- return (
-
- );
- }
-}
-
-ContentTemplateSearchFormBody.propTypes = {
- intl: intlShape.isRequired,
- onDidMount: PropTypes.func.isRequired,
- handleSubmit: PropTypes.func.isRequired,
- reset: PropTypes.func.isRequired,
- searchTerm: PropTypes.string,
- selectOptions: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- onChangeSearchType: PropTypes.func.isRequired,
- submit: PropTypes.func.isRequired,
- selectedAttribute: PropTypes.shape({
- label: PropTypes.string,
- value: PropTypes.string,
- }).isRequired,
-};
-
-ContentTemplateSearchFormBody.defaultProps = {
- searchTerm: '',
-};
-
-const ContentTemplateSearchForm = reduxForm({
- form: 'contentTemplateSearchForm',
-})(ContentTemplateSearchFormBody);
-
-export default injectIntl(ContentTemplateSearchForm);
diff --git a/src/ui/content-template/ContentTemplateSearchFormContainer.js b/src/ui/content-template/ContentTemplateSearchFormContainer.js
deleted file mode 100644
index 83e8afc60..000000000
--- a/src/ui/content-template/ContentTemplateSearchFormContainer.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import { connect } from 'react-redux';
-import { get } from 'lodash';
-import { injectIntl, defineMessages } from 'react-intl';
-import { setSearchAttribute, filterContentTemplateBySearch, setSearchKeyword } from 'state/content-template/actions';
-import {
- getContentTemplateSearchAttribute,
- getContentTemplateSearchKeyword,
-} from 'state/content-template/selectors';
-
-import ContentTemplateSearchForm from 'ui/content-template/ContentTemplateSearchForm';
-
-const optionMap = [
- {
- label: 'cms.contenttemplate.searchFilter.valueName',
- value: 'descr',
- },
- {
- label: 'cms.contenttemplate.form.code',
- value: 'id',
- },
-];
-
-const msgMap = optionMap.reduce((acc, { label, value }) => ({
- ...acc,
- [value]: { id: label },
-}), {});
-
-export const mapStateToProps = (state, { intl }) => {
- const msgs = defineMessages(msgMap);
- const selectOptions = optionMap.map((option) => {
- msgMap[option.value].label = intl.formatMessage(msgs[option.value]);
- return {
- ...option,
- label: msgMap[option.value].label,
- };
- });
- const value = getContentTemplateSearchAttribute(state);
- return {
- searchTerm: getContentTemplateSearchKeyword(state),
- selectOptions,
- selectedAttribute: {
- value,
- label: get(msgMap, `${value}.label`, ''),
- },
- };
-};
-
-export const mapDispatchToProps = dispatch => ({
- onDidMount: () => {
- dispatch(setSearchKeyword(''));
- dispatch(setSearchAttribute('descr'));
- },
- onChangeSearchType: evkey => (
- dispatch(setSearchAttribute(optionMap[evkey - 1].value))
- ),
- onSubmit: ({ keyword }) => {
- dispatch(filterContentTemplateBySearch(keyword));
- },
-});
-
-const ContentTemplateSearchFormContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(ContentTemplateSearchForm);
-
-export default injectIntl(ContentTemplateSearchFormContainer);
diff --git a/src/ui/content-template/DeleteContentTemplateModal.js b/src/ui/content-template/DeleteContentTemplateModal.js
deleted file mode 100644
index f0914e278..000000000
--- a/src/ui/content-template/DeleteContentTemplateModal.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import GenericModalContainer from 'ui/common/modal/GenericModalContainer';
-import {
- Button,
- EmptyState,
- Modal,
- EmptyStateIcon,
- EmptyStateTitle,
- EmptyStateInfo,
-} from 'patternfly-react';
-
-export const MODAL_ID = 'DeleteContentTemplateModal';
-
-const DeleteContentTemplateModal = ({ onConfirmDelete, info }) => {
- const buttons = [
- ,
- ];
-
- const modalTitle = (
-
-
-
- );
-
- return (
-
-
-
-
-
- {info.descr}
-
-
-
-
-
-
- );
-};
-
-DeleteContentTemplateModal.propTypes = {
- onConfirmDelete: PropTypes.func.isRequired,
- info: PropTypes.shape({
- id: PropTypes.number,
- descr: PropTypes.string,
- }),
-};
-
-DeleteContentTemplateModal.defaultProps = {
- info: {
- id: '',
- descr: '',
- },
-};
-
-export default DeleteContentTemplateModal;
diff --git a/src/ui/content-template/DeleteContentTemplateModalContainer.js b/src/ui/content-template/DeleteContentTemplateModalContainer.js
deleted file mode 100644
index 27d4f1a47..000000000
--- a/src/ui/content-template/DeleteContentTemplateModalContainer.js
+++ /dev/null
@@ -1,40 +0,0 @@
-import { connect } from 'react-redux';
-import { setVisibleModal } from 'state/modal/actions';
-import { getInfo } from 'state/modal/selectors';
-import { sendDeleteContentTemplate } from 'state/content-template/actions';
-import { addToast, TOAST_SUCCESS } from '@entando/messages';
-import { defineMessages, injectIntl } from 'react-intl';
-
-import DeleteContentTemplateModal from 'ui/content-template/DeleteContentTemplateModal';
-
-const contentTemplateMsgs = defineMessages({
- removed: {
- id: 'cms.contenttemplate.list.infoDeleted',
- defaultMessage: '{name} deleted.',
- },
-});
-
-export const mapStateToProps = state => ({
- info: getInfo(state),
-});
-
-export const mapDispatchToProps = (dispatch, { intl }) => ({
- onConfirmDelete: (contModel) => {
- dispatch(sendDeleteContentTemplate(contModel.id)).then((res) => {
- if (res) {
- dispatch(addToast(
- intl.formatMessage(contentTemplateMsgs.removed, { modelname: contModel.descr }),
- TOAST_SUCCESS,
- ));
- }
- });
- dispatch(setVisibleModal(''));
- },
-});
-
-const DeleteContentTemplateModalContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
-)(DeleteContentTemplateModal);
-
-export default injectIntl(DeleteContentTemplateModalContainer);
diff --git a/src/ui/content-template/EditContentTemplateFormContainer.js b/src/ui/content-template/EditContentTemplateFormContainer.js
deleted file mode 100644
index 71105d2c6..000000000
--- a/src/ui/content-template/EditContentTemplateFormContainer.js
+++ /dev/null
@@ -1,79 +0,0 @@
-import { connect } from 'react-redux';
-import { addToast, TOAST_SUCCESS } from '@entando/messages';
-import { injectIntl, defineMessages } from 'react-intl';
-import { withRouter } from 'react-router-dom';
-import { submit } from 'redux-form';
-import { routeConverter } from '@entando/utils';
-
-import { setVisibleModal } from 'state/modal/actions';
-import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal';
-
-import { fetchContentTypeListPaged, fetchContentType, clearSelectedContentType } from 'state/content-type/actions';
-import {
- fetchContentTemplateDictionary,
- sendPutContentTemplate,
- fetchContentTemplate,
- clearContentTemplate,
- clearContentTemplateDictionary,
-} from 'state/content-template/actions';
-import { getContentTypeList } from 'state/content-type/selectors';
-import { getContentTemplateDictionaryList } from 'state/content-template/selectors';
-import { ROUTE_CMS_CONTENTTEMPLATE_LIST } from 'app-init/router';
-
-import AddContentTemplateForm from 'ui/content-template/AddContentTemplateForm';
-
-const contentTemplateMsgs = defineMessages({
- saved: {
- id: 'cms.contenttemplate.form.saved',
- defaultMessage: '{name} saved.',
- },
-});
-
-export const mapStateToProps = (state) => {
- const contentTypes = getContentTypeList(state);
- return {
- contentTypes,
- mode: 'edit',
- dictionary: getContentTemplateDictionaryList(state),
- };
-};
-
-export const mapDispatchToProps = (dispatch, { intl, history, match: { params } }) => ({
- onDidMount: () => {
- dispatch(fetchContentTypeListPaged({ pageSize: 0 }))
- .then(() => dispatch(fetchContentTemplate(params.id)))
- .then(({ contentType }) => dispatch(fetchContentType(contentType, false)))
- .then(() => dispatch(fetchContentTemplateDictionary()));
- },
- onDidUnmount: () => {
- dispatch(clearContentTemplate());
- dispatch(clearContentTemplateDictionary());
- dispatch(clearSelectedContentType());
- },
- onChangeContentType: (code) => {
- dispatch(fetchContentType(code));
- },
- onSubmit: values => dispatch(sendPutContentTemplate(values)).then((res) => {
- if (res) {
- dispatch(addToast(
- intl.formatMessage(contentTemplateMsgs.saved, { modelname: values.descr }),
- TOAST_SUCCESS,
- ));
- history.push(ROUTE_CMS_CONTENTTEMPLATE_LIST);
- }
- }),
- onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('contenttemplateform')); },
- onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)),
- onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTTEMPLATE_LIST)); },
-});
-
-const EditContentTemplateFormContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(AddContentTemplateForm);
-
-export default withRouter(injectIntl(EditContentTemplateFormContainer));
diff --git a/src/ui/content-template/EditContentTemplatePage.js b/src/ui/content-template/EditContentTemplatePage.js
deleted file mode 100644
index 25d25e9dc..000000000
--- a/src/ui/content-template/EditContentTemplatePage.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import React from 'react';
-import { Row, Col, Grid, Breadcrumb } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import EditContentTemplateFormContainer from 'ui/content-template/EditContentTemplateFormContainer';
-
-const EditContentTemplatePage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default EditContentTemplatePage;
diff --git a/src/ui/content-type/AddContentTypeForm.js b/src/ui/content-type/AddContentTypeForm.js
deleted file mode 100644
index 1a0456e64..000000000
--- a/src/ui/content-type/AddContentTypeForm.js
+++ /dev/null
@@ -1,266 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { Field, reduxForm } from 'redux-form';
-import { FormattedMessage, intlShape } from 'react-intl';
-import { InputGroup, Button, Row, Col } from 'patternfly-react';
-
-import { required, maxLength } from '@entando/utils';
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-import RenderSelectInput from 'ui/common/form/RenderSelectInput';
-import FormLabel from 'ui/common/form/FormLabel';
-import AttributeListTable from 'ui/common/contenttype-attributes/AttributeListTable';
-import DeleteAttributeModalContainer from 'ui/content-type/attributes/DeleteAttributeModalContainer';
-import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer';
-
-const uppercaseThreeLetters = value => (value && !/[A-Z]$/g.test(value) ? : undefined);
-
-const maxLength3 = maxLength(3);
-
-const maxLength50 = maxLength(50);
-
-export class AddContentTypeFormBody extends Component {
- componentDidMount() {
- const { onDidMount } = this.props;
- onDidMount(this.props);
- }
-
- render() {
- const {
- attributesType,
- mode,
- handleSubmit,
- onAddAttribute,
- invalid,
- submitting,
- contentTypeCode,
- viewPages,
- contentTemplates,
- dirty,
- intl,
- onCancel,
- onDiscard,
- onSave,
- locale,
- } = this.props;
- const handleCancelClick = () => {
- if (dirty) {
- onCancel();
- } else {
- onDiscard();
- }
- };
-
- const isEdit = mode === 'edit';
-
- const selectOptions = attributesType.map(item => ({
- value: item,
- text: item,
- }));
-
- const renderAttributeTable = () => {
- if (isEdit) {
- return (
-
-
-
-
- );
- }
- return '';
- };
-
- const renderSelectOption = () => {
- if (isEdit) {
- return (
-
-
-
- }
- name="type"
- />
-
-
-
-
-
- );
- }
- return '';
- };
-
- const renderMetadataSection = () => {
- if (isEdit) {
- const selectViewPageOptions = [{ value: '', text: 'None' }]
- .concat(viewPages.map(({ code }) => ({
- value: code,
- text: code,
- })));
-
- const selectContentTemplateOptions = [{ value: '', text: 'No template' }]
- .concat(contentTemplates.map(({ id, descr }) => ({
- value: id,
- text: descr,
- })));
-
- return (
-
-
-
- }
- name="viewPage"
- />
-
- }
- name="defaultContentModel"
- />
-
- }
- name="defaultContentModelList"
- />
-
- );
- }
- return '';
- };
-
- return (
-
- );
- }
-}
-
-AddContentTypeFormBody.propTypes = {
- onDidMount: PropTypes.func,
- onSubmit: PropTypes.func.isRequired,
- handleSubmit: PropTypes.func.isRequired,
- onAddAttribute: PropTypes.func,
- attributesType: PropTypes.arrayOf(PropTypes.string).isRequired,
- invalid: PropTypes.bool,
- submitting: PropTypes.bool,
- mode: PropTypes.string,
- contentTypeCode: PropTypes.string,
- viewPages: PropTypes.arrayOf(PropTypes.object),
- contentTemplates: PropTypes.arrayOf(PropTypes.object),
- intl: intlShape.isRequired,
- dirty: PropTypes.bool,
- onDiscard: PropTypes.func.isRequired,
- onCancel: PropTypes.func.isRequired,
- onSave: PropTypes.func.isRequired,
- locale: PropTypes.string,
-};
-
-AddContentTypeFormBody.defaultProps = {
- onDidMount: () => {},
- onAddAttribute: () => {},
- invalid: false,
- submitting: false,
- mode: 'add',
- contentTypeCode: '',
- viewPages: [],
- contentTemplates: [],
- dirty: false,
- locale: '',
-};
-
-const AddContentTypeForm = reduxForm({
- form: 'ContentType',
-})(AddContentTypeFormBody);
-
-export default AddContentTypeForm;
diff --git a/src/ui/content-type/AddContentTypeFormContainer.js b/src/ui/content-type/AddContentTypeFormContainer.js
deleted file mode 100644
index 854910398..000000000
--- a/src/ui/content-type/AddContentTypeFormContainer.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import { connect } from 'react-redux';
-import { withRouter } from 'react-router-dom';
-import { injectIntl, defineMessages } from 'react-intl';
-import { addToast, TOAST_SUCCESS } from '@entando/messages';
-import { submit } from 'redux-form';
-import { routeConverter } from '@entando/utils';
-import {
- fetchContentTypeAttributeRefs,
- sendPostContentType,
- setSelectedAttributeRef,
- setSelectedContentTypeAttribute,
-} from 'state/content-type/actions';
-import { getContentTypeAttributesIdList } from 'state/content-type/selectors';
-import AddContentTypeForm from 'ui/content-type/AddContentTypeForm';
-import { ROUTE_CMS_CONTENTTYPE_EDIT, ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router';
-import { setVisibleModal } from 'state/modal/actions';
-import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal';
-import { getLocale } from 'state/locale/selectors';
-
-export const mapStateToProps = state => ({
- attributesType: getContentTypeAttributesIdList(state),
- locale: getLocale(state),
-});
-
-const msgs = defineMessages({
- contTypeCreated: {
- id: 'cms.contenttype.alert.created',
- defaultMessage: 'Created.',
- },
-});
-
-export const mapDispatchToProps = (dispatch, { history, intl }) => ({
- onDidMount: () => {
- dispatch(setSelectedAttributeRef({}));
- dispatch(setSelectedContentTypeAttribute());
- dispatch(fetchContentTypeAttributeRefs());
- },
- onSubmit: (values) => {
- dispatch(sendPostContentType(values)).then((res) => {
- if (res && res.code) {
- dispatch(addToast(intl.formatMessage(msgs.contTypeCreated), TOAST_SUCCESS));
- history.push(routeConverter(ROUTE_CMS_CONTENTTYPE_EDIT, { code: res.code }));
- }
- });
- },
- onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('ContentType')); },
- onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)),
- onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTTYPE_LIST)); },
-});
-
-const AddContentTypeFormContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(AddContentTypeForm);
-
-export default withRouter(injectIntl(AddContentTypeFormContainer));
diff --git a/src/ui/content-type/AddContentTypePage.js b/src/ui/content-type/AddContentTypePage.js
deleted file mode 100644
index 94d904ae5..000000000
--- a/src/ui/content-type/AddContentTypePage.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import React from 'react';
-import { FormattedMessage } from 'react-intl';
-import { Grid, Row, Col, Breadcrumb } from 'patternfly-react';
-
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import AddContentTypeFormContainer from 'ui/content-type/AddContentTypeFormContainer';
-import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router';
-
-
-const AddContentTypePage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default AddContentTypePage;
diff --git a/src/ui/content-type/ContentTypeList.js b/src/ui/content-type/ContentTypeList.js
deleted file mode 100644
index 64324bae6..000000000
--- a/src/ui/content-type/ContentTypeList.js
+++ /dev/null
@@ -1,185 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
-import {
- Spinner,
- Paginator,
- DropdownKebab,
- MenuItem,
-} from 'patternfly-react';
-import { DataTable } from '@entando/datatable';
-import { LinkMenuItem } from '@entando/menu';
-import { routeConverter } from '@entando/utils';
-import { ROUTE_CMS_CONTENTTYPE_EDIT } from 'app-init/router';
-import ContentTypeStatusIcon from 'ui/content-type/ContentTypeStatusIcon';
-import ContentTypeReferenceStatusContainer from 'ui/content-type/ContentTypeReferenceStatusContainer';
-import DeleteContentTypeModalContainer from 'ui/content-type/DeleteContentTypeModalContainer';
-import paginatorMessages from 'ui/common/paginatorMessages';
-
-const perPageOptions = [5, 10, 15, 25, 50];
-
-class ContentTypeList extends Component {
- constructor(props) {
- super(props);
-
- this.changePage = this.changePage.bind(this);
- this.changePageSize = this.changePageSize.bind(this);
- }
-
- componentDidMount() {
- const { onDidMount, columnOrder, onSetColumnOrder } = this.props;
- if (!columnOrder.length) {
- onSetColumnOrder(['name', 'code', 'status']);
- }
- onDidMount();
- }
-
- getColumnDefs() {
- const { columnOrder, intl } = this.props;
-
- const columnDefs = {
- name: {
- Header: ,
- },
- code: {
- Header: ,
- attributes: {
- style: { width: '10%' },
- },
- },
- status: {
- Header: ,
- attributes: {
- style: { width: '10%' },
- },
- Cell: ({ row: { original: { status } } }) => (
-
- ),
- },
- };
-
- return columnOrder.map(column => ({
- ...columnDefs[column],
- accessor: column,
- }));
- }
-
- changePage(page) {
- const { onDidMount, pageSize } = this.props;
- onDidMount({ page, pageSize });
- }
-
- changePageSize(pageSize) {
- const { onDidMount } = this.props;
- onDidMount({ page: 1, pageSize });
- }
-
- render() {
- const {
- intl,
- contentTypes,
- loading,
- onClickDelete,
- onSetColumnOrder,
- onClickReload,
- page,
- pageSize,
- totalItems,
- } = this.props;
-
- const pagination = {
- page,
- perPage: pageSize,
- perPageOptions,
- };
-
- const columns = this.getColumnDefs() || [];
-
- const rowAction = {
- Header: ,
- cellAttributes: {
- className: 'text-center',
- },
- Cell: ({ values: { code, name } }) => {
- const onDelete = () => onClickDelete({ name, code });
- const onReload = () => onClickReload(code);
- return (
-
-
- }
- className="ContentTypeList__menu-item-edit"
- />
-
-
-
-
- );
- },
- };
-
- const messages = Object.keys(paginatorMessages).reduce((acc, curr) => (
- { ...acc, [curr]: intl.formatMessage(paginatorMessages[curr]) }
- ), {});
-
- return (
-
- );
- }
-}
-
-ContentTypeList.propTypes = {
- intl: intlShape.isRequired,
- contentTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- loading: PropTypes.bool,
- onDidMount: PropTypes.func.isRequired,
- onClickDelete: PropTypes.func.isRequired,
- onClickReload: PropTypes.func.isRequired,
- page: PropTypes.number.isRequired,
- pageSize: PropTypes.number.isRequired,
- totalItems: PropTypes.number.isRequired,
- columnOrder: PropTypes.arrayOf(PropTypes.string),
- onSetColumnOrder: PropTypes.func,
-};
-
-ContentTypeList.defaultProps = {
- loading: false,
- onSetColumnOrder: () => {},
- columnOrder: [],
-};
-
-export default injectIntl(ContentTypeList);
diff --git a/src/ui/content-type/ContentTypeListContainer.js b/src/ui/content-type/ContentTypeListContainer.js
deleted file mode 100644
index d0d6fa541..000000000
--- a/src/ui/content-type/ContentTypeListContainer.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { connect } from 'react-redux';
-import { getContentTypeList } from 'state/content-type/selectors';
-import { fetchContentTypeListPaged, sendPostRefreshContentType } from 'state/content-type/actions';
-import { getLoading } from 'state/loading/selectors';
-import { setVisibleModal, setInfo } from 'state/modal/actions';
-import { getPagination } from 'state/pagination/selectors';
-import { setColumnOrder } from 'state/table-column-order/actions';
-import { getColumnOrder } from 'state/table-column-order/selectors';
-import { NAMESPACE_CONTENT_TYPES } from 'state/pagination/const';
-
-import ContentTypeList from 'ui/content-type/ContentTypeList';
-import { MODAL_ID } from 'ui/content-type/DeleteContentTypeModal';
-
-export const mapStateToProps = (state) => {
- const {
- page, totalItems, pageSize,
- } = getPagination(state, NAMESPACE_CONTENT_TYPES);
- return {
- contentTypes: getContentTypeList(state),
- loading: getLoading(state).contentTypeList,
- page,
- totalItems,
- pageSize,
- columnOrder: getColumnOrder(state, 'contentTypes'),
- };
-};
-
-export const mapDispatchToProps = dispatch => ({
- onDidMount: (page = { page: 1, pageSize: 10 }) => dispatch(fetchContentTypeListPaged(page)),
- onSetColumnOrder: columnOrder => dispatch(setColumnOrder(columnOrder, 'contentTypes')),
- onClickDelete: (item) => {
- dispatch(setVisibleModal(MODAL_ID));
- dispatch(setInfo(item));
- },
- onClickReload: (code) => {
- dispatch(sendPostRefreshContentType(code));
- },
-});
-
-const ContentTypeListContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
-)(ContentTypeList);
-
-export default ContentTypeListContainer;
diff --git a/src/ui/content-type/ContentTypeListPage.js b/src/ui/content-type/ContentTypeListPage.js
deleted file mode 100644
index 2f7481fad..000000000
--- a/src/ui/content-type/ContentTypeListPage.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import React from 'react';
-import { Link } from 'react-router-dom';
-import { Row, Col, Grid, Breadcrumb, Button } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import ContentTypeListContainer from 'ui/content-type/ContentTypeListContainer';
-import { ROUTE_CMS_CONTENTTYPE_ADD } from 'app-init/router';
-
-const ContentTypeListPage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default ContentTypeListPage;
diff --git a/src/ui/content-type/ContentTypeReferenceStatus.js b/src/ui/content-type/ContentTypeReferenceStatus.js
deleted file mode 100644
index ac971004d..000000000
--- a/src/ui/content-type/ContentTypeReferenceStatus.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import { Alert } from 'patternfly-react';
-
-class ContentTypeReferenceStatus extends Component {
- constructor(props) {
- super(props);
- this.onClickReload = this.onClickReload.bind(this);
- }
-
- componentDidMount() {
- const { onDidMount } = this.props;
- onDidMount();
- }
-
- onClickReload() {
- const { onReload, status } = this.props;
- onReload(status.contentTypeCodes);
- }
-
- render() {
- const { status } = this.props;
- if (status.type === 'success') {
- return null;
- }
- return (
-
-
-
-
-
- ),
- }}
- />
-
- );
- }
-}
-
-ContentTypeReferenceStatus.propTypes = {
- onDidMount: PropTypes.func.isRequired,
- onReload: PropTypes.func.isRequired,
- status: PropTypes.shape({
- status: PropTypes.string,
- type: PropTypes.string,
- contentTypeCodes: PropTypes.arrayOf(PropTypes.string),
- count: PropTypes.number,
- }).isRequired,
-};
-
-export default ContentTypeReferenceStatus;
diff --git a/src/ui/content-type/ContentTypeReferenceStatusContainer.js b/src/ui/content-type/ContentTypeReferenceStatusContainer.js
deleted file mode 100644
index d35c7c4ee..000000000
--- a/src/ui/content-type/ContentTypeReferenceStatusContainer.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import { connect } from 'react-redux';
-import { withRouter } from 'react-router-dom';
-
-import ContentTypeReferenceStatus from 'ui/content-type/ContentTypeReferenceStatus';
-import {
- fetchContentTypeReferenceStatus,
- sendPostContentTypeReferenceStatus,
- fetchContentTypeListPaged,
-} from 'state/content-type/actions';
-import { getContentTypeReferencesStatus } from 'state/content-type/selectors';
-import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router';
-
-export const mapStateToProps = state => ({
- status: getContentTypeReferencesStatus(state),
-});
-
-export const mapDispatchToProps = (dispatch, { history }) => ({
- onDidMount: () => dispatch(fetchContentTypeReferenceStatus()),
- onReload: contentTypesCodes => (
- dispatch(sendPostContentTypeReferenceStatus(contentTypesCodes)).then((res) => {
- if (res) {
- history.push(ROUTE_CMS_CONTENTTYPE_LIST);
- dispatch(fetchContentTypeReferenceStatus());
- dispatch(fetchContentTypeListPaged());
- }
- })
- ),
-});
-
-const ContentTypeReferenceStatusContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
-)(ContentTypeReferenceStatus);
-
-export default withRouter(ContentTypeReferenceStatusContainer);
diff --git a/src/ui/content-type/ContentTypeStatusIcon.js b/src/ui/content-type/ContentTypeStatusIcon.js
deleted file mode 100644
index d498aaf15..000000000
--- a/src/ui/content-type/ContentTypeStatusIcon.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Icon } from 'patternfly-react';
-
-const ContentTypeStatusIcon = ({ status, title }) => {
- let icon;
- switch (parseFloat(status)) {
- case 1:
- icon = 'spinner';
- break;
- case 2:
- icon = 'exclamation';
- break;
- default:
- icon = 'check';
- }
- return (
-
- );
-};
-
-ContentTypeStatusIcon.propTypes = {
- status: PropTypes.oneOf(['0', '1', '2']).isRequired,
- title: PropTypes.string,
-};
-
-ContentTypeStatusIcon.defaultProps = {
- title: '',
-};
-
-export default ContentTypeStatusIcon;
diff --git a/src/ui/content-type/DeleteContentTypeModal.js b/src/ui/content-type/DeleteContentTypeModal.js
deleted file mode 100644
index 225913a75..000000000
--- a/src/ui/content-type/DeleteContentTypeModal.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import GenericModalContainer from 'ui/common/modal/GenericModalContainer';
-import {
- Button,
- EmptyState,
- Modal,
- EmptyStateIcon,
- EmptyStateTitle,
- EmptyStateInfo,
-} from 'patternfly-react';
-
-export const MODAL_ID = 'DeleteContentTypeModal';
-
-const DeleteContentTypeModal = ({ onConfirmDelete, info }) => {
- const buttons = [
- ,
- ];
-
- const modalTitle = (
-
-
-
- );
-
- return (
-
-
-
-
-
- {info.name}
-
-
-
-
-
-
- );
-};
-
-DeleteContentTypeModal.propTypes = {
- onConfirmDelete: PropTypes.func.isRequired,
- info: PropTypes.shape({
- code: PropTypes.string,
- name: PropTypes.string,
- }),
-};
-
-DeleteContentTypeModal.defaultProps = {
- info: {
- code: '',
- name: '',
- },
-};
-
-export default DeleteContentTypeModal;
diff --git a/src/ui/content-type/DeleteContentTypeModalContainer.js b/src/ui/content-type/DeleteContentTypeModalContainer.js
deleted file mode 100644
index 8f2c484f2..000000000
--- a/src/ui/content-type/DeleteContentTypeModalContainer.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import { connect } from 'react-redux';
-import { withRouter } from 'react-router-dom';
-import { setVisibleModal } from 'state/modal/actions';
-import { getInfo } from 'state/modal/selectors';
-import { sendDeleteContentType, fetchContentTypeListPaged } from 'state/content-type/actions';
-import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router';
-
-import DeleteContentTypeModal from 'ui/content-type/DeleteContentTypeModal';
-
-export const mapStateToProps = state => ({
- info: getInfo(state),
-});
-
-export const mapDispatchToProps = (dispatch, { history }) => ({
- onConfirmDelete: (contentTypeCode) => {
- dispatch(setVisibleModal(''));
- dispatch(sendDeleteContentType(contentTypeCode)).then((result) => {
- if (result) {
- dispatch(fetchContentTypeListPaged({ page: 1, pageSize: 10 }));
- history.push(ROUTE_CMS_CONTENTTYPE_LIST);
- }
- });
- },
-});
-
-const DeleteContentTypeModalContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
-)(DeleteContentTypeModal);
-
-export default withRouter(DeleteContentTypeModalContainer);
diff --git a/src/ui/content-type/EditContentTypeFormContainer.js b/src/ui/content-type/EditContentTypeFormContainer.js
deleted file mode 100644
index 60df0455e..000000000
--- a/src/ui/content-type/EditContentTypeFormContainer.js
+++ /dev/null
@@ -1,97 +0,0 @@
-import { connect } from 'react-redux';
-import { formValueSelector, submit } from 'redux-form';
-import { withRouter } from 'react-router-dom';
-import { injectIntl } from 'react-intl';
-import { routeConverter } from '@entando/utils';
-import {
- fetchContentTypeAttributeRefs,
- fetchContentType,
- fetchContentTypeAttributeRef,
- sendPutContentType,
- setSelectedAttributeRef,
- setSelectedContentTypeAttribute,
- sendMoveAttributeUp,
- sendMoveAttributeDown,
-} from 'state/content-type/actions';
-import {
- getSelectedContentTypeAttributes,
- getContentTypeAttributesIdList,
-} from 'state/content-type/selectors';
-import AddContentTypeForm from 'ui/content-type/AddContentTypeForm';
-
-import { setVisibleModal, setInfo } from 'state/modal/actions';
-import { MODAL_ID } from 'ui/content-type/attributes/DeleteAttributeModal';
-import {
- ROUTE_CMS_CONTENTTYPE_LIST,
- ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD,
- ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_EDIT,
-} from 'app-init/router';
-import { fetchContentTemplatesByContentType } from 'state/content-template/actions';
-import { getViewPages } from 'state/pages/selectors';
-import { fetchViewPages } from 'state/pages/actions';
-import { getContentTemplateList } from 'state/content-template/selectors';
-import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal';
-import { getLocale } from 'state/locale/selectors';
-
-export const mapStateToProps = (state, { match: { params } }) => ({
- mode: 'edit',
- contentTypeCode: params.code,
- attributes: getSelectedContentTypeAttributes(state),
- attributesType: getContentTypeAttributesIdList(state),
- attributeCode: formValueSelector('ContentType')(state, 'type'),
- routeToEdit: ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_EDIT,
- viewPages: getViewPages(state),
- contentTemplates: getContentTemplateList(state),
- locale: getLocale(state),
-});
-
-export const mapDispatchToProps = (dispatch, { history }) => ({
- onDidMount: ({ contentTypeCode }) => {
- dispatch(setSelectedAttributeRef({}));
- dispatch(setSelectedContentTypeAttribute());
- dispatch(fetchContentType(contentTypeCode));
- dispatch(fetchContentTypeAttributeRefs());
- dispatch(fetchContentTemplatesByContentType(contentTypeCode));
- dispatch(fetchViewPages());
- },
- onAddAttribute: ({ attributeCode, contentTypeCode }) => {
- dispatch(fetchContentTypeAttributeRef(contentTypeCode, attributeCode, () => (
- history.push(routeConverter(
- ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD,
- { entityCode: contentTypeCode },
- ))
- )));
- },
-
- onMoveUp: (entityCode, attributeCode, attributeIndex) => {
- dispatch(sendMoveAttributeUp({ entityCode, attributeCode, attributeIndex }));
- },
- onMoveDown: (entityCode, attributeCode, attributeIndex) => {
- dispatch(sendMoveAttributeDown({ entityCode, attributeCode, attributeIndex }));
- },
- onClickDelete: (code) => {
- dispatch(setVisibleModal(MODAL_ID));
- dispatch(setInfo({ type: 'attribute', code }));
- },
- onSubmit: (values) => {
- dispatch(sendPutContentType(values)).then((res) => {
- if (res) {
- history.push(ROUTE_CMS_CONTENTTYPE_LIST);
- }
- });
- },
- onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('ContentType')); },
- onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)),
- onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTTYPE_LIST)); },
-});
-
-const EditContentTypeFormContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(AddContentTypeForm);
-
-export default withRouter(injectIntl(EditContentTypeFormContainer));
diff --git a/src/ui/content-type/EditContentTypePage.js b/src/ui/content-type/EditContentTypePage.js
deleted file mode 100644
index 3ee76de57..000000000
--- a/src/ui/content-type/EditContentTypePage.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import React from 'react';
-import { FormattedMessage } from 'react-intl';
-import { Grid, Row, Col, Breadcrumb } from 'patternfly-react';
-
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import EditContentTypeFormContainer from 'ui/content-type/EditContentTypeFormContainer';
-import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router';
-
-const EditContentTypePage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default EditContentTypePage;
diff --git a/src/ui/content-type/attributes/AddContentTypeAttributeFormContainer.js b/src/ui/content-type/attributes/AddContentTypeAttributeFormContainer.js
deleted file mode 100644
index e65cfa471..000000000
--- a/src/ui/content-type/attributes/AddContentTypeAttributeFormContainer.js
+++ /dev/null
@@ -1,107 +0,0 @@
-import { connect } from 'react-redux';
-import { formValueSelector, submit } from 'redux-form';
-import { injectIntl } from 'react-intl';
-import { withRouter } from 'react-router-dom';
-import { METHODS } from '@entando/apimanager';
-import { clearErrors } from '@entando/messages';
-import { routeConverter } from '@entando/utils';
-import AddContentTypeAttributeForm from 'ui/common/form/AddContentTypeAttributeForm';
-import {
- setActionMode,
- fetchContentTypeAttributeRefs,
- handlerAttributeFromContentType,
- fetchContentTypeAttributeRef,
- removeAttributeFromComposite,
- moveAttributeFromComposite,
-} from 'state/content-type/actions';
-import { fetchLanguages } from 'state/languages/actions';
-
-import {
- getContentTypeSelectedAttribute,
- getContentTypeSelectedAttributeCode,
- getContentTypeAttributesIdList,
- getContentTypeSelectedAttributeAllowedRoles,
- getContentTypeSelectedAttributeRoleChoices,
- getActionModeContentTypeSelectedAttribute,
- getSelectedCompositeAttributes,
-} from 'state/content-type/selectors';
-
-import { getActiveLanguages } from 'state/languages/selectors';
-
-import { ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, ROUTE_CMS_CONTENTTYPE_EDIT } from 'app-init/router';
-import { TYPE_COMPOSITE, MODE_ADD } from 'state/content-type/const';
-import { setVisibleModal } from 'state/modal/actions';
-import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal';
-
-export const mapStateToProps = (state, { match: { params } }) => {
- const joinAllowedOptions = formValueSelector('addAttribute')(state, 'joinRoles') || [];
- return {
- mode: getActionModeContentTypeSelectedAttribute(state) || 'add',
- contentTypeAttributeCode: params.entityCode,
- joinAllowedOptions,
- selectedAttributeType: getContentTypeSelectedAttribute(state),
- attributesList: getContentTypeAttributesIdList(state),
- initialValues: {
- type: getContentTypeSelectedAttributeCode(state),
- compositeAttributeType: TYPE_COMPOSITE,
- },
- allRoles: getContentTypeSelectedAttributeAllowedRoles(state),
- allowedRoles: getContentTypeSelectedAttributeRoleChoices(
- params.entityCode,
- joinAllowedOptions,
- )(state),
- compositeAttributes: getSelectedCompositeAttributes(state),
- languages: getActiveLanguages(state),
- };
-};
-
-const nopage = { page: 1, pageSize: 0 };
-
-export const mapDispatchToProps = (dispatch, { match: { params }, history }) => ({
- onDidMount: () => {
- dispatch(clearErrors());
- dispatch(fetchLanguages(nopage));
- dispatch(fetchContentTypeAttributeRefs());
- },
- onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('addAttribute')); },
- onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)),
- onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTTYPE_EDIT, { code: params.entityCode })); },
- onSubmit: (values, allowedRoles, mode) => {
- dispatch(handlerAttributeFromContentType(
- METHODS.POST,
- values,
- allowedRoles,
- mode,
- params.entityCode,
- history,
- ));
- },
- onAddAttribute: (props) => {
- const {
- attributeCode,
- entityCode,
- selectedAttributeType: { code },
- } = props;
- dispatch(setActionMode(MODE_ADD));
- dispatch(fetchContentTypeAttributeRef(
- entityCode,
- attributeCode,
- () => history.push(routeConverter(ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, { entityCode })),
- code,
- 'addAttribute',
- ));
- },
- onClickDelete: (attributeCode) => {
- dispatch(removeAttributeFromComposite(attributeCode));
- },
- onMove: (fromIndex, toIndex) => {
- dispatch(moveAttributeFromComposite(fromIndex, toIndex));
- },
-});
-
-export default injectIntl(withRouter(connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- { pure: false },
-)(AddContentTypeAttributeForm)));
diff --git a/src/ui/content-type/attributes/AddContentTypeAttributePage.js b/src/ui/content-type/attributes/AddContentTypeAttributePage.js
deleted file mode 100644
index 7e53b6a56..000000000
--- a/src/ui/content-type/attributes/AddContentTypeAttributePage.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import React from 'react';
-import { FormattedMessage } from 'react-intl';
-import { Grid, Row, Col, Breadcrumb } from 'patternfly-react';
-
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import ErrorsAlertContainer from 'ui/common/form/ErrorsAlertContainer';
-import AddContentTypeAttributeFormContainer from 'ui/content-type/attributes/AddContentTypeAttributeFormContainer';
-import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router';
-
-const AddContentTypeAttributePage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default AddContentTypeAttributePage;
diff --git a/src/ui/content-type/attributes/DeleteAttributeModal.js b/src/ui/content-type/attributes/DeleteAttributeModal.js
deleted file mode 100644
index da910d358..000000000
--- a/src/ui/content-type/attributes/DeleteAttributeModal.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import GenericModalContainer from 'ui/common/modal/GenericModalContainer';
-import {
- Button,
- EmptyState,
- Modal,
- EmptyStateIcon,
- EmptyStateTitle,
- EmptyStateInfo,
-} from 'patternfly-react';
-
-export const MODAL_ID = 'DeleteAttributeModal';
-
-const DeleteAttributeModal = ({ onConfirmDelete, info }) => {
- const buttons = [
- ,
- ];
-
- const modalTitle = (
-
-
-
- );
-
- return (
-
-
-
-
-
- {info.type}
-
-
-
-
-
-
- );
-};
-
-DeleteAttributeModal.propTypes = {
- onConfirmDelete: PropTypes.func,
- info: PropTypes.shape({
- code: PropTypes.string,
- type: PropTypes.string,
- }),
-};
-
-DeleteAttributeModal.defaultProps = {
- onConfirmDelete: null,
- info: {
- code: '',
- type: '',
- },
-};
-
-export default DeleteAttributeModal;
diff --git a/src/ui/content-type/attributes/DeleteAttributeModalContainer.js b/src/ui/content-type/attributes/DeleteAttributeModalContainer.js
deleted file mode 100644
index 6dbd59bef..000000000
--- a/src/ui/content-type/attributes/DeleteAttributeModalContainer.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import { connect } from 'react-redux';
-import { setVisibleModal } from 'state/modal/actions';
-import { getInfo } from 'state/modal/selectors';
-import { sendDeleteAttributeFromContentType } from 'state/content-type/actions';
-import DeleteAttributeModal from 'ui/content-type/attributes/DeleteAttributeModal';
-
-export const mapStateToProps = state => ({
- info: getInfo(state),
-});
-
-export const mapDispatchToProps = dispatch => ({
- onConfirmDelete: (code) => {
- dispatch(sendDeleteAttributeFromContentType(code));
- dispatch(setVisibleModal(''));
- },
-});
-
-const DeleteAttributeModalContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
-)(DeleteAttributeModal);
-
-export default DeleteAttributeModalContainer;
diff --git a/src/ui/content-type/attributes/EditContentTypeAttributeFormContainer.js b/src/ui/content-type/attributes/EditContentTypeAttributeFormContainer.js
deleted file mode 100644
index 72cf72f9c..000000000
--- a/src/ui/content-type/attributes/EditContentTypeAttributeFormContainer.js
+++ /dev/null
@@ -1,132 +0,0 @@
-import { connect } from 'react-redux';
-import { formValueSelector, submit } from 'redux-form';
-import { withRouter } from 'react-router-dom';
-import { injectIntl } from 'react-intl';
-import { METHODS } from '@entando/apimanager';
-import { clearErrors } from '@entando/messages';
-import { routeConverter } from '@entando/utils';
-import { MODE_EDIT_COMPOSITE, MODE_ADD_ATTRIBUTE_COMPOSITE } from 'state/content-type/const';
-
-import EditContentTypeAttributeForm from 'ui/common/form/EditContentTypeAttributeForm';
-import {
- setActionMode,
- fetchAttributeFromContentType,
- handlerAttributeFromContentType,
- fetchContentTypeAttributeRefs,
- fetchContentTypeAttributeRef,
- removeAttributeFromComposite,
- moveAttributeFromComposite,
-} from 'state/content-type/actions';
-import { fetchLanguages } from 'state/languages/actions';
-
-import {
- getSelectedAttributeType,
- getContentTypeAttributesIdList,
- getContentTypeSelectedAttributeAllowedRoles,
- getContentTypeSelectedAttributeRoleChoices,
- getSelectedCompositeAttributes,
- getActionModeContentTypeSelectedAttribute,
- getContentTypeSelectedAttribute,
- getIsMonolistCompositeAttributeType,
- getContentTypeSelectedAttributeSearchable,
- getContentTypeSelectedAttributeIndexable,
-} from 'state/content-type/selectors';
-import { getActiveLanguages } from 'state/languages/selectors';
-
-import {
- ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD,
- ROUTE_CMS_CONTENTTYPE_EDIT,
- ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_EDIT,
-} from 'app-init/router';
-import { setVisibleModal } from 'state/modal/actions';
-import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal';
-
-export const mapStateToProps = (state, { match: { params } }) => {
- const joinAllowedOptions = formValueSelector('attribute')(state, 'joinRoles')
- || formValueSelector('attribute')(state, 'joinAllowedOptions')
- || [];
- return {
- mode: getActionModeContentTypeSelectedAttribute(state) || 'edit',
- attributeCode: params.attributeCode,
- contentTypeAttributeCode: params.entityCode,
- joinAllowedOptions,
- selectedAttributeType: getSelectedAttributeType(state),
- selectedAttributeTypeForAddComposite: getContentTypeSelectedAttribute(state),
- isSearchable: getContentTypeSelectedAttributeIndexable(state),
- isIndexable: getContentTypeSelectedAttributeSearchable(state),
- attributesList: getContentTypeAttributesIdList(state),
- allRoles: getContentTypeSelectedAttributeAllowedRoles(state),
- allowedRoles: getContentTypeSelectedAttributeRoleChoices(
- params.attributeCode,
- joinAllowedOptions,
- )(state),
- compositeAttributes: getSelectedCompositeAttributes(state),
- isMonolistCompositeType: getIsMonolistCompositeAttributeType(state),
- nestedAttributeComposite: formValueSelector('attribute')(state, 'nestedAttribute.type') || '',
- languages: getActiveLanguages(state),
- };
-};
-
-const nopage = { page: 1, pageSize: 0 };
-
-export const mapDispatchToProps = (dispatch, { match: { params }, history }) => ({
- onDidMount: ({ contentTypeAttributeCode, attributeCode }) => {
- dispatch(clearErrors());
- dispatch(fetchLanguages(nopage));
- dispatch(fetchAttributeFromContentType('attribute', contentTypeAttributeCode, attributeCode));
- dispatch(fetchContentTypeAttributeRefs());
- },
- onSave: () => { dispatch(setVisibleModal('')); dispatch(submit('attribute')); },
- onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)),
- onDiscard: (mode) => {
- dispatch(setVisibleModal(''));
- if (mode === MODE_ADD_ATTRIBUTE_COMPOSITE) {
- dispatch(setActionMode(MODE_EDIT_COMPOSITE));
- history.push(routeConverter(ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_EDIT, {
- entityCode: params.entityCode,
- attributeCode: params.attributeCode,
- }));
- } else {
- history.push(routeConverter(ROUTE_CMS_CONTENTTYPE_EDIT, { code: params.entityCode }));
- }
- },
- onSubmit: (values, allowedRoles, mode) => {
- dispatch(handlerAttributeFromContentType(
- METHODS.PUT,
- values,
- allowedRoles,
- mode,
- params.entityCode,
- history,
- ));
- },
- onAddAttribute: (props) => {
- const { attributeCode, contentTypeAttributeCode, selectedAttributeType } = props;
- dispatch(fetchContentTypeAttributeRef(
- contentTypeAttributeCode,
- attributeCode,
- () => history.push(routeConverter(ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, {
- entityCode: contentTypeAttributeCode,
- })),
- selectedAttributeType,
- 'attribute',
- ));
- },
- onClickDelete: (attributeCode, isMonolistCompositeType) => {
- dispatch(removeAttributeFromComposite(attributeCode, isMonolistCompositeType));
- },
- onMove: (fromIndex, toIndex, isMonolistCompositeType) => {
- dispatch(moveAttributeFromComposite(fromIndex, toIndex, isMonolistCompositeType));
- },
-});
-
-const EditContentTypeAttributeFormContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(EditContentTypeAttributeForm);
-
-export default injectIntl(withRouter(EditContentTypeAttributeFormContainer));
diff --git a/src/ui/content-type/attributes/EditContentTypeAttributePage.js b/src/ui/content-type/attributes/EditContentTypeAttributePage.js
deleted file mode 100644
index 625f6e37a..000000000
--- a/src/ui/content-type/attributes/EditContentTypeAttributePage.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import React from 'react';
-import { FormattedMessage } from 'react-intl';
-import { Grid, Row, Col, Breadcrumb } from 'patternfly-react';
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import ErrorsAlertContainer from 'ui/common/form/ErrorsAlertContainer';
-import EditContentTypeAttributeFormContainer from 'ui/content-type/attributes/EditContentTypeAttributeFormContainer';
-import { ROUTE_CMS_CONTENTTYPE_LIST } from 'app-init/router';
-
-const EditContentTypeAttributePage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default EditContentTypeAttributePage;
diff --git a/src/ui/content-type/attributes/monolist/MonolistAttributeFormContainer.js b/src/ui/content-type/attributes/monolist/MonolistAttributeFormContainer.js
deleted file mode 100644
index 40f251184..000000000
--- a/src/ui/content-type/attributes/monolist/MonolistAttributeFormContainer.js
+++ /dev/null
@@ -1,116 +0,0 @@
-import { connect } from 'react-redux';
-import { withRouter } from 'react-router-dom';
-import { clearErrors } from '@entando/messages';
-import { formValueSelector } from 'redux-form';
-import { routeConverter } from '@entando/utils';
-
-import {
- fetchAttributeFromContentType,
- fetchContentTypeAttributeRef,
- sendPostAttributeFromContentTypeMonolist,
- sendPutAttributeFromContentTypeMonolist,
- setActionMode,
- removeAttributeFromComposite,
- moveAttributeFromComposite,
- fetchNestedAttribute,
-} from 'state/content-type/actions';
-import {
- getActionModeContentTypeSelectedAttribute,
- getContentTypeAttributesIdList,
- getContentTypeSelectedAttribute,
- getAttributeSelectFromContentType,
- getSelectedCompositeAttributes,
- getContentTypeSelectedNestedAttributeIndexable,
- getContentTypeSelectedNestedAttributeSearchable,
-} from 'state/content-type/selectors';
-import {
- TYPE_COMPOSITE,
- MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE,
- MODE_ADD_SUB_ATTRIBUTE_MONOLIST_COMPOSITE,
-} from 'state/content-type/const';
-
-import {
- ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_MONOLIST_ADD,
- ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD,
-} from 'app-init/router';
-
-import ContentTypeMonolistAttributeForm from 'ui/common/form/ContentTypeMonolistAttributeForm';
-
-export const mapStateToProps = (state, { match: { params } }) => ({
- mode: getActionModeContentTypeSelectedAttribute(state),
- attributeCode: params.attributeCode,
- contentTypeCode: params.entityCode,
- isIndexable: getContentTypeSelectedNestedAttributeIndexable(state),
- isSearchable: getContentTypeSelectedNestedAttributeSearchable(state),
- type: formValueSelector('monoListAttribute')(state, 'nestedAttribute.type'),
- selectedAttribute: getAttributeSelectFromContentType(state),
- selectedAttributeTypeForAddComposite: getContentTypeSelectedAttribute(state),
- selectedAttributeType: formValueSelector('monoListAttribute')(state, 'type'),
- attributesList: getContentTypeAttributesIdList(state),
- compositeAttributes: getSelectedCompositeAttributes(state),
-});
-
-export const mapDispatchToProps = (dispatch, { match: { params }, history }) => ({
- onDidMount: ({
- attributeCode, contentTypeCode, mode,
- }) => {
- dispatch(clearErrors());
- if (mode === MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE) {
- dispatch(fetchContentTypeAttributeRef(
- contentTypeCode,
- TYPE_COMPOSITE,
- () => (
- history.push(routeConverter(ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_MONOLIST_ADD, {
- entityCode: contentTypeCode,
- attributeCode,
- }))
- ),
- '',
- 'monoListAttribute',
- ));
- } else {
- dispatch(fetchAttributeFromContentType('monoListAttribute', contentTypeCode, attributeCode));
- }
- },
- onFetchNestedAttribute: ({ contentTypeCode, type, mode }) => {
- if (mode !== MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE) {
- dispatch(fetchNestedAttribute(contentTypeCode, type));
- }
- },
- onSubmit: (values, mode, selectedAttribute) => {
- if (mode === MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE) {
- dispatch(sendPostAttributeFromContentTypeMonolist(
- selectedAttribute,
- params.entityCode,
- history,
- ));
- } else {
- dispatch(sendPutAttributeFromContentTypeMonolist(values, params.entityCode, history));
- }
- },
- onAddAttribute: ({ contentTypeCode, type }) => {
- dispatch(setActionMode(MODE_ADD_SUB_ATTRIBUTE_MONOLIST_COMPOSITE));
- dispatch(fetchContentTypeAttributeRef(
- contentTypeCode,
- type,
- () => history.push(routeConverter(ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_ADD, {
- entityCode: contentTypeCode,
- })),
- type,
- 'addAttribute',
- ));
- },
- onClickDelete: (attributeCode) => {
- dispatch(removeAttributeFromComposite(attributeCode));
- },
- onMove: (fromIndex, toIndex) => {
- dispatch(moveAttributeFromComposite(fromIndex, toIndex));
- },
-});
-
-export default withRouter(connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- { pure: false },
-)(ContentTypeMonolistAttributeForm));
diff --git a/src/ui/content-type/attributes/monolist/MonolistPage.js b/src/ui/content-type/attributes/monolist/MonolistPage.js
deleted file mode 100644
index 500d15ab3..000000000
--- a/src/ui/content-type/attributes/monolist/MonolistPage.js
+++ /dev/null
@@ -1,104 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import { Grid, Row, Col, Breadcrumb } from 'patternfly-react';
-import { routeConverter } from '@entando/utils';
-
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import MonolistAttributeFormContainer from 'ui/content-type/attributes/monolist/MonolistAttributeFormContainer';
-import { ROUTE_CMS_CONTENTTYPE_LIST, ROUTE_CMS_CONTENT_TYPE_ATTRIBUTE_EDIT } from 'app-init/router';
-
-import { TYPE_COMPOSITE, TYPE_MONOLIST } from 'state/content-type/const';
-
-class MonolistPage extends Component {
- componentDidMount() {
- const { onDidMount, ...otherProps } = this.props;
- onDidMount(otherProps);
- }
-
- render() {
- const {
- attributeCode, contentTypeCode, selectedAttribute, entityCode, type,
- } = this.props;
- const titleId = selectedAttribute === ''
- ? 'cms.label.edit'
- : `cms.contenttype.label.edit.${selectedAttribute}`;
-
- const nextBreadCrumbs = type === TYPE_COMPOSITE ? (
-
-
- {attributeCode}
-
- ) : (
-
-
- {attributeCode}
-
- );
-
- const lastBreadcrumbLabel = type === TYPE_COMPOSITE ? TYPE_MONOLIST : selectedAttribute;
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- : {contentTypeCode}
-
- {nextBreadCrumbs}
- {lastBreadcrumbLabel}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-MonolistPage.propTypes = {
- onDidMount: PropTypes.func,
- contentTypeCode: PropTypes.string,
- attributeCode: PropTypes.string,
- selectedAttribute: PropTypes.string,
- entityCode: PropTypes.string,
- type: PropTypes.string,
-};
-
-MonolistPage.defaultProps = {
- onDidMount: () => {},
- contentTypeCode: '',
- attributeCode: '',
- selectedAttribute: '',
- entityCode: '',
- type: '',
-};
-
-export default MonolistPage;
diff --git a/src/ui/content-type/attributes/monolist/MonolistPageContainer.js b/src/ui/content-type/attributes/monolist/MonolistPageContainer.js
deleted file mode 100644
index a6a917cb3..000000000
--- a/src/ui/content-type/attributes/monolist/MonolistPageContainer.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import { connect } from 'react-redux';
-import { withRouter } from 'react-router-dom';
-import { formValueSelector } from 'redux-form';
-
-import { fetchAttributeFromContentType } from 'state/content-type/actions';
-import { getActionModeContentTypeSelectedAttribute } from 'state/content-type/selectors';
-import { MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE } from 'state/content-type/const';
-
-import MonolistPage from 'ui/content-type/attributes/monolist/MonolistPage';
-
-export const mapStateToProps = (state, { match: { params } }) => ({
- mode: getActionModeContentTypeSelectedAttribute(state) || '',
- attributeCode: params.attributeCode,
- entityCode: params.entityCode,
- contentTypeCode: params.entityCode,
- isIndexable: formValueSelector('monoListAttribute')(state, 'nestedAttribute.indexable'),
- type: formValueSelector('monoListAttribute')(state, 'nestedAttribute.type'),
- selectedAttribute: formValueSelector('monoListAttribute')(state, 'type'),
-});
-
-export const mapDispatchToProps = dispatch => ({
- onDidMount: ({ attributeCode, contentTypeCode, mode }) => {
- if (mode !== MODE_ADD_MONOLIST_ATTRIBUTE_COMPOSITE) {
- dispatch(fetchAttributeFromContentType('monoListAttribute', contentTypeCode, attributeCode));
- }
- },
-});
-
-export default withRouter(connect(
- mapStateToProps,
- mapDispatchToProps,
-)(MonolistPage));
diff --git a/src/ui/contents/Contents.js b/src/ui/contents/Contents.js
deleted file mode 100644
index dd5a3caab..000000000
--- a/src/ui/contents/Contents.js
+++ /dev/null
@@ -1,286 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { intlShape, defineMessages, FormattedMessage } from 'react-intl';
-import { Button, Spinner } from 'patternfly-react';
-import { PermissionCheck } from '@entando/utils';
-import ContentsFilter from 'ui/contents/ContentsFilter';
-import ContentsTable from 'ui/contents/ContentsTable';
-import ContentsTabs from 'ui/contents/ContentsTabs';
-import { withPermissionValues } from 'ui/auth/withPermissions';
-import { VALIDATE_CONTENTS_PERMISSION } from 'state/permissions/const';
-
-const messages = defineMessages({
- description: {
- id: 'cms.contents.description',
- defaultMessage: 'Name',
- },
- lastModified: {
- id: 'cms.contents.lastModified',
- defaultMessage: 'Last Edited',
- },
- typeCode: {
- id: 'cms.contents.typeCode',
- defaultMessage: 'Type',
- },
- created: {
- id: 'cms.contents.created',
- defaultMessage: 'Created date',
- },
- firstEditor: {
- id: 'cms.contents.firstEditor',
- defaultMessage: 'Created by',
- },
- mainGroup: {
- id: 'cms.contents.mainGroup',
- defaultMessage: 'Owner Group',
- },
- groups: {
- id: 'cms.contents.groups',
- defaultMessage: 'Join Groups',
- },
- onLine: {
- id: 'cms.contents.onLine',
- defaultMessage: 'Status',
- },
- restriction: {
- id: 'cms.contents.restriction',
- defaultMessage: 'Restrictions',
- },
- code: {
- id: 'cms.contents.code',
- defaultMessage: 'Code',
- },
- actions: {
- id: 'cms.contents.actions',
- defaultMessage: 'Actions',
- },
-});
-
-const AVAILABLE_COLUMN_CODES = [
- 'description', 'firstEditor', 'lastModified',
- 'typeCode', 'created', 'mainGroup', 'groups',
- 'onLine', 'restriction', 'code',
-];
-
-class Contents extends Component {
- constructor(props) {
- super(props);
- this.messages = defineMessages({
- downloadButton: {
- id: 'cms.contents.downloadAs',
- defaultMessage: 'Download As',
- },
- addContent: {
- id: 'cms.contents.addContent',
- defaultMessage: 'Add Content',
- },
- columns: {
- id: 'cms.contents.columns',
- defaultMessage: 'Columns',
- },
- selectedContents: {
- id: 'cms.contents.selectedContents',
- defaultMessage: 'You have selected {number} content(s), you can',
- },
- });
- this.onSortChanged = this.onSortChanged.bind(this);
- }
-
- componentDidMount() {
- const { onDidMount } = this.props;
- onDidMount();
- }
-
- componentWillUnmount() {
- const { onWillUnmount } = this.props;
- onWillUnmount();
- }
-
- onSortChanged(sortParams) {
- const { currentAuthorShow, currentStatusShow, onSetSort } = this.props;
- onSetSort({ ...sortParams, group: `${currentAuthorShow}_${currentStatusShow}` });
- }
-
- render() {
- const {
- page, totalItems, pageSize, contents, lastPage, loading,
- currentQuickFilter, onSetQuickFilter, onFilteredSearch, intl,
- contentTypes, groups, language, filteringCategories, statusChecked,
- onCheckStatus, onCheckAccess, accessChecked, onCheckAuthor, authorChecked,
- currentAuthorShow, currentStatusShow, currentColumnsShow,
- onSetCurrentAuthorShow, onSetCurrentStatusShow, onSetCurrentColumnsShow,
- onSetContentType, onSetGroup, sortingColumns, selectedRows,
- onSelectRows, onSelectAllRows, onEditContent, onClickDelete, onClickPublish,
- onClickAddContent, onClickJoinCategories, currentUsername, onClickClone,
- onAdvancedFilterSearch, users, userPermissions, groupFilter,
- } = this.props;
-
- const availableColumns = AVAILABLE_COLUMN_CODES.map(code => ({
- name: intl.formatMessage(messages[code]),
- code,
- }));
-
- const { selectedContents } = this.messages;
- const selectedRowsData = contents.filter(c => selectedRows.includes(c.id));
- const renderSelectedRows = selectedRows.length > 0 ? (
-
- {intl.formatMessage(selectedContents, { number: selectedRows.length })}
-
-
- {currentStatusShow === 'published' ? (
-
- ) : (
-
- )}
-
-
- ) : null;
-
- return (
-
-
-
-
- {renderSelectedRows}
-
-
-
-
-
-
-
- );
- }
-}
-
-Contents.propTypes = {
- intl: intlShape.isRequired,
- page: PropTypes.number.isRequired,
- lastPage: PropTypes.number.isRequired,
- totalItems: PropTypes.number.isRequired,
- pageSize: PropTypes.number.isRequired,
- language: PropTypes.string.isRequired,
- onDidMount: PropTypes.func.isRequired,
- loading: PropTypes.bool,
- currentQuickFilter: PropTypes.shape({}).isRequired,
- onSetQuickFilter: PropTypes.func.isRequired,
- onFilteredSearch: PropTypes.func.isRequired,
- contents: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- contentTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- groups: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- groupFilter: PropTypes.string,
- filteringCategories: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- onCheckStatus: PropTypes.func.isRequired,
- statusChecked: PropTypes.string.isRequired,
- accessChecked: PropTypes.string.isRequired,
- onCheckAccess: PropTypes.func.isRequired,
- authorChecked: PropTypes.string.isRequired,
- onCheckAuthor: PropTypes.func.isRequired,
- currentAuthorShow: PropTypes.string.isRequired,
- currentStatusShow: PropTypes.string.isRequired,
- currentColumnsShow: PropTypes.arrayOf(PropTypes.string),
- onSetCurrentAuthorShow: PropTypes.func.isRequired,
- onSetCurrentStatusShow: PropTypes.func.isRequired,
- onSetCurrentColumnsShow: PropTypes.func.isRequired,
- onSetContentType: PropTypes.func.isRequired,
- onSetGroup: PropTypes.func.isRequired,
- sortingColumns: PropTypes.shape({}).isRequired,
- onSetSort: PropTypes.func.isRequired,
- selectedRows: PropTypes.arrayOf(PropTypes.string).isRequired,
- onSelectRows: PropTypes.func.isRequired,
- onSelectAllRows: PropTypes.func.isRequired,
- onEditContent: PropTypes.func.isRequired,
- onClickDelete: PropTypes.func.isRequired,
- onClickPublish: PropTypes.func.isRequired,
- onClickAddContent: PropTypes.func.isRequired,
- onClickJoinCategories: PropTypes.func.isRequired,
- currentUsername: PropTypes.string.isRequired,
- onClickClone: PropTypes.func.isRequired,
- onAdvancedFilterSearch: PropTypes.func.isRequired,
- users: PropTypes.arrayOf(PropTypes.shape({})),
- onWillUnmount: PropTypes.func.isRequired,
- userPermissions: PropTypes.arrayOf(PropTypes.string),
-};
-
-Contents.defaultProps = {
- loading: false,
- users: [],
- userPermissions: [],
- currentColumnsShow: ['description', 'firstEditor', 'lastModified', 'typeCode', 'created', 'onLine', 'restriction'],
- groupFilter: '',
-};
-
-export default withPermissionValues(Contents);
diff --git a/src/ui/contents/ContentsContainer.js b/src/ui/contents/ContentsContainer.js
deleted file mode 100644
index 23f40a82a..000000000
--- a/src/ui/contents/ContentsContainer.js
+++ /dev/null
@@ -1,184 +0,0 @@
-import { connect } from 'react-redux';
-import { injectIntl } from 'react-intl';
-import { withRouter } from 'react-router-dom';
-import { routeConverter, convertToQueryString, FILTER_OPERATORS } from '@entando/utils';
-import { addToast, TOAST_SUCCESS } from '@entando/messages';
-import { adminConsoleUrl } from 'helpers/urlUtils';
-import {
- setQuickFilter, checkStatus, checkAccess, checkAuthor, sendCloneContent,
- setCurrentAuthorShow, setCurrentStatusShow, fetchContentsPaged,
- setContentType, setGroup, setSort, selectRows, selectAllRows, resetJoinContentCategories,
- setTabSearch,
- resetAuthorStatus, leaveContentsPage,
-} from 'state/contents/actions';
-import { fetchCategoryTree } from 'state/categories/actions';
-import { setNewContentsType, setWorkMode } from 'state/edit-content/actions';
-import { fetchContentTypeListPaged } from 'state/content-type/actions';
-import { setVisibleModal, setInfo } from 'state/modal/actions';
-import { fetchUsers } from 'state/users/actions';
-import {
- getContents, getCurrentQuickFilter, getFilteringCategories,
- getStatusChecked, getAccessChecked, getAuthorChecked, getCurrentAuthorShow,
- getCurrentStatusShow, getSortingColumns,
- getSelectedRows, getGroup,
-} from 'state/contents/selectors';
-import { setColumnOrder } from 'state/table-column-order/actions';
-import { getColumnOrder } from 'state/table-column-order/selectors';
-import { ROUTE_CMS_EDIT_CONTENT } from 'app-init/router';
-import { getPagination } from 'state/pagination/selectors';
-import { NAMESPACE_CONTENTS } from 'state/pagination/const';
-import { getContentTypeList } from 'state/content-type/selectors';
-import { getLoading } from 'state/loading/selectors';
-import { getGroupsList } from 'state/groups/selectors';
-import { getLocale } from 'state/locale/selectors';
-import { getUsername } from '@entando/apimanager';
-import { DELETE_CONTENT_MODAL_ID } from 'ui/contents/DeleteContentModal';
-import { PUBLISH_CONTENT_MODAL_ID } from 'ui/contents/PublishContentModal';
-import { JOIN_CATEGORIES_MODAL_ID } from 'ui/contents/JoinCategoriesModal';
-import { WORK_MODE_EDIT, WORK_MODE_ADD } from 'state/edit-content/types';
-import Contents from 'ui/contents/Contents';
-import { getUserList } from 'state/users/selectors';
-
-const noPage = { page: 1, pageSize: 0 };
-
-const paramsForStatusAndAuthor = (status, author) => {
- const published = status === 'published';
- const all = author === 'all';
- const eq = FILTER_OPERATORS.EQUAL;
-
- const formValues = {
- ...((!published && status !== 'all') && { status }),
- ...(!all && { author }),
- };
- const operators = {
- ...((!published && status !== 'all') && { status: eq }),
- ...(!all && { author: eq }),
- };
- const query = `${convertToQueryString({
- formValues,
- operators,
- })}${published ? '&status=published' : ''}`;
-
- return query.slice(1);
-};
-
-export const mapStateToProps = (state) => {
- const {
- page, lastPage, totalItems, pageSize,
- } = getPagination(state, NAMESPACE_CONTENTS);
- const currentAuthorShow = getCurrentAuthorShow(state);
- const currentStatusShow = getCurrentStatusShow(state);
- const sortingColumns = getSortingColumns(state, `${currentAuthorShow}_${currentStatusShow}`);
- return ({
- loading: getLoading(state).contents,
- language: getLocale(state),
- contents: getContents(state),
- currentQuickFilter: getCurrentQuickFilter(state),
- groups: getGroupsList(state),
- groupFilter: getGroup(state),
- contentTypes: getContentTypeList(state),
- filteringCategories: getFilteringCategories(state),
- statusChecked: getStatusChecked(state),
- accessChecked: getAccessChecked(state),
- authorChecked: getAuthorChecked(state),
- currentAuthorShow,
- currentStatusShow,
- currentColumnsShow: getColumnOrder(state, 'contentListPage'),
- page,
- lastPage,
- totalItems,
- pageSize,
- sortingColumns,
- selectedRows: getSelectedRows(state),
- currentUsername: getUsername(state),
- users: getUserList(state),
- });
-};
-
-export const mapDispatchToProps = (dispatch, { intl, history }) => ({
- onDidMount: () => {
- dispatch(fetchContentsPaged());
- dispatch(fetchCategoryTree());
- dispatch(fetchContentTypeListPaged(noPage));
- dispatch(fetchUsers(noPage));
- },
- onSetQuickFilter: filter => dispatch(setQuickFilter(filter)),
- onFilteredSearch: (params, page, sort, tabSearch) => (
- dispatch(fetchContentsPaged({
- params, page, sort, tabSearch,
- }))
- ),
- onSetTabSearch: tabSearch => dispatch(setTabSearch(tabSearch)),
- onCheckStatus: status => dispatch(checkStatus(status)),
- onCheckAccess: access => dispatch(checkAccess(access)),
- onCheckAuthor: author => dispatch(checkAuthor(author)),
- onSetCurrentAuthorShow: (author, status) => {
- dispatch(setCurrentAuthorShow(author));
- dispatch(fetchContentsPaged({
- params: paramsForStatusAndAuthor(status, author),
- tabSearch: true,
- }));
- },
- onSetCurrentStatusShow: (status, author) => {
- dispatch(setCurrentStatusShow(status));
- dispatch(fetchContentsPaged({
- params: paramsForStatusAndAuthor(status, author),
- tabSearch: true,
- }));
- },
- onAdvancedFilterSearch: () => {
- dispatch(resetAuthorStatus());
- dispatch(fetchContentsPaged());
- },
- onSetCurrentColumnsShow: columnOrder => dispatch(setColumnOrder(columnOrder, 'contentListPage')),
- onSetContentType: contentType => dispatch(setContentType(contentType)),
- onSetGroup: group => dispatch(setGroup(group)),
- onSetSort: sort => dispatch(setSort(sort)),
- onSelectRows: contentIds => dispatch(selectRows(contentIds)),
- onSelectAllRows: checked => dispatch(selectAllRows(checked)),
- onEditContent: (contentId) => {
- dispatch(setWorkMode(WORK_MODE_EDIT));
- dispatch(setCurrentStatusShow('all'));
- history.push(routeConverter(ROUTE_CMS_EDIT_CONTENT, { id: contentId }));
- },
- onClickDelete: (item) => {
- dispatch(setVisibleModal(DELETE_CONTENT_MODAL_ID));
- dispatch(setInfo(item));
- },
- onClickPublish: (contents, onLine) => {
- dispatch(setVisibleModal(PUBLISH_CONTENT_MODAL_ID));
- dispatch(setInfo({ contents, onLine }));
- },
- onClickAddContent: (contentType) => {
- dispatch(setWorkMode(WORK_MODE_ADD));
- dispatch(setCurrentStatusShow('all'));
- dispatch(setNewContentsType(contentType));
- const newRoute = adminConsoleUrl(`do/jacms/Content/createNew.action?contentTypeCode=${contentType.typeCode}`);
- window.location.href = newRoute;
- },
- onClickJoinCategories: (contents) => {
- dispatch(resetJoinContentCategories());
- dispatch(setVisibleModal(JOIN_CATEGORIES_MODAL_ID));
- dispatch(setInfo({ contents }));
- },
- onClickClone: (content) => {
- dispatch(setWorkMode(WORK_MODE_EDIT));
- dispatch(sendCloneContent(content.id)).then((res) => {
- if (res) {
- dispatch(addToast(
- intl.formatMessage({ id: 'cms.contents.cloned', defaultMessage: 'Cloned' }),
- TOAST_SUCCESS,
- ));
- history.push(routeConverter(ROUTE_CMS_EDIT_CONTENT, { id: res.id }));
- }
- });
- },
- onWillUnmount: () => dispatch(leaveContentsPage()),
-});
-
-const ContentsContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
-)(Contents);
-
-export default withRouter(injectIntl(ContentsContainer));
diff --git a/src/ui/contents/ContentsPage.js b/src/ui/contents/ContentsPage.js
deleted file mode 100644
index 411b6ee5c..000000000
--- a/src/ui/contents/ContentsPage.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import React from 'react';
-import { Row, Col, Grid, Breadcrumb } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import ContentsContainer from 'ui/contents/ContentsContainer';
-
-const ContentsPage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default ContentsPage;
diff --git a/src/ui/contents/ContentsTabs.js b/src/ui/contents/ContentsTabs.js
deleted file mode 100644
index 7a8ba9d0e..000000000
--- a/src/ui/contents/ContentsTabs.js
+++ /dev/null
@@ -1,178 +0,0 @@
-import React from 'react';
-import {
- TabContainer, Nav, NavItem, TabContent, TabPane,
- DropdownButton, MenuItem,
-} from 'patternfly-react';
-import { CSVLink } from 'react-csv';
-import Workbook from 'react-excel-workbook';
-import { intlShape, FormattedMessage } from 'react-intl';
-import PropTypes from 'prop-types';
-import MultiSelectMenuItem from 'ui/common/form/MultiSelectMenuItem';
-
-const ContentTabs = ({
- intl, availableColumns, messages, contentTypes, currentColumnsShow, currentAuthorShow,
- currentStatusShow, onSetCurrentColumnsShow, onSetCurrentStatusShow, onSetCurrentAuthorShow,
- onClickAddContent, contents, currentUsername,
-}) => {
- const filteredAvailableColumns = availableColumns.filter(column => (
- currentColumnsShow.includes(column.code)
- ));
- const csvHeaders = filteredAvailableColumns.map(column => (
- Object.assign({}, { label: column.name, key: column.code })
- ));
- const onClickColumnItem = (code) => {
- if (code === 'name') return;
- let newColumns = [...currentColumnsShow];
- if (newColumns.includes(code)) {
- newColumns = newColumns.filter(c => c !== code);
- } else {
- newColumns = [...newColumns, code];
- }
- onSetCurrentColumnsShow(newColumns);
- };
- const navItems = (
-
-
-
-
- {
- contentTypes.map(contentType => (
-
- ))
- }
-
-
-
-
-
- CSV
-
-
}>
-
- {filteredAvailableColumns.map(column => (
-
- ))}
-
-
-
-
-
-
-
- {availableColumns.map(({ name, code }, i) => (
-
- ))}
-
-
-
- );
- return (
- onSetCurrentAuthorShow(author, currentStatusShow)}
- >
-
-
-
-
- onSetCurrentStatusShow(status, currentAuthorShow)}
- >
- {navItems}
-
-
-
- onSetCurrentStatusShow(status, currentAuthorShow)}
- >
- {navItems}
-
-
-
-
-
- );
-};
-
-ContentTabs.propTypes = {
- intl: intlShape.isRequired,
- availableColumns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- messages: PropTypes.shape({
- addContent: PropTypes.shape({}),
- downloadButton: PropTypes.shape({}),
- columns: PropTypes.shape({}),
- }).isRequired,
- contentTypes: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- contents: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- currentColumnsShow: PropTypes.arrayOf(PropTypes.string).isRequired,
- currentAuthorShow: PropTypes.string.isRequired,
- currentStatusShow: PropTypes.string.isRequired,
- onSetCurrentAuthorShow: PropTypes.func.isRequired,
- onSetCurrentStatusShow: PropTypes.func.isRequired,
- onSetCurrentColumnsShow: PropTypes.func.isRequired,
- onClickAddContent: PropTypes.func.isRequired,
- currentUsername: PropTypes.string.isRequired,
-};
-
-export default ContentTabs;
diff --git a/src/ui/dashboard/Integrations.js b/src/ui/dashboard/Integrations.js
deleted file mode 100644
index d2fcfb304..000000000
--- a/src/ui/dashboard/Integrations.js
+++ /dev/null
@@ -1,50 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import {
- Card,
- CardTitle,
- CardBody,
- AggregateStatusCount,
- Icon,
-} from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-
-class Integrations extends Component {
- componentWillMount() {
- this.props.onWillMount();
- }
-
- render() {
- return (
-
-
-
-
-
-
-
- {this.props.plugins}
-
-
-
- {this.props.apis}
-
-
-
- );
- }
-}
-
-Integrations.propTypes = {
- onWillMount: PropTypes.func.isRequired,
- plugins: PropTypes.oneOfType([
- PropTypes.number,
- PropTypes.string,
- ]).isRequired,
- apis: PropTypes.oneOfType([
- PropTypes.number,
- PropTypes.string,
- ]).isRequired,
-};
-
-export default Integrations;
diff --git a/src/ui/dashboard/IntegrationsContainer.js b/src/ui/dashboard/IntegrationsContainer.js
deleted file mode 100644
index 8a26209a4..000000000
--- a/src/ui/dashboard/IntegrationsContainer.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import { connect } from 'react-redux';
-
-import { getApis, getPlugins } from 'state/dashboard/selectors';
-import { fetchIntegration } from 'state/dashboard/actions';
-
-import Integrations from 'ui/dashboard/Integrations';
-
-export const mapDispatchToProps = dispatch => ({
- onWillMount: () => dispatch(fetchIntegration()),
-});
-
-export const mapStateToProps = state => (
- {
- apis: getApis(state),
- plugins: getPlugins(state),
- }
-);
-
-export default connect(
- mapStateToProps,
- mapDispatchToProps,
-)(Integrations);
diff --git a/src/ui/data-types/attributes/AddDataTypeAttributePage.js b/src/ui/data-types/attributes/AddDataTypeAttributePage.js
deleted file mode 100644
index 1a6c491f3..000000000
--- a/src/ui/data-types/attributes/AddDataTypeAttributePage.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import React from 'react';
-import { FormattedMessage, defineMessages, injectIntl, intlShape } from 'react-intl';
-import { Grid, Row, Col, Breadcrumb } from 'patternfly-react';
-
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import PageTitle from 'ui/internal-page/PageTitle';
-import ErrorsAlertContainer from 'ui/common/form/ErrorsAlertContainer';
-import AddFormContainer from 'ui/data-types/attributes/AddFormContainer';
-import { ROUTE_DATA_TYPE_LIST } from 'app-init/router';
-import withPermissions from 'ui/auth/withPermissions';
-import { SUPERUSER_PERMISSION } from 'state/permissions/const';
-
-const msgs = defineMessages({
- add: {
- id: 'app.add',
- defaultMessage: 'Add',
- },
-});
-
-const AddDataTypeAttributePage = ({ intl }) => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-AddDataTypeAttributePage.propTypes = {
- intl: intlShape.isRequired,
-};
-
-export default withPermissions(SUPERUSER_PERMISSION)(injectIntl(AddDataTypeAttributePage));
diff --git a/src/ui/data-types/attributes/AddFormContainer.js b/src/ui/data-types/attributes/AddFormContainer.js
deleted file mode 100644
index 054a51017..000000000
--- a/src/ui/data-types/attributes/AddFormContainer.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import { connect } from 'react-redux';
-import { formValueSelector } from 'redux-form';
-import { withRouter } from 'react-router-dom';
-import { METHODS } from '@entando/apimanager';
-import { clearErrors } from '@entando/messages';
-import AttributeForm from 'ui/common/form/AttributeForm';
-import {
- setActionMode,
- fetchDataTypeAttributes,
- handlerAttributeFromDataType,
- fetchDataTypeAttribute,
- removeAttributeFromComposite,
- moveAttributeFromComposite,
-} from 'state/data-types/actions';
-
-import {
- getDataTypeSelectedAttribute,
- getDataTypeSelectedAttributeCode,
- getDataTypeAttributesIdList,
- getDataTypeSelectedAttributeAllowedRoles,
- getActionModeDataTypeSelectedAttribute,
- getSelectedCompositeAttributes,
-} from 'state/data-types/selectors';
-
-import { ROUTE_DATA_TYPE_ATTRIBUTE_ADD } from 'app-init/router';
-import { TYPE_COMPOSITE, MODE_ADD } from 'state/data-types/const';
-
-export const mapStateToProps = (state, { match: { params } }) => ({
- mode: getActionModeDataTypeSelectedAttribute(state) || 'add',
- dataTypeAttributeCode: params.entityCode,
- joinAllowedOptions: formValueSelector('addAttribute')(state, 'joinRoles') || [],
- selectedAttributeType: getDataTypeSelectedAttribute(state),
- attributesList: getDataTypeAttributesIdList(state),
- initialValues: {
- type: getDataTypeSelectedAttributeCode(state),
- compositeAttributeType: TYPE_COMPOSITE,
- },
- allowedRoles: getDataTypeSelectedAttributeAllowedRoles(state),
- compositeAttributes: getSelectedCompositeAttributes(state),
-});
-
-export const mapDispatchToProps = (dispatch, { match: { params } }) => ({
- onWillMount: () => {
- dispatch(clearErrors());
- dispatch(fetchDataTypeAttributes());
- },
- onSubmit: (values, allowedRoles, mode) => {
- dispatch(handlerAttributeFromDataType(
- METHODS.POST,
- values,
- allowedRoles,
- mode,
- params.entityCode,
- ));
- },
- onAddAttribute: (props) => {
- const { attributeCode, entityCode, selectedAttributeType: { code } } = props;
- dispatch(setActionMode(MODE_ADD));
- dispatch(fetchDataTypeAttribute(
- attributeCode,
- {
- route: ROUTE_DATA_TYPE_ATTRIBUTE_ADD,
- params: { entityCode },
- },
- code,
- 'addAttribute',
- ));
- },
- onClickDelete: (attributeCode) => {
- dispatch(removeAttributeFromComposite(attributeCode));
- },
- onMove: (fromIndex, toIndex) => {
- dispatch(moveAttributeFromComposite(fromIndex, toIndex));
- },
-
-});
-
-export default withRouter(connect(mapStateToProps, mapDispatchToProps, null, {
- pure: false,
-})(AttributeForm));
diff --git a/src/ui/data-types/attributes/EditDataTypeAttributePage.js b/src/ui/data-types/attributes/EditDataTypeAttributePage.js
deleted file mode 100644
index f13b2c421..000000000
--- a/src/ui/data-types/attributes/EditDataTypeAttributePage.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import React from 'react';
-import { FormattedMessage, defineMessages, injectIntl, intlShape } from 'react-intl';
-import { Grid, Row, Col, Breadcrumb } from 'patternfly-react';
-
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import PageTitle from 'ui/internal-page/PageTitle';
-import ErrorsAlertContainer from 'ui/common/form/ErrorsAlertContainer';
-import EditFormContainer from 'ui/data-types/attributes/EditFormContainer';
-import { ROUTE_DATA_TYPE_LIST } from 'app-init/router';
-import withPermissions from 'ui/auth/withPermissions';
-import { SUPERUSER_PERMISSION } from 'state/permissions/const';
-
-const msgs = defineMessages({
- edit: {
- id: 'app.edit',
- defaultMessage: 'Edit',
- },
-});
-
-const EditDataTypeAttributePage = ({ intl }) => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-EditDataTypeAttributePage.propTypes = {
- intl: intlShape.isRequired,
-};
-
-export default withPermissions(SUPERUSER_PERMISSION)(injectIntl(EditDataTypeAttributePage));
diff --git a/src/ui/data-types/attributes/EditFormContainer.js b/src/ui/data-types/attributes/EditFormContainer.js
deleted file mode 100644
index 3030de05a..000000000
--- a/src/ui/data-types/attributes/EditFormContainer.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import { connect } from 'react-redux';
-import { formValueSelector } from 'redux-form';
-import { withRouter } from 'react-router-dom';
-import { METHODS } from '@entando/apimanager';
-import { clearErrors } from '@entando/messages';
-
-import EditAttributeForm from 'ui/common/form/EditAttributeForm';
-import {
- fetchAttributeFromDataType,
- handlerAttributeFromDataType,
- fetchDataTypeAttributes,
- fetchDataTypeAttribute,
- removeAttributeFromComposite,
- moveAttributeFromComposite,
-} from 'state/data-types/actions';
-
-import {
- getSelectedAttributeType,
- getDataTypeAttributesIdList,
- getDataTypeSelectedAttributeAllowedRoles,
- getSelectedCompositeAttributes,
- getActionModeDataTypeSelectedAttribute,
- getDataTypeSelectedAttribute,
- getIsMonolistComposteAttributeType,
-} from 'state/data-types/selectors';
-
-import { ROUTE_DATA_TYPE_ATTRIBUTE_ADD } from 'app-init/router';
-
-export const mapStateToProps = (state, { match: { params } }) => ({
- mode: getActionModeDataTypeSelectedAttribute(state) || 'edit',
- attributeCode: params.attributeCode,
- dataTypeAttributeCode: params.entityCode,
- joinAllowedOptions:
- formValueSelector('attribute')(state, 'joinRoles') ||
- formValueSelector('attribute')(state, 'joinAllowedOptions') || [],
- selectedAttributeType: getSelectedAttributeType(state),
- selectedAttributeTypeForAddComposite: getDataTypeSelectedAttribute(state),
- attributesList: getDataTypeAttributesIdList(state),
- allowedRoles: getDataTypeSelectedAttributeAllowedRoles(state),
- compositeAttributes: getSelectedCompositeAttributes(state),
- isMonolistCompositeType: getIsMonolistComposteAttributeType(state),
- nestedAttributeComposite: formValueSelector('attribute')(state, 'nestedAttribute.type') || '',
-});
-
-export const mapDispatchToProps = (dispatch, { match: { params } }) => ({
- onDidMount: ({ dataTypeAttributeCode, attributeCode }) => {
- dispatch(clearErrors());
- dispatch(fetchAttributeFromDataType('attribute', dataTypeAttributeCode, attributeCode));
- dispatch(fetchDataTypeAttributes());
- },
- onSubmit: (values, allowedRoles, mode) => {
- dispatch(handlerAttributeFromDataType(
- METHODS.PUT,
- values,
- allowedRoles,
- mode,
- params.entityCode,
- ));
- },
- onAddAttribute: (props) => {
- const { attributeCode, dataTypeAttributeCode, selectedAttributeType } = props;
- dispatch(fetchDataTypeAttribute(
- attributeCode,
- {
- route: ROUTE_DATA_TYPE_ATTRIBUTE_ADD,
- params: { entityCode: dataTypeAttributeCode },
- },
- selectedAttributeType,
- 'attribute',
- ));
- },
- onClickDelete: (attributeCode, isMonolistCompositeType) => {
- dispatch(removeAttributeFromComposite(attributeCode, isMonolistCompositeType));
- },
- onMove: (fromIndex, toIndex, isMonolistCompositeType) => {
- dispatch(moveAttributeFromComposite(fromIndex, toIndex, isMonolistCompositeType));
- },
-});
-
-export default withRouter(connect(mapStateToProps, mapDispatchToProps, null, {
- pure: false,
-})(EditAttributeForm));
diff --git a/src/ui/edit-content/EditContentForm.js b/src/ui/edit-content/EditContentForm.js
deleted file mode 100644
index 15d3dd57d..000000000
--- a/src/ui/edit-content/EditContentForm.js
+++ /dev/null
@@ -1,496 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { intlShape, defineMessages, FormattedMessage } from 'react-intl';
-import { Row, Col, FormGroup, Spinner, Button } from 'patternfly-react';
-import { Field, reduxForm } from 'redux-form';
-import Panel from 'react-bootstrap/lib/Panel';
-import { required, maxLength } from '@entando/utils';
-import { Collapse } from 'react-collapse';
-
-import ConfirmCancelModalContainer from 'ui/common/cancel-modal/ConfirmCancelModalContainer';
-import StickySave from 'ui/common/StickySave';
-import SectionTitle from 'ui/common/SectionTitle';
-import FormLabel from 'ui/common/form/FormLabel';
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-import RenderVersionText from 'ui/common/form/RenderVersionText';
-import RenderDropdownTypeaheadInput from 'ui/common/form/RenderDropdownTypeaheadInput';
-
-import { WORK_MODE_ADD, WORK_MODE_EDIT } from 'state/edit-content/types';
-
-const maxLength255 = maxLength(255);
-
-const messages = defineMessages({
- contentDesctiption: {
- id: 'cms.contents.edit.contentDescription.placeholder',
- defaultMessage: 'Descriptions help you archive, sort, and find contents',
- },
- creator: {
- id: 'cms.contents.edit.version.creator',
- defaultMessage: 'created - by',
- },
- modifier: {
- id: 'cms.contents.edit.version.modifier',
- defaultMessage: 'modified by',
- },
- sameAuthor: {
- id: 'cms.contents.edit.version.you',
- defaultMessage: 'you',
- },
-});
-
-const fieldFocus = (el, addDelay) => {
- const focusEl = el.current;
- if (!focusEl) {
- return;
- }
- const runFocus = () => focusEl.getRenderedComponent().focus();
- if (addDelay) {
- setTimeout(runFocus, addDelay);
- } else {
- runFocus();
- }
-};
-
-export class EditContentFormBody extends React.Component {
- constructor(props) {
- super(props);
- const { workMode } = props;
- this.ownerGroupInput = React.createRef();
- this.descriptionInput = React.createRef();
- this.state = {
- infoOpen: true,
- groupsOpen: workMode === WORK_MODE_ADD,
- categoriesOpen: false,
- attributesOpen: false,
- };
-
- this.handleOwnerGroupChange = this.handleOwnerGroupChange.bind(this);
- }
-
- componentDidMount() {
- const {
- onDidMount, match: { params = {} },
- onIncompleteData,
- } = this.props;
- const { id: contentId, contentType } = params;
- const fetchContentParams = `/${contentId}`;
- if (contentType == null && contentId == null) return onIncompleteData();
- // if contentId from params is null, it means we are creating a new content
- if (contentId == null) {
- fieldFocus(this.ownerGroupInput);
- }
- return onDidMount(fetchContentParams);
- }
-
- componentDidUpdate(prevProps) {
- const {
- dirty, changeStatus, content, status,
- } = this.props;
- if (dirty !== prevProps.dirty) {
- if (dirty) {
- if (status === prevProps.status) {
- changeStatus('draft');
- }
- } else {
- changeStatus((content || {}).status);
- }
- }
- if (content !== prevProps.content) {
- fieldFocus(this.descriptionInput);
- }
- }
-
- componentWillUnmount() {
- const { onWillUnmount } = this.props;
- onWillUnmount();
- }
-
- setSection(sectionName, value) {
- this.setState({
- [sectionName]: value,
- });
- }
-
- collapseSection(sectionName) {
- this.setState(({ [sectionName]: currentVisibility }) => ({
- [sectionName]: !currentVisibility,
- }));
- }
-
- handleOwnerGroupChange(code) {
- const {
- workMode,
- onSetOwnerGroupDisable,
- resetSection,
- } = this.props;
- if (code && workMode === WORK_MODE_EDIT) {
- onSetOwnerGroupDisable(true);
- }
- if (workMode === WORK_MODE_ADD) {
- this.setSection('infoOpen', true);
- this.setSection('categoriesOpen', true);
- // reset attributes sections
- resetSection('attributes');
- fieldFocus(this.descriptionInput, 10);
- }
- }
-
- render() {
- const {
- infoOpen, groupsOpen, categoriesOpen, attributesOpen,
- } = this.state;
- const {
- intl,
- groups,
- allGroups,
- content,
- workMode,
- handleSubmit,
- onSubmit,
- invalid,
- submitting,
- onUnpublish,
- contentType: cType,
- currentUser: currentUserName,
- dirty,
- onCancel,
- onDiscard,
- onSave,
- loading,
- match: { params = {} },
- closeModal,
- missingTranslations,
- saveType,
- } = this.props;
- const { id } = params;
- const {
- version, lastModified, firstEditor: creatorUserName, lastEditor: modifierUserName,
- onLine,
- } = content || {};
- const newContentsType = {
- typeDescription: cType.name,
- typeCode: cType.code,
- };
- const contentType = content.typeDescription || newContentsType.typeDescription || '';
- const groupsWithEmptyOption = [...groups];
- const handleCollapseInfo = val => this.collapseSection('infoOpen', val);
- const handleCollapseGroups = val => this.collapseSection('groupsOpen', val);
- const handleCollapseCategories = val => this.collapseSection('categoriesOpen', val);
- const handleCollapseAttributes = val => this.collapseSection('attributesOpen', val);
- const renderContentVersioningHistory = workMode === WORK_MODE_EDIT && id && (
-
-
-
-
-
-
-
- );
-
- const handleUpdateTranslations = () => {
- if (missingTranslations.length) {
- const { lang, attributePath } = missingTranslations[0];
- // open language tab
- const tabId = `content-attributes-tabs-tab-${lang}`;
- document.getElementById(tabId).click();
- // wait for tab to change
-
- setTimeout(() => {
- // set focus to element
- const inputId = `${attributePath}.values.${lang}`;
- const element = document.getElementById(inputId)
- || document.getElementsByName(inputId)[0];
-
- if (element) {
- const fieldCollapse = element.closest('.ContentFormFieldCollapse');
- if (fieldCollapse && fieldCollapse.classList.contains('closed')) {
- fieldCollapse.querySelector('[role=button]').click();
- setTimeout(() => element.focus(), 100);
- } else {
- element.focus();
- }
- }
- }, 500);
- }
- };
-
- const modalButtons = [
- ,
- ,
- ];
-
- const classContentArea = ['EditContentForm__content', ...(
- workMode === WORK_MODE_EDIT ? ['EditContentForm__content--editmode'] : []
- )];
-
- return (
-
-
-
-
- );
- }
-}
-EditContentFormBody.propTypes = {
- intl: intlShape.isRequired,
- workMode: PropTypes.string.isRequired,
- language: PropTypes.string.isRequired,
- content: PropTypes.shape({
- typeDescription: PropTypes.string,
- typeCode: PropTypes.string,
- mainGroup: PropTypes.string,
- attributes: PropTypes.arrayOf(PropTypes.shape({})),
- }),
- currentUser: PropTypes.string.isRequired,
- location: PropTypes.shape({}).isRequired,
- groups: PropTypes.arrayOf(PropTypes.shape({
- code: PropTypes.string.isRequired,
- name: PropTypes.string.isRequired,
- })),
- allGroups: PropTypes.arrayOf(PropTypes.shape({
- code: PropTypes.string.isRequired,
- name: PropTypes.string.isRequired,
- })),
- selectedJoinGroups: PropTypes.arrayOf(PropTypes.string),
- handleSubmit: PropTypes.func.isRequired,
- onSubmit: PropTypes.func.isRequired,
- initialize: PropTypes.func.isRequired,
- onDidMount: PropTypes.func.isRequired,
- onSetOwnerGroupDisable: PropTypes.func.isRequired,
- match: PropTypes.shape({ params: PropTypes.shape({}) }).isRequired,
- onIncompleteData: PropTypes.func.isRequired,
- onWillUnmount: PropTypes.func.isRequired,
- onUnpublish: PropTypes.func.isRequired,
- invalid: PropTypes.bool,
- submitting: PropTypes.bool,
- contentType: PropTypes.shape({
- name: PropTypes.string,
- code: PropTypes.string,
- }),
- dirty: PropTypes.bool,
- onDiscard: PropTypes.func.isRequired,
- onCancel: PropTypes.func.isRequired,
- onSave: PropTypes.func.isRequired,
- loading: PropTypes.bool,
- selectedOwnerGroup: PropTypes.string,
- changeStatus: PropTypes.func.isRequired,
- status: PropTypes.string,
- resetSection: PropTypes.func.isRequired,
- missingTranslations: PropTypes.arrayOf(PropTypes.shape({
- lang: PropTypes.string,
- attributePath: PropTypes.string,
- })).isRequired,
- saveType: PropTypes.string.isRequired,
- closeModal: PropTypes.func.isRequired,
-};
-
-EditContentFormBody.defaultProps = {
- selectedJoinGroups: [],
- content: {},
- invalid: false,
- submitting: false,
- contentType: {},
- dirty: false,
- loading: false,
- groups: [],
- allGroups: [],
- selectedOwnerGroup: '',
- status: '',
-};
-
-const EditContentForm = reduxForm({
- form: 'editcontentform',
- enableReinitialize: true,
- keepDirtyOnReinitialize: true,
-})(EditContentFormBody);
-
-export default EditContentForm;
diff --git a/src/ui/edit-content/EditContentFormContainer.js b/src/ui/edit-content/EditContentFormContainer.js
deleted file mode 100644
index f8e603402..000000000
--- a/src/ui/edit-content/EditContentFormContainer.js
+++ /dev/null
@@ -1,136 +0,0 @@
-import { connect } from 'react-redux';
-import { injectIntl, defineMessages } from 'react-intl';
-import { withRouter } from 'react-router-dom';
-import { change, formValueSelector, submit, destroy } from 'redux-form';
-import { routeConverter } from '@entando/utils';
-import { addToast, TOAST_SUCCESS } from '@entando/messages';
-import {
- fetchContent,
- clearEditContentForm,
- setOwnerGroupDisable,
- saveContent,
- setWorkMode,
- setMissingTranslations,
- setSaveType,
-} from 'state/edit-content/actions';
-import { fetchCategoryTreeAll } from 'state/categories/actions';
-import { sendPublishContent } from 'state/contents/actions';
-import { setVisibleModal } from 'state/modal/actions';
-import EditContentForm from 'ui/edit-content/EditContentForm';
-import { getUsername } from '@entando/apimanager';
-import { getLocale } from 'state/locale/selectors';
-import {
- getOwnerGroupDisabled,
- getContent,
- getJoinedCategories,
- getSaveType,
- getMissingTranslations,
-} from 'state/edit-content/selectors';
-import { fetchAllGroupEntries } from 'state/groups/actions';
-import { getGroupsList, getGroupEntries } from 'state/groups/selectors';
-import { getLoading } from 'state/loading/selectors';
-import { ROUTE_CMS_CONTENTS } from 'app-init/router';
-import { CONTINUE_SAVE_TYPE, APPROVE_SAVE_TYPE, WORK_MODE_EDIT } from 'state/edit-content/types';
-import { ConfirmCancelModalID } from 'ui/common/cancel-modal/ConfirmCancelModal';
-import { getTranslationWarning } from 'state/user-preferences/selectors';
-
-export const TranslationWarningModalID = 'TranslationWarningModal';
-
-const publishContentMsgs = defineMessages({
- published: {
- id: 'cms.contents.published',
- defaultMessage: 'Published.',
- },
- unpublished: {
- id: 'cms.contents.unpublished',
- defaultMessage: 'Unpublished.',
- },
- saved: {
- id: 'cms.contents.saved',
- defaultMessage: 'Saved.',
- },
-});
-
-export const mapStateToProps = (state, { match: { params } }) => ({
- workMode: WORK_MODE_EDIT,
- language: getLocale(state),
- content: getContent(state),
- groups: getGroupsList(state),
- allGroups: getGroupEntries(state),
- currentUser: getUsername(state),
- contentId: params.id,
- ownerGroupDisabled: getOwnerGroupDisabled(state),
- selectedJoinGroups: formValueSelector('editcontentform')(state, 'groups'),
- selectedOwnerGroup: formValueSelector('editcontentform')(state, 'mainGroup'),
- status: formValueSelector('editcontentform')(state, 'status'),
- selectedCategories: getJoinedCategories(state),
- saveType: getSaveType(state),
- loading: getLoading(state).editContent,
- missingTranslations: getMissingTranslations(state),
- enableTranslationWarning: getTranslationWarning(state),
-});
-
-export const mapDispatchToProps = (dispatch, { history, intl }) => ({
- onDidMount: (fetchContentParams) => {
- dispatch(setWorkMode(WORK_MODE_EDIT));
- dispatch(fetchContent(fetchContentParams))
- .catch(() => history.push(routeConverter(ROUTE_CMS_CONTENTS)));
- dispatch(fetchAllGroupEntries());
- dispatch(fetchCategoryTreeAll());
- },
- onWillUnmount: () => { dispatch(clearEditContentForm()); dispatch(destroy('ContentType')); },
- onSetOwnerGroupDisable: disabled => dispatch(setOwnerGroupDisable(disabled)),
- onIncompleteData: () => history.push(routeConverter(ROUTE_CMS_CONTENTS)),
- onSubmit: (values, categories, ignoreWarnings, oldAttributes) => {
- const { saveType, id } = values;
- return dispatch(saveContent(values, ignoreWarnings, oldAttributes)).then((res) => {
- if (res) {
- dispatch(setVisibleModal(''));
- dispatch(addToast(
- intl.formatMessage(publishContentMsgs.saved),
- TOAST_SUCCESS,
- ));
- if (saveType === APPROVE_SAVE_TYPE) {
- dispatch(sendPublishContent(id, 'published'));
- history.push(routeConverter(ROUTE_CMS_CONTENTS));
- } else if (saveType !== CONTINUE_SAVE_TYPE) {
- history.push(routeConverter(ROUTE_CMS_CONTENTS));
- } else {
- dispatch(fetchContent(`/${res.id}`));
- }
- }
- }).catch((missingTranslation) => {
- dispatch(setMissingTranslations(missingTranslation));
- dispatch(setVisibleModal(TranslationWarningModalID));
- dispatch(setSaveType(saveType));
- });
- },
- onUnpublish: content => dispatch(sendPublishContent(content.id, 'draft')).then((res) => {
- if (res) {
- dispatch(addToast(
- intl.formatMessage(publishContentMsgs.unpublished),
- TOAST_SUCCESS,
- ));
- history.push(routeConverter(ROUTE_CMS_CONTENTS));
- }
- }),
- onSave: () => {
- dispatch(setVisibleModal(''));
- dispatch(submit('editcontentform'));
- },
- onCancel: () => dispatch(setVisibleModal(ConfirmCancelModalID)),
- onDiscard: () => { dispatch(setVisibleModal('')); history.push(routeConverter(ROUTE_CMS_CONTENTS)); },
- changeStatus: value => dispatch(change('editcontentform', 'status', value)),
- closeModal: () => dispatch(setVisibleModal('')),
-});
-
-const EditContentContainer = connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- {
- pure: false,
- },
-)(EditContentForm);
-
-export default withRouter(injectIntl(EditContentContainer));
diff --git a/src/ui/edit-content/EditContentPage.js b/src/ui/edit-content/EditContentPage.js
deleted file mode 100644
index fd62dcce7..000000000
--- a/src/ui/edit-content/EditContentPage.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import React from 'react';
-import { Row, Col, Grid, Breadcrumb } from 'patternfly-react';
-import { FormattedMessage } from 'react-intl';
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-import BreadcrumbItem from 'ui/common/BreadcrumbItem';
-import InternalPage from 'ui/internal-page/InternalPage';
-import EditContentFormContainer from 'ui/edit-content/EditContentFormContainer';
-
-const EditContentPage = () => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-);
-
-export default EditContentPage;
diff --git a/src/ui/pages/add/PagesAddFormContainer.js b/src/ui/pages/add/PagesAddFormContainer.js
index c0617bf9e..44e23202b 100644
--- a/src/ui/pages/add/PagesAddFormContainer.js
+++ b/src/ui/pages/add/PagesAddFormContainer.js
@@ -24,23 +24,6 @@ import { fetchMyGroupPermissions } from 'state/permissions/actions';
import { fetchAllGroupEntries, fetchMyGroups } from 'state/groups/actions';
import { getGroupEntries, getGroupsList } from 'state/groups/selectors';
-export const getDefaultLanguage = (languages) => {
- const defaultLang = { code: 'en' };
- if (!languages || languages.length === 0) return defaultLang;
- const defaultFiltered = languages.filter(lang => lang.isDefault);
- if (defaultFiltered && defaultFiltered.length > 0) return defaultFiltered[0];
- return defaultLang;
-};
-
-export const complementTitlesForActiveLanguages = (existingTitles, languages) => {
- const defaultLang = getDefaultLanguage(languages);
- const defaultLangTitle = existingTitles && existingTitles[defaultLang.code];
- return languages.reduce((acc, curr) => ({
- ...acc,
- [curr.code]: existingTitles[curr.code] || defaultLangTitle,
- }), {});
-};
-
const getNextPageProperty = ({
pages,
property,
diff --git a/src/ui/pages/common/PageForm.js b/src/ui/pages/common/PageForm.js
index 4fe3038f9..aae615913 100644
--- a/src/ui/pages/common/PageForm.js
+++ b/src/ui/pages/common/PageForm.js
@@ -18,12 +18,27 @@ import { ACTION_SAVE, ACTION_SAVE_AND_CONFIGURE } from 'state/pages/const';
import SeoInfo from 'ui/pages/common/SeoInfo';
import FindTemplateModalContainer from 'ui/pages/common/FindTemplateModalContainer';
import { APP_TOUR_STARTED } from 'state/app-tour/const';
-import { complementTitlesForActiveLanguages } from 'ui/pages/add/PagesAddFormContainer';
import { codeWithDash } from 'helpers/attrValidation';
const maxLength30 = maxLength(30);
const maxLength70 = maxLength(70);
+const getDefaultLanguage = (languages) => {
+ const defaultLang = { code: 'en' };
+ if (!languages || languages.length === 0) return defaultLang;
+ const defaultFiltered = languages.filter(lang => lang.isDefault);
+ if (defaultFiltered && defaultFiltered.length > 0) return defaultFiltered[0];
+ return defaultLang;
+};
+
+const complementTitlesForActiveLanguages = (existingTitles, languages) => {
+ const defaultLang = getDefaultLanguage(languages);
+ const defaultLangTitle = existingTitles && existingTitles[defaultLang.code];
+ return languages.reduce((acc, curr) => ({
+ ...acc,
+ [curr.code]: existingTitles[curr.code] || defaultLangTitle,
+ }), {});
+};
const msgs = defineMessages({
chooseAnOption: {
diff --git a/src/ui/pages/config/PageConfigPageContainer.js b/src/ui/pages/config/PageConfigPageContainer.js
index d4ceebfb2..10ab84bcd 100644
--- a/src/ui/pages/config/PageConfigPageContainer.js
+++ b/src/ui/pages/config/PageConfigPageContainer.js
@@ -14,8 +14,6 @@ import {
getSelectedPage, getSelectedPageIsPublished, getSelectedPageLocaleTitle,
getSelectedPagePreviewURI, getSelectedPublishedPageURI,
} from 'state/pages/selectors';
-import { setVisibleModal } from 'state/modal/actions';
-import { MODAL_ID } from 'ui/pages/config/SinglePageSettingsModal';
import { getLoading } from 'state/loading/selectors';
import withPermissions from 'ui/auth/withPermissions';
import { MANAGE_PAGES_PERMISSION } from 'state/permissions/const';
@@ -44,7 +42,6 @@ export const mapDispatchToProps = (dispatch, { match: { params } }) => ({
},
unpublishPage: () => dispatch(unpublishSelectedPage()),
applyDefaultConfig: () => dispatch(applyDefaultConfig(params.pageCode)),
- showPageSettings: () => dispatch(setVisibleModal(MODAL_ID)),
onSettingsCancel: () => {
dispatch(reset(FORM_ID));
dispatch(reset('SeoMetadataForm'));
diff --git a/src/ui/pages/config/SinglePageSettingsForm.js b/src/ui/pages/config/SinglePageSettingsForm.js
deleted file mode 100644
index a2bf1123c..000000000
--- a/src/ui/pages/config/SinglePageSettingsForm.js
+++ /dev/null
@@ -1,282 +0,0 @@
-import { get } from 'lodash';
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
-import { Field, FieldArray, FormSection, reduxForm } from 'redux-form';
-import { Button, Col, Form, FormGroup, Nav, NavItem, Row, TabContainer, TabContent, TabPane } from 'patternfly-react';
-import { maxLength, required } from '@entando/utils';
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-import FormLabel from 'ui/common/form/FormLabel';
-import SwitchRenderer from 'ui/common/form/SwitchRenderer';
-import RenderSelectInput from 'ui/common/form/RenderSelectInput';
-import MultiSelectRenderer from 'ui/pages/common/MultiSelectRenderer';
-
-export const FORM_ID = 'single-page-settings';
-export const maxLength70 = maxLength(70);
-
-const toSelectInputOptions = arrayOfStrings => (
- arrayOfStrings.map(str => ({ code: str, name: str }))
-);
-
-export class SinglePageSettingsFormBody extends Component {
- constructor(props) {
- super(props);
- this.state = { visibleTitleTranslationCode: null };
- }
-
- componentWillMount() {
- this.props.onWillMount();
- }
-
- selectVisibleTitleTranslation(code) {
- this.setState({
- visibleTitleTranslationCode: code,
- });
- }
-
- render() {
- const {
- handleSubmit, invalid, submitting, onReset,
- activeNonDefaultLanguages, defaultLanguage,
- groups, charsets, contentTypes, selectedJoinGroupCodes,
- intl,
- } = this.props;
-
- const formatText = id => intl.formatMessage({ id });
-
- const charsetOptions = toSelectInputOptions(charsets);
- const contentTypeOptions = toSelectInputOptions(contentTypes);
-
- const titleTranslationSelect = (
-
- );
-
- const visibleTitleTranslationCode = this.state.visibleTitleTranslationCode
- || get(activeNonDefaultLanguages, '[0].code', '');
-
- const activeNonDefaultLanguagesInputs = (
-
- {
- activeNonDefaultLanguages.map(lang => lang.code).map(languageCode => (
-
-
-
- ))
- }
-
- );
-
- const defaultLanguageLabel = `${defaultLanguage.toUpperCase()} (default)`;
-
- const groupsWithEmptyOption = [
- { code: '', name: formatText('app.chooseAnOption') },
- ...groups,
- ];
-
- return (
-
- );
- }
-}
-
-SinglePageSettingsFormBody.propTypes = {
- intl: intlShape.isRequired,
- activeNonDefaultLanguages: PropTypes.arrayOf(PropTypes.shape({
- code: PropTypes.string,
- name: PropTypes.string,
- isActive: PropTypes.bool,
- isDefault: PropTypes.bool,
- })).isRequired,
- defaultLanguage: PropTypes.string.isRequired,
- charsets: PropTypes.arrayOf(PropTypes.string).isRequired,
- contentTypes: PropTypes.arrayOf(PropTypes.string).isRequired,
- groups: PropTypes.arrayOf(PropTypes.shape({
- code: PropTypes.string,
- name: PropTypes.string,
- })).isRequired,
- selectedJoinGroupCodes: PropTypes.arrayOf(PropTypes.string),
- handleSubmit: PropTypes.func.isRequired,
- invalid: PropTypes.bool,
- submitting: PropTypes.bool,
- onReset: PropTypes.func.isRequired,
- onWillMount: PropTypes.func.isRequired,
-};
-
-SinglePageSettingsFormBody.defaultProps = {
- invalid: false,
- submitting: false,
- selectedJoinGroupCodes: [],
-};
-
-export default reduxForm({
- form: FORM_ID,
-})(injectIntl(SinglePageSettingsFormBody));
diff --git a/src/ui/pages/config/SinglePageSettingsFormContainer.js b/src/ui/pages/config/SinglePageSettingsFormContainer.js
deleted file mode 100644
index c0a9bc741..000000000
--- a/src/ui/pages/config/SinglePageSettingsFormContainer.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import { connect } from 'react-redux';
-import { formValueSelector } from 'redux-form';
-import { sendPatchPage } from 'state/pages/actions';
-import { getSelectedPage, getCharsets, getContentTypes } from 'state/pages/selectors';
-import SinglePageSettingsForm, { FORM_ID } from 'ui/pages/config/SinglePageSettingsForm';
-import { fetchLanguages } from 'state/languages/actions';
-import { activeLangQueryString, noPagination } from 'ui/categories/common/formUtils';
-import { getDefaultLanguage, getActiveNonDefaultLanguages } from 'state/languages/selectors';
-import { getGroupsList } from 'state/groups/selectors';
-import { fetchMyGroups } from 'state/groups/actions';
-
-export const mapStateToProps = state => ({
- initialValues: getSelectedPage(state),
- activeNonDefaultLanguages: getActiveNonDefaultLanguages(state),
- defaultLanguage: getDefaultLanguage(state),
- groups: getGroupsList(state),
- charsets: getCharsets(state),
- contentTypes: getContentTypes(state),
- selectedJoinGroupCodes: formValueSelector(FORM_ID)(state, 'joinGroups'),
-});
-
-export const mapDispatchToProps = (dispatch, ownProps) => ({
- onWillMount: () => {
- dispatch(fetchLanguages(noPagination, activeLangQueryString));
- dispatch(fetchMyGroups());
- },
- onSubmit: (updatedValues) => {
- dispatch(sendPatchPage(updatedValues));
- ownProps.onSubmit();
- },
- onReset: () => {
- ownProps.onReset();
- },
-});
-
-export default connect(
- mapStateToProps,
- mapDispatchToProps,
- null,
- { pure: false },
-)(SinglePageSettingsForm);
diff --git a/src/ui/pages/config/SinglePageSettingsModal.js b/src/ui/pages/config/SinglePageSettingsModal.js
deleted file mode 100644
index cbe43fa10..000000000
--- a/src/ui/pages/config/SinglePageSettingsModal.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import { Modal } from 'patternfly-react';
-import GenericModalContainer from 'ui/common/modal/GenericModalContainer';
-import SinglePageSettingsFormContainer from 'ui/pages/config/SinglePageSettingsFormContainer';
-
-export const MODAL_ID = 'SinglePageSettingsModal';
-
-const SinglePageSettingsModal = ({ onCancel, onSave }) => {
- const modalTitle = (
-
- );
-
- const modalFooter = ;
-
- return (
-
-
-
- );
-};
-
-SinglePageSettingsModal.propTypes = {
- onCancel: PropTypes.func.isRequired,
- onSave: PropTypes.func.isRequired,
-};
-
-export default SinglePageSettingsModal;
diff --git a/src/ui/pages/config/SinglePageSettingsModalContainer.js b/src/ui/pages/config/SinglePageSettingsModalContainer.js
deleted file mode 100644
index 9371dc8b0..000000000
--- a/src/ui/pages/config/SinglePageSettingsModalContainer.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import { connect } from 'react-redux';
-import { setVisibleModal } from 'state/modal/actions';
-import SinglePageSettingsModal from 'ui/pages/config/SinglePageSettingsModal';
-
-const mapStateToProps = null;
-
-export const mapDispatchToProps = dispatch => ({
- onSave: () => {
- dispatch(setVisibleModal(''));
- },
- onCancel: () => {
- dispatch(setVisibleModal(''));
- },
-});
-
-export default connect(
- mapStateToProps,
- mapDispatchToProps,
-)(SinglePageSettingsModal);
diff --git a/src/ui/pages/config/ToolbarContentIcon.js b/src/ui/pages/config/ToolbarContentIcon.js
deleted file mode 100644
index 922b0fb00..000000000
--- a/src/ui/pages/config/ToolbarContentIcon.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { WIDGET_LIST } from 'state/page-config/const';
-
-
-const ToolbarContentIcon = ({
- content, position, toggleExpanded, handleClick,
-}) => {
- const iconClass = ['ToolbarContentIcon', `ToolbarContentIcon--${content}-${position}`];
- let target = content;
-
- if (content === 'pages') {
- if (position === 'left') {
- iconClass.push('drawer-pf-toogle-expand');
- } else if (position === 'right') {
- target = WIDGET_LIST;
- }
- if (toggleExpanded) {
- iconClass[1] = `ToolbarContentIcon--${content}-${position}-expanded`;
- }
- }
-
- return (
- {}}
- onClick={() => { handleClick(target); }}
- />
- );
-};
-
-ToolbarContentIcon.propTypes = {
- handleClick: PropTypes.func,
- position: PropTypes.oneOf(['left', 'right']).isRequired,
- content: PropTypes.oneOf(['widgets', 'pages']).isRequired,
- toggleExpanded: PropTypes.bool,
-};
-
-ToolbarContentIcon.defaultProps = {
- handleClick: () => {},
- toggleExpanded: false,
-};
-
-export default ToolbarContentIcon;
diff --git a/src/ui/roles/common/DeleteRoleModal.js b/src/ui/roles/common/DeleteRoleModal.js
deleted file mode 100644
index 4371d125c..000000000
--- a/src/ui/roles/common/DeleteRoleModal.js
+++ /dev/null
@@ -1,56 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import GenericModalContainer from 'ui/common/modal/GenericModalContainer';
-import {
- Button, EmptyState, Modal,
- EmptyStateIcon, EmptyStateTitle, EmptyStateInfo,
-} from 'patternfly-react';
-
-export const MODAL_ID = 'DeleteRoleModal';
-
-const DeleteRoleModal = ({
- onConfirmDelete, info,
-}) => {
- const buttons = [
- ,
- ];
-
- const modalTitle = (
-
- );
-
- return (
-
-
-
-
- {info.type}
-
-
-
-
-
-
- );
-};
-
-DeleteRoleModal.propTypes = {
- onConfirmDelete: PropTypes.func,
- info: PropTypes.shape({
- code: PropTypes.string,
- type: PropTypes.string,
- }),
-};
-
-DeleteRoleModal.defaultProps = {
- onConfirmDelete: null,
- info: {
- code: '',
- type: '',
- },
-};
-
-export default DeleteRoleModal;
diff --git a/src/ui/roles/common/DeleteRoleModalContainer.js b/src/ui/roles/common/DeleteRoleModalContainer.js
deleted file mode 100644
index 9c9ac7ae5..000000000
--- a/src/ui/roles/common/DeleteRoleModalContainer.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import { connect } from 'react-redux';
-import { setVisibleModal } from 'state/modal/actions';
-import { getInfo } from 'state/modal/selectors';
-import { sendDeleteRole } from 'state/roles/actions';
-import DeleteRoleModal from 'ui/roles/common/DeleteRoleModal';
-
-export const mapStateToProps = state => ({
- info: getInfo(state),
-});
-
-export const mapDispatchToProps = dispatch => ({
- onConfirmDelete: (roleCode) => {
- dispatch(sendDeleteRole(roleCode));
- dispatch(setVisibleModal(''));
- },
-});
-
-const DeleteRoleModalContainer = connect(mapStateToProps, mapDispatchToProps)(DeleteRoleModal);
-
-export default DeleteRoleModalContainer;
diff --git a/src/ui/test-const/admin-test-const.js b/src/ui/test-const/admin-test-const.js
deleted file mode 100644
index 1444ab2d1..000000000
--- a/src/ui/test-const/admin-test-const.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const TEST_ID_FOLDER_FILE_BROWSER = 'list_FilesListTable_a';
-const TEST_ID_BUTTON_FILE_BROWSER = 'common_FileButtonsGroup_Button';
-const TEST_ID_UPLOAD_FIELD_FILE_BROWSER = 'form_RenderFileInput_input';
-const TEST_ID_ACTION_BUTTON_FILE_BROWSER = 'upload_UploadFileBrowserForm_Button';
-
-export {
- TEST_ID_FOLDER_FILE_BROWSER,
- TEST_ID_BUTTON_FILE_BROWSER,
- TEST_ID_UPLOAD_FIELD_FILE_BROWSER,
- TEST_ID_ACTION_BUTTON_FILE_BROWSER,
-};
diff --git a/src/ui/test-const/components-test-const.js b/src/ui/test-const/components-test-const.js
deleted file mode 100644
index 94c3ec958..000000000
--- a/src/ui/test-const/components-test-const.js
+++ /dev/null
@@ -1,31 +0,0 @@
-const TEST_ID_COMPONENT_LIST_BUTTON = 'list_ListWidgetPage_Button';
-const TEST_ID_ICON_UPLOADER_INPUT = 'common_IconUploader_input';
-const FIELD_NAME_TITLE_EN = 'titles.en';
-const FIELD_NAME_TITLE_IT = 'titles.it';
-const FIELD_NAME_CODE = 'code';
-const FIELD_NAME_CUSTOM_UI = 'customUi';
-const TEST_ID_GROUP_TYPEAHEAD = 'group-typeahead';
-const WIDGET_FORM_HEADER_CLASSNAME = 'WidgetPage__header';
-const TEST_ID_CONFIG_UI = 'form_JsonCodeEditorRenderer_Col';
-const TAB_NAME_CUSTOM_UI = 'Custom UI *';
-const TAB_NAME_CONFIG_UI = 'Config UI';
-const TEST_ID_WIDGETFORM_SAVE_DROPDOWNBTN = 'common_WidgetForm_DropdownButton';
-const EDIT_ACTION_CLASSNAME = 'WidgetListRow__menu-item-edit';
-const DELETE_ACTION_CLASSNAME = 'WidgetListRow__menu-item-delete';
-
-export {
- TEST_ID_COMPONENT_LIST_BUTTON,
- TEST_ID_ICON_UPLOADER_INPUT,
- FIELD_NAME_TITLE_EN,
- FIELD_NAME_TITLE_IT,
- FIELD_NAME_CODE,
- TEST_ID_GROUP_TYPEAHEAD,
- WIDGET_FORM_HEADER_CLASSNAME,
- FIELD_NAME_CUSTOM_UI,
- TEST_ID_CONFIG_UI,
- TAB_NAME_CUSTOM_UI,
- TAB_NAME_CONFIG_UI,
- TEST_ID_WIDGETFORM_SAVE_DROPDOWNBTN,
- EDIT_ACTION_CLASSNAME,
- DELETE_ACTION_CLASSNAME,
-};
diff --git a/src/ui/test-const/content-types-const.js b/src/ui/test-const/content-types-const.js
deleted file mode 100644
index 07accf4c0..000000000
--- a/src/ui/test-const/content-types-const.js
+++ /dev/null
@@ -1,12 +0,0 @@
-export const TEST_ID_PAGE_CONTAINER = 'internal-page_InternalPage_div';
-
-export const TEST_ID_CONTENTTYPES_LIST_TABLE = {
- ACTION_EDIT: 'ContentTypeList__menu-item-edit',
-};
-
-export const TEST_ID_CONTENTTYPE_FORM = {
- NAME_TYPE_DROPDOWN: 'type',
- ACTION_EDIT: 'ContTypeAttributeListMenuAction__menu-item-edit',
- ACTION_DELETE: 'ContTypeAttributeListMenuAction__menu-item-delete',
- ATTRIBUTE_TYPE_DROPDOWN: 'nestedAttribute.type',
-};
diff --git a/src/ui/test-const/group-test-const.js b/src/ui/test-const/group-test-const.js
deleted file mode 100644
index 0c22c1544..000000000
--- a/src/ui/test-const/group-test-const.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export const TEST_ID_GROUPS_TABLE = 'groups-table';
-export const TEST_ID_GROUP_DELETE_ACTION = 'group-delete-action';
diff --git a/src/ui/test-const/page-designer-test-const.js b/src/ui/test-const/page-designer-test-const.js
deleted file mode 100644
index d4efe2416..000000000
--- a/src/ui/test-const/page-designer-test-const.js
+++ /dev/null
@@ -1,16 +0,0 @@
-export const TEST_ID_PAGE_DESIGNER = {
- STATUS: 'common_PageStatusIcon_i',
- CONFIG_TABS: 'config_ToolbarPageConfig_Tabs',
- PAGE_TREE: 'common_PageTreeCompact_span',
- WIDGET_LIST_ITEM: 'config_WidgetGroupingItem_div',
- BUTTON: 'config_PageConfigPage_Button',
- WIDGET_CONFIG: 'config_WidgetConfigPage_Panel',
-};
-
-export const TEST_ID_WIDGET_FRAME = {
- CONTENT: 'config_WidgetFrame_div',
- EMPTY_FRAME: 'config_EmptyFrame_span',
- ACTIONS: 'config_WidgetFrame_MenuItem',
- ACTION_LINKS: 'config_WidgetFrame_Link',
-};
-
diff --git a/src/ui/test-const/page-management-test-const.js b/src/ui/test-const/page-management-test-const.js
deleted file mode 100644
index 755bc69a2..000000000
--- a/src/ui/test-const/page-management-test-const.js
+++ /dev/null
@@ -1,45 +0,0 @@
-export const TEST_ID_PAGE_TREE = {
- PAGE_NAME: 'common_PageTree_span',
-};
-
-export const TEST_ID_PAGE_TREE_SEARCH_FORM = {
- DROPDOWN_BUTTON: 'list_PageSearchForm_DropdownButton',
- DROPDOWN_MENU_ITEM: 'list_PageSearchForm_MenuItem',
- SEARCH_FIELD: 'list_PageSearchForm_Field',
- SEARCH_BUTTON: 'list_PageSearchForm_Button',
-};
-
-export const TEST_ID_LIST_PAGE_TREE = {
- SEARCH_TABLE: 'list_PageListSearchTable_div',
- BUTTON: 'list_PageTreePage_Button',
- STATUS: 'common_PageStatusIcon_i',
- ACTION_MENU: 'common_PageTreeActionMenu_MenuItem',
-};
-
-export const TEST_ID_PAGE_FORM = {
- TABS: 'common_SeoInfo_Tabs',
- CODE_FIELD: 'code',
- TITLE_FIELD: 'titles.LANG-CODE',
- SEO_DESCRIPTION_FIELD: 'seoData.seoDataByLang.LANG-CODE.description',
- SEO_KEYWORDS_FIELD: 'seoData.seoDataByLang.LANG-CODE.keywords',
- SEO_FRIENDLY_CODE_FIELD: 'seoData.seoDataByLang.LANG-CODE.friendlyCode',
- SEO_INHERIT_DESCRIPTION_SWITCH_FIELD: 'seoData.seoDataByLang.LANG-CODE.inheritDescriptionFromDefaultLang-switchField',
- SEO_INHERIT_KEYWORDS_SWITCH_FIELD: 'seoData.seoDataByLang.LANG-CODE.inheritKeywordsFromDefaultLang-switchField',
- SEO_INHERIT_FRIENDLY_CODE_SWITCH_FIELD: 'seoData.seoDataByLang.LANG-CODE.inheritFriendlyCodeFromDefaultLang-switchField',
- PAGE_TREE_SELECTOR_FIELD: 'PageForm__PageTreeSelector',
- PAGE_TEMPLATE_FIELD: 'pageModel',
- OWNER_GROUP_TYPEAHEAD: 'ownerGroup-typeahead',
- OWNER_GROUP_OPTIONS: 'ownerGroup',
- BUTTON: 'common_PageForm_Button',
- SAVE_BUTTON: 'save-page',
-};
-
-export const TEST_ID_PAGE_FORM_META_TAG = {
- DEFAULT_LANG_KEY_FIELD: 'metakey',
- DEFAULT_LANG_TYPE_FIELD: 'metatype',
- DEFAULT_LANG_VALUE_FIELD: 'metavalue',
- TYPE_FIELD: 'seoData.seoDataByLang.LANG-CODE.metaTags[META_TAG_ID].type',
- VALUE_FIELD: 'seoData.seoDataByLang.LANG-CODE.metaTags[META_TAG_ID].value',
- INHERIT_SWITCH_FIELD: 'seoData.seoDataByLang.LANG-CODE.metaTags[META_TAG_ID].useDefaultLang-switchField',
- BUTTON: 'common_SeoMetadataForm_Button',
-};
diff --git a/src/ui/test-const/test-const.js b/src/ui/test-const/test-const.js
deleted file mode 100644
index 9f1bc18d3..000000000
--- a/src/ui/test-const/test-const.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const TEST_ID_GENERIC_MODAL = {
- BUTTON: 'modal_GenericModal_Button',
-};
-
-export default TEST_ID_GENERIC_MODAL;
diff --git a/src/ui/widget-forms/AsyncTypeAheadSelect.js b/src/ui/widget-forms/AsyncTypeAheadSelect.js
deleted file mode 100644
index 105165623..000000000
--- a/src/ui/widget-forms/AsyncTypeAheadSelect.js
+++ /dev/null
@@ -1,69 +0,0 @@
-// got from https://github.com/patternfly/patternfly-react/blob/master/packages/patternfly-3/patternfly-react/src/components/TypeAheadSelect/AsyncTypeAheadSelect.js
-// TODO remove it after upgrading to v2.x of patternfly-react
-/* eslint-disable react/forbid-prop-types */
-import React from 'react';
-import { AsyncTypeahead } from 'react-bootstrap-typeahead';
-import PropTypes from 'prop-types';
-
-class AsyncTypeAheadSelect extends React.Component {
- constructor(props) {
- super(props);
- const { options, isLoading } = this.props;
- this.state = {
- options,
- isLoading,
- };
- this.onSearchStart = this.onSearchStart.bind(this);
- this.onSearchEnd = this.onSearchEnd.bind(this);
- this.handleSearch = this.handleSearch.bind(this);
- }
-
- onSearchStart() {
- this.setState({ isLoading: true });
- }
-
- onSearchEnd(options) {
- this.setState({ options, isLoading: false });
- }
-
- // query is the text string entered by the user.
- handleSearch(query) {
- const { onSearch } = this.props;
- this.onSearchStart();
- Promise.resolve(onSearch(query)).then(options => this.onSearchEnd(options));
- }
-
- render() {
- const { innerRef, ...props } = this.props;
- const { options, isLoading } = this.state;
- return (
-
- );
- }
-}
-
-AsyncTypeAheadSelect.propTypes = {
- /** Callback function for search */
- onSearch: PropTypes.func.isRequired,
- /** Array of selectable options */
- options: PropTypes.array,
- /** Flag to indicate if typeahead is loading */
- isLoading: PropTypes.bool,
- /** Internal property to access the react bootstrap typeahead component via outer ref property */
- innerRef: PropTypes.any,
-};
-
-AsyncTypeAheadSelect.defaultProps = {
- options: [],
- isLoading: false,
- innerRef: null,
-};
-
-// eslint-disable-next-line react/no-multi-comp
-export default React.forwardRef((props, ref) => );
diff --git a/src/ui/widget-forms/ContentPicker.js b/src/ui/widget-forms/ContentPicker.js
deleted file mode 100644
index d5d7f0be1..000000000
--- a/src/ui/widget-forms/ContentPicker.js
+++ /dev/null
@@ -1,137 +0,0 @@
-import React, { Component, Fragment } from 'react';
-import AsyncTypeAheadSelect from 'ui/widget-forms/AsyncTypeAheadSelect';
-import { intlShape } from 'react-intl';
-import PropTypes from 'prop-types';
-import { Button, Row, Col, FormGroup } from 'patternfly-react';
-
-import { Field, reduxForm } from 'redux-form';
-
-import RenderSelectInput from 'ui/common/form/RenderSelectInput';
-import FormLabel from 'ui/common/form/FormLabel';
-
-class ContentPickerBody extends Component {
- constructor(props) {
- super(props);
- this.handlePickContent = this.handlePickContent.bind(this);
- this.handleContentChange = this.handleContentChange.bind(this);
- this.typeaheadRef = React.createRef();
- this.state = {
- selectedContent: null,
- };
- }
-
- componentDidMount() {
- const { onDidMount } = this.props;
- onDidMount();
- }
-
- handleContentChange(contentArray) {
- const selectedContent = contentArray[0];
- this.setState({ selectedContent });
- }
-
- handlePickContent() {
- const { selectedContent } = this.state;
- const { onPickContent } = this.props;
- if (selectedContent == null) return;
- onPickContent(selectedContent);
- this.typeaheadRef.current.getInstance().clear();
- this.setState({ selectedContent: null });
- }
-
- render() {
- const {
- contentTypeList,
- contentStatusList,
- fetchContents,
- intl,
- multipleContentsMode,
- contentsNumber,
- } = this.props;
- const { selectedContent } = this.state;
- const searchPlaceholderMsg = intl.formatMessage({ id: 'contentPicker.searchPlaceholder' });
- let addButtonDisabled = false;
- if (multipleContentsMode) {
- addButtonDisabled = selectedContent == null;
- } else {
- addButtonDisabled = (contentsNumber === 0 && selectedContent == null)
- || contentsNumber > 0;
- }
- const renderAddButton = (
-
- );
- return (
-
-
-
- }
- options={contentTypeList}
- optionValue="code"
- optionDisplayName="name"
- defaultOptionId="contentPicker.allTypes"
- />
-
-
- }
- options={contentStatusList}
- optionValue="code"
- optionDisplayName="name"
- defaultOptionId="contentPicker.allStatuses"
- />
-
-
-
-
- }
- placeholder={searchPlaceholderMsg}
- ref={this.typeaheadRef}
- onSearch={fetchContents}
- onChange={this.handleContentChange}
- labelKey={option => `${option.id} - ${option.description}`}
- useCache={false}
- />
-
-
-
- {renderAddButton}
-
-
-
-
- );
- }
-}
-
-const ContentPicker = reduxForm()(ContentPickerBody);
-
-ContentPickerBody.propTypes = {
- intl: intlShape.isRequired,
- onPickContent: PropTypes.func.isRequired,
- multipleContentsMode: PropTypes.bool,
- contentsNumber: PropTypes.number,
- onDidMount: PropTypes.func.isRequired,
- fetchContents: PropTypes.func.isRequired,
- contentTypeList: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
- contentStatusList: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
-};
-
-ContentPickerBody.defaultProps = {
- multipleContentsMode: true,
- contentsNumber: 0,
-};
-
-export default ContentPicker;
diff --git a/src/ui/widget-forms/ContentPickerContainer.js b/src/ui/widget-forms/ContentPickerContainer.js
deleted file mode 100644
index 49ad8cf44..000000000
--- a/src/ui/widget-forms/ContentPickerContainer.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import { connect } from 'react-redux';
-import { injectIntl } from 'react-intl';
-import { formValueSelector } from 'redux-form';
-import { convertToQueryString, FILTER_OPERATORS } from '@entando/utils';
-import { fetchContentTypeListPaged } from 'state/content-type/actions';
-import { getContentTypeList } from 'state/content-type/selectors';
-import ContentPicker from 'ui/widget-forms/ContentPicker';
-import { getContents } from 'api/contents';
-import { parseJoinGroups } from 'helpers/joinGroups';
-
-const noPaging = { page: 1, pageSize: 0 };
-
-const toFilter = formState => Object.keys(formState).reduce((acc, key) => ({
- formValues: {
- ...acc.formValues,
- [key]: formState[key],
- },
- operators: {
- ...acc.operators,
- [key]: FILTER_OPERATORS.EQUAL,
- },
-}), {
- formValues: {},
- operators: {},
-});
-
-const getFilteredContents = (formState, ownerGroup, joinGroupsToParse) => {
- const filter = toFilter(formState);
- const filterParams = convertToQueryString(filter);
- const ownerGroupQuery = ownerGroup ? `&forLinkingWithOwnerGroup=${ownerGroup}` : '';
- const joinGroups = parseJoinGroups(joinGroupsToParse);
- const joinGroupsQuery = (joinGroups && joinGroups.length > 0)
- ? joinGroups.reduce((acc, curr, index) => `${acc}&forLinkingWithExtraGroups[${index}]=${curr}`, '') : '';
- const contentParams = `${filterParams || '?'}&status=published${ownerGroupQuery}${joinGroupsQuery}`;
- return getContents(noPaging, contentParams)
- .then(res => res.json())
- .then(json => json.payload);
-};
-
-export const mapStateToProps = (state, ownProps) => ({
- contentTypeList: getContentTypeList(state),
- contentStatusList: [{ code: 'draft', name: 'Draft' }, { code: 'ready', name: 'Ready' }],
- fetchContents: () => getFilteredContents(
- formValueSelector(ownProps.form)(state, 'typeCode', 'status'),
- ownProps.ownerGroup, ownProps.joinGroups,
- ),
-});
-
-export const mapDispatchToProps = dispatch => ({
- onDidMount: () => {
- dispatch(fetchContentTypeListPaged(noPaging));
- },
-});
-
-export default connect(mapStateToProps, mapDispatchToProps, null, {
- pure: false,
-})(injectIntl(ContentPicker));
diff --git a/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTour.js b/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTour.js
deleted file mode 100644
index bb2ec93b1..000000000
--- a/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTour.js
+++ /dev/null
@@ -1,299 +0,0 @@
-import React from 'react';
-import Tour from 'reactour';
-import PropTypes from 'prop-types';
-import { Button } from 'patternfly-react';
-import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';
-import { FormattedMessage } from 'react-intl';
-import { APP_TOUR_CANCELLED, APP_TOUR_STARTED } from 'state/app-tour/const';
-
-const mouseClickEvents = ['mouseover', 'hover', 'mousedown', 'click', 'mouseup'];
-const simulateMouseClick = (element) => {
- mouseClickEvents.forEach(mouseEventType => element.dispatchEvent(new MouseEvent(mouseEventType, {
- view: window,
- bubbles: true,
- cancelable: true,
- buttons: 1,
- })));
-};
-
-const TOTAL_STEPS = 23;
-const STEP_OFFSET = -2;
-
-const disableBody = target => disableBodyScroll(target);
-const enableBody = target => enableBodyScroll(target);
-
-class SingleContentConfigTour extends React.Component {
- constructor(props) {
- super(props);
- this.state = {
- isTourOpen: true,
- };
- this.onNextStep = this.onNextStep.bind(this);
- this.setIsTourOpen = this.setIsTourOpen.bind(this);
- this.generateSteps = this.generateSteps.bind(this);
- }
-
- componentDidUpdate(prevProps) {
- const { isTourOpen } = this.state;
- const { wizardEnabled, appTourProgress, onAppTourCancel } = this.props;
- const tourInProgress = isTourOpen && wizardEnabled && appTourProgress === APP_TOUR_STARTED;
- if (prevProps.appTourProgress !== appTourProgress) {
- if (appTourProgress === APP_TOUR_CANCELLED) {
- window.onbeforeunload = null;
- window.onunload = null;
- }
- if (tourInProgress) {
- window.onbeforeunload = (e) => {
- e.preventDefault();
- e.returnValue = '';
- return e;
- };
- window.onunload = () => {
- onAppTourCancel();
- };
- }
- }
- }
-
- onNextStep(step, goTo) {
- const { setNextStep } = this.props;
- setNextStep(step);
- goTo(step);
- }
-
- setIsTourOpen(value) {
- const { tourCreatedPageCode, publishStatus } = this.props;
- if (value === false) {
- const { onAppTourCancel } = this.props;
- onAppTourCancel(tourCreatedPageCode, publishStatus);
- document.body.style.overflow = 'auto';
- }
- this.setState({ isTourOpen: value });
- }
-
- generateSteps() {
- const {
- appTourLastStep, onNextSelectContent, contents,
- } = this.props;
-
- const step18Element = document.querySelector('.app-tour-step-18');
- const step19Cancel = document.querySelector('.GenericModal__cancel');
- const step20Element = document.querySelector('.app-tour-step-20');
- const step21Element = document.querySelector('.app-tour-step-21');
- const step21Cancel = document.querySelector('.AddContentTypeFormBody__cancel--btn');
-
- const steps = [
- {
- step: 0,
- content: ({ goTo }) => (
-
-
-
-
-
-
-
-
-
-
-
-
- ),
- },
- { step: 1 },
- { step: 2 },
- { step: 3 },
- { step: 4 },
- { step: 5 },
- { step: 6 },
- { step: 7 },
- { step: 8 },
- { step: 9 },
- { step: 10 },
- { step: 11 },
- { step: 12 },
- { step: 13 },
- { step: 14 },
- { step: 15 },
- { step: 16 },
- { step: 17 },
- {
- step: 18,
- onNext: ({ goTo }) => {
- simulateMouseClick(step18Element);
- this.onNextStep(19, goTo);
- },
- nextButtonDisabled: !step18Element,
- onBack: ({ goTo }) => {
- simulateMouseClick(step21Cancel);
- this.onNextStep(17, goTo);
- },
- stepInteraction: true,
- },
- {
- step: 19,
- onNext: () => onNextSelectContent(contents[0]),
- onBack: ({ goTo }) => {
- simulateMouseClick(step19Cancel);
- this.onNextStep(18, goTo);
- },
- stepInteraction: true,
- },
- {
- step: 20,
- onNext: () => simulateMouseClick(step20Element),
- nextButtonDisabled: !step20Element,
- onBack: ({ goTo }) => {
- this.onNextStep(19, goTo);
- },
- stepInteraction: true,
- },
- {
- step: 21,
- onNext: () => simulateMouseClick(step21Element),
- nextButtonDisabled: !step21Element,
- onBack: ({ goTo }) => {
- simulateMouseClick(step18Element);
- this.onNextStep(19, goTo);
- },
- stepInteraction: true,
- },
- ];
- return steps.map(step => ({
- selector: `.app-tour-step-${step.step}`,
- content: step.content || (
- args => (
-
-
-
-
-
-
-
-
-
- {`${args.step + STEP_OFFSET}/${TOTAL_STEPS}`}
-
-
-
-
- )
- ),
- stepInteraction: step.stepInteraction || false,
- action: step.focusAction && (
- (node) => {
- if (node) {
- node.focus();
- }
- }
- ),
- position: 'top',
- style: {
- backgroundColor: '#fff',
- height: 'auto',
- width: '446px',
- maxWidth: '446px',
- borderRadius: '1px',
- padding: 0,
- },
- }));
- }
-
- render() {
- const { isTourOpen } = this.state;
- const {
- wizardEnabled, appTourLastStep, appTourProgress, lockBodyScroll, contents,
- } = this.props;
- if (!wizardEnabled || appTourProgress === APP_TOUR_CANCELLED) return null;
- return (
- {}}
- startAt={appTourLastStep}
- goToStep={appTourLastStep}
- disableFocusLock
- highlightedMaskClassName="AppTourHighlight"
- onAfterOpen={lockBodyScroll ? disableBody : null}
- onBeforeClose={enableBody}
- className="helper"
- disableInteraction={false}
- inViewThreshold={3000}
- scrollDuration={50}
- update={contents}
- updateDelay={1000}
- />
- );
- }
-}
-
-SingleContentConfigTour.propTypes = {
- wizardEnabled: PropTypes.bool,
- onAppTourCancel: PropTypes.func.isRequired,
- onNextSelectContent: PropTypes.func.isRequired,
- appTourProgress: PropTypes.string,
- appTourLastStep: PropTypes.number,
- setNextStep: PropTypes.func.isRequired,
- tourCreatedPageCode: PropTypes.string,
- lockBodyScroll: PropTypes.bool,
- publishStatus: PropTypes.bool,
- contents: PropTypes.arrayOf(PropTypes.shape({})),
-};
-
-SingleContentConfigTour.defaultProps = {
- wizardEnabled: false,
- appTourProgress: '',
- appTourLastStep: 1,
- tourCreatedPageCode: '',
- lockBodyScroll: true,
- publishStatus: false,
- contents: [],
-};
-
-export default SingleContentConfigTour;
diff --git a/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTourContainer.js b/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTourContainer.js
deleted file mode 100644
index d3d23750a..000000000
--- a/src/ui/widget-forms/publish-single-content-config/SingleContentConfigTourContainer.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { connect } from 'react-redux';
-import { withRouter } from 'react-router-dom';
-import { getUsername } from '@entando/apimanager';
-
-import SingleContentConfigTour from 'ui/widget-forms/publish-single-content-config/SingleContentConfigTour';
-import { selectSingleRow } from 'state/contents/actions';
-import { getAppTourlastStep, getAppTourProgress, getPublishStatus, getTourCreatedPage, getWizardEnabled } from 'state/app-tour/selectors';
-import { getContents } from 'state/contents/selectors';
-import { setAppTourLastStep, setAppTourProgress } from 'state/app-tour/actions';
-
-import { APP_TOUR_CANCELLED } from 'state/app-tour/const';
-import { sendDeletePage } from 'state/pages/actions';
-
-export const mapStateToProps = (state, { lockBodyScroll = true }) => {
- const pageCode = (getTourCreatedPage(state) || {}).code || '';
- return {
- username: getUsername(state),
- wizardEnabled: getWizardEnabled(state),
- appTourProgress: getAppTourProgress(state),
- appTourLastStep: getAppTourlastStep(state),
- lockBodyScroll,
- tourCreatedPageCode: pageCode,
- publishStatus: getPublishStatus(state),
- contents: getContents(state),
- };
-};
-export const mapDispatchToProps = dispatch => ({
- onAppTourCancel: (code, publishStatus) => {
- if (code && !publishStatus) {
- dispatch(sendDeletePage({ code, tourProgress: APP_TOUR_CANCELLED }));
- }
- dispatch(setAppTourProgress(APP_TOUR_CANCELLED));
- dispatch(setAppTourLastStep(1));
- },
- setNextStep: step => dispatch(setAppTourLastStep(step)),
- onNextSelectContent: (content) => {
- dispatch(selectSingleRow(content));
- dispatch(setAppTourLastStep(20));
- },
-});
-
-export default withRouter(connect(
- mapStateToProps,
- mapDispatchToProps,
-)(SingleContentConfigTour));
diff --git a/src/ui/widgets/config/forms/InternalServletConfigForm.js b/src/ui/widgets/config/forms/InternalServletConfigForm.js
deleted file mode 100644
index 33d661833..000000000
--- a/src/ui/widgets/config/forms/InternalServletConfigForm.js
+++ /dev/null
@@ -1,71 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Field, reduxForm } from 'redux-form';
-import { FormattedMessage, defineMessages, injectIntl, intlShape } from 'react-intl';
-import { Row, Col, FormGroup, Button } from 'patternfly-react';
-import FormLabel from 'ui/common/form/FormLabel';
-
-const msgs = defineMessages({
- actionPath: {
- id: 'widgetConfig.internalServlet.actionPath',
- defaultMessage: 'Action Path',
- },
-});
-
-export const InternalServletConfigFormBody = ({ intl, handleSubmit }) => (
-
-);
-
-
-InternalServletConfigFormBody.propTypes = {
- intl: intlShape.isRequired,
- handleSubmit: PropTypes.func.isRequired,
-};
-
-const InternalServletConfigForm = reduxForm({
- form: 'widgetConfigForm',
-})(InternalServletConfigFormBody);
-
-export default injectIntl(InternalServletConfigForm);
diff --git a/test/api/contentSettings.test.js b/test/api/contentSettings.test.js
deleted file mode 100644
index 15d86b423..000000000
--- a/test/api/contentSettings.test.js
+++ /dev/null
@@ -1,148 +0,0 @@
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-
-import {
- getContentSettings,
- postReloadIndexes,
- postReloadReferences,
- putEditorSettings,
- postCropRatio,
- deleteCropRatio,
- postMetadataMap,
- putMetadataMap,
- deleteMetadataMap,
-} from 'api/contentSettings';
-import { makeRequest } from '@entando/apimanager';
-import {
- CONTENT_SETTINGS_OK,
- CONTENT_SETTINGS_REFRESH_OK,
- CONTENT_SETTINGS_EDITOR_OK,
- CONTENT_SETTINGS_CROP_RATIOS_OK,
- CONTENT_SETTINGS_METADATA_OK,
-} from 'test/mocks/contentSettings';
-
-configEnzymeAdapter();
-
-jest.unmock('api/contentSettings');
-jest.mock('@entando/apimanager', () => ({
- makeRequest: jest.fn(() => new Promise(resolve => resolve({}))),
- METHODS: {
- GET: 'GET',
- POST: 'POST',
- PUT: 'PUT',
- DELETE: 'DELETE',
- },
-}));
-
-describe('api/contentSettings', () => {
- it('getContentSettings returns a promise with correct params', () => {
- const response = getContentSettings();
- expect(makeRequest).toHaveBeenCalledWith({
- uri: '/api/plugins/cms/contentSettings',
- method: 'GET',
- mockResponse: CONTENT_SETTINGS_OK,
- useAuthentication: true,
- });
- expect(response).toBeInstanceOf(Promise);
- });
-
- it('postReloadIndexes returns a promise with correct params', () => {
- const response = postReloadIndexes();
- expect(makeRequest).toHaveBeenCalledWith({
- uri: '/api/plugins/cms/contentSettings/reloadIndexes',
- method: 'POST',
- body: {},
- mockResponse: CONTENT_SETTINGS_REFRESH_OK,
- useAuthentication: true,
- });
- expect(response).toBeInstanceOf(Promise);
- });
-
- it('postReloadReferences returns a promise with correct params', () => {
- const response = postReloadReferences();
- expect(makeRequest).toHaveBeenCalledWith({
- uri: '/api/plugins/cms/contentSettings/reloadReferences',
- method: 'POST',
- body: {},
- mockResponse: CONTENT_SETTINGS_REFRESH_OK,
- useAuthentication: true,
- });
- expect(response).toBeInstanceOf(Promise);
- });
-
- it('putEditorSettings returns a promise with correct params', () => {
- const param = { key: 1 };
- const response = putEditorSettings(param);
- expect(makeRequest).toHaveBeenCalledWith({
- uri: '/api/plugins/cms/contentSettings/editor',
- method: 'PUT',
- body: param,
- mockResponse: CONTENT_SETTINGS_EDITOR_OK,
- useAuthentication: true,
- });
- expect(response).toBeInstanceOf(Promise);
- });
-
- it('postCropRatio returns a promise with correct params', () => {
- const cropRatio = '4:9';
- const response = postCropRatio(cropRatio);
- expect(makeRequest).toHaveBeenCalledWith({
- uri: '/api/plugins/cms/contentSettings/cropRatios',
- method: 'POST',
- body: { ratio: cropRatio },
- mockResponse: CONTENT_SETTINGS_CROP_RATIOS_OK,
- useAuthentication: true,
- });
- expect(response).toBeInstanceOf(Promise);
- });
-
- it('postMetadataMap returns a promise with correct params', () => {
- const param = 1;
- const response = postMetadataMap(param);
- expect(makeRequest).toHaveBeenCalledWith({
- uri: '/api/plugins/cms/contentSettings/metadata',
- method: 'POST',
- body: param,
- mockResponse: CONTENT_SETTINGS_METADATA_OK,
- useAuthentication: true,
- });
- expect(response).toBeInstanceOf(Promise);
- });
-
- it('deleteCropRatio returns a promise with correct params', () => {
- const cropRatio = '4:9';
- const response = deleteCropRatio(cropRatio);
- expect(makeRequest).toHaveBeenCalledWith({
- uri: `/api/plugins/cms/contentSettings/cropRatios/${cropRatio}`,
- method: 'DELETE',
- mockResponse: CONTENT_SETTINGS_CROP_RATIOS_OK,
- useAuthentication: true,
- });
- expect(response).toBeInstanceOf(Promise);
- });
-
- it('putMetadataMap returns a promise with correct params', () => {
- const key = 'wa';
- const mapping = 'kanda';
- const response = putMetadataMap(key, mapping);
- expect(makeRequest).toHaveBeenCalledWith({
- uri: `/api/plugins/cms/contentSettings/metadata/${key}`,
- method: 'PUT',
- body: { mapping },
- mockResponse: CONTENT_SETTINGS_METADATA_OK,
- useAuthentication: true,
- });
- expect(response).toBeInstanceOf(Promise);
- });
-
- it('deleteMetadataMap returns a promise with correct params', () => {
- const mapping = 1;
- const response = deleteMetadataMap(mapping);
- expect(makeRequest).toHaveBeenCalledWith({
- uri: `/api/plugins/cms/contentSettings/metadata/${mapping}`,
- method: 'DELETE',
- mockResponse: CONTENT_SETTINGS_METADATA_OK,
- useAuthentication: true,
- });
- expect(response).toBeInstanceOf(Promise);
- });
-});
diff --git a/test/api/notification.test.js b/test/api/notification.test.js
deleted file mode 100644
index 5ee98b11f..000000000
--- a/test/api/notification.test.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import 'test/enzyme-init';
-import { getApiNotifications } from 'api/notification';
-import { NOTIFICATIONS } from 'test/mocks/notification';
-
-jest.unmock('api/groups');
-
-
-it('returns a promise', () => {
- const filledInput = getApiNotifications();
- expect(typeof filledInput.then === 'function').toBeDefined();
-});
-
-
-it('verify success groups', () => {
- getApiNotifications().then((response) => {
- expect(response).toEqual(NOTIFICATIONS);
- });
-});
diff --git a/test/state/content-settings/actions.test.js b/test/state/content-settings/actions.test.js
deleted file mode 100644
index e194a391b..000000000
--- a/test/state/content-settings/actions.test.js
+++ /dev/null
@@ -1,523 +0,0 @@
-import { createMockStore, mockApi } from 'test/testUtils';
-import {
- setContentSettings,
- setEditorSettings,
- setMetadataMapping,
- fetchContentSettings,
- sendPostReloadReferences,
- sendPostReloadIndexes,
- sendPutEditorSettings,
- addCropRatio,
- removeCropRatio,
- updateCropRatio,
- sendPostMetadataMap,
- sendPutMetadataMap,
- checkAndPutMetadataMap,
- sendDeleteMetadataMap,
- wait,
-} from 'state/content-settings/actions';
-import {
- SET_CONTENT_SETTINGS,
- SET_EDITOR_SETTINGS,
- SET_CROP_RATIOS,
- SET_METADATA_MAPPING,
-} from 'state/content-settings/types';
-import * as selectors from 'state/content-settings/selectors';
-import { TOGGLE_LOADING } from 'state/loading/types';
-import { CONTENT_SETTINGS_OK } from 'test/mocks/contentSettings';
-
-import {
- getContentSettings,
- postReloadReferences,
- postReloadIndexes,
- putEditorSettings,
- postCropRatio,
- deleteCropRatio,
- putCropRatio,
- postMetadataMap,
- putMetadataMap,
- deleteMetadataMap,
-} from 'api/contentSettings';
-
-const contSettings = CONTENT_SETTINGS_OK;
-
-const CONTMODEL_SET_PARAMS = {
- type: SET_CONTENT_SETTINGS,
- payload: contSettings,
-};
-
-jest.mock('api/contentSettings', () => ({
- getContentSettings: jest.fn(mockApi({
- payload: {
- indexesLastReload: {
- date: 1569393692905,
- result: 1,
- },
- indexesStatus: 0,
- referencesStatus: 0,
- metadata: {
- legend: [],
- alt: [],
- description: [],
- title: [],
- },
- cropRatios: ['4:9'],
- editor: {
- label: 'CKEditor',
- key: 'fckeditor',
- },
- },
- })),
- postReloadReferences: jest.fn(mockApi({ payload: '' })),
- postReloadIndexes: jest.fn(mockApi({ payload: '' })),
- putEditorSettings: jest.fn(key => mockApi({ payload: key })()),
- postCropRatio: jest.fn(mockApi({})),
- deleteCropRatio: jest.fn(mockApi({})),
- putCropRatio: jest.fn(mockApi({})),
- postMetadataMap: jest.fn(({ key, mapping }) => mockApi({
- payload: {
- [key]: mapping,
- legend: [],
- alt: [],
- description: [],
- title: [],
- },
- })()),
- putMetadataMap: jest.fn((key, mapping) => mockApi({
- payload: {
- [key]: mapping,
- alt: [],
- description: [],
- title: [],
- },
- })()),
- deleteMetadataMap: jest.fn(() => mockApi({
- payload: {
- legend: [],
- alt: [],
- description: [],
- title: [],
- },
- })()),
-}));
-
-// eslint-disable-next-line no-import-assign
-selectors.getCropRatios = jest.fn();
-
-it('test setContentSettings action', () => {
- expect(setContentSettings(contSettings)).toEqual(CONTMODEL_SET_PARAMS);
-});
-
-it('test setEditorSettings action', () => {
- const payload = { key: 'ao' };
- expect(setEditorSettings(payload)).toEqual({
- type: SET_EDITOR_SETTINGS,
- payload,
- });
-});
-
-it('test setMetadataMapping action', () => {
- const payload = { key: 'oa' };
- expect(setMetadataMapping(payload)).toEqual({
- type: SET_METADATA_MAPPING,
- payload,
- });
-});
-
-it('test wait function', () => {
- expect(wait(2000)).toBeInstanceOf(Promise);
-});
-
-describe('contentSettings thunks', () => {
- let store;
- beforeEach(() => {
- store = createMockStore({
- loading: { legend: '' },
- contentSettings: {
- metadata: {},
- },
- });
- });
- it('fetchContentSettings', (done) => {
- store
- .dispatch(fetchContentSettings())
- .then(() => {
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[0].payload.id).toEqual('getSettings');
- expect(actions[1]).toHaveProperty('type', SET_CONTENT_SETTINGS);
- expect(actions[1]).toHaveProperty('payload');
- expect(actions[1].payload).toEqual(contSettings);
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[2].payload.id).toEqual('getSettings');
- done();
- })
- .catch(done.fail);
- });
-
- it('fetchContentSettings error', (done) => {
- getContentSettings.mockImplementationOnce(mockApi({ errors: true }));
- store
- .dispatch(fetchContentSettings())
- .then(() => {
- expect(getContentSettings).toHaveBeenCalled();
- const actions = store.getActions();
- expect(actions).toHaveLength(5);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', 'errors/add-errors');
- expect(actions[2]).toHaveProperty('type', 'errors/clear-errors');
- expect(actions[3]).toHaveProperty('type', 'toasts/add-toast');
- expect(actions[4]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPostReloadReferences', (done) => {
- store
- .dispatch(sendPostReloadReferences())
- .then(() => {
- expect(postReloadReferences).toHaveBeenCalled();
- const actions = store.getActions();
- expect(actions).toHaveLength(2);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPostReloadReferences error', (done) => {
- postReloadReferences.mockImplementationOnce(mockApi({ errors: true }));
- store
- .dispatch(sendPostReloadReferences())
- .then(() => {
- expect(postReloadReferences).toHaveBeenCalled();
- const actions = store.getActions();
- expect(actions).toHaveLength(5);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', 'errors/add-errors');
- expect(actions[2]).toHaveProperty('type', 'errors/clear-errors');
- expect(actions[3]).toHaveProperty('type', 'toasts/add-toast');
- expect(actions[4]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPostReloadIndexes', (done) => {
- store
- .dispatch(sendPostReloadIndexes())
- .then(() => {
- expect(postReloadIndexes).toHaveBeenCalled();
- const actions = store.getActions();
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1].payload.id).toEqual('reloadIndexes');
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[2].payload.id).toEqual('getSettingsPoll');
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPostReloadIndexes with un-finished status', (done) => {
- getContentSettings.mockImplementationOnce(mockApi({ payload: { indexesStatus: 1 } }));
- store
- .dispatch(sendPostReloadIndexes())
- .then(() => {
- expect(postReloadIndexes).toHaveBeenCalled();
- const actions = store.getActions();
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1].payload.id).toEqual('reloadIndexes');
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[2].payload.id).toEqual('getSettingsPoll');
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPostReloadIndexes error', (done) => {
- postReloadIndexes.mockImplementationOnce(mockApi({ errors: true }));
- store
- .dispatch(sendPostReloadIndexes())
- .then(() => {
- expect(postReloadIndexes).toHaveBeenCalled();
- const actions = store.getActions();
- expect(actions).toHaveLength(5);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[2]).toHaveProperty('type', 'errors/add-errors');
- expect(actions[3]).toHaveProperty('type', 'errors/clear-errors');
- expect(actions[4]).toHaveProperty('type', 'toasts/add-toast');
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPutEditorSettings', (done) => {
- const tosend = { key: 'yatch' };
- store
- .dispatch(sendPutEditorSettings(tosend))
- .then((res) => {
- expect(putEditorSettings).toHaveBeenCalledWith(tosend);
- expect(res).toHaveProperty('payload', tosend);
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', SET_EDITOR_SETTINGS);
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPutEditorSettings error', (done) => {
- putEditorSettings.mockImplementationOnce(mockApi({ errors: true }));
- const tosend = { key: 'yatch' };
- store
- .dispatch(sendPutEditorSettings(tosend))
- .then((res) => {
- expect(putEditorSettings).toHaveBeenCalledWith(tosend);
- expect(res).toEqual(undefined);
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', 'errors/add-errors');
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('addCropRatio', (done) => {
- const cropRatio = '4:9';
- store
- .dispatch(addCropRatio(cropRatio))
- .then(() => {
- expect(postCropRatio).toHaveBeenCalledWith(cropRatio);
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', SET_CROP_RATIOS);
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPostMetadataMap', (done) => {
- store
- .dispatch(sendPostMetadataMap('key', 1))
- .then(() => {
- expect(postMetadataMap).toHaveBeenCalledWith({ key: 'key', mapping: 1 });
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', SET_METADATA_MAPPING);
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[2].payload.id).toEqual('postMetadataMap');
- done();
- })
- .catch(done.fail);
- });
-
- it('addCropRatio error', (done) => {
- postCropRatio.mockImplementationOnce(mockApi({ errors: true }));
- store
- .dispatch(addCropRatio())
- .then(() => {
- const actions = store.getActions();
- expect(actions).toHaveLength(4);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', 'errors/add-errors');
- expect(actions[2]).toHaveProperty('type', 'toasts/add-toast');
- expect(actions[3]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPostMetadataMap error', (done) => {
- postMetadataMap.mockImplementationOnce(mockApi({ errors: true }));
- store
- .dispatch(sendPostMetadataMap('key', 2))
- .then(() => {
- expect(postMetadataMap).toHaveBeenCalledWith({ key: 'key', mapping: 2 });
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[0].payload.id).toEqual('postMetadataMap');
- expect(actions[1]).toHaveProperty('type', 'errors/add-errors');
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPutMetadataMap', (done) => {
- const key = 'key';
- const mapping = 1;
- store
- .dispatch(sendPutMetadataMap(key, mapping))
- .then(() => {
- expect(putMetadataMap).toHaveBeenCalledWith(key, mapping);
- const actions = store.getActions();
- expect(actions).toHaveLength(1);
- expect(actions[0]).toHaveProperty('type', SET_METADATA_MAPPING);
- done();
- })
- .catch(done.fail);
- });
-
- it('sendPutMetadataMap error', (done) => {
- const key = 'key';
- const mapping = 2;
- putMetadataMap.mockImplementationOnce(mockApi({ errors: true }));
- store
- .dispatch(sendPutMetadataMap(key, mapping))
- .then(() => {
- expect(putMetadataMap).toHaveBeenCalledWith(key, mapping);
- const actions = store.getActions();
- expect(actions).toHaveLength(1);
- expect(actions[0]).toHaveProperty('type', 'errors/add-errors');
- done();
- })
- .catch(done.fail);
- });
-
- it('removeCropRatio', (done) => {
- selectors.getCropRatios.mockImplementation(() => ['4:9', '16:9']);
- const cropRatio = '4:9';
- store
- .dispatch(removeCropRatio(cropRatio))
- .then(() => {
- expect(deleteCropRatio).toHaveBeenCalledWith(cropRatio);
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', SET_CROP_RATIOS);
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('checkAndPutMetadataMap', (done) => {
- const values = { legend: 'awt, two' };
- store
- .dispatch(checkAndPutMetadataMap(values))
- .then(() => {
- expect(putMetadataMap).toHaveBeenCalledWith('legend', 'awt, two');
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', SET_METADATA_MAPPING);
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[2].payload.id).toEqual('legend');
- done();
- })
- .catch(done.fail);
- });
-
- it('removeCropRatio error', (done) => {
- deleteCropRatio.mockImplementationOnce(mockApi({ errors: true }));
- store
- .dispatch(removeCropRatio())
- .then(() => {
- const actions = store.getActions();
- expect(actions).toHaveLength(4);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', 'errors/add-errors');
- expect(actions[2]).toHaveProperty('type', 'toasts/add-toast');
- expect(actions[3]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('checkAndPutMetadataMap error', (done) => {
- const values = { legend: 'awt, three' };
- putMetadataMap.mockImplementationOnce(mockApi({ errors: true }));
- store
- .dispatch(checkAndPutMetadataMap(values))
- .then(() => {
- expect(putMetadataMap).toHaveBeenCalledWith('legend', 'awt, three');
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', 'errors/add-errors');
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('updateCropRatio', (done) => {
- const cropRatio = '4:9';
- const newValue = '5:3';
- store
- .dispatch(updateCropRatio(cropRatio, newValue))
- .then(() => {
- expect(putCropRatio).toHaveBeenCalledWith(cropRatio, newValue);
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', SET_CROP_RATIOS);
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('sendDeleteMetadataMap', (done) => {
- store
- .dispatch(sendDeleteMetadataMap('key'))
- .then(() => {
- expect(deleteMetadataMap).toHaveBeenCalledWith('key');
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', SET_METADATA_MAPPING);
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[2].payload.id).toEqual('deleteMetadataMap');
- done();
- })
- .catch(done.fail);
- });
-
- it('updateCropRatio error', (done) => {
- putCropRatio.mockImplementationOnce(mockApi({ errors: true }));
- store
- .dispatch(updateCropRatio())
- .then(() => {
- const actions = store.getActions();
- expect(actions).toHaveLength(4);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[1]).toHaveProperty('type', 'errors/add-errors');
- expect(actions[2]).toHaveProperty('type', 'toasts/add-toast');
- expect(actions[3]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-
- it('sendDeleteMetadataMap error', (done) => {
- deleteMetadataMap.mockImplementationOnce(mockApi({ errors: true }));
- store
- .dispatch(sendDeleteMetadataMap('key'))
- .then(() => {
- expect(deleteMetadataMap).toHaveBeenCalledWith('key');
- const actions = store.getActions();
- expect(actions).toHaveLength(3);
- expect(actions[0]).toHaveProperty('type', TOGGLE_LOADING);
- expect(actions[0].payload.id).toEqual('deleteMetadataMap');
- expect(actions[1]).toHaveProperty('type', 'errors/add-errors');
- expect(actions[2]).toHaveProperty('type', TOGGLE_LOADING);
- done();
- })
- .catch(done.fail);
- });
-});
diff --git a/test/state/content-settings/reducer.test.js b/test/state/content-settings/reducer.test.js
deleted file mode 100644
index 8615744d0..000000000
--- a/test/state/content-settings/reducer.test.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import reducer from 'state/content-settings/reducer';
-import {
- setContentSettings,
- setEditorSettings,
- setCropRatios,
-} from 'state/content-settings/actions';
-
-describe('state/content-settings/reducer', () => {
- it('should return an object', () => {
- const state = reducer();
- expect(typeof state).toBe('object');
- });
-
- it('after action SET_CONTENT_SETTINGS', () => {
- const settings = { hello: 1, editor: 2 };
- const state = reducer({}, setContentSettings(settings));
- expect(state).toHaveProperty('hello', 1);
- expect(state).toHaveProperty('editor', 2);
- expect(Object.keys(state)).toHaveLength(2);
- });
-
- it('after action SET_EDITOR_SETTINGS', () => {
- const editor = { key: 'buloy' };
- const state = reducer({}, setEditorSettings(editor));
- expect(state).toHaveProperty('editor', editor);
- });
-
- it('after action SET_CROP_RATIOS', () => {
- const cropRatios = ['4:9', '16:9'];
- const state = reducer({}, setCropRatios(cropRatios));
- expect(state).toHaveProperty('cropRatios', cropRatios);
- });
-});
diff --git a/test/state/content-settings/selectors.test.js b/test/state/content-settings/selectors.test.js
deleted file mode 100644
index 7b872eec7..000000000
--- a/test/state/content-settings/selectors.test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import {
- getSettingsState,
- getIndexesStatus,
- getReferencesStatus,
- getIndexesLastReload,
- getEditorSettings,
- getCropRatios,
-} from 'state/content-settings/selectors';
-import { CONTENT_SETTINGS_OK } from 'test/mocks/contentSettings';
-
-const TEST_STATE = {
- contentSettings: CONTENT_SETTINGS_OK,
-};
-
-it('verify getSettingsState selector', () => {
- const state = getSettingsState(TEST_STATE);
- expect(state).toBeDefined();
- expect(state).toEqual(CONTENT_SETTINGS_OK);
-});
-
-it('verify getIndexes selector', () => {
- const state = getIndexesStatus(TEST_STATE);
- expect(state).toBeDefined();
- expect(state).toEqual(CONTENT_SETTINGS_OK.indexesStatus);
-});
-
-it('verify getReferencesStatus selector', () => {
- const state = getReferencesStatus(TEST_STATE);
- expect(state).toBeDefined();
- expect(state).toEqual(CONTENT_SETTINGS_OK.referencesStatus);
-});
-
-it('verify getIndexesLastReload selector', () => {
- const state = getIndexesLastReload(TEST_STATE);
- expect(state).toBeDefined();
- expect(state).toEqual(CONTENT_SETTINGS_OK.indexesLastReload);
-});
-
-it('verify getEditorSettings selector', () => {
- const state = getEditorSettings(TEST_STATE);
- expect(state).toBeDefined();
- expect(state).toEqual(CONTENT_SETTINGS_OK.editor);
-});
-
-it('verify getCropRatios selector', () => {
- const state = getCropRatios(TEST_STATE);
- expect(state).toBeDefined();
- expect(state).toEqual(CONTENT_SETTINGS_OK.cropRatios);
-});
diff --git a/test/state/table-columns/actions.test.js b/test/state/table-columns/actions.test.js
deleted file mode 100644
index b3d06793a..000000000
--- a/test/state/table-columns/actions.test.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import { setCurrentColumnsShow } from 'state/table-columns/actions';
-import { SET_CURRENT_COLUMNS_SHOW } from 'state/table-columns/types';
-
-describe('state/table-columns/actions', () => {
- it('setCurrentColumnsShow() should return a well formed action', () => {
- const action = setCurrentColumnsShow(['created', 'status']);
- expect(action).toHaveProperty('type', SET_CURRENT_COLUMNS_SHOW);
- expect(action.payload).toEqual(['created', 'status']);
- });
-});
diff --git a/test/state/table-columns/reducer.test.js b/test/state/table-columns/reducer.test.js
deleted file mode 100644
index de898bc17..000000000
--- a/test/state/table-columns/reducer.test.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import reducer from 'state/table-columns/reducer';
-import { setCurrentColumnsShow } from 'state/table-columns/actions';
-
-describe('state/table-columns/reducer', () => {
- it('should return an object', () => {
- const state = reducer();
- expect(typeof state).toBe('object');
- });
-
- describe('after action setCurrentColumnsShow', () => {
- let newState = reducer();
- it('should correctly update currentColumnsShow state field', () => {
- newState = reducer(newState, setCurrentColumnsShow(['column1']));
- expect(newState.currentColumnsShow).toEqual(['column1']);
- newState = reducer(newState, setCurrentColumnsShow([]));
- expect(newState.currentColumnsShow).toEqual([]);
- });
- });
-});
diff --git a/test/state/table-columns/selectors.test.js b/test/state/table-columns/selectors.test.js
deleted file mode 100644
index b33b66977..000000000
--- a/test/state/table-columns/selectors.test.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import { getCurrentColumnsShow } from 'state/table-columns/selectors';
-
-const TEST_STATE = {
- tableColumns: { currentColumnsShow: ['col1', 'col2'] },
-};
-
-it('verify getCurrentColumnsShow selector', () => {
- const currentColumns = getCurrentColumnsShow(TEST_STATE);
- expect(currentColumns).toEqual(['col1', 'col2']);
-});
diff --git a/test/state/user-settings/selectors.test.js b/test/state/user-settings/selectors.test.js
deleted file mode 100644
index db900e2d7..000000000
--- a/test/state/user-settings/selectors.test.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import { getUserSettings } from 'state/user-settings/selectors';
-
-const STATE = {
- userSettings: {
- restrictionsActive: false,
- enableGravatarIntegration: true,
- lastAccessPasswordExpirationMonths: 1,
- maxMonthsPasswordValid: 2,
- passwordAlwaysActive: null,
- },
-};
-
-describe('state/user-settings/selectors', () => {
- it('getUserSettings returns the full state', () => {
- expect(getUserSettings(STATE)).toEqual(STATE.userSettings);
- });
-});
diff --git a/test/ui/activity-stream/ActivityStreamMenuContainer.test.js b/test/ui/activity-stream/ActivityStreamMenuContainer.test.js
deleted file mode 100644
index 2a5ee1dcc..000000000
--- a/test/ui/activity-stream/ActivityStreamMenuContainer.test.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import 'test/enzyme-init';
-
-import { mapDispatchToProps } from 'ui/activity-stream/ActivityStreamMenuContainer';
-
-jest.unmock('ui/activity-stream/ActivityStreamMenuContainer');
-
-describe('ActivityStreamMenuContainer', () => {
- it('verifies that onClickToggle is defined by mapDispatchToProps', () => {
- const dispatchMock = jest.fn();
- const result = mapDispatchToProps(dispatchMock);
- expect(result.onClickToggle).toBeDefined();
- });
-
- it('verify that onClickToggle call dispatch', () => {
- const dispatchMock = jest.fn();
- const result = mapDispatchToProps(dispatchMock);
- result.onClickToggle();
- expect(dispatchMock).toHaveBeenCalled();
- });
-});
diff --git a/test/ui/add-content/AddContentFormContainer.test.js b/test/ui/add-content/AddContentFormContainer.test.js
deleted file mode 100644
index 0a7c7c9d2..000000000
--- a/test/ui/add-content/AddContentFormContainer.test.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-
-import { mapStateToProps, mapDispatchToProps } from 'ui/add-content/AddContentFormContainer';
-import { ADD_CONTENT_OPENED_OK } from 'test/mocks/editContent';
-
-jest.mock('state/user-preferences/selectors', () => ({
- getUserPreferences: jest.fn(() => ({})),
- getTranslationWarning: jest.fn(() => true),
-}));
-
-jest.mock('state/permissions/selectors', () => ({
- getMyGroupPermissions: jest.fn(() => ([{ group: 'free', permissions: [] }])),
-}));
-
-const TEST_STATE = {
- editContent: {
- ownerGroupDisabled: {
- disabled: false,
- },
- workMode: 'work-mode-add',
- content: {
- contentType: 'NEWS',
- version: '0.0',
- },
- selectedCategories: undefined,
- selectedJoinGroups: undefined,
- },
- contentType: {
- selected: 'ART',
- },
- groups: {
- list: ['adminstrators', 'freeAccess'],
- map: {
- adminstrators: { code: 'adminstrators', name: 'Administrators' },
- freeAccess: { code: 'freeAccess', name: 'Free Access' },
- },
- },
- currentUser: { username: 'admin' },
- userPreferences: {
- wizard: true,
- translationWarning: true,
- loadOnPageSelect: true,
- },
-};
-
-configEnzymeAdapter();
-
-describe('AddContentFormContainer connection to redux', () => {
- it('maps editContent properties from state to AddContentForm', () => {
- expect(mapStateToProps(TEST_STATE, { match: {} })).toEqual(ADD_CONTENT_OPENED_OK);
- });
-
- it('verify that onDidMount and onSetOwnerGroupDisable are defined and called in mapDispatchToProps', () => {
- const dispatchMock = jest.fn(() => ({ catch: jest.fn() }));
- const result = mapDispatchToProps(dispatchMock, { intl: {}, history: {}, match: { params: 'test' } });
- expect(result.onSetOwnerGroupDisable).toBeDefined();
- result.onSetOwnerGroupDisable();
- expect(dispatchMock).toHaveBeenCalled();
- expect(result.onDidMount).toBeDefined();
- result.onDidMount();
- expect(dispatchMock).toHaveBeenCalled();
- });
-});
diff --git a/test/ui/add-content/AddContentPage.test.js b/test/ui/add-content/AddContentPage.test.js
deleted file mode 100644
index e990b670b..000000000
--- a/test/ui/add-content/AddContentPage.test.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react';
-
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-import { shallow } from 'enzyme';
-import AddContentPage from 'ui/add-content/AddContentPage';
-
-configEnzymeAdapter();
-
-describe('AddContentPage', () => {
- let component;
- beforeEach(() => {
- component = shallow();
- });
- it('renders without crashing', () => {
- expect(component.exists()).toEqual(true);
- });
-});
diff --git a/test/ui/app/App.test.js b/test/ui/app/App.test.js
index 19633763a..fab52594c 100644
--- a/test/ui/app/App.test.js
+++ b/test/ui/app/App.test.js
@@ -4,6 +4,7 @@ import 'test/enzyme-init';
import { shallow } from 'enzyme';
import { MemoryRouter } from 'react-router-dom';
import { useSelector } from 'react-redux';
+import { waitFor } from '@testing-library/react';
import App from 'ui/app/App';
import ToastsContainer from 'ui/app/ToastsContainer';
@@ -21,9 +22,6 @@ import PagesAddPageContainer from 'ui/pages/add/PagesAddPageContainer';
import PagesEditPage from 'ui/pages/edit/PagesEditPage';
import PageSettingsPage from 'ui/pages/settings/PageSettings';
import PageConfigPageContainer from 'ui/pages/config/PageConfigPageContainer';
-import AddDataModelPage from 'ui/data-models/add/AddDataModelPage';
-import EditDataModelPage from 'ui/data-models/edit/EditDataModelPage';
-import ListDataTypePage from 'ui/data-types/list/ListDataTypePage';
import UserListPage from 'ui/users/list/UserListPage';
import UserAuthorityPageContainer from 'ui/users/authority/UserAuthorityPageContainer';
import UserRestrictionsPage from 'ui/users/restrictions/UserRestrictionsPage';
@@ -34,7 +32,6 @@ import DetailUserPage from 'ui/users/detail/DetailUserPage';
import ListGroupPage from 'ui/groups/list/ListGroupPage';
import AddGroupPage from 'ui/groups/add/AddGroupPage';
import EditGroupPage from 'ui/groups/edit/EditGroupPage';
-import DataModelListPage from 'ui/data-models/list/DataModelListPage';
import LabelsAndLanguagesPageContainer from 'ui/labels/list/LabelsAndLanguagesPageContainer';
import PageTemplateAddPage from 'ui/page-templates/add/PageTemplateAddPage';
import PageTemplateEditPage from 'ui/page-templates/edit/PageTemplateEditPage';
@@ -43,6 +40,10 @@ import FileBrowserPageContainer from 'ui/file-browser/list/ListFilesPage';
import CreateFolderFormContainer from 'ui/file-browser/add/CreateFolderPage';
import PluginsPageContainer from 'ui/plugins/PluginsPageContainer';
import PluginConfigPageContainer from 'ui/plugins/PluginConfigPageContainer';
+import PagesClonePage from 'ui/pages/clone/PagesClonePage';
+import PagesDetailPageContainer from 'ui/pages/detail/PagesDetailPageContainer';
+import PageTemplateListPage from 'ui/page-templates/list/PageTemplateListPage';
+import PageTemplateClonePage from 'ui/page-templates/clone/PageTemplateClonePage';
// component repository
import ComponentListPage from 'ui/component-repository/components/list/ComponentListPage';
import ComponentListPageDisabled from 'ui/component-repository/components/list/ComponentListPageDisabled';
@@ -50,6 +51,19 @@ import SettingsListPage from 'ui/component-repository/settings/list/SettingsList
import SettingsEditPage from 'ui/component-repository/settings/edit/SettingsEditPage';
import SettingsAddPage from 'ui/component-repository/settings/add/SettingsAddPage';
import PageNotFoundContainer from 'ui/app/PageNotFoundContainer';
+import ListDatabasePage from 'ui/database/list/ListDatabasePage';
+import AddDatabasePageContainer from 'ui/database/add/AddDatabasePageContainer';
+import ReportDatabasePageContainer from 'ui/database/report/ReportDatabasePageContainer';
+import AddProfileTypeAttributePage from 'ui/profile-types/attributes/AddProfileTypeAttributePage';
+import EditProfileTypeAttributePage from 'ui/profile-types/attributes/EditProfileTypeAttributePage';
+import ReloadConfigPage from 'ui/reload-configuration/ReloadConfigPage';
+import ReloadConfirmPage from 'ui/reload-configuration/ReloadConfirmPage';
+import MonolistProfilePageContainer from 'ui/profile-types/attributes/monolist/MonolistProfilePageContainer';
+import MonolistPageContainer from 'ui/data-types/attributes/monolist/MonolistPageContainer';
+import DetailWidgetPageContainer from 'ui/widgets/detail/DetailWidgetPageContainer';
+import CloneWidgetPage from 'ui/widgets/clone/CloneWidgetPage';
+import CloneFragmentPageContainer from 'ui/fragments/clone/CloneFragmentPageContainer';
+import NewUserWidgetPage from 'ui/widgets/newUserWidget/NewUserWidgetPage';
import {
ROUTE_HOME,
@@ -67,10 +81,6 @@ import {
ROUTE_PAGE_EDIT,
ROUTE_PAGE_SETTINGS,
ROUTE_PAGE_CONFIG,
- ROUTE_DATA_MODEL_ADD,
- ROUTE_DATA_MODEL_EDIT,
- ROUTE_DATA_MODEL_LIST,
- ROUTE_DATA_TYPE_LIST,
ROUTE_USER_LIST,
ROUTE_USER_AUTHORITY,
ROUTE_USER_ADD,
@@ -89,11 +99,28 @@ import {
ROUTE_FILE_BROWSER_CREATE_FOLDER,
ROUTE_PLUGINS,
ROUTE_PLUGIN_CONFIG_PAGE,
+ ROUTE_PAGE_CLONE,
+ ROUTE_PAGE_DETAIL,
+ ROUTE_PAGE_TEMPLATE_LIST,
+ ROUTE_PAGE_TEMPLATE_CLONE,
// component repository
ROUTE_ECR_COMPONENT_LIST,
ROUTE_ECR_CONFIG_LIST,
ROUTE_ECR_CONFIG_EDIT,
ROUTE_ECR_CONFIG_ADD,
+ ROUTE_DATABASE_LIST,
+ ROUTE_DATABASE_ADD,
+ ROUTE_DATABASE_REPORT,
+ ROUTE_PROFILE_TYPE_ATTRIBUTE_ADD,
+ ROUTE_PROFILE_TYPE_ATTRIBUTE_EDIT,
+ ROUTE_RELOAD_CONFIG,
+ ROUTE_RELOAD_CONFIRM,
+ ROUTE_ATTRIBUTE_MONOLIST_PROFILE_ADD,
+ ROUTE_ATTRIBUTE_MONOLIST_ADD,
+ ROUTE_WIDGET_DETAIL,
+ ROUTE_CLONE_WIDGET,
+ ROUTE_FRAGMENT_CLONE,
+ ROUTE_WIDGET_NEW_USERWIDGET,
} from 'app-init/router';
import { mountWithIntl } from 'test/legacyTestUtils';
@@ -138,9 +165,11 @@ describe('App', () => {
expect(component.contains()).toBe(false);
});
- it('falls back to default route if wrong route', () => {
- const component = mountWithRoute('wrongRoute');
- expect(component.find(PageNotFoundContainer).exists()).toBe(true);
+ it('falls back to default route if wrong route', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute('wrongRoute');
+ expect(component.find(PageNotFoundContainer).exists()).toBe(true);
+ });
});
it('route to dashboard', () => {
@@ -148,124 +177,164 @@ describe('App', () => {
expect(component.find(DashboardPage).exists()).toBe(true);
});
- it('route to page tree page', () => {
- const component = mountWithRoute(ROUTE_PAGE_TREE);
- expect(component.find(PageTreePageContainer).exists()).toBe(true);
- });
-
- it('route to widget list page', () => {
- const component = mountWithRoute(ROUTE_WIDGET_LIST);
- expect(component.find(ListWidgetPageContainer).exists()).toBe(true);
+ it('route to page tree page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_TREE);
+ expect(component.find(PageTreePageContainer).exists()).toBe(true);
+ });
});
- it('route to widget entry page', () => {
- const component = mountWithRoute(ROUTE_WIDGET_ADD);
- expect(component.find(AddWidgetPage).exists()).toBe(true);
+ it('route to widget list page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_WIDGET_LIST);
+ expect(component.find(ListWidgetPageContainer).exists()).toBe(true);
+ });
});
- it('route to widget edit page', () => {
- const component = mountWithRoute(ROUTE_WIDGET_EDIT);
- expect(component.find(EditWidgetPageContainer).exists()).toBe(true);
+ it('route to widget entry page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_WIDGET_ADD);
+ expect(component.find(AddWidgetPage).exists()).toBe(true);
+ });
});
- it('route to widget edit page', () => {
- const component = mountWithRoute(ROUTE_WIDGET_CONFIG);
- expect(component.find(WidgetConfigPageContainer).exists()).toBe(true);
+ it('route to widget edit page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_WIDGET_EDIT);
+ expect(component.find(EditWidgetPageContainer).exists()).toBe(true);
+ });
});
- it('route to add fragment page', () => {
- const component = mountWithRoute(ROUTE_FRAGMENT_ADD);
- expect(component.find(AddFragmentPage).exists()).toBe(true);
+ it('route to widget edit page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_WIDGET_CONFIG);
+ expect(component.find(WidgetConfigPageContainer).exists()).toBe(true);
+ });
});
- it('route to edit fragment page', () => {
- const component = mountWithRoute(ROUTE_FRAGMENT_EDIT);
- expect(component.find(EditFragmentPageContainer).exists()).toBe(true);
+ it('route to add fragment page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_FRAGMENT_ADD);
+ expect(component.find(AddFragmentPage).exists()).toBe(true);
+ });
});
- it('route to detail fragment page', () => {
- const component = mountWithRoute(ROUTE_FRAGMENT_DETAIL);
- expect(component.find(DetailFragmentPageContainer).exists()).toBe(true);
+ it('route to edit fragment page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_FRAGMENT_EDIT);
+ expect(component.find(EditFragmentPageContainer).exists()).toBe(true);
+ });
});
- it('route to add page page', () => {
- const component = mountWithRoute(ROUTE_PAGE_ADD);
- expect(component.find(PagesAddPageContainer).exists()).toBe(true);
+ it('route to detail fragment page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_FRAGMENT_DETAIL);
+ expect(component.find(DetailFragmentPageContainer).exists()).toBe(true);
+ });
});
- it('route to edit page page', () => {
- const component = mountWithRoute(ROUTE_PAGE_EDIT);
- expect(component.find(PagesEditPage).exists()).toBe(true);
+ it('route to add page page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_ADD);
+ expect(component.find(PagesAddPageContainer).exists()).toBe(true);
+ });
});
- it('route to page settings page', () => {
- const component = mountWithRoute(ROUTE_PAGE_SETTINGS);
- expect(component.find(PageSettingsPage).exists()).toBe(true);
+ it('route to edit page page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_EDIT);
+ expect(component.find(PagesEditPage).exists()).toBe(true);
+ });
});
- it('route to list fragment page', () => {
- const component = mountWithRoute(ROUTE_FRAGMENT_LIST);
- expect(component.find(ListFragmentPage).exists()).toBe(true);
+ it('route to page clone', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_CLONE);
+ expect(component.find(PagesClonePage).exists()).toBe(true);
+ });
});
-
- it('route to page config page', () => {
- const component = mountWithRoute(ROUTE_PAGE_CONFIG);
- expect(component.find(PageConfigPageContainer).exists()).toBe(true);
+ it('route to page detail', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_DETAIL);
+ expect(component.find(PagesDetailPageContainer).exists()).toBe(true);
+ });
});
- it('route to add data model page', () => {
- const component = mountWithRoute(ROUTE_DATA_MODEL_ADD);
- expect(component.find(AddDataModelPage).exists()).toBe(true);
+ it('route to page settings page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_SETTINGS);
+ expect(component.find(PageSettingsPage).exists()).toBe(true);
+ });
});
- it('route to edit data model page', () => {
- const component = mountWithRoute(ROUTE_DATA_MODEL_EDIT);
- expect(component.find(EditDataModelPage).exists()).toBe(true);
+ it('route to list fragment page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_FRAGMENT_LIST);
+ expect(component.find(ListFragmentPage).exists()).toBe(true);
+ });
});
- it('route to data model list page', () => {
- const component = mountWithRoute(ROUTE_DATA_MODEL_LIST);
- expect(component.find(DataModelListPage).exists()).toBe(true);
+ it('route to page config page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_CONFIG);
+ expect(component.find(PageConfigPageContainer).exists()).toBe(true);
+ });
});
- it('route to data type list page', () => {
- const component = mountWithRoute(ROUTE_DATA_TYPE_LIST);
- expect(component.find(ListDataTypePage).exists()).toBe(true);
+ it('route to page template list', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_LIST);
+ expect(component.find(PageTemplateListPage).exists()).toBe(true);
+ });
});
- it('route to user list page', () => {
- const component = mountWithRoute(ROUTE_USER_LIST);
- expect(component.find(UserListPage).exists()).toBe(true);
+ it('route to user list page', async () => {
+ await waitFor(async () => {
+ const component = await mountWithRoute(ROUTE_USER_LIST);
+ expect(component.find(UserListPage).exists()).toBe(true);
+ });
});
- it('route to user authority page', () => {
- const component = mountWithRoute(ROUTE_USER_AUTHORITY);
- expect(component.find(UserAuthorityPageContainer).exists()).toBe(true);
+ it('route to user authority page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_USER_AUTHORITY);
+ expect(component.find(UserAuthorityPageContainer).exists()).toBe(true);
+ });
});
- it('route to user add page', () => {
- const component = mountWithRoute(ROUTE_USER_ADD);
- expect(component.find(AddUserPage).exists()).toBe(true);
+ it('route to user add page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_USER_ADD);
+ expect(component.find(AddUserPage).exists()).toBe(true);
+ });
});
- it('route to user edit page', () => {
- const component = mountWithRoute(ROUTE_USER_EDIT);
- expect(component.find(EditUserPage).exists()).toBe(true);
+ it('route to user edit page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_USER_EDIT);
+ expect(component.find(EditUserPage).exists()).toBe(true);
+ });
});
- it('route to user detail page', () => {
- const component = mountWithRoute(ROUTE_USER_DETAIL);
- expect(component.find(DetailUserPage).exists()).toBe(true);
+ it('route to user detail page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_USER_DETAIL);
+ expect(component.find(DetailUserPage).exists()).toBe(true);
+ });
});
- it('route to user restrictions page', () => {
- const component = mountWithRoute(ROUTE_USER_RESTRICTIONS);
- expect(component.find(UserRestrictionsPage).exists()).toBe(true);
+ it('route to user restrictions page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_USER_RESTRICTIONS);
+ expect(component.find(UserRestrictionsPage).exists()).toBe(true);
+ });
});
- it('route to user restrictions page', () => {
- const component = mountWithRoute(ROUTE_USER_MY_PROFILE);
- expect(component.find(MyProfilePageContainer).exists()).toBe(true);
+ it('route to user restrictions page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_USER_MY_PROFILE);
+ expect(component.find(MyProfilePageContainer).exists()).toBe(true);
+ });
});
it('route to group list page', () => {
@@ -283,71 +352,216 @@ describe('App', () => {
expect(component.find(EditGroupPage).exists()).toBe(true);
});
- it('route to labels and languages page', () => {
- const component = mountWithRoute(ROUTE_LABELS_AND_LANGUAGES);
- expect(component.find(LabelsAndLanguagesPageContainer).exists()).toBe(true);
+ it('route to labels and languages page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_LABELS_AND_LANGUAGES);
+ expect(component.find(LabelsAndLanguagesPageContainer).exists()).toBe(true);
+ });
+ });
+
+ it('route to add page template page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_ADD);
+ expect(component.find(PageTemplateAddPage).exists()).toBe(true);
+ });
+ });
+
+ it('route to edit page template page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_EDIT);
+ expect(component.find(PageTemplateEditPage).exists()).toBe(true);
+ });
});
- it('route to add page template page', () => {
- const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_ADD);
- expect(component.find(PageTemplateAddPage).exists()).toBe(true);
+ it('route to page template clone page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_CLONE);
+ expect(component.find(PageTemplateClonePage).exists()).toBe(true);
+ });
});
- it('route to edit page template page', () => {
- const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_EDIT);
- expect(component.find(PageTemplateEditPage).exists()).toBe(true);
+ it('route to page template detail page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_DETAIL);
+ expect(component.find(PageTemplateDetailPageContainer).exists()).toBe(true);
+ });
});
- it('route to page template detail page', () => {
- const component = mountWithRoute(ROUTE_PAGE_TEMPLATE_DETAIL);
- expect(component.find(PageTemplateDetailPageContainer).exists()).toBe(true);
+ it('route to page file browser page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_FILE_BROWSER);
+ expect(component.find(FileBrowserPageContainer).exists()).toBe(true);
+ });
});
- it('route to page file browser page', () => {
- const component = mountWithRoute(ROUTE_FILE_BROWSER);
- expect(component.find(FileBrowserPageContainer).exists()).toBe(true);
+ it('route to page file browser page create folder', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_FILE_BROWSER_CREATE_FOLDER);
+ expect(component.find(CreateFolderFormContainer).exists()).toBe(true);
+ });
});
- it('route to page file browser page create folder', () => {
- const component = mountWithRoute(ROUTE_FILE_BROWSER_CREATE_FOLDER);
- expect(component.find(CreateFolderFormContainer).exists()).toBe(true);
+ it('route to database list', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_DATABASE_LIST);
+ expect(component.find(ListDatabasePage).exists()).toBe(true);
+ });
});
- it('route to plugins page', () => {
- const component = mountWithRoute(ROUTE_PLUGINS);
- expect(component.find(PluginsPageContainer).exists()).toBe(true);
+ it('route to database add page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_DATABASE_ADD);
+ expect(component.find(AddDatabasePageContainer).exists()).toBe(true);
+ });
});
- it('route to plugin config page', () => {
- const component = mountWithRoute(ROUTE_PLUGIN_CONFIG_PAGE);
- expect(component.find(PluginConfigPageContainer).exists()).toBe(true);
+ it('route to database report', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_DATABASE_REPORT);
+ expect(component.find(ReportDatabasePageContainer).exists()).toBe(true);
+ });
});
- describe('component repository', () => {
- beforeAll(() => {
- jest.resetModules();
- delete process.env.COMPONENT_REPOSITORY_UI_ENABLED;
+ it('route to database list', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_DATABASE_LIST);
+ expect(component.find(ListDatabasePage).exists()).toBe(true);
});
+ });
+ it('route to database add page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_DATABASE_ADD);
+ expect(component.find(AddDatabasePageContainer).exists()).toBe(true);
+ });
+ });
+
+ it('route to database report', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_DATABASE_REPORT);
+ expect(component.find(ReportDatabasePageContainer).exists()).toBe(true);
+ });
+ });
+
+ it('route to plugins page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PLUGINS);
+ expect(component.find(PluginsPageContainer).exists()).toBe(true);
+ });
+ });
+
+ it('route to plugins page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PLUGINS);
+ expect(component.find(PluginsPageContainer).exists()).toBe(true);
+ });
+ });
+
+ it('route to plugin config page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PLUGIN_CONFIG_PAGE);
+ expect(component.find(PluginConfigPageContainer).exists()).toBe(true);
+ });
+ });
+
+ it('route to add profile type attribute page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PROFILE_TYPE_ATTRIBUTE_ADD);
+ expect(component.find(AddProfileTypeAttributePage).exists()).toBe(true);
+ });
+ });
+
+ it('route to reload config page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_RELOAD_CONFIG);
+ expect(component.find(ReloadConfigPage).exists()).toBe(true);
+ });
+ });
+
+ it('route to reload config page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_RELOAD_CONFIRM);
+ expect(component.find(ReloadConfirmPage).exists()).toBe(true);
+ });
+ });
+
+ it('route to profile add monolist attribute page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_ATTRIBUTE_MONOLIST_PROFILE_ADD);
+ expect(component.find(MonolistProfilePageContainer).exists()).toBe(true);
+ });
+ });
+
+ it('route to profile monolist container page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_ATTRIBUTE_MONOLIST_ADD);
+ expect(component.find(MonolistPageContainer).exists()).toBe(true);
+ });
+ });
+
+ it('route to edit profile type attribute page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_PROFILE_TYPE_ATTRIBUTE_EDIT);
+ expect(component.find(EditProfileTypeAttributePage).exists()).toBe(true);
+ });
+ });
+
+ it('route to new user widget page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_WIDGET_NEW_USERWIDGET);
+ expect(component.find(NewUserWidgetPage).exists()).toBe(true);
+ });
+ });
+
+ it('route to widget detail page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_WIDGET_DETAIL);
+ expect(component.find(DetailWidgetPageContainer).exists()).toBe(true);
+ });
+ });
+
+ it('route to clone widget page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_CLONE_WIDGET);
+ expect(component.find(CloneWidgetPage).exists()).toBe(true);
+ });
+ });
+
+ it('route to fragment page', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_FRAGMENT_CLONE);
+ expect(component.find(CloneFragmentPageContainer).exists()).toBe(true);
+ });
+ });
+
+ describe('component repository', () => {
describe('component repository disabled', () => {
- it('routes to the disable page on ROUTE_ECR_COMPONENT_LIST', () => {
- const component = mountWithRoute(ROUTE_ECR_COMPONENT_LIST);
- expect(component.find(ComponentListPageDisabled).exists()).toBe(true);
+ it('routes to the disable page on ROUTE_ECR_COMPONENT_LIST', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_ECR_COMPONENT_LIST);
+ expect(component.find(ComponentListPageDisabled).exists()).toBe(true);
+ });
});
- it('routes to the disable page on ROUTE_ECR_CONFIG_LIST', () => {
- const component = mountWithRoute(ROUTE_ECR_CONFIG_LIST);
- expect(component.find(ComponentListPageDisabled).exists()).toBe(true);
+ it('routes to the disable page on ROUTE_ECR_CONFIG_LIST', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_ECR_CONFIG_LIST);
+ expect(component.find(ComponentListPageDisabled).exists()).toBe(true);
+ });
});
- it('routes to the disable page on ROUTE_ECR_CONFIG_EDIT', () => {
- const component = mountWithRoute(ROUTE_ECR_CONFIG_EDIT);
- expect(component.find(ComponentListPageDisabled).exists()).toBe(true);
+ it('routes to the disable page on ROUTE_ECR_CONFIG_EDIT', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_ECR_CONFIG_EDIT);
+ expect(component.find(ComponentListPageDisabled).exists()).toBe(true);
+ });
});
- it('routes to the disable page on ROUTE_ECR_CONFIG_ADD', () => {
- const component = mountWithRoute(ROUTE_ECR_CONFIG_ADD);
- expect(component.find(ComponentListPageDisabled).exists()).toBe(true);
+ it('routes to the disable page on ROUTE_ECR_CONFIG_ADD', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_ECR_CONFIG_ADD);
+ expect(component.find(ComponentListPageDisabled).exists()).toBe(true);
+ });
});
});
@@ -356,24 +570,32 @@ describe('App', () => {
process.env.COMPONENT_REPOSITORY_UI_ENABLED = true;
});
- it('routes to the component list page page on ROUTE_ECR_COMPONENT_LIST', () => {
- const component = mountWithRoute(ROUTE_ECR_COMPONENT_LIST);
- expect(component.find(ComponentListPage).exists()).toBe(true);
+ it('routes to the component list page page on ROUTE_ECR_COMPONENT_LIST', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_ECR_COMPONENT_LIST);
+ expect(component.find(ComponentListPage).exists()).toBe(true);
+ });
});
- it('routes to the component list page page on ROUTE_ECR_CONFIG_LIST', () => {
- const component = mountWithRoute(ROUTE_ECR_CONFIG_LIST);
- expect(component.find(SettingsListPage).exists()).toBe(true);
+ it('routes to the component list page page on ROUTE_ECR_CONFIG_LIST', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_ECR_CONFIG_LIST);
+ expect(component.find(SettingsListPage).exists()).toBe(true);
+ });
});
- it('routes to the component list page page on ROUTE_ECR_CONFIG_EDIT', () => {
- const component = mountWithRoute(ROUTE_ECR_CONFIG_EDIT);
- expect(component.find(SettingsEditPage).exists()).toBe(true);
+ it('routes to the component list page page on ROUTE_ECR_CONFIG_EDIT', async () => {
+ await waitFor(async () => {
+ const component = mountWithRoute(ROUTE_ECR_CONFIG_EDIT);
+ expect(component.find(SettingsEditPage).exists()).toBe(true);
+ });
});
- it('routes to the component list page page on ROUTE_ECR_CONFIG_ADD', () => {
- const component = mountWithRoute(ROUTE_ECR_CONFIG_ADD);
- expect(component.find(SettingsAddPage).exists()).toBe(true);
+ it('routes to the component list page page on ROUTE_ECR_CONFIG_ADD', async () => {
+ await waitFor(() => {
+ const component = mountWithRoute(ROUTE_ECR_CONFIG_ADD);
+ expect(component.find(SettingsAddPage).exists()).toBe(true);
+ });
});
});
});
diff --git a/test/ui/common/CMSShell.test.js b/test/ui/common/CMSShell.test.js
deleted file mode 100644
index d0a6a84cc..000000000
--- a/test/ui/common/CMSShell.test.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import React from 'react';
-import { shallow } from 'enzyme';
-
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-
-import CMSShell from 'ui/common/CMSShell';
-
-configEnzymeAdapter();
-
-describe('ui/common/CMSShell', () => {
- const component = shallow();
-
- it('renders without crashing', () => {
- expect(component.exists()).toBe(true);
- });
-
- it('has class CMSShell', () => {
- expect(component.hasClass('CMSShell')).toBe(true);
- });
-});
diff --git a/test/ui/common/DraggableDialog.test.js b/test/ui/common/DraggableDialog.test.js
deleted file mode 100644
index a063cfee1..000000000
--- a/test/ui/common/DraggableDialog.test.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import React from 'react';
-import { shallow } from 'enzyme';
-
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-
-import DraggableDialog from 'ui/common/DraggableDialog';
-
-configEnzymeAdapter();
-
-describe('ui/common/DraggableDialog', () => {
- const component = shallow();
- it('renders without crashing', () => {
- expect(component.exists()).toBe(true);
- });
-
- it('find ModalDialog and check className and bsClass prop', () => {
- const childDialog = component.find('ModalDialog');
- expect(childDialog.exists()).toBe(true);
- expect(childDialog.hasClass('classy')).toBe(true);
- const props = childDialog.props();
- expect(props).toHaveProperty('bsClass', 'modal');
- });
-});
diff --git a/test/ui/common/PageTitle.test.js b/test/ui/common/PageTitle.test.js
deleted file mode 100644
index bc9638d46..000000000
--- a/test/ui/common/PageTitle.test.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import React from 'react';
-import { shallow } from 'enzyme';
-
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-
-import CMSPageTitle from 'ui/common/CMSPageTitle';
-
-configEnzymeAdapter();
-
-describe('ui/common/PageTitle', () => {
- it('renders without crashing', () => {
- const component = shallow();
- expect(component.exists()).toBe(true);
- });
-
- it('renders the help icon if helpId is provided', () => {
- const component = shallow(
- ,
- );
- expect(component.find('OverlayTrigger').exists()).toBe(true);
- });
-
- it('does not render the help icon if helpId is not provided', () => {
- const component = shallow();
- expect(component.find('OverlayTrigger').exists()).toBe(false);
- });
-});
diff --git a/test/ui/common/attributes/AttributeListMenuActionsProfile.test.js b/test/ui/common/attributes/AttributeListMenuActionsProfile.test.js
deleted file mode 100644
index 9659765b4..000000000
--- a/test/ui/common/attributes/AttributeListMenuActionsProfile.test.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import React from 'react';
-import 'test/enzyme-init';
-import { shallow } from 'enzyme';
-
-import AttributeListMenuActionsProfile from 'ui/common/attributes/AttributeListMenuActionsProfile';
-
-const onMoveUp = jest.fn();
-const onMoveDown = jest.fn();
-const onClickDelete = jest.fn();
-const PROFILE_TYPE_CODE = 'PFL';
-
-
-describe('AttributeListMenuActionsProfile', () => {
- let component;
- beforeEach(() => {
- component = shallow();
- });
-
- it('errors without a code', () => {
- const consoleError = jest.spyOn(console, 'error').mockImplementation(() => {});
- shallow();
- expect(consoleError).toHaveBeenCalled();
- consoleError.mockReset();
- consoleError.mockRestore();
- });
-
- it('renders without crashing', () => {
- expect(component.exists()).toEqual(true);
- });
-
- it('has a drop down with kebab button', () => {
- expect(component.find('DropdownKebab')).toHaveLength(1);
- });
-
- it('on item-move-up clicked should call onMoveUp', () => {
- component.find('.AttributeListMenuAction__menu-item-move-up')
- .simulate('click');
- expect(onMoveUp).toHaveBeenCalled();
- });
-
- it('on item-move-up clicked should call onMoveDown', () => {
- component.find('.AttributeListMenuAction__menu-item-move-down')
- .simulate('click');
- expect(onMoveDown).toHaveBeenCalled();
- });
-
- it('on item-delete clicked should call onClickDelete', () => {
- component.find('.AttributeListMenuAction__menu-item-delete')
- .simulate('click');
- expect(onClickDelete).toHaveBeenCalled();
- });
-});
diff --git a/test/ui/common/attributes/AttributeListTableProfile.test.js b/test/ui/common/attributes/AttributeListTableProfile.test.js
deleted file mode 100644
index f4e5535b0..000000000
--- a/test/ui/common/attributes/AttributeListTableProfile.test.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import React from 'react';
-import 'test/enzyme-init';
-import { shallow } from 'enzyme';
-import AttributeListTableProfile from 'ui/common/attributes/AttributeListTableProfile';
-import { PROFILE_TYPES } from 'test/mocks/profileTypes';
-
-const { attributes } = PROFILE_TYPES;
-const props = {
- routeToEdit: '',
- code: 'code',
- profiletypeCode: '',
-};
-
-jest.mock('state/users/selectors', () => ({
- getAttributeList: jest.fn(),
-}));
-
-describe('AttributeListTableProfile', () => {
- let component;
- beforeEach(() => {
- component = shallow();
- });
-
- it('renders without crashing', () => {
- expect(component.exists()).toBe(true);
- });
-
- describe('test table component', () => {
- it('has an table header', () => {
- expect(component.find('thead th')).toHaveLength(6);
- });
-
- describe('with attributes', () => {
- beforeEach(() => {
- component.setProps({ attributes });
- });
-
- it('has four rows if there are two users', () => {
- const tbody = component.find('tbody');
- expect(tbody).toHaveLength(1);
- expect(tbody.find('tr')).toHaveLength(attributes.length);
- });
-
- it('has a menu in the action column of each row', () => {
- component.find('tbody tr').forEach((tr) => {
- expect(tr.find('AttributeListMenuActionsProfile')).toHaveLength(1);
- });
- });
- });
- });
-});
diff --git a/test/ui/common/contenttype-attributes/AttributeCheckIcon.test.js b/test/ui/common/contenttype-attributes/AttributeCheckIcon.test.js
deleted file mode 100644
index abec288a5..000000000
--- a/test/ui/common/contenttype-attributes/AttributeCheckIcon.test.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import React from 'react';
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-import { shallow } from 'enzyme';
-import AttributeCheckIcon from 'ui/common/contenttype-attributes/AttributeCheckIcon';
-
-configEnzymeAdapter();
-
-describe('AttributeCheckIcon', () => {
- it('renders without crashing', () => {
- const component = shallow();
- expect(component.exists()).toEqual(true);
- });
-
- it('if isChecked = true, has class ContTypeAttributeCheckIcon--checked', () => {
- const component = shallow();
- expect(component.hasClass('ContTypeAttributeCheckIcon--checked')).toBe(true);
- });
-
- it('if isChecked = false, has class ContTypeAttributeCheckIcon--unchecked', () => {
- const component = shallow();
- expect(component.hasClass('ContTypeAttributeCheckIcon--unchecked')).toBe(true);
- });
-});
diff --git a/test/ui/common/contenttype-attributes/AttributeEnumMapSettings.test.js b/test/ui/common/contenttype-attributes/AttributeEnumMapSettings.test.js
deleted file mode 100644
index be4d39767..000000000
--- a/test/ui/common/contenttype-attributes/AttributeEnumMapSettings.test.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import React from 'react';
-import { configEnzymeAdapter, addReduxForm, mockRenderWithIntlAndStore } from 'test/legacyTestUtils';
-import { mount } from 'enzyme';
-import AttributeEnumMapSettings, {
- elements as elementValidation,
-} from 'ui/common/contenttype-attributes/AttributeEnumMapSettings';
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-import { required } from '@entando/utils';
-
-const DATA = { code: 'code', descr: 'descr' };
-
-configEnzymeAdapter();
-jest.unmock('react-redux');
-
-describe('AttributeEnumMapSettings', () => {
- let component;
- beforeEach(() => {
- component = mount(
- mockRenderWithIntlAndStore(),
- );
- });
-
- it('renders without crashing', () => {
- expect(component.exists()).toBe(true);
- });
-
- it('has one Row', () => {
- expect(component.find('Row').exists()).toBe(true);
- expect(component.find('Row')).toHaveLength(1);
- });
-
- it('has a enumeratorStaticItems text field', () => {
- const element = component.find('Field[name="enumeratorStaticItems"]');
- expect(element.exists()).toBe(true);
- const props = element.props();
- expect(props).toHaveProperty('component', RenderTextInput);
- expect(props).toHaveProperty('validate', [required, elementValidation]);
- });
-
- it('has a enumeratorStaticItemsSeparator text field', () => {
- const element = component.find('Field[name="enumeratorStaticItemsSeparator"]');
- expect(element.exists()).toBe(true);
- const props = element.props();
- expect(props).toHaveProperty('component', RenderTextInput);
- });
-});
diff --git a/test/ui/common/contenttype-attributes/AttributeEnumSettings.test.js b/test/ui/common/contenttype-attributes/AttributeEnumSettings.test.js
deleted file mode 100644
index d0ecb74d6..000000000
--- a/test/ui/common/contenttype-attributes/AttributeEnumSettings.test.js
+++ /dev/null
@@ -1,40 +0,0 @@
-import React from 'react';
-import { configEnzymeAdapter, mockRenderWithIntlAndStore } from 'test/legacyTestUtils';
-import { mount } from 'enzyme';
-import AttributeEnumSettings, { element as elementValidation } from 'ui/common/contenttype-attributes/AttributeEnumSettings';
-import RenderTextInput from 'ui/common/form/RenderTextInput';
-import { required } from '@entando/utils';
-
-configEnzymeAdapter();
-jest.unmock('react-redux');
-
-describe('AttributeEnumSettings', () => {
- let component;
- beforeEach(() => {
- component = mount(mockRenderWithIntlAndStore());
- });
-
- it('renders without crashing', () => {
- expect(component.exists()).toBe(true);
- });
-
- it('has one Row', () => {
- expect(component.find('Row').exists()).toBe(true);
- expect(component.find('Row')).toHaveLength(1);
- });
-
- it('has a enumeratorStaticItems text field', () => {
- const element = component.find('Field[name="enumeratorStaticItems"]');
- expect(element.exists()).toBe(true);
- const props = element.props();
- expect(props).toHaveProperty('component', RenderTextInput);
- expect(props).toHaveProperty('validate', [required, elementValidation]);
- });
-
- it('has a enumeratorStaticItemsSeparator text field', () => {
- const element = component.find('Field[name="enumeratorStaticItemsSeparator"]');
- expect(element.exists()).toBe(true);
- const props = element.props();
- expect(props).toHaveProperty('component', RenderTextInput);
- });
-});
diff --git a/test/ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings.test.js b/test/ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings.test.js
deleted file mode 100644
index fc1083638..000000000
--- a/test/ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings.test.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react';
-
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-import { shallow } from 'enzyme';
-import AttributeHypeLongMonoTextSettings from 'ui/common/contenttype-attributes/AttributeHypeLongMonoTextSettings';
-
-configEnzymeAdapter();
-
-describe('AttributeInfo', () => {
- it('renders without crashing', () => {
- const component = shallow();
- expect(component.exists()).toEqual(true);
- });
-});
diff --git a/test/ui/common/contenttype-attributes/AttributeInfo.test.js b/test/ui/common/contenttype-attributes/AttributeInfo.test.js
deleted file mode 100644
index 089d9eaf4..000000000
--- a/test/ui/common/contenttype-attributes/AttributeInfo.test.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react';
-
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-import { shallow } from 'enzyme';
-import AttributeInfo from 'ui/common/contenttype-attributes/AttributeInfo';
-
-configEnzymeAdapter();
-
-describe('AttributeInfo', () => {
- it('renders without crashing', () => {
- const component = shallow();
- expect(component.exists()).toEqual(true);
- });
-});
diff --git a/test/ui/common/contenttype-attributes/AttributeInfoComposite.test.js b/test/ui/common/contenttype-attributes/AttributeInfoComposite.test.js
deleted file mode 100644
index b2db99e3c..000000000
--- a/test/ui/common/contenttype-attributes/AttributeInfoComposite.test.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react';
-
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-import { shallow } from 'enzyme';
-import AttributeInfoComposite from 'ui/common/contenttype-attributes/AttributeInfoComposite';
-
-configEnzymeAdapter();
-
-describe('AttributeInfoComposite', () => {
- it('renders without crashing', () => {
- const component = shallow();
- expect(component.exists()).toEqual(true);
- });
-});
diff --git a/test/ui/common/contenttype-attributes/AttributeListTable.test.js b/test/ui/common/contenttype-attributes/AttributeListTable.test.js
deleted file mode 100644
index 428ecb5d9..000000000
--- a/test/ui/common/contenttype-attributes/AttributeListTable.test.js
+++ /dev/null
@@ -1,56 +0,0 @@
-import React from 'react';
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-import { shallow } from 'enzyme';
-import AttributeListTable from 'ui/common/contenttype-attributes/AttributeListTable';
-
-configEnzymeAdapter();
-
-const FIELDS = {
- remove: jest.fn(),
- move: jest.fn(),
-};
-
-const DELETE = jest.fn();
-const MVUP = jest.fn();
-const MVDWN = jest.fn();
-
-const props = {
- onClickDelete: DELETE,
- attributes: [],
- routeToEdit: '',
- entityCode: '',
- onMoveUp: MVUP,
- onMoveDown: MVDWN,
- code: 'code',
- contentTypeCode: 'THX',
- fields: FIELDS,
-};
-
-describe('AttributeListTable', () => {
- let component;
- beforeEach(() => {
- component = shallow();
- });
-
- it('renders without crashing', () => {
- expect(component.exists()).toBe(true);
- });
-
- describe('test table component', () => {
- it('has an table header', () => {
- expect(component.find('thead th')).toHaveLength(0);
- });
-
- describe('with attributes', () => {
- beforeEach(() => {
- component = shallow();
- });
-
- it('has a menu in the action column of each row', () => {
- component.find('tbody tr').forEach((tr) => {
- expect(tr.find('AttributeListTableActions')).toHaveLength(1);
- });
- });
- });
- });
-});
diff --git a/test/ui/common/contenttype-attributes/AttributeListTableActions.test.js b/test/ui/common/contenttype-attributes/AttributeListTableActions.test.js
deleted file mode 100644
index aa22ed750..000000000
--- a/test/ui/common/contenttype-attributes/AttributeListTableActions.test.js
+++ /dev/null
@@ -1,105 +0,0 @@
-import React from 'react';
-import {
- configEnzymeAdapter,
- createMockHistory,
- mockRenderWithIntlAndStore,
- mockRenderWithRouter,
-} from 'test/legacyTestUtils';
-import { mount } from 'enzyme';
-import AttributeListTableActions from 'ui/common/contenttype-attributes/AttributeListTableActions';
-
-configEnzymeAdapter();
-jest.unmock('react-redux');
-
-const FIELDS = {
- remove: jest.fn(),
- move: jest.fn(),
-};
-
-const onMoveUp = jest.fn();
-const onMoveDown = jest.fn();
-const onClickDelete = jest.fn();
-
-const ATTRIBUTESLIST = [
- {
- code: 'aaa',
- type: 'Boolean',
- name: 'test1',
- roles: [],
- mandatory: true,
- listFilter: false,
- },
- {
- code: 'bbb',
- type: 'Boolean',
- name: 'test2',
- roles: [],
- mandatory: false,
- listFilter: true,
- },
-];
-
-const props = {
- attributes: ATTRIBUTESLIST,
- routeToEdit: '',
- entityCode: '',
- onClickDelete,
- onMoveUp,
- onMoveDown,
- code: 'code',
- contentTypeCode: 'THX',
- fields: FIELDS,
-};
-
-describe('AttributeListTableActions', () => {
- let history;
- let component;
- beforeEach(() => {
- history = createMockHistory();
- component = mount(
- mockRenderWithRouter(mockRenderWithIntlAndStore(), history),
- );
- });
-
- it('renders without crashing', () => {
- expect(component.exists()).toEqual(true);
- });
-
- it('has a drop down with kebab button', () => {
- expect(component.find('DropdownKebab')).toHaveLength(2);
- });
-
- describe('test moveUp/moveDown', () => {
- it('on item-move-up clicked should call onMoveUp', () => {
- component
- .find('.ContTypeAttributeListMenuAction__menu-item-move-up')
- .at(1)
- .simulate('click');
- expect(component.exists()).toBe(true);
- });
-
- it('on item-move-up clicked should call onMoveDown', () => {
- component
- .find('.ContTypeAttributeListMenuAction__menu-item-move-down')
- .at(1)
- .simulate('click');
- expect(component.exists()).toBe(true);
- });
-
- it('on item-delete clicked should call onClickDelete', () => {
- component
- .find('.ContTypeAttributeListMenuAction__menu-item-delete')
- .at(1)
- .simulate('click');
- expect(component.exists()).toBe(true);
- });
-
- it('on item-delete clicked should call on edit', () => {
- component
- .find('.ContTypeAttributeListMenuAction__menu-item-edit')
- .at(1)
- .simulate('click');
- expect(component.exists()).toBe(true);
- });
- });
-});
diff --git a/test/ui/common/contenttype-attributes/AttributeListTableComposite.test.js b/test/ui/common/contenttype-attributes/AttributeListTableComposite.test.js
deleted file mode 100644
index 34fc8e7dc..000000000
--- a/test/ui/common/contenttype-attributes/AttributeListTableComposite.test.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import React from 'react';
-
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-import { shallow } from 'enzyme';
-import AttributeListTableComposite from 'ui/common/contenttype-attributes/AttributeListTableComposite';
-
-configEnzymeAdapter();
-
-const props = {
- onAddAttribute: () => {},
- onClickDelete: () => {},
- onMove: () => {},
- attributesList: ['a', 'b', 'c'],
- compositeAttributes: [
- {
- code: 'Via',
- type: 'Text',
- name: 'Via',
- mandatory: false,
- },
- {
- code: 'Civico',
- type: 'Text',
- name: 'Civico',
- mandatory: true,
- },
- ],
-};
-
-describe('AttributeListTableComposite', () => {
- it('renders without crashing', () => {
- const component = shallow();
- expect(component.exists()).toEqual(true);
- });
-});
diff --git a/test/ui/common/contenttype-attributes/AttributesNumber.test.js b/test/ui/common/contenttype-attributes/AttributesNumber.test.js
deleted file mode 100644
index b3882bc9f..000000000
--- a/test/ui/common/contenttype-attributes/AttributesNumber.test.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react';
-
-import { configEnzymeAdapter } from 'test/legacyTestUtils';
-import { shallow } from 'enzyme';
-import AttributesNumber from 'ui/common/contenttype-attributes/AttributesNumber';
-
-configEnzymeAdapter();
-
-describe('AttributesNumber', () => {
- it('renders without crashing', () => {
- const component = shallow();
- expect(component.exists()).toEqual(true);
- });
-});
diff --git a/test/ui/common/form/ActiveLanguagesFields.test.js b/test/ui/common/form/ActiveLanguagesFields.test.js
deleted file mode 100644
index 9288fbfde..000000000
--- a/test/ui/common/form/ActiveLanguagesFields.test.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import React from 'react';
-
-import 'test/enzyme-init';
-import { shallow } from 'enzyme';
-import ActiveLanguagesFields from 'ui/common/form/ActiveLanguagesFields';
-import { LANGUAGES_LIST } from 'test/mocks/languages';
-
-const activeLanguages = LANGUAGES_LIST.filter(language => (language.isActive));
-const defaultLanguage = LANGUAGES_LIST.filter(language => (language.isDefault))[0].code;
-const onChangeDefaultTitle = jest.fn();
-
-describe('ActiveLanguagesFields', () => {
- let component;
- beforeEach(() => {
- component = shallow();
- });
- it('renders without crashing', () => {
- expect(component).toExist();
- });
-
- it('verify if has class ActiveLanguagesFields', () => {
- expect(component.hasClass('ActiveLanguagesFields')).toBe(true);
- });
-});
diff --git a/test/ui/common/form/HtmlCodeEditorRenderer.test.js b/test/ui/common/form/HtmlCodeEditorRenderer.test.js
deleted file mode 100644
index b3f00da33..000000000
--- a/test/ui/common/form/HtmlCodeEditorRenderer.test.js
+++ /dev/null
@@ -1,156 +0,0 @@
-
-import React from 'react';
-
-import 'test/enzyme-init';
-import { shallow } from 'enzyme';
-import HtmlCodeEditorRenderer from 'ui/common/form/HtmlCodeEditorRenderer';
-
-const LABEL = 'Html code';
-const HELP = 'Html help';
-const ERROR_TEXT = 'There is an error!';
-const VALUE = '';
-const onChange = jest.fn();
-const onBlur = jest.fn();
-const onFocus = jest.fn();
-
-const INPUT = {
- value: VALUE,
- onChange,
- onBlur,
- onFocus,
-};
-
-const codeMirrorInstance = {
- doc: {
- getValue: jest.fn(() => VALUE),
- },
-};
-
-describe('HtmlCodeEditorRenderer', () => {
- beforeEach(jest.clearAllMocks);
-
- let component;
- let editor;
-
- describe('basic rendering', () => {
- beforeEach(() => {
- component = shallow((
-
- ));
- editor = component.find('LoadableComponent');
- });
-
- it('renders the label component', () => {
- expect(component.contains(LABEL)).toBe(true);
- });
-
- it('renders the help component', () => {
- expect(component.contains(HELP)).toBe(true);
- });
-
- it('renders a LoadableComponent', () => {
- expect(editor.exists()).toBe(true);
- });
-
- describe('editor', () => {
- it('shows line numbers', () => {
- expect(editor.prop('options')).toHaveProperty('lineNumbers', true);
- });
-
- it('highlights active line', () => {
- expect(editor.prop('options')).toHaveProperty('styleActiveLine', true);
- });
-
- it('highlights HTML syntax', () => {
- expect(editor.prop('options')).toHaveProperty('mode', 'htmlembedded');
- });
-
- it('keeps cursor position when value changes', () => {
- expect(editor.prop('autoCursor')).toBe(false);
- });
-
- it('shows the input.value', () => {
- expect(editor.prop('value')).toEqual(INPUT.value);
- });
-
- it('on change, updates redux-form', () => {
- const editorOnChange = editor.prop('onChange');
- editorOnChange({}, {}, INPUT.value);
- expect(onChange).toHaveBeenCalledWith(INPUT.value);
- });
-
- it('on blur, updates redux-form', () => {
- const editorOnBlur = editor.prop('onBlur');
- editorOnBlur(codeMirrorInstance);
- expect(onBlur).toHaveBeenCalledWith(VALUE);
- });
-
- it('on focus, updates redux-form', () => {
- const editorOnFocus = editor.prop('onFocus');
- editorOnFocus(codeMirrorInstance);
- expect(onFocus).toHaveBeenCalledWith(VALUE);
- });
- });
- });
-
- describe('if there is an error and the field is untouched', () => {
- beforeEach(() => {
- component = shallow((
-
- ));
- editor = component.find('UnControlled');
- });
-
- it('does not render the error', () => {
- expect(component.contains(ERROR_TEXT)).toBe(false);
- });
- });
-
- describe('if there is no error and the field is touched', () => {
- beforeEach(() => {
- component = shallow((
-
- ));
- editor = component.find('UnControlled');
- });
-
- it('does not render the error', () => {
- expect(component.contains(ERROR_TEXT)).toBe(false);
- });
- });
-
- describe('if there is an error and the field is touched', () => {
- beforeEach(() => {
- component = shallow((
-
- ));
- editor = component.find('UnControlled');
- });
-
- it('does render the error', () => {
- expect(component.contains(ERROR_TEXT)).toBe(true);
- });
- });
-});
diff --git a/test/ui/common/form/MultiSelectRenderer.test.js b/test/ui/common/form/MultiSelectRenderer.test.js
deleted file mode 100644
index ba9e2a3c2..000000000
--- a/test/ui/common/form/MultiSelectRenderer.test.js
+++ /dev/null
@@ -1,129 +0,0 @@
-import React from 'react';
-import { configEnzymeAdapter, mockRenderWithIntlAndStore } from 'test/legacyTestUtils';
-import { shallow, mount } from 'enzyme';
-import MultiSelectRenderer from 'ui/common/form/MultiSelectRenderer';
-
-import { IntlProvider } from 'react-intl';
-
-configEnzymeAdapter();
-
-const FIELDS = {
- push: jest.fn(),
- remove: jest.fn(),
-};
-const OPTIONS = [
- { code: 'opt1', description: 'Option 1' },
- { code: 'opt2', description: 'Option 2' },
- { code: 'opt3', description: 'Option 3' },
-];
-
-const SELECTED_VALUES = ['opt2', 'opt3'];
-const EMPTY_TEXT_LABEL_ID = 'empty.text.id';
-
-const messages = require('../../../../src/locales/en');
-
-jest.unmock('react-redux');
-
-function shallowWithIntl(node) {
- return shallow(node, {
- wrappingComponent: IntlProvider,
- wrappingComponentProps: {
- locale: 'en',
- defaultLocale: 'en',
- messages,
- },
- });
-}
-
-describe('MultiSelectRenderer', () => {
- let component;
-
- describe('when nothing is selected', () => {
- beforeEach(() => {
- component = shallowWithIntl(
- ,
- );
- });
- it('renders without crashing', () => {
- expect(component.exists()).toEqual(true);
- });
- it('renders as many