norma-library 0.5.811 → 0.5.812
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/dist/esm/components/Box/index.d.ts +4 -0
- package/dist/esm/components/Box/index.js +8 -0
- package/dist/esm/components/Box/index.js.map +1 -0
- package/dist/esm/components/Box/interfaces.d.ts +5 -0
- package/dist/esm/components/Box/interfaces.js +2 -0
- package/dist/esm/components/Box/interfaces.js.map +1 -0
- package/dist/esm/components/Box/styles.d.ts +3 -0
- package/dist/esm/components/Box/styles.js +17 -0
- package/dist/esm/components/Box/styles.js.map +1 -0
- package/dist/esm/components/Breadcrumb/index.d.ts +4 -0
- package/dist/esm/components/Breadcrumb/index.js +18 -0
- package/dist/esm/components/Breadcrumb/index.js.map +1 -0
- package/dist/esm/components/Breadcrumb/interface.d.ts +8 -0
- package/dist/esm/components/Breadcrumb/interface.js +2 -0
- package/dist/esm/components/Breadcrumb/interface.js.map +1 -0
- package/dist/esm/components/Breadcrumb/styles.d.ts +5 -0
- package/dist/esm/components/Breadcrumb/styles.js +8 -0
- package/dist/esm/components/Breadcrumb/styles.js.map +1 -0
- package/dist/esm/components/ChatMessageBalloon/ChatMessageBalloon.style.d.ts +1 -1
- package/dist/esm/components/DataGrid/base/dropdown.d.ts +4 -4
- package/dist/esm/components/DataGrid/base/dropdown.js +125 -125
- package/dist/esm/components/DataGrid/base/dropdown.js.map +1 -1
- package/dist/esm/components/DataGrid/base/number-filter.d.ts +4 -4
- package/dist/esm/components/DataGrid/base/number-filter.js +29 -29
- package/dist/esm/components/DataGrid/base/sorting.d.ts +5 -5
- package/dist/esm/components/DataGrid/base/sorting.js +14 -14
- package/dist/esm/components/DataGrid/icons.d.ts +5 -4
- package/dist/esm/components/DataGrid/icons.js +19 -14
- package/dist/esm/components/DataGrid/icons.js.map +1 -1
- package/dist/esm/components/DataGrid/index.d.ts +3 -5
- package/dist/esm/components/DataGrid/index.js +213 -145
- package/dist/esm/components/DataGrid/index.js.map +1 -1
- package/dist/esm/components/DataGrid/shared.d.ts +20 -20
- package/dist/esm/components/DataGrid/shared.js +118 -127
- package/dist/esm/components/DataGrid/shared.js.map +1 -1
- package/dist/esm/components/DataGrid/styled.d.ts +11 -11
- package/dist/esm/components/DataGrid/styled.js +85 -85
- package/dist/esm/components/DateInput/index.d.ts +4 -0
- package/dist/esm/components/DateInput/index.js +15 -0
- package/dist/esm/components/DateInput/index.js.map +1 -0
- package/dist/esm/components/DateInput/interface.d.ts +12 -0
- package/dist/esm/components/DateInput/interface.js +2 -0
- package/dist/esm/components/DateInput/interface.js.map +1 -0
- package/dist/esm/components/DateInput/styles.d.ts +5 -0
- package/dist/esm/components/DateInput/styles.js +7 -0
- package/dist/esm/components/DateInput/styles.js.map +1 -0
- package/dist/esm/components/Icons.d.ts +1 -1
- package/dist/esm/components/Icons.js.map +1 -1
- package/dist/esm/components/MultiSelectInput/components/MultiValue/index.d.ts +3 -0
- package/dist/esm/components/MultiSelectInput/components/MultiValue/index.js +30 -0
- package/dist/esm/components/MultiSelectInput/components/MultiValue/index.js.map +1 -0
- package/dist/esm/components/MultiSelectInput/components/Option/index.d.ts +3 -0
- package/dist/esm/components/MultiSelectInput/components/Option/index.js +36 -0
- package/dist/esm/components/MultiSelectInput/components/Option/index.js.map +1 -0
- package/dist/esm/components/MultiSelectInput/components/Option/styles.d.ts +2 -0
- package/dist/esm/components/MultiSelectInput/components/Option/styles.js +5 -0
- package/dist/esm/components/MultiSelectInput/components/Option/styles.js.map +1 -0
- package/dist/esm/components/MultiSelectInput/index.d.ts +4 -0
- package/dist/esm/components/MultiSelectInput/index.js +33 -0
- package/dist/esm/components/MultiSelectInput/index.js.map +1 -0
- package/dist/esm/components/MultiSelectInput/interfaces.d.ts +15 -0
- package/dist/esm/components/MultiSelectInput/interfaces.js +2 -0
- package/dist/esm/components/MultiSelectInput/interfaces.js.map +1 -0
- package/dist/esm/components/MultiSelectInput/styles.d.ts +3 -0
- package/dist/esm/components/MultiSelectInput/styles.js +6 -0
- package/dist/esm/components/MultiSelectInput/styles.js.map +1 -0
- package/dist/esm/components/SelectInput/components/Option/index.d.ts +3 -0
- package/dist/esm/components/SelectInput/components/Option/index.js +34 -0
- package/dist/esm/components/SelectInput/components/Option/index.js.map +1 -0
- package/dist/esm/components/SelectInput/components/Option/styles.d.ts +2 -0
- package/dist/esm/components/SelectInput/components/Option/styles.js +5 -0
- package/dist/esm/components/SelectInput/components/Option/styles.js.map +1 -0
- package/dist/esm/components/SelectInput/index.d.ts +4 -0
- package/dist/esm/components/SelectInput/index.js +19 -0
- package/dist/esm/components/SelectInput/index.js.map +1 -0
- package/dist/esm/components/SelectInput/interfaces.d.ts +15 -0
- package/dist/esm/components/SelectInput/interfaces.js +2 -0
- package/dist/esm/components/SelectInput/interfaces.js.map +1 -0
- package/dist/esm/components/SelectInput/styles.d.ts +3 -0
- package/dist/esm/components/SelectInput/styles.js +6 -0
- package/dist/esm/components/SelectInput/styles.js.map +1 -0
- package/dist/esm/components/Table/components/header/index.d.ts +3 -0
- package/dist/esm/components/Table/components/header/index.js +35 -0
- package/dist/esm/components/Table/components/header/index.js.map +1 -0
- package/dist/esm/components/Table/components/header/styles.d.ts +8 -0
- package/dist/esm/components/Table/components/header/styles.js +11 -0
- package/dist/esm/components/Table/components/header/styles.js.map +1 -0
- package/dist/esm/components/Table/components/index.d.ts +4 -0
- package/dist/esm/components/Table/components/index.js +5 -0
- package/dist/esm/components/Table/components/index.js.map +1 -0
- package/dist/esm/components/Table/components/pagination/index.d.ts +3 -0
- package/dist/esm/components/Table/components/pagination/index.js +16 -0
- package/dist/esm/components/Table/components/pagination/index.js.map +1 -0
- package/dist/esm/components/Table/components/pagination/styles.d.ts +2 -0
- package/dist/esm/components/Table/components/pagination/styles.js +5 -0
- package/dist/esm/components/Table/components/pagination/styles.js.map +1 -0
- package/dist/esm/components/Table/components/tbody/index.d.ts +3 -0
- package/dist/esm/components/Table/components/tbody/index.js +8 -0
- package/dist/esm/components/Table/components/tbody/index.js.map +1 -0
- package/dist/esm/components/Table/components/tbody/styles.d.ts +0 -0
- package/dist/esm/components/Table/components/tbody/styles.js +2 -0
- package/dist/esm/components/Table/components/tbody/styles.js.map +1 -0
- package/dist/esm/components/Table/index-old.d.ts +4 -0
- package/dist/esm/components/Table/index-old.js +249 -0
- package/dist/esm/components/Table/index-old.js.map +1 -0
- package/dist/esm/components/Table/index.d.ts +4 -0
- package/dist/esm/components/Table/index.js +215 -0
- package/dist/esm/components/Table/index.js.map +1 -0
- package/dist/esm/components/Table/interface.d.ts +12 -0
- package/dist/esm/components/Table/interface.js +2 -0
- package/dist/esm/components/Table/interface.js.map +1 -0
- package/dist/esm/components/Table/styles.d.ts +10 -0
- package/dist/esm/components/Table/styles.js +13 -0
- package/dist/esm/components/Table/styles.js.map +1 -0
- package/dist/esm/components/Table-old/index.d.ts +3 -0
- package/dist/esm/components/Table-old/index.js +71 -0
- package/dist/esm/components/Table-old/index.js.map +1 -0
- package/dist/esm/components/Table-old/styles.d.ts +3004 -0
- package/dist/esm/components/Table-old/styles.js +15 -0
- package/dist/esm/components/Table-old/styles.js.map +1 -0
- package/dist/esm/components/TextInput/index.d.ts +4 -0
- package/dist/esm/components/TextInput/index.js +16 -0
- package/dist/esm/components/TextInput/index.js.map +1 -0
- package/dist/esm/components/TextInput/interface.d.ts +10 -0
- package/dist/esm/components/TextInput/interface.js +2 -0
- package/dist/esm/components/TextInput/interface.js.map +1 -0
- package/dist/esm/components/TextInput/styles.d.ts +4 -0
- package/dist/esm/components/TextInput/styles.js +7 -0
- package/dist/esm/components/TextInput/styles.js.map +1 -0
- package/dist/esm/components/Typography/Text/index.d.ts +4 -0
- package/dist/esm/components/Typography/Text/index.js +8 -0
- package/dist/esm/components/Typography/Text/index.js.map +1 -0
- package/dist/esm/components/Typography/Text/interfaces.d.ts +7 -0
- package/dist/esm/components/Typography/Text/interfaces.js +2 -0
- package/dist/esm/components/Typography/Text/interfaces.js.map +1 -0
- package/dist/esm/components/Typography/Text/styles.d.ts +3 -0
- package/dist/esm/components/Typography/Text/styles.js +35 -0
- package/dist/esm/components/Typography/Text/styles.js.map +1 -0
- package/dist/esm/components/Typography/Title/index.d.ts +4 -0
- package/dist/esm/components/Typography/Title/index.js +8 -0
- package/dist/esm/components/Typography/Title/index.js.map +1 -0
- package/dist/esm/components/Typography/Title/interfaces.d.ts +8 -0
- package/dist/esm/components/Typography/Title/interfaces.js +2 -0
- package/dist/esm/components/Typography/Title/interfaces.js.map +1 -0
- package/dist/esm/components/Typography/Title/styles.d.ts +3 -0
- package/dist/esm/components/Typography/Title/styles.js +35 -0
- package/dist/esm/components/Typography/Title/styles.js.map +1 -0
- package/dist/esm/components/Typography/index.d.ts +3 -0
- package/dist/esm/components/Typography/index.js +4 -0
- package/dist/esm/components/Typography/index.js.map +1 -0
- package/dist/esm/components/index.d.ts +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/helpers/alignments.js.map +1 -1
- package/dist/esm/helpers/borders.js.map +1 -1
- package/dist/esm/helpers/colors.js.map +1 -1
- package/dist/esm/helpers/radios.js.map +1 -1
- package/dist/esm/helpers/sizes.js.map +1 -1
- package/dist/esm/index.d.ts +10 -2
- package/dist/esm/index.js +10 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/DataGrid.d.ts +42 -42
- package/dist/esm/interfaces/DataGrid.js +1 -1
- package/dist/esm/interfaces/index.d.ts +0 -1
- package/dist/esm/interfaces/index.js +0 -1
- package/dist/esm/interfaces/index.js.map +1 -1
- package/package.json +6 -4
- package/src/components/Box/index.tsx +13 -0
- package/src/components/Box/interfaces.ts +4 -0
- package/src/components/Box/styles.tsx +23 -0
- package/src/components/Breadcrumb/index.tsx +27 -0
- package/src/components/Breadcrumb/interface.ts +9 -0
- package/src/components/Breadcrumb/styles.tsx +33 -0
- package/src/components/DateInput/index.tsx +35 -0
- package/src/components/DateInput/interface.ts +14 -0
- package/src/components/DateInput/styles.tsx +28 -0
- package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -0
- package/src/components/MultiSelectInput/components/Option/index.tsx +63 -0
- package/src/components/MultiSelectInput/components/Option/styles.tsx +9 -0
- package/src/components/MultiSelectInput/index.tsx +61 -0
- package/src/components/MultiSelectInput/interfaces.ts +16 -0
- package/src/components/MultiSelectInput/styles.tsx +44 -0
- package/src/components/SelectInput/components/Option/index.tsx +62 -0
- package/src/components/SelectInput/components/Option/styles.tsx +9 -0
- package/src/components/SelectInput/index.tsx +46 -0
- package/src/components/SelectInput/interfaces.ts +16 -0
- package/src/components/SelectInput/styles.tsx +32 -0
- package/src/components/Table/components/header/index.tsx +59 -0
- package/src/components/Table/components/header/styles.tsx +55 -0
- package/src/components/Table/components/index.tsx +9 -0
- package/src/components/Table/components/pagination/index.tsx +42 -0
- package/src/components/Table/components/pagination/styles.tsx +19 -0
- package/src/components/Table/components/tbody/index.tsx +20 -0
- package/src/components/Table/components/tbody/styles.tsx +0 -0
- package/src/components/Table/index.tsx +295 -0
- package/src/components/Table/interface.ts +14 -0
- package/src/components/Table/styles.tsx +113 -0
- package/src/components/TextInput/index.tsx +38 -0
- package/src/components/TextInput/interface.ts +10 -0
- package/src/components/TextInput/styles.tsx +24 -0
- package/src/components/Typography/Text/index.tsx +21 -0
- package/src/components/Typography/Text/interfaces.ts +6 -0
- package/src/components/Typography/Text/styles.tsx +41 -0
- package/src/components/Typography/Title/index.tsx +23 -0
- package/src/components/Typography/Title/interfaces.ts +7 -0
- package/src/components/Typography/Title/styles.tsx +41 -0
- package/src/components/Typography/index.tsx +7 -0
- package/src/components/index.ts +1 -1
- package/src/index.css +0 -2
- package/src/index.ts +19 -2
- package/src/interfaces/index.ts +0 -1
- package/src/sample-data.json +2 -3
- package/src/stories/Box.stories.tsx +36 -0
- package/src/stories/Breadcrumb.stories.tsx +45 -0
- package/src/stories/DateInput.stories.tsx +52 -0
- package/src/stories/MultiSelectInput.stories.tsx +91 -0
- package/src/stories/SelectInput.stories.tsx +79 -0
- package/src/stories/Table.stories.tsx +222 -0
- package/src/stories/Text.stories.tsx +38 -0
- package/src/stories/TextInput.stories.tsx +53 -0
- package/src/stories/Title.stories.tsx +44 -0
- package/src/styles/custom.css +1 -0
- package/src/styles/{globals.css → globals.scss} +1 -4
- package/tsconfig.json +1 -1
- package/vite.config.ts +15 -0
- package/.husky/commit-msg +0 -4
- package/src/components/DataGrid/allData.json +0 -2918
- package/src/components/DataGrid/base/dropdown.tsx +0 -212
- package/src/components/DataGrid/base/number-filter.tsx +0 -43
- package/src/components/DataGrid/base/sorting.tsx +0 -29
- package/src/components/DataGrid/icons.tsx +0 -53
- package/src/components/DataGrid/index.tsx +0 -259
- package/src/components/DataGrid/shared.ts +0 -154
- package/src/components/DataGrid/styled.ts +0 -107
- package/src/components/DataGrid/styles/dropdown.module.css +0 -86
- package/src/components/DataGrid/styles/number-filter.module.css +0 -16
- package/src/components/DataGrid/styles/styles.module.css +0 -107
- package/src/interfaces/DataGrid.ts +0 -47
- package/src/stories/DataGrid.stories.tsx +0 -31
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import styled from 'styled-components'
|
|
2
|
+
import { BoxProps } from "./interfaces"
|
|
3
|
+
|
|
4
|
+
const setSizeSelected = (size: string) => {
|
|
5
|
+
switch (size) {
|
|
6
|
+
case "small":
|
|
7
|
+
return "10px";
|
|
8
|
+
case "medium":
|
|
9
|
+
return "16px";
|
|
10
|
+
case "large":
|
|
11
|
+
return "24px"
|
|
12
|
+
default:
|
|
13
|
+
return "16px";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const Container = styled.div<BoxProps>`
|
|
18
|
+
background: #fff;
|
|
19
|
+
border-radius: 5px;
|
|
20
|
+
width: 100%;
|
|
21
|
+
box-shadow: 0px 2px 6px #0000000A;
|
|
22
|
+
padding: ${props => setSizeSelected(props.size)}
|
|
23
|
+
`
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import * as S from "./styles"
|
|
3
|
+
import { BreadcrumbProps, Link } from './interface';
|
|
4
|
+
|
|
5
|
+
const Breadcrumb:React.FC<BreadcrumbProps> = ({ links, onChange }) => {
|
|
6
|
+
const listLinks = useMemo(() => {
|
|
7
|
+
return links.map((link: Link, index: number, self: Link[]) => {
|
|
8
|
+
const showIcon = self.length > index + 1
|
|
9
|
+
return (
|
|
10
|
+
<div className='content' key={index}>
|
|
11
|
+
<S.Link onClick={() => onChange(link)}>{link.name}</S.Link>
|
|
12
|
+
{ showIcon ? <S.Arrow><i className="icon"></i></S.Arrow> : null }
|
|
13
|
+
</div>
|
|
14
|
+
)
|
|
15
|
+
})
|
|
16
|
+
}, [links])
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<S.Container>
|
|
20
|
+
<S.ListLinks>
|
|
21
|
+
{ listLinks }
|
|
22
|
+
</S.ListLinks>
|
|
23
|
+
</S.Container>
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default Breadcrumb
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
|
|
3
|
+
export const Container = styled.div`
|
|
4
|
+
margin: 0 0 16px 0;
|
|
5
|
+
`
|
|
6
|
+
|
|
7
|
+
export const ListLinks = styled.div`
|
|
8
|
+
display: flex;
|
|
9
|
+
gap: 8px;
|
|
10
|
+
.content {
|
|
11
|
+
display: flex;
|
|
12
|
+
gap: 8px;
|
|
13
|
+
}
|
|
14
|
+
`
|
|
15
|
+
|
|
16
|
+
export const Link = styled.p`
|
|
17
|
+
color: #666;
|
|
18
|
+
font-size: 14px;
|
|
19
|
+
cursor: pointer;
|
|
20
|
+
`
|
|
21
|
+
|
|
22
|
+
export const Arrow = styled.div`
|
|
23
|
+
display: flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
.icon {
|
|
26
|
+
border: solid #999;
|
|
27
|
+
border-width: 0 2px 2px 0;
|
|
28
|
+
display: inline-block;
|
|
29
|
+
padding: 2px;
|
|
30
|
+
transform: rotate(-45deg);
|
|
31
|
+
-webkit-transform: rotate(-45deg);
|
|
32
|
+
}
|
|
33
|
+
`
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React, { useState } from "react"
|
|
2
|
+
import DatePicker from "react-datepicker";
|
|
3
|
+
import * as S from "./styles"
|
|
4
|
+
import { DateInputProps } from './interface';
|
|
5
|
+
|
|
6
|
+
const DateInput:React.FC<DateInputProps> = ({
|
|
7
|
+
label,
|
|
8
|
+
dateFormat,
|
|
9
|
+
dateSelected,
|
|
10
|
+
className,
|
|
11
|
+
showTimeSelect,
|
|
12
|
+
timeFormat,
|
|
13
|
+
disabled,
|
|
14
|
+
onChange
|
|
15
|
+
}) => {
|
|
16
|
+
const [date, setDate] = useState<Date | null>(dateSelected)
|
|
17
|
+
return (
|
|
18
|
+
<S.Container className={className}>
|
|
19
|
+
<S.Label>{label}</S.Label>
|
|
20
|
+
<DatePicker
|
|
21
|
+
dateFormat={dateFormat}
|
|
22
|
+
selected={date}
|
|
23
|
+
showTimeSelect={showTimeSelect}
|
|
24
|
+
timeFormat={timeFormat}
|
|
25
|
+
disabled={disabled}
|
|
26
|
+
onChange={(date) => {
|
|
27
|
+
setDate(date)
|
|
28
|
+
onChange(date)
|
|
29
|
+
}}
|
|
30
|
+
/>
|
|
31
|
+
</S.Container>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export default DateInput
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface DateInputProps {
|
|
2
|
+
className?: string
|
|
3
|
+
label: string
|
|
4
|
+
dateSelected: Date
|
|
5
|
+
onChange: Function
|
|
6
|
+
dateFormat: string
|
|
7
|
+
showTimeSelect?: boolean
|
|
8
|
+
timeFormat?: string
|
|
9
|
+
disabled?: boolean
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface ContainerStyles {
|
|
13
|
+
|
|
14
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
import "react-datepicker/dist/react-datepicker.css";
|
|
3
|
+
import { ContainerStyles } from './interface';
|
|
4
|
+
|
|
5
|
+
export const Container = styled.div<ContainerStyles>`
|
|
6
|
+
width: 100%;
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
.react-datepicker-wrapper {
|
|
10
|
+
width: 100%;
|
|
11
|
+
input {
|
|
12
|
+
border: none;
|
|
13
|
+
color: #4D4F5C;
|
|
14
|
+
border-bottom: 1px solid #00000033;
|
|
15
|
+
outline: none;
|
|
16
|
+
font-size: 18px;
|
|
17
|
+
padding: 8px;
|
|
18
|
+
width: 100%;
|
|
19
|
+
font-size: 16px;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
`
|
|
23
|
+
|
|
24
|
+
export const Label = styled.label`
|
|
25
|
+
font-size: 14px;
|
|
26
|
+
margin: 0 0 4px 0;
|
|
27
|
+
color: #666;
|
|
28
|
+
`
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { components } from "react-select"
|
|
3
|
+
|
|
4
|
+
const MoreSelectedBadge = ({ items }: any) => {
|
|
5
|
+
const style = {
|
|
6
|
+
marginLeft: "auto",
|
|
7
|
+
background: "#F8F9FA",
|
|
8
|
+
color: "#666666",
|
|
9
|
+
borderRadius: "4px",
|
|
10
|
+
fontFamily: "Open Sans",
|
|
11
|
+
fontSize: "11px",
|
|
12
|
+
padding: "3px",
|
|
13
|
+
order: 99
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const title = items.join(", ");
|
|
17
|
+
const length = items.length;
|
|
18
|
+
const label = `+ ${length}`;
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<div style={style} title={title}>
|
|
22
|
+
{label}
|
|
23
|
+
</div>
|
|
24
|
+
);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const MultiValue:React.FC<any> = ({
|
|
28
|
+
index,
|
|
29
|
+
getValue,
|
|
30
|
+
...props
|
|
31
|
+
}) => {
|
|
32
|
+
const maxToShow = 3;
|
|
33
|
+
const overflow = getValue()
|
|
34
|
+
.slice(maxToShow)
|
|
35
|
+
.map((x: any) => x.label);
|
|
36
|
+
|
|
37
|
+
return index < maxToShow ? (
|
|
38
|
+
<components.MultiValue {...props} />
|
|
39
|
+
) : index === maxToShow ? (
|
|
40
|
+
<MoreSelectedBadge items={overflow} />
|
|
41
|
+
) : null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default MultiValue
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import React, { useState } from "react"
|
|
2
|
+
import { components } from "react-select"
|
|
3
|
+
import * as S from "./styles";
|
|
4
|
+
|
|
5
|
+
const Option:React.FC<any> = ({
|
|
6
|
+
isFocused,
|
|
7
|
+
isSelected,
|
|
8
|
+
innerProps,
|
|
9
|
+
children,
|
|
10
|
+
getStyles,
|
|
11
|
+
isDisabled,
|
|
12
|
+
...rest
|
|
13
|
+
}) => {
|
|
14
|
+
const [isActive, setIsActive] = useState(false);
|
|
15
|
+
const onMouseDown = () => setIsActive(true);
|
|
16
|
+
const onMouseUp = () => setIsActive(false);
|
|
17
|
+
const onMouseLeave = () => setIsActive(false);
|
|
18
|
+
|
|
19
|
+
let bg = "transparent"
|
|
20
|
+
let color = "#000"
|
|
21
|
+
|
|
22
|
+
if (isFocused) {
|
|
23
|
+
bg = "#f1f1f1"
|
|
24
|
+
};
|
|
25
|
+
if (isActive) {
|
|
26
|
+
bg = "#F8F9FA"
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const style = {
|
|
30
|
+
alignItems: "center",
|
|
31
|
+
transition: "0.3s",
|
|
32
|
+
backgroundColor: bg,
|
|
33
|
+
color: color,
|
|
34
|
+
display: "flex ",
|
|
35
|
+
gap: '8px'
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const props = {
|
|
39
|
+
...innerProps,
|
|
40
|
+
onMouseDown,
|
|
41
|
+
onMouseUp,
|
|
42
|
+
onMouseLeave,
|
|
43
|
+
style,
|
|
44
|
+
...rest
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<S.Container>
|
|
49
|
+
<components.Option
|
|
50
|
+
{...rest}
|
|
51
|
+
isDisabled={isDisabled}
|
|
52
|
+
isFocused={isFocused}
|
|
53
|
+
isSelected={isSelected}
|
|
54
|
+
getStyles={getStyles}
|
|
55
|
+
innerProps={props}>
|
|
56
|
+
<input type="checkbox" checked={isSelected} onChange={() => null}/>
|
|
57
|
+
{children}
|
|
58
|
+
</components.Option>
|
|
59
|
+
</S.Container>
|
|
60
|
+
);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export default Option
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React, { useState } from "react"
|
|
2
|
+
import Select from "react-select"
|
|
3
|
+
import { MultiSelectProps } from "./interfaces"
|
|
4
|
+
import * as S from "./styles"
|
|
5
|
+
import Option from "./components/Option"
|
|
6
|
+
import MultiValue from "./components/MultiValue"
|
|
7
|
+
|
|
8
|
+
const MultiSelectInput:React.FC<MultiSelectProps> = ({
|
|
9
|
+
className,
|
|
10
|
+
label,
|
|
11
|
+
onChange,
|
|
12
|
+
placeholder,
|
|
13
|
+
disabled,
|
|
14
|
+
options,
|
|
15
|
+
value,
|
|
16
|
+
isSearchable,
|
|
17
|
+
isClearable,
|
|
18
|
+
}) => {
|
|
19
|
+
const [valueSelected, setValueSelected] = useState(value)
|
|
20
|
+
|
|
21
|
+
const components = {
|
|
22
|
+
MultiValueContainer: ({ selectProps, data }: any) => {
|
|
23
|
+
const values = selectProps.value;
|
|
24
|
+
if (values) {
|
|
25
|
+
const separator = values.length > 1 ? ', ' : ''
|
|
26
|
+
return values[values.length - 1]?.label === data?.label
|
|
27
|
+
? data?.label
|
|
28
|
+
: data?.label + `${separator}`;
|
|
29
|
+
}
|
|
30
|
+
return
|
|
31
|
+
},
|
|
32
|
+
Option,
|
|
33
|
+
MultiValue
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<S.Container className={className}>
|
|
38
|
+
{ label ? <S.Label>{label}</S.Label> : null }
|
|
39
|
+
<Select
|
|
40
|
+
placeholder={placeholder}
|
|
41
|
+
className="react-select-container"
|
|
42
|
+
classNamePrefix="react-select"
|
|
43
|
+
defaultValue={valueSelected || []}
|
|
44
|
+
options={options}
|
|
45
|
+
isMulti
|
|
46
|
+
closeMenuOnSelect={false}
|
|
47
|
+
hideSelectedOptions={false}
|
|
48
|
+
isDisabled={disabled}
|
|
49
|
+
isSearchable={isSearchable}
|
|
50
|
+
isClearable={isClearable}
|
|
51
|
+
components={components}
|
|
52
|
+
onChange={(values: any) => {
|
|
53
|
+
setValueSelected(values)
|
|
54
|
+
onChange(values)
|
|
55
|
+
}}
|
|
56
|
+
/>
|
|
57
|
+
</S.Container>
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export default MultiSelectInput
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface Option {
|
|
2
|
+
value: string | number,
|
|
3
|
+
label: string
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface MultiSelectProps {
|
|
7
|
+
className?: string
|
|
8
|
+
label?: string
|
|
9
|
+
onChange: Function
|
|
10
|
+
placeholder?: string
|
|
11
|
+
disabled?: boolean
|
|
12
|
+
options: Option[]
|
|
13
|
+
value: Option
|
|
14
|
+
isSearchable?: boolean
|
|
15
|
+
isClearable?: boolean
|
|
16
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
|
|
3
|
+
export const Container = styled.div`
|
|
4
|
+
width: 100%;
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
.react-select {
|
|
8
|
+
&__control {
|
|
9
|
+
border-radius: 0;
|
|
10
|
+
border: none;
|
|
11
|
+
border-bottom: 1px solid #00000033;
|
|
12
|
+
}
|
|
13
|
+
&__control--is-focused {
|
|
14
|
+
border-bottom: 1px solid #00000033;
|
|
15
|
+
box-shadow: none;
|
|
16
|
+
}
|
|
17
|
+
&__control:hover {
|
|
18
|
+
border: none;
|
|
19
|
+
border-bottom: 1px solid #00000033 !important;
|
|
20
|
+
box-shadow: 0 0 0 #fff;
|
|
21
|
+
}
|
|
22
|
+
&__indicator-separator {
|
|
23
|
+
background: #fff;
|
|
24
|
+
}
|
|
25
|
+
&__multi-value {
|
|
26
|
+
background: transparent;
|
|
27
|
+
border-radius: 4px;
|
|
28
|
+
&__label {
|
|
29
|
+
color: #4D4F5C;
|
|
30
|
+
font-size: 18px;
|
|
31
|
+
padding: 0;
|
|
32
|
+
}
|
|
33
|
+
&__remove {
|
|
34
|
+
display: none;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
`
|
|
39
|
+
|
|
40
|
+
export const Label = styled.label`
|
|
41
|
+
font-size: 14px;
|
|
42
|
+
margin: 0 0 4px 0;
|
|
43
|
+
color: #4D4F5C;
|
|
44
|
+
`
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React, { useState } from "react"
|
|
2
|
+
import { components } from "react-select"
|
|
3
|
+
import * as S from "./styles";
|
|
4
|
+
|
|
5
|
+
const Option:React.FC<any> = ({
|
|
6
|
+
isFocused,
|
|
7
|
+
isSelected,
|
|
8
|
+
innerProps,
|
|
9
|
+
children,
|
|
10
|
+
getStyles,
|
|
11
|
+
isDisabled,
|
|
12
|
+
...rest
|
|
13
|
+
}) => {
|
|
14
|
+
const [isActive, setIsActive] = useState(false);
|
|
15
|
+
const onMouseDown = () => setIsActive(true);
|
|
16
|
+
const onMouseUp = () => setIsActive(false);
|
|
17
|
+
const onMouseLeave = () => setIsActive(false);
|
|
18
|
+
|
|
19
|
+
let bg = "transparent"
|
|
20
|
+
let color = "#000"
|
|
21
|
+
|
|
22
|
+
if (isFocused) {
|
|
23
|
+
bg = "#f1f1f1"
|
|
24
|
+
};
|
|
25
|
+
if (isActive) {
|
|
26
|
+
bg = "#F8F9FA"
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const style = {
|
|
30
|
+
alignItems: "center",
|
|
31
|
+
transition: "0.3s",
|
|
32
|
+
backgroundColor: bg,
|
|
33
|
+
color: color,
|
|
34
|
+
display: "flex ",
|
|
35
|
+
gap: '8px'
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const props = {
|
|
39
|
+
...innerProps,
|
|
40
|
+
onMouseDown,
|
|
41
|
+
onMouseUp,
|
|
42
|
+
onMouseLeave,
|
|
43
|
+
style,
|
|
44
|
+
...rest
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<S.Container>
|
|
49
|
+
<components.Option
|
|
50
|
+
{...rest}
|
|
51
|
+
isDisabled={isDisabled}
|
|
52
|
+
isFocused={isFocused}
|
|
53
|
+
isSelected={isSelected}
|
|
54
|
+
getStyles={getStyles}
|
|
55
|
+
innerProps={props}>
|
|
56
|
+
{children}
|
|
57
|
+
</components.Option>
|
|
58
|
+
</S.Container>
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export default Option
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React, { useState } from "react"
|
|
2
|
+
import Select from "react-select"
|
|
3
|
+
import { SelectInputProps } from "./interfaces"
|
|
4
|
+
import * as S from "./styles"
|
|
5
|
+
import Option from "./components/Option"
|
|
6
|
+
|
|
7
|
+
const SelectInput:React.FC<SelectInputProps> = ({
|
|
8
|
+
className,
|
|
9
|
+
label,
|
|
10
|
+
onChange,
|
|
11
|
+
placeholder,
|
|
12
|
+
disabled,
|
|
13
|
+
options,
|
|
14
|
+
value,
|
|
15
|
+
isSearchable,
|
|
16
|
+
isClearable,
|
|
17
|
+
}) => {
|
|
18
|
+
const [valueSelected, setValueSelected] = useState(value)
|
|
19
|
+
|
|
20
|
+
const components = {
|
|
21
|
+
Option
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<S.Container className={className}>
|
|
26
|
+
{ label ? <S.Label>{label}</S.Label> : null }
|
|
27
|
+
<Select
|
|
28
|
+
placeholder={placeholder}
|
|
29
|
+
className="react-select-container"
|
|
30
|
+
classNamePrefix="react-select"
|
|
31
|
+
defaultValue={valueSelected || ''}
|
|
32
|
+
options={options}
|
|
33
|
+
isDisabled={disabled}
|
|
34
|
+
isSearchable={isSearchable}
|
|
35
|
+
isClearable={isClearable}
|
|
36
|
+
components={components}
|
|
37
|
+
onChange={(values: any) => {
|
|
38
|
+
setValueSelected(values)
|
|
39
|
+
onChange(values)
|
|
40
|
+
}}
|
|
41
|
+
/>
|
|
42
|
+
</S.Container>
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default SelectInput
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface Option {
|
|
2
|
+
value: string | number,
|
|
3
|
+
label: string
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface SelectInputProps {
|
|
7
|
+
className?: string
|
|
8
|
+
label?: string
|
|
9
|
+
onChange: Function
|
|
10
|
+
placeholder?: string
|
|
11
|
+
disabled?: boolean
|
|
12
|
+
options: Option[]
|
|
13
|
+
value: Option
|
|
14
|
+
isSearchable?: boolean
|
|
15
|
+
isClearable?: boolean
|
|
16
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
|
|
3
|
+
export const Container = styled.div`
|
|
4
|
+
width: 100%;
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
.react-select {
|
|
8
|
+
&__control {
|
|
9
|
+
border-radius: 0;
|
|
10
|
+
border: none;
|
|
11
|
+
border-bottom: 1px solid #00000033;
|
|
12
|
+
}
|
|
13
|
+
&__control--is-focused {
|
|
14
|
+
border-bottom: 1px solid #00000033;
|
|
15
|
+
box-shadow: none;
|
|
16
|
+
}
|
|
17
|
+
&__control:hover {
|
|
18
|
+
border: none;
|
|
19
|
+
border-bottom: 1px solid #00000033;
|
|
20
|
+
box-shadow: 0 0 0 #fff;
|
|
21
|
+
}
|
|
22
|
+
&__indicator-separator {
|
|
23
|
+
background: #fff;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
`
|
|
27
|
+
|
|
28
|
+
export const Label = styled.label`
|
|
29
|
+
font-size: 14px;
|
|
30
|
+
margin: 0 0 4px 0;
|
|
31
|
+
color: #666;
|
|
32
|
+
`
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import React, { useState } from "react"
|
|
2
|
+
import * as S from "./styles"
|
|
3
|
+
import SettingsIcon from '@mui/icons-material/Settings';
|
|
4
|
+
|
|
5
|
+
const Header:React.FC<any> = ({
|
|
6
|
+
table,
|
|
7
|
+
globalFilters,
|
|
8
|
+
orderSmallest,
|
|
9
|
+
orderLargest,
|
|
10
|
+
setGlobalFilters,
|
|
11
|
+
setOrderLargest,
|
|
12
|
+
setOrderSmallest
|
|
13
|
+
}) => {
|
|
14
|
+
const [openTools, setOpenTools] = useState(false)
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<S.Header>
|
|
18
|
+
<S.Results>
|
|
19
|
+
<S.TextResult>{ table.getRowModel().rows.length } resultados encontrados.</S.TextResult>
|
|
20
|
+
{ globalFilters.length || !!orderSmallest || !!orderLargest ? <S.TextClearSearch onClick={() => {
|
|
21
|
+
table.resetColumnFilters(true)
|
|
22
|
+
setGlobalFilters([])
|
|
23
|
+
setOrderLargest(false)
|
|
24
|
+
setOrderSmallest(false)
|
|
25
|
+
table.resetSorting(true)
|
|
26
|
+
}}>Limpar busca</S.TextClearSearch> : null }
|
|
27
|
+
</S.Results>
|
|
28
|
+
<S.Tools>
|
|
29
|
+
<S.IconTools onClick={() => setOpenTools(!openTools)}>
|
|
30
|
+
<SettingsIcon sx={{ fontSize: 24 }} color='primary' />
|
|
31
|
+
</S.IconTools>
|
|
32
|
+
{
|
|
33
|
+
openTools
|
|
34
|
+
? <S.ListTools>
|
|
35
|
+
{ table.getAllLeafColumns().map((column: any) => {
|
|
36
|
+
return (
|
|
37
|
+
<div key={column.id} className="px-1">
|
|
38
|
+
<label>
|
|
39
|
+
<input
|
|
40
|
+
{...{
|
|
41
|
+
type: 'checkbox',
|
|
42
|
+
checked: column.getIsVisible(),
|
|
43
|
+
onChange: column.getToggleVisibilityHandler(),
|
|
44
|
+
}}
|
|
45
|
+
/>{' '}
|
|
46
|
+
{column.id}
|
|
47
|
+
</label>
|
|
48
|
+
</div>
|
|
49
|
+
)
|
|
50
|
+
})}
|
|
51
|
+
</S.ListTools>
|
|
52
|
+
: null
|
|
53
|
+
}
|
|
54
|
+
</S.Tools>
|
|
55
|
+
</S.Header>
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export default Header
|