@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,8 +1,21 @@
|
|
|
1
1
|
import { j as r } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { Icon as
|
|
3
|
-
import
|
|
2
|
+
import { Icon as c, getTextColor as z } from "@ynput/ayon-react-components";
|
|
3
|
+
import t from "clsx";
|
|
4
4
|
import s from "styled-components";
|
|
5
|
-
|
|
5
|
+
import { wrapMode as J } from "./wrapMode.es.js";
|
|
6
|
+
const K = "edit-trigger", n = s.span`
|
|
7
|
+
text-align: left;
|
|
8
|
+
border-radius: var(--border-radius-m);
|
|
9
|
+
padding: 0px 2px;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
overflow: hidden;
|
|
12
|
+
text-overflow: ellipsis;
|
|
13
|
+
max-width: 100%;
|
|
14
|
+
|
|
15
|
+
&.placeholder {
|
|
16
|
+
color: var(--md-sys-color-outline);
|
|
17
|
+
}
|
|
18
|
+
`, Q = s.div`
|
|
6
19
|
display: flex;
|
|
7
20
|
gap: 1px;
|
|
8
21
|
align-items: center;
|
|
@@ -30,19 +43,46 @@ const q = "edit-trigger", J = s.div`
|
|
|
30
43
|
}
|
|
31
44
|
}
|
|
32
45
|
|
|
33
|
-
/*
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
@container (min-height: 55px) {
|
|
46
|
+
/* wrapped rows sit on a fixed row lattice, so the height clip can only land between rows */
|
|
47
|
+
${J`
|
|
48
|
+
&.multi-select:not(.item) {
|
|
38
49
|
.values {
|
|
50
|
+
--wrap-row-height: 24px;
|
|
51
|
+
--wrap-row-gap: var(--base-gap-small);
|
|
39
52
|
flex-wrap: wrap;
|
|
40
53
|
align-items: flex-start;
|
|
54
|
+
align-content: flex-start;
|
|
55
|
+
row-gap: var(--wrap-row-gap);
|
|
41
56
|
max-height: 100%;
|
|
57
|
+
/* var() inside an unsupported round() computes to none, not to the fallback — gate it */
|
|
58
|
+
@supports (max-height: round(down, 100px, 24px)) {
|
|
59
|
+
max-height: calc(
|
|
60
|
+
round(
|
|
61
|
+
down,
|
|
62
|
+
100cqh + var(--wrap-row-gap),
|
|
63
|
+
calc(var(--wrap-row-height) + var(--wrap-row-gap))
|
|
64
|
+
) - var(--wrap-row-gap)
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.values > * {
|
|
70
|
+
min-height: var(--wrap-row-height);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
${n} {
|
|
74
|
+
white-space: normal;
|
|
75
|
+
word-break: break-word;
|
|
76
|
+
line-height: var(--wrap-row-height);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.has-img ${n} {
|
|
80
|
+
white-space: nowrap;
|
|
81
|
+
text-overflow: ellipsis;
|
|
42
82
|
}
|
|
43
83
|
}
|
|
44
|
-
}
|
|
45
|
-
`,
|
|
84
|
+
`}
|
|
85
|
+
`, U = s.div`
|
|
46
86
|
flex: 1;
|
|
47
87
|
display: flex;
|
|
48
88
|
gap: var(--base-gap-small);
|
|
@@ -52,34 +92,23 @@ const q = "edit-trigger", J = s.div`
|
|
|
52
92
|
border-radius: var(--border-radius-m);
|
|
53
93
|
padding: 0px 2px;
|
|
54
94
|
flex-wrap: nowrap;
|
|
55
|
-
`,
|
|
95
|
+
`, X = s.div`
|
|
56
96
|
display: flex;
|
|
57
97
|
gap: 2px;
|
|
58
98
|
align-items: center;
|
|
59
99
|
|
|
60
100
|
max-width: 100%;
|
|
61
101
|
min-width: 20px;
|
|
62
|
-
`,
|
|
63
|
-
text-align: left;
|
|
64
|
-
border-radius: var(--border-radius-m);
|
|
65
|
-
padding: 0px 2px;
|
|
66
|
-
white-space: nowrap;
|
|
67
|
-
overflow: hidden;
|
|
68
|
-
text-overflow: ellipsis;
|
|
69
|
-
max-width: 100%;
|
|
70
|
-
|
|
71
|
-
&.placeholder {
|
|
72
|
-
color: var(--md-sys-color-outline);
|
|
73
|
-
}
|
|
74
|
-
`, X = s.img`
|
|
102
|
+
`, Y = s.img`
|
|
75
103
|
width: 20px;
|
|
76
104
|
height: 20px;
|
|
77
105
|
object-fit: cover;
|
|
106
|
+
flex-shrink: 0;
|
|
78
107
|
|
|
79
108
|
&.avatar {
|
|
80
109
|
border-radius: 50%;
|
|
81
110
|
}
|
|
82
|
-
`,
|
|
111
|
+
`, Z = s.div`
|
|
83
112
|
border-radius: var(--border-radius-m);
|
|
84
113
|
display: flex;
|
|
85
114
|
justify-content: center;
|
|
@@ -94,98 +123,116 @@ const q = "edit-trigger", J = s.div`
|
|
|
94
123
|
&.open {
|
|
95
124
|
background-color: transparent;
|
|
96
125
|
}
|
|
97
|
-
`,
|
|
126
|
+
`, M = s(c)`
|
|
98
127
|
transition: rotate 0.2s;
|
|
99
128
|
padding: 2px;
|
|
100
|
-
`,
|
|
101
|
-
selectedOptions:
|
|
102
|
-
placeholder:
|
|
103
|
-
hasMultipleValues:
|
|
104
|
-
isMultiSelect:
|
|
105
|
-
isOpen:
|
|
106
|
-
isItem:
|
|
107
|
-
isSelected:
|
|
108
|
-
isReadOnly:
|
|
109
|
-
iconOnlyColor:
|
|
110
|
-
className:
|
|
111
|
-
pt:
|
|
129
|
+
`, la = ({
|
|
130
|
+
selectedOptions: e,
|
|
131
|
+
placeholder: i,
|
|
132
|
+
hasMultipleValues: v,
|
|
133
|
+
isMultiSelect: o,
|
|
134
|
+
isOpen: d,
|
|
135
|
+
isItem: l,
|
|
136
|
+
isSelected: p,
|
|
137
|
+
isReadOnly: u,
|
|
138
|
+
iconOnlyColor: w = !1,
|
|
139
|
+
className: y,
|
|
140
|
+
pt: f,
|
|
112
141
|
...b
|
|
113
142
|
}) => {
|
|
114
143
|
const {
|
|
115
|
-
icon:
|
|
116
|
-
img:
|
|
117
|
-
value:
|
|
144
|
+
icon: N = {},
|
|
145
|
+
img: k = {},
|
|
146
|
+
value: j = {},
|
|
118
147
|
expand: S = {},
|
|
119
|
-
close:
|
|
120
|
-
} =
|
|
121
|
-
return
|
|
148
|
+
close: C = {}
|
|
149
|
+
} = f || {}, { style: R, className: E, ...I } = N, { style: W, className: V, ...L } = k, { style: T, className: _, ...$ } = j, { style: A, className: D, ...G } = S, { style: q, className: B, ...F } = C, m = e.every((a) => a.icon), H = !v || !m, h = !m && o && !l, g = !e.length && i;
|
|
150
|
+
return g && (e = [
|
|
122
151
|
{
|
|
123
|
-
label:
|
|
152
|
+
label: i,
|
|
124
153
|
value: ""
|
|
125
154
|
}
|
|
126
|
-
]), /* @__PURE__ */ r.jsxs(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
155
|
+
]), /* @__PURE__ */ r.jsxs(
|
|
156
|
+
Q,
|
|
157
|
+
{
|
|
158
|
+
className: t(y, {
|
|
159
|
+
selected: p,
|
|
160
|
+
item: l,
|
|
161
|
+
"multi-select": o
|
|
162
|
+
}),
|
|
163
|
+
...b,
|
|
164
|
+
children: [
|
|
165
|
+
/* @__PURE__ */ r.jsx(U, { className: "values", children: e.map((a, P) => /* @__PURE__ */ r.jsxs(
|
|
166
|
+
X,
|
|
167
|
+
{
|
|
168
|
+
className: t({ "has-img": x(a.icon) }),
|
|
169
|
+
children: [
|
|
170
|
+
a.icon && x(a.icon) ? /* @__PURE__ */ r.jsx(
|
|
171
|
+
Y,
|
|
172
|
+
{
|
|
173
|
+
src: a.icon,
|
|
174
|
+
className: t({ avatar: O(a.icon) }, V),
|
|
175
|
+
style: W,
|
|
176
|
+
"data-tooltip": a.label,
|
|
177
|
+
...L
|
|
178
|
+
}
|
|
179
|
+
) : a.icon ? /* @__PURE__ */ r.jsx(
|
|
180
|
+
c,
|
|
181
|
+
{
|
|
182
|
+
icon: a.icon,
|
|
183
|
+
style: { color: a.color, ...R },
|
|
184
|
+
className: E,
|
|
185
|
+
...I
|
|
186
|
+
}
|
|
187
|
+
) : null,
|
|
188
|
+
(H || !a.icon) && /* @__PURE__ */ r.jsx(
|
|
189
|
+
n,
|
|
190
|
+
{
|
|
191
|
+
style: {
|
|
192
|
+
color: h && a.color ? z(a.color) : w && a.icon ? void 0 : a.color,
|
|
193
|
+
backgroundColor: h ? a.color || "var(--md-sys-color-surface-container)" : "transparent",
|
|
194
|
+
...T
|
|
195
|
+
},
|
|
196
|
+
className: t({ placeholder: g }, _),
|
|
197
|
+
"aria-label": a.label,
|
|
198
|
+
...$,
|
|
199
|
+
children: a.label
|
|
200
|
+
}
|
|
201
|
+
)
|
|
202
|
+
]
|
|
153
203
|
},
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
children: e.label
|
|
158
|
-
}
|
|
159
|
-
)
|
|
160
|
-
] }, e.value.toString() + H)) }),
|
|
161
|
-
!t && !g && /* @__PURE__ */ r.jsx(
|
|
162
|
-
Y,
|
|
163
|
-
{
|
|
164
|
-
className: l("expand", q, { open: i }, A),
|
|
165
|
-
children: /* @__PURE__ */ r.jsx(
|
|
204
|
+
a.value.toString() + P
|
|
205
|
+
)) }),
|
|
206
|
+
!l && !u && /* @__PURE__ */ r.jsx(
|
|
166
207
|
Z,
|
|
167
208
|
{
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
209
|
+
className: t("expand", K, { open: d }, D),
|
|
210
|
+
children: /* @__PURE__ */ r.jsx(
|
|
211
|
+
M,
|
|
212
|
+
{
|
|
213
|
+
icon: "expand_more",
|
|
214
|
+
style: { rotate: d ? "180deg" : "0", ...A },
|
|
215
|
+
"aria-label": "Expand options",
|
|
216
|
+
...G
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
}
|
|
220
|
+
),
|
|
221
|
+
l && p && o && /* @__PURE__ */ r.jsx(
|
|
222
|
+
c,
|
|
223
|
+
{
|
|
224
|
+
icon: "close",
|
|
225
|
+
style: { marginLeft: "auto", marginRight: 4, ...q },
|
|
226
|
+
"aria-label": "Deselect item",
|
|
227
|
+
className: t("close", B),
|
|
228
|
+
...F
|
|
172
229
|
}
|
|
173
230
|
)
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
{
|
|
179
|
-
icon: "close",
|
|
180
|
-
style: { marginLeft: "auto", marginRight: 4, ...G },
|
|
181
|
-
"aria-label": "Deselect item",
|
|
182
|
-
className: l("close", z),
|
|
183
|
-
...B
|
|
184
|
-
}
|
|
185
|
-
)
|
|
186
|
-
] });
|
|
187
|
-
}, $ = (a = "") => a.startsWith("/") || a.startsWith("./") || a.startsWith("../") || a.startsWith("http://") || a.startsWith("https://"), M = (a) => a.includes("avatar");
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
}, x = (e = "") => e.startsWith("/") || e.startsWith("./") || e.startsWith("../") || e.startsWith("http://") || e.startsWith("https://"), O = (e) => e.includes("avatar");
|
|
188
235
|
export {
|
|
189
|
-
|
|
236
|
+
la as EnumCellValue
|
|
190
237
|
};
|
|
191
238
|
//# sourceMappingURL=EnumCellValue.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumCellValue.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import type { EnumItem } from '@shared/api'\nimport { getTextColor, Icon, IconProps } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\n// Inline the edit trigger class to avoid runtime import and circular dependency with CellWidget\nconst EDIT_TRIGGER_CLASS = 'edit-trigger'\n\nconst StyledWidget = styled.div`\n display: flex;\n gap: 1px;\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: visible;\n border-radius: var(--border-radius-m);\n padding: 0 1px;\n\n &.item {\n padding: 4px 2px;\n border-radius: 0;\n overflow: hidden;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-hover);\n }\n }\n\n &.selected {\n background-color: var(--md-sys-color-primary-container);\n\n &:hover {\n background-color: var(--md-sys-color-primary-container-hover);\n }\n }\n\n /* when value container is higher than 55px, wrap the contents */\n &:not(.item) {\n container-type: size;\n\n @container (min-height: 55px) {\n .values {\n flex-wrap: wrap;\n align-items: flex-start;\n max-height: 100%;\n }\n }\n }\n`\n\nconst StyledValuesContainer = styled.div`\n flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n align-content: flex-start;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n flex-wrap: nowrap;\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: 2px;\n align-items: center;\n\n max-width: 100%;\n min-width: 20px;\n`\n\nconst StyledValue = styled.span`\n text-align: left;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n\n &.placeholder {\n color: var(--md-sys-color-outline);\n }\n`\n\nconst StyledImg = styled.img`\n width: 20px;\n height: 20px;\n object-fit: cover;\n\n &.avatar {\n border-radius: 50%;\n }\n`\n\nconst StyledExpandButton = styled.div`\n border-radius: var(--border-radius-m);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n flex-shrink: 0;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-highest-hover);\n }\n\n &.open {\n background-color: transparent;\n }\n`\n\nconst StyledExpandIcon = styled(Icon)`\n transition: rotate 0.2s;\n padding: 2px;\n`\n\nexport interface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: EnumItem[]\n placeholder?: string\n hasMultipleValues?: boolean\n isMultiSelect?: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\n iconOnlyColor?: boolean // When true, only the icon gets colored, not the text label\n pt?: {\n icon?: Partial<IconProps>\n img?: Partial<React.ImgHTMLAttributes<HTMLImageElement>>\n value?: Partial<React.ImgHTMLAttributes<HTMLSpanElement>>\n expand?: Partial<IconProps>\n close?: Partial<IconProps>\n }\n}\n\nexport const EnumCellValue = ({\n selectedOptions,\n placeholder,\n hasMultipleValues,\n isMultiSelect,\n isOpen,\n isItem,\n isSelected,\n isReadOnly,\n iconOnlyColor = false,\n className,\n pt,\n ...props\n}: EnumTemplateProps) => {\n // Destructure pt subprops and their relevant props at the top\n const {\n icon: ptIcon = {},\n img: ptImg = {},\n value: ptValue = {},\n expand: ptExpand = {},\n close: ptClose = {},\n } = pt || {}\n\n const { style: iconStyle, className: iconClassName, ...iconRest } = ptIcon\n const { style: imgStyle, className: imgClassName, ...imgRest } = ptImg\n const { style: valueStyle, className: valueClassName, ...valueRest } = ptValue\n const { style: expandStyle, className: expandClassName, ...expandRest } = ptExpand\n const { style: closeStyle, className: closeClassName, ...closeRest } = ptClose\n\n // Check if all options have icons\n const allOptionsHaveIcon = selectedOptions.every((option) => option.icon)\n\n // Determine if we should show labels based on the requirements\n const showLabels = !hasMultipleValues || !allOptionsHaveIcon\n // Show the colors be backgrounds instead of the text\n const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem\n\n const isPlaceholder = !selectedOptions.length && placeholder\n if (isPlaceholder) {\n selectedOptions = [\n {\n label: placeholder,\n value: '',\n },\n ]\n }\n\n return (\n <StyledWidget className={clsx(className, { selected: isSelected, item: isItem })} {...props}>\n <StyledValuesContainer className=\"values\">\n {selectedOptions.map((option, i) => (\n <StyledValueWrapper key={option.value.toString() + i}>\n {option.icon && checkForImgSrc(option.icon) ? (\n <StyledImg\n src={option.icon}\n className={clsx({ avatar: checkAvatarImg(option.icon) }, imgClassName)}\n style={imgStyle}\n data-tooltip={option.label}\n {...imgRest}\n />\n ) : option.icon ? (\n <Icon\n icon={option.icon}\n style={{ color: option.color, ...iconStyle }}\n className={iconClassName}\n {...iconRest}\n />\n ) : null}\n\n {(showLabels || !option.icon) && (\n <StyledValue\n style={{\n color:\n backgroundColor && option.color\n ? getTextColor(option.color)\n : iconOnlyColor && option.icon\n ? undefined\n : option.color,\n backgroundColor: backgroundColor\n ? option.color || 'var(--md-sys-color-surface-container)'\n : 'transparent',\n ...valueStyle,\n }}\n className={clsx({ placeholder: isPlaceholder }, valueClassName)}\n aria-label={option.label}\n {...valueRest}\n >\n {option.label}\n </StyledValue>\n )}\n </StyledValueWrapper>\n ))}\n </StyledValuesContainer>\n {!isItem && !isReadOnly && (\n <StyledExpandButton\n className={clsx('expand', EDIT_TRIGGER_CLASS, { open: isOpen }, expandClassName)}\n >\n <StyledExpandIcon\n icon=\"expand_more\"\n style={{ rotate: isOpen ? '180deg' : '0', ...expandStyle }}\n aria-label=\"Expand options\"\n {...expandRest}\n />\n </StyledExpandButton>\n )}\n {isItem && isSelected && isMultiSelect && (\n <Icon\n icon=\"close\"\n style={{ marginLeft: 'auto', marginRight: 4, ...closeStyle }}\n aria-label=\"Deselect item\"\n className={clsx('close', closeClassName)}\n {...closeRest}\n />\n )}\n </StyledWidget>\n )\n}\n\n// Helper functions to check if the icon is a valid image source\nconst checkForImgSrc = (icon: string | undefined = ''): boolean => {\n return (\n icon.startsWith('/') ||\n icon.startsWith('./') ||\n icon.startsWith('../') ||\n icon.startsWith('http://') ||\n icon.startsWith('https://')\n )\n}\n\nconst checkAvatarImg = (src: string): boolean => src.includes('avatar')\n"],"names":["EDIT_TRIGGER_CLASS","StyledWidget","styled","StyledValuesContainer","StyledValueWrapper","StyledValue","StyledImg","StyledExpandButton","StyledExpandIcon","Icon","EnumCellValue","selectedOptions","placeholder","hasMultipleValues","isMultiSelect","isOpen","isItem","isSelected","isReadOnly","iconOnlyColor","className","pt","props","ptIcon","ptImg","ptValue","ptExpand","ptClose","iconStyle","iconClassName","iconRest","imgStyle","imgClassName","imgRest","valueStyle","valueClassName","valueRest","expandStyle","expandClassName","expandRest","closeStyle","closeClassName","closeRest","allOptionsHaveIcon","option","showLabels","backgroundColor","isPlaceholder","jsxs","clsx","jsx","i","checkForImgSrc","checkAvatarImg","getTextColor","icon","src"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EnumCellValue.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import type { EnumItem } from '@shared/api'\nimport { getTextColor, Icon, IconProps } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\nimport { wrapMode } from './wrapMode'\n// Inline the edit trigger class to avoid runtime import and circular dependency with CellWidget\nconst EDIT_TRIGGER_CLASS = 'edit-trigger'\n\nconst StyledValue = styled.span`\n text-align: left;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n\n &.placeholder {\n color: var(--md-sys-color-outline);\n }\n`\n\nconst StyledWidget = styled.div`\n display: flex;\n gap: 1px;\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: visible;\n border-radius: var(--border-radius-m);\n padding: 0 1px;\n\n &.item {\n padding: 4px 2px;\n border-radius: 0;\n overflow: hidden;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-hover);\n }\n }\n\n &.selected {\n background-color: var(--md-sys-color-primary-container);\n\n &:hover {\n background-color: var(--md-sys-color-primary-container-hover);\n }\n }\n\n /* wrapped rows sit on a fixed row lattice, so the height clip can only land between rows */\n ${wrapMode`\n &.multi-select:not(.item) {\n .values {\n --wrap-row-height: 24px;\n --wrap-row-gap: var(--base-gap-small);\n flex-wrap: wrap;\n align-items: flex-start;\n align-content: flex-start;\n row-gap: var(--wrap-row-gap);\n max-height: 100%;\n /* var() inside an unsupported round() computes to none, not to the fallback — gate it */\n @supports (max-height: round(down, 100px, 24px)) {\n max-height: calc(\n round(\n down,\n 100cqh + var(--wrap-row-gap),\n calc(var(--wrap-row-height) + var(--wrap-row-gap))\n ) - var(--wrap-row-gap)\n );\n }\n }\n\n .values > * {\n min-height: var(--wrap-row-height);\n }\n\n ${StyledValue} {\n white-space: normal;\n word-break: break-word;\n line-height: var(--wrap-row-height);\n }\n\n .has-img ${StyledValue} {\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n `}\n`\n\nconst StyledValuesContainer = styled.div`\n flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n align-content: flex-start;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n flex-wrap: nowrap;\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: 2px;\n align-items: center;\n\n max-width: 100%;\n min-width: 20px;\n`\n\nconst StyledImg = styled.img`\n width: 20px;\n height: 20px;\n object-fit: cover;\n flex-shrink: 0;\n\n &.avatar {\n border-radius: 50%;\n }\n`\n\nconst StyledExpandButton = styled.div`\n border-radius: var(--border-radius-m);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n flex-shrink: 0;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-highest-hover);\n }\n\n &.open {\n background-color: transparent;\n }\n`\n\nconst StyledExpandIcon = styled(Icon)`\n transition: rotate 0.2s;\n padding: 2px;\n`\n\nexport interface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: EnumItem[]\n placeholder?: string\n hasMultipleValues?: boolean\n isMultiSelect?: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\n iconOnlyColor?: boolean // When true, only the icon gets colored, not the text label\n pt?: {\n icon?: Partial<IconProps>\n img?: Partial<React.ImgHTMLAttributes<HTMLImageElement>>\n value?: Partial<React.ImgHTMLAttributes<HTMLSpanElement>>\n expand?: Partial<IconProps>\n close?: Partial<IconProps>\n }\n}\n\nexport const EnumCellValue = ({\n selectedOptions,\n placeholder,\n hasMultipleValues,\n isMultiSelect,\n isOpen,\n isItem,\n isSelected,\n isReadOnly,\n iconOnlyColor = false,\n className,\n pt,\n ...props\n}: EnumTemplateProps) => {\n // Destructure pt subprops and their relevant props at the top\n const {\n icon: ptIcon = {},\n img: ptImg = {},\n value: ptValue = {},\n expand: ptExpand = {},\n close: ptClose = {},\n } = pt || {}\n\n const { style: iconStyle, className: iconClassName, ...iconRest } = ptIcon\n const { style: imgStyle, className: imgClassName, ...imgRest } = ptImg\n const { style: valueStyle, className: valueClassName, ...valueRest } = ptValue\n const { style: expandStyle, className: expandClassName, ...expandRest } = ptExpand\n const { style: closeStyle, className: closeClassName, ...closeRest } = ptClose\n\n // Check if all options have icons\n const allOptionsHaveIcon = selectedOptions.every((option) => option.icon)\n\n // Determine if we should show labels based on the requirements\n const showLabels = !hasMultipleValues || !allOptionsHaveIcon\n // Show the colors be backgrounds instead of the text\n const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem\n\n const isPlaceholder = !selectedOptions.length && placeholder\n if (isPlaceholder) {\n selectedOptions = [\n {\n label: placeholder,\n value: '',\n },\n ]\n }\n\n return (\n <StyledWidget\n className={clsx(className, {\n selected: isSelected,\n item: isItem,\n 'multi-select': isMultiSelect,\n })}\n {...props}\n >\n <StyledValuesContainer className=\"values\">\n {selectedOptions.map((option, i) => (\n <StyledValueWrapper\n key={option.value.toString() + i}\n className={clsx({ 'has-img': checkForImgSrc(option.icon) })}\n >\n {option.icon && checkForImgSrc(option.icon) ? (\n <StyledImg\n src={option.icon}\n className={clsx({ avatar: checkAvatarImg(option.icon) }, imgClassName)}\n style={imgStyle}\n data-tooltip={option.label}\n {...imgRest}\n />\n ) : option.icon ? (\n <Icon\n icon={option.icon}\n style={{ color: option.color, ...iconStyle }}\n className={iconClassName}\n {...iconRest}\n />\n ) : null}\n\n {(showLabels || !option.icon) && (\n <StyledValue\n style={{\n color:\n backgroundColor && option.color\n ? getTextColor(option.color)\n : iconOnlyColor && option.icon\n ? undefined\n : option.color,\n backgroundColor: backgroundColor\n ? option.color || 'var(--md-sys-color-surface-container)'\n : 'transparent',\n ...valueStyle,\n }}\n className={clsx({ placeholder: isPlaceholder }, valueClassName)}\n aria-label={option.label}\n {...valueRest}\n >\n {option.label}\n </StyledValue>\n )}\n </StyledValueWrapper>\n ))}\n </StyledValuesContainer>\n {!isItem && !isReadOnly && (\n <StyledExpandButton\n className={clsx('expand', EDIT_TRIGGER_CLASS, { open: isOpen }, expandClassName)}\n >\n <StyledExpandIcon\n icon=\"expand_more\"\n style={{ rotate: isOpen ? '180deg' : '0', ...expandStyle }}\n aria-label=\"Expand options\"\n {...expandRest}\n />\n </StyledExpandButton>\n )}\n {isItem && isSelected && isMultiSelect && (\n <Icon\n icon=\"close\"\n style={{ marginLeft: 'auto', marginRight: 4, ...closeStyle }}\n aria-label=\"Deselect item\"\n className={clsx('close', closeClassName)}\n {...closeRest}\n />\n )}\n </StyledWidget>\n )\n}\n\n// Helper functions to check if the icon is a valid image source\nconst checkForImgSrc = (icon: string | undefined = ''): boolean => {\n return (\n icon.startsWith('/') ||\n icon.startsWith('./') ||\n icon.startsWith('../') ||\n icon.startsWith('http://') ||\n icon.startsWith('https://')\n )\n}\n\nconst checkAvatarImg = (src: string): boolean => src.includes('avatar')\n"],"names":["EDIT_TRIGGER_CLASS","StyledValue","styled","StyledWidget","wrapMode","StyledValuesContainer","StyledValueWrapper","StyledImg","StyledExpandButton","StyledExpandIcon","Icon","EnumCellValue","selectedOptions","placeholder","hasMultipleValues","isMultiSelect","isOpen","isItem","isSelected","isReadOnly","iconOnlyColor","className","pt","props","ptIcon","ptImg","ptValue","ptExpand","ptClose","iconStyle","iconClassName","iconRest","imgStyle","imgClassName","imgRest","valueStyle","valueClassName","valueRest","expandStyle","expandClassName","expandRest","closeStyle","closeClassName","closeRest","allOptionsHaveIcon","option","showLabels","backgroundColor","isPlaceholder","jsxs","clsx","jsx","i","checkForImgSrc","checkAvatarImg","getTextColor","icon","src"],"mappings":"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"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../../../../../_virtual/jsx-runtime.cjs.js"),b=require("@ynput/ayon-react-components"),v=require("clsx"),c=require("react"),C=require("styled-components"),x=require("./EnumCellValue.cjs.js"),A=require("./wrapMode.cjs.js"),V=C(b.Dropdown)`
|
|
2
2
|
height: 100%;
|
|
3
3
|
width: 100%;
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
/* the value template clips against the button, so it has to grow with the cell */
|
|
6
|
+
${({$multiSelect:f})=>f&&A.wrapMode`
|
|
7
|
+
.button {
|
|
8
|
+
height: 100%;
|
|
9
|
+
}
|
|
10
|
+
`}
|
|
11
|
+
`,D=c.forwardRef(({value:f,isEditing:p,options:u,type:E,autoOpen:S=!0,isReadOnly:o,enableCustomValues:m,onOpen:T,onChange:j,onCancelEdit:q,onNext:_,pt:l,...s},k)=>{const h=f.map(t=>t?.toString()).filter(t=>!!t);let r=u.filter(t=>h.includes(t.value.toString()));const O=[];h.forEach(t=>{if(!u.find(e=>e.value===t)){const e={label:t,value:t,color:m?"var(--md-sys-color-surface-container)":"var(--md-sys-color-error)",icon:m?void 0:"warning"};r=[...r,e],O.push(e)}});const y=r.length>1,g=[...u,...O],n=c.useRef(null),[w,N]=c.useState(!1);c.useEffect(()=>{p&&n.current&&S?(!n.current.isOpen&&n.current?.open(),N(!0)):N(!1)},[p,n.current,S]),c.useEffect(()=>{if(w&&!s.search&&g.length<20){const e=n.current?.getOptions()?.querySelector("li");e&&(e.focus(),e.style.outline="none")}},[w,s.search,g.length]);const a=!!E?.includes("list"),M=t=>{let e=m?t:t.filter(i=>u.find(R=>R.value===i));E?.includes("list")||(e=Array.isArray(e)?e[0]:e),j(e,"Click")};return p?d.jsxRuntimeExports.jsx(V,{options:g,value:h,ref:n,valueTemplate:(t,e,i)=>d.jsxRuntimeExports.jsx(x.EnumCellValue,{selectedOptions:r,hasMultipleValues:e.length>1,isOpen:i,isReadOnly:o,isMultiSelect:a,...l?.template,placeholder:s.placeholder,className:v("enum-dropdown-value",l?.template?.className)}),itemTemplate:(t,e,i)=>d.jsxRuntimeExports.jsx(x.EnumCellValue,{selectedOptions:[t],hasMultipleValues:!1,isOpen:!1,isItem:!0,isMultiSelect:a,isSelected:i,...l?.template,className:v("enum-dropdown-item",l?.template?.className)}),widthExpand:!0,multiSelect:a,disableOpen:o,disabled:o,sortBySelected:!0,searchOnNumber:10,...s,$multiSelect:a,onChange:M,onClose:q,editable:m}):d.jsxRuntimeExports.jsx(x.EnumCellValue,{selectedOptions:r,hasMultipleValues:y,isMultiSelect:a,isReadOnly:o,...l?.template,placeholder:s.placeholder,className:v("enum-value",l?.template?.className,s.className)})});exports.EnumWidget=D;
|
|
5
12
|
//# sourceMappingURL=EnumWidget.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumWidget.tsx"],"sourcesContent":["import { Dropdown, DropdownProps, DropdownRef } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport { forwardRef, useEffect, useRef, useState } from 'react'\nimport styled from 'styled-components'\nimport type { WidgetBaseProps } from './CellWidget'\nimport { EnumCellValue, EnumTemplateProps } from './EnumCellValue'\nimport type { AttributeData, EnumItem } from '@shared/api'\n\nconst StyledDropdown = styled(Dropdown)
|
|
1
|
+
{"version":3,"file":"EnumWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumWidget.tsx"],"sourcesContent":["import { Dropdown, DropdownProps, DropdownRef } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport { forwardRef, useEffect, useRef, useState } from 'react'\nimport styled from 'styled-components'\nimport type { WidgetBaseProps } from './CellWidget'\nimport { EnumCellValue, EnumTemplateProps } from './EnumCellValue'\nimport type { AttributeData, EnumItem } from '@shared/api'\nimport { wrapMode } from './wrapMode'\n\nconst StyledDropdown = styled(Dropdown)<{ $multiSelect?: boolean }>`\n height: 100%;\n width: 100%;\n\n /* the value template clips against the button, so it has to grow with the cell */\n ${({ $multiSelect }) =>\n $multiSelect &&\n wrapMode`\n .button {\n height: 100%;\n }\n `}\n`\n\nexport interface EnumWidgetProps\n extends Omit<DropdownProps, 'onChange' | 'value' | 'pt'>,\n WidgetBaseProps {\n value: (string | number | boolean)[]\n options: EnumItem[]\n type?: AttributeData['type']\n autoOpen?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n pt?: {\n template?: Partial<EnumTemplateProps>\n }\n onOpen?: () => void\n onNext?: () => void\n}\n\nexport const EnumWidget = forwardRef<HTMLDivElement, EnumWidgetProps>(\n (\n {\n value,\n isEditing,\n options,\n type,\n autoOpen = true,\n isReadOnly,\n enableCustomValues,\n onOpen,\n onChange,\n onCancelEdit,\n onNext,\n pt,\n ...dropdownProps\n },\n _ref,\n ) => {\n // convert value to string array\n const valueAsStrings = value.map((v) => v?.toString()).filter((v) => !!v)\n let selectedOptions = options.filter((option) =>\n valueAsStrings.includes(option.value.toString()),\n )\n\n // Check if all values are present in options, if not, add a warning\n const invalidOptions: EnumItem[] = []\n valueAsStrings.forEach((val) => {\n if (!options.find((option) => option.value === val)) {\n const invalidOption = {\n label: val,\n value: val,\n color: enableCustomValues\n ? 'var(--md-sys-color-surface-container)'\n : 'var(--md-sys-color-error)',\n icon: enableCustomValues ? undefined : 'warning',\n }\n selectedOptions = [...selectedOptions, invalidOption]\n invalidOptions.push(invalidOption)\n }\n })\n const hasMultipleValues = selectedOptions.length > 1\n\n // Merge valid options with invalid options for the dropdown\n const allOptions = [...options, ...invalidOptions]\n\n const dropdownRef = useRef<DropdownRef>(null)\n\n const [dropdownOpen, setDropdownOpen] = useState(false)\n useEffect(() => {\n if (isEditing && dropdownRef.current && autoOpen) {\n !dropdownRef.current.isOpen && dropdownRef.current?.open()\n setDropdownOpen(true)\n } else {\n setDropdownOpen(false)\n }\n }, [isEditing, dropdownRef.current, autoOpen])\n\n // when the dropdown is open, focus the first item\n useEffect(() => {\n if (dropdownOpen && !dropdownProps.search && allOptions.length < 20) {\n const optionsUlEl = dropdownRef.current?.getOptions() as HTMLUListElement\n const firstItem = optionsUlEl?.querySelector('li')\n if (firstItem) {\n firstItem.focus()\n // set style of li to have no outline (no focus ring)\n firstItem.style.outline = 'none'\n }\n }\n }, [dropdownOpen, dropdownProps.search, allOptions.length])\n\n const isMultiSelect = !!type?.includes('list')\n\n const handleChange = (newValue: string[]) => {\n let filteredValue: string | string[] = enableCustomValues\n ? newValue\n : newValue.filter((v) => options.find((o) => o.value === v))\n\n if (type?.includes('list')) {\n onChange(filteredValue, 'Click')\n } else {\n // check if the value is an array or a string and for arrays take the first value only\n filteredValue = Array.isArray(filteredValue) ? filteredValue[0] : filteredValue\n\n // take first value as the type is not list]\n onChange(filteredValue, 'Click')\n }\n }\n\n if (isEditing) {\n return (\n <StyledDropdown\n options={allOptions}\n value={valueAsStrings}\n ref={dropdownRef}\n valueTemplate={(_value, selected, isOpen) => (\n <EnumCellValue\n selectedOptions={selectedOptions}\n hasMultipleValues={selected.length > 1}\n isOpen={isOpen}\n isReadOnly={isReadOnly}\n isMultiSelect={isMultiSelect}\n {...pt?.template}\n placeholder={dropdownProps.placeholder}\n className={clsx('enum-dropdown-value', pt?.template?.className)}\n />\n )}\n itemTemplate={(option, _isActive, isSelected) => (\n <EnumCellValue\n selectedOptions={[option]}\n hasMultipleValues={false}\n isOpen={false}\n isItem\n isMultiSelect={isMultiSelect}\n isSelected={isSelected}\n {...pt?.template}\n className={clsx('enum-dropdown-item', pt?.template?.className)}\n />\n )}\n widthExpand\n multiSelect={isMultiSelect}\n disableOpen={isReadOnly}\n disabled={isReadOnly}\n sortBySelected\n searchOnNumber={10}\n {...dropdownProps}\n $multiSelect={isMultiSelect}\n onChange={handleChange}\n onClose={onCancelEdit}\n editable={enableCustomValues}\n />\n )\n }\n\n return (\n <EnumCellValue\n selectedOptions={selectedOptions}\n hasMultipleValues={hasMultipleValues}\n isMultiSelect={isMultiSelect}\n isReadOnly={isReadOnly}\n {...pt?.template}\n placeholder={dropdownProps.placeholder}\n className={clsx('enum-value', pt?.template?.className, dropdownProps.className)}\n />\n )\n },\n)\n"],"names":["StyledDropdown","styled","Dropdown","$multiSelect","wrapMode","EnumWidget","forwardRef","value","isEditing","options","type","autoOpen","isReadOnly","enableCustomValues","onOpen","onChange","onCancelEdit","onNext","pt","dropdownProps","_ref","valueAsStrings","v","selectedOptions","option","invalidOptions","val","invalidOption","hasMultipleValues","allOptions","dropdownRef","useRef","dropdownOpen","setDropdownOpen","useState","useEffect","firstItem","isMultiSelect","handleChange","newValue","filteredValue","o","jsx","_value","selected","isOpen","EnumCellValue","clsx","_isActive","isSelected"],"mappings":"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"}
|
|
@@ -1,115 +1,124 @@
|
|
|
1
1
|
import { j as m } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { Dropdown as
|
|
3
|
-
import
|
|
4
|
-
import { forwardRef as
|
|
2
|
+
import { Dropdown as D } from "@ynput/ayon-react-components";
|
|
3
|
+
import v from "clsx";
|
|
4
|
+
import { forwardRef as _, useRef as k, useState as C, useEffect as E } from "react";
|
|
5
5
|
import I from "styled-components";
|
|
6
|
-
import { EnumCellValue as
|
|
7
|
-
|
|
6
|
+
import { EnumCellValue as g } from "./EnumCellValue.es.js";
|
|
7
|
+
import { wrapMode as T } from "./wrapMode.es.js";
|
|
8
|
+
const U = I(D)`
|
|
8
9
|
height: 100%;
|
|
9
10
|
width: 100%;
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
/* the value template clips against the button, so it has to grow with the cell */
|
|
13
|
+
${({ $multiSelect: f }) => f && T`
|
|
14
|
+
.button {
|
|
15
|
+
height: 100%;
|
|
16
|
+
}
|
|
17
|
+
`}
|
|
18
|
+
`, J = _(
|
|
11
19
|
({
|
|
12
|
-
value:
|
|
13
|
-
isEditing:
|
|
14
|
-
options:
|
|
15
|
-
type:
|
|
16
|
-
autoOpen:
|
|
17
|
-
isReadOnly:
|
|
18
|
-
enableCustomValues:
|
|
19
|
-
onOpen:
|
|
20
|
+
value: f,
|
|
21
|
+
isEditing: p,
|
|
22
|
+
options: o,
|
|
23
|
+
type: x,
|
|
24
|
+
autoOpen: S = !0,
|
|
25
|
+
isReadOnly: c,
|
|
26
|
+
enableCustomValues: u,
|
|
27
|
+
onOpen: $,
|
|
20
28
|
onChange: N,
|
|
21
29
|
onCancelEdit: y,
|
|
22
30
|
onNext: q,
|
|
23
31
|
pt: l,
|
|
24
32
|
...s
|
|
25
33
|
}, B) => {
|
|
26
|
-
const
|
|
27
|
-
let
|
|
28
|
-
(t) =>
|
|
34
|
+
const h = f.map((t) => t?.toString()).filter((t) => !!t);
|
|
35
|
+
let a = o.filter(
|
|
36
|
+
(t) => h.includes(t.value.toString())
|
|
29
37
|
);
|
|
30
38
|
const O = [];
|
|
31
|
-
|
|
32
|
-
if (!
|
|
39
|
+
h.forEach((t) => {
|
|
40
|
+
if (!o.find((e) => e.value === t)) {
|
|
33
41
|
const e = {
|
|
34
42
|
label: t,
|
|
35
43
|
value: t,
|
|
36
|
-
color:
|
|
37
|
-
icon:
|
|
44
|
+
color: u ? "var(--md-sys-color-surface-container)" : "var(--md-sys-color-error)",
|
|
45
|
+
icon: u ? void 0 : "warning"
|
|
38
46
|
};
|
|
39
|
-
|
|
47
|
+
a = [...a, e], O.push(e);
|
|
40
48
|
}
|
|
41
49
|
});
|
|
42
|
-
const
|
|
50
|
+
const M = a.length > 1, d = [...o, ...O], r = k(null), [w, j] = C(!1);
|
|
43
51
|
E(() => {
|
|
44
|
-
|
|
45
|
-
}, [
|
|
46
|
-
if (
|
|
52
|
+
p && r.current && S ? (!r.current.isOpen && r.current?.open(), j(!0)) : j(!1);
|
|
53
|
+
}, [p, r.current, S]), E(() => {
|
|
54
|
+
if (w && !s.search && d.length < 20) {
|
|
47
55
|
const e = r.current?.getOptions()?.querySelector("li");
|
|
48
56
|
e && (e.focus(), e.style.outline = "none");
|
|
49
57
|
}
|
|
50
|
-
}, [
|
|
51
|
-
const
|
|
52
|
-
let e =
|
|
53
|
-
|
|
58
|
+
}, [w, s.search, d.length]);
|
|
59
|
+
const i = !!x?.includes("list"), b = (t) => {
|
|
60
|
+
let e = u ? t : t.filter((n) => o.find((A) => A.value === n));
|
|
61
|
+
x?.includes("list") || (e = Array.isArray(e) ? e[0] : e), N(e, "Click");
|
|
54
62
|
};
|
|
55
|
-
return
|
|
56
|
-
|
|
63
|
+
return p ? /* @__PURE__ */ m.jsx(
|
|
64
|
+
U,
|
|
57
65
|
{
|
|
58
66
|
options: d,
|
|
59
|
-
value:
|
|
67
|
+
value: h,
|
|
60
68
|
ref: r,
|
|
61
|
-
valueTemplate: (t, e,
|
|
62
|
-
|
|
69
|
+
valueTemplate: (t, e, n) => /* @__PURE__ */ m.jsx(
|
|
70
|
+
g,
|
|
63
71
|
{
|
|
64
|
-
selectedOptions:
|
|
72
|
+
selectedOptions: a,
|
|
65
73
|
hasMultipleValues: e.length > 1,
|
|
66
|
-
isOpen:
|
|
67
|
-
isReadOnly:
|
|
68
|
-
isMultiSelect:
|
|
74
|
+
isOpen: n,
|
|
75
|
+
isReadOnly: c,
|
|
76
|
+
isMultiSelect: i,
|
|
69
77
|
...l?.template,
|
|
70
78
|
placeholder: s.placeholder,
|
|
71
|
-
className:
|
|
79
|
+
className: v("enum-dropdown-value", l?.template?.className)
|
|
72
80
|
}
|
|
73
81
|
),
|
|
74
|
-
itemTemplate: (t, e,
|
|
75
|
-
|
|
82
|
+
itemTemplate: (t, e, n) => /* @__PURE__ */ m.jsx(
|
|
83
|
+
g,
|
|
76
84
|
{
|
|
77
85
|
selectedOptions: [t],
|
|
78
86
|
hasMultipleValues: !1,
|
|
79
87
|
isOpen: !1,
|
|
80
88
|
isItem: !0,
|
|
81
|
-
isMultiSelect:
|
|
82
|
-
isSelected:
|
|
89
|
+
isMultiSelect: i,
|
|
90
|
+
isSelected: n,
|
|
83
91
|
...l?.template,
|
|
84
|
-
className:
|
|
92
|
+
className: v("enum-dropdown-item", l?.template?.className)
|
|
85
93
|
}
|
|
86
94
|
),
|
|
87
95
|
widthExpand: !0,
|
|
88
|
-
multiSelect:
|
|
89
|
-
disableOpen:
|
|
90
|
-
disabled:
|
|
96
|
+
multiSelect: i,
|
|
97
|
+
disableOpen: c,
|
|
98
|
+
disabled: c,
|
|
91
99
|
sortBySelected: !0,
|
|
92
100
|
searchOnNumber: 10,
|
|
93
101
|
...s,
|
|
94
|
-
|
|
102
|
+
$multiSelect: i,
|
|
103
|
+
onChange: b,
|
|
95
104
|
onClose: y,
|
|
96
|
-
editable:
|
|
105
|
+
editable: u
|
|
97
106
|
}
|
|
98
107
|
) : /* @__PURE__ */ m.jsx(
|
|
99
|
-
|
|
108
|
+
g,
|
|
100
109
|
{
|
|
101
|
-
selectedOptions:
|
|
102
|
-
hasMultipleValues:
|
|
103
|
-
isMultiSelect:
|
|
104
|
-
isReadOnly:
|
|
110
|
+
selectedOptions: a,
|
|
111
|
+
hasMultipleValues: M,
|
|
112
|
+
isMultiSelect: i,
|
|
113
|
+
isReadOnly: c,
|
|
105
114
|
...l?.template,
|
|
106
115
|
placeholder: s.placeholder,
|
|
107
|
-
className:
|
|
116
|
+
className: v("enum-value", l?.template?.className, s.className)
|
|
108
117
|
}
|
|
109
118
|
);
|
|
110
119
|
}
|
|
111
120
|
);
|
|
112
121
|
export {
|
|
113
|
-
|
|
122
|
+
J as EnumWidget
|
|
114
123
|
};
|
|
115
124
|
//# sourceMappingURL=EnumWidget.es.js.map
|