Merge branch 'apoloz-recipe-merge-13-12-2023'

This commit is contained in:
Anatoliy Poloz
2023-12-13 11:47:49 +03:00
27 changed files with 2560 additions and 95 deletions

View File

@@ -8,6 +8,8 @@ LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
HOME_PAGE_TITLE="Eatvio Auth"
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306

View File

@@ -1,4 +1,4 @@
name: 'Test'
name: 'Test new actor runner 1.0'
on: [push]
jobs:
@@ -7,7 +7,7 @@ jobs:
name: Test
steps:
- uses: actions/checkout@v3
- uses: apoloz/laravel-test-runner@v1.1
- uses: apoloz/laravel-test-runner@v1.1.7
with:
php-version: 8.2
extensions: sqlite3

2
.gitignore vendored
View File

@@ -16,3 +16,5 @@ yarn-error.log
tags
tags.lock
tags.temp
.phpunit.cache
.phpunit.cache/*

File diff suppressed because one or more lines are too long

View File

@@ -4,6 +4,7 @@ namespace App\Livewire\Recipe;
use Livewire\Component;
use Livewire\WithFileUploads;
use Livewire\Attributes\On;
use Illuminate\Support\Facades\Auth;
use App\Models\Tag;
use App\Models\Recipe;
@@ -14,16 +15,19 @@ class Create extends Component
public $image;
public $state = 'active';
public $tags;
public $tags = [];
public $title;
public $type = 'other';
public $video_url = '';
public $cooking_time = '10';
public $description = "";
public $steps = [['image' => '', 'description' => '']];
public $ingredients = [['name' => '', 'portion' => '', 'unit' => '']];
public $ingredients = [];
public $ingredients_name = "";
public $ingredients_portion = "";
public $ingredients_unit = "gr";
protected $listeners = ['stepRemoved' => '$refresh', 'parentComponentTagAdded', 'parentComponentTagRemoved'];
protected $listeners = ['stepRemoved' => '$refresh'];
protected function rules()
{
@@ -45,9 +49,19 @@ class Create extends Component
return view('livewire.recipe.create');
}
public function addIngredient()
public function addIngredient(): void
{
$this->ingredients[] = ['name' => '', 'portion' => ''];
// dd(
// $this->ingredients_name,
// $this->ingredients_portion,
// $this->ingredients_unit
// );
$this->ingredients[] = [
'name' => $this->ingredients_name,
'portion' => $this->ingredients_portion,
'unit' => $this->ingredients_unit
];
$this->reset('ingredients_name', 'ingredients_portion', 'ingredients_unit');
}
public function removeIngredient($i)
@@ -77,12 +91,14 @@ class Create extends Component
$this->dispatch('stepRemoved')->self();
}
#[On('parentComponentTagAdded')]
public function parentComponentTagAdded(Tag $tag)
{
$tagIndex = $tag->id;
$this->tags[$tagIndex] = $tag;
}
#[On('parentComponentTagRemoved')]
public function parentComponentTagRemoved($tag)
{
$this->tags = collect($this->tags)
@@ -124,6 +140,7 @@ class Create extends Component
public function publish()
{
// dd($this->description);
$this->validate();
$recipe = new Recipe();
@@ -146,4 +163,9 @@ class Create extends Component
return redirect()->route('recipe.show', $recipe->id);
}
// public function updated($property)
// {
// dd($property, $this->$property);
// }
}

View File

@@ -63,7 +63,13 @@ class Edit extends Component
public function addIngredient()
{
$this->ingredients[] = ['name' => '', 'portion' => ''];
// $this->ingredients[] = ['name' => '', 'portion' => ''];
$this->ingredients[] = [
'name' => $this->ingredients_name,
'portion' => $this->ingredients_portion,
'unit' => $this->ingredients_unit
];
$this->reset('ingredients_name', 'ingredients_portion', 'ingredients_unit');
}
public function removeIngredient($i)
@@ -135,6 +141,7 @@ class Edit extends Component
public function publish()
{
dd($this->steps);
$this->validate();
$recipe = $this->recipe;

View File

@@ -44,5 +44,8 @@ return [
'sweets' => 'Сладости',
'drinks' => 'Напитки',
'other' => 'Прочее',
'name_of_product' => 'Название продукта',
'portion' => 'Порция',
'units' => 'Единица измерения'
];

97
package-lock.json generated
View File

@@ -34,6 +34,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
"integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
"dev": true,
"engines": {
"node": ">=10"
},
@@ -1941,6 +1942,7 @@
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
"integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
"dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.0.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -1954,6 +1956,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
"integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
"dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -1962,6 +1965,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
"dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -1979,12 +1983,14 @@
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.19",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
"integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
"dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
@@ -2000,6 +2006,7 @@
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
@@ -2012,6 +2019,7 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
"engines": {
"node": ">= 8"
}
@@ -2020,6 +2028,7 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
@@ -2860,7 +2869,8 @@
"node_modules/any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
"integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
"integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
"dev": true
},
"node_modules/anymatch": {
"version": "3.1.3",
@@ -2891,7 +2901,8 @@
"node_modules/arg": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
"dev": true
},
"node_modules/array-flatten": {
"version": "2.1.2",
@@ -3067,7 +3078,8 @@
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/base64-js": {
"version": "1.5.1",
@@ -3215,6 +3227,7 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -3430,6 +3443,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
"dev": true,
"engines": {
"node": ">= 6"
}
@@ -3711,7 +3725,8 @@
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
"node_modules/concat/node_modules/commander": {
"version": "2.20.3",
@@ -4212,7 +4227,8 @@
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
"dev": true
},
"node_modules/diffie-hellman": {
"version": "5.0.3",
@@ -4246,7 +4262,8 @@
"node_modules/dlv": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
"dev": true
},
"node_modules/dns-equal": {
"version": "1.0.0",
@@ -4726,6 +4743,7 @@
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
"integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -4756,6 +4774,7 @@
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
"integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
"dev": true,
"dependencies": {
"reusify": "^1.0.4"
}
@@ -4967,7 +4986,8 @@
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
"node_modules/fsevents": {
"version": "2.3.3",
@@ -4985,7 +5005,8 @@
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
"node_modules/gensync": {
"version": "1.0.0-beta.2",
@@ -5119,6 +5140,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.1"
},
@@ -5630,6 +5652,7 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -5638,7 +5661,8 @@
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"node_modules/interpret": {
"version": "2.2.0",
@@ -5685,6 +5709,7 @@
"version": "2.13.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
"integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
},
@@ -5851,6 +5876,7 @@
"version": "1.19.3",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz",
"integrity": "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==",
"dev": true,
"bin": {
"jiti": "bin/jiti.js"
}
@@ -6111,6 +6137,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
"dev": true,
"engines": {
"node": ">=10"
}
@@ -6118,7 +6145,8 @@
"node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
"node_modules/loader-runner": {
"version": "4.3.0",
@@ -6303,6 +6331,7 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
"engines": {
"node": ">= 8"
}
@@ -6320,6 +6349,7 @@
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"dev": true,
"dependencies": {
"braces": "^3.0.2",
"picomatch": "^2.3.1"
@@ -6452,6 +6482,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -6491,6 +6522,7 @@
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
"integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
"dev": true,
"dependencies": {
"any-promise": "^1.0.0",
"object-assign": "^4.0.1",
@@ -6501,6 +6533,7 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
"dev": true,
"funding": [
{
"type": "github",
@@ -6684,6 +6717,7 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -6692,6 +6726,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
"dev": true,
"engines": {
"node": ">= 6"
}
@@ -6736,6 +6771,7 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
"dependencies": {
"wrappy": "1"
}
@@ -6945,6 +6981,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -6961,7 +6998,8 @@
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
"node_modules/path-to-regexp": {
"version": "0.1.7",
@@ -6997,7 +7035,8 @@
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
"dev": true
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -7014,6 +7053,7 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -7022,6 +7062,7 @@
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
"integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
"dev": true,
"engines": {
"node": ">= 6"
}
@@ -7042,6 +7083,7 @@
"version": "8.4.28",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz",
"integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
"dev": true,
"funding": [
{
"type": "opencollective",
@@ -7181,6 +7223,7 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
"integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
"dev": true,
"dependencies": {
"camelcase-css": "^2.0.1"
},
@@ -7407,6 +7450,7 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
"integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
"dev": true,
"dependencies": {
"postcss-selector-parser": "^6.0.11"
},
@@ -7425,6 +7469,7 @@
"version": "6.0.13",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
"integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -7660,7 +7705,8 @@
"node_modules/postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
"node_modules/pretty-time": {
"version": "1.1.0",
@@ -7778,6 +7824,7 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true,
"funding": [
{
"type": "github",
@@ -7861,6 +7908,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
"dev": true,
"dependencies": {
"pify": "^2.3.0"
}
@@ -8041,6 +8089,7 @@
"version": "1.22.4",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
"integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
"dev": true,
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -8112,6 +8161,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true,
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
@@ -8146,6 +8196,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"funding": [
{
"type": "github",
@@ -8804,6 +8855,7 @@
"version": "3.34.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz",
"integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==",
"dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.2",
"commander": "^4.0.0",
@@ -8825,6 +8877,7 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
"dev": true,
"engines": {
"node": ">= 6"
}
@@ -8833,6 +8886,7 @@
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -8864,6 +8918,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -8979,6 +9034,7 @@
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz",
"integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==",
"dev": true,
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2",
@@ -9015,6 +9071,7 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -9026,6 +9083,7 @@
"version": "15.1.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
"dev": true,
"dependencies": {
"postcss-value-parser": "^4.0.0",
"read-cache": "^1.0.0",
@@ -9042,6 +9100,7 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz",
"integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==",
"dev": true,
"dependencies": {
"lilconfig": "^2.0.5",
"yaml": "^2.1.1"
@@ -9070,6 +9129,7 @@
"version": "6.0.13",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
"integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -9082,6 +9142,7 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz",
"integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==",
"dev": true,
"engines": {
"node": ">= 14"
}
@@ -9175,6 +9236,7 @@
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
"integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
"dev": true,
"dependencies": {
"any-promise": "^1.0.0"
}
@@ -9183,6 +9245,7 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
"integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
"dev": true,
"dependencies": {
"thenify": ">= 3.1.0 < 4"
},
@@ -9254,7 +9317,8 @@
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
"dev": true
},
"node_modules/tslib": {
"version": "2.6.2",
@@ -9945,7 +10009,8 @@
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
"node_modules/ws": {
"version": "8.13.0",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -63,7 +63,7 @@
<li class="header__menu-item">
<a href="" class="header__menu-link icon-check-square ">
Мой план
</a>
</li>
<li class="header__menu-item">
@@ -103,9 +103,7 @@
<div class="diet__form-row">
<div class="diet__form-columns lg-columns">
<div class="diet__form-column">
<div class="label">
Изображение
</div>
<div class="label">Изображение</div>
<label class="file">
<input type="file" name="file" class="file__input hidden" hidden="">
<span class="file__content">
@@ -331,7 +329,7 @@
</section>
</main>
</div>
@@ -429,7 +427,8 @@
<script src="js/app.min.js"></script>
<!--script src="js/app.min.js"></script-->
<script src="js/app.js"></script>
</body>
</html>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
{
"/js/app.js": "/js/app.js?id=aa615aefce96dda7f047c59a2f222235",
"/css/app.css": "/css/app.css?id=abd5390cc8cad29126eed05263435428"
"/js/app.js": "/js/app.js?id=87ac2e2e11714dbdb3a90de921976185",
"/css/app.css": "/css/app.css?id=ade72e00a2458d3a8b45d3643cf50e3b"
}

View File

@@ -1,7 +1,11 @@
@tailwind base;
/* @tailwind base;
@tailwind components;
@tailwind utilities;
@tailwind utilities; */
[x-cloak] {
display: none;
}
.my-custom-tags .taggle_list {
margin-top: -1.8em;
}

View File

@@ -8,7 +8,7 @@ $currentLocale = LaravelLocalization::getCurrentLocale();
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Auth</title>
<title>{{env('HOME_PAGE_TITLE')}}</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
</style>

View File

@@ -16,8 +16,8 @@ $isDiary = Str::of($curUrl)->test('/\/diary/');
<link type="text/css" rel="stylesheet" href="/css/liana_reset.css" />
<style>@import url('https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');</style>
<link type="text/css" rel="stylesheet" href="{{ mix('css/app.css') }}" />
<link type="text/css" rel="stylesheet" href="/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="/css/datepicker.min.css" />
<!--link type="text/css" rel="stylesheet" href="/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="/css/datepicker.min.css" /-->
<link type="text/css" rel="stylesheet" href="/css/style.css" />
<link type="text/css" rel="stylesheet" href="/css/liana_style.css" />
{{-- <script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script> --}}

View File

@@ -206,6 +206,169 @@
});" wire:key="myIdentifierHere"
x-ref="myIdentifierHere" wire:model="details"></textarea>
<!-- x-ref="myIdentifierHere" wire:model="details"></textarea> -->
</div>
</div>
</div>
<div class="container px-0 mb-4 --mw-1000">
<div class="d-md-flex justify-content-between align-items-center">
<div class="h4 mb-3 mb-md-0 text-uppercase --f_grey">Оказание услуг</div>
<div class="d-flex align-items-center flex-wrap flex-lg-nowrap flex-column-reverse flex-lg-row">
<ul class="nav nav-pills flex-nowrap w-100 --bordered --radius --tabs_blue --bg_white" id="pills-tab" role="tablist">
<li class="nav-item" role="presentation">
<button wire:click="$set('packets_count', 1)" class="btn-lg nav-link px-0 px-md-5 py-3 --f_bold {{ $packets_count === 1 ? 'active' : '' }}" data-bs-toggle="pill" data-bs-target="#pills-0" type="button" role="tab" aria-controls="pills-0" aria-selected="false">1 Вариант</button>
</li>
<li class="nav-item" role="presentation">
<button wire:click="$set('packets_count', 3)" class="btn-lg nav-link px-0 px-md-5 py-3 --f_bold {{ $packets_count === 3 ? 'active' : ''}}" data-bs-toggle="pill" data-bs-target="#pills-1" type="button" role="tab" aria-controls="pills-1" aria-selected="true">3 Варианта</button>
</li>
</ul>
</div>
</div>
</div>
<div class="tab-content mb-4" id="pills-tabContent">
@if($packets_count === 1)
<div class="tab-pane fade active show" id="pills-0" role="tabpanel" aria-labelledby="pills-0-tab">
<div class="container mb-5 p-3 overflow-hidden --bg_white --shadow --radius --mw-1000">
<div class="row">
<div class="col-12 col-md-6 mb-3">
<label class="mb-3">Название</label>
<input wire:model="packet1_options_input.short" type="text" class="form-control fs-4_5 py-3 w-100" placeholder="Введите краткое описание варианта" required="">
</div>
<div class="col-12 col-md-6 mb-3">
<label class="mb-3">Цена</label>
<input wire:model="packet1_options_input.price" type="number" class="form-control fs-4_5 py-3 w-100" placeholder="Введите цену варианта" required="">
</div>
</div>
<div class="mb-3">
<label class="mb-3">Описание услуги:</label>
<textarea wire:model="packet1_options_input.description" type="text" class="form-control py-3 w-100" placeholder="Описание услуги" required=""></textarea>
</div>
<label class="mb-3">Содержание услуги:</label>
@isset($packet1_options['items'])
<ul class="mb-3">
@foreach($packet1_options['items'] as $item)
<li>
<td>{{ $item }}</td>
</li>
@endforeach
</ul>
@endisset
<div class="row">
<div class="col-12 col-md-10 mb-3">
<input wire:model="input_items" type="text" class="form-control py-3 w-100" placeholder="Содержание услуги" required="" />
</div>
<div class="col-12 col-md-2 mb-3">
<button wire:click="addPacketOption('packet1_options', 'packet1_options_input')" type="button" class="float-end btn btn-lg btn-primary btn-block px-5 fs-6 --f_bold">+</button>
</div>
</div>
</div>
@endif
@if($packets_count === 3)
<div class="tab-pane fade active show" id="pills-1" role="tabpanel" aria-labelledby="pills-1-tab">
<div class="container mb-5 p-3 overflow-hidden --bg_white --shadow --radius --mw-1000 --counter_variant">
<div class="row">
<div class="col-12 col-md-6 mb-3">
<label class="mb-3">Краткое описание</label>
<input wire:model="packet1_options_input.short" type="text" class="form-control fs-4_5 py-3 w-100" placeholder="Введите краткое описание варианта" required="">
</div>
<div class="col-12 col-md-6 mb-3">
<label class="mb-3">Цена</label>
<input wire:model="packet1_options_input.price" type="number" class="form-control fs-4_5 py-3 w-100" placeholder="Введите цену варианта" required="">
</div>
</div>
<div class="mb-3">
<label class="mb-3">Описание услуги:</label>
<textarea wire:model="packet1_options_input.description" type="text" class="form-control py-3 w-100" placeholder="Описание услуги" required=""></textarea>
</div>
<label class="mb-3">Содержание услуги:</label>
@isset($packet1_options['items'])
<ul class="mb-3">
@foreach($packet1_options['items'] as $item)
<li>
<td>{{ $item }}</td>
</li>
@endforeach
</ul>
@endisset
<div class="row">
<div class="col-12 col-md-10 mb-3">
<input type text wire:model="input_items" type="text" class="form-control py-3 w-100" placeholder="Содержание услуги" required=""></textarea>
</div>
<div class="col-12 col-md-2 mb-3">
<button wire:click="addPacketOption('packet1_options', 'packet1_options_input')" type="button" class="float-end btn btn-lg btn-primary btn-block px-5 fs-6 --f_bold">+</button>
</div>
</div>
</div>
<div class="container mb-5 p-3 overflow-hidden --bg_white --shadow --radius --mw-1000 --counter_variant">
<div class="row">
<div class="col-12 col-md-6 mb-3">
<label class="mb-3">Краткое описание</label>
<input wire:model="packet2_options_input.short" type="text" class="form-control fs-4_5 py-3 w-100" placeholder="Введите краткое описание варианта" required="">
</div>
<div class="col-12 col-md-6 mb-3">
<label class="mb-3">Цена</label>
<input wire:model="packet2_options_input.price" type="number" class="form-control fs-4_5 py-3 w-100" placeholder="Введите цену варианта" required="">
</div>
</div>
<div class="mb-3">
<label class="mb-3">Описание услуги:</label>
<textarea wire:model="packet2_options_input.description" type="text" class="form-control py-3 w-100" placeholder="Описание услуги" required=""></textarea>
</div>
<label class="mb-3">Содержание услуги:</label>
@isset($packet2_options['items'])
<ul class="mb-3">
@foreach($packet2_options['items'] as $item)
<li>
<td>{{ $item }}</td>
</li>
@endforeach
</ul>
@endisset
<div class="row">
<div class="col-12 col-md-10 mb-3">
<input type text wire:model="input_items" type="text" class="form-control py-3 w-100" placeholder="Содержание услуги" required=""></textarea>
</div>
<div class="col-12 col-md-2 mb-3">
<button wire:click="addPacketOption('packet2_options', 'packet2_options_input')" type="button" class="float-end btn btn-lg btn-primary btn-block px-5 fs-6 --f_bold">+</button>
</div>
</div>
</div>
<div class="container mb-5 p-3 overflow-hidden --bg_white --shadow --radius --mw-1000 --counter_variant">
<div class="row">
<div class="col-12 col-md-6 mb-3">
<label class="mb-3">Краткое описание</label>
<input wire:model="packet3_options_input.short" type="text" class="form-control fs-4_5 py-3 w-100" placeholder="Введите краткое описание варианта" required="">
</div>
<div class="col-12 col-md-6 mb-3">
<label class="mb-3">Цена</label>
<input wire:model="packet3_options_input.price" type="number" class="form-control fs-4_5 py-3 w-100" placeholder="Введите цену варианта" required="">
</div>
</div>
<div class="mb-3">
<label class="mb-3">Описание услуги:</label>
<textarea wire:model="packet3_options_input.description" type="text" class="form-control py-3 w-100" placeholder="Описание услуги" required=""></textarea>
</div>
<label class="mb-3">Содержание услуги:</label>
@isset($packet3_options['items'])
<ul class="mb-3">
@foreach($packet3_options['items'] as $item)
<li>
<td>{{ $item }}</td>
</li>
@endforeach
</ul>
@endisset
<div class="row">
<div class="col-12 col-md-10 mb-3">
<input type text wire:model="input_items" type="text" class="form-control py-3 w-100" placeholder="Содержание услуги" required=""></textarea>
</div>
<div class="col-12 col-md-2 mb-3">
<button wire:click="addPacketOption('packet3_options', 'packet3_options_input')" type="button" class="float-end btn btn-lg btn-primary btn-block px-5 fs-6 --f_bold">+</button>
</div>
</div>
</div>
</div>
@@ -507,7 +670,6 @@
</div>
@endif
@if ($errors)
<div class="">
<ul>
@@ -528,3 +690,19 @@
</div>
</div>
@endif
<div class="container p-0 --mw-1000">
<div class="row gx-3 gx-lg-4 gy-3 gy-lg-4">
<div class="col">
<a wire:click="addToDrafts" href="#" class="btn btn-lg btn-secondary btn-block w-100 --f_bolder --no_wrap">В ЧЕРНОВИК</a>
</div>
<div class="col">
<a wire:click="showPreview" href="#" class="btn btn-lg btn-secondary btn-block w-100 --f_bolder --no_wrap">ПРЕВЬЮ</a>
</div>
<div class="col">
<button wire:click.prevent="publish" class="btn btn-lg btn-primary btn-block w-100 --f_bolder --no_wrap" type="submit">ОПУБЛИКОВАТЬ</button>
</div>
</div>
</div>
</section>

View File

@@ -6,13 +6,13 @@
</a>
<h1 class="diet__title">{{ __('recipe.adding') }}</h1>
</div>
<div action="#" class="diet__form">
<div class="mb-4 fs-4_5">
<div class="mb-2">{{ __('recipe.title') }}</div>
<div class="diet__form">
<div class="diet__form-row">
<div class="label">{{ __('recipe.title') }}</div>
<input wire:model="title" type="text" class="input" placeholder="Заголовок" />
</div>
<div class="mb-4 fs-4_5">
<label>{{ __('recipe.type') }}</label>
<div class="diet__form-row">
<div class="label">{{ __('recipe.type') }}</div>
<select wire:model="type" class="input">
<option value="first_meals">{{ __('recipe.first_meals') }}</option>
<option value="second_meals">{{ __('recipe.second_meals') }}</option>
@@ -90,17 +90,50 @@
</ul>
</div>
</div>
</div>
<div class="diet__form-column diet__form-column-xl">
</div>
<div class="diet__form-column diet__form-column-xl">
@if(!empty($ingredients))
<div class="content__table diet__form-row">
<div class="content__table-wrapper">
<table class="cabinet__table-content">
<thead>
<tr>
<th>{{ __('recipe.name_of_product')}}</th>
<th>{{ __('recipe.portion')}}</th>
<th>{{ __('recipe.units')}}</th>
</tr>
</thead>
<tbody>
@foreach($ingredients as $ingredient)
<tr>
<td>{{ $ingredient['name'] }}</td>
<td>{{ $ingredient['portion'] }}</td>
<td>{{ __('recipe.' . $ingredient['unit']) }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endif
<div class="diet__form-columns">
<div class="diet__form-column diet__form-column-lg">
<input type="text" name="product" class="input" placeholder="Введите название продукта">
<input wire:model="ingredients_name" type="text" name="name" class="input" placeholder="Введите название продукта">
</div>
<div class="diet__form-column">
<div class="diet__form-adding">
<div class="diet__form-column">
<input type="num" name="ccal" class="input" placeholder="Порция">
<button type="button" class="btn btn-primary icon-plus"></button>
<input wire:model="ingredients_portion" type="num" name="portion" class="input" placeholder="Порция">
<select wire:model="ingredients_unit" name="unit" class="input">
<option value="gr">гр</option>
<option value="teespoon">ч. ложек</option>
<option value="tablespoon">ст. ложек</option>
<option value="ml">мл</option>
<option value="pcs">шт</option>
<option value="clove">зубчик</option>
<option value="to_taste">по вкусу</option>
</select>
<button wire:click="addIngredient" type="button" class="btn btn-primary icon-plus"></button>
</div>
<button type="button" class="icon-gear"></button>
</div>
@@ -131,7 +164,9 @@
})
.then( function(editor){
editor.model.document.on('change:data', () => {
$dispatch('input', editor.getData())
console.log(editor.getData());
// $dispatch('input', editor.getData())
@this.set('description', editor.getData());
})
})
.catch( error => {
@@ -165,7 +200,7 @@
@endif
</span>
</label>
<textarea name="desc-step-1" class="textarea" placeholder="Введите описание шага"></textarea>
<textarea name="desc-step-1" class="textarea" wire:model="steps.{{$i}}.description" id="step[{{$i}}][description]" placeholder="Введите описание шага"></textarea>
<div class="diet__form-column">
<button type="button" wire:click="removeStep({{$i}})" class="diet__form-add btn {{ $i == 0 ? 'btn-gray' : 'btn-primary' }}" @disabled($i == 0)>-</button>
<button type="button" wire:click="addStep" class="diet__form-add btn btn-primary" data-bs-original-title="Добавить шаг">+</button>

View File

@@ -1,30 +1,229 @@
<section class="py-5" id="main">
<div class="container d-flex justify-content-between align-items-center flex-nowrap mb-4 px-4 py-3 --bg_white --shadow --radius --mw-1000 --f_bold --f_main overflow-x-xs-scroll">
<a href="{{ route('recipe.index') }}" class="d-flex w-md-30 align-items-center --f_bold"><svg width="17" height="16" class="me-2"><use xlink:href="#GoBack"></use></svg><span class="d-none d-md-inline --f_main">{{ __('recipe.my_recipes') }}</span></a>
<div class="fs-5 text-center">
<div class="--f_bolder">{{ __('recipe.editing') }}</div>
<section class="py-5 diet" id="main">
<div class="diet__container">
<div class="diet__header">
<a href="{{ route('recipe.index') }}" class="diet__back icon-arrow-short-left">
<span>Мой блог</span>
</a>
<h1 class="diet__title">{{ __('recipe.editing') }}</h1>
</div>
<div class="d-none d-md-flex w-md-30"></div>
</div>
<div class="container mb-4 py-3 overflow-hidden --bg_white --shadow --radius --mw-1000">
<div class="mb-4 fs-4_5">
<div class="mb-2">{{ __('recipe.title') }}</div>
<input wire:model="title" type="text" class="form-control fs-4_5 py-3 w-100" placeholder="Заголовок" />
</div>
<div class="mb-4 fs-4_5">
<label>{{ __('recipe.type') }}</label>
<select wire:model="type" class="form-select mt-3 ps-4 pe-5 py-3 --f_bold">
<option value="first_meals" @selected($type == 'first_meals')>{{ __('recipe.first_meals') }}</option>
<option value="second_meals" @selected($type == 'second_meals')>{{ __('recipe.second_meals') }}</option>
<option value="salads" @selected($type == 'salads')>{{ __('recipe.salads') }}</option>
<option value="snacks" @selected($type == 'snacks')>{{ __('recipe.snacks') }}</option>
<option value="sweets" @selected($type == 'sweets')>{{ __('recipe.sweets') }}</option>
<option value="drinks" @selected($type == 'drinks')>{{ __('recipe.drinks') }}</option>
<option value="other" @selected($type == 'other')>{{ __('recipe.other') }}</option>
</select>
<div class="diet__form">
<div class="diet__form-row">
<label class="label">{{ __('recipe.title') }}</label>
<input wire:model="title" type="text" class="input" placeholder="Заголовок" />
</div>
<div class="diet__form-row">
<label class="label">{{ __('recipe.type') }}</label>
<select wire:model="type" class="input">
<option value="first_meals" @selected($type == 'first_meals')>{{ __('recipe.first_meals') }}</option>
<option value="second_meals" @selected($type == 'second_meals')>{{ __('recipe.second_meals') }}</option>
<option value="salads" @selected($type == 'salads')>{{ __('recipe.salads') }}</option>
<option value="snacks" @selected($type == 'snacks')>{{ __('recipe.snacks') }}</option>
<option value="sweets" @selected($type == 'sweets')>{{ __('recipe.sweets') }}</option>
<option value="drinks" @selected($type == 'drinks')>{{ __('recipe.drinks') }}</option>
<option value="other" @selected($type == 'other')>{{ __('recipe.other') }}</option>
</select>
</div>
<div class="diet__form-row">
<div class="diet__form-columns lg-columns">
<div class="diet__form-column">
<div class="label">{{ __('recipe.picture') }}</div>
<label class="file">
<input type="file" wire:model="image" name="file" class="file__input hidden" hidden="">
<span class="file__content">
<span class="file__formats">
@if(is_null($image))
<img src="/img/formats-2.svg" alt="formats">
@else
<img src="{{ is_string($image) ? Storage::url($image) : $image->temporaryUrl() }}" />
@endif
</span>
<span class="file__title">
@if(is_null($image))
Нажмите для&nbsp;выбора или&nbsp;перетащите изображание
@endif
</span>
</span>
</label>
@error('image') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="diet__form-column diet__form-column-lg">
<div class="diet__form-row">
<div class="label">
Тип записи
</div>
<div class="diary__stats-tablist" role="tablist" aria-labelledby="label">
<button class="btn" role="tab" type="button" id="tab-1" aria-selected="true" aria-controls="tabpanel-1">Рецепт</button>
<button class="btn" role="tab" type="button" id="tab-2" aria-selected="false" aria-controls="tabpanel-2" tabindex="-1">Cтатья</button>
</div>
</div>
</div>
<div class="tabpanel" role="tabpanel" id="tabpanel-1" tabindex="0" aria-labelledby="tab-1">
<div class="diet__form-column">
<div class="diet__form-row">
<div class="label">{{ __('recipe.cooking_time') }}</div>
<div class="dropdown" x-data="{ open: false }" >
<button
type="button"
:class="open ? 'dropdown__button active' : 'dropdown__button'"
x-on:click="open = ! open">
{{ __('recipe.t' . $cooking_time . 'm') }}
</button>
<ul :class="open ? 'dropdown__list visible' : 'dropdown__list'">
<li wire:click="$set('cooking_time','10')" @click="open = !open" :class="$wire.cooking_time =='10'? 'dropdown__list-item active' : 'dropdown__list-item'">{{ __('recipe.t10m') }}</li>
<li wire:click="$set('cooking_time','20')" @click="open = !open" :class="$wire.cooking_time =='20' ? 'dropdown__list-item active' : 'dropdown__list-item'">{{ __('recipe.t20m') }}</li>
<li wire:click="$set('cooking_time','30')" @click="open = !open" :class="$wire.cooking_time =='30' ? 'dropdown__list-item active' : 'dropdown__list-item'">{{ __('recipe.t30m') }}</li>
<li wire:click="$set('cooking_time','60')" @click="open = !open" :class="$wire.cooking_time =='60' ? 'dropdown__list-item active' : 'dropdown__list-item'">{{ __('recipe.t60m') }}</li>
<li wire:click="$set('cooking_time','120')" @click="open = !open" :class="$wire.cooking_time =='120' ? 'dropdown__list-item active' : 'dropdown__list-item'">{{ __('recipe.t120m') }}</li>
<li wire:click="$set('cooking_time','14400')" @click="open = !open" :class="$wire.cooking_time =='14400' ? 'dropdown__list-item active' : 'dropdown__list-item'">{{ __('recipe.t14400m') }}</li>
</ul>
</div>
</div>
</div>
<div class="diet__form-column">
<div class="diet__form-row">
<div class="label">{{ __('recipe.record_state') }}</div>
<div class="dropdown" x-data="{ open: false }">
<button type="button"
:class="open ? 'dropdown__button active' : 'dropdown__button'"
x-on:click="open = ! open"
>{{ $state == 'active' ? __('recipe.record_state_active') : __('recipe.record_state_not_active') }}
</button>
<ul :class="open ? 'dropdown__list visible' : 'dropdown__list'">
<li wire:click="$set('state','active')" @click="open = !open" :class="$wire.state == 'active' ? 'dropdown__list-item active' : 'dropdown__list-item'">{{ __('recipe.record_state_active') }}</li>
<li wire:click="$set('state','archived')" @click="open = !open" :class="$wire.state == 'archived' ? 'dropdown__list-item active' : 'dropdown__list-item'">{{ __('recipe.record_state_not_active') }}</li>
</ul>
</div>
</div>
</div>
<div class="diet__form-column diet__form-column-xl">
@if(!empty($ingredients))
<div class="content__table diet__form-row">
<div class="content__table-wrapper">
<table class="cabinet__table-content">
<thead>
<tr>
<th>{{ __('recipe.name_of_product')}}</th>
<th>{{ __('recipe.portion')}}</th>
<th>{{ __('recipe.units')}}</th>
</tr>
</thead>
<tbody>
@foreach($ingredients as $ingredient)
<tr>
<td>{{ $ingredient['name'] }}</td>
<td>{{ $ingredient['portion'] }}</td>
<td>{{ __('recipe.' . $ingredient['unit']) }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endif
<div class="diet__form-columns">
<div class="diet__form-column diet__form-column-lg">
<input wire:model="ingredients_name" type="text" name="name" class="input" placeholder="Введите название продукта">
</div>
<div class="diet__form-column">
<div class="diet__form-adding">
<div class="diet__form-column">
<input wire:model="ingredients_portion" type="num" name="portion" class="input" placeholder="Порция">
<select wire:model="ingredients_unit" name="unit" class="input">
<option value="gr">гр</option>
<option value="teespoon">ч. ложек</option>
<option value="tablespoon">ст. ложек</option>
<option value="ml">мл</option>
<option value="pcs">шт</option>
<option value="clove">зубчик</option>
<option value="to_taste">по вкусу</option>
</select>
<button wire:click="addIngredient" type="button" class="btn btn-primary icon-plus"></button>
</div>
<button type="button" class="icon-gear"></button>
</div>
</div>
</div>
</div>
</div>
{{-- <div class="tabpanel" role="tabpanel" id="tabpanel-1" tabindex="0" aria-labelledby="tab-1">
<div class="diet__form-column">
<div class="diet__form-row">
<div class="label">
Время приготавления
</div>
<div class="dropdown">
<button type="button" class="dropdown__button">
1 час
</button>
<ul class="dropdown__list">
<li data-value="1" class="dropdown__list-item active">1 час</li>
<li data-value="30" class="dropdown__list-item">30 минут</li>
</ul>
<input type="text" name="time" class="dropdown__input hidden" hidden="" value="1">
</div>
</div>
</div>
<div class="diet__form-column">
<div class="diet__form-row">
<div class="label">
Статус
</div>
<div class="dropdown">
<button type="button" class="dropdown__button">
Активна
</button>
<ul class="dropdown__list">
<li data-value="active" class="dropdown__list-item active">Активна</li>
<li data-value="unactive" class="dropdown__list-item">Неактивна</li>
</ul>
<input type="text" name="status" class="dropdown__input hidden" hidden="" value="unactive">
</div>
</div>
</div>
<div class="diet__form-column diet__form-column-xl">
<div class="diet__form-columns">
<div class="diet__form-column diet__form-column-lg">
<input type="text" name="product" class="input" placeholder="Введите название продукта">
</div>
<div class="diet__form-column">
<div class="diet__form-adding">
<div class="diet__form-column">
<input type="num" name="ccal" class="input" placeholder="Порция">
<button type="button" class="btn btn-primary icon-plus"></button>
</div>
<button type="button" class="icon-gear"></button>
</div>
</div>
</div>
</div>
</div> --}}
<div class="tabpanel tabpanel--hidden" role="tabpanel" id="tabpanel-2" tabindex="0" aria-labelledby="tab-2">
<div class="diet__form-column">
<div class="diet__form-row">
<div class="label">
Статус
</div>
<div class="dropdown">
<button type="button" class="dropdown__button">
Активна
</button>
<ul class="dropdown__list">
<li data-value="active" class="dropdown__list-item active">Активна</li>
<li data-value="unactive" class="dropdown__list-item">Неактивна</li>
</ul>
<input type="text" name="status" class="dropdown__input hidden" hidden="" value="unactive">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row fs-4_5">
<div class="diet__form">
<div class="row fs-4_5">
<div class="col-12 col-sm-12 col-xl-4 my-4 dnd_file">
<label for="form-image">{{ __('recipe.picture') }}</label>
<div class="form__item mt-3 p-3 --radius --bordered text-center --f_grey">
@@ -175,7 +374,7 @@
</div>
<div class="col-sm-7 col-lg-8 mb-3 mb-sm-0 px-sm-2 flex-grow-1">
<div class="d-flex align-items-center form-control --textarea py-3 w-100 h-100" onclick="this.children[0].focus()">
<textarea name="step[{{$i}}][description]" wire:mode.defer="steps.{{$i}}.description" autoresize="" placeholder="Введи описание шага" rows="5">{{ $steps[$i]['description'] ?? '' }}</textarea>
<textarea name="step[{{$i}}][description]" wire:model.defer="steps.{{$i}}.description" autoresize="" placeholder="Введи описание шага" rows="5">{{ $steps[$i]['description'] ?? '' }}</textarea>
</div>
</div>
<div class="col d-flex flex-sm-column ps-sm-2 justify-content-between">
@@ -194,6 +393,7 @@
<input wire:model="video_url" type="text" class="form-control fs-4_5 py-3 w-100" placeholder="Прикрипите ссылку на YouTube видео" />
</div>
</div>
</div>
<div class="container mb-5 p-0 --mw-1000">
<div class="row gx-3 gx-lg-4 gy-3 gy-lg-4">
<div class="col">
@@ -207,11 +407,11 @@
</div>
</div>
</div>
<div class="container mb-5 p-0 --mw-1000">
@foreach ($errors->all() as $message)
<div class="alert alert-warning">{{ $message }}</div>
@endforeach
</div>
</div>
</section>

View File

@@ -84,15 +84,17 @@
$i = 0;
@endphp
<div class="col-12 col-lg px-0 flex-grow-1 text-lg-end">
@foreach($rawTypes as $keyType => $type)
<div class="--tags mb-3">
<div class="mb-2 --f_bold"> {{ __('recipe.' . $keyType) }} </div>
@foreach($type as $tagName => $tagsCount)
<a href="?tag={{ $tagName }}" data-idx="{{ $i . ":" . $colorsMaxIndex }}" style="font-weight: {{$tagsCount * 200}};" class="btn {{ $colorClasses[$i] }} btn-sm border-0 --radius">{{ Str::of($tagName)->split('/-/')[1] }} <sup>{{ $tagsCount }}</sup></a>
@php $i = ($colorsMaxIndex > $i) ? $i+1 : 0; @endphp
@if(!is_null($rawTypes))
@foreach($rawTypes as $keyType => $type)
<div class="--tags mb-3">
<div class="mb-2 --f_bold"> {{ __('recipe.' . $keyType) }} </div>
@foreach($type as $tagName => $tagsCount)
<a href="?tag={{ $tagName }}" data-idx="{{ $i . ":" . $colorsMaxIndex }}" style="font-weight: {{$tagsCount * 200}};" class="btn {{ $colorClasses[$i] }} btn-sm border-0 --radius">{{ Str::of($tagName)->split('/-/')[1] }} <sup>{{ $tagsCount }}</sup></a>
@php $i = ($colorsMaxIndex > $i) ? $i+1 : 0; @endphp
@endforeach
</div>
@endforeach
</div>
@endforeach
@endif
</div>
</div>
</div>

View File

@@ -13,8 +13,10 @@
<script src="/js/ckeditor.js"></script>
<script src="https://unpkg.com/taggle/src/taggle.js" defer></script>
<link type="text/css" rel="stylesheet" href="/css/toggle.css" />
{{--<link type="text/css" rel="stylesheet" href="/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="/css/datepicker.min.css" /> --}}
@endpush
@push('jq_scripts')
<script src="/js/bootstrap.min.js"></script>
<script src="/js/bootstrap.bundle.min.js"></script>
{{--<script src="/js/bootstrap.min.js"></script>
<script src="/js/bootstrap.bundle.min.js"></script>--}}
@endpush

View File

@@ -5,6 +5,269 @@
$recipeViewsCount = views($recipe)->unique()->count();
@endphp
@section('main_section')
<section class="content">
<div class="content__container container-sm">
<div class="content__heading">
<a href="{{ route('recipe.index') }}" class="content__heading-back icon-arrow-short-left">
<span>Рецепты</span>
</a>
<div class="content__heading-stats">
<div class="content__heading-stat icon-eye-fill">
<strong>{{ $recipeViewsCount }}</strong>
</div>
<div class="content__heading-stat icon-heart-fill">
<strong>@livewire('recipe.like-count', ['recipe' => $recipe])</strong>
</div>
<div class="content__heading-stat icon-message-square">
<strong>{{ $recipe->comments_count }}</strong>
</div>
</div>
<div class="content__person">
<div class="content__person-name">
{{ $author['name'] }}
</div>
<div class="content__person-thumb">
@empty($author->profile_photo_path)
<img src="{{ $author->profile_photo_url }}" alt="thumb">
@else
<img src="/storage/{{ $author->profile_photo_path }}" alt="thumb">
@endempty
</div>
</div>
</div>
</div>
</section>
<section class="recipe">
<div class="recipe__container container-sm">
<div class="recipe__content">
<div class="recipe__header">
<div class="recipe__image">
<img src="/storage/{{ $recipe->image }}" class="cover-image" alt="recipe">
</div>
<div class="recipe__body">
<div class="recipe__caption">
<h1 class="recipe__title">
{{ $recipe->title }}
</h1>
<button type="button" class="recipe__action icon-dotts"></button>
</div>
<div class="recipe__stats">
<div class="recipe__stat icon-clock">{{ __('recipe.t' . $recipe->cooking_time . "m") }}</div>
<div class="recipe__stat icon-foots">{{ $recipe->steps->count() }} этапов</div>
</div>
<p class="recipe__desc">{!! $recipe->description !!}</p>
@if (strlen(trim($recipe->video_url)) > 4)
<a target="_blank" rel="noopener noreferrer" href="{{ $recipe->video_url }}" class="recipe__link icon-youtube">Посмотреть рецепт на YouTube</a>
@endif
</div>
</div>
<div class="recipe__info">
<div class="recipe__info-column">
<div class="recipe__info-caption">
ПРОДУКТЫ:
</div>
<ul class="recipe__info-list marked">
@foreach($recipe->ingredients as $ingredient)
@php
$localizedUnit = (isset($ingredient['unit']) && mb_strlen($ingredient['unit']) > 1)
? $ingredient['unit']
: 'gr';
@endphp
@if(mb_strlen($ingredient['name']) > 1)
<li>{{ $ingredient['name'] }} - {{ $ingredient['portion'] }} {{ __('recipe.' . $localizedUnit ) }}</li>
@endif
@endforeach
</ul>
</div>
<div class="recipe__info-column">
<div class="recipe__info-caption">
ЦЕННОСТЬ:
</div>
<ul class="recipe__info-list">
<li>WIP</li>
{{--
<li>Калории: 139.9 ккал</li>
<li>Белки: 20.4 гр</li>
<li>Жиры: 5.7 гр</li>
<li>Углеводы: 1.8 гр</li>
--}}
</ul>
</div>
<div class="recipe__info-column">
<div class="recipe__info-caption">
ЦЕННОСТЬ:
</div>
<div class="recipe__info-tags">
@foreach($recipe->tags->unique() as $curTag)
<a href="{{ $curTag->recipe_index_url }}" class="recipe__info-tag">{{ $curTag->name }}</a>
@endforeach
</div>
</div>
</div>
<div class="recipe__footer">
<a href="#commentsList" class="recipe__footer-action icon-message-square">
<span>Комментировать</span>
</a>
@livewire('recipe.like', ['recipe' => $recipe])
{{--<button class="recipe__footer-action icon-heart">
<span>Нравится</span>
</button>--}}
<button class="recipe__footer-action icon-share">
<span>Поделится</span>
</button>
</div>
</div>
</div>
</section>
<section class="steps">
<div class="steps__container container-sm">
<h2 class="steps__title title">
ПОШАГОВЫЙ ФОТО РЕЦЕПТ - КУРИНЫЕ РУЛЕТИКИ С СЫРОМ
</h2>
<ol class="steps__list">
@foreach($recipe->steps as $step)
<li class="steps__item">
<div class="steps__item-image">
@if(isset($step['image']) && is_string($step['image']) && strlen($step["image"]) > 4)
<img src="/storage/{{ $step['image'] }}" class="cover-image" alt="step">
@endif
</div>
<div class="steps__item-text">
<small>
{!! $step['description'] !!}
</small>
</div>
</li>
@endforeach
{{--<li class="steps__item">
<div class="steps__item-image">
<img src="img/price_step_1.jpg" class="cover-image" alt="step">
</div>
<div class="steps__item-text">
Режем куриную грудку тонкими ломтиками.
</div>
</li>
<li class="steps__item">
<div class="steps__item-image">
<img src="img/price_step_2.jpg" class="cover-image" alt="step">
</div>
<div class="steps__item-text">
<p>
На край каждого кусочка филе кладем 1 ст. л. тертого сыра и порезанную зелень.
</p>
<p>
Формируем рулетик из куриного филе с сыром и зеленью, подворачивая с боков, чтобы сыр при приготовлении не вытек. Скрепляем края половинками зубочисток.
</p>
</div>
</li> --}}
</ol>
</div>
</section>
<section class="reviews">
<div class="reviews__container container-sm">
<h2 class="reviews__title title">
Отзывы
</h2>
<div class="reviews__tabs tabs">
<div class="tablist" role="tablist" aria-labelledby="label">
<button class="tab" role="tab" type="button" id="tab-1" aria-selected="true" aria-controls="tabpanel-1">Положительные 2</button>
<button class="tab" role="tab" type="button" id="tab-2" aria-selected="false" aria-controls="tabpanel-2" tabindex="-1">Негативные 1</button>
</div>
<div class="tabpanel" role="tabpanel" id="tabpanel-1" tabindex="0" aria-labelledby="tab-1">
<div class="reviews__items">
<div class="review">
<div class="review__thumb">
<img src="img/user.png" class="cover-image" alt="user">
</div>
<div class="review__content">
<div class="review__name">
Артём
</div>
<blockquote class="review__quote">
После данного плана питания стал чувствовать себя куда лучше! Обязательно продолжу работать с Дмитрием!
</blockquote>
</div>
<div class="review__info">
<div class="review__programm">
Лёгкий
</div>
<div class="review__rate icon-star">
5.0
</div>
</div>
</div>
<div class="review">
<div class="review__thumb">
<img src="img/user.png" class="cover-image" alt="user">
</div>
<div class="review__content">
<div class="review__name">
Артём
</div>
<blockquote class="review__quote">
После данного плана питания стал чувствовать себя куда лучше! Обязательно продолжу работать с Дмитрием!
</blockquote>
</div>
<div class="review__info">
<div class="review__programm">
Лёгкий
</div>
<div class="review__rate icon-star">
5.0
</div>
</div>
</div>
</div>
</div>
<div class="tabpanel" role="tabpanel" id="tabpanel-2" tabindex="0" aria-labelledby="tab-2">
<div class="reviews__items">
<div class="review">
<div class="review__thumb">
<img src="img/user.png" class="cover-image" alt="user">
</div>
<div class="review__content">
<div class="review__name">
Артём
</div>
<blockquote class="review__quote">
Курить план – это плохо! Гласит лозунг и кричит Минздрав. Ну, конечно …Ничем не хуже водки, а водку везде продают и ничего.. ... Говорят, некоторые годами курят план и живут нормальной жизнью…Ну, если они считают это нормальной жизнью, то пусть и дальше существуют…Я не хочу…Я теперь спрашиваю себя – а зачем мне жить, что б просто курить траву?..Теперь мне плохо и траву курить, Проклятый мир! Даже год не покурил… Мне нужно что-то получше.. почище….ярче!!!
</blockquote>
</div>
<div class="review__info">
<div class="review__programm">
Лёгкий
</div>
<div class="review__rate icon-star">
5.0
</div>
</div>
</div>
</div>
</div>
</div>
<form action="" class="reviews__form">
<textarea class="textarea textarea-white" placeholder="Введите отзыв"></textarea>
<div class="reviews__form-column">
<div class="reviews__form-rate star-rating">
<input type="radio" name="rate" id="rate-5" value="5" class="star-rating__input hidden" hidden>
<label class="star-rating__label" for="rate-5"></label>
<input type="radio" name="rate" id="rate-4" value="4" class="star-rating__input hidden" hidden>
<label class="star-rating__label" for="rate-4"></label>
<input type="radio" name="rate" id="rate-3" value="3" class="star-rating__input hidden" hidden>
<label class="star-rating__label" for="rate-3"></label>
<input type="radio" name="rate" id="rate-2" value="2" class="star-rating__input hidden" hidden>
<label class="star-rating__label" for="rate-2"></label>
<input type="radio" name="rate" id="rate-1" value="1" class="star-rating__input hidden" hidden>
<label class="star-rating__label" for="rate-1"></label>
</div>
<button type="button" class="btn btn-primary">Оставить отзыв</button>
</div>
</form>
</div>
</section>
<section class="py-5" id="main">
<div class="container d-flex justify-content-between align-items-center flex-nowrap mb-4 px-4 py-3 --bg_white --shadow --radius --mw-1000 --f_bold --f_main overflow-x-xs-scroll">
<a href="{{ route('recipe.index') }}" class="d-flex w-2/5 align-items-center --f_bold">

View File

@@ -1,5 +1,9 @@
@extends('layouts/eatvio')
@section('page_title', $user->name ." Profile")
@push('css_head')
<script src="https://cdn.tailwindcss.com"></script>
<link type="text/css" rel="stylesheet" href="/css/bootstrap.min.css" />
@endpush
@section('main_section')
<section class="py-5" id="main">

View File

@@ -56,8 +56,7 @@ Route::group(
if (Auth::check()) {
return redirect('profile');
}
return view('home');
}
return view('home'); }
)->name('home');
Route::get(

View File

@@ -47,8 +47,18 @@ class RegistrationTest extends TestCase
}
$response = $this->post('/register', [
'name' => 'Test User',
'first_name' => 'Test User_first_name',
'last_name' => 'User_last_name',
'email' => 'test@example.com',
'birthdate' => '27-07-2000',
'gender' => 'male',
'has_hypo' => 0,
'has_hyper' => 1,
'country' => 'ru',
'city' => 'Msk',
'lang' => 'ru',
'weight' => 90,
'height' => 180,
'password' => 'password',
'password_confirmation' => 'password',
'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature(),