This commit is contained in:
f4ilji
2024-11-01 00:38:22 +05:00
parent cf5ef14736
commit db9849e3f4
97 changed files with 4207 additions and 906 deletions
-12
View File
@@ -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>
+1
View File
@@ -6,6 +6,7 @@
<sourceFolder url="file://$MODULE_DIR$/database/factories" isTestSource="false" packagePrefix="Database\Factories\" /> <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$/database/seeders" isTestSource="false" packagePrefix="Database\Seeders\" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="Tests\" /> <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/brick/math" />
<excludeFolder url="file://$MODULE_DIR$/vendor/carbonphp/carbon-doctrine-types" /> <excludeFolder url="file://$MODULE_DIR$/vendor/carbonphp/carbon-doctrine-types" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" /> <excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
-60
View File
@@ -5,66 +5,6 @@
<PhpSpecSuiteConfiguration> <PhpSpecSuiteConfiguration>
<option name="myPath" value="$PROJECT_DIR$" /> <option name="myPath" value="$PROJECT_DIR$" />
</PhpSpecSuiteConfiguration> </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> </suites>
</component> </component>
</project> </project>
+8 -8
View File
@@ -1,5 +1,6 @@
FROM php:8.2-fpm FROM php:8.2-fpm
# Установка необходимых пакетов
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
apt-utils \ apt-utils \
libpq-dev \ libpq-dev \
@@ -9,7 +10,6 @@ RUN apt-get update && apt-get install -y \
libjpeg62-turbo-dev \ libjpeg62-turbo-dev \
libmcrypt-dev \ libmcrypt-dev \
libgd-dev \ libgd-dev \
libpng-dev \
libwebp-dev \ libwebp-dev \
libzip-dev \ libzip-dev \
zip \ zip \
@@ -23,24 +23,24 @@ RUN apt-get update && apt-get install -y \
apt-get clean && \ apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 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 apt-get update && apt-get install -y zlib1g-dev libicu-dev g++
RUN docker-php-ext-configure intl RUN docker-php-ext-configure intl
RUN docker-php-ext-install 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 COPY ./_docker/app/php.ini /usr/local/etc/php/conf.d/php.ini
# Установка Node.js # Установка Node.js
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y nodejs npm RUN apt-get install -y nodejs npm
# Копирование конфигурации Supervisor
COPY ./_docker/supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
EXPOSE 6001 EXPOSE 6001
EXPOSE 5173 EXPOSE 5173
+1
View File
@@ -1,3 +1,4 @@
post_max_size = 128M post_max_size = 128M
upload_max_filesize = 128M upload_max_filesize = 128M
memory_limit = 256M memory_limit = 256M
request_terminate_timeout = 300
+3 -1
View File
@@ -1,6 +1,8 @@
server { server {
client_max_body_size 200M; 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; root /var/www/public;
location / { location / {
+22
View File
@@ -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()); $event = new ClientEventFullResource(Event::where('slug', '=', $slug)->with('category')->first());
$routeUrl = route('client.event.index'); $routeUrl = route('client.event.index');
$path = ltrim(parse_url($routeUrl, PHP_URL_PATH), '/'); $path = ltrim(parse_url($routeUrl, PHP_URL_PATH), '/');
@@ -140,7 +140,6 @@ class ClientPostController extends Controller
'page' => new ClientBreadcrumbPage($page), 'page' => new ClientBreadcrumbPage($page),
]; ];
} else { } else {
$subSectionPages = null;
$breadcrumbs = null; $breadcrumbs = null;
} }
return Inertia::render('Client/Posts/Show', compact('post', 'breadcrumbs')); return Inertia::render('Client/Posts/Show', compact('post', 'breadcrumbs'));
+3 -3
View File
@@ -6,13 +6,14 @@
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": "^8.1", "php": "^8.1",
"ext-curl": "*",
"awcodes/filament-tiptap-editor": "^3.0", "awcodes/filament-tiptap-editor": "^3.0",
"bezhansalleh/filament-shield": "^3.2", "bezhansalleh/filament-shield": "^3.2",
"filament/filament": "^3.0-stable", "filament/filament": "^3.0-stable",
"filament/spatie-laravel-tags-plugin": "^3.2", "filament/spatie-laravel-tags-plugin": "^3.2",
"guava/filament-icon-picker": "^2.0", "guava/filament-icon-picker": "^2.0",
"guzzlehttp/guzzle": "^7.8", "guzzlehttp/guzzle": "^7.8",
"inertiajs/inertia-laravel": "^0.6.8", "inertiajs/inertia-laravel": "^1.3",
"intervention/image": "^2.7", "intervention/image": "^2.7",
"joshembling/image-optimizer": "^1.4", "joshembling/image-optimizer": "^1.4",
"laravel/framework": "^10.10", "laravel/framework": "^10.10",
@@ -25,8 +26,7 @@
"symfony/filesystem": "^6.3", "symfony/filesystem": "^6.3",
"tightenco/ziggy": "^1.0", "tightenco/ziggy": "^1.0",
"vkcom/vk-php-sdk": "^5.131", "vkcom/vk-php-sdk": "^5.131",
"xvladqt/faker-lorem-flickr": "^1.0", "xvladqt/faker-lorem-flickr": "^1.0"
"ext-curl": "*"
}, },
"require-dev": { "require-dev": {
"fakerphp/faker": "^1.9.1", "fakerphp/faker": "^1.9.1",
Generated
+19 -14
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "6cfaed46970b24b641b3caedbebbdbe4", "content-hash": "4ec8fd7d71eed92d6bd7cd1106725919",
"packages": [ "packages": [
{ {
"name": "anourvalar/eloquent-serialize", "name": "anourvalar/eloquent-serialize",
@@ -2617,27 +2617,28 @@
}, },
{ {
"name": "inertiajs/inertia-laravel", "name": "inertiajs/inertia-laravel",
"version": "v0.6.11", "version": "v1.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/inertiajs/inertia-laravel.git", "url": "https://github.com/inertiajs/inertia-laravel.git",
"reference": "2a1e19048f95c0e4adb2b2733f9119e49c4fc09f" "reference": "36730d13b1dab9017069004fd458b3e67449a326"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/2a1e19048f95c0e4adb2b2733f9119e49c4fc09f", "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/36730d13b1dab9017069004fd458b3e67449a326",
"reference": "2a1e19048f95c0e4adb2b2733f9119e49c4fc09f", "reference": "36730d13b1dab9017069004fd458b3e67449a326",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-json": "*", "ext-json": "*",
"laravel/framework": "^6.0|^7.0|^8.74|^9.0|^10.0", "laravel/framework": "^8.74|^9.0|^10.0|^11.0",
"php": "^7.2|~8.0.0|~8.1.0|~8.2.0|~8.3.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": { "require-dev": {
"mockery/mockery": "^1.3.3", "mockery/mockery": "^1.3.3",
"orchestra/testbench": "^4.0|^5.0|^6.4|^7.0|^8.0", "orchestra/testbench": "^6.4|^7.0|^8.0|^9.0",
"phpunit/phpunit": "^8.0|^9.5.8", "phpunit/phpunit": "^8.0|^9.5.8|^10.4",
"roave/security-advisories": "dev-master" "roave/security-advisories": "dev-master"
}, },
"suggest": { "suggest": {
@@ -2649,6 +2650,9 @@
"providers": [ "providers": [
"Inertia\\ServiceProvider" "Inertia\\ServiceProvider"
] ]
},
"branch-alias": {
"dev-master": "1.x-dev"
} }
}, },
"autoload": { "autoload": {
@@ -2677,7 +2681,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/inertiajs/inertia-laravel/issues", "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": [ "funding": [
{ {
@@ -2685,7 +2689,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2023-10-27T10:59:02+00:00" "time": "2024-06-13T01:25:09+00:00"
}, },
{ {
"name": "intervention/image", "name": "intervention/image",
@@ -11798,12 +11802,13 @@
], ],
"aliases": [], "aliases": [],
"minimum-stability": "dev", "minimum-stability": "dev",
"stability-flags": {}, "stability-flags": [],
"prefer-stable": true, "prefer-stable": true,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": "^8.1" "php": "^8.1",
"ext-curl": "*"
}, },
"platform-dev": {}, "platform-dev": [],
"plugin-api-version": "2.6.0" "plugin-api-version": "2.6.0"
} }
+1
View File
@@ -20,6 +20,7 @@ services:
container_name: ntspi-php container_name: ntspi-php
ports: ports:
- '5173' - '5173'
command: ["/usr/bin/supervisord"]
db: db:
image: mysql:8.0 image: mysql:8.0
+3298 -49
View File
File diff suppressed because it is too large Load Diff
+7 -4
View File
@@ -3,19 +3,20 @@
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite --host", "dev": "vite --host",
"build": "vite build", "build": "vite build && vite build --ssr"
"watch": "vite"
}, },
"devDependencies": { "devDependencies": {
"@inertiajs/vue3": "^1.0.0", "@inertiajs/vue3": "^1.0.0",
"@tailwindcss/forms": "^0.5.3", "@tailwindcss/forms": "^0.5.3",
"@types/lodash": "^4.17.13",
"@vitejs/plugin-vue": "^4.6.2", "@vitejs/plugin-vue": "^4.6.2",
"autoprefixer": "^10.4.12", "autoprefixer": "^10.4.12",
"axios": "^1.1.2", "axios": "^1.1.2",
"bvi": "^1.0.2", "bvi": "^1.0.2",
"daisyui": "^3.9.3", "i": "^0.3.7",
"laravel-vite-plugin": "^0.8.1", "laravel-vite-plugin": "^0.8.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"npm": "^10.9.0",
"postcss": "^8.4.18", "postcss": "^8.4.18",
"tailwindcss": "^3.2.1", "tailwindcss": "^3.2.1",
"vite": "^5.3.3", "vite": "^5.3.3",
@@ -34,7 +35,9 @@
"@preline/overlay": "^1.4.0", "@preline/overlay": "^1.4.0",
"@preline/scrollspy": "^2.0.0", "@preline/scrollspy": "^2.0.0",
"@preline/select": "^2.5.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": "^3.4.1",
"fslightbox-vue": "^2.1.3", "fslightbox-vue": "^2.1.3",
"preline": "^1.9.0", "preline": "^1.9.0",
-1
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -20,7 +20,7 @@
</template> </template>
<script> <script>
import { debounce } from "lodash/function.js"; import { debounce } from "lodash";
export default { export default {
name: "AdminIndexSearch", name: "AdminIndexSearch",
@@ -115,7 +115,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -93,7 +93,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -62,7 +62,6 @@
</template> </template>
<script> <script>
import {debounce} from "lodash/function.js";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue"; import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue";
import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.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 SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "BudgetFilter", name: "BudgetFilter",
components: { components: {
@@ -26,7 +26,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "CategoryFilter", name: "CategoryFilter",
components: { components: {
@@ -26,7 +26,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "FormEducationalFilter", name: "FormEducationalFilter",
components: { components: {
@@ -10,7 +10,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "LevelEduFilter", name: "LevelEduFilter",
components: { components: {
@@ -17,7 +17,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "SortingByFilter", name: "SortingByFilter",
components: { components: {
@@ -137,7 +137,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -93,7 +93,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -115,7 +115,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -93,7 +93,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -1,5 +1,5 @@
<template> <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 }} {{ (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"> <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> <span class="sr-only">Remove badge</span>
@@ -1,5 +1,5 @@
<template> <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 }} Поиск: {{ 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"> <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> <span class="sr-only">Remove badge</span>
@@ -1,5 +1,5 @@
<template> <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 }} {{ (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"> <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> <span class="sr-only">Remove badge</span>
@@ -1,6 +1,6 @@
<template> <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> <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 }} {{ title }}
</Link> </Link>
@@ -44,7 +44,7 @@
</Link> </Link>
</li> </li>
<li class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -74,7 +74,7 @@
</Link> </Link>
</li> </li>
<li class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -115,7 +115,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -94,7 +94,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -27,7 +27,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "CategoryFilter", name: "CategoryFilter",
components: { components: {
@@ -19,7 +19,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "IsOnlineFilter", name: "IsOnlineFilter",
components: { components: {
@@ -2,7 +2,7 @@
<div class="min-w-[12rem] py-1 space-y-3"> <div class="min-w-[12rem] py-1 space-y-3">
<h3 class="font-medium text-gray-900 text-sm mb-2">Сортировать по</h3> <h3 class="font-medium text-gray-900 text-sm mb-2">Сортировать по</h3>
<div> <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="desc">Дате (Сначала новые)</option>
<option value="asc">Дате (Сначала старые)</option> <option value="asc">Дате (Сначала старые)</option>
</select> </select>
@@ -17,7 +17,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "SortingByFilter", name: "SortingByFilter",
components: { components: {
@@ -27,7 +27,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "TagFilter", name: "TagFilter",
components: { components: {
@@ -115,7 +115,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -93,7 +93,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -11,36 +11,36 @@
</Link> </Link>
</li> </li>
<li v-if="breadcrumbs.mainSection" class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 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" <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"/> stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg> </svg>
{{ textLimit(this.breadcrumbs.mainSection.data.title, 25) }} {{ textLimit(breadcrumbs.mainSection.data.title, 25) }}
</span> </span>
</li> </li>
<li v-if="breadcrumbs.subSection" class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 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" <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"/> stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg> </svg>
{{ textLimit(this.breadcrumbs.subSection.data.title, 25) }} {{ textLimit(breadcrumbs.subSection.data.title, 25) }}
</span> </span>
</li> </li>
<li class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 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" <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"/> stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg> </svg>
{{ textLimit(this.breadcrumbs.page.data.title, 25) }} {{ textLimit(breadcrumbs.page.data.title, 25) }}
</Link> </Link>
</li> </li>
</ol> </ol>
@@ -52,14 +52,14 @@
</Link> </Link>
</li> </li>
<li class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 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" <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"/> stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg> </svg>
{{ textLimit(this.breadcrumbs.page.data.title, 25) }} {{ textLimit(breadcrumbs.page.data.title, 25) }}
</Link> </Link>
</li> </li>
</ol> </ol>
@@ -93,7 +93,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -1,12 +1,12 @@
<template> <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"> <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"> 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="text-gray-1000 mb-2 text-md font-medium">{{ currentSection }}</div>
<div class="flex gap-x-1"> <div class="flex gap-x-1">
<ul class="px-0.5 last-of-type:mb-0 mb-8"> <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) }" <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) + '/'" :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"> 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> <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 }} Поиск: {{ 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"> <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> <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 SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "CategoryFilter", name: "CategoryFilter",
components: { components: {
@@ -17,7 +17,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "SortingByFilter", name: "SortingByFilter",
components: { components: {
@@ -27,7 +27,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "TagFilter", name: "TagFilter",
components: { components: {
@@ -11,25 +11,25 @@
</Link> </Link>
</li> </li>
<li v-if="breadcrumbs.mainSection" class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 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" <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"/> stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg> </svg>
{{ textLimit(this.breadcrumbs.mainSection.data.title, 25) }} {{ textLimit(breadcrumbs.mainSection.data.title, 25) }}
</span> </span>
</li> </li>
<li v-if="breadcrumbs.subSection" class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 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" <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"/> stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg> </svg>
{{ textLimit(this.breadcrumbs.subSection.data.title, 25) }} {{ textLimit(breadcrumbs.subSection.data.title, 25) }}
</span> </span>
</li> </li>
<li class="text-sm"> <li class="text-sm">
@@ -1,6 +1,6 @@
<template> <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> <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 }} {{ title }}
</Link> </Link>
@@ -11,25 +11,25 @@
</Link> </Link>
</li> </li>
<li v-if="breadcrumbs.mainSection" class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 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" <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"/> stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg> </svg>
{{ textLimit(this.breadcrumbs.mainSection.data.title, 25) }} {{ textLimit(breadcrumbs.mainSection.data.title, 25) }}
</span> </span>
</li> </li>
<li v-if="breadcrumbs.subSection" class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 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" <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"/> stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</svg> </svg>
{{ textLimit(this.breadcrumbs.subSection.data.title, 25) }} {{ textLimit(breadcrumbs.subSection.data.title, 25) }}
</span> </span>
</li> </li>
<li class="text-sm"> <li class="text-sm">
@@ -43,8 +43,9 @@
{{ textLimit('Новости', 30) }} {{ textLimit('Новости', 30) }}
</Link> </Link>
</li> </li>
<li class="text-sm"> <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" <svg class="flex-shrink-0 mx-2 overflow-visible h-2.5 w-2.5 text-gray-400"
width="16" height="16" width="16" height="16"
viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -80,7 +81,7 @@
</Link> </Link>
</li> </li>
<li class="text-sm"> <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 }} {{ postTitle }}
</Link> </Link>
</li> </li>
@@ -90,7 +91,6 @@
</div> </div>
</div> </div>
</template> </template>
<script> <script>
@@ -115,7 +115,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -191,6 +194,7 @@ export default {
props: { props: {
breadcrumbs: { breadcrumbs: {
type: Object, type: Object,
default: () => ({}), // Default to an empty object
}, },
postTitle: { postTitle: {
type: String, type: String,
@@ -77,7 +77,7 @@
</template> </template>
<script> <script>
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue"; import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue";
import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.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 SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "BudgetFilter", name: "BudgetFilter",
components: { components: {
@@ -26,7 +26,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "DirectionFilter", name: "DirectionFilter",
components: { components: {
@@ -26,7 +26,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "FormEducationalFilter", name: "FormEducationalFilter",
components: { components: {
@@ -10,7 +10,8 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "LevelEduFilter", name: "LevelEduFilter",
components: { components: {
@@ -17,7 +17,7 @@ import slugify from "slugify";
import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue"; import SearchBadge from "@/Components/BuilderUi/Events/Badges/SearchBadge.vue";
import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue"; import CategoryBadge from "@/Components/BuilderUi/Events/Badges/CategoryBadge.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "SortingByFilter", name: "SortingByFilter",
components: { components: {
@@ -115,7 +115,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -93,7 +93,10 @@ export default {
return text return text
}, },
isMobileDevice() { isMobileDevice() {
return window.innerWidth < 1024; // Задайте порог для мобильных устройств if (typeof window !== 'undefined') {
return window.innerWidth < 1024; // Проверка на мобильные устройства
}
return false; // По умолчанию возвращаем false, когда не в браузере
}, },
handleSectionClick(breadcrumb) { handleSectionClick(breadcrumb) {
if (this.isMobileDevice()) { if (this.isMobileDevice()) {
@@ -50,7 +50,6 @@
</template> </template>
<script> <script>
import {debounce} from "lodash/function.js";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue"; import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue";
import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue"; import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue";
@@ -54,7 +54,7 @@
</template> </template>
<script> <script>
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
import {Link} from "@inertiajs/vue3"; import {Link} from "@inertiajs/vue3";
import {Inertia} from "@inertiajs/inertia"; import {Inertia} from "@inertiajs/inertia";
import ResultList from "@/Components/Search/ResultList.vue"; import ResultList from "@/Components/Search/ResultList.vue";
+9 -2
View File
@@ -40,7 +40,7 @@
</button> </button>
<div class="flex space-x-3 w-[100px] items-center font-semibold text-xl"> <div class="flex space-x-3 w-[100px] items-center font-semibold text-xl">
<span>{{ this.currentIndex + 1 }}</span> <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 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 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> </div>
@@ -65,6 +65,7 @@ export default {
props: { props: {
slidersCarousel: { slidersCarousel: {
type: Object, type: Object,
required: true, // Убедитесь, что пропс передан
}, },
}, },
data() { data() {
@@ -77,17 +78,21 @@ export default {
}, },
computed: { computed: {
totalSlides() { totalSlides() {
return this.slidersCarousel.data.length; return this.slidersCarousel && this.slidersCarousel.data ? this.slidersCarousel.data.length : 0;
}, },
}, },
methods: { methods: {
next() { next() {
if (this.totalSlides > 0) {
this.currentIndex = (this.currentIndex + 1) % this.totalSlides; this.currentIndex = (this.currentIndex + 1) % this.totalSlides;
this.resetTimer(); this.resetTimer();
}
}, },
prev() { prev() {
if (this.totalSlides > 0) {
this.currentIndex = (this.currentIndex - 1 + this.totalSlides) % this.totalSlides; this.currentIndex = (this.currentIndex - 1 + this.totalSlides) % this.totalSlides;
this.resetTimer(); this.resetTimer();
}
}, },
progressStatus() { progressStatus() {
if (this.percentage >= 100) { if (this.percentage >= 100) {
@@ -133,3 +138,5 @@ export default {
transform: translateY(30px); transform: translateY(30px);
} }
</style> </style>
Найти еще
+1 -1
View File
@@ -99,7 +99,7 @@ export default {
props: { props: {
post: { post: {
type: Array, type: Object,
}, },
}, },
} }
@@ -66,7 +66,6 @@
</template> </template>
<script> <script>
import {debounce} from "lodash/function.js";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue"; import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue";
import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue"; import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue";
+1 -1
View File
@@ -20,7 +20,7 @@
</template> </template>
<script> <script>
import { debounce } from "lodash/function.js"; import { debounce } from "lodash";
export default { export default {
name: "AdminIndexSearch", name: "AdminIndexSearch",
@@ -77,7 +77,7 @@
</template> </template>
<script> <script>
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue"; import CategoryFilter from "@/Components/BuilderUi/Events/Filters/CategoryFilter.vue";
import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue"; import TagFilter from "@/Components/BuilderUi/Events/Filters/TagFilter.vue";
@@ -20,7 +20,7 @@
</template> </template>
<script> <script>
import { debounce } from "lodash/function.js"; import { debounce } from "lodash";
export default { export default {
name: "AdminIndexSearch", name: "AdminIndexSearch",
@@ -14,15 +14,15 @@
import {Link} from "@inertiajs/vue3"; import {Link} from "@inertiajs/vue3";
import axios from "axios"; import axios from "axios";
import ClientGlobalSearch from "@/Components/ClientGlobalSearch.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import {defineAsyncComponent} from "vue";
export default { export default {
name: 'SearchModal', name: 'SearchModal',
props: { props: {
open_id: { open_id: {
type: Object, type: String,
} }
}, },
@@ -31,7 +31,9 @@ export default {
}, },
components: { components: {
BaseIcon, BaseIcon,
ClientGlobalSearch, ClientGlobalSearch: defineAsyncComponent(() =>
import('@/Components/ClientGlobalSearch.vue')
),
Link, Link,
}, },
methods: { methods: {
@@ -14,7 +14,7 @@
</template> </template>
<script> <script>
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
export default { export default {
name: "CategorySearchList", name: "CategorySearchList",
+8 -5
View File
@@ -5,13 +5,15 @@
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"> 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 <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"> 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"> <template v-if="sections && sections.data">
<template v-for="section in sections.data" :key="section.id">
<div <div
:id="'nav-section-' + section.slug" :id="'nav-section-' + section.slug"
class="hs-dropdown [--strategy:static] md:[--strategy:absolute] [--adaptive:none] md:[--trigger:hover] py-3 md:py-6"> class="hs-dropdown [--strategy:static] md:[--strategy:absolute] [--adaptive:none] md:[--trigger:hover] py-3 md:py-6">
<button <button
:id="'nav-section-btn-' + section.slug" :id="'nav-section-btn-' + section.slug"
type="button" :class="!underSliderHeader ? 'text-white' : 'text-black'" 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"> 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 }} {{ section.title }}
<svg class="flex-shrink-0 ms-2 w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" <svg class="flex-shrink-0 ms-2 w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
@@ -37,7 +39,8 @@
</span> </span>
</div> </div>
<template v-for="page in subsection.pages" :key="page.id"> <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) }" <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" class="flex items-center gap-x-2"
:href="(page.is_url) ? page.path : route('page.view', page.path) + '/'"> :href="(page.is_url) ? page.path : route('page.view', page.path) + '/'">
<div class="grow"> <div class="grow">
@@ -49,12 +52,13 @@
</div> </div>
</div> </div>
</template> </template>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
</template>
@@ -111,7 +115,6 @@ export default {
type: Object, type: Object,
}, },
underSliderHeader: { underSliderHeader: {
type: HTMLDivElement,
} }
}, },
+4 -2
View File
@@ -123,10 +123,10 @@
import {Link} from "@inertiajs/vue3"; import {Link} from "@inertiajs/vue3";
import axios from "axios"; import axios from "axios";
import ClientGlobalSearch from "@/Components/ClientGlobalSearch.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import MobileNavbar from "@/Navbars/MobileNavbar.vue"; import MobileNavbar from "@/Navbars/MobileNavbar.vue";
import SearchModal from "@/Components/Modals/SearchModal.vue"; import SearchModal from "@/Components/Modals/SearchModal.vue";
import {defineAsyncComponent} from "vue";
export default { export default {
@@ -144,7 +144,9 @@ export default {
SearchModal, SearchModal,
MobileNavbar, MobileNavbar,
BaseIcon, BaseIcon,
ClientGlobalSearch, ClientGlobalSearch: defineAsyncComponent(() =>
import('@/Components/ClientGlobalSearch.vue')
),
Link, Link,
}, },
methods: { methods: {
+13 -26
View File
@@ -38,14 +38,13 @@
</div> </div>
</div> </div>
<div> <div>
<DesktopNavBar :sections="sections" :under-slider-header="underSliderHeader" /> <DesktopNavBar v-if="sections" :sections="sections" :under-slider-header="underSliderHeader" />
</div> </div>
</div> </div>
</nav> </nav>
</header> </header>
<MobileNavbar :sections="sections" /> <MobileNavbar v-if="sections" :sections="sections" />
<SearchModal open_id="open-search-modal" /> <SearchModal open_id="open-search-modal" />
@@ -57,7 +56,7 @@
import {Link} from "@inertiajs/vue3"; import {Link} from "@inertiajs/vue3";
import axios from "axios"; import axios from "axios";
import ClientGlobalSearch from "@/Components/ClientGlobalSearch.vue"; import ClientGlobalSearch from "@/Components/ClientGlobalSearch.vue";
import * as isvek from "bvi" // import * as isvek from "bvi"
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
import MobileNavbar from "@/Navbars/MobileNavbar.vue"; import MobileNavbar from "@/Navbars/MobileNavbar.vue";
import SearchModal from "@/Components/Modals/SearchModal.vue"; import SearchModal from "@/Components/Modals/SearchModal.vue";
@@ -79,7 +78,6 @@ export default {
type: Object, type: Object,
}, },
sliderRef: { sliderRef: {
type: HTMLDivElement,
default: true default: true
}, },
}, },
@@ -123,15 +121,6 @@ export default {
return section.subSections.some(subSection => this.hasActivePage(subSection)); 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() { handleScroll() {
@@ -159,21 +148,19 @@ export default {
}, },
mounted() { mounted() {
window.addEventListener('scroll', this.handleScroll) window.addEventListener('scroll', this.handleScroll)
window.addEventListener('scroll', this.checkSlider) // if (this.getCookie('bvi_panelActive') === null) {
if (this.getCookie('bvi_panelActive') === null) { // this.bvi = new isvek.Bvi({
this.bvi = new isvek.Bvi({ // target: '.className',
target: '.className', // fontSize: 24,
fontSize: 24, // theme: 'black',
theme: 'black', // speech: false,
speech: false, // reload: true,
reload: true, // //...etc
//...etc // });
}); // }
}
}, },
beforeDestroy() { beforeDestroy() {
window.removeEventListener('scroll', this.handleScroll) window.removeEventListener('scroll', this.handleScroll)
window.removeEventListener('scroll', this.checkSlider)
}, },
computed: { computed: {
currentLogo() { currentLogo() {
@@ -127,13 +127,13 @@ export default {
</div> </div>
<div class="px-2 mx-auto"> <div class="px-2 mx-auto">
<div class="flex-wrap flex gap-3 md:items-center"> <div class="flex-wrap flex gap-3 md:items-center">
<ProgramBadge :filters="this.filters" /> <ProgramBadge :filters="filters" />
</div> </div>
</div> </div>
</div> </div>
<div class="container py-5 lg:py-4"> <div class="container py-5 lg:py-4">
<div class="w-full mx-auto flex flex-wrap lg:justify-between"> <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"> <div class="flex flex-col">
<template v-for="education in educations"> <template v-for="education in educations">
<div style="height: max-content" class="px-2"> <div style="height: max-content" class="px-2">
@@ -164,7 +164,7 @@ export default {
<div> <div>
<h2 class="text-xl font-bold md:text-2xl">О программе</h2> <h2 class="text-xl font-bold md:text-2xl">О программе</h2>
<div class="py-4 px-5"> <div class="py-4 px-5">
<ProgramBuilder :blocks="this.additionalEducation.data.content" /> <ProgramBuilder :blocks="additionalEducation.data.content" />
</div> </div>
</div> </div>
<!-- End Icon Blocks --> <!-- 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"> <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"/> <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="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"> <div class="space-y-5 md:space-y-5">
<PageBreadcrumbs :breadcrumbs="breadcrumbs" :page-title="page.data.title"/> <PageBreadcrumbs :breadcrumbs="breadcrumbs" :page-title="page.data.title"/>
<PageTitle :header="page.data.title"/> <PageTitle :header="page.data.title"/>
<div id="page-area" class="space-y-4"> <div id="page-area" class="space-y-4">
<PageBuilder :blocks="this.page.data.content"/> <PageBuilder :blocks="page.data.content"/>
</div> </div>
</div> </div>
</div> </div>
@@ -11,12 +11,12 @@
<div class="w-full h-[67px] pointer-events-none fixed" id="visor"></div> <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"> <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"> 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="text-gray-1000 mb-2 text-md font-medium">Кафедры факультета - {{ department.data.faculty.abbreviation }}</div>
<div class="flex gap-x-1"> <div class="flex gap-x-1">
<ul class="px-0.5 last-of-type:mb-0 mb-8"> <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 })) }" <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 }) + '/'" :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">{{ 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> <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"> <ul class="styled-scrollbar max-h-[70vh] space-y-1.5 overflow-y-auto py-2 text-sm">
<li class="anchor-li"> <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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#workers">Сотрудники кафедры</a> href="#workers">Сотрудники кафедры</a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#teachers">Преподаватели кафедры</a> href="#teachers">Преподаватели кафедры</a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#external-teachers">Внешние совместители</a> href="#external-teachers">Внешние совместители</a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#programs">Программы</a> href="#programs">Программы</a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#description">Описание</a> href="#description">Описание</a>
</li> </li>
@@ -126,7 +126,7 @@
<div class="space-y-3 md:space-y-4"> <div class="space-y-3 md:space-y-4">
<DepartmentBuilder :blocks="this.department.data.content "/> <DepartmentBuilder :blocks="department.data.content "/>
</div> </div>
</div> </div>
+4 -4
View File
@@ -14,12 +14,12 @@
<div class="w-full h-[67px] fixed pointer-events-none" id="visor"></div> <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"> <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"> 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="text-gray-1000 mb-2 text-md font-medium">Подразделения</div>
<div class="flex gap-x-1"> <div class="flex gap-x-1">
<ul class="px-0.5 last-of-type:mb-0 mb-8"> <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)) }" <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) + '/'" :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">{{ 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> <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"> <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"> <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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#persons">Состав</a> href="#persons">Состав</a>
</li> </li>
<li v-if="division.data.description.length > 0" class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#description">Описание</a> href="#description">Описание</a>
</li> </li>
+3 -3
View File
@@ -37,7 +37,7 @@ export default {
}, },
props: { props: {
events: { events: {
type: Array, type: Object,
}, },
currentDate: { currentDate: {
type: String, type: String,
@@ -46,7 +46,7 @@ export default {
type: Array, type: Array,
}, },
navigation: { navigation: {
type: Array, type: Object,
}, },
filters: { filters: {
type: Array, 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 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> </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> </div>
+4 -9
View File
@@ -1,7 +1,6 @@
<script> <script>
import MainNavbar from "@/Navbars/MainNavbar.vue"; import MainNavbar from "@/Navbars/MainNavbar.vue";
import {Head, Link} from "@inertiajs/vue3"; import {Head, Link} from "@inertiajs/vue3";
import FsLightbox from "fslightbox-vue/v3";
import ClientScrollTimeline from "@/Components/ClientScrollTimeline.vue"; import ClientScrollTimeline from "@/Components/ClientScrollTimeline.vue";
import ClientFooterDown from "@/Components/ClientFooterDown.vue"; import ClientFooterDown from "@/Components/ClientFooterDown.vue";
import ClientImageSlider from "@/Components/ClientImageSlider.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 TitleEvent from "@/Components/BuilderUi/Events/TitleEvent.vue";
import PostBuilder from "@/Components/BuilderUi/Posts/PostBuilder.vue"; import PostBuilder from "@/Components/BuilderUi/Posts/PostBuilder.vue";
import EventBuilder from "@/Components/BuilderUi/Events/EventBuilder.vue"; import EventBuilder from "@/Components/BuilderUi/Events/EventBuilder.vue";
import EventtBuilder from "@/Components/BuilderUi/Events/EventBuilder.vue";
import ClientEventSelectDate from "@/Components/ClientEventSelectDate.vue"; import ClientEventSelectDate from "@/Components/ClientEventSelectDate.vue";
import ClientEventFilter from "@/Components/ClientEventFilter.vue"; import ClientEventFilter from "@/Components/ClientEventFilter.vue";
import MainPageNavBar from "@/Navbars/MainPageNavbar.vue"; import MainPageNavBar from "@/Navbars/MainPageNavbar.vue";
@@ -22,25 +20,22 @@ export default {
EventItemBreadcrumbs, EventItemBreadcrumbs,
MainPageNavBar, MainPageNavBar,
ClientEventFilter, ClientEventSelectDate, ClientEventFilter, ClientEventSelectDate,
EventtBuilder,
EventBuilder, EventBuilder,
PostBuilder, PostBuilder,
TitleEvent, TitleEvent,
EventBackButton, EventBackButton,
ClientImageSlider, ClientFooterDown, ClientScrollTimeline, Link, MainNavbar, FsLightbox, Head}, ClientImageSlider, ClientFooterDown, ClientScrollTimeline, Link, MainNavbar, Head},
data() { data() {
return { return {
blocks: this.event.data.content,
} }
}, },
props: { props: {
event: { event: {
type: Array, type: Object,
}, },
navigation: { navigation: {
type: Array, type: Object,
}, },
breadcrumbs: { breadcrumbs: {
type: Object type: Object
@@ -101,7 +96,7 @@ export default {
</div> </div>
<div class="space-y-3 md:space-y-4"> <div class="space-y-3 md:space-y-4">
<EventBuilder :blocks="this.blocks"/> <EventBuilder :blocks="event.data.content"/>
</div> </div>
+6 -6
View File
@@ -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"> <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"> 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="text-gray-1000 mb-2 text-md font-medium">Факультеты</div>
<div class="flex gap-x-1"> <div class="flex gap-x-1">
<ul class="px-0.5 last-of-type:mb-0 mb-8"> <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)) }" <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) + '/'" :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">{{ 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> <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"> <ul class="styled-scrollbar max-h-[70vh] space-y-1.5 overflow-y-auto py-2 text-sm">
<li class="anchor-li"> <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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#persons">Состав</a> href="#persons">Состав</a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#department">Кафедры факультета</a> href="#department">Кафедры факультета</a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#description">Описание</a> href="#description">Описание</a>
</li> </li>
@@ -124,7 +124,7 @@
<div class="space-y-3 md:space-y-4"> <div class="space-y-3 md:space-y-4">
<FacultyBuilder :blocks="this.faculty.data.content "/> <FacultyBuilder :blocks="faculty.data.content "/>
</div> </div>
</div> </div>
@@ -81,7 +81,7 @@ export default {
</div> </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'"> <div v-if="block.type === 'heading'">
<h2 class="font-bold text-xl">{{ block.data.content }}</h2> <h2 class="font-bold text-xl">{{ block.data.content }}</h2>
</div> </div>
@@ -158,7 +158,7 @@ export default {
</div> </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'"> <div v-if="block.type === 'heading'">
<h2 class="font-bold text-xl">{{ block.data.content }}</h2> <h2 class="font-bold text-xl">{{ block.data.content }}</h2>
</div> </div>
@@ -84,7 +84,7 @@ export default {
</div> </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'"> <div v-if="block.type === 'heading'">
<h2 class="font-bold text-xl">{{ block.data.content }}</h2> <h2 class="font-bold text-xl">{{ block.data.content }}</h2>
</div> </div>
+10 -14
View File
@@ -4,10 +4,6 @@
<meta name="description" content="Your page description"> <meta name="description" content="Your page description">
</Head> </Head>
<div class="flex flex-col h-screen"> <div class="flex flex-col h-screen">
<MainPageNavBar class="border-b" :sections="$page.props.navigation"></MainPageNavBar> <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> <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"> <ul class="styled-scrollbar max-h-[70vh] space-y-1.5 overflow-y-auto py-2 text-sm">
<li class="anchor-li"> <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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#education">Образование href="#education">Образование
</a> </a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#awards">Награды</a> href="#awards">Награды</a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#professionalRetraining">Профессиональная переподготовка href="#professionalRetraining">Профессиональная переподготовка
</a> </a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#professionalDevelopment">Повышение квалификации href="#professionalDevelopment">Повышение квалификации
</a> </a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#professDisciplines">Преподаваемые дисциплины href="#professDisciplines">Преподаваемые дисциплины
</a> </a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#workExperience">Стаж работы href="#workExperience">Стаж работы
</a> </a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#attendedConferences">Участие в конференциях href="#attendedConferences">Участие в конференциях
</a> </a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#participationScienceProjects">Участие в научных проектах href="#participationScienceProjects">Участие в научных проектах
</a> </a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#publications">Публикации href="#publications">Публикации
</a> </a>
</li> </li>
<li class="anchor-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" class="duration-150 block py-1 px-2 leading-[1.6] rounded-md"
href="#other">Другое href="#other">Другое
</a> </a>
+4 -4
View File
@@ -43,7 +43,7 @@ export default {
type: Object, type: Object,
}, },
filters: { filters: {
type: Object, type: Array,
}, },
categories: { categories: {
type: Object, type: Object,
@@ -84,15 +84,15 @@ export default {
<NewsBreadcrumbs :breadcrumbs="breadcrumbs" class="px-5" /> <NewsBreadcrumbs :breadcrumbs="breadcrumbs" class="px-5" />
<div> <div>
<AdminIndexHeader> <AdminIndexHeader>
<ClientPostSearch :search_filter="this.filters.search_filter" /> <ClientPostSearch :search_filter="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"/> <ClientPostFilter :sorting-by_filter="filters.sortingBy_filter" :category_filter="filters.category_filter" :tag_filter="filters.tag_filter" :tags="tags" :items="categories"/>
</AdminIndexHeader> </AdminIndexHeader>
<div class="px-6"> <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> <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"> <div class="flex-wrap flex gap-3 md:items-center">
<PostBadge :filters="this.filters" /> <PostBadge v-if="filters.length > 0" :filters="filters" />
</div> </div>
</div> </div>
+3 -3
View File
@@ -56,7 +56,7 @@ export default {
default: '' default: ''
}, },
breadcrumbs: { breadcrumbs: {
type: Object type: Object,
} }
}, },
mounted() { mounted() {
@@ -95,9 +95,9 @@ export default {
</div> </div>
</div> </div>
</div> </div>
<PostBuilder :blocks="this.blocks"/> <PostBuilder :blocks="blocks"/>
<div> <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>
<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="#"> <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="#">
+3 -3
View File
@@ -152,7 +152,7 @@ export default {
<template v-for="contest in admissionPlan.contests"> <template v-for="contest in admissionPlan.contests">
<div class="border rounded my-2 py-1"> <div class="border rounded my-2 py-1">
<span class="text-gray-500 text-[14px]">{{ (contest.form_education === '1') ? 'Очная форма обучения' : 'Заочная форма обучения' }}</span> <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> </div>
</template> </template>
</template> </template>
@@ -201,7 +201,7 @@ export default {
</button> </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 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"> <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'">--> <!-- <div v-if="block.type === 'image'">-->
<!-- <figure :class="block.data.withBackground ? 'bg-gray-100 rounded-lg' : ''">--> <!-- <figure :class="block.data.withBackground ? 'bg-gray-100 rounded-lg' : ''">-->
<!-- <img loading="lazy" @click="openEditorImagesOnSlide(block.slideNumber)"--> <!-- <img loading="lazy" @click="openEditorImagesOnSlide(block.slideNumber)"-->
@@ -326,7 +326,7 @@ export default {
</button> </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 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"> <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'">--> <!-- <div v-if="block.type === 'image'">-->
<!-- <figure :class="block.data.withBackground ? 'bg-gray-100 rounded-lg' : ''">--> <!-- <figure :class="block.data.withBackground ? 'bg-gray-100 rounded-lg' : ''">-->
<!-- <img loading="lazy" @click="openEditorImagesOnSlide(block.slideNumber)"--> <!-- <img loading="lazy" @click="openEditorImagesOnSlide(block.slideNumber)"-->
@@ -1,7 +1,7 @@
<script> <script>
import MainNavbar from "@/Navbars/MainNavbar.vue"; import MainNavbar from "@/Navbars/MainNavbar.vue";
import ClientFooterDown from "@/Components/ClientFooterDown.vue"; import ClientFooterDown from "@/Components/ClientFooterDown.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
import {Link} from "@inertiajs/vue3"; import {Link} from "@inertiajs/vue3";
import MainPageNavBar from "@/Navbars/MainPageNavbar.vue"; import MainPageNavBar from "@/Navbars/MainPageNavbar.vue";
import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue"; import BaseIcon from "@/Components/BaseComponents/BaseIcon.vue";
+4 -4
View File
@@ -1,7 +1,7 @@
<script> <script>
import MainNavbar from "@/Navbars/MainNavbar.vue"; import MainNavbar from "@/Navbars/MainNavbar.vue";
import ClientFooterDown from "@/Components/ClientFooterDown.vue"; import ClientFooterDown from "@/Components/ClientFooterDown.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
import {Link} from "@inertiajs/vue3"; import {Link} from "@inertiajs/vue3";
import MainPageNavBar from "@/Navbars/MainPageNavbar.vue"; import MainPageNavBar from "@/Navbars/MainPageNavbar.vue";
@@ -134,7 +134,7 @@ export default {
<template v-for="(lesson, index) in getDayOfWeek.scheduleDay.form"> <template v-for="(lesson, index) in getDayOfWeek.scheduleDay.form">
<tr> <tr>
<td class="border text-center">{{ index + 1 }}</td> <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"> <td class="text-center border">
<template v-for="lesson_info in lesson"> <template v-for="lesson_info in lesson">
<div class="flex items-stretch justify-center"> <div class="flex items-stretch justify-center">
@@ -176,7 +176,7 @@ export default {
<table class="border-collapse border w-full mb-4"> <table class="border-collapse border w-full mb-4">
<tbody> <tbody>
<tr> <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>
<tr> <tr>
<td class="text-center border px-3">#</td> <td class="text-center border px-3">#</td>
@@ -186,7 +186,7 @@ export default {
<template v-for="(lesson, index) in day.form"> <template v-for="(lesson, index) in day.form">
<tr> <tr>
<td class="border text-center">{{ index + 1 }}</td> <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"> <td class="text-center border">
<template v-for="lesson_info in lesson"> <template v-for="lesson_info in lesson">
<div class="flex items-stretch justify-center"> <div class="flex items-stretch justify-center">
+1 -1
View File
@@ -1,7 +1,7 @@
<script> <script>
import MainNavbar from "@/Navbars/MainNavbar.vue"; import MainNavbar from "@/Navbars/MainNavbar.vue";
import ClientFooterDown from "@/Components/ClientFooterDown.vue"; import ClientFooterDown from "@/Components/ClientFooterDown.vue";
import {debounce} from "lodash/function.js"; import {debounce} from "lodash";
import {Link} from "@inertiajs/vue3"; import {Link} from "@inertiajs/vue3";
import MainPageNavBar from "@/Navbars/MainPageNavbar.vue"; import MainPageNavBar from "@/Navbars/MainPageNavbar.vue";
+4 -4
View File
@@ -2,9 +2,8 @@ import './bootstrap';
import '../css/app.css'; import '../css/app.css';
import 'preline'; import 'preline';
import { createApp, h } from 'vue'; import { createSSRApp, h } from 'vue';
import { createInertiaApp } from '@inertiajs/vue3'; import { createInertiaApp } from '@inertiajs/vue3';
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m'; import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m';
import {linksReform} from "@/mixins/LinksReform.js"; import {linksReform} from "@/mixins/LinksReform.js";
@@ -18,14 +17,15 @@ createInertiaApp({
// resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')) // resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue'))
}, },
setup({ el, App, props, plugin }) { setup({ el, App, props, plugin }) {
return createApp({ render: () => h(App, props) }) return createSSRApp({ render: () => h(App, props) })
.use(plugin) .use(plugin)
.mixin(linksReform) .mixin(linksReform)
.use(ZiggyVue, Ziggy) .use(ZiggyVue)
.mount(el); .mount(el);
}, },
progress: { progress: {
color: '#1E57A3', color: '#1E57A3',
delay: 250,
}, },
}); });
+1 -1
View File
@@ -68,7 +68,7 @@ Route::middleware('access-check')->group(function () {
// События // События
Route::get('/events', [ClientEventController::class, 'index'])->name('client.event.index'); // Доделать builder 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 Route::get('/library/news', [ClientLibraryNewsController::class, 'index'])->name('client.library.news.index'); // Доделать builder
+6 -1
View File
@@ -9,8 +9,10 @@ export default defineConfig({
plugins: [ plugins: [
laravel({ laravel({
input: 'resources/js/app.js', input: 'resources/js/app.js',
ssr: 'resources/js/ssr.js',
refresh: true, refresh: true,
}), }),
vue({ vue({
template: { template: {
transformAssetUrls: { transformAssetUrls: {
@@ -31,6 +33,9 @@ export default defineConfig({
watch: { watch: {
usePolling: true usePolling: true
} }
} },
ssr: {
noExternal: ['lodash', 'bvi', 'preline'],
},
}); });