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
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.