diff --git a/.eslintignore b/.eslintignore index bd07d4e..e8e0b25 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ node_modules +/demo /dist diff --git a/.gitignore b/.gitignore index 95cd05b..ab02df6 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ yarn-error.log* node_modules # Output directories +/demo /dist diff --git a/README.md b/README.md index 8233e65..004840f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -[![Actions Status](https://github.com/karoletrych/vue-cron-editor/workflows/Node%20CI/badge.svg)](https://github.com/karoletrych/vue-cron-editor/actions) - # vue-cron-editor-bootstrap VueCronEditor is a component library built with Vue and Bootstrap-Vue allowing for easier editing of cron expressions. @@ -9,36 +7,38 @@ Inspired by https://github.com/karoletrych/vue-cron-editor # Requirements -- Vue ^2.0 -- Bootstrap-Vue ^2.14.0 +- Vue ^2.0 +- Bootstrap-Vue ^2.14.0 # Installation -- vue-cron-editor-bootstrap +- vue-cron-editor-bootstrap ``` -npm install vue-cron-editor-bootstrap --save +npm install @tenrok/vue-cron-editor-bootstrap --save ``` # Usage ``` ``` @@ -57,13 +57,13 @@ The language of the component can be selected with the `locale` prop. +/> ``` Currently supported languages: -- en -- pl +- en +- pl Custom locales can be provided via a `customLocales` prop: @@ -81,7 +81,6 @@ Custom locales can be provided via a `customLocales` prop: onThe: "On the", dayOfEvery: "day, of every", monthsAt: "month(s), at", - everyDay: "Every", mon: "Mon", tue: "Tue", wed: "Wed", @@ -89,18 +88,17 @@ Custom locales can be provided via a `customLocales` prop: fri: "Fri", sat: "Sat", sun: "Sun", - hasToBeBetween: "Has to be between", - and: "and", minutes: "MINUTES", hourly: "HOURLY", daily: "DAILY", weekly: "WEEKLY", monthly: "MONTHLY", advanced: "ADVANCED", - cronExpression: "cron expression:" + cronExpression: "cron expression:", + onlyOn: "Only on" } }" -> +/> ``` # Contributing diff --git a/package-lock.json b/package-lock.json index bcc0c26..535a3bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11252,9 +11252,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.75.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", + "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -20290,9 +20290,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.75.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", + "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", diff --git a/package.json b/package.json index ae0dbd6..d45898c 100644 --- a/package.json +++ b/package.json @@ -2,16 +2,26 @@ "name": "@tenrok/vue-cron-editor-bootstrap", "version": "0.2.1", "private": false, - "main": "dist/vueCronEditorBootstrap.umd.js", - "module": "dist/vueCronEditorBootstrap.esm.js", - "unpkg": "dist/vueCronEditorBootstrap.min.js", + "repository": { + "type": "git", + "url": "git+https://github.com/alexmfreitas/vue-cron-editor-bootstrap.git" + }, + "license": "MIT", + "author": "alexmfreitas", + "main": "dist/vue-cron-editor-bootstrap.umd.js", + "unpkg": "dist/vue-cron-editor-bootstrap.min.js", + "module": "dist/vue-cron-editor-bootstrap.esm.js", "browser": { "./sfc": "src/VueCronEditorBootstrap.vue" }, + "files": [ + "dist/vue-cron-editor-bootstrap.*" + ], "scripts": { - "build:npm": "vue-cli-service build --target lib --name vueCronEditorBootstrap src/VueCronEditorBootstrap.vue", + "build": "vue-cli-service build --target lib src/VueCronEditorBootstrap.vue", + "build:demo": "vue-cli-service build", "lint": "vue-cli-service lint --fix", - "serve": "vue-cli-service serve" + "serve": "vue-cli-service serve --open" }, "dependencies": { "core-js": "^3.26.0", @@ -36,11 +46,5 @@ }, "peerDependencies": { "bootstrap-vue": "^2.23.1" - }, - "author": "alexmfreitas", - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/alexmfreitas/vue-cron-editor-bootstrap.git" } } diff --git a/src/VueCronEditorBootstrap.vue b/src/VueCronEditorBootstrap.vue index dd5c811..6db2bb6 100644 --- a/src/VueCronEditorBootstrap.vue +++ b/src/VueCronEditorBootstrap.vue @@ -3,13 +3,13 @@ - {{ translate('every') }} + {{ translate('every') }} {{ translate('mminutes') }} @@ -19,16 +19,16 @@ - {{ translate('every') }} + {{ translate('every') }} - {{ translate('hoursOnMinute') }} + {{ translate('hoursOnMinute') }} @@ -36,38 +36,38 @@ - {{ translate('every') }} - - {{ translate('daysAt') }} - + {{ translate('every') }} + + {{ translate('daysAt') }} + - {{ translate('every') }} - {{ translate('sun') }} - {{ translate('mon') }} - {{ translate('tue') }} - {{ translate('wed') }} - {{ translate('thu') }} - {{ translate('fri') }} - {{ translate('sat') }} - {{ translate('at') }} - + {{ translate('onlyOn') }} + {{ translate('mon') }} + {{ translate('tue') }} + {{ translate('wed') }} + {{ translate('thu') }} + {{ translate('fri') }} + {{ translate('sat') }} + {{ translate('sun') }} + {{ translate('at') }} + - {{ translate('onThe') }} - - {{ translate('dayOfEvery') }} - - {{ translate('monthsAt') }} - + {{ translate('onThe') }} + + {{ translate('dayOfEvery') }} + + {{ translate('monthsAt') }} + diff --git a/src/core/cronExpressions.ts b/src/core/cronExpressions.ts index 037d0d0..69f6318 100644 --- a/src/core/cronExpressions.ts +++ b/src/core/cronExpressions.ts @@ -60,13 +60,17 @@ export const buildExpression = (event: TabUpdatedEvent): string => { } if (event.type === 'weekly') { - return ( - `${event.minutes} ${event.hours} * * ` + - `${event.days - .filter(d => d) - .sort() - .join()}` - ) + if ([0, 7].includes(event.days.length)) { + return `${event.minutes} ${event.hours} * * *` + } else { + return ( + `${event.minutes} ${event.hours} * * ` + + `${event.days + .filter(d => d) + .sort() + .join()}` + ) + } } if (event.type === 'monthly') { @@ -86,14 +90,14 @@ export const parseExpression = (expression: string): TabUpdatedEvent => { if (expression!.split(' ').length != 5) { return { type: 'advanced', - cronExpression: expression + cronExpression: expression, } } if ((groups = expression.match(/^\*\/(\d+) \* \* \* \*$/))) { return { type: 'minutes', - minuteInterval: Number(groups[1]) + minuteInterval: Number(groups[1]), } } @@ -101,7 +105,7 @@ export const parseExpression = (expression: string): TabUpdatedEvent => { return { type: 'hourly', minutes: Number(groups[1]), - hourInterval: Number(groups[2]) + hourInterval: Number(groups[2]), } } @@ -110,7 +114,7 @@ export const parseExpression = (expression: string): TabUpdatedEvent => { type: 'daily', minutes: Number(groups[1]), hours: Number(groups[2]), - dayInterval: Number(groups[3]) + dayInterval: Number(groups[3]), } } @@ -126,7 +130,7 @@ export const parseExpression = (expression: string): TabUpdatedEvent => { .slice(optionalDaysBeginIndex, matchesEndIndex) .map(d => d && d.replace(/,/, '')) .filter(d => d) - ) + ), } } @@ -136,12 +140,12 @@ export const parseExpression = (expression: string): TabUpdatedEvent => { minutes: Number(groups[1]), hours: Number(groups[2]), day: Number(groups[3]), - monthInterval: Number(groups[4]) + monthInterval: Number(groups[4]), } } return { type: 'advanced', - cronExpression: expression + cronExpression: expression, } } diff --git a/src/core/i18n.ts b/src/core/i18n.ts index 3d92740..297aa22 100644 --- a/src/core/i18n.ts +++ b/src/core/i18n.ts @@ -8,7 +8,7 @@ export const defaultLocales: Record> = { onThe: 'On the', dayOfEvery: 'day, of every', monthsAt: 'month(s), at', - everyDay: 'Every', + // everyDay: 'Every', mon: 'Mon', tue: 'Tue', wed: 'Wed', @@ -16,15 +16,16 @@ export const defaultLocales: Record> = { fri: 'Fri', sat: 'Sat', sun: 'Sun', - hasToBeBetween: 'Has to be between', - and: 'and', + // hasToBeBetween: 'Has to be between', + // and: 'and', minutes: 'MINUTES', hourly: 'HOURLY', daily: 'DAILY', weekly: 'WEEKLY', monthly: 'MONTHLY', advanced: 'ADVANCED', - cronExpression: 'cron expression:' + cronExpression: 'cron expression:', + onlyOn: 'Only on', }, pl: { every: 'Co', @@ -35,7 +36,7 @@ export const defaultLocales: Record> = { onThe: '', dayOfEvery: 'dzień miesiąca, co', monthsAt: 'miesięcy, o godzinie', - everyDay: 'W każdy', + // everyDay: 'W każdy', mon: 'Pon', tue: 'Wt', wed: 'Śr', @@ -43,16 +44,17 @@ export const defaultLocales: Record> = { fri: 'Pt', sat: 'So', sun: 'Nie', - hasToBeBetween: 'Wymagana wartość pomiędzy', - and: 'i', + // hasToBeBetween: 'Wymagana wartość pomiędzy', + // and: 'i', minutes: 'Minuty', hourly: 'Godziny', daily: 'Dni', weekly: 'Tygodnie', monthly: 'Miesiące', advanced: 'Zaawansowane', - cronExpression: 'Wyrażenie cron:' - } + cronExpression: 'Wyrażenie cron:', + onlyOn: 'Co', + }, } export function createI18n( diff --git a/vue.config.js b/vue.config.js index 08d9312..9b7c4ad 100644 --- a/vue.config.js +++ b/vue.config.js @@ -1,4 +1,7 @@ +const isBuildLib = (process.env.npm_lifecycle_script || '').indexOf('--target lib') > 0 + module.exports = { - publicPath: '/vue-cron-editor-bootstrap', + publicPath: '', + outputDir: isBuildLib ? 'dist' : 'demo', css: { extract: false }, -}; +}