diff --git a/app/Http/Controllers/ClosetController.php b/app/Http/Controllers/ClosetController.php index 1817aae5..f106dd00 100644 --- a/app/Http/Controllers/ClosetController.php +++ b/app/Http/Controllers/ClosetController.php @@ -4,14 +4,32 @@ namespace App\Http\Controllers; use App\Models\Texture; use App\Models\User; +use App\Services\Filter; use Auth; use Illuminate\Http\Request; class ClosetController extends Controller { - public function index() + public function index(Filter $filter) { + $grid = [ + 'layout' => [ + ['md-8', 'md-4'], + ], + 'widgets' => [ + [ + [ + 'user.widgets.email-verification', + 'user.widgets.closet.list', + ], + ['shared.previewer'], + ], + ], + ]; + $grid = $filter->apply('grid:user.closet', $grid); + return view('user.closet') + ->with('grid', $grid) ->with('extra', [ 'unverified' => option('require_verification') && !auth()->user()->verified, 'rule' => trans('user.player.player-name-rule.'.option('player_name_rule')), diff --git a/resources/assets/src/components/Portal.ts b/resources/assets/src/components/Portal.ts new file mode 100644 index 00000000..804c77b8 --- /dev/null +++ b/resources/assets/src/components/Portal.ts @@ -0,0 +1,28 @@ +import Vue from 'vue' + +export default Vue.extend({ + name: 'Portal', + props: { + selector: { + required: true, + type: String, + }, + tag: { + type: String, + default: 'div', + }, + }, + mounted() { + const container = document.querySelector(this.selector) + if (container) { + if (container.firstChild) { + container.replaceChild(this.$el, container.firstChild) + } else { + container.appendChild(this.$el) + } + } + }, + render(h) { + return h(this.tag, [this.$slots.default]) + }, +}) diff --git a/resources/assets/src/scripts/route.ts b/resources/assets/src/scripts/route.ts index bb819037..82299ba2 100644 --- a/resources/assets/src/scripts/route.ts +++ b/resources/assets/src/scripts/route.ts @@ -1,3 +1,5 @@ +const offline = document.createElement('div') + export default [ { path: '/', @@ -14,7 +16,7 @@ export default [ { path: 'user/closet', component: () => import('../views/user/Closet.vue'), - el: '.content > .container-fluid', + el: offline, }, { path: 'user/player', diff --git a/resources/assets/src/views/user/Closet.vue b/resources/assets/src/views/user/Closet.vue index bb04b897..0b6cd92f 100644 --- a/resources/assets/src/views/user/Closet.vue +++ b/resources/assets/src/views/user/Closet.vue @@ -1,178 +1,181 @@