<?php
namespace Maknz\Slack\BlockElement;
use InvalidArgumentException;
class MultiUsersSelect extends MultiDynamicSelect
{
protected $type = 'multi_users_select';
protected $initial_users = [];
protected static $availableAttributes = [
'placeholder' => 'placeholder',
'action_id' => 'action_id',
'initial_users' => 'initial_users',
'confirm' => 'confirm',
'max_selected_items' => 'max_selected_items',
];
public function getInitialUsers()
{
return $this->initial_users;
}
public function setInitialUsers(array $initialUsers)
{
$this->clearInitialUsers();
foreach ($initialUsers as $initialUser) {
$this->addInitialUser($initialUser);
}
return $this;
}
public function clearInitialUsers()
{
$this->initial_users = [];
return $this;
}
public function addInitialUser($initialUser)
{
if (is_string($initialUser)) {
$this->initial_users[] = $initialUser;
return $this;
}
throw new InvalidArgumentException('The initial user ID must be a string');
}
public function toArray()
{
$data = [
'type' => $this->getType(),
'placeholder' => $this->getPlaceholder()->toArray(),
'action_id' => $this->getActionId(),
];
$initialUsers = $this->getInitialUsers();
if (count($initialUsers)) {
$data['initial_users'] = $initialUsers;
}
if ($this->getConfirm()) {
$data['confirm'] = $this->getConfirm()->toArray();
}
if ($this->getMaxSelectedItems()) {
$data['max_selected_items'] = $this->getMaxSelectedItems();
}
return $data;
}
}