mirror of
				https://gitlab.nic.cz/turris/reforis/foris-js.git
				synced 2025-11-03 23:00:31 +01:00 
			
		
		
		
	Format all files with Prettier
This commit is contained in:
		@@ -17,7 +17,5 @@ ErrorMessage.defaultProps = {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function ErrorMessage({ message }) {
 | 
			
		||||
    return (
 | 
			
		||||
        <p className="text-center text-danger">{message}</p>
 | 
			
		||||
    );
 | 
			
		||||
    return <p className="text-center text-danger">{message}</p>;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,12 @@ import React from "react";
 | 
			
		||||
import { render } from "customTestRender";
 | 
			
		||||
import { API_STATE } from "api/utils";
 | 
			
		||||
import {
 | 
			
		||||
    withEither, withSpinner, withSending, withSpinnerOnSending, withError, withErrorMessage,
 | 
			
		||||
    withEither,
 | 
			
		||||
    withSpinner,
 | 
			
		||||
    withSending,
 | 
			
		||||
    withSpinnerOnSending,
 | 
			
		||||
    withError,
 | 
			
		||||
    withErrorMessage,
 | 
			
		||||
} from "../conditionalHOCs";
 | 
			
		||||
 | 
			
		||||
describe("conditional HOCs", () => {
 | 
			
		||||
@@ -52,14 +57,18 @@ describe("conditional HOCs", () => {
 | 
			
		||||
        it("should render First component", () => {
 | 
			
		||||
            const withAlternative = withSending(Alternative);
 | 
			
		||||
            const FirstWithConditional = withAlternative(First);
 | 
			
		||||
            const { getByText } = render(<FirstWithConditional apiState={API_STATE.SUCCESS} />);
 | 
			
		||||
            const { getByText } = render(
 | 
			
		||||
                <FirstWithConditional apiState={API_STATE.SUCCESS} />
 | 
			
		||||
            );
 | 
			
		||||
            expect(getByText("First")).toBeDefined();
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it("should render Alternative component", () => {
 | 
			
		||||
            const withAlternative = withSending(Alternative);
 | 
			
		||||
            const FirstWithConditional = withAlternative(First);
 | 
			
		||||
            const { getByText } = render(<FirstWithConditional apiState={API_STATE.SENDING} />);
 | 
			
		||||
            const { getByText } = render(
 | 
			
		||||
                <FirstWithConditional apiState={API_STATE.SENDING} />
 | 
			
		||||
            );
 | 
			
		||||
            expect(getByText("Alternative")).toBeDefined();
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
@@ -67,13 +76,17 @@ describe("conditional HOCs", () => {
 | 
			
		||||
    describe("withSpinnerOnSending", () => {
 | 
			
		||||
        it("should render First component", () => {
 | 
			
		||||
            const FirstWithConditional = withSpinnerOnSending(First);
 | 
			
		||||
            const { getByText } = render(<FirstWithConditional apiState={API_STATE.SUCCESS} />);
 | 
			
		||||
            const { getByText } = render(
 | 
			
		||||
                <FirstWithConditional apiState={API_STATE.SUCCESS} />
 | 
			
		||||
            );
 | 
			
		||||
            expect(getByText("First")).toBeDefined();
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it("should render spinner", () => {
 | 
			
		||||
            const FirstWithConditional = withSpinnerOnSending(First);
 | 
			
		||||
            const { container } = render(<FirstWithConditional apiState={API_STATE.SENDING} />);
 | 
			
		||||
            const { container } = render(
 | 
			
		||||
                <FirstWithConditional apiState={API_STATE.SENDING} />
 | 
			
		||||
            );
 | 
			
		||||
            expect(container).toMatchSnapshot();
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
@@ -97,13 +110,17 @@ describe("conditional HOCs", () => {
 | 
			
		||||
    describe("withErrorMessage", () => {
 | 
			
		||||
        it("should render First component", () => {
 | 
			
		||||
            const FirstWithConditional = withErrorMessage(First);
 | 
			
		||||
            const { getByText } = render(<FirstWithConditional apiState={API_STATE.SUCCESS} />);
 | 
			
		||||
            const { getByText } = render(
 | 
			
		||||
                <FirstWithConditional apiState={API_STATE.SUCCESS} />
 | 
			
		||||
            );
 | 
			
		||||
            expect(getByText("First")).toBeDefined();
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it("should render error message", () => {
 | 
			
		||||
            const FirstWithConditional = withErrorMessage(First);
 | 
			
		||||
            const { container } = render(<FirstWithConditional apiState={API_STATE.ERROR} />);
 | 
			
		||||
            const { container } = render(
 | 
			
		||||
                <FirstWithConditional apiState={API_STATE.ERROR} />
 | 
			
		||||
            );
 | 
			
		||||
            expect(container).toMatchSnapshot();
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 
 | 
			
		||||
@@ -10,42 +10,40 @@ import { toLocaleDateString } from "../datetime";
 | 
			
		||||
describe("toLocaleDateString", () => {
 | 
			
		||||
    it("should work with different locale", () => {
 | 
			
		||||
        global.ForisTranslations = { locale: "fr" };
 | 
			
		||||
        expect(
 | 
			
		||||
            toLocaleDateString("2020-02-20T12:51:36+00:00")
 | 
			
		||||
        ).toBe("20 février 2020 12:51");
 | 
			
		||||
        expect(toLocaleDateString("2020-02-20T12:51:36+00:00")).toBe(
 | 
			
		||||
            "20 février 2020 12:51"
 | 
			
		||||
        );
 | 
			
		||||
        global.ForisTranslations = { locale: "en" };
 | 
			
		||||
    })
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it("should convert with default format", () => {
 | 
			
		||||
        expect(
 | 
			
		||||
            toLocaleDateString("2020-02-20T12:51:36+00:00")
 | 
			
		||||
        ).toBe("February 20, 2020 12:51 PM");
 | 
			
		||||
        expect(toLocaleDateString("2020-02-20T12:51:36+00:00")).toBe(
 | 
			
		||||
            "February 20, 2020 12:51 PM"
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it("should convert with custom input format", () => {
 | 
			
		||||
        expect(
 | 
			
		||||
            toLocaleDateString(
 | 
			
		||||
                "2020-02-20 12:51:36 +0000",
 | 
			
		||||
                { inputFormat: "YYYY-MM-DD HH:mm:ss Z" },
 | 
			
		||||
            )
 | 
			
		||||
            toLocaleDateString("2020-02-20 12:51:36 +0000", {
 | 
			
		||||
                inputFormat: "YYYY-MM-DD HH:mm:ss Z",
 | 
			
		||||
            })
 | 
			
		||||
        ).toBe("February 20, 2020 12:51 PM");
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it("should convert with custom output format", () => {
 | 
			
		||||
        expect(
 | 
			
		||||
            toLocaleDateString(
 | 
			
		||||
                "2020-02-20T12:51:36+00:00",
 | 
			
		||||
                { outputFormat: "LL" },
 | 
			
		||||
            )
 | 
			
		||||
            toLocaleDateString("2020-02-20T12:51:36+00:00", {
 | 
			
		||||
                outputFormat: "LL",
 | 
			
		||||
            })
 | 
			
		||||
        ).toBe("February 20, 2020");
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it("should convert with custom input and output format", () => {
 | 
			
		||||
        expect(
 | 
			
		||||
            toLocaleDateString(
 | 
			
		||||
                "2020-02-20 12:51:36 +0000",
 | 
			
		||||
                { inputFormat: "YYYY-MM-DD HH:mm:ss Z", outputFormat: "LL" },
 | 
			
		||||
            )
 | 
			
		||||
            toLocaleDateString("2020-02-20 12:51:36 +0000", {
 | 
			
		||||
                inputFormat: "YYYY-MM-DD HH:mm:ss Z",
 | 
			
		||||
                outputFormat: "LL",
 | 
			
		||||
            })
 | 
			
		||||
        ).toBe("February 20, 2020");
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -24,8 +24,8 @@ function withEither(conditionalFn, Either) {
 | 
			
		||||
 | 
			
		||||
function isSending(props) {
 | 
			
		||||
    if (Array.isArray(props.apiState)) {
 | 
			
		||||
        return props.apiState.some(
 | 
			
		||||
            (state) => [API_STATE.INIT, API_STATE.SENDING].includes(state),
 | 
			
		||||
        return props.apiState.some((state) =>
 | 
			
		||||
            [API_STATE.INIT, API_STATE.SENDING].includes(state)
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
    return [API_STATE.INIT, API_STATE.SENDING].includes(props.apiState);
 | 
			
		||||
@@ -38,15 +38,18 @@ const withSpinnerOnSending = withSpinner(isSending);
 | 
			
		||||
// Error handling
 | 
			
		||||
 | 
			
		||||
const withError = (conditionalFn) => withEither(conditionalFn, ErrorMessage);
 | 
			
		||||
const withErrorMessage = withError(
 | 
			
		||||
    (props) => {
 | 
			
		||||
        if (Array.isArray(props.apiState)) {
 | 
			
		||||
            return props.apiState.includes(API_STATE.ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        return props.apiState === API_STATE.ERROR;
 | 
			
		||||
    },
 | 
			
		||||
);
 | 
			
		||||
const withErrorMessage = withError((props) => {
 | 
			
		||||
    if (Array.isArray(props.apiState)) {
 | 
			
		||||
        return props.apiState.includes(API_STATE.ERROR);
 | 
			
		||||
    }
 | 
			
		||||
    return props.apiState === API_STATE.ERROR;
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
export {
 | 
			
		||||
    withEither, withSpinner, withSending, withSpinnerOnSending, withError, withErrorMessage,
 | 
			
		||||
    withEither,
 | 
			
		||||
    withSpinner,
 | 
			
		||||
    withSending,
 | 
			
		||||
    withSpinnerOnSending,
 | 
			
		||||
    withError,
 | 
			
		||||
    withErrorMessage,
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,9 @@
 | 
			
		||||
import moment from "moment";
 | 
			
		||||
 | 
			
		||||
export function toLocaleDateString(date, { inputFormat, outputFormat = "LLL" } = {}) {
 | 
			
		||||
export function toLocaleDateString(
 | 
			
		||||
    date,
 | 
			
		||||
    { inputFormat, outputFormat = "LLL" } = {}
 | 
			
		||||
) {
 | 
			
		||||
    const parsedDate = inputFormat ? moment(date, inputFormat) : moment(date);
 | 
			
		||||
    return parsedDate
 | 
			
		||||
        .locale(ForisTranslations.locale)
 | 
			
		||||
        .format(outputFormat);
 | 
			
		||||
    return parsedDate.locale(ForisTranslations.locale).format(outputFormat);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -8,11 +8,17 @@
 | 
			
		||||
import { useState, useEffect } from "react";
 | 
			
		||||
 | 
			
		||||
/** Execute callback when condition is set to true. */
 | 
			
		||||
export function useConditionalTimeout({ callback, timeout = 125 }, ...callbackArgs) {
 | 
			
		||||
export function useConditionalTimeout(
 | 
			
		||||
    { callback, timeout = 125 },
 | 
			
		||||
    ...callbackArgs
 | 
			
		||||
) {
 | 
			
		||||
    const [condition, setCondition] = useState(false);
 | 
			
		||||
    useEffect(() => {
 | 
			
		||||
        if (condition) {
 | 
			
		||||
            const interval = setTimeout(() => callback(...callbackArgs), timeout);
 | 
			
		||||
            const interval = setTimeout(
 | 
			
		||||
                () => callback(...callbackArgs),
 | 
			
		||||
                timeout
 | 
			
		||||
            );
 | 
			
		||||
            return () => setTimeout(interval);
 | 
			
		||||
        }
 | 
			
		||||
    }, [condition, callback, timeout, callbackArgs]);
 | 
			
		||||
 
 | 
			
		||||
@@ -15,21 +15,18 @@ export function undefinedIfEmpty(instance) {
 | 
			
		||||
 | 
			
		||||
/** Return object without keys that have undefined value. */
 | 
			
		||||
export function withoutUndefinedKeys(instance) {
 | 
			
		||||
    return Object.keys(instance).reduce(
 | 
			
		||||
        (accumulator, key) => {
 | 
			
		||||
            if (instance[key] !== undefined) {
 | 
			
		||||
                accumulator[key] = instance[key];
 | 
			
		||||
            }
 | 
			
		||||
            return accumulator;
 | 
			
		||||
        },
 | 
			
		||||
        {},
 | 
			
		||||
    );
 | 
			
		||||
    return Object.keys(instance).reduce((accumulator, key) => {
 | 
			
		||||
        if (instance[key] !== undefined) {
 | 
			
		||||
            accumulator[key] = instance[key];
 | 
			
		||||
        }
 | 
			
		||||
        return accumulator;
 | 
			
		||||
    }, {});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Return copy of passed object that has only desired keys. */
 | 
			
		||||
export function onlySpecifiedKeys(object, desiredKeys) {
 | 
			
		||||
    return desiredKeys.reduce(
 | 
			
		||||
        (accumulator, key) => { accumulator[key] = object[key]; return accumulator; },
 | 
			
		||||
        {},
 | 
			
		||||
    );
 | 
			
		||||
    return desiredKeys.reduce((accumulator, key) => {
 | 
			
		||||
        accumulator[key] = object[key];
 | 
			
		||||
        return accumulator;
 | 
			
		||||
    }, {});
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,10 @@ const REs = {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const createValidator = (fieldType) => (value) => {
 | 
			
		||||
    if (value && value !== "") return REs[fieldType].test(value) ? undefined : ERROR_MESSAGES[fieldType];
 | 
			
		||||
    if (value && value !== "")
 | 
			
		||||
        return REs[fieldType].test(value)
 | 
			
		||||
            ? undefined
 | 
			
		||||
            : ERROR_MESSAGES[fieldType];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const validateIPv4Address = createValidator("IPv4");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user