Skip to content

Commit 5eb3753

Browse files
Merge branch 'release/2.5.2' of github.com:wearebraid/vue-formulate into release/2.5.2
2 parents aaeca79 + a6f066e commit 5eb3753

File tree

4 files changed

+142
-92
lines changed

4 files changed

+142
-92
lines changed

package-lock.json

Lines changed: 131 additions & 81 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"build:umd": "rollup --config build/rollup.config.js --format umd --file dist/formulate.umd.js",
1818
"build:iife": "rollup --config build/rollup.iife.config.js --format iife --file dist/formulate.min.js",
1919
"build:css": "node-sass themes/snow/snow.scss dist/snow.css && postcss --use autoprefixer -b '> 2%' < dist/snow.css | postcss --no-map --use cssnano > dist/snow.min.css",
20-
"test": "NODE_ENV=test jest --config test/jest.conf.js --coverage",
20+
"test": "cross-env NODE_ENV=test jest --config test/jest.conf.js --coverage",
2121
"test:watch": "NODE_ENV=test jest --config test/jest.conf.js --watch",
2222
"test:coverage": "NODE_ENV=test jest --config test/jest.conf.js --coverage",
2323
"cypress": "cypress open",
@@ -59,6 +59,7 @@
5959
"babel-core": "^7.0.0-bridge.0",
6060
"babel-eslint": "^10.1.0",
6161
"babel-jest": "^25.5.1",
62+
"cross-env": "^7.0.3",
6263
"cssnano": "^4.1.10",
6364
"cypress": "^6.0.1",
6465
"cypress-file-upload": "^4.1.1",

src/libs/rules.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -237,21 +237,18 @@ export default {
237237
},
238238

239239
/**
240-
* Rule: must be a value
240+
* Rule: must be a value - allows for an optional argument "whitespace" with a possible value 'trim' and default 'pre'.
241241
*/
242-
required: function ({ value }, isRequired = true) {
242+
required: function ({ value }, whitespace = 'pre') {
243243
return Promise.resolve((() => {
244-
if (!isRequired || ['no', 'false'].includes(isRequired)) {
245-
return true
246-
}
247244
if (Array.isArray(value)) {
248245
return !!value.length
249246
}
250247
if (value instanceof FileUpload) {
251248
return value.getFiles().length > 0
252249
}
253250
if (typeof value === 'string') {
254-
return !!value
251+
return whitespace === 'trim' ? !!value.trim() : !!value
255252
}
256253
if (typeof value === 'object') {
257254
return (!value) ? false : !!Object.keys(value).length

test/unit/rules.test.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -448,12 +448,18 @@ describe('number', () => {
448448
describe('required', () => {
449449
it('fails on empty string', async () => expect(await rules.required({ value: '' })).toBe(false))
450450

451+
it('fails with only whitespace as value when second argument is "trim"', async () => expect(await rules.required({ value: ' ' }, 'trim')).toBe(false))
452+
451453
it('fails on empty array', async () => expect(await rules.required({ value: [] })).toBe(false))
452454

453455
it('fails on empty object', async () => expect(await rules.required({ value: {} })).toBe(false))
454456

455457
it('fails on null', async () => expect(await rules.required({ value: null })).toBe(false))
456458

459+
it('passes with only whitespace as value', async () => expect(await rules.required({ value: ' ' })).toBe(true))
460+
461+
it('passes with only whitespace as value when second argument is not "trim"', async () => expect(await rules.required({ value: ' ' }, 'pre')).toBe(true))
462+
457463
it('passes with the number zero', async () => expect(await rules.required({ value: 0 })).toBe(true))
458464

459465
it('passes with the boolean false', async () => expect(await rules.required({ value: false })).toBe(true))
@@ -462,10 +468,6 @@ describe('required', () => {
462468

463469
it('passes with a non empty object', async () => expect(await rules.required({ value: { a: 'b' } })).toBe(true))
464470

465-
it('passes with empty value if second argument is false', async () => expect(await rules.required({ value: '' }, false)).toBe(true))
466-
467-
it('passes with empty value if second argument is false string', async () => expect(await rules.required({ value: '' }, 'false')).toBe(true))
468-
469471
it('passes with FileUpload', async () => expect(await rules.required({ value: new FileUpload({ files: [{ name: 'j.png' }] }) })).toBe(true))
470472

471473
it('fails with empty FileUpload', async () => expect(await rules.required({ value: new FileUpload({ files: [] }) })).toBe(false))

0 commit comments

Comments
 (0)