aefis-core-ui 2.3.0-rc14 → 2.3.0-rc15

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.
@@ -67,12 +67,6 @@ import Nouislider from 'nouislider-react';
67
67
  import 'lodash/camelCase';
68
68
  import debounce from 'lodash/debounce';
69
69
  import StepConnector, { stepConnectorClasses } from '@mui/material/StepConnector';
70
- import DeleteOutlineOutlinedIcon from '@mui/icons-material/DeleteOutlineOutlined';
71
- import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';
72
- import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
73
- import '@mui/icons-material/MoreVert';
74
- import produce from 'immer';
75
- import { v4 } from 'uuid';
76
70
  import { MuiForm5 } from '@rjsf/material-ui';
77
71
  import isEmpty from 'lodash/isEmpty';
78
72
  import compose from 'lodash/fp/compose';
@@ -90,7 +84,6 @@ import FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orien
90
84
  import FilePondPluginImagePreview from 'filepond-plugin-image-preview';
91
85
  import { registerPlugin, FilePond } from 'react-filepond';
92
86
  import FilePondPluginGetFile from 'filepond-plugin-get-file';
93
- import FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';
94
87
  import MaskedInput from 'react-text-mask';
95
88
  import StylesProvider from '@mui/styles/StylesProvider';
96
89
 
@@ -1692,12 +1685,12 @@ const LegacyButtonTheme = createTheme(theme, {
1692
1685
  }
1693
1686
  });
1694
1687
 
1695
- const _excluded$m = ["name"];
1688
+ const _excluded$k = ["name"];
1696
1689
  const Button = /*#__PURE__*/forwardRef(function Button(_ref, ref) {
1697
1690
  let {
1698
1691
  name
1699
1692
  } = _ref,
1700
- props = _objectWithoutPropertiesLoose(_ref, _excluded$m);
1693
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$k);
1701
1694
  const isColorDefault = props.color === undefined || props.color === "default";
1702
1695
  const colorThemeName = isColorDefault ? "grey" : props.color;
1703
1696
  const theme = useTheme$1();
@@ -1790,7 +1783,7 @@ AnimatedExpandMoreIcon.propTypes = {
1790
1783
  sx: PropTypes.any
1791
1784
  };
1792
1785
 
1793
- const _excluded$l = ["name", "icon", "menuConfiguration", "color", "displayType", "variant", "onClick", "link"];
1786
+ const _excluded$j = ["name", "icon", "menuConfiguration", "color", "displayType", "variant", "onClick", "link"];
1794
1787
  const AefisButton = withStyles$1({
1795
1788
  root: {
1796
1789
  "&:focus": {
@@ -1812,7 +1805,7 @@ const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(_ref, ref) {
1812
1805
  onClick,
1813
1806
  link
1814
1807
  } = _ref,
1815
- props = _objectWithoutPropertiesLoose(_ref, _excluded$l);
1808
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$j);
1816
1809
  const [anchorEl, setAnchorEl] = useState(null);
1817
1810
  const handleClick = (event, link, buttonId) => {
1818
1811
  setAnchorEl(event.currentTarget);
@@ -1912,12 +1905,7 @@ MenuButton.propTypes = {
1912
1905
  /** Button variant */
1913
1906
  variant: PropTypes.oneOf(["contained", "outlined", "text"]),
1914
1907
  /** The type of the button */
1915
- menuConfiguration: PropTypes.arrayOf(PropTypes.shape({
1916
- name: PropTypes.string,
1917
- icon: PropTypes.any,
1918
- divider: PropTypes.any,
1919
- onClick: PropTypes.function
1920
- })),
1908
+ menuConfiguration: PropTypes.array,
1921
1909
  /** The function to execute when the button is clicked. */
1922
1910
  onClick: PropTypes.func
1923
1911
  };
@@ -1962,23 +1950,30 @@ const useStyles$F = makeStyles(theme => ({
1962
1950
  }));
1963
1951
  const titleProps = {
1964
1952
  color: "textPrimary",
1965
- variant: "h6",
1953
+ variant: "h3",
1966
1954
  style: {
1967
- fontSize: "1.1rem",
1955
+ fontSize: "1.2rem",
1968
1956
  fontWeight: 500,
1969
- lineHeight: 1.43,
1970
- letterSpacing: "0.01071em"
1957
+ lineHeight: 1.3,
1958
+ letterSpacing: 0.5,
1959
+ whiteSpace: "nowrap",
1960
+ overflow: "hidden",
1961
+ textOverflow: "ellipsis"
1971
1962
  }
1972
1963
  };
1973
1964
  const subtitleProps = {
1974
1965
  color: "textSecondary",
1975
- variant: "body1",
1976
1966
  style: {
1977
- fontSize: "0.775rem",
1978
- fontWeight: "bolder",
1967
+ fontSize: "0.875rem",
1968
+ fontWeight: 400,
1969
+ lineHeight: 1.4,
1970
+ letterSpacing: 0,
1979
1971
  display: "inline-flex",
1980
1972
  verticalAlign: "middle",
1981
- alignItems: "center"
1973
+ alignItems: "center",
1974
+ whiteSpace: "nowrap",
1975
+ overflow: "hidden",
1976
+ textOverflow: "ellipsis"
1982
1977
  }
1983
1978
  };
1984
1979
  const getGradientBackgroundColorArray = arrayIndex => {
@@ -2006,20 +2001,6 @@ const ContentBox = props => {
2006
2001
  return props.children ? /*#__PURE__*/React.cloneElement(props.children) : "";
2007
2002
  };
2008
2003
  titleProps.component = props.titleComponent;
2009
- if (props.wrapTitle) {
2010
- titleProps["style"] = _extends({}, titleProps.style, {
2011
- whiteSpace: "nowrap",
2012
- overflow: "hidden",
2013
- textOverflow: "ellipsis"
2014
- });
2015
- }
2016
- if (props.wrapSubtitle) {
2017
- titleProps["style"] = _extends({}, titleProps.style, {
2018
- whiteSpace: "nowrap",
2019
- overflow: "hidden",
2020
- textOverflow: "ellipsis"
2021
- });
2022
- }
2023
2004
  const headerProps = {
2024
2005
  title: props.title,
2025
2006
  disableTypography: false,
@@ -2038,7 +2019,7 @@ const ContentBox = props => {
2038
2019
  }
2039
2020
  if (typeof props.subtitle !== "string" && props.subtitle !== undefined) {
2040
2021
  headerProps.title = /*#__PURE__*/jsx(Typography, {
2041
- variant: "h6",
2022
+ variant: "h3",
2042
2023
  component: props.titleComponent,
2043
2024
  style: titleProps.style,
2044
2025
  display: "block",
@@ -2049,13 +2030,13 @@ const ContentBox = props => {
2049
2030
  headerProps.subheader = props.subtitle;
2050
2031
  }
2051
2032
  if (props.titleBadge) {
2052
- headerProps.title = /*#__PURE__*/jsx(Box$1, {
2033
+ headerProps.title = /*#__PURE__*/jsx("div", {
2053
2034
  children: /*#__PURE__*/jsx(StyledBadge$1, {
2054
2035
  badgeContent: props.titleBadge,
2055
2036
  invisible: invisible,
2056
2037
  color: "secondary",
2057
2038
  children: /*#__PURE__*/jsx(Typography, {
2058
- variant: "h6",
2039
+ variant: "h3",
2059
2040
  component: props.titleComponent,
2060
2041
  style: titleProps.style,
2061
2042
  display: "block",
@@ -2076,13 +2057,12 @@ const ContentBox = props => {
2076
2057
  variant: "body1",
2077
2058
  component: "span",
2078
2059
  noWrap: true,
2079
- color: "textSecondary",
2060
+ sx: {
2061
+ color: "text.secondary"
2062
+ },
2080
2063
  style: {
2081
- fontSize: "0.775rem",
2082
- fontWeight: "bolder",
2083
- display: "inline-flex",
2084
- verticalAlign: "middle",
2085
- alignItems: "center"
2064
+ fontSize: "0.875rem",
2065
+ letterSpacing: 0
2086
2066
  },
2087
2067
  children: props.subtitle
2088
2068
  });
@@ -2094,7 +2074,6 @@ const ContentBox = props => {
2094
2074
  const cardStyle = _extends({
2095
2075
  marginBottom: props.hasGutter ? 8 : 0,
2096
2076
  borderRadius: 16,
2097
- transition: "border 100ms ease-out",
2098
2077
  boxShadow: props.displayType === "outlined" ? "none" : "rgb(58 53 65 / 10%) 0px 2px 10px 0px"
2099
2078
  }, props.cardStyle);
2100
2079
  if (props.displayType === "outlined") {
@@ -2112,7 +2091,7 @@ const ContentBox = props => {
2112
2091
  return /*#__PURE__*/jsxs(Box$1, {
2113
2092
  sx: props.sx,
2114
2093
  style: props.containerStyle,
2115
- children: [props.header && /*#__PURE__*/jsx(Box$1, {
2094
+ children: [props.header && /*#__PURE__*/jsx("div", {
2116
2095
  className: classes.sectionHeader,
2117
2096
  children: /*#__PURE__*/jsx(Typography, {
2118
2097
  variant: "h6",
@@ -2122,7 +2101,7 @@ const ContentBox = props => {
2122
2101
  }), /*#__PURE__*/jsxs(Card, {
2123
2102
  style: cardStyle,
2124
2103
  className: tag.tag,
2125
- children: [useHeaderImage && /*#__PURE__*/jsx(Box$1, {
2104
+ children: [useHeaderImage && /*#__PURE__*/jsx("div", {
2126
2105
  style: imageDivStyle,
2127
2106
  className: classes.imageContainer,
2128
2107
  title: props.title,
@@ -2134,10 +2113,6 @@ const ContentBox = props => {
2134
2113
  image: props.image
2135
2114
  }), props.title && /*#__PURE__*/jsx(CardHeader, _extends({}, headerProps)), props.formatContent && /*#__PURE__*/jsx(CardContent, {
2136
2115
  className: !props.title ? classes.cardContentWithoutTitle : classes.cardContent,
2137
- sx: !props.children && !props.description ? {
2138
- display: "none",
2139
- visibility: "hidden"
2140
- } : undefined,
2141
2116
  children: /*#__PURE__*/jsxs(React.Fragment, {
2142
2117
  children: [props.description && /*#__PURE__*/jsx(Typography, {
2143
2118
  variant: "body2",
@@ -2172,9 +2147,7 @@ ContentBox.defaultProps = {
2172
2147
  imageHeight: 150,
2173
2148
  hasGutter: true,
2174
2149
  imageBackgroundColor: "transparent",
2175
- titleComponent: "div",
2176
- wrapTitle: false,
2177
- wrapSubtitle: false
2150
+ titleComponent: "div"
2178
2151
  };
2179
2152
  ContentBox.propTypes = {
2180
2153
  /** Content of the content box */
@@ -2189,10 +2162,6 @@ ContentBox.propTypes = {
2189
2162
  subtitle: PropTypes.any,
2190
2163
  /** Main title of the content box. Can be a string or any component. */
2191
2164
  title: PropTypes.any,
2192
- /** Wrap the title? */
2193
- wrapTitle: PropTypes.bool,
2194
- /** Wrap the subtitle? */
2195
- wrapSubtitle: PropTypes.bool,
2196
2165
  /** Add a badge to the title of the content box. */
2197
2166
  titleBadge: PropTypes.number,
2198
2167
  /** The component to use to render the title. */
@@ -2335,10 +2304,11 @@ const Chip = ({
2335
2304
  })
2336
2305
  })
2337
2306
  };
2338
- const {
2339
- disabled
2340
- } = useFormControl();
2341
- const _canDelete = canDelete && !disabled;
2307
+
2308
+ // TODO: create FormChip (or similar) and use contextful version there. Pure
2309
+ // and Contextful component should be seperated
2310
+ const formControl = useFormControl();
2311
+ const _canDelete = canDelete && !(formControl != null && formControl.disabled);
2342
2312
  const Chip = () => {
2343
2313
  return /*#__PURE__*/jsx(Chip$1, _extends({
2344
2314
  role: role || "presentation",
@@ -2346,7 +2316,7 @@ const Chip = ({
2346
2316
  }, chipProps, _canDelete && {
2347
2317
  onDelete
2348
2318
  }, {
2349
- disabled: disabled
2319
+ disabled: formControl == null ? void 0 : formControl.disabled
2350
2320
  }));
2351
2321
  };
2352
2322
 
@@ -3465,7 +3435,7 @@ CardSectionTitle$1.propTypes = {
3465
3435
  title: PropTypes.string
3466
3436
  };
3467
3437
 
3468
- const _excluded$k = ["title", "children", "height", "titleComponent"];
3438
+ const _excluded$i = ["title", "children", "height", "titleComponent"];
3469
3439
  const CardSection$1 = _ref => {
3470
3440
  let {
3471
3441
  title,
@@ -3473,7 +3443,7 @@ const CardSection$1 = _ref => {
3473
3443
  height,
3474
3444
  titleComponent
3475
3445
  } = _ref,
3476
- props = _objectWithoutPropertiesLoose(_ref, _excluded$k);
3446
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$i);
3477
3447
  return /*#__PURE__*/jsxs(Box$1, _extends({
3478
3448
  sx: {
3479
3449
  height: height || "inherit"
@@ -3573,7 +3543,7 @@ SvgImage.propTypes = {
3573
3543
  width: PropTypes.any
3574
3544
  };
3575
3545
 
3576
- const _excluded$j = ["source", "description", "width", "height", "decorative", "showSkeleton", "fallbackImage"],
3546
+ const _excluded$h = ["source", "description", "width", "height", "decorative", "showSkeleton", "fallbackImage"],
3577
3547
  _excluded2$1 = ["src", "extension"];
3578
3548
  const RenderImage = _ref => {
3579
3549
  let {
@@ -3585,7 +3555,7 @@ const RenderImage = _ref => {
3585
3555
  showSkeleton,
3586
3556
  fallbackImage
3587
3557
  } = _ref,
3588
- other = _objectWithoutPropertiesLoose(_ref, _excluded$j);
3558
+ other = _objectWithoutPropertiesLoose(_ref, _excluded$h);
3589
3559
  const altText = decorative ? "" : description;
3590
3560
  const role = decorative ? "presentation" : "img";
3591
3561
  const hidden = !!decorative;
@@ -3663,7 +3633,7 @@ Image.propTypes = {
3663
3633
  extension: PropTypes.string
3664
3634
  };
3665
3635
 
3666
- const _excluded$i = ["type"];
3636
+ const _excluded$g = ["type"];
3667
3637
  const imageProps = {
3668
3638
  award: Award,
3669
3639
  building: Building,
@@ -3689,7 +3659,7 @@ const IsometricImage = _ref => {
3689
3659
  let {
3690
3660
  type
3691
3661
  } = _ref,
3692
- other = _objectWithoutPropertiesLoose(_ref, _excluded$i);
3662
+ other = _objectWithoutPropertiesLoose(_ref, _excluded$g);
3693
3663
  const image = getIsometricImage(type);
3694
3664
  return /*#__PURE__*/jsx(Image, _extends({
3695
3665
  src: image
@@ -4372,9 +4342,6 @@ const RenderCard = props => {
4372
4342
  configuration: props.actionsConfiguration,
4373
4343
  data: props.data
4374
4344
  }) : undefined,
4375
- cardStyle: props.cardStyle || undefined,
4376
- containerStyle: props.containerStyle || undefined,
4377
- sx: props.sx || undefined,
4378
4345
  children: /*#__PURE__*/jsxs(Fragment, {
4379
4346
  children: [props.description && /*#__PURE__*/jsx(CardSection, {
4380
4347
  sx: descriptionContainerStyle,
@@ -4408,10 +4375,7 @@ RenderCard.propTypes = {
4408
4375
  avatarIconColor: PropTypes.string,
4409
4376
  gradientColorHeaderImageId: PropTypes.any,
4410
4377
  autoTruncateDescription: PropTypes.bool,
4411
- avatar: PropTypes.any,
4412
- cardStyle: PropTypes.any,
4413
- containerStyle: PropTypes.any,
4414
- sx: PropTypes.object
4378
+ avatar: PropTypes.any
4415
4379
  };
4416
4380
  const BusinessObjectCard = props => {
4417
4381
  return props.displayType === "skeleton" ? /*#__PURE__*/jsx(RenderSkeleton, {
@@ -4456,22 +4420,16 @@ BusinessObjectCard.propTypes = {
4456
4420
  /** Override the avatar with provided avatar object. */
4457
4421
  avatar: PropTypes.any,
4458
4422
  /** Automatically truncate the description. For consistency, this should nearly always be set to "true" */
4459
- autoTruncateDescription: PropTypes.bool,
4460
- /** Additional styles for the card */
4461
- cardStyle: PropTypes.any,
4462
- /** Additional styles for the content box container */
4463
- containerStyle: PropTypes.any,
4464
- /** Additional styles to apply */
4465
- sx: PropTypes.object
4423
+ autoTruncateDescription: PropTypes.bool
4466
4424
  };
4467
4425
 
4468
- const _excluded$h = ["enableScrollTop", "containerProps"];
4426
+ const _excluded$f = ["enableScrollTop", "containerProps"];
4469
4427
  const SwipeableViews = _ref => {
4470
4428
  let {
4471
4429
  enableScrollTop = true,
4472
4430
  containerProps = {}
4473
4431
  } = _ref,
4474
- props = _objectWithoutPropertiesLoose(_ref, _excluded$h);
4432
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$f);
4475
4433
  const containerRef = containerProps.ref || useRef();
4476
4434
  useEffect(() => {
4477
4435
  if (enableScrollTop) {
@@ -5110,7 +5068,7 @@ SectionTitle.propTypes = {
5110
5068
  component: PropTypes.string
5111
5069
  };
5112
5070
 
5113
- const _excluded$g = ["title", "subtitle", "children", "display", "format", "renderList", "titleComponent"];
5071
+ const _excluded$e = ["title", "subtitle", "children", "display", "format", "renderList", "titleComponent"];
5114
5072
  const Section = _ref => {
5115
5073
  let {
5116
5074
  title,
@@ -5121,7 +5079,7 @@ const Section = _ref => {
5121
5079
  renderList,
5122
5080
  titleComponent
5123
5081
  } = _ref,
5124
- props = _objectWithoutPropertiesLoose(_ref, _excluded$g);
5082
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$e);
5125
5083
  const containerStyle = {
5126
5084
  boxSizing: "border-box",
5127
5085
  width: "100%",
@@ -5758,7 +5716,7 @@ FullPageViewer.propTypes = {
5758
5716
  onMessage: PropTypes.func
5759
5717
  };
5760
5718
 
5761
- const _excluded$f = ["height", "children", "onScroll", "showTopFade", "showBottomFade", "component", "onScrollReachStart", "onScrollReachEnd"];
5719
+ const _excluded$d = ["height", "children", "onScroll", "showTopFade", "showBottomFade", "component", "onScrollReachStart", "onScrollReachEnd"];
5762
5720
  const useStyles$w = makeStyles(() => ({
5763
5721
  scroller: {
5764
5722
  position: "relative",
@@ -5831,7 +5789,7 @@ const ScrollingContainer = _ref => {
5831
5789
  onScrollReachStart,
5832
5790
  onScrollReachEnd
5833
5791
  } = _ref,
5834
- props = _objectWithoutPropertiesLoose(_ref, _excluded$f);
5792
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$d);
5835
5793
  const classes = useStyles$w();
5836
5794
  const [scrolled, setScrolled] = useState(false);
5837
5795
  const rootStyle = {
@@ -7582,7 +7540,7 @@ var dataSourceManager = {
7582
7540
  getDataSourceUrl: getDataSourceUrl
7583
7541
  };
7584
7542
 
7585
- const _excluded$e = ["clearOnChange", "minimumLength"];
7543
+ const _excluded$c = ["clearOnChange", "minimumLength"];
7586
7544
  const WAIT_INTERVAL = 1000;
7587
7545
  const ENTER_KEY = 13;
7588
7546
  const TextSearch$1 = _ref => {
@@ -7590,7 +7548,7 @@ const TextSearch$1 = _ref => {
7590
7548
  clearOnChange,
7591
7549
  minimumLength
7592
7550
  } = _ref,
7593
- props = _objectWithoutPropertiesLoose(_ref, _excluded$e);
7551
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$c);
7594
7552
  const [value, setValue] = useState("");
7595
7553
  const [timer, setTimer] = useState(null);
7596
7554
  const handleChange = e => {
@@ -7625,13 +7583,13 @@ const TextSearch$1 = _ref => {
7625
7583
  value: value,
7626
7584
  onKeyDown: handleKeyDown,
7627
7585
  placeholder: props.placeholder,
7628
- sx: _extends({
7586
+ sx: {
7629
7587
  input: {
7630
7588
  "&::placeholder": {
7631
7589
  opacity: 0.7
7632
7590
  }
7633
7591
  }
7634
- }, props.sx)
7592
+ }
7635
7593
  }, props, {
7636
7594
  inputProps: _extends({}, props.inputProps, {
7637
7595
  "aria-label": props.placeholder
@@ -7719,7 +7677,7 @@ const mapFilters = newFilters => {
7719
7677
  return mappedFilters;
7720
7678
  };
7721
7679
 
7722
- const _excluded$d = ["parentMenuOpen", "label", "rightIcon", "leftIcon", "children", "className", "tabIndex", "ContainerProps"];
7680
+ const _excluded$b = ["parentMenuOpen", "label", "rightIcon", "leftIcon", "children", "className", "tabIndex", "ContainerProps"];
7723
7681
  const useMenuItemStyles = makeStyles(theme => ({
7724
7682
  root: props => ({
7725
7683
  backgroundColor: props.open ? theme.palette.action.hover : "rgba(0,0,0,0)"
@@ -7740,7 +7698,7 @@ const NestedMenuItem = /*#__PURE__*/React.forwardRef(function NestedMenuItem(pro
7740
7698
  tabIndex: tabIndexProp,
7741
7699
  ContainerProps: ContainerPropsProp = {}
7742
7700
  } = props,
7743
- MenuItemProps = _objectWithoutPropertiesLoose(props, _excluded$d);
7701
+ MenuItemProps = _objectWithoutPropertiesLoose(props, _excluded$b);
7744
7702
  const {
7745
7703
  ref: containerRefProp
7746
7704
  } = ContainerPropsProp,
@@ -9002,12 +8960,12 @@ Actions.propTypes = {
9002
8960
  onAction: PropTypes.func
9003
8961
  };
9004
8962
 
9005
- const _excluded$c = ["hasFilters"];
8963
+ const _excluded$a = ["hasFilters"];
9006
8964
  const RenderFilterButton = /*#__PURE__*/React.forwardRef(function RenderFilterButton(_ref, ref) {
9007
8965
  let {
9008
8966
  hasFilters
9009
8967
  } = _ref,
9010
- props = _objectWithoutPropertiesLoose(_ref, _excluded$c);
8968
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$a);
9011
8969
  return /*#__PURE__*/jsx(IconButton$1, _extends({}, props, {
9012
8970
  ref: ref,
9013
8971
  children: /*#__PURE__*/jsx(Badge, {
@@ -9100,7 +9058,7 @@ DefaultIconButton.propTypes = {
9100
9058
  onClick: PropTypes.func
9101
9059
  };
9102
9060
 
9103
- const _excluded$b = ["filterSet", "onClick", "disableSetDefault", "index"];
9061
+ const _excluded$9 = ["filterSet", "onClick", "disableSetDefault", "index"];
9104
9062
  const useStyles$m = makeStyles(theme => ({
9105
9063
  operations: {
9106
9064
  display: "flex",
@@ -9172,7 +9130,7 @@ const Item$1 = /*#__PURE__*/React.forwardRef((_ref, ref) => {
9172
9130
  disableSetDefault,
9173
9131
  index
9174
9132
  } = _ref,
9175
- props = _objectWithoutPropertiesLoose(_ref, _excluded$b);
9133
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$9);
9176
9134
  const {
9177
9135
  id,
9178
9136
  disabled,
@@ -9228,7 +9186,7 @@ const renderUserDefinedFilters = ({
9228
9186
  index: index
9229
9187
  }, `user-defined-filters-${index}`));
9230
9188
 
9231
- const _excluded$a = ["filterSet", "onClick", "disableSetDefault", "index"];
9189
+ const _excluded$8 = ["filterSet", "onClick", "disableSetDefault", "index"];
9232
9190
  const useStyles$l = makeStyles(() => ({
9233
9191
  operations: {
9234
9192
  display: "flex",
@@ -9270,7 +9228,7 @@ const Item = /*#__PURE__*/React.forwardRef((_ref, ref) => {
9270
9228
  disableSetDefault,
9271
9229
  index
9272
9230
  } = _ref,
9273
- props = _objectWithoutPropertiesLoose(_ref, _excluded$a);
9231
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$8);
9274
9232
  const {
9275
9233
  id,
9276
9234
  disabled,
@@ -10424,7 +10382,7 @@ const getInfoTextByFilterAndSortingCount = (filterCount, sortCount) => {
10424
10382
  return `${appliedText} applied to the data`;
10425
10383
  };
10426
10384
 
10427
- const _excluded$9 = ["status", "data", "isFetching", "fetchNextPage", "hasNextPage", "refetch"];
10385
+ const _excluded$7 = ["status", "data", "isFetching", "fetchNextPage", "hasNextPage", "refetch"];
10428
10386
  const useDidMount = () => {
10429
10387
  const didMountRef = useRef(false);
10430
10388
  useEffect(() => {
@@ -10539,7 +10497,7 @@ const RichDataTable = /*#__PURE__*/forwardRef(function RichDatatable(props, ref)
10539
10497
  hasNextPage,
10540
10498
  refetch
10541
10499
  } = _useDataSourceInfinit;
10542
- _objectWithoutPropertiesLoose(_useDataSourceInfinit, _excluded$9);
10500
+ _objectWithoutPropertiesLoose(_useDataSourceInfinit, _excluded$7);
10543
10501
  const isError = useIsError(status);
10544
10502
  const renderReTryButton = useCallback(status => /*#__PURE__*/jsx(Button, {
10545
10503
  onClick: () => refetch(),
@@ -10706,7 +10664,7 @@ const RichDataTable = /*#__PURE__*/forwardRef(function RichDatatable(props, ref)
10706
10664
  exportOptions: props.exportOptions,
10707
10665
  actions: props.actions && props.actions.length > 0 || props.addAction ? updateActions(props.actions, handleDrawerOpen, enableTableRowAction, selectedRowCount, Add) : undefined,
10708
10666
  onFilterClick: isFilterPanelEnabled ? handleFilterClick : undefined,
10709
- hasFilters: filterPanelState.filterCount > 0 || filterPanelState.sortCount > 0 || !!filterPanelState.searchText,
10667
+ hasFilters: filterPanelState.filterCount > 0 || filterPanelState.sortCount > 0 || filterPanelState.searchText,
10710
10668
  disableFilterButton: isFetching
10711
10669
  }, props.titleAndActionHeaderProps)), /*#__PURE__*/jsx(DataTable, _extends({}, props, {
10712
10670
  tableRef: DataTableRef,
@@ -10921,7 +10879,7 @@ const {
10921
10879
  withEvent: withBOPEvent
10922
10880
  } = createComponentEvent();
10923
10881
 
10924
- const _excluded$8 = ["onSubmit", "value", "columns", "filterPanelConfig", "multiple", "dataSource", "confirmButtonText"];
10882
+ const _excluded$6 = ["onSubmit", "value", "columns", "filterPanelConfig", "multiple", "dataSource", "confirmButtonText"];
10925
10883
  const useDialogOpenEventListener$1 = cb => useBOPEventlistener(event => {
10926
10884
  if (event.name === events.OPEN_ENHANCED_SEARCH_DIALOG) cb(event.payload);
10927
10885
  });
@@ -10935,7 +10893,7 @@ const EnhancedSearchDialog = _ref => {
10935
10893
  dataSource,
10936
10894
  confirmButtonText
10937
10895
  } = _ref,
10938
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
10896
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
10939
10897
  const [selection, setSelection] = useState([]);
10940
10898
  const [open, setOpen] = useState(false);
10941
10899
  useDialogOpenEventListener$1(isOpen => setOpen(isOpen));
@@ -11052,7 +11010,7 @@ const useDependencyChange = (callback, currentState) => {
11052
11010
  }
11053
11011
  };
11054
11012
 
11055
- const _excluded$7 = ["visibleValues", "multiple", "dataSource", "optionTemplate", "getOptionLabel", "renderTags", "renderOption", "freeSolo", "newItemTemplate", "loadOnOpen", "openOnFocus", "enhancedSearch", "disableCloseOnSelect", "listSelect", "onAdd", "pageSize", "groupName", "idTemplate", "group", "shouldResetOnParametersChange", "queryParamNames", "enableInfinteScroll", "renderAddItemForm", "AddItemFormModalComponent", "autoCompleteProps", "preventHorizontalExpand"];
11013
+ const _excluded$5 = ["visibleValues", "multiple", "dataSource", "optionTemplate", "getOptionLabel", "renderTags", "renderOption", "freeSolo", "newItemTemplate", "loadOnOpen", "openOnFocus", "enhancedSearch", "disableCloseOnSelect", "listSelect", "onAdd", "pageSize", "groupName", "idTemplate", "group", "shouldResetOnParametersChange", "queryParamNames", "enableInfinteScroll", "renderAddItemForm", "AddItemFormModalComponent", "autoCompleteProps"];
11056
11014
  const useStyles$f = makeStyles(theme => ({
11057
11015
  menu: {
11058
11016
  textDecoration: "none",
@@ -11114,10 +11072,9 @@ const BusinessObjectPicker = _ref => {
11114
11072
  enableInfinteScroll,
11115
11073
  renderAddItemForm,
11116
11074
  AddItemFormModalComponent,
11117
- autoCompleteProps = {},
11118
- preventHorizontalExpand = false
11075
+ autoCompleteProps = {}
11119
11076
  } = _ref,
11120
- props = _objectWithoutPropertiesLoose(_ref, _excluded$7);
11077
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$5);
11121
11078
  const classes = useStyles$f();
11122
11079
  // TODO: implement controlled behaviour
11123
11080
  const [value, setValue] = useAutoCompleteValue(props.value, multiple);
@@ -11384,11 +11341,6 @@ const BusinessObjectPicker = _ref => {
11384
11341
  selectOnFocus: false,
11385
11342
  renderTags: renderTags || (props.type ? renderTypeTags : renderCustomTags),
11386
11343
  renderInput: params => /*#__PURE__*/jsx(TextSearch$1, _extends({}, params, props, {
11387
- sx: _extends({}, preventHorizontalExpand && {
11388
- "&>div.MuiInputBase-root": {
11389
- flexWrap: "nowrap !important"
11390
- }
11391
- }),
11392
11344
  type: "text",
11393
11345
  inputProps: _extends({}, params.inputProps, {
11394
11346
  "data-testid": "content-input"
@@ -11558,9 +11510,7 @@ BusinessObjectPicker.propTypes = {
11558
11510
  /** render prop to handle form content, render function provided onSubmit callback function */
11559
11511
  renderAddItemForm: PropTypes.func,
11560
11512
  /** override props of MUI's AutoComplete components */
11561
- autoCompleteProps: PropTypes.object,
11562
- /** preventHorizontalExpand */
11563
- preventHorizontalExpand: PropTypes.bool
11513
+ autoCompleteProps: PropTypes.object
11564
11514
  };
11565
11515
  BusinessObjectPicker.defaultProps = {
11566
11516
  multiple: false,
@@ -12522,7 +12472,7 @@ CurriculumChart.propTypes = {
12522
12472
  onLoad: PropTypes.func
12523
12473
  };
12524
12474
 
12525
- const _excluded$6 = ["error", "inputFormat", "value", "isControlled", "onChange", "clearable", "disabled", "required", "showButton", "minimumDate", "maximumDate", "inputEndAdornmentText"];
12475
+ const _excluded$4 = ["error", "inputFormat", "value", "isControlled", "onChange", "clearable", "disabled", "required", "showButton", "minimumDate", "maximumDate", "inputEndAdornmentText"];
12526
12476
  const MuiDatePicker = props => {
12527
12477
  const isMobile = useMediaQuery$1(theme => theme.breakpoints.down("md"));
12528
12478
  if (props.type) {
@@ -12562,7 +12512,7 @@ const DatePickerBase = _ref => {
12562
12512
  maximumDate,
12563
12513
  inputEndAdornmentText
12564
12514
  } = _ref,
12565
- props = _objectWithoutPropertiesLoose(_ref, _excluded$6);
12515
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
12566
12516
  const [value, setValue] = useFormItemState(propsValue, isControlled);
12567
12517
  const handleChange = newValue => {
12568
12518
  !isControlled && setValue(newValue);
@@ -15258,485 +15208,6 @@ RubricDistributionChart.propTypes = {
15258
15208
  titleComponent: PropTypes.oneOf(["h1", "h2", "h3", "h4", "div", "p"])
15259
15209
  };
15260
15210
 
15261
- const _excluded$5 = ["rules"];
15262
- const FieldWrapper = ({
15263
- children
15264
- }) => {
15265
- return /*#__PURE__*/jsx(Box$1, {
15266
- sx: {
15267
- paddingTop: 1,
15268
- overflow: "auto"
15269
- },
15270
- children: children
15271
- });
15272
- };
15273
- const TemplateField = ({
15274
- templateSelectionCode,
15275
- templateOptions,
15276
- templateInputMap,
15277
- onChange
15278
- }) => {
15279
- const data = useMemo(() => templateOptions.map(({
15280
- label,
15281
- code: value
15282
- }) => ({
15283
- label,
15284
- value
15285
- }), [templateOptions]));
15286
- const value = useMemo(() => {
15287
- if (!templateSelectionCode) return undefined;
15288
- return {
15289
- value: templateSelectionCode,
15290
- label: templateInputMap[templateSelectionCode].label
15291
- };
15292
- }, [templateSelectionCode]);
15293
- return /*#__PURE__*/jsx(BusinessObjectPicker$1, {
15294
- multiple: false,
15295
- data: data,
15296
- value: value,
15297
- onChange: onChange,
15298
- optionTemplate: "{{label}}",
15299
- preventHorizontalExpand: true
15300
- });
15301
- };
15302
- function Row({
15303
- groupId,
15304
- index,
15305
- ruleId,
15306
- ruleIndex,
15307
- name: templateSelectionCode,
15308
- // template selection
15309
- value: ruleValue,
15310
- // rule value
15311
- template: ruleTemplate,
15312
- onRuleDelete,
15313
- onTemplateSelect,
15314
- onTemplateValueChange,
15315
- templateInputMap,
15316
- templateOptions
15317
- }) {
15318
- const handleChange = useDebounceCallback((value, template) => {
15319
- onTemplateValueChange({
15320
- value,
15321
- template,
15322
- // TODO: send these as 2nd argument
15323
- groupId,
15324
- ruleId
15325
- // TODO: fix index and ruleIndex lot of re-rendering
15326
- // index,
15327
- // ruleIndex
15328
- });
15329
- });
15330
-
15331
- const templateValueField = useMemo(() => {
15332
- if (!templateSelectionCode) return null;
15333
- const TemplateInputField = templateInputMap[templateSelectionCode].component;
15334
- return /*#__PURE__*/jsx(TemplateInputField, {
15335
- value: ruleValue,
15336
- template: ruleTemplate
15337
- // TODO: add debouncer
15338
- ,
15339
- onChange: handleChange
15340
- });
15341
-
15342
- // TODO: take out index from here together with onChange handler
15343
- // index, ruleIndex,
15344
- }, [groupId, ruleId, templateSelectionCode, ruleValue, ruleTemplate]);
15345
- return /*#__PURE__*/jsxs(Box$1, {
15346
- sx: {
15347
- display: "flex",
15348
- flexWrap: "no-wrap",
15349
- paddingTop: 1
15350
- },
15351
- children: [/*#__PURE__*/jsxs(Grid, {
15352
- sx: {
15353
- flex: 1,
15354
- backgroundColor: "#f9f9f9",
15355
- marginLeft: 1,
15356
- paddingTop: 1,
15357
- paddingLeft: 2,
15358
- paddingBottom: 1,
15359
- paddingRight: 2,
15360
- borderRadius: "8px",
15361
- marginBottom: "4px"
15362
- } // this is for grow
15363
- ,
15364
- container: true,
15365
- rowSpacing: 0.5,
15366
- columnSpacing: 2,
15367
- direction: "row",
15368
- children: [/*#__PURE__*/jsx(Grid, {
15369
- item: true,
15370
- xs: 12,
15371
- sm: 12,
15372
- md: 4,
15373
- style: {
15374
- paddingLeft: 0
15375
- },
15376
- children: /*#__PURE__*/jsx(FieldWrapper, {
15377
- children: /*#__PURE__*/jsx(TemplateField, {
15378
- templateSelectionCode: templateSelectionCode,
15379
- templateInputMap: templateInputMap,
15380
- templateOptions: templateOptions,
15381
- onChange: valueFieldCode => {
15382
- onTemplateSelect({
15383
- templateCode: (valueFieldCode == null ? void 0 : valueFieldCode.value) || null,
15384
- groupId,
15385
- ruleId,
15386
- index,
15387
- ruleIndex
15388
- });
15389
- }
15390
- })
15391
- })
15392
- }), /*#__PURE__*/jsx(Grid, {
15393
- item: true,
15394
- xs: 12,
15395
- sm: 12,
15396
- md: 8,
15397
- children: /*#__PURE__*/jsx(FieldWrapper, {
15398
- children: templateValueField
15399
- })
15400
- })]
15401
- }), /*#__PURE__*/jsx(Box$1, {
15402
- sx: {
15403
- width: "48px",
15404
- marginTop: "22px"
15405
- },
15406
- children: /*#__PURE__*/jsx(MenuButton, {
15407
- displayType: "icon",
15408
- menuConfiguration: [{
15409
- name: "Move Up",
15410
- icon: /*#__PURE__*/jsx(KeyboardArrowUpIcon, {}),
15411
- onClick: () => {}
15412
- }, {
15413
- name: "Move Down",
15414
- icon: /*#__PURE__*/jsx(KeyboardArrowDownIcon, {}),
15415
- onClick: () => {}
15416
- }, {
15417
- name: "Add Rule Below",
15418
- icon: /*#__PURE__*/jsx(AddIcon, {}),
15419
- onClick: () => {}
15420
- }, {
15421
- name: "Delete",
15422
- icon: /*#__PURE__*/jsx(DeleteOutlineOutlinedIcon, {}),
15423
- onClick: () => {
15424
- onRuleDelete({
15425
- ruleId,
15426
- index,
15427
- ruleIndex,
15428
- groupId
15429
- });
15430
- }
15431
- }]
15432
- })
15433
- })]
15434
- });
15435
- }
15436
- const RuleGroup = /*#__PURE__*/memo(_ref => {
15437
- let {
15438
- rules
15439
- } = _ref,
15440
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
15441
- return /*#__PURE__*/jsx(Box$1, {
15442
- sx: {
15443
- paddingBottom: 1
15444
- },
15445
- children: rules.map(({
15446
- id,
15447
- name,
15448
- value,
15449
- template
15450
- }, ruleIndex) => /*#__PURE__*/jsx(Row, _extends({
15451
- name: name,
15452
- value: value,
15453
- template: template,
15454
- ruleIndex: ruleIndex,
15455
- ruleId: id
15456
- }, rest), id))
15457
- });
15458
- });
15459
-
15460
- const RuleGroupFooter = /*#__PURE__*/memo(({
15461
- groupId,
15462
- onGroupDelete,
15463
- onRuleAdd
15464
- }) => /*#__PURE__*/jsx(Box$1, {
15465
- sx: {
15466
- display: "flex",
15467
- justifyContent: "end",
15468
- marginRight: 6
15469
- },
15470
- children: /*#__PURE__*/jsxs(Box$1, {
15471
- sx: {
15472
- display: "flex",
15473
- flexDirection: "row"
15474
- },
15475
- children: [/*#__PURE__*/jsx(Button
15476
- // onClick={onGroupDelete}
15477
- , {
15478
- onClick: () => onGroupDelete({
15479
- groupId
15480
- }),
15481
- startIcon: /*#__PURE__*/jsx(DeleteOutlineOutlinedIcon, {}),
15482
- children: "Delete Group"
15483
- }), /*#__PURE__*/jsx(Button, {
15484
- onClick: () => onRuleAdd({
15485
- groupId
15486
- })
15487
- // onClick={onRuleAdd}
15488
- ,
15489
- startIcon: /*#__PURE__*/jsx(AddIcon, {}),
15490
- children: "Add Rule"
15491
- })]
15492
- })
15493
- }));
15494
-
15495
- const BuilderHeader = /*#__PURE__*/memo(({
15496
- onAdd,
15497
- children
15498
- }) => /*#__PURE__*/jsxs(Box$1, {
15499
- sx: {
15500
- display: "flex"
15501
- },
15502
- children: [/*#__PURE__*/jsx(Box$1, {
15503
- sx: {
15504
- flex: 1
15505
- },
15506
- children: children
15507
- }), /*#__PURE__*/jsx(Box$1, {
15508
- sx: {
15509
- display: "flex",
15510
- justifyContent: "end",
15511
- paddingBottom: 1
15512
- },
15513
- children: /*#__PURE__*/jsx(Button, {
15514
- startIcon: /*#__PURE__*/jsx(AddIcon, {}),
15515
- onClick: onAdd,
15516
- children: "Add Group"
15517
- })
15518
- })]
15519
- }));
15520
-
15521
- const RuleGroupIndex = /*#__PURE__*/memo(({
15522
- onMovePosition,
15523
- groupId,
15524
- index,
15525
- isFirst,
15526
- isLast
15527
- }) => /*#__PURE__*/jsx(Box$1, {
15528
- sx: {
15529
- width: "40px",
15530
- height: "88px"
15531
- },
15532
- children: /*#__PURE__*/jsxs(Box$1, {
15533
- sx: {
15534
- display: "flex",
15535
- flexDirection: "column",
15536
- alignItems: "center",
15537
- position: "relative",
15538
- top: "0px",
15539
- width: "20px"
15540
- },
15541
- children: [/*#__PURE__*/jsx(IconButton$1, {
15542
- sx: {
15543
- visibility: isFirst ? "hidden" : "none"
15544
- },
15545
- "aria-label": "move up",
15546
- onClick: () => onMovePosition({
15547
- groupId,
15548
- index
15549
- }, true),
15550
- children: /*#__PURE__*/jsx(KeyboardArrowUpIcon, {
15551
- sx: {
15552
- color: "grey"
15553
- }
15554
- })
15555
- }), /*#__PURE__*/jsx(Typography, {
15556
- variant: "body1",
15557
- color: "#727373",
15558
- sx: {
15559
- fontWeight: "500"
15560
- },
15561
- children: index + 1
15562
- }), /*#__PURE__*/jsx(IconButton$1, {
15563
- "aria-label": "move down",
15564
- sx: {
15565
- visibility: isLast ? "hidden" : "none"
15566
- },
15567
- onClick: () => onMovePosition({
15568
- groupId,
15569
- index
15570
- }, false),
15571
- children: /*#__PURE__*/jsx(KeyboardArrowDownIcon, {
15572
- sx: {
15573
- color: "grey"
15574
- }
15575
- })
15576
- })]
15577
- })
15578
- }));
15579
-
15580
- const _excluded$4 = ["code"];
15581
- const TextBuilder = /*#__PURE__*/memo(({
15582
- renderHeader,
15583
- templateOptions,
15584
- value: _value = [],
15585
- onChange: _onChange = () => {},
15586
- defaultRule
15587
- }) => {
15588
- const templateInputMap = useMemo(() => templateOptions.reduce((obj, _ref) => {
15589
- let {
15590
- code
15591
- } = _ref,
15592
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
15593
- return _extends({}, obj, {
15594
- [code]: rest
15595
- });
15596
- }, {}), [templateOptions]);
15597
-
15598
- // TODO: change rows => RuleGroups
15599
- const [rows, setRows] = useState(_value);
15600
- const setMutatableRows = useCallback(setterFn => {
15601
- setRows(rows => produce(rows, setterFn));
15602
- }, []);
15603
- useEffect(() => {
15604
- _onChange(rows);
15605
- }, [rows]);
15606
- const handleAddGroup = () => {
15607
- // TODO use setMutatableRows
15608
- setRows([...rows, {
15609
- index: rows.length,
15610
- groupId: v4(),
15611
- rules: [_extends({
15612
- id: v4()
15613
- }, defaultRule)]
15614
- }]);
15615
- };
15616
- const handleGroupDelete = ({
15617
- groupId
15618
- }) => {
15619
- const newRows = rows.filter(row => row.groupId !== groupId);
15620
- setRows(newRows);
15621
- };
15622
- const handleRuleDelete = ({
15623
- index,
15624
- ruleIndex,
15625
- groupId,
15626
- ruleId
15627
- }) => {
15628
- setMutatableRows(groups => {
15629
- groups[index].rules = groups[index].rules.filter(rule => rule.id !== ruleId);
15630
- });
15631
- };
15632
-
15633
- // TODO change name
15634
- const handleRuleTemplateSelect = ({
15635
- groupId,
15636
- index,
15637
- ruleId,
15638
- ruleIndex,
15639
- templateCode
15640
- }) => {
15641
- setMutatableRows(groups => {
15642
- groups[index].rules[ruleIndex].name = templateCode || null;
15643
- groups[index].rules[ruleIndex].value = null;
15644
- groups[index].rules[ruleIndex].template = null;
15645
- });
15646
- };
15647
- const handleRuleTemplateValueChange = ({
15648
- value,
15649
- template,
15650
- groupId,
15651
- index,
15652
- ruleId,
15653
- ruleIndex
15654
- }) => {
15655
- setMutatableRows(groups => {
15656
- const rule = groups.find(group => group.groupId === groupId).rules.find(rule => rule.id === ruleId);
15657
- rule.value = value;
15658
- rule.template = template;
15659
- // groups[index].rules[ruleIndex].value = value;
15660
- // groups[index].rules[ruleIndex].template = template;
15661
- });
15662
- };
15663
-
15664
- const moveGroupPosition = ({
15665
- index
15666
- }, isUp) => {
15667
- const newRows = rows.slice();
15668
- const nextRow = isUp ? index - 1 : index + 1;
15669
- [newRows[index], newRows[nextRow]] = [newRows[nextRow], newRows[index]];
15670
- setRows(newRows);
15671
- };
15672
- const handleAddRule = ({
15673
- groupId
15674
- }) => {
15675
- // TODO use setMutatableRows
15676
- const newRules = rows.map(row => {
15677
- if (row.groupId !== groupId) return row;
15678
- return _extends({}, row, {
15679
- rules: [...row.rules, _extends({
15680
- id: v4()
15681
- }, defaultRule)]
15682
- });
15683
- });
15684
- setRows(newRules);
15685
- };
15686
- return /*#__PURE__*/jsxs(ContentBox, {
15687
- sx: {
15688
- ".MuiFormControl-root": {
15689
- background: "white"
15690
- }
15691
- },
15692
- children: [/*#__PURE__*/jsx(BuilderHeader, {
15693
- onAdd: handleAddGroup,
15694
- children: renderHeader()
15695
- }), rows.map(({
15696
- groupId,
15697
- rules
15698
- }, index) => /*#__PURE__*/jsx(ContentBox, {
15699
- displayType: "outlined",
15700
- sx: {
15701
- paddingBottom: 2
15702
- },
15703
- children: /*#__PURE__*/jsxs(Box$1, {
15704
- sx: {
15705
- display: "flex",
15706
- flexWrap: "no-wrap",
15707
- border: "1px solid transparent"
15708
- },
15709
- children: [/*#__PURE__*/jsx(RuleGroupIndex, {
15710
- onMovePosition: moveGroupPosition,
15711
- isFirst: index === 0,
15712
- isLast: index === rows.length - 1,
15713
- index: index,
15714
- groupId: groupId
15715
- }), /*#__PURE__*/jsxs(Box$1, {
15716
- sx: {
15717
- flex: 1
15718
- },
15719
- children: [/*#__PURE__*/jsx(RuleGroup, {
15720
- index: index,
15721
- rules: rules,
15722
- groupId: groupId,
15723
- templateOptions: templateOptions,
15724
- templateInputMap: templateInputMap,
15725
- onRuleDelete: handleRuleDelete,
15726
- onTemplateSelect: handleRuleTemplateSelect,
15727
- onTemplateValueChange: handleRuleTemplateValueChange
15728
- }), /*#__PURE__*/jsx(RuleGroupFooter, {
15729
- groupIndex: index,
15730
- groupId: groupId,
15731
- onGroupDelete: handleGroupDelete,
15732
- onRuleAdd: handleAddRule
15733
- })]
15734
- })]
15735
- })
15736
- }, groupId))]
15737
- });
15738
- });
15739
-
15740
15211
  const moreThan = ruleValue => ({
15741
15212
  fieldValue
15742
15213
  }) => {
@@ -17105,6 +16576,14 @@ const render = (value, formState) => {
17105
16576
  }
17106
16577
  return mustache.render(value, formState);
17107
16578
  };
16579
+ const renderUrl = (value, formState) => {
16580
+ if (value === undefined || value === null) {
16581
+ return value;
16582
+ }
16583
+ return decodeHtml$2(mustache.render(value, formState));
16584
+ };
16585
+ const useRenderUrl = template => useSelectFormState(state => renderUrl(template, state));
16586
+ const useRender = template => useSelectFormState(state => render(template, state));
17108
16587
 
17109
16588
  const useQueryTemplateParam = queryTemplate => {
17110
16589
  const selector = useCallback(state => {
@@ -17391,7 +16870,7 @@ const DateSelectReadOnly$1 = ({
17391
16870
  schema
17392
16871
  }) => {
17393
16872
  const value = useMemo(() => {
17394
- if (!(formData != null && formData.date)) return null;
16873
+ if (formData == undefined) return null;
17395
16874
  const date = new Date(formData.date);
17396
16875
  const options = _extends({}, formData.type === "y" && {
17397
16876
  year: "numeric"
@@ -17441,37 +16920,30 @@ const DateSelect = props => {
17441
16920
  rawErrors,
17442
16921
  disabled
17443
16922
  } = props;
16923
+ const [selectedDate, setSelectedDate] = useState(null);
16924
+ const [dateType, setDateType] = useState(dateTypes.day);
17444
16925
  const serverSideDateFormat = "MM-dd-yyyy";
17445
- const [{
17446
- selectedDate,
17447
- dateType
17448
- }, setFieldValue] = useState(() => {
16926
+ useEffect(() => {
17449
16927
  if (formData && typeof formData === "object" && formData.date != undefined) {
17450
- return {
17451
- selectedDate: parse$1(formData.date, serverSideDateFormat, new Date()),
17452
- dateType: findDateType(formData.type)
17453
- };
16928
+ let obj = formData;
16929
+ setDateType(findDateType(obj.type));
16930
+ setSelectedDate(parse$1(obj.date, serverSideDateFormat, new Date()));
17454
16931
  } else {
17455
- return {
17456
- selectedDate: null,
17457
- dateType: formData != null && formData.type ? findDateType(formData.type) : dateTypes.day
17458
- };
16932
+ setDateType(dateTypes.day);
16933
+ setSelectedDate(null);
17459
16934
  }
17460
- });
16935
+ }, [formData]);
17461
16936
  const handleDateTypeChange = (event, newDateType) => {
17462
- // INFO: toggle sends null value on double click
17463
- if (!newDateType) return;
17464
- let newDate = null;
17465
- if (typeof selectedDate !== "undefined" && selectedDate != null) {
17466
- newDate = format$1(selectedDate, serverSideDateFormat);
16937
+ if (newDateType != null) {
16938
+ setDateType(newDateType);
16939
+ if (typeof selectedDate !== "undefined" && selectedDate != null) {
16940
+ format$1(selectedDate, serverSideDateFormat);
16941
+ onChange({
16942
+ date: format$1(selectedDate, serverSideDateFormat),
16943
+ type: newDateType.type
16944
+ });
16945
+ }
17467
16946
  }
17468
- setFieldValue(prev => _extends({}, prev, {
17469
- dateType: newDateType
17470
- }));
17471
- onChange({
17472
- date: newDate,
17473
- type: newDateType.type
17474
- });
17475
16947
  };
17476
16948
  const handleDateChange = newDate => {
17477
16949
  if (newDate != null) {
@@ -17481,17 +16953,13 @@ const DateSelect = props => {
17481
16953
  newDate = setDate(newDate, 1);
17482
16954
  newDate = setMonth(newDate, 0);
17483
16955
  }
17484
- setFieldValue(prev => _extends({}, prev, {
17485
- selectedDate: newDate
17486
- }));
16956
+ setSelectedDate(newDate);
17487
16957
  onChange({
17488
16958
  date: format$1(newDate, serverSideDateFormat),
17489
16959
  type: dateType.type
17490
16960
  });
17491
16961
  } else {
17492
- setFieldValue(prev => _extends({}, prev, {
17493
- selectedDate: null
17494
- }));
16962
+ setSelectedDate(newDate);
17495
16963
  onChange({
17496
16964
  date: null,
17497
16965
  type: dateType.type
@@ -17561,7 +17029,7 @@ const DateSelect = props => {
17561
17029
  inputVariant: "outlined",
17562
17030
  inputFormat: dateType.format,
17563
17031
  views: dateType.views,
17564
- value: selectedDate || null,
17032
+ value: typeof selectedDate === "undefined" ? null : selectedDate,
17565
17033
  onChange: handleDateChange,
17566
17034
  disabled: disabled,
17567
17035
  renderInput: params => /*#__PURE__*/jsx(TextField, _extends({}, params, {
@@ -17571,12 +17039,7 @@ const DateSelect = props => {
17571
17039
  sx: dateInputStyles
17572
17040
  })),
17573
17041
  minDate: minDate,
17574
- maxDate: maxDate,
17575
- componentsProps: {
17576
- actionBar: {
17577
- actions: ["cancel", "clear", "accept"]
17578
- }
17579
- }
17042
+ maxDate: maxDate
17580
17043
  })
17581
17044
  })]
17582
17045
  });
@@ -17616,6 +17079,49 @@ const DisableWrapper = ({
17616
17079
  }));
17617
17080
  };
17618
17081
 
17082
+ const ImageUploadReadOnly = ({
17083
+ formData,
17084
+ schema,
17085
+ uiSchema: _uiSchema = {
17086
+ "ui:options": {}
17087
+ }
17088
+ }) => {
17089
+ const {
17090
+ downloadUrl: downloadUrlTemplate,
17091
+ extension: extensionTemplate
17092
+ } = _uiSchema["ui:options"];
17093
+ const downloadUrl = useRenderUrl(downloadUrlTemplate);
17094
+ const extension = useRender(extensionTemplate);
17095
+ return /*#__PURE__*/jsxs(Fragment, {
17096
+ children: [/*#__PURE__*/jsx(Typography, {
17097
+ gutterBottom: true,
17098
+ variant: "subtitle2",
17099
+ children: schema.title
17100
+ }), /*#__PURE__*/jsx(Paper, {
17101
+ sx: {
17102
+ height: 185,
17103
+ justifyContent: "center",
17104
+ display: "flex",
17105
+ padding: 2,
17106
+ overflow: "hidden"
17107
+ },
17108
+ variant: "outlined",
17109
+ children: /*#__PURE__*/jsx(Image, {
17110
+ src: downloadUrl,
17111
+ style: {
17112
+ height: "100%",
17113
+ width: "auto"
17114
+ },
17115
+ extension: extension
17116
+ })
17117
+ })]
17118
+ });
17119
+ };
17120
+ ImageUploadReadOnly.propTypes = {
17121
+ schema: PropTypes.any,
17122
+ renderedValues: PropTypes.any
17123
+ };
17124
+
17619
17125
  const FieldContainer = props => {
17620
17126
  return /*#__PURE__*/jsx(Box$2, _extends({}, props, {
17621
17127
  sx: _extends({}, props.sx, {
@@ -17627,30 +17133,7 @@ const FieldContainer = props => {
17627
17133
  };
17628
17134
  FieldContainer.propTypes = Box$2.propTypes;
17629
17135
 
17630
- registerPlugin(FilePondPluginFileValidateType, FilePondPluginFileValidateSize, FilePondPluginImageExifOrientation, FilePondPluginImagePreview, FilePondPluginGetFile);
17631
-
17632
- // Check enums below
17633
- // source:https://github.com/pqina/filepond-docs/blob/master/content/patterns/API/filepond-object.md#filepond-status
17634
- const FILE_STATUS = {
17635
- INIT: 1,
17636
- IDLE: 2,
17637
- PROCESSING_QUEUED: 9,
17638
- PROCESSING: 3,
17639
- PROCESSING_COMPLETE: 5,
17640
- // upload complete
17641
- PROCESSING_ERROR: 6,
17642
- PROCESSING_REVERT_ERROR: 10,
17643
- LOADING: 7,
17644
- LOAD_ERROR: 8
17645
- };
17646
- const FILE_ORIGIN = {
17647
- INPUT: 1,
17648
- // add by user
17649
- LIMBO: 2,
17650
- // temp file
17651
- LOCAL: 3 // pre-loaded files
17652
- };
17653
-
17136
+ registerPlugin(FilePondPluginFileValidateType, FilePondPluginImageExifOrientation, FilePondPluginImagePreview, FilePondPluginGetFile);
17654
17137
  const Upload = props => {
17655
17138
  const {
17656
17139
  schema,
@@ -17659,202 +17142,106 @@ const Upload = props => {
17659
17142
  "ui:options": {}
17660
17143
  },
17661
17144
  onChange,
17662
- disabled
17145
+ disabled,
17146
+ required
17663
17147
  } = props;
17664
- const emptyValue = uiSchema["ui:emptyValue"] || null;
17665
17148
  const isReadOnly = useReadOnly();
17666
17149
  const {
17150
+ documentName: documentNameTemplate,
17151
+ downloadUrl: downloadUrlTemplate,
17152
+ extension: extensionTemplate,
17667
17153
  uploadDataSource,
17154
+ mapUploadResponse,
17668
17155
  acceptedFileTypes,
17669
17156
  message,
17670
- // TODO: can be handled generic way with HOC
17671
- isImage = true,
17672
- // multiple = true, // change to false
17673
-
17674
- isPreviewHidden = false,
17675
- idTemplate,
17676
- downloadUrlTemplate,
17677
- nameTemplate,
17678
- mapUploadResponseToIdTemplate,
17679
- maxFiles = 1,
17680
- maxFileSize = null,
17681
- maxTotalFileSize = null
17157
+ isImage
17682
17158
  } = uiSchema["ui:options"];
17683
-
17684
- // TODO: implement single vs multipe mode, currently only multiple is active
17685
- // let _formData = formData; if (multiple && (formData === null ||
17686
- // formData === undefined)) { _formData = [];
17687
- // }
17688
- const _formData = formData || [];
17689
- const initialFiles = useMemo(() => {
17690
- return _formData.map(({
17691
- data
17692
- }) => {
17693
- const id = mustache.render(idTemplate, data);
17694
- const downloadUrl = downloadUrlTemplate ? decodeHtml$2(mustache.render(downloadUrlTemplate, data)) : downloadUrlTemplate;
17695
- const name = mustache.render(nameTemplate, data);
17696
- return {
17697
- // INFO: source appears in preview but also needed to identify
17698
- // the download URL. Check issue:
17699
- // https://github.com/pqina/filepond/issues/284
17700
- source: `${name} id:${id}`,
17701
- options: {
17702
- type: "local",
17703
- origin: downloadUrl,
17704
- // INFO: id is used in getFileIds function
17705
- metadata: {
17706
- url: downloadUrl,
17707
- id
17708
- }
17709
- }
17710
- };
17711
- });
17712
- }, []);
17713
17159
  const inputProps = uiSchema == null ? void 0 : uiSchema["ui:props"];
17714
- const filePondRef = useRef();
17715
- const getFileIds = () => {
17716
- var _filePondRef$current;
17717
- return ((_filePondRef$current = filePondRef.current) == null ? void 0 : _filePondRef$current.getFiles().filter(file => {
17718
- const {
17719
- origin,
17720
- status
17721
- } = file;
17722
- if (origin === FILE_ORIGIN.LOCAL) return true;
17723
- if (origin === FILE_ORIGIN.INPUT && status === FILE_STATUS.PROCESSING_COMPLETE) return true;
17724
- }).map(file => {
17725
- if (file.origin === FILE_ORIGIN.LOCAL) return file.getMetadata().id;
17726
- return file.serverId;
17727
- }).map(i => i.toString())) || [];
17728
- };
17160
+ const documentName = useRender(documentNameTemplate);
17161
+ const downloadUrl = useRenderUrl(downloadUrlTemplate);
17162
+ useRender(extensionTemplate);
17163
+ const [files, setFiles] = useState([]);
17729
17164
  const uploadUrl = useMemo(() => getDataSourceUrl(uploadDataSource), [uploadDataSource]);
17730
- const handleLoad = (source, load, error, progress, abort, headers) => {
17731
- // INFO: source appears in preview but also needed to identify
17732
- // the download URL. Check issue:
17733
- // https://github.com/pqina/filepond/issues/284
17734
- const file = initialFiles.find(item => item.source === source);
17735
- const loadUrl = file.options.origin;
17736
- fetch(loadUrl).then(res => res.blob()).then(res => {
17165
+
17166
+ // INFO: this state is needed to prevent re-load of file during submit
17167
+ const [currentFileId, setCurrentFileId] = useState();
17168
+
17169
+ // TODO: change this to useMemo with help of useLastestDeps
17170
+ useEffect(() => {
17171
+ if (formData === currentFileId) return;
17172
+ const files = [{
17173
+ source: documentName || "File",
17174
+ options: {
17175
+ type: "local",
17176
+ metadata: {
17177
+ url: downloadUrl
17178
+ }
17179
+ }
17180
+ }];
17181
+ if (formData != undefined) setFiles(files);
17182
+ }, [formData]);
17183
+ const handleLoad = (source, load, error) => {
17184
+ fetch(downloadUrl).then(res => res.blob()).then(res => {
17737
17185
  const file = res.type === "jpeg/jfif" || !res.type ? new Blob([res], {
17738
17186
  type: "image/jpeg"
17739
17187
  }) : res;
17740
- const preview = isPreviewHidden ? res : file;
17741
- load(preview);
17188
+ load(file);
17742
17189
  }).catch(error);
17743
-
17744
- // Should expose an abort method so the request can be cancelled
17745
- return {
17746
- abort: () => abort()
17747
- };
17748
17190
  };
17749
17191
  const handleUploadResponse = res => {
17750
17192
  try {
17751
17193
  const jsonRes = JSON.parse(res);
17752
- const id = mustache.render(mapUploadResponseToIdTemplate, jsonRes);
17753
- return id;
17194
+ const fileUuid = mapUploadResponse ? mustache.render(mapUploadResponse.fileUuid, jsonRes) : jsonRes.DATA.fileUuid;
17195
+ setCurrentFileId(fileUuid);
17196
+ onChange(fileUuid);
17754
17197
  } catch (err) {
17755
- var _window$logger;
17756
- (_window$logger = window.logger) == null ? void 0 : _window$logger.sendLog({
17757
- name: `Upload response could not be parsed. ${err}`,
17758
- data: res
17759
- });
17198
+ console.log(err);
17760
17199
  }
17761
17200
  };
17762
-
17763
- // TODO: move to message HOC
17201
+ const handleDelete = () => {
17202
+ setCurrentFileId();
17203
+ setFiles([]);
17204
+ onChange();
17205
+ };
17764
17206
  const messageProps = {
17765
17207
  title: (message == null ? void 0 : message.title) || undefined,
17766
17208
  description: (message == null ? void 0 : message.description) || undefined,
17767
17209
  type: (message == null ? void 0 : message.type) || "info",
17768
17210
  canDismiss: (message == null ? void 0 : message.canDismiss) || true
17769
17211
  };
17770
- const {
17771
- error
17772
- } = useNotify();
17773
- const handleFileChange = () => {
17774
- const ids = getFileIds();
17775
-
17776
- // TODO: fill the data
17777
- const value = ids.map(id => ({
17778
- value: id,
17779
- data: {}
17780
- }));
17781
- if (value.length === 0) onChange(emptyValue);else onChange(value);
17782
- };
17783
-
17784
- // TODO: move to memo component
17785
- const FileUpload = useMemo(() => {
17786
- const styles = isReadOnly ? {
17787
- // INFO: hide drop panel and drop panel
17788
- "div>div>div.filepond--drop-label": {
17789
- display: "none"
17790
- },
17791
- "button.filepond--action-remove-item": {
17792
- display: "none"
17793
- }
17794
- } : null;
17795
- const getAcceptedFileTypes = () => {
17796
- if (acceptedFileTypes) return acceptedFileTypes;
17797
- if (isImage) return ["image/*"];
17798
- return null;
17799
- };
17800
- const filePondProps = {
17801
- acceptedFileTypes: getAcceptedFileTypes(),
17802
- files: initialFiles,
17803
- // files: undefined,
17804
- allowMultiple: true,
17805
- server: {
17806
- url: uploadUrl,
17807
- process: {
17808
- method: "POST",
17809
- headers: {
17810
- Methods: "POST"
17811
- },
17812
- onload: handleUploadResponse,
17813
- onerror: e => {
17814
- var _window$logger2;
17815
- const message = `The image could not be uploaded.`;
17816
- error(message);
17817
- (_window$logger2 = window.logger) == null ? void 0 : _window$logger2.sendLog({
17818
- name: message,
17819
- data: e
17820
- });
17821
- }
17212
+ const filePondProps = {
17213
+ acceptedFileTypes: acceptedFileTypes ? acceptedFileTypes : isImage ? ["image/*"] : null,
17214
+ files,
17215
+ allowMultiple: false,
17216
+ server: {
17217
+ url: uploadUrl,
17218
+ process: {
17219
+ method: "POST",
17220
+ headers: {
17221
+ Methods: "POST"
17822
17222
  },
17823
- load: handleLoad
17223
+ onload: handleUploadResponse
17824
17224
  },
17825
- onprocessfile: () => handleFileChange(),
17826
- onremovefile: () => handleFileChange(),
17827
- maxParallelUploads: 3,
17828
- allowProcess: false,
17829
- disabled: isReadOnly,
17830
- allowDownloadByUrl: true,
17831
- maxFiles: maxFiles,
17832
- maxFileSize,
17833
- maxTotalFileSize,
17834
- // INFO: allowDrop create problem on file type validation //
17835
- // (check badge form), for preview image allowDrop: false, //
17836
- // labelIdle: "Click Here to Browse File(s)" //
17837
- allowFileTypeValidation: false
17838
- };
17839
- const overrideProps = typeof inputProps === "function" ? inputProps(filePondProps) : inputProps;
17840
- return /*#__PURE__*/jsx(Box$1, {
17841
- sx: styles,
17842
- children: /*#__PURE__*/jsx(FilePond, _extends({
17843
- ref: filePondRef
17844
- }, filePondProps, overrideProps))
17845
- });
17846
- }, []);
17847
-
17848
- // TODO: better implementation
17225
+ load: handleLoad,
17226
+ revert: handleDelete
17227
+ },
17228
+ onupdatefiles: files => {
17229
+ if (files.length === 0) {
17230
+ onChange(undefined);
17231
+ }
17232
+ setFiles(files);
17233
+ },
17234
+ allowProcess: false,
17235
+ disabled: isReadOnly,
17236
+ allowDownloadByUrl: true
17237
+ };
17238
+ const overrideProps = typeof inputProps === "function" ? inputProps(filePondProps) : inputProps;
17849
17239
  if (isReadOnly) {
17850
17240
  if (formData == undefined) return /*#__PURE__*/jsx(ReadOnlyView, {
17851
17241
  label: schema.title,
17852
17242
  emptyViewText: "No file uploaded"
17853
17243
  });
17854
- return /*#__PURE__*/jsx(ReadOnlyView, {
17855
- label: schema.title,
17856
- renderValue: () => FileUpload
17857
- });
17244
+ if (isImage) return /*#__PURE__*/jsx(ImageUploadReadOnly, _extends({}, props));
17858
17245
  }
17859
17246
  return /*#__PURE__*/jsxs(FieldContainer, {
17860
17247
  children: [/*#__PURE__*/jsxs(DisableWrapper, {
@@ -17871,7 +17258,7 @@ const Upload = props => {
17871
17258
  sx: {
17872
17259
  marginTop: 1
17873
17260
  },
17874
- children: FileUpload
17261
+ children: /*#__PURE__*/jsx(FilePond, _extends({}, filePondProps, overrideProps))
17875
17262
  })]
17876
17263
  }), message && /*#__PURE__*/jsx(Alert, _extends({}, messageProps))]
17877
17264
  });
@@ -18958,13 +18345,7 @@ const DateWidgetRaw = ({
18958
18345
  required: required,
18959
18346
  onChange: handleChange,
18960
18347
  disabled: disabled
18961
- }, uiSchema == null ? void 0 : uiSchema["ui:props"], {
18962
- componentsProps: {
18963
- actionBar: {
18964
- actions: ["cancel", "clear", "accept"]
18965
- }
18966
- }
18967
- }));
18348
+ }, uiSchema == null ? void 0 : uiSchema["ui:props"]));
18968
18349
  };
18969
18350
  DateWidgetRaw.propTypes = {
18970
18351
  onChange: PropTypes.func,
@@ -20906,5 +20287,5 @@ const DynamicFormHooks = {
20906
20287
  useReadOnly
20907
20288
  };
20908
20289
 
20909
- export { Actions$1 as Actions, Alert, AvatarBox, AvatarTitle, BusinessObject, BusinessObjectCard, EmptyCardSection as BusinessObjectCardEmptySection, CardSection as BusinessObjectCardSection, CardSectionTitle as BusinessObjectCardSectionTitle, BusinessObjectPanel, Header$1 as BusinessObjectPanelHeader, Section as BusinessObjectPanelSection, SectionTitle as BusinessObjectPanelSectionTitle, BusinessObjectPicker$1 as BusinessObjectPicker, BusinessObjectStatus, BusinessObjectStatusButton, BusinessObjectTable, Button, Chip, ContentBox, CoreProvider, CurriculumChart, DataTable, DatePickerBase as DatePicker, DisplayInFrame, DocViewer, Drawer, DynamicForm$1 as DynamicForm, BusinessObjectPickerField$1 as DynamicFormBusinessObjectPickerField, DynamicFormHooks, EditableText, FilterPanel, FilterChips$1 as FilterPanelFilterChips, mapFilters as FilterPanelMapFilters, FullPageViewer, Icon$1 as Icon, Image, IsometricImage, List, ListItem, ListItemGroup, MenuButton, ModalDialog, Notification, OutcomeSpace, PanelDrawer, ProgressChart, RichDataTable, RubricDistributionChart, RubricLegend, RubricScoreSlider, ScrollToTopButton, ScrollingContainer, SkeletonContent, StatBoxes, StatusMessage, SvgImage, SwipeableTabPanel, Content as SwipeableTabPanelContent, TextBuilder, Timeline, TitleAndActionHeader, TitleAndDescription, UserAvatar, WizardPanel, businessObjectColor, businessObjectConfiguration, businessObjectIcon, createComponentEvent, createEvent, createComponentStore as createStore, dataSourceManager, filterSortData, getBaseUrl, getConfiguration, getDataSourceUrl, http, outcomeSpaceColor, outcomeSpaceTypeFromSource, registerDataSource, registerDataSources, setDataSourceConfiguration, template, useComponentWillMount, useDataSourceInfiniteQuery, useDataSourceMutation, useDataSourceQuery, useDataSourceUrl, useDebounceCallback, useNotify, useRefDimensions, withStatusButtonDataSource };
20290
+ export { Actions$1 as Actions, Alert, AvatarBox, AvatarTitle, BusinessObject, BusinessObjectCard, EmptyCardSection as BusinessObjectCardEmptySection, CardSection as BusinessObjectCardSection, CardSectionTitle as BusinessObjectCardSectionTitle, BusinessObjectPanel, Header$1 as BusinessObjectPanelHeader, Section as BusinessObjectPanelSection, SectionTitle as BusinessObjectPanelSectionTitle, BusinessObjectPicker$1 as BusinessObjectPicker, BusinessObjectStatus, BusinessObjectStatusButton, BusinessObjectTable, Button, Chip, ContentBox, CoreProvider, CurriculumChart, DataTable, DatePickerBase as DatePicker, DisplayInFrame, DocViewer, Drawer, DynamicForm$1 as DynamicForm, BusinessObjectPickerField$1 as DynamicFormBusinessObjectPickerField, DynamicFormHooks, EditableText, FilterPanel, FilterChips$1 as FilterPanelFilterChips, mapFilters as FilterPanelMapFilters, FullPageViewer, Icon$1 as Icon, Image, IsometricImage, List, ListItem, ListItemGroup, MenuButton, ModalDialog, Notification, OutcomeSpace, PanelDrawer, ProgressChart, RichDataTable, RubricDistributionChart, RubricLegend, RubricScoreSlider, ScrollToTopButton, ScrollingContainer, SkeletonContent, StatBoxes, StatusMessage, SvgImage, SwipeableTabPanel, Content as SwipeableTabPanelContent, Timeline, TitleAndActionHeader, TitleAndDescription, UserAvatar, WizardPanel, businessObjectColor, businessObjectConfiguration, businessObjectIcon, createComponentEvent, createEvent, createComponentStore as createStore, dataSourceManager, filterSortData, getBaseUrl, getConfiguration, getDataSourceUrl, http, outcomeSpaceColor, outcomeSpaceTypeFromSource, registerDataSource, registerDataSources, setDataSourceConfiguration, template, useComponentWillMount, useDataSourceInfiniteQuery, useDataSourceMutation, useDataSourceQuery, useDataSourceUrl, useDebounceCallback, useNotify, useRefDimensions, withStatusButtonDataSource };
20910
20291
  //# sourceMappingURL=index.modern.js.map