ish-ui 1.0.12 → 1.0.13

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.
@@ -1,10 +1,6 @@
1
1
  import React from 'react';
2
- interface Props {
3
- height: number;
4
- itemCount: number;
5
- width: number;
6
- estimatedItemSize: number;
7
- children: any;
2
+ import { VariableSizeListProps } from 'react-window';
3
+ interface Props extends Omit<VariableSizeListProps, 'itemSize'> {
8
4
  listRef?: any;
9
5
  }
10
6
  declare class DynamicSizeList extends React.Component<Props> {
@@ -16,8 +16,6 @@ var __rest = (this && this.__rest) || function (s, e) {
16
16
  }
17
17
  return t;
18
18
  };
19
- // Temporary implementation
20
- // TODO: Remove component when native DynamicSizeList will be included in react-window v.2
21
19
  import React from 'react';
22
20
  import { VariableSizeList } from 'react-window';
23
21
  class ItemMeasurer extends React.Component {
@@ -17,7 +17,7 @@ var __rest = (this && this.__rest) || function (s, e) {
17
17
  return t;
18
18
  };
19
19
  import React, { useCallback } from 'react';
20
- import { NumericFormat } from 'react-number-format';
20
+ import NumberFormat from 'react-number-format';
21
21
  import InputAdornment from '@mui/material/InputAdornment';
22
22
  import clsx from 'clsx';
23
23
  import EditInPlaceField from './EditInPlaceField';
@@ -27,7 +27,7 @@ const NumberFormatCustom = React.forwardRef((props, ref) => {
27
27
  const onValueChange = useCallback(values => {
28
28
  onChange(normalizeNumber(values.value));
29
29
  }, []);
30
- return (React.createElement(NumericFormat, Object.assign({}, other, { getInputRef: ref, onValueChange: onValueChange, allowNegative: allowNegative, decimalScale: 2, thousandSeparator: true })));
30
+ return (React.createElement(NumberFormat, Object.assign({}, other, { getInputRef: ref, onValueChange: onValueChange, allowNegative: allowNegative, decimalScale: 2, thousandSeparator: true })));
31
31
  });
32
32
  const preformatDisplayValue = value => value || value === 0 ? formatCurrency(value, '') : value;
33
33
  function EditInPlaceMoneyField(_a) {
@@ -17,7 +17,7 @@ var __rest = (this && this.__rest) || function (s, e) {
17
17
  return t;
18
18
  };
19
19
  import React, { useCallback, useEffect, useRef, useState } from 'react';
20
- import { PatternFormat } from 'react-number-format';
20
+ import NumberFormat from 'react-number-format';
21
21
  import InputAdornment from '@mui/material/InputAdornment';
22
22
  import PhoneIcon from '@mui/icons-material/Phone';
23
23
  import debounce from 'lodash.debounce';
@@ -26,7 +26,7 @@ import { getPhoneMask } from '../utils';
26
26
  const NumberFormatCustom = React.forwardRef((props, ref) => {
27
27
  const { onChange } = props, other = __rest(props, ["onChange"]);
28
28
  const inputRef = useRef();
29
- const [format, setFormat] = useState(null);
29
+ const [format, setFormat] = useState('');
30
30
  const [prefix, setPrefix] = useState(undefined);
31
31
  const processFormat = useCallback(debounce(data => {
32
32
  setFormat(getPhoneMask(data.value));
@@ -59,7 +59,7 @@ const NumberFormatCustom = React.forwardRef((props, ref) => {
59
59
  ref = input;
60
60
  inputRef.current = input;
61
61
  };
62
- return (React.createElement(PatternFormat, Object.assign({}, other, { getInputRef: getInputRef, onKeyPress: onKeyPress, prefix: prefix, onValueChange: onValueChange, format: format, type: "text" })));
62
+ return (React.createElement(NumberFormat, Object.assign({}, other, { getInputRef: getInputRef, onKeyPress: onKeyPress, prefix: prefix, onValueChange: onValueChange, format: format, type: "text" })));
63
63
  });
64
64
  function EditInPlacePhoneField(_a) {
65
65
  var { InputProps, className } = _a, restProps = __rest(_a, ["InputProps", "className"]);
@@ -70,7 +70,7 @@ export interface ColoredCheckboxFieldProps<IP, MP> {
70
70
  };
71
71
  meta?: Partial<MP>;
72
72
  color: string;
73
- label?: string;
73
+ label?: ReactNode;
74
74
  className?: string;
75
75
  disabled?: boolean;
76
76
  }
@@ -111,7 +111,7 @@ export interface EditInPlaceDateTimeFieldProps<IP, MP> {
111
111
  fieldClasses?: FieldClasses;
112
112
  onKeyPress?: AnyArgFunction;
113
113
  labelAdornment?: ReactNode;
114
- processActionId?: string;
114
+ processActionId?: boolean;
115
115
  formatDate?: string;
116
116
  formatTime?: string;
117
117
  formatDateTime?: string;
@@ -220,8 +220,8 @@ export interface CheckboxFieldProps<IP> {
220
220
  export interface TagsFieldProps<T, IP, MP> extends EditInPlaceFieldProps<IP, MP> {
221
221
  tags: T[];
222
222
  showConfirm?: ShowConfirmCaller;
223
- classes?: any;
224
223
  validateEntity?: string;
224
+ allowParentSelect?: boolean;
225
225
  }
226
226
  export interface FormFieldBaseProps {
227
227
  required?: boolean;
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { MenuTag, TagLike } from '../model';
3
3
  interface Props<T> {
4
4
  classes?: any;
5
+ allowParentSelect?: boolean;
5
6
  tags: MenuTag<T>[];
6
7
  handleAdd: (tag: MenuTag<T>) => void;
7
8
  activeTag: MenuTag<T>;
@@ -22,7 +22,7 @@ const styles = theme => ({
22
22
  borderRadius: '100%'
23
23
  }
24
24
  });
25
- function AddTagMenu({ classes, tags, handleAdd, activeTag, setActiveTag }) {
25
+ function AddTagMenu({ classes, tags, handleAdd, activeTag, setActiveTag, allowParentSelect }) {
26
26
  const handleBack = () => {
27
27
  setActiveTag(prev => prev.parent);
28
28
  };
@@ -31,6 +31,6 @@ function AddTagMenu({ classes, tags, handleAdd, activeTag, setActiveTag }) {
31
31
  React.createElement("span", { className: clsx('d-flex textSecondaryColor', classes.backContainer) },
32
32
  React.createElement(KeyboardArrowLeft, { color: "inherit" }),
33
33
  "Back"))),
34
- (activeTag ? activeTag.children : tags).map(t => (React.createElement(AddTagMenuItem, { key: t.tagBody.id, tag: t, classes: classes, setActiveTag: setActiveTag, handleAdd: handleAdd })))));
34
+ (activeTag ? activeTag.children : tags).map(t => (React.createElement(AddTagMenuItem, { key: t.tagBody.id, tag: t, classes: classes, setActiveTag: setActiveTag, handleAdd: handleAdd, allowParentSelect: allowParentSelect })))));
35
35
  }
36
36
  export default withStyles(styles)(AddTagMenu);
@@ -5,6 +5,7 @@ interface Props<T> {
5
5
  setActiveTag: (tag: MenuTag<T>) => void;
6
6
  handleAdd: (tag: MenuTag<T>) => void;
7
7
  tag: MenuTag<T>;
8
+ allowParentSelect?: boolean;
8
9
  }
9
- declare function AddTagMenuItem<T extends TagLike>({ setActiveTag, tag, classes, handleAdd }: Props<T>): React.JSX.Element;
10
+ declare function AddTagMenuItem<T extends TagLike>({ setActiveTag, tag, classes, handleAdd, allowParentSelect }: Props<T>): React.JSX.Element;
10
11
  export default AddTagMenuItem;
@@ -10,7 +10,8 @@ import clsx from 'clsx';
10
10
  import KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight';
11
11
  import Checkbox from '@mui/material/Checkbox';
12
12
  import MenuItem from '@mui/material/MenuItem';
13
- function AddTagMenuItem({ setActiveTag, tag, classes, handleAdd }) {
13
+ import { IconButton } from '@mui/material';
14
+ function AddTagMenuItem({ setActiveTag, tag, classes, handleAdd, allowParentSelect }) {
14
15
  const openSubmenu = () => {
15
16
  setActiveTag(tag);
16
17
  };
@@ -18,9 +19,11 @@ function AddTagMenuItem({ setActiveTag, tag, classes, handleAdd }) {
18
19
  handleAdd(tag);
19
20
  };
20
21
  const hasChildren = Boolean(tag.children.length);
21
- return (React.createElement(MenuItem, { classes: { root: classes.listItem }, onClick: hasChildren ? openSubmenu : toggleChecked },
22
+ return (React.createElement(MenuItem, { classes: { root: classes.listItem }, onClick: allowParentSelect ? null : (hasChildren ? openSubmenu : toggleChecked), disableRipple: allowParentSelect },
22
23
  React.createElement("div", { className: clsx(classes.tagColorDotSmall, 'mr-1'), style: { background: '#' + tag.tagBody.color } }),
23
24
  React.createElement("span", { className: "mr-2 flex-fill" }, tag.tagBody.name),
24
- hasChildren ? (React.createElement(KeyboardArrowRight, { className: clsx('d-flex textSecondaryColor', classes.proceedIcon) })) : (React.createElement(Checkbox, { classes: { root: 'smallIconButton' }, checked: tag.active }))));
25
+ (allowParentSelect || !hasChildren) && React.createElement(Checkbox, { onClick: toggleChecked, classes: { root: 'smallIconButton' }, checked: tag.active }),
26
+ hasChildren && React.createElement(IconButton, { size: "small", onClick: openSubmenu },
27
+ React.createElement(KeyboardArrowRight, { className: clsx('d-flex textSecondaryColor', classes.proceedIcon) }))));
25
28
  }
26
29
  export default AddTagMenuItem;
@@ -1,2 +1,4 @@
1
- declare const _default: any;
2
- export default _default;
1
+ import React from 'react';
2
+ import { FieldInputProps, FieldMetaProps, TagLike, TagsFieldProps } from '../model';
3
+ declare function TagInputList<T extends TagLike, IP extends FieldInputProps, MP extends FieldMetaProps>({ input, tags, placeholder, labelAdornment, meta, label, disabled, className, warning, allowParentSelect, fieldClasses }: TagsFieldProps<T, IP, MP>): React.JSX.Element;
4
+ export default TagInputList;
@@ -19,8 +19,6 @@ var __rest = (this && this.__rest) || function (s, e) {
19
19
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
20
20
  import { InputAdornment, MenuItem, Select } from '@mui/material';
21
21
  import ClickAwayListener from '@mui/material/ClickAwayListener';
22
- import createStyles from '@mui/styles/createStyles';
23
- import withStyles from '@mui/styles/withStyles';
24
22
  import Autocomplete from '@mui/material/Autocomplete';
25
23
  import clsx from 'clsx';
26
24
  import { Edit } from '@mui/icons-material';
@@ -30,8 +28,8 @@ import EditInPlaceFieldBase from '../formFields/EditInPlaceFieldBase';
30
28
  import { getAllMenuTags, getHighlightedPartLabel, getMenuTags } from '../utils';
31
29
  import { stubComponent } from '../utils/stubs';
32
30
  import getCaretCoordinates from '../utils/DOM/getCaretCoordinates';
33
- const styles = theme => createStyles({
34
- inputEndAdornment: {
31
+ import { makeAppStyles } from '../styles';
32
+ const useStyles = makeAppStyles((theme) => (Object.assign(Object.assign({}, selectStyles(theme)), { inputEndAdornment: {
35
33
  visibility: 'hidden',
36
34
  display: 'flex',
37
35
  color: theme.palette.primary.main,
@@ -39,20 +37,16 @@ const styles = theme => createStyles({
39
37
  alignSelf: 'flex-end',
40
38
  marginBottom: '4px',
41
39
  opacity: 0.5
42
- },
43
- tagColorDotSmall: {
40
+ }, tagColorDotSmall: {
44
41
  width: theme.spacing(2),
45
42
  minWidth: theme.spacing(2),
46
43
  height: theme.spacing(2),
47
44
  minHeight: theme.spacing(2),
48
45
  background: 'red',
49
46
  borderRadius: '100%'
50
- },
51
- listbox: {
47
+ }, listbox: {
52
48
  whiteSpace: 'break-spaces'
53
- },
54
- invalid: {}
55
- });
49
+ }, invalid: {} })));
56
50
  const endTagRegex = /#\s*[^\w\d]*$/;
57
51
  const getCurrentInputString = (input, formTagIds = [], allMenuTags = []) => {
58
52
  let substr = input;
@@ -90,12 +84,13 @@ const getInputString = (tagIds, allTags) => ((tagIds === null || tagIds === void
90
84
  return (tag ? `${acc}#${tag.name} ` : acc);
91
85
  }, '')
92
86
  : '');
93
- function TagInputList({ input, tags, classes, placeholder, labelAdornment, meta, label = 'Tags', disabled, className, warning, fieldClasses = {} }) {
87
+ function TagInputList({ input, tags, placeholder, labelAdornment, meta, label = 'Tags', disabled, className, warning, allowParentSelect, fieldClasses = {} }) {
94
88
  const [menuIsOpen, setMenuIsOpen] = useState(false);
95
89
  const [activeTag, setActiveTag] = useState(null);
96
90
  const [isEditing, setIsEditing] = useState(false);
97
91
  const [inputValue, setInputValue] = useState('');
98
92
  const [currentInputString, setCurrentInputString] = useState('');
93
+ const classes = useStyles();
99
94
  const InputValueForRender = useMemo(() => {
100
95
  var _a;
101
96
  if (!inputValue || !tags || !tags.length)
@@ -248,7 +243,7 @@ function TagInputList({ input, tags, classes, placeholder, labelAdornment, meta,
248
243
  React.createElement(ClickAwayListener, { onClickAway: onTagListBlur }, params.children)));
249
244
  }, [allMenuTags, inputValue, currentInputString, inputNode.current, tagMenuNode.current, input.value]);
250
245
  const listboxAdapter = useCallback(params => (React.createElement("div", { className: params.className, ref: tagMenuNode },
251
- React.createElement(AddTagMenu, { tags: menuTags, handleAdd: onTagAdd, activeTag: activeTag, setActiveTag: setActiveTag }))), [menuTags, activeTag, setActiveTag, onTagAdd]);
246
+ React.createElement(AddTagMenu, { tags: menuTags, handleAdd: onTagAdd, activeTag: activeTag, setActiveTag: setActiveTag, allowParentSelect: allowParentSelect }))), [menuTags, activeTag, setActiveTag, onTagAdd]);
252
247
  return (React.createElement("div", { className: className, id: input.name },
253
248
  React.createElement("div", { className: clsx('relative', {
254
249
  'pointer-events-none': disabled
@@ -271,8 +266,8 @@ function TagInputList({ input, tags, classes, placeholder, labelAdornment, meta,
271
266
  inputProps.ref.current = ref === null || ref === void 0 ? void 0 : ref.node;
272
267
  }, onFocus: edit, value: "stub", className: classes.inputWrapper, classes: { select: 'd-flex flex-wrap cursor-text' }, endAdornment: React.createElement(InputAdornment, { position: "end", className: classes.inputEndAdornment },
273
268
  React.createElement(Edit, null)), IconComponent: stubComponent },
274
- React.createElement(MenuItem, { value: "stub" }, InputValueForRender || React.createElement("span", { className: "placeholderContent" }, "No value")))
269
+ React.createElement(MenuItem, { value: "stub" }, InputValueForRender || React.createElement("span", { className: "placeholderContent" }, placeholder || 'No value')))
275
270
  : null })));
276
271
  }, popupIcon: stubComponent(), disableListWrap: true, openOnFocus: true }))));
277
272
  }
278
- export default withStyles(theme => (Object.assign(Object.assign({}, selectStyles(theme)), styles(theme))))(TagInputList);
273
+ export default TagInputList;
@@ -5,3 +5,5 @@ export * from './DOM';
5
5
  export * from './numbers';
6
6
  export * from './dates';
7
7
  export * from './fields';
8
+ export * from './hooks';
9
+ export * from './events';
@@ -12,3 +12,5 @@ export * from './DOM';
12
12
  export * from './numbers';
13
13
  export * from './dates';
14
14
  export * from './fields';
15
+ export * from './hooks';
16
+ export * from './events';
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "ish-ui",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "UI elements for onCourse and other ish apps",
5
5
  "main": "main.ts",
6
6
  "devDependencies": {
7
+ "@ckeditor/ckeditor5-dev-utils": "^30.5.0",
7
8
  "@marshallofsound/webpack-asset-relocator-loader": "^0.5.0",
8
9
  "@pmmmwh/react-refresh-webpack-plugin": "^0.5.8",
9
10
  "@types/node": "^18.11.5",
@@ -57,34 +58,38 @@
57
58
  "@ckeditor/ckeditor5-source-editing": "35.1.0",
58
59
  "@ckeditor/ckeditor5-table": "35.1.0",
59
60
  "@ckeditor/ckeditor5-theme-lark": "35.1.0",
60
- "@emotion/cache": "latest",
61
- "@emotion/react": "latest",
62
- "@emotion/styled": "latest",
61
+ "@emotion/cache": "11.10.8",
62
+ "@emotion/react": "11.10.8",
63
+ "@emotion/styled": "11.10.8",
63
64
  "@fortawesome/fontawesome-svg-core": "latest",
64
65
  "@fortawesome/free-regular-svg-icons": "latest",
65
66
  "@fortawesome/free-solid-svg-icons": "latest",
66
67
  "@fortawesome/react-fontawesome": "latest",
67
- "@mui/icons-material": "latest",
68
- "@mui/lab": "latest",
69
- "@mui/material": "latest",
70
- "@mui/styles": "latest",
71
- "@mui/x-date-pickers": "latest",
68
+ "@mui/icons-material": "5.10.16",
69
+ "@mui/lab": "^5.0.0-alpha.99",
70
+ "@mui/material": "5.10.17",
71
+ "@mui/styles": "5.10.16",
72
+ "@mui/system": "^5.14.1",
73
+ "@mui/x-date-pickers": "^5.0.0",
72
74
  "autosuggest-highlight": "^3.3.4",
73
75
  "date-fns": "^2.30.0",
74
76
  "date-fns-tz": "^2.0.0",
75
77
  "decimal.js-light": "^2.5.1",
76
78
  "lodash.debounce": "^4.0.8",
77
- "re-resizable": "^6.9.9",
79
+ "re-resizable": "^6.9.11",
78
80
  "react": "^18.2.0",
79
81
  "react-ace": "^10.1.0",
80
82
  "react-color": "^2.19.3",
81
83
  "react-dom": "^18.2.0",
82
84
  "react-dropzone": "^14.2.3",
83
- "react-number-format": "^5.2.2",
85
+ "react-number-format": "4.9.3",
84
86
  "react-window": "^1.8.9",
85
87
  "react-window-infinite-loader": "^1.0.9",
86
88
  "redux": "^4.2.1"
87
89
  },
90
+ "resolutions": {
91
+ "@mui/styles/react": "^18.2.0"
92
+ },
88
93
  "scripts": {
89
94
  "test": "exit 0",
90
95
  "start": "cross-env NODE_ENV=development webpack serve --config tools/webpack/webpack.config.dev.js",
@@ -96,13 +101,12 @@
96
101
  "type": "git",
97
102
  "url": "git+https://github.com/ishgroup/ish-ui.git"
98
103
  },
99
- "author": "yuryyas",
100
- "license": "ISC",
104
+ "author": "ishgroup",
101
105
  "bugs": {
102
106
  "url": "https://github.com/ishgroup/ish-ui/issues"
103
107
  },
104
108
  "homepage": "https://github.com/ishgroup/ish-ui#readme",
105
109
  "publishConfig": {
106
- "@yuryyas:registry": "https://npm.pkg.github.com"
110
+ "@ishgroup:registry": "https://npm.pkg.github.com"
107
111
  }
108
112
  }