]> git.andy128k.dev Git - ipf.git/commitdiff
use flatpickr for picking dates and datetimes
authorAndrey Kutejko <andy128k@gmail.com>
Mon, 16 Apr 2018 05:56:04 +0000 (07:56 +0200)
committerAndrey Kutejko <andy128k@gmail.com>
Mon, 16 Apr 2018 05:59:17 +0000 (07:59 +0200)
composer.json
composer.lock
ipf/admin/app.php
ipf/admin/assets/css/admin.css
ipf/admin/assets/js/admin.js
ipf/form/widget/dateinput.php
ipf/form/widget/datetimeinput.php

index cfd77123af8791989f480fcaf84e765c959b83b5..8911269fa595a59f769b0e13ae91502fa3e20f94 100644 (file)
     "andy128k/pegp": "0.1.*@dev",
     "andy128k/routeexpression": "dev-master",
     "andy128k/ipf-legacy-template": "dev-master",
-    "bower-asset/jquery-ui": "~1",
-    "bower-asset/jqueryui-timepicker-addon": "dev-master",
     "npm-asset/jquery": "~2",
     "npm-asset/tablednd": "^1.0@dev",
-    "npm-asset/tinymce": "^4.7"
+    "npm-asset/tinymce": "^4.7",
+    "npm-asset/flatpickr": "^4.3@dev"
   },
   "require-dev": {
     "phpunit/phpunit": "4.4.*"
index dc663b3943af7532783d7cbd9469232657105eac..228f1b5b6c91d7018959ea9fccb0ec28585aebd1 100644 (file)
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "0832ee56c3ffe8771f66bb1d0b23f3a3",
+    "content-hash": "69fb0e48db3769923764fdf1212a7e24",
     "packages": [
         {
             "name": "andy128k/ipf-legacy-template",
             "description": "Route expression",
             "time": "2015-01-11T10:36:51+00:00"
         },
-        {
-            "name": "bower-asset/jquery",
-            "version": "2.2.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/jquery/jquery-dist.git",
-                "reference": "c0185ab7c75aab88762c5aae780b9d83b80eda72"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/c0185ab7c75aab88762c5aae780b9d83b80eda72",
-                "reference": "c0185ab7c75aab88762c5aae780b9d83b80eda72",
-                "shasum": ""
-            },
-            "type": "bower-asset-library",
-            "extra": {
-                "bower-asset-main": "dist/jquery.js",
-                "bower-asset-ignore": [
-                    "package.json"
-                ]
-            },
-            "license": [
-                "MIT"
-            ],
-            "keywords": [
-                "browser",
-                "javascript",
-                "jquery",
-                "library"
-            ],
-            "time": "2016-05-20T17:24:43+00:00"
-        },
-        {
-            "name": "bower-asset/jquery-ui",
-            "version": "1.12.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/components/jqueryui.git",
-                "reference": "44ecf3794cc56b65954cc19737234a3119d036cc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/components/jqueryui/zipball/44ecf3794cc56b65954cc19737234a3119d036cc",
-                "reference": "44ecf3794cc56b65954cc19737234a3119d036cc",
-                "shasum": ""
-            },
-            "require": {
-                "bower-asset/jquery": ">=1.6"
-            },
-            "type": "bower-asset-library",
-            "extra": {
-                "bower-asset-main": [
-                    "jquery-ui.js"
-                ],
-                "bower-asset-ignore": []
-            },
-            "license": [
-                "MIT"
-            ],
-            "time": "2016-09-16T05:47:55+00:00"
-        },
-        {
-            "name": "bower-asset/jqueryui-timepicker-addon",
-            "version": "dev-master",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/trentrichardson/jQuery-Timepicker-Addon.git",
-                "reference": "f9415cdac7516c1f8beff0ceb99c8f913915c7e2"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/trentrichardson/jQuery-Timepicker-Addon/zipball/f9415cdac7516c1f8beff0ceb99c8f913915c7e2",
-                "reference": "f9415cdac7516c1f8beff0ceb99c8f913915c7e2",
-                "shasum": ""
-            },
-            "type": "bower-asset-library",
-            "extra": {
-                "bower-asset-main": [
-                    "dist/jquery-ui-timepicker-addon.js",
-                    "dist/jquery-ui-timepicker-addon.css"
-                ],
-                "bower-asset-ignore": [
-                    "/CONTRIBUTING.md",
-                    "/Gruntfile.js",
-                    "/README.md",
-                    "/composer.json",
-                    "/jquery-ui-timepicker-addon.json",
-                    "/lib",
-                    "/package.json",
-                    "/src",
-                    "/test"
-                ]
-            },
-            "time": "2016-04-20T19:26:28+00:00"
-        },
         {
             "name": "d11wtq/boris",
             "version": "dev-master",
             ],
             "time": "2017-07-24T09:37:08+00:00"
         },
+        {
+            "name": "npm-asset/flatpickr",
+            "version": "4.4.4",
+            "dist": {
+                "type": "tar",
+                "url": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.4.4.tgz",
+                "reference": null,
+                "shasum": "fdeb083ca3d580eecb822a4080f67b06f0294fc7"
+            },
+            "require-dev": {
+                "npm-asset/autoprefixer-stylus": "dev-default|*",
+                "npm-asset/babel--core": ">=7.0.0-beta.42,<8.0.0",
+                "npm-asset/babel--plugin-proposal-object-rest-spread": ">=7.0.0-beta.42,<8.0.0",
+                "npm-asset/babel--plugin-proposal-optional-catch-binding": ">=7.0.0-beta.42,<8.0.0",
+                "npm-asset/babel--preset-env": ">=7.0.0-beta.42,<8.0.0",
+                "npm-asset/babel-plugin-transform-object-rest-spread": ">=6.26.0,<7.0.0",
+                "npm-asset/chokidar": "2.0.3",
+                "npm-asset/coveralls": ">=3.0.0,<4.0.0",
+                "npm-asset/fs-extra": ">=5.0.0,<6.0.0",
+                "npm-asset/glob": "dev-default|*",
+                "npm-asset/husky": ">=0.14.3,<0.15.0",
+                "npm-asset/jest": "22.4.3",
+                "npm-asset/lint-staged": ">=7.0.0,<8.0.0",
+                "npm-asset/magic-string": ">=0.24.0,<0.25.0",
+                "npm-asset/npm-run-all": ">=4.1.1,<5.0.0",
+                "npm-asset/prettier": ">=1.11.1,<2.0.0",
+                "npm-asset/rollup": ">=0.57.1,<0.58.0",
+                "npm-asset/rollup-plugin-babel": ">=4.0.0-beta.3,<5.0.0",
+                "npm-asset/rollup-plugin-livereload": ">=0.6.0,<0.7.0",
+                "npm-asset/rollup-plugin-serve": ">=0.4.2,<0.5.0",
+                "npm-asset/rollup-plugin-typescript": ">=0.8.1,<0.9.0",
+                "npm-asset/rtlcss": ">=2.2.1,<3.0.0",
+                "npm-asset/source-map": ">=0.7.2,<0.8.0",
+                "npm-asset/stylus": "dev-default|*",
+                "npm-asset/ts-jest": "22.4.2",
+                "npm-asset/ts-node": ">=5.0.1,<6.0.0",
+                "npm-asset/types--acorn": ">=4.0.3,<5.0.0",
+                "npm-asset/types--chokidar": ">=1.7.5,<2.0.0",
+                "npm-asset/types--fs-extra": ">=5.0.1,<6.0.0",
+                "npm-asset/types--glob": ">=5.0.35,<6.0.0",
+                "npm-asset/types--jest": ">=22.2.0,<23.0.0",
+                "npm-asset/types--jquery": ">=3.3.1,<4.0.0",
+                "npm-asset/types--node": ">=9.4.7,<10.0.0",
+                "npm-asset/types--stylus": ">=0.48.29,<0.49.0",
+                "npm-asset/types--uglify-js": ">=3.0.0,<4.0.0",
+                "npm-asset/typescript": ">=2.7.2,<3.0.0",
+                "npm-asset/uglify-js": ">=3.3.16,<4.0.0"
+            },
+            "type": "npm-asset-library",
+            "extra": {
+                "npm-asset-bugs": {
+                    "url": "https://github.com/chmln/flatpickr/issues"
+                },
+                "npm-asset-main": "dist/flatpickr.js",
+                "npm-asset-directories": [],
+                "npm-asset-repository": {
+                    "type": "git",
+                    "url": "git+https://github.com/chmln/flatpickr.git"
+                },
+                "npm-asset-scripts": {
+                    "build": "run-s build:pre build:build build:post",
+                    "build:pre": "rm -rf dist && mkdir -p dist/themes",
+                    "build:build": "ts-node build.ts",
+                    "build:post": "sh ./emitDeclarations.sh",
+                    "start": "npm run build:build -- --dev",
+                    "rollup:start": "rollup -w -c",
+                    "rollup:build": "rollup -c",
+                    "test": "run-s test:typecheck test:unit",
+                    "test:typecheck": "tsc -p src --noEmit",
+                    "test:unit": "jest --config .jest.json",
+                    "coveralls": "jest --config .jest.json --coverage && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",
+                    "precommit": "lint-staged"
+                }
+            },
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gregory",
+                    "email": "gregory.mkv@gmail.com"
+                }
+            ],
+            "description": "A lightweight, powerful javascript datetime picker",
+            "homepage": "https://chmln.github.io/flatpickr",
+            "keywords": [
+                "calendar",
+                "date",
+                "datetimepicker",
+                "javascript",
+                "lightweight",
+                "picker",
+                "time"
+            ],
+            "time": "2018-04-07T20:49:05+00:00"
+        },
         {
             "name": "npm-asset/jquery",
             "version": "2.2.4",
         "andy128k/pegp": 20,
         "andy128k/routeexpression": 20,
         "andy128k/ipf-legacy-template": 20,
-        "bower-asset/jqueryui-timepicker-addon": 20,
-        "npm-asset/tablednd": 20
+        "npm-asset/tablednd": 20,
+        "npm-asset/flatpickr": 20
     },
     "prefer-stable": false,
     "prefer-lowest": false,
index 058bfe8710a0bea37bf1a4b638d54c738d003a81..28090c119f2046c1facc8044bcf5d5b565dd137c 100644 (file)
@@ -77,7 +77,6 @@ class IPF_Admin_App extends IPF_Application
             'assets/css/admin.css' => 'admin/admin.css',
             'assets/css/print.css' => 'admin/admin-print.css',
             'assets/css/login.css' => 'admin/login.css',
-            'jquery-ui/themes/smoothness/images' => 'admin/images',
         );
     }
 
index 2cbe0e5f95db6a694b873aa1c1b0af7621a6955b..41436facd3882dad5b337c99e310f35b61bc2ee8 100644 (file)
@@ -1,6 +1,5 @@
 /*= require base.css */
 /*= require changelists.css */
 /*= require forms.css */
-/*= require jquery-ui/themes/smoothness/jquery-ui.min.css */
-/*= require jqueryui-timepicker-addon/dist/jquery-ui-timepicker-addon.min.css */
+/*= require flatpickr/dist/flatpickr.min.css */
 
index 9a9a0e31a1d9a1649a396825b4640f750a3e9c14..94432e70bb3a935447c308ee3bde3d13fc3680db 100644 (file)
@@ -1,11 +1,16 @@
 //= require jquery/dist/jquery.min.js
-//= require jquery-ui/jquery-ui.min.js
-//= require jqueryui-timepicker-addon/dist/jquery-ui-timepicker-addon.min.js
-//= require jqueryui-timepicker-addon/dist/i18n/jquery-ui-timepicker-addon-i18n.min.js
+//= require flatpickr/dist/flatpickr.min.js
 //= require tablednd/dist/jquery.tablednd.min.js
 //= require tinymce.js
 
 $(function(){
+    function initWidget(selector, init) {
+        var elements = document.querySelectorAll(selector);
+        for (var i = 0; i < elements.length; ++i) {
+            init(elements[i]);
+        }
+    }
+
     $('.toggle-sidebar').on('change', function() {
         $('body').toggleClass('pushed');
         return false;
@@ -39,20 +44,12 @@ $(function(){
         });
     });
 
-    $('.dateinput').each(function(){
-        var opts = {
-            dateFormat: $(this).data('format') || 'yy-mm-dd'
-        };
-        $(this).datepicker(opts);
-    });
-
-    $('.datetimeinput').each(function(){
-        var opts = {
-            dateFormat: $(this).data('dateformat') || 'yy-mm-dd',
-            timeFormat: $(this).data('timeformat') || 'HH-mm-ss'
-        };
-        $(this).datetimepicker(opts);
-    });
+    function initDatePicker(defaultFormat, element) {
+        flatpickr(element, {
+            defaultDate: element.val,
+            dateFormat: element.dataset.format || defaultFormat
+        });
+    }
 
     $('.checkgroup').closest('ul').each(function(){
         var master = $(this),
@@ -65,6 +62,9 @@ $(function(){
         });
     });
 
+    initWidget('.dateinput', initDatePicker.bind(null, 'Y-m-d'));
+    initWidget('.datetimeinput', initDatePicker.bind(null, 'Y-m-d H-i-s'));
+
     // html
     function ipf_filebrowser(filebrowser_url, field_name, url, type, win) {
         tinyMCE.activeEditor.windowManager.open({
index 40af6b1c7069aaa7cf0865bd81f2671174b2d543..19a7ee47e51efa69ceb589c78a65a03a507bceff 100644 (file)
@@ -20,7 +20,7 @@ class IPF_Form_Widget_DateInput extends IPF_Form_Widget_Input
             $value = IPF_Format::formatDate($this->format, strtotime($value));
 
         $extra_attrs['class'] = 'dateinput';
-        $extra_attrs['data-format'] = IPF_Format::makeDateFormat($this->format, IPF_Format::$pickerControls);
+        $extra_attrs['data-format'] = IPF_Format::makeDateFormat($this->format, IPF_Format::$dateControls);
         return parent::render($name, $value, $extra_attrs);
     }
 
index 6fa1c7f33888d984c897fc1b7814ff6e8d6ab707..62c9e96b46701dd3393f7f57947bb185f08736b2 100644 (file)
@@ -20,8 +20,7 @@ class IPF_Form_Widget_DatetimeInput extends IPF_Form_Widget_Input
             $value = IPF_Format::formatDate($this->format, strtotime($value.' GMT'));
 
         $extra_attrs['class'] = 'datetimeinput';
-        $extra_attrs['data-dateformat'] = IPF_Format::makeDateFormat($this->format, IPF_Format::$pickerControls);
-        $extra_attrs['data-timeformat'] = IPF_Format::makeTimeFormat($this->format, IPF_Format::$pickerControls);
+        $extra_attrs['data-format'] = IPF_Format::makeFormat($this->format, IPF_Format::$dateControls);
         return parent::render($name, $value, $extra_attrs);
     }