/* * * Copyright 2016-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 _keys from 'lodash/keys' import _isObject from 'lodash/isObject' import Select from 'react-select'; import 'react-select/dist/react-select.css' import DescriptorEditorActions from '../../actions/DescriptorEditorActions' import CatalogItemsActions from '../../actions/CatalogItemsActions' import Property from '../../libraries/model/DescriptorModelMetaProperty' import SelectionManager from '../../libraries/SelectionManager' export default function PropertyNavigate(props) { const { container, idMaker, options, placeholder, style } = props; function gotoProperty(descriptor, path) { DescriptorEditorActions.expandPanel({ descriptor, path }); function bringIntoViewAndFocusOnProperty() { const element = document.getElementById(idMaker(container, path)); if (element) { element.scrollIntoView(); setTimeout(function () { element.focus() }, 100); } } setTimeout(bringIntoViewAndFocusOnProperty, 100); } function onClickSelectItem(item) { // we don't support traversing into an 'external' model (e.g. vlds) // if we did then we would need to know when and then invoke something like // CatalogItemsActions.catalogItemMetaDataChanged(root.model); // and then after a delay fire the gotoProperty step gotoProperty(container, item.value); } return (