krl-alfred 2.24.3 → 2.24.4

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 (44) hide show
  1. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  2. package/dist/components/Checkbox/Checkbox.js +6 -13
  3. package/dist/components/Checkbox/Checkbox.styled.js +2 -17
  4. package/dist/components/Checkbox/Checkbox.test.js +28 -3
  5. package/dist/components/Checkbox/CheckboxIndicator.d.ts +10 -0
  6. package/dist/components/Checkbox/CheckboxIndicator.js +30 -0
  7. package/dist/components/Checkbox/props.d.ts +0 -3
  8. package/dist/components/Modal/Modal.js +11 -20
  9. package/dist/components/Modal/Modal.test.d.ts +1 -0
  10. package/dist/components/Modal/Modal.test.js +62 -0
  11. package/dist/components/Modal/core/bodyScrollLock.d.ts +4 -0
  12. package/dist/components/Modal/core/bodyScrollLock.js +30 -0
  13. package/dist/components/Modal/stories/Modal.stories.d.ts +17 -0
  14. package/dist/components/Modal/stories/Modal.stories.js +14 -1
  15. package/dist/components/RadioButton/RadioButton.test.d.ts +1 -0
  16. package/dist/components/RadioButton/RadioButton.test.js +97 -0
  17. package/dist/components/RadioButton/RadioIndicator.d.ts +10 -0
  18. package/dist/components/RadioButton/RadioIndicator.js +36 -0
  19. package/dist/components/RadioButton/RadioIndicator.styled.d.ts +2 -0
  20. package/dist/components/RadioButton/RadioIndicator.styled.js +11 -0
  21. package/dist/components/RadioButton/layouts/basic/Basic.d.ts +1 -1
  22. package/dist/components/RadioButton/layouts/basic/Basic.js +6 -4
  23. package/dist/components/RadioButton/layouts/basic/Basic.styled.js +3 -5
  24. package/dist/components/RadioButton/layouts/boxed/Boxed.d.ts +1 -1
  25. package/dist/components/RadioButton/layouts/boxed/Boxed.js +3 -4
  26. package/dist/components/RadioButton/layouts/boxed/Boxed.styled.js +3 -5
  27. package/dist/components/RadioButton/layouts/boxedMd/BoxedMd.d.ts +1 -1
  28. package/dist/components/RadioButton/layouts/boxedMd/BoxedMd.js +6 -4
  29. package/dist/components/RadioButton/layouts/boxedMd/BoxedMd.styled.js +3 -5
  30. package/dist/components/RadioButton/layouts/boxedSm/BoxedSm.d.ts +1 -1
  31. package/dist/components/RadioButton/layouts/boxedSm/BoxedSm.js +6 -4
  32. package/dist/components/RadioButton/layouts/boxedSm/BoxedSm.styled.js +3 -5
  33. package/dist/components/RadioButton/layouts/boxedWithIcon/BoxedWithIcon.d.ts +1 -1
  34. package/dist/components/RadioButton/layouts/boxedWithIcon/BoxedWithIcon.js +3 -3
  35. package/dist/components/RadioButton/layouts/boxedWithIcon/BoxedWithIcon.styled.js +3 -5
  36. package/dist/components/RadioButton/layouts/horizontal/Horizontal.js +3 -4
  37. package/dist/components/RadioButton/layouts/horizontal/Horizontal.styled.d.ts +0 -1
  38. package/dist/components/RadioButton/layouts/horizontal/Horizontal.styled.js +28 -24
  39. package/dist/components/RadioButton/props.d.ts +0 -1
  40. package/dist/style/style.min.css +1 -1
  41. package/dist/style/style.min.css.map +1 -1
  42. package/dist/utils/getRootCssVariable.d.ts +0 -1
  43. package/dist/utils/getRootCssVariable.js +1 -2
  44. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { CheckboxProps } from "./props";
3
- declare const Checkbox: ({ value, checked, onChange, name, id, label, disabled, size, valid, labelOffset, textSize, verticalAlign, required, readOnly, isCheckable, variant, }: CheckboxProps) => import("react").JSX.Element;
3
+ declare const Checkbox: ({ value, checked, onChange, name, id, label, disabled, size, valid, labelOffset, textSize, verticalAlign, required, readOnly, isCheckable, variant, color, }: CheckboxProps) => import("react").JSX.Element;
4
4
  export default Checkbox;
@@ -10,36 +10,29 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
13
16
  Object.defineProperty(exports, "__esModule", { value: true });
14
17
  var jsx_runtime_1 = require("react/jsx-runtime");
15
18
  var props_1 = require("./props");
16
19
  var Checkbox_styled_1 = require("./Checkbox.styled");
17
20
  var react_i18next_1 = require("react-i18next");
18
- var getRootCssVariable_1 = require("../../utils/getRootCssVariable");
19
- var getCheckedColor = function (variant) {
20
- if (variant === "success") {
21
- return (0, getRootCssVariable_1.getRootCssVariable)("--green", "#0FDF7B");
22
- }
23
- return (0, getRootCssVariable_1.getPrimaryColor)();
24
- };
21
+ var CheckboxIndicator_1 = __importDefault(require("./CheckboxIndicator"));
25
22
  var Checkbox = function (_a) {
26
- var _b = _a.value, value = _b === void 0 ? props_1.CheckboxDefault.value : _b, _c = _a.checked, checked = _c === void 0 ? props_1.CheckboxDefault.checked : _c, _d = _a.onChange, onChange = _d === void 0 ? props_1.CheckboxDefault.onChange : _d, _e = _a.name, name = _e === void 0 ? props_1.CheckboxDefault.name : _e, _f = _a.id, id = _f === void 0 ? props_1.CheckboxDefault.id : _f, _g = _a.label, label = _g === void 0 ? props_1.CheckboxDefault.label : _g, _h = _a.disabled, disabled = _h === void 0 ? props_1.CheckboxDefault.disabled : _h, _j = _a.size, size = _j === void 0 ? props_1.CheckboxDefault.size : _j, _k = _a.valid, valid = _k === void 0 ? props_1.CheckboxDefault.valid : _k, _l = _a.labelOffset, labelOffset = _l === void 0 ? props_1.CheckboxDefault.labelOffset : _l, _m = _a.textSize, textSize = _m === void 0 ? props_1.CheckboxDefault.textSize : _m, _o = _a.verticalAlign, verticalAlign = _o === void 0 ? props_1.CheckboxDefault.verticalAlign : _o, _p = _a.required, required = _p === void 0 ? props_1.CheckboxDefault.required : _p, _q = _a.readOnly, readOnly = _q === void 0 ? props_1.CheckboxDefault.readOnly : _q, _r = _a.isCheckable, isCheckable = _r === void 0 ? props_1.CheckboxDefault.isCheckable : _r, _s = _a.variant, variant = _s === void 0 ? props_1.CheckboxDefault.variant : _s;
23
+ var _b = _a.value, value = _b === void 0 ? props_1.CheckboxDefault.value : _b, _c = _a.checked, checked = _c === void 0 ? props_1.CheckboxDefault.checked : _c, _d = _a.onChange, onChange = _d === void 0 ? props_1.CheckboxDefault.onChange : _d, _e = _a.name, name = _e === void 0 ? props_1.CheckboxDefault.name : _e, _f = _a.id, id = _f === void 0 ? props_1.CheckboxDefault.id : _f, _g = _a.label, label = _g === void 0 ? props_1.CheckboxDefault.label : _g, _h = _a.disabled, disabled = _h === void 0 ? props_1.CheckboxDefault.disabled : _h, _j = _a.size, size = _j === void 0 ? props_1.CheckboxDefault.size : _j, _k = _a.valid, valid = _k === void 0 ? props_1.CheckboxDefault.valid : _k, _l = _a.labelOffset, labelOffset = _l === void 0 ? props_1.CheckboxDefault.labelOffset : _l, _m = _a.textSize, textSize = _m === void 0 ? props_1.CheckboxDefault.textSize : _m, _o = _a.verticalAlign, verticalAlign = _o === void 0 ? props_1.CheckboxDefault.verticalAlign : _o, _p = _a.required, required = _p === void 0 ? props_1.CheckboxDefault.required : _p, _q = _a.readOnly, readOnly = _q === void 0 ? props_1.CheckboxDefault.readOnly : _q, _r = _a.isCheckable, isCheckable = _r === void 0 ? props_1.CheckboxDefault.isCheckable : _r, _s = _a.variant, variant = _s === void 0 ? props_1.CheckboxDefault.variant : _s, _t = _a.color, color = _t === void 0 ? props_1.CheckboxDefault.color : _t;
27
24
  var t = (0, react_i18next_1.useTranslation)().t;
28
- var checkedColor = getCheckedColor(variant);
29
25
  var styledProps = {
30
26
  disabled: disabled,
31
27
  checked: checked,
32
28
  $size: size,
33
29
  $valid: valid,
34
30
  $labelOffset: labelOffset,
35
- $color: (0, getRootCssVariable_1.getPrimaryColor)(),
36
- $checkedColor: checkedColor,
37
- $variant: variant,
38
31
  $textSize: textSize,
39
32
  $verticalAlign: verticalAlign,
40
33
  $required: required,
41
34
  $isCheckable: isCheckable,
42
35
  };
43
- return ((0, jsx_runtime_1.jsxs)(Checkbox_styled_1.CheckboxWrapper, __assign({ htmlFor: id }, styledProps, { children: [(0, jsx_runtime_1.jsx)(Checkbox_styled_1.CheckboxInput, __assign({}, styledProps, { id: id, type: "checkbox", name: name, value: value, disabled: disabled, checked: checked, onChange: onChange, readOnly: readOnly })), (0, jsx_runtime_1.jsx)(Checkbox_styled_1.CheckboxIndicator, __assign({}, styledProps)), label && ((0, jsx_runtime_1.jsx)(Checkbox_styled_1.LabelsWrapper, __assign({}, styledProps, { children: (0, jsx_runtime_1.jsxs)(Checkbox_styled_1.CheckboxLabel, __assign({}, styledProps, { htmlFor: id }, { children: [label, " ", !required && (0, jsx_runtime_1.jsxs)("b", { children: ["(", t("OPTIONAL"), ")"] })] })) })))] })));
36
+ return ((0, jsx_runtime_1.jsxs)(Checkbox_styled_1.CheckboxWrapper, __assign({ htmlFor: id }, styledProps, { children: [(0, jsx_runtime_1.jsx)(Checkbox_styled_1.CheckboxInput, __assign({}, styledProps, { id: id, type: "checkbox", name: name, value: value, disabled: disabled, checked: checked, onChange: onChange, readOnly: readOnly })), (0, jsx_runtime_1.jsx)(Checkbox_styled_1.CheckboxIndicator, __assign({}, styledProps, { children: (0, jsx_runtime_1.jsx)(CheckboxIndicator_1.default, { disabled: disabled, valid: valid, color: color, variant: variant }) })), label && ((0, jsx_runtime_1.jsx)(Checkbox_styled_1.LabelsWrapper, __assign({}, styledProps, { children: (0, jsx_runtime_1.jsxs)(Checkbox_styled_1.CheckboxLabel, __assign({}, styledProps, { htmlFor: id }, { children: [label, " ", !required && (0, jsx_runtime_1.jsxs)("b", { children: ["(", t("OPTIONAL"), ")"] })] })) })))] })));
44
37
  };
45
38
  exports.default = Checkbox;
@@ -8,10 +8,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
8
8
  };
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.CheckboxLabel = exports.LabelsWrapper = exports.CheckboxInput = exports.CheckboxIndicator = exports.CheckboxWrapper = void 0;
11
- var jsx_runtime_1 = require("react/jsx-runtime");
12
11
  var styled_components_1 = __importDefault(require("styled-components"));
13
- var Icon_1 = __importDefault(require("../Icon/Icon"));
14
- var svgToBase64_1 = __importDefault(require("./../../utils/svgToBase64"));
15
12
  var getIndicatorSize = function (size) {
16
13
  switch (size) {
17
14
  case 'medium':
@@ -35,18 +32,6 @@ var getLabelFont = function (textSize) {
35
32
  return 'var(--body-semi-bold-14-17)';
36
33
  }
37
34
  };
38
- var getUncheckedBackground = function (props) {
39
- if (props.disabled) {
40
- return (0, svgToBase64_1.default)((0, jsx_runtime_1.jsx)(Icon_1.default, { hasWrapper: false, color: "#C2C3CE", name: "CheckboxElementDisabled" }));
41
- }
42
- if (props.$valid) {
43
- return (0, svgToBase64_1.default)((0, jsx_runtime_1.jsx)(Icon_1.default, { hasWrapper: false, color: props.$color, name: "CheckboxElementUncheck" }));
44
- }
45
- return (0, svgToBase64_1.default)((0, jsx_runtime_1.jsx)(Icon_1.default, { hasWrapper: false, color: "#FF1F1F", name: "CheckboxElementInvalid" }));
46
- };
47
- var getCheckedBackground = function (props) {
48
- return (0, svgToBase64_1.default)((0, jsx_runtime_1.jsx)(Icon_1.default, { hasWrapper: false, color: props.$checkedColor || props.$color, name: "CheckboxElementChecked" }));
49
- };
50
35
  var getCheckboxCursor = function (props) {
51
36
  if (props.disabled || props.$isCheckable === false) {
52
37
  return 'default';
@@ -54,8 +39,8 @@ var getCheckboxCursor = function (props) {
54
39
  return 'pointer';
55
40
  };
56
41
  exports.CheckboxWrapper = styled_components_1.default.label(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n flex: 1;\n position: relative;\n align-items: ", ";\n justify-content: flex-start;\n display: grid;\n grid-template-columns: auto 1fr;\n cursor: ", ";\n"], ["\n flex: 1;\n position: relative;\n align-items: ", ";\n justify-content: flex-start;\n display: grid;\n grid-template-columns: auto 1fr;\n cursor: ", ";\n"])), function (props) { return props.$verticalAlign; }, function (props) { return getCheckboxCursor(props); });
57
- exports.CheckboxIndicator = styled_components_1.default.span(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-image: url('", "');\n background-size: 100% 100%;\n display: block;\n position: relative;\n flex-shrink: 0;\n margin: ", " ", " 0 0;\n width: ", ";\n height: ", ";\n cursor: ", ";\n"], ["\n background-image: url('", "');\n background-size: 100% 100%;\n display: block;\n position: relative;\n flex-shrink: 0;\n margin: ", " ", " 0 0;\n width: ", ";\n height: ", ";\n cursor: ", ";\n"])), function (props) { return getUncheckedBackground(props); }, function (props) { return props.$verticalAlign === "flex-start" ? "1px" : 0; }, function (props) { return props.$labelOffset; }, function (props) { return getIndicatorSize(props.$size); }, function (props) { return getIndicatorSize(props.$size); }, function (props) { return getCheckboxCursor(props); });
58
- exports.CheckboxInput = styled_components_1.default.input(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n height: 0;\n width: 0;\n opacity: 0;\n z-index: -1;\n position: absolute;\n\n &:checked:not(:disabled) + ", " {\n background-image: url('", "');\n }\n"], ["\n height: 0;\n width: 0;\n opacity: 0;\n z-index: -1;\n position: absolute;\n\n &:checked:not(:disabled) + ", " {\n background-image: url('", "');\n }\n"])), exports.CheckboxIndicator, function (props) { return getCheckedBackground(props); });
42
+ exports.CheckboxIndicator = styled_components_1.default.span(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: block;\n position: relative;\n flex-shrink: 0;\n margin: ", " ", " 0 0;\n width: ", ";\n height: ", ";\n cursor: ", ";\n\n svg {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .checkbox-indicator-checked {\n display: none;\n }\n\n .checkbox-indicator-idle {\n display: block;\n }\n"], ["\n display: block;\n position: relative;\n flex-shrink: 0;\n margin: ", " ", " 0 0;\n width: ", ";\n height: ", ";\n cursor: ", ";\n\n svg {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .checkbox-indicator-checked {\n display: none;\n }\n\n .checkbox-indicator-idle {\n display: block;\n }\n"])), function (props) { return props.$verticalAlign === "flex-start" ? "1px" : 0; }, function (props) { return props.$labelOffset; }, function (props) { return getIndicatorSize(props.$size); }, function (props) { return getIndicatorSize(props.$size); }, function (props) { return getCheckboxCursor(props); });
43
+ exports.CheckboxInput = styled_components_1.default.input(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n height: 0;\n width: 0;\n opacity: 0;\n z-index: -1;\n position: absolute;\n\n &:checked:not(:disabled) + ", " {\n .checkbox-indicator-checked {\n display: block;\n }\n\n .checkbox-indicator-idle {\n display: none;\n }\n }\n"], ["\n height: 0;\n width: 0;\n opacity: 0;\n z-index: -1;\n position: absolute;\n\n &:checked:not(:disabled) + ", " {\n .checkbox-indicator-checked {\n display: block;\n }\n\n .checkbox-indicator-idle {\n display: none;\n }\n }\n"])), exports.CheckboxIndicator);
59
44
  exports.LabelsWrapper = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n position: relative;\n display: grid;\n row-gap: 8px;\n cursor: ", ";\n margin: 0;\n color: ", ";\n\n * {\n ", ";\n }\n"], ["\n position: relative;\n display: grid;\n row-gap: 8px;\n cursor: ", ";\n margin: 0;\n color: ", ";\n\n * {\n ", ";\n }\n"])), function (props) { return getCheckboxCursor(props); }, function (props) {
60
45
  if (props.disabled)
61
46
  return 'var(--dark-opacity-25)';
@@ -16,6 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  var jsx_runtime_1 = require("react/jsx-runtime");
18
18
  var react_1 = require("@testing-library/react");
19
+ var server_1 = require("react-dom/server");
19
20
  var Checkbox_1 = __importDefault(require("./Checkbox"));
20
21
  var props_1 = require("./props");
21
22
  var renderCheckbox = function (props) {
@@ -31,8 +32,32 @@ describe('Checkbox', function () {
31
32
  var container = renderCheckbox({ isCheckable: false }).container;
32
33
  expect(container.querySelector('label')).toHaveStyle({ cursor: 'default' });
33
34
  });
34
- it('renders success variant when checked', function () {
35
- renderCheckbox({ variant: 'success', checked: true });
36
- expect(react_1.screen.getByText('Seçenek')).toBeInTheDocument();
35
+ it('paints the checked indicator with var(--primary) instead of a resolved hex', function () {
36
+ var container = renderCheckbox({ checked: true, onChange: jest.fn() }).container;
37
+ var checkedSvg = container.querySelector('.checkbox-indicator-checked svg');
38
+ expect(checkedSvg).toHaveAttribute('color', 'var(--primary)');
39
+ });
40
+ it('paints the success variant with var(--green)', function () {
41
+ var container = renderCheckbox({
42
+ variant: 'success',
43
+ checked: true,
44
+ onChange: jest.fn(),
45
+ }).container;
46
+ var checkedSvg = container.querySelector('.checkbox-indicator-checked svg');
47
+ expect(checkedSvg).toHaveAttribute('color', 'var(--green)');
48
+ });
49
+ it('uses the color prop as an SSR-safe override', function () {
50
+ var container = renderCheckbox({
51
+ checked: true,
52
+ color: '#00aa88',
53
+ onChange: jest.fn(),
54
+ }).container;
55
+ var checkedSvg = container.querySelector('.checkbox-indicator-checked svg');
56
+ expect(checkedSvg).toHaveAttribute('color', '#00aa88');
57
+ });
58
+ it('does not snapshot indicator SVGs into data URIs', function () {
59
+ var html = (0, server_1.renderToString)((0, jsx_runtime_1.jsx)(Checkbox_1.default, __assign({}, props_1.CheckboxDefault, { id: "ssr-checkbox", label: "Se\u00E7enek", checked: true, onChange: function () { return undefined; } })));
60
+ expect(html).toContain('var(--primary)');
61
+ expect(html).not.toContain('data:image/svg+xml');
37
62
  });
38
63
  });
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { CheckboxProps } from "./props";
3
+ type CheckboxIndicatorIconsProps = {
4
+ disabled?: boolean;
5
+ valid?: boolean;
6
+ color?: string;
7
+ variant?: CheckboxProps["variant"];
8
+ };
9
+ declare const CheckboxIndicatorIcons: ({ disabled, valid, color, variant, }: CheckboxIndicatorIconsProps) => React.JSX.Element;
10
+ export default CheckboxIndicatorIcons;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var Icon_1 = __importDefault(require("../Icon/Icon"));
19
+ var CheckboxIndicatorIcons = function (_a) {
20
+ var disabled = _a.disabled, _b = _a.valid, valid = _b === void 0 ? true : _b, color = _a.color, variant = _a.variant;
21
+ var checkedColor = color || (variant === "success" ? "var(--green)" : "var(--primary)");
22
+ var idleName = disabled
23
+ ? "CheckboxElementDisabled"
24
+ : valid
25
+ ? "CheckboxElementUncheck"
26
+ : "CheckboxElementInvalid";
27
+ var idleColor = disabled || valid ? "currentColor" : "var(--red)";
28
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", __assign({ className: "checkbox-indicator-idle", "aria-hidden": true }, { children: (0, jsx_runtime_1.jsx)(Icon_1.default, { hasWrapper: false, name: idleName, color: idleColor }) })), (0, jsx_runtime_1.jsx)("span", __assign({ className: "checkbox-indicator-checked", "aria-hidden": true }, { children: (0, jsx_runtime_1.jsx)(Icon_1.default, { hasWrapper: false, name: "CheckboxElementChecked", color: checkedColor }) }))] }));
29
+ };
30
+ exports.default = CheckboxIndicatorIcons;
@@ -37,12 +37,9 @@ export interface CheckboxStyledProps {
37
37
  name?: string;
38
38
  id?: string;
39
39
  label?: React.ReactNode;
40
- $color?: string;
41
40
  $verticalAlign?: string;
42
41
  $required?: boolean;
43
42
  $isCheckable?: boolean;
44
- $variant?: VARIANT;
45
- $checkedColor?: string;
46
43
  }
47
44
  export declare const CheckboxDefault: Checkbox;
48
45
  export type CheckboxProps = typeof CheckboxDefault;
@@ -36,36 +36,27 @@ var Divider_1 = __importDefault(require("../Divider"));
36
36
  var TextLink_1 = __importDefault(require("../TextLink"));
37
37
  var useOnClickOutside_1 = __importDefault(require("../../hooks/useOnClickOutside"));
38
38
  var react_i18next_1 = require("react-i18next");
39
+ var bodyScrollLock_1 = require("./core/bodyScrollLock");
39
40
  var Modal = function (_a) {
40
41
  var _b = _a.size, size = _b === void 0 ? props_1.ModalDefault.size : _b, _c = _a.showCloseIcon, showCloseIcon = _c === void 0 ? props_1.ModalDefault.showCloseIcon : _c, _d = _a.showSkipButton, showSkipButton = _d === void 0 ? props_1.ModalDefault.showSkipButton : _d, _e = _a.skipButtonText, skipButtonText = _e === void 0 ? props_1.ModalDefault.skipButtonText : _e, _f = _a.onSkip, onSkip = _f === void 0 ? props_1.ModalDefault.onSkip : _f, _g = _a.showBackIcon, showBackIcon = _g === void 0 ? props_1.ModalDefault.showBackIcon : _g, _h = _a.backIconType, backIconType = _h === void 0 ? props_1.ModalDefault.backIconType : _h, _j = _a.hasCloseOnOutsideClick, hasCloseOnOutsideClick = _j === void 0 ? props_1.ModalDefault.hasCloseOnOutsideClick : _j, _k = _a.onClose, onClose = _k === void 0 ? props_1.ModalDefault.onClose : _k, _l = _a.onBack, onBack = _l === void 0 ? props_1.ModalDefault.onBack : _l, _m = _a.show, show = _m === void 0 ? props_1.ModalDefault.show : _m, _o = _a.showDivider, showDivider = _o === void 0 ? props_1.ModalDefault.showDivider : _o, _p = _a.title, title = _p === void 0 ? props_1.ModalDefault.title : _p, _q = _a.children, children = _q === void 0 ? props_1.ModalDefault.children : _q, _r = _a.modalFooter, modalFooter = _r === void 0 ? props_1.ModalDefault.modalFooter : _r, _s = _a.showPrimaryButton, showPrimaryButton = _s === void 0 ? props_1.ModalDefault.showPrimaryButton : _s, _t = _a.showSecondaryButton, showSecondaryButton = _t === void 0 ? props_1.ModalDefault.showSecondaryButton : _t, _u = _a.onPrimaryAction, onPrimaryAction = _u === void 0 ? props_1.ModalDefault.onPrimaryAction : _u, _v = _a.onSecondaryAction, onSecondaryAction = _v === void 0 ? props_1.ModalDefault.onSecondaryAction : _v, _w = _a.buttonsAlignment, buttonsAlignment = _w === void 0 ? props_1.ModalDefault.buttonsAlignment : _w, _x = _a.buttonsAlignmentOnMobile, buttonsAlignmentOnMobile = _x === void 0 ? props_1.ModalDefault.buttonsAlignmentOnMobile : _x, _y = _a.primaryButtonText, primaryButtonText = _y === void 0 ? props_1.ModalDefault.primaryButtonText : _y, _z = _a.secondaryButtonText, secondaryButtonText = _z === void 0 ? props_1.ModalDefault.secondaryButtonText : _z, _0 = _a.showHeaderBorder, showHeaderBorder = _0 === void 0 ? props_1.ModalDefault.showHeaderBorder : _0, _1 = _a.showFooterBorder, showFooterBorder = _1 === void 0 ? props_1.ModalDefault.showFooterBorder : _1, _2 = _a.autoHeight, autoHeight = _2 === void 0 ? props_1.ModalDefault.autoHeight : _2, _3 = _a.titleAlignment, titleAlignment = _3 === void 0 ? props_1.ModalDefault.titleAlignment : _3, _4 = _a.titleDescription, titleDescription = _4 === void 0 ? props_1.ModalDefault.titleDescription : _4, _5 = _a.isPrimaryButtonLoading, isPrimaryButtonLoading = _5 === void 0 ? props_1.ModalDefault.isPrimaryButtonLoading : _5, _6 = _a.primaryButtonIcon, primaryButtonIcon = _6 === void 0 ? props_1.ModalDefault.primaryButtonIcon : _6, _7 = _a.secondaryButtonIcon, secondaryButtonIcon = _7 === void 0 ? props_1.ModalDefault.secondaryButtonIcon : _7, _8 = _a.isSecondaryButtonLoading, isSecondaryButtonLoading = _8 === void 0 ? props_1.ModalDefault.isSecondaryButtonLoading : _8, _9 = _a.isPrimaryButtonDisabled, isPrimaryButtonDisabled = _9 === void 0 ? props_1.ModalDefault.isPrimaryButtonDisabled : _9, _10 = _a.isSecondaryButtonDisabled, isSecondaryButtonDisabled = _10 === void 0 ? props_1.ModalDefault.isSecondaryButtonDisabled : _10, _11 = _a.primaryButtonWidth, primaryButtonWidth = _11 === void 0 ? props_1.ModalDefault.primaryButtonWidth : _11, _12 = _a.secondaryButtonWidth, secondaryButtonWidth = _12 === void 0 ? props_1.ModalDefault.secondaryButtonWidth : _12, _13 = _a.customContent, customContent = _13 === void 0 ? props_1.ModalDefault.customContent : _13, _14 = _a.showHeader, showHeader = _14 === void 0 ? props_1.ModalDefault.showHeader : _14, _15 = _a.id, id = _15 === void 0 ? props_1.ModalDefault.id : _15, _16 = _a.renderInDOM, renderInDOM = _16 === void 0 ? props_1.ModalDefault.renderInDOM : _16, _17 = _a.portalContainer, portalContainer = _17 === void 0 ? props_1.ModalDefault.portalContainer : _17, _18 = _a.hasHeaderMinHeight, hasHeaderMinHeight = _18 === void 0 ? props_1.ModalDefault.hasHeaderMinHeight : _18, other = __rest(_a, ["size", "showCloseIcon", "showSkipButton", "skipButtonText", "onSkip", "showBackIcon", "backIconType", "hasCloseOnOutsideClick", "onClose", "onBack", "show", "showDivider", "title", "children", "modalFooter", "showPrimaryButton", "showSecondaryButton", "onPrimaryAction", "onSecondaryAction", "buttonsAlignment", "buttonsAlignmentOnMobile", "primaryButtonText", "secondaryButtonText", "showHeaderBorder", "showFooterBorder", "autoHeight", "titleAlignment", "titleDescription", "isPrimaryButtonLoading", "primaryButtonIcon", "secondaryButtonIcon", "isSecondaryButtonLoading", "isPrimaryButtonDisabled", "isSecondaryButtonDisabled", "primaryButtonWidth", "secondaryButtonWidth", "customContent", "showHeader", "id", "renderInDOM", "portalContainer", "hasHeaderMinHeight"]);
41
- var generatedId = (0, react_1.useId)();
42
42
  var t = (0, react_i18next_1.useTranslation)().t;
43
43
  var _19 = (0, react_1.useState)(show), showModal = _19[0], setShowModal = _19[1];
44
- var _20 = (0, react_1.useState)(null), uniqueId = _20[0], setUniqueId = _20[1];
45
- var _21 = (0, react_1.useState)(null), defaultPortalContainer = _21[0], setDefaultPortalContainer = _21[1];
46
- (0, react_1.useEffect)(function () {
47
- if (!uniqueId) {
48
- setUniqueId(generatedId);
49
- }
50
- }, [uniqueId, generatedId]);
44
+ var _20 = (0, react_1.useState)(null), defaultPortalContainer = _20[0], setDefaultPortalContainer = _20[1];
51
45
  (0, react_1.useEffect)(function () {
52
46
  setDefaultPortalContainer(document.body);
53
47
  }, []);
54
48
  var resolvedPortalContainer = portalContainer !== null && portalContainer !== void 0 ? portalContainer : defaultPortalContainer;
55
49
  (0, react_1.useEffect)(function () {
56
- if (!uniqueId)
57
- return;
58
50
  setShowModal(show);
59
- var modalClass = "modalActive_".concat(uniqueId);
60
- if (!show) {
61
- if (document.body.classList.contains(modalClass)) {
62
- document.body.classList.remove(modalClass);
63
- }
64
- }
65
- else if (!document.body.classList.contains(modalClass)) {
66
- document.body.classList.add(modalClass);
67
- }
68
- }, [show, uniqueId]);
51
+ }, [show]);
52
+ (0, react_1.useEffect)(function () {
53
+ if (!showModal)
54
+ return undefined;
55
+ (0, bodyScrollLock_1.lockBodyScroll)();
56
+ return function () {
57
+ (0, bodyScrollLock_1.unlockBodyScroll)();
58
+ };
59
+ }, [showModal]);
69
60
  var handleClose = function () {
70
61
  if (onClose) {
71
62
  onClose();
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var react_1 = require("@testing-library/react");
19
+ var Modal_1 = __importDefault(require("./Modal"));
20
+ var props_1 = require("./props");
21
+ var bodyScrollLock_1 = require("./core/bodyScrollLock");
22
+ var modalProps = function (overrides) {
23
+ if (overrides === void 0) { overrides = {}; }
24
+ return (__assign(__assign(__assign({}, props_1.ModalDefault), { title: 'Başlık', showBackIcon: false, showCloseIcon: true, showPrimaryButton: false, showSecondaryButton: false }), overrides));
25
+ };
26
+ var renderModal = function (props) {
27
+ if (props === void 0) { props = {}; }
28
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(Modal_1.default, __assign({}, modalProps(props))));
29
+ };
30
+ describe('Modal body scroll lock', function () {
31
+ afterEach(function () {
32
+ (0, react_1.cleanup)();
33
+ (0, bodyScrollLock_1.resetBodyScrollLock)();
34
+ });
35
+ it('locks body scroll while open', function () {
36
+ renderModal({ onClose: jest.fn() });
37
+ expect(document.body).toHaveClass(bodyScrollLock_1.MODAL_BODY_LOCK_CLASS);
38
+ });
39
+ it('unlocks body scroll when show becomes false', function () {
40
+ var rerender = renderModal({ onClose: jest.fn() }).rerender;
41
+ rerender((0, jsx_runtime_1.jsx)(Modal_1.default, __assign({}, modalProps({ show: false, onClose: jest.fn() }))));
42
+ expect(document.body).not.toHaveClass(bodyScrollLock_1.MODAL_BODY_LOCK_CLASS);
43
+ });
44
+ it('unlocks body scroll when the open modal unmounts', function () {
45
+ var unmount = renderModal({ onClose: jest.fn() }).unmount;
46
+ unmount();
47
+ expect(document.body).not.toHaveClass(bodyScrollLock_1.MODAL_BODY_LOCK_CLASS);
48
+ });
49
+ it('keeps scroll locked while a stacked modal remains open', function () {
50
+ var rerender = (0, react_1.render)((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Modal_1.default, __assign({}, modalProps({ title: 'Bir', showCloseIcon: false }))), (0, jsx_runtime_1.jsx)(Modal_1.default, __assign({}, modalProps({ title: 'İki', showCloseIcon: false })))] })).rerender;
51
+ expect(document.body).toHaveClass(bodyScrollLock_1.MODAL_BODY_LOCK_CLASS);
52
+ rerender((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Modal_1.default, __assign({}, modalProps({ title: 'Bir', showCloseIcon: false }))), (0, jsx_runtime_1.jsx)(Modal_1.default, __assign({}, modalProps({ title: 'İki', show: false, showCloseIcon: false })))] }));
53
+ expect(document.body).toHaveClass(bodyScrollLock_1.MODAL_BODY_LOCK_CLASS);
54
+ rerender((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Modal_1.default, __assign({}, modalProps({ title: 'Bir', show: false, showCloseIcon: false }))), (0, jsx_runtime_1.jsx)(Modal_1.default, __assign({}, modalProps({ title: 'İki', show: false, showCloseIcon: false })))] }));
55
+ expect(document.body).not.toHaveClass(bodyScrollLock_1.MODAL_BODY_LOCK_CLASS);
56
+ });
57
+ it('unlocks body scroll when closed via the close icon without onClose', function () {
58
+ renderModal();
59
+ react_1.fireEvent.click(document.querySelector('.header .icon'));
60
+ expect(document.body).not.toHaveClass(bodyScrollLock_1.MODAL_BODY_LOCK_CLASS);
61
+ });
62
+ });
@@ -0,0 +1,4 @@
1
+ export declare const MODAL_BODY_LOCK_CLASS = "modalActive";
2
+ export declare const lockBodyScroll: () => void;
3
+ export declare const unlockBodyScroll: () => void;
4
+ export declare const resetBodyScrollLock: () => void;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resetBodyScrollLock = exports.unlockBodyScroll = exports.lockBodyScroll = exports.MODAL_BODY_LOCK_CLASS = void 0;
4
+ exports.MODAL_BODY_LOCK_CLASS = 'modalActive';
5
+ var lockCount = 0;
6
+ var lockBodyScroll = function () {
7
+ if (typeof document === 'undefined')
8
+ return;
9
+ lockCount += 1;
10
+ if (lockCount === 1) {
11
+ document.body.classList.add(exports.MODAL_BODY_LOCK_CLASS);
12
+ }
13
+ };
14
+ exports.lockBodyScroll = lockBodyScroll;
15
+ var unlockBodyScroll = function () {
16
+ if (typeof document === 'undefined')
17
+ return;
18
+ lockCount = Math.max(0, lockCount - 1);
19
+ if (lockCount === 0) {
20
+ document.body.classList.remove(exports.MODAL_BODY_LOCK_CLASS);
21
+ }
22
+ };
23
+ exports.unlockBodyScroll = unlockBodyScroll;
24
+ var resetBodyScrollLock = function () {
25
+ lockCount = 0;
26
+ if (typeof document !== 'undefined') {
27
+ document.body.classList.remove(exports.MODAL_BODY_LOCK_CLASS);
28
+ }
29
+ };
30
+ exports.resetBodyScrollLock = resetBodyScrollLock;
@@ -585,3 +585,20 @@ export declare const Interactive: {
585
585
  onClose: (e: any) => void;
586
586
  };
587
587
  };
588
+ export declare const NestedModals: {
589
+ render: (args: any) => React.JSX.Element;
590
+ args: {
591
+ id: string;
592
+ title: string;
593
+ children: React.JSX.Element;
594
+ showBackIcon: boolean;
595
+ showCloseIcon: boolean;
596
+ show: boolean;
597
+ showPrimaryButton: boolean;
598
+ showSecondaryButton: boolean;
599
+ hasCloseOnOutsideClick: boolean;
600
+ primaryButtonText: string;
601
+ secondaryButtonText: string;
602
+ onClose: (e: any) => void;
603
+ };
604
+ };
@@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.Interactive = exports.WithButtonIcons = exports.AutoHeight = exports.VerticalButtons = exports.Hidden = exports.RenderInDOM = exports.WithHeaderAndFooterBorders = exports.WithTitleDescription = exports.TitleCenter = exports.TitleLeft = exports.Minimal = exports.SecondaryButtonDisabled = exports.PrimaryButtonDisabled = exports.SecondaryButtonLoading = exports.PrimaryButtonLoading = exports.WithoutHeader = exports.Large = exports.Medium = exports.Small = exports.XSmall = exports.XXSmall = exports.WithTextLinkBackIcon = exports.WithSkipButtonAndCallback = exports.WithSkipButton = exports.Type6 = exports.Type5 = exports.Type4 = exports.Type3 = exports.Type2 = exports.Type1 = exports.Default = void 0;
17
+ exports.NestedModals = exports.Interactive = exports.WithButtonIcons = exports.AutoHeight = exports.VerticalButtons = exports.Hidden = exports.RenderInDOM = exports.WithHeaderAndFooterBorders = exports.WithTitleDescription = exports.TitleCenter = exports.TitleLeft = exports.Minimal = exports.SecondaryButtonDisabled = exports.PrimaryButtonDisabled = exports.SecondaryButtonLoading = exports.PrimaryButtonLoading = exports.WithoutHeader = exports.Large = exports.Medium = exports.Small = exports.XSmall = exports.XXSmall = exports.WithTextLinkBackIcon = exports.WithSkipButtonAndCallback = exports.WithSkipButton = exports.Type6 = exports.Type5 = exports.Type4 = exports.Type3 = exports.Type2 = exports.Type1 = exports.Default = void 0;
18
18
  var jsx_runtime_1 = require("react/jsx-runtime");
19
19
  var react_1 = __importDefault(require("react"));
20
20
  var Modal_1 = __importDefault(require("../Modal"));
@@ -272,3 +272,16 @@ exports.Interactive = {
272
272
  render: function (args) { return (0, jsx_runtime_1.jsx)(InteractiveStory, __assign({}, args)); },
273
273
  args: __assign(__assign({}, exports.Default.args), { id: "modal_interactive", title: "Interactive Modal", children: (0, jsx_runtime_1.jsx)("div", { children: "A\u00E7/kapa davran\u0131\u015F\u0131n\u0131 buradan test edebilirsin." }) }),
274
274
  };
275
+ var NestedModalsStory = function (args) {
276
+ var _a = react_1.default.useState(false), showOuter = _a[0], setShowOuter = _a[1];
277
+ var _b = react_1.default.useState(false), showInner = _b[0], setShowInner = _b[1];
278
+ var closeOuter = function () {
279
+ setShowInner(false);
280
+ setShowOuter(false);
281
+ };
282
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("button", __assign({ type: "button", onClick: function () { return setShowOuter(true); } }, { children: "D\u0131\u015F modal\u0131 a\u00E7" })), (0, jsx_runtime_1.jsx)(Modal_1.default, __assign({}, args, { show: showOuter, id: "modal_nested_outer", title: "D\u0131\u015F modal", hasCloseOnOutsideClick: !showInner, onClose: closeOuter, onBack: closeOuter, showSecondaryButton: false, primaryButtonText: "\u0130\u00E7 modal\u0131 a\u00E7", onPrimaryAction: function () { return setShowInner(true); } }, { children: (0, jsx_runtime_1.jsx)("div", { children: "\u0130\u00E7 modal\u0131 a\u00E7\u0131nca body scroll kilitli kalmal\u0131. \u0130\u00E7 modal\u0131 kapat\u0131nca bu modal a\u00E7\u0131k kalmal\u0131." }) })), (0, jsx_runtime_1.jsx)(Modal_1.default, __assign({ show: showInner, id: "modal_nested_inner", size: "small", showDivider: false, title: "\u0130\u00E7 modal", showBackIcon: false, showCloseIcon: true, showPrimaryButton: false, showSecondaryButton: false, onClose: function () { return setShowInner(false); } }, { children: (0, jsx_runtime_1.jsx)("div", { children: "Kapat\u0131nca d\u0131\u015F modal duruyor; her ikisi kapan\u0131nca scroll a\u00E7\u0131l\u0131yor." }) }))] }));
283
+ };
284
+ exports.NestedModals = {
285
+ render: function (args) { return (0, jsx_runtime_1.jsx)(NestedModalsStory, __assign({}, args)); },
286
+ args: __assign(__assign({}, exports.Default.args), { id: "modal_nested_outer", title: "Dış modal", children: (0, jsx_runtime_1.jsx)("div", { children: "\u0130\u00E7 i\u00E7e modal \u00F6rne\u011Fi" }) }),
287
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ var jsx_runtime_1 = require("react/jsx-runtime");
54
+ var react_1 = require("@testing-library/react");
55
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
56
+ var server_1 = require("react-dom/server");
57
+ var RadioButton_1 = __importDefault(require("./RadioButton"));
58
+ var renderRadio = function (props) {
59
+ if (props === void 0) { props = {}; }
60
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(RadioButton_1.default, __assign({ id: "radio-test", name: "group", label: "Se\u00E7enek" }, props)));
61
+ };
62
+ describe('RadioButton', function () {
63
+ it('renders a radio input', function () {
64
+ renderRadio();
65
+ expect(react_1.screen.getByRole('radio')).toBeInTheDocument();
66
+ });
67
+ it('paints the checked indicator with var(--primary) instead of a resolved hex', function () {
68
+ var container = renderRadio({ checked: true, onChange: jest.fn() }).container;
69
+ var checkedSvg = container.querySelector('.radio-indicator-checked svg');
70
+ expect(checkedSvg).toHaveAttribute('color', 'var(--primary)');
71
+ });
72
+ it('uses the color prop as an SSR-safe override', function () {
73
+ var container = renderRadio({ checked: true, color: '#00aa88', onChange: jest.fn() }).container;
74
+ var checkedSvg = container.querySelector('.radio-indicator-checked svg');
75
+ expect(checkedSvg).toHaveAttribute('color', '#00aa88');
76
+ });
77
+ it('does not snapshot indicator SVGs into data URIs', function () {
78
+ var html = (0, server_1.renderToString)((0, jsx_runtime_1.jsx)(RadioButton_1.default, { id: "ssr-radio", name: "group", label: "Se\u00E7enek", checked: true, onChange: function () { return undefined; } }));
79
+ expect(html).toContain('var(--primary)');
80
+ expect(html).not.toContain('data:image/svg+xml');
81
+ });
82
+ it('calls onChange when selected', function () { return __awaiter(void 0, void 0, void 0, function () {
83
+ var onChange;
84
+ return __generator(this, function (_a) {
85
+ switch (_a.label) {
86
+ case 0:
87
+ onChange = jest.fn();
88
+ renderRadio({ onChange: onChange });
89
+ return [4 /*yield*/, user_event_1.default.click(react_1.screen.getByRole('radio'))];
90
+ case 1:
91
+ _a.sent();
92
+ expect(onChange).toHaveBeenCalledTimes(1);
93
+ return [2 /*return*/];
94
+ }
95
+ });
96
+ }); });
97
+ });
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ type RadioIndicatorIconsProps = {
3
+ disabled?: boolean;
4
+ valid?: boolean;
5
+ hasError?: boolean;
6
+ color?: string;
7
+ checkedGlyphWhenDisabled?: boolean;
8
+ };
9
+ declare const RadioIndicatorIcons: ({ disabled, valid, hasError, color, checkedGlyphWhenDisabled, }: RadioIndicatorIconsProps) => React.JSX.Element;
10
+ export default RadioIndicatorIcons;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var Icon_1 = __importDefault(require("../Icon/Icon"));
19
+ var RadioIndicatorIcons = function (_a) {
20
+ var disabled = _a.disabled, _b = _a.valid, valid = _b === void 0 ? true : _b, hasError = _a.hasError, color = _a.color, checkedGlyphWhenDisabled = _a.checkedGlyphWhenDisabled;
21
+ var checkedColor = color || "var(--primary)";
22
+ var idleName = disabled
23
+ ? checkedGlyphWhenDisabled
24
+ ? "RadioButtonElementChecked"
25
+ : "RadioButtonElementDisabled"
26
+ : hasError || !valid
27
+ ? "RadioButtonElementInvalid"
28
+ : "RadioButtonElementUnchecked";
29
+ var idleColor = disabled
30
+ ? "var(--dark-opacity-25)"
31
+ : hasError || !valid
32
+ ? "var(--red)"
33
+ : "currentColor";
34
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", __assign({ className: "radio-indicator-idle", "aria-hidden": true }, { children: (0, jsx_runtime_1.jsx)(Icon_1.default, { hasWrapper: false, name: idleName, color: idleColor }) })), (0, jsx_runtime_1.jsx)("span", __assign({ className: "radio-indicator-checked", "aria-hidden": true }, { children: (0, jsx_runtime_1.jsx)(Icon_1.default, { hasWrapper: false, name: "RadioButtonElementChecked", color: checkedColor }) }))] }));
35
+ };
36
+ exports.default = RadioIndicatorIcons;
@@ -0,0 +1,2 @@
1
+ export declare const radioIndicatorIconStyles: import("styled-components").RuleSet<object>;
2
+ export declare const radioIndicatorCheckedStyles: import("styled-components").RuleSet<object>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.radioIndicatorCheckedStyles = exports.radioIndicatorIconStyles = void 0;
8
+ var styled_components_1 = require("styled-components");
9
+ exports.radioIndicatorIconStyles = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n svg {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .radio-indicator-checked {\n display: none;\n }\n\n .radio-indicator-idle {\n display: block;\n }\n"], ["\n svg {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .radio-indicator-checked {\n display: none;\n }\n\n .radio-indicator-idle {\n display: block;\n }\n"])));
10
+ exports.radioIndicatorCheckedStyles = (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n .radio-indicator-checked {\n display: block;\n }\n\n .radio-indicator-idle {\n display: none;\n }\n"], ["\n .radio-indicator-checked {\n display: block;\n }\n\n .radio-indicator-idle {\n display: none;\n }\n"])));
11
+ var templateObject_1, templateObject_2;
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { RadioButtonProps } from "./../../props";
3
- declare const Basic: ({ value, checked, onChange, onClick, name, id, label, disabled, size, description, valid, labelOffset, hasNoneClick, alignment, textSize, verticalAlign, isWrapText, readOnly, isCheckable, showIndicator, }: RadioButtonProps) => React.JSX.Element;
3
+ declare const Basic: ({ value, checked, onChange, onClick, name, id, label, disabled, size, description, valid, labelOffset, hasNoneClick, alignment, textSize, verticalAlign, isWrapText, readOnly, isCheckable, showIndicator, color, }: RadioButtonProps) => React.JSX.Element;
4
4
  export default Basic;