@omniumretail/shared-resources 0.0.1
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.
- package/.eslintrc.json +32 -0
- package/README.md +45 -0
- package/dist/bundle.js +5496 -0
- package/dist/types/components/BottomDrawer/index.d.ts +2 -0
- package/dist/types/components/Button/index.d.ts +6 -0
- package/dist/types/components/Footer/index.d.ts +3 -0
- package/dist/types/components/Form/FormInputField/index.d.ts +8 -0
- package/dist/types/components/Form/FormSelectField/index.d.ts +9 -0
- package/dist/types/components/Form/index.d.ts +2 -0
- package/dist/types/components/Header/index.d.ts +4 -0
- package/dist/types/components/Link/index.d.ts +6 -0
- package/dist/types/components/Navigation/index.d.ts +8 -0
- package/dist/types/components/Page/index.d.ts +13 -0
- package/dist/types/components/SharedContextProvider/index.d.ts +7 -0
- package/dist/types/components/index.d.ts +9 -0
- package/dist/types/constants/Icons.d.ts +13 -0
- package/dist/types/constants/QueryClient.d.ts +2 -0
- package/dist/types/constants/index.d.ts +2 -0
- package/dist/types/contexts/useStore.d.ts +8 -0
- package/dist/types/hooks/index.d.ts +2 -0
- package/dist/types/hooks/useApplicationDataQuery.hook.d.ts +2 -0
- package/dist/types/hooks/useStoreQuery.d.ts +7 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/interfaces/ApplicationsByCategory.d.ts +16 -0
- package/dist/types/interfaces/Configuration.d.ts +6 -0
- package/dist/types/interfaces/Customer.d.ts +21 -0
- package/dist/types/interfaces/Product.d.ts +33 -0
- package/dist/types/interfaces/ResponseList.d.ts +5 -0
- package/dist/types/interfaces/Store.d.ts +7 -0
- package/dist/types/interfaces/index.d.ts +6 -0
- package/dist/types/services/ApiService/index.d.ts +5 -0
- package/dist/types/services/InitService/index.d.ts +3 -0
- package/dist/types/services/index.d.ts +2 -0
- package/package.json +54 -0
- package/src/assets/omniu-retail_branco_s-fundo.png +0 -0
- package/src/assets/sitoo.svg +9 -0
- package/src/components/BottomDrawer/index.tsx +8 -0
- package/src/components/BottomDrawer/styles.module.scss +37 -0
- package/src/components/Button/index.tsx +22 -0
- package/src/components/Button/styles.module.scss +67 -0
- package/src/components/Footer/index.tsx +44 -0
- package/src/components/Footer/styles.module.scss +33 -0
- package/src/components/Form/FormInputField/index.tsx +18 -0
- package/src/components/Form/FormSelectField/index.tsx +16 -0
- package/src/components/Form/index.ts +2 -0
- package/src/components/Header/index.tsx +20 -0
- package/src/components/Header/styles.module.scss +16 -0
- package/src/components/Link/index.tsx +21 -0
- package/src/components/Link/styles.module.scss +24 -0
- package/src/components/Navigation/index.tsx +30 -0
- package/src/components/Navigation/styles.module.scss +34 -0
- package/src/components/Page/index.tsx +35 -0
- package/src/components/Page/styles.module.scss +26 -0
- package/src/components/SharedContextProvider/index.tsx +30 -0
- package/src/components/index.ts +9 -0
- package/src/constants/Icons.ts +19 -0
- package/src/constants/QueryClient.ts +3 -0
- package/src/constants/index.ts +2 -0
- package/src/contexts/useStore.tsx +20 -0
- package/src/global.scss +124 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useApplicationDataQuery.hook.ts +10 -0
- package/src/hooks/useStoreQuery.ts +13 -0
- package/src/index.ts +9 -0
- package/src/interfaces/ApplicationsByCategory.ts +19 -0
- package/src/interfaces/Configuration.ts +7 -0
- package/src/interfaces/Customer.ts +23 -0
- package/src/interfaces/Product.ts +36 -0
- package/src/interfaces/ResponseList.ts +6 -0
- package/src/interfaces/Store.ts +8 -0
- package/src/interfaces/index.ts +6 -0
- package/src/services/ApiService/index.ts +80 -0
- package/src/services/InitService/index.ts +7 -0
- package/src/services/index.ts +3 -0
- package/src/types/Global.d.ts +4 -0
- package/tsconfig.json +26 -0
- package/webpack.config.js +48 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FormItemProps, InputProps } from 'antd';
|
|
2
|
+
interface FormInputFieldProps extends Omit<FormItemProps, "name"> {
|
|
3
|
+
name: string;
|
|
4
|
+
inputProps?: InputProps;
|
|
5
|
+
}
|
|
6
|
+
export declare const InputField: (inputProps: InputProps) => JSX.Element;
|
|
7
|
+
export declare const FormInputField: ({ inputProps, ...itemProps }: FormInputFieldProps) => JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FormItemProps } from 'antd';
|
|
2
|
+
import { LabeledValue, SelectProps } from 'antd/lib/select';
|
|
3
|
+
interface FormSelectFieldProps extends Omit<FormItemProps, "name"> {
|
|
4
|
+
name: string;
|
|
5
|
+
options: LabeledValue[];
|
|
6
|
+
selectProps?: SelectProps<LabeledValue>;
|
|
7
|
+
}
|
|
8
|
+
export declare const FormSelectField: ({ options, selectProps, ...itemProps }: FormSelectFieldProps) => JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface PageContentProps extends PageBaseProps {
|
|
3
|
+
isLoading?: boolean;
|
|
4
|
+
}
|
|
5
|
+
interface PageBaseProps {
|
|
6
|
+
children?: React.ReactNode | React.ReactNode[];
|
|
7
|
+
}
|
|
8
|
+
export declare const Page: {
|
|
9
|
+
({ children }: PageBaseProps): JSX.Element;
|
|
10
|
+
Header: ({ children }: PageBaseProps) => JSX.Element;
|
|
11
|
+
Content: ({ children, isLoading }: PageContentProps) => JSX.Element;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface SharedContextProviderProps {
|
|
3
|
+
providers?: React.JSXElementConstructor<unknown>[];
|
|
4
|
+
children?: React.ReactElement | React.ReactElement[];
|
|
5
|
+
disableInitialStoreRequest?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const SharedContextProvider: ({ children, disableInitialStoreRequest }: SharedContextProviderProps) => JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './SharedContextProvider';
|
|
2
|
+
export * from './Header';
|
|
3
|
+
export * from './Footer';
|
|
4
|
+
export * from './Page';
|
|
5
|
+
export * from './Button';
|
|
6
|
+
export * from './BottomDrawer';
|
|
7
|
+
export * from './Form';
|
|
8
|
+
export * from './Link';
|
|
9
|
+
export * from './Navigation';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const icons: {
|
|
2
|
+
faBars: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
3
|
+
faUser: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
4
|
+
faUserTie: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
5
|
+
faPlus: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
6
|
+
faUserPlus: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
7
|
+
faXmark: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
8
|
+
faCartShopping: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
9
|
+
faChevronDown: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
10
|
+
faFilter: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
11
|
+
faSearch: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
12
|
+
faQrcode: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
13
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Store } from '../interfaces/Store';
|
|
3
|
+
declare const StoreProvider: ({ children, disableInitialStoreRequest }: {
|
|
4
|
+
disableInitialStoreRequest?: boolean;
|
|
5
|
+
children: React.ReactElement | React.ReactElement[];
|
|
6
|
+
}) => JSX.Element;
|
|
7
|
+
declare const useStoreContext: () => Store;
|
|
8
|
+
export { StoreProvider, useStoreContext };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { UseQueryOptions } from "@tanstack/react-query";
|
|
2
|
+
import { Store } from "../interfaces/Store";
|
|
3
|
+
interface StoreQueryProps extends UseQueryOptions<Store> {
|
|
4
|
+
id: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const useStoreQuery: ({ id, ...options }: StoreQueryProps) => import("@tanstack/react-query").UseQueryResult<Store, unknown>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ApplicationsByCategory {
|
|
2
|
+
Id: string;
|
|
3
|
+
Name: string;
|
|
4
|
+
Applications: ApplicationAttribute[];
|
|
5
|
+
}
|
|
6
|
+
export interface ApplicationAttribute {
|
|
7
|
+
Id: string;
|
|
8
|
+
Key: string;
|
|
9
|
+
Name: string;
|
|
10
|
+
Description: string;
|
|
11
|
+
URL: string;
|
|
12
|
+
ImageURL: string;
|
|
13
|
+
Status: string;
|
|
14
|
+
CreateDate: number;
|
|
15
|
+
UpdateDate: number;
|
|
16
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface Customer {
|
|
2
|
+
Name: string;
|
|
3
|
+
CustomerId: string;
|
|
4
|
+
MemberNumber: string;
|
|
5
|
+
Email: string;
|
|
6
|
+
FirstName: string;
|
|
7
|
+
LastName: string;
|
|
8
|
+
Gender: string;
|
|
9
|
+
Birthday: string;
|
|
10
|
+
Jobtitle: string;
|
|
11
|
+
Address: CustomerAddress;
|
|
12
|
+
DoNotPhone: boolean;
|
|
13
|
+
DoNotEmail: boolean;
|
|
14
|
+
Mobilephone: string;
|
|
15
|
+
}
|
|
16
|
+
export interface CustomerAddress {
|
|
17
|
+
Address: string;
|
|
18
|
+
Zip: string;
|
|
19
|
+
City: string;
|
|
20
|
+
Country: string;
|
|
21
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface Product {
|
|
2
|
+
Id: string;
|
|
3
|
+
Reference: string;
|
|
4
|
+
CompanyId: string;
|
|
5
|
+
Name: string;
|
|
6
|
+
PriceSRP: number;
|
|
7
|
+
PriceCost: number;
|
|
8
|
+
VATId: string;
|
|
9
|
+
HierarchyId: string;
|
|
10
|
+
SupplierId: string;
|
|
11
|
+
IsStockCountEnabled: boolean;
|
|
12
|
+
MinOnlineStockQuantity: number;
|
|
13
|
+
IsNewArrival: boolean;
|
|
14
|
+
IsVerified: boolean;
|
|
15
|
+
Status: string;
|
|
16
|
+
Type: number;
|
|
17
|
+
Attributes: ProductAttribute[];
|
|
18
|
+
Items: ProductItem[];
|
|
19
|
+
CreateDate: number;
|
|
20
|
+
UpdateDate: number;
|
|
21
|
+
Recommendations: string[];
|
|
22
|
+
SimilarProducts: string[];
|
|
23
|
+
Images: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface ProductItem {
|
|
26
|
+
SKU: string;
|
|
27
|
+
Barcodes: string[];
|
|
28
|
+
Attributes: ProductAttribute[];
|
|
29
|
+
}
|
|
30
|
+
export interface ProductAttribute {
|
|
31
|
+
Name: string;
|
|
32
|
+
Value: string;
|
|
33
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import 'whatwg-fetch';
|
|
2
|
+
export declare const get: <T>(path: string, params?: Record<string, unknown>) => Promise<T>;
|
|
3
|
+
export declare const getAuth0: <T>(path: string, params?: Record<string, unknown>) => Promise<T>;
|
|
4
|
+
export declare const post: <T>(path: string, body?: unknown) => Promise<T>;
|
|
5
|
+
export declare const put: <T>(path: string, body?: unknown) => Promise<T>;
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@omniumretail/shared-resources",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Shared Components and services or utils to the frontend versions",
|
|
6
|
+
"main": "dist/bundle.js",
|
|
7
|
+
"typings": "./dist/types/index",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"prepublish": "rm -rf ./dist && npm run build",
|
|
10
|
+
"start": "webpack -w",
|
|
11
|
+
"build": "webpack",
|
|
12
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
13
|
+
},
|
|
14
|
+
"author": "",
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@types/react": "^18.0.21",
|
|
18
|
+
"@typescript-eslint/eslint-plugin": "^5.38.1",
|
|
19
|
+
"@typescript-eslint/parser": "^5.38.1",
|
|
20
|
+
"css-loader": "^6.7.1",
|
|
21
|
+
"eslint": "^8.24.0",
|
|
22
|
+
"eslint-plugin-css-modules": "^2.11.0",
|
|
23
|
+
"eslint-plugin-react-hooks": "^4.6.0",
|
|
24
|
+
"file-loader": "^6.2.0",
|
|
25
|
+
"sass": "^1.55.0",
|
|
26
|
+
"sass-loader": "^13.0.2",
|
|
27
|
+
"style-loader": "^3.3.1",
|
|
28
|
+
"stylelint": "^14.12.1",
|
|
29
|
+
"stylelint-config-css-modules": "^4.1.0",
|
|
30
|
+
"stylelint-config-standard-scss": "^5.0.0",
|
|
31
|
+
"stylelint-css-modules": "^1.2.2",
|
|
32
|
+
"ts-loader": "^9.4.1",
|
|
33
|
+
"typescript": "^4.8.3",
|
|
34
|
+
"url-loader": "^4.1.1",
|
|
35
|
+
"webpack": "^5.74.0",
|
|
36
|
+
"webpack-cli": "^4.10.0"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@fortawesome/fontawesome-svg-core": "^6.2.0",
|
|
40
|
+
"@fortawesome/free-regular-svg-icons": "^6.2.0",
|
|
41
|
+
"@fortawesome/free-solid-svg-icons": "^6.2.0",
|
|
42
|
+
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
43
|
+
"@tanstack/react-query": "4.8.0",
|
|
44
|
+
"@tanstack/react-query-devtools": "^4.8.0",
|
|
45
|
+
"antd": "^4.23.4",
|
|
46
|
+
"classnames": "^2.3.2",
|
|
47
|
+
"date-fns": "^2.29.3",
|
|
48
|
+
"react": "^18.2.0",
|
|
49
|
+
"react-dom": "^18.2.0",
|
|
50
|
+
"react-router-dom": "^6.4.1",
|
|
51
|
+
"use-query-params": "^2.1.1",
|
|
52
|
+
"whatwg-fetch": "^3.6.2"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg width="99" height="31" viewBox="0 0 99 31" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
2
|
+
<rect x="0.375" y="0.711365" width="98.4375" height="29.9381" fill="url(#pattern0)"/>
|
|
3
|
+
<defs>
|
|
4
|
+
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
|
|
5
|
+
<use xlink:href="#image0_397_398" transform="translate(0 -0.0260847) scale(0.00333333 0.0109601)"/>
|
|
6
|
+
</pattern>
|
|
7
|
+
<image id="image0_397_398" width="300" height="96" xlink:href="data:image/png;base64,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"/>
|
|
8
|
+
</defs>
|
|
9
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Drawer, DrawerProps } from "antd";
|
|
2
|
+
import styles from './styles.module.scss';
|
|
3
|
+
|
|
4
|
+
export const BottomDrawer = (props: DrawerProps) => {
|
|
5
|
+
return (
|
|
6
|
+
<Drawer { ...props } className={ styles.drawerComponent } height="80%" placement="bottom" closeIcon={ "Fechar" }/>
|
|
7
|
+
);
|
|
8
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
.drawerComponent {
|
|
2
|
+
|
|
3
|
+
:global {
|
|
4
|
+
|
|
5
|
+
.ant-drawer-content-wrapper {
|
|
6
|
+
top: 10%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.ant-drawer-content {
|
|
10
|
+
background: var(--app-footer-color);
|
|
11
|
+
border-radius: 7px 7px 0px 0px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.ant-drawer-header {
|
|
15
|
+
border-bottom: 1px solid var(--disabled-input);
|
|
16
|
+
text-align: center;
|
|
17
|
+
padding: 16px 0px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.ant-drawer-title {
|
|
21
|
+
font-weight: 700;
|
|
22
|
+
font-size: 14px;
|
|
23
|
+
color: var(--app-footer-bg-color);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.ant-drawer-close {
|
|
27
|
+
position: absolute;
|
|
28
|
+
top: 15px;
|
|
29
|
+
left: 335px;
|
|
30
|
+
font-weight: 400;
|
|
31
|
+
font-size: 12px;
|
|
32
|
+
color: var(--active-button-color);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Button as AntButton, ButtonProps } from 'antd';
|
|
2
|
+
import styles from './styles.module.scss';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
|
|
5
|
+
export interface CustomButtonProps extends ButtonProps {
|
|
6
|
+
iconAlignRight?: boolean;
|
|
7
|
+
buttonStyle?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const Button = (props: CustomButtonProps) => {
|
|
11
|
+
const { iconAlignRight, buttonStyle } = props;
|
|
12
|
+
|
|
13
|
+
const buttonClasses = {
|
|
14
|
+
[styles.button]: true,
|
|
15
|
+
[styles["button--iconPositionStyle"]]: iconAlignRight===true,
|
|
16
|
+
[styles["button--style1"]]: buttonStyle==="style1",
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<AntButton { ...props } className={ classNames(buttonClasses) } />
|
|
21
|
+
);
|
|
22
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
.button {
|
|
2
|
+
padding: 12px 24px;
|
|
3
|
+
border-radius: 4px;
|
|
4
|
+
min-width: 100px;
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
align-self: flex-start;
|
|
9
|
+
text-decoration: none;
|
|
10
|
+
border: none;
|
|
11
|
+
font-size: 14px;
|
|
12
|
+
line-height: 16.8px;
|
|
13
|
+
font-weight: 700;
|
|
14
|
+
font-family: 'Silka', sans-serif;
|
|
15
|
+
background-color: var(--button-default-background);
|
|
16
|
+
color: var(--button-default-text-color);
|
|
17
|
+
|
|
18
|
+
&:hover {
|
|
19
|
+
background-color: var(--button-default-background-hover-color);
|
|
20
|
+
//override ANTD default colors
|
|
21
|
+
color: var(--button-default-text-hover-color) !important;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&:focus,
|
|
25
|
+
&:active,
|
|
26
|
+
&:focus:active {
|
|
27
|
+
background-color: var(--button-default-background-focus-color);
|
|
28
|
+
color: var(--button-default-text-focus-color);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&:disabled,
|
|
32
|
+
&.disabled {
|
|
33
|
+
background-color: var(--button-disabled-background-color);
|
|
34
|
+
color: var(--button-disabled-default-text-color);
|
|
35
|
+
pointer-events: none;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&--iconPositionStyle {
|
|
39
|
+
flex-direction: row-reverse;
|
|
40
|
+
gap: 5px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&--style1 {
|
|
44
|
+
background-color: var(--button-style-1-background);
|
|
45
|
+
color: var(--button-style-1-text-color);
|
|
46
|
+
|
|
47
|
+
&:hover {
|
|
48
|
+
background-color: var(--button-style-1-background-hover-color);
|
|
49
|
+
//override ANTD default colors
|
|
50
|
+
color: var(--button-style-1-text-hover-color) !important;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
&:focus,
|
|
54
|
+
&:active,
|
|
55
|
+
&:focus:active {
|
|
56
|
+
background-color: var(--button-style-1-background-focus-color);
|
|
57
|
+
color: var(--button-style-1-text-focus-color);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
&:disabled,
|
|
61
|
+
&.disabled {
|
|
62
|
+
background-color: var(--button-disabled-background-color);
|
|
63
|
+
color: var(--button-disabled-default-text-color);
|
|
64
|
+
pointer-events: none;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Row, Col } from 'antd';
|
|
2
|
+
import add from 'date-fns/add';
|
|
3
|
+
import format from 'date-fns/format';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
import logo from '../../assets/omniu-retail_branco_s-fundo.png';
|
|
6
|
+
import { useState, useEffect } from 'react';
|
|
7
|
+
|
|
8
|
+
import styles from './styles.module.scss';
|
|
9
|
+
|
|
10
|
+
export const FooterComponent = ({ className }: { className?: string }) => {
|
|
11
|
+
const [date, setDate] = useState(new Date());
|
|
12
|
+
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const time = (function updateDate() {
|
|
15
|
+
const nextMinute = add(new Date(), { minutes: 1, seconds: 0 });
|
|
16
|
+
return setTimeout(() => {
|
|
17
|
+
setDate(new Date());
|
|
18
|
+
updateDate();
|
|
19
|
+
}, nextMinute.getTime() - new Date().getTime());
|
|
20
|
+
}());
|
|
21
|
+
|
|
22
|
+
return () => clearTimeout(time);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<div className={ classNames(styles.footerComponent, className) }>
|
|
27
|
+
<Row>
|
|
28
|
+
<Col xs={ 12 } className={ styles.dateTime }>
|
|
29
|
+
<div className={ styles.date }>
|
|
30
|
+
{format(date, 'dd/MM/yyyy')}
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<div className={ styles.time }>
|
|
34
|
+
{format(date, 'HH:mm')}
|
|
35
|
+
</div>
|
|
36
|
+
</Col>
|
|
37
|
+
|
|
38
|
+
<Col xs={ 12 } className={ styles.omniumLogo }>
|
|
39
|
+
<img src={ logo } className={ styles.omniumLogoImg } alt="omniu logo" />
|
|
40
|
+
</Col>
|
|
41
|
+
</Row>
|
|
42
|
+
</div>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
.footerComponent {
|
|
2
|
+
height: 60px;
|
|
3
|
+
background-color: var(--app-footer-bg-color);
|
|
4
|
+
padding: 13px 24px;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
|
|
7
|
+
.date,
|
|
8
|
+
.time {
|
|
9
|
+
font-weight: 500;
|
|
10
|
+
font-size: 10px;
|
|
11
|
+
color: var(--app-footer-color);
|
|
12
|
+
display: inline-flex;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.dateTime {
|
|
16
|
+
line-height: 12px;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.time {
|
|
20
|
+
margin-left: 8px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.omniumLogo {
|
|
24
|
+
line-height: 12px;
|
|
25
|
+
text-align: right;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.omniumLogoImg {
|
|
29
|
+
height: 23px;
|
|
30
|
+
margin-top: -5px;
|
|
31
|
+
margin-right: -6px;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Form, FormItemProps, Input, InputProps } from 'antd';
|
|
2
|
+
|
|
3
|
+
interface FormInputFieldProps extends Omit<FormItemProps, "name"> {
|
|
4
|
+
name: string;
|
|
5
|
+
inputProps?: InputProps;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const InputField = (inputProps: InputProps) => (
|
|
9
|
+
<Input { ...inputProps } />
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
export const FormInputField = ({ inputProps, ...itemProps }: FormInputFieldProps) => {
|
|
13
|
+
return (
|
|
14
|
+
<Form.Item { ...itemProps }>
|
|
15
|
+
<InputField { ...inputProps } />
|
|
16
|
+
</Form.Item>
|
|
17
|
+
)
|
|
18
|
+
};
|