@threekit-tools/treble 0.0.55 → 0.0.56
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/Upload/index.d.ts +1 -1
- package/dist/components/Upload/index.js +22 -18
- package/dist/components/Upload/upload.styles.d.ts +4 -2
- package/dist/components/Upload/upload.styles.js +10 -6
- package/dist/components/UploadArea/index.d.ts +12 -0
- package/dist/components/UploadArea/index.js +137 -0
- package/dist/components/UploadArea/uploadArea.styles.d.ts +7 -0
- package/dist/components/UploadArea/uploadArea.styles.js +16 -0
- package/dist/components/formComponents.js +1 -0
- package/dist/hooks/useAttribute/index.d.ts +1 -1
- package/dist/hooks/useAttribute/index.js +11 -7
- package/dist/icons/Spinner.d.ts +1 -0
- package/dist/icons/Spinner.js +2 -2
- package/dist/utils.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { IFormComponentProps, IOptionShared } from '../containers/formInputContainer';
|
|
3
3
|
export interface IUpload extends Pick<IFormComponentProps<IOptionShared>, 'title' | 'description' | 'className' | 'value'> {
|
|
4
|
-
onChange: (file: File) => Promise<void>;
|
|
4
|
+
onChange: (file: File | undefined) => Promise<void>;
|
|
5
5
|
}
|
|
6
6
|
export declare const Upload: {
|
|
7
7
|
(props: IUpload): JSX.Element;
|
|
@@ -71,13 +71,15 @@ var upload_styles_1 = require("./upload.styles");
|
|
|
71
71
|
var Upload = function (props) {
|
|
72
72
|
var title = props.title, description = props.description, value = props.value, onChange = props.onChange, customClassName = props.className;
|
|
73
73
|
var _a = (0, react_1.useState)(false), isUploading = _a[0], setIsUploading = _a[1];
|
|
74
|
-
var
|
|
75
|
-
var
|
|
74
|
+
var inputRef = (0, react_1.useRef)(null);
|
|
75
|
+
var imgRef = (0, react_1.useRef)(null);
|
|
76
76
|
var cls = (0, utils_1.generateInputClassName)('upload', customClassName, title);
|
|
77
77
|
var handleClick = function () {
|
|
78
78
|
var _a;
|
|
79
79
|
if (isUploading)
|
|
80
80
|
return;
|
|
81
|
+
if (value === null || value === void 0 ? void 0 : value.length)
|
|
82
|
+
return;
|
|
81
83
|
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click();
|
|
82
84
|
};
|
|
83
85
|
var handleUpload = function (file) { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -90,14 +92,14 @@ var Upload = function (props) {
|
|
|
90
92
|
case 1:
|
|
91
93
|
_a.sent();
|
|
92
94
|
setIsUploading(false);
|
|
93
|
-
|
|
95
|
+
if (!file)
|
|
96
|
+
return [2 /*return*/];
|
|
94
97
|
reader = new FileReader();
|
|
95
98
|
reader.onload = function () {
|
|
96
|
-
|
|
97
|
-
if (!imgEl)
|
|
99
|
+
if (!imgRef.current)
|
|
98
100
|
return;
|
|
99
101
|
// @ts-ignore
|
|
100
|
-
|
|
102
|
+
imgRef.current.src = reader.result;
|
|
101
103
|
};
|
|
102
104
|
reader.readAsDataURL(file);
|
|
103
105
|
return [2 /*return*/];
|
|
@@ -107,7 +109,7 @@ var Upload = function (props) {
|
|
|
107
109
|
return (react_1.default.createElement(shared_styles_1.FormComponentWrapper, null,
|
|
108
110
|
react_1.default.createElement(FormComponentTitle_1.default, { title: title, className: cls }),
|
|
109
111
|
react_1.default.createElement(FormComponentDescription_1.default, { description: description, className: cls }),
|
|
110
|
-
react_1.default.createElement(upload_styles_1.UploadWrapper, { className: cls },
|
|
112
|
+
react_1.default.createElement(upload_styles_1.UploadWrapper, { className: cls, uploaded: !!(!isUploading && (value === null || value === void 0 ? void 0 : value.length)) },
|
|
111
113
|
react_1.default.createElement("input", { type: "file", ref: inputRef, onChange: function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
112
114
|
var _a;
|
|
113
115
|
return __generator(this, function (_b) {
|
|
@@ -117,19 +119,21 @@ var Upload = function (props) {
|
|
|
117
119
|
return [2 /*return*/];
|
|
118
120
|
});
|
|
119
121
|
}); } }),
|
|
120
|
-
react_1.default.createElement("button", { type: "button", onClick: handleClick }, isUploading ? (react_1.default.createElement(
|
|
121
|
-
react_1.default.createElement(
|
|
122
|
+
react_1.default.createElement("button", { type: "button", onClick: handleClick }, isUploading ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
123
|
+
react_1.default.createElement(upload_styles_1.IconWrapper, null,
|
|
122
124
|
react_1.default.createElement(icons_1.SpinnerIcon, { size: "28px" })),
|
|
123
|
-
react_1.default.createElement("div", null, "Uploading..."))) : (value === null || value === void 0 ? void 0 : value.length) ? (react_1.default.createElement(upload_styles_1.
|
|
124
|
-
react_1.default.createElement("div", null,
|
|
125
|
-
react_1.default.createElement("img", { src: "#", id: "trbl-upload-img" })),
|
|
126
|
-
react_1.default.createElement("div", null,
|
|
127
|
-
react_1.default.createElement("div", null, filename),
|
|
128
|
-
react_1.default.createElement("div", null, "Upload another file.")))) : (react_1.default.createElement("div", null,
|
|
125
|
+
react_1.default.createElement("div", null, "Uploading..."))) : (value === null || value === void 0 ? void 0 : value.length) ? (react_1.default.createElement(upload_styles_1.ImageWrapper, null,
|
|
129
126
|
react_1.default.createElement("div", null,
|
|
130
|
-
react_1.default.createElement(
|
|
131
|
-
react_1.default.createElement(
|
|
132
|
-
|
|
127
|
+
react_1.default.createElement("img", { ref: imgRef, src: "#" })),
|
|
128
|
+
react_1.default.createElement(upload_styles_1.ImageActionArea, null,
|
|
129
|
+
react_1.default.createElement("div", { onClick: function (e) {
|
|
130
|
+
handleUpload(undefined);
|
|
131
|
+
e.stopPropagation();
|
|
132
|
+
} },
|
|
133
|
+
react_1.default.createElement(icons_1.DeleteIcon, null))))) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
134
|
+
react_1.default.createElement(upload_styles_1.IconWrapper, null,
|
|
135
|
+
react_1.default.createElement(icons_1.AddIcon, null)),
|
|
136
|
+
react_1.default.createElement("div", null, "Upload")))))));
|
|
133
137
|
};
|
|
134
138
|
exports.Upload = Upload;
|
|
135
139
|
exports.Upload.componentName = 'upload';
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
interface IUploadWrapper {
|
|
2
2
|
fullWidth?: boolean;
|
|
3
|
-
|
|
3
|
+
uploaded: boolean;
|
|
4
4
|
}
|
|
5
5
|
export declare const UploadWrapper: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, IUploadWrapper, never>;
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const ImageWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
7
|
+
export declare const ImageActionArea: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
8
|
+
export declare const IconWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
7
9
|
export {};
|
|
@@ -7,10 +7,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
7
7
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
8
|
};
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.
|
|
10
|
+
exports.IconWrapper = exports.ImageActionArea = exports.ImageWrapper = exports.UploadWrapper = void 0;
|
|
11
11
|
var styled_components_1 = __importDefault(require("styled-components"));
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
var SIZE = '110px';
|
|
13
|
+
var PADDING = '6px';
|
|
14
|
+
exports.UploadWrapper = styled_components_1.default.span(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: relative;\n overflow: hidden;\n display: inline-block;\n\n & button {\n height: ", ";\n width: ", ";\n /* padding: 6px; */\n overflow: hidden;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n text-align: center;\n background: white;\n cursor: ", ";\n border-radius: ", ";\n border: 1px\n ", ";\n transition: all 0.16s ease-in-out;\n\n img {\n height: 100%;\n width: 100%;\n }\n }\n\n .tk-icon {\n transition: all 0.16s ease-in-out;\n }\n\n & button:hover {\n border-color: ", ";\n color: ", ";\n\n .tk-icon {\n ", ";\n }\n }\n\n & input[type='file'] {\n display: none;\n }\n"], ["\n position: relative;\n overflow: hidden;\n display: inline-block;\n\n & button {\n height: ", ";\n width: ", ";\n /* padding: 6px; */\n overflow: hidden;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n text-align: center;\n background: white;\n cursor: ", ";\n border-radius: ", ";\n border: 1px\n ", ";\n transition: all 0.16s ease-in-out;\n\n img {\n height: 100%;\n width: 100%;\n }\n }\n\n .tk-icon {\n transition: all 0.16s ease-in-out;\n }\n\n & button:hover {\n border-color: ", ";\n color: ", ";\n\n .tk-icon {\n ", ";\n }\n }\n\n & input[type='file'] {\n display: none;\n }\n"])), SIZE, function (props) { return (props.fullWidth ? '100%' : SIZE); }, function (props) { return props.theme.fontFamily; }, function (props) { return props.theme.fontBaseSize; }, function (props) { return props.theme.textColor; }, function (props) { return (props.uploaded ? 'default' : 'pointer'); }, function (props) { return props.theme.borderRadius || '2px'; }, function (props) {
|
|
15
|
+
return "".concat(props.uploaded ? 'solid' : 'dashed', " ").concat(props.theme.borderColorBase);
|
|
16
|
+
}, function (props) { return props.theme.primaryColor; }, function (props) { return props.theme.primaryColor; }, function (props) { return (props.uploaded ? '' : "stroke: ".concat(props.theme.primaryColor)); });
|
|
17
|
+
exports.ImageWrapper = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n position: relative;\n\n & > div {\n height: calc(", " - (2 * (", " + 1px)));\n width: calc(", " - (2 * (", " + 1px)));\n }\n"], ["\n position: relative;\n\n & > div {\n height: calc(", " - (2 * (", " + 1px)));\n width: calc(", " - (2 * (", " + 1px)));\n }\n"])), SIZE, PADDING, SIZE, PADDING);
|
|
18
|
+
exports.ImageActionArea = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n position: absolute;\n top: 0;\n left: 0;\n height: calc(", " - (2 * (", " + 1px)));\n width: calc(", " - (2 * (", " + 1px)));\n\n transition: all 0.3s;\n\n &:hover {\n background: rgba(0, 0, 0, 0.6);\n\n & > div {\n opacity: 1;\n }\n }\n\n & > div {\n opacity: 0;\n cursor: pointer;\n }\n\n & > div:hover {\n .tk-icon {\n stroke: ", ";\n }\n }\n\n .tk-icon {\n stroke: white;\n }\n\n & > div {\n height: max-content;\n width: max-content;\n position: relative;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n"], ["\n position: absolute;\n top: 0;\n left: 0;\n height: calc(", " - (2 * (", " + 1px)));\n width: calc(", " - (2 * (", " + 1px)));\n\n transition: all 0.3s;\n\n &:hover {\n background: rgba(0, 0, 0, 0.6);\n\n & > div {\n opacity: 1;\n }\n }\n\n & > div {\n opacity: 0;\n cursor: pointer;\n }\n\n & > div:hover {\n .tk-icon {\n stroke: ", ";\n }\n }\n\n .tk-icon {\n stroke: white;\n }\n\n & > div {\n height: max-content;\n width: max-content;\n position: relative;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n"])), SIZE, PADDING, SIZE, PADDING, function (props) { return props.theme.primaryColor; });
|
|
19
|
+
exports.IconWrapper = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n margin-bottom: 12px;\n"], ["\n margin-bottom: 12px;\n"])));
|
|
20
|
+
var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IFormComponentProps, IOptionShared } from '../containers/formInputContainer';
|
|
3
|
+
export interface IUpload extends Pick<IFormComponentProps<IOptionShared>, 'title' | 'description' | 'className' | 'value'> {
|
|
4
|
+
onChange: (file: File) => Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export declare const UploadArea: {
|
|
7
|
+
(props: IUpload): JSX.Element;
|
|
8
|
+
componentName: string;
|
|
9
|
+
compatibleAttributes: Set<string>;
|
|
10
|
+
};
|
|
11
|
+
declare const _default: (props: IUpload) => JSX.Element | null;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
31
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
32
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
33
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
34
|
+
function step(op) {
|
|
35
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
36
|
+
while (_) try {
|
|
37
|
+
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;
|
|
38
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
39
|
+
switch (op[0]) {
|
|
40
|
+
case 0: case 1: t = op; break;
|
|
41
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
42
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
43
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
44
|
+
default:
|
|
45
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
46
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
47
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
48
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
49
|
+
if (t[2]) _.ops.pop();
|
|
50
|
+
_.trys.pop(); continue;
|
|
51
|
+
}
|
|
52
|
+
op = body.call(thisArg, _);
|
|
53
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
54
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
58
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
59
|
+
};
|
|
60
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
|
+
exports.UploadArea = void 0;
|
|
62
|
+
var react_1 = __importStar(require("react"));
|
|
63
|
+
var constants_1 = require("../../constants");
|
|
64
|
+
var FormComponentTitle_1 = __importDefault(require("../FormComponentTitle"));
|
|
65
|
+
var FormComponentDescription_1 = __importDefault(require("../FormComponentDescription"));
|
|
66
|
+
var shared_styles_1 = require("../shared.styles");
|
|
67
|
+
var utils_1 = require("../../utils");
|
|
68
|
+
var icons_1 = require("../../icons");
|
|
69
|
+
var formInputContainer_1 = __importDefault(require("../containers/formInputContainer"));
|
|
70
|
+
var uploadArea_styles_1 = require("./uploadArea.styles");
|
|
71
|
+
var UploadArea = function (props) {
|
|
72
|
+
var title = props.title, description = props.description, value = props.value, onChange = props.onChange, customClassName = props.className;
|
|
73
|
+
var _a = (0, react_1.useState)(false), isUploading = _a[0], setIsUploading = _a[1];
|
|
74
|
+
var _b = (0, react_1.useState)(undefined), filename = _b[0], setFilename = _b[1];
|
|
75
|
+
var inputRef = (0, react_1.useRef)(null);
|
|
76
|
+
var imgRef = (0, react_1.useRef)(null);
|
|
77
|
+
var cls = (0, utils_1.generateInputClassName)('upload', customClassName, title);
|
|
78
|
+
var handleClick = function () {
|
|
79
|
+
var _a;
|
|
80
|
+
if (isUploading)
|
|
81
|
+
return;
|
|
82
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click();
|
|
83
|
+
};
|
|
84
|
+
var handleUpload = function (file) { return __awaiter(void 0, void 0, void 0, function () {
|
|
85
|
+
var reader;
|
|
86
|
+
return __generator(this, function (_a) {
|
|
87
|
+
switch (_a.label) {
|
|
88
|
+
case 0:
|
|
89
|
+
setIsUploading(true);
|
|
90
|
+
return [4 /*yield*/, onChange(file)];
|
|
91
|
+
case 1:
|
|
92
|
+
_a.sent();
|
|
93
|
+
setIsUploading(false);
|
|
94
|
+
setFilename(file.name);
|
|
95
|
+
reader = new FileReader();
|
|
96
|
+
reader.onload = function () {
|
|
97
|
+
if (!imgRef.current)
|
|
98
|
+
return;
|
|
99
|
+
// @ts-ignore
|
|
100
|
+
imgRef.current.src = reader.result;
|
|
101
|
+
};
|
|
102
|
+
reader.readAsDataURL(file);
|
|
103
|
+
return [2 /*return*/];
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}); };
|
|
107
|
+
return (react_1.default.createElement(shared_styles_1.FormComponentWrapper, null,
|
|
108
|
+
react_1.default.createElement(FormComponentTitle_1.default, { title: title, className: cls }),
|
|
109
|
+
react_1.default.createElement(FormComponentDescription_1.default, { description: description, className: cls }),
|
|
110
|
+
react_1.default.createElement(uploadArea_styles_1.UploadWrapper, { className: cls },
|
|
111
|
+
react_1.default.createElement("input", { type: "file", ref: inputRef, onChange: function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
112
|
+
var _a;
|
|
113
|
+
return __generator(this, function (_b) {
|
|
114
|
+
if (!((_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0]) || !onChange)
|
|
115
|
+
return [2 /*return*/];
|
|
116
|
+
handleUpload(e.target.files[0]);
|
|
117
|
+
return [2 /*return*/];
|
|
118
|
+
});
|
|
119
|
+
}); } }),
|
|
120
|
+
react_1.default.createElement("button", { type: "button", onClick: handleClick }, isUploading ? (react_1.default.createElement(uploadArea_styles_1.UploadingWrapper, null,
|
|
121
|
+
react_1.default.createElement("div", null,
|
|
122
|
+
react_1.default.createElement(icons_1.SpinnerIcon, { size: "28px" })),
|
|
123
|
+
react_1.default.createElement("div", null, "Uploading..."))) : (value === null || value === void 0 ? void 0 : value.length) ? (react_1.default.createElement(uploadArea_styles_1.UploadingWrapper, null,
|
|
124
|
+
react_1.default.createElement("div", null,
|
|
125
|
+
react_1.default.createElement("img", { ref: imgRef, src: "#" })),
|
|
126
|
+
react_1.default.createElement("div", null,
|
|
127
|
+
react_1.default.createElement("div", null, filename),
|
|
128
|
+
react_1.default.createElement("div", null, "Upload another file.")))) : (react_1.default.createElement("div", null,
|
|
129
|
+
react_1.default.createElement("div", null,
|
|
130
|
+
react_1.default.createElement(icons_1.ImageIcon, null)),
|
|
131
|
+
react_1.default.createElement("div", null, "Click to upload"),
|
|
132
|
+
react_1.default.createElement("div", null, "Supported file types: PNG, JPEG, SVG")))))));
|
|
133
|
+
};
|
|
134
|
+
exports.UploadArea = UploadArea;
|
|
135
|
+
exports.UploadArea.componentName = 'upload-area';
|
|
136
|
+
exports.UploadArea.compatibleAttributes = new Set([constants_1.ATTRIBUTE_TYPES.asset]);
|
|
137
|
+
exports.default = (0, formInputContainer_1.default)(exports.UploadArea);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface IUploadWrapper {
|
|
2
|
+
fullWidth?: boolean;
|
|
3
|
+
iconOnly?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare const UploadWrapper: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, IUploadWrapper, never>;
|
|
6
|
+
export declare const UploadingWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.UploadingWrapper = exports.UploadWrapper = void 0;
|
|
11
|
+
var styled_components_1 = __importDefault(require("styled-components"));
|
|
12
|
+
exports.UploadWrapper = styled_components_1.default.span(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: relative;\n overflow: hidden;\n display: inline-block;\n\n & button {\n min-height: 40px;\n height: max-content;\n width: ", ";\n padding: ", ";\n overflow: hidden;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n text-align: center;\n background: white;\n cursor: pointer;\n border-radius: ", ";\n border: 1px solid ", ";\n transition: all 0.16s ease-in-out;\n }\n\n .tk-icon {\n transition: all 0.16s ease-in-out;\n }\n\n & button:hover {\n border: 1px solid ", ";\n color: ", ";\n\n .tk-icon {\n stroke: ", ";\n }\n }\n\n & input[type='file'] {\n display: none;\n }\n"], ["\n position: relative;\n overflow: hidden;\n display: inline-block;\n\n & button {\n min-height: 40px;\n height: max-content;\n width: ", ";\n padding: ", ";\n overflow: hidden;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n text-align: center;\n background: white;\n cursor: pointer;\n border-radius: ", ";\n border: 1px solid ", ";\n transition: all 0.16s ease-in-out;\n }\n\n .tk-icon {\n transition: all 0.16s ease-in-out;\n }\n\n & button:hover {\n border: 1px solid ", ";\n color: ", ";\n\n .tk-icon {\n stroke: ", ";\n }\n }\n\n & input[type='file'] {\n display: none;\n }\n"])), function (props) {
|
|
13
|
+
return props.fullWidth ? '100%' : props.iconOnly ? '40px' : 'max-content';
|
|
14
|
+
}, function (props) { return (props.iconOnly ? '0px' : '10px 16px'); }, function (props) { return props.theme.fontFamily; }, function (props) { return props.theme.fontBaseSize; }, function (props) { return props.theme.textColor; }, function (props) { return props.theme.borderRadius || '2px'; }, function (props) { return props.theme.borderColorBase; }, function (props) { return props.theme.primaryColor; }, function (props) { return props.theme.primaryColor; }, function (props) { return props.theme.primaryColor; });
|
|
15
|
+
exports.UploadingWrapper = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: grid;\n grid-template-columns: max-content max-content;\n grid-gap: 8px;\n\n & > div {\n height: max-content;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n }\n\n img {\n height: 72px;\n }\n"], ["\n display: grid;\n grid-template-columns: max-content max-content;\n grid-gap: 8px;\n\n & > div {\n height: max-content;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n }\n\n img {\n height: 72px;\n }\n"])));
|
|
16
|
+
var templateObject_1, templateObject_2;
|
|
@@ -29,6 +29,7 @@ var Swatch_1 = __importStar(require("./Swatch"));
|
|
|
29
29
|
var Tiles_1 = __importStar(require("./Tiles"));
|
|
30
30
|
var TilesGroup_1 = __importStar(require("./TilesGroup"));
|
|
31
31
|
var Upload_1 = __importStar(require("./Upload"));
|
|
32
|
+
// import UploadArea, { UploadArea as UploadAreaComponent } from './UploadArea';
|
|
32
33
|
exports.formComponents = (_a = {},
|
|
33
34
|
_a[constants_1.ATTRIBUTE_TYPES.asset] = (_b = {},
|
|
34
35
|
// First option is default
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IThreekitDisplayAttribute, IConfigurationColor } from '../../threekit';
|
|
2
|
-
export declare type RawAttributeValue = string | number | boolean | IConfigurationColor | File;
|
|
2
|
+
export declare type RawAttributeValue = string | number | boolean | IConfigurationColor | File | undefined;
|
|
3
3
|
declare type UseAttributeError = [undefined, undefined];
|
|
4
4
|
declare type UseAttributeSuccess = [
|
|
5
5
|
IThreekitDisplayAttribute,
|
|
@@ -61,17 +61,21 @@ var useAttribute = function (attributeName) {
|
|
|
61
61
|
switch (_b.label) {
|
|
62
62
|
case 0:
|
|
63
63
|
if (!(attribute.type === 'Asset' &&
|
|
64
|
-
attribute.assetType === constants_1.ASSET_TYPES.upload)) return [3 /*break*/,
|
|
65
|
-
return [
|
|
66
|
-
|
|
64
|
+
attribute.assetType === constants_1.ASSET_TYPES.upload)) return [3 /*break*/, 4];
|
|
65
|
+
if (!!value) return [3 /*break*/, 1];
|
|
66
|
+
preppedValue = (0, utils_1.selectionToConfiguration)('', attribute.type);
|
|
67
|
+
return [3 /*break*/, 3];
|
|
68
|
+
case 1: return [4 /*yield*/, api_1.default.catalog.uploadAsset(value)];
|
|
69
|
+
case 2:
|
|
67
70
|
assetId = _b.sent();
|
|
68
71
|
if (assetId)
|
|
69
72
|
preppedValue = (0, utils_1.selectionToConfiguration)(assetId, attribute.type);
|
|
70
|
-
return [3 /*break*/, 3];
|
|
71
|
-
case 2:
|
|
72
|
-
preppedValue = (0, utils_1.selectionToConfiguration)(value, attribute.type);
|
|
73
73
|
_b.label = 3;
|
|
74
|
-
case 3:
|
|
74
|
+
case 3: return [3 /*break*/, 5];
|
|
75
|
+
case 4:
|
|
76
|
+
preppedValue = (0, utils_1.selectionToConfiguration)(value, attribute.type);
|
|
77
|
+
_b.label = 5;
|
|
78
|
+
case 5:
|
|
75
79
|
dispatch((0, attributes_1.setConfiguration)((_a = {},
|
|
76
80
|
_a[attributeName] = preppedValue,
|
|
77
81
|
_a)));
|
package/dist/icons/Spinner.d.ts
CHANGED
package/dist/icons/Spinner.js
CHANGED
|
@@ -29,10 +29,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
var react_1 = __importDefault(require("react"));
|
|
30
30
|
var styled_components_1 = __importStar(require("styled-components"));
|
|
31
31
|
function Spinner(props) {
|
|
32
|
-
return react_1.default.createElement(Wrapper, { size: props.size });
|
|
32
|
+
return react_1.default.createElement(Wrapper, { size: props.size, thickness: props.thickness });
|
|
33
33
|
}
|
|
34
34
|
var spin = (0, styled_components_1.keyframes)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\nto {\n transform: rotate(360deg);\n}\n"], ["\nto {\n transform: rotate(360deg);\n}\n"])));
|
|
35
|
-
var Wrapper = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: inline-block;\n width: ", ";\n height: ", ";\n border:
|
|
35
|
+
var Wrapper = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: inline-block;\n width: ", ";\n height: ", ";\n border: ", " solid rgba(0, 0, 0, 0.3);\n border-radius: 50%;\n border-top-color: #000;\n animation: ", " 1s ease-in-out infinite;\n"], ["\n display: inline-block;\n width: ", ";\n height: ", ";\n border: ", " solid rgba(0, 0, 0, 0.3);\n border-radius: 50%;\n border-top-color: #000;\n animation: ", " 1s ease-in-out infinite;\n"])), function (props) { return props.size || '40px'; }, function (props) { return props.size || '40px'; }, function (props) { return props.thickness || '5px'; }, spin);
|
|
36
36
|
Spinner.iconName = 'spinner';
|
|
37
37
|
exports.default = Spinner;
|
|
38
38
|
var templateObject_1, templateObject_2;
|
package/dist/utils.d.ts
CHANGED
|
@@ -56,7 +56,7 @@ export declare const createThreekitScriptEl: (threekitDomain: string) => Promise
|
|
|
56
56
|
export declare const translateAttribute: (attributes: Array<IThreekitDisplayAttribute>, translations?: ITranslationMap | undefined, language?: string | undefined) => IThreekitDisplayAttribute;
|
|
57
57
|
export declare const selectionToConfiguration: (value: RawAttributeValue, attributeType: IAttributeTypes) => string | number | boolean | File | IConfigurationColor | {
|
|
58
58
|
assetId: RawAttributeValue;
|
|
59
|
-
};
|
|
59
|
+
} | undefined;
|
|
60
60
|
export declare const filterFormAttributes: (attributes: Record<string, IThreekitDisplayAttribute>, attributeComponentProps: IAttributesComponentProps, includeReservedAttributes: boolean) => IThreekitDisplayAttribute[];
|
|
61
61
|
export declare const isUuid: (str?: string | undefined) => boolean;
|
|
62
62
|
export declare const loadTrebleConfig: () => Partial<ITrebleConfig>;
|