@irontec/ivoz-ui 1.7.9 → 1.7.10

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.
@@ -29,10 +29,10 @@ export default function Header(props) {
29
29
  };
30
30
  return (_jsxs(Box, Object.assign({ className: className }, { children: [_jsx(Box, Object.assign({ className: 'start' }, { children: _jsx(Breadcrumbs, { desktop: desktop, routeMap: routeMap }) })), _jsxs(Box, Object.assign({ className: 'end' }, { children: [desktop && (_jsxs(_Fragment, { children: [_jsx(Settings, {}), _jsxs(Avatar, { children: [_jsx(MenuItem, Object.assign({ onClick: handleModal }, { children: _jsx(Typography, Object.assign({ textAlign: 'center' }, { children: _('About') })) }), 'about'), _jsx(MenuItem, Object.assign({ onClick: handleLogout }, { children: _jsx(Typography, Object.assign({ textAlign: 'center' }, { children: _('Logout') })) }), 'logout')] })] })), !desktop && (_jsx(LightButton, Object.assign({ onClick: () => {
31
31
  toggleVisibility();
32
- } }, { children: _jsx(MenuIcon, {}) }))), open && (_jsxs(Dialog, Object.assign({ open: open, onClose: handleModal, keepMounted: true, "aria-labelledby": 'dialog-about', "aria-describedby": 'dialog-about' }, { children: [_jsx(CloseRoundedIcon, { className: 'close-icon', onClick: handleModal }), _jsxs(DialogContent, Object.assign({ className: 'dialog-about' }, { children: [_jsx("p", { children: _jsx("img", { src: logo || './logo.svg', className: 'logo' }) }), _jsxs("p", { children: [_('Version'), ": ", version, " (", commit, ") ", _jsx("br", {}), _('Last update'), ": ", lastUpdated] }), _jsx("p", { children: _jsxs(Box, Object.assign({ sx: {
33
- display: 'flex',
34
- alignItems: 'center',
35
- justifyContent: 'center',
36
- gap: 1,
37
- }, className: 'logo' }, { children: ["Powered by ", _jsx(Logo, {})] })) }), _jsx("p", { children: "\u00A92025 Irontec | All rights reserved" })] })), _jsx(DialogActions, { children: _jsx(SolidButton, Object.assign({ onClick: handleModal, sx: { width: '100%' } }, { children: _('ACCEPT') })) })] })))] }))] })));
32
+ } }, { children: _jsx(MenuIcon, {}) }))), open && (_jsxs(Dialog, Object.assign({ open: open, onClose: handleModal, keepMounted: true, "aria-labelledby": 'dialog-about', "aria-describedby": 'dialog-about' }, { children: [_jsx(CloseRoundedIcon, { className: 'close-icon', onClick: handleModal }), _jsxs(DialogContent, Object.assign({ className: 'dialog-about' }, { children: [_jsx("img", { src: logo || './logo.svg', className: 'logo' }), _jsxs("p", { children: [_('Version'), ": ", version, " (", commit, ") ", _jsx("br", {}), _('Last update'), ": ", lastUpdated] }), _jsxs(Box, Object.assign({ sx: {
33
+ display: 'flex',
34
+ alignItems: 'center',
35
+ justifyContent: 'center',
36
+ gap: 1,
37
+ }, className: 'logo' }, { children: ["Powered by ", _jsx(Logo, {})] })), _jsx("p", { children: "\u00A92025 Irontec | All rights reserved" })] })), _jsx(DialogActions, { children: _jsx(SolidButton, Object.assign({ onClick: handleModal, sx: { width: '100%' } }, { children: _('ACCEPT') })) })] })))] }))] })));
38
38
  }
@@ -10,8 +10,8 @@ export declare const StyledDialogContentText: import("@emotion/styled").StyledCo
10
10
  noWrap?: boolean | undefined;
11
11
  paragraph?: boolean | undefined;
12
12
  sx?: import("@mui/material").SxProps<import("@mui/material").Theme> | undefined;
13
- variant?: "button" | "caption" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "inherit" | "overline" | "subtitle1" | "subtitle2" | "body1" | "body2" | undefined;
14
- variantMapping?: Partial<Record<"button" | "caption" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "inherit" | "overline" | "subtitle1" | "subtitle2" | "body1" | "body2", string>> | undefined;
13
+ variant?: "button" | "caption" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "inherit" | "subtitle1" | "subtitle2" | "body1" | "body2" | "overline" | undefined;
14
+ variantMapping?: Partial<Record<"button" | "caption" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "inherit" | "subtitle1" | "subtitle2" | "body1" | "body2" | "overline", string>> | undefined;
15
15
  }, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "key" | keyof import("react").HTMLAttributes<HTMLSpanElement>> & {
16
16
  ref?: ((instance: HTMLSpanElement | null) => void) | import("react").RefObject<HTMLSpanElement> | null | undefined;
17
17
  }, "children" | keyof import("@mui/material/OverridableComponent").CommonProps | "sx" | "variant" | "align" | ("color" | "p" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxShadow" | "boxSizing" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "left" | "letterSpacing" | "lineHeight" | "marginBottom" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "order" | "paddingBottom" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "right" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "top" | "visibility" | "whiteSpace" | "width" | "zIndex" | "border" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "overflow" | "padding" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint") | "noWrap" | "gutterBottom" | "paragraph" | "variantMapping"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
package/css/main.css CHANGED
@@ -323,12 +323,12 @@ code {
323
323
  .MuiDialog-paper .MuiDialogActions-root button {
324
324
  flex-grow: 1;
325
325
  }
326
- .MuiDialog-paper .logo img {
327
- height: 50px;
328
- }
329
326
  .MuiDialog-paper .logo svg {
330
327
  height: 12px;
331
328
  }
329
+ .MuiDialog-paper img.logo {
330
+ height: 50px;
331
+ }
332
332
 
333
333
  :root {
334
334
  /** COLORS **/
@@ -0,0 +1,12 @@
1
+ import { Language } from 'store/i18n';
2
+ import { useFormikType } from 'services';
3
+ import { FormOnChangeEvent } from 'entities';
4
+ declare type Params = {
5
+ formik?: useFormikType;
6
+ languages: Array<Language>;
7
+ changeHandler: (e: FormOnChangeEvent) => void;
8
+ };
9
+ export declare const useMultilangSync: ({ formik, languages, changeHandler, }: Params) => {
10
+ handleChange: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
11
+ };
12
+ export {};
@@ -0,0 +1,32 @@
1
+ import { useRef } from 'react';
2
+ export const useMultilangSync = ({ formik, languages, changeHandler, }) => {
3
+ const propagateTimeoutRef = useRef(null);
4
+ const latestTypingRef = useRef(null);
5
+ const handleChange = (e) => {
6
+ changeHandler(e);
7
+ const [fieldKey, currentLang] = e.target.name.split('.');
8
+ const currentValue = e.target.value;
9
+ latestTypingRef.current = { lang: currentLang, value: currentValue };
10
+ if (propagateTimeoutRef.current) {
11
+ clearTimeout(propagateTimeoutRef.current);
12
+ }
13
+ propagateTimeoutRef.current = setTimeout(() => {
14
+ if (!latestTypingRef.current) {
15
+ return;
16
+ }
17
+ const { lang: typingLang, value: typingValue } = latestTypingRef.current;
18
+ const updatedValues = {};
19
+ languages.forEach((lng) => {
20
+ var _a, _b, _c;
21
+ const locale = (_b = (_a = lng.locale) === null || _a === void 0 ? void 0 : _a.split('-')[0]) !== null && _b !== void 0 ? _b : 'en';
22
+ const existingVal = (_c = formik === null || formik === void 0 ? void 0 : formik.values[fieldKey]) === null || _c === void 0 ? void 0 : _c[locale];
23
+ updatedValues[locale] =
24
+ locale === typingLang || !(existingVal === null || existingVal === void 0 ? void 0 : existingVal.trim())
25
+ ? typingValue
26
+ : existingVal;
27
+ });
28
+ formik === null || formik === void 0 ? void 0 : formik.setFieldValue(fieldKey, updatedValues);
29
+ }, 1800);
30
+ };
31
+ return { handleChange };
32
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@irontec/ivoz-ui",
3
- "version": "1.7.9",
3
+ "version": "1.7.10",
4
4
  "description": "UI library used in ivozprovider",
5
5
  "license": "GPL-3.0",
6
6
  "main": "index.js",
@@ -46,7 +46,6 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@date-io/date-fns": "^2.10.8",
49
- "@irontec/ivoz-ui": "^1.7.8",
50
49
  "@types/react-color": "^3.0.12",
51
50
  "axios": "^0.21.1",
52
51
  "date-fns": "^2.21.1",
@@ -3,12 +3,18 @@ import { Box } from '@mui/material';
3
3
  import { useStoreState } from 'store';
4
4
  import { StyledFieldset, StyledFieldsetRoot, } from './CustomComponentWrapper.styles';
5
5
  import { StyledMultilangTextField } from './TextField/TextField.styles';
6
+ import { useMultilangSync } from '../../../entities/DefaultEntityBehavior/Form/useMultilangSync';
6
7
  const Multilang = (props) => {
7
8
  const { _columnName, disabled, properties, formik, inputProps, onBlur, changeHandler, } = props;
8
9
  let { InputProps } = props;
9
10
  const languages = useStoreState((state) => state.i18n.languages);
10
11
  const mlValue = (formik === null || formik === void 0 ? void 0 : formik.values[_columnName]) || {};
11
12
  const rootProperty = properties[_columnName];
13
+ const { handleChange } = useMultilangSync({
14
+ formik,
15
+ languages,
16
+ changeHandler,
17
+ });
12
18
  return (_jsx(StyledFieldsetRoot, Object.assign({ label: rootProperty.label, hasChanged: false, required: rootProperty.required, disabled: disabled, className: 'multilang' }, { children: _jsx(StyledFieldset, { children: _jsx(Box, { children: languages === null || languages === void 0 ? void 0 : languages.map((lng) => {
13
19
  var _a, _b, _c;
14
20
  const locale = (_a = lng.locale.split('-').shift()) !== null && _a !== void 0 ? _a : 'en';
@@ -22,7 +28,7 @@ const Multilang = (props) => {
22
28
  const error = formik === null || formik === void 0 ? void 0 : formik.errors[name];
23
29
  InputProps = InputProps !== null && InputProps !== void 0 ? InputProps : {};
24
30
  InputProps.startAdornment = (_jsx("span", Object.assign({ className: 'preffix' }, { children: lng.name.substring(0, 3).toUpperCase() })));
25
- return (_jsx(StyledMultilangTextField, { name: name, type: 'text', multiline: multiline, value: value, disabled: disabled, label: undefined, required: required, onChange: changeHandler, onBlur: onBlur, error: touched && Boolean(error), errorMsg: touched && error, helperText: property.helpText, InputProps: Object.assign({}, InputProps), inputProps: inputProps, hasChanged: false, margin: 'dense', size: 'small' }, name));
31
+ return (_jsx(StyledMultilangTextField, { name: name, type: 'text', multiline: multiline, value: value, disabled: disabled, label: undefined, required: required, onChange: handleChange, onBlur: onBlur, error: touched && Boolean(error), errorMsg: touched && error, helperText: property.helpText, InputProps: Object.assign({}, InputProps), inputProps: inputProps, hasChanged: false, margin: 'dense', size: 'small' }, name));
26
32
  }) }) }) })));
27
33
  };
28
34
  export default Multilang;