import React, { useEffect } from 'react'; import { InputBase, Grid, Box, Typography, TextField, NativeSelect, GridList, GridListTile, Dialog, DialogTitle, DialogContent, Button, TableContainer, Table, TableHead, TableRow, TableCell, TableBody, IconButton, Menu, MenuItem, DialogActions } from '@material-ui/core'; import AddIcon from '@material-ui/icons/Add'; import { withStyles, makeStyles } from '@material-ui/core/styles'; import Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete'; import Table$1 from '@material-ui/core/Table'; import TableBody$1 from '@material-ui/core/TableBody'; import TableCell$1 from '@material-ui/core/TableCell'; import TableContainer$1 from '@material-ui/core/TableContainer'; import TableHead$1 from '@material-ui/core/TableHead'; import TablePagination from '@material-ui/core/TablePagination'; import TableRow$1 from '@material-ui/core/TableRow'; import TableSortLabel from '@material-ui/core/TableSortLabel'; import '@material-ui/core/Typography'; import EditIcon from '@material-ui/icons/Edit'; import ExpandMore from '@material-ui/icons/ExpandMore'; import CircularProgress from '@material-ui/core/CircularProgress'; function List({ groupName, members = [] }) { return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h1", null, "1.0.3"), /*#__PURE__*/React.createElement("h5", null, "Group: ", /*#__PURE__*/React.createElement("em", null, groupName)), /*#__PURE__*/React.createElement("ul", null, /*#__PURE__*/React.createElement("p", null, "Members"), members.map(member => /*#__PURE__*/React.createElement("li", { key: member }, member)))); } function createCommonjsModule(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; } /** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b? Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119; function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}var AsyncMode=l;var ConcurrentMode=m;var ContextConsumer=k;var ContextProvider=h;var Element=c;var ForwardRef=n;var Fragment=e;var Lazy=t;var Memo=r;var Portal=d; var Profiler=g;var StrictMode=f;var Suspense=p;var isAsyncMode=function(a){return A(a)||z(a)===l};var isConcurrentMode=A;var isContextConsumer=function(a){return z(a)===k};var isContextProvider=function(a){return z(a)===h};var isElement=function(a){return "object"===typeof a&&null!==a&&a.$$typeof===c};var isForwardRef=function(a){return z(a)===n};var isFragment=function(a){return z(a)===e};var isLazy=function(a){return z(a)===t}; var isMemo=function(a){return z(a)===r};var isPortal=function(a){return z(a)===d};var isProfiler=function(a){return z(a)===g};var isStrictMode=function(a){return z(a)===f};var isSuspense=function(a){return z(a)===p}; var isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};var typeOf=z; var reactIs_production_min = { AsyncMode: AsyncMode, ConcurrentMode: ConcurrentMode, ContextConsumer: ContextConsumer, ContextProvider: ContextProvider, Element: Element, ForwardRef: ForwardRef, Fragment: Fragment, Lazy: Lazy, Memo: Memo, Portal: Portal, Profiler: Profiler, StrictMode: StrictMode, Suspense: Suspense, isAsyncMode: isAsyncMode, isConcurrentMode: isConcurrentMode, isContextConsumer: isContextConsumer, isContextProvider: isContextProvider, isElement: isElement, isForwardRef: isForwardRef, isFragment: isFragment, isLazy: isLazy, isMemo: isMemo, isPortal: isPortal, isProfiler: isProfiler, isStrictMode: isStrictMode, isSuspense: isSuspense, isValidElementType: isValidElementType, typeOf: typeOf }; var reactIs_development = createCommonjsModule(function (module, exports) { if (process.env.NODE_ENV !== "production") { (function() { // The Symbol used to tag the ReactElement-like types. If there is no native Symbol // nor polyfill, then a plain number is used for performance. var hasSymbol = typeof Symbol === 'function' && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary // (unstable) APIs that have been removed. Can we remove the symbols? var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; function isValidElementType(type) { return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); } function typeOf(object) { if (typeof object === 'object' && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_ASYNC_MODE_TYPE: case REACT_CONCURRENT_MODE_TYPE: case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } return undefined; } // AsyncMode is deprecated along with isAsyncMode var AsyncMode = REACT_ASYNC_MODE_TYPE; var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated function isAsyncMode(object) { { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); } } return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; } function isConcurrentMode(object) { return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } exports.AsyncMode = AsyncMode; exports.ConcurrentMode = ConcurrentMode; exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); } }); var reactIs = createCommonjsModule(function (module) { if (process.env.NODE_ENV === 'production') { module.exports = reactIs_production_min; } else { module.exports = reactIs_development; } }); /* object-assign (c) Sindre Sorhus @license MIT */ /* eslint-disable no-unused-vars */ var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; function toObject(val) { if (val === null || val === undefined) { throw new TypeError('Object.assign cannot be called with null or undefined'); } return Object(val); } function shouldUseNative() { try { if (!Object.assign) { return false; } // Detect buggy property enumeration order in older V8 versions. // https://bugs.chromium.org/p/v8/issues/detail?id=4118 var test1 = new String('abc'); // eslint-disable-line no-new-wrappers test1[5] = 'de'; if (Object.getOwnPropertyNames(test1)[0] === '5') { return false; } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 var test2 = {}; for (var i = 0; i < 10; i++) { test2['_' + String.fromCharCode(i)] = i; } var order2 = Object.getOwnPropertyNames(test2).map(function (n) { return test2[n]; }); if (order2.join('') !== '0123456789') { return false; } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 var test3 = {}; 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { test3[letter] = letter; }); if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') { return false; } return true; } catch (err) { // We don't expect any of the above to throw, but better to be safe. return false; } } var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { var from; var to = toObject(target); var symbols; for (var s = 1; s < arguments.length; s++) { from = Object(arguments[s]); for (var key in from) { if (hasOwnProperty.call(from, key)) { to[key] = from[key]; } } if (getOwnPropertySymbols) { symbols = getOwnPropertySymbols(from); for (var i = 0; i < symbols.length; i++) { if (propIsEnumerable.call(from, symbols[i])) { to[symbols[i]] = from[symbols[i]]; } } } } return to; }; /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; var ReactPropTypesSecret_1 = ReactPropTypesSecret; var printWarning = function() {}; if (process.env.NODE_ENV !== 'production') { var ReactPropTypesSecret$1 = ReactPropTypesSecret_1; var loggedTypeFailures = {}; var has = Function.call.bind(Object.prototype.hasOwnProperty); printWarning = function(text) { var message = 'Warning: ' + text; if (typeof console !== 'undefined') { console.error(message); } try { // --- Welcome to debugging React --- // This error was thrown as a convenience so that you can use this stack // to find the callsite that caused this warning to fire. throw new Error(message); } catch (x) {} }; } /** * Assert that the values match with the type specs. * Error messages are memorized and will only be shown once. * * @param {object} typeSpecs Map of name to a ReactPropType * @param {object} values Runtime values that need to be type-checked * @param {string} location e.g. "prop", "context", "child context" * @param {string} componentName Name of the component for error messages. * @param {?Function} getStack Returns the component stack. * @private */ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { if (process.env.NODE_ENV !== 'production') { for (var typeSpecName in typeSpecs) { if (has(typeSpecs, typeSpecName)) { var error; // Prop type validation may throw. In case they do, we don't want to // fail the render phase where it didn't fail before. So we log it. // After these have been cleaned up, we'll let them throw. try { // This is intentionally an invariant that gets caught. It's the same // behavior as without this statement except with a better message. if (typeof typeSpecs[typeSpecName] !== 'function') { var err = Error( (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' ); err.name = 'Invariant Violation'; throw err; } error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1); } catch (ex) { error = ex; } if (error && !(error instanceof Error)) { printWarning( (componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).' ); } if (error instanceof Error && !(error.message in loggedTypeFailures)) { // Only monitor this failure once because there tends to be a lot of the // same error. loggedTypeFailures[error.message] = true; var stack = getStack ? getStack() : ''; printWarning( 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') ); } } } } } /** * Resets warning cache when testing. * * @private */ checkPropTypes.resetWarningCache = function() { if (process.env.NODE_ENV !== 'production') { loggedTypeFailures = {}; } }; var checkPropTypes_1 = checkPropTypes; var has$1 = Function.call.bind(Object.prototype.hasOwnProperty); var printWarning$1 = function() {}; if (process.env.NODE_ENV !== 'production') { printWarning$1 = function(text) { var message = 'Warning: ' + text; if (typeof console !== 'undefined') { console.error(message); } try { // --- Welcome to debugging React --- // This error was thrown as a convenience so that you can use this stack // to find the callsite that caused this warning to fire. throw new Error(message); } catch (x) {} }; } function emptyFunctionThatReturnsNull() { return null; } var factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) { /* global Symbol */ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. /** * Returns the iterator method function contained on the iterable object. * * Be sure to invoke the function with the iterable as context: * * var iteratorFn = getIteratorFn(myIterable); * if (iteratorFn) { * var iterator = iteratorFn.call(myIterable); * ... * } * * @param {?object} maybeIterable * @return {?function} */ function getIteratorFn(maybeIterable) { var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); if (typeof iteratorFn === 'function') { return iteratorFn; } } /** * Collection of methods that allow declaration and validation of props that are * supplied to React components. Example usage: * * var Props = require('ReactPropTypes'); * var MyArticle = React.createClass({ * propTypes: { * // An optional string prop named "description". * description: Props.string, * * // A required enum prop named "category". * category: Props.oneOf(['News','Photos']).isRequired, * * // A prop named "dialog" that requires an instance of Dialog. * dialog: Props.instanceOf(Dialog).isRequired * }, * render: function() { ... } * }); * * A more formal specification of how these methods are used: * * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) * decl := ReactPropTypes.{type}(.isRequired)? * * Each and every declaration produces a function with the same signature. This * allows the creation of custom validation functions. For example: * * var MyLink = React.createClass({ * propTypes: { * // An optional string or URI prop named "href". * href: function(props, propName, componentName) { * var propValue = props[propName]; * if (propValue != null && typeof propValue !== 'string' && * !(propValue instanceof URI)) { * return new Error( * 'Expected a string or an URI for ' + propName + ' in ' + * componentName * ); * } * } * }, * render: function() {...} * }); * * @internal */ var ANONYMOUS = '<>'; // Important! // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. var ReactPropTypes = { array: createPrimitiveTypeChecker('array'), bool: createPrimitiveTypeChecker('boolean'), func: createPrimitiveTypeChecker('function'), number: createPrimitiveTypeChecker('number'), object: createPrimitiveTypeChecker('object'), string: createPrimitiveTypeChecker('string'), symbol: createPrimitiveTypeChecker('symbol'), any: createAnyTypeChecker(), arrayOf: createArrayOfTypeChecker, element: createElementTypeChecker(), elementType: createElementTypeTypeChecker(), instanceOf: createInstanceTypeChecker, node: createNodeChecker(), objectOf: createObjectOfTypeChecker, oneOf: createEnumTypeChecker, oneOfType: createUnionTypeChecker, shape: createShapeTypeChecker, exact: createStrictShapeTypeChecker, }; /** * inlined Object.is polyfill to avoid requiring consumers ship their own * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is */ /*eslint-disable no-self-compare*/ function is(x, y) { // SameValue algorithm if (x === y) { // Steps 1-5, 7-10 // Steps 6.b-6.e: +0 != -0 return x !== 0 || 1 / x === 1 / y; } else { // Step 6.a: NaN == NaN return x !== x && y !== y; } } /*eslint-enable no-self-compare*/ /** * We use an Error-like object for backward compatibility as people may call * PropTypes directly and inspect their output. However, we don't use real * Errors anymore. We don't inspect their stack anyway, and creating them * is prohibitively expensive if they are created too often, such as what * happens in oneOfType() for any type before the one that matched. */ function PropTypeError(message) { this.message = message; this.stack = ''; } // Make `instanceof Error` still work for returned errors. PropTypeError.prototype = Error.prototype; function createChainableTypeChecker(validate) { if (process.env.NODE_ENV !== 'production') { var manualPropTypeCallCache = {}; var manualPropTypeWarningCount = 0; } function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { componentName = componentName || ANONYMOUS; propFullName = propFullName || propName; if (secret !== ReactPropTypesSecret_1) { if (throwOnDirectAccess) { // New behavior only for users of `prop-types` package var err = new Error( 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types' ); err.name = 'Invariant Violation'; throw err; } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') { // Old behavior for people using React.PropTypes var cacheKey = componentName + ':' + propName; if ( !manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors manualPropTypeWarningCount < 3 ) { printWarning$1( 'You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' ); manualPropTypeCallCache[cacheKey] = true; manualPropTypeWarningCount++; } } } if (props[propName] == null) { if (isRequired) { if (props[propName] === null) { return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); } return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); } return null; } else { return validate(props, propName, componentName, location, propFullName); } } var chainedCheckType = checkType.bind(null, false); chainedCheckType.isRequired = checkType.bind(null, true); return chainedCheckType; } function createPrimitiveTypeChecker(expectedType) { function validate(props, propName, componentName, location, propFullName, secret) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== expectedType) { // `propValue` being instance of, say, date/regexp, pass the 'object' // check, but we can offer a more precise error message here rather than // 'of type `object`'. var preciseType = getPreciseType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); } return null; } return createChainableTypeChecker(validate); } function createAnyTypeChecker() { return createChainableTypeChecker(emptyFunctionThatReturnsNull); } function createArrayOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== 'function') { return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); } var propValue = props[propName]; if (!Array.isArray(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); } for (var i = 0; i < propValue.length; i++) { var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1); if (error instanceof Error) { return error; } } return null; } return createChainableTypeChecker(validate); } function createElementTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!isValidElement(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); } return null; } return createChainableTypeChecker(validate); } function createElementTypeTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!reactIs.isValidElementType(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); } return null; } return createChainableTypeChecker(validate); } function createInstanceTypeChecker(expectedClass) { function validate(props, propName, componentName, location, propFullName) { if (!(props[propName] instanceof expectedClass)) { var expectedClassName = expectedClass.name || ANONYMOUS; var actualClassName = getClassName(props[propName]); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); } return null; } return createChainableTypeChecker(validate); } function createEnumTypeChecker(expectedValues) { if (!Array.isArray(expectedValues)) { if (process.env.NODE_ENV !== 'production') { if (arguments.length > 1) { printWarning$1( 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' ); } else { printWarning$1('Invalid argument supplied to oneOf, expected an array.'); } } return emptyFunctionThatReturnsNull; } function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; for (var i = 0; i < expectedValues.length; i++) { if (is(propValue, expectedValues[i])) { return null; } } var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { var type = getPreciseType(value); if (type === 'symbol') { return String(value); } return value; }); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); } return createChainableTypeChecker(validate); } function createObjectOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== 'function') { return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); } var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); } for (var key in propValue) { if (has$1(propValue, key)) { var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1); if (error instanceof Error) { return error; } } } return null; } return createChainableTypeChecker(validate); } function createUnionTypeChecker(arrayOfTypeCheckers) { if (!Array.isArray(arrayOfTypeCheckers)) { process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; return emptyFunctionThatReturnsNull; } for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; if (typeof checker !== 'function') { printWarning$1( 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' ); return emptyFunctionThatReturnsNull; } } function validate(props, propName, componentName, location, propFullName) { for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) { return null; } } return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); } return createChainableTypeChecker(validate); } function createNodeChecker() { function validate(props, propName, componentName, location, propFullName) { if (!isNode(props[propName])) { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); } return null; } return createChainableTypeChecker(validate); } function createShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); } for (var key in shapeTypes) { var checker = shapeTypes[key]; if (!checker) { continue; } var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1); if (error) { return error; } } return null; } return createChainableTypeChecker(validate); } function createStrictShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); } // We need to check all keys in case some are required but missing from // props. var allKeys = objectAssign({}, props[propName], shapeTypes); for (var key in allKeys) { var checker = shapeTypes[key]; if (!checker) { return new PropTypeError( 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') ); } var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1); if (error) { return error; } } return null; } return createChainableTypeChecker(validate); } function isNode(propValue) { switch (typeof propValue) { case 'number': case 'string': case 'undefined': return true; case 'boolean': return !propValue; case 'object': if (Array.isArray(propValue)) { return propValue.every(isNode); } if (propValue === null || isValidElement(propValue)) { return true; } var iteratorFn = getIteratorFn(propValue); if (iteratorFn) { var iterator = iteratorFn.call(propValue); var step; if (iteratorFn !== propValue.entries) { while (!(step = iterator.next()).done) { if (!isNode(step.value)) { return false; } } } else { // Iterator will provide entry [k,v] tuples rather than values. while (!(step = iterator.next()).done) { var entry = step.value; if (entry) { if (!isNode(entry[1])) { return false; } } } } } else { return false; } return true; default: return false; } } function isSymbol(propType, propValue) { // Native Symbol. if (propType === 'symbol') { return true; } // falsy value can't be a Symbol if (!propValue) { return false; } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' if (propValue['@@toStringTag'] === 'Symbol') { return true; } // Fallback for non-spec compliant Symbols which are polyfilled. if (typeof Symbol === 'function' && propValue instanceof Symbol) { return true; } return false; } // Equivalent of `typeof` but with special handling for array and regexp. function getPropType(propValue) { var propType = typeof propValue; if (Array.isArray(propValue)) { return 'array'; } if (propValue instanceof RegExp) { // Old webkits (at least until Android 4.0) return 'function' rather than // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ // passes PropTypes.object. return 'object'; } if (isSymbol(propType, propValue)) { return 'symbol'; } return propType; } // This handles more types than `getPropType`. Only used for error messages. // See `createPrimitiveTypeChecker`. function getPreciseType(propValue) { if (typeof propValue === 'undefined' || propValue === null) { return '' + propValue; } var propType = getPropType(propValue); if (propType === 'object') { if (propValue instanceof Date) { return 'date'; } else if (propValue instanceof RegExp) { return 'regexp'; } } return propType; } // Returns a string that is postfixed to a warning about an invalid type. // For example, "undefined" or "of type array" function getPostfixForTypeWarning(value) { var type = getPreciseType(value); switch (type) { case 'array': case 'object': return 'an ' + type; case 'boolean': case 'date': case 'regexp': return 'a ' + type; default: return type; } } // Returns class name of the object, if any. function getClassName(propValue) { if (!propValue.constructor || !propValue.constructor.name) { return ANONYMOUS; } return propValue.constructor.name; } ReactPropTypes.checkPropTypes = checkPropTypes_1; ReactPropTypes.resetWarningCache = checkPropTypes_1.resetWarningCache; ReactPropTypes.PropTypes = ReactPropTypes; return ReactPropTypes; }; function emptyFunction() {} function emptyFunctionWithReset() {} emptyFunctionWithReset.resetWarningCache = emptyFunction; var factoryWithThrowingShims = function() { function shim(props, propName, componentName, location, propFullName, secret) { if (secret === ReactPropTypesSecret_1) { // It is still safe when called from React. return; } var err = new Error( 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types' ); err.name = 'Invariant Violation'; throw err; } shim.isRequired = shim; function getShim() { return shim; } // Important! // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. var ReactPropTypes = { array: shim, bool: shim, func: shim, number: shim, object: shim, string: shim, symbol: shim, any: shim, arrayOf: getShim, element: shim, elementType: shim, instanceOf: getShim, node: shim, objectOf: getShim, oneOf: getShim, oneOfType: getShim, shape: getShim, exact: getShim, checkPropTypes: emptyFunctionWithReset, resetWarningCache: emptyFunction }; ReactPropTypes.PropTypes = ReactPropTypes; return ReactPropTypes; }; var propTypes = createCommonjsModule(function (module) { /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ if (process.env.NODE_ENV !== 'production') { var ReactIs = reactIs; // By explicitly using `prop-types` you are opting into new development behavior. // http://fb.me/prop-types-in-prod var throwOnDirectAccess = true; module.exports = factoryWithTypeCheckers(ReactIs.isElement, throwOnDirectAccess); } else { // By explicitly using `prop-types` you are opting into new production behavior. // http://fb.me/prop-types-in-prod module.exports = factoryWithThrowingShims(); } }); const filter = createFilterOptions(); const BootstrapInput = withStyles(theme => ({ root: { 'label + &': { marginTop: theme.spacing(3) } }, input: { borderRadius: 4, position: 'relative', backgroundColor: 'transparent', border: '1px solid #ced4da', fontSize: 16, padding: '10px 26px 10px 12px', transition: theme.transitions.create(['border-color', 'box-shadow']), fontFamily: ['-apple-system', 'BlinkMacSystemFont', '"Segoe UI"', 'Roboto', '"Helvetica Neue"', 'Arial', 'sans-serif', '"Apple Color Emoji"', '"Segoe UI Emoji"', '"Segoe UI Symbol"'].join(','), '&:focus': { borderRadius: 4, borderColor: '#80bdff', boxShadow: '0 0 0 0.2rem rgba(0,123,255,.25)' } } }))(InputBase); const useStyles = makeStyles(theme => ({ root: { width: '100%' }, paper: { width: '100%', marginBottom: theme.spacing(2) }, table: { minWidth: 750 }, visuallyHidden: { border: 0, clip: 'rect(0 0 0 0)', height: 1, margin: -1, overflow: 'hidden', padding: 0, position: 'absolute', top: 20, width: 1 }, underline: { "&&&:before": { borderBottom: "none" }, "&&:after": { borderBottom: "none" } } })); function MButton(props) { const classes = useStyles(); const { action, onCallback } = props; const handleAction = e => { e.preventDefault(); onCallback(e); }; return /*#__PURE__*/React.createElement("div", { className: classes.root }, /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { variant: "contained", style: { float: 'right', margin: "5px" }, onClick: e => handleAction(e) }, action.icon, action.label))); } MButton.propTypes = { history: propTypes.object, action: propTypes.object.isRequired, onCallback: propTypes.func.isRequired }; function MkForm(props) { const classes = useStyles(); const { fields = [], data = {}, onDropdownCreateNew, actions = [], partHeaders } = props; const [_data, setDataField] = React.useState(data !== undefined ? data : {}); const [open, setOpen] = React.useState(false); const [selectedPhoto, setSelectedPhoto] = React.useState("#"); const handleTextString = (e, fieldName) => { setDataField({ ..._data, [fieldName]: e.target.value }); }; const handleTextNumber = (e, fieldName) => { setDataField({ ..._data, [fieldName]: e.target.value }); }; const handleTextMultiline = (e, fieldName) => { setDataField({ ..._data, [fieldName]: e.target.value }); }; const handleDate = (e, fieldName) => { setDataField({ ..._data, [fieldName]: e.target.value }); }; const handleDropDownChange = (e, fieldName) => { var selectedIndex = e.target.options.selectedIndex; var selectedValue = e.target.options[selectedIndex].getAttribute('name'); var fn = fieldName.split('_'); var fieldId = fn[0] + '_' + 'id'; setDataField({ ..._data, [fieldName]: selectedValue, [fieldId]: e.target.value }); }; const handleCanCreateNew = data => { onDropdownCreateNew(data); }; const onChangeValue = (fieldName, value) => { setDataField({ ..._data, [fieldName]: value }); }; const onFileChange = (e, f) => {}; const handleSelectItemDialog = () => {}; return /*#__PURE__*/React.createElement("div", { className: classes.root }, /*#__PURE__*/React.createElement(Grid, { container: true }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12 }, fields.map((f, i) => { if (f.type === 'text_string') { return /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 5 }, /*#__PURE__*/React.createElement(Box, { style: { width: '150px' } }, /*#__PURE__*/React.createElement(Typography, { style: { paddingRight: '30px', color: 'grey' } }, f.label))), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, /*#__PURE__*/React.createElement(TextField, { id: f.field_name, variant: "outlined", autoComplete: "off", size: "small", style: { width: '100%' }, InputProps: { readOnly: f.readOnly ? f.readOnly : false }, value: _data !== undefined ? _data[f.field_name] : '', onChange: e => handleTextString(e, f.field_name) }))); } else if (f.type === 'text_number') { return /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 5 }, /*#__PURE__*/React.createElement(Box, { style: { width: '150px' } }, /*#__PURE__*/React.createElement(Typography, { style: { paddingRight: '30px', color: 'grey' } }, f.label))), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, /*#__PURE__*/React.createElement(TextField, { id: f.field_name, variant: "outlined", autoComplete: "off", size: "small", style: { width: '100%' }, type: "number", value: _data !== undefined ? _data[f.field_name] : '', onChange: e => handleTextNumber(e, f.field_name) }))); } else if (f.type === 'text_multiline') { return /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 5 }, /*#__PURE__*/React.createElement(Box, { style: { width: '150px' } }, /*#__PURE__*/React.createElement(Typography, { style: { paddingRight: '30px', color: 'grey' } }, f.label))), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, /*#__PURE__*/React.createElement(TextField, { id: f.field_name, multiline: true, autoComplete: "off", rows: 3, size: "small", style: { width: '100%' }, value: _data !== undefined ? _data[f.field_name] : '', variant: "outlined", onChange: e => handleTextMultiline(e, f.field_name) }))); } else if (f.type === 'date') { return /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 5 }, /*#__PURE__*/React.createElement(Box, { style: { width: '150px' } }, /*#__PURE__*/React.createElement(Typography, { style: { paddingRight: '30px', color: 'grey' } }, f.label))), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, /*#__PURE__*/React.createElement(TextField, { id: f.field_name, variant: "outlined", autoComplete: "off", size: "small", value: _data !== undefined ? _data[f.field_name] : '', type: "date", style: { width: '100%' }, onChange: e => handleDate(e, f.field_name) }))); } else if (f.type === 'dropdown') { if (f.options !== undefined && f.option_label_field !== undefined) { if (f.field_name === 'priority') { return /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 5 }, /*#__PURE__*/React.createElement(Box, { style: { width: '150px' } }, /*#__PURE__*/React.createElement(Typography, { style: { paddingRight: '30px', color: 'grey' } }, f.label))), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, /*#__PURE__*/React.createElement(NativeSelect, { value: _data !== undefined ? _data[f.field_name] : '', onChange: e => handleDropDownChange(e, f.field_name), id: f.field_name, input: /*#__PURE__*/React.createElement(BootstrapInput, null), style: { width: '100%' } }, /*#__PURE__*/React.createElement("option", { "aria-label": "None", value: "" }, "Select"), f.options.map((d, i) => { return /*#__PURE__*/React.createElement("option", { name: d.name, value: d.id, key: d.id }, d.name); })))); } else { return /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 5 }, /*#__PURE__*/React.createElement(Box, { style: { width: '150px' } }, /*#__PURE__*/React.createElement(Typography, { style: { paddingRight: '30px', color: 'grey' } }, f.label))), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, /*#__PURE__*/React.createElement(Autocomplete, { id: "combo-box-demo", options: f.options, getOptionLabel: option => { if (typeof option === 'string') { return option; } return option[f.option_label_field]; }, style: { width: '100%' }, size: "small", value: _data !== undefined ? _data[f.field_name] ? _data[f.field_name] : " " : " ", filterOptions: (options, params) => { console.log("Autocomplete", f.can_create); if (f.can_create) { var newFilter = ['+ Add New']; var filtered = filter(options, params); return [...newFilter, ...filtered]; } else { var _filtered = filter(options, params); return _filtered; } }, onChange: (event, newValue) => { if (typeof newValue === 'string') { console.log('f.field_name', f.field_name, " f.can_create", f.can_create); var d = { "canCreate": f.can_create, "fields": f.fields, "name": f.name, "fieldName": f.field_name }; handleCanCreateNew(d); } else { if (newValue != null && newValue.inputValue !== '' && newValue.product_desc !== "") { onChangeValue(f.field_name, newValue[f.option_label_field]); } } }, renderInput: params => /*#__PURE__*/React.createElement(TextField, Object.assign({}, params, { variant: "outlined" })) }))); } } } else if (f.type === 'photo_list') { console.log('photo_list:', _data); return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 5 }, /*#__PURE__*/React.createElement(Box, { style: { width: '150px' } }, /*#__PURE__*/React.createElement(Typography, { style: { paddingRight: '30px', color: 'grey' } }, f.label))), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, /*#__PURE__*/React.createElement("div", { style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement("form", null, /*#__PURE__*/React.createElement("div", { className: "form-group" }, /*#__PURE__*/React.createElement("input", { type: "file", name: "imgCollection", onChange: e => onFileChange(), multiple: true })))))), _data[f.field_name] !== undefined && _data[f.field_name].length !== 0 ? /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12 }, /*#__PURE__*/React.createElement("div", { style: { display: 'block', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(GridList, { className: classes.gridList }, _data[f.field_name] === undefined ? /*#__PURE__*/React.createElement("span", null) : _data[f.field_name].map(tile => /*#__PURE__*/React.createElement(GridListTile, { key: tile, style: { width: '100px', height: '100px' } }, /*#__PURE__*/React.createElement("img", { src: tile, alt: tile, onClick: e => { setOpen(true); } })))))), /*#__PURE__*/React.createElement(Dialog, { maxWidth: "lg", "aria-labelledby": "customized-dialog-title", open: open }, /*#__PURE__*/React.createElement(DialogTitle, { id: "customized-dialog-title", onClose: e => setOpen(false) }, "Photos"), /*#__PURE__*/React.createElement(DialogContent, { dividers: true }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12 }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement("img", { src: selectedPhoto, className: "show-img", alt: "logo" })), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(Grid, { container: true, spacing: 3 }, _data[f.field_name].length > 0 ? _data[f.field_name].map(value => /*#__PURE__*/React.createElement(Grid, { key: value, item: true }, /*#__PURE__*/React.createElement(Box, { className: "square" }, " ", /*#__PURE__*/React.createElement("img", { src: value, className: "thumnail-img", alt: "logo", onClick: e => setSelectedPhoto(value) })))) : /*#__PURE__*/React.createElement("span", null)))))) : /*#__PURE__*/React.createElement(Grid, null)); } else if (f.type === 'list') { console.log('list', _data[f.field_name]); return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 5 }, /*#__PURE__*/React.createElement(Box, { style: { width: '150px' } }, /*#__PURE__*/React.createElement(Typography, { style: { paddingRight: '30px', color: 'grey' } }, f.label))), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, /*#__PURE__*/React.createElement("div", { style: { display: 'block', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { onClick: handleSelectItemDialog }, /*#__PURE__*/React.createElement(AddIcon, null)))))), /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'block', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement("div", { style: { display: 'block', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(TableContainer, null, /*#__PURE__*/React.createElement(Table, { className: classes.table, size: "small", "aria-label": "a dense table" }, /*#__PURE__*/React.createElement(TableHead, null, /*#__PURE__*/React.createElement(TableRow, null, partHeaders.map((h, i) => { return /*#__PURE__*/React.createElement(TableCell, { key: h.id, align: "left" }, h.label); }))), /*#__PURE__*/React.createElement(TableBody, null, _data[f.field_name].length > 0 ? _data[f.field_name].map(row => /*#__PURE__*/React.createElement(TableRow, { key: row.name }, partHeaders.map((h, i) => { return /*#__PURE__*/React.createElement(TableCell, { key: h.id, align: h.numeric ? 'right' : 'left' }, row[h.id]); }))) : /*#__PURE__*/React.createElement("span", null))))))); } else if (f.type === 'time') { return /*#__PURE__*/React.createElement(Grid, { key: f.field_name, container: true, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 5 }, /*#__PURE__*/React.createElement(Box, { style: { width: '150px' } }, /*#__PURE__*/React.createElement(Typography, { style: { paddingRight: '30px', color: 'grey' } }, f.label))), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, " ", /*#__PURE__*/React.createElement(TextField, { id: "time", variant: "outlined", size: "small", type: "time", className: classes.textField, InputLabelProps: { shrink: true }, inputProps: { step: 300 } }))); } })), actions.length > 0 ? /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12 }, actions.map(a => { if (a.status === _data.status) { return /*#__PURE__*/React.createElement(MButton, { action: a, onCallback: event => a.callback(event, _data) }); } })) : /*#__PURE__*/React.createElement(Grid, null))); } MkForm.propTypes = { history: propTypes.object, fields: propTypes.array.isRequired, data: propTypes.object, isNew: propTypes.bool, actions: propTypes.array, onDropdownCreateNew: propTypes.func }; function descendingComparator(a, b, _orderBy) { if (b[_orderBy] < a[_orderBy]) { return -1; } if (b[_orderBy] > a[_orderBy]) { return 1; } return 0; } function getComparator(_order, _orderBy) { return _order === 'desc' ? (a, b) => descendingComparator(a, b, _orderBy) : (a, b) => -descendingComparator(a, b, _orderBy); } function stableSort(array, comparator) { const stabilizedThis = array.map((el, index) => [el, index]); stabilizedThis.sort((a, b) => { const _order = comparator(a[0], b[0]); if (_order !== 0) return _order; return a[1] - b[1]; }); return stabilizedThis.map(el => el[0]); } const StyledTableCell = withStyles(theme => ({ head: { backgroundColor: '#0d47a1a8', color: theme.palette.common.white }, body: { fontSize: 14 } }))(TableCell$1); function EnhancedTableHead(props) { const { classes, _order, _orderBy, onRequestSort, headCells } = props; const createSortHandler = property => event => { onRequestSort(event, property); }; return /*#__PURE__*/React.createElement(TableHead$1, null, /*#__PURE__*/React.createElement(TableRow$1, null, headCells.map(headCell => /*#__PURE__*/React.createElement(StyledTableCell, { key: headCell.id, align: headCell.numeric ? 'right' : 'left', padding: headCell.disablePadding ? 'none' : 'default', sortDirection: _orderBy === headCell.id ? _order : false, style: { width: headCell.id === 'sr' ? '15px' : headCell.width ? headCell.width : '' } }, headCell.id !== 'sr' ? /*#__PURE__*/React.createElement(TableSortLabel, { active: _orderBy === headCell.id, direction: _orderBy === headCell.id ? _order : 'asc', onClick: createSortHandler(headCell.id), style: { whiteSpace: "nowrap" } }, headCell.label, _orderBy === headCell.id ? /*#__PURE__*/React.createElement("span", { className: classes.visuallyHidden }, _order === 'desc' ? 'sorted descending' : 'sorted ascending') : null) : /*#__PURE__*/React.createElement(TableSortLabel, { hideSortIcon: "true", align: "right" }, headCell.label))), /*#__PURE__*/React.createElement(StyledTableCell, { style: { width: '100px' } }))); } EnhancedTableHead.propTypes = { classes: propTypes.object.isRequired, onRequestSort: propTypes.func.isRequired, onSelectAllClick: propTypes.func.isRequired, _order: propTypes.oneOf(['asc', 'desc']).isRequired, _orderBy: propTypes.string.isRequired, rowCount: propTypes.number.isRequired }; const useStyles$1 = makeStyles(theme => ({ root: { width: '100%' }, paper: { width: '100%', marginBottom: theme.spacing(2) }, table: { tableLayout: 'fixed' }, visuallyHidden: { b_order: 0, clip: 'rect(0 0 0 0)', height: 1, margin: -1, overflow: 'hidden', padding: 0, position: 'absolute', top: 20, width: 1 }, underline: { "&&&:before": { b_orderBottom: "none" }, "&&:after": { b_orderBottom: "none" } }, bomLink: { cursor: "pointer", color: theme.primary, textDecoration: "underline" } })); const StyledTableRow = withStyles(theme => ({ root: { '&:nth-of-type(even)': { backgroundColor: '#0d47a11c' } } }))(TableRow$1); function getUpdatedDate(p) { var statusDate = p.updated_date; var day = ''; if (statusDate !== undefined) { var convertDate = new Date(statusDate.toDate()); var dd = String(convertDate.getDate()).padStart(2, '0'); var mm = String(convertDate.getMonth() + 1).padStart(2, '0'); var yyyy = convertDate.getFullYear(); day = mm + '/' + dd + '/' + yyyy; } return day.toString(); } function RowMenu(props) { const { row, actions, onSelectedAction, onRowEdit } = props; const [anchorEl, setAnchorEl] = React.useState(null); const handleMenuClick = event => { event.stopPropagation(); setAnchorEl(event.currentTarget); }; const handleSelectMenu = (e, row, action) => { e.stopPropagation(); onSelectedAction(row, action.action_name); setAnchorEl(null); }; const handleClose = e => { setAnchorEl(null); e.stopPropagation(); }; const handleEdit = e => { onRowEdit(row); e.stopPropagation(); }; return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Menu, { id: `actions-${row.id}`, anchorEl: anchorEl, keepMounted: true, open: Boolean(anchorEl), onClose: handleClose }, actions.map(action => { return /*#__PURE__*/React.createElement(MenuItem, { key: action.display_name, onClick: e => handleSelectMenu(e, row, action) }, action.display_name); })), /*#__PURE__*/React.createElement(Grid, { container: true, direction: "row", justify: "flex-end", alignItems: "center", style: { display: 'flex' } }, /*#__PURE__*/React.createElement(IconButton, { id: `edit-${row.id}`, "aria-label": "more", "aria-controls": "long-menu", "aria-haspopup": "true", onClick: handleEdit, size: "small" }, /*#__PURE__*/React.createElement(EditIcon, null)), /*#__PURE__*/React.createElement(Box, { style: { width: '10px' } }), /*#__PURE__*/React.createElement(IconButton, { id: `dropdown-${row.id}`, "aria-label": "more", "aria-controls": "long-menu", "aria-haspopup": "true", size: "small", onClick: handleMenuClick }, /*#__PURE__*/React.createElement(ExpandMore, null)))); } RowMenu.propTypes = { row: propTypes.object.isRequired, actions: propTypes.array.isRequired, onSelectedAction: propTypes.func.isRequired, onRowEdit: propTypes.func }; function ConfirmDialog(props) { const { type, itemName, openDialog, onCancel, onContinue } = props; const [open, setOpen] = React.useState(openDialog); const handleClose = () => { setOpen(false); onCancel(false); }; const handleContinue = () => { onContinue(true); }; return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Dialog, { open: open, onClose: handleClose, "aria-labelledby": "alert-dialog-title", "aria-describedby": "alert-dialog-description" }, /*#__PURE__*/React.createElement(DialogTitle, { id: "alert-dialog-title" }, "Delete this " + type + ' "' + itemName + '"?'), /*#__PURE__*/React.createElement(DialogActions, null, /*#__PURE__*/React.createElement(Button, { onClick: handleClose, color: "primary" }, "Cancel"), /*#__PURE__*/React.createElement(Button, { onClick: handleContinue, color: "primary", autoFocus: true }, "Delete")))); } ConfirmDialog.propTypes = { history: propTypes.object, type: propTypes.string, itemName: propTypes.string, openDialog: propTypes.bool, onCancel: propTypes.func, onContinue: propTypes.func }; function MkTable(props) { const classes = useStyles$1(); const { dispatch, data = [], headers = [], actions, onActions, title, page, rowsPerPage, noMoreToLoad = false, order, orderBy, isLoading = false, onChangePaginatePage, onGetData, onUpdateDataRow, onChangeRowPerPage, dense = true } = props; const [_rowsPerPage, setRowsPerPage] = React.useState(rowsPerPage); const [_page, setPage] = React.useState(page); const [_noMoreToLoad, setNoMoreToLoad] = React.useState(noMoreToLoad); const [_order, setOrder] = React.useState(order); const [_orderBy, setOrderBy] = React.useState(orderBy); const [_isLoading, setIsLoading] = React.useState(isLoading); const [_isConfirm, setIsConfirm] = React.useState(false); const [itemName, setItemName] = React.useState(''); const [row, setRow] = React.useState({}); const [action, setAction] = React.useState(''); const [_dense, setDense] = React.useState(dense); const handleSelectMenu = (row, action) => { if (action === 'delete') { setItemName(row.name === undefined ? row.product_desc : row.name); setIsConfirm(true); setRow(row); setAction(action); } else { onActions(row, action); } }; const handleDelete = v => { setIsConfirm(false); onActions(row, action); }; const handleCancel = v => { setIsConfirm(false); }; const handleRowEdit = row => { onUpdateDataRow(row); }; var offset = _page * _rowsPerPage; useEffect(() => { setNoMoreToLoad(noMoreToLoad); setPage(page); setOrder(order); setOrderBy(orderBy); setIsLoading(isLoading); setRowsPerPage(rowsPerPage); setDense(dense); }, []); const handleRequestSort = (event, property) => { const isAsc = _orderBy === property && _order === 'asc'; setOrder(isAsc ? 'desc' : 'asc'); setOrderBy(property); }; const handleChangePage = (event, newPage) => { if (!_noMoreToLoad && (newPage + 1) * _rowsPerPage >= data.length) { onGetData(); } setPage(newPage); onChangePaginatePage(newPage); }; const handleChangeRowsPerPage = event => { setRowsPerPage(parseInt(event.target.value)); onChangeRowPerPage(parseInt(event.target.value)); }; return /*#__PURE__*/React.createElement("div", { className: classes.root }, /*#__PURE__*/React.createElement(Grid, { container: true }, /*#__PURE__*/React.createElement(Grid, { item: true }, /*#__PURE__*/React.createElement(TableContainer$1, null, /*#__PURE__*/React.createElement(Table$1, { className: classes.table, "aria-labelledby": "tableTitle", size: _dense ? 'small' : 'medium', "aria-label": "enhanced table" }, /*#__PURE__*/React.createElement(EnhancedTableHead, { classes: classes, headCells: headers, _order: _order, _orderBy: _orderBy, onRequestSort: handleRequestSort, rowCount: data.length !== undefined ? data.length : 0, dispatch: dispatch }), /*#__PURE__*/React.createElement(TableBody$1, null, _isLoading ? /*#__PURE__*/React.createElement(StyledTableRow, null, /*#__PURE__*/React.createElement(TableCell$1, { colSpan: headers.length, align: "center" }, " ", /*#__PURE__*/React.createElement(CircularProgress, null))) : data.length !== 0 ? stableSort(data, getComparator(_order, _orderBy)).slice(_page * _rowsPerPage, _page * _rowsPerPage + _rowsPerPage).map((row, index) => { return /*#__PURE__*/React.createElement(StyledTableRow, { hover: true, role: "checkbox", tabIndex: -1, key: row.id, id: row.id }, headers.map((h, i) => { if (h.id === 'sr') { return /*#__PURE__*/React.createElement(TableCell$1, { key: h.id, align: "right", style: { width: '15px' } }, ++offset); } if (h.id === 'status') { return /*#__PURE__*/React.createElement(TableCell$1, { key: h.id, align: h.numeric ? 'right' : 'left' }, row[h.id]); } if (h.id === 'updated_date') { return /*#__PURE__*/React.createElement(TableCell$1, { key: h.id, align: h.numeric ? 'right' : 'left', style: { width: h.width ? h.width : null } }, getUpdatedDate(row)); } else { return /*#__PURE__*/React.createElement(TableCell$1, { key: h.id, align: h.numeric ? 'right' : 'left', style: { width: h.width ? h.width : null } }, row[h.id]); } }), actions ? /*#__PURE__*/React.createElement(TableCell$1, { style: { width: '150px' }, align: "right" }, /*#__PURE__*/React.createElement(RowMenu, { actions: actions, row: row, onRowEdit: data => handleRowEdit(data), onSelectedAction: (data, actionName) => handleSelectMenu(data, actionName) })) : /*#__PURE__*/React.createElement(TableCell$1, { style: { width: '150px' }, align: "right" }, /*#__PURE__*/React.createElement(IconButton, { onClick: event => handleRowEdit(row), size: dense ? "small" : "medium" }, /*#__PURE__*/React.createElement(EditIcon, null)))); }) : /*#__PURE__*/React.createElement(StyledTableRow, { style: { width: '100%' } })))), /*#__PURE__*/React.createElement(TablePagination, { rowsPerPageOptions: [10, 30, 50], labelDisplayedRows: ({ from, to, count }) => { console.log(from, to, count); }, component: "div", count: data.length, rowsPerPage: _rowsPerPage, page: _page, onChangePage: handleChangePage, onChangeRowsPerPage: handleChangeRowsPerPage }))), _isConfirm ? /*#__PURE__*/React.createElement(ConfirmDialog, { type: title, itemName: itemName, openDialog: _isConfirm, onCancel: v => handleCancel(), onContinue: v => handleDelete() }) : /*#__PURE__*/React.createElement("div", null)); } MkTable.propTypes = { history: propTypes.object, headers: propTypes.array.isRequired, data: propTypes.array.isRequired, query: propTypes.object, onProductBOMClick: propTypes.func, onActions: propTypes.func, actions: propTypes.array, title: propTypes.string, order: propTypes.any, orderBy: propTypes.any, rowsPerPage: propTypes.any, noMoreToLoad: propTypes.any, isLoading: propTypes.any, onChangePaginatePage: propTypes.any, onGetData: propTypes.any, onChangeRowPerPage: propTypes.any, dense: propTypes.any }; const useStyles$2 = makeStyles(theme => ({ root: { width: '100%' }, paper: { width: '100%', marginBottom: theme.spacing(2) }, table: { minWidth: 750 }, visuallyHidden: { border: 0, clip: 'rect(0 0 0 0)', height: 1, margin: -1, overflow: 'hidden', padding: 0, position: 'absolute', top: 20, width: 1 }, underline: { "&&&:before": { borderBottom: "none" }, "&&:after": { borderBottom: "none" } }, button: { color: 'white', width: 150, height: 55 }, closeButton: { position: 'absolute', right: theme.spacing(1), top: theme.spacing(1), color: theme.palette.grey[500] }, headText: { fontSize: 14, float: "left", color: theme.palette.primary.main, fontWeight: "bold" } })); function getDataString(data, fieldName) { return data[fieldName]; } function MkInfo(props) { const classes = useStyles$2(); const { infoData, displayFields, isNew = false, isEditable, currentTabName, actions } = props; const [editable, setEditable] = React.useState(isEditable !== undefined ? isEditable : true); const handleEdit = () => { setEditable(false); }; return /*#__PURE__*/React.createElement("div", { className: classes.root }, isNew ? /*#__PURE__*/React.createElement(Grid, { container: true, style: { marginTop: '30px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 })) : /*#__PURE__*/React.createElement(Grid, { container: true, style: { marginTop: '30px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, !editable ? /*#__PURE__*/ React.createElement("div", null) : displayFields.map((d, i) => { return /*#__PURE__*/React.createElement(Grid, { container: true, key: i }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, style: { display: 'flex', alignItems: 'center', marginBottom: '10px' } }, /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 5 }, /*#__PURE__*/React.createElement(Box, { style: { width: '250px' } }, /*#__PURE__*/React.createElement(Typography, { style: { paddingRight: '30px', color: 'grey' } }, d.label))), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, d.type === 'photo' ? /*#__PURE__*/React.createElement("img", null) : /*#__PURE__*/ React.createElement(Typography, { style: { paddingRight: '30px' } }, infoData !== undefined ? getDataString(infoData, d.fieldName) : '')))); })), /*#__PURE__*/React.createElement(Grid, { item: true, xs: 12, sm: 7 }, /*#__PURE__*/React.createElement(Grid, { container: true, direction: "row", alignItems: "flex-end" }, actions.map((a, i) => { if (currentTabName === 'account') { if (infoData.status === 'invited') { return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { style: { color: 'white', backgroundColor: 'grey', float: 'right', marginLeft: '10px' } }, a.label)); } if (infoData.status === 'joined') { return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { style: { color: 'white', backgroundColor: 'grey', float: 'right', marginLeft: '10px' } }, a.label)); } if (infoData.status === 'disabled') { return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { style: { color: 'white', backgroundColor: 'grey', float: 'right', marginLeft: '10px' } }, a.label)); } if (infoData.status === 'requested') { if (editable) { return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { style: { marginLeft: '10px' }, onClick: handleEdit }, a.icon, a.label)); } else { return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { style: { color: 'white', backgroundColor: 'grey', float: 'right', marginLeft: '10px' } }, a.label)); } } } else { if (editable) { if (a.action_type === 'edit') { console.log('type: ', a.action_type, 'editable: ', editable); return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { style: { marginLeft: '10px' }, onClick: handleEdit }, a.icon, a.label)); } if (a.action_type === 'delete') { return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { style: { float: 'right', marginLeft: '10px' } }, a.icon, a.label)); } } else { if (a.action_type === 'save') { return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { style: { marginLeft: '10px' } }, a.icon, a.label)); } if (a.action_type === 'cancel') { return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Button, { style: { float: 'right', marginLeft: '10px' } }, a.icon, a.label)); } } } }))))); } MkInfo.propTypes = { history: propTypes.object, infoData: propTypes.object, displayFields: propTypes.array, isNew: propTypes.bool, isEditable: propTypes.bool, actions: propTypes.any }; export { List, MkForm, MkInfo, MkTable }; //# sourceMappingURL=index.modern.js.map