@frontify/fondue 12.0.0-beta.355 → 12.0.0-beta.356

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.
@@ -3,40 +3,40 @@ import { useMemoizedId as y } from "../../hooks/useMemoizedId.es.js";
3
3
  import { useFocusRing as I } from "@react-aria/focus";
4
4
  import { mergeProps as j } from "@react-aria/utils";
5
5
  import { FOCUS_STYLE as v } from "../../utilities/focusStyle.es.js";
6
- import { merge as x } from "../../utilities/merge.es.js";
6
+ import { merge as u } from "../../utilities/merge.es.js";
7
7
  import { validationClassMap as D, Validation as r } from "../../utilities/validation.es.js";
8
8
  import { useRef as M, useEffect as V } from "react";
9
9
  import W from "react-textarea-autosize";
10
10
  import A from "../../foundation/Icon/Generated/IconExclamationMarkTriangle.es.js";
11
11
  import { LoadingCircle as K, LoadingCircleSize as R } from "../LoadingCircle/LoadingCircle.es.js";
12
12
  const U = ({
13
- id: u,
13
+ id: x,
14
14
  value: d,
15
15
  required: b = !1,
16
16
  decorator: a,
17
17
  placeholder: g,
18
- disabled: l = !1,
19
- onInput: s,
18
+ disabled: s = !1,
19
+ onInput: n,
20
20
  onBlur: w,
21
21
  validation: e = r.Default,
22
- minRows: n,
22
+ minRows: m,
23
23
  maxRows: h,
24
- autosize: m = !1,
24
+ autosize: c = !1,
25
25
  resizeable: k = !0,
26
- onFocus: c,
27
- selectable: N = !1,
28
- focusOnMount: f,
26
+ onFocus: f,
27
+ selectable: C = !1,
28
+ focusOnMount: p,
29
29
  onEnterPressed: i,
30
- ...T
30
+ ...N
31
31
  }) => {
32
- const z = m ? W : "textarea", p = M(null);
32
+ const T = c ? W : "textarea", l = M(null);
33
33
  V(() => {
34
34
  var t;
35
- f && ((t = p.current) == null || t.focus());
36
- }, [f]);
37
- const C = (t) => {
35
+ p && ((t = l.current) == null || t.focus());
36
+ }, [p]);
37
+ const z = (t) => {
38
38
  t.key === "Enter" && (i == null || i(t));
39
- }, { isFocusVisible: E, focusProps: F } = I({ isTextInput: !0 }), L = { maxRows: h, minRows: n };
39
+ }, { isFocusVisible: E, focusProps: F } = I({ isTextInput: !0 }), L = { maxRows: h, minRows: m };
40
40
  return /* @__PURE__ */ S("div", { className: "tw-relative", children: [
41
41
  a && /* @__PURE__ */ o(
42
42
  "div",
@@ -47,41 +47,45 @@ const U = ({
47
47
  }
48
48
  ),
49
49
  /* @__PURE__ */ o(
50
- z,
50
+ T,
51
51
  {
52
52
  ...j(F, {
53
53
  onBlur: (t) => w && w(t.target.value),
54
- onInput: (t) => s && s(t.target.value)
54
+ onInput: (t) => n && n(t.target.value)
55
55
  }),
56
- ...m ? L : { rows: n },
57
- id: y(u),
58
- ref: p,
56
+ ...c ? L : { rows: m },
57
+ onClick: () => {
58
+ var t;
59
+ return (t = l.current) == null ? void 0 : t.focus();
60
+ },
61
+ id: y(x),
62
+ ref: l,
59
63
  value: d,
60
64
  placeholder: g,
61
65
  required: b,
62
- className: x([
66
+ className: u([
63
67
  "tw-w-full tw-p-2 tw-border tw-rounded tw-text-s tw-outline-none tw-transition tw-placeholder-black-60",
64
68
  !!a && "tw-pl-7 ",
65
- l ? "tw-border-black-5 tw-bg-black-5 tw-text-black-40" : "tw-text-black tw-border-black-20 hover:tw-border-line-x-strong focus-within:tw-border-line-xx-strong focus-within:hover:tw-border-line-xx-strong",
69
+ s ? "tw-border-black-5 tw-bg-black-5 tw-text-black-40" : "tw-text-black tw-border-black-20 hover:tw-border-line-x-strong focus-within:tw-border-line-xx-strong focus-within:hover:tw-border-line-xx-strong",
66
70
  E && v,
67
71
  D[e],
68
72
  !k && "tw-resize-none",
69
73
  e === r.Error && "tw-pr-8"
70
74
  ]),
71
- disabled: l,
75
+ disabled: s,
72
76
  onFocus: (t) => {
73
- N && t.target.select(), c && c(t);
77
+ C && t.target.select(), f && f(t);
74
78
  },
75
- onKeyDown: C,
79
+ onKeyDown: z,
76
80
  "data-test-id": "textarea",
77
- ...T
81
+ ...N
78
82
  }
79
83
  ),
80
84
  e === r.Loading && /* @__PURE__ */ o("span", { className: "tw-absolute tw-top-[-0.55rem] tw-right-[-0.55rem] tw-bg-white tw-rounded-full tw-p-[2px] tw-border tw-border-black-10", children: /* @__PURE__ */ o(K, { size: R.ExtraSmall }) }),
81
85
  (e === r.Error || e === r.Warning) && /* @__PURE__ */ o(
82
86
  "span",
83
87
  {
84
- className: x([
88
+ className: u([
85
89
  "tw-absolute tw-top-[0.6rem] tw-right-[0.6rem]",
86
90
  e === r.Error && "tw-text-text-negative",
87
91
  e === r.Warning && "tw-text-text-warning"
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.es.js","sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemoizedId } from '@hooks/useMemoizedId';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { FOCUS_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\nimport { Validation, validationClassMap } from '@utilities/validation';\nimport { LoadingCircle, LoadingCircleSize } from '@components/LoadingCircle';\nimport {\n AriaAttributes,\n FocusEvent,\n FormEvent,\n KeyboardEvent,\n ReactElement,\n ReactNode,\n useEffect,\n useRef,\n} from 'react';\nimport TextareaAutosize, { TextareaAutosizeProps } from 'react-textarea-autosize';\nimport { IconExclamationMarkTriangle } from '@foundation/Icon/Generated';\n\nexport type TextareaProps = {\n id?: string;\n value?: string;\n required?: boolean;\n decorator?: ReactNode;\n placeholder?: string;\n disabled?: boolean;\n onInput?: (value: string) => void;\n onBlur?: (value: string) => void;\n onFocus?: (e: FocusEvent<HTMLTextAreaElement>) => void;\n validation?: Validation;\n /** When autosize if false, this is used as 'rows' property for standard textarea */\n minRows?: number;\n /** When autosize if false, this property is ignored */\n maxRows?: number;\n autosize?: boolean;\n resizeable?: boolean;\n selectable?: boolean;\n focusOnMount?: boolean;\n onEnterPressed?: (event: KeyboardEvent<HTMLTextAreaElement>) => void;\n} & AriaAttributes;\n\nexport const Textarea = ({\n id: propId,\n value,\n required = false,\n decorator,\n placeholder,\n disabled = false,\n onInput,\n onBlur,\n validation = Validation.Default,\n minRows,\n maxRows,\n autosize = false,\n resizeable = true,\n onFocus,\n selectable = false,\n focusOnMount,\n onEnterPressed,\n ...props\n}: TextareaProps): ReactElement => {\n const Component = autosize ? TextareaAutosize : 'textarea';\n\n const textareaElement = useRef<HTMLTextAreaElement | null>(null);\n\n useEffect(() => {\n focusOnMount && textareaElement.current?.focus();\n }, [focusOnMount]);\n\n const onKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === 'Enter') {\n onEnterPressed?.(event);\n }\n };\n\n const { isFocusVisible, focusProps } = useFocusRing({ isTextInput: true });\n\n const autosizeProps = { maxRows, minRows };\n\n return (\n <div className=\"tw-relative\">\n {decorator && (\n <div\n className=\"tw-absolute tw-top-2 tw-left-2 tw-inline-flex tw-items-end tw-text-black-80\"\n data-test-id=\"decorator\"\n >\n {decorator}\n </div>\n )}\n <Component\n {...(mergeProps(focusProps, {\n onBlur: (event: FocusEvent<HTMLTextAreaElement>) => onBlur && onBlur(event.target.value),\n onInput: (event: FormEvent<HTMLTextAreaElement>) =>\n onInput && onInput((event.target as HTMLTextAreaElement).value),\n }) as TextareaAutosizeProps)}\n {...(autosize ? autosizeProps : { rows: minRows })}\n id={useMemoizedId(propId)}\n ref={textareaElement}\n value={value}\n placeholder={placeholder}\n required={required}\n className={merge([\n 'tw-w-full tw-p-2 tw-border tw-rounded tw-text-s tw-outline-none tw-transition tw-placeholder-black-60',\n !!decorator && 'tw-pl-7 ',\n disabled\n ? 'tw-border-black-5 tw-bg-black-5 tw-text-black-40'\n : 'tw-text-black tw-border-black-20 hover:tw-border-line-x-strong focus-within:tw-border-line-xx-strong focus-within:hover:tw-border-line-xx-strong',\n isFocusVisible && FOCUS_STYLE,\n validationClassMap[validation],\n !resizeable && 'tw-resize-none',\n validation === Validation.Error && 'tw-pr-8',\n ])}\n disabled={disabled}\n onFocus={(e) => {\n if (selectable) {\n e.target.select();\n }\n if (onFocus) {\n onFocus(e);\n }\n }}\n onKeyDown={onKeyDown}\n data-test-id=\"textarea\"\n {...props}\n />\n {validation === Validation.Loading && (\n <span className=\"tw-absolute tw-top-[-0.55rem] tw-right-[-0.55rem] tw-bg-white tw-rounded-full tw-p-[2px] tw-border tw-border-black-10\">\n <LoadingCircle size={LoadingCircleSize.ExtraSmall} />\n </span>\n )}\n {(validation === Validation.Error || validation === Validation.Warning) && (\n <span\n className={merge([\n 'tw-absolute tw-top-[0.6rem] tw-right-[0.6rem]',\n validation === Validation.Error && 'tw-text-text-negative',\n validation === Validation.Warning && 'tw-text-text-warning',\n ])}\n data-test-id=\"error-state-exclamation-mark-icon\"\n >\n <IconExclamationMarkTriangle />\n </span>\n )}\n </div>\n );\n};\nTextarea.displayName = 'FondueTextarea';\n"],"names":["Textarea","propId","value","required","decorator","placeholder","disabled","onInput","onBlur","validation","Validation","minRows","maxRows","autosize","resizeable","onFocus","selectable","focusOnMount","onEnterPressed","props","Component","TextareaAutosize","textareaElement","useRef","useEffect","_a","onKeyDown","event","isFocusVisible","focusProps","useFocusRing","autosizeProps","jsxs","jsx","mergeProps","useMemoizedId","merge","FOCUS_STYLE","validationClassMap","e","LoadingCircle","LoadingCircleSize","IconExclamationMarkTriangle"],"mappings":";;;;;;;;;;;AA4CO,MAAMA,IAAW,CAAC;AAAA,EACrB,IAAIC;AAAA,EACJ,OAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC,IAAaC,EAAW;AAAA,EACxB,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,YAAAC,IAAa;AAAA,EACb,SAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,GAAGC;AACP,MAAmC;AACzB,QAAAC,IAAYP,IAAWQ,IAAmB,YAE1CC,IAAkBC,EAAmC,IAAI;AAE/D,EAAAC,EAAU,MAAM;;AACI,IAAAP,OAAAQ,IAAAH,EAAgB,YAAhB,QAAAG,EAAyB;AAAA,EAAM,GAChD,CAACR,CAAY,CAAC;AAEX,QAAAS,IAAY,CAACC,MAA8C;AACzD,IAAAA,EAAM,QAAQ,YACdT,KAAA,QAAAA,EAAiBS;AAAA,EACrB,GAGE,EAAE,gBAAAC,GAAgB,YAAAC,EAAW,IAAIC,EAAa,EAAE,aAAa,IAAM,GAEnEC,IAAgB,EAAE,SAAAnB,GAAS,SAAAD;AAG7B,SAAA,gBAAAqB,EAAC,OAAI,EAAA,WAAU,eACV,UAAA;AAAA,IACG5B,KAAA,gBAAA6B;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAU;AAAA,QACV,gBAAa;AAAA,QAEZ,UAAA7B;AAAA,MAAA;AAAA,IACL;AAAA,IAEJ,gBAAA6B;AAAA,MAACb;AAAA,MAAA;AAAA,QACI,GAAIc,EAAWL,GAAY;AAAA,UACxB,QAAQ,CAACF,MAA2CnB,KAAUA,EAAOmB,EAAM,OAAO,KAAK;AAAA,UACvF,SAAS,CAACA,MACNpB,KAAWA,EAASoB,EAAM,OAA+B,KAAK;AAAA,QAAA,CACrE;AAAA,QACA,GAAId,IAAWkB,IAAgB,EAAE,MAAMpB,EAAQ;AAAA,QAChD,IAAIwB,EAAclC,CAAM;AAAA,QACxB,KAAKqB;AAAA,QACL,OAAApB;AAAA,QACA,aAAAG;AAAA,QACA,UAAAF;AAAA,QACA,WAAWiC,EAAM;AAAA,UACb;AAAA,UACA,CAAC,CAAChC,KAAa;AAAA,UACfE,IACM,qDACA;AAAA,UACNsB,KAAkBS;AAAA,UAClBC,EAAmB7B,CAAU;AAAA,UAC7B,CAACK,KAAc;AAAA,UACfL,MAAeC,EAAW,SAAS;AAAA,QAAA,CACtC;AAAA,QACD,UAAAJ;AAAA,QACA,SAAS,CAACiC,MAAM;AACZ,UAAIvB,KACAuB,EAAE,OAAO,UAETxB,KACAA,EAAQwB,CAAC;AAAA,QAEjB;AAAA,QACA,WAAAb;AAAA,QACA,gBAAa;AAAA,QACZ,GAAGP;AAAA,MAAA;AAAA,IACR;AAAA,IACCV,MAAeC,EAAW,WACvB,gBAAAuB,EAAC,QAAK,EAAA,WAAU,yHACZ,UAAA,gBAAAA,EAACO,GAAc,EAAA,MAAMC,EAAkB,WAAY,CAAA,GACvD;AAAA,KAEFhC,MAAeC,EAAW,SAASD,MAAeC,EAAW,YAC3D,gBAAAuB;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAWG,EAAM;AAAA,UACb;AAAA,UACA3B,MAAeC,EAAW,SAAS;AAAA,UACnCD,MAAeC,EAAW,WAAW;AAAA,QAAA,CACxC;AAAA,QACD,gBAAa;AAAA,QAEb,4BAACgC,GAA4B,EAAA;AAAA,MAAA;AAAA,IACjC;AAAA,EAER,EAAA,CAAA;AAER;AACA1C,EAAS,cAAc;"}
1
+ {"version":3,"file":"Textarea.es.js","sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemoizedId } from '@hooks/useMemoizedId';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { FOCUS_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\nimport { Validation, validationClassMap } from '@utilities/validation';\nimport { LoadingCircle, LoadingCircleSize } from '@components/LoadingCircle';\nimport {\n AriaAttributes,\n FocusEvent,\n FormEvent,\n KeyboardEvent,\n ReactElement,\n ReactNode,\n useEffect,\n useRef,\n} from 'react';\nimport TextareaAutosize, { TextareaAutosizeProps } from 'react-textarea-autosize';\nimport { IconExclamationMarkTriangle } from '@foundation/Icon/Generated';\n\nexport type TextareaProps = {\n id?: string;\n value?: string;\n required?: boolean;\n decorator?: ReactNode;\n placeholder?: string;\n disabled?: boolean;\n onInput?: (value: string) => void;\n onBlur?: (value: string) => void;\n onFocus?: (e: FocusEvent<HTMLTextAreaElement>) => void;\n validation?: Validation;\n /** When autosize if false, this is used as 'rows' property for standard textarea */\n minRows?: number;\n /** When autosize if false, this property is ignored */\n maxRows?: number;\n autosize?: boolean;\n resizeable?: boolean;\n selectable?: boolean;\n focusOnMount?: boolean;\n onEnterPressed?: (event: KeyboardEvent<HTMLTextAreaElement>) => void;\n} & AriaAttributes;\n\nexport const Textarea = ({\n id: propId,\n value,\n required = false,\n decorator,\n placeholder,\n disabled = false,\n onInput,\n onBlur,\n validation = Validation.Default,\n minRows,\n maxRows,\n autosize = false,\n resizeable = true,\n onFocus,\n selectable = false,\n focusOnMount,\n onEnterPressed,\n ...props\n}: TextareaProps): ReactElement => {\n const Component = autosize ? TextareaAutosize : 'textarea';\n\n const textareaElement = useRef<HTMLTextAreaElement | null>(null);\n\n useEffect(() => {\n focusOnMount && textareaElement.current?.focus();\n }, [focusOnMount]);\n\n const onKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === 'Enter') {\n onEnterPressed?.(event);\n }\n };\n\n const { isFocusVisible, focusProps } = useFocusRing({ isTextInput: true });\n\n const autosizeProps = { maxRows, minRows };\n\n return (\n <div className=\"tw-relative\">\n {decorator && (\n <div\n className=\"tw-absolute tw-top-2 tw-left-2 tw-inline-flex tw-items-end tw-text-black-80\"\n data-test-id=\"decorator\"\n >\n {decorator}\n </div>\n )}\n <Component\n {...(mergeProps(focusProps, {\n onBlur: (event: FocusEvent<HTMLTextAreaElement>) => onBlur && onBlur(event.target.value),\n onInput: (event: FormEvent<HTMLTextAreaElement>) =>\n onInput && onInput((event.target as HTMLTextAreaElement).value),\n }) as TextareaAutosizeProps)}\n {...(autosize ? autosizeProps : { rows: minRows })}\n onClick={() => textareaElement.current?.focus()}\n id={useMemoizedId(propId)}\n ref={textareaElement}\n value={value}\n placeholder={placeholder}\n required={required}\n className={merge([\n 'tw-w-full tw-p-2 tw-border tw-rounded tw-text-s tw-outline-none tw-transition tw-placeholder-black-60',\n !!decorator && 'tw-pl-7 ',\n disabled\n ? 'tw-border-black-5 tw-bg-black-5 tw-text-black-40'\n : 'tw-text-black tw-border-black-20 hover:tw-border-line-x-strong focus-within:tw-border-line-xx-strong focus-within:hover:tw-border-line-xx-strong',\n isFocusVisible && FOCUS_STYLE,\n validationClassMap[validation],\n !resizeable && 'tw-resize-none',\n validation === Validation.Error && 'tw-pr-8',\n ])}\n disabled={disabled}\n onFocus={(e) => {\n if (selectable) {\n e.target.select();\n }\n if (onFocus) {\n onFocus(e);\n }\n }}\n onKeyDown={onKeyDown}\n data-test-id=\"textarea\"\n {...props}\n />\n {validation === Validation.Loading && (\n <span className=\"tw-absolute tw-top-[-0.55rem] tw-right-[-0.55rem] tw-bg-white tw-rounded-full tw-p-[2px] tw-border tw-border-black-10\">\n <LoadingCircle size={LoadingCircleSize.ExtraSmall} />\n </span>\n )}\n {(validation === Validation.Error || validation === Validation.Warning) && (\n <span\n className={merge([\n 'tw-absolute tw-top-[0.6rem] tw-right-[0.6rem]',\n validation === Validation.Error && 'tw-text-text-negative',\n validation === Validation.Warning && 'tw-text-text-warning',\n ])}\n data-test-id=\"error-state-exclamation-mark-icon\"\n >\n <IconExclamationMarkTriangle />\n </span>\n )}\n </div>\n );\n};\nTextarea.displayName = 'FondueTextarea';\n"],"names":["Textarea","propId","value","required","decorator","placeholder","disabled","onInput","onBlur","validation","Validation","minRows","maxRows","autosize","resizeable","onFocus","selectable","focusOnMount","onEnterPressed","props","Component","TextareaAutosize","textareaElement","useRef","useEffect","_a","onKeyDown","event","isFocusVisible","focusProps","useFocusRing","autosizeProps","jsxs","jsx","mergeProps","useMemoizedId","merge","FOCUS_STYLE","validationClassMap","e","LoadingCircle","LoadingCircleSize","IconExclamationMarkTriangle"],"mappings":"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"}