diff --git a/canvas_modules/harness/src/client/constants/conditions-documentation-constants.js b/canvas_modules/harness/src/client/constants/conditions-documentation-constants.js
index 327656b813..3a2217f137 100644
--- a/canvas_modules/harness/src/client/constants/conditions-documentation-constants.js
+++ b/canvas_modules/harness/src/client/constants/conditions-documentation-constants.js
@@ -1434,6 +1434,75 @@ _defineConstant("ONEOFSELECT_ERROR_PROPS_INFO", {
}
}
});
+_defineConstant("MULTISELECT_ERROR_PROPS_INFO", {
+ "title": "Multiselect Title",
+ "parameterDef": {
+ "current_parameters": {
+ "multiselectList": []
+ },
+ "parameters": [
+ {
+ "id": "multiselectList",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ]
+ }
+ ],
+ "uihints": {
+ "id": "multiselectList",
+ "parameter_info": [
+ {
+ "parameter_ref": "multiselectList",
+ "label": {
+ "default": "Multiselect Control Name"
+ },
+ "description": {
+ "default": "Select multiple options from the 'multiselect' dropdown, besides 'red'"
+ },
+ "control": "multiselect"
+ }
+ ],
+ "group_info": [
+ {
+ "id": "Multiselect Control",
+ "type": "controls",
+ "parameter_refs": [
+ "multiselectList"
+ ]
+ }
+ ]
+ },
+ "conditions": [
+ {
+ "validation": {
+ "fail_message": {
+ "type": "error",
+ "message": {
+ "default": "an option must be selected.",
+ "resource_key": "multiselectList_invalid"
+ },
+ "focus_parameter_ref": "multiselectList"
+ },
+ "evaluate": {
+ "condition": {
+ "parameter_ref": "multiselectList",
+ "op": "notContains",
+ "value": "red"
+ }
+ }
+ }
+ }
+ ],
+ "resources": {
+ "multiselectList_invalid": "The option red should not be selected."
+ }
+ }
+});
_defineConstant("SOMEOFSELECT_ERROR_PROPS_INFO", {
"title": "Some of Select Title",
"parameterDef": {
diff --git a/canvas_modules/harness/src/client/constants/properties-documentation-constants.js b/canvas_modules/harness/src/client/constants/properties-documentation-constants.js
index da979b1ffe..130e1bc6d2 100644
--- a/canvas_modules/harness/src/client/constants/properties-documentation-constants.js
+++ b/canvas_modules/harness/src/client/constants/properties-documentation-constants.js
@@ -2441,6 +2441,107 @@ _defineConstant("FORCED_RADIOSET_PROPS_INFO", {
]
}
});
+_defineConstant("MULTISELECT_PROPS_INFO", {
+ "title": "Multiselect Title",
+ "parameterDef": {
+ "titleDefinition": {
+ "title": "Control: multiselect",
+ "editable": false
+ },
+ "current_parameters": {
+ "multiselectList": ["blue"]
+ },
+ "parameters": [
+ {
+ "id": "multiselectList",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "default": ["yellow"]
+ }
+ ],
+ "uihints": {
+ "id": "multiselectList",
+ "parameter_info": [
+ {
+ "parameter_ref": "multiselectList",
+ "label": {
+ "default": "Multiselect Control Name"
+ },
+ "description": {
+ "default": "multiselect test"
+ },
+ "control": "multiselect"
+ }
+ ],
+ "group_info": [
+ {
+ "id": "Multiselect Control",
+ "type": "controls",
+ "parameter_refs": [
+ "multiselectList"
+ ]
+ }
+ ]
+ }
+ }
+});
+_defineConstant("MULTISELECT_FILTERABLE_PROPS_INFO", {
+ "title": "Multiselect Title",
+ "parameterDef": {
+ "titleDefinition": {
+ "title": "Control: multiselect",
+ "editable": false
+ },
+ "current_parameters": {
+ "multiselectList": []
+ },
+ "parameters": [
+ {
+ "id": "multiselectList",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "default": ["yellow"]
+ }
+ ],
+ "uihints": {
+ "id": "multiselectList",
+ "parameter_info": [
+ {
+ "parameter_ref": "multiselectList",
+ "label": {
+ "default": "Multiselect Control Name"
+ },
+ "description": {
+ "default": "multiselect test"
+ },
+ "control": "multiselect",
+ "filterable": true
+ }
+ ],
+ "group_info": [
+ {
+ "id": "Multiselect Control",
+ "type": "controls",
+ "parameter_refs": [
+ "multiselectList"
+ ]
+ }
+ ]
+ }
+ }
+});
_defineConstant("SOMEOFSELECT_PROPS_INFO", {
"title": "Some of Select Title",
"parameterDef": {
diff --git a/canvas_modules/harness/test_resources/parameterDefs/multiselect_paramDef.json b/canvas_modules/harness/test_resources/parameterDefs/multiselect_paramDef.json
new file mode 100644
index 0000000000..55987e669f
--- /dev/null
+++ b/canvas_modules/harness/test_resources/parameterDefs/multiselect_paramDef.json
@@ -0,0 +1,544 @@
+{
+ "titleDefinition": {
+ "title": "MultiSelect"
+ },
+ "current_parameters": {
+ "multiselect_empty": [],
+ "multiselect": ["blue"],
+ "multiselect_multiple_selected": ["orange", "yellow"],
+ "multiselect_filterable": [],
+ "multiselect_filterable_single": ["green"],
+ "multiselect_filterable_multiple_selected": ["orange", "yellow"],
+ "multiselect_custom_labels": [],
+ "multiselect_error": [],
+ "multiselect_warning": [],
+ "hide": true,
+ "multiselect_hidden": [],
+ "disabled": true,
+ "multiselect_disabled": [],
+ "multiselect_table": [
+ [
+ ["cat"],
+ ["pear"],
+ ["blue"]
+ ],
+ [
+ [],
+ [],
+ ["red"]
+ ]
+ ]
+ },
+ "parameters": [
+ {
+ "id": "multiselect_empty",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ]
+ },
+ {
+ "id": "multiselect",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "required": true
+ },
+ {
+ "id": "multiselect_multiple_selected",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "required": true
+ },
+ {
+ "id": "multiselect_filterable",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "required": true
+ },
+ {
+ "id": "multiselect_filterable_single",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "required": true
+ },
+ {
+ "id": "multiselect_filterable_multiple_selected",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "required": true
+ },
+ {
+ "id": "multiselect_custom_labels",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "required": true
+ },
+ {
+ "id": "multiselect_error",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "required": true
+ },
+ {
+ "id": "multiselect_warning",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ]
+ },
+ {
+ "id": "hide",
+ "type": "boolean"
+ },
+ {
+ "id": "multiselect_hidden",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "required": true
+ },
+ {
+ "id": "disabled",
+ "type": "boolean"
+ },
+ {
+ "id": "multiselect_disabled",
+ "enum": [
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple"
+ ],
+ "required": true
+ },
+ {
+ "id": "multiselect_table",
+ "type": "array[multiselect_table_struct]",
+ "default": []
+ }
+ ],
+ "complex_types": [
+ {
+ "id": "multiselect_table_struct",
+ "parameters": [
+ {
+ "id": "animal",
+ "enum": [
+ "dog",
+ "cat",
+ "pig",
+ "horse",
+ "all of the above animals"
+ ],
+ "default": ["horse"]
+ },
+ {
+ "id": "fruit",
+ "enum": [
+ "apple",
+ "orange",
+ "pear",
+ "strawberry"
+ ]
+ },
+ {
+ "id": "color",
+ "enum": [
+ "red",
+ "green",
+ "blue",
+ "purple",
+ "orange",
+ "brown"
+ ],
+ "default": ["red"]
+ }
+ ]
+ }
+],
+ "uihints": {
+ "id": "multiselect",
+ "icon": "images/default.svg",
+ "label": {
+ "default": "MultiSelect"
+ },
+ "parameter_info": [
+ {
+ "parameter_ref": "multiselect_empty",
+ "label": {
+ "default": "multiselect"
+ },
+ "description": {
+ "default": "multiselect no options selected"
+ },
+ "class_name": "multiselect-control-class",
+ "control": "multiselect"
+ },
+ {
+ "parameter_ref": "multiselect",
+ "label": {
+ "default": "multiselect one option selected"
+ },
+ "description": {
+ "default": "multiselect with parameter value set to 'blue'"
+ },
+ "control": "multiselect"
+ },
+ {
+ "parameter_ref": "multiselect_multiple_selected",
+ "label": {
+ "default": "multiselect multiple options selected"
+ },
+ "description": {
+ "default": "multiselect with multiple options selected with custom labels"
+ },
+ "control": "multiselect"
+ },
+ {
+ "parameter_ref": "multiselect_filterable",
+ "label": {
+ "default": "multiselect filterable no options selected"
+ },
+ "description": {
+ "default": "multiselect dropdown with filter enabled"
+ },
+ "control": "multiselect",
+ "filterable": true
+ },
+ {
+ "parameter_ref": "multiselect_filterable_single",
+ "label": {
+ "default": "multiselect filterable one option selected"
+ },
+ "description": {
+ "default": "multiselect dropdown with filter enabled and one option selected"
+ },
+ "control": "multiselect",
+ "filterable": true
+ },
+ {
+ "parameter_ref": "multiselect_filterable_multiple_selected",
+ "label": {
+ "default": "multiselect filterable multiple options selected"
+ },
+ "description": {
+ "default": "multiselect dropdown with filter enabled and multiple options selected"
+ },
+ "control": "multiselect",
+ "filterable": true
+ },
+ {
+ "parameter_ref": "multiselect_custom_labels",
+ "label": {
+ "default": "multiselect custom labels"
+ },
+ "description": {
+ "default": "multiselect dropdown with custom labels set in resources"
+ },
+ "control": "multiselect"
+ },
+ {
+ "parameter_ref": "multiselect_error",
+ "label": {
+ "default": "multiselect error"
+ },
+ "description": {
+ "default": "multiselect dropdown with error when set to 'red'",
+ "placement": "on_panel"
+ },
+ "control": "multiselect"
+ },
+ {
+ "parameter_ref": "multiselect_warning",
+ "label": {
+ "default": "multiselect warning"
+ },
+ "description": {
+ "default": "Shouldn't be empty, cannot equal []",
+ "placement": "on_panel"
+ },
+ "control": "multiselect",
+ "filterable": true
+ },
+ {
+ "parameter_ref": "hide",
+ "label": {
+ "default": "hide 'multiselect hidden'"
+ }
+ },
+ {
+ "parameter_ref": "multiselect_hidden",
+ "label": {
+ "default": "multiselect hidden"
+ },
+ "description": {
+ "default": "multiselect dropdown hidden"
+ },
+ "control": "multiselect"
+ },
+ {
+ "parameter_ref": "disabled",
+ "label": {
+ "default": "disable 'multiselect disabled'"
+ }
+ },
+ {
+ "parameter_ref": "multiselect_disabled",
+ "label": {
+ "default": "multiselect disabled"
+ },
+ "description": {
+ "default": "multiselect dropdown disabled"
+ },
+ "control": "multiselect"
+ },
+ {
+ "parameter_ref": "multiselect_table",
+ "label": {
+ "default": "multiselect table"
+ },
+ "description": {
+ "default": "A multiselect should not be displayed in the table 'inline'. This control is best used 'on_panel' or in a 'subpanel'. As shown below, if 'inline', the select options will be clipped within the row.",
+ "placement": "on_panel"
+ }
+ }
+ ],
+ "complex_type_info": [
+ {
+ "complex_type_ref": "multiselect_table_struct",
+ "parameters": [
+ {
+ "parameter_ref": "animal",
+ "label": {
+ "default": "Pet inline"
+ },
+ "description": {
+ "default": "Pet"
+ },
+ "width": 10,
+ "edit_style": "inline",
+ "control": "multiselect",
+ "class_name": "table-multiselect-control-class"
+ },
+ {
+ "parameter_ref": "fruit",
+ "label": {
+ "default": "Fruit on-panel"
+ },
+ "description": {
+ "default": "Fruit"
+ },
+ "width": 10,
+ "edit_style": "on_panel",
+ "control": "multiselect",
+ "class_name": "table-on-panel-multiselect-control-class"
+ },
+ {
+ "parameter_ref": "color",
+ "label": {
+ "default": "color"
+ },
+ "description": {
+ "default": "color subpanel"
+ },
+ "width": 10,
+ "edit_style": "subpanel",
+ "control": "multiselect",
+ "filterable": true,
+ "class_name": "table-subpanel-multiselect-control-class"
+ }
+ ]
+ }
+ ],
+ "group_info": [
+ {
+ "id": "multiselect-values",
+ "label": {
+ "default": "Values"
+ },
+ "type": "controls",
+ "parameter_refs": [
+ "multiselect_empty",
+ "multiselect",
+ "multiselect_multiple_selected",
+ "multiselect_filterable",
+ "multiselect_filterable_single",
+ "multiselect_filterable_multiple_selected",
+ "multiselect_custom_labels"
+ ]
+ },
+ {
+ "id": "multiselect-conditions",
+ "label": {
+ "default": "Conditions"
+ },
+ "type": "controls",
+ "parameter_refs": [
+ "multiselect_error",
+ "multiselect_warning",
+ "hide",
+ "multiselect_hidden",
+ "disabled",
+ "multiselect_disabled"
+ ]
+ },
+ {
+ "id": "multiselect-tables",
+ "label": {
+ "default": "Table"
+ },
+ "type": "panels",
+ "group_info": [
+ {
+ "id": "multiselect-table-panel",
+ "type": "summaryPanel",
+ "label": {
+ "default": "multiselect in a table"
+ },
+ "group_info": [
+ {
+ "id": "multiselect-table-controls",
+ "parameter_refs": [
+ "multiselect_table"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "conditions": [
+ {
+ "validation": {
+ "fail_message": {
+ "type": "error",
+ "focus_parameter_ref": "multiselect_error",
+ "message": {
+ "default": "Don't select 'red'"
+ }
+ },
+ "evaluate": {
+ "condition": {
+ "parameter_ref": "multiselect_error",
+ "op": "notContains",
+ "value": "red"
+ }
+ }
+ }
+ },
+ {
+ "validation": {
+ "fail_message": {
+ "type": "warning",
+ "focus_parameter_ref": "multiselect_warning",
+ "message": {
+ "default": "Shouldn't be empty, cannot equal []"
+ }
+ },
+ "evaluate": {
+ "condition": {
+ "parameter_ref": "multiselect_warning",
+ "op": "notEquals",
+ "value": []
+ }
+ }
+ }
+ },
+ {
+ "visible": {
+ "parameter_refs": [
+ "multiselect_hidden"
+ ],
+ "evaluate": {
+ "condition": {
+ "parameter_ref": "hide",
+ "op": "equals",
+ "value": false
+ }
+ }
+ }
+ },
+ {
+ "enabled": {
+ "parameter_refs": [
+ "multiselect_disabled"
+ ],
+ "evaluate": {
+ "condition": {
+ "parameter_ref": "disabled",
+ "op": "equals",
+ "value": false
+ }
+ }
+ }
+ }
+ ],
+ "resources": {
+ "multiselect_multiple_selected.red.label": "Custom red",
+ "multiselect_multiple_selected.orange.label": "Custom orange",
+ "multiselect_multiple_selected.yellow.label": "Custom yellow",
+ "multiselect_multiple_selected.green.label": "Custom green",
+ "multiselect_multiple_selected.blue.label": "Custom blue",
+ "multiselect_multiple_selected.purple.label": "Custom purple",
+ "multiselect_custom_labels.multiselect.dropdown.empty.label": "nothing selected yet",
+ "multiselect_custom_labels.multiselect.dropdown.options.selected.label": "options are selected"
+ }
+}