@uxf/ui 11.52.1 → 11.52.2

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.
@@ -106,14 +106,14 @@ exports.MultiCombobox = (0, react_3.forwardRef)((props, ref) => {
106
106
  const inputRef = (0, react_3.useRef)(null);
107
107
  const input = (0, use_input_focus_1.useInputFocus)(inputRef, props.onBlur, props.onFocus);
108
108
  const stableRef = (0, react_3.useMemo)(() => (0, compose_refs_1.composeRefs)(inputRef, dropdown.refs.setReference), [dropdown.refs.setReference]);
109
- const optionRemoveHandler = (valueId) => props.onChange(selectedOptions.filter((v) => v.id !== valueId));
109
+ const optionRemoveHandler = (valueId) => props.onChange(selectedOptions.filter((v) => v.id.toString() !== valueId.toString()));
110
110
  const chipCloseHandler = (valueId) => (e) => {
111
111
  e.preventDefault();
112
112
  e.stopPropagation();
113
113
  optionRemoveHandler(valueId);
114
114
  };
115
115
  const checkboxChangeHandler = (valueId) => (checked) => {
116
- const isAlreadySelected = selectedOptions.find((v) => v.id === valueId);
116
+ const isAlreadySelected = selectedOptions.find((v) => v.id.toString() === valueId.toString());
117
117
  if (isAlreadySelected && !checked) {
118
118
  optionRemoveHandler(valueId);
119
119
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/ui",
3
- "version": "11.52.1",
3
+ "version": "11.52.2",
4
4
  "description": "",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -23,10 +23,10 @@
23
23
  "dependencies": {
24
24
  "@floating-ui/react": "0.26.28",
25
25
  "@headlessui/react": "1.7.19",
26
- "@uxf/core": "11.52.0",
27
- "@uxf/core-react": "11.52.0",
26
+ "@uxf/core": "11.52.2",
27
+ "@uxf/core-react": "11.52.2",
28
28
  "@uxf/datepicker": "11.50.0",
29
- "@uxf/styles": "11.52.0",
29
+ "@uxf/styles": "11.52.2",
30
30
  "color2k": "2.0.3",
31
31
  "dayjs": "1.11.13",
32
32
  "jump.js": "1.0.2",
@@ -9,8 +9,8 @@ export interface TextareaProps extends FormControlProps<string, HTMLTextAreaElem
9
9
  hiddenLabel?: boolean;
10
10
  id?: string;
11
11
  label?: ReactNode;
12
- maxLength?: number | undefined;
13
- minLength?: number | undefined;
12
+ maxLength?: number;
13
+ minLength?: number;
14
14
  placeholder?: string;
15
15
  rows?: number;
16
16
  style?: CSSProperties;
@@ -26,23 +26,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.Textarea = void 0;
28
28
  const use_input_focus_1 = require("@uxf/core-react/hooks/use-input-focus");
29
- const use_latest_1 = require("@uxf/core-react/hooks/use-latest");
29
+ const use_isomorphic_layout_effect_1 = require("@uxf/core-react/hooks/use-isomorphic-layout-effect");
30
30
  const compose_refs_1 = require("@uxf/core-react/utils/compose-refs");
31
31
  const classes_1 = require("@uxf/core/constants/classes");
32
+ const adjust_textarea_height_1 = require("@uxf/core/utils/adjust-textarea-height");
32
33
  const cx_1 = require("@uxf/core/utils/cx");
33
34
  const react_1 = __importStar(require("react"));
34
35
  const form_component_1 = require("../form-component");
35
- function autoHeightHandler(element, rows = 4) {
36
- element.style.height = "auto";
37
- if (rows >= 1) {
38
- const contentHeight = element.scrollHeight;
39
- const lineHeight = parseFloat(window.getComputedStyle(element).getPropertyValue("line-height"));
40
- const fontSize = parseFloat(window.getComputedStyle(element).getPropertyValue("font-size"));
41
- const targetHeight = parseInt((rows * fontSize * (lineHeight / fontSize)).toFixed(3), 10);
42
- element.style.height = Math.max(targetHeight, contentHeight) + "px";
43
- }
44
- }
45
- const EVENTS = ["input", "cut", "paste", "drop"];
46
36
  exports.Textarea = (0, react_1.forwardRef)((props, ref) => {
47
37
  var _a, _b;
48
38
  const innerRef = (0, react_1.useRef)(null);
@@ -51,24 +41,17 @@ exports.Textarea = (0, react_1.forwardRef)((props, ref) => {
51
41
  const id = (_a = props.id) !== null && _a !== void 0 ? _a : generatedId;
52
42
  const errorId = props.isInvalid ? `${id}--error-message` : undefined;
53
43
  const rootClassName = (0, cx_1.cx)("uxf-textarea", ((_b = props.isFocused) !== null && _b !== void 0 ? _b : input.focused) && classes_1.CLASSES.IS_FOCUSED, props.isDisabled && classes_1.CLASSES.IS_DISABLED, props.isInvalid && classes_1.CLASSES.IS_INVALID, props.isReadOnly && classes_1.CLASSES.IS_READONLY, props.isRequired && classes_1.CLASSES.IS_REQUIRED, props.className);
54
- const latestRows = (0, use_latest_1.useLatest)(props.rows);
55
- (0, react_1.useEffect)(() => {
44
+ const handleChange = (event) => props.onChange(event.target.value, event);
45
+ const focusTextareaOnWrapperClick = () => { var _a; return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.focus(); };
46
+ (0, use_isomorphic_layout_effect_1.useIsomorphicLayoutEffect)(() => {
56
47
  const node = innerRef.current;
57
48
  if (!node || props.disableAutoHeight) {
58
49
  return;
59
50
  }
60
- const handler = () => autoHeightHandler(node, latestRows.current);
61
- handler();
62
- EVENTS.map((e) => node.addEventListener(e, handler));
63
- window.addEventListener("resize", handler);
64
- return () => {
65
- EVENTS.map((e) => node.removeEventListener(e, handler));
66
- window.removeEventListener("resize", handler);
67
- };
68
- }, [props.disableAutoHeight, latestRows]);
69
- const onWrapperClick = () => { var _a; return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.focus(); };
51
+ (0, adjust_textarea_height_1.adjustTextareaHeight)(node, props.rows);
52
+ }, [props.disableAutoHeight, props.rows, props.value]);
70
53
  return (react_1.default.createElement(form_component_1.FormComponent, { className: rootClassName, errorId: errorId, form: props.form, helperText: props.helperText, hiddenLabel: props.hiddenLabel, inputId: id, isRequired: props.isRequired, label: props.label, name: props.name },
71
- react_1.default.createElement("div", { className: "uxf-textarea__wrapper", onClick: onWrapperClick, style: props.style },
72
- react_1.default.createElement("textarea", { "aria-describedby": errorId, "aria-invalid": props.isInvalid, autoComplete: props.autoComplete, className: "uxf-textarea__element", disabled: props.isDisabled, form: props.form, id: id, maxLength: props.maxLength, minLength: props.minLength, name: props.name, onBlur: input.onBlur, onChange: (event) => props.onChange(event.target.value, event), onFocus: input.onFocus, placeholder: props.placeholder, readOnly: props.isReadOnly, ref: (0, compose_refs_1.composeRefs)(innerRef, ref), required: props.isRequired, rows: props.rows, value: props.value }))));
54
+ react_1.default.createElement("div", { className: "uxf-textarea__wrapper", onClick: focusTextareaOnWrapperClick, style: props.style },
55
+ react_1.default.createElement("textarea", { "aria-describedby": errorId, "aria-invalid": props.isInvalid, autoComplete: props.autoComplete, className: "uxf-textarea__element", disabled: props.isDisabled, form: props.form, id: id, maxLength: props.maxLength, minLength: props.minLength, name: props.name, onBlur: input.onBlur, onChange: handleChange, onFocus: input.onFocus, placeholder: props.placeholder, readOnly: props.isReadOnly, ref: (0, compose_refs_1.composeRefs)(innerRef, ref), required: props.isRequired, rows: props.rows, value: props.value }))));
73
56
  });
74
57
  exports.Textarea.displayName = "UxfUiTextarea";