%PDF- %GIF98; %PNG;
Server : ApacheSystem : Linux host.digitalbabaji.in 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : addictionfreeind ( 1003) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system Directory : /home/addictionfreeind/www/admin1/vendor/yajra/laravel-datatables-html/src/Html/ |
Upload File : |
<?php
namespace Yajra\DataTables\Html;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Support\Fluent;
class Button extends Fluent implements Arrayable
{
use HasAuthorizations;
/**
* Make a new button instance.
*
* @param array|string $options
* @return static
*/
public static function make(array|string $options = []): static
{
if (is_string($options)) {
return new static(['extend' => $options]);
}
return new static($options);
}
/**
* Make a raw button that does not extend anything.
*
* @param array|string $options
* @return static
*/
public static function raw(array|string $options = []): static
{
if (is_string($options)) {
return new static(['text' => $options]);
}
return new static($options);
}
/**
* Set attr option value.
*
* @param array $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.attr
*/
public function attr(array $value): static
{
$this->attributes['attr'] = $value;
return $this;
}
/**
* Set available option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.available
*/
public function available(string $value): static
{
if ($this->isFunction($value)) {
$this->attributes['available'] = $value;
} else {
$this->attributes['available'] = "function(dt, config) { $value }";
}
return $this;
}
/**
* Check if a given value is a function.
*
* @param string $value
* @return bool
*/
protected function isFunction(string $value): bool
{
return str_starts_with($value, 'function');
}
/**
* Set enabled option value.
*
* @param bool $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.enabled
*/
public function enabled(bool $value = true): static
{
$this->attributes['enabled'] = $value;
return $this;
}
/**
* Set init option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.init
*/
public function init(string $value): static
{
if ($this->isFunction($value)) {
$this->attributes['init'] = $value;
} else {
$this->attributes['init'] = "function(dt, node, config) { $value }";
}
return $this;
}
/**
* Set key option value.
*
* @param array|string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.key
*/
public function key(array|string $value): static
{
$this->attributes['key'] = $value;
return $this;
}
/**
* Set extend option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.extend
*/
public function extend(string $value): static
{
$this->attributes['extend'] = $value;
return $this;
}
/**
* Set editor option value.
*
* @param string $value
* @return $this
* @see https://editor.datatables.net/reference/button
*/
public function editor(string $value): static
{
$this->attributes['editor'] = $value;
return $this;
}
/**
* Set buttons option value.
*
* @param array $buttons
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons
*/
public function buttons(array $buttons): static
{
foreach ($buttons as $key => $button) {
if ($button instanceof Arrayable) {
$buttons[$key] = $button->toArray();
}
}
$this->attributes['buttons'] = $buttons;
return $this;
}
/**
* @param array $buttons
* @return $this
* @see https://editor.datatables.net/examples/api/cancelButton
*/
public function formButtons(array $buttons): static
{
foreach ($buttons as $key => $button) {
if ($button instanceof Arrayable) {
$buttons[$key] = $button->toArray();
}
}
$this->attributes['formButtons'] = $buttons;
return $this;
}
/**
* @param string $message
* @return $this
* @see https://editor.datatables.net/examples/api/removeMessage
* @see https://editor.datatables.net/reference/button/create
* @see https://editor.datatables.net/reference/button/edit
* @see https://editor.datatables.net/reference/button/remove
*/
public function formMessage(string $message): static
{
$this->attributes['formMessage'] = $message;
return $this;
}
/**
* @param string $title
* @return $this
* @see https://editor.datatables.net/reference/button/create
* @see https://editor.datatables.net/reference/button/edit
* @see https://editor.datatables.net/reference/button/remove
*/
public function formTitle(string $title): static
{
$this->attributes['formTitle'] = $title;
return $this;
}
/**
* Set className option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.className
*/
public function className(string $value): static
{
$this->attributes['className'] = $value;
return $this;
}
/**
* Set destroy option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.destroy
*/
public function destroy(string $value): static
{
if ($this->isFunction($value)) {
$this->attributes['destroy'] = $value;
} else {
$this->attributes['destroy'] = "function(dt, node, config) { $value }";
}
return $this;
}
/**
* Set customize option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/button/excelHtml5
*/
public function customize(string $value): static
{
$this->attributes['customize'] = $value;
return $this;
}
/**
* Append a class name to column.
*
* @param string $class
* @return $this
*/
public function addClass(string $class): static
{
if (! isset($this->attributes['className'])) {
$this->attributes['className'] = $class;
} else {
$this->attributes['className'] .= " $class";
}
return $this;
}
/**
* Set text option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.text
*/
public function text(string $value): static
{
$this->attributes['text'] = $value;
return $this;
}
/**
* Set titleAttr option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.titleAttr
*/
public function titleAttr(string $value): static
{
$this->attributes['titleAttr'] = $value;
return $this;
}
/**
* Set name option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.name
*/
public function name(string $value): static
{
$this->attributes['name'] = $value;
return $this;
}
/**
* Set namespace option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.namespace
*/
public function namespace(string $value): static
{
$this->attributes['namespace'] = $value;
return $this;
}
/**
* Set tag option value.
*
* @param string $value
* @return $this
* @see https://datatables.net/reference/option/buttons.buttons.tag
*/
public function tag(string $value): static
{
$this->attributes['tag'] = $value;
return $this;
}
/**
* Set columns option value.
*
* @param array|string $value
* @return $this
*/
public function columns(array|string $value): static
{
$this->attributes['columns'] = $value;
return $this;
}
/**
* Set exportOptions option value.
*
* @param array|string $value
* @return $this
*/
public function exportOptions(array|string $value): static
{
$this->attributes['exportOptions'] = $value;
return $this;
}
/**
* Set action to submit the form.
*
* @return $this
*/
public function actionSubmit(): static
{
return $this->action('function() { this.submit(); }');
}
/**
* Set action option value.
*
* @param string $value
* @return $this
*/
public function action(string $value): static
{
if (str_starts_with($value, 'function')) {
$this->attributes['action'] = $value;
} else {
$this->attributes['action'] = "function(e, dt, node, config) { $value }";
}
return $this;
}
/**
* Set editor class action handler.
*
* @param string $action
* @return $this
*/
public function actionHandler(string $action): static
{
return $this->action("function() { this.submit(null, null, function(data) { data.action = '{$action}'; return data; }) }");
}
/**
* Set action to close the form.
*
* @return $this
*/
public function actionClose(): static
{
return $this->action('function() { this.close(); }');
}
/**
* Set button alignment.
*
* @param string $align
* @return $this
*/
public function align(string $align = 'button-left'): static
{
$this->attributes['align'] = $align;
return $this;
}
}