ToolJet/frontend/src/Editor/Components/components.js

861 lines
20 KiB
JavaScript
Raw Normal View History

export const componentTypes = [
{
name: 'Table',
displayName: 'Table',
description: 'Display paginated tabular data',
component: 'Table',
properties: {
title: { type: 'string', displayName: 'Title' },
data: { type: 'code', displayName: 'Table data' },
2021-05-07 16:40:11 +00:00
loadingState: { type: 'code', displayName: 'Loading state' },
columns: { type: 'array', displayName: 'Table Columns' },
serverSidePagination: { type: 'toggle', displayName: 'Server-side pagination'},
serverSideSearch: { type: 'toggle', displayName: 'Server-side search'},
actionButtonBackgroundColor: { type: 'color', displayName: 'Background color'},
actionButtonTextColor: { type: 'color', displayName: 'Text color'}
},
2021-06-03 15:06:49 +00:00
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
defaultSize: {
width: 810,
height: 300
2021-04-11 12:23:32 +00:00
},
events: {
onRowClicked: { displayName: 'On row clicked'},
onBulkUpdate: { displayName: 'Bulk update query'},
onPageChanged: { displayName: 'On page changed'},
onSearch: { displayName: 'On search'}
},
styles: {
textColor: { type: 'color', displayName: 'Text Color' }
},
exposedVariables: {
selectedRow: {},
changeSet: {},
2021-05-07 07:41:32 +00:00
dataUpdates: [],
pageIndex: 0,
searchText: ''
},
definition: {
2021-06-03 15:06:49 +00:00
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
title: { value: 'Table' },
visible: { value: true },
loadingState: { value: false },
data: { value: '{{[]}}' },
serverSidePagination: { value: false },
columns: {
value: [
{ name: 'id' },
{ name: 'name' },
{ name: 'email' }
]
}
},
events: {
onRowClicked: {
options: {
}
},
onBulkUpdate: {
options: {
}
},
onPageChanged: {
options: {
}
},
onSearch: {
options: {
}
}
},
styles: {
textColor: { value: '' }
}
}
},
{
name: 'Button',
displayName: 'Button',
description: 'Trigger actions: queries, alerts etc',
component: 'Button',
defaultSize: {
width: 120,
height: 30
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
text: { type: 'code', displayName: 'Button Text' },
loadingState: { type: 'code', displayName: 'Loading State'}
},
events: {
onClick: { displayName: 'On click'},
},
styles: {
backgroundColor: { type: 'color', displayName: 'Background color' },
textColor: { type: 'color', displayName: 'Text color' }
},
exposedVariables: {},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
text: { value: `Button` },
visible: { value: true },
loadingState: { value: `{{false}}` }
},
events: {
onClick: {
options: {
2021-04-12 14:06:54 +00:00
}
2021-04-12 14:06:54 +00:00
}
},
styles: {
backgroundColor: { value: '#3c92dc' },
textColor: { value: '#fff' }
}
}
},
{
name: 'Chart',
displayName: 'Chart',
description: 'Display charts',
component: 'Chart',
defaultSize: {
width: 600,
height: 400
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
title: { type: 'string', displayName: 'Title' },
data: { type: 'json', displayName: 'Data' },
loadingState: { type: 'code', displayName: 'Loading State'},
markerColor: { type: 'color', displayName: 'Marker color'},
showGridLines: { type: 'toggle', displayName: 'Show grid lines'},
type: { type: 'select', displayName: 'Chart type', options: [
{ name: 'Line', value: 'line' },
2021-05-26 06:22:40 +00:00
{ name: 'Bar', value: 'bar' },
{ name: 'Pie', value: 'pie' }
] },
},
events: {},
styles: {
},
exposedVariables: {
show: null
},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
title: { value: 'This title can be changed' },
2021-05-15 13:11:18 +00:00
markerColor: { value: '#CDE1F8' },
showGridLines: { value: true },
loadingState: { value: `{{false}}` },
type: { value: `line` },
data: { value: `[
{ "x": 100, "y": "Jan"},
{ "x": 80, "y": "Feb"},
{ "x": 40, "y": "Mar"}
]`}
},
events: {
},
styles: {
}
}
},
2021-05-09 18:06:11 +00:00
{
name: 'Modal',
displayName: 'Modal',
description: 'Modal triggered by events',
component: 'Modal',
defaultSize: {
width: 600,
height: 400
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
2021-05-09 18:06:11 +00:00
properties: {
title: { type: 'string', displayName: 'Title' },
size: { type: 'select', displayName: 'Modal size', options: [
{ name: 'small', value: 'sm' },
{ name: 'medium', value: 'md' },
{ name: 'large', value: 'lg' }
] },
2021-05-09 18:06:11 +00:00
},
events: {},
styles: {
},
exposedVariables: {
show: null
},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
2021-05-09 18:06:11 +00:00
properties: {
title: { value: 'This title can be changed' },
size: { value: 'md' },
2021-05-09 18:06:11 +00:00
},
events: {
},
styles: {
}
}
},
{
name: 'TextInput',
displayName: 'Text Input',
description: 'Text field for forms',
component: 'TextInput',
defaultSize: {
width: 200,
height: 30
2021-04-12 14:06:54 +00:00
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
placeholder: { type: 'code', displayName: 'Placeholder' }
},
events: {},
styles: {
2021-04-12 14:15:30 +00:00
},
exposedVariables: {
value: {}
2021-04-12 07:54:13 +00:00
},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
placeholder: { value: 'Placeholder text' }
},
events: {
2021-04-10 04:51:19 +00:00
},
styles: {
}
}
},
{
name: 'Datepicker',
displayName: 'Date Picker',
description: 'Select a date and time',
component: 'Datepicker',
defaultSize: {
width: 150,
height: 30
2021-04-10 04:51:19 +00:00
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
format: { type: 'code', displayName: 'Format' },
enableTime: { type: 'code', displayName: 'Enable time selection?' },
enableDate: { type: 'code', displayName: 'Enable date selection?' }
},
events: {},
styles: {
},
exposedVariables: {
value: {}
2021-04-06 10:01:05 +00:00
},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
format: { value: 'DD/MM/YYYY' },
enableTime: { value: '{{false}}' },
enableDate: { value: '{{true}}' }
},
events: {
},
styles: {
}
}
},
{
name: 'Checkbox',
displayName: 'Checkbox',
description: 'A single checkbox',
component: 'Checkbox',
defaultSize: {
width: 200,
height: 25
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
label: { type: 'code', displayName: 'Label' }
},
events: {
onCheck: { displayName: 'On check'},
onUnCheck: { displayName: 'On uncheck'},
},
styles: {
textColor: { type: 'color', displayName: 'Text Color' }
},
exposedVariables: {},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
label: { value: 'Checkbox label' }
},
events: {
onCheck: {
options: {
2021-04-11 12:23:32 +00:00
}
2021-04-11 12:23:32 +00:00
},
onUnCheck: {
options: {
}
2021-04-05 07:49:40 +00:00
}
},
styles: {
textColor: { value: '#000' }
}
}
},
{
name: 'Radio-button',
displayName: 'Radio Button',
description: 'Radio buttons',
component: 'RadioButton',
defaultSize: {
width: 200,
height: 50
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
label: { type: 'code', displayName: 'Label' },
value: { type: 'code', displayName: 'Default value' },
values: { type: 'code', displayName: 'Option values' },
display_values: { type: 'code', displayName: 'Option labels' }
},
events: {
onSelectionChange: { displayName: 'On select'},
},
styles: {
textColor: { type: 'color', displayName: 'Text Color' }
},
exposedVariables: {},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
label: { value: 'Select' },
value: { value: '' },
values: { value: '{{[true,false]}}' },
display_values: { value: '{{["yes", "no"]}}' },
visible: { value: true }
},
events: {
onSelectionChange: {
options: {
}
},
},
styles: {
textColor: { value: '#000' }
}
}
},
{
name: 'ToggleSwitch',
displayName: 'Toggle Switch',
description: 'Toggle Switch',
component: 'ToggleSwitch',
defaultSize: {
width: 150,
height: 50
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
label: { type: 'code', displayName: 'Label' }
},
events: {
onChange: { displayName: 'On change'},
},
styles: {
textColor: { type: 'color', displayName: 'Text Color' }
},
exposedVariables: {},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
label: { value: 'Toggle label' }
},
events: {
onToggle: {
options: {
}
},
onUnToggle: {
options: {
}
}
},
styles: {
textColor: { value: '#000' }
}
}
},
{
name: 'Textarea',
displayName: 'Textarea',
description: 'Text area form field',
component: 'TextArea',
defaultSize: {
width: 250,
height: 100
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
value: { type: 'code', displayName: 'Default value' },
placeholder: { type: 'code', displayName: 'Placeholder' }
},
events: {},
styles: {
},
exposedVariables: {
value: {}
},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
value: { value: '' },
placeholder: { value: 'Placeholder text' }
},
events: {
},
styles: {
}
}
},
2021-05-16 16:51:04 +00:00
{
name: 'DateRangePicker',
2021-06-10 02:24:11 +00:00
displayName: 'Range Picker',
2021-05-16 16:51:04 +00:00
description: 'Select a date range',
component: 'DaterangePicker',
defaultSize: {
width: 300,
height: 32
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
2021-05-16 16:51:04 +00:00
properties: {
format: { type: 'code', displayName: 'Format' }
},
events: {},
styles: {
},
exposedVariables: {
endDate: {},
startDate: {}
},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
2021-05-16 16:51:04 +00:00
properties: {
format: { value: 'DD/MM/YYYY' }
},
events: {
},
styles: {
}
}
},
{
name: 'Text',
displayName: 'Text',
description: 'Display markdown or HTML',
component: 'Text',
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
text: { type: 'code', displayName: 'Text' },
loadingState: { type: 'code', displayName: 'Show loading state' }
},
defaultSize: {
2021-06-22 14:32:22 +00:00
width: 200,
height: 30
},
events: [
],
styles: {
textColor: { type: 'color', displayName: 'Text Color' }
},
exposedVariables: {},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
text: { value: 'Text goes here !' },
visible: { value: true },
loadingState: { value: false }
},
events: {
onClick: { }
},
styles: {
textColor: { value: '#000' }
}
}
},
{
name: 'Image',
displayName: 'Image',
description: 'Display an Image',
defaultSize: {
width: 200,
height: 200
},
component: 'Image',
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
source: { type: 'code', displayName: 'URL' },
},
events: {
onClick: { displayName: 'On click'},
2021-04-05 07:49:40 +00:00
},
styles: {
},
exposedVariables: {},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
source: { value: 'https://www.svgrepo.com/show/34217/image.svg' },
visible: { value: true }
},
events: {
onClick: { }
},
styles: {
}
}
},
{
name: 'Container',
displayName: 'Container',
description: 'Wrapper for multiple components',
defaultSize: {
width: 200,
height: 200
},
component: 'Container',
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
},
events: {},
styles: {
backgroundColor: { type: 'color' }
},
exposedVariables: {},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
visible: { value: true }
},
events: { },
styles: {
backgroundColor: { value: '#fff' }
}
}
},
{
name: 'Dropdown',
2021-06-10 02:24:11 +00:00
displayName: 'Dropdown',
description: 'Select one value from options',
defaultSize: {
width: 200,
height: 37
},
component: 'DropDown',
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
label: { type: 'code', displayName: 'Label' },
value: { type: 'code', displayName: 'Default value' },
values: { type: 'code', displayName: 'Option values' },
display_values: { type: 'code', displayName: 'Option labels' }
},
events: {
onSelect: { displayName: 'On select'},
},
styles: {
},
exposedVariables: {
value: null
},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
label: { value: 'Select' },
value: { value: '' },
2021-05-22 14:39:44 +00:00
values: { value: '{{[1,2,3]}}' },
display_values: { value: '{{["one", "two", "three"]}}' },
visible: { value: true }
},
events: {
onSelect: { }
},
styles: {
}
}
},
{
name: 'Multiselect',
displayName: 'Multiselect',
description: 'Select multiple values from options',
defaultSize: {
width: 200,
height: 60
},
component: 'Multiselect',
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
label: { type: 'code', displayName: 'Label' },
value: { type: 'code', displayName: 'Default value' },
values: { type: 'code', displayName: 'Option values' },
display_values: { type: 'code', displayName: 'Option labels' }
},
events: {
onSelect: { displayName: 'On select'},
},
styles: {
},
exposedVariables: {
values: {}
},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
label: { value: 'Select' },
values: { value: '[]' },
option_values: { value: '[1,2,3]' },
display_values: { value: '["one", "two", "three"]' },
visible: { value: true }
},
events: {
onSelect: { }
},
styles: {
}
}
},
{
name: 'RichTextEditor',
2021-06-10 02:24:11 +00:00
displayName: 'Text Editor',
description: 'Rich text editor',
component: 'RichTextEditor',
defaultSize: {
width: 600,
height: 210
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
properties: {
placeholder: { type: 'code', displayName: 'Placeholder' }
},
events: {},
styles: {
},
exposedVariables: {
value: {}
},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
properties: {
placeholder: { value: 'Placeholder text' }
},
events: {
2021-05-01 16:58:34 +00:00
},
styles: {
}
}
2021-05-16 05:26:31 +00:00
},
{
name: 'Map',
displayName: 'Map',
description: 'Display Google Maps',
component: 'Map',
defaultSize: {
width: 400,
height: 400
},
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop? '},
showOnMobile: { type: 'toggle', displayName: 'Show on mobile?'},
},
2021-05-16 05:26:31 +00:00
properties: {
initialLocation: { type: 'code', displayName: 'Initial location', tip: 'This location will be the initial center of the map', options: {
mode: 'javascript',
theme: 'duotone-light',
className: 'map-location-input pr-2'
2021-05-16 06:25:48 +00:00
}},
defaultMarkers: { type: 'code', displayName: 'Default markers', options: {
mode: 'javascript',
theme: 'duotone-light',
className: 'map-location-input pr-2'
2021-05-16 08:56:18 +00:00
}},
addNewMarkers: { type: 'toggle', displayName: 'Add new markers'},
2021-05-17 15:49:18 +00:00
canSearch: { type: 'toggle', displayName: 'Search for places'},
2021-05-16 05:26:31 +00:00
},
2021-05-16 09:09:24 +00:00
events: {
onBoundsChange: { displayName: 'On bounds change'},
2021-05-16 09:53:54 +00:00
onCreateMarker: { displayName: 'On create marker'},
2021-05-16 10:11:55 +00:00
onMarkerClick: { displayName: 'On marker click'},
2021-05-16 09:09:24 +00:00
},
2021-05-16 05:26:31 +00:00
styles: {
},
exposedVariables: {
2021-05-16 18:13:57 +00:00
center: {}
2021-05-16 05:26:31 +00:00
},
definition: {
others: {
showOnDesktop: { value: true },
showOnMobile: { value : false }
},
2021-05-16 05:26:31 +00:00
properties: {
initialLocation: { value: `{
"lat": 40.7128,
"lng": -73.935242
2021-05-16 06:25:48 +00:00
}`},
defaultMarkers: { value: `[{
"lat": 40.7128,
"lng": -73.935242
}]`}
2021-05-16 05:26:31 +00:00
},
2021-05-16 08:56:18 +00:00
addNewMarkers: { value: '{{false}}'},
2021-05-16 05:26:31 +00:00
events: {
},
styles: {
}
}
},
];