X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=blobdiff_plain;f=skyquake%2Fplugins%2Fcomposer%2Fsrc%2Fsrc%2Fcomponents%2Fmodel%2FList.jsx;fp=skyquake%2Fplugins%2Fcomposer%2Fsrc%2Fsrc%2Fcomponents%2Fmodel%2FList.jsx;h=a4b12041bac605746daa2d2c0d1bde8217fa9101;hp=0000000000000000000000000000000000000000;hb=03156e335275de1dafbc2a816e98006afdf249bf;hpb=f2dc2462571800e62cba969964de621dca09299c diff --git a/skyquake/plugins/composer/src/src/components/model/List.jsx b/skyquake/plugins/composer/src/src/components/model/List.jsx new file mode 100644 index 000000000..a4b12041b --- /dev/null +++ b/skyquake/plugins/composer/src/src/components/model/List.jsx @@ -0,0 +1,105 @@ +/* + * + * Copyright 2017 RIFT.IO Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +import React from 'react'; +import changeCase from 'change-case' +import Button from '../Button' +import ClassNames from 'classnames' +import CatalogItemsActions from '../../actions/CatalogItemsActions' +import DescriptorModelMetaFactory from '../../libraries/model/DescriptorModelMetaFactory' +import Property from '../../libraries/model/DescriptorModelMetaProperty' +import utils from '../../libraries/utils' + +import PropertyPanel from './PropertyPanel' +import PanelHeader from './PanelHeader' +import RemoveItemButton from './RemoveItemButton' + +import '../../styles/EditDescriptorModelProperties.scss' +import imgAdd from '../../../../node_modules/open-iconic/svg/plus.svg' +import imgRemove from '../../../../node_modules/open-iconic/svg/trash.svg' + +function ListItemHeader(props) { + const { + property, showOpened, onChangeOpenState, + info, summary, readOnly, removeItemHandler } = props; + const className = ClassNames(property.name + '-property'); + const title = changeCase.title(property.name); + const name = showOpened ? title : summary ? '' : title; + const newInfo = showOpened ? info : summary || info; + return ( +
+ +
+ ); +} +function ListItem(props) { + const { + property, info, summary, readOnly, + showOpened, onChangeOpenState, children, removeItemHandler } = props; + return ( +
+ + {showOpened ? children : null} +
+ ); +} + + +class List extends React.Component { + constructor(props) { + super(props); + } + render() { + const { + property, value, readOnly, showHelp, tip, showOpened, + onChangeOpenState, children, addItemHandler, id } = this.props; + const title = changeCase.titleCase(property.name); + const info = (children ? children.length : '0') + ' items'; + const description = property.description; + const nodeType = property.type; + const tipText = tip && !readOnly ? + {tip} + : null; + + let classNames = ['-is-array']; + if (property.type === 'leaf_list') { + classNames.push('-is-leaf'); + } + + return ( +
+ + {tipText ? [tipText].concat(children) : children} + +
+ ); + } +} + +List.defaultProps = { +} + +export { + List, + ListItem +} \ No newline at end of file