@ynput/ayon-frontend-shared 0.4.2 → 0.4.3
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/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +247 -243
- package/dist/_virtual/index.cjs22.js +1 -1
- package/dist/_virtual/index.cjs23.js +1 -1
- package/dist/_virtual/index.cjs24.js +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.es22.js +3 -3
- package/dist/_virtual/index.es23.js +5 -5
- package/dist/_virtual/index.es24.js +5 -5
- package/dist/_virtual/index.es4.js +2 -5
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es5.js +5 -2
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +2 -2
- package/dist/_virtual/index.es8.js +2 -2
- package/dist/api.cjs.js +1 -1
- package/dist/api.es.js +446 -445
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +20 -9
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
- package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
- package/dist/shared/node_modules/react-is/index.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +85 -28
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +129 -68
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +36 -36
- package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
- package/dist/shared/src/components/Chips/Chips.cjs.js +12 -6
- package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
- package/dist/shared/src/components/Chips/Chips.es.js +69 -62
- package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +32 -12
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +33 -33
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +39 -8
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +32 -31
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +24 -18
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +26 -25
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js +14 -2
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +125 -126
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +6 -0
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +14 -8
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +200 -178
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +14 -3
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +19 -19
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +5 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +100 -97
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +9 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +47 -31
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +28 -9
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +58 -39
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +53 -25
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +150 -103
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +9 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +66 -57
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +9 -8
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +20 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +86 -67
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js +6 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js +11 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js.map +1 -0
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js +67 -62
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +47 -46
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.es.js +1 -1
- package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
- package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js +1 -1
- package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
- package/dist/shared/src/util/buildHierarchicalTableRows.es.js +36 -33
- package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
- package/dist/types/api/generated/graphql.d.ts +71 -0
- package/dist/types/api/queries/activities/getActivities.d.ts +28 -0
- package/dist/types/api/queries/entities/getEntity.d.ts +14 -0
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +14 -0
- package/dist/types/api/queries/entities/updateEntity.d.ts +14 -0
- package/dist/types/api/queries/entityLists/getLists.d.ts +14 -0
- package/dist/types/api/queries/overview/getOverview.d.ts +14 -0
- package/dist/types/api/queries/project/getProject.d.ts +14 -0
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +14 -0
- package/dist/types/api/queries/users/getUsers.d.ts +14 -0
- package/dist/types/api/queries/versions/getVersionsProducts.d.ts +28 -0
- package/dist/types/components/SubtasksManager/SubtasksManagerWrapper.d.ts +4 -1
- package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/constants.d.ts +3 -0
- package/dist/types/containers/ProjectTreeTable/widgets/SubtasksWidget.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/widgets/wrapMode.d.ts +2 -0
- package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
- package/dist/types/util/buildHierarchicalTableRows.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1,35 +1,38 @@
|
|
|
1
1
|
import { j as o } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { useRef as
|
|
3
|
-
import
|
|
4
|
-
import { BooleanWidget as
|
|
5
|
-
import { CollapsedWidget as
|
|
6
|
-
import { DateWidget as
|
|
7
|
-
import { EnumWidget as
|
|
8
|
-
import { TextWidget as
|
|
9
|
-
import { isLinkEditable as
|
|
10
|
-
import { SubtasksWidget as
|
|
11
|
-
import { CommentsWidget as
|
|
12
|
-
import { useCellEditing as
|
|
13
|
-
import { getCellId as
|
|
14
|
-
import
|
|
15
|
-
import { useSelectionCellsContext as
|
|
16
|
-
import { useProjectContext as
|
|
17
|
-
import { EnumCellValue as
|
|
18
|
-
import { NameWidget as
|
|
2
|
+
import { useRef as $, useMemo as H } from "react";
|
|
3
|
+
import J from "styled-components";
|
|
4
|
+
import { BooleanWidget as K } from "./BooleanWidget.es.js";
|
|
5
|
+
import { CollapsedWidget as Q } from "./CollapsedWidget.es.js";
|
|
6
|
+
import { DateWidget as U } from "./DateWidget.es.js";
|
|
7
|
+
import { EnumWidget as X } from "./EnumWidget.es.js";
|
|
8
|
+
import { TextWidget as L } from "./TextWidget.es.js";
|
|
9
|
+
import { isLinkEditable as Z, LinksWidget as ee } from "./LinksWidget.es.js";
|
|
10
|
+
import { SubtasksWidget as te } from "./SubtasksWidget.es.js";
|
|
11
|
+
import { CommentsWidget as ie } from "./CommentsWidget.es.js";
|
|
12
|
+
import { useCellEditing as se } from "../context/CellEditingContext.es.js";
|
|
13
|
+
import { getCellId as M } from "../utils/cellUtils.es.js";
|
|
14
|
+
import oe from "clsx";
|
|
15
|
+
import { useSelectionCellsContext as re } from "../context/SelectionCellsContext.es.js";
|
|
16
|
+
import { useProjectContext as ne } from "../../../context/ProjectContext.es.js";
|
|
17
|
+
import { EnumCellValue as le } from "./EnumCellValue.es.js";
|
|
18
|
+
import { NameWidget as ce } from "./NameWidget.es.js";
|
|
19
|
+
import { CELL_PADDING_Y as de } from "../constants.es.js";
|
|
19
20
|
import "@ynput/ayon-react-components";
|
|
20
21
|
import "../../../components/SearchFilter/filterDates.es.js";
|
|
21
22
|
import "date-fns";
|
|
22
23
|
import "short-uuid";
|
|
23
24
|
import "../utils/columnIds.es.js";
|
|
24
25
|
import "../buildTreeTableColumns.es.js";
|
|
25
|
-
import { READ_ONLY as
|
|
26
|
-
const
|
|
26
|
+
import { READ_ONLY as ae } from "../utils/restrictedEntity.es.js";
|
|
27
|
+
const me = J.div`
|
|
27
28
|
position: absolute;
|
|
28
29
|
inset: 0;
|
|
29
|
-
padding:
|
|
30
|
+
padding: ${de}px 8px;
|
|
30
31
|
display: flex;
|
|
31
32
|
align-items: center;
|
|
32
33
|
overflow: hidden;
|
|
34
|
+
container-type: size;
|
|
35
|
+
container-name: cell;
|
|
33
36
|
|
|
34
37
|
&:has(.markdown),
|
|
35
38
|
&:has(.comments-list) {
|
|
@@ -54,55 +57,55 @@ const at = K.div`
|
|
|
54
57
|
&.entity-widget {
|
|
55
58
|
cursor: pointer;
|
|
56
59
|
}
|
|
57
|
-
`,
|
|
60
|
+
`, Pe = "edit-trigger", qe = ({
|
|
58
61
|
rowId: E,
|
|
59
|
-
columnId:
|
|
62
|
+
columnId: c,
|
|
60
63
|
value: i,
|
|
61
64
|
valueData: p,
|
|
62
65
|
attributeData: C,
|
|
63
66
|
options: u = [],
|
|
64
67
|
isCollapsed: j,
|
|
65
68
|
isInherited: f,
|
|
66
|
-
isPlaceholder:
|
|
67
|
-
isReadOnly:
|
|
68
|
-
enableCustomValues:
|
|
69
|
-
isLinksLoading:
|
|
70
|
-
folderId:
|
|
71
|
-
midnightExclusiveFields:
|
|
72
|
-
tooltip:
|
|
69
|
+
isPlaceholder: N,
|
|
70
|
+
isReadOnly: d,
|
|
71
|
+
enableCustomValues: S,
|
|
72
|
+
isLinksLoading: V,
|
|
73
|
+
folderId: D,
|
|
74
|
+
midnightExclusiveFields: _,
|
|
75
|
+
tooltip: R,
|
|
73
76
|
onChange: w,
|
|
74
77
|
entityType: v,
|
|
75
78
|
pt: m,
|
|
76
79
|
...h
|
|
77
80
|
}) => {
|
|
78
|
-
const b =
|
|
79
|
-
const
|
|
80
|
-
if (
|
|
81
|
+
const b = $(null), s = C?.type, { projectName: k } = ne(), { isEditing: G, setEditingCellId: r, getEditingDraft: y, setEditingDraft: T } = se(), { isCellFocused: P, gridMap: W, selectCell: q, focusCell: F } = re(), n = M(E, c), A = _?.includes(c) ?? !1, g = G(n), I = P(n), Y = () => {
|
|
82
|
+
const e = W.rowIdToIndex.get(E);
|
|
83
|
+
if (e === void 0) {
|
|
81
84
|
r(null);
|
|
82
85
|
return;
|
|
83
86
|
}
|
|
84
|
-
const l = W.indexToRowId.get(
|
|
87
|
+
const l = W.indexToRowId.get(e + 1);
|
|
85
88
|
if (l) {
|
|
86
|
-
const
|
|
87
|
-
|
|
89
|
+
const t = M(l, c);
|
|
90
|
+
q(t, !1, !1), F(t), r(t);
|
|
88
91
|
} else
|
|
89
92
|
r(null);
|
|
90
|
-
},
|
|
91
|
-
if (
|
|
93
|
+
}, z = (e, l) => {
|
|
94
|
+
if (d) {
|
|
92
95
|
r(null);
|
|
93
96
|
return;
|
|
94
97
|
}
|
|
95
|
-
l === "Enter" ? (
|
|
96
|
-
},
|
|
98
|
+
l === "Enter" ? (Y(), w?.(e, l)) : l === "Click" && e != i ? (r(null), w?.(e, l)) : r(null);
|
|
99
|
+
}, B = () => {
|
|
97
100
|
r(null);
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
},
|
|
101
|
-
const
|
|
102
|
-
onChange:
|
|
103
|
-
onCancelEdit:
|
|
101
|
+
const e = b.current?.closest("td");
|
|
102
|
+
e && e.focus();
|
|
103
|
+
}, O = H(() => {
|
|
104
|
+
const e = {
|
|
105
|
+
onChange: z,
|
|
106
|
+
onCancelEdit: B,
|
|
104
107
|
isEditing: g,
|
|
105
|
-
isReadOnly:
|
|
108
|
+
isReadOnly: d
|
|
106
109
|
}, l = ["string", "integer", "float"];
|
|
107
110
|
switch (!0) {
|
|
108
111
|
// this is showing the collapsed widget (dot)
|
|
@@ -110,151 +113,151 @@ const at = K.div`
|
|
|
110
113
|
const a = (s?.includes("list") ? u.find(
|
|
111
114
|
(x) => Array.isArray(i) ? i.includes(x.value) : i === x.value
|
|
112
115
|
) : void 0)?.color;
|
|
113
|
-
return /* @__PURE__ */ o.jsx(
|
|
116
|
+
return /* @__PURE__ */ o.jsx(Q, { color: a });
|
|
114
117
|
}
|
|
115
118
|
case s === "name":
|
|
116
119
|
return /* @__PURE__ */ o.jsx(
|
|
117
|
-
|
|
120
|
+
ce,
|
|
118
121
|
{
|
|
119
122
|
value: i,
|
|
120
123
|
valueData: p,
|
|
121
124
|
cellId: n,
|
|
122
125
|
entityType: v || "",
|
|
123
|
-
...
|
|
126
|
+
...e
|
|
124
127
|
}
|
|
125
128
|
);
|
|
126
129
|
case s === "links": {
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
130
|
+
const t = p, a = Z(
|
|
131
|
+
t?.direction || "out",
|
|
132
|
+
t?.link.linkType || "",
|
|
133
|
+
t?.entityType || ""
|
|
131
134
|
);
|
|
132
|
-
return
|
|
133
|
-
|
|
135
|
+
return d = !a, /* @__PURE__ */ o.jsx(
|
|
136
|
+
ee,
|
|
134
137
|
{
|
|
135
|
-
value:
|
|
138
|
+
value: t,
|
|
136
139
|
cellId: n,
|
|
137
140
|
projectName: k,
|
|
138
141
|
disabled: !a,
|
|
139
|
-
folderId:
|
|
140
|
-
isLoading:
|
|
141
|
-
...
|
|
142
|
+
folderId: D,
|
|
143
|
+
isLoading: V,
|
|
144
|
+
...e
|
|
142
145
|
}
|
|
143
146
|
);
|
|
144
147
|
}
|
|
145
148
|
case s === "subtasks": {
|
|
146
|
-
const
|
|
149
|
+
const t = p;
|
|
147
150
|
return /* @__PURE__ */ o.jsx(
|
|
148
|
-
|
|
151
|
+
te,
|
|
149
152
|
{
|
|
150
|
-
value:
|
|
153
|
+
value: t,
|
|
151
154
|
cellId: n,
|
|
152
155
|
projectName: k,
|
|
153
|
-
disabled:
|
|
154
|
-
...
|
|
156
|
+
disabled: d,
|
|
157
|
+
...e
|
|
155
158
|
}
|
|
156
159
|
);
|
|
157
160
|
}
|
|
158
161
|
case s === "comments":
|
|
159
|
-
return /* @__PURE__ */ o.jsx(
|
|
162
|
+
return /* @__PURE__ */ o.jsx(ie, { value: p, ...e });
|
|
160
163
|
case !!u.length: {
|
|
161
|
-
const
|
|
162
|
-
if (
|
|
163
|
-
const a = u.filter((x) =>
|
|
164
|
-
return
|
|
165
|
-
|
|
164
|
+
const t = Array.isArray(i) ? i : [i];
|
|
165
|
+
if (d) {
|
|
166
|
+
const a = u.filter((x) => t.includes(x.value));
|
|
167
|
+
return t.length && !a.length ? /* @__PURE__ */ o.jsx(
|
|
168
|
+
L,
|
|
166
169
|
{
|
|
167
|
-
value:
|
|
170
|
+
value: t.join(", "),
|
|
168
171
|
isInherited: f,
|
|
169
|
-
columnId:
|
|
172
|
+
columnId: c,
|
|
170
173
|
cellId: n,
|
|
171
174
|
isMarkdown: C?.widget === "markdown",
|
|
172
175
|
onRequestEdit: r,
|
|
173
176
|
getDraftValue: y,
|
|
174
177
|
setDraftValue: T,
|
|
175
|
-
...
|
|
178
|
+
...e,
|
|
176
179
|
...m?.text
|
|
177
180
|
}
|
|
178
181
|
) : /* @__PURE__ */ o.jsx(
|
|
179
|
-
|
|
182
|
+
le,
|
|
180
183
|
{
|
|
181
184
|
selectedOptions: a,
|
|
182
185
|
isReadOnly: !0,
|
|
183
|
-
hasMultipleValues:
|
|
186
|
+
hasMultipleValues: t.length > 1,
|
|
184
187
|
isMultiSelect: s?.includes("list"),
|
|
185
188
|
...m?.enum?.pt?.template
|
|
186
189
|
}
|
|
187
190
|
);
|
|
188
191
|
}
|
|
189
192
|
return /* @__PURE__ */ o.jsx(
|
|
190
|
-
|
|
193
|
+
X,
|
|
191
194
|
{
|
|
192
|
-
value:
|
|
195
|
+
value: t,
|
|
193
196
|
options: u,
|
|
194
197
|
type: s,
|
|
195
198
|
onOpen: () => r(n),
|
|
196
|
-
enableCustomValues:
|
|
197
|
-
...
|
|
199
|
+
enableCustomValues: S,
|
|
200
|
+
...e,
|
|
198
201
|
...m?.enum
|
|
199
202
|
}
|
|
200
203
|
);
|
|
201
204
|
}
|
|
202
205
|
case l.includes(s):
|
|
203
206
|
return /* @__PURE__ */ o.jsx(
|
|
204
|
-
|
|
207
|
+
L,
|
|
205
208
|
{
|
|
206
209
|
value: i,
|
|
207
210
|
isInherited: f,
|
|
208
|
-
columnId:
|
|
211
|
+
columnId: c,
|
|
209
212
|
cellId: n,
|
|
210
213
|
isMarkdown: C?.widget === "markdown" || // description SHOULD be default markdown, but lets have this here just in case
|
|
211
|
-
|
|
214
|
+
c === "attrib_description" || c === "description",
|
|
212
215
|
type: s,
|
|
213
216
|
onRequestEdit: r,
|
|
214
217
|
getDraftValue: y,
|
|
215
218
|
setDraftValue: T,
|
|
216
|
-
...
|
|
219
|
+
...e,
|
|
217
220
|
...m?.text
|
|
218
221
|
}
|
|
219
222
|
);
|
|
220
223
|
case s === "datetime":
|
|
221
224
|
return /* @__PURE__ */ o.jsx(
|
|
222
|
-
|
|
225
|
+
U,
|
|
223
226
|
{
|
|
224
227
|
value: i || void 0,
|
|
225
228
|
isInherited: f,
|
|
226
|
-
isMidnightExclusive:
|
|
227
|
-
...
|
|
229
|
+
isMidnightExclusive: A,
|
|
230
|
+
...e,
|
|
228
231
|
...m?.date
|
|
229
232
|
}
|
|
230
233
|
);
|
|
231
234
|
case s === "boolean":
|
|
232
|
-
return /* @__PURE__ */ o.jsx(
|
|
233
|
-
case
|
|
235
|
+
return /* @__PURE__ */ o.jsx(K, { value: i, ...e, ...m?.boolean });
|
|
236
|
+
case N:
|
|
234
237
|
return null;
|
|
235
238
|
default:
|
|
236
239
|
return null;
|
|
237
240
|
}
|
|
238
|
-
}, [n, i, s, g, u, j,
|
|
241
|
+
}, [n, i, s, g, u, j, A]);
|
|
239
242
|
return /* @__PURE__ */ o.jsx(
|
|
240
|
-
|
|
243
|
+
me,
|
|
241
244
|
{
|
|
242
245
|
...h,
|
|
243
|
-
className:
|
|
246
|
+
className: oe(h.className, {
|
|
244
247
|
inherited: f && !g,
|
|
245
|
-
[
|
|
246
|
-
editable: !
|
|
248
|
+
[ae]: d,
|
|
249
|
+
editable: !d
|
|
247
250
|
}),
|
|
248
251
|
ref: b,
|
|
249
252
|
id: n,
|
|
250
|
-
"data-tooltip":
|
|
253
|
+
"data-tooltip": R || (f && !g && I ? "Inherited" : void 0),
|
|
251
254
|
"data-tooltip-delay": 200,
|
|
252
|
-
children:
|
|
255
|
+
children: O
|
|
253
256
|
}
|
|
254
257
|
);
|
|
255
258
|
};
|
|
256
259
|
export {
|
|
257
|
-
|
|
258
|
-
|
|
260
|
+
qe as CellWidget,
|
|
261
|
+
Pe as EDIT_TRIGGER_CLASS
|
|
259
262
|
};
|
|
260
263
|
//# sourceMappingURL=CellWidget.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/CellWidget.tsx"],"sourcesContent":["import { FC, useMemo, useRef } from 'react'\nimport styled from 'styled-components'\n\n// Widgets\nimport { BooleanWidget, BooleanWidgetProps } from './BooleanWidget'\nimport { CollapsedWidget } from './CollapsedWidget'\nimport { DateWidget, DateWidgetProps } from './DateWidget'\nimport { EnumWidget, EnumWidgetProps } from './EnumWidget'\nimport { TextWidget, TextWidgetProps, TextWidgetType } from './TextWidget'\nimport { isLinkEditable, LinksWidget, LinkWidgetData } from './LinksWidget'\nimport { SubtasksWidget, SubtasksWidgetData } from './SubtasksWidget'\nimport { CommentsWidget } from './CommentsWidget'\n\n// Contexts\nimport { useCellEditing } from '../context/CellEditingContext'\n\n// Utils\nimport { getCellId } from '../utils/cellUtils'\nimport clsx from 'clsx'\nimport { useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { useProjectContext } from '@shared/context/ProjectContext'\nimport { EnumCellValue } from './EnumCellValue'\nimport { NameWidget } from '@shared/containers/ProjectTreeTable/widgets/NameWidget'\nimport type { NameWidgetData } from '@shared/components/RenameForm/RenameForm'\nimport { READ_ONLY } from '../utils'\nimport type { AttributeData, EnumItem, EntityComment } from '@shared/api'\n\nconst Cell = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px 8px;\n display: flex;\n align-items: center;\n overflow: hidden;\n\n &:has(.markdown),\n &:has(.comments-list) {\n align-items: flex-start;\n }\n\n &:focus-visible {\n outline: none;\n }\n\n &.inherited {\n opacity: 0.6;\n font-style: italic;\n }\n\n &.loading {\n inset: 4px;\n border-radius: 4px;\n opacity: 1;\n }\n\n &.entity-widget {\n cursor: pointer;\n }\n`\n\n// use this class to trigger the editing mode on a single click\nexport const EDIT_TRIGGER_CLASS = 'edit-trigger'\n\ntype WidgetAttributeData = {\n type: AttributeData['type'] | 'links' | 'name' | 'subtasks' | 'comments'\n widget?: AttributeData['widget']\n}\n\nexport type CellValue = string | number | boolean\nexport type CellValueData = Record<string, any>\n\ninterface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n rowId: string\n columnId: string\n value: CellValue | CellValue[]\n valueData?: CellValueData | CellValueData[] // extra data for the value\n attributeData?: WidgetAttributeData\n options?: EnumItem[]\n isCollapsed?: boolean\n isInherited?: boolean\n isPlaceholder?: boolean\n isFocused?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n isLinksLoading?: boolean\n folderId?: string | null\n midnightExclusiveFields?: string[]\n tooltip?: string\n onChange?: (value: CellValue | CellValue[], key?: 'Enter' | 'Click' | 'Escape') => void\n // options passthrough props\n pt?: {\n enum?: Partial<EnumWidgetProps>\n text?: Partial<TextWidgetProps>\n date?: Partial<DateWidgetProps>\n boolean?: Partial<BooleanWidgetProps>\n }\n entityType?: string\n}\n\nexport interface WidgetBaseProps {\n isEditing?: boolean\n isReadOnly?: boolean\n onChange: Required<EditorCellProps>['onChange']\n onCancelEdit?: () => void\n}\n\nexport const CellWidget: FC<EditorCellProps> = ({\n rowId,\n columnId,\n value,\n valueData,\n attributeData,\n options = [],\n isCollapsed,\n isInherited,\n isPlaceholder,\n isReadOnly,\n enableCustomValues,\n isLinksLoading,\n folderId,\n midnightExclusiveFields,\n tooltip,\n onChange,\n entityType,\n pt,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const type = attributeData?.type\n\n const { projectName } = useProjectContext()\n const { isEditing, setEditingCellId, getEditingDraft, setEditingDraft } = useCellEditing()\n const { isCellFocused, gridMap, selectCell, focusCell } = useSelectionCellsContext()\n const cellId = getCellId(rowId, columnId)\n const isMidnightExclusive = midnightExclusiveFields?.includes(columnId) ?? false\n\n const isCurrentCellEditing = isEditing(cellId)\n const isCurrentCellFocused = isCellFocused(cellId)\n\n const moveToNextRow = () => {\n const rowIndex = gridMap.rowIdToIndex.get(rowId)\n if (rowIndex === undefined) {\n setEditingCellId(null)\n return\n }\n const newRowId = gridMap.indexToRowId.get(rowIndex + 1)\n if (newRowId) {\n const newCellId = getCellId(newRowId, columnId)\n selectCell(newCellId, false, false)\n focusCell(newCellId)\n setEditingCellId(newCellId)\n } else {\n setEditingCellId(null)\n }\n }\n\n const handleOnChange: WidgetBaseProps['onChange'] = (newValue, key) => {\n if (isReadOnly) {\n setEditingCellId(null)\n return\n }\n if (key === 'Enter') {\n // Move to next row first (sets new editing cell), then save value.\n // This prevents the dialog from blinking between rows.\n moveToNextRow()\n onChange?.(newValue, key)\n } else if (key === 'Click' && newValue != value) {\n setEditingCellId(null)\n onChange?.(newValue, key)\n } else {\n setEditingCellId(null)\n }\n }\n\n const handleCancel = () => {\n setEditingCellId(null)\n // ensure the browser focus moves back to the parent <td>\n const td = ref.current?.closest('td') as HTMLElement | null\n if (td) td.focus()\n }\n\n const widget = useMemo(() => {\n // Common props shared across all widgets\n const sharedProps: WidgetBaseProps = {\n onChange: handleOnChange,\n onCancelEdit: handleCancel,\n isEditing: isCurrentCellEditing,\n isReadOnly: isReadOnly,\n }\n\n const textTypes: TextWidgetType[] = ['string', 'integer', 'float']\n\n // Determine widget type based on attribute type\n switch (true) {\n // this is showing the collapsed widget (dot)\n case isCollapsed: {\n // if enum, find the first selected option and get its color\n const firstSelectedOption = type?.includes('list')\n ? options.find((option) =>\n Array.isArray(value) ? value.includes(option.value) : value === option.value,\n )\n : undefined\n const color = firstSelectedOption?.color\n return <CollapsedWidget color={color} />\n }\n case type === 'name': {\n return (\n <NameWidget\n value={value as CellValue}\n valueData={valueData as NameWidgetData}\n cellId={cellId}\n entityType={entityType || ''}\n {...sharedProps}\n />\n )\n }\n\n case type === 'links': {\n const linksValue = valueData as LinkWidgetData | undefined\n\n const isEditable = isLinkEditable(\n linksValue?.direction || 'out',\n linksValue?.link.linkType || '',\n linksValue?.entityType || '',\n )\n\n // overwrite readonly state if the cell is currently being edited\n isReadOnly = !isEditable\n return (\n <LinksWidget\n value={linksValue}\n cellId={cellId}\n projectName={projectName}\n disabled={!isEditable}\n folderId={folderId}\n isLoading={isLinksLoading}\n {...sharedProps}\n />\n )\n }\n\n case type === 'subtasks': {\n const subtasksValue = valueData as SubtasksWidgetData | undefined\n\n return (\n <SubtasksWidget\n value={subtasksValue}\n cellId={cellId}\n projectName={projectName}\n disabled={isReadOnly}\n {...sharedProps}\n />\n )\n }\n\n case type === 'comments': {\n return <CommentsWidget value={valueData as EntityComment[] | undefined} {...sharedProps} />\n }\n\n case !!options.length: {\n const enumValue = Array.isArray(value) ? value : [value]\n if (isReadOnly) {\n const selectedOptions = options.filter((option) => enumValue.includes(option.value))\n\n if (enumValue.length && !selectedOptions.length) {\n // value has something but it is not in options, show a placeholder\n return (\n <TextWidget\n value={enumValue.join(', ')}\n isInherited={isInherited}\n columnId={columnId}\n cellId={cellId}\n isMarkdown={attributeData?.widget === 'markdown'}\n onRequestEdit={setEditingCellId}\n getDraftValue={getEditingDraft}\n setDraftValue={setEditingDraft}\n {...sharedProps}\n {...pt?.text}\n />\n )\n }\n\n return (\n <EnumCellValue\n selectedOptions={selectedOptions}\n isReadOnly\n hasMultipleValues={enumValue.length > 1}\n isMultiSelect={type?.includes('list')}\n {...pt?.enum?.pt?.template}\n />\n )\n }\n return (\n <EnumWidget\n value={enumValue}\n options={options}\n type={type}\n onOpen={() => setEditingCellId(cellId)}\n enableCustomValues={enableCustomValues}\n {...sharedProps}\n {...pt?.enum}\n />\n )\n }\n\n case textTypes.includes(type as TextWidgetType):\n return (\n <TextWidget\n value={value as string}\n isInherited={isInherited}\n columnId={columnId}\n cellId={cellId}\n isMarkdown={\n attributeData?.widget === 'markdown' ||\n // description SHOULD be default markdown, but lets have this here just in case\n columnId === 'attrib_description' ||\n columnId === 'description'\n }\n type={type as TextWidgetType}\n onRequestEdit={setEditingCellId}\n getDraftValue={getEditingDraft}\n setDraftValue={setEditingDraft}\n {...sharedProps}\n {...pt?.text}\n />\n )\n\n case type === 'datetime':\n return (\n <DateWidget\n value={value ? (value as string) : undefined}\n isInherited={isInherited}\n isMidnightExclusive={isMidnightExclusive}\n {...sharedProps}\n {...pt?.date}\n />\n )\n\n case type === 'boolean':\n return <BooleanWidget value={value as boolean} {...sharedProps} {...pt?.boolean} />\n\n case isPlaceholder:\n return null\n\n default:\n // TODO: We should not allow editing unrecognized types\n // At this point, only list_of_strings without proper options is unrecognized\n // (tags if not tags are specified in anatomy) and in that case, validation\n // on the server fails with a string value. Unless we have a widget that\n // accepts a string value AND options at the same time we shouldn't show\n // any edit widget\n\n //console.log(`Unrecognized type \"${type}\" for cell ${cellId}.`)\n return null\n }\n }, [cellId, value, type, isCurrentCellEditing, options, isCollapsed, isMidnightExclusive])\n\n return (\n <Cell\n {...props}\n className={clsx(props.className, {\n inherited: isInherited && !isCurrentCellEditing,\n [READ_ONLY]: isReadOnly,\n editable: !isReadOnly,\n })}\n ref={ref}\n id={cellId}\n data-tooltip={\n tooltip ||\n (isInherited && !isCurrentCellEditing && isCurrentCellFocused ? 'Inherited' : undefined)\n }\n data-tooltip-delay={200}\n >\n {widget}\n </Cell>\n )\n}\n"],"names":["Cell","styled","EDIT_TRIGGER_CLASS","CellWidget","rowId","columnId","value","valueData","attributeData","options","isCollapsed","isInherited","isPlaceholder","isReadOnly","enableCustomValues","isLinksLoading","folderId","midnightExclusiveFields","tooltip","onChange","entityType","pt","props","ref","useRef","type","projectName","useProjectContext","isEditing","setEditingCellId","getEditingDraft","setEditingDraft","useCellEditing","isCellFocused","gridMap","selectCell","focusCell","useSelectionCellsContext","cellId","getCellId","isMidnightExclusive","isCurrentCellEditing","isCurrentCellFocused","moveToNextRow","rowIndex","newRowId","newCellId","handleOnChange","newValue","key","handleCancel","td","widget","useMemo","sharedProps","textTypes","color","option","jsx","CollapsedWidget","NameWidget","linksValue","isEditable","isLinkEditable","LinksWidget","subtasksValue","SubtasksWidget","CommentsWidget","enumValue","selectedOptions","TextWidget","EnumCellValue","EnumWidget","DateWidget","BooleanWidget","clsx","READ_ONLY"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CellWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/CellWidget.tsx"],"sourcesContent":["import { FC, useMemo, useRef } from 'react'\nimport styled from 'styled-components'\n\n// Widgets\nimport { BooleanWidget, BooleanWidgetProps } from './BooleanWidget'\nimport { CollapsedWidget } from './CollapsedWidget'\nimport { DateWidget, DateWidgetProps } from './DateWidget'\nimport { EnumWidget, EnumWidgetProps } from './EnumWidget'\nimport { TextWidget, TextWidgetProps, TextWidgetType } from './TextWidget'\nimport { isLinkEditable, LinksWidget, LinkWidgetData } from './LinksWidget'\nimport { SubtasksWidget, SubtasksWidgetData } from './SubtasksWidget'\nimport { CommentsWidget } from './CommentsWidget'\n\n// Contexts\nimport { useCellEditing } from '../context/CellEditingContext'\n\n// Utils\nimport { getCellId } from '../utils/cellUtils'\nimport clsx from 'clsx'\nimport { useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { useProjectContext } from '@shared/context/ProjectContext'\nimport { EnumCellValue } from './EnumCellValue'\nimport { NameWidget } from '@shared/containers/ProjectTreeTable/widgets/NameWidget'\nimport type { NameWidgetData } from '@shared/components/RenameForm/RenameForm'\nimport { READ_ONLY } from '../utils'\nimport type { AttributeData, EnumItem, EntityComment } from '@shared/api'\nimport { CELL_PADDING_Y } from '../constants'\n\nconst Cell = styled.div`\n position: absolute;\n inset: 0;\n padding: ${CELL_PADDING_Y}px 8px;\n display: flex;\n align-items: center;\n overflow: hidden;\n container-type: size;\n container-name: cell;\n\n &:has(.markdown),\n &:has(.comments-list) {\n align-items: flex-start;\n }\n\n &:focus-visible {\n outline: none;\n }\n\n &.inherited {\n opacity: 0.6;\n font-style: italic;\n }\n\n &.loading {\n inset: 4px;\n border-radius: 4px;\n opacity: 1;\n }\n\n &.entity-widget {\n cursor: pointer;\n }\n`\n\n// use this class to trigger the editing mode on a single click\nexport const EDIT_TRIGGER_CLASS = 'edit-trigger'\n\ntype WidgetAttributeData = {\n type: AttributeData['type'] | 'links' | 'name' | 'subtasks' | 'comments'\n widget?: AttributeData['widget']\n}\n\nexport type CellValue = string | number | boolean\nexport type CellValueData = Record<string, any>\n\ninterface EditorCellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n rowId: string\n columnId: string\n value: CellValue | CellValue[]\n valueData?: CellValueData | CellValueData[] // extra data for the value\n attributeData?: WidgetAttributeData\n options?: EnumItem[]\n isCollapsed?: boolean\n isInherited?: boolean\n isPlaceholder?: boolean\n isFocused?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n isLinksLoading?: boolean\n folderId?: string | null\n midnightExclusiveFields?: string[]\n tooltip?: string\n onChange?: (value: CellValue | CellValue[], key?: 'Enter' | 'Click' | 'Escape') => void\n // options passthrough props\n pt?: {\n enum?: Partial<EnumWidgetProps>\n text?: Partial<TextWidgetProps>\n date?: Partial<DateWidgetProps>\n boolean?: Partial<BooleanWidgetProps>\n }\n entityType?: string\n}\n\nexport interface WidgetBaseProps {\n isEditing?: boolean\n isReadOnly?: boolean\n onChange: Required<EditorCellProps>['onChange']\n onCancelEdit?: () => void\n}\n\nexport const CellWidget: FC<EditorCellProps> = ({\n rowId,\n columnId,\n value,\n valueData,\n attributeData,\n options = [],\n isCollapsed,\n isInherited,\n isPlaceholder,\n isReadOnly,\n enableCustomValues,\n isLinksLoading,\n folderId,\n midnightExclusiveFields,\n tooltip,\n onChange,\n entityType,\n pt,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const type = attributeData?.type\n\n const { projectName } = useProjectContext()\n const { isEditing, setEditingCellId, getEditingDraft, setEditingDraft } = useCellEditing()\n const { isCellFocused, gridMap, selectCell, focusCell } = useSelectionCellsContext()\n const cellId = getCellId(rowId, columnId)\n const isMidnightExclusive = midnightExclusiveFields?.includes(columnId) ?? false\n\n const isCurrentCellEditing = isEditing(cellId)\n const isCurrentCellFocused = isCellFocused(cellId)\n\n const moveToNextRow = () => {\n const rowIndex = gridMap.rowIdToIndex.get(rowId)\n if (rowIndex === undefined) {\n setEditingCellId(null)\n return\n }\n const newRowId = gridMap.indexToRowId.get(rowIndex + 1)\n if (newRowId) {\n const newCellId = getCellId(newRowId, columnId)\n selectCell(newCellId, false, false)\n focusCell(newCellId)\n setEditingCellId(newCellId)\n } else {\n setEditingCellId(null)\n }\n }\n\n const handleOnChange: WidgetBaseProps['onChange'] = (newValue, key) => {\n if (isReadOnly) {\n setEditingCellId(null)\n return\n }\n if (key === 'Enter') {\n // Move to next row first (sets new editing cell), then save value.\n // This prevents the dialog from blinking between rows.\n moveToNextRow()\n onChange?.(newValue, key)\n } else if (key === 'Click' && newValue != value) {\n setEditingCellId(null)\n onChange?.(newValue, key)\n } else {\n setEditingCellId(null)\n }\n }\n\n const handleCancel = () => {\n setEditingCellId(null)\n // ensure the browser focus moves back to the parent <td>\n const td = ref.current?.closest('td') as HTMLElement | null\n if (td) td.focus()\n }\n\n const widget = useMemo(() => {\n // Common props shared across all widgets\n const sharedProps: WidgetBaseProps = {\n onChange: handleOnChange,\n onCancelEdit: handleCancel,\n isEditing: isCurrentCellEditing,\n isReadOnly: isReadOnly,\n }\n\n const textTypes: TextWidgetType[] = ['string', 'integer', 'float']\n\n // Determine widget type based on attribute type\n switch (true) {\n // this is showing the collapsed widget (dot)\n case isCollapsed: {\n // if enum, find the first selected option and get its color\n const firstSelectedOption = type?.includes('list')\n ? options.find((option) =>\n Array.isArray(value) ? value.includes(option.value) : value === option.value,\n )\n : undefined\n const color = firstSelectedOption?.color\n return <CollapsedWidget color={color} />\n }\n case type === 'name': {\n return (\n <NameWidget\n value={value as CellValue}\n valueData={valueData as NameWidgetData}\n cellId={cellId}\n entityType={entityType || ''}\n {...sharedProps}\n />\n )\n }\n\n case type === 'links': {\n const linksValue = valueData as LinkWidgetData | undefined\n\n const isEditable = isLinkEditable(\n linksValue?.direction || 'out',\n linksValue?.link.linkType || '',\n linksValue?.entityType || '',\n )\n\n // overwrite readonly state if the cell is currently being edited\n isReadOnly = !isEditable\n return (\n <LinksWidget\n value={linksValue}\n cellId={cellId}\n projectName={projectName}\n disabled={!isEditable}\n folderId={folderId}\n isLoading={isLinksLoading}\n {...sharedProps}\n />\n )\n }\n\n case type === 'subtasks': {\n const subtasksValue = valueData as SubtasksWidgetData | undefined\n\n return (\n <SubtasksWidget\n value={subtasksValue}\n cellId={cellId}\n projectName={projectName}\n disabled={isReadOnly}\n {...sharedProps}\n />\n )\n }\n\n case type === 'comments': {\n return <CommentsWidget value={valueData as EntityComment[] | undefined} {...sharedProps} />\n }\n\n case !!options.length: {\n const enumValue = Array.isArray(value) ? value : [value]\n if (isReadOnly) {\n const selectedOptions = options.filter((option) => enumValue.includes(option.value))\n\n if (enumValue.length && !selectedOptions.length) {\n // value has something but it is not in options, show a placeholder\n return (\n <TextWidget\n value={enumValue.join(', ')}\n isInherited={isInherited}\n columnId={columnId}\n cellId={cellId}\n isMarkdown={attributeData?.widget === 'markdown'}\n onRequestEdit={setEditingCellId}\n getDraftValue={getEditingDraft}\n setDraftValue={setEditingDraft}\n {...sharedProps}\n {...pt?.text}\n />\n )\n }\n\n return (\n <EnumCellValue\n selectedOptions={selectedOptions}\n isReadOnly\n hasMultipleValues={enumValue.length > 1}\n isMultiSelect={type?.includes('list')}\n {...pt?.enum?.pt?.template}\n />\n )\n }\n return (\n <EnumWidget\n value={enumValue}\n options={options}\n type={type}\n onOpen={() => setEditingCellId(cellId)}\n enableCustomValues={enableCustomValues}\n {...sharedProps}\n {...pt?.enum}\n />\n )\n }\n\n case textTypes.includes(type as TextWidgetType):\n return (\n <TextWidget\n value={value as string}\n isInherited={isInherited}\n columnId={columnId}\n cellId={cellId}\n isMarkdown={\n attributeData?.widget === 'markdown' ||\n // description SHOULD be default markdown, but lets have this here just in case\n columnId === 'attrib_description' ||\n columnId === 'description'\n }\n type={type as TextWidgetType}\n onRequestEdit={setEditingCellId}\n getDraftValue={getEditingDraft}\n setDraftValue={setEditingDraft}\n {...sharedProps}\n {...pt?.text}\n />\n )\n\n case type === 'datetime':\n return (\n <DateWidget\n value={value ? (value as string) : undefined}\n isInherited={isInherited}\n isMidnightExclusive={isMidnightExclusive}\n {...sharedProps}\n {...pt?.date}\n />\n )\n\n case type === 'boolean':\n return <BooleanWidget value={value as boolean} {...sharedProps} {...pt?.boolean} />\n\n case isPlaceholder:\n return null\n\n default:\n // TODO: We should not allow editing unrecognized types\n // At this point, only list_of_strings without proper options is unrecognized\n // (tags if not tags are specified in anatomy) and in that case, validation\n // on the server fails with a string value. Unless we have a widget that\n // accepts a string value AND options at the same time we shouldn't show\n // any edit widget\n\n //console.log(`Unrecognized type \"${type}\" for cell ${cellId}.`)\n return null\n }\n }, [cellId, value, type, isCurrentCellEditing, options, isCollapsed, isMidnightExclusive])\n\n return (\n <Cell\n {...props}\n className={clsx(props.className, {\n inherited: isInherited && !isCurrentCellEditing,\n [READ_ONLY]: isReadOnly,\n editable: !isReadOnly,\n })}\n ref={ref}\n id={cellId}\n data-tooltip={\n tooltip ||\n (isInherited && !isCurrentCellEditing && isCurrentCellFocused ? 'Inherited' : undefined)\n }\n data-tooltip-delay={200}\n >\n {widget}\n </Cell>\n )\n}\n"],"names":["Cell","styled","CELL_PADDING_Y","EDIT_TRIGGER_CLASS","CellWidget","rowId","columnId","value","valueData","attributeData","options","isCollapsed","isInherited","isPlaceholder","isReadOnly","enableCustomValues","isLinksLoading","folderId","midnightExclusiveFields","tooltip","onChange","entityType","pt","props","ref","useRef","type","projectName","useProjectContext","isEditing","setEditingCellId","getEditingDraft","setEditingDraft","useCellEditing","isCellFocused","gridMap","selectCell","focusCell","useSelectionCellsContext","cellId","getCellId","isMidnightExclusive","isCurrentCellEditing","isCurrentCellFocused","moveToNextRow","rowIndex","newRowId","newCellId","handleOnChange","newValue","key","handleCancel","td","widget","useMemo","sharedProps","textTypes","color","option","jsx","CollapsedWidget","NameWidget","linksValue","isEditable","isLinkEditable","LinksWidget","subtasksValue","SubtasksWidget","CommentsWidget","enumValue","selectedOptions","TextWidget","EnumCellValue","EnumWidget","DateWidget","BooleanWidget","clsx","READ_ONLY"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAMA,KAAOC,EAAO;AAAA;AAAA;AAAA,aAGPC,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiCdC,KAAqB,gBA6CrBC,KAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,SAAAC,IAAU,CAAA;AAAA,EACV,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,IAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAMC,EAAuB,IAAI,GACjCC,IAAOjB,GAAe,MAEtB,EAAE,aAAAkB,EAAA,IAAgBC,GAAA,GAClB,EAAE,WAAAC,GAAW,kBAAAC,GAAkB,iBAAAC,GAAiB,iBAAAC,EAAA,IAAoBC,GAAA,GACpE,EAAE,eAAAC,GAAe,SAAAC,GAAS,YAAAC,GAAY,WAAAC,EAAA,IAAcC,GAAA,GACpDC,IAASC,EAAUnC,GAAOC,CAAQ,GAClCmC,IAAsBvB,GAAyB,SAASZ,CAAQ,KAAK,IAErEoC,IAAuBb,EAAUU,CAAM,GACvCI,IAAuBT,EAAcK,CAAM,GAE3CK,IAAgB,MAAM;AAC1B,UAAMC,IAAWV,EAAQ,aAAa,IAAI9B,CAAK;AAC/C,QAAIwC,MAAa,QAAW;AAC1B,MAAAf,EAAiB,IAAI;AACrB;AAAA,IACF;AACA,UAAMgB,IAAWX,EAAQ,aAAa,IAAIU,IAAW,CAAC;AACtD,QAAIC,GAAU;AACZ,YAAMC,IAAYP,EAAUM,GAAUxC,CAAQ;AAC9C,MAAA8B,EAAWW,GAAW,IAAO,EAAK,GAClCV,EAAUU,CAAS,GACnBjB,EAAiBiB,CAAS;AAAA,IAC5B;AACE,MAAAjB,EAAiB,IAAI;AAAA,EAEzB,GAEMkB,IAA8C,CAACC,GAAUC,MAAQ;AACrE,QAAIpC,GAAY;AACd,MAAAgB,EAAiB,IAAI;AACrB;AAAA,IACF;AACA,IAAIoB,MAAQ,WAGVN,EAAA,GACAxB,IAAW6B,GAAUC,CAAG,KACfA,MAAQ,WAAWD,KAAY1C,KACxCuB,EAAiB,IAAI,GACrBV,IAAW6B,GAAUC,CAAG,KAExBpB,EAAiB,IAAI;AAAA,EAEzB,GAEMqB,IAAe,MAAM;AACzB,IAAArB,EAAiB,IAAI;AAErB,UAAMsB,IAAK5B,EAAI,SAAS,QAAQ,IAAI;AACpC,IAAI4B,OAAO,MAAA;AAAA,EACb,GAEMC,IAASC,EAAQ,MAAM;AAE3B,UAAMC,IAA+B;AAAA,MACnC,UAAUP;AAAA,MACV,cAAcG;AAAA,MACd,WAAWT;AAAA,MACX,YAAA5B;AAAA,IAAA,GAGI0C,IAA8B,CAAC,UAAU,WAAW,OAAO;AAGjE,YAAQ,IAAA;AAAA;AAAA,MAEN,KAAK7C,GAAa;AAOhB,cAAM8C,KALsB/B,GAAM,SAAS,MAAM,IAC7ChB,EAAQ;AAAA,UAAK,CAACgD,MACZ,MAAM,QAAQnD,CAAK,IAAIA,EAAM,SAASmD,EAAO,KAAK,IAAInD,MAAUmD,EAAO;AAAA,QAAA,IAEzE,SAC+B;AACnC,eAAOC,gBAAAA,MAACC,KAAgB,OAAAH,GAAc;AAAA,MACxC;AAAA,MACA,KAAK/B,MAAS;AACZ,eACEiC,gBAAAA,EAAAA;AAAAA,UAACE;AAAA,UAAA;AAAA,YACC,OAAAtD;AAAA,YACA,WAAAC;AAAA,YACA,QAAA+B;AAAA,YACA,YAAYlB,KAAc;AAAA,YACzB,GAAGkC;AAAA,UAAA;AAAA,QAAA;AAAA,MAKV,KAAK7B,MAAS,SAAS;AACrB,cAAMoC,IAAatD,GAEbuD,IAAaC;AAAA,UACjBF,GAAY,aAAa;AAAA,UACzBA,GAAY,KAAK,YAAY;AAAA,UAC7BA,GAAY,cAAc;AAAA,QAAA;AAI5B,eAAAhD,IAAa,CAACiD,GAEZJ,gBAAAA,EAAAA;AAAAA,UAACM;AAAA,UAAA;AAAA,YACC,OAAOH;AAAA,YACP,QAAAvB;AAAA,YACA,aAAAZ;AAAA,YACA,UAAU,CAACoC;AAAA,YACX,UAAA9C;AAAA,YACA,WAAWD;AAAA,YACV,GAAGuC;AAAA,UAAA;AAAA,QAAA;AAAA,MAGV;AAAA,MAEA,KAAK7B,MAAS,YAAY;AACxB,cAAMwC,IAAgB1D;AAEtB,eACEmD,gBAAAA,EAAAA;AAAAA,UAACQ;AAAA,UAAA;AAAA,YACC,OAAOD;AAAA,YACP,QAAA3B;AAAA,YACA,aAAAZ;AAAA,YACA,UAAUb;AAAA,YACT,GAAGyC;AAAA,UAAA;AAAA,QAAA;AAAA,MAGV;AAAA,MAEA,KAAK7B,MAAS;AACZ,eAAOiC,gBAAAA,EAAAA,IAACS,IAAA,EAAe,OAAO5D,GAA2C,GAAG+C,GAAa;AAAA,MAG3F,KAAK,CAAC,CAAC7C,EAAQ,QAAQ;AACrB,cAAM2D,IAAY,MAAM,QAAQ9D,CAAK,IAAIA,IAAQ,CAACA,CAAK;AACvD,YAAIO,GAAY;AACd,gBAAMwD,IAAkB5D,EAAQ,OAAO,CAACgD,MAAWW,EAAU,SAASX,EAAO,KAAK,CAAC;AAEnF,iBAAIW,EAAU,UAAU,CAACC,EAAgB,SAGrCX,gBAAAA,EAAAA;AAAAA,YAACY;AAAA,YAAA;AAAA,cACC,OAAOF,EAAU,KAAK,IAAI;AAAA,cAC1B,aAAAzD;AAAA,cACA,UAAAN;AAAA,cACA,QAAAiC;AAAA,cACA,YAAY9B,GAAe,WAAW;AAAA,cACtC,eAAeqB;AAAA,cACf,eAAeC;AAAA,cACf,eAAeC;AAAA,cACd,GAAGuB;AAAA,cACH,GAAGjC,GAAI;AAAA,YAAA;AAAA,UAAA,IAMZqC,gBAAAA,EAAAA;AAAAA,YAACa;AAAA,YAAA;AAAA,cACC,iBAAAF;AAAA,cACA,YAAU;AAAA,cACV,mBAAmBD,EAAU,SAAS;AAAA,cACtC,eAAe3C,GAAM,SAAS,MAAM;AAAA,cACnC,GAAGJ,GAAI,MAAM,IAAI;AAAA,YAAA;AAAA,UAAA;AAAA,QAGxB;AACA,eACEqC,gBAAAA,EAAAA;AAAAA,UAACc;AAAA,UAAA;AAAA,YACC,OAAOJ;AAAA,YACP,SAAA3D;AAAA,YACA,MAAAgB;AAAA,YACA,QAAQ,MAAMI,EAAiBS,CAAM;AAAA,YACrC,oBAAAxB;AAAA,YACC,GAAGwC;AAAA,YACH,GAAGjC,GAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAGd;AAAA,MAEA,KAAKkC,EAAU,SAAS9B,CAAsB;AAC5C,eACEiC,gBAAAA,EAAAA;AAAAA,UAACY;AAAA,UAAA;AAAA,YACC,OAAAhE;AAAA,YACA,aAAAK;AAAA,YACA,UAAAN;AAAA,YACA,QAAAiC;AAAA,YACA,YACE9B,GAAe,WAAW;AAAA,YAE1BH,MAAa,wBACbA,MAAa;AAAA,YAEf,MAAAoB;AAAA,YACA,eAAeI;AAAA,YACf,eAAeC;AAAA,YACf,eAAeC;AAAA,YACd,GAAGuB;AAAA,YACH,GAAGjC,GAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAId,KAAKI,MAAS;AACZ,eACEiC,gBAAAA,EAAAA;AAAAA,UAACe;AAAA,UAAA;AAAA,YACC,OAAOnE,KAA4B;AAAA,YACnC,aAAAK;AAAA,YACA,qBAAA6B;AAAA,YACC,GAAGc;AAAA,YACH,GAAGjC,GAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MAId,KAAKI,MAAS;AACZ,qCAAQiD,GAAA,EAAc,OAAApE,GAA0B,GAAGgD,GAAc,GAAGjC,GAAI,SAAS;AAAA,MAEnF,KAAKT;AACH,eAAO;AAAA,MAET;AASE,eAAO;AAAA,IAAA;AAAA,EAEb,GAAG,CAAC0B,GAAQhC,GAAOmB,GAAMgB,GAAsBhC,GAASC,GAAa8B,CAAmB,CAAC;AAEzF,SACEkB,gBAAAA,EAAAA;AAAAA,IAAC3D;AAAA,IAAA;AAAA,MACE,GAAGuB;AAAA,MACJ,WAAWqD,GAAKrD,EAAM,WAAW;AAAA,QAC/B,WAAWX,KAAe,CAAC8B;AAAA,QAC3B,CAACmC,EAAS,GAAG/D;AAAA,QACb,UAAU,CAACA;AAAA,MAAA,CACZ;AAAA,MACD,KAAAU;AAAA,MACA,IAAIe;AAAA,MACJ,gBACEpB,MACCP,KAAe,CAAC8B,KAAwBC,IAAuB,cAAc;AAAA,MAEhF,sBAAoB;AAAA,MAEnB,UAAAU;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../../../../_virtual/jsx-runtime.cjs.js"),l=require("date-fns"),u=require("react"),p=require("styled-components"),j=require("./DateWidgetInput.cjs.js"),w=require("../../../util/formatUTCDate.cjs.js"),g=require("./wrapMode.cjs.js"),q=p.span`
|
|
2
|
+
white-space: nowrap;
|
|
3
|
+
|
|
4
|
+
${g.wrapMode`
|
|
5
|
+
white-space: normal;
|
|
6
|
+
`}
|
|
7
|
+
`,M=p.span`
|
|
8
|
+
white-space: nowrap;
|
|
9
|
+
`,h=u.forwardRef(({value:e,isEditing:m,isReadOnly:o,isInherited:I,onChange:y,onCancelEdit:f,showTime:i=!1,isMidnightExclusive:d=!1,...c},x)=>{let t="",n=!1;if(e)try{const r=i?"dd-MM-yyyy HH:mm:ss":"dd-MM-yyyy",s=d?l.subMilliseconds(new Date(e),1):new Date(e);t=i?l.format(s,r):w.formatUTCDate(s,r)}catch{console.error("Invalid date value:",e),t="Invalid Date",n=!0}if(m)return a.jsxRuntimeExports.jsx(j.DateWidgetInput,{value:e,onChange:y,onCancel:f,readOnly:o,disabled:o,isMidnightExclusive:d,...c});const D=t&&!n?t.split(" "):[];return a.jsxRuntimeExports.jsx(q,{...c,ref:x,children:n?t:D.map((r,s)=>a.jsxRuntimeExports.jsxs(u.Fragment,{children:[s>0&&" ",a.jsxRuntimeExports.jsx(M,{children:r})]},s))})});exports.DateWidget=h;
|
|
2
10
|
//# sourceMappingURL=DateWidget.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/DateWidget.tsx"],"sourcesContent":["import { format, subMilliseconds } from 'date-fns'\nimport { forwardRef } from 'react'\nimport { DateWidgetInput } from './DateWidgetInput'\nimport { WidgetBaseProps } from './CellWidget'\nimport { formatUTCDate } from '../../../util/formatUTCDate'\n\nexport interface DateWidgetProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'onChange'>,\n WidgetBaseProps {\n value?: string\n isReadOnly?: boolean\n isInherited?: boolean\n showTime?: boolean\n isMidnightExclusive?: boolean\n}\n\nexport const DateWidget = forwardRef<HTMLSpanElement, DateWidgetProps>(\n (\n {\n value,\n isEditing,\n isReadOnly,\n isInherited,\n onChange,\n onCancelEdit,\n showTime = false,\n isMidnightExclusive = false,\n ...props\n },\n ref,\n ) => {\n let dateString = ''\n if (value) {\n try {\n const formatString = showTime ? 'dd-MM-yyyy HH:mm:ss' : 'dd-MM-yyyy'\n const date = isMidnightExclusive ? subMilliseconds(new Date(value), 1) : new Date(value)\n dateString = showTime ? format(date, formatString) : formatUTCDate(date, formatString)\n } catch (error) {\n console.error('Invalid date value:', value)\n dateString = 'Invalid Date'\n }\n }\n\n if (isEditing) {\n return (\n <DateWidgetInput\n value={value}\n onChange={onChange}\n onCancel={onCancelEdit}\n readOnly={isReadOnly}\n disabled={isReadOnly}\n isMidnightExclusive={isMidnightExclusive}\n {...(props as any)}\n />\n )\n }\n\n return (\n <
|
|
1
|
+
{"version":3,"file":"DateWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/DateWidget.tsx"],"sourcesContent":["import { format, subMilliseconds } from 'date-fns'\nimport { forwardRef, Fragment } from 'react'\nimport styled from 'styled-components'\nimport { DateWidgetInput } from './DateWidgetInput'\nimport { WidgetBaseProps } from './CellWidget'\nimport { formatUTCDate } from '../../../util/formatUTCDate'\nimport { wrapMode } from './wrapMode'\n\nconst StyledDateValue = styled.span`\n white-space: nowrap;\n\n ${wrapMode`\n white-space: normal;\n `}\n`\n\n// nowrap per part so the line can only break between date and time, never inside either\nconst StyledDatePart = styled.span`\n white-space: nowrap;\n`\n\nexport interface DateWidgetProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'onChange'>,\n WidgetBaseProps {\n value?: string\n isReadOnly?: boolean\n isInherited?: boolean\n showTime?: boolean\n isMidnightExclusive?: boolean\n}\n\nexport const DateWidget = forwardRef<HTMLSpanElement, DateWidgetProps>(\n (\n {\n value,\n isEditing,\n isReadOnly,\n isInherited,\n onChange,\n onCancelEdit,\n showTime = false,\n isMidnightExclusive = false,\n ...props\n },\n ref,\n ) => {\n let dateString = ''\n let isInvalid = false\n if (value) {\n try {\n const formatString = showTime ? 'dd-MM-yyyy HH:mm:ss' : 'dd-MM-yyyy'\n const date = isMidnightExclusive ? subMilliseconds(new Date(value), 1) : new Date(value)\n dateString = showTime ? format(date, formatString) : formatUTCDate(date, formatString)\n } catch (error) {\n console.error('Invalid date value:', value)\n dateString = 'Invalid Date'\n isInvalid = true\n }\n }\n\n if (isEditing) {\n return (\n <DateWidgetInput\n value={value}\n onChange={onChange}\n onCancel={onCancelEdit}\n readOnly={isReadOnly}\n disabled={isReadOnly}\n isMidnightExclusive={isMidnightExclusive}\n {...(props as any)}\n />\n )\n }\n\n const parts = dateString && !isInvalid ? dateString.split(' ') : []\n\n return (\n <StyledDateValue {...props} ref={ref}>\n {isInvalid\n ? dateString\n : parts.map((part, index) => (\n <Fragment key={index}>\n {index > 0 && ' '}\n <StyledDatePart>{part}</StyledDatePart>\n </Fragment>\n ))}\n </StyledDateValue>\n )\n },\n)\n"],"names":["StyledDateValue","styled","wrapMode","StyledDatePart","DateWidget","forwardRef","value","isEditing","isReadOnly","isInherited","onChange","onCancelEdit","showTime","isMidnightExclusive","props","ref","dateString","isInvalid","formatString","date","subMilliseconds","format","formatUTCDate","jsx","DateWidgetInput","parts","part","index","Fragment"],"mappings":"2UAQMA,EAAkBC,EAAO;AAAA;AAAA;AAAA,IAG3BC,EAAAA;AAAAA;AAAAA,GAED;AAAA,EAIGC,EAAiBF,EAAO;AAAA;AAAA,EAcjBG,EAAaC,EAAAA,WACxB,CACE,CACE,MAAAC,EACA,UAAAC,EACA,WAAAC,EACA,YAAAC,EACA,SAAAC,EACA,aAAAC,EACA,SAAAC,EAAW,GACX,oBAAAC,EAAsB,GACtB,GAAGC,CAAA,EAELC,IACG,CACH,IAAIC,EAAa,GACbC,EAAY,GAChB,GAAIX,EACF,GAAI,CACF,MAAMY,EAAeN,EAAW,sBAAwB,aAClDO,EAAON,EAAsBO,EAAAA,gBAAgB,IAAI,KAAKd,CAAK,EAAG,CAAC,EAAI,IAAI,KAAKA,CAAK,EACvFU,EAAaJ,EAAWS,EAAAA,OAAOF,EAAMD,CAAY,EAAII,EAAAA,cAAcH,EAAMD,CAAY,CACvF,MAAgB,CACd,QAAQ,MAAM,sBAAuBZ,CAAK,EAC1CU,EAAa,eACbC,EAAY,EACd,CAGF,GAAIV,EACF,OACEgB,EAAAA,kBAAAA,IAACC,EAAAA,gBAAA,CACC,MAAAlB,EACA,SAAAI,EACA,SAAUC,EACV,SAAUH,EACV,SAAUA,EACV,oBAAAK,EACC,GAAIC,CAAA,CAAA,EAKX,MAAMW,EAAQT,GAAc,CAACC,EAAYD,EAAW,MAAM,GAAG,EAAI,CAAA,EAEjE,OACEO,EAAAA,kBAAAA,IAACvB,EAAA,CAAiB,GAAGc,EAAO,IAAAC,EACzB,SAAAE,EACGD,EACAS,EAAM,IAAI,CAACC,EAAMC,6BACdC,EAAAA,SAAA,CACE,SAAA,CAAAD,EAAQ,GAAK,IACdJ,EAAAA,kBAAAA,IAACpB,GAAgB,SAAAuB,CAAA,CAAK,CAAA,GAFTC,CAGf,CACD,EACP,CAEJ,CACF"}
|
|
@@ -1,43 +1,59 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { subMilliseconds as
|
|
3
|
-
import { forwardRef as
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
1
|
+
import { j as o } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
+
import { subMilliseconds as D, format as h } from "date-fns";
|
|
3
|
+
import { forwardRef as j, Fragment as x } from "react";
|
|
4
|
+
import p from "styled-components";
|
|
5
|
+
import { DateWidgetInput as I } from "./DateWidgetInput.es.js";
|
|
6
|
+
import { formatUTCDate as M } from "../../../util/formatUTCDate.es.js";
|
|
7
|
+
import { wrapMode as g } from "./wrapMode.es.js";
|
|
8
|
+
const S = p.span`
|
|
9
|
+
white-space: nowrap;
|
|
10
|
+
|
|
11
|
+
${g`
|
|
12
|
+
white-space: normal;
|
|
13
|
+
`}
|
|
14
|
+
`, u = p.span`
|
|
15
|
+
white-space: nowrap;
|
|
16
|
+
`, V = j(
|
|
7
17
|
({
|
|
8
18
|
value: t,
|
|
9
|
-
isEditing:
|
|
10
|
-
isReadOnly:
|
|
11
|
-
isInherited:
|
|
19
|
+
isEditing: l,
|
|
20
|
+
isReadOnly: s,
|
|
21
|
+
isInherited: b,
|
|
12
22
|
onChange: f,
|
|
13
|
-
onCancelEdit:
|
|
14
|
-
showTime:
|
|
15
|
-
isMidnightExclusive:
|
|
16
|
-
...
|
|
17
|
-
},
|
|
18
|
-
let r = "";
|
|
23
|
+
onCancelEdit: c,
|
|
24
|
+
showTime: i = !1,
|
|
25
|
+
isMidnightExclusive: d = !1,
|
|
26
|
+
...m
|
|
27
|
+
}, y) => {
|
|
28
|
+
let r = "", n = !1;
|
|
19
29
|
if (t)
|
|
20
30
|
try {
|
|
21
|
-
const e =
|
|
22
|
-
r =
|
|
31
|
+
const e = i ? "dd-MM-yyyy HH:mm:ss" : "dd-MM-yyyy", a = d ? D(new Date(t), 1) : new Date(t);
|
|
32
|
+
r = i ? h(a, e) : M(a, e);
|
|
23
33
|
} catch {
|
|
24
|
-
console.error("Invalid date value:", t), r = "Invalid Date";
|
|
34
|
+
console.error("Invalid date value:", t), r = "Invalid Date", n = !0;
|
|
25
35
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
if (l)
|
|
37
|
+
return /* @__PURE__ */ o.jsx(
|
|
38
|
+
I,
|
|
39
|
+
{
|
|
40
|
+
value: t,
|
|
41
|
+
onChange: f,
|
|
42
|
+
onCancel: c,
|
|
43
|
+
readOnly: s,
|
|
44
|
+
disabled: s,
|
|
45
|
+
isMidnightExclusive: d,
|
|
46
|
+
...m
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
const w = r && !n ? r.split(" ") : [];
|
|
50
|
+
return /* @__PURE__ */ o.jsx(S, { ...m, ref: y, children: n ? r : w.map((e, a) => /* @__PURE__ */ o.jsxs(x, { children: [
|
|
51
|
+
a > 0 && " ",
|
|
52
|
+
/* @__PURE__ */ o.jsx(u, { children: e })
|
|
53
|
+
] }, a)) });
|
|
38
54
|
}
|
|
39
55
|
);
|
|
40
56
|
export {
|
|
41
|
-
|
|
57
|
+
V as DateWidget
|
|
42
58
|
};
|
|
43
59
|
//# sourceMappingURL=DateWidget.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/DateWidget.tsx"],"sourcesContent":["import { format, subMilliseconds } from 'date-fns'\nimport { forwardRef } from 'react'\nimport { DateWidgetInput } from './DateWidgetInput'\nimport { WidgetBaseProps } from './CellWidget'\nimport { formatUTCDate } from '../../../util/formatUTCDate'\n\nexport interface DateWidgetProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'onChange'>,\n WidgetBaseProps {\n value?: string\n isReadOnly?: boolean\n isInherited?: boolean\n showTime?: boolean\n isMidnightExclusive?: boolean\n}\n\nexport const DateWidget = forwardRef<HTMLSpanElement, DateWidgetProps>(\n (\n {\n value,\n isEditing,\n isReadOnly,\n isInherited,\n onChange,\n onCancelEdit,\n showTime = false,\n isMidnightExclusive = false,\n ...props\n },\n ref,\n ) => {\n let dateString = ''\n if (value) {\n try {\n const formatString = showTime ? 'dd-MM-yyyy HH:mm:ss' : 'dd-MM-yyyy'\n const date = isMidnightExclusive ? subMilliseconds(new Date(value), 1) : new Date(value)\n dateString = showTime ? format(date, formatString) : formatUTCDate(date, formatString)\n } catch (error) {\n console.error('Invalid date value:', value)\n dateString = 'Invalid Date'\n }\n }\n\n if (isEditing) {\n return (\n <DateWidgetInput\n value={value}\n onChange={onChange}\n onCancel={onCancelEdit}\n readOnly={isReadOnly}\n disabled={isReadOnly}\n isMidnightExclusive={isMidnightExclusive}\n {...(props as any)}\n />\n )\n }\n\n return (\n <
|
|
1
|
+
{"version":3,"file":"DateWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/DateWidget.tsx"],"sourcesContent":["import { format, subMilliseconds } from 'date-fns'\nimport { forwardRef, Fragment } from 'react'\nimport styled from 'styled-components'\nimport { DateWidgetInput } from './DateWidgetInput'\nimport { WidgetBaseProps } from './CellWidget'\nimport { formatUTCDate } from '../../../util/formatUTCDate'\nimport { wrapMode } from './wrapMode'\n\nconst StyledDateValue = styled.span`\n white-space: nowrap;\n\n ${wrapMode`\n white-space: normal;\n `}\n`\n\n// nowrap per part so the line can only break between date and time, never inside either\nconst StyledDatePart = styled.span`\n white-space: nowrap;\n`\n\nexport interface DateWidgetProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'onChange'>,\n WidgetBaseProps {\n value?: string\n isReadOnly?: boolean\n isInherited?: boolean\n showTime?: boolean\n isMidnightExclusive?: boolean\n}\n\nexport const DateWidget = forwardRef<HTMLSpanElement, DateWidgetProps>(\n (\n {\n value,\n isEditing,\n isReadOnly,\n isInherited,\n onChange,\n onCancelEdit,\n showTime = false,\n isMidnightExclusive = false,\n ...props\n },\n ref,\n ) => {\n let dateString = ''\n let isInvalid = false\n if (value) {\n try {\n const formatString = showTime ? 'dd-MM-yyyy HH:mm:ss' : 'dd-MM-yyyy'\n const date = isMidnightExclusive ? subMilliseconds(new Date(value), 1) : new Date(value)\n dateString = showTime ? format(date, formatString) : formatUTCDate(date, formatString)\n } catch (error) {\n console.error('Invalid date value:', value)\n dateString = 'Invalid Date'\n isInvalid = true\n }\n }\n\n if (isEditing) {\n return (\n <DateWidgetInput\n value={value}\n onChange={onChange}\n onCancel={onCancelEdit}\n readOnly={isReadOnly}\n disabled={isReadOnly}\n isMidnightExclusive={isMidnightExclusive}\n {...(props as any)}\n />\n )\n }\n\n const parts = dateString && !isInvalid ? dateString.split(' ') : []\n\n return (\n <StyledDateValue {...props} ref={ref}>\n {isInvalid\n ? dateString\n : parts.map((part, index) => (\n <Fragment key={index}>\n {index > 0 && ' '}\n <StyledDatePart>{part}</StyledDatePart>\n </Fragment>\n ))}\n </StyledDateValue>\n )\n },\n)\n"],"names":["StyledDateValue","styled","wrapMode","StyledDatePart","DateWidget","forwardRef","value","isEditing","isReadOnly","isInherited","onChange","onCancelEdit","showTime","isMidnightExclusive","props","ref","dateString","isInvalid","formatString","date","subMilliseconds","format","formatUTCDate","jsx","DateWidgetInput","parts","part","index","Fragment"],"mappings":";;;;;;;AAQA,MAAMA,IAAkBC,EAAO;AAAA;AAAA;AAAA,IAG3BC;AAAA;AAAA,GAED;AAAA,GAIGC,IAAiBF,EAAO;AAAA;AAAA,GAcjBG,IAAaC;AAAA,EACxB,CACE;AAAA,IACE,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,aAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,qBAAAC,IAAsB;AAAA,IACtB,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,QAAIC,IAAa,IACbC,IAAY;AAChB,QAAIX;AACF,UAAI;AACF,cAAMY,IAAeN,IAAW,wBAAwB,cAClDO,IAAON,IAAsBO,EAAgB,IAAI,KAAKd,CAAK,GAAG,CAAC,IAAI,IAAI,KAAKA,CAAK;AACvF,QAAAU,IAAaJ,IAAWS,EAAOF,GAAMD,CAAY,IAAII,EAAcH,GAAMD,CAAY;AAAA,MACvF,QAAgB;AACd,gBAAQ,MAAM,uBAAuBZ,CAAK,GAC1CU,IAAa,gBACbC,IAAY;AAAA,MACd;AAGF,QAAIV;AACF,aACEgB,gBAAAA,EAAAA;AAAAA,QAACC;AAAA,QAAA;AAAA,UACC,OAAAlB;AAAA,UACA,UAAAI;AAAA,UACA,UAAUC;AAAA,UACV,UAAUH;AAAA,UACV,UAAUA;AAAA,UACV,qBAAAK;AAAA,UACC,GAAIC;AAAA,QAAA;AAAA,MAAA;AAKX,UAAMW,IAAQT,KAAc,CAACC,IAAYD,EAAW,MAAM,GAAG,IAAI,CAAA;AAEjE,WACEO,gBAAAA,EAAAA,IAACvB,GAAA,EAAiB,GAAGc,GAAO,KAAAC,GACzB,UAAAE,IACGD,IACAS,EAAM,IAAI,CAACC,GAAMC,6BACdC,GAAA,EACE,UAAA;AAAA,MAAAD,IAAQ,KAAK;AAAA,MACdJ,gBAAAA,EAAAA,IAACpB,KAAgB,UAAAuB,EAAA,CAAK;AAAA,IAAA,KAFTC,CAGf,CACD,GACP;AAAA,EAEJ;AACF;"}
|