UNPKG

@wix/design-system

Version:

@wix/design-system

180 lines (178 loc) 7.25 kB
"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;