design wip
This commit is contained in:
1 parent
70a443db6b
commit
eb11298d24
22 files changed
+418
-81
No files matched your search
@@ -147,7 +147,6 @@ class EventsTable
|
||||
->visible(fn () => in_array('odds_totals_q1', self::$bettype_settings))
|
||||
->verticalAlignment(VerticalAlignment::Start)
|
||||
->alignCenter()
|
||||
->width(250)
|
||||
->label('Totals Q1'),
|
||||
|
||||
TooltipOdds::make('points_q1')->bettype('odds_points_q1')->label('')->visible(fn () => in_array('odds_points_q1', self::$bettype_settings)),
|
||||
|
||||
@@ -195,9 +195,9 @@ class TooltipOdds extends Column
|
||||
public function getFlags($flags)
|
||||
{
|
||||
if ($flags) {
|
||||
return '<div class="pb-0.5 text-green-600">✓</div>';
|
||||
return '<div class="pb-0.5 text-md font-bold text-green-600">✓</div>';
|
||||
} else {
|
||||
return '<div class="pb-0.5 text-info-600">⚠</div>';
|
||||
return '<div class="pb-0.5 text-md font-bold text-info-600">⚠</div>';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,9 +208,9 @@ class TooltipOdds extends Column
|
||||
|
||||
public function legend()
|
||||
{
|
||||
$part = '<div class="col-span-full font-normal flex justify-end gap-2" style="font-size:10px">';
|
||||
$part .= '<div class="w-12 bg-green-600/25 rounded py-0.5 px-2">Highest</div>';
|
||||
$part .= '<div class="w-12 bg-blue-600/25 rounded py-0.5 px-2">Lowest</div>';
|
||||
$part = '<div class="col-span-full font-normal flex justify-end gap-2 text-xs">';
|
||||
$part .= '<div class="bg-green-600/25 rounded py-0.5 px-2 w-16 text-center">Highest</div>';
|
||||
$part .= '<div class="bg-blue-600/25 rounded py-0.5 px-2 w-16 text-center">Lowest</div>';
|
||||
$part .= '</div>';
|
||||
|
||||
return $part;
|
||||
@@ -270,15 +270,15 @@ class TooltipOdds extends Column
|
||||
|
||||
if ($this->size > $this->two_cols_break) {
|
||||
if ($columns == 6) {
|
||||
$part = '<div class="grid grid-cols-15 gap-2 m-5 mt-1 z-100 text-xs text-center">';
|
||||
$part = '<div class="grid grid-cols-15 gap-2 m-5 mt-1 z-100 text-xs text-center striped">';
|
||||
} else {
|
||||
$part = '<div class="grid grid-cols-13 gap-2 m-5 mt-1 z-100 text-xs text-center">';
|
||||
$part = '<div class="grid grid-cols-13 gap-2 m-5 mt-1 z-100 text-xs text-center striped">';
|
||||
}
|
||||
} else {
|
||||
if ($columns == 6) {
|
||||
$part = '<div class="grid grid-cols-7 gap-2 m-5 mt-1 z-100 text-xs text-center">';
|
||||
$part = '<div class="grid grid-cols-7 gap-2 m-5 mt-1 z-100 text-xs text-center striped">';
|
||||
} else {
|
||||
$part = '<div class="grid grid-cols-6 gap-2 m-5 mt-1 z-100 text-xs text-center">';
|
||||
$part = '<div class="grid grid-cols-6 gap-2 m-5 mt-1 z-100 text-xs text-center striped">';
|
||||
}
|
||||
}
|
||||
$part .= '<div class="col-span-full text-center text-md font-bold mb-2">'.$title.'</div>';
|
||||
|
||||
@@ -29,7 +29,7 @@ class AlarmBookmaker extends Component implements HasActions, HasSchemas, HasTab
|
||||
use InteractsWithTable;
|
||||
|
||||
protected $listeners = [
|
||||
'reload_alarm_bookmaker' => '$refresh',
|
||||
'refreshlarmBookmaker' => '$refresh',
|
||||
];
|
||||
|
||||
public static $default_filter;
|
||||
|
||||
@@ -34,7 +34,7 @@ class ComparingBookmakerMenu extends Component implements HasActions, HasSchemas
|
||||
public $user;
|
||||
|
||||
protected $listeners = [
|
||||
'refresh_comparing_bookmaker' => '$refresh',
|
||||
'refreshComparingBookmakerMenu' => '$refresh',
|
||||
];
|
||||
|
||||
public function table(Table $table): Table
|
||||
|
||||
@@ -45,7 +45,7 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable
|
||||
public $user;
|
||||
|
||||
protected $listeners = [
|
||||
'reload_data_left' => '$refresh',
|
||||
'refreshMapperLeft' => '$refresh',
|
||||
];
|
||||
|
||||
public function removeTableFilter(string $filterName, ?string $field = null, bool $shouldTriggerUpdatedFiltersHook = true): void
|
||||
@@ -62,7 +62,7 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable
|
||||
$this->search_left = '';
|
||||
}
|
||||
|
||||
$this->dispatch('reload_data_left');
|
||||
$this->dispatch('refreshMapperLeft');
|
||||
}
|
||||
|
||||
public function table(Table $table): Table
|
||||
@@ -152,7 +152,7 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable
|
||||
->persistFiltersInSession()
|
||||
->deferFilters(false)
|
||||
->toolbarActions([
|
||||
Action::make('reload_data_left')
|
||||
Action::make('refreshMapperLeft')
|
||||
->hiddenLabel()
|
||||
->icon('phosphor-x')
|
||||
->color('danger')
|
||||
@@ -162,7 +162,7 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable
|
||||
$this->tableSearch = ''; // Clears the main search bar
|
||||
$livewire->fill(['tableSearch' => '']);
|
||||
$livewire->resetTableFiltersForm(); // Clears all filters
|
||||
$this->dispatch('reload_data_left');
|
||||
$this->dispatch('refreshMapperLeft');
|
||||
}),
|
||||
]);
|
||||
}
|
||||
@@ -177,7 +177,7 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable
|
||||
{
|
||||
$this->search_left = $str;
|
||||
|
||||
$this->dispatch('reload_data_left');
|
||||
$this->dispatch('refreshMapperLeft');
|
||||
}
|
||||
|
||||
public function leftAction(): Action
|
||||
@@ -196,8 +196,8 @@ class MapperLeft extends Component implements HasActions, HasSchemas, HasTable
|
||||
StoreMapped::store($arguments, $this->elements_swopped);
|
||||
$this->search_right = '';
|
||||
$this->search_left = '';
|
||||
$this->dispatch('reload_data_left');
|
||||
$this->dispatch('reload_data_right');
|
||||
$this->dispatch('refreshMapperLeft');
|
||||
$this->dispatch('refreshMapperRight');
|
||||
|
||||
})
|
||||
->closeModalByEscaping(false)
|
||||
|
||||
@@ -42,7 +42,7 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
|
||||
public $search_right = false;
|
||||
|
||||
protected $listeners = [
|
||||
'reload_data_right' => '$refresh',
|
||||
'refreshMapperRight' => '$refresh',
|
||||
];
|
||||
|
||||
public $user;
|
||||
@@ -61,7 +61,7 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
|
||||
$this->search_right = '';
|
||||
}
|
||||
|
||||
$this->dispatch('reload_data_right');
|
||||
$this->dispatch('refreshMapperRight');
|
||||
}
|
||||
|
||||
public function table(Table $table): Table
|
||||
@@ -165,7 +165,7 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
|
||||
->filtersFormColumns(3)
|
||||
->deferFilters(false)
|
||||
->toolbarActions([
|
||||
Action::make('reload_data_right')
|
||||
Action::make('refreshMapperRight')
|
||||
->hiddenLabel()
|
||||
->icon('phosphor-x')
|
||||
->color('danger')
|
||||
@@ -175,8 +175,8 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
|
||||
$this->tableSearch = ''; // Clears the main search bar
|
||||
$livewire->fill(['tableSearch' => '']);
|
||||
$livewire->resetTableFiltersForm(); // Clears all filters
|
||||
$this->dispatch('reload_data_right');
|
||||
$this->dispatch('reload_data_left');
|
||||
$this->dispatch('refreshMapperRight');
|
||||
$this->dispatch('refreshMapperLeft');
|
||||
}),
|
||||
]);
|
||||
}
|
||||
@@ -191,7 +191,7 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
|
||||
{
|
||||
$this->search_right = $str;
|
||||
|
||||
$this->dispatch('reload_data_right');
|
||||
$this->dispatch('refreshMapperRight');
|
||||
}
|
||||
|
||||
public function rightAction(): Action
|
||||
@@ -209,8 +209,8 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
|
||||
StoreMapped::store($arguments, $this->elements_swopped);
|
||||
$this->search_right = '';
|
||||
$this->search_left = '';
|
||||
$this->dispatch('reload_data_left');
|
||||
$this->dispatch('reload_data_right');
|
||||
$this->dispatch('refreshMapperLeft');
|
||||
$this->dispatch('refreshMapperRight');
|
||||
})
|
||||
->closeModalByEscaping(false)
|
||||
->modalCloseButton(false)
|
||||
|
||||
@@ -6,7 +6,6 @@ use App\Filament\Tables\Columns\BookmakerIcon;
|
||||
use App\Models\Bookmaker;
|
||||
use App\Models\MultilineClient;
|
||||
use App\Models\MultilineSetting;
|
||||
use App\Models\User;
|
||||
use Filament\Actions\Concerns\InteractsWithActions;
|
||||
use Filament\Actions\Contracts\HasActions;
|
||||
use Filament\Forms\Components\Radio;
|
||||
@@ -32,18 +31,13 @@ class MultilineBookmaker extends Component implements HasActions, HasSchemas, Ha
|
||||
use InteractsWithTable;
|
||||
|
||||
protected $listeners = [
|
||||
'reload_bookmaker_multiline' => '$refresh',
|
||||
'refreshMultilineBookmaker' => '$refresh',
|
||||
];
|
||||
|
||||
public $user;
|
||||
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
|
||||
$this->user = User::getUser();
|
||||
|
||||
return $table
|
||||
->query(MultilineClient::query()->where('client_bookmaker_id', $this->user->bookmaker_id)->where('sport_id', $this->user->sport_id))
|
||||
->query(MultilineClient::query()->where('client_bookmaker_id', auth()->user()->bookmaker_id)->where('sport_id', auth()->user()->sport_id))
|
||||
->paginated(false)
|
||||
->columns([
|
||||
IconColumn::make('sport.icon')
|
||||
@@ -62,7 +56,7 @@ class MultilineBookmaker extends Component implements HasActions, HasSchemas, Ha
|
||||
$table = MultilineSetting::where('id', $livewire->tableFilters['multiline_setting_id'])->value('table');
|
||||
|
||||
$bookies = DB::table($table)
|
||||
->where('sport_id', $this->user->sport_id)
|
||||
->where('sport_id', auth()->user()->sport_id)
|
||||
->groupBy('bookmaker_id')->pluck('bookmaker_id');
|
||||
|
||||
$res = Bookmaker::whereIn('id', $bookies)->pluck('name', 'id');
|
||||
@@ -81,12 +75,13 @@ class MultilineBookmaker extends Component implements HasActions, HasSchemas, Ha
|
||||
Filter::make('multiline_setting_id')
|
||||
->schema([
|
||||
Radio::make('multiline_setting_id')
|
||||
->extraAttributes(['id' => 'multiline_setting'])
|
||||
->inline()
|
||||
->default(1)
|
||||
->default(fn ($record) => MultilineSetting::where('sport_id', auth()->user()->sport_id)->pluck('id')->first())
|
||||
->columnSpan(6)
|
||||
->columnSpanFull()
|
||||
->hiddenLabel()
|
||||
->options(fn () => MultilineSetting::where('sport_id', $this->user->sport_id)->orderBy('name')->pluck('name', 'id')),
|
||||
->options(fn () => MultilineSetting::where('sport_id', auth()->user()->sport_id)->orderBy('name')->pluck('name', 'id')),
|
||||
])
|
||||
->query(function (Builder $query, array $data): Builder {
|
||||
return $query
|
||||
|
||||
@@ -48,6 +48,17 @@ class SportSwitcher extends Component
|
||||
$this->dispatch('filterClearFilter');
|
||||
|
||||
$this->dispatch('refreshSportSwitcher');
|
||||
|
||||
$this->dispatch('refreshMultilineBookmaker');
|
||||
|
||||
$this->dispatch('refreshComparingBookmakerMenu');
|
||||
|
||||
$this->dispatch('refreshMapperLeft');
|
||||
|
||||
$this->dispatch('refreshMapperRight');
|
||||
|
||||
$this->dispatch('refreshlarmBookmaker');
|
||||
|
||||
}
|
||||
|
||||
public function render()
|
||||
|
||||
@@ -13,8 +13,8 @@ class TopMenuItems extends Component
|
||||
public $current = '';
|
||||
|
||||
protected $listeners = [
|
||||
'reload_data_left' => '$refresh',
|
||||
'reload_data_right' => '$refresh',
|
||||
'refreshMapperLeft' => '$refresh',
|
||||
'refreshMapperRight' => '$refresh',
|
||||
];
|
||||
|
||||
protected string $sport = '';
|
||||
@@ -50,6 +50,6 @@ class TopMenuItems extends Component
|
||||
{
|
||||
User::where('id', auth()->user()->id)->update(['provider_id' => $provider_id]);
|
||||
|
||||
$this->dispatch('reload_data_right');
|
||||
$this->dispatch('refreshMapperRight');
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -22,7 +22,8 @@
|
||||
"laravel/framework": "^12.0",
|
||||
"laravel/tinker": "^2.10.1",
|
||||
"outhebox/blade-flags": "^1.5",
|
||||
"swisnl/filament-backgrounds": "^2.0"
|
||||
"swisnl/filament-backgrounds": "^2.0",
|
||||
"tonegabes/filament-better-options": "^1.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"barryvdh/laravel-debugbar": "^3.16",
|
||||
|
||||
Generated
+170
-28
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "872a298c0c1cebe00cac20f0cb2539f7",
|
||||
"content-hash": "b1f96a36e577a5a502013fb033525720",
|
||||
"packages": [
|
||||
{
|
||||
"name": "agencetwogether/hookshelper",
|
||||
@@ -543,16 +543,16 @@
|
||||
},
|
||||
{
|
||||
"name": "brick/math",
|
||||
"version": "0.14.3",
|
||||
"version": "0.14.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/brick/math.git",
|
||||
"reference": "6af96b11de3f7d99730c118c200418c48274edb4"
|
||||
"reference": "a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/brick/math/zipball/6af96b11de3f7d99730c118c200418c48274edb4",
|
||||
"reference": "6af96b11de3f7d99730c118c200418c48274edb4",
|
||||
"url": "https://api.github.com/repos/brick/math/zipball/a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4",
|
||||
"reference": "a8b53e6cc4d3a336543f042a4dfa0e3f2f2356a4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -591,7 +591,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/brick/math/issues",
|
||||
"source": "https://github.com/brick/math/tree/0.14.3"
|
||||
"source": "https://github.com/brick/math/tree/0.14.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -599,7 +599,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2026-02-01T15:18:05+00:00"
|
||||
"time": "2026-02-02T16:57:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "carbonphp/carbon-doctrine-types",
|
||||
@@ -2616,23 +2616,23 @@
|
||||
},
|
||||
{
|
||||
"name": "jaybizzle/crawler-detect",
|
||||
"version": "v1.3.6",
|
||||
"version": "v1.3.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/JayBizzle/Crawler-Detect.git",
|
||||
"reference": "61f2ef1ad2d0ae922c265931cb0a8032a1ed2813"
|
||||
"reference": "7f7a45b5d5df9c95ba6b2008544e6cf8e66de6f5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/61f2ef1ad2d0ae922c265931cb0a8032a1ed2813",
|
||||
"reference": "61f2ef1ad2d0ae922c265931cb0a8032a1ed2813",
|
||||
"url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/7f7a45b5d5df9c95ba6b2008544e6cf8e66de6f5",
|
||||
"reference": "7f7a45b5d5df9c95ba6b2008544e6cf8e66de6f5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.8|^5.5|^6.5|^9.4"
|
||||
"phpunit/phpunit": "^4.8|^5.5|^6.5|^7.5|^8.5|^9.4"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@@ -2662,9 +2662,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/JayBizzle/Crawler-Detect/issues",
|
||||
"source": "https://github.com/JayBizzle/Crawler-Detect/tree/v1.3.6"
|
||||
"source": "https://github.com/JayBizzle/Crawler-Detect/tree/v1.3.7"
|
||||
},
|
||||
"time": "2025-09-30T16:22:43+00:00"
|
||||
"time": "2026-02-02T19:15:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "jenssegers/agent",
|
||||
@@ -4029,16 +4029,16 @@
|
||||
},
|
||||
{
|
||||
"name": "livewire/livewire",
|
||||
"version": "v3.7.6",
|
||||
"version": "v3.7.8",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/livewire/livewire.git",
|
||||
"reference": "276ac156f6ae414990784854a2673e3d23c68b24"
|
||||
"reference": "06ec7e8cd61bb01739b8f26396db6fe73b7e0607"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/livewire/livewire/zipball/276ac156f6ae414990784854a2673e3d23c68b24",
|
||||
"reference": "276ac156f6ae414990784854a2673e3d23c68b24",
|
||||
"url": "https://api.github.com/repos/livewire/livewire/zipball/06ec7e8cd61bb01739b8f26396db6fe73b7e0607",
|
||||
"reference": "06ec7e8cd61bb01739b8f26396db6fe73b7e0607",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4093,7 +4093,7 @@
|
||||
"description": "A front-end framework for Laravel.",
|
||||
"support": {
|
||||
"issues": "https://github.com/livewire/livewire/issues",
|
||||
"source": "https://github.com/livewire/livewire/tree/v3.7.6"
|
||||
"source": "https://github.com/livewire/livewire/tree/v3.7.8"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -4101,7 +4101,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2026-01-23T05:41:38+00:00"
|
||||
"time": "2026-02-03T02:57:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "masterminds/html5",
|
||||
@@ -9054,6 +9054,136 @@
|
||||
},
|
||||
"time": "2025-12-02T11:56:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "tonegabes/filament-better-options",
|
||||
"version": "1.2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tonegabes/filament-better-options.git",
|
||||
"reference": "6314bdf052108e19970f6f3e6885e05bb8801b5f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/tonegabes/filament-better-options/zipball/6314bdf052108e19970f6f3e6885e05bb8801b5f",
|
||||
"reference": "6314bdf052108e19970f6f3e6885e05bb8801b5f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"filament/forms": "^4.0",
|
||||
"php": "^8.3",
|
||||
"spatie/laravel-package-tools": "^1.15.0",
|
||||
"tonegabes/filament-phosphor-icons": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^3.86",
|
||||
"larastan/larastan": "^3.0",
|
||||
"laravel/pint": "^1.0",
|
||||
"phpstan/phpstan-deprecation-rules": "^2.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"ToneGabes\\BetterOptions\\BetterOptionsServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ToneGabes\\BetterOptions\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Tone Gabes",
|
||||
"email": "tonegabes@gmail.com",
|
||||
"homepage": "https://tonegabes.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Filament form components for better radio and checkbox options.",
|
||||
"homepage": "https://github.com/tonegabes/filament-better-options",
|
||||
"keywords": [
|
||||
"Forms",
|
||||
"checkbox",
|
||||
"filament",
|
||||
"laravel",
|
||||
"php",
|
||||
"plugin",
|
||||
"tonegabes"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/tonegabes/filament-better-options/issues",
|
||||
"source": "https://github.com/tonegabes/filament-better-options"
|
||||
},
|
||||
"time": "2025-10-22T19:20:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "tonegabes/filament-phosphor-icons",
|
||||
"version": "1.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tonegabes/filament-phosphor-icons.git",
|
||||
"reference": "f654722dee534ccddd005e667a73e8e64cb412cc"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/tonegabes/filament-phosphor-icons/zipball/f654722dee534ccddd005e667a73e8e64cb412cc",
|
||||
"reference": "f654722dee534ccddd005e667a73e8e64cb412cc",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"codeat3/blade-phosphor-icons": "^2.3",
|
||||
"filament/filament": "^4.0",
|
||||
"php": "^8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"laravel/pint": "^1.22"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"ToneGabes\\Filament\\Icons\\PhosphorIconsServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ToneGabes\\Filament\\Icons\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Tone Gabes",
|
||||
"email": "tonegabes@gmail.com",
|
||||
"homepage": "https://tonegabes.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Phosphor Icons Pack ready for Filament 4",
|
||||
"keywords": [
|
||||
"Iconset",
|
||||
"Phosphor",
|
||||
"filament",
|
||||
"icons",
|
||||
"laravel",
|
||||
"library"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/tonegabes/filament-phosphor-icons/issues",
|
||||
"source": "https://github.com/tonegabes/filament-phosphor-icons/tree/1.2.1"
|
||||
},
|
||||
"time": "2025-09-12T18:24:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ueberdosis/tiptap-php",
|
||||
"version": "2.1.0",
|
||||
@@ -11270,28 +11400,28 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-file-iterator",
|
||||
"version": "5.1.0",
|
||||
"version": "5.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
||||
"reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6"
|
||||
"reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6",
|
||||
"reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/2f3a64888c814fc235386b7387dd5b5ed92ad903",
|
||||
"reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^11.0"
|
||||
"phpunit/phpunit": "^11.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "5.0-dev"
|
||||
"dev-main": "5.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -11319,15 +11449,27 @@
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
|
||||
"security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
|
||||
"source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0"
|
||||
"source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/sebastianbergmann",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://liberapay.com/sebastianbergmann",
|
||||
"type": "liberapay"
|
||||
},
|
||||
{
|
||||
"url": "https://thanks.dev/u/gh/sebastianbergmann",
|
||||
"type": "thanks_dev"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-08-27T05:02:59+00:00"
|
||||
"time": "2026-02-02T13:52:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-invoker",
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
/*! tailwindcss v4.1.15 | MIT License | https://tailwindcss.com */@layer theme, base, components, utilities;@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-300:oklch(80.8% 0.114 19.571);--color-red-500:oklch(63.7% 0.237 25.331);--color-sky-400:oklch(74.6% 0.16 232.661);--color-gray-50:oklch(98.5% 0.002 247.839);--color-gray-100:oklch(96.7% 0.003 264.542);--color-gray-200:oklch(92.8% 0.006 264.531);--color-gray-300:oklch(87.2% 0.01 258.338);--color-gray-400:oklch(70.7% 0.022 261.325);--color-gray-500:oklch(55.1% 0.027 264.364);--color-gray-600:oklch(44.6% 0.03 256.802);--color-gray-700:oklch(37.3% 0.034 259.733);--color-gray-800:oklch(27.8% 0.033 256.848);--color-gray-900:oklch(21% 0.034 264.665);--color-gray-950:oklch(13% 0.028 261.692);--color-black:#000;--color-white:#fff;--spacing:0.25rem;--breakpoint-sm:40rem;--breakpoint-md:48rem;--breakpoint-lg:64rem;--breakpoint-xl:80rem;--breakpoint-2xl:96rem;--container-3xs:16rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:0.75rem;--text-xs--line-height:calc(1 / 0.75);--text-sm:0.875rem;--text-sm--line-height:calc(1.25 / 0.875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-0.05em;--tracking-tight:-0.025em;--leading-loose:2;--radius-md:0.375rem;--radius-lg:0.5rem;--radius-xl:0.75rem;--ease-in:cubic-bezier(0.4,0,1,1);--ease-out:cubic-bezier(0,0,0.2,1);--ease-in-out:cubic-bezier(0.4,0,0.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(0.4,0,0.6,1) infinite;--default-transition-duration:150ms;--default-transition-timing-function:cubic-bezier(0.4,0,0.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary-50:var(--color-primary-50);--color-primary-100:var(--color-primary-100);--color-primary-200:var(--color-primary-200);--color-primary-300:var(--color-primary-300);--color-primary-400:var(--color-primary-400);--color-primary-500:var(--color-primary-500);--color-primary-600:var(--color-primary-600);--color-primary-700:var(--color-primary-700);--color-primary-800:var(--color-primary-800);--color-primary-900:var(--color-primary-900);--color-primary-950:var(--color-primary-950)}}@layer base{*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}::file-selector-button,button,input,optgroup,select,textarea{background-color:transparent;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inLine truncated
|
||||
@@ -0,0 +1,140 @@
|
||||
export default function checkboxListFormComponent({ livewireId }) {
|
||||
return {
|
||||
areAllCheckboxesChecked: false,
|
||||
checkboxListOptions: [],
|
||||
search: "",
|
||||
visibleCheckboxListOptions: [],
|
||||
|
||||
// Cache selectors for better performance
|
||||
selectors: {
|
||||
option: ".fi-fo-checkbox-option",
|
||||
label: ".fi-fo-checkbox-option__label",
|
||||
description: ".fi-fo-checkbox-option__description",
|
||||
checkbox: "input[type=checkbox]",
|
||||
checkedOrDisabled:
|
||||
"input[type=checkbox]:checked, input[type=checkbox]:disabled",
|
||||
},
|
||||
|
||||
init() {
|
||||
this.cacheElements();
|
||||
this.bindEvents();
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.checkIfAllCheckboxesAreChecked();
|
||||
});
|
||||
},
|
||||
|
||||
cacheElements() {
|
||||
this.checkboxListOptions = Array.from(
|
||||
this.$root.querySelectorAll(this.selectors.option)
|
||||
);
|
||||
this.updateVisibleCheckboxListOptions();
|
||||
},
|
||||
|
||||
bindEvents() {
|
||||
// Livewire hook for updates
|
||||
Livewire.hook("commit", ({ component, succeed }) => {
|
||||
succeed(() => {
|
||||
this.$nextTick(() => {
|
||||
if (component.id !== livewireId) {
|
||||
return;
|
||||
}
|
||||
this.cacheElements();
|
||||
this.checkIfAllCheckboxesAreChecked();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Debounced search watcher
|
||||
this.$watch(
|
||||
"search",
|
||||
this.debounce(() => {
|
||||
this.updateVisibleCheckboxListOptions();
|
||||
this.checkIfAllCheckboxesAreChecked();
|
||||
}, 150)
|
||||
);
|
||||
},
|
||||
|
||||
// Simple debounce implementation
|
||||
debounce(func, wait) {
|
||||
let timeout;
|
||||
return function executedFunction(...args) {
|
||||
const later = () => {
|
||||
clearTimeout(timeout);
|
||||
func(...args);
|
||||
};
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(later, wait);
|
||||
};
|
||||
},
|
||||
|
||||
isFoundInSearch(checkboxItem) {
|
||||
if (!this.search || this.search.trim() === "") {
|
||||
return true;
|
||||
}
|
||||
|
||||
const searchTerm = this.search.toLowerCase();
|
||||
|
||||
// Cache elements to avoid repeated queries
|
||||
const labelElement = checkboxItem.querySelector(this.selectors.label);
|
||||
const descriptionElement = checkboxItem.querySelector(
|
||||
this.selectors.description
|
||||
);
|
||||
|
||||
const labelText = labelElement?.innerText?.toLowerCase() || "";
|
||||
const descriptionText =
|
||||
descriptionElement?.innerText?.toLowerCase() || "";
|
||||
|
||||
return (
|
||||
labelText.includes(searchTerm) || descriptionText.includes(searchTerm)
|
||||
);
|
||||
},
|
||||
|
||||
checkIfAllCheckboxesAreChecked() {
|
||||
if (this.visibleCheckboxListOptions.length === 0) {
|
||||
this.areAllCheckboxesChecked = false;
|
||||
return;
|
||||
}
|
||||
|
||||
this.areAllCheckboxesChecked =
|
||||
this.visibleCheckboxListOptions.length ===
|
||||
this.visibleCheckboxListOptions.filter((checkboxLabel) =>
|
||||
checkboxLabel.querySelector(this.selectors.checkedOrDisabled)
|
||||
).length;
|
||||
},
|
||||
|
||||
toggleAllCheckboxes() {
|
||||
this.checkIfAllCheckboxesAreChecked();
|
||||
const shouldCheck = !this.areAllCheckboxesChecked;
|
||||
|
||||
// Batch DOM operations for better performance
|
||||
const checkboxesToUpdate = [];
|
||||
|
||||
this.visibleCheckboxListOptions.forEach((checkboxLabel) => {
|
||||
const checkbox = checkboxLabel.querySelector(this.selectors.checkbox);
|
||||
if (checkbox && !checkbox.disabled) {
|
||||
checkboxesToUpdate.push(checkbox);
|
||||
}
|
||||
});
|
||||
|
||||
// Update all checkboxes at once
|
||||
checkboxesToUpdate.forEach((checkbox) => {
|
||||
checkbox.checked = shouldCheck;
|
||||
checkbox.dispatchEvent(new Event("change"));
|
||||
});
|
||||
|
||||
this.areAllCheckboxesChecked = shouldCheck;
|
||||
},
|
||||
|
||||
updateVisibleCheckboxListOptions() {
|
||||
if (!this.search || this.search.trim() === "") {
|
||||
this.visibleCheckboxListOptions = [...this.checkboxListOptions];
|
||||
return;
|
||||
}
|
||||
|
||||
this.visibleCheckboxListOptions = this.checkboxListOptions.filter(
|
||||
(checkboxListItem) => this.isFoundInSearch(checkboxListItem)
|
||||
);
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -19,6 +19,13 @@ button[wire\:click="resetTableFiltersForm"] {
|
||||
/* background-color: #0f172b; */
|
||||
}
|
||||
|
||||
/* stripes in popups */
|
||||
@layer utilities {
|
||||
.striped div:nth-child(even) {
|
||||
@apply bg-gray-100
|
||||
}
|
||||
}
|
||||
|
||||
/* .fi-ta-header-toolbar {
|
||||
@apply flex-row-reverse;
|
||||
} */
|
||||
@@ -62,6 +69,19 @@ button[wire\:click="resetTableFiltersForm"] {
|
||||
}
|
||||
}
|
||||
|
||||
/* Styling Radio Boxes */
|
||||
#multiline_setting {
|
||||
@apply !grid grid-cols-3 gap-5 mb-4
|
||||
}
|
||||
|
||||
#multiline_setting input {
|
||||
@apply checked:border-blue-500
|
||||
}
|
||||
|
||||
#multiline_setting .fi-fo-radio-label {
|
||||
@apply p-3 border border-gray-700 rounded-xl cursor-pointer has-checked:bg-blue-50 has-checked:text-blue-900 has-checked:ring-blue-200 dark:has-checked:bg-blue-950 dark:has-checked:text-blue-200 dark:has-checked:ring-blue-900
|
||||
}
|
||||
|
||||
#mapper_right .fi-ta-filter-indicators button,
|
||||
#mapper_left .fi-ta-filter-indicators button {
|
||||
display: none;
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
<div class="flex flex-1 gap-3 items-center m-5 drop-shadow ">
|
||||
@switch(auth()->user()->sport_id)
|
||||
@case(1)
|
||||
<x-icon-soccerball class="h-8 text-blue-600" />
|
||||
@break
|
||||
@case(1)
|
||||
<x-icon-icehockey class="h-8 text-gray-950" />
|
||||
@break
|
||||
@case(3)
|
||||
<x-icon-basketball class="h-8 text-red-600" />
|
||||
@break
|
||||
@case(4)
|
||||
<x-icon-tennisball class="h-8 text-yellow-600" />
|
||||
@break
|
||||
@default
|
||||
|
||||
@endswitch
|
||||
<p class="text-xl font-black">{{ $slot }}</p>
|
||||
</div>
|
||||
@@ -1,6 +1,5 @@
|
||||
<div class="grid grid-cols-2 gap-1 p-1 border rounded border-zinc-200 dark:border-zinc-800 bg-gray-100 dark:bg-gray-900 text-center shadow"
|
||||
style="font-size: 10px;">
|
||||
<div class="row-span-3 text-lg text-gray-500 pt-3">{{ $title }}</div>
|
||||
<div class="grid grid-cols-4 text-xs gap-1 p-1 border rounded border-zinc-200 dark:border-zinc-800 bg-gray-100 dark:bg-gray-900 text-center shadow">
|
||||
<div class="text-nowrap">{{ $title }}</div>
|
||||
|
||||
@if ($red)
|
||||
<div class="cursor-pointer" wire:click="filterAlarm('{{ $filter }}', 3)">
|
||||
|
||||
@@ -12,11 +12,9 @@
|
||||
@endphp
|
||||
|
||||
@if ($getColumns() == 2)
|
||||
<div {{ $getExtraAttributeBag() }} class="grid grid-cols-4 gap-1 mb-1"
|
||||
style="font-size: 10.5px; text-align:center; width:216px;">
|
||||
<div {{ $getExtraAttributeBag() }} class="grid grid-cols-4 gap-1 mb-1 text-xs text-center w-48 mr-3">
|
||||
@else
|
||||
<div {{ $getExtraAttributeBag() }} class="grid grid-cols-5 gap-1 mb-1"
|
||||
style="font-size: 10.5px; text-align:center; width:270px;">
|
||||
<div {{ $getExtraAttributeBag() }} class="grid grid-cols-5 gap-1 mb-1 text-xs text-center w-64 mr-3">
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
<div>
|
||||
<x-sport-header>
|
||||
{{ auth()->user()->sport->name }} Alarm Configuration
|
||||
</x-sport-header>
|
||||
|
||||
{{ $this->table }}
|
||||
</div>
|
||||
@@ -1,3 +1,8 @@
|
||||
<div id="ComparingBookmakerMenu">
|
||||
|
||||
<x-sport-header>
|
||||
{{ auth()->user()->sport->name }} Comparing Bookmaker
|
||||
</x-sport-header>
|
||||
|
||||
{{ $this->table }}
|
||||
</div>
|
||||
@@ -1,3 +1,7 @@
|
||||
<div>
|
||||
<x-sport-header>
|
||||
{{ auth()->user()->sport->name }} Multiline Configuration
|
||||
</x-sport-header>
|
||||
|
||||
{{ $this->table }}
|
||||
</div>
|
||||
@@ -1,3 +0,0 @@
|
||||
<div>
|
||||
{{-- To attain knowledge, add things every day; To attain wisdom, subtract things every day. --}}
|
||||
</div>
|
||||
@@ -72,7 +72,9 @@
|
||||
|
||||
<x-slot name="heading">
|
||||
<div class="flex justify-between items-center w-5xl">
|
||||
<div>Event Mapper</div>
|
||||
<x-sport-header>
|
||||
{{ auth()->user()->sport->name }} Event Mapper
|
||||
</x-sport-header>
|
||||
@php
|
||||
if (!auth()->user()->provider_id) {
|
||||
auth()->user()->provider_id = 2;
|
||||
|
||||
Reference in new issue
Block a user