diff --git a/.bowerrc b/.bowerrc
deleted file mode 100644
index aeb4099b..00000000
--- a/.bowerrc
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "directory": "public/bower_components",
- "registry": {
- "search": [
- "https://registry.bower.io"
- ]
- }
-}
diff --git a/.gitignore b/.gitignore
index f73a575d..305dfcdd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
-/public/bower_components
+/public/node_modules
/vendor
/.release
diff --git a/.yarnrc b/.yarnrc
new file mode 100644
index 00000000..b2588659
--- /dev/null
+++ b/.yarnrc
@@ -0,0 +1,4 @@
+--modules-folder public/node_modules
+--install.production true
+--install.ignore-scripts true
+--install.ignore-optional true
diff --git a/build.bat b/build.bat
index 3c50a8fe..6a01a6b4 100644
--- a/build.bat
+++ b/build.bat
@@ -7,7 +7,7 @@ mkdir "%releasePath%"
for /f "tokens=*" %%a in ('type version.txt') do set version=%%a
del "%releasePath%\grocy_%version%.zip"
-"build_tools\7za.exe" a -r "%releasePath%\grocy_%version%.zip" "%projectPath%\*" -xr!.* -xr!build_tools -xr!build.bat -xr!composer.json -xr!composer.lock -xr!bower.json -xr!publication_assets
+"build_tools\7za.exe" a -r "%releasePath%\grocy_%version%.zip" "%projectPath%\*" -xr!.* -xr!build_tools -xr!build.bat -xr!composer.json -xr!composer.lock -xr!package.json -xr!yarn.lock -xr!publication_assets
"build_tools\7za.exe" a "%releasePath%\grocy_%version%.zip" "%projectPath%\public\.htaccess"
"build_tools\7za.exe" rn "%releasePath%\grocy_%version%.zip" .htaccess public\.htaccess
"build_tools\7za.exe" d "%releasePath%\grocy_%version%.zip" data\*.* data\sessions data\viewcache\*
diff --git a/bower.json b/package.json
similarity index 57%
rename from bower.json
rename to package.json
index c480ea08..f7f60f6e 100644
--- a/bower.json
+++ b/package.json
@@ -5,21 +5,21 @@
"bootstrap": "^3.3.7",
"font-awesome": "^4.7.0",
"bootbox": "^4.4.0",
- "jquery.serializeJSON": "^2.8.1",
+ "jquery-serializejson": "^2.8.1",
"bootstrap-validator": "^0.11.9",
"bootstrap-datepicker": "^1.7.1",
"moment": "^2.18.1",
- "bootstrap-combobox": "^1.1.8",
+ "@danielfarrell/bootstrap-combobox": "^1.1.8",
"datatables.net": "^1.10.15",
"datatables.net-bs": "^2.1.1",
"datatables.net-responsive": "^2.1.1",
"datatables.net-responsive-bs": "^2.1.1",
- "jquery-timeago": "^1.6.1",
+ "timeago": "^1.6.1",
"toastr": "^2.1.3",
- "tagmanager": "^3.0.2",
+ "tagmanager": "https://github.com/max-favilli/tagmanager.git#3.0.2",
"eonasdan-bootstrap-datetimepicker": "^4.17.47",
- "swagger-ui": "^3.13.4",
- "jquery-ui": "^1.12.1",
- "bootstrap-side-navbar": "^1.0.1"
+ "swagger-ui-dist": "^3.13.4",
+ "jquery-ui-dist": "^1.12.1",
+ "bootstrap-side-navbar": "https://github.com/samrayner/bootstrap-side-navbar.git#1.0.1"
}
}
diff --git a/views/batteriesoverview.blade.php b/views/batteriesoverview.blade.php
index a015763f..3e29ace5 100644
--- a/views/batteriesoverview.blade.php
+++ b/views/batteriesoverview.blade.php
@@ -5,7 +5,7 @@
@section('viewJsName', 'batteriesoverview')
@push('pageScripts')
-
+
@endpush
@section('content')
diff --git a/views/habitsoverview.blade.php b/views/habitsoverview.blade.php
index afd0d0e8..9d29d932 100644
--- a/views/habitsoverview.blade.php
+++ b/views/habitsoverview.blade.php
@@ -5,7 +5,7 @@
@section('viewJsName', 'habitsoverview')
@push('pageScripts')
-
+
@endpush
@section('content')
diff --git a/views/layout/default.blade.php b/views/layout/default.blade.php
index e14f6b99..99f82b0c 100644
--- a/views/layout/default.blade.php
+++ b/views/layout/default.blade.php
@@ -13,16 +13,16 @@
@yield('title') | grocy
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@stack('pageStyles')
@@ -104,25 +104,25 @@
-
-
-
-
-
+
+
+
+
+
@if(!empty($L('bootstrap_datepicker_locale')))@endif
-
+
@if(!empty($L('moment_locale')))@endif
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/views/manageapikeys.blade.php b/views/manageapikeys.blade.php
index 36867fa5..210f63c4 100644
--- a/views/manageapikeys.blade.php
+++ b/views/manageapikeys.blade.php
@@ -5,7 +5,7 @@
@section('viewJsName', 'manageapikeys')
@push('pageScripts')
-
+
@endpush
@section('content')
diff --git a/views/openapiui.blade.php b/views/openapiui.blade.php
index f2de5364..a93da592 100644
--- a/views/openapiui.blade.php
+++ b/views/openapiui.blade.php
@@ -13,7 +13,7 @@
{{ $L('REST API & data model documentation') }} | grocy
-
+
-
+
+
+
@if(file_exists(__DIR__ . '/../../data/add_before_end_body.html'))
diff --git a/views/stockoverview.blade.php b/views/stockoverview.blade.php
index 7fda16f4..417e8f2b 100644
--- a/views/stockoverview.blade.php
+++ b/views/stockoverview.blade.php
@@ -5,7 +5,7 @@
@section('viewJsName', 'stockoverview')
@push('pageScripts')
-
+
@endpush
@section('content')
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 00000000..f526ee1d
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,125 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@danielfarrell/bootstrap-combobox@^1.1.8":
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/@danielfarrell/bootstrap-combobox/-/bootstrap-combobox-1.1.8.tgz#489d0a9edb5a2fc9c65971d4422294e7ab9320ec"
+
+bootbox@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/bootbox/-/bootbox-4.4.0.tgz#ff7f898fb87d4527e547feb64158f88450d1a0c9"
+
+bootstrap-datepicker@^1.7.1:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/bootstrap-datepicker/-/bootstrap-datepicker-1.8.0.tgz#c63513931e6f09f16ae9f11b62f32d950df3958e"
+ dependencies:
+ jquery ">=1.7.1 <4.0.0"
+
+"bootstrap-side-navbar@https://github.com/samrayner/bootstrap-side-navbar.git#1.0.1":
+ version "0.0.0"
+ resolved "https://github.com/samrayner/bootstrap-side-navbar.git#bda4883fd2b278df3a48db4add7dc4d994477734"
+
+bootstrap-validator@^0.11.9:
+ version "0.11.9"
+ resolved "https://registry.yarnpkg.com/bootstrap-validator/-/bootstrap-validator-0.11.9.tgz#fb7058eef53623e78f5aa7967026f98f875a9404"
+
+bootstrap@^3.3, bootstrap@^3.3.7:
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.3.7.tgz#5a389394549f23330875a3b150656574f8a9eb71"
+
+datatables.net-bs@^1.10.15:
+ version "1.10.19"
+ resolved "https://registry.yarnpkg.com/datatables.net-bs/-/datatables.net-bs-1.10.19.tgz#08763b4e4d0cef1a427d019dc15e717c7ed67a4d"
+ dependencies:
+ datatables.net "1.10.19"
+ jquery ">=1.7"
+
+datatables.net-bs@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/datatables.net-bs/-/datatables.net-bs-2.1.1.tgz#704108972891949d094bf44f53d0654d9fee7bce"
+ dependencies:
+ datatables.net ">=1.10.9"
+ jquery ">=1.7"
+
+datatables.net-responsive-bs@^2.1.1:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/datatables.net-responsive-bs/-/datatables.net-responsive-bs-2.2.3.tgz#6d3791a77a18af746d4ad520b7e7319f731be43c"
+ dependencies:
+ datatables.net-bs "^1.10.15"
+ datatables.net-responsive "2.2.3"
+ jquery ">=1.7"
+
+datatables.net-responsive@2.2.3, datatables.net-responsive@^2.1.1:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/datatables.net-responsive/-/datatables.net-responsive-2.2.3.tgz#50a2b1b4955b16b32f573a3f00f473b0bfbee913"
+ dependencies:
+ datatables.net "^1.10.15"
+ jquery ">=1.7"
+
+datatables.net@1.10.19, datatables.net@>=1.10.9, datatables.net@^1.10.15:
+ version "1.10.19"
+ resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.10.19.tgz#97a1ed41c85e62d61040603481b59790a172dd1f"
+ dependencies:
+ jquery ">=1.7"
+
+eonasdan-bootstrap-datetimepicker@^4.17.47:
+ version "4.17.47"
+ resolved "https://registry.yarnpkg.com/eonasdan-bootstrap-datetimepicker/-/eonasdan-bootstrap-datetimepicker-4.17.47.tgz#7a49970044065276e7965efd16f822735219e735"
+ dependencies:
+ bootstrap "^3.3"
+ jquery "^1.8.3 || ^2.0 || ^3.0"
+ moment "^2.10"
+ moment-timezone "^0.4.0"
+
+font-awesome@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
+
+jquery-serializejson@^2.8.1:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/jquery-serializejson/-/jquery-serializejson-2.8.1.tgz#fc40dd11e5d9a6fd2a3614fdcba89e4af794f0a8"
+
+jquery-ui-dist@^1.12.1:
+ version "1.12.1"
+ resolved "https://registry.yarnpkg.com/jquery-ui-dist/-/jquery-ui-dist-1.12.1.tgz#5c0815d3cc6f90ff5faaf5b268a6e23b4ca904fa"
+
+jquery@1:
+ version "1.12.4"
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-1.12.4.tgz#01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c"
+
+jquery@>=1.12.0, jquery@>=1.2.3, jquery@>=1.7, "jquery@>=1.7.1 <4.0.0", "jquery@^1.8.3 || ^2.0 || ^3.0":
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca"
+
+moment-timezone@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.4.1.tgz#81f598c3ad5e22cdad796b67ecd8d88d0f5baa06"
+ dependencies:
+ moment ">= 2.6.0"
+
+"moment@>= 2.6.0", moment@^2.10, moment@^2.18.1:
+ version "2.22.2"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66"
+
+swagger-ui-dist@^3.13.4:
+ version "3.17.3"
+ resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.17.3.tgz#dfb96408ccc46775155f7369190c5d4b2016fe5c"
+
+"tagmanager@https://github.com/max-favilli/tagmanager.git#3.0.2":
+ version "3.0.1"
+ resolved "https://github.com/max-favilli/tagmanager.git#df9eb9935c8585a392dfc00602f890caf233fa94"
+ dependencies:
+ jquery "1"
+
+timeago@^1.6.1:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/timeago/-/timeago-1.6.3.tgz#162a1adae99356297df59339837d09f1b0f36465"
+ dependencies:
+ jquery ">=1.2.3"
+
+toastr@^2.1.3:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/toastr/-/toastr-2.1.4.tgz#8b43be64fb9d0c414871446f2db8e8ca4e95f181"
+ dependencies:
+ jquery ">=1.12.0"