Text Column

TextColumn is the default column type for string values. It uses the DataTables string type for sorting and searching, which means values are compared as plain text.

Basic Usage

use Pentiminax\UX\DataTables\Column\TextColumn;

TextColumn::new('name', 'Name');

HTML Content

When the cell value contains HTML markup, call html() to switch the DataTables type to html. This strips tags before sorting and searching, so users search against the visible text, not the markup.

TextColumn::new('description', 'Description')
    ->html();

UTF-8 Sorting

For non-ASCII text (accented characters, CJK), use utf8() to switch to a UTF-8 aware comparison algorithm:

TextColumn::new('name', 'Name')
    ->utf8();

Combining both uses the html-utf8 type:

TextColumn::new('content', 'Content')
    ->html()
    ->utf8();

API Reference

Method Description
`TextColumn::new(string $name, string $title = '')`Creates a new TextColumn (type: `string`)
`html(bool $html = true)`Switches to `html` type (or `html-utf8` when combined with `utf8()`)
`utf8(bool $utf8 = true)`Switches to `string-utf8` type (or `html-utf8` when combined with `html()`)

Complete Example

use Pentiminax\UX\DataTables\Attribute\AsDataTable;
use Pentiminax\UX\DataTables\Column\NumberColumn;
use Pentiminax\UX\DataTables\Column\TextColumn;
use Pentiminax\UX\DataTables\Model\AbstractDataTable;

#[AsDataTable(User::class)]
final class UsersDataTable extends AbstractDataTable
{
    public function configureColumns(): iterable
    {
        yield NumberColumn::new('id', 'ID')->setWidth('60px');
        yield TextColumn::new('name', 'Name')->utf8();
        yield TextColumn::new('bio', 'Bio')->html()->utf8();
    }

    protected function mapRow(mixed $item): array
    {
        return [
            'id'   => $item->getId(),
            'name' => $item->getName(),
            'bio'  => $item->getBio(),
        ];
    }
}