@performant-software/controlled-vocabulary 0.6.2-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +0 -0
- package/build/index.js +2 -0
- package/build/index.js.map +1 -0
- package/build/main.css +4 -0
- package/index.js +1 -0
- package/package.json +30 -0
- package/src/components/ReferenceCodeDropdown.css +0 -0
- package/src/components/ReferenceCodeDropdown.js +146 -0
- package/src/components/ReferenceCodeFormDropdown.js +76 -0
- package/src/components/ReferenceCodeFormLabel.css +3 -0
- package/src/components/ReferenceCodeFormLabel.js +52 -0
- package/src/components/ReferenceCodeModal.css +0 -0
- package/src/components/ReferenceCodeModal.js +39 -0
- package/src/components/ReferenceTableModal.css +0 -0
- package/src/components/ReferenceTableModal.js +73 -0
- package/src/components/ReferenceTablesList.css +0 -0
- package/src/components/ReferenceTablesList.js +44 -0
- package/src/i18n/en.json +35 -0
- package/src/i18n/i18n.js +26 -0
- package/src/index.js +23 -0
- package/src/services/ReferenceCodes.js +28 -0
- package/src/services/ReferenceTables.js +40 -0
- package/src/transforms/ReferenceCodes.js +35 -0
- package/src/transforms/ReferenceTable.js +53 -0
- package/src/transforms/References.js +24 -0
- package/src/types/Referrable.js +7 -0
- package/src/utils/Reference.js +21 -0
- package/types/components/ReferenceCodeDropdown.js.flow +146 -0
- package/types/components/ReferenceCodeFormDropdown.js.flow +76 -0
- package/types/components/ReferenceCodeFormLabel.js.flow +52 -0
- package/types/components/ReferenceCodeModal.js.flow +39 -0
- package/types/components/ReferenceTableModal.js.flow +73 -0
- package/types/components/ReferenceTablesList.js.flow +44 -0
- package/types/i18n/i18n.js.flow +26 -0
- package/types/index.js.flow +23 -0
- package/types/services/ReferenceCodes.js.flow +28 -0
- package/types/services/ReferenceTables.js.flow +40 -0
- package/types/transforms/ReferenceCodes.js.flow +35 -0
- package/types/transforms/ReferenceTable.js.flow +53 -0
- package/types/transforms/References.js.flow +24 -0
- package/types/types/Referrable.js.flow +7 -0
- package/types/utils/Reference.js.flow +21 -0
- package/webpack.config.js +33 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Performant Software Solutions LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
File without changes
|
package/build/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(){"use strict";var e={n:function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,{a:r}),r},d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{Reference:function(){return Ee},ReferenceCodeDropdown:function(){return b},ReferenceCodeFormDropdown:function(){return D},ReferenceCodeFormLabel:function(){return w},ReferenceCodeModal:function(){return j},ReferenceCodesService:function(){return K},ReferenceCodesTransform:function(){return X},ReferenceTableTransform:function(){return fe},ReferenceTablesList:function(){return x},ReferenceTablesService:function(){return he},ReferencesTransform:function(){return Se}});var r=require("@performant-software/shared-components"),n=require("react"),o=e.n(n),c=require("semantic-ui-react"),u=require("underscore"),i=e.n(u);function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){f(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,c=[],u=!0,i=!1;try{for(r=r.call(e);!(u=(n=r.next()).done)&&(c.push(n.value),!t||c.length!==t);u=!0);}catch(e){i=!0,o=e}finally{try{u||null==r.return||r.return()}finally{if(i)throw o}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var y=function(e){var t=s((0,n.useState)(!1),2),u=t[0],a=t[1],f=s((0,n.useState)([]),2),p=f[0],y=f[1],b=(0,n.useMemo)((function(){var t=i().pluck(i().filter(e.value,(function(e){return!e._destroy})),"reference_code_id");return e.multiple?t:i().first(t)}),[e.multiple,e.value]),d=(0,n.useCallback)((function(e){return{reference_code_id:e,reference_code:{id:e,name:i().findWhere(p,{key:e}).text}}}),[p]),m=(0,n.useCallback)((function(e){return{key:e.id,value:e.id,text:e.name}}),[]),v=(0,n.useCallback)((function(t,r){var n;n=e.multiple?r.value:i().compact([r.value]);var o=[];i().each(n,(function(t){var r=i().findWhere(e.value,{reference_code_id:t});r||(r=d(t)),o.push(i().omit(r,"_destroy"))})),i().each(e.value,(function(e){e.id&&!i().contains(n,e.reference_code_id)&&o.push(l(l({},e),{},{_destroy:!0}))})),e.onChange(o)}),[d,e.multiple,e.onChange,e.value]);return(0,n.useEffect)((function(){a(!0);var t={per_page:0,reference_table:e.referenceTable,sort_by:"name"};r.ReferenceCodesService.fetchAll(t).then((function(e){var t=e.data;return y(i().map(t.reference_codes,m))})).finally((function(){return a(!1)}))}),[m]),o().createElement(c.Dropdown,{clearable:!0,disabled:u,fluid:e.fluid,loading:u,multiple:e.multiple,onChange:v,options:p,placeholder:e.placeholder,search:!0,selection:!0,selectOnBlur:!1,value:b})};y.defaultProps={fluid:!0,multiple:!1,placeholder:void 0};var b=y,d=require("@performant-software/semantic-components"),m=require("i18next"),v=e.n(m),h={en:{translation:JSON.parse('{"Common":{"buttons":{"edit":"Edit"}},"ReferenceCodeFormLabel":{"content":"The values in this list can be edited via the {{name}} reference table."},"ReferenceCodeModal":{"labels":{"name":"Name"},"title":{"add":"Add Reference Code","edit":"Edit Reference Code"}},"ReferenceTableModal":{"labels":{"key":"Key","name":"Name","referenceCodes":"Reference Codes"},"referenceCodes":{"columns":{"name":"Name"}},"title":{"add":"Add Reference Table","edit":"Edit Reference Table"}}}')}},O=v().createInstance();O.init({debug:!0,fallbackLng:"en",lng:"en",interpolation:{escapeValue:!1},resources:h});var g=O,w=function(e){return o().createElement(o().Fragment,null,o().createElement("label",{className:"reference-code-form-label",htmlFor:e.referenceTable},e.label),o().createElement(c.Popup,{hoverable:!0,trigger:o().createElement(c.Icon,{name:"info circle",style:{marginLeft:"0.3em"}})},o().createElement(c.Header,{content:e.label}),o().createElement("p",null,g.t("ReferenceCodeFormLabel.content",{name:e.label})),o().createElement(c.Button,{content:g.t("Common.buttons.edit"),icon:"edit",primary:!0,onClick:e.onClick})))},j=function(e){return o().createElement(d.ModalContext.Consumer,null,(function(t){return o().createElement(c.Modal,{as:c.Form,centered:!1,mountNode:t,open:!0},o().createElement(c.Modal.Header,{content:e.item.id?g.t("ReferenceCodeModal.title.edit"):g.t("ReferenceCodeModal.title.add")}),o().createElement(c.Modal.Content,null,o().createElement(c.Form.Input,{autoFocus:!0,error:e.isError("name"),label:g.t("ReferenceCodeModal.labels.name"),onChange:e.onTextInputChange.bind(void 0,"name"),required:e.isRequired("name"),value:e.item.name})),e.children)}))},P=void 0,_=function(e){return o().createElement(d.ModalContext.Consumer,null,(function(t){return o().createElement(c.Modal,{as:c.Form,centered:!1,className:"reference-table-modal",mountNode:t,open:!0},o().createElement(c.Modal.Header,{content:e.item.id?g.t("ReferenceTableModal.title.edit"):g.t("ReferenceTableModal.title.add")}),o().createElement(c.Modal.Content,null,o().createElement(c.Form.Input,{autoFocus:!0,error:e.isError("name"),label:g.t("ReferenceTableModal.labels.name"),onChange:e.onTextInputChange.bind(P,"name"),required:e.isRequired("name"),value:e.item.name}),o().createElement(c.Form.Input,{error:e.isError("key"),label:g.t("ReferenceTableModal.labels.key"),onChange:e.onTextInputChange.bind(P,"key"),required:e.isRequired("key"),value:e.item.key}),o().createElement(c.Header,{content:g.t("ReferenceTableModal.labels.referenceCodes")}),o().createElement(d.EmbeddedList,{actions:[{name:"edit"},{name:"copy"},{name:"delete"}],columns:[{name:"name",label:g.t("ReferenceTableModal.referenceCodes.columns.name")}],items:e.item.reference_codes,modal:{component:j,props:{required:["name"]}},onDelete:e.onDeleteChildAssociation.bind(P,"reference_codes"),onSave:e.onSaveChildAssociation.bind(P,"reference_codes")})),e.children)}))},R=["error","label","required","referenceTable"];function S(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function E(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?S(Object(r),!0).forEach((function(t){T(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):S(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function T(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function C(){return C=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},C.apply(this,arguments)}function k(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,c=[],u=!0,i=!1;try{for(r=r.call(e);!(u=(n=r.next()).done)&&(c.push(n.value),!t||c.length!==t);u=!0);}catch(e){i=!0,o=e}finally{try{u||null==r.return||r.return()}finally{if(i)throw o}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return M(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?M(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var D=function(e){var t=e.error,u=e.label,i=e.required,a=e.referenceTable,l=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},c=Object.keys(e);for(n=0;n<c.length;n++)r=c[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n<c.length;n++)r=c[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,R),f=k((0,n.useState)(!1),2),s=f[0],p=f[1],y=k((0,n.useState)(0),2),m=y[0],v=y[1];return o().createElement(o().Fragment,null,o().createElement(c.Form.Input,{error:t,label:o().createElement(w,{label:u,onClick:function(){return p(!0)},referenceTable:a}),required:i},o().createElement(b,C({},l,{id:a,referenceTable:a,key:m}))),s&&o().createElement(d.EditModal,{component:_,item:{id:a,key:a},onClose:function(){return p(!1)},onInitialize:function(e){return r.ReferenceTablesService.fetchByKey(e).then((function(t){return E(E({},t.data.reference_table),{},{key:e})}))},onSave:function(e){return r.ReferenceTablesService.save(e).then((function(e){return e.data.reference_table})).then((function(){return v((function(e){return e+1}))})).finally((function(){return p(!1)}))}}))},x=function(){return o().createElement(d.ListTable,{actions:[{name:"edit"},{name:"copy"},{name:"delete"}],collectionName:"reference_tables",columns:[{name:"name",label:"Name",sortable:!0},{name:"key",label:"Key",sortable:!0}],modal:{component:_,props:{onInitialize:function(e){return r.ReferenceTablesService.fetchOne(e).then((function(e){return e.data.reference_table}))},required:["name","key"]}},onDelete:function(e){return r.ReferenceTablesService.delete(e)},onLoad:function(e){return r.ReferenceTablesService.fetchAll(e)},onSave:function(e){return r.ReferenceTablesService.save(e)}})};function A(e){return A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},A(e)}function B(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function I(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function q(e,t){return q=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},q(e,t)}function F(e,t){if(t&&("object"===A(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function N(e){return N=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},N(e)}var L=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&q(e,t)}(u,e);var t,r,n,o,c=(n=u,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=N(n);if(o){var r=N(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return F(this,e)});function u(){return B(this,u),c.apply(this,arguments)}return t=u,(r=[{key:"getBaseUrl",value:function(){return"/controlled_vocabulary/reference_codes"}},{key:"getTransform",value:function(){return{}}}])&&I(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),u}(r.BaseService),K=new L;function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function H(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function V(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function z(){return z="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=W(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(arguments.length<3?e:r):o.value}},z.apply(this,arguments)}function W(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=G(e)););return e}function $(e,t){return $=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},$(e,t)}function J(e,t){if(t&&("object"===U(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function G(e){return G=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},G(e)}var Q=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&$(e,t)}(u,e);var t,r,n,o,c=(n=u,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=G(n);if(o){var r=G(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return J(this,e)});function u(){return H(this,u),c.apply(this,arguments)}return t=u,r=[{key:"getPayloadKeys",value:function(){return["id","name","_destroy"]}},{key:"toPayload",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"reference_codes";return z(G(u.prototype),"toPayload",this).call(this,e,t)}}],r&&V(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),u}(r.NestedAttributesTransform),X=new Q;function Y(e){return Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Y(e)}function Z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ee(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Z(Object(r),!0).forEach((function(t){te(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Z(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function te(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function re(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ne(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function oe(){return oe="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=ce(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(arguments.length<3?e:r):o.value}},oe.apply(this,arguments)}function ce(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=ae(e)););return e}function ue(e,t){return ue=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},ue(e,t)}function ie(e,t){if(t&&("object"===Y(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function ae(e){return ae=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},ae(e)}var le=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ue(e,t)}(u,e);var t,r,n,o,c=(n=u,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=ae(n);if(o){var r=ae(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return ie(this,e)});function u(){return re(this,u),c.apply(this,arguments)}return t=u,r=[{key:"getParameterName",value:function(){return"reference_table"}},{key:"getPayloadKeys",value:function(){return["name","key"]}},{key:"toPayload",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return oe(ae(u.prototype),"toPayload",this).call(this,e,ee(ee({},t),X.toPayload(e)))}}],r&&ne(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),u}(r.BaseTransform),fe=new le;function se(e){return se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},se(e)}function pe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ye(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function be(e,t){return be=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},be(e,t)}function de(e,t){if(t&&("object"===se(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function me(e){return me=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},me(e)}var ve=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&be(e,t)}(u,e);var t,r,n,o,c=(n=u,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=me(n);if(o){var r=me(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return de(this,e)});function u(){return pe(this,u),c.apply(this,arguments)}return t=u,(r=[{key:"fetchByKey",value:function(e){return this.getAxios().get("".concat(this.getBaseUrl(),"/find_by_key"),{params:{key:e}})}},{key:"getBaseUrl",value:function(){return"/controlled_vocabulary/reference_tables"}},{key:"getTransform",value:function(){return fe}}])&&ye(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),u}(r.BaseService),he=new ve;function Oe(e){return Oe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Oe(e)}function ge(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function we(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function je(e,t){return je=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},je(e,t)}function Pe(e,t){if(t&&("object"===Oe(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function _e(e){return _e=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_e(e)}var Re=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&je(e,t)}(u,e);var t,r,n,o,c=(n=u,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=_e(n);if(o){var r=_e(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return Pe(this,e)});function u(){return ge(this,u),c.apply(this,arguments)}return t=u,(r=[{key:"getPayloadKeys",value:function(){return["id","reference_code_id","_destroy"]}}])&&we(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),u}(r.NestedAttributesTransform),Se=new Re,Ee={getViewValue:function(e){return i().map(i().filter(e,(function(e){return!e._destroy})),(function(e){var t;return null===(t=e.reference_code)||void 0===t?void 0:t.name})).join(", ")}};module.exports=t}();
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://@performant-software/controlled-vocabulary/webpack/bootstrap","webpack://@performant-software/controlled-vocabulary/webpack/runtime/compat get default export","webpack://@performant-software/controlled-vocabulary/webpack/runtime/define property getters","webpack://@performant-software/controlled-vocabulary/webpack/runtime/hasOwnProperty shorthand","webpack://@performant-software/controlled-vocabulary/webpack/runtime/make namespace object","webpack://@performant-software/controlled-vocabulary/external commonjs \"@performant-software/shared-components\"","webpack://@performant-software/controlled-vocabulary/external commonjs2 \"react\"","webpack://@performant-software/controlled-vocabulary/external commonjs \"semantic-ui-react\"","webpack://@performant-software/controlled-vocabulary/external commonjs \"underscore\"","webpack://@performant-software/controlled-vocabulary/./src/components/ReferenceCodeDropdown.js","webpack://@performant-software/controlled-vocabulary/external commonjs \"@performant-software/semantic-components\"","webpack://@performant-software/controlled-vocabulary/external commonjs \"i18next\"","webpack://@performant-software/controlled-vocabulary/./src/i18n/i18n.js","webpack://@performant-software/controlled-vocabulary/./src/components/ReferenceCodeFormLabel.js","webpack://@performant-software/controlled-vocabulary/./src/components/ReferenceCodeModal.js","webpack://@performant-software/controlled-vocabulary/./src/components/ReferenceTableModal.js","webpack://@performant-software/controlled-vocabulary/./src/components/ReferenceCodeFormDropdown.js","webpack://@performant-software/controlled-vocabulary/./src/components/ReferenceTablesList.js","webpack://@performant-software/controlled-vocabulary/./src/services/ReferenceCodes.js","webpack://@performant-software/controlled-vocabulary/./src/transforms/ReferenceCodes.js","webpack://@performant-software/controlled-vocabulary/./src/transforms/ReferenceTable.js","webpack://@performant-software/controlled-vocabulary/./src/services/ReferenceTables.js","webpack://@performant-software/controlled-vocabulary/./src/transforms/References.js","webpack://@performant-software/controlled-vocabulary/./src/utils/Reference.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@performant-software/shared-components\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"semantic-ui-react\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"underscore\");","// @flow\n\nimport { ReferenceCodesService } from '@performant-software/shared-components';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport { Dropdown } from 'semantic-ui-react';\nimport _ from 'underscore';\n\ntype Item = {\n reference_table_id: number,\n key: string\n};\n\ntype Props = {\n fluid?: boolean,\n multiple?: boolean,\n onChange: (item: Item) => void,\n placeholder?: string,\n referenceTable: string,\n value: Item | Array<Item>\n};\n\nconst ReferenceCodeDropdown = (props: Props) => {\n const [loading, setLoading] = useState(false);\n const [options, setOptions] = useState([]);\n\n /**\n * Sets the \"value\" variable for the Dropdown component.\n */\n const value = useMemo(() => {\n const v = _.pluck(_.filter(props.value, (x) => !x._destroy), 'reference_code_id');\n return props.multiple ? v : _.first(v);\n }, [props.multiple, props.value]);\n\n /**\n * Converts the passed ID to a reference code item.\n *\n * @type {function(*): {reference_code_id: *}}\n */\n const toItem = useCallback((id) => {\n const option = _.findWhere(options, { key: id });\n\n return {\n reference_code_id: id,\n reference_code: {\n id,\n name: option.text\n }\n };\n }, [options]);\n\n /**\n * Converts the passed reference code to a dropdown option.\n *\n * @type {function(*): {text: *, value: *, key: *}}\n */\n const toOption = useCallback((referenceCode) => ({\n key: referenceCode.id,\n value: referenceCode.id,\n text: referenceCode.name\n }), []);\n\n /**\n * Converts the selected values and calls the onChange prop.\n *\n * @type {(function(*, {value: *}): void)|*}\n */\n const onChange = useCallback((e, data) => {\n let referenceCodeIds;\n\n if (props.multiple) {\n referenceCodeIds = data.value;\n } else {\n referenceCodeIds = _.compact([data.value]);\n }\n\n const items = [];\n\n // Find existing records or create new records\n _.each(referenceCodeIds, (referenceCodeId) => {\n let newValue = _.findWhere(props.value, { reference_code_id: referenceCodeId });\n\n if (!newValue) {\n newValue = toItem(referenceCodeId);\n }\n\n items.push(_.omit(newValue, '_destroy'));\n });\n\n // Mark records for delete\n _.each(props.value, (v) => {\n if (v.id && !_.contains(referenceCodeIds, v.reference_code_id)) {\n items.push({ ...v, _destroy: true });\n }\n });\n\n props.onChange(items);\n }, [toItem, props.multiple, props.onChange, props.value]);\n\n /**\n * Loads the list of reference codes from the server.\n */\n useEffect(() => {\n setLoading(true);\n\n const params = {\n per_page: 0,\n reference_table: props.referenceTable,\n sort_by: 'name'\n };\n\n ReferenceCodesService\n .fetchAll(params)\n .then(({ data }) => setOptions(_.map(data.reference_codes, toOption)))\n .finally(() => setLoading(false));\n }, [toOption]);\n\n return (\n <Dropdown\n clearable\n disabled={loading}\n fluid={props.fluid}\n loading={loading}\n multiple={props.multiple}\n onChange={onChange}\n options={options}\n placeholder={props.placeholder}\n search\n selection\n selectOnBlur={false}\n value={value}\n />\n );\n};\n\nReferenceCodeDropdown.defaultProps = {\n fluid: true,\n multiple: false,\n placeholder: undefined\n};\n\nexport default ReferenceCodeDropdown;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@performant-software/semantic-components\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"i18next\");","// @flow\n\nimport i18next from 'i18next';\n\nimport en from './en.json';\n\nconst resources = {\n en: {\n translation: en\n }\n};\n\nconst i18n = i18next.createInstance();\n\ni18n\n .init({\n debug: true,\n fallbackLng: 'en',\n lng: 'en',\n interpolation: {\n escapeValue: false,\n },\n resources\n });\n\nexport default i18n;\n","// @flow\n\nimport React, { type ComponentType } from 'react';\nimport {\n Button,\n Header,\n Icon,\n Popup\n} from 'semantic-ui-react';\nimport i18n from '../i18n/i18n';\nimport './ReferenceCodeFormLabel.css';\n\ntype Props = {\n label: string,\n onClick: () => void,\n referenceTable: string\n};\n\nconst ReferenceCodeFormLabel: ComponentType<any> = (props: Props) => (\n <>\n <label\n className='reference-code-form-label'\n htmlFor={props.referenceTable}\n >\n { props.label }\n </label>\n <Popup\n hoverable\n trigger={(\n <Icon\n name='info circle'\n style={{\n marginLeft: '0.3em'\n }}\n />\n )}\n >\n <Header\n content={props.label}\n />\n <p>{ i18n.t('ReferenceCodeFormLabel.content', { name: props.label })}</p>\n <Button\n content={i18n.t('Common.buttons.edit')}\n icon='edit'\n primary\n onClick={props.onClick}\n />\n </Popup>\n </>\n);\n\nexport default ReferenceCodeFormLabel;\n","// @flow\n\nimport { ModalContext } from '@performant-software/semantic-components';\nimport type { EditContainerProps } from '@performant-software/shared-components';\nimport React from 'react';\nimport { Form, Modal } from 'semantic-ui-react';\nimport i18n from '../i18n/i18n';\n\nconst ReferenceCodeModal = (props: EditContainerProps) => (\n <ModalContext.Consumer>\n { (mountNode) => (\n <Modal\n as={Form}\n centered={false}\n mountNode={mountNode}\n open\n >\n <Modal.Header\n content={props.item.id\n ? i18n.t('ReferenceCodeModal.title.edit')\n : i18n.t('ReferenceCodeModal.title.add')}\n />\n <Modal.Content>\n <Form.Input\n autoFocus\n error={props.isError('name')}\n label={i18n.t('ReferenceCodeModal.labels.name')}\n onChange={props.onTextInputChange.bind(this, 'name')}\n required={props.isRequired('name')}\n value={props.item.name}\n />\n </Modal.Content>\n { props.children }\n </Modal>\n )}\n </ModalContext.Consumer>\n);\n\nexport default ReferenceCodeModal;\n","// @flow\n\nimport { EmbeddedList, ModalContext } from '@performant-software/semantic-components';\nimport type { EditContainerProps } from '@performant-software/shared-components';\nimport React from 'react';\nimport { Form, Header, Modal } from 'semantic-ui-react';\nimport i18n from '../i18n/i18n';\nimport ReferenceCodeModal from './ReferenceCodeModal';\n\nconst ReferenceTableModal = (props: EditContainerProps) => (\n <ModalContext.Consumer>\n { (mountNode) => (\n <Modal\n as={Form}\n centered={false}\n className='reference-table-modal'\n mountNode={mountNode}\n open\n >\n <Modal.Header\n content={props.item.id\n ? i18n.t('ReferenceTableModal.title.edit')\n : i18n.t('ReferenceTableModal.title.add')}\n />\n <Modal.Content>\n <Form.Input\n autoFocus\n error={props.isError('name')}\n label={i18n.t('ReferenceTableModal.labels.name')}\n onChange={props.onTextInputChange.bind(this, 'name')}\n required={props.isRequired('name')}\n value={props.item.name}\n />\n <Form.Input\n error={props.isError('key')}\n label={i18n.t('ReferenceTableModal.labels.key')}\n onChange={props.onTextInputChange.bind(this, 'key')}\n required={props.isRequired('key')}\n value={props.item.key}\n />\n <Header\n content={i18n.t('ReferenceTableModal.labels.referenceCodes')}\n />\n <EmbeddedList\n actions={[{\n name: 'edit'\n }, {\n name: 'copy'\n }, {\n name: 'delete'\n }]}\n columns={[{\n name: 'name',\n label: i18n.t('ReferenceTableModal.referenceCodes.columns.name')\n }]}\n items={props.item.reference_codes}\n modal={{\n component: ReferenceCodeModal,\n props: {\n required: ['name']\n }\n }}\n onDelete={props.onDeleteChildAssociation.bind(this, 'reference_codes')}\n onSave={props.onSaveChildAssociation.bind(this, 'reference_codes')}\n />\n </Modal.Content>\n { props.children }\n </Modal>\n )}\n </ModalContext.Consumer>\n);\n\nexport default ReferenceTableModal;\n","// @flow\n\nimport { EditModal } from '@performant-software/semantic-components';\nimport { ReferenceTablesService } from '@performant-software/shared-components';\nimport React, { type ComponentType, useState } from 'react';\nimport { Form } from 'semantic-ui-react';\nimport ReferenceCodeDropdown from './ReferenceCodeDropdown';\nimport ReferenceCodeFormLabel from './ReferenceCodeFormLabel';\nimport ReferenceTableModal from './ReferenceTableModal';\n\ntype Props = {\n error?: boolean,\n label?: string,\n required?: boolean,\n referenceTable: string\n};\n\nconst ReferenceCodeFormDropdown: ComponentType<any> = (props: Props) => {\n const {\n error,\n label,\n required,\n referenceTable,\n ...rest\n } = props;\n\n const [modal, setModal] = useState(false);\n const [dropdownKey, setDropdownKey] = useState(0);\n\n return (\n <>\n <Form.Input\n error={error}\n label={(\n <ReferenceCodeFormLabel\n label={label}\n onClick={() => setModal(true)}\n referenceTable={referenceTable}\n />\n )}\n required={required}\n >\n <ReferenceCodeDropdown\n {...rest}\n id={referenceTable}\n referenceTable={referenceTable}\n key={dropdownKey}\n />\n </Form.Input>\n { modal && (\n <EditModal\n component={ReferenceTableModal}\n item={{ id: referenceTable, key: referenceTable }}\n onClose={() => setModal(false)}\n onInitialize={(key) => (\n ReferenceTablesService\n .fetchByKey(key)\n .then(({ data }) => ({\n ...data.reference_table,\n key\n }))\n )}\n onSave={(record) => (\n ReferenceTablesService\n .save(record)\n .then(({ data }) => data.reference_table)\n .then(() => setDropdownKey((prevKey) => prevKey + 1))\n .finally(() => setModal(false))\n )}\n />\n )}\n </>\n );\n};\n\nexport default ReferenceCodeFormDropdown;\n","// @flow\n\nimport { ListTable } from '@performant-software/semantic-components';\nimport { ReferenceTablesService } from '@performant-software/shared-components';\nimport React from 'react';\nimport ReferenceTableModal from './ReferenceTableModal';\n\nconst ReferenceTablesList = () => (\n <ListTable\n actions={[{\n name: 'edit'\n }, {\n name: 'copy'\n }, {\n name: 'delete'\n }]}\n collectionName='reference_tables'\n columns={[{\n name: 'name',\n label: 'Name',\n sortable: true\n }, {\n name: 'key',\n label: 'Key',\n sortable: true\n }]}\n modal={{\n component: ReferenceTableModal,\n props: {\n onInitialize: (id) => (\n ReferenceTablesService\n .fetchOne(id)\n .then(({ data }) => data.reference_table)\n ),\n required: ['name', 'key']\n }\n }}\n onDelete={(referenceTable) => ReferenceTablesService.delete(referenceTable)}\n onLoad={(params) => ReferenceTablesService.fetchAll(params)}\n onSave={(referenceTable) => ReferenceTablesService.save(referenceTable)}\n />\n);\n\nexport default ReferenceTablesList;\n","// @flow\n\nimport { BaseService } from '@performant-software/shared-components';\n\n/**\n * Class responsible for handling all reference code API requests.\n */\nclass ReferenceCodes extends BaseService {\n /**\n * Returns the reference codes base URL.\n *\n * @returns {string}\n */\n getBaseUrl() {\n return '/controlled_vocabulary/reference_codes';\n }\n\n /**\n * Returns the reference codes transform object.\n *\n * @returns {{}}\n */\n getTransform() {\n return { }; // PUT/POST routes not implemented\n }\n}\n\nexport default new ReferenceCodes();\n","// @flow\n\nimport { NestedAttributesTransform } from '@performant-software/shared-components';\n\n/**\n * Class for transforming reference codes nested objects for PUT/POST requests.\n */\nclass ReferenceCodes extends NestedAttributesTransform {\n /**\n * Returns the reference codes payload keys.\n *\n * @returns {string[]}\n */\n getPayloadKeys(): Array<string> {\n return [\n 'id',\n 'name',\n '_destroy'\n ];\n }\n\n /**\n * Calls the super method with a default value for the collection name.\n *\n * @param record\n * @param collection\n *\n * @returns {{[p: string]: *}}\n */\n toPayload(record: any, collection: string = 'reference_codes') {\n return super.toPayload(record, collection);\n }\n}\n\nexport default new ReferenceCodes();\n","// @flow\n\nimport { BaseTransform } from '@performant-software/shared-components';\nimport ReferenceCodes from './ReferenceCodes';\n\ntype ReferenceTableType = {\n id: number,\n name: string,\n key: string\n};\n\n/**\n * Class for transforming reference table objects for PUT/POST requests.\n */\nclass ReferenceTable extends BaseTransform {\n /**\n * Returns the reference table parameter name.\n *\n * @returns {string}\n */\n getParameterName() {\n return 'reference_table';\n }\n\n /**\n * Returns the reference table payload keys.\n *\n * @returns {string[]}\n */\n getPayloadKeys() {\n return [\n 'name',\n 'key'\n ];\n }\n\n /**\n * Converts the passed reference table object to JSON for PUT/POST requests.\n *\n * @param referenceTable\n * @param attributes\n *\n * @returns {*}\n */\n toPayload(referenceTable: ReferenceTableType, attributes: any = {}) {\n return super.toPayload(referenceTable, {\n ...attributes,\n ...ReferenceCodes.toPayload(referenceTable)\n });\n }\n}\n\nexport default new ReferenceTable();\n","// @flow\n\nimport { BaseService } from '@performant-software/shared-components';\nimport ReferenceTable from '../transforms/ReferenceTable';\n\n/**\n * Class responsible for handling all reference table API requests.\n */\nclass ReferenceTables extends BaseService {\n /**\n * Calls the find_by_key API end point for reference tables.\n *\n * @param key\n *\n * @returns {Promise<AxiosResponse<any>>}\n */\n fetchByKey(key) {\n return this.getAxios().get(`${this.getBaseUrl()}/find_by_key`, { params: { key } });\n }\n\n /**\n * Returns the reference tables base URL.\n *\n * @returns {string}\n */\n getBaseUrl() {\n return '/controlled_vocabulary/reference_tables';\n }\n\n /**\n * Returns the reference table transform object.\n *\n * @returns {ReferenceTable}\n */\n getTransform() {\n return ReferenceTable;\n }\n}\n\nexport default new ReferenceTables();\n","// @flow\n\nimport { NestedAttributesTransform } from '@performant-software/shared-components';\n\n/**\n * Class for transforming references nested objects for PUT/POST requests.\n */\nclass References extends NestedAttributesTransform {\n /**\n * Returns the references payload keys.\n *\n * @returns {string[]}\n */\n getPayloadKeys(): Array<string> {\n return [\n 'id',\n 'reference_code_id',\n '_destroy'\n ];\n }\n}\n\nconst ReferencesTransform: References = new References();\nexport default ReferencesTransform;\n","// @flow\n\nimport _ from 'underscore';\n\nconst LIST_DELIMITER = ', ';\n\n/**\n * Returns the view value for the passed array of references.\n *\n * @param references\n *\n * @returns {*}\n */\nconst getViewValue = (references) => _.map(\n _.filter(references, (reference) => !reference._destroy),\n (reference) => reference.reference_code?.name\n).join(LIST_DELIMITER);\n\nexport default {\n getViewValue\n};\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","require","ReferenceCodeDropdown","props","useState","loading","setLoading","options","setOptions","useMemo","v","_","x","_destroy","multiple","toItem","useCallback","id","reference_code_id","reference_code","name","text","toOption","referenceCode","onChange","e","data","referenceCodeIds","items","referenceCodeId","newValue","push","useEffect","params","per_page","reference_table","referenceTable","sort_by","ReferenceCodesService","then","reference_codes","finally","Dropdown","clearable","disabled","fluid","placeholder","search","selection","selectOnBlur","defaultProps","undefined","resources","en","translation","i18n","i18next","init","debug","fallbackLng","lng","interpolation","escapeValue","className","htmlFor","label","Popup","hoverable","trigger","Icon","style","marginLeft","Header","content","Button","icon","primary","onClick","ModalContext","mountNode","Modal","as","Form","centered","open","item","autoFocus","error","isError","onTextInputChange","bind","required","isRequired","children","EmbeddedList","actions","columns","modal","component","ReferenceCodeModal","onDelete","onDeleteChildAssociation","onSave","onSaveChildAssociation","rest","setModal","dropdownKey","setDropdownKey","EditModal","ReferenceTableModal","onClose","onInitialize","ReferenceTablesService","record","prevKey","ListTable","collectionName","sortable","onLoad","ReferenceCodes","BaseService","collection","NestedAttributesTransform","ReferenceTable","attributes","BaseTransform","ReferenceTables","this","getAxios","getBaseUrl","References","getViewValue","references","reference","join"],"sourceRoot":""}
|
package/build/main.css
ADDED
package/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./build/index');
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@performant-software/controlled-vocabulary",
|
|
3
|
+
"version": "0.6.2-beta.3",
|
|
4
|
+
"description": "A package of components to allow user to configure dropdown elements. Use with the \"controlled_vocabulary\" gem.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "./build/index.js",
|
|
7
|
+
"style": [
|
|
8
|
+
"./build/main.css",
|
|
9
|
+
"./build/semantic-ui.css"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "webpack --mode production && flow-copy-source -v src types"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@performant-software/semantic-components": "^0.6.2-beta.3",
|
|
16
|
+
"@performant-software/shared-components": "^0.6.2-beta.3",
|
|
17
|
+
"i18next": "^21.9.2",
|
|
18
|
+
"semantic-ui-react": "^2.1.2",
|
|
19
|
+
"underscore": "^1.13.2"
|
|
20
|
+
},
|
|
21
|
+
"peerDependencies": {
|
|
22
|
+
"react": ">= 16.13.1 < 18.0.0",
|
|
23
|
+
"react-dom": ">= 16.13.1 < 18.0.0"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@performant-software/webpack-config": "^1.0.0",
|
|
27
|
+
"react": "^17.0.2",
|
|
28
|
+
"react-dom": "^17.0.2"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { ReferenceCodesService } from '@performant-software/shared-components';
|
|
4
|
+
import React, {
|
|
5
|
+
useCallback,
|
|
6
|
+
useEffect,
|
|
7
|
+
useMemo,
|
|
8
|
+
useState
|
|
9
|
+
} from 'react';
|
|
10
|
+
import { Dropdown } from 'semantic-ui-react';
|
|
11
|
+
import _ from 'underscore';
|
|
12
|
+
|
|
13
|
+
type Item = {
|
|
14
|
+
reference_table_id: number,
|
|
15
|
+
key: string
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
type Props = {
|
|
19
|
+
fluid?: boolean,
|
|
20
|
+
multiple?: boolean,
|
|
21
|
+
onChange: (item: Item) => void,
|
|
22
|
+
placeholder?: string,
|
|
23
|
+
referenceTable: string,
|
|
24
|
+
value: Item | Array<Item>
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const ReferenceCodeDropdown = (props: Props) => {
|
|
28
|
+
const [loading, setLoading] = useState(false);
|
|
29
|
+
const [options, setOptions] = useState([]);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Sets the "value" variable for the Dropdown component.
|
|
33
|
+
*/
|
|
34
|
+
const value = useMemo(() => {
|
|
35
|
+
const v = _.pluck(_.filter(props.value, (x) => !x._destroy), 'reference_code_id');
|
|
36
|
+
return props.multiple ? v : _.first(v);
|
|
37
|
+
}, [props.multiple, props.value]);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Converts the passed ID to a reference code item.
|
|
41
|
+
*
|
|
42
|
+
* @type {function(*): {reference_code_id: *}}
|
|
43
|
+
*/
|
|
44
|
+
const toItem = useCallback((id) => {
|
|
45
|
+
const option = _.findWhere(options, { key: id });
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
reference_code_id: id,
|
|
49
|
+
reference_code: {
|
|
50
|
+
id,
|
|
51
|
+
name: option.text
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}, [options]);
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Converts the passed reference code to a dropdown option.
|
|
58
|
+
*
|
|
59
|
+
* @type {function(*): {text: *, value: *, key: *}}
|
|
60
|
+
*/
|
|
61
|
+
const toOption = useCallback((referenceCode) => ({
|
|
62
|
+
key: referenceCode.id,
|
|
63
|
+
value: referenceCode.id,
|
|
64
|
+
text: referenceCode.name
|
|
65
|
+
}), []);
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Converts the selected values and calls the onChange prop.
|
|
69
|
+
*
|
|
70
|
+
* @type {(function(*, {value: *}): void)|*}
|
|
71
|
+
*/
|
|
72
|
+
const onChange = useCallback((e, data) => {
|
|
73
|
+
let referenceCodeIds;
|
|
74
|
+
|
|
75
|
+
if (props.multiple) {
|
|
76
|
+
referenceCodeIds = data.value;
|
|
77
|
+
} else {
|
|
78
|
+
referenceCodeIds = _.compact([data.value]);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const items = [];
|
|
82
|
+
|
|
83
|
+
// Find existing records or create new records
|
|
84
|
+
_.each(referenceCodeIds, (referenceCodeId) => {
|
|
85
|
+
let newValue = _.findWhere(props.value, { reference_code_id: referenceCodeId });
|
|
86
|
+
|
|
87
|
+
if (!newValue) {
|
|
88
|
+
newValue = toItem(referenceCodeId);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
items.push(_.omit(newValue, '_destroy'));
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Mark records for delete
|
|
95
|
+
_.each(props.value, (v) => {
|
|
96
|
+
if (v.id && !_.contains(referenceCodeIds, v.reference_code_id)) {
|
|
97
|
+
items.push({ ...v, _destroy: true });
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
props.onChange(items);
|
|
102
|
+
}, [toItem, props.multiple, props.onChange, props.value]);
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Loads the list of reference codes from the server.
|
|
106
|
+
*/
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
setLoading(true);
|
|
109
|
+
|
|
110
|
+
const params = {
|
|
111
|
+
per_page: 0,
|
|
112
|
+
reference_table: props.referenceTable,
|
|
113
|
+
sort_by: 'name'
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
ReferenceCodesService
|
|
117
|
+
.fetchAll(params)
|
|
118
|
+
.then(({ data }) => setOptions(_.map(data.reference_codes, toOption)))
|
|
119
|
+
.finally(() => setLoading(false));
|
|
120
|
+
}, [toOption]);
|
|
121
|
+
|
|
122
|
+
return (
|
|
123
|
+
<Dropdown
|
|
124
|
+
clearable
|
|
125
|
+
disabled={loading}
|
|
126
|
+
fluid={props.fluid}
|
|
127
|
+
loading={loading}
|
|
128
|
+
multiple={props.multiple}
|
|
129
|
+
onChange={onChange}
|
|
130
|
+
options={options}
|
|
131
|
+
placeholder={props.placeholder}
|
|
132
|
+
search
|
|
133
|
+
selection
|
|
134
|
+
selectOnBlur={false}
|
|
135
|
+
value={value}
|
|
136
|
+
/>
|
|
137
|
+
);
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
ReferenceCodeDropdown.defaultProps = {
|
|
141
|
+
fluid: true,
|
|
142
|
+
multiple: false,
|
|
143
|
+
placeholder: undefined
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
export default ReferenceCodeDropdown;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { EditModal } from '@performant-software/semantic-components';
|
|
4
|
+
import { ReferenceTablesService } from '@performant-software/shared-components';
|
|
5
|
+
import React, { type ComponentType, useState } from 'react';
|
|
6
|
+
import { Form } from 'semantic-ui-react';
|
|
7
|
+
import ReferenceCodeDropdown from './ReferenceCodeDropdown';
|
|
8
|
+
import ReferenceCodeFormLabel from './ReferenceCodeFormLabel';
|
|
9
|
+
import ReferenceTableModal from './ReferenceTableModal';
|
|
10
|
+
|
|
11
|
+
type Props = {
|
|
12
|
+
error?: boolean,
|
|
13
|
+
label?: string,
|
|
14
|
+
required?: boolean,
|
|
15
|
+
referenceTable: string
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const ReferenceCodeFormDropdown: ComponentType<any> = (props: Props) => {
|
|
19
|
+
const {
|
|
20
|
+
error,
|
|
21
|
+
label,
|
|
22
|
+
required,
|
|
23
|
+
referenceTable,
|
|
24
|
+
...rest
|
|
25
|
+
} = props;
|
|
26
|
+
|
|
27
|
+
const [modal, setModal] = useState(false);
|
|
28
|
+
const [dropdownKey, setDropdownKey] = useState(0);
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<>
|
|
32
|
+
<Form.Input
|
|
33
|
+
error={error}
|
|
34
|
+
label={(
|
|
35
|
+
<ReferenceCodeFormLabel
|
|
36
|
+
label={label}
|
|
37
|
+
onClick={() => setModal(true)}
|
|
38
|
+
referenceTable={referenceTable}
|
|
39
|
+
/>
|
|
40
|
+
)}
|
|
41
|
+
required={required}
|
|
42
|
+
>
|
|
43
|
+
<ReferenceCodeDropdown
|
|
44
|
+
{...rest}
|
|
45
|
+
id={referenceTable}
|
|
46
|
+
referenceTable={referenceTable}
|
|
47
|
+
key={dropdownKey}
|
|
48
|
+
/>
|
|
49
|
+
</Form.Input>
|
|
50
|
+
{ modal && (
|
|
51
|
+
<EditModal
|
|
52
|
+
component={ReferenceTableModal}
|
|
53
|
+
item={{ id: referenceTable, key: referenceTable }}
|
|
54
|
+
onClose={() => setModal(false)}
|
|
55
|
+
onInitialize={(key) => (
|
|
56
|
+
ReferenceTablesService
|
|
57
|
+
.fetchByKey(key)
|
|
58
|
+
.then(({ data }) => ({
|
|
59
|
+
...data.reference_table,
|
|
60
|
+
key
|
|
61
|
+
}))
|
|
62
|
+
)}
|
|
63
|
+
onSave={(record) => (
|
|
64
|
+
ReferenceTablesService
|
|
65
|
+
.save(record)
|
|
66
|
+
.then(({ data }) => data.reference_table)
|
|
67
|
+
.then(() => setDropdownKey((prevKey) => prevKey + 1))
|
|
68
|
+
.finally(() => setModal(false))
|
|
69
|
+
)}
|
|
70
|
+
/>
|
|
71
|
+
)}
|
|
72
|
+
</>
|
|
73
|
+
);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export default ReferenceCodeFormDropdown;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import React, { type ComponentType } from 'react';
|
|
4
|
+
import {
|
|
5
|
+
Button,
|
|
6
|
+
Header,
|
|
7
|
+
Icon,
|
|
8
|
+
Popup
|
|
9
|
+
} from 'semantic-ui-react';
|
|
10
|
+
import i18n from '../i18n/i18n';
|
|
11
|
+
import './ReferenceCodeFormLabel.css';
|
|
12
|
+
|
|
13
|
+
type Props = {
|
|
14
|
+
label: string,
|
|
15
|
+
onClick: () => void,
|
|
16
|
+
referenceTable: string
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const ReferenceCodeFormLabel: ComponentType<any> = (props: Props) => (
|
|
20
|
+
<>
|
|
21
|
+
<label
|
|
22
|
+
className='reference-code-form-label'
|
|
23
|
+
htmlFor={props.referenceTable}
|
|
24
|
+
>
|
|
25
|
+
{ props.label }
|
|
26
|
+
</label>
|
|
27
|
+
<Popup
|
|
28
|
+
hoverable
|
|
29
|
+
trigger={(
|
|
30
|
+
<Icon
|
|
31
|
+
name='info circle'
|
|
32
|
+
style={{
|
|
33
|
+
marginLeft: '0.3em'
|
|
34
|
+
}}
|
|
35
|
+
/>
|
|
36
|
+
)}
|
|
37
|
+
>
|
|
38
|
+
<Header
|
|
39
|
+
content={props.label}
|
|
40
|
+
/>
|
|
41
|
+
<p>{ i18n.t('ReferenceCodeFormLabel.content', { name: props.label })}</p>
|
|
42
|
+
<Button
|
|
43
|
+
content={i18n.t('Common.buttons.edit')}
|
|
44
|
+
icon='edit'
|
|
45
|
+
primary
|
|
46
|
+
onClick={props.onClick}
|
|
47
|
+
/>
|
|
48
|
+
</Popup>
|
|
49
|
+
</>
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
export default ReferenceCodeFormLabel;
|
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { ModalContext } from '@performant-software/semantic-components';
|
|
4
|
+
import type { EditContainerProps } from '@performant-software/shared-components';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { Form, Modal } from 'semantic-ui-react';
|
|
7
|
+
import i18n from '../i18n/i18n';
|
|
8
|
+
|
|
9
|
+
const ReferenceCodeModal = (props: EditContainerProps) => (
|
|
10
|
+
<ModalContext.Consumer>
|
|
11
|
+
{ (mountNode) => (
|
|
12
|
+
<Modal
|
|
13
|
+
as={Form}
|
|
14
|
+
centered={false}
|
|
15
|
+
mountNode={mountNode}
|
|
16
|
+
open
|
|
17
|
+
>
|
|
18
|
+
<Modal.Header
|
|
19
|
+
content={props.item.id
|
|
20
|
+
? i18n.t('ReferenceCodeModal.title.edit')
|
|
21
|
+
: i18n.t('ReferenceCodeModal.title.add')}
|
|
22
|
+
/>
|
|
23
|
+
<Modal.Content>
|
|
24
|
+
<Form.Input
|
|
25
|
+
autoFocus
|
|
26
|
+
error={props.isError('name')}
|
|
27
|
+
label={i18n.t('ReferenceCodeModal.labels.name')}
|
|
28
|
+
onChange={props.onTextInputChange.bind(this, 'name')}
|
|
29
|
+
required={props.isRequired('name')}
|
|
30
|
+
value={props.item.name}
|
|
31
|
+
/>
|
|
32
|
+
</Modal.Content>
|
|
33
|
+
{ props.children }
|
|
34
|
+
</Modal>
|
|
35
|
+
)}
|
|
36
|
+
</ModalContext.Consumer>
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
export default ReferenceCodeModal;
|
|
File without changes
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { EmbeddedList, ModalContext } from '@performant-software/semantic-components';
|
|
4
|
+
import type { EditContainerProps } from '@performant-software/shared-components';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { Form, Header, Modal } from 'semantic-ui-react';
|
|
7
|
+
import i18n from '../i18n/i18n';
|
|
8
|
+
import ReferenceCodeModal from './ReferenceCodeModal';
|
|
9
|
+
|
|
10
|
+
const ReferenceTableModal = (props: EditContainerProps) => (
|
|
11
|
+
<ModalContext.Consumer>
|
|
12
|
+
{ (mountNode) => (
|
|
13
|
+
<Modal
|
|
14
|
+
as={Form}
|
|
15
|
+
centered={false}
|
|
16
|
+
className='reference-table-modal'
|
|
17
|
+
mountNode={mountNode}
|
|
18
|
+
open
|
|
19
|
+
>
|
|
20
|
+
<Modal.Header
|
|
21
|
+
content={props.item.id
|
|
22
|
+
? i18n.t('ReferenceTableModal.title.edit')
|
|
23
|
+
: i18n.t('ReferenceTableModal.title.add')}
|
|
24
|
+
/>
|
|
25
|
+
<Modal.Content>
|
|
26
|
+
<Form.Input
|
|
27
|
+
autoFocus
|
|
28
|
+
error={props.isError('name')}
|
|
29
|
+
label={i18n.t('ReferenceTableModal.labels.name')}
|
|
30
|
+
onChange={props.onTextInputChange.bind(this, 'name')}
|
|
31
|
+
required={props.isRequired('name')}
|
|
32
|
+
value={props.item.name}
|
|
33
|
+
/>
|
|
34
|
+
<Form.Input
|
|
35
|
+
error={props.isError('key')}
|
|
36
|
+
label={i18n.t('ReferenceTableModal.labels.key')}
|
|
37
|
+
onChange={props.onTextInputChange.bind(this, 'key')}
|
|
38
|
+
required={props.isRequired('key')}
|
|
39
|
+
value={props.item.key}
|
|
40
|
+
/>
|
|
41
|
+
<Header
|
|
42
|
+
content={i18n.t('ReferenceTableModal.labels.referenceCodes')}
|
|
43
|
+
/>
|
|
44
|
+
<EmbeddedList
|
|
45
|
+
actions={[{
|
|
46
|
+
name: 'edit'
|
|
47
|
+
}, {
|
|
48
|
+
name: 'copy'
|
|
49
|
+
}, {
|
|
50
|
+
name: 'delete'
|
|
51
|
+
}]}
|
|
52
|
+
columns={[{
|
|
53
|
+
name: 'name',
|
|
54
|
+
label: i18n.t('ReferenceTableModal.referenceCodes.columns.name')
|
|
55
|
+
}]}
|
|
56
|
+
items={props.item.reference_codes}
|
|
57
|
+
modal={{
|
|
58
|
+
component: ReferenceCodeModal,
|
|
59
|
+
props: {
|
|
60
|
+
required: ['name']
|
|
61
|
+
}
|
|
62
|
+
}}
|
|
63
|
+
onDelete={props.onDeleteChildAssociation.bind(this, 'reference_codes')}
|
|
64
|
+
onSave={props.onSaveChildAssociation.bind(this, 'reference_codes')}
|
|
65
|
+
/>
|
|
66
|
+
</Modal.Content>
|
|
67
|
+
{ props.children }
|
|
68
|
+
</Modal>
|
|
69
|
+
)}
|
|
70
|
+
</ModalContext.Consumer>
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
export default ReferenceTableModal;
|
|
File without changes
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { ListTable } from '@performant-software/semantic-components';
|
|
4
|
+
import { ReferenceTablesService } from '@performant-software/shared-components';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import ReferenceTableModal from './ReferenceTableModal';
|
|
7
|
+
|
|
8
|
+
const ReferenceTablesList = () => (
|
|
9
|
+
<ListTable
|
|
10
|
+
actions={[{
|
|
11
|
+
name: 'edit'
|
|
12
|
+
}, {
|
|
13
|
+
name: 'copy'
|
|
14
|
+
}, {
|
|
15
|
+
name: 'delete'
|
|
16
|
+
}]}
|
|
17
|
+
collectionName='reference_tables'
|
|
18
|
+
columns={[{
|
|
19
|
+
name: 'name',
|
|
20
|
+
label: 'Name',
|
|
21
|
+
sortable: true
|
|
22
|
+
}, {
|
|
23
|
+
name: 'key',
|
|
24
|
+
label: 'Key',
|
|
25
|
+
sortable: true
|
|
26
|
+
}]}
|
|
27
|
+
modal={{
|
|
28
|
+
component: ReferenceTableModal,
|
|
29
|
+
props: {
|
|
30
|
+
onInitialize: (id) => (
|
|
31
|
+
ReferenceTablesService
|
|
32
|
+
.fetchOne(id)
|
|
33
|
+
.then(({ data }) => data.reference_table)
|
|
34
|
+
),
|
|
35
|
+
required: ['name', 'key']
|
|
36
|
+
}
|
|
37
|
+
}}
|
|
38
|
+
onDelete={(referenceTable) => ReferenceTablesService.delete(referenceTable)}
|
|
39
|
+
onLoad={(params) => ReferenceTablesService.fetchAll(params)}
|
|
40
|
+
onSave={(referenceTable) => ReferenceTablesService.save(referenceTable)}
|
|
41
|
+
/>
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
export default ReferenceTablesList;
|