ToolJet/frontend/src/Editor/WidgetManager/configs/multiselectV2.js

352 lines
10 KiB
JavaScript
Raw Normal View History

Release: Appbuilder S1 (#10081) * fix : color for all new columns * revert * Fix: selection of copy of selected component for ease (#9818) * fix: selection of copy of selected component for ease * add pre selection for clonig as well * add clone check * fixes selection of components on empty canvas * Fix: sizing issues in horizontal divider (#9942) * fix horizontal divider sizing issues * fix dark mode color in horizontal divider and remove unused class * add custom fallback for images when not found (#9943) * cherry pick error message log changes and fix tjdb error logs in debugger (#9951) * Fix: mouse release on canvas when properties/styles values selected (#9732) * fix: mouse release on canvas when properties/styles values selected * fix: event name * fix: rest api headers empty state while creating new query (#9729) * fix: selection issue in table row while editing (#9944) * allow selection in table cell * update classname for selection * display date picker date as text instead of input in read only mode * Add new revamped multiselect widget (#9837) * init textinput revamp * updated styles panel * bugfix * updates * fix :: accordion * fix :: styling * add box shadow , additional property,tooltip * fix conditional render for styles * feat :: fixed order of each property and styles * feat :: styling input * bugfix * feat :: add option to add icon * add option to add icon * adding option to toggle visibility * updated password input with new design * chnaging component location * bugfix * style fixes * fix :: added loader * updated :: few detailing * few bugfixes * fix :: for form widget label * fixes * added option to add icon color * including label field for password input * fix for label * fix * test fix backward compatibility for height * updates * revert * adding key for distinguishing older and newer widgets * testing * test * test * update * update * migration testing * limit vertical resizing in textinput * testing * throw test * test * adding check for label length * fixing edge cases * removing resize * backward compatibility height * backward compatibility * number input review fixes * added exposed items * fixing csa * ui fixes * fix height compatibility * feat :: csa for all inputs and exposed variables * backward compatibility fixes and validation fixes * fixes :: textinput positioning of loader and icon * fix :: password input * cleanup and fixes * fixes * cleanup * fixes * review fixes * review fixes * typo fix * fix padding * review fixes styles component panel * fix naming * fix padding * feat :: toggle switch revamp * init checkbox * fixes * fixes * switch fixes * validation fix * fixes * cleanup * height fix * fix height toggle * updates * fix :: icons position * updates * cleanup * updates events , csa * cleanup * backward compatibility * clean * backward compatibility fix * label fixed to one line * feat :: change validation from properties * ui fixes * icon name * removed 'px' text from tooltip * added onchange event for checkbox * fixes placeholder * few updates :: removing label in form * ui in form * fire onchange * update :: number input validation behaviour * testing fixes * added side handlers * removing unwanted fx * disabling fx for padding field * ordering change * fix * label issue + restricted side handler * fix :: box shadow bug * fix * on change event doesnt propagate exposed vars correctly * adding debounce for slider value change * fix :: for modal ooen bug during onfocus event * test slider * fix :: bugs regarding state update in checbox , slider , slider bug * update slider with radix slider * bugfix * update tooltip * fix toggle switch * fixes : inspector * fix : checkbox label * Remove date-fns depedency from table datepicker * Revert Remove date-fns depedency from table datepicker * feat : checkbox completed * update checkbox review changes * feat : toggle component * feat : added new toggle component * fix : colors * updated review changes * update name for old and new version * update * case change * update * update icon * removed padding from checkbox and toggle * fix naming * product review and bugfixes : changes * fix : checkbox setvalue action * Update setvalue action in toggle * fixed: section for legacy and new components * add new version of dropdown * Add same styles as other input components * fix height issues * Add new revamped multiselect widget * Fix design review * fix design issues * Fix * Fix merge issues * Add menu portal target * resolve code comments * widget config changes * add hover for clear icon * fix * Fix review comments * Multiselect changes after dropdown merge * exposed variables * Delete unused components * Multiselect fixes * Dropdown CSS fixes and multiselect fixes * Fix merge issues * fix * Add highlight text * Change multiselect UI * fix error message * fix multiselect opening closing * placeholder fix * fix highlighting in multiselect * fix : testing bugs * fix : default value * Fix merge issues * Fix Qa bugs * Fix QA bugs * Fix codehinter default values * fix fireEvent on focus * Fixes * Provide minwidth to dropdown and multiselect * Fix search input value not getting updated --------- Co-authored-by: stepinfwd <[email protected]> Co-authored-by: Johnson Cherian <[email protected]> * Fix: remove mandatory key from password input (#9786) * Remove date-fns depedency from table datepicker * Revert Remove date-fns depedency from table datepicker * remove mandatory key from password input --------- Co-authored-by: Nakul Nagargade <[email protected]> Co-authored-by: Johnson Cherian <[email protected]> * feat : Query manager separated to different tabs (#9823) * change toggle for query manager and revamp preview * feat : query manger body revamp * updates * fix : tranformation switch * preview integration * loader safari changes and overflow fix * fix * fix : settings tab QM * revert few changes to fix datasources page * revert header options change * zindex fix for query-pane * fix : events ui * fix :events widget manager * code optimised for this file * QM header fixes * dark mode changes * fix : info icon * open preview drawer on run query * fix : query manager query section icons update * update color * design feedbacks and make preview panel resizable * update toggle for preview result & increate draggable area * fix :review changes * merge fixes * Merge branch 'appbuilder-1.8' into feature/query-manager-body * fix : codehinter in disabled state * ui fix * code refactor * cleanup * fix fontsize in datasource selector popup * fix border issue in preview container and increase draggable area * fix : review fixes * fix: fixed text css formatting for safari support * Revert "code refactor" This reverts commit 4763dd11a31f327e41b411b43f39cb422ee34674. * typo * fix : not able to select text in preview * fix : not able to view add params * fix selection issue in preview * fix : add scroll in query manager when preview is blocking view --------- Co-authored-by: Kartik Gupta <[email protected]> * Fixes: select all click behaviour on label (#10108) * fixes: select all click behaviour on label * fix: legacy component names * fix: selecto issue (#10107) * Fix : Prevent component autofill (#10040) * fix : prevent other component from autofilling data when password is filled from browser suggestions * optimise * feat: skip onDragStop execution if drag event is empty (#10118) * feat: skip onDragStop execution if drag event is empty * fix: added additonal logs for error * display query preview data in preview panel and display transformation failure stacktrace data in previewpanel as well (#10129) * Fix while adding new rows in table components when ever entered the text and pressed enter it doubles the text (#10112) * Integration bugfixes appbuilder 1.8 (#10109) * fix : query maanager duplicate and preview issue * fix : multiselect breaking on making dynamic options null * fix : preview and query panel integration bugs * fix : placeholder * fix : doc links * fix : scroll in TJDB filter section * fix : portal for multiselect * fixes * fix : image column table alignment * fix : doc link for multiselect * fix : codehinter state being persited across components * fix :export app qery manager items not coming in correct order * fix: search icon position * code refactor --------- Co-authored-by: Johnson Cherian <[email protected]> * add z-index to app name info header container (#10116) * Fix dropdown and multiselect crash on integer labels (#10128) * cast integer labels to string * add null check for label and provide default value for empty labels * empty and null handle for schemas and other values * revert changes * Fix: dark mode on preview names (#10136) * fix: dark mode of preview names * fix background color of preview * fix tjdb query import (#10134) * fix :revert radio button name change (#10153) * Fix: select issue on multiselect (#10137) * remove portal from multiselect * fix: dynamic values for options in dropdown/multiselect * remove fx from default option * Fix: delete on options delete in dropdown (#10192) * fix: delete on options delete * fix: overlapping of multiselect on parent container * fix: outside click of multiselect * hotfix : Table breaking on importing older apps with null value in column (#10185) * fix : table breaking on importing older apps with null value in column * fix : table crash , codehinter not saving values upon page change * remove low priority wrapper from autosave * remove logs * added delay to autosave as callback * fix: dropdown crash on invalid data (#10202) * revert to previous transformation code , fix darkmode color (#10216) * fix : doclink for dropdown (#10217) * fix : Transformations value getting cleared / not getting saved (#10218) * fix : transformation value not getting saved * remove dependency * chore: version update for release --------- Co-authored-by: stepinfwd <[email protected]> Co-authored-by: vjaris42 <[email protected]> Co-authored-by: Kartik Gupta <[email protected]> Co-authored-by: Nakul Nagargade <133095394+[email protected]> Co-authored-by: Nakul Nagargade <[email protected]> Co-authored-by: Akshay <[email protected]>
2024-07-01 03:16:22 +00:00
export const multiselectV2Config = {
name: 'Multiselect',
displayName: 'Multiselect',
description: 'Multiple item selector',
defaultSize: {
width: 10,
height: 40,
},
component: 'MultiselectV2',
others: {
showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' },
showOnMobile: { type: 'toggle', displayName: 'Show on mobile' },
},
validation: {
mandatory: { type: 'toggle', displayName: 'Make this field mandatory' },
customRule: {
type: 'code',
displayName: 'Custom validation',
placeholder: `{{components.text2.text=='yes'&&'valid'}}`,
},
},
actions: [
{
handle: 'selectOptions',
displayName: 'Select Options',
params: [
{
handle: 'option',
displayName: 'Option',
},
],
},
{
handle: 'deselectOptions',
displayName: 'Deselect Options',
params: [
{
handle: 'option',
displayName: 'Option',
},
],
},
{
handle: 'clear',
displayName: 'Clear',
},
{
handle: 'setVisibility',
displayName: 'Set visibility',
params: [{ handle: 'setVisibility', displayName: 'Value', defaultValue: `{{true}}`, type: 'toggle' }],
},
{
handle: 'setLoading',
displayName: 'Set loading',
params: [{ handle: 'setLoading', displayName: 'Value', defaultValue: `{{false}}`, type: 'toggle' }],
},
{
handle: 'setDisable',
displayName: 'Set disable',
params: [{ handle: 'setDisable', displayName: 'Value', defaultValue: `{{false}}`, type: 'toggle' }],
},
],
properties: {
label: {
type: 'code',
displayName: 'Label',
validation: {
schema: { type: 'string' },
defaultValue: 'Label',
},
accordian: 'Data',
},
placeholder: {
type: 'code',
displayName: 'Placeholder',
validation: {
schema: { type: 'string' },
defaultValue: 'Select the options',
},
accordian: 'Data',
},
advanced: {
type: 'toggle',
displayName: 'Dynamic options',
validation: {
schema: { type: 'boolean' },
defaultValue: false,
},
accordian: 'Options',
},
value: {
type: 'code',
displayName: 'Default value',
conditionallyRender: {
key: 'advanced',
value: false,
},
validation: {
schema: {
type: 'union',
schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }],
},
},
accordian: 'Options',
},
schema: {
type: 'code',
displayName: 'Schema',
conditionallyRender: {
key: 'advanced',
value: true,
},
accordian: 'Options',
},
showAllOption: {
type: 'toggle',
displayName: 'Enable select all option',
validation: {
schema: { type: 'boolean' },
defaultValue: true,
},
accordian: 'Options',
},
optionsLoadingState: {
type: 'toggle',
displayName: 'Options loading state',
validation: {
schema: { type: 'boolean' },
defaultValue: true,
},
accordian: 'Options',
},
loadingState: {
type: 'toggle',
displayName: 'Loading state',
validation: { schema: { type: 'boolean' }, defaultValue: true },
section: 'additionalActions',
},
visibility: {
type: 'toggle',
displayName: 'Visibility',
validation: { schema: { type: 'boolean' }, defaultValue: true },
section: 'additionalActions',
},
disabledState: {
type: 'toggle',
displayName: 'Disable',
validation: { schema: { type: 'boolean' }, defaultValue: true },
section: 'additionalActions',
},
tooltip: {
type: 'code',
displayName: 'Tooltip',
validation: { schema: { type: 'string' }, defaultValue: '' },
section: 'additionalActions',
placeholder: 'Enter tooltip text',
},
},
events: {
onSelect: { displayName: 'On select' },
onSearchTextChanged: { displayName: 'On search text changed' },
onFocus: { displayName: 'On focus' },
onBlur: { displayName: 'On blur' },
},
styles: {
labelColor: {
type: 'color',
displayName: 'Color',
validation: { schema: { type: 'string' }, defaultValue: '#1B1F24' },
accordian: 'label',
},
alignment: {
type: 'switch',
displayName: 'Alignment',
validation: { schema: { type: 'string' }, defaultValue: 'side' },
options: [
{ displayName: 'Side', value: 'side' },
{ displayName: 'Top', value: 'top' },
],
accordian: 'label',
},
direction: {
type: 'switch',
displayName: 'Direction',
validation: { schema: { type: 'string' }, defaultValue: 'left' },
showLabel: false,
isIcon: true,
options: [
{ displayName: 'alignleftinspector', value: 'left', iconName: 'alignleftinspector' },
{ displayName: 'alignrightinspector', value: 'right', iconName: 'alignrightinspector' },
],
accordian: 'label',
isFxNotRequired: true,
},
labelWidth: {
type: 'slider',
displayName: 'Width',
validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } },
accordian: 'label',
conditionallyRender: {
key: 'alignment',
value: 'side',
},
isFxNotRequired: true,
},
auto: {
type: 'checkbox',
displayName: 'auto',
showLabel: false,
validation: { schema: { type: 'boolean' } },
accordian: 'label',
conditionallyRender: {
key: 'alignment',
value: 'side',
},
isFxNotRequired: true,
},
fieldBackgroundColor: {
type: 'color',
displayName: 'Background',
validation: { schema: { type: 'string' }, defaultValue: '#fff' },
accordian: 'field',
},
fieldBorderColor: {
type: 'color',
displayName: 'Border',
validation: { schema: { type: 'string' }, defaultValue: '#CCD1D5' },
accordian: 'field',
},
accentColor: {
type: 'color',
displayName: 'Accent',
validation: { schema: { type: 'string' }, defaultValue: '#4368E3' },
accordian: 'field',
},
selectedTextColor: {
type: 'color',
displayName: 'Text',
validation: { schema: { type: 'string' }, defaultValue: '#1B1F24' },
accordian: 'field',
},
errTextColor: {
type: 'color',
displayName: 'Error Text',
validation: { schema: { type: 'string' }, defaultValue: '#D72D39' },
accordian: 'field',
},
icon: {
type: 'icon',
displayName: 'Icon',
validation: { schema: { type: 'string' }, defaultValue: 'IconHome2' },
accordian: 'field',
visibility: false,
},
iconColor: {
type: 'color',
displayName: 'Icon color',
validation: {
schema: { type: 'string' },
defaultValue: '#6A727C',
},
accordian: 'field',
showLabel: false,
},
fieldBorderRadius: {
type: 'input',
displayName: 'Border radius',
validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, defaultValue: '6' },
accordian: 'field',
},
boxShadow: {
type: 'boxShadow',
displayName: 'Box Shadow',
validation: {
schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] },
defaultValue: '0px 0px 0px 0px #00000090',
},
accordian: 'field',
},
padding: {
type: 'switch',
displayName: 'Padding',
validation: {
schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] },
defaultValue: 'default',
},
options: [
{ displayName: 'Default', value: 'default' },
{ displayName: 'None', value: 'none' },
],
accordian: 'container',
},
},
exposedVariables: {
searchText: '',
},
definition: {
others: {
showOnDesktop: { value: '{{true}}' },
showOnMobile: { value: '{{false}}' },
},
validation: {
mandatory: { value: false },
customRule: { value: null },
},
properties: {
label: { value: 'Select' },
// value: { value: '{{["1","2"]}}' },
values: { value: '{{["1","2"]}}' },
advanced: { value: `{{false}}` },
showAllOption: { value: '{{false}}' },
optionsLoadingState: { value: '{{false}}' },
placeholder: { value: 'Select the options' },
visibility: { value: '{{true}}' },
disabledState: { value: '{{false}}' },
loadingState: { value: '{{false}}' },
schema: {
value:
"{{[\t{label: 'option1',value: '1',disable: {value: false },visible: {value:true },default: {value: false} },{label: 'option2',value: '2',disable: {value: false },visible:{value: true},default: {value: true} },{label: 'option3',value: '3',disable: {value: false },visible: {value:true },default: {value: false} }\t]}}",
},
options: {
value:
"{{[\t{label: 'option1',value: '1',disable: {value: false },visible: {value:true },default: {value: false} },{label: 'option2',value: '2',disable: {value: false },visible:{value: true},default: {value: true} },{label: 'option3',value: '3',disable: {value: false },visible: {value:true },default: {value: false} }\t]}}",
},
tooltip: { value: '' },
},
events: [],
styles: {
labelColor: { value: '#1B1F24' },
labelWidth: { value: '33' },
auto: { value: '{{true}}' },
fieldBorderRadius: { value: '6' },
selectedTextColor: { value: '#1B1F24' },
fieldBorderColor: { value: '#CCD1D5' },
errTextColor: { value: '#D72D39' },
fieldBackgroundColor: { value: '#fff' },
direction: { value: 'left' },
alignment: { value: 'side' },
padding: { value: 'default' },
boxShadow: { value: '0px 0px 0px 0px #00000090' },
icon: { value: 'IconHome2' },
iconVisibility: { value: false },
iconColor: { value: '#6A727C' },
accentColor: { value: '#4368E3' },
},
},
};