@lv-x-software-house/x_view 1.2.5-dev.18 → 1.2.5-dev.19
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/index.js +119 -20
- package/dist/index.mjs +124 -25
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8381,6 +8381,7 @@ function InSceneQuestForm({
|
|
|
8381
8381
|
// NOVA PROP
|
|
8382
8382
|
viewMembers = []
|
|
8383
8383
|
}) {
|
|
8384
|
+
var _a, _b;
|
|
8384
8385
|
const [name, setName] = (0, import_react16.useState)("");
|
|
8385
8386
|
const [assigneeId, setAssigneeId] = (0, import_react16.useState)("");
|
|
8386
8387
|
const [types, setTypes] = (0, import_react16.useState)(["quest"]);
|
|
@@ -8390,6 +8391,8 @@ function InSceneQuestForm({
|
|
|
8390
8391
|
const [intensity, setIntensity] = (0, import_react16.useState)(0);
|
|
8391
8392
|
const [description, setDescription] = (0, import_react16.useState)("");
|
|
8392
8393
|
const [isStatusDropdownOpen, setIsStatusDropdownOpen] = (0, import_react16.useState)(false);
|
|
8394
|
+
const [isAssigneeDropdownOpen, setIsAssigneeDropdownOpen] = (0, import_react16.useState)(false);
|
|
8395
|
+
const [assigneeSearchQuery, setAssigneeSearchQuery] = (0, import_react16.useState)("");
|
|
8393
8396
|
const [customProps, setCustomProps] = (0, import_react16.useState)([]);
|
|
8394
8397
|
const [isDescriptionModalOpen, setIsDescriptionModalOpen] = (0, import_react16.useState)(false);
|
|
8395
8398
|
const propsEndRef = (0, import_react16.useRef)(null);
|
|
@@ -8398,8 +8401,8 @@ function InSceneQuestForm({
|
|
|
8398
8401
|
const newProp = createNewCustomProperty(customProps);
|
|
8399
8402
|
setCustomProps([...customProps, newProp]);
|
|
8400
8403
|
setTimeout(() => {
|
|
8401
|
-
var
|
|
8402
|
-
(
|
|
8404
|
+
var _a2;
|
|
8405
|
+
(_a2 = propsEndRef.current) == null ? void 0 : _a2.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
8403
8406
|
}, 100);
|
|
8404
8407
|
};
|
|
8405
8408
|
const handleRemoveProp = (index) => setCustomProps(customProps.filter((_, i) => i !== index));
|
|
@@ -8517,16 +8520,59 @@ function InSceneQuestForm({
|
|
|
8517
8520
|
},
|
|
8518
8521
|
/* @__PURE__ */ import_react16.default.createElement("span", { className: "w-3 h-3 rounded-full", style: { backgroundColor: QUEST_STATUS_COLORS2[s] } }),
|
|
8519
8522
|
s
|
|
8520
|
-
)))))), /* @__PURE__ */ import_react16.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react16.default.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), /* @__PURE__ */ import_react16.default.createElement(
|
|
8521
|
-
"
|
|
8523
|
+
)))))), /* @__PURE__ */ import_react16.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react16.default.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), /* @__PURE__ */ import_react16.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react16.default.createElement(
|
|
8524
|
+
"button",
|
|
8522
8525
|
{
|
|
8523
|
-
|
|
8524
|
-
|
|
8525
|
-
className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors
|
|
8526
|
+
type: "button",
|
|
8527
|
+
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
8528
|
+
className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
|
|
8526
8529
|
},
|
|
8527
|
-
/* @__PURE__ */ import_react16.default.createElement("
|
|
8528
|
-
|
|
8529
|
-
)
|
|
8530
|
+
/* @__PURE__ */ import_react16.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react16.default.createElement(import_fi14.FiUser, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ import_react16.default.createElement("span", { className: "text-slate-200 font-medium" }, ((_a = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _a.name) || ((_b = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _b.email) || "Nenhum")),
|
|
8531
|
+
/* @__PURE__ */ import_react16.default.createElement(import_fi14.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
|
|
8532
|
+
), isAssigneeDropdownOpen && /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
|
|
8533
|
+
setIsAssigneeDropdownOpen(false);
|
|
8534
|
+
setAssigneeSearchQuery("");
|
|
8535
|
+
} }), /* @__PURE__ */ import_react16.default.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ import_react16.default.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ import_react16.default.createElement(import_fi14.FiSearch, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ import_react16.default.createElement(
|
|
8536
|
+
"input",
|
|
8537
|
+
{
|
|
8538
|
+
type: "text",
|
|
8539
|
+
autoFocus: true,
|
|
8540
|
+
placeholder: "Buscar membro...",
|
|
8541
|
+
value: assigneeSearchQuery,
|
|
8542
|
+
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
8543
|
+
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
8544
|
+
onClick: (e) => e.stopPropagation()
|
|
8545
|
+
}
|
|
8546
|
+
)), /* @__PURE__ */ import_react16.default.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ import_react16.default.createElement(
|
|
8547
|
+
"li",
|
|
8548
|
+
{
|
|
8549
|
+
onClick: () => {
|
|
8550
|
+
setAssigneeId("");
|
|
8551
|
+
setIsAssigneeDropdownOpen(false);
|
|
8552
|
+
setAssigneeSearchQuery("");
|
|
8553
|
+
},
|
|
8554
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${!assigneeId ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
8555
|
+
},
|
|
8556
|
+
"Nenhum"
|
|
8557
|
+
), viewMembers.filter((member) => {
|
|
8558
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
8559
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
8560
|
+
}).map((member) => /* @__PURE__ */ import_react16.default.createElement(
|
|
8561
|
+
"li",
|
|
8562
|
+
{
|
|
8563
|
+
key: member.id,
|
|
8564
|
+
onClick: () => {
|
|
8565
|
+
setAssigneeId(member.id);
|
|
8566
|
+
setIsAssigneeDropdownOpen(false);
|
|
8567
|
+
setAssigneeSearchQuery("");
|
|
8568
|
+
},
|
|
8569
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${assigneeId === member.id ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
8570
|
+
},
|
|
8571
|
+
member.name || member.email || member.id
|
|
8572
|
+
)), viewMembers.filter((member) => {
|
|
8573
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
8574
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
8575
|
+
}).length === 0 && assigneeSearchQuery && /* @__PURE__ */ import_react16.default.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ import_react16.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react16.default.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ import_react16.default.createElement("div", { className: "relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all" }, types.map((t, index) => /* @__PURE__ */ import_react16.default.createElement("span", { key: index, className: `flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border ${t === "quest" ? "bg-sky-500/20 text-sky-200 border-sky-500/30" : "bg-indigo-500/30 text-indigo-100 border-indigo-500/20"}` }, t, t !== "quest" && /* @__PURE__ */ import_react16.default.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ import_react16.default.createElement(import_fi14.FiX, { size: 12 })))), /* @__PURE__ */ import_react16.default.createElement(
|
|
8530
8576
|
"input",
|
|
8531
8577
|
{
|
|
8532
8578
|
type: "text",
|
|
@@ -9145,6 +9191,8 @@ function QuestDetailsPanel({
|
|
|
9145
9191
|
const [description, setDescription] = (0, import_react18.useState)((node == null ? void 0 : node.description) ?? "");
|
|
9146
9192
|
const [intensity, setIntensity] = (0, import_react18.useState)((node == null ? void 0 : node.intensity) !== void 0 ? node.intensity : 0);
|
|
9147
9193
|
const [isStatusDropdownOpen, setIsStatusDropdownOpen] = (0, import_react18.useState)(false);
|
|
9194
|
+
const [isAssigneeDropdownOpen, setIsAssigneeDropdownOpen] = (0, import_react18.useState)(false);
|
|
9195
|
+
const [assigneeSearchQuery, setAssigneeSearchQuery] = (0, import_react18.useState)("");
|
|
9148
9196
|
const [customProps, setCustomProps] = (0, import_react18.useState)(() => extractCustomPropsFromNode(node || {}));
|
|
9149
9197
|
const [showTypeSuggestions, setShowTypeSuggestions] = (0, import_react18.useState)(false);
|
|
9150
9198
|
const [filteredTypes, setFilteredTypes] = (0, import_react18.useState)([]);
|
|
@@ -9428,20 +9476,71 @@ function QuestDetailsPanel({
|
|
|
9428
9476
|
},
|
|
9429
9477
|
/* @__PURE__ */ import_react18.default.createElement("span", { className: "w-3 h-3 rounded-full", style: { backgroundColor: QUEST_STATUS_COLORS3[s] } }),
|
|
9430
9478
|
s
|
|
9431
|
-
)))))), /* @__PURE__ */ import_react18.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react18.default.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), canEdit ? /* @__PURE__ */ import_react18.default.createElement(
|
|
9432
|
-
"
|
|
9479
|
+
)))))), /* @__PURE__ */ import_react18.default.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ import_react18.default.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), canEdit ? /* @__PURE__ */ import_react18.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react18.default.createElement(
|
|
9480
|
+
"button",
|
|
9433
9481
|
{
|
|
9434
|
-
|
|
9435
|
-
|
|
9436
|
-
|
|
9482
|
+
type: "button",
|
|
9483
|
+
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
9484
|
+
className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
|
|
9485
|
+
},
|
|
9486
|
+
/* @__PURE__ */ import_react18.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react18.default.createElement(import_fi16.FiUser, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ import_react18.default.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
|
|
9487
|
+
/* @__PURE__ */ import_react18.default.createElement(import_fi16.FiChevronDown, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
|
|
9488
|
+
), isAssigneeDropdownOpen && /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, /* @__PURE__ */ import_react18.default.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
|
|
9489
|
+
setIsAssigneeDropdownOpen(false);
|
|
9490
|
+
setAssigneeSearchQuery("");
|
|
9491
|
+
} }), /* @__PURE__ */ import_react18.default.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ import_react18.default.createElement(import_fi16.FiSearch, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ import_react18.default.createElement(
|
|
9492
|
+
"input",
|
|
9493
|
+
{
|
|
9494
|
+
type: "text",
|
|
9495
|
+
autoFocus: true,
|
|
9496
|
+
placeholder: "Buscar membro...",
|
|
9497
|
+
value: assigneeSearchQuery,
|
|
9498
|
+
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
9499
|
+
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
9500
|
+
onClick: (e) => e.stopPropagation()
|
|
9501
|
+
}
|
|
9502
|
+
)), /* @__PURE__ */ import_react18.default.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ import_react18.default.createElement(
|
|
9503
|
+
"li",
|
|
9504
|
+
{
|
|
9505
|
+
onClick: () => {
|
|
9506
|
+
setAssigneeId("");
|
|
9507
|
+
setHasUnsavedChanges(true);
|
|
9508
|
+
setIsAssigneeDropdownOpen(false);
|
|
9509
|
+
setAssigneeSearchQuery("");
|
|
9510
|
+
},
|
|
9511
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${!assigneeId ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
9512
|
+
},
|
|
9513
|
+
"Nenhum"
|
|
9514
|
+
), isAssigneeUndefined && /* @__PURE__ */ import_react18.default.createElement(
|
|
9515
|
+
"li",
|
|
9516
|
+
{
|
|
9517
|
+
onClick: () => {
|
|
9518
|
+
setIsAssigneeDropdownOpen(false);
|
|
9519
|
+
setAssigneeSearchQuery("");
|
|
9520
|
+
},
|
|
9521
|
+
className: "px-3 py-2.5 text-sm cursor-pointer bg-red-500/10 text-red-300 flex items-center gap-2"
|
|
9522
|
+
},
|
|
9523
|
+
"Undefined (Removido)"
|
|
9524
|
+
), viewMembers.filter((member) => {
|
|
9525
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
9526
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
9527
|
+
}).map((member) => /* @__PURE__ */ import_react18.default.createElement(
|
|
9528
|
+
"li",
|
|
9529
|
+
{
|
|
9530
|
+
key: member.id,
|
|
9531
|
+
onClick: () => {
|
|
9532
|
+
setAssigneeId(member.id);
|
|
9437
9533
|
setHasUnsavedChanges(true);
|
|
9534
|
+
setIsAssigneeDropdownOpen(false);
|
|
9535
|
+
setAssigneeSearchQuery("");
|
|
9438
9536
|
},
|
|
9439
|
-
className:
|
|
9537
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${assigneeId === member.id ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
9440
9538
|
},
|
|
9441
|
-
|
|
9442
|
-
|
|
9443
|
-
|
|
9444
|
-
|
|
9539
|
+
member.name || member.email || member.id
|
|
9540
|
+
)), viewMembers.filter((member) => {
|
|
9541
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
9542
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
9543
|
+
}).length === 0 && assigneeSearchQuery && /* @__PURE__ */ import_react18.default.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ import_react18.default.createElement("div", { className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 flex items-center gap-2" }, /* @__PURE__ */ import_react18.default.createElement(import_fi16.FiUser, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ import_react18.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react18.default.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ import_react18.default.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ import_react18.default.createElement("span", { key: index, className: `flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border ${t === "quest" ? "bg-sky-500/20 text-sky-200 border-sky-500/30" : "bg-indigo-500/30 text-indigo-100 border-indigo-500/20"}` }, t, canEdit && t !== "quest" && /* @__PURE__ */ import_react18.default.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ import_react18.default.createElement(import_fi16.FiX, { size: 12 })))), canEdit && /* @__PURE__ */ import_react18.default.createElement(
|
|
9445
9544
|
"input",
|
|
9446
9545
|
{
|
|
9447
9546
|
type: "text",
|
package/dist/index.mjs
CHANGED
|
@@ -8347,7 +8347,7 @@ function InSceneVersionForm({
|
|
|
8347
8347
|
|
|
8348
8348
|
// src/components/InSceneQuestForm.jsx
|
|
8349
8349
|
import React15, { useState as useState16, useRef as useRef12 } from "react";
|
|
8350
|
-
import { FiPlus as FiPlus5, FiCheck as FiCheck9, FiEdit2 as FiEdit26, FiTarget, FiX as FiX4, FiChevronDown as FiChevronDown5 } from "react-icons/fi";
|
|
8350
|
+
import { FiPlus as FiPlus5, FiCheck as FiCheck9, FiEdit2 as FiEdit26, FiTarget, FiX as FiX4, FiChevronDown as FiChevronDown5, FiUser, FiSearch as FiSearch4 } from "react-icons/fi";
|
|
8351
8351
|
var QUEST_STATUS_COLORS2 = {
|
|
8352
8352
|
"Backlog": "#64748b",
|
|
8353
8353
|
"In Progress": "#eab308",
|
|
@@ -8373,6 +8373,7 @@ function InSceneQuestForm({
|
|
|
8373
8373
|
// NOVA PROP
|
|
8374
8374
|
viewMembers = []
|
|
8375
8375
|
}) {
|
|
8376
|
+
var _a, _b;
|
|
8376
8377
|
const [name, setName] = useState16("");
|
|
8377
8378
|
const [assigneeId, setAssigneeId] = useState16("");
|
|
8378
8379
|
const [types, setTypes] = useState16(["quest"]);
|
|
@@ -8382,6 +8383,8 @@ function InSceneQuestForm({
|
|
|
8382
8383
|
const [intensity, setIntensity] = useState16(0);
|
|
8383
8384
|
const [description, setDescription] = useState16("");
|
|
8384
8385
|
const [isStatusDropdownOpen, setIsStatusDropdownOpen] = useState16(false);
|
|
8386
|
+
const [isAssigneeDropdownOpen, setIsAssigneeDropdownOpen] = useState16(false);
|
|
8387
|
+
const [assigneeSearchQuery, setAssigneeSearchQuery] = useState16("");
|
|
8385
8388
|
const [customProps, setCustomProps] = useState16([]);
|
|
8386
8389
|
const [isDescriptionModalOpen, setIsDescriptionModalOpen] = useState16(false);
|
|
8387
8390
|
const propsEndRef = useRef12(null);
|
|
@@ -8390,8 +8393,8 @@ function InSceneQuestForm({
|
|
|
8390
8393
|
const newProp = createNewCustomProperty(customProps);
|
|
8391
8394
|
setCustomProps([...customProps, newProp]);
|
|
8392
8395
|
setTimeout(() => {
|
|
8393
|
-
var
|
|
8394
|
-
(
|
|
8396
|
+
var _a2;
|
|
8397
|
+
(_a2 = propsEndRef.current) == null ? void 0 : _a2.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
8395
8398
|
}, 100);
|
|
8396
8399
|
};
|
|
8397
8400
|
const handleRemoveProp = (index) => setCustomProps(customProps.filter((_, i) => i !== index));
|
|
@@ -8509,16 +8512,59 @@ function InSceneQuestForm({
|
|
|
8509
8512
|
},
|
|
8510
8513
|
/* @__PURE__ */ React15.createElement("span", { className: "w-3 h-3 rounded-full", style: { backgroundColor: QUEST_STATUS_COLORS2[s] } }),
|
|
8511
8514
|
s
|
|
8512
|
-
)))))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), /* @__PURE__ */ React15.createElement(
|
|
8513
|
-
"
|
|
8515
|
+
)))))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), /* @__PURE__ */ React15.createElement("div", { className: "relative" }, /* @__PURE__ */ React15.createElement(
|
|
8516
|
+
"button",
|
|
8514
8517
|
{
|
|
8515
|
-
|
|
8516
|
-
|
|
8517
|
-
className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors
|
|
8518
|
+
type: "button",
|
|
8519
|
+
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
8520
|
+
className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
|
|
8518
8521
|
},
|
|
8519
|
-
/* @__PURE__ */ React15.createElement("
|
|
8520
|
-
|
|
8521
|
-
)
|
|
8522
|
+
/* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15.createElement(FiUser, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React15.createElement("span", { className: "text-slate-200 font-medium" }, ((_a = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _a.name) || ((_b = viewMembers.find((m) => m.id === assigneeId)) == null ? void 0 : _b.email) || "Nenhum")),
|
|
8523
|
+
/* @__PURE__ */ React15.createElement(FiChevronDown5, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
|
|
8524
|
+
), isAssigneeDropdownOpen && /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
|
|
8525
|
+
setIsAssigneeDropdownOpen(false);
|
|
8526
|
+
setAssigneeSearchQuery("");
|
|
8527
|
+
} }), /* @__PURE__ */ React15.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React15.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React15.createElement(FiSearch4, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React15.createElement(
|
|
8528
|
+
"input",
|
|
8529
|
+
{
|
|
8530
|
+
type: "text",
|
|
8531
|
+
autoFocus: true,
|
|
8532
|
+
placeholder: "Buscar membro...",
|
|
8533
|
+
value: assigneeSearchQuery,
|
|
8534
|
+
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
8535
|
+
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
8536
|
+
onClick: (e) => e.stopPropagation()
|
|
8537
|
+
}
|
|
8538
|
+
)), /* @__PURE__ */ React15.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React15.createElement(
|
|
8539
|
+
"li",
|
|
8540
|
+
{
|
|
8541
|
+
onClick: () => {
|
|
8542
|
+
setAssigneeId("");
|
|
8543
|
+
setIsAssigneeDropdownOpen(false);
|
|
8544
|
+
setAssigneeSearchQuery("");
|
|
8545
|
+
},
|
|
8546
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${!assigneeId ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
8547
|
+
},
|
|
8548
|
+
"Nenhum"
|
|
8549
|
+
), viewMembers.filter((member) => {
|
|
8550
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
8551
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
8552
|
+
}).map((member) => /* @__PURE__ */ React15.createElement(
|
|
8553
|
+
"li",
|
|
8554
|
+
{
|
|
8555
|
+
key: member.id,
|
|
8556
|
+
onClick: () => {
|
|
8557
|
+
setAssigneeId(member.id);
|
|
8558
|
+
setIsAssigneeDropdownOpen(false);
|
|
8559
|
+
setAssigneeSearchQuery("");
|
|
8560
|
+
},
|
|
8561
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${assigneeId === member.id ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
8562
|
+
},
|
|
8563
|
+
member.name || member.email || member.id
|
|
8564
|
+
)), viewMembers.filter((member) => {
|
|
8565
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
8566
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
8567
|
+
}).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React15.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado")))))), /* @__PURE__ */ React15.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React15.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ React15.createElement("div", { className: "relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 focus-within:ring-2 focus-within:ring-indigo-400/60 transition-all" }, types.map((t, index) => /* @__PURE__ */ React15.createElement("span", { key: index, className: `flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border ${t === "quest" ? "bg-sky-500/20 text-sky-200 border-sky-500/30" : "bg-indigo-500/30 text-indigo-100 border-indigo-500/20"}` }, t, t !== "quest" && /* @__PURE__ */ React15.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React15.createElement(FiX4, { size: 12 })))), /* @__PURE__ */ React15.createElement(
|
|
8522
8568
|
"input",
|
|
8523
8569
|
{
|
|
8524
8570
|
type: "text",
|
|
@@ -9097,7 +9143,7 @@ function NodeDetailsPanel({
|
|
|
9097
9143
|
|
|
9098
9144
|
// src/components/QuestDetailsPanel.jsx
|
|
9099
9145
|
import React17, { useState as useState18, useEffect as useEffect16, useRef as useRef14 } from "react";
|
|
9100
|
-
import { FiPlus as FiPlus7, FiX as FiX6, FiCheck as FiCheck11, FiEdit2 as FiEdit28, FiLoader as FiLoader3, FiBookOpen as FiBookOpen4, FiLink as FiLink6, FiTarget as FiTarget2, FiChevronDown as FiChevronDown6 } from "react-icons/fi";
|
|
9146
|
+
import { FiPlus as FiPlus7, FiX as FiX6, FiCheck as FiCheck11, FiEdit2 as FiEdit28, FiLoader as FiLoader3, FiBookOpen as FiBookOpen4, FiLink as FiLink6, FiTarget as FiTarget2, FiChevronDown as FiChevronDown6, FiUser as FiUser2, FiSearch as FiSearch5 } from "react-icons/fi";
|
|
9101
9147
|
var QUEST_STATUS_COLORS3 = {
|
|
9102
9148
|
"Backlog": "#64748b",
|
|
9103
9149
|
"In Progress": "#eab308",
|
|
@@ -9137,6 +9183,8 @@ function QuestDetailsPanel({
|
|
|
9137
9183
|
const [description, setDescription] = useState18((node == null ? void 0 : node.description) ?? "");
|
|
9138
9184
|
const [intensity, setIntensity] = useState18((node == null ? void 0 : node.intensity) !== void 0 ? node.intensity : 0);
|
|
9139
9185
|
const [isStatusDropdownOpen, setIsStatusDropdownOpen] = useState18(false);
|
|
9186
|
+
const [isAssigneeDropdownOpen, setIsAssigneeDropdownOpen] = useState18(false);
|
|
9187
|
+
const [assigneeSearchQuery, setAssigneeSearchQuery] = useState18("");
|
|
9140
9188
|
const [customProps, setCustomProps] = useState18(() => extractCustomPropsFromNode(node || {}));
|
|
9141
9189
|
const [showTypeSuggestions, setShowTypeSuggestions] = useState18(false);
|
|
9142
9190
|
const [filteredTypes, setFilteredTypes] = useState18([]);
|
|
@@ -9420,20 +9468,71 @@ function QuestDetailsPanel({
|
|
|
9420
9468
|
},
|
|
9421
9469
|
/* @__PURE__ */ React17.createElement("span", { className: "w-3 h-3 rounded-full", style: { backgroundColor: QUEST_STATUS_COLORS3[s] } }),
|
|
9422
9470
|
s
|
|
9423
|
-
)))))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), canEdit ? /* @__PURE__ */ React17.createElement(
|
|
9424
|
-
"
|
|
9471
|
+
)))))), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5 relative mt-2" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Assignee (Respons\xE1vel)"), canEdit ? /* @__PURE__ */ React17.createElement("div", { className: "relative" }, /* @__PURE__ */ React17.createElement(
|
|
9472
|
+
"button",
|
|
9425
9473
|
{
|
|
9426
|
-
|
|
9427
|
-
|
|
9428
|
-
|
|
9474
|
+
type: "button",
|
|
9475
|
+
onClick: () => setIsAssigneeDropdownOpen(!isAssigneeDropdownOpen),
|
|
9476
|
+
className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 hover:border-white/20 focus:outline-none focus:ring-2 focus:ring-indigo-400/60 transition-colors flex items-center justify-between"
|
|
9477
|
+
},
|
|
9478
|
+
/* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(FiUser2, { className: "text-slate-400", size: 14 }), /* @__PURE__ */ React17.createElement("span", { className: "text-slate-200 font-medium" }, isAssigneeUndefined ? "Undefined" : (assigneeMember == null ? void 0 : assigneeMember.name) || (assigneeMember == null ? void 0 : assigneeMember.email) || "Nenhum")),
|
|
9479
|
+
/* @__PURE__ */ React17.createElement(FiChevronDown6, { className: `text-slate-400 transition-transform duration-200 ${isAssigneeDropdownOpen ? "rotate-180" : ""}` })
|
|
9480
|
+
), isAssigneeDropdownOpen && /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement("div", { className: "fixed inset-0 z-40", onClick: () => {
|
|
9481
|
+
setIsAssigneeDropdownOpen(false);
|
|
9482
|
+
setAssigneeSearchQuery("");
|
|
9483
|
+
} }), /* @__PURE__ */ React17.createElement("div", { className: "absolute top-full left-0 mt-1.5 w-full bg-slate-900 border border-white/10 rounded-lg shadow-[0_8px_30px_rgba(0,0,0,0.5)] z-50 overflow-hidden flex flex-col" }, /* @__PURE__ */ React17.createElement("div", { className: "p-2 border-b border-white/5 bg-white/5 flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(FiSearch5, { className: "text-slate-500", size: 14 }), /* @__PURE__ */ React17.createElement(
|
|
9484
|
+
"input",
|
|
9485
|
+
{
|
|
9486
|
+
type: "text",
|
|
9487
|
+
autoFocus: true,
|
|
9488
|
+
placeholder: "Buscar membro...",
|
|
9489
|
+
value: assigneeSearchQuery,
|
|
9490
|
+
onChange: (e) => setAssigneeSearchQuery(e.target.value),
|
|
9491
|
+
className: "bg-transparent border-none outline-none text-xs text-white placeholder-slate-500 w-full",
|
|
9492
|
+
onClick: (e) => e.stopPropagation()
|
|
9493
|
+
}
|
|
9494
|
+
)), /* @__PURE__ */ React17.createElement("ul", { className: "max-h-48 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ React17.createElement(
|
|
9495
|
+
"li",
|
|
9496
|
+
{
|
|
9497
|
+
onClick: () => {
|
|
9498
|
+
setAssigneeId("");
|
|
9499
|
+
setHasUnsavedChanges(true);
|
|
9500
|
+
setIsAssigneeDropdownOpen(false);
|
|
9501
|
+
setAssigneeSearchQuery("");
|
|
9502
|
+
},
|
|
9503
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${!assigneeId ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
9504
|
+
},
|
|
9505
|
+
"Nenhum"
|
|
9506
|
+
), isAssigneeUndefined && /* @__PURE__ */ React17.createElement(
|
|
9507
|
+
"li",
|
|
9508
|
+
{
|
|
9509
|
+
onClick: () => {
|
|
9510
|
+
setIsAssigneeDropdownOpen(false);
|
|
9511
|
+
setAssigneeSearchQuery("");
|
|
9512
|
+
},
|
|
9513
|
+
className: "px-3 py-2.5 text-sm cursor-pointer bg-red-500/10 text-red-300 flex items-center gap-2"
|
|
9514
|
+
},
|
|
9515
|
+
"Undefined (Removido)"
|
|
9516
|
+
), viewMembers.filter((member) => {
|
|
9517
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
9518
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
9519
|
+
}).map((member) => /* @__PURE__ */ React17.createElement(
|
|
9520
|
+
"li",
|
|
9521
|
+
{
|
|
9522
|
+
key: member.id,
|
|
9523
|
+
onClick: () => {
|
|
9524
|
+
setAssigneeId(member.id);
|
|
9429
9525
|
setHasUnsavedChanges(true);
|
|
9526
|
+
setIsAssigneeDropdownOpen(false);
|
|
9527
|
+
setAssigneeSearchQuery("");
|
|
9430
9528
|
},
|
|
9431
|
-
className:
|
|
9529
|
+
className: `px-3 py-2.5 text-sm cursor-pointer transition-colors flex items-center gap-2 ${assigneeId === member.id ? "bg-indigo-500/20 text-white" : "text-slate-300 hover:bg-white/5 hover:text-white"}`
|
|
9432
9530
|
},
|
|
9433
|
-
|
|
9434
|
-
|
|
9435
|
-
|
|
9436
|
-
|
|
9531
|
+
member.name || member.email || member.id
|
|
9532
|
+
)), viewMembers.filter((member) => {
|
|
9533
|
+
const search = assigneeSearchQuery.toLowerCase();
|
|
9534
|
+
return (member.name || "").toLowerCase().includes(search) || (member.email || "").toLowerCase().includes(search);
|
|
9535
|
+
}).length === 0 && assigneeSearchQuery && /* @__PURE__ */ React17.createElement("li", { className: "px-3 py-4 text-xs text-slate-500 text-center italic" }, "Nenhum membro encontrado"))))) : /* @__PURE__ */ React17.createElement("div", { className: "w-full bg-slate-800/70 p-2.5 text-sm rounded-lg border border-white/10 text-slate-400 flex items-center gap-2" }, /* @__PURE__ */ React17.createElement(FiUser2, { className: "opacity-50", size: 14 }), assigneeId ? assigneeMember ? assigneeMember.name || assigneeMember.email : "Undefined" : "Nenhum")), /* @__PURE__ */ React17.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React17.createElement("label", { className: "text-xs text-slate-300" }, "Tipos Adicionais"), /* @__PURE__ */ React17.createElement("div", { className: `relative w-full bg-slate-800/70 p-1.5 min-h-[42px] flex flex-wrap gap-1.5 rounded-lg border border-white/10 ${canEdit ? "focus-within:ring-2 focus-within:ring-indigo-400/60" : ""} transition-all` }, types.map((t, index) => /* @__PURE__ */ React17.createElement("span", { key: index, className: `flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-medium border ${t === "quest" ? "bg-sky-500/20 text-sky-200 border-sky-500/30" : "bg-indigo-500/30 text-indigo-100 border-indigo-500/20"}` }, t, canEdit && t !== "quest" && /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: () => handleRemoveType(index), className: "hover:text-white transition-colors" }, /* @__PURE__ */ React17.createElement(FiX6, { size: 12 })))), canEdit && /* @__PURE__ */ React17.createElement(
|
|
9437
9536
|
"input",
|
|
9438
9537
|
{
|
|
9439
9538
|
type: "text",
|
|
@@ -10311,7 +10410,7 @@ function AncestryLinkDetailsPanel({ data, onClose, onOpenImageViewer, onOpenRefe
|
|
|
10311
10410
|
// src/components/AncestryBoard.jsx
|
|
10312
10411
|
import React24, { useState as useState24, useMemo as useMemo11, useEffect as useEffect21, useRef as useRef18 } from "react";
|
|
10313
10412
|
import {
|
|
10314
|
-
FiSearch as
|
|
10413
|
+
FiSearch as FiSearch6,
|
|
10315
10414
|
FiLayers as FiLayers6,
|
|
10316
10415
|
FiCornerUpRight as FiCornerUpRight4,
|
|
10317
10416
|
FiPlay,
|
|
@@ -10436,7 +10535,7 @@ var GroupItem = ({
|
|
|
10436
10535
|
`,
|
|
10437
10536
|
title: "Adicionar Ancestralidade a este grupo"
|
|
10438
10537
|
},
|
|
10439
|
-
isPickingForThisGroup ? /* @__PURE__ */ React24.createElement(FiCheckCircle, { size: 12 }) : /* @__PURE__ */ React24.createElement(
|
|
10538
|
+
isPickingForThisGroup ? /* @__PURE__ */ React24.createElement(FiCheckCircle, { size: 12 }) : /* @__PURE__ */ React24.createElement(FiSearch6, { size: 12 }),
|
|
10440
10539
|
isPickingForThisGroup ? "Selecionando..." : "Adicionar"
|
|
10441
10540
|
), /* @__PURE__ */ React24.createElement(
|
|
10442
10541
|
"button",
|
|
@@ -10771,7 +10870,7 @@ function AncestryBoard({
|
|
|
10771
10870
|
`
|
|
10772
10871
|
},
|
|
10773
10872
|
/* @__PURE__ */ React24.createElement("div", { className: "p-3 border-b border-white/5 bg-slate-900/50" }, /* @__PURE__ */ React24.createElement("div", { className: "relative group" }, /* @__PURE__ */ React24.createElement(
|
|
10774
|
-
|
|
10873
|
+
FiSearch6,
|
|
10775
10874
|
{
|
|
10776
10875
|
className: `absolute left-3 top-1/2 -translate-y-1/2 transition-colors ${pickingGroupId ? "text-indigo-400" : "text-slate-500 group-focus-within:text-indigo-400"}`
|
|
10777
10876
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lv-x-software-house/x_view",
|
|
3
|
-
"version": "1.2.5-dev.
|
|
3
|
+
"version": "1.2.5-dev.19",
|
|
4
4
|
"description": "Pacote privado contendo os componentes e lógica de renderização 3D do X View.",
|
|
5
5
|
"author": "iv.x - Engenharia de Software - ivxsoftwarehouse@gmail.com",
|
|
6
6
|
"license": "UNLICENSED",
|