@jobber/components 4.4.7 → 4.4.9-pre.0

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.
@@ -1,10 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import { FileUpload } from "../InputFile";
3
3
  interface InternalThumbnailProps {
4
- readonly name?: string;
5
- readonly hideName?: boolean;
4
+ readonly compact?: boolean;
6
5
  readonly size: "base" | "large";
7
6
  readonly file: FileUpload;
8
7
  }
9
- export declare function InternalThumbnail({ name, hideName, size, file, }: InternalThumbnailProps): JSX.Element;
8
+ export declare function InternalThumbnail({ compact, size, file, }: InternalThumbnailProps): JSX.Element;
10
9
  export {};
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var FormatFile = require('../FormatFile-a23d9ccd.js');
5
+ var FormatFile = require('../FormatFile-41867ef2.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('filesize');
@@ -29,27 +29,33 @@ function FormatFileDeleteButton({ size, onDelete }) {
29
29
  React__default["default"].createElement(ConfirmationModal.ConfirmationModal, { title: "Confirm Deletion", message: `Are you sure you want to delete this file?`, confirmLabel: "Delete", variation: "destructive", open: deleteConfirmationOpen, onConfirm: () => onDelete === null || onDelete === void 0 ? void 0 : onDelete(), onRequestClose: () => setDeleteConfirmationOpen(false) })));
30
30
  }
31
31
 
32
- var css_248z = ".ixRsJ4LRvuA- {\n width: 100%;\n height: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n}\n\n.I7bP1ZLIXQg- {\n display: none;\n}\n\n.M9Y7sOk6lTc- {\n display: -ms-flexbox;\n display: flex;\n width: inherit;\n height: inherit;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.M9Y7sOk6lTc-::after {\n content: \"\";\n display: block;\n position: absolute;\n right: 0;\n bottom: 0;\n border: var(--border-base);\n border-radius: var(--radius-base);\n background: linear-gradient(\n 270deg,\n rgb(244, 244, 244) 38.46%,\n rgba(244, 244, 244, 0) 100%\n );\n}\n\n.M9Y7sOk6lTc-.psaqxO2Lu7E-::after {\n width: var(--space-base);\n height: var(--space-base);\n}\n\n.M9Y7sOk6lTc-.yReSfaruAh0-::after {\n width: var(--space-large);\n height: var(--space-large);\n}\n\n.YXN92rsh2eU- {\n position: absolute;\n}\n\n.psaqxO2Lu7E- .YXN92rsh2eU- {\n bottom: var(--space-smaller);\n left: var(--space-smaller);\n font-size: var(--typography--fontSize-smaller);\n}\n\n.yReSfaruAh0- .YXN92rsh2eU- {\n bottom: var(--space-small);\n left: var(--space-small);\n font-size: var(--typography--fontSize-small);\n}\n";
33
- var styles = {"image":"ixRsJ4LRvuA-","loading":"I7bP1ZLIXQg-","content":"M9Y7sOk6lTc-","base":"psaqxO2Lu7E-","large":"yReSfaruAh0-","fileName":"YXN92rsh2eU-"};
32
+ var css_248z = ".ixRsJ4LRvuA- {\n width: 100%;\n height: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n}\n\n.I7bP1ZLIXQg- {\n display: none;\n}\n\n.M9Y7sOk6lTc- {\n display: grid;\n grid-template-columns: auto;\n grid-template-rows: auto -webkit-max-content;\n grid-template-rows: auto max-content;\n width: inherit;\n height: inherit;\n -ms-flex-align: center;\n align-items: center;\n justify-items: center;\n}\n\n.E4wclxY71oM-:not(.yReSfaruAh0-) {\n -ms-flex-align: end;\n align-items: end;\n}\n\n.YXN92rsh2eU- {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.psaqxO2Lu7E- .YXN92rsh2eU- {\n padding: var(--space-smaller);\n font-size: var(--typography--fontSize-smaller);\n}\n\n.yReSfaruAh0- .YXN92rsh2eU- {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: var(--space-small);\n font-size: var(--typography--fontSize-small);\n}\n";
33
+ var styles = {"image":"ixRsJ4LRvuA-","loading":"I7bP1ZLIXQg-","content":"M9Y7sOk6lTc-","hasName":"E4wclxY71oM-","large":"yReSfaruAh0-","fileName":"YXN92rsh2eU-","base":"psaqxO2Lu7E-"};
34
34
  styleInject_es.styleInject(css_248z);
35
35
 
36
- function InternalThumbnail({ name, hideName = false, size, file, }) {
36
+ function InternalThumbnail({ compact = false, size, file, }) {
37
+ const { name, type, src } = file;
37
38
  const [imageSource, setImageSource] = React.useState();
38
39
  const [imageLoaded, setImageLoaded] = React.useState(false);
39
- const iconName = getIconNameFromType(file.type);
40
- if (!imageSource && file.type.startsWith("image/")) {
41
- file.src().then(src => setImageSource(src));
40
+ const iconName = getIconNameFromType(type);
41
+ const hasName = Boolean(name) && compact;
42
+ if (!imageSource && type.startsWith("image/")) {
43
+ src().then(url => setImageSource(url));
42
44
  }
43
- const image = (React__default["default"].createElement("img", { src: imageSource, onLoad: () => {
44
- setImageLoaded(true);
45
- }, className: classnames__default["default"](styles.image, { [styles.loading]: !imageLoaded }), alt: name, "data-testid": "internalThumbnailImage" }));
45
+ const image = (React__default["default"].createElement("img", { src: imageSource, onLoad: handleImageLoad, className: classnames__default["default"](styles.image, { [styles.loading]: !imageLoaded }), alt: name, "data-testid": "internalThumbnailImage" }));
46
46
  if (imageLoaded) {
47
47
  return image;
48
48
  }
49
- return (React__default["default"].createElement("div", { className: classnames__default["default"](styles.content, styles[size]) },
49
+ return (React__default["default"].createElement("div", { className: classnames__default["default"](styles.content, styles[size], {
50
+ [styles.hasName]: hasName,
51
+ }) },
50
52
  imageSource && image,
51
- React__default["default"].createElement(Icon.Icon, { name: iconName, color: "greyBlue" }),
52
- React__default["default"].createElement("div", { className: classnames__default["default"](styles.fileName) }, hideName && (React__default["default"].createElement(Typography.Typography, { element: "span", textColor: "text" }, name)))));
53
+ React__default["default"].createElement(Icon.Icon, { name: iconName, color: "greyBlue", size: size }),
54
+ hasName && (React__default["default"].createElement("div", { className: styles.fileName },
55
+ React__default["default"].createElement(Typography.Typography, { element: "span", textColor: "text", numberOfLines: 1 }, name)))));
56
+ function handleImageLoad() {
57
+ setImageLoaded(true);
58
+ }
53
59
  }
54
60
  function getIconNameFromType(mimeType) {
55
61
  if (mimeType.startsWith("image/"))
@@ -83,7 +89,7 @@ function FormatFile({ file, display = "expanded", displaySize = "base", onDelete
83
89
  return (React__default["default"].createElement("div", { className: wrapperClassNames },
84
90
  React__default["default"].createElement(DetailsContainer, { type: "button", className: detailsClassNames, onClick: isComplete ? onClick : undefined, tabIndex: 0, "aria-busy": !isComplete },
85
91
  React__default["default"].createElement("div", { className: thumbnailContainerClassNames },
86
- React__default["default"].createElement(InternalThumbnail, { name: file.name, hideName: display === "compact", file: file, size: displaySize }),
92
+ React__default["default"].createElement(InternalThumbnail, { key: file.key, compact: display === "compact", file: file, size: displaySize }),
87
93
  !isComplete && (React__default["default"].createElement("div", { className: styles$1.progress },
88
94
  React__default["default"].createElement(ProgressBar.ProgressBar, { size: "small", currentStep: file.progress * 100, totalSteps: 100 })))),
89
95
  display === "expanded" && (React__default["default"].createElement("div", { className: styles$1.contentBlock },
@@ -6,7 +6,7 @@ var React = require('react');
6
6
  var classnames = require('classnames');
7
7
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
8
8
  var LightBox = require('../LightBox-3753b459.js');
9
- var FormatFile = require('../FormatFile-a23d9ccd.js');
9
+ var FormatFile = require('../FormatFile-41867ef2.js');
10
10
  var Button = require('../Button-e2452625.js');
11
11
  require('framer-motion');
12
12
  require('react-dom');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "4.4.7",
3
+ "version": "4.4.9-pre.0+251cc8f0",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,9 +17,9 @@
17
17
  "dist/*"
18
18
  ],
19
19
  "dependencies": {
20
- "@jobber/design": "^0.31.2",
21
- "@jobber/formatters": "*",
22
- "@jobber/hooks": "*",
20
+ "@jobber/design": "^0.31.3-pre.1+251cc8f0",
21
+ "@jobber/formatters": "^0.2.3-pre.62+251cc8f0",
22
+ "@jobber/hooks": "^2.0.3-pre.35+251cc8f0",
23
23
  "@popperjs/core": "^2.0.6",
24
24
  "@std-proposal/temporal": "0.0.1",
25
25
  "@tanstack/react-table": "8.5.13",
@@ -81,5 +81,5 @@
81
81
  "> 1%",
82
82
  "IE 10"
83
83
  ],
84
- "gitHead": "a802e0ec59a1299d377881262b3f9e3e7ab44ce0"
84
+ "gitHead": "251cc8f0f8e59887d07eb55675be7bb507a3e412"
85
85
  }