ish-ui 1.0.55 → 1.1.0

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.
Files changed (61) hide show
  1. package/dist/appBar/AppBarHelpMenu.d.ts +17 -1
  2. package/dist/appBar/AppBarHelpMenu.js +5 -5
  3. package/dist/colorPicker/ColorPicker.js +5 -6
  4. package/dist/dialog/message/Message.js +3 -4
  5. package/dist/documents/DocumentIconsChooser.js +4 -5
  6. package/dist/fieldMessage/ErrorMessage.d.ts +1 -1
  7. package/dist/fieldMessage/ErrorMessage.js +8 -6
  8. package/dist/fieldMessage/WarningMessage.d.ts +1 -1
  9. package/dist/fieldMessage/WarningMessage.js +8 -6
  10. package/dist/fieldMessage/styles.d.ts +12 -1
  11. package/dist/fieldMessage/styles.js +1 -2
  12. package/dist/fileUploader/FileUploaderDialog.d.ts +1 -1
  13. package/dist/fileUploader/FileUploaderDialog.js +9 -9
  14. package/dist/formFields/CheckboxField.d.ts +1 -1
  15. package/dist/formFields/CheckboxField.js +4 -4
  16. package/dist/formFields/CodeEditorField.js +3 -4
  17. package/dist/formFields/ColoredCheckBox.js +3 -2
  18. package/dist/formFields/DateTimeField.js +2 -3
  19. package/dist/formFields/EditInPlaceDateTimeField.js +40 -20
  20. package/dist/formFields/EditInPlaceField.js +3 -4
  21. package/dist/formFields/EditInPlaceFieldBase.js +9 -10
  22. package/dist/formFields/EditInPlaceMoneyField.js +3 -2
  23. package/dist/formFields/EditInPlaceSearchSelect.js +16 -13
  24. package/dist/formFields/FilePreview.d.ts +1 -1
  25. package/dist/formFields/FilePreview.js +5 -5
  26. package/dist/formFields/FormRadioButtons.js +3 -3
  27. package/dist/formFields/SelectCustomComponents.d.ts +10 -1
  28. package/dist/formFields/SelectCustomComponents.js +7 -6
  29. package/dist/formFields/Switch.d.ts +1 -1
  30. package/dist/formFields/Switch.js +5 -5
  31. package/dist/formFields/TextField.d.ts +5 -1
  32. package/dist/formFields/TextField.js +2 -2
  33. package/dist/formFields/UneditableBase.js +3 -4
  34. package/dist/layout/InfoPill.js +4 -4
  35. package/dist/layout/resizable/ResizableWrapper.js +5 -5
  36. package/dist/markdownEditor/HtmlEditor.d.ts +2 -2
  37. package/dist/markdownEditor/WysiwygEditor.js +1 -1
  38. package/dist/model/Theme.d.ts +2 -2
  39. package/dist/styles/GlobalStylesProvider.d.ts +3 -2
  40. package/dist/styles/GlobalStylesProvider.js +714 -383
  41. package/dist/styles/hooks.d.ts +9 -1
  42. package/dist/styles/hooks.js +5 -4
  43. package/dist/styles/index.d.ts +0 -4
  44. package/dist/styles/index.js +0 -4
  45. package/dist/styles/makeStyles.d.ts +37 -2
  46. package/dist/styles/makeStyles.js +7 -2
  47. package/dist/tagsInput/AddTagMenu.d.ts +2 -1
  48. package/dist/tagsInput/AddTagMenu.js +4 -4
  49. package/dist/tagsInput/AddTagMenuItem.js +5 -4
  50. package/dist/tagsInput/TagInputList.js +21 -15
  51. package/dist/timetable/miniCalendar/CalendarDay.d.ts +1 -1
  52. package/dist/timetable/miniCalendar/CalendarDay.js +38 -39
  53. package/dist/timetable/miniCalendar/CalendarHeader.js +3 -4
  54. package/dist/timetable/miniCalendar/CalendarWeekPanel.js +3 -4
  55. package/dist/timetable/miniCalendar/WeekDay.js +3 -4
  56. package/package.json +62 -71
  57. package/assets/fonts/inter/inter.scss +0 -17
  58. package/dist/styles/StylesProviderCustom.d.ts +0 -3
  59. package/dist/styles/StylesProviderCustom.js +0 -6
  60. package/dist/styles/bootstrap.d.ts +0 -491
  61. package/dist/styles/bootstrap.js +0 -496
@@ -1,4 +1,12 @@
1
- export declare const useHoverShowStyles: (props?: any) => import("@mui/styles").ClassNameMap<"container" | "target">;
1
+ export declare const useHoverShowStyles: (params: void, muiStyleOverridesParams?: {
2
+ props: Record<string, unknown>;
3
+ ownerState?: Record<string, unknown> | undefined;
4
+ } | undefined) => {
5
+ classes: Record<"container" | "target", string>;
6
+ theme: import("@mui/material").Theme;
7
+ css: import("tss-react").Css;
8
+ cx: import("tss-react").Cx;
9
+ };
2
10
  export declare const useWindowSize: () => {
3
11
  width: any;
4
12
  height: any;
@@ -3,18 +3,19 @@
3
3
  * No copying or use of this code is allowed without permission in writing from ish.
4
4
  */
5
5
  import { useEffect, useState } from 'react';
6
- import { makeStyles } from '@mui/styles';
6
+ import { makeStyles } from 'tss-react/mui';
7
7
  import * as Colors from '@mui/material/colors';
8
- export const useHoverShowStyles = makeStyles({
8
+ // TODO jss-to-tss-react codemod: usages of this hook outside of this file will not be converted.
9
+ export const useHoverShowStyles = makeStyles()((_theme, _params, classes) => ({
9
10
  container: {
10
- '&:hover $target': {
11
+ [`&:hover .${classes.target}`]: {
11
12
  visibility: 'visible'
12
13
  }
13
14
  },
14
15
  target: {
15
16
  visibility: 'hidden'
16
17
  }
17
- });
18
+ }));
18
19
  export const useWindowSize = () => {
19
20
  const [windowSize, setWindowSize] = useState({
20
21
  width: undefined,
@@ -2,10 +2,6 @@ export * from './mixins/keyframes';
2
2
  export * from './mixins/common';
3
3
  export * from './mixins/prefixer';
4
4
  export * from './animateStyles';
5
- export * from './bootstrap';
6
5
  export * from './GlobalStylesProvider';
7
- export { default as GlobalStylesProvider } from './GlobalStylesProvider';
8
6
  export * from './hooks';
9
7
  export * from './makeStyles';
10
- export * from './StylesProviderCustom';
11
- export { default as StylesProviderCustom } from './StylesProviderCustom';
@@ -9,10 +9,6 @@ export * from './mixins/keyframes';
9
9
  export * from './mixins/common';
10
10
  export * from './mixins/prefixer';
11
11
  export * from './animateStyles';
12
- export * from './bootstrap';
13
12
  export * from './GlobalStylesProvider';
14
- export { default as GlobalStylesProvider } from './GlobalStylesProvider';
15
13
  export * from './hooks';
16
14
  export * from './makeStyles';
17
- export * from './StylesProviderCustom';
18
- export { default as StylesProviderCustom } from './StylesProviderCustom';
@@ -1,3 +1,38 @@
1
- import { Styles, WithStylesOptions, ClassNameMap } from '@mui/styles';
2
1
  import { AppTheme } from '../model';
3
- export declare const makeAppStyles: <Props extends object = {}, ClassKey extends string = string>(styles: Styles<AppTheme, Props, ClassKey>, options?: Omit<WithStylesOptions<AppTheme>, 'withTheme'>) => keyof Props extends never ? (props?: any) => ClassNameMap<ClassKey> : (props: Props) => ClassNameMap<ClassKey>;
2
+ declare const withStyles: {
3
+ <C extends keyof import("react").ReactHTML | import("tss-react/tools/ReactComponent").ReactComponent<any>, Props extends C extends import("tss-react/tools/ReactComponent").ReactComponent<infer P> ? P : C extends keyof import("react").ReactHTML ? import("react").ReactHTML[C] extends import("tss-react/tools/ReactComponent").ReactComponent<infer P_1> ? NonNullable<P_1> : never : never, CssObjectByRuleName extends Props extends {
4
+ classes?: Partial<infer ClassNameByRuleName> | undefined;
5
+ } ? { [RuleName in keyof ClassNameByRuleName]?: import("tss-react").CSSObject; } & {
6
+ [mediaQuery: `@media${string}`]: { [RuleName_1 in keyof ClassNameByRuleName]?: import("tss-react").CSSObject; };
7
+ } : {
8
+ root: import("tss-react").CSSObject;
9
+ } & {
10
+ [mediaQuery: `@media${string}`]: {
11
+ root: import("tss-react").CSSObject;
12
+ };
13
+ }>(Component: C, cssObjectByRuleNameOrGetCssObjectByRuleName: (CssObjectByRuleName & {
14
+ [mediaQuery: `@media${string}`]: { [Key in keyof CssObjectByRuleName]?: import("tss-react").CSSObject; };
15
+ }) | ((theme: AppTheme, props: Props, classes: Record<Exclude<keyof CssObjectByRuleName, `@media${string}`>, string>) => CssObjectByRuleName), params?: {
16
+ name?: string | Record<string, unknown> | undefined;
17
+ uniqId?: string | undefined;
18
+ } | undefined): C extends keyof import("react").ReactHTML ? import("react").ReactHTML[C] : C;
19
+ getClasses: <Classes>(props: {
20
+ className?: string | undefined;
21
+ classes?: Classes | undefined;
22
+ }) => Classes extends Record<string, unknown> ? Classes extends Partial<Record<infer K, any>> ? Record<K, string> : Classes : {
23
+ root: string;
24
+ };
25
+ };
26
+ export declare const makeAppStyles: <Params = void, RuleNameSubsetReferencableInNestedSelectors extends string = never>(params?: {
27
+ name?: string | Record<string, unknown> | undefined;
28
+ uniqId?: string | undefined;
29
+ } | undefined) => <RuleName_2 extends string>(cssObjectByRuleNameOrGetCssObjectByRuleName: Record<RuleName_2, import("tss-react").CSSObject> | ((theme: AppTheme, params: Params, classes: Record<RuleNameSubsetReferencableInNestedSelectors, string>) => Record<RuleNameSubsetReferencableInNestedSelectors | RuleName_2, import("tss-react").CSSObject>)) => (params: Params, muiStyleOverridesParams?: {
30
+ props: Record<string, unknown>;
31
+ ownerState?: Record<string, unknown> | undefined;
32
+ } | undefined) => {
33
+ classes: Record<RuleName_2, string>;
34
+ theme: AppTheme;
35
+ css: import("tss-react").Css;
36
+ cx: import("tss-react").Cx;
37
+ };
38
+ export { withStyles };
@@ -5,5 +5,10 @@
5
5
  *
6
6
  * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
7
7
  */
8
- import { makeStyles } from '@mui/styles';
9
- export const makeAppStyles = (styles, options) => makeStyles(styles, options);
8
+ import { createMakeAndWithStyles } from 'tss-react';
9
+ import { useTheme } from '@mui/system';
10
+ const { makeStyles, withStyles } = createMakeAndWithStyles({
11
+ useTheme,
12
+ });
13
+ export const makeAppStyles = makeStyles;
14
+ export { withStyles };
@@ -9,5 +9,6 @@ interface Props<T> {
9
9
  activeTag: MenuTag<T>;
10
10
  setActiveTag: (arg: (MenuTag<T> | ((prevState: MenuTag<T>) => MenuTag<T>))) => void;
11
11
  }
12
- declare const _default: React.JSXElementConstructor<Omit<Props<TagLike>, "classes"> & import("@mui/styles/withStyles").StyledComponentProps<"listItem" | "proceedIcon" | "backContainer" | "tagColorDotSmall"> & object>;
12
+ declare function AddTagMenu<T extends TagLike>({ classes, tags, hideColor, handleAdd, activeTag, setActiveTag, allowParentSelect }: Props<T>): React.JSX.Element;
13
+ declare const _default: typeof AddTagMenu;
13
14
  export default _default;
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
- import clsx from 'clsx';
3
- import withStyles from '@mui/styles/withStyles';
2
+ import { useStyles, withStyles } from 'tss-react/mui';
4
3
  import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft';
5
4
  import MenuItem from '@mui/material/MenuItem';
6
5
  import List from '@mui/material/List';
@@ -26,11 +25,12 @@ function AddTagMenu({ classes, tags, hideColor, handleAdd, activeTag, setActiveT
26
25
  const handleBack = () => {
27
26
  setActiveTag(prev => prev.parent);
28
27
  };
28
+ const { cx } = useStyles();
29
29
  return (React.createElement(List, { className: classes.rootMenu },
30
30
  activeTag && (React.createElement(MenuItem, { onClick: handleBack, className: classes.listItem },
31
- React.createElement("span", { className: clsx('d-flex textSecondaryColor', classes.backContainer) },
31
+ React.createElement("span", { className: cx('d-flex textSecondaryColor', classes.backContainer) },
32
32
  React.createElement(KeyboardArrowLeft, { color: "inherit" }),
33
33
  "Back"))),
34
34
  (activeTag ? activeTag.children : tags).map(t => (React.createElement(AddTagMenuItem, { key: t.tagBody.id, tag: t, classes: classes, setActiveTag: setActiveTag, handleAdd: handleAdd, allowParentSelect: allowParentSelect, hideColor: hideColor })))));
35
35
  }
36
- export default withStyles(styles)(AddTagMenu);
36
+ export default withStyles(AddTagMenu, styles);
@@ -6,11 +6,11 @@
6
6
  * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
7
7
  */
8
8
  import React from 'react';
9
- import clsx from 'clsx';
10
9
  import KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight';
11
10
  import Checkbox from '@mui/material/Checkbox';
12
11
  import MenuItem from '@mui/material/MenuItem';
13
12
  import { IconButton } from '@mui/material';
13
+ import { useStyles } from 'tss-react/mui';
14
14
  function AddTagMenuItem({ setActiveTag, tag, classes, handleAdd, hideColor, allowParentSelect }) {
15
15
  const openSubmenu = () => {
16
16
  setActiveTag(tag);
@@ -20,11 +20,12 @@ function AddTagMenuItem({ setActiveTag, tag, classes, handleAdd, hideColor, allo
20
20
  handleAdd(tag);
21
21
  };
22
22
  const hasChildren = Boolean(tag.children.length);
23
+ const { cx } = useStyles();
23
24
  return (React.createElement(MenuItem, { classes: { root: classes.listItem }, onClick: hasChildren ? openSubmenu : toggleChecked, disableRipple: allowParentSelect },
24
- !hideColor && React.createElement("div", { className: clsx(classes.tagColorDotSmall, 'mr-1'), style: { background: '#' + tag.tagBody.color } }),
25
+ !hideColor && React.createElement("div", { className: cx(classes.tagColorDotSmall, 'mr-1'), style: { background: '#' + tag.tagBody.color } }),
25
26
  React.createElement("span", { className: "mr-2 flex-fill" }, tag.tagBody.name),
26
27
  (allowParentSelect || !hasChildren) && React.createElement(Checkbox, { onClick: toggleChecked, classes: { root: 'smallIconButton' }, checked: tag.active }),
27
- React.createElement(IconButton, { size: "small", onClick: openSubmenu, className: clsx(!hasChildren && (allowParentSelect ? 'invisible' : 'd-none')) },
28
- React.createElement(KeyboardArrowRight, { className: clsx('d-flex textSecondaryColor', classes.proceedIcon) }))));
28
+ React.createElement(IconButton, { size: "small", onClick: openSubmenu, className: cx(!hasChildren && (allowParentSelect ? 'invisible' : 'd-none')) },
29
+ React.createElement(KeyboardArrowRight, { className: cx('d-flex textSecondaryColor', classes.proceedIcon) }))));
29
30
  }
30
31
  export default AddTagMenuItem;
@@ -20,26 +20,30 @@ import React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState }
20
20
  import { InputAdornment, MenuItem, Select } from '@mui/material';
21
21
  import { ClickAwayListener } from '@mui/base';
22
22
  import Autocomplete from '@mui/material/Autocomplete';
23
- import clsx from 'clsx';
24
23
  import { Edit } from '@mui/icons-material';
25
- import { selectStyles } from '../formFields';
24
+ import { useSelectStyles } from '../formFields';
26
25
  import AddTagMenu from './AddTagMenu';
27
26
  import EditInPlaceFieldBase from '../formFields/EditInPlaceFieldBase';
28
27
  import { getAllMenuTags, getHighlightedPartLabel, getMenuTags, stubComponent } from '../utils';
29
28
  import getCaretCoordinates from '../utils/DOM/getCaretCoordinates';
30
29
  import { makeAppStyles } from '../styles';
31
- const useStyles = makeAppStyles((theme) => (Object.assign(Object.assign({}, selectStyles(theme)), { tagColorDotSmall: {
30
+ const useStyles = makeAppStyles()((theme) => ({
31
+ tagColorDotSmall: {
32
32
  width: theme.spacing(2),
33
33
  minWidth: theme.spacing(2),
34
34
  height: theme.spacing(2),
35
35
  minHeight: theme.spacing(2),
36
36
  background: 'red',
37
37
  borderRadius: '100%'
38
- }, listbox: {
38
+ },
39
+ listbox: {
39
40
  whiteSpace: 'break-spaces'
40
- }, editIcon: {
41
+ },
42
+ editIcon: {
41
43
  opacity: 0.5
42
- }, invalid: {} })));
44
+ },
45
+ invalid: {},
46
+ }));
43
47
  const endTagRegex = /#\s*[^\w\d]*$/;
44
48
  const getCurrentInputString = (input, formTagIds = [], allMenuTags = []) => {
45
49
  let substr = input;
@@ -83,7 +87,9 @@ function TagInputList({ input, tags, placeholder, labelAdornment, meta, label =
83
87
  const [isEditing, setIsEditing] = useState(false);
84
88
  const [inputValue, setInputValue] = useState('');
85
89
  const [currentInputString, setCurrentInputString] = useState('');
86
- const classes = useStyles();
90
+ const { classes: ownClasses, cx } = useStyles();
91
+ const { classes: selectClasses } = useSelectStyles();
92
+ const classes = Object.assign(Object.assign({}, ownClasses), selectClasses);
87
93
  const InputValueForRender = useMemo(() => {
88
94
  var _a;
89
95
  if (!inputValue || !tags || !tags.length)
@@ -92,8 +98,8 @@ function TagInputList({ input, tags, placeholder, labelAdornment, meta, label =
92
98
  && input.value.map(id => getFullTag(id, tags)).filter(t => t);
93
99
  if (!(arrayOfTags === null || arrayOfTags === void 0 ? void 0 : arrayOfTags.length))
94
100
  return '';
95
- return arrayOfTags.map((tag, index) => (React.createElement("span", { key: tag.id, className: clsx('centeredFlex', index !== arrayOfTags.length - 1 ? 'pr-1' : '') },
96
- !hideColor && React.createElement("div", { key: tag.id, className: clsx(classes.tagColorDotSmall, 'mr-0-5'), style: { background: '#' + tag.color } }),
101
+ return arrayOfTags.map((tag, index) => (React.createElement("span", { key: tag.id, className: cx('centeredFlex', index !== arrayOfTags.length - 1 ? 'pr-1' : '') },
102
+ !hideColor && React.createElement("div", { key: tag.id, className: cx(classes.tagColorDotSmall, 'mr-0-5'), style: { background: '#' + tag.color } }),
97
103
  React.createElement("span", { className: "text-nowrap" }, `#${tag.name} `))));
98
104
  }, [tags, input.value, inputValue, hideColor]);
99
105
  const inputNode = useRef();
@@ -244,14 +250,14 @@ function TagInputList({ input, tags, placeholder, labelAdornment, meta, label =
244
250
  React.createElement(AddTagMenu, { tags: menuTags, handleAdd: onTagAdd, hideColor: hideColor, activeTag: activeTag, setActiveTag: setActiveTag, allowParentSelect: allowParentSelect }));
245
251
  });
246
252
  return (React.createElement("div", { className: className, id: input.name },
247
- React.createElement("div", { className: clsx('relative', {
253
+ React.createElement("div", { className: cx('relative', {
248
254
  'pointer-events-none': disabled
249
255
  }) },
250
256
  React.createElement(Autocomplete, { value: null, open: menuIsOpen, options: filteredOptions, onChange: handleChange, renderOption: renderOption, filterOptions: filterOptionsInner, getOptionLabel: getOptionLabel, PopperComponent: currentInputString ? undefined : popperAdapter, ListboxComponent: currentInputString ? undefined : listboxAdapter, classes: {
251
257
  root: classes.root,
252
258
  hasPopupIcon: classes.hasPopup,
253
259
  hasClearIcon: classes.hasClear,
254
- listbox: clsx(classes.listbox, fieldClasses.listbox),
260
+ listbox: cx(classes.listbox, fieldClasses.listbox),
255
261
  inputRoot: classes.inputWrapper,
256
262
  noOptions: 'd-none'
257
263
  }, renderInput: (_a) => {
@@ -259,16 +265,16 @@ function TagInputList({ input, tags, placeholder, labelAdornment, meta, label =
259
265
  return (React.createElement(EditInPlaceFieldBase, Object.assign({}, params, { variant: variant, name: input.name, value: input.value, error: meta.error, invalid: meta === null || meta === void 0 ? void 0 : meta.invalid, label: label, warning: warning, disabled: disabled, fieldClasses: fieldClasses, shrink: Boolean(label || input.value), labelAdornment: labelAdornment, placeholder: placeholder, editIcon: editIcon === undefined ? React.createElement(Edit, null) : editIcon, InputProps: Object.assign(Object.assign({}, InputProps), { onChange: handleInputChange, onFocus,
260
266
  onBlur, classes: {
261
267
  underline: fieldClasses.underline,
262
- input: clsx(disabled && classes.readonly, fieldClasses.text),
268
+ input: cx(disabled && classes.readonly, fieldClasses.text),
263
269
  }, inputProps: Object.assign(Object.assign({}, inputProps), { ref: ref => {
264
270
  inputProps.ref.current = ref;
265
271
  inputNode.current = ref;
266
- }, value: inputValue, className: clsx(inputProps.className, fieldClasses.text) }) }), CustomInput: !isEditing
272
+ }, value: inputValue, className: cx(inputProps.className, fieldClasses.text) }) }), CustomInput: !isEditing
267
273
  ? React.createElement(Select, { inputRef: ref => {
268
274
  inputProps.ref.current = ref === null || ref === void 0 ? void 0 : ref.node;
269
275
  }, onFocus: edit, value: "stub", className: classes.inputWrapper, classes: {
270
- select: clsx('d-flex flex-wrap cursor-text', fieldClasses.text)
271
- }, endAdornment: React.createElement(InputAdornment, { position: "end", className: clsx(classes.editIcon, 'invisible') },
276
+ select: cx('d-flex flex-wrap cursor-text', fieldClasses.text)
277
+ }, endAdornment: React.createElement(InputAdornment, { position: "end", className: cx(classes.editIcon, 'invisible') },
272
278
  React.createElement(Edit, { className: "test" })), IconComponent: stubComponent },
273
279
  React.createElement(MenuItem, { value: "stub" }, InputValueForRender || React.createElement("span", { className: "placeholderContent" }, placeholder)))
274
280
  : null })));
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { DateArgFunction, CalendarDayModel } from '../../model';
2
+ import { CalendarDayModel, DateArgFunction } from '../../model';
3
3
  interface Props extends CalendarDayModel {
4
4
  dayIndexValue: number;
5
5
  isSameAsTarget?: boolean;
@@ -7,56 +7,55 @@
7
7
  */
8
8
  import React, { memo } from 'react';
9
9
  import { Button } from '@mui/material';
10
- import clsx from 'clsx';
11
10
  import { alpha } from '@mui/material/styles';
12
11
  import { makeAppStyles } from '../../styles';
13
- const useStyles = makeAppStyles(theme => ({
14
- root: {
15
- padding: 0,
16
- border: '2px solid transparent',
17
- borderRadius: 4,
18
- minWidth: 'initial',
19
- boxShadow: 'none',
20
- fontWeight: 'normal',
21
- color: theme.palette.text.primary,
22
- '&:active': {
23
- boxShadow: 'none'
24
- },
25
- '&:focus': {
26
- boxShadow: 'none'
27
- },
28
- '&::after': {
29
- content: '\'\'',
30
- position: 'absolute',
31
- width: 4,
32
- height: 4,
33
- top: 4,
34
- borderRadius: '100%'
12
+ const useStyles = makeAppStyles()((theme, { dayIndexValue }) => {
13
+ const backgroundColor = alpha(theme.palette.primary.main, dayIndexValue);
14
+ return {
15
+ root: {
16
+ padding: 0,
17
+ border: '2px solid transparent',
18
+ borderRadius: 4,
19
+ minWidth: 'initial',
20
+ boxShadow: 'none',
21
+ fontWeight: 'normal',
22
+ color: theme.palette.text.primary,
23
+ '&:active': {
24
+ boxShadow: 'none'
25
+ },
26
+ '&:focus': {
27
+ boxShadow: 'none'
28
+ },
29
+ '&::after': {
30
+ content: '\'\'',
31
+ position: 'absolute',
32
+ width: 4,
33
+ height: 4,
34
+ top: 4,
35
+ borderRadius: '100%'
36
+ },
37
+ '&$same': {
38
+ border: `2px solid ${theme.palette.text.primary}`
39
+ }
35
40
  },
36
- '&$same': {
37
- border: `2px solid ${theme.palette.text.primary}`
38
- }
39
- },
40
- same: {},
41
- hasSession: ({ dayIndexValue }) => {
42
- const backgroundColor = alpha(theme.palette.primary.main, dayIndexValue);
43
- return {
41
+ same: {},
42
+ hasSession: {
44
43
  backgroundColor,
45
44
  color: theme.palette.getContrastText(backgroundColor),
46
45
  '&:hover': {
47
46
  backgroundColor,
48
47
  color: theme.palette.getContrastText(backgroundColor)
49
48
  }
50
- };
51
- },
52
- isToday: {
53
- fontWeight: 900
54
- }
55
- }));
49
+ },
50
+ isToday: {
51
+ fontWeight: 900
52
+ }
53
+ };
54
+ });
56
55
  const CalendarDay = memo((props) => {
57
56
  const { customClasses = {}, day, date, setTargetDay, dayIndexValue, hasSession, isSameAsTarget, isToday, disabled } = props;
58
- const classes = useStyles({ dayIndexValue, hasSession, isToday });
59
- return (React.createElement(Button, { className: clsx(classes.root, customClasses.root, isSameAsTarget && clsx(classes.same, customClasses.selected), {
57
+ const { classes, cx } = useStyles({ dayIndexValue });
58
+ return (React.createElement(Button, { className: cx(classes.root, customClasses.root, isSameAsTarget && cx(classes.same, customClasses.selected), {
60
59
  [customClasses.hasSession || classes.hasSession]: hasSession,
61
60
  [customClasses.today || classes.isToday]: isToday
62
61
  }), onClick: () => setTargetDay(date), classes: {
@@ -1,9 +1,8 @@
1
1
  import React from 'react';
2
2
  import { IconButton, Typography } from '@mui/material';
3
3
  import { KeyboardArrowLeft, KeyboardArrowRight } from '@mui/icons-material';
4
- import clsx from 'clsx';
5
4
  import { makeAppStyles } from '../../styles';
6
- const useStyles = makeAppStyles(theme => ({
5
+ const useStyles = makeAppStyles()(theme => ({
7
6
  root: {
8
7
  display: 'flex',
9
8
  justifyContent: 'space-between',
@@ -12,8 +11,8 @@ const useStyles = makeAppStyles(theme => ({
12
11
  }
13
12
  }));
14
13
  const CalendarHeader = ({ month, year, previousMonth, nextMonth, customClasses = {} }) => {
15
- const classes = useStyles();
16
- return React.createElement("div", { className: clsx(classes.root, customClasses.root) },
14
+ const { classes, cx } = useStyles();
15
+ return React.createElement("div", { className: cx(classes.root, customClasses.root) },
17
16
  React.createElement(IconButton, { onClick: previousMonth, className: customClasses.leftButton },
18
17
  React.createElement(KeyboardArrowLeft, null)),
19
18
  React.createElement(Typography, { align: "center", className: customClasses.selectedMonth },
@@ -1,8 +1,7 @@
1
1
  import React from 'react';
2
2
  import WeekDay from './WeekDay';
3
- import clsx from 'clsx';
4
3
  import { makeAppStyles } from '../../styles';
5
- const useStyles = makeAppStyles(theme => ({
4
+ const useStyles = makeAppStyles()(theme => ({
6
5
  root: {
7
6
  display: 'grid',
8
7
  gridTemplateColumns: `repeat(7, ${theme.spacing(4)})`,
@@ -14,7 +13,7 @@ const useStyles = makeAppStyles(theme => ({
14
13
  }));
15
14
  const week = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
16
15
  const CalendarWeekPanel = ({ className, dayClass, switchWeekDays, selectedWeekDays = [] }) => {
17
- const classes = useStyles();
18
- return (React.createElement("div", { className: clsx(classes.root, className) }, week.map((el, id) => (React.createElement(WeekDay, { key: id, id: id, name: el, selected: selectedWeekDays[id], click: switchWeekDays, className: dayClass })))));
16
+ const { classes, cx } = useStyles();
17
+ return (React.createElement("div", { className: cx(classes.root, className) }, week.map((el, id) => (React.createElement(WeekDay, { key: id, id: id, name: el, selected: selectedWeekDays[id], click: switchWeekDays, className: dayClass })))));
19
18
  };
20
19
  export default CalendarWeekPanel;
@@ -1,8 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Button, Typography } from '@mui/material';
3
- import clsx from 'clsx';
4
3
  import { makeAppStyles } from '../../styles';
5
- const useStyles = makeAppStyles(theme => ({
4
+ const useStyles = makeAppStyles()(theme => ({
6
5
  weekButton: {
7
6
  padding: theme.spacing(0.5),
8
7
  minWidth: 'initial',
@@ -20,9 +19,9 @@ const useStyles = makeAppStyles(theme => ({
20
19
  }));
21
20
  const DivRoot = props => React.createElement("div", { className: props.className }, props.children);
22
21
  const WeekDay = ({ name, selected, click, id, className }) => {
23
- const classes = useStyles();
22
+ const { classes, cx } = useStyles();
24
23
  const Root = click ? Button : DivRoot;
25
- return React.createElement(Root, { className: clsx(classes.weekButton, {
24
+ return React.createElement(Root, { className: cx(classes.weekButton, {
26
25
  [classes.selectedWeekDay]: selected
27
26
  }, className), onClick: () => click(id), variant: selected ? 'contained' : 'text', color: selected ? 'primary' : 'inherit', disableElevation: true },
28
27
  React.createElement(Typography, { variant: "caption", align: "center", className: selected ? classes.weekDayText : '' }, name));
package/package.json CHANGED
@@ -1,103 +1,94 @@
1
1
  {
2
2
  "name": "ish-ui",
3
3
  "sideEffects": false,
4
- "version": "1.0.55",
4
+ "version": "1.1.0",
5
5
  "description": "UI elements for onCourse and other ish apps",
6
6
  "main": "main.ts",
7
7
  "devDependencies": {
8
- "@marshallofsound/webpack-asset-relocator-loader": "^0.5.0",
9
- "@pmmmwh/react-refresh-webpack-plugin": "^0.5.8",
10
- "@types/node": "^18.11.5",
11
- "@types/react": "^18.0.23",
12
- "@types/react-color": "^3.0.6",
13
- "@types/react-dom": "^18.0.7",
14
- "@types/react-window": "^1.8.5",
15
- "@types/react-window-infinite-loader": "^1.0.6",
8
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15",
9
+ "@types/node": "^22.7.2",
10
+ "@types/react": "^18.3.9",
11
+ "@types/react-color": "^3.0.12",
12
+ "@types/react-dom": "^18.3.0",
13
+ "@types/react-window": "^1.8.8",
14
+ "@types/react-window-infinite-loader": "^1.0.9",
16
15
  "@types/redux": "^3.6.0",
17
- "@types/webpack-env": "^1.18.0",
18
- "@typescript-eslint/eslint-plugin": "^5.41.0",
19
- "@typescript-eslint/parser": "^5.41.0",
20
- "cross-env": "^7.0.3",
21
- "css-loader": "^6.7.1",
16
+ "@types/webpack-env": "^1.18.5",
17
+ "@typescript-eslint/eslint-plugin": "^8.7.0",
18
+ "@typescript-eslint/parser": "^8.7.0",
19
+ "css-loader": "^7.1.2",
22
20
  "eslint": "^8.26.0",
23
21
  "eslint-import-resolver-alias": "^1.1.2",
24
- "eslint-plugin-import": "^2.26.0",
25
- "eslint-plugin-react": "^7.31.10",
22
+ "eslint-plugin-import": "^2.30.0",
23
+ "eslint-plugin-react": "^7.36.1",
26
24
  "file-loader": "^6.2.0",
27
- "fork-ts-checker-webpack-plugin": "^7.2.13",
28
- "html-webpack-plugin": "^5.5.0",
29
- "jest": "^29.6.1",
30
- "less": "^4.1.3",
31
- "less-loader": "11.1.0",
32
- "mini-css-extract-plugin": "^2.6.1",
33
- "react-refresh": "^0.14.0",
34
- "sass": "^1.55.0",
35
- "sass-loader": "^13.1.0",
36
- "serve": "^14.0.1",
37
- "style-loader": "^3.3.1",
38
- "terser-webpack-plugin": "^5.3.9",
39
- "ts-loader": "^9.4.4",
40
- "tsc-alias": "^1.8.7",
41
- "typescript": "^5.1.6",
42
- "webpack": "^5.74.0",
43
- "webpack-bundle-analyzer": "^4.10.1",
44
- "webpack-cli": "^4.10.0",
45
- "webpack-dev-server": "^4.11.1"
25
+ "fork-ts-checker-webpack-plugin": "^9.0.2",
26
+ "html-webpack-plugin": "^5.6.0",
27
+ "jest": "^29.7.0",
28
+ "less-loader": "12.2.0",
29
+ "mini-css-extract-plugin": "^2.9.1",
30
+ "react-refresh": "^0.14.2",
31
+ "sass-loader": "^16.0.2",
32
+ "style-loader": "^4.0.0",
33
+ "terser-webpack-plugin": "^5.3.10",
34
+ "ts-loader": "^9.5.1",
35
+ "tsc-alias": "^1.8.10",
36
+ "typescript": "^5.6.2",
37
+ "webpack": "^5.95.0",
38
+ "webpack-bundle-analyzer": "^4.10.2",
39
+ "webpack-cli": "^5.1.4",
40
+ "webpack-dev-server": "^5.1.0"
46
41
  },
47
42
  "dependencies": {
48
- "@ckeditor/ckeditor5-autoformat": "35.1.0",
49
- "@ckeditor/ckeditor5-basic-styles": "35.1.0",
50
- "@ckeditor/ckeditor5-dev-utils": "^30.5.0",
51
- "@ckeditor/ckeditor5-editor-classic": "35.1.0",
52
- "@ckeditor/ckeditor5-essentials": "35.1.0",
53
- "@ckeditor/ckeditor5-heading": "35.1.0",
54
- "@ckeditor/ckeditor5-image": "35.1.0",
55
- "@ckeditor/ckeditor5-link": "35.1.0",
56
- "@ckeditor/ckeditor5-list": "35.1.0",
57
- "@ckeditor/ckeditor5-markdown-gfm": "35.1.0",
58
- "@ckeditor/ckeditor5-paragraph": "35.1.0",
59
- "@ckeditor/ckeditor5-react": "5.0.2",
60
- "@ckeditor/ckeditor5-source-editing": "35.1.0",
61
- "@ckeditor/ckeditor5-table": "35.1.0",
62
- "@ckeditor/ckeditor5-theme-lark": "35.1.0",
63
- "@emotion/cache": "11.10.8",
64
- "@emotion/react": "11.10.8",
65
- "@emotion/styled": "11.10.8",
43
+ "@ckeditor/ckeditor5-autoformat": "43.1.1",
44
+ "@ckeditor/ckeditor5-basic-styles": "43.1.1",
45
+ "@ckeditor/ckeditor5-dev-utils": "^42.1.0",
46
+ "@ckeditor/ckeditor5-editor-classic": "43.1.1",
47
+ "@ckeditor/ckeditor5-essentials": "43.1.1",
48
+ "@ckeditor/ckeditor5-heading": "43.1.1",
49
+ "@ckeditor/ckeditor5-image": "43.1.1",
50
+ "@ckeditor/ckeditor5-link": "43.1.1",
51
+ "@ckeditor/ckeditor5-list": "43.1.1",
52
+ "@ckeditor/ckeditor5-markdown-gfm": "43.1.1",
53
+ "@ckeditor/ckeditor5-paragraph": "43.1.1",
54
+ "@ckeditor/ckeditor5-react": "9.3.0",
55
+ "@ckeditor/ckeditor5-source-editing": "43.1.1",
56
+ "@ckeditor/ckeditor5-table": "43.1.1",
57
+ "@ckeditor/ckeditor5-theme-lark": "43.1.1",
58
+ "@emotion/cache": "11.13.1",
59
+ "@emotion/react": "11.13.3",
60
+ "@emotion/styled": "11.13.0",
66
61
  "@fortawesome/fontawesome-svg-core": "latest",
67
62
  "@fortawesome/free-regular-svg-icons": "latest",
68
63
  "@fortawesome/free-solid-svg-icons": "latest",
69
64
  "@fortawesome/react-fontawesome": "latest",
70
- "@mui/icons-material": "5.10.16",
71
- "@mui/lab": "^5.0.0-alpha.99",
72
- "@mui/material": "5.10.17",
73
- "@mui/styles": "5.10.16",
74
- "@mui/system": "^5.14.1",
75
- "@mui/x-date-pickers": "^5.0.0",
65
+ "@mui/icons-material": "^6.1.1",
66
+ "@mui/lab": "^6.0.0-beta.10",
67
+ "@mui/material": "^6.1.1",
68
+ "@mui/system": "^6.1.1",
69
+ "@mui/x-date-pickers": "^7.18.0",
76
70
  "autosuggest-highlight": "^3.3.4",
77
71
  "date-fns": "^2.30.0",
78
72
  "date-fns-tz": "^2.0.0",
79
73
  "decimal.js-light": "^2.5.1",
80
74
  "lodash.debounce": "^4.0.8",
81
- "re-resizable": "^6.9.11",
82
- "react": "^18.2.0",
83
- "react-ace": "^10.1.0",
75
+ "re-resizable": "^6.10.0",
76
+ "react": "^18.3.1",
77
+ "react-ace": "^12.0.0",
84
78
  "react-color": "^2.19.3",
85
- "react-dom": "^18.2.0",
79
+ "react-dom": "^18.3.1",
86
80
  "react-dropzone": "^14.2.3",
87
81
  "react-number-format": "4.9.4",
88
- "react-window": "^1.8.9",
82
+ "react-window": "^1.8.10",
89
83
  "react-window-infinite-loader": "^1.0.9",
90
- "redux": "^4.2.1"
91
- },
92
- "resolutions": {
93
- "@mui/styles/react": "^18.2.0"
84
+ "redux": "^5.0.1",
85
+ "tss-react": "^4.9.13"
94
86
  },
95
87
  "scripts": {
96
88
  "test": "exit 0",
97
- "start": "cross-env NODE_ENV=development webpack serve --config tools/webpack/webpack.config.dev.js",
98
- "start:prod": "cross-env NODE_ENV=development webpack serve --config tools/webpack/webpack.config.prod.js",
89
+ "start": "webpack serve --env production --config tools/webpack/webpack.config.dev.js",
90
+ "start:prod": "webpack serve --env development --config tools/webpack/webpack.config.prod.js",
99
91
  "build": "tsc -p tsconfig.prod.json && tsc-alias",
100
- "serve": "cross-env NODE_ENV=production webpack --config tools/webpack/webpack.config.prod.js && cross-env serve dist/",
101
92
  "lint": "eslint --ext .js,.jsx,.ts,.tsx src/"
102
93
  },
103
94
  "repository": {