fui-fancyui
Version:
FancyUI Libary
46 lines (45 loc) • 1.28 kB
JavaScript
import { useState as f } from "react";
import { setLastLetterPositionContentEditable as c } from "../../../../utils/functions/setLastLetterPositionContentEditable.js";
import v from "../../../../../node_modules/uuid/dist/esm-browser/v4.js";
const F = (d = [], r) => {
const [s, p] = f(""), [u, l] = f(""), m = (e) => {
r == null || r([...d, { id: v(), label: e }]);
}, o = (e) => () => {
r == null || r(d.filter((t) => t.id !== e));
}, b = () => {
r == null || r(d.slice(0, -1));
}, E = (e) => {
if (e === s) {
p(""), l("");
return;
}
p(e), l("");
}, a = (e, t) => {
p(t), l(s);
const i = e.target;
c(i);
}, k = (e, t) => {
r == null || r(d.map((i) => i.id === e ? { ...i, label: t } : i));
};
return {
addChip: m,
handleChipEdit: (e, t) => {
if (t.key === "Enter" && s && !u) {
t.preventDefault(), l(s);
const i = t.target;
c(i);
return;
} else (t.key === "Enter" || t.key === ",") && e === s && (t.preventDefault(), k(e, t.target.innerText), p(""), l(""), t.target.blur());
},
deleteChip: o,
handleChipFocus: E,
focusedChip: s,
editabledChip: u,
chips: d,
removeLastChip: b,
handleClick: a
};
};
export {
F as useChip
};