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 @@
-[](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
```
-
+
{{cronExpression}}
```
@@ -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 },
-};
+}