Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use blade components #925

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/admin/ServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ protected function registerAssets()
$manager->registerBundle('scss', '~/app/admin/assets/scss/admin.scss', null, 'admin');
$manager->registerBundle('js', [
'~/app/system/assets/ui/flame.js',
'~/app/admin/assets/node_modules/js-cookie/src/js.cookie.js',
'~/app/admin/assets/node_modules/js-cookie/dist/js.cookie.js',
'~/app/admin/assets/node_modules/select2/dist/js/select2.min.js',
'~/app/admin/assets/node_modules/metismenu/dist/metisMenu.min.js',
'~/app/admin/assets/js/src/app.js',
Expand Down
34 changes: 34 additions & 0 deletions app/admin/views/_components/alert.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
@foreach(Flash::all() as $message)
@if($message['overlay'])
<div
data-control="flash-overlay"
data-title="{{ array_get($message, 'title') }}"
data-text="{!! array_get($message, 'message') !!}"
data-icon="{{ $message['level'] }}"
data-close-on-click-outside="{{ $message['important'] ? 'false' : 'true' }}"
data-close-on-esc="{{ $message['important'] ? 'false' : 'true' }}"
></div>
@else
<div
class="alert alert-{{ $message['level'].($message['important'] ? ' alert-important' : '') }}"
data-control="flash-message"
data-allow-dismiss="{{ $message['important'] ? 'false' : 'true' }}"
role="alert"
>{!! $message['message'] !!}</div>
@endif
@endforeach
@if($messages = session('admin_errors', collect())->all())
<div
class="alert alert-danger"
data-control="flash-message"
data-allow-dismiss="false"
role="alert"
>
@foreach($messages as $message)
<p>{!! $message !!}</p>
@endforeach
</div>
@php
session()->forget('admin_errors')
@endphp
@endif
33 changes: 33 additions & 0 deletions app/admin/views/_components/aside.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
@props(['navItems'])
@if(AdminAuth::isLogged())
<aside {{ $attributes->merge(['class' => 'p-4 w-64 h-100 overflow-y-scroll overflow-y-lg-auto no-scrollbar'])}}>
<div class="">
{{ $slot }}
</div>
<div class="nav-sidebar">
<x-nav
id="side-nav-menu"
class="nav flex-column"
>
@foreach($navItems as $code => $item)
@if(isset($item['child']) && empty($item['child']))
@continue;
@endif
<x-nav.item
:code="$code"
:children="$item['child'] ?? []"
class="nav-item"
>
<x-nav.item-link
class="nav-link {{ !empty($item['child']) ? 'has-arrow' : '' }} {{ $item['class'] ?? '' }}"
href="{{ $item['href'] ?? '#' }}"
>
<i class="fa {{ $item['icon'] }} fa-fw"></i>
<span class="mx-3">{{ $item['title'] }}</span>
</x-nav.item-link>
</x-nav.item>
@endforeach
</x-nav>
</div>
</aside>
@endif
Empty file.
15 changes: 15 additions & 0 deletions app/admin/views/_components/forms/form.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
@props([
'method' => 'POST',
'hasFiles' => FALSE,
])
<form
method="{{ $method }}"
action="{{ $action ?? current_url() }}"
{!! $hasFiles ? 'enctype="multipart/form-data"' : '' !!}
{{ $attributes }}
>
@csrf
@method($method)

{{ $slot }}
</form>
Empty file.
3 changes: 3 additions & 0 deletions app/admin/views/_components/forms/label.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<label {{ $attributes->class(['control-label']) }}>
{{ $label ?? $slot }}
</label>
34 changes: 34 additions & 0 deletions app/admin/views/_components/forms/select.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
@props([
'label' => null,
'placeholder' => null,
'options' => [],
'size' => null,
'help' => null,
])

@php
$key = $attributes->get('name', '');
$id = $attributes->get('id', '');
@endphp
<div class="mb-3">
<x-forms.label :label="$label" :for="$id"/>

<select {{ $attributes->class([
'form-select',
'form-select-' . $size => $size,
'is-invalid' => $errors->has($key),
])->merge([
'id' => $id
]) }}>
@isset($placeholder)
<option value="">{{ $placeholder }}</option>
@endisset

@foreach($options as $value => $label)
<option value="{{ $value }}">{{ $label }}</option>
@endforeach
</select>

<x-forms.error :key="$key"/>
<x-forms.help :label="$help"/>
</div>
49 changes: 49 additions & 0 deletions app/admin/views/_components/header.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
@if(AdminAuth::isLogged())
<nav {{ $attributes->merge(['class' => 'navbar navbar-top navbar-expand navbar-fixed-top'])}}>
<div class="container-fluid">
<div class="d-flex align-items-center">
<div class="ps-3">
<button
type="button"
class="btn navbar-toggler d-block"
><span class="fa fa-bars"></span></button>
</div>
<div class="navbar-brand">
<a class="logo" href="{{ admin_url('dashboard') }}">
<svg
version="1.1" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 500 500" width="100%" style="height:42px;width:42px;">
<g>
<defs>
<clipPath id="clip-path-id-viewbox-item-0">
<rect x="0.0" y="0.0" width="2351.85" height="3016.6"/>
</clipPath>
</defs>
<g
transform="translate(56.0 2.0) rotate(0.0 193.0 248.0) scale(0.16412611348512873 0.1644235231717828)">
<g clip-path="url(#clip-path-id-viewbox-item-0)" transform="translate(-0.0 -0.0)">
<path
d="M1385.35,2973.45c77.97,38.77,169.23,31.59,238.38-18.56c531.73-386.54,643.3-765.6,643.3-1015.46 c0-337.59-187-602.57-371.46-817.55c4.78,176.65-66.62,287.14-127.7,348.82c-67.21,67.82-136.96,93.12-137.56,93.42 c-0.9,0.3-1.79,0.15-2.39-0.45c-0.6-0.6-1.05-1.5-0.9-2.25c0.45-2.54,42.72-258.09,42.72-454.06 c0-402.41-192.98-677.87-354.73-838.06C1158.46,114.65,1000.44,34.71,966.39,18.39c14.49,27.55,67.81,136.68,67.81,255.1 c0,217.07-184.31,415.59-397.75,645.38c-260.34,280.4-555.33,598.08-555.33,1020.55c0,240.73,111.27,611.1,641.06,1008.27 c68.71,51.5,160.27,59.58,239.13,21.11c68.26-33.38,109.93-95.06,111.57-164.98l1.79-81.89c0.3-14.52-4.48-28.74-13.89-41.17 C838.53,2386.3,841.67,2307.4,846.6,2187.94c0.45-11.53,0.9-23.35,1.19-35.78c3.14-135.19,79.76-715.45,88.57-781.17 c0.6-4.49,5.08-7.78,10.31-7.78h18.67c2.99,0,5.97,1.2,7.92,3.14c1.64,1.65,2.54,3.59,2.54,5.84l-3.29,775.78 c0,6.29,2.84,12.58,8.07,17.37c6.87,6.44,16.58,9.58,26.89,8.98c3.58-0.3,7.17-0.9,11.05-1.8c9.86-2.54,16.73-9.73,17.18-17.81 l37.79-782.67c0.3-4.79,4.78-8.53,10.31-8.53h13.44c5.68,0,10.16,3.74,10.31,8.53c1.05,24.85,26.74,610.65,26.74,713.8 c0,61.23,11.65,83.24,21.36,90.87c5.97,4.64,10.75,3.59,10.9,3.44c0.15,0,0.45,0,0.6,0h14.34c0.15,0,0.45,0,0.6,0.15 c0.15,0,5.08,1.2,10.9-3.44c9.71-7.64,21.36-29.64,21.36-90.87c0-97.31,22.25-611.7,26.74-713.8c0.15-4.79,4.78-8.53,10.31-8.53 h13.44c5.53,0,10.16,3.74,10.31,8.53l37.79,782.67c0.45,8.08,7.32,15.27,17.18,17.81c3.73,1.05,7.47,1.65,11.05,1.95 c10.31,0.75,20.01-2.54,26.89-8.83c5.23-4.79,8.07-11.08,8.07-17.37l-3.29-775.63c0-2.1,0.9-4.19,2.39-5.84 c1.94-1.95,4.93-3.14,7.92-3.14h18.67c5.23,0,9.71,3.29,10.31,7.78c8.66,65.72,85.29,645.98,88.57,781.17 c0.3,12.43,0.75,24.25,1.2,35.78c4.93,119.47,8.07,198.36-214.18,492.98c-9.41,12.43-14.19,26.65-13.89,41.32l1.94,87.43 C1276.91,2878.68,1317.98,2940.06,1385.35,2973.45z"
style="fill:#192957;"></path>
</g>
</g>
</g>
</svg>
</a>
</div>
</div>
<div class="page-title flex-grow-1">
<span>{!! Template::getHeading() !!}</span>
</div>
<div class="navbar navbar-right">
<button
type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navSidebar"
aria-controls="navSidebar" aria-expanded="false" aria-label="Toggle navigation">
<span class="fa fa-bars"></span>
</button>

{{ $slot }}
</div>
</div>
</nav>
@endif
1 change: 1 addition & 0 deletions app/admin/views/_components/modal/close.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
19 changes: 19 additions & 0 deletions app/admin/views/_components/modal/content.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<div class="modal-content">
@isset($title)
<div class="modal-header">
<h5 class="modal-title">{{ $title }}</h5>

<x-modal.close/>
</div>
@endisset

<div class="modal-body">
{{ $slot }}
</div>

@isset($footer)
<div class="modal-footer">
{{ $footer }}
</div>
@endisset
</div>
27 changes: 27 additions & 0 deletions app/admin/views/_components/modal/form.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
@props([
'label' => null,
'placeholder' => null,
'options' => [],
'size' => null,
'help' => null,
])

<x-forms.form>
@isset($title)
<div class="modal-header">
<h5 class="modal-title">{{ $title }}</h5>

<x-modal.close/>
</div>
@endisset

<div class="modal-body">
{{ $slot }}
</div>

@isset($footer)
<div class="modal-footer">
{{ $footer }}
</div>
@endisset
</x-forms.form>
25 changes: 25 additions & 0 deletions app/admin/views/_components/modal/index.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<div
{{ $attributes->merge(['class' => 'modal fade', 'tabindex' => -1 , 'role'=> 'dialog', 'aria-hidden' => TRUE]) }}
>
<div class="modal-dialog" role="document">
<div class="modal-content">
@isset($title)
<div class="modal-header">
<h5 class="modal-title">{{ $title }}</h5>

<x-modal.close/>
</div>
@endisset

<div class="modal-body">
{{ $slot }}
</div>

@isset($footer)
<div class="modal-footer">
{{ $footer }}
</div>
@endisset
</div>
</div>
</div>
14 changes: 14 additions & 0 deletions app/admin/views/_components/modal/loading.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<div
{{ $attributes->merge(['class' => 'modal slideInDown fade', 'tabindex' => -1 , 'role'=> 'dialog', 'aria-hidden' => TRUE]) }}
>
<div class="modal-dialog" role="document">
<div id="{{ $modalContentId }}" class="modal-content">
<div class="modal-body">
<div class="progress-indicator">
<span class="spinner"><span class="ti-loading fa-3x fa-fw"></span></span>
@lang('admin::lang.text_loading')
</div>
</div>
</div>
</div>
</div>
3 changes: 3 additions & 0 deletions app/admin/views/_components/nav/index.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<ul {{ $attributes }}>
{{ $slot }}
</ul>
3 changes: 3 additions & 0 deletions app/admin/views/_components/nav/item-link.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<a {{ $attributes }}>
{{ $slot }}
</a>
32 changes: 32 additions & 0 deletions app/admin/views/_components/nav/item.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
@props(['code', 'children' => []])
@php
$isActive = (bool)AdminMenu::isActiveNavItem($code);
@endphp

<li {{ $attributes->class(['active' => $isActive]) }}>
{{ $slot }}

@if($children)
<x-nav
class="nav collapse {{ $isActive ? ' show' : '' }}"
aria-expanded="{{ $isActive ? 'true' : 'false' }}"
>
@foreach($children as $childCode => $childItem)
@if(isset($childItem['child']) && empty($childItem['child']))
@continue;
@endif
<x-nav.item
:code="$childCode"
class="nav-item w-100"
>
<x-nav.item-link
class="nav-link {{ $childItem['class'] ?? '' }}"
href="{{ $childItem['href'] ?? '#' }}"
>
<span>{{ $childItem['title'] }}</span>
</x-nav.item-link>
</x-nav.item>
@endforeach
</x-nav>
@endif
</li>
36 changes: 16 additions & 20 deletions app/admin/views/_layouts/default.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,24 @@
<meta name="csrf-token" content="{{ csrf_token() }}">
{!! get_favicon() !!}
<title>{{ sprintf(lang('admin::lang.site_title'), Template::getTitle(), setting('site_name')) }}</title>
{!! get_style_tags() !!}
@styles
</head>
<body class="page {{ $this->bodyClass }}">
@if(AdminAuth::isLogged())

{!! $this->makePartial('top_nav') !!}

{!! AdminMenu::render('side_nav') !!}

@endif

<div class="page-wrapper">
<div class="page-content">
{!! Template::getBlock('body') !!}
</div>
<x-header>
{!! $this->widgets['mainmenu']->render() !!}
</x-header>
<div class="sidebar">
<x-aside :navItems="AdminMenu::getVisibleNavItems()"/>
</div>
<div class="page-wrapper flex-grow-1 overflow-hidden">
<div class="page-content overflow-y-scroll overflow-y-lg-auto px-3 py-4 h-100">
{!! Template::getBlock('body') !!}
</div>

<div id="notification">
{!! $this->makePartial('flash') !!}
</div>
{!! $this->makePartial('set_status_form') !!}
{!! Assets::getJsVars() !!}
{!! get_script_tags() !!}
</div>
<div id="notification">
<x-alert/>
</div>
@partial('set_status_form')
@scripts
</body>
</html>
12 changes: 1 addition & 11 deletions app/admin/views/_partials/side_nav.blade.php
Original file line number Diff line number Diff line change
@@ -1,11 +1 @@
<div class="sidebar" role="navigation">
<div id="navSidebar" class="nav-sidebar">
{!! $this->makePartial('side_nav_items', [
'navItems' => $navItems,
'navAttributes' => [
'id' => 'side-nav-menu',
'class' => 'nav',
],
]) !!}
</div>
</div>
<x-sidenav/>