kelt-ui-kit-react 2.0.2 → 2.0.3

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 (127) hide show
  1. package/README.md +0 -26
  2. package/dist/_core/type/generiqueType.d.ts +4 -0
  3. package/dist/badge/Badge.d.ts +3 -1
  4. package/dist/button/Button.d.ts +1 -1
  5. package/dist/button/button.interface.d.ts +1 -2
  6. package/dist/dataTable/DataTable.d.ts +17 -14
  7. package/dist/dataTable/dataTable.interface.d.ts +24 -19
  8. package/dist/dataTable/dataTableActions/DataTableAction.d.ts +3 -5
  9. package/dist/dataTable/dataTableColumn/DataTableColumn.d.ts +13 -7
  10. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.d.ts +10 -0
  11. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.d.ts +9 -0
  12. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.d.ts +9 -0
  13. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.d.ts +13 -0
  14. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.d.ts +9 -0
  15. package/dist/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.d.ts +11 -0
  16. package/dist/dataTable/dataTableFilters/DataTableFilters.d.ts +7 -0
  17. package/dist/dataTable/dataTableLoading/DataTableLoading.d.ts +1 -3
  18. package/dist/dataTable/dataTableRow/DataTableRow.d.ts +5 -6
  19. package/dist/dataTable/dataTableRow/dataTableRowOverlay/DataTableRowOverlay.d.ts +12 -0
  20. package/dist/dataTable/dataTableRow/dataTableRowValue/DataTableRowValue.d.ts +11 -0
  21. package/dist/expands/expand/expand.d.ts +1 -1
  22. package/dist/form/Form.d.ts +2 -4
  23. package/dist/form/form.enum.d.ts +2 -3
  24. package/dist/form/form.interface.d.ts +2 -19
  25. package/dist/form/input/Input.d.ts +3 -0
  26. package/dist/form/inputNumber/InputNumber.d.ts +0 -2
  27. package/dist/grid/col/Col.d.ts +6 -3
  28. package/dist/grid/col/colStyled/ColStyled.d.ts +5 -7
  29. package/dist/grid/grid.interface.d.ts +5 -9
  30. package/dist/header/Header.d.ts +1 -1
  31. package/dist/header/header.interface.d.ts +1 -2
  32. package/dist/icon/Icon.d.ts +1 -1
  33. package/dist/icon/icon.interface.d.ts +1 -0
  34. package/dist/index.d.ts +1 -5
  35. package/dist/index.js +3606 -3543
  36. package/dist/menus/menu/Menu.d.ts +0 -1
  37. package/dist/overlayPanel/OverlayPanel.d.ts +4 -2
  38. package/dist/overlayPanel/overlayPanelStyled/OverlayPanelStyled.d.ts +2 -0
  39. package/dist/select/Select.d.ts +6 -2
  40. package/dist/select/selectOption.interface.d.ts +1 -0
  41. package/dist/style.css +1 -1
  42. package/dist/tabs/Tabs.d.ts +2 -1
  43. package/dist/toaster/store/useToasterStore.d.ts +0 -1
  44. package/index.html +2 -1
  45. package/package/package.json +56 -0
  46. package/package/src/sidebar/Sidebar.tsx +208 -0
  47. package/package/src/sidebar/sidebar.css +104 -0
  48. package/package.json +1 -1
  49. package/src/App.menu.tsx +0 -8
  50. package/src/_core/type/generiqueType.tsx +4 -0
  51. package/src/badge/Badge.tsx +9 -1
  52. package/src/badge/badge.css +4 -0
  53. package/src/button/Button.tsx +1 -3
  54. package/src/button/button.css +2 -2
  55. package/src/button/button.interface.tsx +1 -2
  56. package/src/card/card.css +25 -5
  57. package/src/card/cardAction/CardAction.tsx +4 -4
  58. package/src/damier/Damier.tsx +7 -16
  59. package/src/damier/damier.css +4 -11
  60. package/src/dataTable/DataTable.tsx +685 -542
  61. package/src/dataTable/DataTable.view.tsx +48 -24
  62. package/src/dataTable/dataTable.css +134 -159
  63. package/src/dataTable/dataTable.interface.ts +25 -19
  64. package/src/dataTable/dataTableActions/DataTableAction.tsx +14 -25
  65. package/src/dataTable/dataTableColumn/DataTableColumn.tsx +64 -14
  66. package/src/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.tsx +36 -0
  67. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilter.css +0 -0
  68. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.tsx +39 -0
  69. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.tsx +80 -0
  70. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.tsx +89 -0
  71. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.tsx +37 -0
  72. package/src/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.tsx +42 -0
  73. package/src/dataTable/dataTableFilters/DataTableFilters.tsx +91 -0
  74. package/src/dataTable/dataTableFilters/dataTableFilters.css +16 -0
  75. package/src/dataTable/dataTableLoading/DataTableLoading.tsx +4 -15
  76. package/src/dataTable/dataTableRow/DataTableRow.tsx +64 -180
  77. package/src/dataTable/dataTableRow/dataTableRowOverlay/DataTableRowOverlay.tsx +80 -0
  78. package/src/dataTable/dataTableRow/dataTableRowValue/DataTableRowValue.tsx +123 -0
  79. package/src/expands/Expands.tsx +2 -16
  80. package/src/expands/expand/expand.tsx +5 -122
  81. package/src/expands/expands.css +3 -8
  82. package/src/form/Form.tsx +93 -258
  83. package/src/form/Form.view.tsx +1 -9
  84. package/src/form/form.css +1 -51
  85. package/src/form/form.enum.ts +1 -2
  86. package/src/form/form.interface.tsx +2 -28
  87. package/src/form/input/Input.tsx +61 -7
  88. package/src/form/input/input.css +23 -1
  89. package/src/form/inputNumber/InputNumber.tsx +6 -11
  90. package/src/form/inputPrice/InputPrice.tsx +2 -4
  91. package/src/grid/col/Col.tsx +7 -5
  92. package/src/grid/col/colStyled/ColStyled.tsx +7 -21
  93. package/src/grid/grid.interface.tsx +5 -11
  94. package/src/grid/row/row.css +2 -2
  95. package/src/header/Header.tsx +2 -4
  96. package/src/header/header.css +0 -17
  97. package/src/header/header.interface.tsx +1 -2
  98. package/src/icon/Icon.tsx +6 -2
  99. package/src/icon/icon.interface.tsx +1 -0
  100. package/src/index.css +12 -58
  101. package/src/index.ts +2 -12
  102. package/src/menus/Menus.tsx +0 -1
  103. package/src/menus/menu/Menu.tsx +1 -2
  104. package/src/overlayPanel/OverlayPanel.tsx +71 -18
  105. package/src/overlayPanel/overlay.context.tsx +6 -4
  106. package/src/overlayPanel/overlayPanel.css +10 -1
  107. package/src/overlayPanel/overlayPanelStyled/OverlayPanelStyled.tsx +7 -2
  108. package/src/select/Select.tsx +178 -41
  109. package/src/select/select.css +94 -13
  110. package/src/select/selectOption.interface.ts +1 -0
  111. package/src/sidebar/Sidebar.tsx +5 -107
  112. package/src/sidebar/sidebar.css +1 -18
  113. package/src/tabs/Tabs.tsx +20 -1
  114. package/src/tabs/tabs.css +3 -9
  115. package/src/toaster/Toaster.tsx +2 -7
  116. package/src/toaster/Toaster.view.tsx +0 -1
  117. package/src/toaster/store/useToasterStore.tsx +0 -2
  118. package/src/toaster/toaster.css +2 -7
  119. package/dist/addressSearch/AddressSearch.d.ts +0 -20
  120. package/dist/addressSearch/AddressSearch.view.d.ts +0 -1
  121. package/dist/geocoding/GeocodingService.d.ts +0 -13
  122. package/dist/geocoding/geocoding.interface.d.ts +0 -20
  123. package/src/addressSearch/AddressSearch.tsx +0 -246
  124. package/src/addressSearch/AddressSearch.view.tsx +0 -52
  125. package/src/addressSearch/addressSearch.css +0 -133
  126. package/src/geocoding/GeocodingService.ts +0 -89
  127. package/src/geocoding/geocoding.interface.ts +0 -25
@@ -1,4 +1,4 @@
1
- import { forwardRef, useState } from "react";
1
+ import { forwardRef, useRef, useState } from "react";
2
2
  import { Icon } from "../../icon/Icon";
3
3
  import { TypeInputEnum } from "../form.enum";
4
4
  import "./input.css";
@@ -15,12 +15,15 @@ export interface InputProps {
15
15
  disabled?: boolean;
16
16
  autoFocus?: boolean;
17
17
  required?: boolean;
18
+ disabledDebounce?: boolean;
18
19
  minLength?: number;
19
20
  maxLength?: number;
21
+ width?: string;
20
22
  autoComplete?: string;
21
23
  step?: string;
22
24
  tabIndex?: number;
23
25
  checked?: boolean;
26
+ showClearButton?: boolean;
24
27
  handleKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
25
28
  onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
26
29
  onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
@@ -34,11 +37,13 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
34
37
  name,
35
38
  type = TypeInputEnum.TEXT,
36
39
  value,
40
+ width,
37
41
  onInvalid,
38
42
  placeholder,
39
43
  className,
40
44
  inputMode,
41
45
  minLength,
46
+ disabledDebounce = false,
42
47
  maxLength,
43
48
  autoFocus = false,
44
49
  disabled = false,
@@ -47,18 +52,61 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
47
52
  tabIndex = 0,
48
53
  step,
49
54
  checked,
55
+ showClearButton = false,
50
56
  onChange,
51
57
  onBlur,
52
58
  onClick,
53
59
  handleKeyDown,
54
60
  },
55
- ref
61
+ ref,
56
62
  ) => {
57
63
  // Si le type est password, on utilise l'input de type password
58
64
  const [showPassword, setShowPassword] = useState(false);
65
+ const [localValue, setLocalValue] = useState(value ?? "");
66
+ const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
67
+
68
+ const triggerOnChange = (nextValue: string) => {
69
+ if (!onChange) return;
70
+
71
+ const syntheticEvent = {
72
+ target: { value: nextValue, name, id },
73
+ currentTarget: { value: nextValue, name, id },
74
+ } as unknown as React.ChangeEvent<HTMLInputElement>;
75
+
76
+ onChange(syntheticEvent);
77
+ };
78
+
79
+ const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
80
+ const value = e.target.value; // 👈 capturer avant le setTimeout
81
+ setLocalValue(value);
82
+ if (!onChange) return;
83
+ if (disabledDebounce) {
84
+ onChange(e);
85
+ return;
86
+ }
87
+ if (debounceRef.current) clearTimeout(debounceRef.current);
88
+ debounceRef.current = setTimeout(() => {
89
+ onChange({ ...e, target: { ...e.target, value } }); // 👈 passer la valeur capturée
90
+ }, 300);
91
+ };
92
+
93
+ const handleClear = (e: React.MouseEvent<HTMLDivElement>) => {
94
+ e.stopPropagation();
95
+ if (debounceRef.current) clearTimeout(debounceRef.current);
96
+ setLocalValue("");
97
+ triggerOnChange("");
98
+ };
99
+
100
+ const hasValue = String(localValue ?? "").length > 0;
101
+ const hasClearButtonSlot = showClearButton && type === TypeInputEnum.TEXT;
102
+ const canShowClearButton =
103
+ showClearButton && hasValue && !disabled && type === TypeInputEnum.TEXT;
59
104
 
60
105
  return (
61
- <div className={`input-container ${`input-container-${type}`} `}>
106
+ <div
107
+ className={`input-container ${`input-container-${type}`} `}
108
+ style={{ width }}
109
+ >
62
110
  <input name={`hide-${name}`} type="text" style={{ display: "none" }} />
63
111
 
64
112
  <input
@@ -68,7 +116,7 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
68
116
  inputMode={inputMode ?? (type === "number" ? "numeric" : "text")}
69
117
  type={showPassword ? TypeInputEnum.TEXT : type}
70
118
  spellCheck="false"
71
- value={value}
119
+ value={localValue}
72
120
  placeholder={placeholder}
73
121
  disabled={disabled}
74
122
  required={required}
@@ -78,7 +126,7 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
78
126
  autoFocus={autoFocus}
79
127
  minLength={minLength}
80
128
  maxLength={maxLength}
81
- onChange={onChange}
129
+ onChange={handleChange}
82
130
  checked={checked}
83
131
  onKeyDown={handleKeyDown}
84
132
  onBlur={onBlur}
@@ -86,10 +134,16 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
86
134
  e.stopPropagation();
87
135
  onClick && onClick(e);
88
136
  }}
89
- className={`input-field ${className ?? ""}`}
137
+ className={`input-field ${hasClearButtonSlot ? "with-clear-button" : ""} ${className ?? ""}`}
90
138
  onInvalid={onInvalid}
91
139
  />
92
140
 
141
+ {canShowClearButton && (
142
+ <div onClick={handleClear} className="input-clear-icon" role="button">
143
+ <Icon classIcon="bi-x-circle" />
144
+ </div>
145
+ )}
146
+
93
147
  {type === TypeInputEnum.PASSWORD && (
94
148
  <div
95
149
  onClick={() => setShowPassword(!showPassword)}
@@ -100,7 +154,7 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
100
154
  )}
101
155
  </div>
102
156
  );
103
- }
157
+ },
104
158
  );
105
159
 
106
160
  Input.displayName = "Input";
@@ -2,15 +2,18 @@
2
2
  position: relative;
3
3
  min-width: 250px;
4
4
  width: 100%;
5
+
5
6
  &.input-container-radio,
6
7
  &.input-container-checkbox {
7
8
  min-width: 10px;
8
9
  width: 10px;
10
+
9
11
  input {
10
12
  width: 10px;
11
13
  min-width: 10px;
12
14
  }
13
15
  }
16
+
14
17
  .input-password-icon {
15
18
  position: absolute;
16
19
  right: 10px;
@@ -19,8 +22,27 @@
19
22
  display: flex;
20
23
  align-items: center;
21
24
  }
25
+
26
+ .input-clear-icon {
27
+ position: absolute;
28
+ right: 8px;
29
+ width: 24px;
30
+ height: 100%;
31
+ top: 0;
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ cursor: pointer;
36
+ z-index: 2;
37
+ }
38
+
39
+ .with-clear-button {
40
+ padding-right: 40px;
41
+ }
42
+
22
43
  input {
23
44
  width: 100%;
24
45
  font-size: 0.8rem;
46
+ box-sizing: border-box;
25
47
  }
26
- }
48
+ }
@@ -8,10 +8,8 @@ export type InputNumberProps = {
8
8
  value?: string; // ⚠️ string pour gérer la saisie manuelle
9
9
  placeholder?: string;
10
10
  className?: string;
11
- pattern?: string; // regex pour validation (ex: "^-?\\d*[.,]?\\d*$" pour nombre décimal)
12
11
  disabled?: boolean;
13
12
  required?: boolean;
14
- inputMode?: "numeric" | "decimal";
15
13
  autoFocus?: boolean;
16
14
  maxLength?: number;
17
15
  autoComplete?: string;
@@ -19,7 +17,7 @@ export type InputNumberProps = {
19
17
  onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
20
18
  onChange?: (
21
19
  e: React.ChangeEvent<HTMLInputElement>,
22
- valueFormat?: string,
20
+ valueFormat?: string
23
21
  ) => void;
24
22
  onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
25
23
  onClick?: (e: React.MouseEvent<HTMLInputElement>) => void;
@@ -40,15 +38,13 @@ export const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(
40
38
  maxLength = 10,
41
39
  autoComplete = "off",
42
40
  tabIndex = 0,
43
- inputMode = "numeric",
44
- pattern,
45
41
  onChange,
46
42
  onBlur,
47
43
  onClick,
48
44
  onKeyDown,
49
45
  onFocus,
50
46
  },
51
- ref,
47
+ ref
52
48
  ) => {
53
49
  const handleChange = useCallback(
54
50
  (e: React.ChangeEvent<HTMLInputElement>) => {
@@ -66,7 +62,7 @@ export const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(
66
62
 
67
63
  onChange?.(e, newValue);
68
64
  },
69
- [onChange, maxLength],
65
+ [onChange, maxLength]
70
66
  );
71
67
 
72
68
  const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
@@ -76,7 +72,7 @@ export const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(
76
72
  // ✅ Autoriser chiffres, contrôle, ., , et -
77
73
  const allowed =
78
74
  /[0-9]|Backspace|Delete|ArrowLeft|ArrowRight|Tab|Enter|Home|End/.test(
79
- e.key,
75
+ e.key
80
76
  ) ||
81
77
  e.key === "." ||
82
78
  e.key === "," ||
@@ -109,9 +105,8 @@ export const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(
109
105
  required={required}
110
106
  autoFocus={autoFocus}
111
107
  autoComplete={autoComplete}
112
- pattern={pattern}
113
108
  tabIndex={tabIndex}
114
- inputMode={inputMode} // mobile keyboard adaptatif
109
+ inputMode="numeric" // mobile keyboard adaptatif
115
110
  spellCheck="false"
116
111
  className={`input-field ${className ?? ""}`}
117
112
  onChange={handleChange}
@@ -126,7 +121,7 @@ export const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(
126
121
  />
127
122
  </div>
128
123
  );
129
- },
124
+ }
130
125
  );
131
126
 
132
127
  InputNumber.displayName = "InputNumber";
@@ -18,7 +18,7 @@ export const InputPrice = forwardRef<HTMLInputElement, InputPriceProps>(
18
18
  onChange,
19
19
  ...props
20
20
  },
21
- ref,
21
+ ref
22
22
  ) => {
23
23
  const handleBlur = useCallback(() => {
24
24
  if (onChange) {
@@ -31,12 +31,10 @@ export const InputPrice = forwardRef<HTMLInputElement, InputPriceProps>(
31
31
  <InputNumber
32
32
  {...props}
33
33
  ref={ref}
34
- pattern="[0-9]*[.,]?[0-9]*"
35
- inputMode="decimal" // mobile keyboard adaptatif
36
34
  value={value ?? ""}
37
35
  onChange={(e) => onChange?.(e.target.value)}
38
36
  onBlur={handleBlur} // Force le formatage à 2 décimales en sortie
39
37
  />
40
38
  );
41
- },
39
+ }
42
40
  );
@@ -1,12 +1,14 @@
1
1
  import { ColStyled } from "./colStyled/ColStyled";
2
- import { GridBreakpoints } from "../grid.interface";
3
-
4
- type ColProps = GridBreakpoints & {
2
+ type ColProps = {
3
+ xs?: number;
4
+ sm?: number;
5
+ md?: number;
6
+ lg?: number;
5
7
  children: React.ReactNode;
6
8
  };
7
- export const Col: React.FC<ColProps> = ({ xs, sm, md, lg, xl, children }) => {
9
+ export const Col: React.FC<ColProps> = ({ xs, sm, md, lg, children }) => {
8
10
  return (
9
- <ColStyled $xs={xs} $sm={sm} $md={md} $lg={lg} $xl={xl}>
11
+ <ColStyled $xs={xs} $sm={sm} $md={md} $lg={lg}>
10
12
  {children}
11
13
  </ColStyled>
12
14
  );
@@ -1,17 +1,12 @@
1
1
  import styled, { css } from "styled-components";
2
- import { GridColumnSpan } from "../../grid.interface";
3
-
4
2
  const getColWidth = (size = 12) => `${(size / 12) * 100}%`;
5
3
  type ColStyledProps = {
6
- $xs?: GridColumnSpan;
7
- $sm?: GridColumnSpan;
8
- $md?: GridColumnSpan;
9
- $lg?: GridColumnSpan;
10
- $xl?: GridColumnSpan;
4
+ $xs?: number;
5
+ $sm?: number;
6
+ $md?: number;
7
+ $lg?: number;
11
8
  };
12
9
  export const ColStyled = styled.div<ColStyledProps>`
13
- box-sizing: border-box;
14
- min-width: 0;
15
10
  padding: 0 15px;
16
11
  flex: 0 0 ${({ $xs }) => getColWidth($xs)};
17
12
  max-width: ${({ $xs }) => getColWidth($xs)};
@@ -20,7 +15,7 @@ export const ColStyled = styled.div<ColStyledProps>`
20
15
  ${({ $sm }) =>
21
16
  $sm &&
22
17
  css`
23
- @media (min-width: 576px) {
18
+ @container (min-width: 576px) {
24
19
  flex: 0 0 ${getColWidth($sm)};
25
20
  max-width: ${getColWidth($sm)};
26
21
  }
@@ -29,7 +24,7 @@ export const ColStyled = styled.div<ColStyledProps>`
29
24
  ${({ $md }) =>
30
25
  $md &&
31
26
  css`
32
- @media (min-width: 768px) {
27
+ @container (min-width: 768px) {
33
28
  flex: 0 0 ${getColWidth($md)};
34
29
  max-width: ${getColWidth($md)};
35
30
  }
@@ -38,18 +33,9 @@ export const ColStyled = styled.div<ColStyledProps>`
38
33
  ${({ $lg }) =>
39
34
  $lg &&
40
35
  css`
41
- @media (min-width: 992px) {
36
+ @container (min-width: 992px) {
42
37
  flex: 0 0 ${getColWidth($lg)};
43
38
  max-width: ${getColWidth($lg)};
44
39
  }
45
40
  `}
46
-
47
- ${({ $xl }) =>
48
- $xl &&
49
- css`
50
- @media (min-width: 1200px) {
51
- flex: 0 0 ${getColWidth($xl)};
52
- max-width: ${getColWidth($xl)};
53
- }
54
- `}
55
41
  `;
@@ -1,13 +1,7 @@
1
- export type GridColumnSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
2
-
3
- export interface GridBreakpoints {
4
- xs?: GridColumnSpan;
5
- sm?: GridColumnSpan;
6
- md?: GridColumnSpan;
7
- lg?: GridColumnSpan;
8
- xl?: GridColumnSpan;
9
- }
10
-
11
- export interface GridInterface extends GridBreakpoints {
1
+ export interface GridInterface {
2
+ sm?: number;
3
+ xs?: number;
4
+ md?: number;
5
+ lg?: number;
12
6
  children: React.ReactNode;
13
7
  }
@@ -1,7 +1,7 @@
1
1
  .grid-row {
2
2
  display: flex;
3
3
  flex-wrap: wrap;
4
-
4
+ margin: 0 -15px;
5
5
  &.scroll {
6
6
  overflow-x: auto;
7
7
  flex-wrap: nowrap;
@@ -15,4 +15,4 @@
15
15
  flex-wrap: wrap;
16
16
  }
17
17
  }
18
- }
18
+ }
@@ -11,7 +11,6 @@ export const Header = ({
11
11
  onClickMenu,
12
12
  userChildren,
13
13
  positionFixed,
14
- overlayClassName,
15
14
  onClickLogo,
16
15
  showBackNavigation,
17
16
  onClickBackNavigation,
@@ -24,7 +23,7 @@ export const Header = ({
24
23
  return (
25
24
  <div className={`header ${positionFixed ? "header--fixed" : ""}`}>
26
25
  <div className="flex-1 d-flex align-items-center">
27
- <span className="header-menu-btn" onClick={onClickMenu}>
26
+ <span onClick={onClickMenu}>
28
27
  <Icon size={IconSizeEnum.MEDIUM} classIcon="bi-list"></Icon>
29
28
  </span>
30
29
  {showBackNavigation && (
@@ -40,7 +39,7 @@ export const Header = ({
40
39
  className={`header-logo ${onClickLogo && "cursor-pointer"} `}
41
40
  onClick={onClickLogo}
42
41
  >
43
- {logo && logo}
42
+ {logo && <img src={logo} alt="logo" />}
44
43
  </span>
45
44
  </div>
46
45
  <div className="d-flex align-items-center">
@@ -50,7 +49,6 @@ export const Header = ({
50
49
  </div>
51
50
  {openOverlay && refButton.current && (
52
51
  <OverlayPanel
53
- className={overlayClassName}
54
52
  position="bottomRight"
55
53
  show={openOverlay}
56
54
  closeOverlay={setOpenOverlay}
@@ -23,21 +23,4 @@
23
23
  .bi {
24
24
  cursor: pointer;
25
25
  }
26
-
27
- .header-menu-btn {
28
- display: inline-flex;
29
- align-items: center;
30
- justify-content: center;
31
- position: relative;
32
- cursor: pointer;
33
-
34
- &::before {
35
- content: "";
36
- position: absolute;
37
- top: -15px;
38
- bottom: -15px;
39
- left: -15px;
40
- right: -15px;
41
- }
42
- }
43
26
  }
@@ -1,11 +1,10 @@
1
1
  export interface HeaderInterface {
2
- logo?: React.ReactNode;
2
+ logo?: string;
3
3
  children?: React.ReactNode;
4
4
  positionFixed?: boolean;
5
5
  onClickMenu?: () => void;
6
6
  userChildren?: React.ReactNode;
7
7
  onClickLogo?: () => void;
8
- overlayClassName?: string;
9
8
  showBackNavigation?: boolean;
10
9
  onClickBackNavigation?: () => void;
11
10
  }
package/src/icon/Icon.tsx CHANGED
@@ -1,6 +1,10 @@
1
1
  import "./icon.css";
2
2
  import { IconInterface } from "./icon.interface";
3
3
 
4
- export const Icon = ({ classIcon, size }: IconInterface): JSX.Element => {
5
- return <i className={`bi ${classIcon} ${size ?? "sm"}`} />;
4
+ export const Icon = ({
5
+ classIcon,
6
+ size,
7
+ onClick,
8
+ }: IconInterface): JSX.Element => {
9
+ return <i className={`bi ${classIcon} ${size ?? "sm"}`} onClick={onClick} />;
6
10
  };
@@ -3,4 +3,5 @@ import { IconSizeEnum } from "./iconSize.enum";
3
3
  export interface IconInterface {
4
4
  classIcon: string;
5
5
  size?: IconSizeEnum;
6
+ onClick?: (e: React.MouseEvent) => void;
6
7
  }