@performant-software/user-defined-fields 1.0.20 → 1.0.21

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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- #UserDefinedFields
1
+ # UserDefinedFields
2
2
  This package is designed to be used with the [user_defined_fields](https://github.com/performant-software/user-defined-fields) Rails gem. The idea is to allow users to define what type of metadata they want to collection about specific models and use these components to add, remove, and modify the configuration of the fields.
3
3
 
4
4
  ## Installation
package/build/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(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:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r: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,{FieldableTransform:()=>ae,UserDefinedFieldModal:()=>M,UserDefinedFieldOptions:()=>v,UserDefinedFieldTransform:()=>D,UserDefinedFields:()=>K,UserDefinedFieldsEmbeddedList:()=>J,UserDefinedFieldsForm:()=>Z,UserDefinedFieldsList:()=>ne,UserDefinedFieldsService:()=>U,UserDefinedFieldsTransform:()=>be});const r=require("react");var n=e.n(r);const o=require("semantic-ui-react"),a=require("underscore");var i=e.n(a);const l=require("i18next");var u=e.n(l),c={en:{translation:JSON.parse('{"UserDefinedFieldModal":{"labels":{"allowMultiple":"Allow multiple","dataType":"Data type","name":"Name","order":"Order","required":"Required","searchable":"Searchable","table":"Table"},"title":{"add":"Add User Defined Field","edit":"Edit User Defined Field"}},"UserDefinedFields":{"errors":{"numeric":"{{name}} must be numeric"}},"UserDefinedFieldsEmbeddedList":{"columns":{"dataType":"Data type","name":"Name","order":"Order","required":"Required","table":"Table"}},"UserDefinedFieldsList":{"columns":{"dataType":"Data type","name":"Name","order":"Order","required":"Required","table":"Table"}}}')}},f=u().createInstance();f.init({debug:!0,fallbackLng:"en",lng:"en",interpolation:{escapeValue:!1},resources:c});const d=f;var s=void 0;function p(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 b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){y(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function m(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}function h(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}const v=function(e){var t,a,l=(t=(0,r.useState)(i().map(e.options,(function(e){return{value:e}}))),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw o}}return a}}(t,a)||m(t,a)||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.")}()),u=l[0],c=l[1],f=(0,r.useCallback)((function(){c((function(e){return[].concat(function(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||m(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(e),[{new:!0}])}))}),[]),d=(0,r.useCallback)((function(e){c((function(t){return i().filter(t,(function(t,r){return r!==e}))}))}),[]),p=(0,r.useCallback)((function(e){c((function(t){return i().map(t,(function(t,r){return e!==r?t:b(b({},t),{},{new:!1})}))}))}),[u]),y=(0,r.useCallback)((function(e,t,r){var n=r.value;c((function(t){return i().map(t,(function(t,r){return r!==e?t:b(b({},t),{},{value:n})}))}))}),[]);return(0,r.useEffect)((function(){var t=i().filter(u,(function(e){return!e.new}));e.onChange(i().pluck(t,"value"))}),[u]),n().createElement("div",{className:"user-defined-field-options"},n().createElement(o.Button,{basic:!0,icon:"plus",onClick:f,type:"button"}),i().map(u,(function(e,t){return n().createElement(n().Fragment,null,e.new&&n().createElement(o.Label,null,n().createElement(o.Input,{autoFocus:!0,onChange:y.bind(s,t),value:e.value}),n().createElement(o.Button,{basic:!0,color:"green",icon:"checkmark",onClick:p.bind(s,t),type:"button",size:"tiny"})),!e.new&&n().createElement(o.Label,{content:e.value,onRemove:d.bind(s,t)}))})))},O=require("@performant-software/shared-components");function g(e){return g="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},g(e)}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function w(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 j(e,t){return j=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},j(e,t)}function E(e,t){if(t&&("object"===g(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 P(e){return P=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},P(e)}const D=new(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&&j(e,t)}(i,e);var t,r,n,o,a=(n=i,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=P(n);if(o){var r=P(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return E(this,e)});function i(){return _(this,i),a.apply(this,arguments)}return t=i,(r=[{key:"getPayloadKeys",value:function(){return["table_name","column_name","data_type","required","searchable","allow_multiple","options","order"]}},{key:"getParameterName",value:function(){return"user_defined_field"}}])&&w(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),i}(O.BaseTransform));function S(e){return S="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},S(e)}function F(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function C(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 k(e,t){return k=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},k(e,t)}function T(e,t){if(t&&("object"===S(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 q(e){return q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},q(e)}const U=new(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&&k(e,t)}(i,e);var t,r,n,o,a=(n=i,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=q(n);if(o){var r=q(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return T(this,e)});function i(){return F(this,i),a.apply(this,arguments)}return t=i,(r=[{key:"fetchDataTypes",value:function(){return this.getAxios().get("/user_defined_fields/data_types")}},{key:"fetchTables",value:function(){return this.getAxios().get("/user_defined_fields/tables")}},{key:"getBaseUrl",value:function(){return"/user_defined_fields/user_defined_fields"}},{key:"getTransform",value:function(){return D}}])&&C(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),i}(O.BaseService));var x=void 0;function A(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,a=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return I(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)?I(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 I(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 R="Select";const M=function(e){var t=A((0,r.useState)([]),2),a=t[0],l=t[1],u=A((0,r.useState)([]),2),c=u[0],f=u[1],s=(0,r.useCallback)((function(e){return i().map(e,(function(e){return{key:e,value:e,text:e}}))}),[]);return(0,r.useEffect)((function(){e.hideTable||U.fetchTables().then((function(e){var t=e.data;return f(s(t.tables))})),U.fetchDataTypes().then((function(e){var t=e.data;return l(s(t.data_types))}))}),[]),n().createElement(o.Modal,{as:o.Form,centered:!1,open:!0},n().createElement(o.Modal.Header,{content:e.item.id?d.t("UserDefinedFieldModal.title.edit"):d.t("UserDefinedFieldModal.title.add")}),n().createElement(o.Modal.Content,null,!e.hideTable&&n().createElement(o.Form.Dropdown,{clearable:!0,error:e.isError("table_name"),label:d.t("UserDefinedFieldModal.labels.table"),onChange:e.onTextInputChange.bind(x,"table_name"),options:c,required:e.isRequired("table_name"),selection:!0,selectOnBlur:!1,value:e.item.table_name||""}),n().createElement(o.Form.Input,{error:e.isError("column_name"),label:d.t("UserDefinedFieldModal.labels.name"),onChange:e.onTextInputChange.bind(x,"column_name"),required:e.isRequired("column_name"),value:e.item.column_name||""}),n().createElement(o.Form.Dropdown,{clearable:!0,error:e.isError("data_type"),label:d.t("UserDefinedFieldModal.labels.dataType"),onChange:e.onTextInputChange.bind(x,"data_type"),options:a,required:e.isRequired("data_type"),selection:!0,selectOnBlur:!1,value:e.item.data_type||""}),n().createElement(o.Form.Input,{error:e.isError("order"),label:d.t("UserDefinedFieldModal.labels.order"),onChange:e.onTextInputChange.bind(x,"order"),required:e.isRequired("oder"),value:e.item.order||0,type:"number"}),n().createElement(o.Form.Group,null,n().createElement(o.Form.Checkbox,{error:e.isError("required"),checked:e.item.required,label:d.t("UserDefinedFieldModal.labels.required"),onChange:e.onCheckboxInputChange.bind(x,"required")}),n().createElement(o.Form.Checkbox,{error:e.isError("searchable"),checked:e.item.searchable,label:d.t("UserDefinedFieldModal.labels.searchable"),onChange:e.onCheckboxInputChange.bind(x,"searchable")}),e.item.data_type===R&&n().createElement(o.Form.Checkbox,{error:e.isError("allow_multiple"),checked:e.item.allow_multiple,label:d.t("UserDefinedFieldModal.labels.allowMultiple"),onChange:e.onCheckboxInputChange.bind(x,"allow_multiple")})),e.item.data_type===R&&n().createElement(v,{options:e.item.options,onChange:function(t){return e.onSetState({options:t})}})),e.children)},L=require("@performant-software/semantic-components");function B(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function N(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,a=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return V(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)?V(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 V(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 $="user_defined";const K={resolveError:function(e){var t=e.key,r=e.error,n={};if(t&&t.startsWith($)&&i().contains(t,".")){var o=N(t.split("."),2)[1];i().extend(n,B({},"".concat($,"[").concat(o,"]"),"".concat(o," ").concat(r)))}if(t===$&&!i().isEmpty(r)){var a=N(r,2),l=a[0],u=a[1];i().extend(n,B({},"".concat($,"[").concat(l,"]"),u))}return n},validateUserDefinedField:function(e){var t={};return e.order||i().extend(t,{order:d.t("UserDefinedFields.errors.numeric",{name:"order"})}),t}};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 G(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){H(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 H(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const J=function(e){var t=(0,r.useCallback)((function(t){return i().contains(e.excludeColumns,t)}),[e.excludeColumns]);return n().createElement(L.EmbeddedList,{actions:[{name:"edit"},{name:"delete"}],columns:[{name:"table_name",label:d.t("UserDefinedFieldsEmbeddedList.columns.table"),hidden:t("table_name")},{name:"column_name",label:d.t("UserDefinedFieldsEmbeddedList.columns.name"),hidden:t("column_name")},{name:"data_type",label:d.t("UserDefinedFieldsEmbeddedList.columns.dataType"),hidden:t("data_type")},{name:"required",label:d.t("UserDefinedFieldsEmbeddedList.columns.required"),render:function(e){return n().createElement(L.BooleanIcon,{value:e.required})},hidden:t("required")},{name:"order",label:d.t("UserDefinedFieldsEmbeddedList.columns.order"),hidden:t("order")}],items:e.items,modal:{component:M,props:{defaults:G({order:0},e.defaults||{}),hideTable:t("table_name"),validate:K.validateUserDefinedField.bind(void 0)}},onDelete:e.onDelete,onSave:e.onSave})};function W(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 Q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?W(Object(r),!0).forEach((function(t){X(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):W(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function X(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Y(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}const Z=function(e){var t,a,l=(t=(0,r.useState)([]),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw o}}return a}}(t,a)||function(e,t){if(e){if("string"==typeof e)return Y(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)?Y(e,t):void 0}}(t,a)||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.")}()),u=l[0],c=l[1],f=(0,r.useCallback)((function(e){return"user_defined[".concat(e.column_name,"]")}),[]),d=(0,r.useCallback)((function(t){return e.isError(f(t))}),[f,e.isError]),s=(0,r.useCallback)((function(t,r){e.onChange(Q(Q({},e.data),{},X({},t.column_name,r))),e.onClearValidationError&&e.onClearValidationError(f(t))}),[f,e.data,e.onChange,e.onClearValidationError]),p=(0,r.useCallback)((function(t){var r,a=e.data&&e.data[t.column_name];return"String"===t.data_type&&(r=n().createElement(o.Form.Input,{error:d(t),label:t.column_name,required:t.required,onChange:function(e,r){var n=r.value;return s(t,n)},value:a})),"Number"===t.data_type&&(r=n().createElement(o.Form.Input,{error:d(t),label:t.column_name,required:t.required,onChange:function(e,r){var n=r.value;return s(t,n)},value:a,type:"number"})),"Select"===t.data_type&&(r=n().createElement(o.Form.Dropdown,{clearable:!0,error:d(t),label:t.column_name,multiple:t.allow_multiple,required:t.required,options:i().map(t.options,(function(e){return{key:e,value:e,text:e}})),onChange:function(e,r){var n=r.value;return s(t,n)},selectOnBlur:!1,selection:!0,value:a})),"Text"===t.data_type&&(r=n().createElement(o.Form.TextArea,{error:d(t),label:t.column_name,required:t.required,onChange:function(e,r){var n=r.value;return s(t,n)},value:a})),"Date"===t.data_type&&(r=n().createElement(o.Form.Input,{error:d(t),label:t.column_name,required:t.required},n().createElement(L.DatePicker,{onChange:function(e){return s(t,e&&e.toISOString())},value:a&&new Date(a)}))),"Boolean"===t.data_type&&(r=n().createElement(o.Form.Checkbox,{checked:!!a,error:d(t),label:t.column_name,onChange:function(e,r){var n=r.checked;return s(t,n)}})),"RichText"===t.data_type&&(r=n().createElement(o.Form.Input,{error:d(t),label:t.column_name,required:t.required},n().createElement(O.RichTextArea,{onChange:function(e){return s(t,e)},value:a}))),r}),[e.data,d,s]);return(0,r.useEffect)((function(){var t={defineable_id:e.defineableId,defineable_type:e.defineableType,per_page:0,sort_by:"order",table_name:e.tableName};U.fetchAll(t).then((function(e){var t=e.data;return c(t.user_defined_fields)}))}),[]),n().createElement(n().Fragment,null,i().map(u,p.bind(void 0)))};function ee(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 te(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ee(Object(r),!0).forEach((function(t){re(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ee(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function re(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const ne=function(e){var t=(0,r.useCallback)((function(t){return i().contains(e.excludeColumns,t)}),[e.excludeColumns]);return n().createElement(L.ListTable,{actions:[{name:"edit"},{name:"delete"}],columns:[{name:"table_name",label:d.t("UserDefinedFieldsList.columns.table"),hidden:t("table_name")},{name:"column_name",label:d.t("UserDefinedFieldsList.columns.name"),hidden:t("column_name")},{name:"data_type",label:d.t("UserDefinedFieldsList.columns.dataType"),hidden:t("data_type")},{name:"required",label:d.t("UserDefinedFieldsList.columns.required"),render:function(e){return n().createElement(L.BooleanIcon,{value:e.required})},hidden:t("required")},{name:"order",label:d.t("UserDefinedFieldsList.columns.order"),hidden:t("order")}],collectionName:"user_defined_fields",modal:{component:M,props:{defaults:te({order:0},e.defaults||{}),hideTable:t("table_name"),validate:K.validateUserDefinedField.bind(void 0)}},onLoad:function(e){return U.fetchAll(e)},onSave:function(e){return U.save(e)},onDelete:function(e){return U.delete(e)}})};function oe(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)}}const ae=new(function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,r;return t=e,(r=[{key:"toFormData",value:function(e,t,r){var n=r.user_defined;i().each(i().keys(n),(function(r){O.Form.setAttribute(e,"".concat(t,"[user_defined]"),n,r)}))}}])&&oe(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}());function ie(e){return ie="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},ie(e)}function le(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ue(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 ce(){return ce="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=fe(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(arguments.length<3?e:r):o.value}},ce.apply(this,arguments)}function fe(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=pe(e)););return e}function de(e,t){return de=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},de(e,t)}function se(e,t){if(t&&("object"===ie(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 pe(e){return pe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},pe(e)}const be=new(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&&de(e,t)}(i,e);var t,r,n,o,a=(n=i,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=pe(n);if(o){var r=pe(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return se(this,e)});function i(){return le(this,i),a.apply(this,arguments)}return t=i,r=[{key:"getPayloadKeys",value:function(){return["id","table_name","column_name","data_type","required","searchable","allow_multiple","options","order","_destroy"]}},{key:"toFormData",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user_defined_fields";return ce(pe(i.prototype),"toFormData",this).call(this,e,t,r,n)}},{key:"toPayload",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"user_defined_fields";return ce(pe(i.prototype),"toPayload",this).call(this,e,t)}}],r&&ue(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),i}(O.NestedAttributesTransform));module.exports=t})();
1
+ (()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(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:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r: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,{FieldableTransform:()=>ae,UserDefinedFieldModal:()=>M,UserDefinedFieldOptions:()=>v,UserDefinedFieldTransform:()=>D,UserDefinedFields:()=>K,UserDefinedFieldsEmbeddedList:()=>J,UserDefinedFieldsForm:()=>Z,UserDefinedFieldsList:()=>ne,UserDefinedFieldsService:()=>U,UserDefinedFieldsTransform:()=>be});const r=require("react");var n=e.n(r);const o=require("semantic-ui-react"),a=require("underscore");var i=e.n(a);const l=require("i18next");var u=e.n(l),c={en:{translation:JSON.parse('{"UserDefinedFieldModal":{"labels":{"allowMultiple":"Allow multiple","dataType":"Data type","name":"Name","order":"Order","required":"Required","searchable":"Searchable","table":"Table"},"title":{"add":"Add User Defined Field","edit":"Edit User Defined Field"}},"UserDefinedFields":{"errors":{"numeric":"{{name}} must be numeric"}},"UserDefinedFieldsEmbeddedList":{"columns":{"dataType":"Data type","name":"Name","order":"Order","required":"Required","table":"Table"}},"UserDefinedFieldsList":{"columns":{"dataType":"Data type","name":"Name","order":"Order","required":"Required","table":"Table"}}}')}},f=u().createInstance();f.init({debug:!0,fallbackLng:"en",lng:"en",interpolation:{escapeValue:!1},resources:c});const d=f;var s=void 0;function p(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 b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){y(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function m(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}function h(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}const v=function(e){var t,a,l=(t=(0,r.useState)(i().map(e.options,(function(e){return{value:e}}))),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw o}}return a}}(t,a)||m(t,a)||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.")}()),u=l[0],c=l[1],f=(0,r.useCallback)((function(){c((function(e){return[].concat(function(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||m(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(e),[{new:!0}])}))}),[]),d=(0,r.useCallback)((function(e){c((function(t){return i().filter(t,(function(t,r){return r!==e}))}))}),[]),p=(0,r.useCallback)((function(e){c((function(t){return i().map(t,(function(t,r){return e!==r?t:b(b({},t),{},{new:!1})}))}))}),[u]),y=(0,r.useCallback)((function(e,t,r){var n=r.value;c((function(t){return i().map(t,(function(t,r){return r!==e?t:b(b({},t),{},{value:n})}))}))}),[]);return(0,r.useEffect)((function(){var t=i().filter(u,(function(e){return!e.new}));e.onChange(i().pluck(t,"value"))}),[u]),n().createElement("div",{className:"user-defined-field-options"},n().createElement(o.Button,{basic:!0,icon:"plus",onClick:f,type:"button"}),i().map(u,(function(e,t){return n().createElement(n().Fragment,null,e.new&&n().createElement(o.Label,null,n().createElement(o.Input,{autoFocus:!0,onChange:y.bind(s,t),value:e.value}),n().createElement(o.Button,{basic:!0,color:"green",icon:"checkmark",onClick:p.bind(s,t),type:"button",size:"tiny"})),!e.new&&n().createElement(o.Label,{content:e.value,onRemove:d.bind(s,t)}))})))},O=require("@performant-software/shared-components");function g(e){return g="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},g(e)}function w(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _(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 j(e,t){return j=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},j(e,t)}function E(e,t){if(t&&("object"===g(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 P(e){return P=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},P(e)}const D=new(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&&j(e,t)}(i,e);var t,r,n,o,a=(n=i,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=P(n);if(o){var r=P(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return E(this,e)});function i(){return w(this,i),a.apply(this,arguments)}return t=i,(r=[{key:"getPayloadKeys",value:function(){return["table_name","column_name","data_type","required","searchable","allow_multiple","options","order"]}},{key:"getParameterName",value:function(){return"user_defined_field"}}])&&_(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),i}(O.BaseTransform));function S(e){return S="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},S(e)}function F(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function C(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 k(e,t){return k=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},k(e,t)}function T(e,t){if(t&&("object"===S(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 q(e){return q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},q(e)}const U=new(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&&k(e,t)}(i,e);var t,r,n,o,a=(n=i,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=q(n);if(o){var r=q(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return T(this,e)});function i(){return F(this,i),a.apply(this,arguments)}return t=i,(r=[{key:"fetchDataTypes",value:function(){return this.getAxios().get("/user_defined_fields/data_types")}},{key:"fetchTables",value:function(){return this.getAxios().get("/user_defined_fields/tables")}},{key:"getBaseUrl",value:function(){return"/user_defined_fields/user_defined_fields"}},{key:"getTransform",value:function(){return D}}])&&C(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),i}(O.BaseService));var x=void 0;function A(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,a=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return I(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)?I(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 I(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 R="Select";const M=function(e){var t=A((0,r.useState)([]),2),a=t[0],l=t[1],u=A((0,r.useState)([]),2),c=u[0],f=u[1],s=(0,r.useCallback)((function(e){return i().map(e,(function(e){return{key:e,value:e,text:e}}))}),[]);return(0,r.useEffect)((function(){e.hideTable||U.fetchTables().then((function(e){var t=e.data;return f(s(t.tables))})),U.fetchDataTypes().then((function(e){var t=e.data;return l(s(t.data_types))}))}),[]),n().createElement(o.Modal,{as:o.Form,centered:!1,open:!0},n().createElement(o.Modal.Header,{content:e.item.id?d.t("UserDefinedFieldModal.title.edit"):d.t("UserDefinedFieldModal.title.add")}),n().createElement(o.Modal.Content,null,!e.hideTable&&n().createElement(o.Form.Dropdown,{clearable:!0,error:e.isError("table_name"),label:d.t("UserDefinedFieldModal.labels.table"),onChange:e.onTextInputChange.bind(x,"table_name"),options:c,required:e.isRequired("table_name"),selection:!0,selectOnBlur:!1,value:e.item.table_name||""}),n().createElement(o.Form.Input,{error:e.isError("column_name"),label:d.t("UserDefinedFieldModal.labels.name"),onChange:e.onTextInputChange.bind(x,"column_name"),required:e.isRequired("column_name"),value:e.item.column_name||""}),n().createElement(o.Form.Dropdown,{clearable:!0,error:e.isError("data_type"),label:d.t("UserDefinedFieldModal.labels.dataType"),onChange:e.onTextInputChange.bind(x,"data_type"),options:a,required:e.isRequired("data_type"),selection:!0,selectOnBlur:!1,value:e.item.data_type||""}),n().createElement(o.Form.Input,{error:e.isError("order"),label:d.t("UserDefinedFieldModal.labels.order"),onChange:e.onTextInputChange.bind(x,"order"),required:e.isRequired("oder"),value:e.item.order||0,type:"number"}),n().createElement(o.Form.Group,null,n().createElement(o.Form.Checkbox,{error:e.isError("required"),checked:e.item.required,label:d.t("UserDefinedFieldModal.labels.required"),onChange:e.onCheckboxInputChange.bind(x,"required")}),n().createElement(o.Form.Checkbox,{error:e.isError("searchable"),checked:e.item.searchable,label:d.t("UserDefinedFieldModal.labels.searchable"),onChange:e.onCheckboxInputChange.bind(x,"searchable")}),e.item.data_type===R&&n().createElement(o.Form.Checkbox,{error:e.isError("allow_multiple"),checked:e.item.allow_multiple,label:d.t("UserDefinedFieldModal.labels.allowMultiple"),onChange:e.onCheckboxInputChange.bind(x,"allow_multiple")})),e.item.data_type===R&&n().createElement(v,{options:e.item.options,onChange:function(t){return e.onSetState({options:t})}})),e.children)},L=require("@performant-software/semantic-components");function B(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function N(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,a=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return V(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)?V(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 V(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 $="user_defined";const K={resolveError:function(e){var t=e.key,r=e.error,n={};if(t&&t.startsWith($)&&i().contains(t,".")){var o=N(t.split("."),2)[1];i().extend(n,B({},"".concat($,"[").concat(o,"]"),"".concat(o," ").concat(r)))}if(t===$&&!i().isEmpty(r)){var a=N(r,2),l=a[0],u=a[1];i().extend(n,B({},"".concat($,"[").concat(l,"]"),u))}return n},validateUserDefinedField:function(e){var t={};return e.order||i().extend(t,{order:d.t("UserDefinedFields.errors.numeric",{name:"order"})}),t}};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 G(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){H(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 H(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const J=function(e){var t=(0,r.useCallback)((function(t){return i().contains(e.excludeColumns,t)}),[e.excludeColumns]);return n().createElement(L.EmbeddedList,{actions:[{name:"edit"},{name:"delete"}],columns:[{name:"table_name",label:d.t("UserDefinedFieldsEmbeddedList.columns.table"),hidden:t("table_name")},{name:"column_name",label:d.t("UserDefinedFieldsEmbeddedList.columns.name"),hidden:t("column_name")},{name:"data_type",label:d.t("UserDefinedFieldsEmbeddedList.columns.dataType"),hidden:t("data_type")},{name:"required",label:d.t("UserDefinedFieldsEmbeddedList.columns.required"),render:function(e){return n().createElement(L.BooleanIcon,{value:e.required})},hidden:t("required")},{name:"order",label:d.t("UserDefinedFieldsEmbeddedList.columns.order"),hidden:t("order")}],items:e.items,modal:{component:M,props:{defaults:G({order:0},e.defaults||{}),hideTable:t("table_name"),validate:K.validateUserDefinedField.bind(void 0)}},onDelete:e.onDelete,onSave:e.onSave})};function W(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 Q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?W(Object(r),!0).forEach((function(t){X(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):W(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function X(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Y(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}const Z=function(e){var t,a,l=(t=(0,r.useState)([]),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw o}}return a}}(t,a)||function(e,t){if(e){if("string"==typeof e)return Y(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)?Y(e,t):void 0}}(t,a)||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.")}()),u=l[0],c=l[1],f=(0,r.useCallback)((function(e){return"user_defined[".concat(e.uuid,"]")}),[]),d=(0,r.useCallback)((function(t){return e.isError(f(t))}),[f,e.isError]),s=(0,r.useCallback)((function(t,r){e.onChange(Q(Q({},e.data),{},X({},t.uuid,r))),e.onClearValidationError&&e.onClearValidationError(f(t))}),[f,e.data,e.onChange,e.onClearValidationError]),p=(0,r.useCallback)((function(t){var r,a=e.data&&e.data[t.uuid];return"String"===t.data_type&&(r=n().createElement(o.Form.Input,{error:d(t),label:t.column_name,required:t.required,onChange:function(e,r){var n=r.value;return s(t,n)},value:a})),"Number"===t.data_type&&(r=n().createElement(o.Form.Input,{error:d(t),label:t.column_name,required:t.required,onChange:function(e,r){var n=r.value;return s(t,n)},value:a,type:"number"})),"Select"===t.data_type&&(r=n().createElement(o.Form.Dropdown,{clearable:!0,error:d(t),label:t.column_name,multiple:t.allow_multiple,required:t.required,options:i().map(t.options,(function(e){return{key:e,value:e,text:e}})),onChange:function(e,r){var n=r.value;return s(t,n)},selectOnBlur:!1,selection:!0,value:a})),"Text"===t.data_type&&(r=n().createElement(o.Form.TextArea,{error:d(t),label:t.column_name,required:t.required,onChange:function(e,r){var n=r.value;return s(t,n)},value:a})),"Date"===t.data_type&&(r=n().createElement(o.Form.Input,{error:d(t),label:t.column_name,required:t.required},n().createElement(L.DatePicker,{onChange:function(e){return s(t,e&&e.toISOString())},value:a&&new Date(a)}))),"Boolean"===t.data_type&&(r=n().createElement(o.Form.Checkbox,{checked:!!a,error:d(t),label:t.column_name,onChange:function(e,r){var n=r.checked;return s(t,n)}})),"RichText"===t.data_type&&(r=n().createElement(o.Form.Input,{error:d(t),label:t.column_name,required:t.required},n().createElement(O.RichTextArea,{onChange:function(e){return s(t,e)},value:a}))),r}),[e.data,d,s]);return(0,r.useEffect)((function(){var t={defineable_id:e.defineableId,defineable_type:e.defineableType,per_page:0,sort_by:"order",table_name:e.tableName};U.fetchAll(t).then((function(e){var t=e.data;return c(t.user_defined_fields)}))}),[]),n().createElement(n().Fragment,null,i().map(u,p.bind(void 0)))};function ee(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 te(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ee(Object(r),!0).forEach((function(t){re(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ee(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function re(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const ne=function(e){var t=(0,r.useCallback)((function(t){return i().contains(e.excludeColumns,t)}),[e.excludeColumns]);return n().createElement(L.ListTable,{actions:[{name:"edit"},{name:"delete"}],columns:[{name:"table_name",label:d.t("UserDefinedFieldsList.columns.table"),hidden:t("table_name")},{name:"column_name",label:d.t("UserDefinedFieldsList.columns.name"),hidden:t("column_name")},{name:"data_type",label:d.t("UserDefinedFieldsList.columns.dataType"),hidden:t("data_type")},{name:"required",label:d.t("UserDefinedFieldsList.columns.required"),render:function(e){return n().createElement(L.BooleanIcon,{value:e.required})},hidden:t("required")},{name:"order",label:d.t("UserDefinedFieldsList.columns.order"),hidden:t("order")}],collectionName:"user_defined_fields",modal:{component:M,props:{defaults:te({order:0},e.defaults||{}),hideTable:t("table_name"),validate:K.validateUserDefinedField.bind(void 0)}},onLoad:function(e){return U.fetchAll(e)},onSave:function(e){return U.save(e)},onDelete:function(e){return U.delete(e)}})};function oe(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)}}const ae=new(function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,r;return t=e,(r=[{key:"toFormData",value:function(e,t,r){var n=r.user_defined;i().each(i().keys(n),(function(r){O.Form.setAttribute(e,"".concat(t,"[user_defined]"),n,r)}))}}])&&oe(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}());function ie(e){return ie="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},ie(e)}function le(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ue(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 ce(){return ce="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=fe(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(arguments.length<3?e:r):o.value}},ce.apply(this,arguments)}function fe(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=pe(e)););return e}function de(e,t){return de=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},de(e,t)}function se(e,t){if(t&&("object"===ie(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 pe(e){return pe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},pe(e)}const be=new(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&&de(e,t)}(i,e);var t,r,n,o,a=(n=i,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=pe(n);if(o){var r=pe(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return se(this,e)});function i(){return le(this,i),a.apply(this,arguments)}return t=i,r=[{key:"getPayloadKeys",value:function(){return["id","table_name","column_name","data_type","required","searchable","allow_multiple","options","order","_destroy"]}},{key:"toFormData",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user_defined_fields";return ce(pe(i.prototype),"toFormData",this).call(this,e,t,r,n)}},{key:"toPayload",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"user_defined_fields";return ce(pe(i.prototype),"toPayload",this).call(this,e,t)}}],r&&ue(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),i}(O.NestedAttributesTransform));module.exports=t})();
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"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","sources":["webpack://@performant-software/user-defined-fields/webpack/bootstrap","webpack://@performant-software/user-defined-fields/webpack/runtime/compat get default export","webpack://@performant-software/user-defined-fields/webpack/runtime/define property getters","webpack://@performant-software/user-defined-fields/webpack/runtime/hasOwnProperty shorthand","webpack://@performant-software/user-defined-fields/webpack/runtime/make namespace object","webpack://@performant-software/user-defined-fields/external commonjs2 \"react\"","webpack://@performant-software/user-defined-fields/external commonjs \"semantic-ui-react\"","webpack://@performant-software/user-defined-fields/external commonjs \"underscore\"","webpack://@performant-software/user-defined-fields/external commonjs \"i18next\"","webpack://@performant-software/user-defined-fields/./src/i18n/i18n.js","webpack://@performant-software/user-defined-fields/./src/components/UserDefinedFieldOptions.js","webpack://@performant-software/user-defined-fields/external commonjs \"@performant-software/shared-components\"","webpack://@performant-software/user-defined-fields/./src/transforms/UserDefinedField.js","webpack://@performant-software/user-defined-fields/./src/services/UserDefinedFields.js","webpack://@performant-software/user-defined-fields/./src/components/UserDefinedFieldModal.js","webpack://@performant-software/user-defined-fields/external commonjs \"@performant-software/semantic-components\"","webpack://@performant-software/user-defined-fields/./src/utils/UserDefinedFields.js","webpack://@performant-software/user-defined-fields/./src/components/UserDefinedFieldsEmbeddedList.js","webpack://@performant-software/user-defined-fields/./src/components/UserDefinedFieldsForm.js","webpack://@performant-software/user-defined-fields/./src/components/UserDefinedFieldsList.js","webpack://@performant-software/user-defined-fields/./src/transforms/Fieldable.js","webpack://@performant-software/user-defined-fields/./src/transforms/UserDefinedFields.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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 = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"semantic-ui-react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"underscore\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"i18next\");","import 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, {\n useCallback,\n useEffect,\n useState,\n type ComponentType\n} from 'react';\nimport { Button, Input, Label } from 'semantic-ui-react';\nimport _ from 'underscore';\nimport './UserDefinedFieldOptions.css';\n\ntype Props = {\n options: Array<string>,\n onChange: (options: Array<string>) => void\n};\n\nconst UserDefinedFieldOptions: ComponentType<any> = (props: Props) => {\n const [options, setOptions] = useState(_.map(props.options, (option) => ({ value: option })));\n\n /**\n * Adds a new option to the list.\n *\n * @type {(function(): void)|*}\n */\n const onAddOption = useCallback(() => {\n setOptions((prevOptions) => [...prevOptions, { new: true }]);\n }, []);\n\n /**\n * Deletes the option at the passed index from the list.\n *\n * @type {(function(*): void)|*}\n */\n const onDeleteOption = useCallback((findIndex) => {\n setOptions((prevOptions) => _.filter(prevOptions, (option, index) => index !== findIndex));\n }, []);\n\n /**\n * Removes the \"new\" indicator from the option at the passed index.\n *\n * @type {(function(*): void)|*}\n */\n const onSaveOption = useCallback((findIndex) => {\n setOptions((prevOptions) => _.map(\n prevOptions,\n (option, index) => (findIndex !== index ? option : ({ ...option, new: false }))\n ));\n }, [options]);\n\n /**\n * Updates the value of the option at the passed index.\n *\n * @type {(function(*, *, {value: *}): void)|*}\n */\n const onUpdateOption = useCallback((findIndex, e, { value }) => {\n setOptions((prevOptions) => _.map(\n prevOptions,\n (option, index) => (index !== findIndex ? option : ({ ...option, value }))\n ));\n }, []);\n\n /**\n * Calls the onChange prop when the list of options changes.\n */\n useEffect(() => {\n const savedOptions = _.filter(options, (option) => !option.new);\n props.onChange(_.pluck(savedOptions, 'value'));\n }, [options]);\n\n return (\n <div\n className='user-defined-field-options'\n >\n <Button\n basic\n icon='plus'\n onClick={onAddOption}\n type='button'\n />\n { _.map(options, (option, index) => (\n <>\n { option.new && (\n <Label>\n <Input\n autoFocus\n onChange={onUpdateOption.bind(this, index)}\n value={option.value}\n />\n <Button\n basic\n color='green'\n icon='checkmark'\n onClick={onSaveOption.bind(this, index)}\n type='button'\n size='tiny'\n />\n </Label>\n )}\n { !option.new && (\n <Label\n content={option.value}\n onRemove={onDeleteOption.bind(this, index)}\n />\n )}\n </>\n ))}\n </div>\n );\n};\n\nexport default UserDefinedFieldOptions;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@performant-software/shared-components\");","// @flow\n\nimport { BaseTransform } from '@performant-software/shared-components';\n\n/**\n * Class for transforming user defined field objects for PUT/POST requests.\n */\nclass UserDefinedField extends BaseTransform {\n /**\n * Returns the user defined field payload keys.\n *\n * @returns {string[]}\n */\n getPayloadKeys(): Array<string> {\n return [\n 'table_name',\n 'column_name',\n 'data_type',\n 'required',\n 'searchable',\n 'allow_multiple',\n 'options',\n 'order'\n ];\n }\n\n /**\n * Returns the user defined field parameter name.\n *\n * @returns {string}\n */\n getParameterName(): string {\n return 'user_defined_field';\n }\n}\n\nconst UserDefinedFieldTransform: UserDefinedField = new UserDefinedField();\nexport default UserDefinedFieldTransform;\n","// @flow\n\nimport { BaseService } from '@performant-software/shared-components';\nimport UserDefinedField from '../transforms/UserDefinedField';\n\n/**\n * Class responsible for handling all user defined field API requests.\n */\nclass UserDefinedFields extends BaseService {\n /**\n * Calls the /api/user_defined_fields/data_types API endpoint.\n *\n * @returns {Promise<AxiosResponse<any>>}\n */\n fetchDataTypes(): Promise<any> {\n return this.getAxios().get('/user_defined_fields/data_types');\n }\n\n /**\n * Calls the /api/user_defined_fields/tables API endpoint.\n *\n * @returns {Promise<AxiosResponse<any>>}\n */\n fetchTables(): Promise<any> {\n return this.getAxios().get('/user_defined_fields/tables');\n }\n\n /**\n * Returns the user defined fields base URL.\n *\n * @returns {string}\n */\n getBaseUrl(): string {\n return '/user_defined_fields/user_defined_fields';\n }\n\n /**\n * Returns the user defined fields transform object.\n *\n * @returns {UserDefinedField}\n */\n getTransform(): any {\n return UserDefinedField;\n }\n}\n\nconst UserDefinedFieldsService: UserDefinedFields = new UserDefinedFields();\nexport default UserDefinedFieldsService;\n","// @flow\n\nimport type { EditContainerProps } from '@performant-software/shared-components/types';\nimport React, {\n useCallback,\n useEffect,\n useState,\n type ComponentType\n} from 'react';\nimport { Form, Modal } from 'semantic-ui-react';\nimport _ from 'underscore';\nimport i18n from '../i18n/i18n';\nimport UserDefinedFieldOptions from './UserDefinedFieldOptions';\nimport UserDefinedFieldsService from '../services/UserDefinedFields';\n\ntype Props = EditContainerProps & {\n hideTable?: boolean\n};\n\nconst DataTypes = {\n select: 'Select'\n};\n\nconst UserDefinedFieldModal: ComponentType<any> = (props: Props) => {\n const [dataTypeOptions, setDataTypeOptions] = useState([]);\n const [tableOptions, setTableOptions] = useState([]);\n\n /**\n * Transforms the passed array of items into a Semantic UI option object.\n *\n * @type {function(*): *}\n */\n const transformOptions = useCallback((items) => (\n _.map(items, (item) => ({ key: item, value: item, text: item }))\n ), []);\n\n /**\n * Fetch the available tables and data types.\n */\n useEffect(() => {\n if (!props.hideTable) {\n UserDefinedFieldsService\n .fetchTables()\n .then(({ data }) => setTableOptions(transformOptions(data.tables)));\n }\n\n UserDefinedFieldsService\n .fetchDataTypes()\n .then(({ data }) => setDataTypeOptions(transformOptions(data.data_types)));\n }, []);\n\n return (\n <Modal\n as={Form}\n centered={false}\n open\n >\n <Modal.Header\n content={props.item.id\n ? i18n.t('UserDefinedFieldModal.title.edit')\n : i18n.t('UserDefinedFieldModal.title.add')}\n />\n <Modal.Content>\n { !props.hideTable && (\n <Form.Dropdown\n clearable\n error={props.isError('table_name')}\n label={i18n.t('UserDefinedFieldModal.labels.table')}\n onChange={props.onTextInputChange.bind(this, 'table_name')}\n options={tableOptions}\n required={props.isRequired('table_name')}\n selection\n selectOnBlur={false}\n value={props.item.table_name || ''}\n />\n )}\n <Form.Input\n error={props.isError('column_name')}\n label={i18n.t('UserDefinedFieldModal.labels.name')}\n onChange={props.onTextInputChange.bind(this, 'column_name')}\n required={props.isRequired('column_name')}\n value={props.item.column_name || ''}\n />\n <Form.Dropdown\n clearable\n error={props.isError('data_type')}\n label={i18n.t('UserDefinedFieldModal.labels.dataType')}\n onChange={props.onTextInputChange.bind(this, 'data_type')}\n options={dataTypeOptions}\n required={props.isRequired('data_type')}\n selection\n selectOnBlur={false}\n value={props.item.data_type || ''}\n />\n <Form.Input\n error={props.isError('order')}\n label={i18n.t('UserDefinedFieldModal.labels.order')}\n onChange={props.onTextInputChange.bind(this, 'order')}\n required={props.isRequired('oder')}\n value={props.item.order || 0}\n type='number'\n />\n <Form.Group>\n <Form.Checkbox\n error={props.isError('required')}\n checked={props.item.required}\n label={i18n.t('UserDefinedFieldModal.labels.required')}\n onChange={props.onCheckboxInputChange.bind(this, 'required')}\n />\n <Form.Checkbox\n error={props.isError('searchable')}\n checked={props.item.searchable}\n label={i18n.t('UserDefinedFieldModal.labels.searchable')}\n onChange={props.onCheckboxInputChange.bind(this, 'searchable')}\n />\n { props.item.data_type === DataTypes.select && (\n <Form.Checkbox\n error={props.isError('allow_multiple')}\n checked={props.item.allow_multiple}\n label={i18n.t('UserDefinedFieldModal.labels.allowMultiple')}\n onChange={props.onCheckboxInputChange.bind(this, 'allow_multiple')}\n />\n )}\n </Form.Group>\n { props.item.data_type === DataTypes.select && (\n <UserDefinedFieldOptions\n options={props.item.options}\n onChange={(options) => props.onSetState({ options })}\n />\n )}\n </Modal.Content>\n { props.children }\n </Modal>\n );\n};\n\nexport default UserDefinedFieldModal;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@performant-software/semantic-components\");","// @flow\n\nimport _ from 'underscore';\nimport i18n from '../i18n/i18n';\n\ntype ErrorProps = {\n key: string,\n error: Array<string>\n};\n\ntype ErrorReturn = {\n [key: string]: string\n};\n\nconst KEY_USER_DEFINED = 'user_defined';\n\nconst FIELD_DELIMITER = '.';\n\n/**\n * Returns the error for the passed user defined field.\n *\n * @param key\n * @param error\n *\n * @returns {{}|{[p: string]: *}}\n */\nconst resolveError = ({ key, error }: ErrorProps): ErrorReturn => {\n const errors = {};\n\n /**\n * Resolve errors returned when creating user defined fields.\n */\n if (key && key.startsWith(KEY_USER_DEFINED) && _.contains(key, FIELD_DELIMITER)) {\n const [, field] = key.split(FIELD_DELIMITER);\n _.extend(errors, { [`${KEY_USER_DEFINED}[${field}]`]: `${field} ${error}` });\n }\n\n /**\n * Resolve errors returned when entering data into user field fields.\n */\n if (key === KEY_USER_DEFINED && !_.isEmpty(error)) {\n const [field, message] = error;\n _.extend(errors, { [`${KEY_USER_DEFINED}[${field}]`]: message });\n }\n\n return errors;\n};\n\n/**\n * Validates the passed user defined field.\n *\n * @param item\n *\n * @returns {{}}\n */\nconst validateUserDefinedField = (item) => {\n const errors = {};\n\n if (!item.order) {\n _.extend(errors, { order: i18n.t('UserDefinedFields.errors.numeric', { name: 'order' }) });\n }\n\n return errors;\n};\n\nexport default {\n resolveError,\n validateUserDefinedField\n};\n","// @flow\n\nimport { BooleanIcon, EmbeddedList } from '@performant-software/semantic-components';\nimport React, { useCallback } from 'react';\nimport _ from 'underscore';\nimport i18n from '../i18n/i18n';\nimport UserDefinedFieldModal from './UserDefinedFieldModal';\nimport UserDefinedFields from '../utils/UserDefinedFields';\n\ntype Props = {\n defaults: any,\n excludeColumns?: Array<string>,\n items: Array<any>,\n onDelete: (item: any) => Promise<any>,\n onSave: (item: any) => Promise<any>\n};\n\nconst DEFAULT_ORDER = 0;\n\nconst UserDefinedFieldsEmbeddedList = (props: Props) => {\n /**\n * Returns true if the passed column should be hidden by default.\n *\n * @type {function(*): *}\n */\n const isHidden = useCallback((column) => _.contains(props.excludeColumns, column), [props.excludeColumns]);\n\n return (\n <EmbeddedList\n actions={[{\n name: 'edit'\n }, {\n name: 'delete'\n }]}\n columns={[{\n name: 'table_name',\n label: i18n.t('UserDefinedFieldsEmbeddedList.columns.table'),\n hidden: isHidden('table_name')\n }, {\n name: 'column_name',\n label: i18n.t('UserDefinedFieldsEmbeddedList.columns.name'),\n hidden: isHidden('column_name')\n }, {\n name: 'data_type',\n label: i18n.t('UserDefinedFieldsEmbeddedList.columns.dataType'),\n hidden: isHidden('data_type')\n }, {\n name: 'required',\n label: i18n.t('UserDefinedFieldsEmbeddedList.columns.required'),\n render: (udf) => <BooleanIcon value={udf.required} />,\n hidden: isHidden('required')\n }, {\n name: 'order',\n label: i18n.t('UserDefinedFieldsEmbeddedList.columns.order'),\n hidden: isHidden('order')\n }]}\n items={props.items}\n modal={{\n component: UserDefinedFieldModal,\n props: {\n defaults: {\n order: DEFAULT_ORDER,\n ...(props.defaults || {})\n },\n hideTable: isHidden('table_name'),\n validate: UserDefinedFields.validateUserDefinedField.bind(this)\n }\n }}\n onDelete={props.onDelete}\n onSave={props.onSave}\n />\n );\n};\n\nexport default UserDefinedFieldsEmbeddedList;\n","// @flow\n\nimport { DatePicker } from '@performant-software/semantic-components';\nimport { RichTextArea } from '@performant-software/shared-components';\nimport React, {\n useCallback,\n useEffect,\n useState,\n type ComponentType\n} from 'react';\nimport { Form } from 'semantic-ui-react';\nimport _ from 'underscore';\nimport UserDefinedFieldsService from '../services/UserDefinedFields';\n\ntype Props = {\n data: any,\n defineableId?: number,\n defineableType?: string,\n isError: (key: string) => boolean,\n onChange: (obj: any) => void,\n onClearValidationError: (...keys: Array<string>) => void,\n tableName?: string\n};\n\nconst DataTypes = {\n boolean: 'Boolean',\n date: 'Date',\n number: 'Number',\n richText: 'RichText',\n select: 'Select',\n string: 'String',\n text: 'Text'\n};\n\nconst UserDefinedFieldsForm: ComponentType<any> = (props: Props) => {\n const [fields, setFields] = useState([]);\n\n /**\n * Returns the key for the passed field.\n *\n * @type {function(*): string}\n */\n const getFieldKey = useCallback((field) => `user_defined[${field.column_name}]`, []);\n\n /**\n * Returns true if an error exists on the state for the passed field.\n *\n * @type {function(*): *}\n */\n const isError = useCallback((field) => props.isError(getFieldKey(field)), [getFieldKey, props.isError]);\n\n /**\n * Changes the value for the passed item.\n *\n * @type {(function(*, *): void)|*}\n */\n const onChange = useCallback((field, value) => {\n props.onChange({ ...props.data, [field.column_name]: value });\n\n // Clear the validation error if one exists\n if (props.onClearValidationError) {\n props.onClearValidationError(getFieldKey(field));\n }\n }, [getFieldKey, props.data, props.onChange, props.onClearValidationError]);\n\n /**\n * Renders the passed item.\n *\n * @type {function(*): *}\n */\n const renderItem = useCallback((field) => {\n let rendered;\n\n const fieldValue = props.data && props.data[field.column_name];\n\n if (field.data_type === DataTypes.string) {\n rendered = (\n <Form.Input\n error={isError(field)}\n label={field.column_name}\n required={field.required}\n onChange={(e, { value }) => onChange(field, value)}\n value={fieldValue}\n />\n );\n }\n\n if (field.data_type === DataTypes.number) {\n rendered = (\n <Form.Input\n error={isError(field)}\n label={field.column_name}\n required={field.required}\n onChange={(e, { value }) => onChange(field, value)}\n value={fieldValue}\n type='number'\n />\n );\n }\n\n if (field.data_type === DataTypes.select) {\n rendered = (\n <Form.Dropdown\n clearable\n error={isError(field)}\n label={field.column_name}\n multiple={field.allow_multiple}\n required={field.required}\n options={_.map(field.options, (option) => ({ key: option, value: option, text: option }))}\n onChange={(e, { value }) => onChange(field, value)}\n selectOnBlur={false}\n selection\n value={fieldValue}\n />\n );\n }\n\n if (field.data_type === DataTypes.text) {\n rendered = (\n <Form.TextArea\n error={isError(field)}\n label={field.column_name}\n required={field.required}\n onChange={(e, { value }) => onChange(field, value)}\n value={fieldValue}\n />\n );\n }\n\n if (field.data_type === DataTypes.date) {\n rendered = (\n <Form.Input\n error={isError(field)}\n label={field.column_name}\n required={field.required}\n >\n <DatePicker\n onChange={(date) => onChange(field, date && date.toISOString())}\n value={fieldValue && new Date(fieldValue)}\n />\n </Form.Input>\n );\n }\n\n if (field.data_type === DataTypes.boolean) {\n rendered = (\n <Form.Checkbox\n checked={!!fieldValue}\n error={isError(field)}\n label={field.column_name}\n onChange={(e, { checked }) => onChange(field, checked)}\n />\n );\n }\n\n if (field.data_type === DataTypes.richText) {\n rendered = (\n <Form.Input\n error={isError(field)}\n label={field.column_name}\n required={field.required}\n >\n <RichTextArea\n onChange={(value) => onChange(field, value)}\n value={fieldValue}\n />\n </Form.Input>\n );\n }\n\n return rendered;\n }, [props.data, isError, onChange]);\n\n /**\n * Fetches the user defined fields when the component mounts.\n */\n useEffect(() => {\n const params = {\n defineable_id: props.defineableId,\n defineable_type: props.defineableType,\n per_page: 0,\n sort_by: 'order',\n table_name: props.tableName\n };\n\n UserDefinedFieldsService\n .fetchAll(params)\n .then(({ data }) => setFields(data.user_defined_fields));\n }, []);\n\n return (\n <>\n { _.map(fields, renderItem.bind(this)) }\n </>\n );\n};\n\nexport default UserDefinedFieldsForm;\n","// @flow\n\nimport { BooleanIcon, ListTable } from '@performant-software/semantic-components';\nimport React, { type ComponentType, useCallback } from 'react';\nimport _ from 'underscore';\nimport i18n from '../i18n/i18n';\nimport UserDefinedFieldModal from './UserDefinedFieldModal';\nimport UserDefinedFields from '../utils/UserDefinedFields';\nimport UserDefinedFieldsService from '../services/UserDefinedFields';\n\ntype Props = {\n defaults?: any,\n excludeColumns?: Array<string>\n};\n\nconst DEFAULT_ORDER = 0;\n\nconst UserDefinedFieldsList: ComponentType<any> = (props: Props) => {\n /**\n * Returns true if the passed column should be hidden by default.\n *\n * @type {function(*): *}\n */\n const isHidden = useCallback((column) => _.contains(props.excludeColumns, column), [props.excludeColumns]);\n\n return (\n <ListTable\n actions={[{\n name: 'edit'\n }, {\n name: 'delete'\n }]}\n columns={[{\n name: 'table_name',\n label: i18n.t('UserDefinedFieldsList.columns.table'),\n hidden: isHidden('table_name')\n }, {\n name: 'column_name',\n label: i18n.t('UserDefinedFieldsList.columns.name'),\n hidden: isHidden('column_name')\n }, {\n name: 'data_type',\n label: i18n.t('UserDefinedFieldsList.columns.dataType'),\n hidden: isHidden('data_type')\n }, {\n name: 'required',\n label: i18n.t('UserDefinedFieldsList.columns.required'),\n render: (udf) => <BooleanIcon value={udf.required} />,\n hidden: isHidden('required')\n }, {\n name: 'order',\n label: i18n.t('UserDefinedFieldsList.columns.order'),\n hidden: isHidden('order')\n }]}\n collectionName='user_defined_fields'\n modal={{\n component: UserDefinedFieldModal,\n props: {\n defaults: {\n order: DEFAULT_ORDER,\n ...(props.defaults || {})\n },\n hideTable: isHidden('table_name'),\n validate: UserDefinedFields.validateUserDefinedField.bind(this)\n }\n }}\n onLoad={(params) => UserDefinedFieldsService.fetchAll(params)}\n onSave={(udf) => UserDefinedFieldsService.save(udf)}\n onDelete={(udf) => UserDefinedFieldsService.delete(udf)}\n />\n );\n};\n\nexport default UserDefinedFieldsList;\n","// @flow\n\nimport { Form as FormUtils } from '@performant-software/shared-components';\nimport _ from 'underscore';\n\n/**\n * Class responsible for transforming fieldable data.\n */\nclass Fieldable {\n /**\n * Converts the \"user_defined\" data for the passed fieldable item into form data.\n *\n * @param formData\n * @param prefix\n * @param item\n */\n toFormData(formData, prefix, item) {\n const { user_defined: userDefined } = item;\n\n _.each(_.keys(userDefined), (key) => {\n FormUtils.setAttribute(formData, `${prefix}[user_defined]`, userDefined, key);\n });\n }\n}\n\nconst FieldableTransform: Fieldable = new Fieldable();\nexport default FieldableTransform;\n","// @flow\n\nimport { NestedAttributesTransform } from '@performant-software/shared-components';\n\n/**\n * Class for transforming user defined field nested objects for PUT/POST requests.\n */\nclass UserDefinedFields extends NestedAttributesTransform {\n /**\n * Returns the user defined field payload keys.\n *\n * @returns {string[]}\n */\n getPayloadKeys(): Array<string> {\n return [\n 'id',\n 'table_name',\n 'column_name',\n 'data_type',\n 'required',\n 'searchable',\n 'allow_multiple',\n 'options',\n 'order',\n '_destroy'\n ];\n }\n\n /**\n * Converts the user defined field collection for the passed object to form data to be sent on\n * the request as nested attributes.\n *\n * @param formData\n * @param prefix\n * @param record\n * @param collection\n */\n toFormData(formData: FormData, prefix: string, record: any, collection: string = 'user_defined_fields'): void {\n return super.toFormData(formData, prefix, record, collection);\n }\n\n /**\n * Converts the user defined field collection for the passed object to JSON to be sent on\n * the request as nested attributes.\n *\n * @param record\n * @param collectionName\n *\n * @returns {{[p: string]: *}}\n */\n toPayload(record: any, collectionName: string = 'user_defined_fields'): any {\n return super.toPayload(record, collectionName);\n }\n}\n\nconst UserDefinedFieldsTransform: UserDefinedFields = new UserDefinedFields();\nexport default UserDefinedFieldsTransform;\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","resources","en","translation","i18n","i18next","init","debug","fallbackLng","lng","interpolation","escapeValue","props","useState","_","options","option","setOptions","onAddOption","useCallback","prevOptions","new","onDeleteOption","findIndex","index","onSaveOption","onUpdateOption","e","useEffect","savedOptions","onChange","className","Button","basic","icon","onClick","type","Label","Input","autoFocus","bind","color","size","content","onRemove","BaseTransform","this","getAxios","UserDefinedField","BaseService","DataTypes","dataTypeOptions","setDataTypeOptions","tableOptions","setTableOptions","transformOptions","items","item","text","hideTable","UserDefinedFieldsService","then","data","tables","data_types","Modal","as","Form","centered","open","id","clearable","error","isError","label","onTextInputChange","required","isRequired","selection","selectOnBlur","table_name","column_name","data_type","order","checked","onCheckboxInputChange","searchable","allow_multiple","onSetState","children","KEY_USER_DEFINED","resolveError","errors","startsWith","field","split","message","validateUserDefinedField","name","isHidden","column","excludeColumns","EmbeddedList","actions","columns","hidden","render","udf","BooleanIcon","modal","component","UserDefinedFieldModal","defaults","validate","UserDefinedFields","onDelete","onSave","fields","setFields","getFieldKey","onClearValidationError","renderItem","rendered","fieldValue","multiple","DatePicker","date","toISOString","Date","RichTextArea","params","defineable_id","defineableId","defineable_type","defineableType","per_page","sort_by","tableName","user_defined_fields","ListTable","collectionName","onLoad","formData","prefix","userDefined","user_defined","FormUtils","record","collection","NestedAttributesTransform"],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":"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","sources":["webpack://@performant-software/user-defined-fields/webpack/bootstrap","webpack://@performant-software/user-defined-fields/webpack/runtime/compat get default export","webpack://@performant-software/user-defined-fields/webpack/runtime/define property getters","webpack://@performant-software/user-defined-fields/webpack/runtime/hasOwnProperty shorthand","webpack://@performant-software/user-defined-fields/webpack/runtime/make namespace object","webpack://@performant-software/user-defined-fields/external commonjs2 \"react\"","webpack://@performant-software/user-defined-fields/external commonjs \"semantic-ui-react\"","webpack://@performant-software/user-defined-fields/external commonjs \"underscore\"","webpack://@performant-software/user-defined-fields/external commonjs \"i18next\"","webpack://@performant-software/user-defined-fields/./src/i18n/i18n.js","webpack://@performant-software/user-defined-fields/./src/components/UserDefinedFieldOptions.js","webpack://@performant-software/user-defined-fields/external commonjs \"@performant-software/shared-components\"","webpack://@performant-software/user-defined-fields/./src/transforms/UserDefinedField.js","webpack://@performant-software/user-defined-fields/./src/services/UserDefinedFields.js","webpack://@performant-software/user-defined-fields/./src/components/UserDefinedFieldModal.js","webpack://@performant-software/user-defined-fields/external commonjs \"@performant-software/semantic-components\"","webpack://@performant-software/user-defined-fields/./src/utils/UserDefinedFields.js","webpack://@performant-software/user-defined-fields/./src/components/UserDefinedFieldsEmbeddedList.js","webpack://@performant-software/user-defined-fields/./src/components/UserDefinedFieldsForm.js","webpack://@performant-software/user-defined-fields/./src/components/UserDefinedFieldsList.js","webpack://@performant-software/user-defined-fields/./src/transforms/Fieldable.js","webpack://@performant-software/user-defined-fields/./src/transforms/UserDefinedFields.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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 = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"semantic-ui-react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"underscore\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"i18next\");","import 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, {\n useCallback,\n useEffect,\n useState,\n type ComponentType\n} from 'react';\nimport { Button, Input, Label } from 'semantic-ui-react';\nimport _ from 'underscore';\nimport './UserDefinedFieldOptions.css';\n\ntype Props = {\n options: Array<string>,\n onChange: (options: Array<string>) => void\n};\n\nconst UserDefinedFieldOptions: ComponentType<any> = (props: Props) => {\n const [options, setOptions] = useState(_.map(props.options, (option) => ({ value: option })));\n\n /**\n * Adds a new option to the list.\n *\n * @type {(function(): void)|*}\n */\n const onAddOption = useCallback(() => {\n setOptions((prevOptions) => [...prevOptions, { new: true }]);\n }, []);\n\n /**\n * Deletes the option at the passed index from the list.\n *\n * @type {(function(*): void)|*}\n */\n const onDeleteOption = useCallback((findIndex) => {\n setOptions((prevOptions) => _.filter(prevOptions, (option, index) => index !== findIndex));\n }, []);\n\n /**\n * Removes the \"new\" indicator from the option at the passed index.\n *\n * @type {(function(*): void)|*}\n */\n const onSaveOption = useCallback((findIndex) => {\n setOptions((prevOptions) => _.map(\n prevOptions,\n (option, index) => (findIndex !== index ? option : ({ ...option, new: false }))\n ));\n }, [options]);\n\n /**\n * Updates the value of the option at the passed index.\n *\n * @type {(function(*, *, {value: *}): void)|*}\n */\n const onUpdateOption = useCallback((findIndex, e, { value }) => {\n setOptions((prevOptions) => _.map(\n prevOptions,\n (option, index) => (index !== findIndex ? option : ({ ...option, value }))\n ));\n }, []);\n\n /**\n * Calls the onChange prop when the list of options changes.\n */\n useEffect(() => {\n const savedOptions = _.filter(options, (option) => !option.new);\n props.onChange(_.pluck(savedOptions, 'value'));\n }, [options]);\n\n return (\n <div\n className='user-defined-field-options'\n >\n <Button\n basic\n icon='plus'\n onClick={onAddOption}\n type='button'\n />\n { _.map(options, (option, index) => (\n <>\n { option.new && (\n <Label>\n <Input\n autoFocus\n onChange={onUpdateOption.bind(this, index)}\n value={option.value}\n />\n <Button\n basic\n color='green'\n icon='checkmark'\n onClick={onSaveOption.bind(this, index)}\n type='button'\n size='tiny'\n />\n </Label>\n )}\n { !option.new && (\n <Label\n content={option.value}\n onRemove={onDeleteOption.bind(this, index)}\n />\n )}\n </>\n ))}\n </div>\n );\n};\n\nexport default UserDefinedFieldOptions;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@performant-software/shared-components\");","// @flow\n\nimport { BaseTransform } from '@performant-software/shared-components';\n\n/**\n * Class for transforming user defined field objects for PUT/POST requests.\n */\nclass UserDefinedField extends BaseTransform {\n /**\n * Returns the user defined field payload keys.\n *\n * @returns {string[]}\n */\n getPayloadKeys(): Array<string> {\n return [\n 'table_name',\n 'column_name',\n 'data_type',\n 'required',\n 'searchable',\n 'allow_multiple',\n 'options',\n 'order'\n ];\n }\n\n /**\n * Returns the user defined field parameter name.\n *\n * @returns {string}\n */\n getParameterName(): string {\n return 'user_defined_field';\n }\n}\n\nconst UserDefinedFieldTransform: UserDefinedField = new UserDefinedField();\nexport default UserDefinedFieldTransform;\n","// @flow\n\nimport { BaseService } from '@performant-software/shared-components';\nimport UserDefinedField from '../transforms/UserDefinedField';\n\n/**\n * Class responsible for handling all user defined field API requests.\n */\nclass UserDefinedFields extends BaseService {\n /**\n * Calls the /api/user_defined_fields/data_types API endpoint.\n *\n * @returns {Promise<AxiosResponse<any>>}\n */\n fetchDataTypes(): Promise<any> {\n return this.getAxios().get('/user_defined_fields/data_types');\n }\n\n /**\n * Calls the /api/user_defined_fields/tables API endpoint.\n *\n * @returns {Promise<AxiosResponse<any>>}\n */\n fetchTables(): Promise<any> {\n return this.getAxios().get('/user_defined_fields/tables');\n }\n\n /**\n * Returns the user defined fields base URL.\n *\n * @returns {string}\n */\n getBaseUrl(): string {\n return '/user_defined_fields/user_defined_fields';\n }\n\n /**\n * Returns the user defined fields transform object.\n *\n * @returns {UserDefinedField}\n */\n getTransform(): any {\n return UserDefinedField;\n }\n}\n\nconst UserDefinedFieldsService: UserDefinedFields = new UserDefinedFields();\nexport default UserDefinedFieldsService;\n","// @flow\n\nimport type { EditContainerProps } from '@performant-software/shared-components/types';\nimport React, {\n useCallback,\n useEffect,\n useState,\n type ComponentType\n} from 'react';\nimport { Form, Modal } from 'semantic-ui-react';\nimport _ from 'underscore';\nimport i18n from '../i18n/i18n';\nimport UserDefinedFieldOptions from './UserDefinedFieldOptions';\nimport UserDefinedFieldsService from '../services/UserDefinedFields';\n\ntype Props = EditContainerProps & {\n hideTable?: boolean\n};\n\nconst DataTypes = {\n select: 'Select'\n};\n\nconst UserDefinedFieldModal: ComponentType<any> = (props: Props) => {\n const [dataTypeOptions, setDataTypeOptions] = useState([]);\n const [tableOptions, setTableOptions] = useState([]);\n\n /**\n * Transforms the passed array of items into a Semantic UI option object.\n *\n * @type {function(*): *}\n */\n const transformOptions = useCallback((items) => (\n _.map(items, (item) => ({ key: item, value: item, text: item }))\n ), []);\n\n /**\n * Fetch the available tables and data types.\n */\n useEffect(() => {\n if (!props.hideTable) {\n UserDefinedFieldsService\n .fetchTables()\n .then(({ data }) => setTableOptions(transformOptions(data.tables)));\n }\n\n UserDefinedFieldsService\n .fetchDataTypes()\n .then(({ data }) => setDataTypeOptions(transformOptions(data.data_types)));\n }, []);\n\n return (\n <Modal\n as={Form}\n centered={false}\n open\n >\n <Modal.Header\n content={props.item.id\n ? i18n.t('UserDefinedFieldModal.title.edit')\n : i18n.t('UserDefinedFieldModal.title.add')}\n />\n <Modal.Content>\n { !props.hideTable && (\n <Form.Dropdown\n clearable\n error={props.isError('table_name')}\n label={i18n.t('UserDefinedFieldModal.labels.table')}\n onChange={props.onTextInputChange.bind(this, 'table_name')}\n options={tableOptions}\n required={props.isRequired('table_name')}\n selection\n selectOnBlur={false}\n value={props.item.table_name || ''}\n />\n )}\n <Form.Input\n error={props.isError('column_name')}\n label={i18n.t('UserDefinedFieldModal.labels.name')}\n onChange={props.onTextInputChange.bind(this, 'column_name')}\n required={props.isRequired('column_name')}\n value={props.item.column_name || ''}\n />\n <Form.Dropdown\n clearable\n error={props.isError('data_type')}\n label={i18n.t('UserDefinedFieldModal.labels.dataType')}\n onChange={props.onTextInputChange.bind(this, 'data_type')}\n options={dataTypeOptions}\n required={props.isRequired('data_type')}\n selection\n selectOnBlur={false}\n value={props.item.data_type || ''}\n />\n <Form.Input\n error={props.isError('order')}\n label={i18n.t('UserDefinedFieldModal.labels.order')}\n onChange={props.onTextInputChange.bind(this, 'order')}\n required={props.isRequired('oder')}\n value={props.item.order || 0}\n type='number'\n />\n <Form.Group>\n <Form.Checkbox\n error={props.isError('required')}\n checked={props.item.required}\n label={i18n.t('UserDefinedFieldModal.labels.required')}\n onChange={props.onCheckboxInputChange.bind(this, 'required')}\n />\n <Form.Checkbox\n error={props.isError('searchable')}\n checked={props.item.searchable}\n label={i18n.t('UserDefinedFieldModal.labels.searchable')}\n onChange={props.onCheckboxInputChange.bind(this, 'searchable')}\n />\n { props.item.data_type === DataTypes.select && (\n <Form.Checkbox\n error={props.isError('allow_multiple')}\n checked={props.item.allow_multiple}\n label={i18n.t('UserDefinedFieldModal.labels.allowMultiple')}\n onChange={props.onCheckboxInputChange.bind(this, 'allow_multiple')}\n />\n )}\n </Form.Group>\n { props.item.data_type === DataTypes.select && (\n <UserDefinedFieldOptions\n options={props.item.options}\n onChange={(options) => props.onSetState({ options })}\n />\n )}\n </Modal.Content>\n { props.children }\n </Modal>\n );\n};\n\nexport default UserDefinedFieldModal;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@performant-software/semantic-components\");","// @flow\n\nimport _ from 'underscore';\nimport i18n from '../i18n/i18n';\n\ntype ErrorProps = {\n key: string,\n error: Array<string>\n};\n\ntype ErrorReturn = {\n [key: string]: string\n};\n\nconst KEY_USER_DEFINED = 'user_defined';\n\nconst FIELD_DELIMITER = '.';\n\n/**\n * Returns the error for the passed user defined field.\n *\n * @param key\n * @param error\n *\n * @returns {{}|{[p: string]: *}}\n */\nconst resolveError = ({ key, error }: ErrorProps): ErrorReturn => {\n const errors = {};\n\n /**\n * Resolve errors returned when creating user defined fields.\n */\n if (key && key.startsWith(KEY_USER_DEFINED) && _.contains(key, FIELD_DELIMITER)) {\n const [, field] = key.split(FIELD_DELIMITER);\n _.extend(errors, { [`${KEY_USER_DEFINED}[${field}]`]: `${field} ${error}` });\n }\n\n /**\n * Resolve errors returned when entering data into user field fields.\n */\n if (key === KEY_USER_DEFINED && !_.isEmpty(error)) {\n const [field, message] = error;\n _.extend(errors, { [`${KEY_USER_DEFINED}[${field}]`]: message });\n }\n\n return errors;\n};\n\n/**\n * Validates the passed user defined field.\n *\n * @param item\n *\n * @returns {{}}\n */\nconst validateUserDefinedField = (item) => {\n const errors = {};\n\n if (!item.order) {\n _.extend(errors, { order: i18n.t('UserDefinedFields.errors.numeric', { name: 'order' }) });\n }\n\n return errors;\n};\n\nexport default {\n resolveError,\n validateUserDefinedField\n};\n","// @flow\n\nimport { BooleanIcon, EmbeddedList } from '@performant-software/semantic-components';\nimport React, { useCallback } from 'react';\nimport _ from 'underscore';\nimport i18n from '../i18n/i18n';\nimport UserDefinedFieldModal from './UserDefinedFieldModal';\nimport UserDefinedFields from '../utils/UserDefinedFields';\n\ntype Props = {\n defaults: any,\n excludeColumns?: Array<string>,\n items: Array<any>,\n onDelete: (item: any) => Promise<any>,\n onSave: (item: any) => Promise<any>\n};\n\nconst DEFAULT_ORDER = 0;\n\nconst UserDefinedFieldsEmbeddedList = (props: Props) => {\n /**\n * Returns true if the passed column should be hidden by default.\n *\n * @type {function(*): *}\n */\n const isHidden = useCallback((column) => _.contains(props.excludeColumns, column), [props.excludeColumns]);\n\n return (\n <EmbeddedList\n actions={[{\n name: 'edit'\n }, {\n name: 'delete'\n }]}\n columns={[{\n name: 'table_name',\n label: i18n.t('UserDefinedFieldsEmbeddedList.columns.table'),\n hidden: isHidden('table_name')\n }, {\n name: 'column_name',\n label: i18n.t('UserDefinedFieldsEmbeddedList.columns.name'),\n hidden: isHidden('column_name')\n }, {\n name: 'data_type',\n label: i18n.t('UserDefinedFieldsEmbeddedList.columns.dataType'),\n hidden: isHidden('data_type')\n }, {\n name: 'required',\n label: i18n.t('UserDefinedFieldsEmbeddedList.columns.required'),\n render: (udf) => <BooleanIcon value={udf.required} />,\n hidden: isHidden('required')\n }, {\n name: 'order',\n label: i18n.t('UserDefinedFieldsEmbeddedList.columns.order'),\n hidden: isHidden('order')\n }]}\n items={props.items}\n modal={{\n component: UserDefinedFieldModal,\n props: {\n defaults: {\n order: DEFAULT_ORDER,\n ...(props.defaults || {})\n },\n hideTable: isHidden('table_name'),\n validate: UserDefinedFields.validateUserDefinedField.bind(this)\n }\n }}\n onDelete={props.onDelete}\n onSave={props.onSave}\n />\n );\n};\n\nexport default UserDefinedFieldsEmbeddedList;\n","// @flow\n\nimport { DatePicker } from '@performant-software/semantic-components';\nimport { RichTextArea } from '@performant-software/shared-components';\nimport React, {\n useCallback,\n useEffect,\n useState,\n type ComponentType\n} from 'react';\nimport { Form } from 'semantic-ui-react';\nimport _ from 'underscore';\nimport UserDefinedFieldsService from '../services/UserDefinedFields';\n\ntype Props = {\n data: any,\n defineableId?: number,\n defineableType?: string,\n isError: (key: string) => boolean,\n onChange: (obj: any) => void,\n onClearValidationError: (...keys: Array<string>) => void,\n tableName?: string\n};\n\nconst DataTypes = {\n boolean: 'Boolean',\n date: 'Date',\n number: 'Number',\n richText: 'RichText',\n select: 'Select',\n string: 'String',\n text: 'Text'\n};\n\nconst UserDefinedFieldsForm: ComponentType<any> = (props: Props) => {\n const [fields, setFields] = useState([]);\n\n /**\n * Returns the key for the passed field.\n *\n * @type {function(*): string}\n */\n const getFieldKey = useCallback((field) => `user_defined[${field.uuid}]`, []);\n\n /**\n * Returns true if an error exists on the state for the passed field.\n *\n * @type {function(*): *}\n */\n const isError = useCallback((field) => props.isError(getFieldKey(field)), [getFieldKey, props.isError]);\n\n /**\n * Changes the value for the passed item.\n *\n * @type {(function(*, *): void)|*}\n */\n const onChange = useCallback((field, value) => {\n props.onChange({ ...props.data, [field.uuid]: value });\n\n // Clear the validation error if one exists\n if (props.onClearValidationError) {\n props.onClearValidationError(getFieldKey(field));\n }\n }, [getFieldKey, props.data, props.onChange, props.onClearValidationError]);\n\n /**\n * Renders the passed item.\n *\n * @type {function(*): *}\n */\n const renderItem = useCallback((field) => {\n let rendered;\n\n const fieldValue = props.data && props.data[field.uuid];\n\n if (field.data_type === DataTypes.string) {\n rendered = (\n <Form.Input\n error={isError(field)}\n label={field.column_name}\n required={field.required}\n onChange={(e, { value }) => onChange(field, value)}\n value={fieldValue}\n />\n );\n }\n\n if (field.data_type === DataTypes.number) {\n rendered = (\n <Form.Input\n error={isError(field)}\n label={field.column_name}\n required={field.required}\n onChange={(e, { value }) => onChange(field, value)}\n value={fieldValue}\n type='number'\n />\n );\n }\n\n if (field.data_type === DataTypes.select) {\n rendered = (\n <Form.Dropdown\n clearable\n error={isError(field)}\n label={field.column_name}\n multiple={field.allow_multiple}\n required={field.required}\n options={_.map(field.options, (option) => ({ key: option, value: option, text: option }))}\n onChange={(e, { value }) => onChange(field, value)}\n selectOnBlur={false}\n selection\n value={fieldValue}\n />\n );\n }\n\n if (field.data_type === DataTypes.text) {\n rendered = (\n <Form.TextArea\n error={isError(field)}\n label={field.column_name}\n required={field.required}\n onChange={(e, { value }) => onChange(field, value)}\n value={fieldValue}\n />\n );\n }\n\n if (field.data_type === DataTypes.date) {\n rendered = (\n <Form.Input\n error={isError(field)}\n label={field.column_name}\n required={field.required}\n >\n <DatePicker\n onChange={(date) => onChange(field, date && date.toISOString())}\n value={fieldValue && new Date(fieldValue)}\n />\n </Form.Input>\n );\n }\n\n if (field.data_type === DataTypes.boolean) {\n rendered = (\n <Form.Checkbox\n checked={!!fieldValue}\n error={isError(field)}\n label={field.column_name}\n onChange={(e, { checked }) => onChange(field, checked)}\n />\n );\n }\n\n if (field.data_type === DataTypes.richText) {\n rendered = (\n <Form.Input\n error={isError(field)}\n label={field.column_name}\n required={field.required}\n >\n <RichTextArea\n onChange={(value) => onChange(field, value)}\n value={fieldValue}\n />\n </Form.Input>\n );\n }\n\n return rendered;\n }, [props.data, isError, onChange]);\n\n /**\n * Fetches the user defined fields when the component mounts.\n */\n useEffect(() => {\n const params = {\n defineable_id: props.defineableId,\n defineable_type: props.defineableType,\n per_page: 0,\n sort_by: 'order',\n table_name: props.tableName\n };\n\n UserDefinedFieldsService\n .fetchAll(params)\n .then(({ data }) => setFields(data.user_defined_fields));\n }, []);\n\n return (\n <>\n { _.map(fields, renderItem.bind(this)) }\n </>\n );\n};\n\nexport default UserDefinedFieldsForm;\n","// @flow\n\nimport { BooleanIcon, ListTable } from '@performant-software/semantic-components';\nimport React, { type ComponentType, useCallback } from 'react';\nimport _ from 'underscore';\nimport i18n from '../i18n/i18n';\nimport UserDefinedFieldModal from './UserDefinedFieldModal';\nimport UserDefinedFields from '../utils/UserDefinedFields';\nimport UserDefinedFieldsService from '../services/UserDefinedFields';\n\ntype Props = {\n defaults?: any,\n excludeColumns?: Array<string>\n};\n\nconst DEFAULT_ORDER = 0;\n\nconst UserDefinedFieldsList: ComponentType<any> = (props: Props) => {\n /**\n * Returns true if the passed column should be hidden by default.\n *\n * @type {function(*): *}\n */\n const isHidden = useCallback((column) => _.contains(props.excludeColumns, column), [props.excludeColumns]);\n\n return (\n <ListTable\n actions={[{\n name: 'edit'\n }, {\n name: 'delete'\n }]}\n columns={[{\n name: 'table_name',\n label: i18n.t('UserDefinedFieldsList.columns.table'),\n hidden: isHidden('table_name')\n }, {\n name: 'column_name',\n label: i18n.t('UserDefinedFieldsList.columns.name'),\n hidden: isHidden('column_name')\n }, {\n name: 'data_type',\n label: i18n.t('UserDefinedFieldsList.columns.dataType'),\n hidden: isHidden('data_type')\n }, {\n name: 'required',\n label: i18n.t('UserDefinedFieldsList.columns.required'),\n render: (udf) => <BooleanIcon value={udf.required} />,\n hidden: isHidden('required')\n }, {\n name: 'order',\n label: i18n.t('UserDefinedFieldsList.columns.order'),\n hidden: isHidden('order')\n }]}\n collectionName='user_defined_fields'\n modal={{\n component: UserDefinedFieldModal,\n props: {\n defaults: {\n order: DEFAULT_ORDER,\n ...(props.defaults || {})\n },\n hideTable: isHidden('table_name'),\n validate: UserDefinedFields.validateUserDefinedField.bind(this)\n }\n }}\n onLoad={(params) => UserDefinedFieldsService.fetchAll(params)}\n onSave={(udf) => UserDefinedFieldsService.save(udf)}\n onDelete={(udf) => UserDefinedFieldsService.delete(udf)}\n />\n );\n};\n\nexport default UserDefinedFieldsList;\n","// @flow\n\nimport { Form as FormUtils } from '@performant-software/shared-components';\nimport _ from 'underscore';\n\n/**\n * Class responsible for transforming fieldable data.\n */\nclass Fieldable {\n /**\n * Converts the \"user_defined\" data for the passed fieldable item into form data.\n *\n * @param formData\n * @param prefix\n * @param item\n */\n toFormData(formData, prefix, item) {\n const { user_defined: userDefined } = item;\n\n _.each(_.keys(userDefined), (key) => {\n FormUtils.setAttribute(formData, `${prefix}[user_defined]`, userDefined, key);\n });\n }\n}\n\nconst FieldableTransform: Fieldable = new Fieldable();\nexport default FieldableTransform;\n","// @flow\n\nimport { NestedAttributesTransform } from '@performant-software/shared-components';\n\n/**\n * Class for transforming user defined field nested objects for PUT/POST requests.\n */\nclass UserDefinedFields extends NestedAttributesTransform {\n /**\n * Returns the user defined field payload keys.\n *\n * @returns {string[]}\n */\n getPayloadKeys(): Array<string> {\n return [\n 'id',\n 'table_name',\n 'column_name',\n 'data_type',\n 'required',\n 'searchable',\n 'allow_multiple',\n 'options',\n 'order',\n '_destroy'\n ];\n }\n\n /**\n * Converts the user defined field collection for the passed object to form data to be sent on\n * the request as nested attributes.\n *\n * @param formData\n * @param prefix\n * @param record\n * @param collection\n */\n toFormData(formData: FormData, prefix: string, record: any, collection: string = 'user_defined_fields'): void {\n return super.toFormData(formData, prefix, record, collection);\n }\n\n /**\n * Converts the user defined field collection for the passed object to JSON to be sent on\n * the request as nested attributes.\n *\n * @param record\n * @param collectionName\n *\n * @returns {{[p: string]: *}}\n */\n toPayload(record: any, collectionName: string = 'user_defined_fields'): any {\n return super.toPayload(record, collectionName);\n }\n}\n\nconst UserDefinedFieldsTransform: UserDefinedFields = new UserDefinedFields();\nexport default UserDefinedFieldsTransform;\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","resources","en","translation","i18n","i18next","init","debug","fallbackLng","lng","interpolation","escapeValue","props","useState","_","options","option","setOptions","onAddOption","useCallback","prevOptions","new","onDeleteOption","findIndex","index","onSaveOption","onUpdateOption","e","useEffect","savedOptions","onChange","className","Button","basic","icon","onClick","type","Label","Input","autoFocus","bind","color","size","content","onRemove","BaseTransform","this","getAxios","UserDefinedField","BaseService","DataTypes","dataTypeOptions","setDataTypeOptions","tableOptions","setTableOptions","transformOptions","items","item","text","hideTable","UserDefinedFieldsService","then","data","tables","data_types","Modal","as","Form","centered","open","id","clearable","error","isError","label","onTextInputChange","required","isRequired","selection","selectOnBlur","table_name","column_name","data_type","order","checked","onCheckboxInputChange","searchable","allow_multiple","onSetState","children","KEY_USER_DEFINED","resolveError","errors","startsWith","field","split","message","validateUserDefinedField","name","isHidden","column","excludeColumns","EmbeddedList","actions","columns","hidden","render","udf","BooleanIcon","modal","component","UserDefinedFieldModal","defaults","validate","UserDefinedFields","onDelete","onSave","fields","setFields","getFieldKey","uuid","onClearValidationError","renderItem","rendered","fieldValue","multiple","DatePicker","date","toISOString","Date","RichTextArea","params","defineable_id","defineableId","defineable_type","defineableType","per_page","sort_by","tableName","user_defined_fields","ListTable","collectionName","onLoad","formData","prefix","userDefined","user_defined","FormUtils","record","collection","NestedAttributesTransform"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@performant-software/user-defined-fields",
3
- "version": "1.0.20",
3
+ "version": "1.0.21",
4
4
  "description": "A package of components used for allowing end users to define fields on models. Use with the \"user_defined_fields\" gem.",
5
5
  "license": "MIT",
6
6
  "main": "./build/index.js",
@@ -9,8 +9,8 @@
9
9
  "build": "webpack --mode production && flow-copy-source -v src types"
10
10
  },
11
11
  "dependencies": {
12
- "@performant-software/semantic-components": "^1.0.20",
13
- "@performant-software/shared-components": "^1.0.20",
12
+ "@performant-software/semantic-components": "^1.0.21",
13
+ "@performant-software/shared-components": "^1.0.21",
14
14
  "i18next": "^21.9.1",
15
15
  "semantic-ui-react": "^2.1.2",
16
16
  "underscore": "^1.13.2"
@@ -40,7 +40,7 @@ const UserDefinedFieldsForm: ComponentType<any> = (props: Props) => {
40
40
  *
41
41
  * @type {function(*): string}
42
42
  */
43
- const getFieldKey = useCallback((field) => `user_defined[${field.column_name}]`, []);
43
+ const getFieldKey = useCallback((field) => `user_defined[${field.uuid}]`, []);
44
44
 
45
45
  /**
46
46
  * Returns true if an error exists on the state for the passed field.
@@ -55,7 +55,7 @@ const UserDefinedFieldsForm: ComponentType<any> = (props: Props) => {
55
55
  * @type {(function(*, *): void)|*}
56
56
  */
57
57
  const onChange = useCallback((field, value) => {
58
- props.onChange({ ...props.data, [field.column_name]: value });
58
+ props.onChange({ ...props.data, [field.uuid]: value });
59
59
 
60
60
  // Clear the validation error if one exists
61
61
  if (props.onClearValidationError) {
@@ -71,7 +71,7 @@ const UserDefinedFieldsForm: ComponentType<any> = (props: Props) => {
71
71
  const renderItem = useCallback((field) => {
72
72
  let rendered;
73
73
 
74
- const fieldValue = props.data && props.data[field.column_name];
74
+ const fieldValue = props.data && props.data[field.uuid];
75
75
 
76
76
  if (field.data_type === DataTypes.string) {
77
77
  rendered = (
@@ -40,7 +40,7 @@ const UserDefinedFieldsForm: ComponentType<any> = (props: Props) => {
40
40
  *
41
41
  * @type {function(*): string}
42
42
  */
43
- const getFieldKey = useCallback((field) => `user_defined[${field.column_name}]`, []);
43
+ const getFieldKey = useCallback((field) => `user_defined[${field.uuid}]`, []);
44
44
 
45
45
  /**
46
46
  * Returns true if an error exists on the state for the passed field.
@@ -55,7 +55,7 @@ const UserDefinedFieldsForm: ComponentType<any> = (props: Props) => {
55
55
  * @type {(function(*, *): void)|*}
56
56
  */
57
57
  const onChange = useCallback((field, value) => {
58
- props.onChange({ ...props.data, [field.column_name]: value });
58
+ props.onChange({ ...props.data, [field.uuid]: value });
59
59
 
60
60
  // Clear the validation error if one exists
61
61
  if (props.onClearValidationError) {
@@ -71,7 +71,7 @@ const UserDefinedFieldsForm: ComponentType<any> = (props: Props) => {
71
71
  const renderItem = useCallback((field) => {
72
72
  let rendered;
73
73
 
74
- const fieldValue = props.data && props.data[field.column_name];
74
+ const fieldValue = props.data && props.data[field.uuid];
75
75
 
76
76
  if (field.data_type === DataTypes.string) {
77
77
  rendered = (