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.
- package/README.md +0 -26
- package/dist/_core/type/generiqueType.d.ts +4 -0
- package/dist/badge/Badge.d.ts +3 -1
- package/dist/button/Button.d.ts +1 -1
- package/dist/button/button.interface.d.ts +1 -2
- package/dist/dataTable/DataTable.d.ts +17 -14
- package/dist/dataTable/dataTable.interface.d.ts +24 -19
- package/dist/dataTable/dataTableActions/DataTableAction.d.ts +3 -5
- package/dist/dataTable/dataTableColumn/DataTableColumn.d.ts +13 -7
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.d.ts +10 -0
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.d.ts +9 -0
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.d.ts +9 -0
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.d.ts +13 -0
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.d.ts +9 -0
- package/dist/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.d.ts +11 -0
- package/dist/dataTable/dataTableFilters/DataTableFilters.d.ts +7 -0
- package/dist/dataTable/dataTableLoading/DataTableLoading.d.ts +1 -3
- package/dist/dataTable/dataTableRow/DataTableRow.d.ts +5 -6
- package/dist/dataTable/dataTableRow/dataTableRowOverlay/DataTableRowOverlay.d.ts +12 -0
- package/dist/dataTable/dataTableRow/dataTableRowValue/DataTableRowValue.d.ts +11 -0
- package/dist/expands/expand/expand.d.ts +1 -1
- package/dist/form/Form.d.ts +2 -4
- package/dist/form/form.enum.d.ts +2 -3
- package/dist/form/form.interface.d.ts +2 -19
- package/dist/form/input/Input.d.ts +3 -0
- package/dist/form/inputNumber/InputNumber.d.ts +0 -2
- package/dist/grid/col/Col.d.ts +6 -3
- package/dist/grid/col/colStyled/ColStyled.d.ts +5 -7
- package/dist/grid/grid.interface.d.ts +5 -9
- package/dist/header/Header.d.ts +1 -1
- package/dist/header/header.interface.d.ts +1 -2
- package/dist/icon/Icon.d.ts +1 -1
- package/dist/icon/icon.interface.d.ts +1 -0
- package/dist/index.d.ts +1 -5
- package/dist/index.js +3606 -3543
- package/dist/menus/menu/Menu.d.ts +0 -1
- package/dist/overlayPanel/OverlayPanel.d.ts +4 -2
- package/dist/overlayPanel/overlayPanelStyled/OverlayPanelStyled.d.ts +2 -0
- package/dist/select/Select.d.ts +6 -2
- package/dist/select/selectOption.interface.d.ts +1 -0
- package/dist/style.css +1 -1
- package/dist/tabs/Tabs.d.ts +2 -1
- package/dist/toaster/store/useToasterStore.d.ts +0 -1
- package/index.html +2 -1
- package/package/package.json +56 -0
- package/package/src/sidebar/Sidebar.tsx +208 -0
- package/package/src/sidebar/sidebar.css +104 -0
- package/package.json +1 -1
- package/src/App.menu.tsx +0 -8
- package/src/_core/type/generiqueType.tsx +4 -0
- package/src/badge/Badge.tsx +9 -1
- package/src/badge/badge.css +4 -0
- package/src/button/Button.tsx +1 -3
- package/src/button/button.css +2 -2
- package/src/button/button.interface.tsx +1 -2
- package/src/card/card.css +25 -5
- package/src/card/cardAction/CardAction.tsx +4 -4
- package/src/damier/Damier.tsx +7 -16
- package/src/damier/damier.css +4 -11
- package/src/dataTable/DataTable.tsx +685 -542
- package/src/dataTable/DataTable.view.tsx +48 -24
- package/src/dataTable/dataTable.css +134 -159
- package/src/dataTable/dataTable.interface.ts +25 -19
- package/src/dataTable/dataTableActions/DataTableAction.tsx +14 -25
- package/src/dataTable/dataTableColumn/DataTableColumn.tsx +64 -14
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.tsx +36 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilter.css +0 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.tsx +39 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.tsx +80 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.tsx +89 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.tsx +37 -0
- package/src/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.tsx +42 -0
- package/src/dataTable/dataTableFilters/DataTableFilters.tsx +91 -0
- package/src/dataTable/dataTableFilters/dataTableFilters.css +16 -0
- package/src/dataTable/dataTableLoading/DataTableLoading.tsx +4 -15
- package/src/dataTable/dataTableRow/DataTableRow.tsx +64 -180
- package/src/dataTable/dataTableRow/dataTableRowOverlay/DataTableRowOverlay.tsx +80 -0
- package/src/dataTable/dataTableRow/dataTableRowValue/DataTableRowValue.tsx +123 -0
- package/src/expands/Expands.tsx +2 -16
- package/src/expands/expand/expand.tsx +5 -122
- package/src/expands/expands.css +3 -8
- package/src/form/Form.tsx +93 -258
- package/src/form/Form.view.tsx +1 -9
- package/src/form/form.css +1 -51
- package/src/form/form.enum.ts +1 -2
- package/src/form/form.interface.tsx +2 -28
- package/src/form/input/Input.tsx +61 -7
- package/src/form/input/input.css +23 -1
- package/src/form/inputNumber/InputNumber.tsx +6 -11
- package/src/form/inputPrice/InputPrice.tsx +2 -4
- package/src/grid/col/Col.tsx +7 -5
- package/src/grid/col/colStyled/ColStyled.tsx +7 -21
- package/src/grid/grid.interface.tsx +5 -11
- package/src/grid/row/row.css +2 -2
- package/src/header/Header.tsx +2 -4
- package/src/header/header.css +0 -17
- package/src/header/header.interface.tsx +1 -2
- package/src/icon/Icon.tsx +6 -2
- package/src/icon/icon.interface.tsx +1 -0
- package/src/index.css +12 -58
- package/src/index.ts +2 -12
- package/src/menus/Menus.tsx +0 -1
- package/src/menus/menu/Menu.tsx +1 -2
- package/src/overlayPanel/OverlayPanel.tsx +71 -18
- package/src/overlayPanel/overlay.context.tsx +6 -4
- package/src/overlayPanel/overlayPanel.css +10 -1
- package/src/overlayPanel/overlayPanelStyled/OverlayPanelStyled.tsx +7 -2
- package/src/select/Select.tsx +178 -41
- package/src/select/select.css +94 -13
- package/src/select/selectOption.interface.ts +1 -0
- package/src/sidebar/Sidebar.tsx +5 -107
- package/src/sidebar/sidebar.css +1 -18
- package/src/tabs/Tabs.tsx +20 -1
- package/src/tabs/tabs.css +3 -9
- package/src/toaster/Toaster.tsx +2 -7
- package/src/toaster/Toaster.view.tsx +0 -1
- package/src/toaster/store/useToasterStore.tsx +0 -2
- package/src/toaster/toaster.css +2 -7
- package/dist/addressSearch/AddressSearch.d.ts +0 -20
- package/dist/addressSearch/AddressSearch.view.d.ts +0 -1
- package/dist/geocoding/GeocodingService.d.ts +0 -13
- package/dist/geocoding/geocoding.interface.d.ts +0 -20
- package/src/addressSearch/AddressSearch.tsx +0 -246
- package/src/addressSearch/AddressSearch.view.tsx +0 -52
- package/src/addressSearch/addressSearch.css +0 -133
- package/src/geocoding/GeocodingService.ts +0 -89
- package/src/geocoding/geocoding.interface.ts +0 -25
package/src/form/input/Input.tsx
CHANGED
|
@@ -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
|
|
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={
|
|
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={
|
|
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";
|
package/src/form/input/input.css
CHANGED
|
@@ -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=
|
|
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
|
);
|
package/src/grid/col/Col.tsx
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { ColStyled } from "./colStyled/ColStyled";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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,
|
|
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}
|
|
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?:
|
|
7
|
-
$sm?:
|
|
8
|
-
$md?:
|
|
9
|
-
$lg?:
|
|
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
|
-
@
|
|
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
|
-
@
|
|
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
|
-
@
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
}
|
package/src/grid/row/row.css
CHANGED
package/src/header/Header.tsx
CHANGED
|
@@ -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
|
|
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}
|
package/src/header/header.css
CHANGED
|
@@ -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?:
|
|
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 = ({
|
|
5
|
-
|
|
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
|
};
|