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.
- package/dist/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/components/Checkbox/Checkbox.js +6 -13
- package/dist/components/Checkbox/Checkbox.styled.js +2 -17
- package/dist/components/Checkbox/Checkbox.test.js +28 -3
- package/dist/components/Checkbox/CheckboxIndicator.d.ts +10 -0
- package/dist/components/Checkbox/CheckboxIndicator.js +30 -0
- package/dist/components/Checkbox/props.d.ts +0 -3
- package/dist/components/Modal/Modal.js +11 -20
- package/dist/components/Modal/Modal.test.d.ts +1 -0
- package/dist/components/Modal/Modal.test.js +62 -0
- package/dist/components/Modal/core/bodyScrollLock.d.ts +4 -0
- package/dist/components/Modal/core/bodyScrollLock.js +30 -0
- package/dist/components/Modal/stories/Modal.stories.d.ts +17 -0
- package/dist/components/Modal/stories/Modal.stories.js +14 -1
- package/dist/components/RadioButton/RadioButton.test.d.ts +1 -0
- package/dist/components/RadioButton/RadioButton.test.js +97 -0
- package/dist/components/RadioButton/RadioIndicator.d.ts +10 -0
- package/dist/components/RadioButton/RadioIndicator.js +36 -0
- package/dist/components/RadioButton/RadioIndicator.styled.d.ts +2 -0
- package/dist/components/RadioButton/RadioIndicator.styled.js +11 -0
- package/dist/components/RadioButton/layouts/basic/Basic.d.ts +1 -1
- package/dist/components/RadioButton/layouts/basic/Basic.js +6 -4
- package/dist/components/RadioButton/layouts/basic/Basic.styled.js +3 -5
- package/dist/components/RadioButton/layouts/boxed/Boxed.d.ts +1 -1
- package/dist/components/RadioButton/layouts/boxed/Boxed.js +3 -4
- package/dist/components/RadioButton/layouts/boxed/Boxed.styled.js +3 -5
- package/dist/components/RadioButton/layouts/boxedMd/BoxedMd.d.ts +1 -1
- package/dist/components/RadioButton/layouts/boxedMd/BoxedMd.js +6 -4
- package/dist/components/RadioButton/layouts/boxedMd/BoxedMd.styled.js +3 -5
- package/dist/components/RadioButton/layouts/boxedSm/BoxedSm.d.ts +1 -1
- package/dist/components/RadioButton/layouts/boxedSm/BoxedSm.js +6 -4
- package/dist/components/RadioButton/layouts/boxedSm/BoxedSm.styled.js +3 -5
- package/dist/components/RadioButton/layouts/boxedWithIcon/BoxedWithIcon.d.ts +1 -1
- package/dist/components/RadioButton/layouts/boxedWithIcon/BoxedWithIcon.js +3 -3
- package/dist/components/RadioButton/layouts/boxedWithIcon/BoxedWithIcon.styled.js +3 -5
- package/dist/components/RadioButton/layouts/horizontal/Horizontal.js +3 -4
- package/dist/components/RadioButton/layouts/horizontal/Horizontal.styled.d.ts +0 -1
- package/dist/components/RadioButton/layouts/horizontal/Horizontal.styled.js +28 -24
- package/dist/components/RadioButton/props.d.ts +0 -1
- package/dist/style/style.min.css +1 -1
- package/dist/style/style.min.css.map +1 -1
- package/dist/utils/getRootCssVariable.d.ts +0 -1
- package/dist/utils/getRootCssVariable.js +1 -2
- 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
|
|
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
|
|
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
|
|
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('
|
|
35
|
-
renderCheckbox({
|
|
36
|
-
|
|
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),
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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,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,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;
|