Changes
This commit is contained in:
Generated
-12
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Codeception">
|
||||
<option name="configurations">
|
||||
<list>
|
||||
<Configuration>
|
||||
<option name="path" value="$PROJECT_DIR$/tests" />
|
||||
</Configuration>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+1
@@ -6,6 +6,7 @@
|
||||
<sourceFolder url="file://$MODULE_DIR$/database/factories" isTestSource="false" packagePrefix="Database\Factories\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/database/seeders" isTestSource="false" packagePrefix="Database\Seeders\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="Tests\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/brick/math" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/carbonphp/carbon-doctrine-types" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
||||
|
||||
Generated
-60
@@ -5,66 +5,6 @@
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
<PhpSpecSuiteConfiguration>
|
||||
<option name="myPath" value="$PROJECT_DIR$" />
|
||||
</PhpSpecSuiteConfiguration>
|
||||
</suites>
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,5 +1,6 @@
|
||||
FROM php:8.2-fpm
|
||||
|
||||
# Установка необходимых пакетов
|
||||
RUN apt-get update && apt-get install -y \
|
||||
apt-utils \
|
||||
libpq-dev \
|
||||
@@ -9,7 +10,6 @@ RUN apt-get update && apt-get install -y \
|
||||
libjpeg62-turbo-dev \
|
||||
libmcrypt-dev \
|
||||
libgd-dev \
|
||||
libpng-dev \
|
||||
libwebp-dev \
|
||||
libzip-dev \
|
||||
zip \
|
||||
@@ -23,24 +23,24 @@ RUN apt-get update && apt-get install -y \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
#RUN apt-get update && \
|
||||
# apt-get install -y libmagickwand-dev
|
||||
#
|
||||
#RUN pecl install imagick
|
||||
#
|
||||
#RUN docker-php-ext-enable imagick
|
||||
|
||||
# Установка дополнительных библиотек
|
||||
RUN apt-get update && apt-get install -y zlib1g-dev libicu-dev g++
|
||||
RUN docker-php-ext-configure intl
|
||||
RUN docker-php-ext-install intl
|
||||
|
||||
# Установка Supervisor
|
||||
RUN apt-get update && apt-get install -y supervisor
|
||||
|
||||
# Копирование конфигурационного файла PHP
|
||||
COPY ./_docker/app/php.ini /usr/local/etc/php/conf.d/php.ini
|
||||
|
||||
# Установка Node.js
|
||||
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
|
||||
RUN apt-get install -y nodejs npm
|
||||
|
||||
# Копирование конфигурации Supervisor
|
||||
COPY ./_docker/supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||
|
||||
EXPOSE 6001
|
||||
EXPOSE 5173
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
post_max_size = 128M
|
||||
upload_max_filesize = 128M
|
||||
memory_limit = 256M
|
||||
request_terminate_timeout = 300
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
server {
|
||||
client_max_body_size 200M;
|
||||
large_client_header_buffers 4 128k;
|
||||
large_client_header_buffers 8 256k;
|
||||
fastcgi_buffers 16 16k;
|
||||
fastcgi_buffer_size 32k;
|
||||
|
||||
root /var/www/public;
|
||||
location / {
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
[supervisord]
|
||||
nodaemon=true
|
||||
|
||||
[program:laravel-worker]
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
command=php /var/www/artisan queue:work --sleep=3 --tries=3
|
||||
autostart=true
|
||||
autorestart=true
|
||||
user=www-data
|
||||
numprocs=1
|
||||
redirect_stderr=true
|
||||
stdout_logfile=/var/www/storage/logs/worker.log
|
||||
|
||||
[program:inertia-worker]
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
command=php /var/www/artisan inertia:start-ssr
|
||||
autostart=true
|
||||
autorestart=true
|
||||
user=www-data
|
||||
numprocs=1
|
||||
redirect_stderr=true
|
||||
stdout_logfile=/var/www/storage/logs/inertia-worker.log
|
||||
@@ -50,6 +50,7 @@ class ClientEventController extends Controller
|
||||
{
|
||||
$event = new ClientEventFullResource(Event::where('slug', '=', $slug)->with('category')->first());
|
||||
|
||||
|
||||
$routeUrl = route('client.event.index');
|
||||
$path = ltrim(parse_url($routeUrl, PHP_URL_PATH), '/');
|
||||
|
||||
|
||||
@@ -140,7 +140,6 @@ class ClientPostController extends Controller
|
||||
'page' => new ClientBreadcrumbPage($page),
|
||||
];
|
||||
} else {
|
||||
$subSectionPages = null;
|
||||
$breadcrumbs = null;
|
||||
}
|
||||
return Inertia::render('Client/Posts/Show', compact('post', 'breadcrumbs'));
|
||||
|
||||
+3
-3
@@ -6,13 +6,14 @@
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.1",
|
||||
"ext-curl": "*",
|
||||
"awcodes/filament-tiptap-editor": "^3.0",
|
||||
"bezhansalleh/filament-shield": "^3.2",
|
||||
"filament/filament": "^3.0-stable",
|
||||
"filament/spatie-laravel-tags-plugin": "^3.2",
|
||||
"guava/filament-icon-picker": "^2.0",
|
||||
"guzzlehttp/guzzle": "^7.8",
|
||||
"inertiajs/inertia-laravel": "^0.6.8",
|
||||
"inertiajs/inertia-laravel": "^1.3",
|
||||
"intervention/image": "^2.7",
|
||||
"joshembling/image-optimizer": "^1.4",
|
||||
"laravel/framework": "^10.10",
|
||||
@@ -25,8 +26,7 @@
|
||||
"symfony/filesystem": "^6.3",
|
||||
"tightenco/ziggy": "^1.0",
|
||||
"vkcom/vk-php-sdk": "^5.131",
|
||||
"xvladqt/faker-lorem-flickr": "^1.0",
|
||||
"ext-curl": "*"
|
||||
"xvladqt/faker-lorem-flickr": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"fakerphp/faker": "^1.9.1",
|
||||
|
||||
Generated
+19
-14
@@ -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": "6cfaed46970b24b641b3caedbebbdbe4",
|
||||
"content-hash": "4ec8fd7d71eed92d6bd7cd1106725919",
|
||||
"packages": [
|
||||
{
|
||||
"name": "anourvalar/eloquent-serialize",
|
||||
@@ -2617,27 +2617,28 @@
|
||||
},
|
||||
{
|
||||
"name": "inertiajs/inertia-laravel",
|
||||
"version": "v0.6.11",
|
||||
"version": "v1.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/inertiajs/inertia-laravel.git",
|
||||
"reference": "2a1e19048f95c0e4adb2b2733f9119e49c4fc09f"
|
||||
"reference": "36730d13b1dab9017069004fd458b3e67449a326"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/2a1e19048f95c0e4adb2b2733f9119e49c4fc09f",
|
||||
"reference": "2a1e19048f95c0e4adb2b2733f9119e49c4fc09f",
|
||||
"url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/36730d13b1dab9017069004fd458b3e67449a326",
|
||||
"reference": "36730d13b1dab9017069004fd458b3e67449a326",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"laravel/framework": "^6.0|^7.0|^8.74|^9.0|^10.0",
|
||||
"php": "^7.2|~8.0.0|~8.1.0|~8.2.0|~8.3.0"
|
||||
"laravel/framework": "^8.74|^9.0|^10.0|^11.0",
|
||||
"php": "^7.3|~8.0.0|~8.1.0|~8.2.0|~8.3.0",
|
||||
"symfony/console": "^5.3|^6.0|^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^1.3.3",
|
||||
"orchestra/testbench": "^4.0|^5.0|^6.4|^7.0|^8.0",
|
||||
"phpunit/phpunit": "^8.0|^9.5.8",
|
||||
"orchestra/testbench": "^6.4|^7.0|^8.0|^9.0",
|
||||
"phpunit/phpunit": "^8.0|^9.5.8|^10.4",
|
||||
"roave/security-advisories": "dev-master"
|
||||
},
|
||||
"suggest": {
|
||||
@@ -2649,6 +2650,9 @@
|
||||
"providers": [
|
||||
"Inertia\\ServiceProvider"
|
||||
]
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-master": "1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -2677,7 +2681,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/inertiajs/inertia-laravel/issues",
|
||||
"source": "https://github.com/inertiajs/inertia-laravel/tree/v0.6.11"
|
||||
"source": "https://github.com/inertiajs/inertia-laravel/tree/v1.3.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2685,7 +2689,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-10-27T10:59:02+00:00"
|
||||
"time": "2024-06-13T01:25:09+00:00"
|
||||
},
|
||||
{
|
||||
"name": "intervention/image",
|
||||
@@ -11798,12 +11802,13 @@
|
||||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "dev",
|
||||
"stability-flags": {},
|
||||
"stability-flags": [],
|
||||
"prefer-stable": true,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": "^8.1"
|
||||
"php": "^8.1",
|
||||
"ext-curl": "*"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.6.0"
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ services:
|
||||
container_name: ntspi-php
|
||||
ports:
|
||||
- '5173'
|
||||
command: ["/usr/bin/supervisord"]
|
||||
|
||||
db:
|
||||
image: mysql:8.0
|
||||
|
||||
Generated
+3298
-49
File diff suppressed because it is too large
Load Diff
+7
-4
@@ -3,19 +3,20 @@
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite --host",
|
||||
"build": "vite build",
|
||||
"watch": "vite"
|
||||
"build": "vite build && vite build --ssr"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@inertiajs/vue3": "^1.0.0",
|
||||
"@tailwindcss/forms": "^0.5.3",
|
||||
"@types/lodash": "^4.17.13",
|
||||
"@vitejs/plugin-vue": "^4.6.2",
|
||||
"autoprefixer": "^10.4.12",
|
||||
"axios": "^1.1.2",
|
||||
"bvi": "^1.0.2",
|
||||
"daisyui": "^3.9.3",
|
||||
"i": "^0.3.7",
|
||||
"laravel-vite-plugin": "^0.8.1",
|
||||
"lodash": "^4.17.21",
|
||||
"npm": "^10.9.0",
|
||||
"postcss": "^8.4.18",
|
||||
"tailwindcss": "^3.2.1",
|
||||
"vite": "^5.3.3",
|
||||
@@ -34,7 +35,9 @@
|
||||
"@preline/overlay": "^1.4.0",
|
||||
"@preline/scrollspy": "^2.0.0",
|
||||
"@preline/select": "^2.5.0",
|
||||
"flowbite": "^1.8.1",
|
||||
"@vue/server-renderer": "^3.5.12",
|
||||
"daisyui": "^4.12.14",
|
||||
"flowbite": "^2.5.2",
|
||||
"fslightbox": "^3.4.1",
|
||||
"fslightbox-vue": "^2.1.3",
|
||||
"preline": "^1.9.0",
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
.fade-enter-active[data-v-a071b57e],.fade-leave-active[data-v-a071b57e]{transition:all .5s ease}.fade-enter-from[data-v-a071b57e],.fade-leave-to[data-v-a071b57e]{opacity:0;transform:translateY(30px)}.gg-enter-active[data-v-a071b57e],.gg-leave-active[data-v-a071b57e]{transition:all .5s ease}.gg-enter-from[data-v-a071b57e],.gg-leave-to[data-v-a071b57e]{opacity:0;transform:translateY(30px)}
|
||||
@@ -1 +0,0 @@
|
||||
.header-filter[data-v-dc2022ad]{transition:all .3s;-webkit-backdrop-filter:saturate(180%) blur(7px);backdrop-filter:saturate(180%) blur(7px);background:#fff9}
|
||||
@@ -1 +0,0 @@
|
||||
.header-filter[data-v-2a88d49e]{transition:all .3s;-webkit-backdrop-filter:saturate(180%) blur(7px);backdrop-filter:saturate(180%) blur(7px);background:#fff9}.header-filter[data-v-51ebcf34]{transition:all .3s;-webkit-backdrop-filter:saturate(180%) blur(7px);backdrop-filter:saturate(180%) blur(7px)}
|
||||
@@ -1 +0,0 @@
|
||||
.fade-enter-active[data-v-9010082e],.fade-leave-active[data-v-9010082e]{transition:all .5s ease}.fade-enter-from[data-v-9010082e],.fade-leave-to[data-v-9010082e]{opacity:0;transform:translateY(30px)}.gg-enter-active[data-v-9010082e],.gg-leave-active[data-v-9010082e]{transition:all .5s ease}.gg-enter-from[data-v-9010082e],.gg-leave-to[data-v-9010082e]{opacity:0;transform:translateY(30px)}
|
||||
@@ -1 +0,0 @@
|
||||
.filter[data-v-43b95455]{filter:saturate(100%) blur(3px)}.hide-scrollbar[data-v-43adfa6e]::-webkit-scrollbar{display:none}.hide-scrollbar[data-v-43adfa6e]{-ms-overflow-style:none;scrollbar-width:none}.header-filter[data-v-a6f94d9f],.header-filter[data-v-94de9d01]{transition:all .3s;-webkit-backdrop-filter:saturate(180%) blur(7px);backdrop-filter:saturate(180%) blur(7px);background:#fff9}
|
||||
@@ -1 +0,0 @@
|
||||
.unselectable[data-v-87433eec]{-moz-user-select:none;-webkit-user-select:none;user-select:none}.fade-enter-active[data-v-87433eec],.fade-leave-active[data-v-87433eec]{transition:all .5s ease}.fade-enter-from[data-v-87433eec],.fade-leave-to[data-v-87433eec]{opacity:0;transform:translateY(30px)}.gg-enter-active[data-v-87433eec],.gg-leave-active[data-v-87433eec]{transition:all .5s ease}.gg-enter-from[data-v-87433eec],.gg-leave-to[data-v-87433eec]{opacity:0;transform:translateY(30px)}
|
||||
File diff suppressed because one or more lines are too long
+577
-519
File diff suppressed because it is too large
Load Diff
@@ -20,7 +20,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { debounce } from "lodash/function.js";
|
||||
import { debounce } from "lodash";
|
||||
|
||||
export default {
|
||||
name: "AdminIndexSearch",
|
||||
|
||||
+4
-1
@@ -115,7 +115,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
+4
-1
@@ -93,7 +93,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
-1
@@ -62,7 +62,6 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {debounce} from "lodash/function.js";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue";
|
||||
import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue";
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "BudgetFilter",
|
||||
components: {
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "CategoryFilter",
|
||||
components: {
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "FormEducationalFilter",
|
||||
components: {
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "LevelEduFilter",
|
||||
components: {
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "SortingByFilter",
|
||||
components: {
|
||||
|
||||
@@ -137,7 +137,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -93,7 +93,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -115,7 +115,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -93,7 +93,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<span v-if="this.filter.value !== null" class="inline-flex items-center gap-x-1.5 py-1.5 ps-3 pe-2 rounded-full text-xs font-medium bg-blue-100 text-blue-800">
|
||||
<span v-if="filter.value !== null" class="inline-flex items-center gap-x-1.5 py-1.5 ps-3 pe-2 rounded-full text-xs font-medium bg-blue-100 text-blue-800">
|
||||
{{ (filter.value.length > 1) ? filter.value.length + ' категории' : filter.content[filter.value[0]].data.title }}
|
||||
<button @click.prevent="clearFilter" type="button" class="shrink-0 size-4 inline-flex items-center justify-center rounded-full hover:bg-blue-200 focus:outline-none focus:bg-blue-200 focus:text-blue-500">
|
||||
<span class="sr-only">Remove badge</span>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<span v-if="this.filter.value !== null" class="inline-flex items-center gap-x-1.5 py-1.5 ps-3 pe-2 rounded-full text-xs font-medium bg-blue-100 text-blue-800">
|
||||
<span v-if="filter.value !== null" class="inline-flex items-center gap-x-1.5 py-1.5 ps-3 pe-2 rounded-full text-xs font-medium bg-blue-100 text-blue-800">
|
||||
Поиск: {{ filter.value }}
|
||||
<button @click.prevent="clearFilter" type="button" class="shrink-0 size-4 inline-flex items-center justify-center rounded-full hover:bg-blue-200 focus:outline-none focus:bg-blue-200 focus:text-blue-500">
|
||||
<span class="sr-only">Remove badge</span>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<span v-if="this.filter.value !== null" class="inline-flex items-center gap-x-1.5 py-1.5 ps-3 pe-2 rounded-full text-xs font-medium bg-blue-100 text-blue-800">
|
||||
<span v-if="filter.value !== null" class="inline-flex items-center gap-x-1.5 py-1.5 ps-3 pe-2 rounded-full text-xs font-medium bg-blue-100 text-blue-800">
|
||||
{{ (filter.value.length > 1) ? 'Тэг: ' + filter.value.length + ' значений' : '#' + JSON.parse(filter.content[filter.value].data.name).ru }}
|
||||
<button @click.prevent="clearFilter" type="button" class="shrink-0 size-4 inline-flex items-center justify-center rounded-full hover:bg-blue-200 focus:outline-none focus:bg-blue-200 focus:text-blue-500">
|
||||
<span class="sr-only">Remove badge</span>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
|
||||
<Link :href="route(this.link)" class="inline-flex items-center gap-x-1.5 text-sm text-gray-600 decoration-2 hover:underline dark:text-blue-500">
|
||||
<Link :href="route(link)" class="inline-flex items-center gap-x-1.5 text-sm text-gray-600 decoration-2 hover:underline dark:text-blue-500">
|
||||
<svg class="flex-shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg>
|
||||
{{ title }}
|
||||
</Link>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
</Link>
|
||||
</li>
|
||||
<li class="text-sm">
|
||||
<Link :href="this.$inertia.page.props.ziggy.location" class="flex items-center text-gray-500 hover:text-blue-600">
|
||||
<Link :href="$page.props.ziggy.location" class="flex items-center text-gray-500 hover:text-blue-600">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
@@ -74,7 +74,7 @@
|
||||
</Link>
|
||||
</li>
|
||||
<li class="text-sm">
|
||||
<Link :href="this.$inertia.page.props.ziggy.location" class="flex items-center text-gray-500 hover:text-blue-600">
|
||||
<Link :href="$page.props.ziggy.location" class="flex items-center text-gray-500 hover:text-blue-600">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
@@ -115,7 +115,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -94,7 +94,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -27,7 +27,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "CategoryFilter",
|
||||
components: {
|
||||
|
||||
@@ -19,7 +19,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "IsOnlineFilter",
|
||||
components: {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="min-w-[12rem] py-1 space-y-3">
|
||||
<h3 class="font-medium text-gray-900 text-sm mb-2">Сортировать по</h3>
|
||||
<div>
|
||||
<select @change="filter" v-model="sortOrder" class="py-2 px-3 pe-9 block w-full border-gray-200 rounded-lg text-sm focus:border-blue-500 focus:ring-blue-500 disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400 dark:placeholder-neutral-500 dark:focus:ring-neutral-600">
|
||||
<select @change="filter()" v-model="sortOrder" class="py-2 px-3 pe-9 block w-full border-gray-200 rounded-lg text-sm focus:border-blue-500 focus:ring-blue-500 disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400 dark:placeholder-neutral-500 dark:focus:ring-neutral-600">
|
||||
<option value="desc">Дате (Сначала новые)</option>
|
||||
<option value="asc">Дате (Сначала старые)</option>
|
||||
</select>
|
||||
@@ -17,7 +17,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "SortingByFilter",
|
||||
components: {
|
||||
|
||||
@@ -27,7 +27,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "TagFilter",
|
||||
components: {
|
||||
|
||||
@@ -115,7 +115,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -93,7 +93,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -11,36 +11,36 @@
|
||||
</Link>
|
||||
</li>
|
||||
<li v-if="breadcrumbs.mainSection" class="text-sm">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSectionClick(this.breadcrumbs.mainSection)">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSectionClick(breadcrumbs.mainSection)">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5 1L10.6869 7.16086C10.8637 7.35239 10.8637 7.64761 10.6869 7.83914L5 14"
|
||||
stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ textLimit(this.breadcrumbs.mainSection.data.title, 25) }}
|
||||
{{ textLimit(breadcrumbs.mainSection.data.title, 25) }}
|
||||
</span>
|
||||
</li>
|
||||
<li v-if="breadcrumbs.subSection" class="text-sm">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSubSectionClick(this.breadcrumbs.mainSection, this.breadcrumbs.subSection)">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSubSectionClick(breadcrumbs.mainSection, breadcrumbs.subSection)">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5 1L10.6869 7.16086C10.8637 7.35239 10.8637 7.64761 10.6869 7.83914L5 14"
|
||||
stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ textLimit(this.breadcrumbs.subSection.data.title, 25) }}
|
||||
{{ textLimit(breadcrumbs.subSection.data.title, 25) }}
|
||||
</span>
|
||||
</li>
|
||||
<li class="text-sm">
|
||||
<Link :href="route('page.view', this.breadcrumbs.page.data.path)" class="flex items-center text-gray-500 hover:text-primaryBlue">
|
||||
<Link :href="route('page.view', breadcrumbs.page.data.path)" class="flex items-center text-gray-500 hover:text-primaryBlue">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5 1L10.6869 7.16086C10.8637 7.35239 10.8637 7.64761 10.6869 7.83914L5 14"
|
||||
stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ textLimit(this.breadcrumbs.page.data.title, 25) }}
|
||||
{{ textLimit(breadcrumbs.page.data.title, 25) }}
|
||||
</Link>
|
||||
</li>
|
||||
</ol>
|
||||
@@ -52,14 +52,14 @@
|
||||
</Link>
|
||||
</li>
|
||||
<li class="text-sm">
|
||||
<Link :href="route('page.view', this.breadcrumbs.page.data.path)" class="flex items-center text-gray-500 hover:text-primaryBlue">
|
||||
<Link :href="route('page.view', breadcrumbs.page.data.path)" class="flex items-center text-gray-500 hover:text-primaryBlue">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5 1L10.6869 7.16086C10.8637 7.35239 10.8637 7.64761 10.6869 7.83914L5 14"
|
||||
stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ textLimit(this.breadcrumbs.page.data.title, 25) }}
|
||||
{{ textLimit(breadcrumbs.page.data.title, 25) }}
|
||||
</Link>
|
||||
</li>
|
||||
</ol>
|
||||
@@ -93,7 +93,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<template>
|
||||
|
||||
<div class="sticky top-[100px] hidden h-[calc(100vh-121px)] max-w-[20%] min-w-[20%] md:flex md:shrink-0 md:flex-col md:justify-between">
|
||||
<nav v-if="this.subSectionPages"
|
||||
<nav v-if="subSectionPages"
|
||||
class="styled-scrollbar flex h-[calc(100vh-200px)] flex-col overflow-y-scroll pr-2 pb-4">
|
||||
<div class="text-gray-1000 mb-2 text-md font-medium">{{ currentSection }}</div>
|
||||
<div class="flex gap-x-1">
|
||||
<ul class="px-0.5 last-of-type:mb-0 mb-8">
|
||||
<li v-for="page in this.subSectionPages.data" :key="page.id" class="my-1.5 flex">
|
||||
<li v-for="page in subSectionPages.data" :key="page.id" class="my-1.5 flex">
|
||||
<a :class="{'text-white font-semibold bg-primaryBlue': isSameRoute(page.path), 'text-gray-600 hover:text-[#2C6288]': !isSameRoute(page.path) }"
|
||||
:href="(page.is_url) ? page.path : route('page.view', page.path) + '/'"
|
||||
class="relative duration-300 flex gap-x-1 w-full rounded-md cursor-pointer items-center px-2 py-1 text-left text-sm">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<span v-if="this.filter.value !== null" class="inline-flex items-center gap-x-1.5 py-1.5 ps-3 pe-2 rounded-full text-xs font-medium bg-blue-100 text-blue-800">
|
||||
<span v-if="filter.value !== null" class="inline-flex items-center gap-x-1.5 py-1.5 ps-3 pe-2 rounded-full text-xs font-medium bg-blue-100 text-blue-800">
|
||||
Поиск: {{ filter.value }}
|
||||
<button @click.prevent="clearFilter" type="button" class="shrink-0 size-4 inline-flex items-center justify-center rounded-full hover:bg-blue-200 focus:outline-none focus:bg-blue-200 focus:text-blue-500">
|
||||
<span class="sr-only">Remove badge</span>
|
||||
|
||||
@@ -27,7 +27,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "CategoryFilter",
|
||||
components: {
|
||||
|
||||
@@ -17,7 +17,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "SortingByFilter",
|
||||
components: {
|
||||
|
||||
@@ -27,7 +27,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "TagFilter",
|
||||
components: {
|
||||
|
||||
@@ -11,25 +11,25 @@
|
||||
</Link>
|
||||
</li>
|
||||
<li v-if="breadcrumbs.mainSection" class="text-sm">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSectionClick(this.breadcrumbs.mainSection)">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSectionClick(breadcrumbs.mainSection)">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5 1L10.6869 7.16086C10.8637 7.35239 10.8637 7.64761 10.6869 7.83914L5 14"
|
||||
stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ textLimit(this.breadcrumbs.mainSection.data.title, 25) }}
|
||||
{{ textLimit(breadcrumbs.mainSection.data.title, 25) }}
|
||||
</span>
|
||||
</li>
|
||||
<li v-if="breadcrumbs.subSection" class="text-sm">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSubSectionClick(this.breadcrumbs.mainSection, this.breadcrumbs.subSection)">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSubSectionClick(breadcrumbs.mainSection, breadcrumbs.subSection)">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5 1L10.6869 7.16086C10.8637 7.35239 10.8637 7.64761 10.6869 7.83914L5 14"
|
||||
stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ textLimit(this.breadcrumbs.subSection.data.title, 25) }}
|
||||
{{ textLimit(breadcrumbs.subSection.data.title, 25) }}
|
||||
</span>
|
||||
</li>
|
||||
<li class="text-sm">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
|
||||
<Link :href="route(this.link)" class="inline-flex items-center gap-x-1.5 text-sm text-gray-600 decoration-2 hover:underline dark:text-blue-500">
|
||||
<Link :href="route(link)" class="inline-flex items-center gap-x-1.5 text-sm text-gray-600 decoration-2 hover:underline dark:text-blue-500">
|
||||
<svg class="flex-shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg>
|
||||
{{ title }}
|
||||
</Link>
|
||||
|
||||
@@ -11,25 +11,25 @@
|
||||
</Link>
|
||||
</li>
|
||||
<li v-if="breadcrumbs.mainSection" class="text-sm">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSectionClick(this.breadcrumbs.mainSection)">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSectionClick(breadcrumbs.mainSection)">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5 1L10.6869 7.16086C10.8637 7.35239 10.8637 7.64761 10.6869 7.83914L5 14"
|
||||
stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ textLimit(this.breadcrumbs.mainSection.data.title, 25) }}
|
||||
{{ textLimit(breadcrumbs.mainSection.data.title, 25) }}
|
||||
</span>
|
||||
</li>
|
||||
<li v-if="breadcrumbs.subSection" class="text-sm">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSubSectionClick(this.breadcrumbs.mainSection, this.breadcrumbs.subSection)">
|
||||
<span class="flex items-center text-gray-500 hover:text-primaryBlue cursor-pointer" @click.prevent="handleSubSectionClick(breadcrumbs.mainSection, breadcrumbs.subSection)">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5 1L10.6869 7.16086C10.8637 7.35239 10.8637 7.64761 10.6869 7.83914L5 14"
|
||||
stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
{{ textLimit(this.breadcrumbs.subSection.data.title, 25) }}
|
||||
{{ textLimit(breadcrumbs.subSection.data.title, 25) }}
|
||||
</span>
|
||||
</li>
|
||||
<li class="text-sm">
|
||||
@@ -43,8 +43,9 @@
|
||||
{{ textLimit('Новости', 30) }}
|
||||
</Link>
|
||||
</li>
|
||||
|
||||
<li class="text-sm">
|
||||
<Link :href="this.$inertia.page.props.ziggy.location" class="flex items-center text-gray-500 hover:text-blue-600">
|
||||
<Link :href="$page.props.ziggy.location" class="flex items-center text-gray-500 hover:text-blue-600">
|
||||
<svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
|
||||
width="16" height="16"
|
||||
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
@@ -80,7 +81,7 @@
|
||||
</Link>
|
||||
</li>
|
||||
<li class="text-sm">
|
||||
<Link :href="this.$inertia.page.props.ziggy.location" class="flex items-center text-gray-500 hover:text-blue-600">
|
||||
<Link :href="$inertia.page.props.ziggy.location" class="flex items-center text-gray-500 hover:text-blue-600">
|
||||
{{ postTitle }}
|
||||
</Link>
|
||||
</li>
|
||||
@@ -90,7 +91,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -115,7 +115,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
@@ -191,6 +194,7 @@ export default {
|
||||
props: {
|
||||
breadcrumbs: {
|
||||
type: Object,
|
||||
default: () => ({}), // Default to an empty object
|
||||
},
|
||||
postTitle: {
|
||||
type: String,
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue";
|
||||
import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue";
|
||||
|
||||
@@ -26,7 +26,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "BudgetFilter",
|
||||
components: {
|
||||
|
||||
@@ -26,7 +26,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "DirectionFilter",
|
||||
components: {
|
||||
|
||||
@@ -26,7 +26,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "FormEducationalFilter",
|
||||
components: {
|
||||
|
||||
@@ -10,7 +10,8 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
|
||||
export default {
|
||||
name: "LevelEduFilter",
|
||||
components: {
|
||||
|
||||
@@ -17,7 +17,7 @@ import slugify from "slugify";
|
||||
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
|
||||
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
export default {
|
||||
name: "SortingByFilter",
|
||||
components: {
|
||||
|
||||
@@ -115,7 +115,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -93,7 +93,10 @@ export default {
|
||||
return text
|
||||
},
|
||||
isMobileDevice() {
|
||||
return window.innerWidth < 1024; // Задайте порог для мобильных устройств
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.innerWidth < 1024; // Проверка на мобильные устройства
|
||||
}
|
||||
return false; // По умолчанию возвращаем false, когда не в браузере
|
||||
},
|
||||
handleSectionClick(breadcrumb) {
|
||||
if (this.isMobileDevice()) {
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {debounce} from "lodash/function.js";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue";
|
||||
import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue";
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
import {Link} from "@inertiajs/vue3";
|
||||
import {Inertia} from "@inertiajs/inertia";
|
||||
import ResultList from "@/Components/Search/ResultList.vue";
|
||||
|
||||
@@ -40,11 +40,11 @@
|
||||
</button>
|
||||
|
||||
<div class="flex space-x-3 w-[100px] items-center font-semibold text-xl">
|
||||
<span>{{ this.currentIndex + 1 }}</span>
|
||||
<div class="flex w-full h-1 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700 " role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
|
||||
<span>{{ currentIndex + 1 }}</span>
|
||||
<div class="flex w-full h-1 bg-gray-200 rounded-full overflow-hidden dark:bg-neutral-700" role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
|
||||
<div class="flex flex-col justify-center rounded-full overflow-hidden bg-blue-600 text-xs text-white text-center whitespace-nowrap transition duration-500 dark:bg-blue-500 my-slider-progress-bar" :style="{ 'width': `${percentage}%` }"></div>
|
||||
</div>
|
||||
<span> {{ slidersCarousel.data.length }}</span>
|
||||
<span>{{ slidersCarousel.data.length }}</span>
|
||||
</div>
|
||||
|
||||
<button @click="next" class="bg-gray-200 w-8 h-8 hover:bg-gray-300 text-gray-800 font-bold rounded-full">
|
||||
@@ -65,6 +65,7 @@ export default {
|
||||
props: {
|
||||
slidersCarousel: {
|
||||
type: Object,
|
||||
required: true, // Убедитесь, что пропс передан
|
||||
},
|
||||
},
|
||||
data() {
|
||||
@@ -77,17 +78,21 @@ export default {
|
||||
},
|
||||
computed: {
|
||||
totalSlides() {
|
||||
return this.slidersCarousel.data.length;
|
||||
return this.slidersCarousel && this.slidersCarousel.data ? this.slidersCarousel.data.length : 0;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
next() {
|
||||
this.currentIndex = (this.currentIndex + 1) % this.totalSlides;
|
||||
this.resetTimer();
|
||||
if (this.totalSlides > 0) {
|
||||
this.currentIndex = (this.currentIndex + 1) % this.totalSlides;
|
||||
this.resetTimer();
|
||||
}
|
||||
},
|
||||
prev() {
|
||||
this.currentIndex = (this.currentIndex - 1 + this.totalSlides) % this.totalSlides;
|
||||
this.resetTimer();
|
||||
if (this.totalSlides > 0) {
|
||||
this.currentIndex = (this.currentIndex - 1 + this.totalSlides) % this.totalSlides;
|
||||
this.resetTimer();
|
||||
}
|
||||
},
|
||||
progressStatus() {
|
||||
if (this.percentage >= 100) {
|
||||
@@ -133,3 +138,5 @@ export default {
|
||||
transform: translateY(30px);
|
||||
}
|
||||
</style>
|
||||
|
||||
Найти еще
|
||||
@@ -99,7 +99,7 @@ export default {
|
||||
|
||||
props: {
|
||||
post: {
|
||||
type: Array,
|
||||
type: Object,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -66,7 +66,6 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {debounce} from "lodash/function.js";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue";
|
||||
import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue";
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { debounce } from "lodash/function.js";
|
||||
import { debounce } from "lodash";
|
||||
|
||||
export default {
|
||||
name: "AdminIndexSearch",
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue";
|
||||
import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue";
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { debounce } from "lodash/function.js";
|
||||
import { debounce } from "lodash";
|
||||
|
||||
export default {
|
||||
name: "AdminIndexSearch",
|
||||
|
||||
@@ -14,15 +14,15 @@
|
||||
|
||||
import {Link} from "@inertiajs/vue3";
|
||||
import axios from "axios";
|
||||
import ClientGlobalSearch from "@/Components/ClientGlobalSearch.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import {defineAsyncComponent} from "vue";
|
||||
|
||||
|
||||
export default {
|
||||
name: 'SearchModal',
|
||||
props: {
|
||||
open_id: {
|
||||
type: Object,
|
||||
type: String,
|
||||
}
|
||||
|
||||
},
|
||||
@@ -31,7 +31,9 @@ export default {
|
||||
},
|
||||
components: {
|
||||
BaseIcon,
|
||||
ClientGlobalSearch,
|
||||
ClientGlobalSearch: defineAsyncComponent(() =>
|
||||
import('@/Components/ClientGlobalSearch.vue')
|
||||
),
|
||||
Link,
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
|
||||
export default {
|
||||
name: "CategorySearchList",
|
||||
|
||||
@@ -5,59 +5,63 @@
|
||||
class="overflow-hidden overflow-y-auto max-h-[75vh] [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300">
|
||||
<div
|
||||
class="flex flex-col gap-x-0 mt-5 md:flex-row md:items-center md:justify-end md:gap-x-7 md:mt-0 md:ps-7 md:divide-y-0 md:divide-solid">
|
||||
<template v-for="section in this.sections.data" :key="section.id">
|
||||
<div
|
||||
:id="'nav-section-' + section.slug"
|
||||
class="hs-dropdown [--strategy:static] md:[--strategy:absolute] [--adaptive:none] md:[--trigger:hover] py-3 md:py-6">
|
||||
<button
|
||||
:id="'nav-section-btn-' + section.slug"
|
||||
type="button" :class="!underSliderHeader ? 'text-white' : 'text-black'"
|
||||
class="duration-300 flex items-center w-full hover:text-primaryBlue font-medium hs-dropdown-open:mb-4 md:hs-dropdown-open:mb-0">
|
||||
{{ section.title }}
|
||||
<svg class="flex-shrink-0 ms-2 w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
|
||||
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="m6 9 6 6 6-6"/>
|
||||
</svg>
|
||||
</button>
|
||||
<template v-if="sections && sections.data">
|
||||
<template v-for="section in sections.data" :key="section.id">
|
||||
<div
|
||||
:id="'nav-section-menu-' + section.slug"
|
||||
class="hs-dropdown-menu transition-opacity duration-150 md:duration-500 hs-dropdown-open:opacity-100 opacity-0 w-full hidden z-10 top-full start-0 min-w-[15rem] bg-white md:shadow-2xl rounded-lg py-2 md:p-4 before:absolute before:-top-5 before:start-0 before:w-full before:h-5">
|
||||
<div class="grid px-5 grid-cols-1 md:grid-cols-10">
|
||||
:id="'nav-section-' + section.slug"
|
||||
class="hs-dropdown [--strategy:static] md:[--strategy:absolute] [--adaptive:none] md:[--trigger:hover] py-3 md:py-6">
|
||||
<button
|
||||
:id="'nav-section-btn-' + section.slug"
|
||||
type="button"
|
||||
:class="!underSliderHeader ? 'text-white' : 'text-black'"
|
||||
class="duration-300 flex items-center w-full hover:text-primaryBlue font-medium hs-dropdown-open:mb-4 md:hs-dropdown-open:mb-0">
|
||||
{{ section.title }}
|
||||
<svg class="flex-shrink-0 ms-2 w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
|
||||
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="m6 9 6 6 6-6"/>
|
||||
</svg>
|
||||
</button>
|
||||
<div
|
||||
:id="'nav-section-menu-' + section.slug"
|
||||
class="hs-dropdown-menu transition-opacity duration-150 md:duration-500 hs-dropdown-open:opacity-100 opacity-0 w-full hidden z-10 top-full start-0 min-w-[15rem] bg-white md:shadow-2xl rounded-lg py-2 md:p-4 before:absolute before:-top-5 before:start-0 before:w-full before:h-5">
|
||||
<div class="grid px-5 grid-cols-1 md:grid-cols-10">
|
||||
|
||||
<template v-for="subsection in section.subSections" :key="subsection.id">
|
||||
<div :id="'nav-sub-section-block-' + subsection.slug" class="md:col-span-3">
|
||||
<div class="flex flex-col py-4 px-3 md:px-6">
|
||||
<div class="space-y-4">
|
||||
<div class="flex items-center mb-2 gap-x-2">
|
||||
<span
|
||||
:id="'nav-sub-section-title-' + subsection.slug"
|
||||
class="text-xs font-bold uppercase text-gray-800 dark:text-gray-200">
|
||||
{{ subsection.title }}
|
||||
</span>
|
||||
<template v-for="subsection in section.subSections" :key="subsection.id">
|
||||
<div :id="'nav-sub-section-block-' + subsection.slug" class="md:col-span-3">
|
||||
<div class="flex flex-col py-4 px-3 md:px-6">
|
||||
<div class="space-y-4">
|
||||
<div class="flex items-center mb-2 gap-x-2">
|
||||
<span
|
||||
:id="'nav-sub-section-title-' + subsection.slug"
|
||||
class="text-xs font-bold uppercase text-gray-800 dark:text-gray-200">
|
||||
{{ subsection.title }}
|
||||
</span>
|
||||
</div>
|
||||
<template v-for="page in subsection.pages" :key="page.id">
|
||||
<a
|
||||
:class="{ 'text-[#135aae] hover:text-gray-800 font-semibold': isSameRoute(page.path), 'text-gray-800 hover:text-[#2C6288]': !isSameRoute(page.path) }"
|
||||
class="flex items-center gap-x-2"
|
||||
:href="(page.is_url) ? page.path : route('page.view', page.path) + '/'">
|
||||
<div class="grow">
|
||||
<p>{{ page.title }}</p>
|
||||
</div>
|
||||
</a>
|
||||
</template>
|
||||
</div>
|
||||
<template v-for="page in subsection.pages" :key="page.id">
|
||||
<a :class="{'text-[#135aae] hover:text-gray-800 font-semibold ' : isSameRoute(page.path), 'text-gray-800 hover:text-[#2C6288]' : !isSameRoute(page.path) }"
|
||||
class="flex items-center gap-x-2"
|
||||
:href="(page.is_url) ? page.path : route('page.view', page.path) + '/'">
|
||||
<div class="grow">
|
||||
<p>{{ page.title }}</p>
|
||||
</div>
|
||||
</a>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="#" class="hover:opacity-70 py-3 className">
|
||||
<svg :class="!underSliderHeader ? 'text-white' : 'text-black'" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
@@ -111,7 +115,6 @@ export default {
|
||||
type: Object,
|
||||
},
|
||||
underSliderHeader: {
|
||||
type: HTMLDivElement,
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
@@ -123,10 +123,10 @@
|
||||
|
||||
import {Link} from "@inertiajs/vue3";
|
||||
import axios from "axios";
|
||||
import ClientGlobalSearch from "@/Components/ClientGlobalSearch.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import MobileNavbar from "@/Navbars/MobileNavbar.vue";
|
||||
import SearchModal from "@/Components/Modals/SearchModal.vue";
|
||||
import {defineAsyncComponent} from "vue";
|
||||
|
||||
|
||||
export default {
|
||||
@@ -144,7 +144,9 @@ export default {
|
||||
SearchModal,
|
||||
MobileNavbar,
|
||||
BaseIcon,
|
||||
ClientGlobalSearch,
|
||||
ClientGlobalSearch: defineAsyncComponent(() =>
|
||||
import('@/Components/ClientGlobalSearch.vue')
|
||||
),
|
||||
Link,
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -38,14 +38,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<DesktopNavBar :sections="sections" :under-slider-header="underSliderHeader" />
|
||||
|
||||
<DesktopNavBar v-if="sections" :sections="sections" :under-slider-header="underSliderHeader" />
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<MobileNavbar :sections="sections" />
|
||||
<MobileNavbar v-if="sections" :sections="sections" />
|
||||
|
||||
|
||||
<SearchModal open_id="open-search-modal" />
|
||||
@@ -57,7 +56,7 @@
|
||||
import {Link} from "@inertiajs/vue3";
|
||||
import axios from "axios";
|
||||
import ClientGlobalSearch from "@/Components/ClientGlobalSearch.vue";
|
||||
import * as isvek from "bvi"
|
||||
// import * as isvek from "bvi"
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
import MobileNavbar from "@/Navbars/MobileNavbar.vue";
|
||||
import SearchModal from "@/Components/Modals/SearchModal.vue";
|
||||
@@ -79,7 +78,6 @@ export default {
|
||||
type: Object,
|
||||
},
|
||||
sliderRef: {
|
||||
type: HTMLDivElement,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
@@ -123,15 +121,6 @@ export default {
|
||||
return section.subSections.some(subSection => this.hasActivePage(subSection));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// // Проверяем наличие активной страницы в подсекциях
|
||||
// const hasActiveInSubSections = section.subSections && section.subSections.some(subSection => this.hasActivePage(subSection));
|
||||
//
|
||||
// console.log(hasActiveInSubSections)
|
||||
//
|
||||
//
|
||||
// return hasActiveInPages || hasActiveInSubSections;
|
||||
},
|
||||
|
||||
handleScroll() {
|
||||
@@ -159,21 +148,19 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
window.addEventListener('scroll', this.handleScroll)
|
||||
window.addEventListener('scroll', this.checkSlider)
|
||||
if (this.getCookie('bvi_panelActive') === null) {
|
||||
this.bvi = new isvek.Bvi({
|
||||
target: '.className',
|
||||
fontSize: 24,
|
||||
theme: 'black',
|
||||
speech: false,
|
||||
reload: true,
|
||||
//...etc
|
||||
});
|
||||
}
|
||||
// if (this.getCookie('bvi_panelActive') === null) {
|
||||
// this.bvi = new isvek.Bvi({
|
||||
// target: '.className',
|
||||
// fontSize: 24,
|
||||
// theme: 'black',
|
||||
// speech: false,
|
||||
// reload: true,
|
||||
// //...etc
|
||||
// });
|
||||
// }
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('scroll', this.handleScroll)
|
||||
window.removeEventListener('scroll', this.checkSlider)
|
||||
},
|
||||
computed: {
|
||||
currentLogo() {
|
||||
|
||||
@@ -127,13 +127,13 @@ export default {
|
||||
</div>
|
||||
<div class="px-2 mx-auto">
|
||||
<div class="flex-wrap flex gap-3 md:items-center">
|
||||
<ProgramBadge :filters="this.filters" />
|
||||
<ProgramBadge :filters="filters" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container py-5 lg:py-4">
|
||||
<div class="w-full mx-auto flex flex-wrap lg:justify-between">
|
||||
<template v-for="educations in transformToColumns(this.additionalEducations.data)">
|
||||
<template v-for="educations in transformToColumns(additionalEducations.data)">
|
||||
<div class="flex flex-col">
|
||||
<template v-for="education in educations">
|
||||
<div style="height: max-content" class="px-2">
|
||||
|
||||
@@ -164,7 +164,7 @@ export default {
|
||||
<div>
|
||||
<h2 class="text-xl font-bold md:text-2xl">О программе</h2>
|
||||
<div class="py-4 px-5">
|
||||
<ProgramBuilder :blocks="this.additionalEducation.data.content" />
|
||||
<ProgramBuilder :blocks="additionalEducation.data.content" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Icon Blocks -->
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
<div class="relative mx-auto mb-auto mt-[67px] max-w-screen-xl w-full px-4 py-10 md:flex md:flex-row md:py-10">
|
||||
<PageSubSectionLinks :sub-section-pages="subSectionPages" :current-section="page.data.section"/>
|
||||
<PageNavigateLinks :header-navs="this.headerNavs"/>
|
||||
<PageNavigateLinks :header-navs="headerNavs"/>
|
||||
<div class="w-full min-w-0 mt-1 max-w-6xl px-1 md:px-6" style="">
|
||||
<div class="space-y-5 md:space-y-5">
|
||||
<PageBreadcrumbs :breadcrumbs="breadcrumbs" :page-title="page.data.title"/>
|
||||
<PageTitle :header="page.data.title"/>
|
||||
<div id="page-area" class="space-y-4">
|
||||
<PageBuilder :blocks="this.page.data.content"/>
|
||||
<PageBuilder :blocks="page.data.content"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
<div class="w-full h-[67px] pointer-events-none fixed" id="visor"></div>
|
||||
|
||||
<div class="sticky top-[110px] hidden h-[calc(100vh-110px)] max-w-[20%] md:flex md:shrink-0 md:flex-col md:justify-between">
|
||||
<nav v-if="this.departments"
|
||||
<nav v-if="departments"
|
||||
class="styled-scrollbar flex h-[calc(100vh-200px)] flex-col overflow-y-scroll pr-2 pb-4">
|
||||
<div class="text-gray-1000 mb-2 text-md font-medium">Кафедры факультета - {{ department.data.faculty.abbreviation }}</div>
|
||||
<div class="flex gap-x-1">
|
||||
<ul class="px-0.5 last-of-type:mb-0 mb-8">
|
||||
<li v-for="depart in this.departments.data" :key="department.id" class="my-1.5 flex">
|
||||
<li v-for="depart in departments.data" :key="department.id" class="my-1.5 flex">
|
||||
<a :class="{'text-white hover:text-gray-200 font-semibold bg-[#135aae]': isSameRoute(route('client.department.show', { facultySlug: department.data.faculty.slug, departmentSlug: depart.slug })), 'text-gray-600 hover:text-[#2C6288]': !isSameRoute(route('client.department.show', { facultySlug: department.data.faculty.slug, departmentSlug: depart.slug })) }"
|
||||
:href="route('client.department.show', { facultySlug: department.data.faculty.slug, departmentSlug: depart.slug }) + '/'"
|
||||
class="relative duration-300 flex w-full rounded-md cursor-pointer items-center px-2 py-1 text-left text-sm">{{
|
||||
@@ -34,27 +34,27 @@
|
||||
<div class="text-gray-1000 mb-2 text-md font-medium">На этой странице</div>
|
||||
<ul class="styled-scrollbar max-h-[70vh] space-y-1.5 overflow-y-auto py-2 text-sm">
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'workers', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'workers' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'workers', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'workers' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#workers">Сотрудники кафедры</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'teachers', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'teachers' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'teachers', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'teachers' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#teachers">Преподаватели кафедры</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'external-teachers', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'external-teachers' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'external-teachers', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'external-teachers' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#external-teachers">Внешние совместители</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'programs', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'programs' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'programs', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'programs' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#programs">Программы</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'description', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'description' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'description', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'description' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#description">Описание</a>
|
||||
</li>
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
|
||||
<div class="space-y-3 md:space-y-4">
|
||||
<DepartmentBuilder :blocks="this.department.data.content "/>
|
||||
<DepartmentBuilder :blocks="department.data.content "/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
<div class="w-full h-[67px] fixed pointer-events-none" id="visor"></div>
|
||||
|
||||
<div class="sticky top-[110px] hidden h-[calc(100vh-110px)] max-w-[20%] md:flex md:shrink-0 md:flex-col md:justify-between">
|
||||
<nav v-if="this.divisions"
|
||||
<nav v-if="divisions"
|
||||
class="styled-scrollbar flex h-[calc(100vh-200px)] flex-col overflow-y-scroll pr-2 pb-4">
|
||||
<div class="text-gray-1000 mb-2 text-md font-medium">Подразделения</div>
|
||||
<div class="flex gap-x-1">
|
||||
<ul class="px-0.5 last-of-type:mb-0 mb-8">
|
||||
<li v-for="division in this.divisions.data" :key="division.id" class="my-1.5 flex">
|
||||
<li v-for="division in divisions.data" :key="division.id" class="my-1.5 flex">
|
||||
<a :class="{'text-white hover:text-gray-200 font-semibold bg-[#135aae]': isSameRoute(route('client.division.show', division.slug)), 'text-gray-600 hover:text-[#2C6288]': !isSameRoute(route('client.division.show', division.id)) }"
|
||||
:href="route('client.division.show', division.slug) + '/'"
|
||||
class="relative duration-300 flex w-full rounded-md cursor-pointer items-center px-2 py-1 text-left text-sm">{{
|
||||
@@ -37,12 +37,12 @@
|
||||
<div class="text-gray-1000 mb-2 text-md font-medium">На этой странице</div>
|
||||
<ul class="styled-scrollbar max-h-[70vh] space-y-1.5 overflow-y-auto py-2 text-sm">
|
||||
<li v-if="division.data.workers.length > 0" class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'persons', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'persons' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'persons', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'persons' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#persons">Состав</a>
|
||||
</li>
|
||||
<li v-if="division.data.description.length > 0" class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'description', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'description' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'description', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'description' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#description">Описание</a>
|
||||
</li>
|
||||
|
||||
@@ -37,7 +37,7 @@ export default {
|
||||
},
|
||||
props: {
|
||||
events: {
|
||||
type: Array,
|
||||
type: Object,
|
||||
},
|
||||
currentDate: {
|
||||
type: String,
|
||||
@@ -46,7 +46,7 @@ export default {
|
||||
type: Array,
|
||||
},
|
||||
navigation: {
|
||||
type: Array,
|
||||
type: Object,
|
||||
},
|
||||
filters: {
|
||||
type: Array,
|
||||
@@ -83,7 +83,7 @@ export default {
|
||||
<h1 class="block text-brand-primary text-center mb-3 mt-2 mr-4 text-3xl font-semibold tracking-tight dark:text-white lg:text-[40px] lg:leading-tight">
|
||||
Мероприятия НТГСПИ
|
||||
</h1>
|
||||
<ClientEventFilter :is_online_filter="filters.is_online_filter" :categories="this.categories" :category_filter="filters.category_filter" :sorting-by_filter="filters.sortingBy_filter" />
|
||||
<ClientEventFilter :is_online_filter="filters.is_online_filter" :categories="categories" :category_filter="filters.category_filter" :sorting-by_filter="filters.sortingBy_filter" />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<script>
|
||||
import MainNavbar from "@/Navbars/MainNavbar.vue";
|
||||
import {Head, Link} from "@inertiajs/vue3";
|
||||
import FsLightbox from "fslightbox-vue/v3";
|
||||
import ClientScrollTimeline from "@/Components/ClientScrollTimeline.vue";
|
||||
import ClientFooterDown from "@/Components/ClientFooterDown.vue";
|
||||
import ClientImageSlider from "@/Components/ClientImageSlider.vue";
|
||||
@@ -9,7 +8,6 @@ import EventBackButton from "@/Components/BuilderUi/Events/EventBackButton.vue";
|
||||
import TitleEvent from "@/Components/BuilderUi/Events/TitleEvent.vue";
|
||||
import PostBuilder from "@/Components/BuilderUi/Posts/PostBuilder.vue";
|
||||
import EventBuilder from "@/Components/BuilderUi/Events/EventBuilder.vue";
|
||||
import EventtBuilder from "@/Components/BuilderUi/Events/EventBuilder.vue";
|
||||
import ClientEventSelectDate from "@/Components/ClientEventSelectDate.vue";
|
||||
import ClientEventFilter from "@/Components/ClientEventFilter.vue";
|
||||
import MainPageNavBar from "@/Navbars/MainPageNavbar.vue";
|
||||
@@ -22,25 +20,22 @@ export default {
|
||||
EventItemBreadcrumbs,
|
||||
MainPageNavBar,
|
||||
ClientEventFilter, ClientEventSelectDate,
|
||||
EventtBuilder,
|
||||
EventBuilder,
|
||||
PostBuilder,
|
||||
TitleEvent,
|
||||
EventBackButton,
|
||||
ClientImageSlider, ClientFooterDown, ClientScrollTimeline, Link, MainNavbar, FsLightbox, Head},
|
||||
ClientImageSlider, ClientFooterDown, ClientScrollTimeline, Link, MainNavbar, Head},
|
||||
data() {
|
||||
return {
|
||||
blocks: this.event.data.content,
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
props: {
|
||||
event: {
|
||||
type: Array,
|
||||
type: Object,
|
||||
},
|
||||
navigation: {
|
||||
type: Array,
|
||||
type: Object,
|
||||
},
|
||||
breadcrumbs: {
|
||||
type: Object
|
||||
@@ -101,7 +96,7 @@ export default {
|
||||
</div>
|
||||
|
||||
<div class="space-y-3 md:space-y-4">
|
||||
<EventBuilder :blocks="this.blocks"/>
|
||||
<EventBuilder :blocks="event.data.content"/>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
|
||||
|
||||
<div class="sticky top-[110px] hidden h-[calc(100vh-110px)] max-w-[20%] md:flex md:shrink-0 md:flex-col md:justify-between">
|
||||
<nav v-if="this.faculties"
|
||||
<nav v-if="faculties"
|
||||
class="styled-scrollbar flex h-[calc(100vh-200px)] flex-col overflow-y-scroll pr-2 pb-4">
|
||||
<div class="text-gray-1000 mb-2 text-md font-medium">Факультеты</div>
|
||||
<div class="flex gap-x-1">
|
||||
<ul class="px-0.5 last-of-type:mb-0 mb-8">
|
||||
<li v-for="faculty in this.faculties.data" :key="faculty.id" class="my-1.5 flex">
|
||||
<li v-for="faculty in faculties.data" :key="faculty.id" class="my-1.5 flex">
|
||||
<a :class="{'text-white hover:text-gray-200 font-semibold bg-[#135aae]': isSameRoute(route('client.faculty.show', faculty.slug)), 'text-gray-600 hover:text-[#2C6288]': !isSameRoute(route('client.faculty.show', faculty.id)) }"
|
||||
:href="route('client.faculty.show', faculty.slug) + '/'"
|
||||
class="relative duration-300 flex w-full rounded-md cursor-pointer items-center px-2 py-1 text-left text-sm">{{
|
||||
@@ -39,17 +39,17 @@
|
||||
<div class="text-gray-1000 mb-2 text-md font-medium">На этой странице</div>
|
||||
<ul class="styled-scrollbar max-h-[70vh] space-y-1.5 overflow-y-auto py-2 text-sm">
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'persons', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'persons' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'persons', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'persons' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#persons">Состав</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'department', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'department' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'department', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'department' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#department">Кафедры факультета</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'description', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'description' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'description', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'description' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#description">Описание</a>
|
||||
</li>
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
|
||||
<div class="space-y-3 md:space-y-4">
|
||||
<FacultyBuilder :blocks="this.faculty.data.content "/>
|
||||
<FacultyBuilder :blocks="faculty.data.content "/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -81,7 +81,7 @@ export default {
|
||||
</div>
|
||||
|
||||
|
||||
<template v-for="block in this.blocks" :key="block.id">
|
||||
<template v-for="block in blocks" :key="block.id">
|
||||
<div v-if="block.type === 'heading'">
|
||||
<h2 class="font-bold text-xl">{{ block.data.content }}</h2>
|
||||
</div>
|
||||
@@ -158,7 +158,7 @@ export default {
|
||||
</div>
|
||||
|
||||
|
||||
<template v-for="block in this.blocks" :key="block.id">
|
||||
<template v-for="block in blocks" :key="block.id">
|
||||
<div v-if="block.type === 'heading'">
|
||||
<h2 class="font-bold text-xl">{{ block.data.content }}</h2>
|
||||
</div>
|
||||
|
||||
@@ -84,7 +84,7 @@ export default {
|
||||
</div>
|
||||
|
||||
|
||||
<template v-for="block in this.blocks" :key="block.id">
|
||||
<template v-for="block in blocks" :key="block.id">
|
||||
<div v-if="block.type === 'heading'">
|
||||
<h2 class="font-bold text-xl">{{ block.data.content }}</h2>
|
||||
</div>
|
||||
|
||||
@@ -4,10 +4,6 @@
|
||||
<meta name="description" content="Your page description">
|
||||
</Head>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-col h-screen">
|
||||
<MainPageNavBar class="border-b" :sections="$page.props.navigation"></MainPageNavBar>
|
||||
|
||||
@@ -22,60 +18,60 @@
|
||||
<div class="text-gray-1000 mb-2 text-md font-medium">На этой странице</div>
|
||||
<ul class="styled-scrollbar max-h-[70vh] space-y-1.5 overflow-y-auto py-2 text-sm">
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'education', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'education' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'education', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'education' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#education">Образование
|
||||
</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'awards', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'awards' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'awards', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'awards' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#awards">Награды</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'professionalRetraining', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'professionalRetraining' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'professionalRetraining', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'professionalRetraining' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#professionalRetraining">Профессиональная переподготовка
|
||||
</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'professionalDevelopment', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'professionalDevelopment' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'professionalDevelopment', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'professionalDevelopment' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#professionalDevelopment">Повышение квалификации
|
||||
</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'professDisciplines', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'professDisciplines' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'professDisciplines', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'professDisciplines' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#professDisciplines">Преподаваемые дисциплины
|
||||
</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'workExperience', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'workExperience' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'workExperience', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'workExperience' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#workExperience">Стаж работы
|
||||
</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'attendedConferences', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'attendedConferences' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'attendedConferences', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'attendedConferences' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#attendedConferences">Участие в конференциях
|
||||
</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'participationScienceProjects', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'participationScienceProjects' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'participationScienceProjects', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'participationScienceProjects' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#participationScienceProjects">Участие в научных проектах
|
||||
</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'publications', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'publications' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'publications', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'publications' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#publications">Публикации
|
||||
</a>
|
||||
</li>
|
||||
<li class="anchor-li">
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : this.currentNavSection === 'other', 'bg-transperant text-gray-600 hover:text-gray-900' : this.currentNavSection !== 'other' }"
|
||||
<a :class="{ 'translate-x-2 text-[#135aae]' : currentNavSection === 'other', 'bg-transperant text-gray-600 hover:text-gray-900' : currentNavSection !== 'other' }"
|
||||
class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
|
||||
href="#other">Другое
|
||||
</a>
|
||||
|
||||
@@ -43,7 +43,7 @@ export default {
|
||||
type: Object,
|
||||
},
|
||||
filters: {
|
||||
type: Object,
|
||||
type: Array,
|
||||
},
|
||||
categories: {
|
||||
type: Object,
|
||||
@@ -84,15 +84,15 @@ export default {
|
||||
<NewsBreadcrumbs :breadcrumbs="breadcrumbs" class="px-5" />
|
||||
<div>
|
||||
<AdminIndexHeader>
|
||||
<ClientPostSearch :search_filter="this.filters.search_filter" />
|
||||
<ClientPostFilter :sorting-by_filter="this.filters.sortingBy_filter" :category_filter="this.filters.category_filter" :tag_filter="this.filters.tag_filter" :tags="tags" :items="categories"/>
|
||||
<ClientPostSearch :search_filter="filters.search_filter" />
|
||||
<ClientPostFilter :sorting-by_filter="filters.sortingBy_filter" :category_filter="filters.category_filter" :tag_filter="filters.tag_filter" :tags="tags" :items="categories"/>
|
||||
</AdminIndexHeader>
|
||||
|
||||
|
||||
<div class="px-6">
|
||||
<h3 v-if="filters.category_filter.value || filters.tag_filter.value || filters.search_filter.value" class="text-sm text-gray-500 mb-4">Найдено новостей: {{ posts.meta.total }}</h3>
|
||||
<div class="flex-wrap flex gap-3 md:items-center">
|
||||
<PostBadge :filters="this.filters" />
|
||||
<PostBadge v-if="filters.length > 0" :filters="filters" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ export default {
|
||||
default: ''
|
||||
},
|
||||
breadcrumbs: {
|
||||
type: Object
|
||||
type: Object,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -95,9 +95,9 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<PostBuilder :blocks="this.blocks"/>
|
||||
<PostBuilder :blocks="blocks"/>
|
||||
<div>
|
||||
<PostGallery :title="post.data.title" :images="post.data.gallery"/>
|
||||
<PostGallery v-if="post.data.gallery.length > 1" :title="post.data.title" :images="post.data.gallery"/>
|
||||
</div>
|
||||
<div>
|
||||
<a :href="route('client.post.index', { 'tag[]': tag.slug })" v-for="tag in post.data.tags" class="m-1 inline-flex items-center gap-1.5 py-2 px-3 rounded-full text-sm bg-gray-100 text-gray-800 hover:bg-gray-200 focus:outline-none focus:bg-gray-200 dark:bg-neutral-800 dark:text-neutral-200 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700" href="#">
|
||||
|
||||
@@ -152,7 +152,7 @@ export default {
|
||||
<template v-for="contest in admissionPlan.contests">
|
||||
<div class="border rounded my-2 py-1">
|
||||
<span class="text-gray-500 text-[14px]">{{ (contest.form_education === '1') ? 'Очная форма обучения' : 'Заочная форма обучения' }}</span>
|
||||
<p v-for="place in contest.places" class="mt-1 text-gray-600">{{ place.count }} мест <span class="text-gray-400 text-[12px]">{{ this.formsEdu[place.form_budget] }}</span></p>
|
||||
<p v-for="place in contest.places" class="mt-1 text-gray-600">{{ place.count }} мест <span class="text-gray-400 text-[12px]">{{ formsEdu[place.form_budget] }}</span></p>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
@@ -201,7 +201,7 @@ export default {
|
||||
</button>
|
||||
<div id="hs-basic-bordered-collapse-two" class="hs-accordion-content hidden w-full overflow-hidden transition-[height] duration-300" aria-labelledby="hs-bordered-heading-two">
|
||||
<div class="pb-4 px-5">
|
||||
<template v-for="block in this.program.data.about_program" :key="block.id">
|
||||
<template v-for="block in program.data.about_program" :key="block.id">
|
||||
<!-- <div v-if="block.type === 'image'">-->
|
||||
<!-- <figure :class="block.data.withBackground ? 'bg-gray-100 rounded-lg' : ''">-->
|
||||
<!-- <img loading="lazy" @click="openEditorImagesOnSlide(block.slideNumber)"-->
|
||||
@@ -326,7 +326,7 @@ export default {
|
||||
</button>
|
||||
<div id="hs-basic-bordered-collapse-three" class="hs-accordion-content hidden w-full overflow-hidden transition-[height] duration-300" aria-labelledby="hs-bordered-heading-three">
|
||||
<div class="pb-4 px-5">
|
||||
<template v-for="block in this.program.data.program_features" :key="block.id">
|
||||
<template v-for="block in program.data.program_features" :key="block.id">
|
||||
<!-- <div v-if="block.type === 'image'">-->
|
||||
<!-- <figure :class="block.data.withBackground ? 'bg-gray-100 rounded-lg' : ''">-->
|
||||
<!-- <img loading="lazy" @click="openEditorImagesOnSlide(block.slideNumber)"-->
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<script>
|
||||
import MainNavbar from "@/Navbars/MainNavbar.vue";
|
||||
import ClientFooterDown from "@/Components/ClientFooterDown.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
import {Link} from "@inertiajs/vue3";
|
||||
import MainPageNavBar from "@/Navbars/MainPageNavbar.vue";
|
||||
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<script>
|
||||
import MainNavbar from "@/Navbars/MainNavbar.vue";
|
||||
import ClientFooterDown from "@/Components/ClientFooterDown.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
import {Link} from "@inertiajs/vue3";
|
||||
import MainPageNavBar from "@/Navbars/MainPageNavbar.vue";
|
||||
|
||||
@@ -134,7 +134,7 @@ export default {
|
||||
<template v-for="(lesson, index) in getDayOfWeek.scheduleDay.form">
|
||||
<tr>
|
||||
<td class="border text-center">{{ index + 1 }}</td>
|
||||
<td class="border text-center">{{ this.timeSchedules[index] }}</td>
|
||||
<td class="border text-center">{{ timeSchedules[index] }}</td>
|
||||
<td class="text-center border">
|
||||
<template v-for="lesson_info in lesson">
|
||||
<div class="flex items-stretch justify-center">
|
||||
@@ -176,7 +176,7 @@ export default {
|
||||
<table class="border-collapse border w-full mb-4">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-center" rowspan="9" width="30px">{{ this.weekday[index] }}</td>
|
||||
<td class="text-center" rowspan="9" width="30px">{{ weekday[index] }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-center border px-3">#</td>
|
||||
@@ -186,7 +186,7 @@ export default {
|
||||
<template v-for="(lesson, index) in day.form">
|
||||
<tr>
|
||||
<td class="border text-center">{{ index + 1 }}</td>
|
||||
<td class="border text-center">{{ this.timeSchedules[index] }}</td>
|
||||
<td class="border text-center">{{ timeSchedules[index] }}</td>
|
||||
<td class="text-center border">
|
||||
<template v-for="lesson_info in lesson">
|
||||
<div class="flex items-stretch justify-center">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<script>
|
||||
import MainNavbar from "@/Navbars/MainNavbar.vue";
|
||||
import ClientFooterDown from "@/Components/ClientFooterDown.vue";
|
||||
import {debounce} from "lodash/function.js";
|
||||
import {debounce} from "lodash";
|
||||
import {Link} from "@inertiajs/vue3";
|
||||
import MainPageNavBar from "@/Navbars/MainPageNavbar.vue";
|
||||
|
||||
|
||||
+4
-4
@@ -2,9 +2,8 @@ import './bootstrap';
|
||||
import '../css/app.css';
|
||||
import 'preline';
|
||||
|
||||
import { createApp, h } from 'vue';
|
||||
import { createSSRApp, h } from 'vue';
|
||||
import { createInertiaApp } from '@inertiajs/vue3';
|
||||
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
|
||||
import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m';
|
||||
import {linksReform} from "@/mixins/LinksReform.js";
|
||||
|
||||
@@ -18,14 +17,15 @@ createInertiaApp({
|
||||
// resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue'))
|
||||
},
|
||||
setup({ el, App, props, plugin }) {
|
||||
return createApp({ render: () => h(App, props) })
|
||||
return createSSRApp({ render: () => h(App, props) })
|
||||
.use(plugin)
|
||||
.mixin(linksReform)
|
||||
.use(ZiggyVue, Ziggy)
|
||||
.use(ZiggyVue)
|
||||
.mount(el);
|
||||
},
|
||||
progress: {
|
||||
color: '#1E57A3',
|
||||
delay: 250,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ Route::middleware('access-check')->group(function () {
|
||||
|
||||
// События
|
||||
Route::get('/events', [ClientEventController::class, 'index'])->name('client.event.index'); // Доделать builder
|
||||
Route::get('/events/{id}', [ClientEventController::class, 'show'])->name('client.event.show');
|
||||
Route::get('/events/{slug}', [ClientEventController::class, 'show'])->name('client.event.show');
|
||||
|
||||
// Заметки библиотеки
|
||||
Route::get('/library/news', [ClientLibraryNewsController::class, 'index'])->name('client.library.news.index'); // Доделать builder
|
||||
|
||||
+6
-1
@@ -9,8 +9,10 @@ export default defineConfig({
|
||||
plugins: [
|
||||
laravel({
|
||||
input: 'resources/js/app.js',
|
||||
ssr: 'resources/js/ssr.js',
|
||||
refresh: true,
|
||||
}),
|
||||
|
||||
vue({
|
||||
template: {
|
||||
transformAssetUrls: {
|
||||
@@ -31,6 +33,9 @@ export default defineConfig({
|
||||
watch: {
|
||||
usePolling: true
|
||||
}
|
||||
}
|
||||
},
|
||||
ssr: {
|
||||
noExternal: ['lodash', 'bvi', 'preline'],
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user