Struct slack_messaging::blocks::elements::MultiSelectStaticOptions
source · pub struct MultiSelectStaticOptions { /* private fields */ }Expand description
Multi-select menu Static options element representation.
Example
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, Opt};
use serde_json::json;
let menu = MultiSelectStaticOptions::new()
.set_action_id("text1234")
.push_option(
Opt::plain("option-0").set_value("value-0")
)
.push_option(
Opt::plain("option-1").set_value("value-1")
)
.placeholder("Select items");
let expected = json!({
"type": "multi_static_select",
"action_id": "text1234",
"options": [
{
"text": {
"type": "plain_text",
"text": "option-0",
"emoji": true
},
"value": "value-0"
},
{
"text": {
"type": "plain_text",
"text": "option-1",
"emoji": true
},
"value": "value-1"
}
],
"placeholder": {
"type": "plain_text",
"text": "Select items",
"emoji": true
}
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);Implementations§
source§impl MultiSelectStaticOptions
impl MultiSelectStaticOptions
sourcepub fn new() -> Self
pub fn new() -> Self
Constructs a Multi-select menu Static options element with empty values.
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, Opt};
use serde_json::json;
let menu = MultiSelectStaticOptions::new();
let expected = json!({
"type": "multi_static_select",
"action_id": "",
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn set_action_id<T: Into<String>>(self, action_id: T) -> Self
pub fn set_action_id<T: Into<String>>(self, action_id: T) -> Self
Sets action_id field.
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, Opt};
use serde_json::json;
let menu = MultiSelectStaticOptions::new()
.set_action_id("text1234");
let expected = json!({
"type": "multi_static_select",
"action_id": "text1234",
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn set_options(self, options: Vec<Opt>) -> Self
pub fn set_options(self, options: Vec<Opt>) -> Self
Sets options field directly and removes option_groups field. (Either options or option_groups field exists.)
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, Opt};
use serde_json::json;
let menu = MultiSelectStaticOptions::new()
.set_options(
vec![
Opt::plain("option-0").set_value("value-0"),
Opt::plain("option-1").set_value("value-1")
]
);
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"options": [
{
"text": {
"type": "plain_text",
"text": "option-0",
"emoji": true
},
"value": "value-0"
},
{
"text": {
"type": "plain_text",
"text": "option-1",
"emoji": true
},
"value": "value-1"
}
]
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn push_option(self, option: Opt) -> Self
pub fn push_option(self, option: Opt) -> Self
Adds Opt object to options field and removes option_groups field. (Either options or option_groups field exists.)
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, Opt};
use serde_json::json;
let menu = MultiSelectStaticOptions::new()
.push_option(
Opt::plain("option-0").set_value("value-0"),
);
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"options": [
{
"text": {
"type": "plain_text",
"text": "option-0",
"emoji": true
},
"value": "value-0"
}
]
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn set_option_groups(self, option_groups: Vec<OptGroup>) -> Self
pub fn set_option_groups(self, option_groups: Vec<OptGroup>) -> Self
Sets option_groups field directly and removes options field. (Either options or option_groups field exists.)
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, Opt, OptGroup};
use serde_json::json;
let group_0 = OptGroup::new()
.label("Group Zero")
.push_option(
Opt::plain("option-00").set_value("value-00")
)
.push_option(
Opt::plain("option-01").set_value("value-01")
);
let group_1 = OptGroup::new()
.label("Group One")
.push_option(
Opt::plain("option-10").set_value("value-10")
)
.push_option(
Opt::plain("option-11").set_value("value-11")
);
let menu = MultiSelectStaticOptions::new()
.set_option_groups(vec![group_0, group_1]);
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"option_groups": [
{
"label": {
"type": "plain_text",
"text": "Group Zero",
"emoji": true
},
"options": [
{
"text": {
"type": "plain_text",
"text": "option-00",
"emoji": true
},
"value": "value-00"
},
{
"text": {
"type": "plain_text",
"text": "option-01",
"emoji": true
},
"value": "value-01"
},
]
},
{
"label": {
"type": "plain_text",
"text": "Group One",
"emoji": true
},
"options": [
{
"text": {
"type": "plain_text",
"text": "option-10",
"emoji": true
},
"value": "value-10"
},
{
"text": {
"type": "plain_text",
"text": "option-11",
"emoji": true
},
"value": "value-11"
},
]
}
]
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn push_option_group(self, option_group: OptGroup) -> Self
pub fn push_option_group(self, option_group: OptGroup) -> Self
Adds OptGroup object to option_groups field and removes options field. (Either options or option_groups field exists.)
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, Opt, OptGroup};
use serde_json::json;
let menu = MultiSelectStaticOptions::new()
.push_option_group(
OptGroup::new()
.label("Group Zero")
.push_option(
Opt::plain("option-00").set_value("value-00")
)
.push_option(
Opt::plain("option-01").set_value("value-01")
)
);
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"option_groups": [
{
"label": {
"type": "plain_text",
"text": "Group Zero",
"emoji": true
},
"options": [
{
"text": {
"type": "plain_text",
"text": "option-00",
"emoji": true
},
"value": "value-00"
},
{
"text": {
"type": "plain_text",
"text": "option-01",
"emoji": true
},
"value": "value-01"
},
]
}
]
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn set_initial_options(self, initial_options: Vec<Opt>) -> Self
pub fn set_initial_options(self, initial_options: Vec<Opt>) -> Self
Sets initial_options field directly.
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, Opt};
use serde_json::json;
let menu = MultiSelectStaticOptions::new()
.set_initial_options(
vec![
Opt::plain("option-0").set_value("value-0"),
Opt::plain("option-1").set_value("value-1")
]
);
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"initial_options": [
{
"text": {
"type": "plain_text",
"text": "option-0",
"emoji": true
},
"value": "value-0"
},
{
"text": {
"type": "plain_text",
"text": "option-1",
"emoji": true
},
"value": "value-1"
}
]
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn push_initial_option(self, initial_option: Opt) -> Self
pub fn push_initial_option(self, initial_option: Opt) -> Self
Adds Opt object to initial_options field.
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, Opt};
use serde_json::json;
let menu = MultiSelectStaticOptions::new()
.push_initial_option(
Opt::plain("option-0").set_value("value-0"),
);
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"initial_options": [
{
"text": {
"type": "plain_text",
"text": "option-0",
"emoji": true
},
"value": "value-0"
}
]
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn set_confirm(self, confirm: ConfirmationDialog) -> Self
pub fn set_confirm(self, confirm: ConfirmationDialog) -> Self
Sets confirm field with ConfirmationDialog.
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, ConfirmationDialog};
use serde_json::json;
let menu = MultiSelectStaticOptions::new()
.set_confirm(
ConfirmationDialog::new()
.set_title("Are you sure?")
.set_text("Wouldn't you prefer a good game of _chess_?")
.set_confirm("Do it")
.set_deny("Stop, I've changed my mind!")
);
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"confirm": {
"title": {
"type": "plain_text",
"text": "Are you sure?",
"emoji": true
},
"text": {
"type": "plain_text",
"text": "Wouldn't you prefer a good game of _chess_?",
"emoji": true
},
"confirm": {
"type": "plain_text",
"text": "Do it",
"emoji": true
},
"deny": {
"type": "plain_text",
"text": "Stop, I've changed my mind!",
"emoji": true
}
}
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn set_max_selected_items<T: Into<i64>>(self, items: T) -> Self
pub fn set_max_selected_items<T: Into<i64>>(self, items: T) -> Self
Sets max_selected_items field.
use slack_messaging::blocks::elements::MultiSelectStaticOptions;
use serde_json::json;
let menu = MultiSelectStaticOptions::new()
.set_max_selected_items(30);
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"max_selected_items": 30
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn set_focus_on_load(self, focus_on_load: bool) -> Self
pub fn set_focus_on_load(self, focus_on_load: bool) -> Self
Sets focus_on_load field.
use slack_messaging::blocks::elements::MultiSelectStaticOptions;
use serde_json::json;
let menu = MultiSelectStaticOptions::new().set_focus_on_load(true);
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"focus_on_load": true
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn set_placeholder(self, placeholder: Text) -> Self
pub fn set_placeholder(self, placeholder: Text) -> Self
Sets placeholder field.
use slack_messaging::blocks::elements::{MultiSelectStaticOptions, Text};
use serde_json::json;
let menu = MultiSelectStaticOptions::new()
.set_placeholder(Text::plain("Select items"));
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"placeholder": {
"type": "plain_text",
"text": "Select items",
"emoji": true
}
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);sourcepub fn placeholder<T: Into<String>>(self, placeholder: T) -> Self
pub fn placeholder<T: Into<String>>(self, placeholder: T) -> Self
Sets placeholder field from string. This is a shorthand for set_placeholder method.
use slack_messaging::blocks::elements::MultiSelectStaticOptions;
use serde_json::json;
let menu = MultiSelectStaticOptions::new().placeholder("Select items");
let expected = json!({
"type": "multi_static_select",
"action_id": "",
"placeholder": {
"type": "plain_text",
"text": "Select items",
"emoji": true
}
});
let menu_json = serde_json::to_value(menu).unwrap();
assert_eq!(menu_json, expected);Trait Implementations§
source§impl Clone for MultiSelectStaticOptions
impl Clone for MultiSelectStaticOptions
source§fn clone(&self) -> MultiSelectStaticOptions
fn clone(&self) -> MultiSelectStaticOptions
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more