Squashed commit of the following:

commit c87deb1d185b5cce65e417fde124a2691e268355
Author: Sebastien Hattry <sebastien.hattry@ldc.fr>
Date:   Wed Apr 13 10:58:17 2022 +0200

    Fix bug when product not published but display

commit 93de503ce91b3f36251f00340344046aa8218b36
Author: Sebastien Hattry <sebastien.hattry@ldc.fr>
Date:   Wed Apr 13 10:57:11 2022 +0200

    Product in BO - Gamme required setting

commit b1da45a5fba0c4a8aacbe10d06ada6ef93e748a0
Author: Sebastien Hattry <sebastien.hattry@ldc.fr>
Date:   Tue Apr 12 17:45:21 2022 +0200

    Header - Size of search picture fix bug in IOS

commit 590772a2483be51dc9e89aa44822e20eb414dca6
Author: Sebastien Hattry <sebastien.hattry@ldc.fr>
Date:   Tue Apr 12 10:18:46 2022 +0200

    Slide - Remove title and text display in BO

commit 08daf95799ab591167f33dfad6a6fec37aa4090a
Author: Sebastien Hattry <sebastien.hattry@ldc.fr>
Date:   Tue Apr 12 10:13:41 2022 +0200

    form Contact : add drom list if france choose

commit f5ba031076bbb51655eaa2451bce06902191c116
Author: Sebastien Hattry <sebastien.hattry@ldc.fr>
Date:   Tue Apr 12 09:59:16 2022 +0200

    Add story line Svg if needed
This commit is contained in:
Olivier Legat 2022-04-26 09:42:40 +02:00
parent 694aa17c01
commit fee051a7de
23 changed files with 343 additions and 102 deletions

View file

@ -9,17 +9,19 @@ use Illuminate\Support\Facades\Mail;
class ContactController extends Controller
{
public function contact(Request $request) {
public function contact(Request $request)
{
$status = $request->session()->get('status');
return view('front.contact', compact('status'));
}
public function contactSubmit(ContactFormRequest $request) {
public function contactSubmit(ContactFormRequest $request)
{
$data = $request->all();
$toMail = config('mail.contactsList.contactform');
if(!is_array($toMail)) {
if (!is_array($toMail)) {
$toMail = explode(',', $toMail);
}
//envoi du mail d'alerte

View file

@ -31,6 +31,7 @@ class GammesController extends Controller
}
$products = Product::whereIn('gamme_id', $gammes)
->where('is_published', 1)
->orderBy('name')
->get();

View file

@ -32,6 +32,8 @@ class ContactFormRequest extends FormRequest
'city' => 'required|string|max:255',
'phone' => 'required|max:255',
'email' => 'required|email:rfc,dns,spoof|max:255',
'country' => 'required|string|max:255',
'departement' => 'required_if:country,France|max:255',
'topic' => 'required',
'product_name' => 'required_if:topic,Réclamation|max:255',
'barcode' => 'required_if:topic,Réclamation|max:128',

View file

@ -2,6 +2,8 @@
namespace App\Http\Requests;
use App\Models\Gamme;
use Carbon\Exceptions\InvalidFormatException;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str;
@ -140,7 +142,10 @@ class StoreProductRequest extends FormRequest
$this->merge([
'slug' => Str::slug($this->name),
'gamme_id' => $this->gamme_id === '0' ? null : $this->gamme_id,
'gamme_id' =>
$this->is_food_service ?
Gamme::where("slug->fr", "food-service")->firstOrFail()->id :
$this->gamme_id,
'pictos' => $tabCuisson,
'plusproduit' => $tabPlusProduit,
'is_published' => $this->is_published ? true : false,
@ -162,7 +167,7 @@ class StoreProductRequest extends FormRequest
public function rules()
{
return [
'gamme_id' => 'sometimes|nullable|exists:gammes,id',
'gamme_id' => 'required|exists:gammes,id',
'name' => 'required|max:255',
'slug' => 'required|unique:products',
'description' => 'required|min:20',

View file

@ -14,6 +14,16 @@ class StoreSlideRequest extends FormRequest
* @return bool
*/
public function authorize()
{
return auth()->check();
}
/**
* Prepare the data for validation.
*
* @return void
*/
protected function prepareForValidation()
{
try {
$this->merge([
@ -25,10 +35,10 @@ class StoreSlideRequest extends FormRequest
// On fait rien
}
$this->merge([
'title' => 'lorem title ' . rand(),
'text' => 'lorem text ' . rand(),
'link_new_tab' => $this->link_new_tab ? true : false
]);
return auth()->check();
}
/**

View file

@ -2,7 +2,7 @@
/**
* Sender pour le contact
*
*
* @category Description
* @package Category
* @author Name <email@email.com>
@ -14,13 +14,12 @@
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
/**
* Undocumented class
*
*
* @category Description
* @package Category
* @author Name <email@email.com>

View file

@ -356,5 +356,20 @@ class GammesSeeder extends Seeder
$product->seo_title = 'volaille, poulet, Doux, qualités';
$product->seo_description = 'Doux vous propose des Poulets entiers congelés, nés, élevés et préparés en France';
$product->save();
$gamme = new Gamme();
$gamme->title = 'Food Service';
$gamme->slug = Str::slug($gamme->title);
$gamme->text = 'Food Service';
$gamme->color = '#d4eac8';
$upload = new SplFileInfo(resource_path('seeds/gammes/gamme_volaille.jpg'));
$imgpath = Utils::storeImage($upload, $gamme->getTable());
$gamme->picture = $imgpath;
$gamme->alt_text_picture = $gamme->title;
$upload = new SplFileInfo(resource_path('seeds/gammes/entete-volaille.jpg'));
$bannerpath = Utils::storeImage($upload, $gamme->getTable());
$gamme->banner = $bannerpath;
$gamme->alt_text_banner = $gamme->title;
$gamme->save();
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -4143,6 +4143,20 @@ img{
display:flex;
flex-direction:column;
}
#frise-autoscroll .img-frise svg{
width:272px;
height:1280px;
position:relative;
}
#frise-autoscroll .img-frise svg:first-child{
top:-40px;
}
#frise-autoscroll .img-frise svg:nth-child(2){
top:-100px;
}
#frise-autoscroll .img-frise svg:nth-child(3){
top:-160px;
}
#frise-autoscroll .img-frise .svg-mask{
position:-webkit-sticky;
position:sticky;
@ -4179,6 +4193,7 @@ img{
width:24px;
height:24px;
margin-left:15px;
cursor:pointer;
}
.product ul.more li{
@ -5180,8 +5195,13 @@ textarea{
margin-right:0;
}
.country select{
width:30%;
.country,
.drom{
width:50%;
}
.country select,
.drom select{
width:100%;
border:none;
border-bottom-color:currentcolor;
border-bottom-style:none;
@ -5190,6 +5210,10 @@ textarea{
padding-bottom:1rem;
}
.country{
margin-right:15px;
}
fieldset{
margin-top:45px;
border:0 none;

View file

@ -173,7 +173,7 @@ __webpack_require__.r(__webpack_exports__);
/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ installedChunks[chunkId][0]();
/******/ }
/******/ installedChunks[chunkIds[i]] = 0;
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ return __webpack_require__.O(result);
/******/ }

View file

@ -32,7 +32,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
/*js doc*/
var Carrousel = /*#__PURE__*/function () {
@ -509,7 +509,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
/**
* LDC Service Web
@ -1364,6 +1364,33 @@ module.exports = function (METHOD_NAME, argument) {
};
/***/ }),
/***/ "./node_modules/core-js/internals/array-slice-simple.js":
/*!**************************************************************!*\
!*** ./node_modules/core-js/internals/array-slice-simple.js ***!
\**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");
var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js");
var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js");
var Array = global.Array;
var max = Math.max;
module.exports = function (O, start, end) {
var length = lengthOfArrayLike(O);
var k = toAbsoluteIndex(start, length);
var fin = toAbsoluteIndex(end === undefined ? length : end, length);
var result = Array(max(fin - k, 0));
for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);
result.length = n;
return result;
};
/***/ }),
/***/ "./node_modules/core-js/internals/array-slice.js":
@ -1567,13 +1594,15 @@ var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/c
var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
module.exports = function (target, source) {
module.exports = function (target, source, exceptions) {
var keys = ownKeys(source);
var defineProperty = definePropertyModule.f;
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {
defineProperty(target, key, getOwnPropertyDescriptor(source, key));
}
}
};
@ -1639,9 +1668,9 @@ var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_module
var returnThis = function () { return this; };
module.exports = function (IteratorConstructor, NAME, next) {
module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {
var TO_STRING_TAG = NAME + ' Iterator';
IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });
setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
Iterators[TO_STRING_TAG] = returnThis;
return IteratorConstructor;
@ -2180,15 +2209,16 @@ module.exports = function (KEY, exec, FORCED, SHAM) {
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/function-apply.js ***!
\**********************************************************/
/***/ ((module) => {
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
var FunctionPrototype = Function.prototype;
var apply = FunctionPrototype.apply;
var bind = FunctionPrototype.bind;
var call = FunctionPrototype.call;
// eslint-disable-next-line es/no-reflect -- safe
module.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {
module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {
return call.apply(apply, arguments);
});
@ -2203,29 +2233,49 @@ module.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bin
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js");
var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
var bind = uncurryThis(uncurryThis.bind);
// optional / simple context binding
module.exports = function (fn, that) {
aCallable(fn);
return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {
return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {
return fn.apply(that, arguments);
};
};
/***/ }),
/***/ "./node_modules/core-js/internals/function-bind-native.js":
/*!****************************************************************!*\
!*** ./node_modules/core-js/internals/function-bind-native.js ***!
\****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
module.exports = !fails(function () {
var test = (function () { /* empty */ }).bind();
// eslint-disable-next-line no-prototype-builtins -- safe
return typeof test != 'function' || test.hasOwnProperty('prototype');
});
/***/ }),
/***/ "./node_modules/core-js/internals/function-call.js":
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/function-call.js ***!
\*********************************************************/
/***/ ((module) => {
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
var call = Function.prototype.call;
module.exports = call.bind ? call.bind(call) : function () {
module.exports = NATIVE_BIND ? call.bind(call) : function () {
return call.apply(call, arguments);
};
@ -2263,15 +2313,17 @@ module.exports = {
/*!*****************************************************************!*\
!*** ./node_modules/core-js/internals/function-uncurry-this.js ***!
\*****************************************************************/
/***/ ((module) => {
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
var FunctionPrototype = Function.prototype;
var bind = FunctionPrototype.bind;
var call = FunctionPrototype.call;
var callBind = bind && bind.bind(call);
var uncurryThis = NATIVE_BIND && bind.bind(call, call);
module.exports = bind ? function (fn) {
return fn && callBind(call, fn);
module.exports = NATIVE_BIND ? function (fn) {
return fn && uncurryThis(fn);
} : function (fn) {
return fn && function () {
return call.apply(fn, arguments);
@ -2497,9 +2549,9 @@ var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_mo
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
// Thank's IE8 for his funny defineProperty
// Thanks to IE8 for its funny defineProperty
module.exports = !DESCRIPTORS && !fails(function () {
// eslint-disable-next-line es/no-object-defineproperty -- requied for testing
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
return Object.defineProperty(createElement('div'), 'a', {
get: function () { return 7; }
}).a != 7;
@ -2738,7 +2790,7 @@ var constructorRegExp = /^\s*(?:class|function)\b/;
var exec = uncurryThis(constructorRegExp.exec);
var INCORRECT_TO_STRING = !constructorRegExp.exec(noop);
var isConstructorModern = function (argument) {
var isConstructorModern = function isConstructor(argument) {
if (!isCallable(argument)) return false;
try {
construct(noop, empty, argument);
@ -2748,16 +2800,25 @@ var isConstructorModern = function (argument) {
}
};
var isConstructorLegacy = function (argument) {
var isConstructorLegacy = function isConstructor(argument) {
if (!isCallable(argument)) return false;
switch (classof(argument)) {
case 'AsyncFunction':
case 'GeneratorFunction':
case 'AsyncGeneratorFunction': return false;
}
try {
// we can't check .prototype since constructors produced by .bind haven't it
} return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));
// `Function#toString` throws on some built-it function in some legacy engines
// (for example, `DOMQuad` and similar in FF41-)
return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));
} catch (error) {
return true;
}
};
isConstructorLegacy.sham = true;
// `IsConstructor` abstract operation
// https://tc39.es/ecma262/#sec-isconstructor
module.exports = !construct || fails(function () {
@ -3111,7 +3172,7 @@ module.exports = !$assign || fails(function () {
/* global ActiveXObject -- old IE, WSH */
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js");
@ -3189,7 +3250,7 @@ module.exports = Object.create || function create(O, Properties) {
// add "__proto__" for Object.getPrototypeOf polyfill
result[IE_PROTO] = O;
} else result = NullProtoObject();
return Properties === undefined ? result : defineProperties(result, Properties);
return Properties === undefined ? result : definePropertiesModule.f(result, Properties);
};
@ -3199,9 +3260,10 @@ module.exports = Object.create || function create(O, Properties) {
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/object-define-properties.js ***!
\********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
@ -3210,7 +3272,7 @@ var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_mod
// `Object.defineProperties` method
// https://tc39.es/ecma262/#sec-object.defineproperties
// eslint-disable-next-line es/no-object-defineproperties -- safe
module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var props = toIndexedObject(Properties);
var keys = objectKeys(Properties);
@ -3233,16 +3295,37 @@ module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperti
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js");
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js");
var TypeError = global.TypeError;
// eslint-disable-next-line es/no-object-defineproperty -- safe
var $defineProperty = Object.defineProperty;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
var ENUMERABLE = 'enumerable';
var CONFIGURABLE = 'configurable';
var WRITABLE = 'writable';
// `Object.defineProperty` method
// https://tc39.es/ecma262/#sec-object.defineproperty
exports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {
exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
anObject(O);
P = toPropertyKey(P);
anObject(Attributes);
if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
var current = $getOwnPropertyDescriptor(O, P);
if (current && current[WRITABLE]) {
O[P] = Attributes.value;
Attributes = {
configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
writable: false
};
}
} return $defineProperty(O, P, Attributes);
} : $defineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPropertyKey(P);
anObject(Attributes);
@ -3299,7 +3382,7 @@ exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDes
var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
var $getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f);
var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js");
var arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ "./node_modules/core-js/internals/array-slice-simple.js");
var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
? Object.getOwnPropertyNames(window) : [];
@ -3763,7 +3846,7 @@ var UPDATES_LAST_INDEX_WRONG = (function () {
return re1.lastIndex !== 0 || re2.lastIndex !== 0;
})();
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;
var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;
// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
@ -3771,7 +3854,6 @@ var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
if (PATCH) {
// eslint-disable-next-line max-statements -- TODO
patchedExec = function exec(string) {
var re = this;
var state = getInternalState(re);
@ -3886,7 +3968,7 @@ module.exports = function () {
/*!*****************************************************************!*\
!*** ./node_modules/core-js/internals/regexp-sticky-helpers.js ***!
\*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
@ -3894,19 +3976,31 @@ var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core
// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
var $RegExp = global.RegExp;
exports.UNSUPPORTED_Y = fails(function () {
var UNSUPPORTED_Y = fails(function () {
var re = $RegExp('a', 'y');
re.lastIndex = 2;
return re.exec('abcd') != null;
});
exports.BROKEN_CARET = fails(function () {
// UC Browser bug
// https://github.com/zloirock/core-js/issues/1008
var MISSED_STICKY = UNSUPPORTED_Y || fails(function () {
return !$RegExp('a', 'y').sticky;
});
var BROKEN_CARET = UNSUPPORTED_Y || fails(function () {
// https://bugzilla.mozilla.org/show_bug.cgi?id=773687
var re = $RegExp('^r', 'gy');
re.lastIndex = 2;
return re.exec('str') != null;
});
module.exports = {
BROKEN_CARET: BROKEN_CARET,
MISSED_STICKY: MISSED_STICKY,
UNSUPPORTED_Y: UNSUPPORTED_Y
};
/***/ }),
@ -4035,9 +4129,10 @@ var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
module.exports = function (it, TAG, STATIC) {
if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
module.exports = function (target, TAG, STATIC) {
if (target && !STATIC) target = target.prototype;
if (target && !hasOwn(target, TO_STRING_TAG)) {
defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });
}
};
@ -4091,9 +4186,11 @@ var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: '3.19.1',
version: '3.21.0',
mode: IS_PURE ? 'pure' : 'global',
copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
license: 'https://github.com/zloirock/core-js/blob/v3.21.0/LICENSE',
source: 'https://github.com/zloirock/core-js'
});
@ -4432,6 +4529,28 @@ module.exports = NATIVE_SYMBOL
&& typeof Symbol.iterator == 'symbol';
/***/ }),
/***/ "./node_modules/core-js/internals/v8-prototype-define-bug.js":
/*!*******************************************************************!*\
!*** ./node_modules/core-js/internals/v8-prototype-define-bug.js ***!
\*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
// V8 ~ Chrome 36-
// https://bugs.chromium.org/p/v8/issues/detail?id=3334
module.exports = DESCRIPTORS && fails(function () {
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
return Object.defineProperty(function () { /* empty */ }, 'prototype', {
value: 42,
writable: false
}).prototype != 42;
});
/***/ }),
/***/ "./node_modules/core-js/internals/well-known-symbol-wrapped.js":
@ -4517,7 +4636,10 @@ var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */
var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js");
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");
var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f);
var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js");
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var ARRAY_ITERATOR = 'Array Iterator';
var setInternalState = InternalStateModule.set;
@ -4559,13 +4681,18 @@ module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
// argumentsList[@@iterator] is %ArrayProto_values%
// https://tc39.es/ecma262/#sec-createunmappedargumentsobject
// https://tc39.es/ecma262/#sec-createmappedargumentsobject
Iterators.Arguments = Iterators.Array;
var values = Iterators.Arguments = Iterators.Array;
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');
// V8 ~ Chrome 45- bug
if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {
defineProperty(values, 'name', { value: 'values' });
} catch (error) { /* empty */ }
/***/ }),
@ -4669,7 +4796,7 @@ var defineProperty = (__webpack_require__(/*! ../internals/object-define-propert
var FunctionPrototype = Function.prototype;
var functionToString = uncurryThis(FunctionPrototype.toString);
var nameRE = /^\s*function ([^ (]*)/;
var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/;
var regExpExec = uncurryThis(nameRE.exec);
var NAME = 'name';
@ -4795,10 +4922,11 @@ var re2 = /a/g;
// "new" should create a new object, old webkit bug
var CORRECT_NEW = new NativeRegExp(re1) !== re1;
var MISSED_STICKY = stickyHelpers.MISSED_STICKY;
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
var BASE_FORCED = DESCRIPTORS &&
(!CORRECT_NEW || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {
(!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {
re2[MATCH] = false;
// RegExp constructor can alter flags and IsRegExp works correct with @@match
return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';
@ -4903,9 +5031,9 @@ if (isForced('RegExp', BASE_FORCED)) {
rawFlags = flags;
if (UNSUPPORTED_Y && 'sticky' in re1) {
if (MISSED_STICKY && 'sticky' in re1) {
sticky = !!flags && stringIndexOf(flags, 'y') > -1;
if (sticky) flags = replace(flags, /y/g, '');
if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');
}
if (UNSUPPORTED_NCG) {
@ -5307,7 +5435,7 @@ var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-ind
var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js");
var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js");
var arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ "./node_modules/core-js/internals/array-slice-simple.js");
var callRegExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js");
var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js");
var stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ "./node_modules/core-js/internals/regexp-sticky-helpers.js");
@ -5576,6 +5704,7 @@ var getOwnPropertyNamesExternal = __webpack_require__(/*! ../internals/object-ge
var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js");
var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js");
var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js");
var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js");
@ -5742,6 +5871,7 @@ if (!NATIVE_SYMBOL) {
propertyIsEnumerableModule.f = $propertyIsEnumerable;
definePropertyModule.f = $defineProperty;
definePropertiesModule.f = $defineProperties;
getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;
getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -70,16 +70,23 @@ textarea {
margin-right: 0;
}
}
.country select {
width: 30%;
border: none;
border-bottom-color: currentcolor;
border-bottom-style: none;
border-bottom-width: medium;
border-bottom: 1px solid black;
padding-bottom: 1rem;
}
.country,
.drom {
width: 50%;
select {
width: 100%;
border: none;
border-bottom-color: currentcolor;
border-bottom-style: none;
border-bottom-width: medium;
border-bottom: 1px solid black;
padding-bottom: 1rem;
}
}
.country {
margin-right: 15px;
}
fieldset {
margin-top: 45px;
border: 0 none;

View file

@ -31,6 +31,22 @@ img {
display: flex;
flex-direction: column;
svg {
width: 272px;
height: 1280px;
position: relative;
}
& svg:first-child {
top: -40px;
}
& svg:nth-child(2) {
top: -100px;
}
& svg:nth-child(3) {
top: -160px;
}
.svg-mask {
position: sticky;
width: 100%;
@ -75,6 +91,7 @@ img {
width: 24px;
height: 24px;
margin-left: 15px;
cursor: pointer;
}
.product ul.more li {

View file

@ -4,7 +4,6 @@
<div class="form-group me-5">
<label for="gamme_id">{{ __('Gamme') }}</label>
<select class="custom-select" id="gamme_id" name="gamme_id">
<option value="0">Pas de gamme</option>
@foreach($gammes as $gamme)
<option value="{{$gamme->id}}" @if ($gamme->id === $product->gamme_id) selected @endif>{{$gamme->title}}</option>
@endforeach

View file

@ -22,8 +22,6 @@
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">{{ __('Titre') }}</th>
<th scope="col">{{ __('Texte') }}</th>
<th scope="col">{{ __('Image') }}</th>
<th scope="col">{{ __('Lien') }}</th>
<th scope="col">{{ __('Début') }}</th>
@ -36,8 +34,6 @@
<tbody>
@foreach($slider->slides as $slide)
<tr>
<td>{{$slide->title}}</td>
<td>{!! $slide->text !!}</td>
<td>@if (!empty($slide->picture))<img src="{{ asset($slide->picture) }}" height="50px">@endif</td>
<td><a href="{{$slide->link}}" target="_slide">{{ $slide->link_label }}</a></td>
<td>{{date_format($slide->date_start, "d/m/Y H:i")}}</td>

View file

@ -1,13 +1,3 @@
<div class="form-group">
<label for="name">{{ __('Titre') }} *</label>
<input type="text" id="title" name="title" class="form-control" placeholder="{{ __('Titre') }} *" value="{{ old('title', $slide->title ?? '') }}" required>
@include('back.modules.input-error', ['inputName'=>'title'])
</div>
<div class="form-group">
<label for="name">{{ __('Texte') }}</label>
<textarea class="form-control" id="text" name="text" placeholder="{{ __('Texte') }}">{{ old('text', $slide->text) }}</textarea>
@include('back.modules.input-error', ['inputName'=>'text'])
</div>
<div class="form-group">
<label for="picture">{{ __('Image') }} <small class="text-muted">- JPEG/PNG, 2Mo max. Dimensions {{ Config::get('bo.slide_image_maxwidth') }} px par {{ Config::get('bo.slide_image_maxheight') }} px</small></label><br/>
<input type="file" id="picture" name="picture" accept="image/png, image/jpeg">

View file

@ -14,8 +14,6 @@
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">{{ __('Titre') }}</th>
<th scope="col">{{ __('Texte') }}</th>
<th scope="col">{{ __('Image') }}</th>
<th scope="col">{{ __('Lien') }}</th>
<th scope="col">{{ __('Début') }}</th>
@ -28,8 +26,6 @@
<tbody>
@foreach($slides as $slide)
<tr>
<td>{{$slide->title}}</td>
<td>{!! $slide->text !!}</td>
<td>@if (!empty($slide->picture))<img src="{{ asset($slide->picture) }}" height="50px">@endif</td>
<td><a href="{{$slide->link}}" target="_slide">{{ $slide->link_label }}</a></td>
<td>{{$slide->date_start}}</td>

View file

@ -154,7 +154,7 @@
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:20px;line-height:1;text-align:left;color:black;">Expediteur : {{ $data->civilite }} {{ $data->name }} {{ $data->lastname }}<br><br> Adresse : {{ $data->address }} {{ $data->postcode }} {{ $data->city }} <br><br> Téléphone : {{ $data->phone }}<br><br> Email : {{ $data->email }}<br><br> Sujet : {{ $data->topic }}<br><br> Produit : {{ $data->product_name }}<br><br> Code Barre : {{ $data->barcode }}<br><br> Lot : {{ $data->lot }}<br><br> Date limite de consommation : {{ $data->limit_date }}<br><br> Lieu d'achat : {{ $data->shop }}<br><br> Date de consommation : {{ $data->consumption_date }}<br><br> Message : <br><br>
<div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:20px;line-height:1;text-align:left;color:black;">Expediteur : {{ $data->civilite }} {{ $data->name }} {{ $data->lastname }}<br><br> Adresse : {{ $data->address }} {{ $data->postcode }} {{ $data->city }} <br><br> Téléphone : {{ $data->phone }}<br><br> Email : {{ $data->email }}<br><br> Pays : {{ $data->country }}<br><br> Département : {{ $data->departement }}<br><br> Sujet : {{ $data->topic }}<br><br> Produit : {{ $data->product_name }}<br><br> Code Barre : {{ $data->barcode }}<br><br> Lot : {{ $data->lot }}<br><br> Date limite de consommation : {{ $data->limit_date }}<br><br> Lieu d'achat : {{ $data->shop }}<br><br> Date de consommation : {{ $data->consumption_date }}<br><br> Message : <br><br>
{{ $data->message }}
</div>
</td>

File diff suppressed because one or more lines are too long

View file

@ -117,13 +117,33 @@
<input type="mail" name="email" id="email" value="{{ old('email') }}" autocomplete="email" required>
</div>
</div>
<div class="country">
<select id="country" class="changeLength" name="country" required>
<option value="" @if(!old('country')) selected @endif>{{ __('Sélectionnez un pays') }}</option>
@foreach($availableCountries as $country)
<option value="{{ $country->value }}" @if(old('country') == $country->value) selected @endif>{{ __($country->label) }}</option>
@endforeach
</select>
<div class="form-row">
<div class="country">
<select id="country" class="changeLength" name="country" required onclick="javascript:showDromField(this);">
<option value="" @if(!old('country')) selected @endif>{{ __('Sélectionnez un pays') }}</option>
@foreach($availableCountries as $country)
<option value="{{ $country->label }}" @if(old('country') == $country->label) selected @endif>{{ __($country->label) }}</option>
@endforeach
</select>
</div>
<div class="drom">
<select id="departement" class="changeLength" name="departement">
<option value="" @if(!old('departement')) selected @endif>{{ __('Sélectionnez un département') }}</option>
<option value="Guadeloupe" @if(old('departement') == 'Guadeloupe') selected @endif>{{ __('Guadeloupe') }}</option>
<option value="Martinique" @if(old('departement') == 'Martinique') selected @endif>{{ __('Martinique') }}</option>
<option value="Guyane" @if(old('departement') == 'Guyane') selected @endif>{{ __('Guyane') }}</option>
<option value="La Réunion" @if(old('departement') == 'La Réunion') selected @endif>{{ __('La Réunion') }}</option>
<option value="Mayotte" @if(old('departement') == 'Mayotte') selected @endif>{{ __('Mayotte') }}</option>
<option value="Saint-Pierre-et-Miquelon" @if(old('departement') == 'Saint-Pierre-et-Miquelon') selected @endif>{{ __('Saint-Pierre-et-Miquelon') }}</option>
<option value="Saint-Barthélémy" @if(old('departement') == 'Saint-Barthélémy') selected @endif>{{ __('Saint-Barthélémy') }}</option>
<option value="Saint-Martin" @if(old('departement') == 'Saint-Martin') selected @endif>{{ __('Saint-Martin') }}</option>
<option value="Polynésie française" @if(old('departement') == 'Polynésie française') selected @endif>{{ __('Polynésie française') }}</option>
<option value="Île de Clipperton" @if(old('departement') == 'Île de Clipperton') selected @endif>{{ __('Île de Clipperton') }}</option>
<option value="Wallis-et-Futuna" @if(old('departement') == 'Wallis-et-Futuna') selected @endif>{{ __('Wallis-et-Futuna') }}</option>
<option value="Nouvelle-Calédonie" @if(old('departement') == 'Nouvelle-Calédonie') selected @endif>{{ __('Nouvelle-Calédonie') }}</option>
<option value="Terres australes et antarctiques françaises" @if(old('departement') == 'Terres australes et antarctiques françaises') selected @endif>{{ __('Terres australes et antarctiques françaises') }}</option>
</select>
</div>
</div>
</fieldset>
<fieldset>
@ -217,11 +237,32 @@ function hideReclaFields() {
document.getElementById('file').required = false;
}
function showDromField(sel) {
if (document.getElementById('country').options[sel.selectedIndex].text=='France') {
var dromList = document.getElementById('departement');
dromList.style.display = 'initial';
dromList.required = true;
} else {
hideDromField();
}
}
function hideDromField() {
var dromList = document.getElementById('departement');
dromList.style.display = 'none';
dromList.required = false;
}
document.addEventListener('DOMContentLoaded', function () {
hideReclaFields();
hideDromField();
@if (old('topic')=="Réclamation")
showReclaFields();
@endif
@if (old('country')=="France")
showDromField();
@endif
});
</script>
@endpush

View file

@ -43,13 +43,15 @@
<div>
<div class="is-flex horizontal-center @if ($nb_gammes) gammes-{{ $nb_gammes }} @endif ">
@foreach ($gammes as $gamme)
<div class="gamme-card align-center">
<img src="{{ asset($gamme->picture) }}" alt="{{ $gamme->alt_text_picture}}">
<a href="{{ route($routeprefixer . 'gammes.show', ['gammeSlug' => $gamme->slug]) }}"></a>
<span class="overlay" style="background-color: {{ $gamme->rgbaColor}};">
<span>{{ $gamme->title}}</span>
</span>
</div>
@if ($gamme->slug != 'food-service')
<div class="gamme-card align-center">
<img src="{{ asset($gamme->picture) }}" alt="{{ $gamme->alt_text_picture}}">
<a href="{{ route($routeprefixer . 'gammes.show', ['gammeSlug' => $gamme->slug]) }}"></a>
<span class="overlay" style="background-color: {{ $gamme->rgbaColor}};">
<span>{{ $gamme->title}}</span>
</span>
</div>
@endif
@endforeach
</div>
</div>

View file

@ -122,7 +122,7 @@
<input class="search-form__input" type="search" id="search_filter" name="filter" value="{{ $filter ?? ''}}">
</form>
</div>
<button id="search">
<div id="search">
{{-- <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path class="cls-1" d="M13.06,0h7a17.46,17.46,0,0,1,8,8v7c-5.38,8.15-9,9.37-18.37,5.94l-6.52,7c-2.49.5-3.48-.5-3-3l7-6.52C3.7,9,4.92,5.38,13.06,0ZM16.6,3.74a7.41,7.41,0,0,0-7.54,7.41,7.49,7.49,0,0,0,7.67,7.79,7.4,7.4,0,0,0,7.52-7.43A7.31,7.31,0,0,0,16.6,3.74Z" />
<path class="cls-2" d="M13.06,0C4.92,5.38,3.7,9,7.12,18.37l-7,6.52V0Z" />
@ -131,14 +131,14 @@
<path class="cls-2" d="M16.6,3.74a7.31,7.31,0,0,1,7.65,7.77,7.4,7.4,0,0,1-7.52,7.43,7.49,7.49,0,0,1-7.67-7.79A7.41,7.41,0,0,1,16.6,3.74Z" />
</svg> --}}
<img src="{{ asset('assets/images/loupe.png') }}" alt="Loupe de recherche">
</button>
</div>
</span>
</div>
</header>
@push('scripts')
<script>
var loupe = document.querySelector("button#search");
var loupe = document.querySelector("div#search");
loupe.addEventListener("click", function () {
document.querySelector("div.search-form").classList.toggle('is-visible');