@terraware/web-components 4.2.24 → 4.2.26-rc.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,8 +1,9 @@
1
- import { type JSX } from 'react';
1
+ import { type CSSProperties, type JSX } from 'react';
2
2
  import './styles.scss';
3
3
  export type MarkdownProps = {
4
4
  value: string;
5
+ style?: CSSProperties;
5
6
  };
6
- declare const Markdown: ({ value }: MarkdownProps) => JSX.Element;
7
+ declare const Markdown: ({ value, style }: MarkdownProps) => JSX.Element;
7
8
  export default Markdown;
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,GAAG,EAAoC,MAAM,OAAO,CAAC;AAI1E,OAAO,eAAe,CAAC;AAEvB,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAI,WAAW,aAAa,KAAG,GAAG,CAAC,OAahD,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAE,KAAK,GAAG,EAAoC,MAAM,OAAO,CAAC;AAI9F,OAAO,eAAe,CAAC;AAEvB,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAI,kBAAkB,aAAa,KAAG,GAAG,CAAC,OAavD,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -3,7 +3,8 @@ import { marked } from 'marked';
3
3
  import './styles.scss';
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  const Markdown = ({
6
- value
6
+ value,
7
+ style
7
8
  }) => {
8
9
  const [html, setHtml] = useState();
9
10
  const parseValue = useCallback(async _value => {
@@ -12,9 +13,10 @@ const Markdown = ({
12
13
  }, []);
13
14
  useEffect(() => {
14
15
  void parseValue(value);
15
- }, [value]);
16
+ }, [parseValue, value]);
16
17
  return /*#__PURE__*/_jsx("div", {
17
18
  className: "markdown",
19
+ style: style,
18
20
  dangerouslySetInnerHTML: {
19
21
  __html: html ?? ''
20
22
  }
@@ -13,6 +13,9 @@
13
13
  display: flex;
14
14
  flex-flow: column;
15
15
  font-family: terraware.$tw-fnt-frm-fld-text-value-font-family;
16
+ font-size: terraware.$tw-fnt-frm-fld-text-value-font-size;
17
+ font-weight: terraware.$tw-fnt-frm-fld-text-value-font-weight;
18
+ line-height: terraware.$tw-fnt-frm-fld-text-value-line-height;
16
19
  color: terraware.$tw-clr-txt;
17
20
  padding: terraware.$tw-spc-base-x-small 0;
18
21
  margin: 0;
@@ -61,11 +64,12 @@
61
64
  }
62
65
 
63
66
  p {
64
- font-size: terraware.$tw-fnt-frm-fld-text-value-font-size;
65
- font-weight: terraware.$tw-fnt-frm-fld-text-value-font-weight;
66
- line-height: terraware.$tw-fnt-frm-fld-text-value-line-height;
67
67
  padding: 0;
68
68
  margin: 0;
69
+
70
+ + p {
71
+ margin-top: terraware.$tw-spc-base-x-small;
72
+ }
69
73
  }
70
74
 
71
75
  a {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PhotosCarousel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,GAAG,EAA4C,MAAM,OAAO,CAAC;AAElF,OAAO,qCAAqC,CAAC;AAK7C,OAAO,eAAe,CAAC;AAEvB,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AASD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAsE9E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PhotosCarousel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,GAAG,EAA4C,MAAM,OAAO,CAAC;AAElF,OAAO,qCAAqC,CAAC;AAK7C,OAAO,eAAe,CAAC;AAUvB,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AASD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAsE9E"}
@@ -1,10 +1,17 @@
1
1
  import React, { useCallback, useEffect, useRef, useState } from 'react';
2
- import Carousel from 'react-multi-carousel';
2
+ import CarouselImport from 'react-multi-carousel';
3
3
  import 'react-multi-carousel/lib/styles.css';
4
4
  import { Box, Typography } from '@mui/material';
5
5
  import BusySpinner from '../BusySpinner';
6
6
  import './styles.scss';
7
+
8
+ // react-multi-carousel is CommonJS compiled by TypeScript, so it exports the component as
9
+ // `exports.default` alongside an `__esModule` flag. We publish native ES modules, where the
10
+ // default import of a CommonJS module is the whole `module.exports` object and no bundler
11
+ // unwraps `.default` for us. Unwrap it here; the `??` keeps this correct under bundlers that
12
+ // do apply the legacy interop.
7
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ const Carousel = CarouselImport.default ?? CarouselImport;
8
15
  const responsive = {
9
16
  mobile: {
10
17
  breakpoint: {
@@ -10,6 +10,7 @@ export interface TruncateConfig {
10
10
  showLessText: string;
11
11
  showTextStyle?: Record<string, any>;
12
12
  alignment?: 'left' | 'right';
13
+ collapseOnBlur?: boolean;
13
14
  }
14
15
  export interface Props {
15
16
  autoFocus?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Textfield.d.ts","sourceRoot":"","sources":["../../../src/components/Textfield/Textfield.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,GAAG,EAAW,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAO,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,OAAO,eAAe,CAAC;AAEvB,KAAK,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEpD,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAExC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,KAAK;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,YAAY,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAqL3D"}
1
+ {"version":3,"file":"Textfield.d.ts","sourceRoot":"","sources":["../../../src/components/Textfield/Textfield.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,GAAG,EAAW,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAO,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,OAAO,eAAe,CAAC;AAEvB,KAAK,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEpD,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAExC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAG7B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,KAAK;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,YAAY,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAqL3D"}
@@ -103,7 +103,8 @@ export default function TextField(props) {
103
103
  return null;
104
104
  }
105
105
  const component = markdown ? /*#__PURE__*/_jsx(Markdown, {
106
- value: value.toString()
106
+ value: value.toString(),
107
+ style: styles?.markdown
107
108
  }) : /*#__PURE__*/_jsx("p", {
108
109
  className: `textfield-value--display${preserveNewlines ? ' preserve-newlines' : ''}`,
109
110
  children: value
@@ -116,7 +117,7 @@ export default function TextField(props) {
116
117
  } else {
117
118
  return component;
118
119
  }
119
- }, [display, markdown, preserveNewlines, truncateConfig, type, value]);
120
+ }, [display, markdown, preserveNewlines, styles, truncateConfig, type, value]);
120
121
  return /*#__PURE__*/_jsxs(Box, {
121
122
  className: `textfield ${className}`,
122
123
  sx: sx,
@@ -1 +1 @@
1
- {"version":3,"file":"TruncatedTextArea.d.ts","sourceRoot":"","sources":["../../../src/components/Textfield/TruncatedTextArea.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAC;AAItE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,eAAe,CAAC;AAEvB,UAAU,sBAAsB;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,QAAA,MAAM,iBAAiB,GAAI,8BAA8B,sBAAsB,4CAoD9E,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"TruncatedTextArea.d.ts","sourceRoot":"","sources":["../../../src/components/Textfield/TruncatedTextArea.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAiB,SAAS,EAA+B,MAAM,OAAO,CAAC;AAIrF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,eAAe,CAAC;AAEvB,UAAU,sBAAsB;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,QAAA,MAAM,iBAAiB,GAAI,8BAA8B,sBAAsB,4CA4E9E,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -11,35 +11,52 @@ const TruncatedTextArea = ({
11
11
  showLessText,
12
12
  showMoreText,
13
13
  showTextStyle,
14
- alignment = 'left'
14
+ alignment = 'left',
15
+ collapseOnBlur = false
15
16
  } = truncateConfig;
16
17
  const theme = useTheme();
17
18
  const [showAll, setShowAll] = useState(false);
18
19
  const [needsTruncating, setNeedsTruncating] = useState(false);
19
- const [totalHeight, setTotalHeight] = useState(0);
20
- const ref = useRef(null);
20
+ const contentRef = useRef(null);
21
21
  useEffect(() => {
22
- if (ref && ref.current && !totalHeight) {
23
- const height = ref.current.clientHeight;
24
- setTotalHeight(height);
25
- setNeedsTruncating(height > maxHeight);
22
+ const node = contentRef.current;
23
+ if (!node) {
24
+ return;
26
25
  }
27
- }, [maxHeight, ref, totalHeight]);
26
+ const measure = () => {
27
+ // offsetHeight is an untransformed layout value, so it is in the same units as maxHeight
28
+ const truncating = node.offsetHeight > maxHeight;
29
+ setNeedsTruncating(truncating);
30
+ if (!truncating) {
31
+ // Otherwise content that grows long again later would start out expanded
32
+ setShowAll(false);
33
+ }
34
+ };
35
+ measure();
36
+ const observer = new ResizeObserver(measure);
37
+ observer.observe(node);
38
+ return () => observer.disconnect();
39
+ }, [maxHeight]);
28
40
  const toggleShowAll = () => setShowAll(prev => !prev);
29
- const divStyle = {
41
+ const containerStyle = {
30
42
  margin: 0,
31
43
  padding: 0,
32
44
  overflow: 'hidden',
33
45
  width: '100%'
34
46
  };
35
47
  if (needsTruncating && !showAll) {
36
- divStyle.maxHeight = `${maxHeight}px`;
48
+ containerStyle.maxHeight = `${maxHeight}px`;
37
49
  }
38
50
  return /*#__PURE__*/_jsxs(_Fragment, {
39
51
  children: [/*#__PURE__*/_jsx("div", {
40
- ref: ref,
41
- style: divStyle,
42
- children: children
52
+ style: containerStyle,
53
+ children: /*#__PURE__*/_jsx("div", {
54
+ ref: contentRef,
55
+ style: {
56
+ display: 'flow-root'
57
+ },
58
+ children: children
59
+ })
43
60
  }), needsTruncating && /*#__PURE__*/_jsx("div", {
44
61
  style: {
45
62
  width: '100%',
@@ -48,7 +65,7 @@ const TruncatedTextArea = ({
48
65
  children: /*#__PURE__*/_jsx(Link, {
49
66
  component: "button",
50
67
  onClick: toggleShowAll,
51
- onBlur: () => setShowAll(false),
68
+ onBlur: collapseOnBlur ? () => setShowAll(false) : undefined,
52
69
  sx: {
53
70
  color: theme.palette.TwClrTxtBrand,
54
71
  textDecorationColor: `${theme.palette.TwClrTxtBrand}80`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terraware/web-components",
3
- "version": "4.2.24",
3
+ "version": "4.2.26-rc.0",
4
4
  "author": "Terraformation Inc.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {