@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.
185 lines (161 loc) • 6.57 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var React = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _defaultTokens = _interopRequireDefault(require("../defaultTokens"));
var _Button = _interopRequireDefault(require("../Button"));
var _ButtonLink = _interopRequireDefault(require("../ButtonLink"));
var _FormLabel = _interopRequireDefault(require("../FormLabel"));
var _FormFeedback = _interopRequireDefault(require("../FormFeedback"));
var _Attachment = _interopRequireDefault(require("../icons/Attachment"));
var _CloseCircle = _interopRequireDefault(require("../icons/CloseCircle"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
var Field = _styledComponents.default.label.withConfig({
displayName: "InputFile__Field",
componentId: "sc-12oq9bq-0"
})(["font-family:", ";display:block;position:relative;"], function (_ref) {
var theme = _ref.theme;
return theme.orbit.fontfamily;
});
Field.defaultProps = {
theme: _defaultTokens.default
};
var FakeInput = (0, _styledComponents.default)(function (_ref2) {
var children = _ref2.children,
className = _ref2.className;
return React.createElement("div", {
className: className
}, children);
}).withConfig({
displayName: "InputFile__FakeInput",
componentId: "sc-12oq9bq-1"
})(["box-sizing:border-box;display:flex;align-items:center;padding-left:6px;height:", ";border-radius:", ";box-shadow:inset 0 0 0 ", ";background-color:", ";transition:box-shadow ", " ease-in-out;&:hover{box-shadow:inset 0 0 0 ", ";}"], function (_ref3) {
var theme = _ref3.theme;
return theme.orbit.heightInputNormal;
}, function (_ref4) {
var theme = _ref4.theme;
return theme.orbit.borderRadiusNormal;
}, function (_ref5) {
var theme = _ref5.theme,
error = _ref5.error;
return "".concat(theme.orbit.borderWidthInput, " ").concat(error ? theme.orbit.borderColorInputError : theme.orbit.borderColorInput);
}, function (_ref6) {
var theme = _ref6.theme;
return theme.backgroundInput;
}, function (_ref7) {
var theme = _ref7.theme;
return theme.orbit.durationFast;
}, function (_ref8) {
var theme = _ref8.theme,
error = _ref8.error;
return "".concat(theme.orbit.borderWidthInput, " ").concat(error ? theme.orbit.paletteRedNormalHover : theme.orbit.borderColorInputHover);
});
FakeInput.defaultProps = {
theme: _defaultTokens.default
};
var Input = _styledComponents.default.input.withConfig({
displayName: "InputFile__Input",
componentId: "sc-12oq9bq-2"
})(["opacity:0;position:absolute;height:0;&:focus ~ ", "{box-shadow:", ";}"], FakeInput, function (_ref9) {
var theme = _ref9.theme;
return "inset 0 0 0 ".concat(theme.orbit.borderWidthInputFocus, " ").concat(theme.orbit.borderColorInputFocus);
});
Input.defaultProps = {
theme: _defaultTokens.default
};
var getFileInputColor = function getFileInputColor(_ref10, theme) {
var error = _ref10.error,
fileName = _ref10.fileName;
if (error) {
return theme.orbit.paletteRedNormal;
}
if (fileName) {
return theme.orbit.colorTextInput;
}
return theme.orbit.paletteInkLight;
};
var StyledFileInput = _styledComponents.default.div.withConfig({
displayName: "InputFile__StyledFileInput",
componentId: "sc-12oq9bq-3"
})(["color:", ";width:100%;white-space:nowrap;padding-left:", ";"], function (_ref11) {
var error = _ref11.error,
fileName = _ref11.fileName,
theme = _ref11.theme;
return getFileInputColor({
error: error,
fileName: fileName
}, theme);
}, function (_ref12) {
var theme = _ref12.theme;
return theme.orbit.spaceSmall;
});
StyledFileInput.defaultProps = {
theme: _defaultTokens.default
};
var InputButton = (0, _styledComponents.default)(_Button.default).withConfig({
displayName: "InputFile__InputButton",
componentId: "sc-12oq9bq-4"
})(["flex-shrink:0;"]);
var CloseButton = (0, _styledComponents.default)(_ButtonLink.default).withConfig({
displayName: "InputFile__CloseButton",
componentId: "sc-12oq9bq-5"
})(["flex-shrink:0;& svg{color:", ";}"], function (_ref13) {
var theme = _ref13.theme;
return theme.orbit.paletteInkLight;
});
CloseButton.defaultProps = {
theme: _defaultTokens.default
}; // $FlowExpected
var InputFile = React.forwardRef(function (props, ref) {
var _props$placeholder = props.placeholder,
placeholder = _props$placeholder === void 0 ? "No file selected" : _props$placeholder,
_props$title = props.title,
title = _props$title === void 0 ? "Select file" : _props$title,
onRemoveFile = props.onRemoveFile,
dataTest = props.dataTest;
return React.createElement(Field, {
"data-test": dataTest
}, React.createElement(Input, {
type: "file",
name: props.name,
error: props.error,
onChange: props.onChange,
onFocus: props.onChange,
onBlur: props.onBlur,
accept: props.allowedFileTypes,
ref: ref
}), props.label && React.createElement(_FormLabel.default, {
filled: !!props.fileName
}, props.label), React.createElement(FakeInput, {
error: props.error
}, React.createElement(InputButton, {
type: "secondary",
size: "small",
icon: React.createElement(_Attachment.default, null),
component: "div"
}, title), React.createElement(StyledFileInput, {
fileName: props.fileName,
error: props.error
}, props.fileName || placeholder), props.fileName && React.createElement(CloseButton, {
type: "secondary",
transparent: true,
icon: React.createElement(_CloseCircle.default, null),
onClick: function onClick(ev) {
ev.preventDefault();
if (onRemoveFile) {
onRemoveFile();
}
}
})), props.help && !props.error && React.createElement(_FormFeedback.default, {
type: "help"
}, props.help), props.error && React.createElement(_FormFeedback.default, {
type: "error"
}, props.error));
});
InputFile.displayName = "InputFile";
var _default = InputFile;
exports.default = _default;