Skip to content

Commit

Permalink
Merge 027a803 into 2951332
Browse files Browse the repository at this point in the history
  • Loading branch information
bripkens committed Jul 23, 2019
2 parents 2951332 + 027a803 commit b0801bc
Show file tree
Hide file tree
Showing 16 changed files with 7,039 additions and 3,565 deletions.
9 changes: 5 additions & 4 deletions .babelrc
@@ -1,9 +1,10 @@
{
"presets": [
["env", {
"targets": {
"browsers": ["last 2 versions", "safari >= 7"]
[
"@babel/preset-env",
{
"targets": ["> 0.25%, not dead"]
}
}]
]
]
}
6 changes: 3 additions & 3 deletions .travis.yml
@@ -1,10 +1,10 @@
sudo: false
language: node_js
node_js:
- 7
- 12
- 10
- 8
- 6
- 5
- 4
script:
- npm run build
- npm test
Expand Down
39 changes: 19 additions & 20 deletions lib/Field.js
@@ -1,49 +1,49 @@
'use strict';
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

exports.default = createField;

var _util = require('./util');
var _util = require("./util");

var _validator = require('./validator');
var _validator = require("./validator");

var _severity = require('./severity');
var _severity = require("./severity");

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }

function createField(opts) {
return new Field(opts || _util.emptyObject);
}

var Field = function () {
var Field =
/*#__PURE__*/
function () {
function Field(opts) {
_classCallCheck(this, Field);

// value handling
this.value = opts.value;
this.value = opts.value; // dirty state

// dirty state
this.isEqual = opts.isEqual || _util.isStrictReferenceEqual;
this.touched = this.hierarchyTouched = 'touched' in opts ? Boolean(opts.touched) : false;
this.touched = this.hierarchyTouched = 'touched' in opts ? Boolean(opts.touched) : false; // validation

// validation
this.validator = opts.validator || _validator.alwaysValid;
this.messages = (0, _util.freeze)(this.validator(this.value) || _validator.noValidationErrors);
this.maxSeverity = (0, _severity.getMaxSeverityOfMessages)(this.messages);
this.valid = this.maxSeverity !== 'error';
this.maxSeverityOfHierarchy = this.maxSeverity;
this.hierarchyValid = this.valid;

(0, _util.freeze)(this);
}

_createClass(Field, [{
key: 'setValue',
key: "setValue",
value: function setValue(value) {
if (this.isEqual(value, this.value)) {
return this;
Expand All @@ -57,7 +57,7 @@ var Field = function () {
});
}
}, {
key: 'setTouched',
key: "setTouched",
value: function setTouched(touched) {
return new Field({
value: this.value,
Expand All @@ -67,21 +67,20 @@ var Field = function () {
});
}
}, {
key: 'toJS',
key: "toJS",
value: function toJS() {
return this.value;
}
}, {
key: 'map',
key: "map",
value: function map(mapper) {
return mapper(this);
}
}, {
key: 'updateIn',
key: "updateIn",
value: function updateIn(path, fn) {
var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;

throw new Error('Fields have no children and therefore do not support updateIn at path "' + path.slice(0, i + 1).join('.') + '"');
throw new Error("Fields have no children and therefore do not support updateIn at path \"".concat(path.slice(0, i + 1).join('.'), "\""));
}
}]);

Expand Down
60 changes: 31 additions & 29 deletions lib/ListForm.js
@@ -1,85 +1,86 @@
'use strict';
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

exports.default = createListForm;

var _util = require('./util');
var _util = require("./util");

var _severity = require('./severity');
var _severity = require("./severity");

var _validator = require('./validator');
var _validator = require("./validator");

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }

function createListForm(opts) {
return new ListForm(opts || _util.emptyObject);
}

var ListForm = function () {
var ListForm =
/*#__PURE__*/
function () {
function ListForm(opts) {
_classCallCheck(this, ListForm);

this.items = (0, _util.freeze)(opts.items || _util.emptyArray);
this.size = this.items.length;
this.touched = 'touched' in opts ? Boolean(opts.touched) : false;
this.touched = 'touched' in opts ? Boolean(opts.touched) : false; // validation

// validation
this.validator = opts.validator || _validator.alwaysValid;
this.messages = (0, _util.freeze)(this.validator(this.items) || _validator.noValidationErrors);
this.maxSeverity = (0, _severity.getMaxSeverityOfMessages)(this.messages);
this.valid = this.maxSeverity !== 'error';

this.maxSeverityOfHierarchy = this.maxSeverity;
this.hierarchyTouched = this.touched;

for (var i = 0, len = this.items.length; i < len; i++) {
var item = this.items[i];
this.maxSeverityOfHierarchy = (0, _severity.getMaxSeverity)(this.maxSeverityOfHierarchy, item.maxSeverityOfHierarchy);
this.hierarchyTouched = this.hierarchyTouched || item.hierarchyTouched;
}
this.hierarchyValid = this.maxSeverityOfHierarchy !== 'error';

this.hierarchyValid = this.maxSeverityOfHierarchy !== 'error';
(0, _util.freeze)(this);
}

_createClass(ListForm, [{
key: 'push',
key: "push",
value: function push(item) {
return this.set(this.items.length, item);
}
}, {
key: 'unshift',
key: "unshift",
value: function unshift(item) {
var items = (0, _util.shallowCopyArray)(this.items);
items.unshift(item);

return new ListForm({
items: items,
touched: this.touched,
validator: this.validator
});
}
}, {
key: 'insert',
key: "insert",
value: function insert(index, item) {
var items = (0, _util.shallowCopyArray)(this.items);
index = Math.min(items.length, Math.max(0, index));
items.splice(index, 0, item);

return new ListForm({
items: items,
touched: this.touched,
validator: this.validator
});
}
}, {
key: 'set',
key: "set",
value: function set(index, item) {
var items = (0, _util.shallowCopyArray)(this.items);

if (items[index] === item) {
return this;
}
Expand All @@ -92,12 +93,12 @@ var ListForm = function () {
});
}
}, {
key: 'get',
key: "get",
value: function get(index) {
return this.items[index];
}
}, {
key: 'remove',
key: "remove",
value: function remove(index) {
var items = (0, _util.shallowCopyArray)(this.items);
items.splice(index, 1);
Expand All @@ -108,15 +109,14 @@ var ListForm = function () {
});
}
}, {
key: 'updateIn',
key: "updateIn",
value: function updateIn(path, fn) {
var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;

var key = path[i];
var item = this.get(key);

if (!item) {
throw new Error('No item to update at path "' + path.slice(0, i + 1).join('.') + '"');
throw new Error("No item to update at path \"".concat(path.slice(0, i + 1).join('.'), "\""));
}

if (path.length - 1 === i) {
Expand All @@ -126,23 +126,24 @@ var ListForm = function () {
return this.set(key, item.updateIn(path, fn, i + 1));
}
}, {
key: 'moveUp',
key: "moveUp",
value: function moveUp(i) {
return this._move(i, i + 1);
}
}, {
key: 'moveDown',
key: "moveDown",
value: function moveDown(i) {
return this._move(i, i - 1);
}
}, {
key: '_move',
key: "_move",
value: function _move(oldPosition, newPosition) {
if (oldPosition < 0 || oldPosition >= this.items.length) {
throw new Error('Index out of bounds: ' + oldPosition);
}

newPosition = Math.min(Math.max(0, newPosition), this.items.length - 1);

if (oldPosition === newPosition) {
return this;
}
Expand All @@ -157,7 +158,7 @@ var ListForm = function () {
});
}
}, {
key: 'setTouched',
key: "setTouched",
value: function setTouched(touched, opts) {
if (!opts || !opts.recurse) {
return new ListForm({
Expand All @@ -168,6 +169,7 @@ var ListForm = function () {
}

var items = [];

for (var i = 0, len = this.items.length; i < len; i++) {
items[i] = this.items[i].setTouched(touched, opts);
}
Expand All @@ -179,7 +181,7 @@ var ListForm = function () {
});
}
}, {
key: 'map',
key: "map",
value: function map(mapper) {
var result = [];

Expand All @@ -190,7 +192,7 @@ var ListForm = function () {
return result;
}
}, {
key: 'toJS',
key: "toJS",
value: function toJS() {
return this.map(toJSMapper);
}
Expand Down

0 comments on commit b0801bc

Please sign in to comment.