47 lines
1.1 KiB
PHP
Executable File
47 lines
1.1 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\View\Components;
|
|
|
|
use Closure;
|
|
use Illuminate\Contracts\View\View;
|
|
use Illuminate\View\Component;
|
|
|
|
class WrapTextComponent extends Component
|
|
{
|
|
/**
|
|
* Create a new component instance.
|
|
*/
|
|
public function __construct(
|
|
public string $text,
|
|
public int $width = 50,
|
|
public int $max = 50,
|
|
public string $dotTriple = '...'
|
|
) {
|
|
}
|
|
|
|
/**
|
|
* Get the view / contents that represent the component.
|
|
*/
|
|
public function render(): View|Closure|string
|
|
{
|
|
$text = $this->text;
|
|
$width = $this->width;
|
|
$max = $this->max;
|
|
$dotTriple = $this->dotTriple;
|
|
|
|
$wrappedString = wordwrap($text, $width, "\n");
|
|
$wrappedString = str_replace("\n", " ", $wrappedString);
|
|
$truncatedString = substr($wrappedString, 0, $max);
|
|
|
|
$tripleKill = strlen($text) > $max ? $dotTriple : '';
|
|
$isToolTip = '';
|
|
|
|
if ($tripleKill) {
|
|
// handle quadra kill
|
|
$isToolTip = "data-tooltip=\"$text\"";
|
|
}
|
|
|
|
return "<span $isToolTip>" . $truncatedString . $tripleKill . '</span>';
|
|
}
|
|
}
|