mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-20 09:04:08 +00:00
04e5d90f86
Summary: This makes it possible to set the type of a column to ReferenceList, but the UI is terrible ReferenceList.ts is a mishmash of ChoiceList and Reference that sort of works but something about the CSS is clearly broken ReferenceListEditor is just a text editor, you have to type in a JSON array of row IDs. Ignore the value that's present when you start editing. I can maybe try mashing together ReferenceEditor and ChoiceListEditor but it doesn't seem wise. I think @georgegevoian should take over here. Reviewing the diff as it is to check for obvious issues is probably good but I don't think it's worth trying to land/merge anything. Test Plan: none Reviewers: dsagal Reviewed By: dsagal Subscribers: georgegevoian Differential Revision: https://phab.getgrist.com/D2914
60 lines
2.3 KiB
JavaScript
60 lines
2.3 KiB
JavaScript
const {NTextBox} = require('./NTextBox');
|
|
const {NumericTextBox} = require('./NumericTextBox');
|
|
const {Spinner} = require('./Spinner');
|
|
const {AttachmentsWidget} = require('./AttachmentsWidget');
|
|
const {AttachmentsEditor} = require('./AttachmentsEditor');
|
|
const UserType = require('./UserType');
|
|
const {HyperLinkEditor} = require('./HyperLinkEditor');
|
|
const {NTextEditor} = require('./NTextEditor');
|
|
const {ReferenceEditor} = require('./ReferenceEditor');
|
|
const {ReferenceList} = require('./ReferenceList');
|
|
const {ReferenceListEditor} = require('./ReferenceListEditor');
|
|
const {HyperLinkTextBox} = require('./HyperLinkTextBox');
|
|
const {ChoiceTextBox } = require('./ChoiceTextBox');
|
|
const {Reference} = require('./Reference');
|
|
|
|
/**
|
|
* Convert the name of a widget to its implementation.
|
|
*/
|
|
const nameToWidget = {
|
|
'TextBox': NTextBox,
|
|
'TextEditor': NTextEditor,
|
|
'NumericTextBox': NumericTextBox,
|
|
'HyperLinkTextBox': HyperLinkTextBox,
|
|
'HyperLinkEditor': HyperLinkEditor,
|
|
'Spinner': Spinner,
|
|
'CheckBox': require('./CheckBox'),
|
|
'CheckBoxEditor': require('./CheckBoxEditor'),
|
|
'Reference': Reference,
|
|
'Switch': require('./Switch'),
|
|
'ReferenceEditor': ReferenceEditor,
|
|
'ReferenceList': ReferenceList,
|
|
'ReferenceListEditor': ReferenceListEditor,
|
|
'ChoiceTextBox': ChoiceTextBox,
|
|
'ChoiceEditor': require('./ChoiceEditor'),
|
|
'ChoiceListCell': require('./ChoiceListCell').ChoiceListCell,
|
|
'ChoiceListEditor': require('./ChoiceListEditor').ChoiceListEditor,
|
|
'DateTimeTextBox': require('./DateTimeTextBox'),
|
|
'DateTextBox': require('./DateTextBox'),
|
|
'DateEditor': require('./DateEditor'),
|
|
'AttachmentsWidget': AttachmentsWidget,
|
|
'AttachmentsEditor': AttachmentsEditor,
|
|
'DateTimeEditor': require('./DateTimeEditor'),
|
|
};
|
|
|
|
exports.nameToWidget = nameToWidget;
|
|
|
|
/** return a good class to instantiate for viewing a widget/type combination */
|
|
function getWidgetConstructor(widget, type) {
|
|
const {config} = UserType.getWidgetConfiguration(widget, type);
|
|
return nameToWidget[config.cons];
|
|
}
|
|
exports.getWidgetConstructor = getWidgetConstructor;
|
|
|
|
/** return a good class to instantiate for editing a widget/type combination */
|
|
function getEditorConstructor(widget, type) {
|
|
const {config} = UserType.getWidgetConfiguration(widget, type);
|
|
return nameToWidget[config.editCons];
|
|
}
|
|
exports.getEditorConstructor = getEditorConstructor;
|