@frontify/fondue 12.0.0-beta.2 → 12.0.0-beta.4
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/Button/Button.es.js +44 -43
- package/dist/components/Button/Button.es.js.map +1 -1
- package/dist/components/EditableText/EditableText.d.ts +2 -0
- package/dist/components/EditableText/EditableText.es.js +40 -40
- package/dist/components/EditableText/EditableText.es.js.map +1 -1
- package/dist/components/EditableText/lib/helper.d.ts +1 -0
- package/dist/components/EditableText/lib/helper.es.js +6 -5
- package/dist/components/EditableText/lib/helper.es.js.map +1 -1
- package/dist/components/OrderableList/OrderableList.es.js +34 -32
- package/dist/components/OrderableList/OrderableList.es.js.map +1 -1
- package/dist/components/RichTextEditor/RichTextEditor.es.js +46 -42
- package/dist/components/RichTextEditor/RichTextEditor.es.js.map +1 -1
- package/dist/components/RichTextEditor/helper.d.ts +1 -0
- package/dist/components/RichTextEditor/helper.es.js +8 -0
- package/dist/components/RichTextEditor/helper.es.js.map +1 -0
- package/dist/components/Switch/Switch.es.js +59 -42
- package/dist/components/Switch/Switch.es.js.map +1 -1
- package/dist/components/TextInput/TextInput.es.js +2 -2
- package/dist/components/TextInput/TextInput.es.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +3 -1
- package/dist/components/Tooltip/Tooltip.es.js +44 -39
- package/dist/components/Tooltip/Tooltip.es.js.map +1 -1
- package/dist/components/Tree/Node.es.js +37 -36
- package/dist/components/Tree/Node.es.js.map +1 -1
- package/dist/extractedThirdPartyStyles.css +8 -0
- package/dist/index.cjs.js +4 -4
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.umd.js +4 -4
- package/dist/index.umd.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/tailwind.config.js +73 -72
|
@@ -1,69 +1,70 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useButton as
|
|
1
|
+
import f, { forwardRef as M, cloneElement as N } from "react";
|
|
2
|
+
import { useButton as P } from "@react-aria/button";
|
|
3
3
|
import { merge as u } from "../../utilities/merge.es.js";
|
|
4
4
|
import { useForwardedRef as T } from "../../utilities/useForwardedRef.es.js";
|
|
5
|
-
import { ButtonStyle as o, ButtonEmphasis as r, ButtonType as z, ButtonSize as
|
|
6
|
-
import { ButtonEmphasis as
|
|
7
|
-
import { ButtonCommonClasses as
|
|
8
|
-
import { ButtonCommonClasses as
|
|
9
|
-
import { FOCUS_VISIBLE_STYLE as
|
|
10
|
-
import { buttonTypeMap as
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
import { ButtonStyle as o, ButtonEmphasis as r, ButtonType as z, ButtonSize as O, ButtonRounding as U } from "./ButtonTypes.es.js";
|
|
6
|
+
import { ButtonEmphasis as nt, ButtonRounding as st, ButtonSize as at, ButtonStyle as ut, ButtonType as rt, UpdatedButtonStyle as mt } from "./ButtonTypes.es.js";
|
|
7
|
+
import { ButtonCommonClasses as V, ButtonRoundingClasses as _, ButtonSizeClasses as c, IconSpacingClasses as k, ButtonStyleClasses as W, ButtonDisabledClasses as Y } from "./ButtonClasses.es.js";
|
|
8
|
+
import { ButtonCommonClasses as it, ButtonDisabledClasses as ft, ButtonRoundingClasses as Bt, ButtonSizeClasses as pt, ButtonStyleClasses as ct, IconSpacingClasses as St } from "./ButtonClasses.es.js";
|
|
9
|
+
import { FOCUS_VISIBLE_STYLE as $ } from "../../utilities/focusStyle.es.js";
|
|
10
|
+
import { buttonTypeMap as j, buttonIconSizeMap as q } from "./mappings.es.js";
|
|
11
|
+
import { useFocusRing as v } from "@react-aria/focus";
|
|
12
|
+
const A = ({
|
|
13
|
+
type: S = z.Button,
|
|
13
14
|
style: t = o.Default,
|
|
14
|
-
size: e =
|
|
15
|
-
rounding: C =
|
|
15
|
+
size: e = O.Medium,
|
|
16
|
+
rounding: C = U.Medium,
|
|
16
17
|
emphasis: n = r.Strong,
|
|
17
|
-
hideLabel:
|
|
18
|
+
hideLabel: m = !1,
|
|
18
19
|
disabled: s = !1,
|
|
19
|
-
icon:
|
|
20
|
+
icon: l,
|
|
20
21
|
children: a,
|
|
21
|
-
onClick:
|
|
22
|
+
onClick: B,
|
|
22
23
|
hugWidth: d = !0,
|
|
23
24
|
"aria-label": b,
|
|
24
25
|
formId: g,
|
|
25
26
|
solid: y,
|
|
26
27
|
inverted: E
|
|
27
|
-
},
|
|
28
|
+
}, R) => {
|
|
28
29
|
t === o.Primary ? (t = o.Default, n = r.Strong) : t === o.Secondary && (t = o.Default, n = r.Default), y === !1 && (n = r.Weak);
|
|
29
|
-
const p = T(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
m && !a || l ? S[e].iconOnly : S[e].default,
|
|
30
|
+
const p = T(R), { buttonProps: D } = P({ onPress: () => B && B(), isDisabled: s, type: j[S] }, p), { isFocusVisible: w, focusProps: x } = v(), i = (F) => s ? Y : `${W[n][t][F]}`, I = u([
|
|
31
|
+
i("button"),
|
|
32
|
+
V,
|
|
33
|
+
_[C],
|
|
34
|
+
l && !a || m ? c[e].iconOnly : c[e].default,
|
|
35
35
|
!d && "tw-w-full"
|
|
36
36
|
]);
|
|
37
|
-
return /* @__PURE__ */
|
|
37
|
+
return /* @__PURE__ */ f.createElement("button", {
|
|
38
38
|
"aria-label": b,
|
|
39
39
|
"aria-disabled": s,
|
|
40
40
|
ref: p,
|
|
41
|
-
className: u([
|
|
41
|
+
className: u([I, E && "tw-dark", w && $]),
|
|
42
42
|
disabled: s,
|
|
43
43
|
"data-test-id": "button",
|
|
44
44
|
form: g,
|
|
45
|
-
...
|
|
46
|
-
|
|
45
|
+
...D,
|
|
46
|
+
...x
|
|
47
|
+
}, l && /* @__PURE__ */ f.createElement("span", {
|
|
47
48
|
"data-test-id": "button-icon",
|
|
48
|
-
className: u([a && !
|
|
49
|
-
},
|
|
49
|
+
className: u([a && !m ? k[e] : "", i("icon")])
|
|
50
|
+
}, N(l, { size: q[e] })), a && /* @__PURE__ */ f.createElement("span", {
|
|
50
51
|
"data-test-id": "button-text",
|
|
51
|
-
className: u([
|
|
52
|
+
className: u([i("text"), m && "tw-sr-only"])
|
|
52
53
|
}, a));
|
|
53
|
-
},
|
|
54
|
+
}, tt = M(A);
|
|
54
55
|
export {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
56
|
+
tt as Button,
|
|
57
|
+
it as ButtonCommonClasses,
|
|
58
|
+
ft as ButtonDisabledClasses,
|
|
59
|
+
nt as ButtonEmphasis,
|
|
60
|
+
st as ButtonRounding,
|
|
61
|
+
Bt as ButtonRoundingClasses,
|
|
62
|
+
at as ButtonSize,
|
|
63
|
+
pt as ButtonSizeClasses,
|
|
64
|
+
ut as ButtonStyle,
|
|
65
|
+
ct as ButtonStyleClasses,
|
|
66
|
+
rt as ButtonType,
|
|
67
|
+
St as IconSpacingClasses,
|
|
68
|
+
mt as UpdatedButtonStyle
|
|
68
69
|
};
|
|
69
70
|
//# sourceMappingURL=Button.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.es.js","sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React, { ForwardRefRenderFunction, MouseEvent, ReactElement, ReactNode, cloneElement, forwardRef } from 'react';\n\nimport { useButton } from '@react-aria/button';\nimport { merge } from '@utilities/merge';\nimport { useForwardedRef } from '@utilities/useForwardedRef';\nimport {\n ButtonElements,\n ButtonEmphasis,\n ButtonRounding,\n ButtonSize,\n ButtonStyle,\n ButtonType,\n UpdatedButtonStyle,\n} from './ButtonTypes';\nimport {\n ButtonCommonClasses,\n ButtonDisabledClasses,\n ButtonRoundingClasses,\n ButtonSizeClasses,\n ButtonStyleClasses,\n IconSpacingClasses,\n} from './ButtonClasses';\nimport { FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { buttonIconSizeMap, buttonTypeMap } from '@components/Button/mappings';\n\n// To be NON-Breaking but import should be done through index.ts\nexport * from './ButtonClasses';\nexport * from './ButtonTypes';\n\nexport type ButtonProps = {\n type?: ButtonType;\n style?: ButtonStyle;\n emphasis?: ButtonEmphasis;\n hideLabel?: boolean;\n size?: ButtonSize;\n rounding?: ButtonRounding;\n disabled?: boolean;\n icon?: ReactElement;\n children?: ReactNode;\n onClick?: (event?: MouseEvent<HTMLButtonElement>) => void;\n hugWidth?: boolean;\n 'aria-label'?: string;\n formId?: string;\n /** @deprecated use emphasis with ButtonEmphasis.Weak */\n solid?: boolean;\n /** @deprecated inverted can be done by wrapping the component in a className=\"tw-dark\" */\n inverted?: boolean;\n};\n\nconst ButtonComponent: ForwardRefRenderFunction<HTMLButtonElement | null, ButtonProps> = (\n {\n type = ButtonType.Button,\n style = ButtonStyle.Default,\n size = ButtonSize.Medium,\n rounding = ButtonRounding.Medium,\n emphasis = ButtonEmphasis.Strong,\n hideLabel = false,\n disabled = false,\n icon,\n children,\n onClick,\n hugWidth = true,\n 'aria-label': ariaLabel,\n formId,\n solid,\n inverted,\n },\n externalRef,\n) => {\n // Map Style Primary, Secondary to style and emphasis\n // Primary and Secondary can be omitted from the style type\n if (style === ButtonStyle.Primary) {\n style = ButtonStyle.Default;\n emphasis = ButtonEmphasis.Strong;\n } else if (style === ButtonStyle.Secondary) {\n style = ButtonStyle.Default;\n emphasis = ButtonEmphasis.Default;\n }\n\n // Rewrite Solid to property emphasis\n if (solid === false) {\n emphasis = ButtonEmphasis.Weak;\n }\n\n const ref = useForwardedRef<HTMLButtonElement | null>(externalRef);\n const { buttonProps } = useButton(\n { onPress: () => onClick && onClick(), isDisabled: disabled, type: buttonTypeMap[type] },\n ref,\n );\n\n const getStyles = (kind: keyof ButtonElements) =>\n !disabled\n ? `${ButtonStyleClasses[emphasis][style as unknown as UpdatedButtonStyle][kind]}`\n : ButtonDisabledClasses;\n\n const buttonClassName = merge([\n
|
|
1
|
+
{"version":3,"file":"Button.es.js","sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React, { ForwardRefRenderFunction, MouseEvent, ReactElement, ReactNode, cloneElement, forwardRef } from 'react';\n\nimport { useButton } from '@react-aria/button';\nimport { merge } from '@utilities/merge';\nimport { useForwardedRef } from '@utilities/useForwardedRef';\nimport {\n ButtonElements,\n ButtonEmphasis,\n ButtonRounding,\n ButtonSize,\n ButtonStyle,\n ButtonType,\n UpdatedButtonStyle,\n} from './ButtonTypes';\nimport {\n ButtonCommonClasses,\n ButtonDisabledClasses,\n ButtonRoundingClasses,\n ButtonSizeClasses,\n ButtonStyleClasses,\n IconSpacingClasses,\n} from './ButtonClasses';\nimport { FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { buttonIconSizeMap, buttonTypeMap } from '@components/Button/mappings';\nimport { useFocusRing } from '@react-aria/focus';\n\n// To be NON-Breaking but import should be done through index.ts\nexport * from './ButtonClasses';\nexport * from './ButtonTypes';\n\nexport type ButtonProps = {\n type?: ButtonType;\n style?: ButtonStyle;\n emphasis?: ButtonEmphasis;\n hideLabel?: boolean;\n size?: ButtonSize;\n rounding?: ButtonRounding;\n disabled?: boolean;\n icon?: ReactElement;\n children?: ReactNode;\n onClick?: (event?: MouseEvent<HTMLButtonElement>) => void;\n hugWidth?: boolean;\n 'aria-label'?: string;\n formId?: string;\n /** @deprecated use emphasis with ButtonEmphasis.Weak */\n solid?: boolean;\n /** @deprecated inverted can be done by wrapping the component in a className=\"tw-dark\" */\n inverted?: boolean;\n};\n\nconst ButtonComponent: ForwardRefRenderFunction<HTMLButtonElement | null, ButtonProps> = (\n {\n type = ButtonType.Button,\n style = ButtonStyle.Default,\n size = ButtonSize.Medium,\n rounding = ButtonRounding.Medium,\n emphasis = ButtonEmphasis.Strong,\n hideLabel = false,\n disabled = false,\n icon,\n children,\n onClick,\n hugWidth = true,\n 'aria-label': ariaLabel,\n formId,\n solid,\n inverted,\n },\n externalRef,\n) => {\n // Map Style Primary, Secondary to style and emphasis\n // Primary and Secondary can be omitted from the style type\n if (style === ButtonStyle.Primary) {\n style = ButtonStyle.Default;\n emphasis = ButtonEmphasis.Strong;\n } else if (style === ButtonStyle.Secondary) {\n style = ButtonStyle.Default;\n emphasis = ButtonEmphasis.Default;\n }\n\n // Rewrite Solid to property emphasis\n if (solid === false) {\n emphasis = ButtonEmphasis.Weak;\n }\n\n const ref = useForwardedRef<HTMLButtonElement | null>(externalRef);\n const { buttonProps } = useButton(\n { onPress: () => onClick && onClick(), isDisabled: disabled, type: buttonTypeMap[type] },\n ref,\n );\n const { isFocusVisible, focusProps } = useFocusRing();\n\n const getStyles = (kind: keyof ButtonElements) =>\n !disabled\n ? `${ButtonStyleClasses[emphasis][style as unknown as UpdatedButtonStyle][kind]}`\n : ButtonDisabledClasses;\n\n const buttonClassName = merge([\n getStyles('button'),\n ButtonCommonClasses,\n ButtonRoundingClasses[rounding],\n (icon && !children) || hideLabel ? ButtonSizeClasses[size].iconOnly : ButtonSizeClasses[size].default,\n !hugWidth && 'tw-w-full',\n ]);\n\n return (\n <button\n aria-label={ariaLabel}\n aria-disabled={disabled}\n ref={ref}\n className={merge([buttonClassName, inverted && 'tw-dark', isFocusVisible && FOCUS_VISIBLE_STYLE])}\n disabled={disabled}\n data-test-id=\"button\"\n form={formId}\n {...buttonProps}\n {...focusProps}\n >\n {icon && (\n <span\n data-test-id=\"button-icon\"\n className={merge([children && !hideLabel ? IconSpacingClasses[size] : '', getStyles('icon')])}\n >\n {cloneElement(icon, { size: buttonIconSizeMap[size] })}\n </span>\n )}\n {children && (\n <span data-test-id=\"button-text\" className={merge([getStyles('text'), hideLabel && 'tw-sr-only'])}>\n {children}\n </span>\n )}\n </button>\n );\n};\n\nexport const Button = forwardRef(ButtonComponent);\n"],"names":[],"mappings":";;;;;;;;;;;AAoDA,MAAM,IAAmF,CACrF;AAAA,EACI,UAAO,EAAW;AAAA,EAClB,WAAQ,EAAY;AAAA,EACpB,UAAO,EAAW;AAAA,EAClB,cAAW,EAAe;AAAA,EAC1B,cAAW,EAAe;AAAA,EAC1B,eAAY;AAAA,EACZ,cAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAW;AAAA,EACX,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,GAEJ,MACC;AAGG,EAAA,MAAU,EAAY,UACtB,KAAQ,EAAY,SACpB,IAAW,EAAe,UACnB,MAAU,EAAY,aAC7B,KAAQ,EAAY,SACpB,IAAW,EAAe,UAI1B,MAAU,MACV,KAAW,EAAe;AAGxB,QAAA,IAAM,EAA0C,CAAW,GAC3D,EAAE,mBAAgB,EACpB,EAAE,SAAS,MAAM,KAAW,EAAQ,GAAG,YAAY,GAAU,MAAM,EAAc,GAAA,GACjF,CACJ,GACM,EAAE,mBAAgB,kBAAe,EAAa,GAE9C,IAAY,CAAC,MACf,AAAC,IAEK,IADA,GAAG,EAAmB,GAAU,GAAwC,MAG5E,IAAkB,EAAM;AAAA,IAC1B,EAAU,QAAQ;AAAA,IAClB;AAAA,IACA,EAAsB;AAAA,IACrB,KAAQ,CAAC,KAAa,IAAY,EAAkB,GAAM,WAAW,EAAkB,GAAM;AAAA,IAC9F,CAAC,KAAY;AAAA,EAAA,CAChB;AAED,SACK,kBAAA,cAAA,UAAA;AAAA,IACG,cAAY;AAAA,IACZ,iBAAe;AAAA,IACf;AAAA,IACA,WAAW,EAAM,CAAC,GAAiB,KAAY,WAAW,KAAkB,CAAmB,CAAC;AAAA,IAChG;AAAA,IACA,gBAAa;AAAA,IACb,MAAM;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EAAA,GAEH,KACI,kBAAA,cAAA,QAAA;AAAA,IACG,gBAAa;AAAA,IACb,WAAW,EAAM,CAAC,KAAY,CAAC,IAAY,EAAmB,KAAQ,IAAI,EAAU,MAAM,CAAC,CAAC;AAAA,EAE3F,GAAA,EAAa,GAAM,EAAE,MAAM,EAAkB,GAAO,CAAA,CACzD,GAEH,KACI,kBAAA,cAAA,QAAA;AAAA,IAAK,gBAAa;AAAA,IAAc,WAAW,EAAM,CAAC,EAAU,MAAM,GAAG,KAAa,YAAY,CAAC;AAAA,EAAA,GAC3F,CACL,CAER;AAER,GAEa,KAAS,EAAW,CAAe;"}
|
|
@@ -8,12 +8,14 @@ export declare enum EditableMode {
|
|
|
8
8
|
* mode: display as Input or Label first
|
|
9
9
|
* enableDoubleClick: Should the input be triggered by a double click or single click
|
|
10
10
|
* additionalValues: additional information to be passed via onClick Event
|
|
11
|
+
* removeBoxPadding: Removes the Padding (tw-p-2) around the input Box
|
|
11
12
|
*/
|
|
12
13
|
interface EditableOptionProps {
|
|
13
14
|
isSlimInputField?: boolean;
|
|
14
15
|
mode?: EditableMode;
|
|
15
16
|
enableDoubleClick?: boolean;
|
|
16
17
|
additionalValues?: string;
|
|
18
|
+
removeBoxPadding?: boolean;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* Add Children with badges or icons
|
|
@@ -1,82 +1,82 @@
|
|
|
1
1
|
import l, { useState as E, useRef as x, useEffect as N } from "react";
|
|
2
2
|
import { EditableTextHelper as S } from "./lib/helper.es.js";
|
|
3
3
|
import { FOCUS_VISIBLE_STYLE as T } from "../../utilities/focusStyle.es.js";
|
|
4
|
-
import { merge as
|
|
5
|
-
var
|
|
4
|
+
import { merge as r } from "../../utilities/merge.es.js";
|
|
5
|
+
var U = /* @__PURE__ */ ((a) => (a.INPUT = "INPUT", a.LABEL = "LABEL", a))(U || {});
|
|
6
6
|
const D = ({
|
|
7
7
|
onEditableSave: a,
|
|
8
|
-
onModeChange:
|
|
9
|
-
onAdditionalValueSave:
|
|
10
|
-
children:
|
|
8
|
+
onModeChange: u,
|
|
9
|
+
onAdditionalValueSave: f,
|
|
10
|
+
children: c,
|
|
11
11
|
options: e
|
|
12
12
|
}) => {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
},
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
t.key === "Enter" &&
|
|
19
|
-
},
|
|
13
|
+
const d = S.getLabel(c), [s, I] = E(d), [m, w] = E("LABEL"), [L, B] = E(), n = x(null), g = (t) => I(t.target.value), i = (t) => {
|
|
14
|
+
w("LABEL"), u && u("LABEL"), (e == null ? void 0 : e.additionalValues) && f && f(e.additionalValues, t.target.value), a && a(t.target.value);
|
|
15
|
+
}, b = (t) => () => {
|
|
16
|
+
I(t), w("INPUT"), u && u("INPUT");
|
|
17
|
+
}, h = (t) => {
|
|
18
|
+
t.key === "Enter" && i(t);
|
|
19
|
+
}, v = (t) => i(t);
|
|
20
20
|
N(() => {
|
|
21
21
|
var t;
|
|
22
|
-
return
|
|
22
|
+
return w((t = e == null ? void 0 : e.mode) != null ? t : "LABEL");
|
|
23
23
|
}, [e == null ? void 0 : e.mode]);
|
|
24
24
|
const P = e != null && e.enableDoubleClick ? {
|
|
25
|
-
onDoubleClick:
|
|
26
|
-
onKeyPress: (t) => t.key === "Enter" &&
|
|
25
|
+
onDoubleClick: b(d),
|
|
26
|
+
onKeyPress: (t) => t.key === "Enter" && b(d)()
|
|
27
27
|
} : {
|
|
28
|
-
onClick:
|
|
28
|
+
onClick: b(d)
|
|
29
29
|
};
|
|
30
30
|
N(() => {
|
|
31
31
|
var t;
|
|
32
|
-
y.current &&
|
|
33
|
-
}, [
|
|
34
|
-
const y = x(),
|
|
32
|
+
y.current && B(S.copyStyles(y.current)), m === "INPUT" && ((t = n.current) == null || t.select());
|
|
33
|
+
}, [m, n, c]);
|
|
34
|
+
const y = x(), k = c && l.cloneElement(c, {
|
|
35
35
|
ref: y
|
|
36
36
|
});
|
|
37
37
|
return /* @__PURE__ */ l.createElement("div", {
|
|
38
38
|
"data-test-id": "editable-node-container",
|
|
39
|
-
className: "tw-relative"
|
|
40
|
-
},
|
|
41
|
-
className:
|
|
42
|
-
"tw-flex tw-items-center
|
|
43
|
-
(e == null ? void 0 : e.isSlimInputField) === !0
|
|
39
|
+
className: r(["tw-relative", (e == null ? void 0 : e.removeBoxPadding) === !0 ? "" : "tw-p-2"])
|
|
40
|
+
}, m === "INPUT" ? /* @__PURE__ */ l.createElement("div", {
|
|
41
|
+
className: r([
|
|
42
|
+
"tw-flex tw-items-center",
|
|
43
|
+
(e == null ? void 0 : e.isSlimInputField) === !0 ? "-tw-translate-x-[0.315rem] -tw-translate-y-[0.06rem]" : "-tw-translate-x-[0.81rem] -tw-translate-y-[0.56rem]"
|
|
44
44
|
])
|
|
45
45
|
}, /* @__PURE__ */ l.createElement("div", {
|
|
46
46
|
"data-test-id": "editable-input",
|
|
47
|
-
className:
|
|
47
|
+
className: r(["tw-relative"])
|
|
48
48
|
}, /* @__PURE__ */ l.createElement("input", {
|
|
49
|
-
ref:
|
|
49
|
+
ref: n,
|
|
50
50
|
type: "text",
|
|
51
|
-
className:
|
|
51
|
+
className: r([
|
|
52
52
|
"tw-absolute tw-w-full",
|
|
53
|
-
T,
|
|
54
|
-
"tw-text-text tw-
|
|
53
|
+
(e == null ? void 0 : e.isSlimInputField) === !0 ? "focus-visible:tw-outline-none" : T,
|
|
54
|
+
"tw-text-text tw-border tw-rounded tw-bg-base",
|
|
55
55
|
"tw-border-solid",
|
|
56
|
-
(e == null ? void 0 : e.isSlimInputField) === !0
|
|
56
|
+
(e == null ? void 0 : e.isSlimInputField) === !0 ? "tw-py-0 tw-px-1" : "tw-px-3 tw-py-2"
|
|
57
57
|
]),
|
|
58
58
|
style: L,
|
|
59
|
-
value:
|
|
60
|
-
onChange:
|
|
61
|
-
onKeyDown:
|
|
62
|
-
onBlur:
|
|
59
|
+
value: s,
|
|
60
|
+
onChange: g,
|
|
61
|
+
onKeyDown: h,
|
|
62
|
+
onBlur: v
|
|
63
63
|
}), /* @__PURE__ */ l.createElement("span", {
|
|
64
64
|
"aria-hidden": "true",
|
|
65
|
-
className:
|
|
66
|
-
"tw-px-4 tw-py-2 tw-bg-base",
|
|
65
|
+
className: r([
|
|
66
|
+
"tw-rounded tw-px-4 tw-py-2 tw-bg-base",
|
|
67
67
|
(e == null ? void 0 : e.isSlimInputField) === !0 && "tw-py-0 tw-px-2"
|
|
68
68
|
]),
|
|
69
69
|
style: L
|
|
70
|
-
},
|
|
71
|
-
style: { display:
|
|
70
|
+
}, s))) : /* @__PURE__ */ l.createElement(l.Fragment, null), /* @__PURE__ */ l.createElement("button", {
|
|
71
|
+
style: { display: m === "INPUT" ? "none" : "block" },
|
|
72
72
|
className: T,
|
|
73
73
|
...P,
|
|
74
74
|
"data-test-id": "node-link-name",
|
|
75
75
|
"aria-pressed": "false"
|
|
76
|
-
},
|
|
76
|
+
}, k));
|
|
77
77
|
};
|
|
78
78
|
export {
|
|
79
|
-
|
|
79
|
+
U as EditableMode,
|
|
80
80
|
D as EditableText
|
|
81
81
|
};
|
|
82
82
|
//# sourceMappingURL=EditableText.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableText.es.js","sources":["../../../src/components/EditableText/EditableText.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n KeyboardEvent,\n KeyboardEventHandler,\n ReactElement,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { EditableTextHelper } from '@components/EditableText/lib/helper';\nimport { FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nexport enum EditableMode {\n INPUT = 'INPUT',\n LABEL = 'LABEL',\n}\n\ninterface InputStyling {\n fontSize: string;\n lineHeight: string;\n letterSpacing: string;\n minWidth: string;\n}\n\n/**\n * isSlimInputField: removes padding\n * mode: display as Input or Label first\n * enableDoubleClick: Should the input be triggered by a double click or single click\n * additionalValues: additional information to be passed via onClick Event\n */\ninterface EditableOptionProps {\n isSlimInputField?: boolean;\n mode?: EditableMode;\n enableDoubleClick?: boolean;\n additionalValues?: string;\n}\n\n/**\n * Add Children with badges or icons\n * onEditableSave callback to get updated Value\n * onAdditionalValueSave callback with more information (ex. ID)\n * onModeChange callback when state changes\n * options to specify styling and additional behaviours\n */\nexport interface EditableTextProps {\n children?: ReactElement;\n onAdditionalValueSave?: (additionalValue: string, value: string) => void;\n onEditableSave?: (value: string) => void;\n onModeChange?: (editableState?: EditableMode) => void;\n options?: EditableOptionProps;\n}\n\n/**\n * Component to switch between Label and Input state. Wraps the Children\n * with a Button, to allow for accessibility and copies styles to input field\n *\n * Events:\n * - onEditableSave // When changing from input to label state\n * - onModeChange // Indicates which state is active\n * - onAdditionalValueSave // Similar to editable Save with additional Values provided\n *\n * Options properties:\n * - mode: enum EditableMode // {INPUT = 'INPUT',LABEL = 'LABEL'}\n * - enableDoubleClick: boolean // should the input be triggered by a double click or single click\n * - isSlimInputField: boolean // removes y padding\n * - additionalValues?: string // additional Values like ID\n *\n */\nexport const EditableText = ({\n onEditableSave,\n onModeChange,\n onAdditionalValueSave,\n children,\n options,\n}: EditableTextProps) => {\n // Read initial text strings from children\n const childrenLabel = EditableTextHelper.getLabel(children);\n\n // use text strings from children in the input field\n const [inputValue, setInputValue] = useState(childrenLabel);\n const [editableState, setEditableState] = useState<EditableMode>(EditableMode.LABEL);\n const [inputStyling, setInputStyling] = useState<InputStyling>();\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => setInputValue(event.target.value);\n\n const handleSwitchToLabel = (event: KeyboardEvent | FocusEvent) => {\n setEditableState(EditableMode.LABEL);\n\n onModeChange && onModeChange(EditableMode.LABEL);\n options?.additionalValues &&\n onAdditionalValueSave &&\n onAdditionalValueSave(options.additionalValues, (event.target as HTMLTextAreaElement).value);\n onEditableSave && onEditableSave((event.target as HTMLTextAreaElement).value);\n };\n\n const handleSwitchToInput = (childrenText: string) => () => {\n setInputValue(childrenText);\n setEditableState(EditableMode.INPUT);\n onModeChange && onModeChange(EditableMode.INPUT);\n };\n\n const handleKeyDown: KeyboardEventHandler = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n handleSwitchToLabel(event);\n }\n };\n const handleBlur: FocusEventHandler = (event: FocusEvent<HTMLTextAreaElement>) => handleSwitchToLabel(event);\n\n // Set initial state of component if provided in the mode\n useEffect(() => setEditableState(options?.mode ?? EditableMode.LABEL), [options?.mode]);\n\n const clickBehaviour = options?.enableDoubleClick\n ? {\n onDoubleClick: handleSwitchToInput(childrenLabel),\n onKeyPress: (event: KeyboardEvent) => event.key === 'Enter' && handleSwitchToInput(childrenLabel)(),\n }\n : {\n onClick: handleSwitchToInput(childrenLabel),\n };\n\n // Update Input Style and select input field if visible\n useEffect(() => {\n if (childRef.current) {\n setInputStyling(EditableTextHelper.copyStyles(childRef.current));\n }\n\n if (editableState === EditableMode.INPUT) {\n inputRef.current?.select();\n }\n }, [editableState, inputRef]);\n\n const childRef = useRef();\n\n // Clone Child and add ref to Children\n const ChildrenWithRef =\n children &&\n React.cloneElement(children, {\n ref: childRef,\n });\n\n return (\n <div data-test-id=\"editable-node-container\" className=\"tw-relative\">\n {editableState === EditableMode.INPUT ? (\n <div\n className={merge([\n 'tw-flex tw-items-center -tw-translate-x-[0.81rem] -tw-translate-y-[0.56rem]',\n options?.isSlimInputField === true && '-tw-translate-y-[0.06rem] -tw-translate-x-[0.15rem]',\n ])}\n >\n <div data-test-id=\"editable-input\" className={merge(['tw-relative'])}>\n <input\n ref={inputRef}\n type=\"text\"\n className={merge([\n 'tw-absolute tw-w-full',\n FOCUS_VISIBLE_STYLE,\n 'tw-text-text tw-px-3 tw-py-2 tw-border tw-rounded tw-bg-base',\n 'tw-border-solid',\n options?.isSlimInputField === true && 'tw-py-0 tw-px-1',\n ])}\n style={inputStyling}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n />\n <span\n aria-hidden=\"true\"\n className={merge([\n 'tw-px-4 tw-py-2 tw-bg-base',\n options?.isSlimInputField === true && 'tw-py-0 tw-px-2',\n ])}\n style={inputStyling}\n >\n {inputValue}\n </span>\n </div>\n </div>\n ) : (\n <></>\n )}\n <button\n style={{ display: editableState === EditableMode.INPUT ? 'none' : 'block' }}\n className={FOCUS_VISIBLE_STYLE}\n {...clickBehaviour}\n data-test-id={'node-link-name'}\n aria-pressed=\"false\"\n >\n {ChildrenWithRef}\n </button>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditableText.es.js","sources":["../../../src/components/EditableText/EditableText.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n KeyboardEvent,\n KeyboardEventHandler,\n ReactElement,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { EditableTextHelper } from '@components/EditableText/lib/helper';\nimport { FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nexport enum EditableMode {\n INPUT = 'INPUT',\n LABEL = 'LABEL',\n}\n\ninterface InputStyling {\n fontSize: string;\n lineHeight: string;\n letterSpacing: string;\n minWidth: string;\n fontWeight: string;\n}\n\n/**\n * isSlimInputField: removes padding\n * mode: display as Input or Label first\n * enableDoubleClick: Should the input be triggered by a double click or single click\n * additionalValues: additional information to be passed via onClick Event\n * removeBoxPadding: Removes the Padding (tw-p-2) around the input Box\n */\ninterface EditableOptionProps {\n isSlimInputField?: boolean;\n mode?: EditableMode;\n enableDoubleClick?: boolean;\n additionalValues?: string;\n removeBoxPadding?: boolean;\n}\n\n/**\n * Add Children with badges or icons\n * onEditableSave callback to get updated Value\n * onAdditionalValueSave callback with more information (ex. ID)\n * onModeChange callback when state changes\n * options to specify styling and additional behaviours\n */\nexport interface EditableTextProps {\n children?: ReactElement;\n onAdditionalValueSave?: (additionalValue: string, value: string) => void;\n onEditableSave?: (value: string) => void;\n onModeChange?: (editableState?: EditableMode) => void;\n options?: EditableOptionProps;\n}\n\n/**\n * Component to switch between Label and Input state. Wraps the Children\n * with a Button, to allow for accessibility and copies styles to input field\n *\n * Events:\n * - onEditableSave // When changing from input to label state\n * - onModeChange // Indicates which state is active\n * - onAdditionalValueSave // Similar to editable Save with additional Values provided\n *\n * Options properties:\n * - mode: enum EditableMode // {INPUT = 'INPUT',LABEL = 'LABEL'}\n * - enableDoubleClick: boolean // should the input be triggered by a double click or single click\n * - isSlimInputField: boolean // removes y padding\n * - additionalValues?: string // additional Values like ID\n *\n */\nexport const EditableText = ({\n onEditableSave,\n onModeChange,\n onAdditionalValueSave,\n children,\n options,\n}: EditableTextProps) => {\n // Read initial text strings from children\n const childrenLabel = EditableTextHelper.getLabel(children);\n\n // use text strings from children in the input field\n const [inputValue, setInputValue] = useState(childrenLabel);\n const [editableState, setEditableState] = useState<EditableMode>(EditableMode.LABEL);\n const [inputStyling, setInputStyling] = useState<InputStyling>();\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => setInputValue(event.target.value);\n\n const handleSwitchToLabel = (event: KeyboardEvent | FocusEvent) => {\n setEditableState(EditableMode.LABEL);\n\n onModeChange && onModeChange(EditableMode.LABEL);\n options?.additionalValues &&\n onAdditionalValueSave &&\n onAdditionalValueSave(options.additionalValues, (event.target as HTMLTextAreaElement).value);\n onEditableSave && onEditableSave((event.target as HTMLTextAreaElement).value);\n };\n\n const handleSwitchToInput = (childrenText: string) => () => {\n setInputValue(childrenText);\n setEditableState(EditableMode.INPUT);\n onModeChange && onModeChange(EditableMode.INPUT);\n };\n\n const handleKeyDown: KeyboardEventHandler = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n handleSwitchToLabel(event);\n }\n };\n const handleBlur: FocusEventHandler = (event: FocusEvent<HTMLTextAreaElement>) => handleSwitchToLabel(event);\n\n // Set initial state of component if provided in the mode\n useEffect(() => setEditableState(options?.mode ?? EditableMode.LABEL), [options?.mode]);\n\n const clickBehaviour = options?.enableDoubleClick\n ? {\n onDoubleClick: handleSwitchToInput(childrenLabel),\n onKeyPress: (event: KeyboardEvent) => event.key === 'Enter' && handleSwitchToInput(childrenLabel)(),\n }\n : {\n onClick: handleSwitchToInput(childrenLabel),\n };\n\n // Update Input Style and select input field if visible\n useEffect(() => {\n if (childRef.current) {\n setInputStyling(EditableTextHelper.copyStyles(childRef.current));\n }\n\n if (editableState === EditableMode.INPUT) {\n inputRef.current?.select();\n }\n }, [editableState, inputRef, children]);\n\n const childRef = useRef();\n\n // Clone Child and add ref to Children\n const ChildrenWithRef =\n children &&\n React.cloneElement(children, {\n ref: childRef,\n });\n\n return (\n <div\n data-test-id=\"editable-node-container\"\n className={merge(['tw-relative', options?.removeBoxPadding === true ? '' : 'tw-p-2'])}\n >\n {editableState === EditableMode.INPUT ? (\n <div\n className={merge([\n 'tw-flex tw-items-center',\n options?.isSlimInputField === true\n ? '-tw-translate-x-[0.315rem] -tw-translate-y-[0.06rem]'\n : '-tw-translate-x-[0.81rem] -tw-translate-y-[0.56rem]',\n ])}\n >\n <div data-test-id=\"editable-input\" className={merge(['tw-relative'])}>\n <input\n ref={inputRef}\n type=\"text\"\n className={merge([\n 'tw-absolute tw-w-full',\n options?.isSlimInputField === true\n ? 'focus-visible:tw-outline-none'\n : FOCUS_VISIBLE_STYLE,\n 'tw-text-text tw-border tw-rounded tw-bg-base',\n 'tw-border-solid',\n options?.isSlimInputField === true ? 'tw-py-0 tw-px-1' : 'tw-px-3 tw-py-2',\n ])}\n style={inputStyling}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n />\n <span\n aria-hidden=\"true\"\n className={merge([\n 'tw-rounded tw-px-4 tw-py-2 tw-bg-base',\n options?.isSlimInputField === true && 'tw-py-0 tw-px-2',\n ])}\n style={inputStyling}\n >\n {inputValue}\n </span>\n </div>\n </div>\n ) : (\n <></>\n )}\n <button\n style={{ display: editableState === EditableMode.INPUT ? 'none' : 'block' }}\n className={FOCUS_VISIBLE_STYLE}\n {...clickBehaviour}\n data-test-id={'node-link-name'}\n aria-pressed=\"false\"\n >\n {ChildrenWithRef}\n </button>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
const
|
|
1
|
+
import g from "react";
|
|
2
|
+
const i = {
|
|
3
3
|
getLabel: (t) => {
|
|
4
4
|
let o = "";
|
|
5
5
|
const p = (r) => {
|
|
6
|
-
|
|
6
|
+
g.Children.map(r, (e) => {
|
|
7
7
|
typeof e == "string" ? o += e : e != null && e.props && p(e == null ? void 0 : e.props.children);
|
|
8
8
|
});
|
|
9
9
|
};
|
|
@@ -13,10 +13,11 @@ const a = {
|
|
|
13
13
|
fontSize: window.getComputedStyle(t).getPropertyValue("font-size"),
|
|
14
14
|
lineHeight: window.getComputedStyle(t).getPropertyValue("line-height"),
|
|
15
15
|
letterSpacing: window.getComputedStyle(t).getPropertyValue("letter-spacing"),
|
|
16
|
-
minWidth: window.getComputedStyle(t).getPropertyValue("width")
|
|
16
|
+
minWidth: window.getComputedStyle(t).getPropertyValue("width"),
|
|
17
|
+
fontWeight: window.getComputedStyle(t).getPropertyValue("font-weight")
|
|
17
18
|
})
|
|
18
19
|
};
|
|
19
20
|
export {
|
|
20
|
-
|
|
21
|
+
i as EditableTextHelper
|
|
21
22
|
};
|
|
22
23
|
//# sourceMappingURL=helper.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.es.js","sources":["../../../../src/components/EditableText/lib/helper.ts"],"sourcesContent":["import React, { ReactElement, ReactNode } from 'react';\n\nexport const EditableTextHelper = {\n /**\n * Recursively iterators through Children\n * returns all instances of string amended together\n *\n */\n getLabel: (children?: ReactNode | string) => {\n let label = '';\n const iteratorStep = (children?: ReactNode | string) => {\n React.Children.map(children, (child) => {\n if (typeof child === 'string') {\n label += child;\n } else {\n !!(child as ReactElement)?.props && iteratorStep((child as ReactElement)?.props.children);\n }\n });\n };\n iteratorStep(children);\n\n return label;\n },\n\n /**\n * Accesses the window object and copies the computed style\n * of the element\n *\n */\n copyStyles: (current: Element) => {\n return {\n fontSize: window.getComputedStyle(current).getPropertyValue('font-size'),\n lineHeight: window.getComputedStyle(current).getPropertyValue('line-height'),\n letterSpacing: window.getComputedStyle(current).getPropertyValue('letter-spacing'),\n minWidth: window.getComputedStyle(current).getPropertyValue('width'),\n };\n },\n};\n"],"names":[],"mappings":";AAEO,MAAM,IAAqB;AAAA,EAM9B,UAAU,CAAC,MAAkC;AACzC,QAAI,IAAQ;AACN,UAAA,IAAe,CAAC,MAAkC;AACpD,QAAM,SAAS,IAAI,GAAU,CAAC,MAAU;AAChC,QAAA,OAAO,KAAU,WACR,KAAA,IAET,AAAG,eAAwB,SAAS,EAAc,uBAAwB,MAAM,QAAQ;AAAA,MAC5F,CACH;AAAA,IAAA;AAEL,aAAa,CAAQ,GAEd;AAAA,EACX;AAAA,EAOA,YAAY,CAAC,MACF;AAAA,IACH,UAAU,OAAO,iBAAiB,CAAO,EAAE,iBAAiB,WAAW;AAAA,IACvE,YAAY,OAAO,iBAAiB,CAAO,EAAE,iBAAiB,aAAa;AAAA,IAC3E,eAAe,OAAO,iBAAiB,CAAO,EAAE,iBAAiB,gBAAgB;AAAA,IACjF,UAAU,OAAO,iBAAiB,CAAO,EAAE,iBAAiB,OAAO;AAAA,EAAA;
|
|
1
|
+
{"version":3,"file":"helper.es.js","sources":["../../../../src/components/EditableText/lib/helper.ts"],"sourcesContent":["import React, { ReactElement, ReactNode } from 'react';\n\nexport const EditableTextHelper = {\n /**\n * Recursively iterators through Children\n * returns all instances of string amended together\n *\n */\n getLabel: (children?: ReactNode | string) => {\n let label = '';\n const iteratorStep = (children?: ReactNode | string) => {\n React.Children.map(children, (child) => {\n if (typeof child === 'string') {\n label += child;\n } else {\n !!(child as ReactElement)?.props && iteratorStep((child as ReactElement)?.props.children);\n }\n });\n };\n iteratorStep(children);\n\n return label;\n },\n\n /**\n * Accesses the window object and copies the computed style\n * of the element\n *\n */\n copyStyles: (current: Element) => {\n return {\n fontSize: window.getComputedStyle(current).getPropertyValue('font-size'),\n lineHeight: window.getComputedStyle(current).getPropertyValue('line-height'),\n letterSpacing: window.getComputedStyle(current).getPropertyValue('letter-spacing'),\n minWidth: window.getComputedStyle(current).getPropertyValue('width'),\n fontWeight: window.getComputedStyle(current).getPropertyValue('font-weight'),\n };\n },\n};\n"],"names":[],"mappings":";AAEO,MAAM,IAAqB;AAAA,EAM9B,UAAU,CAAC,MAAkC;AACzC,QAAI,IAAQ;AACN,UAAA,IAAe,CAAC,MAAkC;AACpD,QAAM,SAAS,IAAI,GAAU,CAAC,MAAU;AAChC,QAAA,OAAO,KAAU,WACR,KAAA,IAET,AAAG,eAAwB,SAAS,EAAc,uBAAwB,MAAM,QAAQ;AAAA,MAC5F,CACH;AAAA,IAAA;AAEL,aAAa,CAAQ,GAEd;AAAA,EACX;AAAA,EAOA,YAAY,CAAC,MACF;AAAA,IACH,UAAU,OAAO,iBAAiB,CAAO,EAAE,iBAAiB,WAAW;AAAA,IACvE,YAAY,OAAO,iBAAiB,CAAO,EAAE,iBAAiB,aAAa;AAAA,IAC3E,eAAe,OAAO,iBAAiB,CAAO,EAAE,iBAAiB,gBAAgB;AAAA,IACjF,UAAU,OAAO,iBAAiB,CAAO,EAAE,iBAAiB,OAAO;AAAA,IACnE,YAAY,OAAO,iBAAiB,CAAO,EAAE,iBAAiB,aAAa;AAAA,EAAA;AAGvF;"}
|
|
@@ -1,57 +1,59 @@
|
|
|
1
|
-
import t, { useState as I, useEffect as
|
|
2
|
-
import { CollectionItem as
|
|
1
|
+
import t, { useState as I, useEffect as b } from "react";
|
|
2
|
+
import { CollectionItem as k } from "./CollectionItem.es.js";
|
|
3
3
|
import { DropZone as i } from "../DropZone/DropZone.es.js";
|
|
4
|
-
import { HTML5Backend as
|
|
5
|
-
import { DndProvider as
|
|
4
|
+
import { HTML5Backend as E } from "react-dnd-html5-backend";
|
|
5
|
+
import { DndProvider as D } from "react-dnd";
|
|
6
6
|
import "../../utilities/dnd/DndWrapper.es.js";
|
|
7
|
-
import { moveItems as
|
|
8
|
-
import { DropZonePosition as
|
|
9
|
-
import { useId as
|
|
10
|
-
const
|
|
11
|
-
onMove:
|
|
12
|
-
dragDisabled:
|
|
7
|
+
import { moveItems as y } from "../../utilities/dnd/moveItems.es.js";
|
|
8
|
+
import { DropZonePosition as d } from "../../utilities/dnd/types.es.js";
|
|
9
|
+
import { useId as g } from "@react-aria/utils";
|
|
10
|
+
const v = (o, n) => o.sort === null && n.sort === null || o.sort === null ? 1 : n.sort === null ? -1 : o.sort - n.sort, z = ({
|
|
11
|
+
onMove: o,
|
|
12
|
+
dragDisabled: n,
|
|
13
13
|
items: s,
|
|
14
|
-
renderContent:
|
|
14
|
+
renderContent: p
|
|
15
15
|
}) => {
|
|
16
|
-
const [
|
|
17
|
-
|
|
16
|
+
const [l, c] = I(s), a = g();
|
|
17
|
+
b(() => {
|
|
18
18
|
const e = [...s];
|
|
19
|
-
e.sort(
|
|
19
|
+
e.sort(v), c(e);
|
|
20
20
|
}, [s]);
|
|
21
|
-
const m = (e,
|
|
22
|
-
const u =
|
|
23
|
-
|
|
21
|
+
const m = (e, r, f) => {
|
|
22
|
+
const u = y(e, r, f, l);
|
|
23
|
+
o(u);
|
|
24
24
|
};
|
|
25
|
-
return /* @__PURE__ */ t.createElement(
|
|
26
|
-
backend:
|
|
25
|
+
return /* @__PURE__ */ t.createElement(D, {
|
|
26
|
+
backend: E
|
|
27
27
|
}, /* @__PURE__ */ t.createElement("div", {
|
|
28
28
|
className: "tw-outline-none",
|
|
29
29
|
"data-test-id": "orderable-list"
|
|
30
|
-
},
|
|
31
|
-
key: `orderable-list-
|
|
30
|
+
}, l.map((e, r) => /* @__PURE__ */ t.createElement(t.Fragment, {
|
|
31
|
+
key: `dropzone-orderable-list-key-${r}`
|
|
32
|
+
}, /* @__PURE__ */ t.createElement(i, {
|
|
33
|
+
key: `orderable-list-item-${r}-before`,
|
|
32
34
|
data: {
|
|
33
35
|
targetItem: e,
|
|
34
|
-
position:
|
|
36
|
+
position: d.Before
|
|
35
37
|
},
|
|
36
38
|
onDrop: m,
|
|
37
|
-
treeId:
|
|
38
|
-
}), /* @__PURE__ */ t.createElement(
|
|
39
|
+
treeId: a
|
|
40
|
+
}), /* @__PURE__ */ t.createElement(k, {
|
|
39
41
|
key: e.id,
|
|
40
|
-
dragDisabled:
|
|
42
|
+
dragDisabled: n,
|
|
41
43
|
item: e,
|
|
42
|
-
renderContent:
|
|
43
|
-
listId:
|
|
44
|
-
}),
|
|
45
|
-
key: `orderable-list-item-${
|
|
44
|
+
renderContent: p,
|
|
45
|
+
listId: a
|
|
46
|
+
}), r === s.length - 1 && /* @__PURE__ */ t.createElement(i, {
|
|
47
|
+
key: `orderable-list-item-${r}-after`,
|
|
46
48
|
data: {
|
|
47
49
|
targetItem: e,
|
|
48
|
-
position:
|
|
50
|
+
position: d.After
|
|
49
51
|
},
|
|
50
52
|
onDrop: m,
|
|
51
|
-
treeId:
|
|
53
|
+
treeId: a
|
|
52
54
|
})))));
|
|
53
55
|
};
|
|
54
56
|
export {
|
|
55
|
-
|
|
57
|
+
z as OrderableList
|
|
56
58
|
};
|
|
57
59
|
//# sourceMappingURL=OrderableList.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderableList.es.js","sources":["../../../src/components/OrderableList/OrderableList.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React, { useEffect, useState } from 'react';\n\nimport { CollectionItem } from './CollectionItem';\nimport { OrderableListItem, OrderableListProps } from './types';\nimport { DropZone } from '@components/DropZone';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { DndProvider } from 'react-dnd';\nimport { DropZonePosition, moveItems } from '@utilities/dnd';\nimport { useId } from '@react-aria/utils';\n\nconst listItemsCompareFn = <T extends object>(itemA: OrderableListItem<T>, itemB: OrderableListItem<T>): number => {\n if (itemA.sort === null && itemB.sort === null) {\n return 1;\n }\n if (itemA.sort === null) {\n return 1;\n }\n if (itemB.sort === null) {\n return -1;\n }\n\n return itemA.sort - itemB.sort;\n};\n\nexport const OrderableList = <T extends object>({\n onMove,\n dragDisabled,\n items,\n renderContent,\n}: OrderableListProps<T>) => {\n const [itemsState, setItemsState] = useState(items);\n const listId = useId();\n\n useEffect(() => {\n // sort the incoming items\n const itemsClone = [...items];\n itemsClone.sort(listItemsCompareFn);\n setItemsState(itemsClone);\n }, [items]);\n\n const handleDrop = (\n targetItem: OrderableListItem<T>,\n sourceItem: OrderableListItem<T>,\n position: DropZonePosition,\n ) => {\n const modifiedItems = moveItems(targetItem, sourceItem, position, itemsState);\n onMove(modifiedItems);\n };\n\n return (\n <DndProvider backend={HTML5Backend}>\n <div className=\"tw-outline-none\" data-test-id=\"orderable-list\">\n {itemsState.map((item, index) => (\n
|
|
1
|
+
{"version":3,"file":"OrderableList.es.js","sources":["../../../src/components/OrderableList/OrderableList.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React, { useEffect, useState } from 'react';\n\nimport { CollectionItem } from './CollectionItem';\nimport { OrderableListItem, OrderableListProps } from './types';\nimport { DropZone } from '@components/DropZone';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { DndProvider } from 'react-dnd';\nimport { DropZonePosition, moveItems } from '@utilities/dnd';\nimport { useId } from '@react-aria/utils';\n\nconst listItemsCompareFn = <T extends object>(itemA: OrderableListItem<T>, itemB: OrderableListItem<T>): number => {\n if (itemA.sort === null && itemB.sort === null) {\n return 1;\n }\n if (itemA.sort === null) {\n return 1;\n }\n if (itemB.sort === null) {\n return -1;\n }\n\n return itemA.sort - itemB.sort;\n};\n\nexport const OrderableList = <T extends object>({\n onMove,\n dragDisabled,\n items,\n renderContent,\n}: OrderableListProps<T>) => {\n const [itemsState, setItemsState] = useState(items);\n const listId = useId();\n\n useEffect(() => {\n // sort the incoming items\n const itemsClone = [...items];\n itemsClone.sort(listItemsCompareFn);\n setItemsState(itemsClone);\n }, [items]);\n\n const handleDrop = (\n targetItem: OrderableListItem<T>,\n sourceItem: OrderableListItem<T>,\n position: DropZonePosition,\n ) => {\n const modifiedItems = moveItems(targetItem, sourceItem, position, itemsState);\n onMove(modifiedItems);\n };\n\n return (\n <DndProvider backend={HTML5Backend}>\n <div className=\"tw-outline-none\" data-test-id=\"orderable-list\">\n {itemsState.map((item, index) => (\n <React.Fragment key={`dropzone-orderable-list-key-${index}`}>\n <DropZone\n key={`orderable-list-item-${index}-before`}\n data={{\n targetItem: item,\n position: DropZonePosition.Before,\n }}\n onDrop={handleDrop}\n treeId={listId}\n />\n <CollectionItem\n key={item.id}\n dragDisabled={dragDisabled}\n item={item}\n renderContent={renderContent}\n listId={listId}\n />\n {index === items.length - 1 && (\n <DropZone\n key={`orderable-list-item-${index}-after`}\n data={{\n targetItem: item,\n position: DropZonePosition.After,\n }}\n onDrop={handleDrop}\n treeId={listId}\n />\n )}\n </React.Fragment>\n ))}\n </div>\n </DndProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAYA,MAAM,IAAqB,CAAmB,GAA6B,MACnE,EAAM,SAAS,QAAQ,EAAM,SAAS,QAGtC,EAAM,SAAS,OACR,IAEP,EAAM,SAAS,OACR,KAGJ,EAAM,OAAO,EAAM,MAGjB,IAAgB,CAAmB;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACyB;AACzB,QAAM,CAAC,GAAY,KAAiB,EAAS,CAAK,GAC5C,IAAS;AAEf,IAAU,MAAM;AAEN,UAAA,IAAa,CAAC,GAAG,CAAK;AAC5B,MAAW,KAAK,CAAkB,GAClC,EAAc,CAAU;AAAA,EAAA,GACzB,CAAC,CAAK,CAAC;AAEV,QAAM,IAAa,CACf,GACA,GACA,MACC;AACD,UAAM,IAAgB,EAAU,GAAY,GAAY,GAAU,CAAU;AAC5E,MAAO,CAAa;AAAA,EAAA;AAGxB,SACK,kBAAA,cAAA,GAAA;AAAA,IAAY,SAAS;AAAA,EAAA,GACjB,kBAAA,cAAA,OAAA;AAAA,IAAI,WAAU;AAAA,IAAkB,gBAAa;AAAA,EAAA,GACzC,EAAW,IAAI,CAAC,GAAM,MACnB,kBAAA,cAAC,EAAM,UAAN;AAAA,IAAe,KAAK,+BAA+B;AAAA,EAAA,GAC/C,kBAAA,cAAA,GAAA;AAAA,IACG,KAAK,uBAAuB;AAAA,IAC5B,MAAM;AAAA,MACF,YAAY;AAAA,MACZ,UAAU,EAAiB;AAAA,IAC/B;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,CACZ,GACC,kBAAA,cAAA,GAAA;AAAA,IACG,KAAK,EAAK;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACJ,GACC,MAAU,EAAM,SAAS,KACrB,kBAAA,cAAA,GAAA;AAAA,IACG,KAAK,uBAAuB;AAAA,IAC5B,MAAM;AAAA,MACF,YAAY;AAAA,MACZ,UAAU,EAAiB;AAAA,IAC/B;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,CACZ,CAER,CACH,CACL,CACJ;AAER;"}
|