そんな中で、モーダルの入力欄を任意入力にしたい場面があったので、備忘として記載しておきます。
slack.NewInputBlockで作成した入力欄のBlockのOptionalをtrueすることで任意入力にすることができます。デフォルトがfalseで必須入力な訳ですねー。
// キーワードを指定
keywordText := slack.NewTextBlockObject(slack.PlainTextType, "キーワード", false, false)
keywordPlaceholder := slack.NewTextBlockObject(slack.PlainTextType, "キーワードを入力してください", false, false)
keywordElement := slack.NewPlainTextInputBlockElement(keywordPlaceholder, "keyword")
keywordBlock := slack.NewInputBlock("keyword", keywordText, keywordElement)
keywordBlock.Optional = true // 入力任意
// 担当者を指定
userText := slack.NewTextBlockObject(slack.PlainTextType, "担当者", false, false)
userElement := slack.NewOptionsSelectBlockElement(slack.OptTypeUser, userText, "user")
userBlock := slack.NewInputBlock("user", userText, userElement)
userBlock.Optional = true // 入力任意
// ステータスを指定
statusText := slack.NewTextBlockObject(slack.PlainTextType, "ステータス", false, false)
statusElement := slack.NewOptionsSelectBlockElement(slack.OptTypeStatic, statusText, "status", GenerateStatusBlockObjects()...)
statusBlock := slack.NewInputBlock("status", statusText, statusElement)
statusBlock.Optional = true // 入力任意
このような感じでコードを書けば、任意入力のモーダルが生成できます。