@harjs/react-ui 1.1.4 → 1.1.6
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/assets/css/components/charts/gantt/styles.css +6 -6
- package/dist/assets/css/components/charts/pie/pie.css +7 -7
- package/dist/assets/css/components/data-display/calendar/styles.week-view.css +8 -6
- package/dist/assets/css/components/data-display/card/css.cjs +47 -0
- package/dist/assets/css/components/data-display/card/radius.css +41 -0
- package/dist/assets/css/components/data-display/card/status.css +929 -0
- package/dist/assets/css/components/data-display/card/styles.css +3 -6
- package/dist/assets/css/components/data-display/card/templates/radius.template.css +3 -0
- package/dist/assets/css/components/data-display/card/templates/status.template.css +47 -0
- package/dist/assets/css/components/data-display/diagram/styles.css +14 -10
- package/dist/assets/css/components/data-display/dnd/shadow.css +2 -2
- package/dist/assets/css/components/data-display/dnd/styles.css +3 -3
- package/dist/assets/css/components/data-display/grid-system/flex/styles.css +65 -0
- package/dist/assets/css/components/data-display/grid-system/styles.css +3 -0
- package/dist/assets/css/components/data-display/kanban-board/styles.css +16 -16
- package/dist/assets/css/components/data-display/paper/styles.css +3 -3
- package/dist/assets/css/components/data-display/syntax-highlighter/syntax-highlighter.css +3 -3
- package/dist/assets/css/components/data-display/table/filter-popup.css +6 -4
- package/dist/assets/css/components/data-display/table/properties-popup.css +3 -3
- package/dist/assets/css/components/data-display/table/scroll.css +1 -0
- package/dist/assets/css/components/data-display/table/styles.css +47 -46
- package/dist/assets/css/components/data-display/tabs/tabs.css +8 -8
- package/dist/assets/css/components/data-display/typography/paragraph/color.css +76 -50
- package/dist/assets/css/components/data-display/typography/paragraph/css.cjs +61 -0
- package/dist/assets/css/components/data-display/typography/paragraph/size.css +25 -7
- package/dist/assets/css/components/data-display/typography/paragraph/templates/color.template.css +3 -0
- package/dist/assets/css/components/data-display/typography/paragraph/templates/size.template.css +4 -0
- package/dist/assets/css/components/data-display/typography/title/core.css +0 -1
- package/dist/assets/css/components/feedback/alert/styles.css +8 -8
- package/dist/assets/css/components/feedback/drawer/content.css +9 -6
- package/dist/assets/css/components/feedback/drawer/css.cjs +38 -0
- package/dist/assets/css/components/feedback/drawer/header.css +68 -52
- package/dist/assets/css/components/feedback/drawer/radius.css +53 -0
- package/dist/assets/css/components/feedback/drawer/size.css +33 -0
- package/dist/assets/css/components/feedback/drawer/styles.css +68 -73
- package/dist/assets/css/components/feedback/drawer/templates/radius.template.css +4 -0
- package/dist/assets/css/components/feedback/drawer/templates/size.template.css +4 -0
- package/dist/assets/css/components/feedback/loading/loading.css +23 -11
- package/dist/assets/css/components/feedback/modal/content.css +15 -5
- package/dist/assets/css/components/feedback/modal/css.cjs +41 -0
- package/dist/assets/css/components/feedback/modal/footer.css +12 -8
- package/dist/assets/css/components/feedback/modal/header.css +66 -54
- package/dist/assets/css/components/feedback/modal/radius.css +43 -0
- package/dist/assets/css/components/feedback/modal/size.css +27 -0
- package/dist/assets/css/components/feedback/modal/styles.css +31 -40
- package/dist/assets/css/components/feedback/modal/templates/radius.template.css +3 -0
- package/dist/assets/css/components/feedback/modal/templates/size.template.css +3 -0
- package/dist/assets/css/components/feedback/notification/notification.css +6 -6
- package/dist/assets/css/components/feedback/popover/styles.css +6 -4
- package/dist/assets/css/components/feedback/popup-confirm/styles.css +5 -5
- package/dist/assets/css/components/feedback/progress/progress.css +6 -5
- package/dist/assets/css/components/feedback/tooltip/styles.css +3 -3
- package/dist/assets/css/components/form/button/color.css +1081 -0
- package/dist/assets/css/components/form/button/css.cjs +43 -0
- package/dist/assets/css/components/form/button/icon.css +47 -0
- package/dist/assets/css/components/form/button/position.css +21 -0
- package/dist/assets/css/components/form/button/radius.css +41 -0
- package/dist/assets/css/components/form/button/shape.css +8 -0
- package/dist/assets/css/components/form/button/size.css +67 -0
- package/dist/assets/css/components/form/button/styles.css +31 -17
- package/dist/assets/css/components/form/button/templates/color.template.css +107 -0
- package/dist/assets/css/components/form/button/templates/radius.template.css +3 -0
- package/dist/assets/css/components/form/button/templates/size.template.css +10 -0
- package/dist/assets/css/components/form/button-action/styles.css +18 -15
- package/dist/assets/css/components/form/button-group/styles.css +2 -23
- package/dist/assets/css/components/form/checkbox/checked.css +78 -0
- package/dist/assets/css/components/form/checkbox/color.checked.css +1031 -0
- package/dist/assets/css/components/form/checkbox/color.radio-checked.css +1161 -0
- package/dist/assets/css/components/form/checkbox/color.radio-unchecked.css +739 -0
- package/dist/assets/css/components/form/checkbox/color.unchecked.css +739 -0
- package/dist/assets/css/components/form/checkbox/css.cjs +61 -0
- package/dist/assets/css/components/form/checkbox/radius.css +41 -0
- package/dist/assets/css/components/form/checkbox/size.css +28 -0
- package/dist/assets/css/components/form/checkbox/styles.css +78 -0
- package/dist/assets/css/components/form/checkbox/templates/color.checked.template.css +101 -0
- package/dist/assets/css/components/form/checkbox/templates/color.radio-checked.template.css +114 -0
- package/dist/assets/css/components/form/checkbox/templates/color.radio-unchecked.template.css +72 -0
- package/dist/assets/css/components/form/checkbox/templates/color.unchecked.template.css +72 -0
- package/dist/assets/css/components/form/checkbox/templates/radius.template.css +3 -0
- package/dist/assets/css/components/form/checkbox/templates/size.template.css +8 -0
- package/dist/assets/css/components/form/checkbox-card/color.checked.css +755 -0
- package/dist/assets/css/components/form/checkbox-card/color.unchecked.css +753 -0
- package/dist/assets/css/components/form/checkbox-card/css.cjs +44 -0
- package/dist/assets/css/components/form/checkbox-card/radius.css +43 -0
- package/dist/assets/css/components/form/checkbox-card/styles.css +14 -0
- package/dist/assets/css/components/form/checkbox-card/templates/color.checked.template.css +74 -0
- package/dist/assets/css/components/form/checkbox-card/templates/color.unchecked.template.css +74 -0
- package/dist/assets/css/components/form/checkbox-card/templates/radius.template.css +3 -0
- package/dist/assets/css/components/form/checkbox-card/templates/size.template.css +8 -0
- package/dist/assets/css/components/form/date-picker/calendar/calendar.css +6 -4
- package/dist/assets/css/components/form/date-picker/calendar/content.css +12 -4
- package/dist/assets/css/components/form/date-picker/clock/clock.css +3 -3
- package/dist/assets/css/components/form/date-picker/clock/content.css +14 -5
- package/dist/assets/css/components/form/input/addon.css +131 -0
- package/dist/assets/css/components/form/input/color.css +1131 -0
- package/dist/assets/css/components/form/input/css.cjs +177 -0
- package/dist/assets/css/components/form/input/icon.css +52 -0
- package/dist/assets/css/components/form/input/radius.css +251 -0
- package/dist/assets/css/components/form/input/size.css +133 -0
- package/dist/assets/css/components/form/input/styles.css +37 -19
- package/dist/assets/css/components/form/input/templates/color.template.css +112 -0
- package/dist/assets/css/components/form/input/templates/radius.template.css +24 -0
- package/dist/assets/css/components/form/input/templates/size.template.css +21 -0
- package/dist/assets/css/components/form/select/options.css +12 -9
- package/dist/assets/css/components/form/select/styles.css +8 -14
- package/dist/assets/css/components/form/switch/styles.css +3 -3
- package/dist/assets/css/components/form/text-editor/styles.css +5 -11
- package/dist/assets/css/components/form/upload/dropzone.css +12 -12
- package/dist/assets/css/components/form/upload/list-and-gird.css +10 -10
- package/dist/assets/css/components/form/upload/styles.css +11 -11
- package/dist/assets/css/components/layout/layout.css +5 -5
- package/dist/assets/css/components/navigation/menu/styles.css +11 -11
- package/dist/assets/css/components/navigation/pagination/styles.css +20 -5
- package/dist/assets/css/components/navigation/steps/styles.css +9 -9
- package/dist/assets/css/components/navigation/wizard/styles.css +116 -0
- package/dist/assets/css/core/animation.css +1 -1
- package/dist/assets/css/core/color-palette.css +129 -95
- package/dist/assets/css/core/har-core.css +53 -0
- package/dist/assets/css/core/radius.css +12 -0
- package/dist/assets/css/core/space.css +27 -0
- package/dist/assets/css/core/stroke.css +10 -0
- package/dist/components/charts/gantt/index.js +19 -10
- package/dist/components/data-display/calendar/Header.js +3 -3
- package/dist/components/data-display/calendar/views/Week.js +1 -1
- package/dist/components/data-display/card/IProps.d.ts +4 -2
- package/dist/components/data-display/card/index.js +5 -3
- package/dist/components/data-display/chip/index.js +1 -1
- package/dist/components/data-display/diagram/index.js +2 -2
- package/dist/components/data-display/grid-system/flex/Flex.d.ts +4 -0
- package/dist/components/data-display/grid-system/flex/Flex.js +48 -0
- package/dist/components/data-display/grid-system/flex/IProps.d.ts +18 -0
- package/dist/components/data-display/grid-system/index.d.ts +1 -0
- package/dist/components/data-display/grid-system/index.js +2 -0
- package/dist/components/data-display/kanban-board/filter/DateFilters.js +1 -1
- package/dist/components/data-display/kanban-board/filter/SelectFilters.js +1 -1
- package/dist/components/data-display/table/THeadCell.js +1 -1
- package/dist/components/data-display/table/body/Editable.js +1 -1
- package/dist/components/data-display/table/body/TBody.js +1 -1
- package/dist/components/data-display/table/header/ActionButtons.js +13 -5
- package/dist/components/data-display/table/index.js +5 -3
- package/dist/components/data-display/typography/paragraph/IProps.d.ts +2 -2
- package/dist/components/data-display/typography/paragraph/Paragraph.js +2 -2
- package/dist/components/feedback/alert/index.js +1 -1
- package/dist/components/feedback/drawer/IProps.d.ts +5 -2
- package/dist/components/feedback/drawer/index.d.ts +1 -1
- package/dist/components/feedback/drawer/index.js +15 -12
- package/dist/components/feedback/modal/index.js +18 -23
- package/dist/components/feedback/popover/index.js +2 -2
- package/dist/components/feedback/popup-confirm/index.js +2 -2
- package/dist/components/feedback/progress/index.js +1 -1
- package/dist/components/form/button/index.js +12 -10
- package/dist/components/form/button-action/IProps.d.ts +10 -6
- package/dist/components/form/button-action/index.js +36 -17
- package/dist/components/form/button-group/Props.d.ts +6 -0
- package/dist/components/form/button-group/index.d.ts +3 -5
- package/dist/components/form/button-group/index.js +21 -7
- package/dist/components/form/checkbox/Props.d.ts +8 -0
- package/dist/components/form/checkbox/Props.js +1 -0
- package/dist/components/form/checkbox/index.d.ts +7 -3
- package/dist/components/form/checkbox/index.js +16 -7
- package/dist/components/form/checkbox-card/Props.d.ts +7 -0
- package/dist/components/form/checkbox-card/index.d.ts +14 -0
- package/dist/components/form/checkbox-card/index.js +39 -0
- package/dist/components/form/checkbox-group/Props.d.ts +10 -0
- package/dist/components/form/checkbox-group/Props.js +1 -0
- package/dist/components/form/checkbox-group/index.d.ts +4 -0
- package/dist/components/form/checkbox-group/index.js +54 -0
- package/dist/components/form/date-picker/Props.d.ts +5 -4
- package/dist/components/form/date-picker/index.d.ts +2 -2
- package/dist/components/form/date-picker/index.js +33 -18
- package/dist/components/form/input/IProps.d.ts +4 -10
- package/dist/components/form/input/decimal/Decimal.js +21 -17
- package/dist/components/form/input/decimal/IProps.d.ts +3 -5
- package/dist/components/form/input/formatted-decimal/FormattedDecimal.js +16 -15
- package/dist/components/form/input/formatted-decimal/IProps.d.ts +3 -5
- package/dist/components/form/input/index.d.ts +9 -3
- package/dist/components/form/input/index.js +72 -40
- package/dist/components/form/input/phone/IProps.d.ts +3 -2
- package/dist/components/form/input/phone/Phone.js +15 -11
- package/dist/components/form/input/pin/IProps.d.ts +6 -0
- package/dist/components/form/input/pin/IProps.js +1 -0
- package/dist/components/form/input/pin/Pin.d.ts +7 -0
- package/dist/components/form/input/{otp/Otp.js → pin/Pin.js} +9 -9
- package/dist/components/form/radio/IProps.d.ts +3 -3
- package/dist/components/form/radio/index.d.ts +1 -2
- package/dist/components/form/radio/index.js +8 -22
- package/dist/components/form/radio-group/Props.d.ts +8 -0
- package/dist/components/form/radio-group/Props.js +1 -0
- package/dist/components/form/radio-group/index.d.ts +4 -0
- package/dist/components/form/radio-group/index.js +52 -0
- package/dist/components/form/select/Props.d.ts +3 -4
- package/dist/components/form/select/index.js +4 -4
- package/dist/components/form/switch/index.js +2 -2
- package/dist/components/form/text-editor/index.js +4 -4
- package/dist/components/form/upload/Dropzone.d.ts +1 -1
- package/dist/components/form/upload/Dropzone.js +6 -5
- package/dist/components/form/upload/List.js +3 -2
- package/dist/components/layout/LSider.js +1 -1
- package/dist/components/navigation/wizard/IProps.d.ts +34 -0
- package/dist/components/navigation/wizard/IProps.js +1 -0
- package/dist/components/navigation/wizard/index.d.ts +8 -0
- package/dist/components/navigation/wizard/index.js +138 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +7 -3
- package/dist/libs/core/application/locales/date-picker/IDatePickerLocale.d.ts +25 -0
- package/dist/libs/core/application/locales/date-picker/IDatePickerLocale.js +1 -0
- package/dist/libs/core/application/locales/date-picker/en.d.ts +3 -0
- package/dist/libs/core/application/locales/date-picker/en.js +25 -0
- package/dist/libs/core/application/locales/date-picker/tr.d.ts +3 -0
- package/dist/libs/core/application/locales/date-picker/tr.js +25 -0
- package/dist/libs/core/application/locales/wizard/IWizardLocale.d.ts +8 -0
- package/dist/libs/core/application/locales/wizard/IWizardLocale.js +1 -0
- package/dist/libs/core/application/locales/wizard/en.d.ts +3 -0
- package/dist/libs/core/application/locales/wizard/en.js +8 -0
- package/dist/libs/core/application/locales/wizard/tr.d.ts +3 -0
- package/dist/libs/core/application/locales/wizard/tr.js +8 -0
- package/dist/libs/infrastructure/shared/Utils.js +1 -1
- package/dist/libs/infrastructure/types/IGlobalProps.d.ts +10 -3
- package/dist/libs/infrastructure/types/index.d.ts +9 -6
- package/package.json +3 -1
- package/dist/assets/css/components/data-display/card/statuses.css +0 -377
- package/dist/assets/css/components/form/button/core/icon.css +0 -37
- package/dist/assets/css/components/form/button/core/position.css +0 -19
- package/dist/assets/css/components/form/button/core/shape.css +0 -13
- package/dist/assets/css/components/form/button/core/size.css +0 -14
- package/dist/assets/css/components/form/checkbox/checkbox.css +0 -53
- package/dist/assets/css/components/form/checkbox/core/border.css +0 -252
- package/dist/assets/css/components/form/input/core/addon.css +0 -11
- package/dist/assets/css/components/form/input/core/border.css +0 -114
- package/dist/assets/css/components/form/input/core/button.css +0 -34
- package/dist/assets/css/components/form/input/core/icon.css +0 -22
- package/dist/assets/css/components/form/input/otp/styles.css +0 -20
- package/dist/assets/css/components/form/input/phone/styles.css +0 -50
- package/dist/assets/css/components/form/radio/core/border.css +0 -252
- package/dist/assets/css/components/form/radio/radio.css +0 -69
- package/dist/assets/css/core/ar-core.css +0 -192
- package/dist/assets/css/core/variants/animation.css +0 -164
- package/dist/assets/css/core/variants/border.css +0 -18
- package/dist/assets/css/core/variants/borderless.css +0 -362
- package/dist/assets/css/core/variants/dashed.css +0 -362
- package/dist/assets/css/core/variants/filled.css +0 -428
- package/dist/assets/css/core/variants/outlined.css +0 -439
- package/dist/assets/css/core/variants/surface.css +0 -252
- package/dist/components/form/checkbox/IProps.d.ts +0 -5
- package/dist/components/form/input/otp/IProps.d.ts +0 -6
- package/dist/components/form/input/otp/Otp.d.ts +0 -7
- package/dist/libs/core/application/locales/index.d.ts +0 -4
- package/dist/libs/core/application/locales/index.js +0 -3
- package/dist/libs/core/application/locales/notification/INotificationLocale.d.ts +0 -59
- package/dist/libs/core/application/locales/notification/en.d.ts +0 -3
- package/dist/libs/core/application/locales/notification/en.js +0 -85
- package/dist/libs/core/application/locales/notification/tr.d.ts +0 -3
- package/dist/libs/core/application/locales/notification/tr.js +0 -85
- /package/dist/components/{form/checkbox → data-display/grid-system/flex}/IProps.js +0 -0
- /package/dist/components/form/{input/otp/IProps.js → button-group/Props.js} +0 -0
- /package/dist/{libs/core/application/locales/notification/INotificationLocale.js → components/form/checkbox-card/Props.js} +0 -0
|
@@ -4,11 +4,11 @@ import "../../../assets/css/components/feedback/modal/styles.css";
|
|
|
4
4
|
import Typography from "../../data-display/typography";
|
|
5
5
|
import Popover from "../popover";
|
|
6
6
|
const { Title } = Typography;
|
|
7
|
-
const Modal = ({ children, open, closePopover, title, size = "
|
|
7
|
+
const Modal = ({ children, open, closePopover, title, size = "md", footer, disableCloseOnBackdrop, disableCloseOnEsc, ...attributes }) => {
|
|
8
8
|
// refs
|
|
9
|
-
const
|
|
10
|
-
const _modalWrapperClassName = ["
|
|
11
|
-
const _modalClassName = ["
|
|
9
|
+
const _modal = useRef(null);
|
|
10
|
+
const _modalWrapperClassName = ["har-modal-wrapper"];
|
|
11
|
+
const _modalClassName = ["har-modal", size];
|
|
12
12
|
if (Object.keys(open).length > 0 && open.get)
|
|
13
13
|
_modalWrapperClassName.push("opened");
|
|
14
14
|
else
|
|
@@ -18,39 +18,34 @@ const Modal = ({ children, open, closePopover, title, size = "normal", footer, d
|
|
|
18
18
|
if (disableCloseOnEsc)
|
|
19
19
|
return;
|
|
20
20
|
const key = event.key;
|
|
21
|
-
const isArSelectOptions = document.getElementsByClassName("
|
|
22
|
-
const isArCalendar = document.getElementsByClassName("
|
|
23
|
-
const isArPopover = document.getElementsByClassName("
|
|
21
|
+
const isArSelectOptions = document.getElementsByClassName("har-select-options").length === 0;
|
|
22
|
+
const isArCalendar = document.getElementsByClassName("har-date-calendar").length === 0;
|
|
23
|
+
const isArPopover = document.getElementsByClassName("har-popover").length === 0;
|
|
24
24
|
if (key === "Escape" && isArCalendar && isArSelectOptions && isArPopover) {
|
|
25
25
|
event.stopPropagation();
|
|
26
26
|
open.set(false);
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
const handlePosition = () => {
|
|
30
|
-
if (
|
|
31
|
-
const
|
|
32
|
-
const content =
|
|
33
|
-
const rect =
|
|
30
|
+
if (_modal.current) {
|
|
31
|
+
const modalCurrent = _modal.current;
|
|
32
|
+
const content = modalCurrent.querySelector("div.content");
|
|
33
|
+
const rect = modalCurrent.getBoundingClientRect();
|
|
34
34
|
const screenCenterX = window.innerWidth / 2;
|
|
35
|
-
// const screenCenterY = window.innerHeight / 2;
|
|
36
35
|
const sx = window.scrollX || document.documentElement.scrollLeft;
|
|
37
|
-
// const sy = window.scrollY || document.documentElement.scrollTop;
|
|
38
36
|
if (window.innerHeight > 1024) {
|
|
39
|
-
|
|
40
|
-
arModal.style.top = "100px";
|
|
37
|
+
modalCurrent.style.top = "100px";
|
|
41
38
|
content.removeAttribute("style");
|
|
42
39
|
}
|
|
43
40
|
else if (window.innerHeight > 575 && window.innerHeight < 1024) {
|
|
44
|
-
|
|
45
|
-
arModal.style.top = "100px";
|
|
41
|
+
modalCurrent.style.top = "100px";
|
|
46
42
|
content.removeAttribute("style");
|
|
47
43
|
}
|
|
48
44
|
else if (window.innerHeight < 575) {
|
|
49
|
-
|
|
50
|
-
arModal.style.top = "15px";
|
|
45
|
+
modalCurrent.style.top = "15px";
|
|
51
46
|
content.style.maxHeight = `calc(100vh - ${footer ? "2.5px" : "-30.5px"} - 3.5rem - 4rem - ${footer ? "2rem" : "0rem"})`;
|
|
52
47
|
}
|
|
53
|
-
|
|
48
|
+
modalCurrent.style.left = `${screenCenterX - rect.width / 2 + sx}px`;
|
|
54
49
|
}
|
|
55
50
|
};
|
|
56
51
|
// useEffects
|
|
@@ -72,15 +67,15 @@ const Modal = ({ children, open, closePopover, title, size = "normal", footer, d
|
|
|
72
67
|
_modalClassName.push(attributes.className);
|
|
73
68
|
}, [attributes.className]);
|
|
74
69
|
return (React.createElement("div", { className: _modalWrapperClassName.map((c) => c).join(" ") },
|
|
75
|
-
React.createElement("div", { className: "
|
|
70
|
+
React.createElement("div", { className: "har-modal-bg", onMouseDown: (event) => {
|
|
76
71
|
if (disableCloseOnBackdrop)
|
|
77
72
|
return;
|
|
78
73
|
event.stopPropagation();
|
|
79
74
|
const target = event.target;
|
|
80
|
-
if (
|
|
75
|
+
if (_modal.current && !_modal.current.contains(target))
|
|
81
76
|
open.set(false);
|
|
82
77
|
} }),
|
|
83
|
-
React.createElement("div", { ref:
|
|
78
|
+
React.createElement("div", { ref: _modal, ...attributes, className: _modalClassName.map((c) => c).join(" "), role: "dialog" },
|
|
84
79
|
title && (React.createElement("div", { className: "header" },
|
|
85
80
|
React.createElement(Title, { Level: "h3" }, title),
|
|
86
81
|
closePopover ? (React.createElement(Popover, { ...closePopover },
|
|
@@ -78,11 +78,11 @@ const Popover = ({ children, title, message, content, onConfirm, windowBlur, ful
|
|
|
78
78
|
message && React.createElement("p", { className: "message" }, message),
|
|
79
79
|
content && React.createElement("div", { className: "content" }, content),
|
|
80
80
|
onConfirm && (React.createElement("div", { className: "footer" },
|
|
81
|
-
React.createElement(Button, { color: "green", size: "
|
|
81
|
+
React.createElement(Button, { color: "green", size: "sm", onClick: () => {
|
|
82
82
|
onConfirm(true);
|
|
83
83
|
setOpen(false);
|
|
84
84
|
} }, config?.buttons.okay ?? "Evet"),
|
|
85
|
-
React.createElement(Button, { size: "
|
|
85
|
+
React.createElement(Button, { size: "sm", onClick: () => {
|
|
86
86
|
onConfirm(false);
|
|
87
87
|
setOpen(false);
|
|
88
88
|
} }, config?.buttons.cancel ?? "Hayır")))), document.body),
|
|
@@ -30,7 +30,7 @@ const PopupConfirm = ({ title, message, status, isOpen, buttons, onConfirm }) =>
|
|
|
30
30
|
case "delete":
|
|
31
31
|
return "red";
|
|
32
32
|
default:
|
|
33
|
-
return "
|
|
33
|
+
return "gray";
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
const buttonIcons = () => {
|
|
@@ -48,7 +48,7 @@ const PopupConfirm = ({ title, message, status, isOpen, buttons, onConfirm }) =>
|
|
|
48
48
|
case "delete":
|
|
49
49
|
return React.createElement(ARIcon, { icon: "Trash-Fill", fill: "var(--danger)", size: 24 });
|
|
50
50
|
default:
|
|
51
|
-
return "
|
|
51
|
+
return "gray";
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
54
|
// useEffects
|
|
@@ -13,7 +13,7 @@ const Progress = ({ value, reverse, isVisibleValue = false }) => {
|
|
|
13
13
|
_status = !reverse ? "primary" : "warning";
|
|
14
14
|
else if (value >= 76 && value <= 100)
|
|
15
15
|
_status = !reverse ? "success" : "danger";
|
|
16
|
-
_arProgressClassName.push(...Utils.GetClassName("filled", _status, undefined, { radius: "
|
|
16
|
+
_arProgressClassName.push(...Utils.GetClassName("filled", _status, undefined, { radius: "full" }, undefined, undefined, undefined));
|
|
17
17
|
return (React.createElement("div", { className: "ar-progress" },
|
|
18
18
|
React.createElement("div", { className: `ar-progress-bar ${_arProgressClassName.map((c) => c).join(" ")}` }),
|
|
19
19
|
React.createElement("div", { className: `ar-progress-value ${_arProgressClassName.map((c) => c).join(" ")}`, style: {
|
|
@@ -2,22 +2,24 @@
|
|
|
2
2
|
import React, { useRef } from "react";
|
|
3
3
|
import "../../../assets/css/components/form/button/styles.css";
|
|
4
4
|
import Utils from "../../../libs/infrastructure/shared/Utils";
|
|
5
|
-
const Button = ({ children, variant = "filled", shape, color = "
|
|
5
|
+
const Button = ({ children, variant = "filled", shape, color = "gray", border = { radius: "4" }, size = "md", position, fullWidth, icon, upperCase, ...attributes }) => {
|
|
6
6
|
// refs
|
|
7
7
|
const _button = useRef(null);
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const _buttonClassName = ["har-button"];
|
|
9
|
+
_buttonClassName.push(...Utils.GetClassName(attributes.disabled ? "surface-borderless" : variant, undefined, attributes.disabled ? "gray" : color, border, size, icon, attributes.className));
|
|
10
10
|
if (!children)
|
|
11
|
-
|
|
11
|
+
_buttonClassName.push("no-content");
|
|
12
12
|
if (fullWidth)
|
|
13
|
-
|
|
13
|
+
_buttonClassName.push("full-width");
|
|
14
14
|
if (shape)
|
|
15
|
-
|
|
15
|
+
_buttonClassName.push(`shape ${shape}`);
|
|
16
16
|
if (position) {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
_buttonClassName.push(position.type);
|
|
18
|
+
_buttonClassName.push(position.inset.map((_inset) => _inset).join(" "));
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
if (attributes.disabled)
|
|
21
|
+
_buttonClassName.push("disabled");
|
|
22
|
+
return (React.createElement("button", { ref: _button, ...attributes, type: attributes.type ?? "button", className: _buttonClassName.map((c) => c).join(" "), onClick: (event) => {
|
|
21
23
|
// Disabled gelmesi durumunda işlem yapmasına izin verme...
|
|
22
24
|
if (attributes.disabled)
|
|
23
25
|
return;
|
|
@@ -35,7 +37,7 @@ const Button = ({ children, variant = "filled", shape, color = "light", border =
|
|
|
35
37
|
} },
|
|
36
38
|
React.createElement("span", { className: "text" },
|
|
37
39
|
icon?.element,
|
|
38
|
-
React.createElement("span", null,
|
|
40
|
+
!shape && React.createElement("span", null, typeof children === "string" && upperCase ? children.toLocaleUpperCase() : children))));
|
|
39
41
|
};
|
|
40
42
|
Button.displayName = "Button";
|
|
41
43
|
export default Button;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { ComponentProps, ReactElement } from "react";
|
|
2
|
+
import Button from "../button";
|
|
3
|
+
import { Color, Icon, Variants } from "../../../libs/infrastructure/types";
|
|
4
|
+
type ButtonProps = Pick<ComponentProps<typeof Button>, "color" | "size" | "upperCase" | "icon">;
|
|
5
|
+
interface IProps extends ButtonProps {
|
|
6
|
+
children: ReactElement | ReactElement<typeof Button> | ReactElement<typeof Button>[];
|
|
7
|
+
title?: string;
|
|
8
|
+
variant?: Variants;
|
|
9
|
+
_color?: Color;
|
|
10
|
+
_icon?: Icon;
|
|
7
11
|
}
|
|
8
12
|
export default IProps;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import React, {
|
|
2
|
+
import React, { useLayoutEffect, useRef, useState } from "react";
|
|
3
3
|
import "../../../assets/css/components/form/button-action/styles.css";
|
|
4
4
|
import Button from "../button";
|
|
5
5
|
import ReactDOM from "react-dom";
|
|
6
|
-
const ButtonAction = ({
|
|
6
|
+
const ButtonAction = ({ children, title, variant, _color, _icon, ...actionProps }) => {
|
|
7
7
|
// refs
|
|
8
8
|
const _wrapper = useRef(null);
|
|
9
9
|
const _button = useRef(null);
|
|
@@ -28,26 +28,45 @@ const ButtonAction = ({ buttons }) => {
|
|
|
28
28
|
if (elementRect) {
|
|
29
29
|
const screenCenterX = window.innerWidth / 2;
|
|
30
30
|
const screenCenterY = window.innerHeight / 2;
|
|
31
|
-
const
|
|
32
|
-
|
|
31
|
+
const gap = 6;
|
|
32
|
+
// 1. YÜKSEKLİK (TOP) HESAPLAMA
|
|
33
|
+
if (elementRect.top > screenCenterY) {
|
|
34
|
+
_list.current.style.top = `${elementRect.top - popoverRect.height - gap}px`;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
_list.current.style.top = `${elementRect.bottom + gap}px`;
|
|
38
|
+
}
|
|
39
|
+
// 2. YATAY HİZALAMA (LEFT) HESAPLAMA (Görsellerdeki sorunu çözen kısım)
|
|
40
|
+
if (elementRect.left > screenCenterX) {
|
|
41
|
+
_list.current.style.left = `${elementRect.right - popoverRect.width}px`;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
_list.current.style.left = `${elementRect.left}px`;
|
|
45
|
+
}
|
|
33
46
|
_list.current.style.visibility = "visible";
|
|
34
47
|
_list.current.style.opacity = "1";
|
|
35
|
-
_list.current.style.top = `${(elementRect.top > screenCenterY
|
|
36
|
-
? elementRect.top - popoverRect.height + elementRect.height
|
|
37
|
-
: elementRect.top) + sy}px`;
|
|
38
|
-
_list.current.style.left = `${(elementRect.left > screenCenterX
|
|
39
|
-
? elementRect.right - (elementRect.width + 7.5) - popoverRect.width
|
|
40
|
-
: elementRect.left + elementRect.width + 7.5) + sx}px`;
|
|
41
48
|
}
|
|
42
49
|
}
|
|
43
50
|
};
|
|
44
51
|
const handleResizeEvent = () => setOpen(false);
|
|
52
|
+
const renderChildren = () => {
|
|
53
|
+
return React.Children.map(children, (child) => {
|
|
54
|
+
if (React.isValidElement(child)) {
|
|
55
|
+
return React.cloneElement(child, {
|
|
56
|
+
...actionProps,
|
|
57
|
+
...child.props,
|
|
58
|
+
variant: "borderless",
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return child;
|
|
62
|
+
});
|
|
63
|
+
};
|
|
45
64
|
// useEffects
|
|
46
|
-
|
|
65
|
+
useLayoutEffect(() => {
|
|
47
66
|
if (!open)
|
|
48
67
|
return;
|
|
49
|
-
|
|
50
|
-
window.addEventListener("blur", () => setOpen(false));
|
|
68
|
+
handlePosition();
|
|
69
|
+
// window.addEventListener("blur", () => setOpen(false));
|
|
51
70
|
window.addEventListener("resize", handleResizeEvent);
|
|
52
71
|
document.addEventListener("click", handleClickOutSide);
|
|
53
72
|
document.addEventListener("keydown", handleKeys);
|
|
@@ -58,11 +77,11 @@ const ButtonAction = ({ buttons }) => {
|
|
|
58
77
|
document.removeEventListener("keydown", handleKeys);
|
|
59
78
|
};
|
|
60
79
|
}, [open]);
|
|
61
|
-
return (React.createElement("div", { ref: _wrapper, className: "
|
|
62
|
-
React.createElement("
|
|
63
|
-
React.createElement(Button, { variant:
|
|
80
|
+
return (React.createElement("div", { ref: _wrapper, className: "har-button-action" },
|
|
81
|
+
React.createElement("div", { ref: _button },
|
|
82
|
+
React.createElement(Button, { variant: variant, color: _color, icon: _icon ? { ..._icon } : { element: React.createElement("span", { className: "dotted" }) }, ...(!title && { shape: "square" }), onClick: () => setOpen((prev) => !prev) }, title && title)),
|
|
64
83
|
open &&
|
|
65
|
-
ReactDOM.createPortal(React.createElement("
|
|
84
|
+
ReactDOM.createPortal(React.createElement("div", { ref: _list, className: "har-action-buttons" }, renderChildren()), document.body)));
|
|
66
85
|
};
|
|
67
86
|
ButtonAction.displayName = "ButtonAction";
|
|
68
87
|
export default ButtonAction;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from "react";
|
|
2
2
|
import "../../../assets/css/components/form/button-group/styles.css";
|
|
3
|
-
import
|
|
4
|
-
declare const ButtonGroup: React.FC<
|
|
5
|
-
children: ReactElement<typeof Button> | ReactElement<typeof Button>[];
|
|
6
|
-
}>;
|
|
3
|
+
import Props from "./Props";
|
|
4
|
+
declare const ButtonGroup: React.FC<Props>;
|
|
7
5
|
export default ButtonGroup;
|
|
@@ -3,29 +3,43 @@ import React, { useEffect, useState } from "react";
|
|
|
3
3
|
import "../../../assets/css/components/form/button-group/styles.css";
|
|
4
4
|
import Button from "../button";
|
|
5
5
|
import Alert from "../../feedback/alert";
|
|
6
|
-
const ButtonGroup = ({ children }) => {
|
|
6
|
+
const ButtonGroup = ({ children, ...groupProps }) => {
|
|
7
7
|
// states
|
|
8
8
|
const [error, setError] = useState(null);
|
|
9
|
+
// methods
|
|
10
|
+
const renderChildren = () => {
|
|
11
|
+
if (error)
|
|
12
|
+
return React.createElement(Alert, { status: "danger", message: error });
|
|
13
|
+
return React.Children.map(children, (child) => {
|
|
14
|
+
if (React.isValidElement(child)) {
|
|
15
|
+
return React.cloneElement(child, {
|
|
16
|
+
...groupProps,
|
|
17
|
+
...child.props,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return child;
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
// useEffects
|
|
9
24
|
useEffect(() => {
|
|
10
25
|
try {
|
|
11
|
-
// Çocuk elemanların sadece `Button` bileşenleri olduğundan emin olun
|
|
12
26
|
React.Children.forEach(children, (child) => {
|
|
13
27
|
if (!React.isValidElement(child) || child.type !== Button) {
|
|
14
|
-
throw new Error("
|
|
28
|
+
throw new Error("It can only have Button elements as children.");
|
|
15
29
|
}
|
|
16
30
|
});
|
|
17
|
-
// Hata yoksa, error'u temizle
|
|
31
|
+
// Hata yoksa, error'u temizle.
|
|
18
32
|
setError(null);
|
|
19
33
|
}
|
|
20
34
|
catch (err) {
|
|
21
35
|
if (err instanceof Error) {
|
|
22
|
-
// Hata varsa error state'e yaz
|
|
36
|
+
// Hata varsa error state'e yaz.
|
|
23
37
|
setError(err.message);
|
|
24
38
|
console.error(err.message);
|
|
25
39
|
}
|
|
26
40
|
}
|
|
27
|
-
}, [children]);
|
|
28
|
-
return React.createElement("div", { className: "
|
|
41
|
+
}, [children]);
|
|
42
|
+
return React.createElement("div", { className: "har-button-group" }, renderChildren());
|
|
29
43
|
};
|
|
30
44
|
ButtonGroup.displayName = "ButtonGroup";
|
|
31
45
|
export default ButtonGroup;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IBorderProps, IColorProps, IUpperCaseProps, IValidationProps, IVariantProps } from "../../../libs/infrastructure/types/IGlobalProps";
|
|
2
|
+
type Props = {
|
|
3
|
+
label?: string;
|
|
4
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | "xxl";
|
|
5
|
+
} & IVariantProps<{
|
|
6
|
+
component: "checkbox";
|
|
7
|
+
}> & IColorProps & IBorderProps & IUpperCaseProps & IValidationProps & Omit<React.InputHTMLAttributes<HTMLInputElement>, "children" | "size" | "color">;
|
|
8
|
+
export default Props;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import "../../../assets/css/components/form/checkbox/styles.css";
|
|
3
|
+
declare const Checkbox: React.ForwardRefExoticComponent<{
|
|
4
|
+
label?: string;
|
|
5
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | "xxl";
|
|
6
|
+
} & import("../../../libs/infrastructure/types/IGlobalProps").IVariantProps<{
|
|
7
|
+
component: "checkbox";
|
|
8
|
+
}> & import("../../../libs/infrastructure/types/IGlobalProps").IColorProps & import("../../../libs/infrastructure/types/IGlobalProps").IBorderProps & import("../../../libs/infrastructure/types/IGlobalProps").IUpperCaseProps & import("../../../libs/infrastructure/types/IGlobalProps").IValidationProps & Omit<React.InputHTMLAttributes<HTMLInputElement>, "color" | "children" | "size"> & React.RefAttributes<HTMLInputElement>>;
|
|
5
9
|
export default Checkbox;
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import Utils from "../../../libs/infrastructure/shared/Utils";
|
|
3
|
-
import React, { forwardRef, useRef } from "react";
|
|
4
|
-
import "../../../assets/css/components/form/checkbox/
|
|
5
|
-
const Checkbox = forwardRef(({ label, color = "blue", border = { radius: "
|
|
3
|
+
import React, { forwardRef, useImperativeHandle, useRef } from "react";
|
|
4
|
+
import "../../../assets/css/components/form/checkbox/styles.css";
|
|
5
|
+
const Checkbox = forwardRef(({ label, variant, color = "blue", border = { radius: "4" }, size = "sm", upperCase, validation, ...attributes }, ref) => {
|
|
6
6
|
// refs
|
|
7
7
|
const _checkbox = useRef(null);
|
|
8
|
-
const _checkboxClassName = ["
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const _checkboxClassName = ["har-checkbox"];
|
|
9
|
+
const _innerRef = useRef(null);
|
|
10
|
+
_checkboxClassName.push(...Utils.GetClassName(variant ?? "outlined", undefined, validation?.text ? "red" : (color ?? "blue"), border ?? { radius: "4" }, undefined, undefined, attributes.className));
|
|
11
|
+
if (size)
|
|
12
|
+
_checkboxClassName.push(size);
|
|
13
|
+
if (attributes.disabled)
|
|
14
|
+
_checkboxClassName.push("disabled");
|
|
15
|
+
// hooks
|
|
16
|
+
// Dışarıdan gelen ref'i _innerRef'e bağla.
|
|
17
|
+
useImperativeHandle(ref, () => _innerRef.current);
|
|
18
|
+
return (React.createElement("div", { className: "har-checkbox-wrapper" },
|
|
11
19
|
React.createElement("label", null,
|
|
12
20
|
React.createElement("input", { ref: ref, type: "checkbox", ...attributes, size: 0, onChange: (event) => {
|
|
13
21
|
// (() => {
|
|
@@ -18,7 +26,8 @@ const Checkbox = forwardRef(({ label, color = "blue", border = { radius: "sm" },
|
|
|
18
26
|
} }),
|
|
19
27
|
React.createElement("span", null,
|
|
20
28
|
React.createElement("span", { ref: _checkbox, className: _checkboxClassName.map((c) => c).join(" ") }),
|
|
21
|
-
label && React.createElement("span", { className: "label" }, upperCase ? label.toUpperCase() : label)))
|
|
29
|
+
label && React.createElement("span", { className: "label" }, upperCase ? label.toUpperCase() : label))),
|
|
30
|
+
validation?.text && React.createElement("div", { className: "har-validation-text" }, validation.text)));
|
|
22
31
|
});
|
|
23
32
|
Checkbox.displayName = "Checkbox";
|
|
24
33
|
export default Checkbox;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
import { IChildrenProps } from "../../../libs/infrastructure/types/IGlobalProps";
|
|
3
|
+
import Checkbox from "../checkbox";
|
|
4
|
+
interface IProps extends IChildrenProps, Omit<ComponentProps<typeof Checkbox>, "children" | "upperCase"> {
|
|
5
|
+
orientation?: "horizontal" | "vertical";
|
|
6
|
+
}
|
|
7
|
+
export default IProps;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import IProps from "./Props";
|
|
3
|
+
import "../../../assets/css/components/form/checkbox-card/styles.css";
|
|
4
|
+
declare const CheckboxCard: {
|
|
5
|
+
({ children, variant, color, border, orientation, ...attributes }: IProps): React.JSX.Element;
|
|
6
|
+
displayName: string;
|
|
7
|
+
Title({ children }: {
|
|
8
|
+
children: string;
|
|
9
|
+
}): React.JSX.Element;
|
|
10
|
+
Description({ children }: {
|
|
11
|
+
children: string;
|
|
12
|
+
}): React.JSX.Element;
|
|
13
|
+
};
|
|
14
|
+
export default CheckboxCard;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React, { useState } from "react";
|
|
3
|
+
import Checkbox from "../checkbox";
|
|
4
|
+
import Flex from "../../data-display/grid-system/flex/Flex";
|
|
5
|
+
import Utils from "../../../libs/infrastructure/shared/Utils";
|
|
6
|
+
import "../../../assets/css/components/form/checkbox-card/styles.css";
|
|
7
|
+
import Title from "../../data-display/typography/title/Title";
|
|
8
|
+
import Paragraph from "../../data-display/typography/paragraph/Paragraph";
|
|
9
|
+
const CheckboxCard = function ({ children, variant = "surface", color = "blue", border = { radius: "6" }, orientation, ...attributes }) {
|
|
10
|
+
// states
|
|
11
|
+
const [internalChecked, setInternalChecked] = useState(attributes.defaultChecked ?? false);
|
|
12
|
+
// controlled / uncontrolled ayrımı
|
|
13
|
+
const isControlled = attributes.checked !== undefined;
|
|
14
|
+
const isChecked = isControlled ? (attributes.checked ?? false) : internalChecked;
|
|
15
|
+
// methods
|
|
16
|
+
const getCardClassName = (checked) => {
|
|
17
|
+
const classNames = ["har-checkbox-card", checked ? "checked" : "unchecked"];
|
|
18
|
+
classNames.push(...Utils.GetClassName(attributes.disabled ? "surface-borderless" : variant, undefined, attributes.disabled ? "gray" : color, border, undefined, undefined, undefined));
|
|
19
|
+
return classNames.join(" ");
|
|
20
|
+
};
|
|
21
|
+
const handleChange = (event) => {
|
|
22
|
+
const nextChecked = event.target.checked;
|
|
23
|
+
if (!isControlled)
|
|
24
|
+
setInternalChecked(nextChecked);
|
|
25
|
+
attributes.onChange?.({
|
|
26
|
+
...event,
|
|
27
|
+
target: { ...event.target, checked: nextChecked },
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
return (React.createElement("div", { className: "har-checkbox-card-wrapper" },
|
|
31
|
+
React.createElement("div", { className: getCardClassName(isChecked) },
|
|
32
|
+
React.createElement(Flex, { flexDirection: "row", justifyContent: "space-between", alignItems: "center", gap: "var(--space-16)" },
|
|
33
|
+
React.createElement(Flex, { flexDirection: orientation == "horizontal" ? "row" : "column" }, children),
|
|
34
|
+
React.createElement(Checkbox, { variant: "filled", color: color, checked: isChecked, onChange: handleChange, disabled: attributes.disabled })))));
|
|
35
|
+
};
|
|
36
|
+
CheckboxCard.displayName = "CheckboxCard";
|
|
37
|
+
export default CheckboxCard;
|
|
38
|
+
CheckboxCard.Title = ({ children }) => (React.createElement(Title, { Level: "h4", style: { fontWeight: 600 } }, children));
|
|
39
|
+
CheckboxCard.Description = ({ children }) => React.createElement(Paragraph, { size: "xs" }, children);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComponentProps, ReactElement } from "react";
|
|
2
|
+
import Checkbox from "../checkbox";
|
|
3
|
+
import { IValidationProps } from "../../../libs/infrastructure/types/IGlobalProps";
|
|
4
|
+
import CheckboxCard from "../checkbox-card";
|
|
5
|
+
type Props = {
|
|
6
|
+
children: ReactElement<typeof Checkbox | typeof CheckboxCard> | ReactElement<typeof Checkbox | typeof CheckboxCard>[];
|
|
7
|
+
columns?: number;
|
|
8
|
+
orientation?: "horizontal" | "vertical";
|
|
9
|
+
} & Omit<ComponentProps<typeof Checkbox>, "children"> & IValidationProps;
|
|
10
|
+
export default Props;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React, { useEffect, useState } from "react";
|
|
3
|
+
import Alert from "../../feedback/alert";
|
|
4
|
+
import Checkbox from "../checkbox";
|
|
5
|
+
import Flex from "../../data-display/grid-system/flex/Flex";
|
|
6
|
+
import Title from "../../data-display/typography/title/Title";
|
|
7
|
+
import CheckboxCard from "../checkbox-card";
|
|
8
|
+
const CheckboxGroup = ({ children, title, columns, orientation, validation, ...groupProps }) => {
|
|
9
|
+
// states
|
|
10
|
+
const [error, setError] = useState(null);
|
|
11
|
+
// methods
|
|
12
|
+
const renderChildren = () => {
|
|
13
|
+
if (error)
|
|
14
|
+
return React.createElement(Alert, { status: "danger", message: error });
|
|
15
|
+
return React.Children.map(children, (child) => {
|
|
16
|
+
if (React.isValidElement(child)) {
|
|
17
|
+
const childProps = child.props;
|
|
18
|
+
const clonedChild = React.cloneElement(child, {
|
|
19
|
+
...groupProps,
|
|
20
|
+
...child.props,
|
|
21
|
+
color: validation?.text ? "red" : childProps.color || groupProps.color,
|
|
22
|
+
});
|
|
23
|
+
if (columns) {
|
|
24
|
+
return React.createElement(Flex, { flex: `0 0 calc(${100 / columns}% - var(--space-16))` }, clonedChild);
|
|
25
|
+
}
|
|
26
|
+
return clonedChild;
|
|
27
|
+
}
|
|
28
|
+
return child;
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
// useEffects
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
try {
|
|
34
|
+
React.Children.forEach(children, (child) => {
|
|
35
|
+
if (!React.isValidElement(child) || (child.type !== Checkbox && child.type !== CheckboxCard)) {
|
|
36
|
+
throw new Error("It can only have (Checkbox || CheckboxCard) elements as children.");
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
setError(null);
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
if (err instanceof Error) {
|
|
43
|
+
setError(err.message);
|
|
44
|
+
console.error(err.message);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}, [children]);
|
|
48
|
+
return (React.createElement(Flex, { flexDirection: "column", gap: "var(--space-16)" },
|
|
49
|
+
title && React.createElement(Title, { Level: "h4" }, title),
|
|
50
|
+
React.createElement(Flex, { flexWrap: columns ? "wrap" : "nowrap", flexDirection: orientation == "horizontal" ? "row" : "column", justifyContent: "space-between", gap: "var(--space-6)" }, renderChildren()),
|
|
51
|
+
validation?.text && React.createElement("div", { className: "har-validation-text" }, validation.text)));
|
|
52
|
+
};
|
|
53
|
+
CheckboxGroup.displayName = "CheckboxGroup";
|
|
54
|
+
export default CheckboxGroup;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
import Input from "../input";
|
|
3
|
+
interface IProps extends Omit<ComponentProps<typeof Input>, "onChange"> {
|
|
3
4
|
onChange: (value: string) => void;
|
|
4
5
|
config?: {
|
|
5
6
|
locale?: Intl.LocalesArgument;
|
|
6
7
|
isClock?: boolean;
|
|
7
8
|
isFooterButton?: boolean;
|
|
8
9
|
};
|
|
9
|
-
}
|
|
10
|
-
export default
|
|
10
|
+
}
|
|
11
|
+
export default IProps;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import "../../../assets/css/components/form/date-picker/date-picker.css";
|
|
3
|
-
import
|
|
4
|
-
declare const DatePicker: React.FC<
|
|
3
|
+
import IProps from "./Props";
|
|
4
|
+
declare const DatePicker: React.FC<IProps>;
|
|
5
5
|
export default DatePicker;
|