@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.
Files changed (179) hide show
  1. package/dist/ProjectTreeTable.cjs.js +1 -1
  2. package/dist/ProjectTreeTable.es.js +247 -243
  3. package/dist/_virtual/index.cjs22.js +1 -1
  4. package/dist/_virtual/index.cjs23.js +1 -1
  5. package/dist/_virtual/index.cjs24.js +1 -1
  6. package/dist/_virtual/index.cjs4.js +1 -1
  7. package/dist/_virtual/index.cjs5.js +1 -1
  8. package/dist/_virtual/index.cjs6.js +1 -1
  9. package/dist/_virtual/index.cjs8.js +1 -1
  10. package/dist/_virtual/index.es22.js +3 -3
  11. package/dist/_virtual/index.es23.js +5 -5
  12. package/dist/_virtual/index.es24.js +5 -5
  13. package/dist/_virtual/index.es4.js +2 -5
  14. package/dist/_virtual/index.es4.js.map +1 -1
  15. package/dist/_virtual/index.es5.js +5 -2
  16. package/dist/_virtual/index.es5.js.map +1 -1
  17. package/dist/_virtual/index.es6.js +2 -2
  18. package/dist/_virtual/index.es8.js +2 -2
  19. package/dist/api.cjs.js +1 -1
  20. package/dist/api.es.js +446 -445
  21. package/dist/index.cjs.js +1 -1
  22. package/dist/index.es.js +20 -9
  23. package/dist/index.es.js.map +1 -1
  24. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  25. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  26. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  27. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  28. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  29. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  30. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  31. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  32. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  33. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  34. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  35. package/dist/node_modules/remove-accents/index.es.js +1 -1
  36. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  37. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  38. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  39. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  40. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  41. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  42. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  43. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  44. package/dist/shared/src/api/generated/graphql.cjs.js +85 -28
  45. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  46. package/dist/shared/src/api/generated/graphql.es.js +129 -68
  47. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  48. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
  49. package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
  50. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +36 -36
  51. package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
  52. package/dist/shared/src/components/Chips/Chips.cjs.js +12 -6
  53. package/dist/shared/src/components/Chips/Chips.cjs.js.map +1 -1
  54. package/dist/shared/src/components/Chips/Chips.es.js +69 -62
  55. package/dist/shared/src/components/Chips/Chips.es.js.map +1 -1
  56. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
  57. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  58. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +32 -12
  59. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  60. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
  61. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  62. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +33 -33
  63. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  64. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  65. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  66. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  67. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  68. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +39 -8
  69. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  70. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  71. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  72. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +32 -31
  73. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  74. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  75. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  76. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +1 -1
  77. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -1
  78. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +24 -18
  79. package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -1
  80. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +1 -1
  81. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -1
  82. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +26 -25
  83. package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -1
  84. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
  85. package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
  86. package/dist/shared/src/containers/ListTable/ListTableCell.es.js +14 -2
  87. package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
  88. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  89. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  90. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +125 -126
  91. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  92. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +6 -0
  93. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  94. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +14 -8
  95. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  96. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  97. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  98. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +200 -178
  99. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  100. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  101. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  102. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +14 -3
  103. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  104. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js +1 -1
  105. package/dist/shared/src/containers/ProjectTreeTable/constants.cjs.js.map +1 -1
  106. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js +6 -3
  107. package/dist/shared/src/containers/ProjectTreeTable/constants.es.js.map +1 -1
  108. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  109. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  110. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +19 -19
  111. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  112. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +5 -3
  113. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  114. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +100 -97
  115. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  116. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js +9 -1
  117. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.cjs.js.map +1 -1
  118. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js +47 -31
  119. package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidget.es.js.map +1 -1
  120. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +28 -9
  121. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  122. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +58 -39
  123. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  124. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +53 -25
  125. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  126. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +150 -103
  127. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  128. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +9 -2
  129. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  130. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +66 -57
  131. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  132. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  133. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  134. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +9 -8
  135. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  136. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +20 -4
  137. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
  138. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +86 -67
  139. package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
  140. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js +6 -0
  141. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.cjs.js.map +1 -0
  142. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js +11 -0
  143. package/dist/shared/src/containers/ProjectTreeTable/widgets/wrapMode.es.js.map +1 -0
  144. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  145. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  146. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +67 -62
  147. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  148. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  149. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  150. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +47 -46
  151. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  152. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  153. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  154. package/dist/shared/src/context/ProjectContext.es.js +1 -1
  155. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  156. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js +1 -1
  157. package/dist/shared/src/util/buildHierarchicalTableRows.cjs.js.map +1 -1
  158. package/dist/shared/src/util/buildHierarchicalTableRows.es.js +36 -33
  159. package/dist/shared/src/util/buildHierarchicalTableRows.es.js.map +1 -1
  160. package/dist/types/api/generated/graphql.d.ts +71 -0
  161. package/dist/types/api/queries/activities/getActivities.d.ts +28 -0
  162. package/dist/types/api/queries/entities/getEntity.d.ts +14 -0
  163. package/dist/types/api/queries/entities/getEntityPanel.d.ts +14 -0
  164. package/dist/types/api/queries/entities/updateEntity.d.ts +14 -0
  165. package/dist/types/api/queries/entityLists/getLists.d.ts +14 -0
  166. package/dist/types/api/queries/overview/getOverview.d.ts +14 -0
  167. package/dist/types/api/queries/project/getProject.d.ts +14 -0
  168. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +14 -0
  169. package/dist/types/api/queries/users/getUsers.d.ts +14 -0
  170. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +28 -0
  171. package/dist/types/components/SubtasksManager/SubtasksManagerWrapper.d.ts +4 -1
  172. package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +1 -0
  173. package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -0
  174. package/dist/types/containers/ProjectTreeTable/constants.d.ts +3 -0
  175. package/dist/types/containers/ProjectTreeTable/widgets/SubtasksWidget.d.ts +1 -0
  176. package/dist/types/containers/ProjectTreeTable/widgets/wrapMode.d.ts +2 -0
  177. package/dist/types/containers/Views/context/ViewsContext.d.ts +1 -0
  178. package/dist/types/util/buildHierarchicalTableRows.d.ts +2 -0
  179. 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 H, useMemo as J } from "react";
3
- import K from "styled-components";
4
- import { BooleanWidget as Q } from "./BooleanWidget.es.js";
5
- import { CollapsedWidget as U } from "./CollapsedWidget.es.js";
6
- import { DateWidget as X } from "./DateWidget.es.js";
7
- import { EnumWidget as Z } from "./EnumWidget.es.js";
8
- import { TextWidget as S } from "./TextWidget.es.js";
9
- import { isLinkEditable as $, LinksWidget as tt } from "./LinksWidget.es.js";
10
- import { SubtasksWidget as et } from "./SubtasksWidget.es.js";
11
- import { CommentsWidget as it } from "./CommentsWidget.es.js";
12
- import { useCellEditing as st } from "../context/CellEditingContext.es.js";
13
- import { getCellId as V } from "../utils/cellUtils.es.js";
14
- import ot from "clsx";
15
- import { useSelectionCellsContext as rt } from "../context/SelectionCellsContext.es.js";
16
- import { useProjectContext as nt } from "../../../context/ProjectContext.es.js";
17
- import { EnumCellValue as lt } from "./EnumCellValue.es.js";
18
- import { NameWidget as dt } from "./NameWidget.es.js";
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 ct } from "../utils/restrictedEntity.es.js";
26
- const at = K.div`
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: 4px 8px;
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
- `, vt = "edit-trigger", qt = ({
60
+ `, Pe = "edit-trigger", qe = ({
58
61
  rowId: E,
59
- columnId: d,
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: A,
67
- isReadOnly: c,
68
- enableCustomValues: N,
69
- isLinksLoading: L,
70
- folderId: R,
71
- midnightExclusiveFields: D,
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 = H(null), s = C?.type, { projectName: k } = nt(), { isEditing: q, setEditingCellId: r, getEditingDraft: y, setEditingDraft: T } = st(), { isCellFocused: F, gridMap: W, selectCell: G, focusCell: P } = rt(), n = V(E, d), M = D?.includes(d) ?? !1, g = q(n), B = F(n), I = () => {
79
- const t = W.rowIdToIndex.get(E);
80
- if (t === void 0) {
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(t + 1);
87
+ const l = W.indexToRowId.get(e + 1);
85
88
  if (l) {
86
- const e = V(l, d);
87
- G(e, !1, !1), P(e), r(e);
89
+ const t = M(l, c);
90
+ q(t, !1, !1), F(t), r(t);
88
91
  } else
89
92
  r(null);
90
- }, O = (t, l) => {
91
- if (c) {
93
+ }, z = (e, l) => {
94
+ if (d) {
92
95
  r(null);
93
96
  return;
94
97
  }
95
- l === "Enter" ? (I(), w?.(t, l)) : l === "Click" && t != i ? (r(null), w?.(t, l)) : r(null);
96
- }, Y = () => {
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 t = b.current?.closest("td");
99
- t && t.focus();
100
- }, z = J(() => {
101
- const t = {
102
- onChange: O,
103
- onCancelEdit: Y,
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: c
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(U, { color: a });
116
+ return /* @__PURE__ */ o.jsx(Q, { color: a });
114
117
  }
115
118
  case s === "name":
116
119
  return /* @__PURE__ */ o.jsx(
117
- dt,
120
+ ce,
118
121
  {
119
122
  value: i,
120
123
  valueData: p,
121
124
  cellId: n,
122
125
  entityType: v || "",
123
- ...t
126
+ ...e
124
127
  }
125
128
  );
126
129
  case s === "links": {
127
- const e = p, a = $(
128
- e?.direction || "out",
129
- e?.link.linkType || "",
130
- e?.entityType || ""
130
+ const t = p, a = Z(
131
+ t?.direction || "out",
132
+ t?.link.linkType || "",
133
+ t?.entityType || ""
131
134
  );
132
- return c = !a, /* @__PURE__ */ o.jsx(
133
- tt,
135
+ return d = !a, /* @__PURE__ */ o.jsx(
136
+ ee,
134
137
  {
135
- value: e,
138
+ value: t,
136
139
  cellId: n,
137
140
  projectName: k,
138
141
  disabled: !a,
139
- folderId: R,
140
- isLoading: L,
141
- ...t
142
+ folderId: D,
143
+ isLoading: V,
144
+ ...e
142
145
  }
143
146
  );
144
147
  }
145
148
  case s === "subtasks": {
146
- const e = p;
149
+ const t = p;
147
150
  return /* @__PURE__ */ o.jsx(
148
- et,
151
+ te,
149
152
  {
150
- value: e,
153
+ value: t,
151
154
  cellId: n,
152
155
  projectName: k,
153
- disabled: c,
154
- ...t
156
+ disabled: d,
157
+ ...e
155
158
  }
156
159
  );
157
160
  }
158
161
  case s === "comments":
159
- return /* @__PURE__ */ o.jsx(it, { value: p, ...t });
162
+ return /* @__PURE__ */ o.jsx(ie, { value: p, ...e });
160
163
  case !!u.length: {
161
- const e = Array.isArray(i) ? i : [i];
162
- if (c) {
163
- const a = u.filter((x) => e.includes(x.value));
164
- return e.length && !a.length ? /* @__PURE__ */ o.jsx(
165
- S,
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: e.join(", "),
170
+ value: t.join(", "),
168
171
  isInherited: f,
169
- columnId: d,
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
- ...t,
178
+ ...e,
176
179
  ...m?.text
177
180
  }
178
181
  ) : /* @__PURE__ */ o.jsx(
179
- lt,
182
+ le,
180
183
  {
181
184
  selectedOptions: a,
182
185
  isReadOnly: !0,
183
- hasMultipleValues: e.length > 1,
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
- Z,
193
+ X,
191
194
  {
192
- value: e,
195
+ value: t,
193
196
  options: u,
194
197
  type: s,
195
198
  onOpen: () => r(n),
196
- enableCustomValues: N,
197
- ...t,
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
- S,
207
+ L,
205
208
  {
206
209
  value: i,
207
210
  isInherited: f,
208
- columnId: d,
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
- d === "attrib_description" || d === "description",
214
+ c === "attrib_description" || c === "description",
212
215
  type: s,
213
216
  onRequestEdit: r,
214
217
  getDraftValue: y,
215
218
  setDraftValue: T,
216
- ...t,
219
+ ...e,
217
220
  ...m?.text
218
221
  }
219
222
  );
220
223
  case s === "datetime":
221
224
  return /* @__PURE__ */ o.jsx(
222
- X,
225
+ U,
223
226
  {
224
227
  value: i || void 0,
225
228
  isInherited: f,
226
- isMidnightExclusive: M,
227
- ...t,
229
+ isMidnightExclusive: A,
230
+ ...e,
228
231
  ...m?.date
229
232
  }
230
233
  );
231
234
  case s === "boolean":
232
- return /* @__PURE__ */ o.jsx(Q, { value: i, ...t, ...m?.boolean });
233
- case A:
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, M]);
241
+ }, [n, i, s, g, u, j, A]);
239
242
  return /* @__PURE__ */ o.jsx(
240
- at,
243
+ me,
241
244
  {
242
245
  ...h,
243
- className: ot(h.className, {
246
+ className: oe(h.className, {
244
247
  inherited: f && !g,
245
- [ct]: c,
246
- editable: !c
248
+ [ae]: d,
249
+ editable: !d
247
250
  }),
248
251
  ref: b,
249
252
  id: n,
250
- "data-tooltip": _ || (f && !g && B ? "Inherited" : void 0),
253
+ "data-tooltip": R || (f && !g && I ? "Inherited" : void 0),
251
254
  "data-tooltip-delay": 200,
252
- children: z
255
+ children: O
253
256
  }
254
257
  );
255
258
  };
256
259
  export {
257
- qt as CellWidget,
258
- vt as EDIT_TRIGGER_CLASS
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":"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"}
@@ -1,2 +1,10 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../../../../../_virtual/jsx-runtime.cjs.js"),c=require("date-fns"),m=require("react"),D=require("./DateWidgetInput.cjs.js"),g=require("../../../util/formatUTCDate.cjs.js"),j=m.forwardRef(({value:e,isEditing:u,isReadOnly:n,isInherited:p,onChange:y,onCancelEdit:f,showTime:a=!1,isMidnightExclusive:s=!1,...o},l)=>{let t="";if(e)try{const r=a?"dd-MM-yyyy HH:mm:ss":"dd-MM-yyyy",i=s?c.subMilliseconds(new Date(e),1):new Date(e);t=a?c.format(i,r):g.formatUTCDate(i,r)}catch{console.error("Invalid date value:",e),t="Invalid Date"}return u?d.jsxRuntimeExports.jsx(D.DateWidgetInput,{value:e,onChange:y,onCancel:f,readOnly:n,disabled:n,isMidnightExclusive:s,...o}):d.jsxRuntimeExports.jsx("span",{...o,ref:l,style:{whiteSpace:"nowrap"},children:t})});exports.DateWidget=j;
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 <span {...props} ref={ref} style={{ whiteSpace: 'nowrap' }}>\n {dateString}\n </span>\n )\n },\n)\n"],"names":["DateWidget","forwardRef","value","isEditing","isReadOnly","isInherited","onChange","onCancelEdit","showTime","isMidnightExclusive","props","ref","dateString","formatString","date","subMilliseconds","format","formatUTCDate","jsx","DateWidgetInput"],"mappings":"6QAgBaA,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,GACjB,GAAIV,EACF,GAAI,CACF,MAAMW,EAAeL,EAAW,sBAAwB,aAClDM,EAAOL,EAAsBM,EAAAA,gBAAgB,IAAI,KAAKb,CAAK,EAAG,CAAC,EAAI,IAAI,KAAKA,CAAK,EACvFU,EAAaJ,EAAWQ,EAAAA,OAAOF,EAAMD,CAAY,EAAII,EAAAA,cAAcH,EAAMD,CAAY,CACvF,MAAgB,CACd,QAAQ,MAAM,sBAAuBX,CAAK,EAC1CU,EAAa,cACf,CAGF,OAAIT,EAEAe,EAAAA,kBAAAA,IAACC,EAAAA,gBAAA,CACC,MAAAjB,EACA,SAAAI,EACA,SAAUC,EACV,SAAUH,EACV,SAAUA,EACV,oBAAAK,EACC,GAAIC,CAAA,CAAA,EAMTQ,wBAAC,OAAA,CAAM,GAAGR,EAAO,IAAAC,EAAU,MAAO,CAAE,WAAY,QAAA,EAC7C,SAAAC,CAAA,CACH,CAEJ,CACF"}
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 m } from "../../../../../_virtual/jsx-runtime.es.js";
2
- import { subMilliseconds as p, format as l } from "date-fns";
3
- import { forwardRef as D } from "react";
4
- import { DateWidgetInput as j } from "./DateWidgetInput.es.js";
5
- import { formatUTCDate as w } from "../../../util/formatUTCDate.es.js";
6
- const h = D(
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: s,
10
- isReadOnly: o,
11
- isInherited: x,
19
+ isEditing: l,
20
+ isReadOnly: s,
21
+ isInherited: b,
12
22
  onChange: f,
13
- onCancelEdit: y,
14
- showTime: a = !1,
15
- isMidnightExclusive: n = !1,
16
- ...d
17
- }, c) => {
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 = a ? "dd-MM-yyyy HH:mm:ss" : "dd-MM-yyyy", i = n ? p(new Date(t), 1) : new Date(t);
22
- r = a ? l(i, e) : w(i, e);
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
- return s ? /* @__PURE__ */ m.jsx(
27
- j,
28
- {
29
- value: t,
30
- onChange: f,
31
- onCancel: y,
32
- readOnly: o,
33
- disabled: o,
34
- isMidnightExclusive: n,
35
- ...d
36
- }
37
- ) : /* @__PURE__ */ m.jsx("span", { ...d, ref: c, style: { whiteSpace: "nowrap" }, children: r });
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
- h as DateWidget
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 <span {...props} ref={ref} style={{ whiteSpace: 'nowrap' }}>\n {dateString}\n </span>\n )\n },\n)\n"],"names":["DateWidget","forwardRef","value","isEditing","isReadOnly","isInherited","onChange","onCancelEdit","showTime","isMidnightExclusive","props","ref","dateString","formatString","date","subMilliseconds","format","formatUTCDate","jsx","DateWidgetInput"],"mappings":";;;;;AAgBO,MAAMA,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;AACjB,QAAIV;AACF,UAAI;AACF,cAAMW,IAAeL,IAAW,wBAAwB,cAClDM,IAAOL,IAAsBM,EAAgB,IAAI,KAAKb,CAAK,GAAG,CAAC,IAAI,IAAI,KAAKA,CAAK;AACvF,QAAAU,IAAaJ,IAAWQ,EAAOF,GAAMD,CAAY,IAAII,EAAcH,GAAMD,CAAY;AAAA,MACvF,QAAgB;AACd,gBAAQ,MAAM,uBAAuBX,CAAK,GAC1CU,IAAa;AAAA,MACf;AAGF,WAAIT,IAEAe,gBAAAA,EAAAA;AAAAA,MAACC;AAAA,MAAA;AAAA,QACC,OAAAjB;AAAA,QACA,UAAAI;AAAA,QACA,UAAUC;AAAA,QACV,UAAUH;AAAA,QACV,UAAUA;AAAA,QACV,qBAAAK;AAAA,QACC,GAAIC;AAAA,MAAA;AAAA,IAAA,IAMTQ,gBAAAA,MAAC,QAAA,EAAM,GAAGR,GAAO,KAAAC,GAAU,OAAO,EAAE,YAAY,SAAA,GAC7C,UAAAC,EAAA,CACH;AAAA,EAEJ;AACF;"}
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;"}