Struct slack_blocks::compose::Opt [−][src]
Expand description
Option Object
An object that represents a single selectable item in a
Implementations
impl<'a> Opt<'a>
[src]
impl<'a> Opt<'a>
[src]pub fn builder() -> OptBuilderInit<'a>
[src]
pub fn builder() -> OptBuilderInit<'a>
[src]Build a new option composition object
Examples
use std::convert::TryFrom; use slack_blocks::{blocks::Actions, compose::Opt, elems::{select::Static, BlockElement}, text}; struct City { name: String, short_code: String, } impl City { pub fn new(name: impl ToString, short_code: impl ToString) -> Self { Self { name: name.to_string(), short_code: short_code.to_string() } } } let cities = vec![City::new("Seattle", "SEA"), City::new("Portland", "PDX"), City::new("Phoenix", "PHX")]; let options = cities.iter().map(|City { name, short_code }| { Opt::builder().text_plain(name).value(short_code).build() }); let select: BlockElement = Static::builder().placeholder("Choose your favorite city!") .action_id("fave_city") .options(options) .build() .into(); let block = Actions::try_from(select);
pub fn from_plain_text_and_value(
text: impl Into<Plain>,
value: impl Into<Cow<'a, str>>
) -> Opt<'a, Plain, NoUrl>
[src]
👎 Deprecated since 0.15.0: Use Opt::builder instead
pub fn from_plain_text_and_value(
text: impl Into<Plain>,
value: impl Into<Cow<'a, str>>
) -> Opt<'a, Plain, NoUrl>
[src]Use Opt::builder instead
Create an Option composition object from its label and a value to be sent back to your app when it is chosen.
This returns an Opt
that can be used by
overflow, select, and multi-select menus.
To construct an Opt
that can be used by
radio buttons or checkboxes, see from_mrkdwn_and_value
.
Arguments
-
text
- A text object 🔗 that defines the text shown in the option on the menu. Overflow, select, and multi-select menus can only useplain_text
objects, while radio buttons and checkboxes can usemrkdwn
text objects. Maximum length for thetext
in this field is 75 characters. -
value
- The string value that will be passed to your app when this option is chosen. Maximum length for this field is 75 characters.
Examples
use slack_blocks::text; use slack_blocks::blocks::Block; use slack_blocks::blocks::Section; use slack_blocks::blocks::Actions; use slack_blocks::compose::Opt; let cities = vec![ ("San Francisco", "san_francisco"), ("San Diego", "san_diego"), ("New York City", "nyc"), ("Phoenix", "phx"), ("Boston", "boston"), ("Seattle", "seattle"), ] .into_iter() .map(|(title, short_code)| Opt::from_plain_text_and_value(title, short_code)) .collect::<Vec<_>>(); let blocks: Vec<Block> = vec![ Section::from_text(text::Plain::from("Choose your favorite city...")).into(), Actions::from_action_elements(vec![]).into() // TODO: add overflow to this example once it exists ]; // < send block to slack's API >
pub fn from_mrkdwn_and_value(
text: impl Into<Mrkdwn>,
value: impl Into<Cow<'a, str>>
) -> Opt<'a, Mrkdwn, NoUrl>
[src]
👎 Deprecated since 0.15.0: Use Opt::builder instead
pub fn from_mrkdwn_and_value(
text: impl Into<Mrkdwn>,
value: impl Into<Cow<'a, str>>
) -> Opt<'a, Mrkdwn, NoUrl>
[src]Use Opt::builder instead
Create an Option composition object from its label and a value to be sent back to your app when it is chosen.
This returns an Opt
that can be used by
radio buttons or checkboxes.
To construct an Opt
that can be used by
overflow, select, and multi-select menus,
see from_plain_text_and_value
.
Arguments
-
text
- A text object 🔗 that defines the text shown in the option on the menu. Overflow, select, and multi-select menus can only useplain_text
objects, while radio buttons and checkboxes can usemrkdwn
text objects. Maximum length for thetext
in this field is 75 characters. -
value
- The string value that will be passed to your app when this option is chosen. Maximum length for this field is 75 characters.
Examples
use slack_blocks::text; use slack_blocks::blocks::Block; use slack_blocks::blocks::Section; use slack_blocks::blocks::Actions; use slack_blocks::compose::Opt; let options = vec![ "1", "2", "3", "4", "5", ] .into_iter() .map(|num| Opt::from_mrkdwn_and_value(num, num)) .collect::<Vec<_>>(); let blocks: Vec<Block> = vec![ Section::from_text(text::Plain::from("On a scale from 1 to 5...")).into(), Actions::from_action_elements(vec![]).into() // TODO: add radio buttons to this example once it exists ]; // < send block to slack's API >
impl<'a, T, U> Opt<'a, T, U>
[src]
impl<'a, T, U> Opt<'a, T, U>
[src]pub fn with_description(self, desc: impl Into<Plain>) -> Self
[src]
👎 Deprecated since 0.15.0: Use Opt::builder instead
pub fn with_description(self, desc: impl Into<Plain>) -> Self
[src]Use Opt::builder instead
Chainable setter method, that sets a description for this Opt
.
Arguments
desc
- Aplain_text
only text object 🔗 that defines a line of descriptive text shown below thetext
field beside the radio button. Maximum length for thetext
object within this field is 75 characters.
Example
use slack_blocks::text; use slack_blocks::blocks::Block; use slack_blocks::blocks::Section; use slack_blocks::blocks::Actions; use slack_blocks::compose::Opt; let options = vec![ ("1", "Hated it."), ("2", "Didn't like it."), ("3", "It was OK."), ("4", "Liked it!"), ("5", "New favorite!!"), ] .into_iter() .map(|(num, desc)| { Opt::from_mrkdwn_and_value(num, num) .with_description(desc) }) .collect::<Vec<_>>(); let blocks: Vec<Block> = vec![ Section::from_text(text::Plain::from("On a scale from 1 to 5...")).into(), Actions::from_action_elements(vec![]).into() // TODO: add radio buttons to this example once it exists ]; // < send block to slack's API >
pub fn validate(&self) -> Result<(), ValidationErrors>
[src]
pub fn validate(&self) -> Result<(), ValidationErrors>
[src]Validate that this Option composition object agrees with Slack’s model requirements
Errors
- If
from_plain_text_and_value
orfrom_mrkdwn_and_value
was called withtext
longer than 75 chars - If
from_plain_text_and_value
orfrom_mrkdwn_and_value
was called withvalue
longer than 75 chars - If
with_url
was called with url longer than 3000 chars - If
with_description
was called with text longer than 75 chars
Example
use std::iter::repeat; use slack_blocks::compose::Opt; let long_string: String = repeat(' ').take(76).collect(); let opt = Opt::from_plain_text_and_value("My Option", long_string); assert_eq!(true, matches!(opt.validate(), Err(_)));
impl<'a, U> Opt<'a, Plain, U>
[src]
impl<'a, U> Opt<'a, Plain, U>
[src]pub fn with_url(self, url: impl Into<Cow<'a, str>>) -> Opt<'a, Plain, AllowUrl>
[src]
👎 Deprecated since 0.15.0: Use Opt::builder instead
pub fn with_url(self, url: impl Into<Cow<'a, str>>) -> Opt<'a, Plain, AllowUrl>
[src]Use Opt::builder instead
Chainable setter method, that sets a url for this Opt
.
The url
attribute is only available in overflow menus 🔗.
If you’re using url
, you’ll still receive an interaction payload 🔗
and will need to send an acknowledgement response 🔗.
Arguments
url
- A URL to load in the user’s browser when the option is clicked. Maximum length for this field is 3000 characters.
Example
use slack_blocks::text; use slack_blocks::blocks::Block; use slack_blocks::blocks::Section; use slack_blocks::blocks::Actions; use slack_blocks::compose::Opt; let cities = vec![ ("San Francisco", "san_francisco", "https://www.sftravel.com/"), ("San Diego", "san_diego", "https://www.sandiego.org/explore.aspx"), ("New York City", "nyc", "https://www.nycgo.com/"), ("Phoenix", "phx", "https://www.visitphoenix.com/"), ("Boston", "boston", "https://www.boston.gov/visiting-boston"), ("Seattle", "seattle", "https://visitseattle.org/"), ] .into_iter() .map(|(title, short_code, travel_link)| { Opt::from_plain_text_and_value(title, short_code) .with_url(travel_link) }) .collect::<Vec<_>>(); let blocks: Vec<Block> = vec![ Section::from_text(text::Plain::from("Choose your favorite city...")).into(), Actions::from_action_elements(vec![]).into() // TODO: add overflow to this example once it exists ]; // < send block to slack's API >
Trait Implementations
impl<'de, 'a, T, U> Deserialize<'de> for Opt<'a, T, U>
[src]
impl<'de, 'a, T, U> Deserialize<'de> for Opt<'a, T, U>
[src]fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]Deserialize this value from the given Serde deserializer. Read more
impl<'a, T, U> From<Opt<'a, T, U>> for OptOrOptGroup<'a, T, U>
[src]
impl<'a, T, U> From<Opt<'a, T, U>> for OptOrOptGroup<'a, T, U>
[src]impl<'a, T, U> Validate for Opt<'a, T, U>
[src]
impl<'a, T, U> Validate for Opt<'a, T, U>
[src]fn validate(&self) -> Result<(), ValidationErrors>
[src]
impl<'a, T, U> StructuralPartialEq for Opt<'a, T, U>
[src]
Auto Trait Implementations
impl<'a, T, U> RefUnwindSafe for Opt<'a, T, U> where
T: RefUnwindSafe,
U: RefUnwindSafe,
T: RefUnwindSafe,
U: RefUnwindSafe,
impl<'a, T, U> Send for Opt<'a, T, U> where
T: Send,
U: Send,
T: Send,
U: Send,
impl<'a, T, U> Sync for Opt<'a, T, U> where
T: Sync,
U: Sync,
T: Sync,
U: Sync,
impl<'a, T, U> Unpin for Opt<'a, T, U> where
T: Unpin,
U: Unpin,
T: Unpin,
U: Unpin,
impl<'a, T, U> UnwindSafe for Opt<'a, T, U> where
T: UnwindSafe,
U: UnwindSafe,
T: UnwindSafe,
U: UnwindSafe,
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,