@wix/design-system
Version:
@wix/design-system
180 lines (178 loc) • 7.25 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _react = _interopRequireDefault(require("react"));
var _wixUiIconsCommon = require("@wix/wix-ui-icons-common");
var _uniqueId = _interopRequireDefault(require("lodash/uniqueId"));
var _FilePickerSt = require("./FilePicker.st.css.js");
var _FormField = _interopRequireDefault(require("../FormField"));
var _TextButton = _interopRequireDefault(require("../TextButton"));
var _Text = _interopRequireDefault(require("../Text"));
var _FileUpload = _interopRequireDefault(require("../FileUpload"));
var _IconThemeContext = require("../WixDesignSystemIconThemeProvider/IconThemeContext");
var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/FilePicker/FilePicker.jsx";
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
/**
* # `<FilePicker/>`
*
* Component that opens system browser dialog for choosing files to upload
*/
var FilePicker = /*#__PURE__*/function (_React$PureComponent) {
function FilePicker(props) {
var _this;
(0, _classCallCheck2["default"])(this, FilePicker);
_this = _callSuper(this, FilePicker, [props]);
_this.state = {
selectedFileName: props.subLabel
};
_this.id = props.id || (0, _uniqueId["default"])('file_picker_input_');
return _this;
}
/** A callback which is invoked every time a file is chosen */
(0, _inherits2["default"])(FilePicker, _React$PureComponent);
return (0, _createClass2["default"])(FilePicker, [{
key: "onChooseFile",
value: function onChooseFile(file) {
var _this$props = this.props,
maxSize = _this$props.maxSize,
onChange = _this$props.onChange;
if (file) {
onChange(file);
if (file.size <= maxSize) {
this.setState({
selectedFileName: file.name
});
}
}
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var _this$props2 = this.props,
header = _this$props2.header,
mainLabel = _this$props2.mainLabel,
supportedFormats = _this$props2.supportedFormats,
error = _this$props2.error,
errorMessage = _this$props2.errorMessage,
name = _this$props2.name,
dataHook = _this$props2.dataHook;
return /*#__PURE__*/_react["default"].createElement(_IconThemeContext.IconThemeContext.Consumer, {
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 50,
columnNumber: 7
}
}, function (_ref) {
var _icons$FilePicker;
var _ref$icons = _ref.icons,
icons = _ref$icons === void 0 ? {} : _ref$icons;
var AddIcon = ((_icons$FilePicker = icons.FilePicker) == null ? void 0 : _icons$FilePicker.Add) || _wixUiIconsCommon.Add;
return /*#__PURE__*/_react["default"].createElement(_FileUpload["default"], {
accept: supportedFormats,
onChange: function onChange(files) {
return _this2.onChooseFile(files[0]);
},
name: name,
__self: _this2,
__source: {
fileName: _jsxFileName,
lineNumber: 55,
columnNumber: 13
}
}, function (_ref2) {
var openFileUploadDialog = _ref2.openFileUploadDialog;
return /*#__PURE__*/_react["default"].createElement(_FormField["default"], {
label: header,
dataHook: dataHook,
__self: _this2,
__source: {
fileName: _jsxFileName,
lineNumber: 61,
columnNumber: 17
}
}, /*#__PURE__*/_react["default"].createElement("label", {
className: _FilePickerSt.classes.label,
onClick: openFileUploadDialog,
__self: _this2,
__source: {
fileName: _jsxFileName,
lineNumber: 62,
columnNumber: 19
}
}, /*#__PURE__*/_react["default"].createElement("div", {
className: _FilePickerSt.classes.icon,
__self: _this2,
__source: {
fileName: _jsxFileName,
lineNumber: 66,
columnNumber: 21
}
}, /*#__PURE__*/_react["default"].createElement(AddIcon, {
__self: _this2,
__source: {
fileName: _jsxFileName,
lineNumber: 67,
columnNumber: 23
}
})), /*#__PURE__*/_react["default"].createElement("div", {
className: _FilePickerSt.classes.content,
__self: _this2,
__source: {
fileName: _jsxFileName,
lineNumber: 70,
columnNumber: 21
}
}, /*#__PURE__*/_react["default"].createElement(_TextButton["default"], {
dataHook: "main-label",
__self: _this2,
__source: {
fileName: _jsxFileName,
lineNumber: 71,
columnNumber: 23
}
}, mainLabel), /*#__PURE__*/_react["default"].createElement(_Text["default"], {
className: _FilePickerSt.classes.info,
size: "small",
secondary: true,
dataHook: "sub-label",
__self: _this2,
__source: {
fileName: _jsxFileName,
lineNumber: 72,
columnNumber: 23
}
}, _this2.state.selectedFileName), error && /*#__PURE__*/_react["default"].createElement(_Text["default"], {
skin: "error",
size: "small",
dataHook: "filePicker-error",
__self: _this2,
__source: {
fileName: _jsxFileName,
lineNumber: 81,
columnNumber: 25
}
}, errorMessage))));
});
});
}
}]);
}(_react["default"].PureComponent);
FilePicker.displayName = 'FilePicker';
FilePicker.defaultProps = {
mainLabel: 'Choose File',
subLabel: 'No file chosen (Max size 5 MB)',
onChange: function onChange() {},
supportedFormats: '*',
errorMessage: '',
maxSize: 5000000 // 5MB
};
var _default = exports["default"] = FilePicker;