added Message/AttachmentAction
This commit is contained in:
parent
3cadf2b808
commit
dbd355555b
@ -69,9 +69,12 @@ final class PlaintTextInput extends Element
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function placeholder(string $text): self
|
public function placeholder(Text $text): self
|
||||||
{
|
{
|
||||||
$this->placeholder = $this->validate('placeholder',$text);
|
if (strlen($text->text) > self::LIMITS['placeholder'])
|
||||||
|
throw new Exception(sprintf('Text must be %d chars or less',self::LIMITS['placeholder']));
|
||||||
|
|
||||||
|
$this->placeholder = $text;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
@ -98,6 +98,13 @@ final class Message extends BlockKit
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function clearAttachments(): self
|
||||||
|
{
|
||||||
|
$this->attachments = '';
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function forgetTS(): self
|
public function forgetTS(): self
|
||||||
{
|
{
|
||||||
$this->_data->forget('ts');
|
$this->_data->forget('ts');
|
||||||
|
@ -33,22 +33,12 @@ final class Attachment extends BlockKit
|
|||||||
* @note These are now legacy - use blocks instead
|
* @note These are now legacy - use blocks instead
|
||||||
* @note more information on this available https://api.slack.com/legacy/interactive-message-field-guide
|
* @note more information on this available https://api.slack.com/legacy/interactive-message-field-guide
|
||||||
*/
|
*/
|
||||||
public function addAction(string $name,string $text,string $type,string $value,string $style=NULL,array $confirm=NULL): self
|
public function addAction(AttachmentAction $action): self
|
||||||
{
|
{
|
||||||
if (! Arr::get($this->_data,'actions')) {
|
if (! Arr::get($this->_data,'actions'))
|
||||||
$this->actions = collect();
|
$this->actions = collect();
|
||||||
$this->attachment_type = 'default';
|
|
||||||
}
|
|
||||||
|
|
||||||
$action = ['name'=>$name,'text'=>$text,'type'=>$type,'value'=>$value];
|
$this->actions->push($action);
|
||||||
if ($style)
|
|
||||||
$action['style'] = $style;
|
|
||||||
|
|
||||||
// Confirm dialog is an array of 'title','text','ok_text','dismiss_text'
|
|
||||||
if ($confirm)
|
|
||||||
$action['confirm'] = $confirm;
|
|
||||||
|
|
||||||
$this->actions->push();
|
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
125
src/Message/AttachmentAction.php
Normal file
125
src/Message/AttachmentAction.php
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Slack\Message;
|
||||||
|
|
||||||
|
use Slack\BlockKit;
|
||||||
|
use Slack\Blockkit\Blocks\Elements\Text;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class MessageAttachmentAction - Slack Message Attachments Actions
|
||||||
|
* Represents an Single Action for a Slack Message Attachment
|
||||||
|
*
|
||||||
|
* @package App\Slack\Message
|
||||||
|
* @note These are now legacy - use blocks instead
|
||||||
|
* @note more information on this available https://api.slack.com/legacy/interactive-message-field-guide
|
||||||
|
*/
|
||||||
|
final class AttachmentAction extends BlockKit
|
||||||
|
{
|
||||||
|
protected const LIMITS = [
|
||||||
|
'text' => 30,
|
||||||
|
'value' => 2000,
|
||||||
|
];
|
||||||
|
|
||||||
|
private const DATA_SOURCES = ['static','users','channels','conversastions','external'];
|
||||||
|
private const STYLES = ['default','danger','primary'];
|
||||||
|
private const TYPES = ['button','select'];
|
||||||
|
|
||||||
|
// @todo options
|
||||||
|
// @todo option_groups
|
||||||
|
// @todo selected_options
|
||||||
|
|
||||||
|
public function __construct(string $text,string $name,string $type)
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
|
||||||
|
if (! in_array($type,self::TYPES))
|
||||||
|
throw new Exception(sprintf('Type [%s] not valid',$type));
|
||||||
|
|
||||||
|
$this->type = $type;
|
||||||
|
switch ($type) {
|
||||||
|
case 'button':
|
||||||
|
$this->action_id = $name;
|
||||||
|
$this->text = Text::item($this->validate('text',$text),'plain_text');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'select':
|
||||||
|
$this->name = $name;
|
||||||
|
$this->text = $this->validate('text',$text);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function item(string $text,string $name,string $type): self
|
||||||
|
{
|
||||||
|
return new self($text,$name,$type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* OPTIONAL ITEMS */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a confirmation diaglog when this action is selected
|
||||||
|
*
|
||||||
|
* @param string $title
|
||||||
|
* @param string $text
|
||||||
|
* @param string $ok_text
|
||||||
|
* @param string $dismiss_text
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function confirm(string $title,string $text,string $ok_text,string $dismiss_text): self
|
||||||
|
{
|
||||||
|
$this->confirm = [
|
||||||
|
'title' => $title,
|
||||||
|
'text' => $text,
|
||||||
|
'ok_text' => $ok_text,
|
||||||
|
'dismiss_text' => $dismiss_text
|
||||||
|
];
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function data_source(string $string): self
|
||||||
|
{
|
||||||
|
if (! in_array($string,self::DATA_SOURCES))
|
||||||
|
throw new Exception(sprintf('Type [%s] not valid',$string));
|
||||||
|
|
||||||
|
$this->data_source = $string;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function min_query_length(int $int): self
|
||||||
|
{
|
||||||
|
$this->min_query_length = $int;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the text displayed in the action
|
||||||
|
*
|
||||||
|
* @param string $type
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function style(string $string): self
|
||||||
|
{
|
||||||
|
if (! in_array($string,self::STYLES))
|
||||||
|
throw new Exception(sprintf('Type [%s] not valid',$string));
|
||||||
|
|
||||||
|
$this->style = $string;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the value for the action
|
||||||
|
*
|
||||||
|
* @param string $string
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function value(string $string): self
|
||||||
|
{
|
||||||
|
$this->value = $this->validate('value',$string);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user