no-frills-ui 0.0.14-alpha.1 → 0.0.14-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -22
- package/dist/index.js +920 -537
- package/dist/index.js.map +1 -1
- package/lib-esm/components/Accordion/Accordion.d.ts +3 -3
- package/lib-esm/components/Accordion/Accordion.d.ts.map +1 -0
- package/lib-esm/components/Accordion/Accordion.js +6 -3
- package/lib-esm/components/Accordion/Accordion.js.map +1 -1
- package/lib-esm/components/Accordion/AccordionStep.d.ts +3 -2
- package/lib-esm/components/Accordion/AccordionStep.d.ts.map +1 -0
- package/lib-esm/components/Accordion/AccordionStep.js +31 -22
- package/lib-esm/components/Accordion/AccordionStep.js.map +1 -1
- package/lib-esm/components/Accordion/index.d.ts +1 -0
- package/lib-esm/components/Accordion/index.d.ts.map +1 -0
- package/lib-esm/components/Accordion/index.js.map +1 -1
- package/lib-esm/components/Badge/Badge.d.ts +1 -0
- package/lib-esm/components/Badge/Badge.d.ts.map +1 -0
- package/lib-esm/components/Badge/Badge.js +5 -6
- package/lib-esm/components/Badge/Badge.js.map +1 -1
- package/lib-esm/components/Badge/index.d.ts +1 -0
- package/lib-esm/components/Badge/index.d.ts.map +1 -0
- package/lib-esm/components/Badge/index.js.map +1 -1
- package/lib-esm/components/Button/ActionButton.d.ts +1 -0
- package/lib-esm/components/Button/ActionButton.d.ts.map +1 -0
- package/lib-esm/components/Button/ActionButton.js.map +1 -1
- package/lib-esm/components/Button/Button.d.ts +1 -0
- package/lib-esm/components/Button/Button.d.ts.map +1 -0
- package/lib-esm/components/Button/Button.js.map +1 -1
- package/lib-esm/components/Button/IconButton.d.ts +1 -0
- package/lib-esm/components/Button/IconButton.d.ts.map +1 -0
- package/lib-esm/components/Button/IconButton.js.map +1 -1
- package/lib-esm/components/Button/LinkButton.d.ts +1 -0
- package/lib-esm/components/Button/LinkButton.d.ts.map +1 -0
- package/lib-esm/components/Button/LinkButton.js +2 -1
- package/lib-esm/components/Button/LinkButton.js.map +1 -1
- package/lib-esm/components/Button/RaisedButton.d.ts +1 -0
- package/lib-esm/components/Button/RaisedButton.d.ts.map +1 -0
- package/lib-esm/components/Button/RaisedButton.js.map +1 -1
- package/lib-esm/components/Button/index.d.ts +1 -0
- package/lib-esm/components/Button/index.d.ts.map +1 -0
- package/lib-esm/components/Button/index.js.map +1 -1
- package/lib-esm/components/Card/Card.d.ts +1 -0
- package/lib-esm/components/Card/Card.d.ts.map +1 -0
- package/lib-esm/components/Card/Card.js +1 -1
- package/lib-esm/components/Card/Card.js.map +1 -1
- package/lib-esm/components/Card/index.d.ts +1 -0
- package/lib-esm/components/Card/index.d.ts.map +1 -0
- package/lib-esm/components/Card/index.js.map +1 -1
- package/lib-esm/components/Chip/Chip.d.ts +1 -0
- package/lib-esm/components/Chip/Chip.d.ts.map +1 -0
- package/lib-esm/components/Chip/Chip.js +1 -1
- package/lib-esm/components/Chip/Chip.js.map +1 -1
- package/lib-esm/components/Chip/index.d.ts +1 -0
- package/lib-esm/components/Chip/index.d.ts.map +1 -0
- package/lib-esm/components/Chip/index.js.map +1 -1
- package/lib-esm/components/ChipInput/ChipInput.d.ts +1 -0
- package/lib-esm/components/ChipInput/ChipInput.d.ts.map +1 -0
- package/lib-esm/components/ChipInput/ChipInput.js +21 -12
- package/lib-esm/components/ChipInput/ChipInput.js.map +1 -1
- package/lib-esm/components/ChipInput/index.d.ts +1 -0
- package/lib-esm/components/ChipInput/index.d.ts.map +1 -0
- package/lib-esm/components/ChipInput/index.js.map +1 -1
- package/lib-esm/components/Dialog/AlertDialog.d.ts +1 -0
- package/lib-esm/components/Dialog/AlertDialog.d.ts.map +1 -0
- package/lib-esm/components/Dialog/AlertDialog.js +4 -4
- package/lib-esm/components/Dialog/AlertDialog.js.map +1 -1
- package/lib-esm/components/Dialog/ConfirmDialog.d.ts +1 -0
- package/lib-esm/components/Dialog/ConfirmDialog.d.ts.map +1 -0
- package/lib-esm/components/Dialog/ConfirmDialog.js +8 -3
- package/lib-esm/components/Dialog/ConfirmDialog.js.map +1 -1
- package/lib-esm/components/Dialog/Dialog.d.ts +5 -5
- package/lib-esm/components/Dialog/Dialog.d.ts.map +1 -0
- package/lib-esm/components/Dialog/Dialog.js +22 -16
- package/lib-esm/components/Dialog/Dialog.js.map +1 -1
- package/lib-esm/components/Dialog/PromptDialog.d.ts +1 -0
- package/lib-esm/components/Dialog/PromptDialog.d.ts.map +1 -0
- package/lib-esm/components/Dialog/PromptDialog.js +2 -2
- package/lib-esm/components/Dialog/PromptDialog.js.map +1 -1
- package/lib-esm/components/Dialog/index.d.ts +1 -0
- package/lib-esm/components/Dialog/index.d.ts.map +1 -0
- package/lib-esm/components/Dialog/index.js.map +1 -1
- package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts +2 -1
- package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts.map +1 -0
- package/lib-esm/components/DragAndDrop/DragAndDrop.js +4 -2
- package/lib-esm/components/DragAndDrop/DragAndDrop.js.map +1 -1
- package/lib-esm/components/DragAndDrop/DragItem.d.ts +1 -0
- package/lib-esm/components/DragAndDrop/DragItem.d.ts.map +1 -0
- package/lib-esm/components/DragAndDrop/DragItem.js +25 -17
- package/lib-esm/components/DragAndDrop/DragItem.js.map +1 -1
- package/lib-esm/components/DragAndDrop/index.d.ts +1 -0
- package/lib-esm/components/DragAndDrop/index.d.ts.map +1 -0
- package/lib-esm/components/DragAndDrop/index.js.map +1 -1
- package/lib-esm/components/DragAndDrop/types.d.ts +1 -0
- package/lib-esm/components/DragAndDrop/types.d.ts.map +1 -0
- package/lib-esm/components/DragAndDrop/types.js +1 -1
- package/lib-esm/components/DragAndDrop/types.js.map +1 -1
- package/lib-esm/components/Drawer/Drawer.d.ts +1 -0
- package/lib-esm/components/Drawer/Drawer.d.ts.map +1 -0
- package/lib-esm/components/Drawer/Drawer.js +10 -8
- package/lib-esm/components/Drawer/Drawer.js.map +1 -1
- package/lib-esm/components/Drawer/index.d.ts +2 -1
- package/lib-esm/components/Drawer/index.d.ts.map +1 -0
- package/lib-esm/components/Drawer/index.js +1 -1
- package/lib-esm/components/Drawer/index.js.map +1 -1
- package/lib-esm/components/Groups/Group.d.ts +1 -0
- package/lib-esm/components/Groups/Group.d.ts.map +1 -0
- package/lib-esm/components/Groups/Group.js +26 -14
- package/lib-esm/components/Groups/Group.js.map +1 -1
- package/lib-esm/components/Groups/GroupLabel.d.ts +1 -0
- package/lib-esm/components/Groups/GroupLabel.d.ts.map +1 -0
- package/lib-esm/components/Groups/GroupLabel.js.map +1 -1
- package/lib-esm/components/Groups/index.d.ts +1 -0
- package/lib-esm/components/Groups/index.d.ts.map +1 -0
- package/lib-esm/components/Groups/index.js.map +1 -1
- package/lib-esm/components/Input/Checkbox.d.ts +1 -0
- package/lib-esm/components/Input/Checkbox.d.ts.map +1 -0
- package/lib-esm/components/Input/Checkbox.js +11 -8
- package/lib-esm/components/Input/Checkbox.js.map +1 -1
- package/lib-esm/components/Input/Dropdown.d.ts +3 -2
- package/lib-esm/components/Input/Dropdown.d.ts.map +1 -0
- package/lib-esm/components/Input/Dropdown.js +22 -22
- package/lib-esm/components/Input/Dropdown.js.map +1 -1
- package/lib-esm/components/Input/Input.d.ts +1 -0
- package/lib-esm/components/Input/Input.d.ts.map +1 -0
- package/lib-esm/components/Input/Input.js +19 -10
- package/lib-esm/components/Input/Input.js.map +1 -1
- package/lib-esm/components/Input/Radio.d.ts +1 -0
- package/lib-esm/components/Input/Radio.d.ts.map +1 -0
- package/lib-esm/components/Input/Radio.js +4 -3
- package/lib-esm/components/Input/Radio.js.map +1 -1
- package/lib-esm/components/Input/RadioButton.d.ts +1 -0
- package/lib-esm/components/Input/RadioButton.d.ts.map +1 -0
- package/lib-esm/components/Input/RadioButton.js +1 -1
- package/lib-esm/components/Input/RadioButton.js.map +1 -1
- package/lib-esm/components/Input/Select.d.ts +1 -0
- package/lib-esm/components/Input/Select.d.ts.map +1 -0
- package/lib-esm/components/Input/Select.js +17 -9
- package/lib-esm/components/Input/Select.js.map +1 -1
- package/lib-esm/components/Input/TextArea.d.ts +1 -0
- package/lib-esm/components/Input/TextArea.d.ts.map +1 -0
- package/lib-esm/components/Input/TextArea.js +17 -9
- package/lib-esm/components/Input/TextArea.js.map +1 -1
- package/lib-esm/components/Input/Toggle.d.ts +1 -0
- package/lib-esm/components/Input/Toggle.d.ts.map +1 -0
- package/lib-esm/components/Input/Toggle.js +5 -5
- package/lib-esm/components/Input/Toggle.js.map +1 -1
- package/lib-esm/components/Input/index.d.ts +1 -0
- package/lib-esm/components/Input/index.d.ts.map +1 -0
- package/lib-esm/components/Input/index.js.map +1 -1
- package/lib-esm/components/Menu/Menu.d.ts +2 -1
- package/lib-esm/components/Menu/Menu.d.ts.map +1 -0
- package/lib-esm/components/Menu/Menu.js +3 -2
- package/lib-esm/components/Menu/Menu.js.map +1 -1
- package/lib-esm/components/Menu/MenuContext.d.ts +12 -5
- package/lib-esm/components/Menu/MenuContext.d.ts.map +1 -0
- package/lib-esm/components/Menu/MenuContext.js.map +1 -1
- package/lib-esm/components/Menu/MenuItem.d.ts +3 -2
- package/lib-esm/components/Menu/MenuItem.d.ts.map +1 -0
- package/lib-esm/components/Menu/MenuItem.js +9 -5
- package/lib-esm/components/Menu/MenuItem.js.map +1 -1
- package/lib-esm/components/Menu/index.d.ts +1 -0
- package/lib-esm/components/Menu/index.d.ts.map +1 -0
- package/lib-esm/components/Menu/index.js.map +1 -1
- package/lib-esm/components/Modal/Modal.d.ts +1 -0
- package/lib-esm/components/Modal/Modal.d.ts.map +1 -0
- package/lib-esm/components/Modal/Modal.js +6 -4
- package/lib-esm/components/Modal/Modal.js.map +1 -1
- package/lib-esm/components/Modal/index.d.ts +1 -0
- package/lib-esm/components/Modal/index.d.ts.map +1 -0
- package/lib-esm/components/Modal/index.js.map +1 -1
- package/lib-esm/components/Notification/Notification.d.ts +1 -0
- package/lib-esm/components/Notification/Notification.d.ts.map +1 -0
- package/lib-esm/components/Notification/Notification.js +8 -4
- package/lib-esm/components/Notification/Notification.js.map +1 -1
- package/lib-esm/components/Notification/NotificationManager.d.ts +1 -0
- package/lib-esm/components/Notification/NotificationManager.d.ts.map +1 -0
- package/lib-esm/components/Notification/NotificationManager.js +11 -9
- package/lib-esm/components/Notification/NotificationManager.js.map +1 -1
- package/lib-esm/components/Notification/index.d.ts +1 -0
- package/lib-esm/components/Notification/index.d.ts.map +1 -0
- package/lib-esm/components/Notification/index.js.map +1 -1
- package/lib-esm/components/Notification/style.d.ts +1 -0
- package/lib-esm/components/Notification/style.d.ts.map +1 -0
- package/lib-esm/components/Notification/style.js +10 -8
- package/lib-esm/components/Notification/style.js.map +1 -1
- package/lib-esm/components/Notification/types.d.ts +1 -0
- package/lib-esm/components/Notification/types.d.ts.map +1 -0
- package/lib-esm/components/Notification/types.js +0 -1
- package/lib-esm/components/Notification/types.js.map +1 -1
- package/lib-esm/components/Popover/Popover.d.ts +1 -0
- package/lib-esm/components/Popover/Popover.d.ts.map +1 -0
- package/lib-esm/components/Popover/Popover.js +20 -17
- package/lib-esm/components/Popover/Popover.js.map +1 -1
- package/lib-esm/components/Popover/index.d.ts +1 -0
- package/lib-esm/components/Popover/index.d.ts.map +1 -0
- package/lib-esm/components/Popover/index.js.map +1 -1
- package/lib-esm/components/Spinner/Spinner.d.ts +1 -0
- package/lib-esm/components/Spinner/Spinner.d.ts.map +1 -0
- package/lib-esm/components/Spinner/Spinner.js +10 -6
- package/lib-esm/components/Spinner/Spinner.js.map +1 -1
- package/lib-esm/components/Spinner/index.d.ts +1 -0
- package/lib-esm/components/Spinner/index.d.ts.map +1 -0
- package/lib-esm/components/Spinner/index.js.map +1 -1
- package/lib-esm/components/Stepper/Step.d.ts +1 -0
- package/lib-esm/components/Stepper/Step.d.ts.map +1 -0
- package/lib-esm/components/Stepper/Step.js +1 -0
- package/lib-esm/components/Stepper/Step.js.map +1 -1
- package/lib-esm/components/Stepper/Stepper.d.ts +4 -3
- package/lib-esm/components/Stepper/Stepper.d.ts.map +1 -0
- package/lib-esm/components/Stepper/Stepper.js +17 -9
- package/lib-esm/components/Stepper/Stepper.js.map +1 -1
- package/lib-esm/components/Stepper/index.d.ts +1 -0
- package/lib-esm/components/Stepper/index.d.ts.map +1 -0
- package/lib-esm/components/Stepper/index.js.map +1 -1
- package/lib-esm/components/Tabs/Tab.d.ts +1 -0
- package/lib-esm/components/Tabs/Tab.d.ts.map +1 -0
- package/lib-esm/components/Tabs/Tab.js.map +1 -1
- package/lib-esm/components/Tabs/Tabs.d.ts +6 -5
- package/lib-esm/components/Tabs/Tabs.d.ts.map +1 -0
- package/lib-esm/components/Tabs/Tabs.js +12 -9
- package/lib-esm/components/Tabs/Tabs.js.map +1 -1
- package/lib-esm/components/Tabs/index.d.ts +1 -0
- package/lib-esm/components/Tabs/index.d.ts.map +1 -0
- package/lib-esm/components/Tabs/index.js.map +1 -1
- package/lib-esm/components/Toast/Toast.d.ts +2 -0
- package/lib-esm/components/Toast/Toast.d.ts.map +1 -0
- package/lib-esm/components/Toast/Toast.js +9 -8
- package/lib-esm/components/Toast/Toast.js.map +1 -1
- package/lib-esm/components/Toast/ToastStory.d.ts +1 -0
- package/lib-esm/components/Toast/ToastStory.d.ts.map +1 -0
- package/lib-esm/components/Toast/ToastStory.js +1 -1
- package/lib-esm/components/Toast/ToastStory.js.map +1 -1
- package/lib-esm/components/Toast/index.d.ts +1 -0
- package/lib-esm/components/Toast/index.d.ts.map +1 -0
- package/lib-esm/components/Toast/index.js.map +1 -1
- package/lib-esm/components/Tooltip/Tooltip.d.ts +1 -0
- package/lib-esm/components/Tooltip/Tooltip.d.ts.map +1 -0
- package/lib-esm/components/Tooltip/Tooltip.js +5 -6
- package/lib-esm/components/Tooltip/Tooltip.js.map +1 -1
- package/lib-esm/components/Tooltip/index.d.ts +1 -0
- package/lib-esm/components/Tooltip/index.d.ts.map +1 -0
- package/lib-esm/components/Tooltip/index.js.map +1 -1
- package/lib-esm/components/index.d.ts +2 -0
- package/lib-esm/components/index.d.ts.map +1 -0
- package/lib-esm/components/index.js +1 -0
- package/lib-esm/components/index.js.map +1 -1
- package/lib-esm/icons/CheckCircle.d.ts +2 -1
- package/lib-esm/icons/CheckCircle.d.ts.map +1 -0
- package/lib-esm/icons/CheckCircle.js +1 -1
- package/lib-esm/icons/CheckCircle.js.map +1 -1
- package/lib-esm/icons/Close.d.ts +2 -1
- package/lib-esm/icons/Close.d.ts.map +1 -0
- package/lib-esm/icons/Close.js +1 -1
- package/lib-esm/icons/Close.js.map +1 -1
- package/lib-esm/icons/DragIndicator.d.ts +2 -1
- package/lib-esm/icons/DragIndicator.d.ts.map +1 -0
- package/lib-esm/icons/DragIndicator.js +1 -1
- package/lib-esm/icons/DragIndicator.js.map +1 -1
- package/lib-esm/icons/ErrorOutline.d.ts +2 -1
- package/lib-esm/icons/ErrorOutline.d.ts.map +1 -0
- package/lib-esm/icons/ErrorOutline.js +1 -1
- package/lib-esm/icons/ErrorOutline.js.map +1 -1
- package/lib-esm/icons/ExpandMore.d.ts +2 -1
- package/lib-esm/icons/ExpandMore.d.ts.map +1 -0
- package/lib-esm/icons/ExpandMore.js +1 -1
- package/lib-esm/icons/ExpandMore.js.map +1 -1
- package/lib-esm/icons/FiberManualRecord.d.ts +2 -1
- package/lib-esm/icons/FiberManualRecord.d.ts.map +1 -0
- package/lib-esm/icons/FiberManualRecord.js +1 -1
- package/lib-esm/icons/FiberManualRecord.js.map +1 -1
- package/lib-esm/icons/Info.d.ts +2 -1
- package/lib-esm/icons/Info.d.ts.map +1 -0
- package/lib-esm/icons/Info.js +1 -1
- package/lib-esm/icons/Info.js.map +1 -1
- package/lib-esm/icons/ReportProblem.d.ts +2 -1
- package/lib-esm/icons/ReportProblem.d.ts.map +1 -0
- package/lib-esm/icons/ReportProblem.js +1 -1
- package/lib-esm/icons/ReportProblem.js.map +1 -1
- package/lib-esm/icons/index.d.ts +1 -0
- package/lib-esm/icons/index.d.ts.map +1 -0
- package/lib-esm/icons/index.js.map +1 -1
- package/lib-esm/index.d.ts +1 -0
- package/lib-esm/index.d.ts.map +1 -0
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/shared/LayerManager.d.ts +29 -2
- package/lib-esm/shared/LayerManager.d.ts.map +1 -0
- package/lib-esm/shared/LayerManager.js +95 -45
- package/lib-esm/shared/LayerManager.js.map +1 -1
- package/lib-esm/shared/constants.d.ts +1 -0
- package/lib-esm/shared/constants.d.ts.map +1 -0
- package/lib-esm/shared/constants.js.map +1 -1
- package/lib-esm/shared/styles.d.ts +1 -0
- package/lib-esm/shared/styles.d.ts.map +1 -0
- package/lib-esm/shared/styles.js.map +1 -1
- package/package.json +93 -74
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
3
|
import styled from '@emotion/styled';
|
|
4
|
+
import { ExpandMore } from '../../icons';
|
|
4
5
|
import { Menu } from '../Menu';
|
|
5
6
|
import { Popover, POPOVER_POSITION } from '../Popover';
|
|
6
7
|
import Input from './Input';
|
|
7
|
-
import { ExpandMore } from '../../icons';
|
|
8
8
|
const ArrowContainer = styled.span `
|
|
9
9
|
position: absolute;
|
|
10
10
|
right: 12px;
|
|
@@ -15,30 +15,30 @@ export default function Dropdown(props) {
|
|
|
15
15
|
const { multiSelect, onChange } = props;
|
|
16
16
|
const [open, setOpen] = useState(false);
|
|
17
17
|
const [value, setValue] = useState(props.value);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
e.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
else {
|
|
28
|
-
const currentBtn = current.closest('button');
|
|
29
|
-
if (e.keyCode === 38) {
|
|
30
|
-
const prev = (_a = currentBtn === null || currentBtn === void 0 ? void 0 : currentBtn.previousElementSibling) === null || _a === void 0 ? void 0 : _a.closest('button');
|
|
31
|
-
prev === null || prev === void 0 ? void 0 : prev.focus();
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const focusHandler = (e) => {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
if (open && (e.keyCode === 38 || e.keyCode === 40)) {
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
const current = document.querySelector(':focus');
|
|
24
|
+
if (current.tagName === 'DIV') {
|
|
25
|
+
const firstBtn = current.querySelector('button');
|
|
26
|
+
firstBtn === null || firstBtn === void 0 ? void 0 : firstBtn.focus();
|
|
32
27
|
}
|
|
33
28
|
else {
|
|
34
|
-
const
|
|
35
|
-
|
|
29
|
+
const currentBtn = current.closest('button');
|
|
30
|
+
if (e.keyCode === 38) {
|
|
31
|
+
const prev = (_a = currentBtn === null || currentBtn === void 0 ? void 0 : currentBtn.previousElementSibling) === null || _a === void 0 ? void 0 : _a.closest('button');
|
|
32
|
+
prev === null || prev === void 0 ? void 0 : prev.focus();
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const next = (_b = currentBtn === null || currentBtn === void 0 ? void 0 : currentBtn.nextElementSibling) === null || _b === void 0 ? void 0 : _b.closest('button');
|
|
36
|
+
next === null || next === void 0 ? void 0 : next.focus();
|
|
37
|
+
}
|
|
36
38
|
}
|
|
39
|
+
return false;
|
|
37
40
|
}
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
useEffect(() => {
|
|
41
|
+
};
|
|
42
42
|
document.addEventListener('keydown', focusHandler);
|
|
43
43
|
return () => {
|
|
44
44
|
document.removeEventListener('keydown', focusHandler);
|
|
@@ -58,7 +58,7 @@ export default function Dropdown(props) {
|
|
|
58
58
|
setOpen(false);
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
|
-
return (_jsx(Popover, { position: POPOVER_POSITION.BOTTOM_LEFT, open: open, element: () => (_jsxs(_Fragment, { children: [_jsx(Input, { type:
|
|
61
|
+
return (_jsx(Popover, { position: POPOVER_POSITION.BOTTOM_LEFT, open: open, element: () => (_jsxs(_Fragment, { children: [_jsx(Input, { type: "text", value: value && String(value), label: props.label, errorText: props.errorText, onClick: clickHandler, onKeyUp: keyUp, required: props.required, disabled: props.disabled }), _jsx(ArrowContainer, { children: _jsx(ExpandMore, {}) })] })), onClose: () => setOpen(false), children: _jsx(Menu, { value: value, multiSelect: multiSelect, onChange: changeHandler, children: props.children }) }));
|
|
62
62
|
}
|
|
63
63
|
Dropdown.defaultProps = {
|
|
64
64
|
multiSelect: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../../../src/components/Input/Dropdown.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../../../src/components/Input/Dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { ExpandMore } from '../../icons';\nimport { Menu } from '../Menu';\nimport { Popover, POPOVER_POSITION } from '../Popover';\nimport Input from './Input';\n\ntype DropdownProps<T> = {\n /** Value of the control */\n value?: T | T[];\n /** If multiple elements can be selected */\n multiSelect: boolean;\n /** Change handler */\n onChange?: (v: T | T[]) => void;\n /** Label of the control */\n label?: string;\n /** Error message */\n errorText?: string;\n /** Makes field required */\n required?: boolean;\n /** Disables the field */\n disabled?: boolean;\n} & React.PropsWithChildren<unknown>;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 12px;\n top: 16px;\n pointer-events: none;\n`;\n\nexport default function Dropdown<T extends object>(props: DropdownProps<T>) {\n const { multiSelect, onChange } = props;\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(props.value);\n\n useEffect(() => {\n const focusHandler = (e: KeyboardEvent) => {\n if (open && (e.keyCode === 38 || e.keyCode === 40)) {\n e.preventDefault();\n const current = document.querySelector(':focus');\n if (current.tagName === 'DIV') {\n const firstBtn = current.querySelector('button');\n firstBtn?.focus();\n } else {\n const currentBtn = current.closest('button');\n if (e.keyCode === 38) {\n const prev = currentBtn?.previousElementSibling?.closest('button');\n prev?.focus();\n } else {\n const next = currentBtn?.nextElementSibling?.closest('button');\n next?.focus();\n }\n }\n return false;\n }\n };\n document.addEventListener('keydown', focusHandler);\n\n return () => {\n document.removeEventListener('keydown', focusHandler);\n };\n }, [open]);\n\n const clickHandler = () => setOpen(true);\n\n const keyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.keyCode === 40) {\n setOpen(true);\n }\n };\n\n const changeHandler = (val: T | T[]) => {\n setValue(val);\n onChange?.(val);\n\n // Close dropdown after selection if not multiSelect\n if (!multiSelect) {\n setOpen(false);\n }\n };\n\n return (\n <Popover\n position={POPOVER_POSITION.BOTTOM_LEFT}\n open={open}\n element={() => (\n <>\n <Input\n type=\"text\"\n value={value && String(value)}\n label={props.label}\n errorText={props.errorText}\n onClick={clickHandler}\n onKeyUp={keyUp}\n required={props.required}\n disabled={props.disabled}\n />\n <ArrowContainer>\n <ExpandMore />\n </ArrowContainer>\n </>\n )}\n onClose={() => setOpen(false)}\n >\n <Menu value={value} multiSelect={multiSelect} onChange={changeHandler}>\n {props.children}\n </Menu>\n </Popover>\n );\n}\n\nDropdown.defaultProps = {\n multiSelect: false,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAKxC,KAAK,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG;IAC1D,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA6HF,QAAA,MAAM,KAAK,iGAkCT,CAAC;AAIH,eAAe,KAAK,CAAC"}
|
|
@@ -23,12 +23,14 @@ const TextField = styled.input `
|
|
|
23
23
|
background-color: var(--background, ${constants.BACKGROUND});
|
|
24
24
|
|
|
25
25
|
/** Focused */
|
|
26
|
-
&:focus,
|
|
26
|
+
&:focus,
|
|
27
|
+
&:active {
|
|
27
28
|
border-color: var(--primary, ${constants.PRIMARY});
|
|
28
29
|
box-shadow: 0 0 0 4px var(--primary-light, ${constants.PRIMARY_LIGHT});
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
&:focus + span,
|
|
32
|
+
&:focus + span,
|
|
33
|
+
&:active + span {
|
|
32
34
|
color: var(--primary, ${constants.PRIMARY});
|
|
33
35
|
}
|
|
34
36
|
|
|
@@ -37,7 +39,7 @@ const TextField = styled.input `
|
|
|
37
39
|
border-color: var(--disabled-border, ${constants.DISABLED_BORDER});
|
|
38
40
|
background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});
|
|
39
41
|
}
|
|
40
|
-
|
|
42
|
+
|
|
41
43
|
&:disabled + span {
|
|
42
44
|
color: #777;
|
|
43
45
|
}
|
|
@@ -48,7 +50,8 @@ const TextField = styled.input `
|
|
|
48
50
|
box-shadow: 0 0 0 4px var(--error-light, ${constants.ERROR_LIGHT});
|
|
49
51
|
}
|
|
50
52
|
|
|
51
|
-
${props => props.touched
|
|
53
|
+
${(props) => props.touched
|
|
54
|
+
? `
|
|
52
55
|
&:invalid {
|
|
53
56
|
border-color: var(--error, ${constants.ERROR});
|
|
54
57
|
}
|
|
@@ -56,16 +59,19 @@ const TextField = styled.input `
|
|
|
56
59
|
&:invalid + span {
|
|
57
60
|
color: var(--error, ${constants.ERROR});
|
|
58
61
|
}
|
|
59
|
-
`
|
|
62
|
+
`
|
|
63
|
+
: ''}
|
|
60
64
|
|
|
61
65
|
/** Error */
|
|
62
|
-
${props => props.errorText
|
|
66
|
+
${(props) => props.errorText
|
|
67
|
+
? `
|
|
63
68
|
border-color: var(--error, ${constants.ERROR});
|
|
64
69
|
|
|
65
70
|
& + span {
|
|
66
71
|
color: var(--error, ${constants.ERROR});
|
|
67
72
|
}
|
|
68
|
-
`
|
|
73
|
+
`
|
|
74
|
+
: ''}
|
|
69
75
|
|
|
70
76
|
/** Required */
|
|
71
77
|
&:required + span:after {
|
|
@@ -85,14 +91,16 @@ const TextField = styled.input `
|
|
|
85
91
|
transition: all 300ms ease;
|
|
86
92
|
}
|
|
87
93
|
|
|
88
|
-
${props => props.value !== ''
|
|
94
|
+
${(props) => props.value !== ''
|
|
95
|
+
? `
|
|
89
96
|
& + span {
|
|
90
97
|
top: -8px;
|
|
91
98
|
background: var(--background, ${constants.BACKGROUND});
|
|
92
99
|
font-size: 12px;
|
|
93
100
|
line-height: 14px;
|
|
94
101
|
}
|
|
95
|
-
`
|
|
102
|
+
`
|
|
103
|
+
: ''}
|
|
96
104
|
|
|
97
105
|
&:focus + span, &:placeholder-shown + span {
|
|
98
106
|
top: -8px;
|
|
@@ -105,7 +113,7 @@ const ErrorContainer = styled.div `
|
|
|
105
113
|
color: var(--error, ${constants.ERROR});
|
|
106
114
|
padding-top: 3px;
|
|
107
115
|
font-size: 12px;
|
|
108
|
-
|
|
116
|
+
line-height: 14px;
|
|
109
117
|
margin-left: 3px;
|
|
110
118
|
`;
|
|
111
119
|
const Input = React.forwardRef((props, ref) => {
|
|
@@ -128,6 +136,7 @@ const Input = React.forwardRef((props, ref) => {
|
|
|
128
136
|
};
|
|
129
137
|
return (_jsxs(Label, { children: [_jsx(TextField, Object.assign({}, props, { ref: ref, value: value, onChange: onChangeHandler, onFocus: handleFocus, touched: touched })), _jsx("span", { children: props.label }), props.errorText && _jsx(ErrorContainer, { children: props.errorText })] }));
|
|
130
138
|
});
|
|
139
|
+
Input.displayName = 'Input';
|
|
131
140
|
export default Input;
|
|
132
141
|
Input.propTypes = {
|
|
133
142
|
/** Label for the field */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAa/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;CAMzB,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAoB;;;;;;;;4CAQN,SAAS,CAAC,YAAY;;0CAExB,SAAS,CAAC,UAAU
|
|
1
|
+
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\ntype InputProps = React.AllHTMLAttributes<HTMLInputElement> & {\n /** Label for the field */\n label?: string;\n /** Error message for the field */\n errorText?: string;\n};\n\ntype InputInternalProps = InputProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.input<InputInternalProps>`\n outline: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 30px;\n width: 250px;\n border-radius: 3px;\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n display: inline-block;\n background-color: var(--background, ${constants.BACKGROUND});\n\n /** Focused */\n &:focus,\n &:active {\n border-color: var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 4px var(--primary-light, ${constants.PRIMARY_LIGHT});\n }\n\n &:focus + span,\n &:active + span {\n color: var(--primary, ${constants.PRIMARY});\n }\n\n /** Disabled */\n &:disabled {\n border-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});\n }\n\n &:disabled + span {\n color: #777;\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: var(--error, ${constants.ERROR});\n box-shadow: 0 0 0 4px var(--error-light, ${constants.ERROR_LIGHT});\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: var(--error, ${constants.ERROR});\n }\n\n &:invalid + span {\n color: var(--error, ${constants.ERROR});\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: var(--error, ${constants.ERROR});\n\n & + span {\n color: var(--error, ${constants.ERROR});\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: var(--error, ${constants.ERROR});\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: var(--error, ${constants.ERROR});\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nconst Input = React.forwardRef<HTMLInputElement, Omit<InputProps, 'as'>>((props, ref) => {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...props}\n ref={ref}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n />\n <span>{props.label}</span>\n {props.errorText && <ErrorContainer>{props.errorText}</ErrorContainer>}\n </Label>\n );\n});\n\nInput.displayName = 'Input';\n\nexport default Input;\n\nInput.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** Error text to be shown below the field */\n errorText: PropTypes.string,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AA2EnC,iBAAS,KAAK,CACV,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,OAAO,KAAK,CAAC,SAAS,CAAC,oDAQlG;kBATQ,KAAK;;QAYV,0BAA0B;;;;AAI9B,eAAe,KAAK,CAAC"}
|
|
@@ -19,7 +19,7 @@ const Input = styled.input `
|
|
|
19
19
|
border: 1px solid var(--border-color, ${constants.BORDER_COLOR});
|
|
20
20
|
border-radius: 50%;
|
|
21
21
|
display: block;
|
|
22
|
-
transition: background-color .3s ease;
|
|
22
|
+
transition: background-color 0.3s ease;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
/* checked */
|
|
@@ -38,7 +38,8 @@ const Input = styled.input `
|
|
|
38
38
|
|
|
39
39
|
&:enabled:checked:focus::before {
|
|
40
40
|
border: 1px solid var(--primary, ${constants.PRIMARY});
|
|
41
|
-
box-shadow:
|
|
41
|
+
box-shadow:
|
|
42
|
+
0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT}),
|
|
42
43
|
inset 0 0 0 3px var(--background, ${constants.BACKGROUND});
|
|
43
44
|
cursor: pointer;
|
|
44
45
|
}
|
|
@@ -71,7 +72,7 @@ const Input = styled.input `
|
|
|
71
72
|
}
|
|
72
73
|
`;
|
|
73
74
|
function Radio(props) {
|
|
74
|
-
return (_jsxs(Label, { children: [_jsx(Input, Object.assign({}, props, { type:
|
|
75
|
+
return (_jsxs(Label, { children: [_jsx(Input, Object.assign({}, props, { type: "radio" })), _jsx("span", { children: props.label })] }));
|
|
75
76
|
}
|
|
76
77
|
Radio.propTypes = {
|
|
77
78
|
/** Label for the field */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../../src/components/Input/Radio.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;CAIzB,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;;;;gDASsB,SAAS,CAAC,YAAY;;;;;;;;2CAQ3B,SAAS,CAAC,OAAO;2CACjB,SAAS,CAAC,OAAO;wDACJ,SAAS,CAAC,UAAU;;;;;2CAKjC,SAAS,CAAC,OAAO;+CACb,SAAS,CAAC,aAAa;;;;;2CAK3B,SAAS,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../../src/components/Input/Radio.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;CAIzB,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;;;;gDASsB,SAAS,CAAC,YAAY;;;;;;;;2CAQ3B,SAAS,CAAC,OAAO;2CACjB,SAAS,CAAC,OAAO;wDACJ,SAAS,CAAC,UAAU;;;;;2CAKjC,SAAS,CAAC,OAAO;+CACb,SAAS,CAAC,aAAa;;;;;2CAK3B,SAAS,CAAC,OAAO;;uCAErB,SAAS,CAAC,aAAa;gDACd,SAAS,CAAC,UAAU;;;;;;2CAMzB,SAAS,CAAC,OAAO;;;;;gCAK5B,SAAS,CAAC,OAAO;;;;;;mDAME,SAAS,CAAC,eAAe;8CAC9B,SAAS,CAAC,UAAU;;;;mDAIf,SAAS,CAAC,eAAe;mDACzB,SAAS,CAAC,eAAe;wDACpB,SAAS,CAAC,UAAU;;;;wCAIpC,SAAS,CAAC,eAAe;;CAEhE,CAAC;AAEF,SAAS,KAAK,CACV,KAA+F;IAE/F,OAAO,CACH,MAAC,KAAK,eACF,KAAC,KAAK,oBAAK,KAAK,IAAE,IAAI,EAAC,OAAO,IAAG,EACjC,yBAAO,KAAK,CAAC,KAAK,GAAQ,IACtB,CACX,CAAC;AACN,CAAC;AAED,KAAK,CAAC,SAAS,GAAG;IACd,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAC;AAEF,eAAe,KAAK,CAAC","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nconst Label = styled.label`\n display: inline-flex;\n align-items: center;\n margin: 5px 0;\n`;\n\nconst Input = styled.input`\n appearance: none;\n margin: 0;\n\n &::before {\n content: ' ';\n width: 16px;\n height: 16px;\n margin: 0 5px;\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n border-radius: 50%;\n display: block;\n transition: background-color 0.3s ease;\n }\n\n /* checked */\n &:checked::before {\n border: 1px solid var(--primary, ${constants.PRIMARY});\n background-color: var(--primary, ${constants.PRIMARY});\n box-shadow: inset 0 0 0 3px var(--background, ${constants.BACKGROUND});\n }\n\n /* focus */\n &:enabled:focus::before {\n border: 1px solid var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT});\n cursor: pointer;\n }\n\n &:enabled:checked:focus::before {\n border: 1px solid var(--primary, ${constants.PRIMARY});\n box-shadow:\n 0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT}),\n inset 0 0 0 3px var(--background, ${constants.BACKGROUND});\n cursor: pointer;\n }\n\n /* hover */\n &:enabled:hover::before {\n border: 1px solid var(--primary, ${constants.PRIMARY});\n cursor: pointer;\n }\n\n &:enabled:hover + span {\n color: var(--primary, ${constants.PRIMARY});\n cursor: pointer;\n }\n\n /* disabled */\n &:disabled::before {\n border: 1px solid var(--disabled-border, ${constants.DISABLED_BORDER});\n background-color: var(--light-grey, ${constants.LIGHT_GREY});\n }\n\n &:disabled:checked::before {\n border: 1px solid var(--disabled-border, ${constants.DISABLED_BORDER});\n background-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n box-shadow: inset 0 0 0 3px var(--background, ${constants.BACKGROUND});\n }\n\n &:disabled + span {\n color: var(--disabled-border, ${constants.DISABLED_BORDER});\n }\n`;\n\nfunction Radio(\n props: PropTypes.InferProps<React.AllHTMLAttributes<HTMLInputElement> & typeof Radio.propTypes>,\n) {\n return (\n <Label>\n <Input {...props} type=\"radio\" />\n <span>{props.label}</span>\n </Label>\n );\n}\n\nRadio.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n};\n\nexport default Radio;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioButton.d.ts","sourceRoot":"","sources":["../../../src/components/Input/RadioButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AAoDnC,eAAO,MAAM,UAAU;;SA7Bf,MAAO,WAAW;qFA0CzB,CAAC;AAEF,iBAAS,WAAW,CAChB,KAAK,EAAE,SAAS,CAAC,UAAU,CACvB,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,OAAO,WAAW,CAAC,SAAS,CAC3E,oDAQJ;kBAXQ,WAAW;;QAchB,0BAA0B;;;;AAI9B,eAAe,WAAW,CAAC"}
|
|
@@ -63,7 +63,7 @@ export const RadioGroup = styled.div `
|
|
|
63
63
|
}
|
|
64
64
|
`;
|
|
65
65
|
function RadioButton(props) {
|
|
66
|
-
return (_jsxs(Label, { children: [_jsx(Input, Object.assign({}, props, { type:
|
|
66
|
+
return (_jsxs(Label, { children: [_jsx(Input, Object.assign({}, props, { type: "radio" })), _jsx("span", { children: props.label })] }));
|
|
67
67
|
}
|
|
68
68
|
RadioButton.propTypes = {
|
|
69
69
|
/** Label for the field */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioButton.js","sourceRoot":"","sources":["../../../src/components/Input/RadioButton.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;gCAMM,SAAS,CAAC,OAAO;;;2CAGN,SAAS,CAAC,OAAO;;;;;;;+CAOb,SAAS,CAAC,aAAa;;;;2CAI3B,SAAS,CAAC,aAAa;;;;;2CAKvB,SAAS,CAAC,OAAO;;;;;sDAKN,SAAS,CAAC,kBAAkB;wCAC1C,SAAS,CAAC,eAAe;;;;mDAId,SAAS,CAAC,eAAe;;;CAG3E,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;CAMzB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;QAM5B,KAAK;;;;QAIL,KAAK;;;CAGZ,CAAC;AAEF,SAAS,WAAW,
|
|
1
|
+
{"version":3,"file":"RadioButton.js","sourceRoot":"","sources":["../../../src/components/Input/RadioButton.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;gCAMM,SAAS,CAAC,OAAO;;;2CAGN,SAAS,CAAC,OAAO;;;;;;;+CAOb,SAAS,CAAC,aAAa;;;;2CAI3B,SAAS,CAAC,aAAa;;;;;2CAKvB,SAAS,CAAC,OAAO;;;;;sDAKN,SAAS,CAAC,kBAAkB;wCAC1C,SAAS,CAAC,eAAe;;;;mDAId,SAAS,CAAC,eAAe;;;CAG3E,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;CAMzB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;QAM5B,KAAK;;;;QAIL,KAAK;;;CAGZ,CAAC;AAEF,SAAS,WAAW,CAChB,KAEC;IAED,OAAO,CACH,MAAC,KAAK,eACF,KAAC,KAAK,oBAAK,KAAK,IAAE,IAAI,EAAC,OAAO,IAAG,EACjC,yBAAO,KAAK,CAAC,KAAK,GAAQ,IACtB,CACX,CAAC;AACN,CAAC;AAED,WAAW,CAAC,SAAS,GAAG;IACpB,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nconst Input = styled.input`\n appearance: none;\n margin: 0;\n width: 0;\n\n & + span {\n color: var(--primary, ${constants.PRIMARY});\n padding: 6px 12px;\n border: none;\n border: 1px solid var(--primary, ${constants.PRIMARY});\n cursor: pointer;\n margin-right: -1px;\n line-height: 18px;\n }\n\n &:enabled:focus + span {\n box-shadow: 0 0 0 4px var(--primary, ${constants.PRIMARY_LIGHT});\n }\n\n &:enabled:hover + span {\n background-color: var(--primary, ${constants.PRIMARY_LIGHT});\n color: #fff;\n }\n\n &:enabled:checked + span {\n background-color: var(--primary, ${constants.PRIMARY});\n color: #fff;\n }\n\n &:disabled + span {\n background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n color: var(--disabled-border, ${constants.DISABLED_BORDER});\n }\n\n &:disabled:checked + span {\n background-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n color: #fff;\n }\n`;\n\nconst Label = styled.label`\n display: inline-flex;\n\n &:focus-within {\n z-index: 1;\n }\n`;\n\nexport const RadioGroup = styled.div`\n display: inline-flex;\n align-items: center;\n border-radius: 3px;\n margin: 5px 0;\n\n & ${Label}:first-child > span {\n border-radius: 3px 0 0 3px;\n }\n\n & ${Label}:last-child > span {\n border-radius: 0 3px 3px 0;\n }\n`;\n\nfunction RadioButton(\n props: PropTypes.InferProps<\n React.AllHTMLAttributes<HTMLInputElement> & typeof RadioButton.propTypes\n >,\n) {\n return (\n <Label>\n <Input {...props} type=\"radio\" />\n <span>{props.label}</span>\n </Label>\n );\n}\n\nRadioButton.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n};\n\nexport default RadioButton;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,MAAM,YAAY,CAAC;AAKnC,UAAU,WACN,SACI,SAAS,CAAC,SAAS,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,EAC5C,KAAK,CAAC,mBAAmB,CAAC,iBAAiB,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AA2ID,iBAAwB,MAAM,CAAC,KAAK,EAAE,WAAW,oDAwChD;kBAxCuB,MAAM;;QA2C1B,0BAA0B;;QAE1B,6CAA6C;;;;eA7CzB,MAAM"}
|
|
@@ -32,12 +32,14 @@ const SelectField = styled.select `
|
|
|
32
32
|
appearance: none;
|
|
33
33
|
|
|
34
34
|
/** Focused */
|
|
35
|
-
&:focus,
|
|
35
|
+
&:focus,
|
|
36
|
+
&:active {
|
|
36
37
|
border-color: var(--primary, ${constants.PRIMARY});
|
|
37
38
|
box-shadow: 0 0 0 4px var(--primary, ${constants.PRIMARY_LIGHT});
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
&:focus ~ span,
|
|
41
|
+
&:focus ~ span,
|
|
42
|
+
&:active ~ span {
|
|
41
43
|
color: var(--primary, ${constants.PRIMARY});
|
|
42
44
|
}
|
|
43
45
|
|
|
@@ -46,7 +48,7 @@ const SelectField = styled.select `
|
|
|
46
48
|
border-color: var(--disabled-border, ${constants.DISABLED_BORDER});
|
|
47
49
|
background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});
|
|
48
50
|
}
|
|
49
|
-
|
|
51
|
+
|
|
50
52
|
&:disabled ~ span {
|
|
51
53
|
color: var(--disabled, ${constants.DISABLED});
|
|
52
54
|
}
|
|
@@ -57,7 +59,8 @@ const SelectField = styled.select `
|
|
|
57
59
|
box-shadow: 0 0 0 4px var(--error-light, ${constants.ERROR_LIGHT});
|
|
58
60
|
}
|
|
59
61
|
|
|
60
|
-
${props => props.touched
|
|
62
|
+
${(props) => props.touched
|
|
63
|
+
? `
|
|
61
64
|
&:invalid {
|
|
62
65
|
border-color: var(--error, ${constants.ERROR});
|
|
63
66
|
}
|
|
@@ -65,16 +68,19 @@ const SelectField = styled.select `
|
|
|
65
68
|
&:invalid ~ span {
|
|
66
69
|
color: var(--error, ${constants.ERROR});
|
|
67
70
|
}
|
|
68
|
-
`
|
|
71
|
+
`
|
|
72
|
+
: ''}
|
|
69
73
|
|
|
70
74
|
/** Error */
|
|
71
|
-
${props => props.errorText
|
|
75
|
+
${(props) => props.errorText
|
|
76
|
+
? `
|
|
72
77
|
border-color: var(--error, ${constants.ERROR});
|
|
73
78
|
|
|
74
79
|
& ~ span {
|
|
75
80
|
color: var(--error, ${constants.ERROR});
|
|
76
81
|
}
|
|
77
|
-
`
|
|
82
|
+
`
|
|
83
|
+
: ''}
|
|
78
84
|
|
|
79
85
|
/** Required */
|
|
80
86
|
&:required + span:after {
|
|
@@ -94,14 +100,16 @@ const SelectField = styled.select `
|
|
|
94
100
|
transition: all 300ms ease;
|
|
95
101
|
}
|
|
96
102
|
|
|
97
|
-
${props => props.value !== ''
|
|
103
|
+
${(props) => props.value !== ''
|
|
104
|
+
? `
|
|
98
105
|
& + span {
|
|
99
106
|
top: -8px;
|
|
100
107
|
background: var(--background, ${constants.BACKGROUND});
|
|
101
108
|
font-size: 12px;
|
|
102
109
|
line-height: 14px;
|
|
103
110
|
}
|
|
104
|
-
`
|
|
111
|
+
`
|
|
112
|
+
: ''}
|
|
105
113
|
|
|
106
114
|
&:focus + span, &:placeholder-shown + span {
|
|
107
115
|
top: -8px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../src/components/Input/Select.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,SAAS,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../src/components/Input/Select.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport ExpandMore from '../../icons/ExpandMore';\nimport constants from '../../shared/constants';\n\ninterface SelectProps\n extends\n PropTypes.InferType<typeof Select.propTypes>,\n React.InputHTMLAttributes<HTMLSelectElement> {\n value?: string;\n}\n\ntype SelectInternalProps = SelectProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n margin: 10px 5px;\n pointer-events: none;\n max-width: 268px;\n\n & svg {\n fill: currentColor;\n }\n`;\n\nconst SelectField = styled.select<SelectInternalProps>`\n border: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 32px;\n width: 268px;\n border-radius: 3px;\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n display: inline-block;\n background-color: var(--background, ${constants.BACKGROUND});\n pointer-events: auto;\n appearance: none;\n\n /** Focused */\n &:focus,\n &:active {\n border-color: var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 4px var(--primary, ${constants.PRIMARY_LIGHT});\n }\n\n &:focus ~ span,\n &:active ~ span {\n color: var(--primary, ${constants.PRIMARY});\n }\n\n /** Disabled */\n &:disabled {\n border-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});\n }\n\n &:disabled ~ span {\n color: var(--disabled, ${constants.DISABLED});\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: var(--error, ${constants.ERROR});\n box-shadow: 0 0 0 4px var(--error-light, ${constants.ERROR_LIGHT});\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: var(--error, ${constants.ERROR});\n }\n\n &:invalid ~ span {\n color: var(--error, ${constants.ERROR});\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: var(--error, ${constants.ERROR});\n\n & ~ span {\n color: var(--error, ${constants.ERROR});\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: var(--error, ${constants.ERROR});\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: var(--error, ${constants.ERROR});\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 8px;\n top: 8px;\n`;\n\nexport default function Select(props: SelectProps) {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n\n const handleFocus = (e: React.FocusEvent<HTMLSelectElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLSelectElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <SelectField\n {...props}\n multiple={false}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n >\n <option />\n {props.children}\n </SelectField>\n <span>{props.label}</span>\n <ArrowContainer>\n <ExpandMore />\n </ArrowContainer>\n {props.errorText && <ErrorContainer>{props.errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nSelect.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** Error text to be shown below the field */\n errorText: PropTypes.string,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../src/components/Input/TextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,MAAM,YAAY,CAAC;AAInC,UAAU,aACN,SACI,SAAS,CAAC,SAAS,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,EAC9C,KAAK,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AA4HD,iBAAwB,QAAQ,CAAC,KAAK,EAAE,aAAa,oDAiCpD;kBAjCuB,QAAQ;;QAoC5B,0BAA0B;;QAE1B,6CAA6C;;;;eAtCzB,QAAQ"}
|
|
@@ -22,12 +22,14 @@ const TextField = styled.textarea `
|
|
|
22
22
|
background-color: var(--background, ${constants.BACKGROUND});
|
|
23
23
|
|
|
24
24
|
/** Focused */
|
|
25
|
-
&:focus,
|
|
25
|
+
&:focus,
|
|
26
|
+
&:active {
|
|
26
27
|
border-color: var(--primary, ${constants.PRIMARY});
|
|
27
28
|
box-shadow: 0 0 0 4px var(--primary, ${constants.PRIMARY_LIGHT});
|
|
28
29
|
}
|
|
29
30
|
|
|
30
|
-
&:focus + span,
|
|
31
|
+
&:focus + span,
|
|
32
|
+
&:active + span {
|
|
31
33
|
color: var(--primary, ${constants.PRIMARY});
|
|
32
34
|
}
|
|
33
35
|
|
|
@@ -36,7 +38,7 @@ const TextField = styled.textarea `
|
|
|
36
38
|
border-color: var(--disabled-border, ${constants.DISABLED_BORDER});
|
|
37
39
|
background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});
|
|
38
40
|
}
|
|
39
|
-
|
|
41
|
+
|
|
40
42
|
&:disabled + span {
|
|
41
43
|
color: var(--disabled, ${constants.DISABLED});
|
|
42
44
|
}
|
|
@@ -47,7 +49,8 @@ const TextField = styled.textarea `
|
|
|
47
49
|
box-shadow: 0 0 0 4px var(--error-light, ${constants.ERROR_LIGHT});
|
|
48
50
|
}
|
|
49
51
|
|
|
50
|
-
${props => props.touched
|
|
52
|
+
${(props) => props.touched
|
|
53
|
+
? `
|
|
51
54
|
&:invalid {
|
|
52
55
|
border-color: var(--error, ${constants.ERROR});
|
|
53
56
|
}
|
|
@@ -55,16 +58,19 @@ const TextField = styled.textarea `
|
|
|
55
58
|
&:invalid + span {
|
|
56
59
|
color: var(--error, ${constants.ERROR});
|
|
57
60
|
}
|
|
58
|
-
`
|
|
61
|
+
`
|
|
62
|
+
: ''}
|
|
59
63
|
|
|
60
64
|
/** Error */
|
|
61
|
-
${props => props.errorText
|
|
65
|
+
${(props) => props.errorText
|
|
66
|
+
? `
|
|
62
67
|
border-color: var(--error, ${constants.ERROR});
|
|
63
68
|
|
|
64
69
|
& + span {
|
|
65
70
|
color: var(--error, ${constants.ERROR});
|
|
66
71
|
}
|
|
67
|
-
`
|
|
72
|
+
`
|
|
73
|
+
: ''}
|
|
68
74
|
|
|
69
75
|
/** Required */
|
|
70
76
|
&:required + span:after {
|
|
@@ -84,14 +90,16 @@ const TextField = styled.textarea `
|
|
|
84
90
|
transition: all 300ms ease;
|
|
85
91
|
}
|
|
86
92
|
|
|
87
|
-
${props => props.value !== ''
|
|
93
|
+
${(props) => props.value !== ''
|
|
94
|
+
? `
|
|
88
95
|
& + span {
|
|
89
96
|
top: -8px;
|
|
90
97
|
background: var(--background, ${constants.BACKGROUND});
|
|
91
98
|
font-size: 12px;
|
|
92
99
|
line-height: 14px;
|
|
93
100
|
}
|
|
94
|
-
`
|
|
101
|
+
`
|
|
102
|
+
: ''}
|
|
95
103
|
|
|
96
104
|
&:focus + span, &:placeholder-shown + span {
|
|
97
105
|
top: -8px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../../../src/components/Input/TextArea.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../../../src/components/Input/TextArea.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\ninterface TextAreaProps\n extends\n PropTypes.InferType<typeof TextArea.propTypes>,\n React.InputHTMLAttributes<HTMLTextAreaElement> {\n value?: string;\n}\n\ntype TextAreaInternalProps = TextAreaProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.textarea<TextAreaInternalProps>`\n border: none;\n color: inherit;\n padding: 8px;\n min-height: 150px;\n min-width: 250px;\n border-radius: 3px;\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n display: inline-block;\n background-color: var(--background, ${constants.BACKGROUND});\n\n /** Focused */\n &:focus,\n &:active {\n border-color: var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 4px var(--primary, ${constants.PRIMARY_LIGHT});\n }\n\n &:focus + span,\n &:active + span {\n color: var(--primary, ${constants.PRIMARY});\n }\n\n /** Disabled */\n &:disabled {\n border-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});\n }\n\n &:disabled + span {\n color: var(--disabled, ${constants.DISABLED});\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: var(--error, ${constants.ERROR});\n box-shadow: 0 0 0 4px var(--error-light, ${constants.ERROR_LIGHT});\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: var(--error, ${constants.ERROR});\n }\n\n &:invalid + span {\n color: var(--error, ${constants.ERROR});\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: var(--error, ${constants.ERROR});\n\n & + span {\n color: var(--error, ${constants.ERROR});\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: var(--error, ${constants.ERROR});\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: var(--error, ${constants.ERROR});\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nexport default function TextArea(props: TextAreaProps) {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...props}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n />\n <span>{props.label}</span>\n {props.errorText && <ErrorContainer>{props.errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nTextArea.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** Error text to be shown below the field */\n errorText: PropTypes.string,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toggle.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AA4EnC,KAAK,WAAW,GAAG,SAAS,CAAC,UAAU,CACnC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,OAAO,MAAM,CAAC,SAAS,CACtE,CAAC;AAEF,iBAAS,MAAM,CAAC,KAAK,EAAE,WAAW,oDAQjC;kBARQ,MAAM;;QAWX,0BAA0B;;;;AAI9B,eAAe,MAAM,CAAC"}
|
|
@@ -17,14 +17,14 @@ const Input = styled.input `
|
|
|
17
17
|
width: 30px;
|
|
18
18
|
height: 18px;
|
|
19
19
|
background-color: ${constants.LIGHT_GREY};
|
|
20
|
-
transition: .4s;
|
|
20
|
+
transition: 0.4s;
|
|
21
21
|
border-radius: 10px;
|
|
22
22
|
padding: 0 3px;
|
|
23
23
|
margin: 0 10px 0 5px;
|
|
24
24
|
}
|
|
25
25
|
& + span:before {
|
|
26
26
|
position: absolute;
|
|
27
|
-
content:
|
|
27
|
+
content: '';
|
|
28
28
|
height: 14px;
|
|
29
29
|
width: 14px;
|
|
30
30
|
left: 1px;
|
|
@@ -32,7 +32,7 @@ const Input = styled.input `
|
|
|
32
32
|
border: 1px solid var(--disabled-border, ${constants.DISABLED_BORDER});
|
|
33
33
|
border-radius: 50%;
|
|
34
34
|
background-color: var(--background, ${constants.BACKGROUND});
|
|
35
|
-
transition: .4s;
|
|
35
|
+
transition: 0.4s;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
/* checked */
|
|
@@ -66,14 +66,14 @@ const Input = styled.input `
|
|
|
66
66
|
background-color: ${constants.LIGHT_GREY};
|
|
67
67
|
cursor: not-allowed;
|
|
68
68
|
}
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
&:disabled + span:before {
|
|
71
71
|
background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});
|
|
72
72
|
border-color: var(--disabled-border, ${constants.DISABLED_BORDER});
|
|
73
73
|
}
|
|
74
74
|
`;
|
|
75
75
|
function Toggle(props) {
|
|
76
|
-
return (_jsxs(Switch, { children: [_jsx(Input, Object.assign({}, props, { type:
|
|
76
|
+
return (_jsxs(Switch, { children: [_jsx(Input, Object.assign({}, props, { type: "checkbox" })), _jsx("span", {}), _jsx("span", { children: props.label })] }));
|
|
77
77
|
}
|
|
78
78
|
Toggle.propTypes = {
|
|
79
79
|
/** Label for the field */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toggle.js","sourceRoot":"","sources":["../../../src/components/Input/Toggle.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAA;;;;CAI1B,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;;;;4BASE,SAAS,CAAC,UAAU;;;;;;;;;;;;;mDAaG,SAAS,CAAC,eAAe;;8CAE9B,SAAS,CAAC,UAAU;;;;;;2CAMvB,SAAS,CAAC,aAAa;;;;;uCAK3B,SAAS,CAAC,OAAO;;;;;+CAKT,SAAS,CAAC,aAAa;uCAC/B,SAAS,CAAC,OAAO;;;;;;gCAMxB,SAAS,CAAC,OAAO;;;;;wCAKT,SAAS,CAAC,eAAe;;;;4BAIrC,SAAS,CAAC,UAAU;;;;;sDAKM,SAAS,CAAC,kBAAkB;+CACnC,SAAS,CAAC,eAAe;;CAEvE,CAAC;
|
|
1
|
+
{"version":3,"file":"Toggle.js","sourceRoot":"","sources":["../../../src/components/Input/Toggle.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAA;;;;CAI1B,CAAC;AAEF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;;;;;;;;;4BASE,SAAS,CAAC,UAAU;;;;;;;;;;;;;mDAaG,SAAS,CAAC,eAAe;;8CAE9B,SAAS,CAAC,UAAU;;;;;;2CAMvB,SAAS,CAAC,aAAa;;;;;uCAK3B,SAAS,CAAC,OAAO;;;;;+CAKT,SAAS,CAAC,aAAa;uCAC/B,SAAS,CAAC,OAAO;;;;;;gCAMxB,SAAS,CAAC,OAAO;;;;;wCAKT,SAAS,CAAC,eAAe;;;;4BAIrC,SAAS,CAAC,UAAU;;;;;sDAKM,SAAS,CAAC,kBAAkB;+CACnC,SAAS,CAAC,eAAe;;CAEvE,CAAC;AAMF,SAAS,MAAM,CAAC,KAAkB;IAC9B,OAAO,CACH,MAAC,MAAM,eACH,KAAC,KAAK,oBAAK,KAAK,IAAE,IAAI,EAAC,UAAU,IAAG,EACpC,gBAAa,EACb,yBAAO,KAAK,CAAC,KAAK,GAAQ,IACrB,CACZ,CAAC;AACN,CAAC;AAED,MAAM,CAAC,SAAS,GAAG;IACf,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nconst Switch = styled.label`\n position: relative;\n display: inline-flex;\n margin: 5px 0;\n`;\n\nconst Input = styled.input`\n appearance: none;\n margin: 0;\n\n & + span {\n position: relative;\n cursor: pointer;\n width: 30px;\n height: 18px;\n background-color: ${constants.LIGHT_GREY};\n transition: 0.4s;\n border-radius: 10px;\n padding: 0 3px;\n margin: 0 10px 0 5px;\n }\n & + span:before {\n position: absolute;\n content: '';\n height: 14px;\n width: 14px;\n left: 1px;\n top: 1px;\n border: 1px solid var(--disabled-border, ${constants.DISABLED_BORDER});\n border-radius: 50%;\n background-color: var(--background, ${constants.BACKGROUND});\n transition: 0.4s;\n }\n\n /* checked */\n &:checked + span {\n background-color: var(--primary, ${constants.PRIMARY_LIGHT});\n }\n\n &:checked + span:before {\n transform: translateX(18px);\n border-color: var(--primary, ${constants.PRIMARY});\n }\n\n /* focus */\n &:enabled:focus + span:before {\n box-shadow: 0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT});\n border-color: var(--primary, ${constants.PRIMARY});\n }\n\n /* hover */\n &:enabled:hover ~ span {\n cursor: pointer;\n color: var(--primary, ${constants.PRIMARY});\n }\n\n /* disabled */\n &:disabled ~ span {\n color: var(--disabled-border, ${constants.DISABLED_BORDER});\n }\n\n &:disabled + span {\n background-color: ${constants.LIGHT_GREY};\n cursor: not-allowed;\n }\n\n &:disabled + span:before {\n background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n border-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n }\n`;\n\ntype ToggleProps = PropTypes.InferProps<\n React.AllHTMLAttributes<HTMLInputElement> & typeof Toggle.propTypes\n>;\n\nfunction Toggle(props: ToggleProps) {\n return (\n <Switch>\n <Input {...props} type=\"checkbox\" />\n <span></span>\n <span>{props.label}</span>\n </Switch>\n );\n}\n\nToggle.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n};\n\nexport default Toggle;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC","sourcesContent":["export { default as Input } from './Input';\nexport { default as TextArea } from './TextArea';\nexport { default as Select } from './Select';\nexport { default as Checkbox } from './Checkbox';\nexport { default as Toggle } from './Toggle';\nexport { default as Radio } from './Radio';\nexport { default as RadioButton, RadioGroup } from './RadioButton';\nexport { default as Dropdown } from './Dropdown';\n"]}
|