@intenda/opus-ui-json-builder
Version:
Provides the `jsonBuilder` component type for use by Opus UI applications.
76 lines (70 loc) • 1.93 kB
JavaScript
/* eslint-disable max-lines-per-function */
//React
import React, { useContext } from 'react';
//System
import { createContext, getThemes } from '@intenda/opus-ui';
//Context
import { jsx as _jsx } from "react/jsx-runtime";
const JsonBuilderContext = createContext('iconContext');
//Helpers
const getComponentTypes = () => {
const componentTheme = getThemes().components;
const types = Object.keys(componentTheme).map(t => {
return {
type: t
};
});
return types;
};
//Events
//Components
const Component = () => {
const {
ChildWgt,
state: {
addingWidgetObject
}
} = useContext(JsonBuilderContext);
if (!addingWidgetObject) return null;
const componentTypes = getComponentTypes();
const mda = {
type: 'container',
container: 'SYSMODAL',
traits: ['experiments/jsonbuilder/traits/addPropertyOnEnter'],
prps: {
padding: true,
autoChildMargins: true,
backgroundColor: 'iconPrimary',
hasShadow: true,
dir: 'horizontal'
},
wgts: [{
id: 'jsb-widget-adder-type',
type: 'input',
traits: ['experiments/jsonbuilder/traits/fuzzyDropdown/openLookupOnFocus', 'experiments/jsonbuilder/traits/fuzzyDropdown/openLookupOnStartTyping', 'experiments/jsonbuilder/traits/saveWidgetOnTab', 'experiments/jsonbuilder/traits/fuzzyDropdown/keyboardNavigator/index'],
prps: {
open: 'POPUP1',
forceFocus: true,
placeholder: 'component type',
lookupData: componentTypes,
lookupFlows: [{
fromSubKey: 'type'
}],
lookupFilters: [{
from: 'jsb-widget-adder-type',
key: 'type',
ignoreEmptyString: false,
operator: 'contains'
}],
lookupPrps: {
hoveredRow: 0,
pageSize: 200
}
}
}]
};
return /*#__PURE__*/_jsx(ChildWgt, {
mda: mda
});
};
export default Component;