Skip to content

Commit e7bab98

Browse files
Add DaisyUI Theme class (#1894)
* Add DaisyUI Theme class * Fix search input * Fix toggleDetail style
1 parent 452df9a commit e7bab98

32 files changed

+1472
-6
lines changed

dist/bootstrap5.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/config/livewire-powergrid.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
*/
1616

1717
'theme' => \PowerComponents\LivewirePowerGrid\Themes\Tailwind::class,
18-
//'theme' => \PowerComponents\LivewirePowerGrid\Themes\Bootstrap5::class,
18+
// 'theme' => \PowerComponents\LivewirePowerGrid\Themes\DaisyUI::class,
19+
// 'theme' => \PowerComponents\LivewirePowerGrid\Themes\Bootstrap5::class,
1920

2021
'cache_ttl' => null,
2122

resources/css/base.css

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ select {
3636

3737
table thead {
3838
padding-left: 15px;
39-
text-transform: uppercase;
4039
font-size: .75rem;
41-
color: #6b6a6a;
4240
padding-top: 8px;
4341
padding-bottom: 8px
4442
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<div class="md:flex md:flex-row w-full">
2+
<div x-data="pgRenderActions">
3+
<span class="pg-actions" x-html="toHtml"></span>
4+
</div>
5+
<div class="flex flex-row justify-center items-center text-sm">
6+
@if (count($exportOptions) > 0)
7+
<div class="mr-2 mt-2 sm:mt-0">
8+
@include(data_get($theme, 'root') . '.export')
9+
</div>
10+
@endif
11+
@includeIf(data_get($theme, 'root') . '.toggle-columns')
12+
</div>
13+
14+
<!-- LOADING -->
15+
@include(data_get($theme, 'root') . '.loading')
16+
</div>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<x-livewire-powergrid::editable
2+
:$tableName
3+
:$theme
4+
:primaryKey="$this->realPrimaryKey"
5+
:$row
6+
:$field
7+
:$currentTable
8+
:$showErrorBag
9+
:$editable
10+
>
11+
<x-slot name="input">
12+
<div
13+
x-ref="editable"
14+
x-text="content"
15+
value="{{ html_entity_decode(data_get($row, $field), ENT_QUOTES, 'utf-8') }}"
16+
placeholder="{{ html_entity_decode(data_get($row, $field), ENT_QUOTES, 'utf-8') }}"
17+
contenteditable
18+
class="pg-single-line {{ theme_style($theme, 'editable.input') }}"
19+
@if (data_get($editable, 'saveOnMouseOut')) x-on:mousedown.outside="save()" @endif
20+
x-on:keydown.enter="save()"
21+
:id="`editable-` + dataField + `-` + id"
22+
x-on:keydown.esc="cancel"
23+
>
24+
</div>
25+
</x-slot>
26+
</x-livewire-powergrid::editable>
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
@props([
2+
'columns' => null,
3+
'theme' => null,
4+
'tableName' => null,
5+
'filtersFromColumns' => null,
6+
'showFilters' => false,
7+
])
8+
<div
9+
x-data="{ open: @entangle('showFilters').live }"
10+
class="mt-2 md:mt-0"
11+
>
12+
<div
13+
x-show="open"
14+
x-cloak
15+
x-transition:enter="transform duration-100"
16+
x-transition:enter-start="opacity-0 scale-90"
17+
x-transition:enter-end="opacity-100 scale-100"
18+
x-transition:leave="transform duration-100"
19+
x-transition:leave-start="opacity-100 scale-100"
20+
x-transition:leave-end="opacity-0 scale-90"
21+
class="pg-filter-container"
22+
>
23+
@php
24+
$customConfig = [];
25+
@endphp
26+
<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 2xl:grid-cols-6 gap-3">
27+
@foreach ($filtersFromColumns as $column)
28+
@php
29+
$filter = data_get($column, 'filters');
30+
$title = data_get($column, 'title');
31+
$baseClass = data_get($filter, 'baseClass');
32+
$className = str(data_get($filter, 'className'));
33+
@endphp
34+
35+
<div class="{{ $baseClass }}">
36+
@if ($className->contains('FilterMultiSelect'))
37+
<x-livewire-powergrid::inputs.select
38+
:inline="false"
39+
:theme="$theme"
40+
:table-name="$tableName"
41+
:filter="$filter"
42+
:title="$title"
43+
:initial-values="data_get(data_get($filter, 'multi_select'), data_get($filter, 'field'), [])"
44+
/>
45+
@elseif ($className->contains(['FilterDateTimePicker', 'FilterDatePicker']))
46+
@includeIf(theme_style($theme, 'filterDatePicker.view'), [
47+
'filter' => $filter,
48+
'tableName' => $tableName,
49+
'classAttr' => 'w-full',
50+
'type' => $className->contains('FilterDateTimePicker') ? 'datetime' : 'date',
51+
])
52+
@elseif ($className->contains(['FilterSelect', 'FilterEnumSelect']))
53+
@includeIf(theme_style($theme, 'filterSelect.view'), [
54+
'filter' => $filter,
55+
])
56+
@elseif ($className->contains('FilterNumber'))
57+
@includeIf(theme_style($theme, 'filterNumber.view'), [
58+
'filter' => $filter,
59+
])
60+
@elseif ($className->contains('FilterInputText'))
61+
@includeIf(theme_style($theme, 'filterInputText.view'), [
62+
'filter' => $filter,
63+
])
64+
@elseif ($className->contains('FilterBoolean'))
65+
@includeIf(theme_style($theme, 'filterBoolean.view'), [
66+
'filter' => $filter,
67+
])
68+
@elseif ($className->contains('FilterDynamic'))
69+
<x-dynamic-component
70+
:component="data_get($filter, 'component', '')"
71+
:attributes="new \Illuminate\View\ComponentAttributeBag(data_get($filter, 'attributes', []))"
72+
/>
73+
@endif
74+
</div>
75+
@endforeach
76+
</div>
77+
</div>
78+
</div>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
@props([
2+
'column' => null,
3+
'class' => '',
4+
'inline' => null,
5+
'filter' => null,
6+
])
7+
@php
8+
$fieldClassName = data_get($filter, 'className');
9+
$field = data_get($filter, 'field');
10+
$title = data_get($column, 'title');
11+
12+
$trueLabel = data_get($filter, 'trueLabel');
13+
$falseLabel = data_get($filter, 'falseLabel');
14+
15+
$defaultAttributes = $fieldClassName::getWireAttributes($field, $title);
16+
17+
$selectClasses = Arr::toCssClasses([
18+
theme_style($theme, 'filterBoolean.select'),
19+
$class,
20+
]);
21+
22+
$params = array_merge([...data_get($filter, 'attributes'), ...$defaultAttributes], $filter);
23+
@endphp
24+
25+
@if ($params['component'])
26+
@unset($params['attributes'])
27+
28+
<x-dynamic-component
29+
:component="$params['component']"
30+
:attributes="new \Illuminate\View\ComponentAttributeBag($params)"
31+
/>
32+
@else
33+
<div
34+
@class([theme_style($theme, 'filterBoolean.base'), 'space-y-1' => !$inline])
35+
>
36+
@if (!$inline)
37+
<label class="label">
38+
{{ $title }}
39+
</label>
40+
@endif
41+
<div class="relative">
42+
<select
43+
class="{{ $selectClasses }}"
44+
style="{{ data_get($column, 'headerStyle') }}"
45+
{{ $defaultAttributes['selectAttributes'] }}
46+
>
47+
<option value="all">{{ trans('livewire-powergrid::datatable.boolean_filter.all') }}</option>
48+
<option value="true">{{ $trueLabel }}</option>
49+
<option value="false">{{ $falseLabel }}</option>
50+
</select>
51+
</div>
52+
</div>
53+
@endif
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
@props([
2+
'inline' => null,
3+
'date' => null,
4+
'column' => null,
5+
'tableName' => null,
6+
'type' => 'datetime',
7+
'filter' => null,
8+
])
9+
@php
10+
$params = data_get($filter, 'params');
11+
$field = data_get($filter, 'field');
12+
$title = data_get($column, 'title');
13+
14+
$customConfig = [];
15+
if ($params) {
16+
foreach ($params as $key => $value) {
17+
$customConfig[$key] = $value;
18+
}
19+
}
20+
21+
$params = [
22+
'type' => $type,
23+
'dataField' => $field,
24+
'tableName' => $tableName,
25+
'filterKey' => 'enabledFilters.datetime.' . $field,
26+
'label' => $title,
27+
'locale' => config('livewire-powergrid.plugins.flatpickr.locales.' . app()->getLocale()),
28+
'onlyFuture' => data_get($customConfig, 'only_future', false),
29+
'noWeekEnds' => data_get($customConfig, 'no_weekends', false),
30+
'customConfig' => $customConfig,
31+
];
32+
@endphp
33+
<div
34+
wire:ignore
35+
x-data="pgFlatpickr(@js($params))"
36+
>
37+
<div
38+
@class([theme_style($theme, 'filterDatePicker.base'), 'space-y-1' => !$inline])
39+
>
40+
@if (!$inline)
41+
<label class="label">
42+
{{ $title }}
43+
</label>
44+
@endif
45+
<form autocomplete="off">
46+
<input
47+
id="input_{{ $field }}"
48+
x-ref="rangeInput"
49+
wire:model="filters.{{ $type }}.{{ $field }}.formatted"
50+
autocomplete="off"
51+
data-field="{{ $field }}"
52+
class="{{ theme_style($theme, 'filterDatePicker.input') }} {{ data_get($column, 'headerClass') }}"
53+
type="text"
54+
readonly
55+
placeholder="{{ trans('livewire-powergrid::datatable.placeholders.select') }}"
56+
>
57+
</form>
58+
</div>
59+
</div>
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
@props([
2+
'enabledFilters' => [],
3+
'column' => null,
4+
'inline' => null,
5+
'filter' => null,
6+
])
7+
<div>
8+
@php
9+
$fieldClassName = data_get($filter, 'className');
10+
11+
$field = strval(data_get($filter, 'field'));
12+
$title = strval(data_get($column, 'title'));
13+
$operators = (array) data_get($filter, 'operators', []);
14+
$placeholder = strval(data_get($filter, 'placeholder'));
15+
$componentAttributes = (array) data_get($filter, 'attributes', []);
16+
17+
$inputTextOptions = $fieldClassName::getInputTextOperators();
18+
$inputTextOptions = count($operators) > 0 ? $operators : $inputTextOptions;
19+
$showSelectOptions = !(count($inputTextOptions) === 1 && in_array('contains', $inputTextOptions));
20+
21+
$defaultPlaceholder = data_get($column, 'placeholder') ?: data_get($column, 'title');
22+
$overridePlaceholder = $placeholder ?: $defaultPlaceholder;
23+
24+
unset($filter['placeholder']);
25+
26+
$defaultAttributes = $fieldClassName::getWireAttributes($field, $title);
27+
28+
$selectClasses = theme_style($theme, 'filterInputText.select');
29+
$inputClasses = theme_style($theme, 'filterInputText.input');
30+
31+
$params = array_merge(
32+
[
33+
'showSelectOptions' => $showSelectOptions,
34+
'placeholder' => ($placeholder = $componentAttributes['placeholder'] ?? $overridePlaceholder),
35+
...data_get($filter, 'attributes'),
36+
...$defaultAttributes,
37+
],
38+
$filter,
39+
);
40+
@endphp
41+
42+
@if ($params['component'])
43+
@unset($params['operators'], $params['attributes'])
44+
45+
<x-dynamic-component
46+
:component="$params['component']"
47+
:attributes="new \Illuminate\View\ComponentAttributeBag($params)"
48+
/>
49+
@else
50+
<div
51+
@class([theme_style($theme, 'filterInputText.base'), 'space-y-1' => !$inline])
52+
>
53+
@if (!$inline)
54+
<label class="label">
55+
{{ $title }}
56+
</label>
57+
@endif
58+
<div @class([
59+
'w-full space-y-2 sm:flex sm:space-y-0' => !$inline && $showSelectOptions,
60+
'flex flex-col space-y-1.5' => $inline && $showSelectOptions,
61+
])>
62+
@if ($showSelectOptions)
63+
<div @class([
64+
'pl-0 w-full sm:pr-3 sm:w-1/2' => !$inline,
65+
])>
66+
<div class="relative">
67+
<select
68+
class="{{ $selectClasses }}"
69+
style="{{ data_get($column, 'headerStyle') }}"
70+
data-cy="input_text_options_{{ $tableName }}_{{ $field }}"
71+
{{ $defaultAttributes['selectAttributes'] }}
72+
>
73+
@foreach ($inputTextOptions as $key => $value)
74+
<option
75+
wire:key="input-text-options-{{ $tableName }}-{{ $key . '-' . $value }}"
76+
value="{{ $value }}"
77+
>{{ trans('livewire-powergrid::datatable.input_text_options.' . $value) }}</option>
78+
@endforeach
79+
</select>
80+
</div>
81+
</div>
82+
@endif
83+
<div @class([
84+
'pl-0 w-full sm:w-1/2' => !$inline && $showSelectOptions,
85+
'pt-1' => !$showSelectOptions,
86+
])>
87+
<input
88+
data-cy="input_text_{{ $tableName }}_{{ $field }}"
89+
wire:key="input-{{ $field }}"
90+
data-id="{{ $field }}"
91+
@if (isset($enabledFilters[$field]['disabled']) && boolval($enabledFilters[$field]['disabled']) === true) disabled
92+
@else
93+
{{ $defaultAttributes['inputAttributes'] }} @endif
94+
type="text"
95+
class="{{ $inputClasses }}"
96+
placeholder="{{ $placeholder }}"
97+
/>
98+
</div>
99+
</div>
100+
</div>
101+
@endif
102+
</div>

0 commit comments

Comments
 (0)