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.
Files changed (239) hide show
  1. package/dist/esm/components/Box/index.d.ts +4 -0
  2. package/dist/esm/components/Box/index.js +8 -0
  3. package/dist/esm/components/Box/index.js.map +1 -0
  4. package/dist/esm/components/Box/interfaces.d.ts +5 -0
  5. package/dist/esm/components/Box/interfaces.js +2 -0
  6. package/dist/esm/components/Box/interfaces.js.map +1 -0
  7. package/dist/esm/components/Box/styles.d.ts +3 -0
  8. package/dist/esm/components/Box/styles.js +17 -0
  9. package/dist/esm/components/Box/styles.js.map +1 -0
  10. package/dist/esm/components/Breadcrumb/index.d.ts +4 -0
  11. package/dist/esm/components/Breadcrumb/index.js +18 -0
  12. package/dist/esm/components/Breadcrumb/index.js.map +1 -0
  13. package/dist/esm/components/Breadcrumb/interface.d.ts +8 -0
  14. package/dist/esm/components/Breadcrumb/interface.js +2 -0
  15. package/dist/esm/components/Breadcrumb/interface.js.map +1 -0
  16. package/dist/esm/components/Breadcrumb/styles.d.ts +5 -0
  17. package/dist/esm/components/Breadcrumb/styles.js +8 -0
  18. package/dist/esm/components/Breadcrumb/styles.js.map +1 -0
  19. package/dist/esm/components/ChatMessageBalloon/ChatMessageBalloon.style.d.ts +1 -1
  20. package/dist/esm/components/DataGrid/base/dropdown.d.ts +4 -4
  21. package/dist/esm/components/DataGrid/base/dropdown.js +125 -125
  22. package/dist/esm/components/DataGrid/base/dropdown.js.map +1 -1
  23. package/dist/esm/components/DataGrid/base/number-filter.d.ts +4 -4
  24. package/dist/esm/components/DataGrid/base/number-filter.js +29 -29
  25. package/dist/esm/components/DataGrid/base/sorting.d.ts +5 -5
  26. package/dist/esm/components/DataGrid/base/sorting.js +14 -14
  27. package/dist/esm/components/DataGrid/icons.d.ts +5 -4
  28. package/dist/esm/components/DataGrid/icons.js +19 -14
  29. package/dist/esm/components/DataGrid/icons.js.map +1 -1
  30. package/dist/esm/components/DataGrid/index.d.ts +3 -5
  31. package/dist/esm/components/DataGrid/index.js +213 -145
  32. package/dist/esm/components/DataGrid/index.js.map +1 -1
  33. package/dist/esm/components/DataGrid/shared.d.ts +20 -20
  34. package/dist/esm/components/DataGrid/shared.js +118 -127
  35. package/dist/esm/components/DataGrid/shared.js.map +1 -1
  36. package/dist/esm/components/DataGrid/styled.d.ts +11 -11
  37. package/dist/esm/components/DataGrid/styled.js +85 -85
  38. package/dist/esm/components/DateInput/index.d.ts +4 -0
  39. package/dist/esm/components/DateInput/index.js +15 -0
  40. package/dist/esm/components/DateInput/index.js.map +1 -0
  41. package/dist/esm/components/DateInput/interface.d.ts +12 -0
  42. package/dist/esm/components/DateInput/interface.js +2 -0
  43. package/dist/esm/components/DateInput/interface.js.map +1 -0
  44. package/dist/esm/components/DateInput/styles.d.ts +5 -0
  45. package/dist/esm/components/DateInput/styles.js +7 -0
  46. package/dist/esm/components/DateInput/styles.js.map +1 -0
  47. package/dist/esm/components/Icons.d.ts +1 -1
  48. package/dist/esm/components/Icons.js.map +1 -1
  49. package/dist/esm/components/MultiSelectInput/components/MultiValue/index.d.ts +3 -0
  50. package/dist/esm/components/MultiSelectInput/components/MultiValue/index.js +30 -0
  51. package/dist/esm/components/MultiSelectInput/components/MultiValue/index.js.map +1 -0
  52. package/dist/esm/components/MultiSelectInput/components/Option/index.d.ts +3 -0
  53. package/dist/esm/components/MultiSelectInput/components/Option/index.js +36 -0
  54. package/dist/esm/components/MultiSelectInput/components/Option/index.js.map +1 -0
  55. package/dist/esm/components/MultiSelectInput/components/Option/styles.d.ts +2 -0
  56. package/dist/esm/components/MultiSelectInput/components/Option/styles.js +5 -0
  57. package/dist/esm/components/MultiSelectInput/components/Option/styles.js.map +1 -0
  58. package/dist/esm/components/MultiSelectInput/index.d.ts +4 -0
  59. package/dist/esm/components/MultiSelectInput/index.js +33 -0
  60. package/dist/esm/components/MultiSelectInput/index.js.map +1 -0
  61. package/dist/esm/components/MultiSelectInput/interfaces.d.ts +15 -0
  62. package/dist/esm/components/MultiSelectInput/interfaces.js +2 -0
  63. package/dist/esm/components/MultiSelectInput/interfaces.js.map +1 -0
  64. package/dist/esm/components/MultiSelectInput/styles.d.ts +3 -0
  65. package/dist/esm/components/MultiSelectInput/styles.js +6 -0
  66. package/dist/esm/components/MultiSelectInput/styles.js.map +1 -0
  67. package/dist/esm/components/SelectInput/components/Option/index.d.ts +3 -0
  68. package/dist/esm/components/SelectInput/components/Option/index.js +34 -0
  69. package/dist/esm/components/SelectInput/components/Option/index.js.map +1 -0
  70. package/dist/esm/components/SelectInput/components/Option/styles.d.ts +2 -0
  71. package/dist/esm/components/SelectInput/components/Option/styles.js +5 -0
  72. package/dist/esm/components/SelectInput/components/Option/styles.js.map +1 -0
  73. package/dist/esm/components/SelectInput/index.d.ts +4 -0
  74. package/dist/esm/components/SelectInput/index.js +19 -0
  75. package/dist/esm/components/SelectInput/index.js.map +1 -0
  76. package/dist/esm/components/SelectInput/interfaces.d.ts +15 -0
  77. package/dist/esm/components/SelectInput/interfaces.js +2 -0
  78. package/dist/esm/components/SelectInput/interfaces.js.map +1 -0
  79. package/dist/esm/components/SelectInput/styles.d.ts +3 -0
  80. package/dist/esm/components/SelectInput/styles.js +6 -0
  81. package/dist/esm/components/SelectInput/styles.js.map +1 -0
  82. package/dist/esm/components/Table/components/header/index.d.ts +3 -0
  83. package/dist/esm/components/Table/components/header/index.js +35 -0
  84. package/dist/esm/components/Table/components/header/index.js.map +1 -0
  85. package/dist/esm/components/Table/components/header/styles.d.ts +8 -0
  86. package/dist/esm/components/Table/components/header/styles.js +11 -0
  87. package/dist/esm/components/Table/components/header/styles.js.map +1 -0
  88. package/dist/esm/components/Table/components/index.d.ts +4 -0
  89. package/dist/esm/components/Table/components/index.js +5 -0
  90. package/dist/esm/components/Table/components/index.js.map +1 -0
  91. package/dist/esm/components/Table/components/pagination/index.d.ts +3 -0
  92. package/dist/esm/components/Table/components/pagination/index.js +16 -0
  93. package/dist/esm/components/Table/components/pagination/index.js.map +1 -0
  94. package/dist/esm/components/Table/components/pagination/styles.d.ts +2 -0
  95. package/dist/esm/components/Table/components/pagination/styles.js +5 -0
  96. package/dist/esm/components/Table/components/pagination/styles.js.map +1 -0
  97. package/dist/esm/components/Table/components/tbody/index.d.ts +3 -0
  98. package/dist/esm/components/Table/components/tbody/index.js +8 -0
  99. package/dist/esm/components/Table/components/tbody/index.js.map +1 -0
  100. package/dist/esm/components/Table/components/tbody/styles.d.ts +0 -0
  101. package/dist/esm/components/Table/components/tbody/styles.js +2 -0
  102. package/dist/esm/components/Table/components/tbody/styles.js.map +1 -0
  103. package/dist/esm/components/Table/index-old.d.ts +4 -0
  104. package/dist/esm/components/Table/index-old.js +249 -0
  105. package/dist/esm/components/Table/index-old.js.map +1 -0
  106. package/dist/esm/components/Table/index.d.ts +4 -0
  107. package/dist/esm/components/Table/index.js +215 -0
  108. package/dist/esm/components/Table/index.js.map +1 -0
  109. package/dist/esm/components/Table/interface.d.ts +12 -0
  110. package/dist/esm/components/Table/interface.js +2 -0
  111. package/dist/esm/components/Table/interface.js.map +1 -0
  112. package/dist/esm/components/Table/styles.d.ts +10 -0
  113. package/dist/esm/components/Table/styles.js +13 -0
  114. package/dist/esm/components/Table/styles.js.map +1 -0
  115. package/dist/esm/components/Table-old/index.d.ts +3 -0
  116. package/dist/esm/components/Table-old/index.js +71 -0
  117. package/dist/esm/components/Table-old/index.js.map +1 -0
  118. package/dist/esm/components/Table-old/styles.d.ts +3004 -0
  119. package/dist/esm/components/Table-old/styles.js +15 -0
  120. package/dist/esm/components/Table-old/styles.js.map +1 -0
  121. package/dist/esm/components/TextInput/index.d.ts +4 -0
  122. package/dist/esm/components/TextInput/index.js +16 -0
  123. package/dist/esm/components/TextInput/index.js.map +1 -0
  124. package/dist/esm/components/TextInput/interface.d.ts +10 -0
  125. package/dist/esm/components/TextInput/interface.js +2 -0
  126. package/dist/esm/components/TextInput/interface.js.map +1 -0
  127. package/dist/esm/components/TextInput/styles.d.ts +4 -0
  128. package/dist/esm/components/TextInput/styles.js +7 -0
  129. package/dist/esm/components/TextInput/styles.js.map +1 -0
  130. package/dist/esm/components/Typography/Text/index.d.ts +4 -0
  131. package/dist/esm/components/Typography/Text/index.js +8 -0
  132. package/dist/esm/components/Typography/Text/index.js.map +1 -0
  133. package/dist/esm/components/Typography/Text/interfaces.d.ts +7 -0
  134. package/dist/esm/components/Typography/Text/interfaces.js +2 -0
  135. package/dist/esm/components/Typography/Text/interfaces.js.map +1 -0
  136. package/dist/esm/components/Typography/Text/styles.d.ts +3 -0
  137. package/dist/esm/components/Typography/Text/styles.js +35 -0
  138. package/dist/esm/components/Typography/Text/styles.js.map +1 -0
  139. package/dist/esm/components/Typography/Title/index.d.ts +4 -0
  140. package/dist/esm/components/Typography/Title/index.js +8 -0
  141. package/dist/esm/components/Typography/Title/index.js.map +1 -0
  142. package/dist/esm/components/Typography/Title/interfaces.d.ts +8 -0
  143. package/dist/esm/components/Typography/Title/interfaces.js +2 -0
  144. package/dist/esm/components/Typography/Title/interfaces.js.map +1 -0
  145. package/dist/esm/components/Typography/Title/styles.d.ts +3 -0
  146. package/dist/esm/components/Typography/Title/styles.js +35 -0
  147. package/dist/esm/components/Typography/Title/styles.js.map +1 -0
  148. package/dist/esm/components/Typography/index.d.ts +3 -0
  149. package/dist/esm/components/Typography/index.js +4 -0
  150. package/dist/esm/components/Typography/index.js.map +1 -0
  151. package/dist/esm/components/index.d.ts +1 -1
  152. package/dist/esm/components/index.js +1 -1
  153. package/dist/esm/components/index.js.map +1 -1
  154. package/dist/esm/helpers/alignments.js.map +1 -1
  155. package/dist/esm/helpers/borders.js.map +1 -1
  156. package/dist/esm/helpers/colors.js.map +1 -1
  157. package/dist/esm/helpers/radios.js.map +1 -1
  158. package/dist/esm/helpers/sizes.js.map +1 -1
  159. package/dist/esm/index.d.ts +10 -2
  160. package/dist/esm/index.js +10 -2
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/interfaces/DataGrid.d.ts +42 -42
  163. package/dist/esm/interfaces/DataGrid.js +1 -1
  164. package/dist/esm/interfaces/index.d.ts +0 -1
  165. package/dist/esm/interfaces/index.js +0 -1
  166. package/dist/esm/interfaces/index.js.map +1 -1
  167. package/package.json +6 -4
  168. package/src/components/Box/index.tsx +13 -0
  169. package/src/components/Box/interfaces.ts +4 -0
  170. package/src/components/Box/styles.tsx +23 -0
  171. package/src/components/Breadcrumb/index.tsx +27 -0
  172. package/src/components/Breadcrumb/interface.ts +9 -0
  173. package/src/components/Breadcrumb/styles.tsx +33 -0
  174. package/src/components/DateInput/index.tsx +35 -0
  175. package/src/components/DateInput/interface.ts +14 -0
  176. package/src/components/DateInput/styles.tsx +28 -0
  177. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -0
  178. package/src/components/MultiSelectInput/components/Option/index.tsx +63 -0
  179. package/src/components/MultiSelectInput/components/Option/styles.tsx +9 -0
  180. package/src/components/MultiSelectInput/index.tsx +61 -0
  181. package/src/components/MultiSelectInput/interfaces.ts +16 -0
  182. package/src/components/MultiSelectInput/styles.tsx +44 -0
  183. package/src/components/SelectInput/components/Option/index.tsx +62 -0
  184. package/src/components/SelectInput/components/Option/styles.tsx +9 -0
  185. package/src/components/SelectInput/index.tsx +46 -0
  186. package/src/components/SelectInput/interfaces.ts +16 -0
  187. package/src/components/SelectInput/styles.tsx +32 -0
  188. package/src/components/Table/components/header/index.tsx +59 -0
  189. package/src/components/Table/components/header/styles.tsx +55 -0
  190. package/src/components/Table/components/index.tsx +9 -0
  191. package/src/components/Table/components/pagination/index.tsx +42 -0
  192. package/src/components/Table/components/pagination/styles.tsx +19 -0
  193. package/src/components/Table/components/tbody/index.tsx +20 -0
  194. package/src/components/Table/components/tbody/styles.tsx +0 -0
  195. package/src/components/Table/index.tsx +295 -0
  196. package/src/components/Table/interface.ts +14 -0
  197. package/src/components/Table/styles.tsx +113 -0
  198. package/src/components/TextInput/index.tsx +38 -0
  199. package/src/components/TextInput/interface.ts +10 -0
  200. package/src/components/TextInput/styles.tsx +24 -0
  201. package/src/components/Typography/Text/index.tsx +21 -0
  202. package/src/components/Typography/Text/interfaces.ts +6 -0
  203. package/src/components/Typography/Text/styles.tsx +41 -0
  204. package/src/components/Typography/Title/index.tsx +23 -0
  205. package/src/components/Typography/Title/interfaces.ts +7 -0
  206. package/src/components/Typography/Title/styles.tsx +41 -0
  207. package/src/components/Typography/index.tsx +7 -0
  208. package/src/components/index.ts +1 -1
  209. package/src/index.css +0 -2
  210. package/src/index.ts +19 -2
  211. package/src/interfaces/index.ts +0 -1
  212. package/src/sample-data.json +2 -3
  213. package/src/stories/Box.stories.tsx +36 -0
  214. package/src/stories/Breadcrumb.stories.tsx +45 -0
  215. package/src/stories/DateInput.stories.tsx +52 -0
  216. package/src/stories/MultiSelectInput.stories.tsx +91 -0
  217. package/src/stories/SelectInput.stories.tsx +79 -0
  218. package/src/stories/Table.stories.tsx +222 -0
  219. package/src/stories/Text.stories.tsx +38 -0
  220. package/src/stories/TextInput.stories.tsx +53 -0
  221. package/src/stories/Title.stories.tsx +44 -0
  222. package/src/styles/custom.css +1 -0
  223. package/src/styles/{globals.css → globals.scss} +1 -4
  224. package/tsconfig.json +1 -1
  225. package/vite.config.ts +15 -0
  226. package/.husky/commit-msg +0 -4
  227. package/src/components/DataGrid/allData.json +0 -2918
  228. package/src/components/DataGrid/base/dropdown.tsx +0 -212
  229. package/src/components/DataGrid/base/number-filter.tsx +0 -43
  230. package/src/components/DataGrid/base/sorting.tsx +0 -29
  231. package/src/components/DataGrid/icons.tsx +0 -53
  232. package/src/components/DataGrid/index.tsx +0 -259
  233. package/src/components/DataGrid/shared.ts +0 -154
  234. package/src/components/DataGrid/styled.ts +0 -107
  235. package/src/components/DataGrid/styles/dropdown.module.css +0 -86
  236. package/src/components/DataGrid/styles/number-filter.module.css +0 -16
  237. package/src/components/DataGrid/styles/styles.module.css +0 -107
  238. package/src/interfaces/DataGrid.ts +0 -47
  239. package/src/stories/DataGrid.stories.tsx +0 -31
@@ -0,0 +1,4 @@
1
+ export interface BoxProps {
2
+ children: JSX.Element[] | JSX.Element
3
+ size: string
4
+ }
@@ -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,9 @@
1
+ export interface Link {
2
+ name: string
3
+ route: string
4
+ }
5
+
6
+ export interface BreadcrumbProps {
7
+ links: Link[]
8
+ onChange: Function
9
+ }
@@ -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,9 @@
1
+ import styled from "styled-components";
2
+
3
+ export const Container = styled.div`
4
+ font-size: 16px;
5
+ color: #666666;
6
+ &:nth-child(even) {
7
+ background: #F8F9FA;
8
+ }
9
+ `
@@ -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,9 @@
1
+ import styled from "styled-components";
2
+
3
+ export const Container = styled.div`
4
+ font-size: 16px;
5
+ color: #666666;
6
+ &:nth-child(even) {
7
+ background: #F8F9FA;
8
+ }
9
+ `
@@ -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