Skip to content

Commit

Permalink
Prepare everything for publishing
Browse files Browse the repository at this point in the history
LarsKumbier committed Jun 22, 2020

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent e484eab commit 4a2ec90
Showing 24 changed files with 1,976 additions and 1,680 deletions.
25 changes: 15 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
# Tiny Date Picker

A light-weight date picker with zero dependencies.
A light-weight date picker with zero dependencies

- Typescript
- Zero dependencies
- Roughly 3.5KB minified and gzipped
- IE9+
- Roughly 4KB minified and gzipped
- Mobile-friendly/responsive
- Supports multiple languages

The TinyDatePicker was originally developed by Chris Davies, but seems to be discontinued.


## Installation

npm install --save tiny-date-picker
npm install --save @verivox/tiny-date-picker


## Usage

Include a reference to `tiny-date-picker.css` and `tiny-date-picker.js`, or import
it `import TinyDatePicker from 'tiny-date-picker';` then call it like this:
Include a reference to `tiny-date-picker.css` and `tiny-date-picker.js`, or import it `import TinyDatePicker from 'tiny-date-picker';` then call it like this:

```javascript
// Initialize a date picker on the specified input element
@@ -27,15 +28,19 @@ DatePicker(document.querySelector('input'));
DatePicker('.some-class-or-id-or-whatever');
```

## Documentation
Have a look at the (./test/index.html)[./test/index.html]-file for further usage examples.


## Authors

- [TinyDatePicker documentation](./docs/tiny-date-picker.md)
- [DateRangePicker documentation](./docs/date-range-picker.md)
* Kim Almasan <kim@kumbier.it>
* Lars Kumbier <lars@kumbier.it>


## License MIT

Copyright (c) 2020 Verivox GmbH (rewrite in typescript; original code by "Chris Davies <ferociousturtle@gmail.com>")
Copyright (c) 2020 Verivox GmbH (transformed to typescript)
Copyright (c) 2018 Chris Davies (Original library)

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
258 changes: 0 additions & 258 deletions dist/TinyDatePicker.js

This file was deleted.

326 changes: 0 additions & 326 deletions dist/TinyDatePickerStyle.css

This file was deleted.

101 changes: 0 additions & 101 deletions dist/TinyDatePickerStyle.js

This file was deleted.

270 changes: 0 additions & 270 deletions dist/TinyDateRangePicker.js

This file was deleted.

88 changes: 0 additions & 88 deletions dist/TinyDateRangePickerStyle.css

This file was deleted.

101 changes: 0 additions & 101 deletions dist/TinyDateRangePickerStyle.js

This file was deleted.

6 changes: 6 additions & 0 deletions dist/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { DatePicker } from './date-picker';
import { DateRangePicker } from './date-range-picker';
import './date-picker.css';
import './date-range-picker.css';
export { DatePicker, DateRangePicker };
//# sourceMappingURL=index.d.ts.map
1 change: 1 addition & 0 deletions dist/index.d.ts.map
2 changes: 1 addition & 1 deletion dist/lib/date-manip.d.ts.map
1 change: 1 addition & 0 deletions dist/tiny-date-picker.css
1 change: 1 addition & 0 deletions dist/tiny-date-picker.js

Large diffs are not rendered by default.

113 changes: 0 additions & 113 deletions docs/date-range-picker.md

This file was deleted.

275 changes: 0 additions & 275 deletions docs/tiny-date-picker.md

This file was deleted.

1,976 changes: 1,896 additions & 80 deletions package-lock.json

Large diffs are not rendered by default.

12 changes: 9 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
{
"name": "tiny-date-picker",
"name": "@verivox/tiny-date-picker",
"version": "4.0.0",
"description": "A small, dependency-free date picker",
"description": "A small, typed, dependency-free date picker",
"main": "dist/tiny-date-picker.js",
"types": "dist/index.d.ts",
"style": "dist/tiny-date-picker.css",
"scripts": {
"build": "webpack",
"watch": "webpack --watch -d",
"watch": "webpack --watch -d --mode development",
"build:development": "webpack -d --mode development",
"lint": "eslint src/",
"start": "http-server -c-1 -p 8080 -o /test/index.html .",
"test": "concurrently --success first --kill-others -n http,jest \"http-server -a 127.0.0.1 --silent -c-1 --port 8081 .\" \"jest\""
@@ -36,6 +39,7 @@
"@types/selenium-webdriver": "^4.0.9",
"@typescript-eslint/eslint-plugin": "^3.2.0",
"@typescript-eslint/parser": "^3.2.0",
"clean-webpack-plugin": "^3.0.0",
"concurrently": "^5.2.0",
"copy-webpack-plugin": "^6.0.2",
"css-loader": "^3.6.0",
@@ -44,6 +48,8 @@
"http-server": "^0.12.3",
"jest": "^26.0.1",
"mini-css-extract-plugin": "^0.9.0",
"optimize-css-assets-webpack-plugin": "^5.0.3",
"remove-files-webpack-plugin": "^1.4.3",
"selenium-webdriver": "^4.0.0-alpha.7",
"ts-jest": "^26.1.0",
"ts-loader": "^7.0.5",
8 changes: 4 additions & 4 deletions src/date-picker-options.ts
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ import { IDatePickerOptions } from './interfaces'
import { now, shiftYear, dateOrParse } from './lib/date-manip';
import { cp } from './lib/fns';

var english = {
const english = {
days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
months: [
'January',
@@ -36,7 +36,7 @@ var english = {
*/
export function DatePickerOptions(_options: Partial<IDatePickerOptions> = {}) {
const options = cp(defaults(), _options);
var parse = dateOrParse(options.parse);
const parse = dateOrParse(options.parse);
options.lang = cp(english, options.lang);
options.parse = parse;
options.inRange = makeInRangeFn(options);
@@ -64,7 +64,7 @@ function defaults(): any {
},

parse: function (candidate: Date | string): Date {
var date = new Date(candidate);
const date = new Date(candidate);
return isNaN(date.valueOf()) ? now() : date;
},

@@ -82,7 +82,7 @@ function defaults(): any {
}

function makeInRangeFn(opts: IDatePickerOptions) {
var inRange = opts.inRange; // Cache this version, and return a variant
const inRange = opts.inRange; // Cache this version, and return a variant

return function (dt: Date, dp: any) {
const earlierThanMin = opts.min ? opts.min <= dt : true
2 changes: 1 addition & 1 deletion src/date-picker.ts
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@ export function DatePicker(input: HTMLInputElement | string, opts: IDatePickerOp
const emitter = Emitter();
const options = DatePickerOptions(opts);
const mode = Mode(input, emit, options);
var me = {
const me = {
get state() {
return mode.state;
},
2 changes: 1 addition & 1 deletion src/date-range-picker.ts
Original file line number Diff line number Diff line change
@@ -107,7 +107,7 @@ export function DateRangePicker(container: HTMLElement, opts: IDateRangePickerOp
end: dt > state.start ? dt : state.start,
});
}
};
}

function setState(newState: IDateRangePickerState) {
state = { ...newState }
9 changes: 9 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { DatePicker } from './date-picker'
import { DateRangePicker } from './date-range-picker'
import './date-picker.css'
import './date-range-picker.css'

export {
DatePicker,
DateRangePicker
}
8 changes: 4 additions & 4 deletions src/lib/date-manip.ts
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@
* @returns {Date}
*/
export function now() {
var dt = new Date();
const dt = new Date();
dt.setHours(0, 0, 0, 0);
return dt;
}
@@ -46,11 +46,11 @@ export function shiftDay(dt: Date, n: number) {
* value, defaults to false
* @returns {Date}
*/
export function shiftMonth(dt: Date, n: number, wrap: boolean = false) {
export function shiftMonth(dt: Date, n: number, wrap = false) {
dt = new Date(dt);

var dayOfMonth = dt.getDate();
var month = dt.getMonth() + n;
const dayOfMonth = dt.getDate();
const month = dt.getMonth() + n;

dt.setDate(1);
dt.setMonth(wrap ? (12 + month) % 12 : month);
2 changes: 1 addition & 1 deletion src/lib/emitter.ts
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@ interface IHandlers {
* @returns {EventEmitter}
*/
export default function Emitter() {
var handlers: IHandlers = {};
let handlers: IHandlers = {};

function onOne(name: string, handler: TEmitterFn) {
(handlers[name] = (handlers[name] || [])).push(handler);
8 changes: 2 additions & 6 deletions test/index.html
Original file line number Diff line number Diff line change
@@ -7,8 +7,7 @@
<meta name="author" content="Chris Davies - http://chrisdavies.github.io/">
<meta name="viewport" content="width=device-width">
<meta name="description" content="A tiny, responsive, modern, zero-dependency date picker">
<link rel="stylesheet" href="../dist/TinyDatePickerStyle.css">
<link rel="stylesheet" href="../dist/TinyDateRangePickerStyle.css">
<link rel="stylesheet" href="../dist/tiny-date-picker.css">
<style>
* {
box-sizing: border-box;
@@ -144,10 +143,8 @@ <h1>Tiny Date Picker</h1>
</nav>
</main>

<script src="/dist/TinyDatePicker.js"></script>
<script src="/dist/TinyDateRangePicker.js"></script>
<script src="/dist/tiny-date-picker.js"></script>
<script>
// window.addEventListener("load", () => {
TinyDatePicker.DatePicker('.modal-txt')
.on({
open: function () {
@@ -167,7 +164,6 @@ <h1>Tiny Date Picker</h1>
TinyDatePicker.DatePicker('.non-modal-txt', {
mode: 'dp-below',
});
// })
</script>
</body>

61 changes: 24 additions & 37 deletions webpack.config.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const TerserJSPlugin = require('terser-webpack-plugin');

const common = {
mode: 'development',

module.exports = {
mode: 'production',
entry: './src/index.ts',
optimization: {
minimizer: [
new TerserJSPlugin({}),
new OptimizeCSSAssetsPlugin({})
],
},
module: {
rules: [
{
@@ -19,51 +30,27 @@ const common = {
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
{
{
loader: "css-loader",
options: {
modules: {
mode: 'global',
},
},
},
},
]
}
]
},
resolve: {
extensions: ['.ts']
},
plugins: [
new MiniCssExtractPlugin()
]
}

const commonOutput = {
filename: '[name]',
path: path.resolve(__dirname, 'dist'),
globalObject: 'this'
}

const TinyDatePicker = {
entry: ['./src/date-picker.ts', './src/date-picker.css'],
output: {
library: 'TinyDatePicker',
...commonOutput
filename: 'tiny-date-picker.js',
path: path.resolve(__dirname, 'dist'),
globalObject: 'this'
},
...common
}

const TinyDateRangePicker = {
entry: ['./src/date-range-picker.ts', './src/date-range-picker.css'],
output: {
library: 'TinyDateRangePicker',
...commonOutput
},
...common
plugins: [
new CleanWebpackPlugin(),
new MiniCssExtractPlugin({
filename: 'tiny-date-picker.css',
})
]
}

module.exports = [
TinyDatePicker,
TinyDateRangePicker
]

0 comments on commit 4a2ec90

Please sign in to comment.