From 12e90140d340a5b0c9b8bc5ae34b1d4d43c80698 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 12 Jul 2019 20:31:13 +0200 Subject: [PATCH] wip #2782 @6 --- .editorconfig | 4 +- app/Http/Controllers/AjaxController.php | 56 ++++++++++++++++ app/Http/Controllers/FormController.php | 10 +++ app/Models/Product.php | 16 +++-- app/Models/Settings.php | 8 +++ app/Providers/AppServiceProvider.php | 1 + app/SubForms/FormField.php | 24 +++++++ app/Templates/Base.php | 37 +++++++++++ app/Templates/Services.php | 12 ++-- app/Templates/Text.php | 15 ++++- package.json | 3 +- resources/js/bootstrap.js | 1 + resources/js/components/Form.vue | 28 ++++++++ resources/js/mailform.js | 25 +++++++ resources/styles/components/form.styl | 34 ++++++++++ resources/views/layouts/app.blade.php | 24 +++---- .../views/pages/product-detail.blade.php | 12 ++-- resources/views/pages/products.blade.php | 2 +- resources/views/pages/services.blade.php | 20 +++++- resources/views/pages/text.blade.php | 18 +---- resources/views/partials/form.blade.php | 66 +++++++++++++++++++ resources/views/partials/intro.blade.php | 2 +- routes/web.php | 2 +- webpack.mix.js | 38 ++++++----- yarn.lock | 30 ++++++--- 25 files changed, 405 insertions(+), 83 deletions(-) create mode 100644 app/Http/Controllers/AjaxController.php create mode 100644 app/Http/Controllers/FormController.php create mode 100644 app/SubForms/FormField.php create mode 100644 resources/js/components/Form.vue create mode 100644 resources/js/mailform.js create mode 100644 resources/styles/components/form.styl create mode 100644 resources/views/partials/form.blade.php diff --git a/.editorconfig b/.editorconfig index 7c5cbcc..7cf71f6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -17,5 +17,5 @@ indent_size = 2 [*.styl] indent_size = 2 -[*.js] -indent_size = 2 +;[*.js] +;indent_size = 5 diff --git a/app/Http/Controllers/AjaxController.php b/app/Http/Controllers/AjaxController.php new file mode 100644 index 0000000..d875771 --- /dev/null +++ b/app/Http/Controllers/AjaxController.php @@ -0,0 +1,56 @@ +all(); + /** @var PageData $page */ + $page = Page::find($data['page'])->getPageData(); + + $validation = []; + + foreach ($page->get('form') as $field) { + $v = []; + if ($field['mandatory']) { + $v[] = 'required'; + } + if ($field['type'] == 'email') { + $v[] = 'email'; + } + if (count($v)) { + $validation[$field['type']] = implode('|', $v); + } + } + + $validatedData = $request->validate($validation); + + $labels = ['firstname' => 'Prénom', 'name' => 'Nom', 'company' => 'Société', 'sku' => 'Numéro de série', 'ref' => 'Reference', 'email' => 'Adresse e-mail', 'message' => 'Message']; + $contents = []; + foreach ($labels as $key => $label) { + + if (isset($validatedData[$key])) { + $contents[] = $label . ' : ' . $validatedData[$key]; + } + } + + Mail::raw(implode("\r\n", $contents), function ($message) use ($validatedData) { + $message->from(config('mail.from.address'), config('mail.from.name')); + $message->sender(config('mail.from.address'), config('mail.from.name')); + $message->replyTo($validatedData['email']); + $message->subject($validatedData['subject']); + }); + + echo 'ok :)'; + } +} diff --git a/app/Http/Controllers/FormController.php b/app/Http/Controllers/FormController.php new file mode 100644 index 0000000..a1a6083 --- /dev/null +++ b/app/Http/Controllers/FormController.php @@ -0,0 +1,10 @@ +{'s_' . Str::snake($specEntity->name)}, Json::TYPE_ARRAY); $specValue = ' - '; if ($specEntity->type == 'numeric' || $specEntity->type == 'numeric_list') { $specValue = $specEntity->prefix; - if ($specEntity->type == 'numeric_list') { + if ($specEntity->type == 'numeric_list' && is_array($val)) { $specValue .= ' ' . implode(' ' . $specEntity->separator . ' ', $val); } else { $specValue = $val; @@ -267,14 +268,15 @@ class Product extends CubistMagicModel } else if ($specEntity->type == 'text') { $specValue = trim($val); } else if ($specEntity->type == 'range') { + $specValue = $val['first'] . ' ' . __('à') . ' ' . $val['second'] . ' ' . $specEntity->unit; } else if ($specEntity->type == 'list') { - $option=Json::decodeRecursive($specEntity->options, Json::TYPE_ARRAY)[$val]; - $locale=App::getLocale(); - if(!isset($option->$locale) || !$option->$locale){ - $specValue=$option->fr; - }else{ - $specValue=$option->$locale; + $option = Json::decodeRecursive($specEntity->options, Json::TYPE_ARRAY)[$val]; + $locale = App::getLocale(); + if (!isset($option[$locale]) || !$option[$locale]) { + $specValue = $option['fr']; + } else { + $specValue = $option[$locale]; } } $res[$specEntity->label] = $specValue; diff --git a/app/Models/Settings.php b/app/Models/Settings.php index fa5c6f4..dd61791 100644 --- a/app/Models/Settings.php +++ b/app/Models/Settings.php @@ -35,5 +35,13 @@ class Settings extends \Cubist\Backpack\app\Magic\Models\Settings 'label' => __('Réseaux Sociaux'), 'tab' => __('Réseaux Sociaux'), ]); + + // === Forms + $this->addField([ + 'name' => 'form_privacy', + 'type' => 'Markdown', + 'label' => 'Mention légale vie privée affichée sous les formulaires', + 'tab' => 'Formulaires', + ]); } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 54a1774..7f873af 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -36,6 +36,7 @@ class AppServiceProvider extends ServiceProvider try { // Blade Include Aliases Blade::include('partials.intro', 'intro'); // @intro() + Blade::include('partials.form', 'form'); // @form() // BladeX Component Aliases // Ref: https://docs.spatie.be/laravel-blade-x/v2/introduction diff --git a/app/SubForms/FormField.php b/app/SubForms/FormField.php new file mode 100644 index 0000000..a69d631 --- /dev/null +++ b/app/SubForms/FormField.php @@ -0,0 +1,24 @@ +addField(['name' => 'type', + 'type' => 'SelectFromArray', + 'options' => ['firstname' => 'Prénom', 'name' => 'Nom', 'company' => 'Société', 'email' => 'Email', 'ref' => 'Référence', 'sku' => 'Numéro de série', 'subject' => 'Sujet', 'message' => 'Message'], + 'label' => 'Type de champ']); + + $this->addField(['name' => 'mandatory', + 'type' => 'Checkbox', + 'label' => 'Obligatoire']); + } +} diff --git a/app/Templates/Base.php b/app/Templates/Base.php index 0d65d70..d12deb9 100644 --- a/app/Templates/Base.php +++ b/app/Templates/Base.php @@ -25,4 +25,41 @@ class Base extends TemplatePage return false; } + public function addForm() + { + $tab = 'Formulaire'; + + $this->addField(['name' => 'form', + 'type' => 'Textarea', + 'label' => 'Texte d\'introduction du formulaire', + 'tab' => $tab]); + + $this->addField([ + 'name' => 'form', + 'type' => 'BunchOfFieldsMultiple', + 'bunch' => 'App\SubForms\FormField', + 'label' => 'Champs du formulaire', + 'tab' => $tab, + ]); + + $this->addField(['name' => 'form_confirmation', + 'type' => 'Text', + 'label' => 'Message de confirmation', + 'hint' => 'Affiché au visiteur une fois le formulaire envoyé', + 'tab' => $tab]); + + $this->addField(['name' => 'form_destination', + 'type' => 'Tags', + 'label' => 'Destinataires du formulaire', + 'tab' => $tab]); + + $this->addField(['name' => 'form_prefix', + 'type' => 'Text', + 'label' => 'Prefixe', + 'hint' => 'Apparaît au début du sujet de l\'email sous la forme : [Prefixe] Sujet de l\'email', + 'tab' => $tab]); + + + } + } diff --git a/app/Templates/Services.php b/app/Templates/Services.php index fb95193..93c55af 100644 --- a/app/Templates/Services.php +++ b/app/Templates/Services.php @@ -24,10 +24,12 @@ class Services extends Base public function init() { parent::init(); - $this->addField(['name' => 'test', - 'type' => 'Text', - 'label' => 'Super !', - 'tab' => 'Contenus' - ]); + + $this->addField(['name' => 'content', + 'type' => 'Markdown', + 'label' => 'Texte', + 'tab'=>'Contenus']); + + $this->addForm(); } } diff --git a/app/Templates/Text.php b/app/Templates/Text.php index c17bd72..27bffed 100644 --- a/app/Templates/Text.php +++ b/app/Templates/Text.php @@ -4,10 +4,23 @@ namespace App\Templates; -class Text extends Base +use Cubist\Backpack\app\Template\TemplatePage; + +class Text extends TemplatePage { public function getName() { return 'Page de texte'; + + } + + public function init() + { + parent::init(); // TODO: Change the autogenerated stub + + $this->addField(['name' => 'content', + 'type' => 'Markdown', + 'label' => 'Contenus', + 'tab'=>'Contenus']); } } diff --git a/package.json b/package.json index 6310d35..d693e9e 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "tailwindcss": "^1.0.4", "vue": "^2.6.10", "vue-slide-up-down": "^1.7.2", - "vue-template-compiler": "^2.6.10" + "vue-template-compiler": "^2.6.10", + "parsleyjs": "^2.9.1" } } diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index 4e36bfc..a1a1553 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -10,6 +10,7 @@ window._ = require('lodash'); try { //window.Popper = require('popper.js').default; window.$ = window.jQuery = require('jquery'); + require('parsleyjs'); //require('bootstrap'); } catch (e) {} diff --git a/resources/js/components/Form.vue b/resources/js/components/Form.vue new file mode 100644 index 0000000..f615714 --- /dev/null +++ b/resources/js/components/Form.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/resources/js/mailform.js b/resources/js/mailform.js new file mode 100644 index 0000000..28b3950 --- /dev/null +++ b/resources/js/mailform.js @@ -0,0 +1,25 @@ +$(function () { + console.log('mailform.js loaded'); + $.ajaxSetup({ + headers: { + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') + } + }); + + $(document).on('submit', 'form.mailform', function () { + var form = $(this); + var button = $(this).find('button[type="submit"]'); + button.text(button.data('sending')); + $.ajax({ + url: $(this).attr('action'), + type: $(this).attr('method'), + data: $(this).serialize(), + success: function (response) { + $(form).closest('#contact-form').html('

' + $(form).data('confirmation') + '

'); + }, + }); + return false; + }); + +}); + diff --git a/resources/styles/components/form.styl b/resources/styles/components/form.styl new file mode 100644 index 0000000..4557974 --- /dev/null +++ b/resources/styles/components/form.styl @@ -0,0 +1,34 @@ +$h3 = 24px +$h2 = 36px +$barlow = 'Barlow', sans-serif +$muli = 'Muli', sans-serif +$dark = #6B7287 +$lightgrey = #F7F8FC +$darkblue = #152F4E +$lightblue = #0EAADA +$verylightgrey = #E7E9F3 + +#contact-form + .form + input, textarea + border-radius 3px + color: $dark + padding 12px 10px + + label + font-family: $barlow + + .textarea + height 144px + + &-endmessage + font-size: 14px + + .btn-custom + padding 1.125rem 5.375rem + + .mr-form + margin-right: 2.5vw + + *:focus + outline-color $verylightgrey diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 115599d..9e5a636 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -1,17 +1,17 @@ -@include('cubist::head.htmldeclaration') - - {{--@include('cubist::head.head')--}} - - - - +@prepend('stylesheets') - +@endprepend + +@prepend('scripts') + +@endprepend + +@include('cubist::head.htmldeclaration') +@include('cubist::head.head') @include('cubist::body.begin') - @php //#### Generate temporary cart data $cart_items = []; @@ -34,7 +34,7 @@ @if(CubistMenu::get('breadcrumbs')->active()) - {!! CubistMenu::get('breadcrumbs')->crumbMenu()->asDiv(['class' => 'breadcrumbs'], [], ['class' => 'breadcrumbs-item']) !!} + {!! CubistMenu::get('breadcrumbs')->crumbMenu()->asDiv(['class' => 'breadcrumbs'], [], ['class' => 'breadcrumbs-item']) !!} @endif @@ -50,10 +50,6 @@
- - - - @include('cubist::body.end') diff --git a/resources/views/pages/product-detail.blade.php b/resources/views/pages/product-detail.blade.php index b8447bb..48832b5 100644 --- a/resources/views/pages/product-detail.blade.php +++ b/resources/views/pages/product-detail.blade.php @@ -35,7 +35,7 @@ {{-- Product text --}} - {!! Markdown::parse($product->highlights) !!} + @markdown($product->highlights)

@@ -60,7 +60,7 @@ @if ($product->descriptions) - {!! Markdown::parse($product->descriptions) !!} + @markdown($product->descriptions) @endif @@ -97,19 +97,19 @@ @if ($product->dimensions) - {!! Markdown::parse($product->dimensions) !!} + @markdown($product->dimensions) @endif @if ($product->options) - {!! Markdown::parse($product->options) !!} + @markdown($product->options) @endif @if ($product->accessories) - {!! Markdown::parse($product->accessories) !!} + @markdown($product->accessories) @endif @@ -137,7 +137,7 @@

{{$rel->name}}

- {!! Markdown::parse($rel->highlights) !!} + @markdown($rel->highlights)

{{__('Voir la fiche produit')}} diff --git a/resources/views/pages/products.blade.php b/resources/views/pages/products.blade.php index 25e0dd1..5d63af7 100644 --- a/resources/views/pages/products.blade.php +++ b/resources/views/pages/products.blade.php @@ -125,7 +125,7 @@

{{$product->get('name')}}

- {!! Markdown::parse($product->highlights) !!} + @markdown($product->highlights)

Voir la fiche diff --git a/resources/views/pages/services.blade.php b/resources/views/pages/services.blade.php index 93ffa1b..684b2de 100644 --- a/resources/views/pages/services.blade.php +++ b/resources/views/pages/services.blade.php @@ -1,2 +1,20 @@ @extends('layouts.app') -@section('title' ,'Services') +@section('content') + @intro(['padding' => 'pb-4v']) + + + + + + + @markdown($page->content) + + + + + @form + + + + +@endsection diff --git a/resources/views/pages/text.blade.php b/resources/views/pages/text.blade.php index f3c47b4..3abde2b 100644 --- a/resources/views/pages/text.blade.php +++ b/resources/views/pages/text.blade.php @@ -5,23 +5,7 @@ - - - - - - - - -

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus aperiam aspernatur corporis dicta dolore, earum est et eum eveniet, harum minima non, pariatur perspiciatis possimus ratione repudiandae veniam voluptas. Aspernatur eius esse laudantium nostrum nulla?

- -

Sit amet, consectetur adipisicing elit. Aut cum dolores ratione vel. Alias exercitationem obcaecati quae! Accusantium alias, aspernatur atque autem beatae commodi delectus dolores esse, exercitationem facere illo itaque iusto libero magni natus nemo obcaecati odit officia quia quibusdam reiciendis soluta suscipit unde ut veritatis, voluptate voluptatibus.

- -

En savoir plus

- - - - + @markdown($page->get('content')) diff --git a/resources/views/partials/form.blade.php b/resources/views/partials/form.blade.php new file mode 100644 index 0000000..a6e6a9a --- /dev/null +++ b/resources/views/partials/form.blade.php @@ -0,0 +1,66 @@ +@push('scripts') + +@endpush + +
+
+

{{$page->get('form_intro')}}

+
+ {{ csrf_field() }} + + @foreach($page->get('form') as $field) + @php + $required=$field['mandatory']?' required':''; + $asx=$field['mandatory']?' *':''; + @endphp + + @endforeach + +
+ @markdown($global->get('form_privacy')) +
+
+ *{{__('Champs obligatoires')}} + +
+
+
+
diff --git a/resources/views/partials/intro.blade.php b/resources/views/partials/intro.blade.php index 5f49345..3675235 100644 --- a/resources/views/partials/intro.blade.php +++ b/resources/views/partials/intro.blade.php @@ -4,7 +4,7 @@ // $name is the name of the page data to fetch. If it's not set, assume it is 'intro' $name = $name ?? 'intro'; - $title = $page->get("$name.title", ''); + $title = \Illuminate\Support\Str::ucfirst($page->get("$name.title", '')); $image = $page->getImageURL("$name.image"); $class = $class ?? ''; $padding = $padding ?? null; // Pass null so it doesn't override default padding diff --git a/routes/web.php b/routes/web.php index 98309b7..b24ceec 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,4 +1,4 @@ 'PageController@catchall']) +Route::any('{page}/{subs?}', 'PageController@catchall') ->where(['page' => '^(((?=(?!admin))(?=(?!\/)).))*$', 'subs' => '.*']); diff --git a/webpack.mix.js b/webpack.mix.js index 8ad959b..25ac50f 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -14,34 +14,36 @@ require('laravel-mix-purgecss'); */ mix.browserSync({ - proxy: process.env.APP_URL, - open: false // Don't automatically open a new tab when the watcher starts + proxy: process.env.APP_URL, + open: false // Don't automatically open a new tab when the watcher starts }); mix.js('resources/js/app.js', 'public/js') - .stylus('resources/styles/app.styl', 'public/css', { + .stylus('resources/styles/app.styl', 'public/css', { use: [ require('rupture')() ] }).options({ - postCss: [ - tailwindcss('tailwind.config.js'), - require('lost'), - ], - // autoprefixer: { - // options: { - // grid: true, // Enable CSS grid prefixes for IE - // } - // } - }) + postCss: [ + tailwindcss('tailwind.config.js'), + require('lost'), + ], + // autoprefixer: { + // options: { + // grid: true, // Enable CSS grid prefixes for IE + // } + // } +}) .purgeCss({ - globs: [ - path.join(__dirname, 'vendor/cubist/**/*.php'), // Some classes (eg. nav) might be present only here - ], - whitelistPatterns: [/grid-.*/], // Don't purge the grid-* custom classes since they can be used dynamically + globs: [ + path.join(__dirname, 'vendor/cubist/**/*.php'), // Some classes (eg. nav) might be present only here + ], + whitelistPatterns: [/grid-.*/], // Don't purge the grid-* custom classes since they can be used dynamically }); +mix.js('resources/js/mailform.js', 'public/js'); + // Enable unique hashed filenames when in production if (mix.inProduction()) { - mix.version(); + mix.version(); } diff --git a/yarn.lock b/yarn.lock index 5a1eb1c..44c1bad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1990,7 +1990,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-env@^5.1: +cross-env@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2" integrity sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg== @@ -3152,7 +3152,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.2: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -3925,7 +3925,7 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -jquery@^3.2: +jquery@>=1.8.0, jquery@^3.2: version "3.4.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== @@ -5110,6 +5110,13 @@ parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +parsleyjs@^2.9.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/parsleyjs/-/parsleyjs-2.9.1.tgz#fd79f7a1b1fe9138993b5e82f9bbc3e38fd3763d" + integrity sha512-2WSe+HsOZEPqXh9bFdi/vgWNQtGRRnAgS3v12qesMAabxVdLE7Oj7b+2UzcZ80eG23g1SxiMUH978Dk/wSkt+w== + dependencies: + jquery ">=1.8.0" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -6159,7 +6166,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -6203,6 +6210,11 @@ selfsigned@^1.10.4: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +semver@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" + integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== + semver@^6.1.0, semver@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" @@ -6535,7 +6547,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@~0.7.2: +source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -6785,16 +6797,18 @@ stylus-loader@^3.0.2: lodash.clonedeep "^4.5.0" when "~3.6.x" -stylus@acidjazz/stylus#dev: +"stylus@github:acidjazz/stylus#dev": version "0.54.5" resolved "https://codeload.github.com/acidjazz/stylus/tar.gz/f6d39f350166e15db4b662f287d1cdbdf88103e1" dependencies: css-parse "~2.0.0" debug "~3.1.0" - glob "~7.1.2" + glob "^7.1.3" mkdirp "~0.5.x" + safer-buffer "^2.1.2" sax "~1.2.4" - source-map "~0.7.2" + semver "^6.0.0" + source-map "^0.7.3" supports-color@^2.0.0: version "2.0.0" -- 2.39.5