From a06f761d626c5ccdd3087a656d7e3fd3653037f0 Mon Sep 17 00:00:00 2001 From: Fabien JUIF Date: Mon, 14 Jan 2019 11:52:08 +0100 Subject: [PATCH 1/2] :sparkles: driver / form / add modified fields --- .../form/__snapshots__/index.spec.js.snap | 204 ++++++++++++++++-- packages/drivers/form/dist/index.es.js | 2 +- packages/drivers/form/dist/index.umd.js | 2 +- .../form/src/__snapshots__/index.spec.js.snap | 204 ++++++++++++++++-- packages/drivers/form/src/actions.js | 19 +- packages/drivers/form/src/bulk.actions.js | 9 +- packages/drivers/form/src/form.js | 46 ++-- 7 files changed, 423 insertions(+), 63 deletions(-) diff --git a/packages/drivers/form/__snapshots__/index.spec.js.snap b/packages/drivers/form/__snapshots__/index.spec.js.snap index 210e74b..8a54150 100644 --- a/packages/drivers/form/__snapshots__/index.spec.js.snap +++ b/packages/drivers/form/__snapshots__/index.spec.js.snap @@ -20,6 +20,10 @@ Object { exports[`drivers/form [custom path and key] should get all errors 1`] = ` Object { "errors": Object { + "customKey-fields": Array [ + "first", + "second", + ], "first": "value", "second": "otherValue", }, @@ -29,6 +33,10 @@ Object { exports[`drivers/form [custom path and key] should get all values 1`] = ` Object { "values": Object { + "customKey-fields": Array [ + "first", + "second", + ], "first": "value", "second": "otherValue", }, @@ -62,7 +70,8 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [], + "customKey-name": "form-name", }, ], ], @@ -105,7 +114,11 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -118,7 +131,11 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -158,7 +175,11 @@ Object { Array [ "form1", Object { - "customKey": "form1", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form1", "first": "value", "second": "otherValue", }, @@ -166,7 +187,11 @@ Object { Array [ "form2", Object { - "customKey": "form2", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form2", "first": "value", "second": "otherValue", }, @@ -174,7 +199,11 @@ Object { Array [ "notRemove", Object { - "customKey": "notRemove", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -187,7 +216,11 @@ Object { Array [ "form1", Object { - "customKey": "form1", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form1", "first": "value", "second": "otherValue", }, @@ -195,7 +228,11 @@ Object { Array [ "form2", Object { - "customKey": "form2", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form2", "first": "value", "second": "otherValue", }, @@ -203,7 +240,11 @@ Object { Array [ "notRemove", Object { - "customKey": "notRemove", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -223,7 +264,11 @@ Object { Array [ "notRemove", Object { - "customKey": "notRemove", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -236,7 +281,11 @@ Object { Array [ "notRemove", Object { - "customKey": "notRemove", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -276,7 +325,11 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -309,7 +362,11 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -338,7 +395,11 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -362,7 +423,10 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "NEW_VALUE", }, @@ -406,7 +470,10 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "second", + ], + "customKey-name": "form-name", "second": "NEW_VALUE", }, ], @@ -439,6 +506,10 @@ Object { exports[`drivers/form [default path and key] should get all errors 1`] = ` Object { "errors": Object { + "@@form-fields": Array [ + "first", + "second", + ], "first": "value", "second": "otherValue", }, @@ -448,6 +519,10 @@ Object { exports[`drivers/form [default path and key] should get all values 1`] = ` Object { "values": Object { + "@@form-fields": Array [ + "first", + "second", + ], "first": "value", "second": "otherValue", }, @@ -479,6 +554,7 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [], "@@form-name": "form-name", }, ], @@ -522,6 +598,10 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form-name", "first": "value", "second": "otherValue", @@ -535,6 +615,10 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form-name", "first": "value", "second": "otherValue", @@ -575,6 +659,10 @@ Object { Array [ "form1", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form1", "first": "value", "second": "otherValue", @@ -583,6 +671,10 @@ Object { Array [ "form2", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form2", "first": "value", "second": "otherValue", @@ -591,6 +683,10 @@ Object { Array [ "notRemove", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "notRemove", "first": "value", "second": "otherValue", @@ -604,6 +700,10 @@ Object { Array [ "form1", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form1", "first": "value", "second": "otherValue", @@ -612,6 +712,10 @@ Object { Array [ "form2", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form2", "first": "value", "second": "otherValue", @@ -620,6 +724,10 @@ Object { Array [ "notRemove", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "notRemove", "first": "value", "second": "otherValue", @@ -640,6 +748,10 @@ Object { Array [ "notRemove", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "notRemove", "first": "value", "second": "otherValue", @@ -653,6 +765,10 @@ Object { Array [ "notRemove", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "notRemove", "first": "value", "second": "otherValue", @@ -693,6 +809,10 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form-name", "first": "value", "second": "otherValue", @@ -726,6 +846,10 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form-name", "first": "value", "second": "otherValue", @@ -755,6 +879,10 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form-name", "first": "value", "second": "otherValue", @@ -779,6 +907,9 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "second", + ], "@@form-name": "form-name", "first": "value", "second": "NEW_VALUE", @@ -823,6 +954,9 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "second", + ], "@@form-name": "form-name", "second": "NEW_VALUE", }, @@ -844,10 +978,16 @@ Object { "errors": Object {}, "values": Object { "form-1": Object { + "@@form-fields": Array [ + "lastname", + ], "@@form-name": "form-1", "lastname": "crespel", }, "form-2": Object { + "@@form-fields": Array [ + "firstname", + ], "@@form-name": "form-2", "firstname": "fabien", }, @@ -861,12 +1001,18 @@ Object { "state": Object { "errors": Object { "form-3": Object { + "@@form-fields": Array [ + "lastname", + ], "@@form-name": "form-3", "lastname": "required", }, }, "values": Object { "form-3": Object { + "@@form-fields": Array [ + "firstname", + ], "@@form-name": "form-3", "firstname": "delphine", }, @@ -880,10 +1026,16 @@ Object { "state": Object { "errors": Object { "form-1": Object { + "@@form-fields": Array [ + "firstname", + ], "@@form-name": "form-1", "firstname": "required", }, "form-2": Object { + "@@form-fields": Array [ + "lastname", + ], "@@form-name": "form-2", "lastname": "required", }, @@ -899,11 +1051,19 @@ Object { "errors": Object {}, "values": Object { "form-1": Object { + "@@form-fields": Array [ + "firstname", + "lastname", + ], "@@form-name": "form-1", "firstname": "guillaume", "lastname": "crespel", }, "form-2": Object { + "@@form-fields": Array [ + "firstname", + "lastname", + ], "@@form-name": "form-2", "firstname": "fabien", "lastname": "juif", @@ -921,12 +1081,20 @@ Object { "form-1": Object { "firstname": "guillaume", "lastname": "crespel", - "my-key": "form-1", + "my-key-fields": Array [ + "firstname", + "lastname", + ], + "my-key-name": "form-1", }, "form-2": Object { "firstname": "fabien", "lastname": "juif", - "my-key": "form-2", + "my-key-fields": Array [ + "firstname", + "lastname", + ], + "my-key-name": "form-2", }, }, }, diff --git a/packages/drivers/form/dist/index.es.js b/packages/drivers/form/dist/index.es.js index ec1bb3b..f0ecfc0 100644 --- a/packages/drivers/form/dist/index.es.js +++ b/packages/drivers/form/dist/index.es.js @@ -1 +1 @@ -import{types}from"k-ramel";function _defineProperty(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function _objectSpread(r){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return e[n].addOrUpdate(_objectSpread(_defineProperty({},r,t),o))}};return{set:n("values"),setErrors:n("errors"),clearErrors:function(){return e.errors.reset(t)},update:function(n){return function(o){var u;return e.values.update((_defineProperty(u={},r,t),_defineProperty(u,n,o),u))}},remove:function(){e.values.remove(t),e.errors.remove(t)}}}}},bulkActions=function(r){return function(e){var t=function(t){return function(n){return e[t].addOrUpdate(n.map(function(e){var t=e.name;return _objectSpread({},e.values,_defineProperty({},r,t))}))}};return{set:t("values"),setErrors:t("errors"),clearErrors:e.errors.remove,remove:function(r){e.values.remove(r),e.errors.remove(r)}}}},selectors=function(r){return function(e){return function(t){var n=function(n){return function(o){var u=e[n].get(t);if(!u)return o?"":{};if(!o&&u){var i=_objectSpread({},u);return delete i[r],i}var c=u[o];return null==c?"":c}};return{exists:function(){return!!e.values.get(t)},get:n("values"),getErrors:n("errors")}}}},utils=function(r){return{find:function(e){return r.values.getKeys().filter(function(r){return r.match(e)})}}},form=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=r.path,t=void 0===e?"form":e,n=r.getState,o=void 0===n?function(r){return r.form}:n,u=r.key,i=void 0===u?"@@form-name":u;return{getReducer:function(){return{path:t,reducer:{values:types.keyValue({key:i}),errors:types.keyValue({key:i})}}},getDriver:function(r){var e=o(r);return Object.assign(function(r){return _objectSpread({},actions(i)(e)(r),selectors(i)(e)(r))},bulkActions(i)(e),utils(e))}}};export default form; +import{types}from"k-ramel";function _defineProperty(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _objectSpread(e){for(var r=1;r0&&void 0!==arguments[0]?arguments[0]:{};return r[e].addOrUpdate(_objectSpread({},c,(_defineProperty(u={},n,t),_defineProperty(u,o,Object.keys(c)),u)))}};return{set:u("values"),setErrors:u("errors"),update:function(e){return function(u){var c;return r.values.update((_defineProperty(c={},n,t),_defineProperty(c,o,[e]),_defineProperty(c,e,u),c))}},clearErrors:function(){return r.errors.reset(t)},remove:function(){r.values.remove(t),r.errors.remove(t)}}}}},bulkActions=function(e){return function(r){var t="".concat(e,"-name"),n="".concat(e,"-fields"),o=function(e){return function(o){return r[e].addOrUpdate(o.map(function(e){var r,o=e.name,u=e.values;return _objectSpread({},u,(_defineProperty(r={},t,o),_defineProperty(r,n,Object.keys(u)),r))}))}};return{set:o("values"),setErrors:o("errors"),clearErrors:r.errors.remove,remove:function(e){r.values.remove(e),r.errors.remove(e)}}}},selectors=function(e){return function(r){return function(t){var n=function(n){return function(o){var u=r[n].get(t);if(!u)return o?"":{};if(!o&&u){var c=_objectSpread({},u);return delete c[e],c}var i=u[o];return null==i?"":i}};return{exists:function(){return!!r.values.get(t)},get:n("values"),getErrors:n("errors")}}}},utils=function(e){return{find:function(r){return e.values.getKeys().filter(function(e){return e.match(r)})}}},form=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.path,t=void 0===r?"form":r,n=e.getState,o=void 0===n?function(e){return e.form}:n,u=e.key,c=void 0===u?"@@form":u,i="".concat(c,"-name");return{getReducer:function(){return{path:t,reducer:{values:types.keyValue({key:i}),errors:types.keyValue({key:i})}}},getDriver:function(e){var r=o(e);return Object.assign(function(e){return _objectSpread({},actions(c)(r)(e),selectors(i)(r)(e))},bulkActions(c)(r),utils(r))}}};export default form; diff --git a/packages/drivers/form/dist/index.umd.js b/packages/drivers/form/dist/index.umd.js index d31566f..03ece41 100644 --- a/packages/drivers/form/dist/index.umd.js +++ b/packages/drivers/form/dist/index.umd.js @@ -1 +1 @@ -!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("k-ramel")):"function"==typeof define&&define.amd?define(["k-ramel"],e):(r=r||self)["@k-ramel/driver-form"]=e(r.kRamel)}(this,function(r){"use strict";function e(r,e,n){return e in r?Object.defineProperty(r,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):r[e]=n,r}function n(r){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},u=t.path,o=void 0===u?"form":u,i=t.getState,f=void 0===i?function(r){return r.form}:i,c=t.key,a=void 0===c?"@@form-name":c;return{getReducer:function(){return{path:o,reducer:{values:r.types.keyValue({key:a}),errors:r.types.keyValue({key:a})}}},getDriver:function(r){var t=f(r);return Object.assign(function(r){return n({},function(r){return function(t){return function(u){var o=function(o){return function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t[o].addOrUpdate(n(e({},r,u),i))}};return{set:o("values"),setErrors:o("errors"),clearErrors:function(){return t.errors.reset(u)},update:function(n){return function(o){var i;return t.values.update((e(i={},r,u),e(i,n,o),i))}},remove:function(){t.values.remove(u),t.errors.remove(u)}}}}}(a)(t)(r),function(r){return function(e){return function(t){var u=function(u){return function(o){var i=e[u].get(t);if(!i)return o?"":{};if(!o&&i){var f=n({},i);return delete f[r],f}var c=i[o];return null==c?"":c}};return{exists:function(){return!!e.values.get(t)},get:u("values"),getErrors:u("errors")}}}}(a)(t)(r))},function(r){return function(t){var u=function(u){return function(o){return t[u].addOrUpdate(o.map(function(t){var u=t.name;return n({},t.values,e({},r,u))}))}};return{set:u("values"),setErrors:u("errors"),clearErrors:t.errors.remove,remove:function(r){t.values.remove(r),t.errors.remove(r)}}}}(a)(t),function(r){return{find:function(e){return r.values.getKeys().filter(function(r){return r.match(e)})}}}(t))}}}}); +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r(require("k-ramel")):"function"==typeof define&&define.amd?define(["k-ramel"],r):(e=e||self)["@k-ramel/driver-form"]=r(e.kRamel)}(this,function(e){"use strict";function r(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function n(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},u=t.path,o=void 0===u?"form":u,c=t.getState,i=void 0===c?function(e){return e.form}:c,f=t.key,a=void 0===f?"@@form":f,s="".concat(a,"-name");return{getReducer:function(){return{path:o,reducer:{values:e.types.keyValue({key:s}),errors:e.types.keyValue({key:s})}}},getDriver:function(e){var t=i(e);return Object.assign(function(e){return n({},function(e){return function(t){return function(u){var o="".concat(e,"-name"),c="".concat(e,"-fields"),i=function(e){return function(){var i,f=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t[e].addOrUpdate(n({},f,(r(i={},o,u),r(i,c,Object.keys(f)),i)))}};return{set:i("values"),setErrors:i("errors"),update:function(e){return function(n){var i;return t.values.update((r(i={},o,u),r(i,c,[e]),r(i,e,n),i))}},clearErrors:function(){return t.errors.reset(u)},remove:function(){t.values.remove(u),t.errors.remove(u)}}}}}(a)(t)(e),function(e){return function(r){return function(t){var u=function(u){return function(o){var c=r[u].get(t);if(!c)return o?"":{};if(!o&&c){var i=n({},c);return delete i[e],i}var f=c[o];return null==f?"":f}};return{exists:function(){return!!r.values.get(t)},get:u("values"),getErrors:u("errors")}}}}(s)(t)(e))},function(e){return function(t){var u="".concat(e,"-name"),o="".concat(e,"-fields"),c=function(e){return function(c){return t[e].addOrUpdate(c.map(function(e){var t,c=e.name,i=e.values;return n({},i,(r(t={},u,c),r(t,o,Object.keys(i)),t))}))}};return{set:c("values"),setErrors:c("errors"),clearErrors:t.errors.remove,remove:function(e){t.values.remove(e),t.errors.remove(e)}}}}(a)(t),function(e){return{find:function(r){return e.values.getKeys().filter(function(e){return e.match(r)})}}}(t))}}}}); diff --git a/packages/drivers/form/src/__snapshots__/index.spec.js.snap b/packages/drivers/form/src/__snapshots__/index.spec.js.snap index 210e74b..8a54150 100644 --- a/packages/drivers/form/src/__snapshots__/index.spec.js.snap +++ b/packages/drivers/form/src/__snapshots__/index.spec.js.snap @@ -20,6 +20,10 @@ Object { exports[`drivers/form [custom path and key] should get all errors 1`] = ` Object { "errors": Object { + "customKey-fields": Array [ + "first", + "second", + ], "first": "value", "second": "otherValue", }, @@ -29,6 +33,10 @@ Object { exports[`drivers/form [custom path and key] should get all values 1`] = ` Object { "values": Object { + "customKey-fields": Array [ + "first", + "second", + ], "first": "value", "second": "otherValue", }, @@ -62,7 +70,8 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [], + "customKey-name": "form-name", }, ], ], @@ -105,7 +114,11 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -118,7 +131,11 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -158,7 +175,11 @@ Object { Array [ "form1", Object { - "customKey": "form1", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form1", "first": "value", "second": "otherValue", }, @@ -166,7 +187,11 @@ Object { Array [ "form2", Object { - "customKey": "form2", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form2", "first": "value", "second": "otherValue", }, @@ -174,7 +199,11 @@ Object { Array [ "notRemove", Object { - "customKey": "notRemove", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -187,7 +216,11 @@ Object { Array [ "form1", Object { - "customKey": "form1", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form1", "first": "value", "second": "otherValue", }, @@ -195,7 +228,11 @@ Object { Array [ "form2", Object { - "customKey": "form2", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form2", "first": "value", "second": "otherValue", }, @@ -203,7 +240,11 @@ Object { Array [ "notRemove", Object { - "customKey": "notRemove", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -223,7 +264,11 @@ Object { Array [ "notRemove", Object { - "customKey": "notRemove", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -236,7 +281,11 @@ Object { Array [ "notRemove", Object { - "customKey": "notRemove", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -276,7 +325,11 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -309,7 +362,11 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -338,7 +395,11 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "first", + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -362,7 +423,10 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "second", + ], + "customKey-name": "form-name", "first": "value", "second": "NEW_VALUE", }, @@ -406,7 +470,10 @@ Object { Array [ "form-name", Object { - "customKey": "form-name", + "customKey-fields": Array [ + "second", + ], + "customKey-name": "form-name", "second": "NEW_VALUE", }, ], @@ -439,6 +506,10 @@ Object { exports[`drivers/form [default path and key] should get all errors 1`] = ` Object { "errors": Object { + "@@form-fields": Array [ + "first", + "second", + ], "first": "value", "second": "otherValue", }, @@ -448,6 +519,10 @@ Object { exports[`drivers/form [default path and key] should get all values 1`] = ` Object { "values": Object { + "@@form-fields": Array [ + "first", + "second", + ], "first": "value", "second": "otherValue", }, @@ -479,6 +554,7 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [], "@@form-name": "form-name", }, ], @@ -522,6 +598,10 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form-name", "first": "value", "second": "otherValue", @@ -535,6 +615,10 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form-name", "first": "value", "second": "otherValue", @@ -575,6 +659,10 @@ Object { Array [ "form1", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form1", "first": "value", "second": "otherValue", @@ -583,6 +671,10 @@ Object { Array [ "form2", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form2", "first": "value", "second": "otherValue", @@ -591,6 +683,10 @@ Object { Array [ "notRemove", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "notRemove", "first": "value", "second": "otherValue", @@ -604,6 +700,10 @@ Object { Array [ "form1", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form1", "first": "value", "second": "otherValue", @@ -612,6 +712,10 @@ Object { Array [ "form2", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form2", "first": "value", "second": "otherValue", @@ -620,6 +724,10 @@ Object { Array [ "notRemove", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "notRemove", "first": "value", "second": "otherValue", @@ -640,6 +748,10 @@ Object { Array [ "notRemove", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "notRemove", "first": "value", "second": "otherValue", @@ -653,6 +765,10 @@ Object { Array [ "notRemove", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "notRemove", "first": "value", "second": "otherValue", @@ -693,6 +809,10 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form-name", "first": "value", "second": "otherValue", @@ -726,6 +846,10 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form-name", "first": "value", "second": "otherValue", @@ -755,6 +879,10 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "first", + "second", + ], "@@form-name": "form-name", "first": "value", "second": "otherValue", @@ -779,6 +907,9 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "second", + ], "@@form-name": "form-name", "first": "value", "second": "NEW_VALUE", @@ -823,6 +954,9 @@ Object { Array [ "form-name", Object { + "@@form-fields": Array [ + "second", + ], "@@form-name": "form-name", "second": "NEW_VALUE", }, @@ -844,10 +978,16 @@ Object { "errors": Object {}, "values": Object { "form-1": Object { + "@@form-fields": Array [ + "lastname", + ], "@@form-name": "form-1", "lastname": "crespel", }, "form-2": Object { + "@@form-fields": Array [ + "firstname", + ], "@@form-name": "form-2", "firstname": "fabien", }, @@ -861,12 +1001,18 @@ Object { "state": Object { "errors": Object { "form-3": Object { + "@@form-fields": Array [ + "lastname", + ], "@@form-name": "form-3", "lastname": "required", }, }, "values": Object { "form-3": Object { + "@@form-fields": Array [ + "firstname", + ], "@@form-name": "form-3", "firstname": "delphine", }, @@ -880,10 +1026,16 @@ Object { "state": Object { "errors": Object { "form-1": Object { + "@@form-fields": Array [ + "firstname", + ], "@@form-name": "form-1", "firstname": "required", }, "form-2": Object { + "@@form-fields": Array [ + "lastname", + ], "@@form-name": "form-2", "lastname": "required", }, @@ -899,11 +1051,19 @@ Object { "errors": Object {}, "values": Object { "form-1": Object { + "@@form-fields": Array [ + "firstname", + "lastname", + ], "@@form-name": "form-1", "firstname": "guillaume", "lastname": "crespel", }, "form-2": Object { + "@@form-fields": Array [ + "firstname", + "lastname", + ], "@@form-name": "form-2", "firstname": "fabien", "lastname": "juif", @@ -921,12 +1081,20 @@ Object { "form-1": Object { "firstname": "guillaume", "lastname": "crespel", - "my-key": "form-1", + "my-key-fields": Array [ + "firstname", + "lastname", + ], + "my-key-name": "form-1", }, "form-2": Object { "firstname": "fabien", "lastname": "juif", - "my-key": "form-2", + "my-key-fields": Array [ + "firstname", + "lastname", + ], + "my-key-name": "form-2", }, }, }, diff --git a/packages/drivers/form/src/actions.js b/packages/drivers/form/src/actions.js index 757e2b4..046b723 100644 --- a/packages/drivers/form/src/actions.js +++ b/packages/drivers/form/src/actions.js @@ -1,11 +1,24 @@ export default key => state => (name) => { - const set = type => (values = {}) => state[type].addOrUpdate({ [key]: name, ...values }) + const keyName = `${key}-name` + const keyFields = `${key}-fields` + + const set = type => (values = {}) => state[type].addOrUpdate({ + ...values, + [keyName]: name, + [keyFields]: Object.keys(values), + }) + + const update = field => value => state.values.update({ + [keyName]: name, + [keyFields]: [field], + [field]: value, + }) return ({ set: set('values'), setErrors: set('errors'), - clearErrors: () => state.errors.reset(name), // TODO: this is a bug? - update: field => value => state.values.update({ [key]: name, [field]: value }), + update, + clearErrors: () => state.errors.reset(name), remove: () => { state.values.remove(name) state.errors.remove(name) diff --git a/packages/drivers/form/src/bulk.actions.js b/packages/drivers/form/src/bulk.actions.js index e584cec..cd37e14 100644 --- a/packages/drivers/form/src/bulk.actions.js +++ b/packages/drivers/form/src/bulk.actions.js @@ -1,5 +1,12 @@ export default key => (state) => { - const set = type => forms => state[type].addOrUpdate(forms.map(({ name, values }) => ({ ...values, [key]: name }))) + const keyName = `${key}-name` + const keyFields = `${key}-fields` + + const set = type => forms => state[type].addOrUpdate(forms.map(({ name, values }) => ({ + ...values, + [keyName]: name, + [keyFields]: Object.keys(values), + }))) return ({ set: set('values'), diff --git a/packages/drivers/form/src/form.js b/packages/drivers/form/src/form.js index f396206..8200723 100644 --- a/packages/drivers/form/src/form.js +++ b/packages/drivers/form/src/form.js @@ -7,25 +7,29 @@ import utils from './utils' export default ({ path = 'form', getState = store => store.form, - key = '@@form-name', -} = {}) => ({ - getReducer: () => ({ - path, - reducer: { - values: types.keyValue({ key }), - errors: types.keyValue({ key }), - }, - }), - getDriver: (store) => { - const state = getState(store) + key = '@@form', +} = {}) => { + const keyName = `${key}-name` + + return { + getReducer: () => ({ + path, + reducer: { + values: types.keyValue({ key: keyName }), + errors: types.keyValue({ key: keyName }), + }, + }), + getDriver: (store) => { + const state = getState(store) - return Object.assign( - name => ({ - ...actions(key)(state)(name), - ...selectors(key)(state)(name), - }), - bulkActions(key)(state), - utils(state), - ) - }, -}) + return Object.assign( + name => ({ + ...actions(key)(state)(name), + ...selectors(keyName)(state)(name), + }), + bulkActions(key)(state), + utils(state), + ) + }, + } +} From 228630d954be458fadbe102a81f52e31f78a1d1c Mon Sep 17 00:00:00 2001 From: Fabien JUIF Date: Mon, 14 Jan 2019 14:05:15 +0100 Subject: [PATCH 2/2] :art: not a breaking change --- .../form/__snapshots__/index.spec.js.snap | 36 +++++++++---------- packages/drivers/form/dist/index.es.js | 2 +- packages/drivers/form/dist/index.umd.js | 2 +- .../form/src/__snapshots__/index.spec.js.snap | 36 +++++++++---------- packages/drivers/form/src/actions.js | 5 +-- packages/drivers/form/src/bulk.actions.js | 5 +-- packages/drivers/form/src/form.js | 17 ++++++--- packages/drivers/form/src/selectors.js | 4 +-- 8 files changed, 54 insertions(+), 53 deletions(-) diff --git a/packages/drivers/form/__snapshots__/index.spec.js.snap b/packages/drivers/form/__snapshots__/index.spec.js.snap index 8a54150..1f51862 100644 --- a/packages/drivers/form/__snapshots__/index.spec.js.snap +++ b/packages/drivers/form/__snapshots__/index.spec.js.snap @@ -70,8 +70,8 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [], - "customKey-name": "form-name", }, ], ], @@ -114,11 +114,11 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -131,11 +131,11 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -175,11 +175,11 @@ Object { Array [ "form1", Object { + "customKey": "form1", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form1", "first": "value", "second": "otherValue", }, @@ -187,11 +187,11 @@ Object { Array [ "form2", Object { + "customKey": "form2", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form2", "first": "value", "second": "otherValue", }, @@ -199,11 +199,11 @@ Object { Array [ "notRemove", Object { + "customKey": "notRemove", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -216,11 +216,11 @@ Object { Array [ "form1", Object { + "customKey": "form1", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form1", "first": "value", "second": "otherValue", }, @@ -228,11 +228,11 @@ Object { Array [ "form2", Object { + "customKey": "form2", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form2", "first": "value", "second": "otherValue", }, @@ -240,11 +240,11 @@ Object { Array [ "notRemove", Object { + "customKey": "notRemove", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -264,11 +264,11 @@ Object { Array [ "notRemove", Object { + "customKey": "notRemove", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -281,11 +281,11 @@ Object { Array [ "notRemove", Object { + "customKey": "notRemove", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -325,11 +325,11 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -362,11 +362,11 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -395,11 +395,11 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -423,10 +423,10 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "second", ], - "customKey-name": "form-name", "first": "value", "second": "NEW_VALUE", }, @@ -470,10 +470,10 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "second", ], - "customKey-name": "form-name", "second": "NEW_VALUE", }, ], @@ -1081,20 +1081,20 @@ Object { "form-1": Object { "firstname": "guillaume", "lastname": "crespel", + "my-key": "form-1", "my-key-fields": Array [ "firstname", "lastname", ], - "my-key-name": "form-1", }, "form-2": Object { "firstname": "fabien", "lastname": "juif", + "my-key": "form-2", "my-key-fields": Array [ "firstname", "lastname", ], - "my-key-name": "form-2", }, }, }, diff --git a/packages/drivers/form/dist/index.es.js b/packages/drivers/form/dist/index.es.js index f0ecfc0..9048aa3 100644 --- a/packages/drivers/form/dist/index.es.js +++ b/packages/drivers/form/dist/index.es.js @@ -1 +1 @@ -import{types}from"k-ramel";function _defineProperty(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _objectSpread(e){for(var r=1;r0&&void 0!==arguments[0]?arguments[0]:{};return r[e].addOrUpdate(_objectSpread({},c,(_defineProperty(u={},n,t),_defineProperty(u,o,Object.keys(c)),u)))}};return{set:u("values"),setErrors:u("errors"),update:function(e){return function(u){var c;return r.values.update((_defineProperty(c={},n,t),_defineProperty(c,o,[e]),_defineProperty(c,e,u),c))}},clearErrors:function(){return r.errors.reset(t)},remove:function(){r.values.remove(t),r.errors.remove(t)}}}}},bulkActions=function(e){return function(r){var t="".concat(e,"-name"),n="".concat(e,"-fields"),o=function(e){return function(o){return r[e].addOrUpdate(o.map(function(e){var r,o=e.name,u=e.values;return _objectSpread({},u,(_defineProperty(r={},t,o),_defineProperty(r,n,Object.keys(u)),r))}))}};return{set:o("values"),setErrors:o("errors"),clearErrors:r.errors.remove,remove:function(e){r.values.remove(e),r.errors.remove(e)}}}},selectors=function(e){return function(r){return function(t){var n=function(n){return function(o){var u=r[n].get(t);if(!u)return o?"":{};if(!o&&u){var c=_objectSpread({},u);return delete c[e],c}var i=u[o];return null==i?"":i}};return{exists:function(){return!!r.values.get(t)},get:n("values"),getErrors:n("errors")}}}},utils=function(e){return{find:function(r){return e.values.getKeys().filter(function(e){return e.match(r)})}}},form=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.path,t=void 0===r?"form":r,n=e.getState,o=void 0===n?function(e){return e.form}:n,u=e.key,c=void 0===u?"@@form":u,i="".concat(c,"-name");return{getReducer:function(){return{path:t,reducer:{values:types.keyValue({key:i}),errors:types.keyValue({key:i})}}},getDriver:function(e){var r=o(e);return Object.assign(function(e){return _objectSpread({},actions(c)(r)(e),selectors(i)(r)(e))},bulkActions(c)(r),utils(r))}}};export default form; +import{types}from"k-ramel";function _defineProperty(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _objectSpread(e){for(var r=1;r0&&void 0!==arguments[0]?arguments[0]:{};return e[o].addOrUpdate(_objectSpread({},i,(_defineProperty(u={},r,n),_defineProperty(u,t,Object.keys(i)),u)))}};return{set:o("values"),setErrors:o("errors"),update:function(o){return function(u){var i;return e.values.update((_defineProperty(i={},r,n),_defineProperty(i,t,[o]),_defineProperty(i,o,u),i))}},clearErrors:function(){return e.errors.reset(n)},remove:function(){e.values.remove(n),e.errors.remove(n)}}}}},bulkActions=function(e){var r=e.keyName,t=e.keyFields;return function(e){var n=function(n){return function(o){return e[n].addOrUpdate(o.map(function(e){var n,o=e.name,u=e.values;return _objectSpread({},u,(_defineProperty(n={},r,o),_defineProperty(n,t,Object.keys(u)),n))}))}};return{set:n("values"),setErrors:n("errors"),clearErrors:e.errors.remove,remove:function(r){e.values.remove(r),e.errors.remove(r)}}}},selectors=function(e){var r=e.keyName;return function(e){return function(t){var n=function(n){return function(o){var u=e[n].get(t);if(!u)return o?"":{};if(!o&&u){var i=_objectSpread({},u);return delete i[r],i}var a=u[o];return null==a?"":a}};return{exists:function(){return!!e.values.get(t)},get:n("values"),getErrors:n("errors")}}}},utils=function(e){return{find:function(r){return e.values.getKeys().filter(function(e){return e.match(r)})}}},form=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.path,t=void 0===r?"form":r,n=e.getState,o=void 0===n?function(e){return e.form}:n,u=e.key,i=void 0===u?"@@form-name":u,a=i,c="@@form";"@@form-name"!==i&&(c=i);var f="".concat(c,"-fields");return{getReducer:function(){return{path:t,reducer:{values:types.keyValue({key:a}),errors:types.keyValue({key:a})}}},getDriver:function(e){var r=o(e);return Object.assign(function(e){return _objectSpread({},actions({keyName:a,keyFields:f})(r)(e),selectors({keyName:a,keyFields:f})(r)(e))},bulkActions({keyName:a,keyFields:f})(r),utils(r))}}};export default form; diff --git a/packages/drivers/form/dist/index.umd.js b/packages/drivers/form/dist/index.umd.js index 03ece41..196ba8a 100644 --- a/packages/drivers/form/dist/index.umd.js +++ b/packages/drivers/form/dist/index.umd.js @@ -1 +1 @@ -!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r(require("k-ramel")):"function"==typeof define&&define.amd?define(["k-ramel"],r):(e=e||self)["@k-ramel/driver-form"]=r(e.kRamel)}(this,function(e){"use strict";function r(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function n(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},u=t.path,o=void 0===u?"form":u,c=t.getState,i=void 0===c?function(e){return e.form}:c,f=t.key,a=void 0===f?"@@form":f,s="".concat(a,"-name");return{getReducer:function(){return{path:o,reducer:{values:e.types.keyValue({key:s}),errors:e.types.keyValue({key:s})}}},getDriver:function(e){var t=i(e);return Object.assign(function(e){return n({},function(e){return function(t){return function(u){var o="".concat(e,"-name"),c="".concat(e,"-fields"),i=function(e){return function(){var i,f=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t[e].addOrUpdate(n({},f,(r(i={},o,u),r(i,c,Object.keys(f)),i)))}};return{set:i("values"),setErrors:i("errors"),update:function(e){return function(n){var i;return t.values.update((r(i={},o,u),r(i,c,[e]),r(i,e,n),i))}},clearErrors:function(){return t.errors.reset(u)},remove:function(){t.values.remove(u),t.errors.remove(u)}}}}}(a)(t)(e),function(e){return function(r){return function(t){var u=function(u){return function(o){var c=r[u].get(t);if(!c)return o?"":{};if(!o&&c){var i=n({},c);return delete i[e],i}var f=c[o];return null==f?"":f}};return{exists:function(){return!!r.values.get(t)},get:u("values"),getErrors:u("errors")}}}}(s)(t)(e))},function(e){return function(t){var u="".concat(e,"-name"),o="".concat(e,"-fields"),c=function(e){return function(c){return t[e].addOrUpdate(c.map(function(e){var t,c=e.name,i=e.values;return n({},i,(r(t={},u,c),r(t,o,Object.keys(i)),t))}))}};return{set:c("values"),setErrors:c("errors"),clearErrors:t.errors.remove,remove:function(e){t.values.remove(e),t.errors.remove(e)}}}}(a)(t),function(e){return{find:function(r){return e.values.getKeys().filter(function(e){return e.match(r)})}}}(t))}}}}); +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r(require("k-ramel")):"function"==typeof define&&define.amd?define(["k-ramel"],r):(e=e||self)["@k-ramel/driver-form"]=r(e.kRamel)}(this,function(e){"use strict";function r(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function n(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},u=t.path,o=void 0===u?"form":u,i=t.getState,a=void 0===i?function(e){return e.form}:i,f=t.key,c=void 0===f?"@@form-name":f,s=c,l="@@form";"@@form-name"!==c&&(l=c);var v="".concat(l,"-fields");return{getReducer:function(){return{path:o,reducer:{values:e.types.keyValue({key:s}),errors:e.types.keyValue({key:s})}}},getDriver:function(e){var t=a(e);return Object.assign(function(e){return n({},function(e){var t=e.keyName,u=e.keyFields;return function(e){return function(o){var i=function(i){return function(){var a,f=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e[i].addOrUpdate(n({},f,(r(a={},t,o),r(a,u,Object.keys(f)),a)))}};return{set:i("values"),setErrors:i("errors"),update:function(n){return function(i){var a;return e.values.update((r(a={},t,o),r(a,u,[n]),r(a,n,i),a))}},clearErrors:function(){return e.errors.reset(o)},remove:function(){e.values.remove(o),e.errors.remove(o)}}}}}({keyName:s,keyFields:v})(t)(e),function(e){var r=e.keyName;return function(e){return function(t){var u=function(u){return function(o){var i=e[u].get(t);if(!i)return o?"":{};if(!o&&i){var a=n({},i);return delete a[r],a}var f=i[o];return null==f?"":f}};return{exists:function(){return!!e.values.get(t)},get:u("values"),getErrors:u("errors")}}}}({keyName:s,keyFields:v})(t)(e))},function(e){var t=e.keyName,u=e.keyFields;return function(e){var o=function(o){return function(i){return e[o].addOrUpdate(i.map(function(e){var o,i=e.name,a=e.values;return n({},a,(r(o={},t,i),r(o,u,Object.keys(a)),o))}))}};return{set:o("values"),setErrors:o("errors"),clearErrors:e.errors.remove,remove:function(r){e.values.remove(r),e.errors.remove(r)}}}}({keyName:s,keyFields:v})(t),function(e){return{find:function(r){return e.values.getKeys().filter(function(e){return e.match(r)})}}}(t))}}}}); diff --git a/packages/drivers/form/src/__snapshots__/index.spec.js.snap b/packages/drivers/form/src/__snapshots__/index.spec.js.snap index 8a54150..1f51862 100644 --- a/packages/drivers/form/src/__snapshots__/index.spec.js.snap +++ b/packages/drivers/form/src/__snapshots__/index.spec.js.snap @@ -70,8 +70,8 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [], - "customKey-name": "form-name", }, ], ], @@ -114,11 +114,11 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -131,11 +131,11 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -175,11 +175,11 @@ Object { Array [ "form1", Object { + "customKey": "form1", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form1", "first": "value", "second": "otherValue", }, @@ -187,11 +187,11 @@ Object { Array [ "form2", Object { + "customKey": "form2", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form2", "first": "value", "second": "otherValue", }, @@ -199,11 +199,11 @@ Object { Array [ "notRemove", Object { + "customKey": "notRemove", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -216,11 +216,11 @@ Object { Array [ "form1", Object { + "customKey": "form1", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form1", "first": "value", "second": "otherValue", }, @@ -228,11 +228,11 @@ Object { Array [ "form2", Object { + "customKey": "form2", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form2", "first": "value", "second": "otherValue", }, @@ -240,11 +240,11 @@ Object { Array [ "notRemove", Object { + "customKey": "notRemove", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -264,11 +264,11 @@ Object { Array [ "notRemove", Object { + "customKey": "notRemove", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -281,11 +281,11 @@ Object { Array [ "notRemove", Object { + "customKey": "notRemove", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "notRemove", "first": "value", "second": "otherValue", }, @@ -325,11 +325,11 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -362,11 +362,11 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -395,11 +395,11 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "first", "second", ], - "customKey-name": "form-name", "first": "value", "second": "otherValue", }, @@ -423,10 +423,10 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "second", ], - "customKey-name": "form-name", "first": "value", "second": "NEW_VALUE", }, @@ -470,10 +470,10 @@ Object { Array [ "form-name", Object { + "customKey": "form-name", "customKey-fields": Array [ "second", ], - "customKey-name": "form-name", "second": "NEW_VALUE", }, ], @@ -1081,20 +1081,20 @@ Object { "form-1": Object { "firstname": "guillaume", "lastname": "crespel", + "my-key": "form-1", "my-key-fields": Array [ "firstname", "lastname", ], - "my-key-name": "form-1", }, "form-2": Object { "firstname": "fabien", "lastname": "juif", + "my-key": "form-2", "my-key-fields": Array [ "firstname", "lastname", ], - "my-key-name": "form-2", }, }, }, diff --git a/packages/drivers/form/src/actions.js b/packages/drivers/form/src/actions.js index 046b723..887c28b 100644 --- a/packages/drivers/form/src/actions.js +++ b/packages/drivers/form/src/actions.js @@ -1,7 +1,4 @@ -export default key => state => (name) => { - const keyName = `${key}-name` - const keyFields = `${key}-fields` - +export default ({ keyName, keyFields }) => state => (name) => { const set = type => (values = {}) => state[type].addOrUpdate({ ...values, [keyName]: name, diff --git a/packages/drivers/form/src/bulk.actions.js b/packages/drivers/form/src/bulk.actions.js index cd37e14..0d5bc92 100644 --- a/packages/drivers/form/src/bulk.actions.js +++ b/packages/drivers/form/src/bulk.actions.js @@ -1,7 +1,4 @@ -export default key => (state) => { - const keyName = `${key}-name` - const keyFields = `${key}-fields` - +export default ({ keyName, keyFields }) => (state) => { const set = type => forms => state[type].addOrUpdate(forms.map(({ name, values }) => ({ ...values, [keyName]: name, diff --git a/packages/drivers/form/src/form.js b/packages/drivers/form/src/form.js index 8200723..cb9251d 100644 --- a/packages/drivers/form/src/form.js +++ b/packages/drivers/form/src/form.js @@ -7,9 +7,16 @@ import utils from './utils' export default ({ path = 'form', getState = store => store.form, - key = '@@form', + key = '@@form-name', } = {}) => { - const keyName = `${key}-name` + const keyName = key + let baseKey = '@@form' + + // in case this is not the default key that is given, we just consider the baseKey is the key + // in this case this is not a breaking change from 1.2.0 to 1.3.0 + if (key !== '@@form-name') baseKey = key + + const keyFields = `${baseKey}-fields` return { getReducer: () => ({ @@ -24,10 +31,10 @@ export default ({ return Object.assign( name => ({ - ...actions(key)(state)(name), - ...selectors(keyName)(state)(name), + ...actions({ keyName, keyFields })(state)(name), + ...selectors({ keyName, keyFields })(state)(name), }), - bulkActions(key)(state), + bulkActions({ keyName, keyFields })(state), utils(state), ) }, diff --git a/packages/drivers/form/src/selectors.js b/packages/drivers/form/src/selectors.js index 9a40714..e336be6 100644 --- a/packages/drivers/form/src/selectors.js +++ b/packages/drivers/form/src/selectors.js @@ -1,4 +1,4 @@ -export default key => state => (name) => { +export default ({ keyName }) => state => (name) => { const get = type => (field) => { const values = state[type].get(name) if (!values) { @@ -9,7 +9,7 @@ export default key => state => (name) => { if (!field && values) { // remove `key` from the result so as not to pollute const rest = { ...values } - delete rest[key] + delete rest[keyName] return rest }