mirror of
				https://gitlab.nic.cz/turris/reforis/foris-js.git
				synced 2025-11-03 23:00:31 +01:00 
			
		
		
		
	Merge branch 'dev' into 'master'
Dev See merge request turris/reforis/foris-js!43
This commit is contained in:
		
							
								
								
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "foris",
 | 
					  "name": "foris",
 | 
				
			||||||
  "version": "1.3.1",
 | 
					  "version": "1.3.2",
 | 
				
			||||||
  "lockfileVersion": 1,
 | 
					  "lockfileVersion": 1,
 | 
				
			||||||
  "requires": true,
 | 
					  "requires": true,
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
@@ -6269,6 +6269,7 @@
 | 
				
			|||||||
      "version": "3.0.1",
 | 
					      "version": "3.0.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.0.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-U92ROQQt7XkIwrdqCByUI118TQM1hXdKnRQpvKeA0HRyGSnJipu9IWHe4UD8zCN00O8UnQjQzPCgZ1CC3yBzHA==",
 | 
					      "integrity": "sha512-U92ROQQt7XkIwrdqCByUI118TQM1hXdKnRQpvKeA0HRyGSnJipu9IWHe4UD8zCN00O8UnQjQzPCgZ1CC3yBzHA==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "invariant": "^2.2.4"
 | 
					        "invariant": "^2.2.4"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -6402,6 +6403,7 @@
 | 
				
			|||||||
      "version": "2.2.4",
 | 
					      "version": "2.2.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
 | 
				
			||||||
      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
 | 
					      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "loose-envify": "^1.0.0"
 | 
					        "loose-envify": "^1.0.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								package.json
									
									
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "foris",
 | 
					  "name": "foris",
 | 
				
			||||||
  "version": "1.3.1",
 | 
					  "version": "1.3.2",
 | 
				
			||||||
  "description": "Set of components and utils for Foris and its plugins.",
 | 
					  "description": "Set of components and utils for Foris and its plugins.",
 | 
				
			||||||
  "author": "CZ.NIC, z.s.p.o.",
 | 
					  "author": "CZ.NIC, z.s.p.o.",
 | 
				
			||||||
  "repository": {
 | 
					  "repository": {
 | 
				
			||||||
@@ -15,7 +15,6 @@
 | 
				
			|||||||
  "main": "index.js",
 | 
					  "main": "index.js",
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "axios": "^0.19.0",
 | 
					    "axios": "^0.19.0",
 | 
				
			||||||
    "immutability-helper": "^3.0.0",
 | 
					 | 
				
			||||||
    "jest-transform-css": "^2.0.0",
 | 
					    "jest-transform-css": "^2.0.0",
 | 
				
			||||||
    "moment": "^2.24.0",
 | 
					    "moment": "^2.24.0",
 | 
				
			||||||
    "moment-timezone": "^0.5.25",
 | 
					    "moment-timezone": "^0.5.25",
 | 
				
			||||||
@@ -25,8 +24,9 @@
 | 
				
			|||||||
    "react-uid": "^2.2.0"
 | 
					    "react-uid": "^2.2.0"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "peerDependencies": {
 | 
					  "peerDependencies": {
 | 
				
			||||||
    "react": "^16.9.0",
 | 
					    "immutability-helper": "3.0.1",
 | 
				
			||||||
    "react-dom": "^16.9.0"
 | 
					    "react": "16.9.0",
 | 
				
			||||||
 | 
					    "react-dom": "16.9.0"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@babel/cli": "^7.4.4",
 | 
					    "@babel/cli": "^7.4.4",
 | 
				
			||||||
@@ -49,12 +49,13 @@
 | 
				
			|||||||
    "eslint": "^6.1.0",
 | 
					    "eslint": "^6.1.0",
 | 
				
			||||||
    "eslint-config-reforis": "^1.0.0",
 | 
					    "eslint-config-reforis": "^1.0.0",
 | 
				
			||||||
    "file-loader": "^4.2.0",
 | 
					    "file-loader": "^4.2.0",
 | 
				
			||||||
 | 
					    "immutability-helper": "3.0.1",
 | 
				
			||||||
    "jest": "^24.8.0",
 | 
					    "jest": "^24.8.0",
 | 
				
			||||||
    "jest-mock-axios": "^3.0.0",
 | 
					    "jest-mock-axios": "^3.0.0",
 | 
				
			||||||
    "moment": "^2.24.0",
 | 
					    "moment": "^2.24.0",
 | 
				
			||||||
    "moment-timezone": "^0.5.25",
 | 
					    "moment-timezone": "^0.5.25",
 | 
				
			||||||
    "react": "^16.9.0",
 | 
					    "react": "16.9.0",
 | 
				
			||||||
    "react-dom": "^16.9.0",
 | 
					    "react-dom": "16.9.0",
 | 
				
			||||||
    "react-styleguidist": "^9.1.16",
 | 
					    "react-styleguidist": "^9.1.16",
 | 
				
			||||||
    "snapshot-diff": "^0.5.1",
 | 
					    "snapshot-diff": "^0.5.1",
 | 
				
			||||||
    "style-loader": "^1.0.0",
 | 
					    "style-loader": "^1.0.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,8 +11,6 @@ import PropTypes from "prop-types";
 | 
				
			|||||||
import { Alert, ALERT_TYPES } from "bootstrap/Alert";
 | 
					import { Alert, ALERT_TYPES } from "bootstrap/Alert";
 | 
				
			||||||
import { Portal } from "utils/Portal";
 | 
					import { Portal } from "utils/Portal";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const AlertContext = React.createContext();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AlertContextProvider.propTypes = {
 | 
					AlertContextProvider.propTypes = {
 | 
				
			||||||
    children: PropTypes.oneOfType([
 | 
					    children: PropTypes.oneOfType([
 | 
				
			||||||
        PropTypes.arrayOf(PropTypes.node),
 | 
					        PropTypes.arrayOf(PropTypes.node),
 | 
				
			||||||
@@ -21,6 +19,7 @@ AlertContextProvider.propTypes = {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function AlertContextProvider({ children }) {
 | 
					function AlertContextProvider({ children }) {
 | 
				
			||||||
 | 
					    const { AlertContext } = window;
 | 
				
			||||||
    const [alert, setAlert] = useState(null);
 | 
					    const [alert, setAlert] = useState(null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const setAlertWrapper = useCallback((message, type = ALERT_TYPES.DANGER) => {
 | 
					    const setAlertWrapper = useCallback((message, type = ALERT_TYPES.DANGER) => {
 | 
				
			||||||
@@ -46,7 +45,8 @@ function AlertContextProvider({ children }) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function useAlert() {
 | 
					function useAlert() {
 | 
				
			||||||
 | 
					    const { AlertContext } = window;
 | 
				
			||||||
    return useContext(AlertContext);
 | 
					    return useContext(AlertContext);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export { AlertContext, AlertContextProvider, useAlert };
 | 
					export { AlertContextProvider, useAlert };
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,9 @@
 | 
				
			|||||||
 * See /LICENSE for more information.
 | 
					 * See /LICENSE for more information.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { useCallback, useReducer } from "react";
 | 
					import {
 | 
				
			||||||
 | 
					    useCallback, useEffect, useReducer, useState,
 | 
				
			||||||
 | 
					} from "react";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { ForisURLs } from "forisUrls";
 | 
					import { ForisURLs } from "forisUrls";
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
@@ -90,3 +92,23 @@ const useAPIDelete = createAPIHook("DELETE");
 | 
				
			|||||||
export {
 | 
					export {
 | 
				
			||||||
    useAPIGet, useAPIPost, useAPIPatch, useAPIPut, useAPIDelete,
 | 
					    useAPIGet, useAPIPost, useAPIPatch, useAPIPut, useAPIDelete,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function useAPIPolling(endpoint, delay = 1000, until) { // delay ms
 | 
				
			||||||
 | 
					    const [state, setState] = useState({ state: API_STATE.INIT });
 | 
				
			||||||
 | 
					    const [getResponse, get] = useAPIGet(endpoint);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    useEffect(() => {
 | 
				
			||||||
 | 
					        if (getResponse.state !== API_STATE.INIT) {
 | 
				
			||||||
 | 
					            setState(getResponse);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }, [getResponse]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    useEffect(() => {
 | 
				
			||||||
 | 
					        if (until) {
 | 
				
			||||||
 | 
					            const interval = setInterval(get, delay);
 | 
				
			||||||
 | 
					            return () => clearInterval(interval);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }, [until, delay, get]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return [state];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,8 +42,10 @@ export function CheckBox({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    {...props}
 | 
					                    {...props}
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
                <label className="custom-control-label" htmlFor={uid}>{label}</label>
 | 
					                <label className="custom-control-label" htmlFor={uid}>
 | 
				
			||||||
 | 
					                    {label}
 | 
				
			||||||
                    {helpText && <small className="form-text text-muted">{helpText}</small>}
 | 
					                    {helpText && <small className="form-text text-muted">{helpText}</small>}
 | 
				
			||||||
 | 
					                </label>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,18 +24,18 @@ Spinner.defaultProps = {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function Spinner({
 | 
					export function Spinner({
 | 
				
			||||||
    fullScreen, children, className, ...props
 | 
					    fullScreen, children, className,
 | 
				
			||||||
}) {
 | 
					}) {
 | 
				
			||||||
    if (!fullScreen) {
 | 
					    if (!fullScreen) {
 | 
				
			||||||
        return (
 | 
					        return (
 | 
				
			||||||
            <div className={`spinner-wrapper ${className || "my-3 text-center"}`} {...props}>
 | 
					            <div className={`spinner-wrapper ${className || "my-3 text-center"}`}>
 | 
				
			||||||
                <SpinnerElement>{children}</SpinnerElement>
 | 
					                <SpinnerElement>{children}</SpinnerElement>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
        <div className="spinner-fs-wrapper" {...props}>
 | 
					        <div className="spinner-fs-wrapper">
 | 
				
			||||||
            <div className="spinner-fs-background">
 | 
					            <div className="spinner-fs-background">
 | 
				
			||||||
                <SpinnerElement>{children}</SpinnerElement>
 | 
					                <SpinnerElement>{children}</SpinnerElement>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,12 +18,12 @@ exports[`<Checkbox/> Render checkbox 1`] = `
 | 
				
			|||||||
      for="1"
 | 
					      for="1"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      Test label
 | 
					      Test label
 | 
				
			||||||
    </label>
 | 
					 | 
				
			||||||
      <small
 | 
					      <small
 | 
				
			||||||
        class="form-text text-muted"
 | 
					        class="form-text text-muted"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        Some help text
 | 
					        Some help text
 | 
				
			||||||
      </small>
 | 
					      </small>
 | 
				
			||||||
 | 
					    </label>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
`;
 | 
					`;
 | 
				
			||||||
@@ -45,12 +45,12 @@ exports[`<Checkbox/> Render uncheked checkbox 1`] = `
 | 
				
			|||||||
      for="1"
 | 
					      for="1"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      Test label
 | 
					      Test label
 | 
				
			||||||
    </label>
 | 
					 | 
				
			||||||
      <small
 | 
					      <small
 | 
				
			||||||
        class="form-text text-muted"
 | 
					        class="form-text text-muted"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        Some help text
 | 
					        Some help text
 | 
				
			||||||
      </small>
 | 
					      </small>
 | 
				
			||||||
 | 
					    </label>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
`;
 | 
					`;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// API
 | 
					// API
 | 
				
			||||||
export {
 | 
					export {
 | 
				
			||||||
    useAPIGet, useAPIPost, useAPIPatch, useAPIPut, useAPIDelete,
 | 
					    useAPIGet,
 | 
				
			||||||
 | 
					    useAPIPost,
 | 
				
			||||||
 | 
					    useAPIPatch,
 | 
				
			||||||
 | 
					    useAPIPut,
 | 
				
			||||||
 | 
					    useAPIDelete,
 | 
				
			||||||
 | 
					    useAPIPolling,
 | 
				
			||||||
} from "api/hooks";
 | 
					} from "api/hooks";
 | 
				
			||||||
export { API_STATE } from "api/utils";
 | 
					export { API_STATE } from "api/utils";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -70,4 +75,4 @@ export {
 | 
				
			|||||||
} from "validations";
 | 
					} from "validations";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Alert context
 | 
					// Alert context
 | 
				
			||||||
export { AlertContext, AlertContextProvider, useAlert } from "alertContext/AlertContext";
 | 
					export { AlertContextProvider, useAlert } from "alertContext/AlertContext";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,11 +7,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import React from "react";
 | 
					import React from "react";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { AlertContext } from "../alertContext/AlertContext";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const mockSetAlert = jest.fn();
 | 
					const mockSetAlert = jest.fn();
 | 
				
			||||||
const mockDismissAlert = jest.fn();
 | 
					const mockDismissAlert = jest.fn();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					window.AlertContext = React.createContext();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function AlertContextMock({ children }) {
 | 
					function AlertContextMock({ children }) {
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
        <AlertContext.Provider value={[mockSetAlert, mockDismissAlert]}>
 | 
					        <AlertContext.Provider value={[mockSetAlert, mockDismissAlert]}>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ import { ErrorMessage } from "./ErrorMessage";
 | 
				
			|||||||
function withEither(conditionalFn, Either) {
 | 
					function withEither(conditionalFn, Either) {
 | 
				
			||||||
    return (Component) => (props) => {
 | 
					    return (Component) => (props) => {
 | 
				
			||||||
        if (conditionalFn(props)) {
 | 
					        if (conditionalFn(props)) {
 | 
				
			||||||
            return <Either />;
 | 
					            return <Either {...props} />;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return <Component {...props} />;
 | 
					        return <Component {...props} />;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user