@teambit/workspace 0.0.671 → 0.0.674
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/ui/workspace-components-drawer/workspace-components-drawer.module.scss +33 -0
- package/dist/ui/workspace-components-drawer/workspace-components.drawer.d.ts +2 -1
- package/dist/ui/workspace-components-drawer/workspace-components.drawer.js +97 -7
- package/dist/ui/workspace-components-drawer/workspace-components.drawer.js.map +1 -1
- package/dist/workspace.docs.mdx +8 -0
- package/package-tar/teambit-workspace-0.0.674.tgz +0 -0
- package/package.json +29 -26
- package/preview-1647202499074.js +1 -0
- package/ui/workspace-components-drawer/workspace-components-drawer.module.scss +33 -0
- package/ui/workspace-components-drawer/workspace-components.drawer.tsx +82 -7
- package/workspace.docs.mdx +8 -0
- package/package-tar/teambit-workspace-0.0.671.tgz +0 -0
- package/preview-1646920477648.js +0 -1
|
@@ -6,3 +6,36 @@
|
|
|
6
6
|
.collapseIcon {
|
|
7
7
|
width: 16px;
|
|
8
8
|
}
|
|
9
|
+
|
|
10
|
+
.deprecateFilter {
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: row;
|
|
13
|
+
font-size: 14px;
|
|
14
|
+
justify-content: space-between;
|
|
15
|
+
padding: 8px;
|
|
16
|
+
margin: 4px 8px;
|
|
17
|
+
|
|
18
|
+
.filterIcon {
|
|
19
|
+
line-height: 16px;
|
|
20
|
+
display: flex;
|
|
21
|
+
|
|
22
|
+
.filterIconLabel {
|
|
23
|
+
margin: 0px 8px;
|
|
24
|
+
font-size: 12px;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.filterWidgetIcon {
|
|
30
|
+
margin-right: 12px;
|
|
31
|
+
padding: 4px;
|
|
32
|
+
|
|
33
|
+
&:hover {
|
|
34
|
+
background: white;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&.open {
|
|
38
|
+
color: var(--bit-accent-color, #6c5ce7);
|
|
39
|
+
background-color: var(--bit-bg-heavy, #f6f6f6);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -6,9 +6,10 @@ export declare class WorkspaceComponentsDrawer implements DrawerType {
|
|
|
6
6
|
constructor(treeNodeSlot: ComponentTreeSlot);
|
|
7
7
|
id: string;
|
|
8
8
|
name: string;
|
|
9
|
-
|
|
9
|
+
widgets: JSX.Element[];
|
|
10
10
|
Context: ({ children }: {
|
|
11
11
|
children: any;
|
|
12
12
|
}) => JSX.Element;
|
|
13
|
+
Filters: JSX.Element[];
|
|
13
14
|
render: () => JSX.Element;
|
|
14
15
|
}
|
|
@@ -49,6 +49,16 @@ function _uiFoundationUi2() {
|
|
|
49
49
|
return data;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
function _evangelistElements() {
|
|
53
|
+
const data = require("@teambit/evangelist.elements.icon");
|
|
54
|
+
|
|
55
|
+
_evangelistElements = function () {
|
|
56
|
+
return data;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
return data;
|
|
60
|
+
}
|
|
61
|
+
|
|
52
62
|
function _react() {
|
|
53
63
|
const data = _interopRequireWildcard(require("react"));
|
|
54
64
|
|
|
@@ -89,6 +99,16 @@ function _designUiStyles2() {
|
|
|
89
99
|
return data;
|
|
90
100
|
}
|
|
91
101
|
|
|
102
|
+
function _designUiInput() {
|
|
103
|
+
const data = require("@teambit/design.ui.input.toggle");
|
|
104
|
+
|
|
105
|
+
_designUiInput = function () {
|
|
106
|
+
return data;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
return data;
|
|
110
|
+
}
|
|
111
|
+
|
|
92
112
|
function _workspaceContext() {
|
|
93
113
|
const data = require("../workspace/workspace-context");
|
|
94
114
|
|
|
@@ -115,7 +135,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
115
135
|
|
|
116
136
|
const WorkspaceTreeContext = /*#__PURE__*/(0, _react().createContext)({
|
|
117
137
|
collapsed: true,
|
|
118
|
-
setCollapsed: () => {}
|
|
138
|
+
setCollapsed: () => {},
|
|
139
|
+
activeFilters: [],
|
|
140
|
+
setActiveFilter: () => {},
|
|
141
|
+
filterOpen: false,
|
|
142
|
+
setFilterOpen: () => {}
|
|
119
143
|
});
|
|
120
144
|
|
|
121
145
|
class WorkspaceComponentsDrawer {
|
|
@@ -123,26 +147,53 @@ class WorkspaceComponentsDrawer {
|
|
|
123
147
|
this.treeNodeSlot = treeNodeSlot;
|
|
124
148
|
(0, _defineProperty2().default)(this, "id", 'workspace-components');
|
|
125
149
|
(0, _defineProperty2().default)(this, "name", 'COMPONENTS');
|
|
126
|
-
(0, _defineProperty2().default)(this, "
|
|
150
|
+
(0, _defineProperty2().default)(this, "widgets", [/*#__PURE__*/_react().default.createElement(FilterWidget, {
|
|
151
|
+
key: 'filter-widget'
|
|
152
|
+
}), /*#__PURE__*/_react().default.createElement(TreeToggleWidget, {
|
|
153
|
+
key: 'tree-toggle-widget'
|
|
154
|
+
})]);
|
|
127
155
|
(0, _defineProperty2().default)(this, "Context", ({
|
|
128
156
|
children
|
|
129
157
|
}) => {
|
|
130
158
|
const [collapsed, setCollapsed] = (0, _react().useState)(true);
|
|
159
|
+
const [activeFilters, setActiveFilters] = (0, _react().useState)([]);
|
|
160
|
+
const [filterOpen, setFilterOpen] = (0, _react().useState)(false);
|
|
161
|
+
|
|
162
|
+
const handleActiveFilterToggle = filterId => {
|
|
163
|
+
const isFilterActive = activeFilters.includes(filterId);
|
|
164
|
+
|
|
165
|
+
if (isFilterActive) {
|
|
166
|
+
setActiveFilters(list => list.filter(id => id !== filterId));
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
setActiveFilters(list => list.concat(filterId));
|
|
171
|
+
};
|
|
172
|
+
|
|
131
173
|
return /*#__PURE__*/_react().default.createElement(WorkspaceTreeContext.Provider, {
|
|
132
174
|
value: {
|
|
133
175
|
collapsed,
|
|
134
|
-
setCollapsed
|
|
176
|
+
setCollapsed,
|
|
177
|
+
activeFilters,
|
|
178
|
+
setActiveFilter: handleActiveFilterToggle,
|
|
179
|
+
filterOpen,
|
|
180
|
+
setFilterOpen
|
|
135
181
|
}
|
|
136
182
|
}, children);
|
|
137
183
|
});
|
|
184
|
+
(0, _defineProperty2().default)(this, "Filters", [/*#__PURE__*/_react().default.createElement(DeprecateFilter, {
|
|
185
|
+
key: 'deprecate-filter'
|
|
186
|
+
})]);
|
|
138
187
|
(0, _defineProperty2().default)(this, "render", () => {
|
|
139
188
|
const workspace = (0, _react().useContext)(_workspaceContext().WorkspaceContext);
|
|
140
189
|
const {
|
|
141
|
-
collapsed
|
|
190
|
+
collapsed,
|
|
191
|
+
activeFilters
|
|
142
192
|
} = (0, _react().useContext)(WorkspaceTreeContext);
|
|
143
193
|
const {
|
|
144
194
|
treeNodeSlot
|
|
145
195
|
} = this;
|
|
196
|
+
const showDeprecatedComponents = activeFilters.find(activeFilter => activeFilter === 'deprecate');
|
|
146
197
|
const TreeNodeRenderer = (0, _react().useCallback)(function TreeNode(props) {
|
|
147
198
|
const children = props.node.children;
|
|
148
199
|
if (!children) return /*#__PURE__*/_react().default.createElement(_uiFoundationUi2().ComponentView, (0, _extends2().default)({}, props, {
|
|
@@ -153,15 +204,20 @@ class WorkspaceComponentsDrawer {
|
|
|
153
204
|
return /*#__PURE__*/_react().default.createElement(_uiFoundationUi2().NamespaceTreeNode, props);
|
|
154
205
|
}, [treeNodeSlot]);
|
|
155
206
|
if (!workspace) return /*#__PURE__*/_react().default.createElement(_uiFoundationUi().FullLoader, null);
|
|
207
|
+
const components = showDeprecatedComponents ? workspace.components : workspace.components.filter(component => {
|
|
208
|
+
var _component$deprecatio;
|
|
156
209
|
|
|
157
|
-
|
|
210
|
+
return !((_component$deprecatio = component.deprecation) !== null && _component$deprecatio !== void 0 && _component$deprecatio.isDeprecate);
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
if (components.length === 0) {
|
|
158
214
|
return /*#__PURE__*/_react().default.createElement("span", {
|
|
159
215
|
className: (0, _classnames().default)(_designUiStyles().mutedItalic, _designUiStyles2().ellipsis, _workspaceComponentsDrawerModule().default.emptyWorkspace)
|
|
160
216
|
}, "Workspace is empty");
|
|
161
217
|
}
|
|
162
218
|
|
|
163
219
|
return /*#__PURE__*/_react().default.createElement(_uiFoundationUi2().ComponentTree, {
|
|
164
|
-
components:
|
|
220
|
+
components: components,
|
|
165
221
|
isCollapsed: collapsed,
|
|
166
222
|
TreeNode: TreeNodeRenderer
|
|
167
223
|
});
|
|
@@ -172,7 +228,7 @@ class WorkspaceComponentsDrawer {
|
|
|
172
228
|
|
|
173
229
|
exports.WorkspaceComponentsDrawer = WorkspaceComponentsDrawer;
|
|
174
230
|
|
|
175
|
-
function
|
|
231
|
+
function TreeToggleWidget() {
|
|
176
232
|
const {
|
|
177
233
|
collapsed,
|
|
178
234
|
setCollapsed
|
|
@@ -185,4 +241,38 @@ function Widget() {
|
|
|
185
241
|
});
|
|
186
242
|
}
|
|
187
243
|
|
|
244
|
+
function FilterWidget() {
|
|
245
|
+
const {
|
|
246
|
+
filterOpen,
|
|
247
|
+
setFilterOpen
|
|
248
|
+
} = (0, _react().useContext)(WorkspaceTreeContext);
|
|
249
|
+
return /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
|
|
250
|
+
className: (0, _classnames().default)(_workspaceComponentsDrawerModule().default.filterWidgetIcon, filterOpen && _workspaceComponentsDrawerModule().default.open),
|
|
251
|
+
of: "Ripple_filters",
|
|
252
|
+
onClick: () => setFilterOpen(!filterOpen)
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
function DeprecateFilter() {
|
|
257
|
+
const {
|
|
258
|
+
activeFilters,
|
|
259
|
+
setActiveFilter,
|
|
260
|
+
filterOpen
|
|
261
|
+
} = (0, _react().useContext)(WorkspaceTreeContext);
|
|
262
|
+
const isActive = activeFilters.includes('deprecate');
|
|
263
|
+
if (!filterOpen) return null;
|
|
264
|
+
return /*#__PURE__*/_react().default.createElement("div", {
|
|
265
|
+
className: (0, _classnames().default)(_workspaceComponentsDrawerModule().default.deprecateFilter, isActive && _workspaceComponentsDrawerModule().default.active)
|
|
266
|
+
}, /*#__PURE__*/_react().default.createElement("div", {
|
|
267
|
+
className: _workspaceComponentsDrawerModule().default.filterIcon
|
|
268
|
+
}, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
|
|
269
|
+
of: "note-deprecated"
|
|
270
|
+
}), /*#__PURE__*/_react().default.createElement("span", {
|
|
271
|
+
className: _workspaceComponentsDrawerModule().default.filterIconLabel
|
|
272
|
+
}, "Deprecated")), /*#__PURE__*/_react().default.createElement("div", null, /*#__PURE__*/_react().default.createElement(_designUiInput().Toggle, {
|
|
273
|
+
checked: isActive,
|
|
274
|
+
onInputChanged: () => setActiveFilter('deprecate')
|
|
275
|
+
})));
|
|
276
|
+
}
|
|
277
|
+
|
|
188
278
|
//# sourceMappingURL=workspace-components.drawer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["workspace-components.drawer.tsx"],"names":["WorkspaceTreeContext","collapsed","setCollapsed","WorkspaceComponentsDrawer","constructor","treeNodeSlot","children","workspace","WorkspaceContext","TreeNodeRenderer","TreeNode","props","node","payload","ScopePayload","components","length","mutedItalic","ellipsis","styles","emptyWorkspace","
|
|
1
|
+
{"version":3,"sources":["workspace-components.drawer.tsx"],"names":["WorkspaceTreeContext","collapsed","setCollapsed","activeFilters","setActiveFilter","filterOpen","setFilterOpen","WorkspaceComponentsDrawer","constructor","treeNodeSlot","children","setActiveFilters","handleActiveFilterToggle","filterId","isFilterActive","includes","list","filter","id","concat","workspace","WorkspaceContext","showDeprecatedComponents","find","activeFilter","TreeNodeRenderer","TreeNode","props","node","payload","ScopePayload","components","component","deprecation","isDeprecate","length","mutedItalic","ellipsis","styles","emptyWorkspace","TreeToggleWidget","icon","collapseIcon","FilterWidget","filterWidgetIcon","open","DeprecateFilter","isActive","deprecateFilter","active","filterIcon","filterIconLabel"],"mappings":"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","sourcesContent":["import type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { FullLoader } from '@teambit/ui-foundation.ui.full-loader';\nimport {\n ComponentTree,\n PayloadType,\n ComponentView,\n ScopeTreeNode,\n NamespaceTreeNode,\n ScopePayload,\n} from '@teambit/ui-foundation.ui.side-bar';\nimport { Icon } from '@teambit/evangelist.elements.icon';\nimport { TreeNodeProps } from '@teambit/design.ui.tree';\nimport React, { useCallback, useContext, useState, createContext } from 'react';\nimport classNames from 'classnames';\nimport { ComponentTreeSlot } from '@teambit/component-tree';\nimport { mutedItalic } from '@teambit/design.ui.styles.muted-italic';\nimport { ellipsis } from '@teambit/design.ui.styles.ellipsis';\nimport { Toggle } from '@teambit/design.ui.input.toggle';\nimport { WorkspaceContext } from '../workspace/workspace-context';\nimport styles from './workspace-components-drawer.module.scss';\n\ntype WorkspaceTreeContextType = {\n collapsed: boolean;\n setCollapsed: (x: boolean) => void;\n filterOpen: boolean;\n setFilterOpen: (open: boolean) => void;\n activeFilters: string[];\n setActiveFilter: (filterId: string) => void;\n};\nconst WorkspaceTreeContext = createContext<WorkspaceTreeContextType>({\n collapsed: true,\n setCollapsed: () => {},\n activeFilters: [],\n setActiveFilter: () => {},\n filterOpen: false,\n setFilterOpen: () => {},\n});\n\nexport class WorkspaceComponentsDrawer implements DrawerType {\n constructor(private treeNodeSlot: ComponentTreeSlot) {}\n\n id = 'workspace-components';\n name = 'COMPONENTS';\n\n widgets = [<FilterWidget key={'filter-widget'} />, <TreeToggleWidget key={'tree-toggle-widget'} />];\n\n Context = ({ children }) => {\n const [collapsed, setCollapsed] = useState(true);\n const [activeFilters, setActiveFilters] = useState<string[]>([]);\n const [filterOpen, setFilterOpen] = useState<boolean>(false);\n\n const handleActiveFilterToggle = (filterId: string) => {\n const isFilterActive = activeFilters.includes(filterId);\n if (isFilterActive) {\n setActiveFilters((list) => list.filter((id) => id !== filterId));\n return;\n }\n setActiveFilters((list) => list.concat(filterId));\n };\n\n return (\n <WorkspaceTreeContext.Provider\n value={{\n collapsed,\n setCollapsed,\n activeFilters,\n setActiveFilter: handleActiveFilterToggle,\n filterOpen,\n setFilterOpen,\n }}\n >\n {children}\n </WorkspaceTreeContext.Provider>\n );\n };\n\n Filters = [<DeprecateFilter key={'deprecate-filter'} />];\n\n render = () => {\n const workspace = useContext(WorkspaceContext);\n const { collapsed, activeFilters } = useContext(WorkspaceTreeContext);\n const { treeNodeSlot } = this;\n const showDeprecatedComponents = activeFilters.find((activeFilter) => activeFilter === 'deprecate');\n\n const TreeNodeRenderer = useCallback(\n function TreeNode(props: TreeNodeProps<PayloadType>) {\n const children = props.node.children;\n\n if (!children) return <ComponentView {...props} treeNodeSlot={treeNodeSlot} />; // non collapse\n\n if (props.node.payload instanceof ScopePayload) return <ScopeTreeNode {...props} />;\n\n return <NamespaceTreeNode {...props} />;\n },\n [treeNodeSlot]\n );\n\n if (!workspace) return <FullLoader />;\n\n const components = showDeprecatedComponents\n ? workspace.components\n : workspace.components.filter((component) => !component.deprecation?.isDeprecate);\n\n if (components.length === 0) {\n return <span className={classNames(mutedItalic, ellipsis, styles.emptyWorkspace)}>Workspace is empty</span>;\n }\n\n return <ComponentTree components={components} isCollapsed={collapsed} TreeNode={TreeNodeRenderer} />;\n };\n}\n\nfunction TreeToggleWidget() {\n const { collapsed, setCollapsed } = useContext(WorkspaceTreeContext);\n const icon = collapsed\n ? 'https://static.bit.dev/bit-icons/expand.svg'\n : 'https://static.bit.dev/bit-icons/collapse.svg';\n return <img src={icon} className={styles.collapseIcon} onClick={() => setCollapsed(!collapsed)} />;\n}\n\nfunction FilterWidget() {\n const { filterOpen, setFilterOpen } = useContext(WorkspaceTreeContext);\n return (\n <Icon\n className={classNames(styles.filterWidgetIcon, filterOpen && styles.open)}\n of=\"Ripple_filters\"\n onClick={() => setFilterOpen(!filterOpen)}\n />\n );\n}\n\nfunction DeprecateFilter() {\n const { activeFilters, setActiveFilter, filterOpen } = useContext(WorkspaceTreeContext);\n const isActive = activeFilters.includes('deprecate');\n\n if (!filterOpen) return null;\n\n return (\n <div className={classNames(styles.deprecateFilter, isActive && styles.active)}>\n <div className={styles.filterIcon}>\n <Icon of=\"note-deprecated\" />\n <span className={styles.filterIconLabel}>Deprecated</span>\n </div>\n <div>\n <Toggle checked={isActive} onInputChanged={() => setActiveFilter('deprecate')} />\n </div>\n </div>\n );\n}\n"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/workspace",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.674",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/workspace/workspace",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.workspace",
|
|
8
8
|
"name": "workspace",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.674"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
@@ -38,45 +38,47 @@
|
|
|
38
38
|
"core-js": "^3.0.0",
|
|
39
39
|
"@teambit/base-ui.surfaces.split-pane.hover-splitter": "1.0.0",
|
|
40
40
|
"@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
|
|
41
|
+
"@teambit/design.ui.input.toggle": "1.0.12",
|
|
42
|
+
"@teambit/evangelist.elements.icon": "1.0.2",
|
|
41
43
|
"@teambit/component-id": "0.0.401",
|
|
42
44
|
"@teambit/bit-error": "0.0.394",
|
|
43
45
|
"@teambit/legacy-bit-id": "0.0.398",
|
|
44
|
-
"@teambit/logger": "0.0.
|
|
45
|
-
"@teambit/scope": "0.0.
|
|
46
|
+
"@teambit/logger": "0.0.544",
|
|
47
|
+
"@teambit/scope": "0.0.674",
|
|
46
48
|
"@teambit/cli": "0.0.452",
|
|
47
|
-
"@teambit/isolator": "0.0.
|
|
48
|
-
"@teambit/component-tree": "0.0.
|
|
49
|
+
"@teambit/isolator": "0.0.674",
|
|
50
|
+
"@teambit/component-tree": "0.0.462",
|
|
49
51
|
"@teambit/component.ui.component-status-resolver": "0.0.492",
|
|
50
|
-
"@teambit/lanes.ui.lanes": "0.0.
|
|
52
|
+
"@teambit/lanes.ui.lanes": "0.0.13",
|
|
51
53
|
"@teambit/harmony.modules.resolved-component": "0.0.484",
|
|
52
|
-
"@teambit/dependency-resolver": "0.0.
|
|
53
|
-
"@teambit/compiler": "0.0.
|
|
54
|
-
"@teambit/component": "0.0.
|
|
55
|
-
"@teambit/graphql": "0.0.
|
|
56
|
-
"@teambit/aspect-loader": "0.0.
|
|
57
|
-
"@teambit/bundler": "0.0.
|
|
58
|
-
"@teambit/envs": "0.0.
|
|
59
|
-
"@teambit/pubsub": "0.0.
|
|
60
|
-
"@teambit/ui": "0.0.
|
|
61
|
-
"@teambit/variants": "0.0.
|
|
54
|
+
"@teambit/dependency-resolver": "0.0.674",
|
|
55
|
+
"@teambit/compiler": "0.0.674",
|
|
56
|
+
"@teambit/component": "0.0.674",
|
|
57
|
+
"@teambit/graphql": "0.0.674",
|
|
58
|
+
"@teambit/aspect-loader": "0.0.674",
|
|
59
|
+
"@teambit/bundler": "0.0.674",
|
|
60
|
+
"@teambit/envs": "0.0.674",
|
|
61
|
+
"@teambit/pubsub": "0.0.674",
|
|
62
|
+
"@teambit/ui": "0.0.674",
|
|
63
|
+
"@teambit/variants": "0.0.547",
|
|
62
64
|
"@teambit/component-issues": "0.0.46",
|
|
63
65
|
"@teambit/config": "0.0.465",
|
|
64
66
|
"@teambit/harmony.modules.requireable-component": "0.0.484",
|
|
65
|
-
"@teambit/importer": "0.0.
|
|
67
|
+
"@teambit/importer": "0.0.103",
|
|
66
68
|
"@teambit/workspace.modules.match-pattern": "0.0.489",
|
|
67
|
-
"@teambit/command-bar": "0.0.
|
|
69
|
+
"@teambit/command-bar": "0.0.674",
|
|
68
70
|
"@teambit/design.ui.surfaces.menu.link-item": "0.0.379",
|
|
69
|
-
"@teambit/graph": "0.0.
|
|
70
|
-
"@teambit/react-router": "0.0.
|
|
71
|
-
"@teambit/sidebar": "0.0.
|
|
71
|
+
"@teambit/graph": "0.0.674",
|
|
72
|
+
"@teambit/react-router": "0.0.674",
|
|
73
|
+
"@teambit/sidebar": "0.0.674",
|
|
72
74
|
"@teambit/ui-foundation.ui.main-dropdown": "0.0.486",
|
|
73
75
|
"@teambit/ui-foundation.ui.menu": "0.0.486",
|
|
74
76
|
"@teambit/ui-foundation.ui.react-router.slot-router": "0.0.488",
|
|
75
|
-
"@teambit/ui-foundation.ui.tree.drawer": "0.0.
|
|
77
|
+
"@teambit/ui-foundation.ui.tree.drawer": "0.0.495",
|
|
76
78
|
"@teambit/toolbox.time.time-format": "0.0.483",
|
|
77
79
|
"@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.487",
|
|
78
80
|
"@teambit/component-descriptor": "0.0.13",
|
|
79
|
-
"@teambit/deprecation": "0.0.
|
|
81
|
+
"@teambit/deprecation": "0.0.674",
|
|
80
82
|
"@teambit/ui-foundation.ui.constants.z-indexes": "0.0.487",
|
|
81
83
|
"@teambit/ui-foundation.ui.buttons.collapser": "0.0.193",
|
|
82
84
|
"@teambit/ui-foundation.ui.corner": "0.0.494",
|
|
@@ -86,7 +88,7 @@
|
|
|
86
88
|
"@teambit/design.ui.styles.muted-italic": "0.0.35",
|
|
87
89
|
"@teambit/design.ui.tree": "0.0.5",
|
|
88
90
|
"@teambit/ui-foundation.ui.full-loader": "0.0.486",
|
|
89
|
-
"@teambit/ui-foundation.ui.side-bar": "0.0.
|
|
91
|
+
"@teambit/ui-foundation.ui.side-bar": "0.0.510",
|
|
90
92
|
"@teambit/explorer.ui.gallery.component-grid": "0.0.486",
|
|
91
93
|
"@teambit/workspace.ui.empty-workspace": "0.0.489",
|
|
92
94
|
"@teambit/workspace.ui.workspace-component-card": "0.0.495"
|
|
@@ -105,7 +107,8 @@
|
|
|
105
107
|
"@types/testing-library__jest-dom": "5.9.5",
|
|
106
108
|
"@types/jest": "^26.0.0",
|
|
107
109
|
"@types/react-dom": "^17.0.5",
|
|
108
|
-
"@types/node": "12.20.4"
|
|
110
|
+
"@types/node": "12.20.4",
|
|
111
|
+
"@teambit/workspace.content.workspace-overview": "1.95.0"
|
|
109
112
|
},
|
|
110
113
|
"peerDependencies": {
|
|
111
114
|
"@apollo/client": "^3.0.0",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.674/dist/workspace.docs.mdx')]
|
|
@@ -6,3 +6,36 @@
|
|
|
6
6
|
.collapseIcon {
|
|
7
7
|
width: 16px;
|
|
8
8
|
}
|
|
9
|
+
|
|
10
|
+
.deprecateFilter {
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: row;
|
|
13
|
+
font-size: 14px;
|
|
14
|
+
justify-content: space-between;
|
|
15
|
+
padding: 8px;
|
|
16
|
+
margin: 4px 8px;
|
|
17
|
+
|
|
18
|
+
.filterIcon {
|
|
19
|
+
line-height: 16px;
|
|
20
|
+
display: flex;
|
|
21
|
+
|
|
22
|
+
.filterIconLabel {
|
|
23
|
+
margin: 0px 8px;
|
|
24
|
+
font-size: 12px;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.filterWidgetIcon {
|
|
30
|
+
margin-right: 12px;
|
|
31
|
+
padding: 4px;
|
|
32
|
+
|
|
33
|
+
&:hover {
|
|
34
|
+
background: white;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&.open {
|
|
38
|
+
color: var(--bit-accent-color, #6c5ce7);
|
|
39
|
+
background-color: var(--bit-bg-heavy, #f6f6f6);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -8,18 +8,32 @@ import {
|
|
|
8
8
|
NamespaceTreeNode,
|
|
9
9
|
ScopePayload,
|
|
10
10
|
} from '@teambit/ui-foundation.ui.side-bar';
|
|
11
|
+
import { Icon } from '@teambit/evangelist.elements.icon';
|
|
11
12
|
import { TreeNodeProps } from '@teambit/design.ui.tree';
|
|
12
13
|
import React, { useCallback, useContext, useState, createContext } from 'react';
|
|
13
14
|
import classNames from 'classnames';
|
|
14
15
|
import { ComponentTreeSlot } from '@teambit/component-tree';
|
|
15
16
|
import { mutedItalic } from '@teambit/design.ui.styles.muted-italic';
|
|
16
17
|
import { ellipsis } from '@teambit/design.ui.styles.ellipsis';
|
|
18
|
+
import { Toggle } from '@teambit/design.ui.input.toggle';
|
|
17
19
|
import { WorkspaceContext } from '../workspace/workspace-context';
|
|
18
20
|
import styles from './workspace-components-drawer.module.scss';
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
type WorkspaceTreeContextType = {
|
|
23
|
+
collapsed: boolean;
|
|
24
|
+
setCollapsed: (x: boolean) => void;
|
|
25
|
+
filterOpen: boolean;
|
|
26
|
+
setFilterOpen: (open: boolean) => void;
|
|
27
|
+
activeFilters: string[];
|
|
28
|
+
setActiveFilter: (filterId: string) => void;
|
|
29
|
+
};
|
|
30
|
+
const WorkspaceTreeContext = createContext<WorkspaceTreeContextType>({
|
|
21
31
|
collapsed: true,
|
|
22
32
|
setCollapsed: () => {},
|
|
33
|
+
activeFilters: [],
|
|
34
|
+
setActiveFilter: () => {},
|
|
35
|
+
filterOpen: false,
|
|
36
|
+
setFilterOpen: () => {},
|
|
23
37
|
});
|
|
24
38
|
|
|
25
39
|
export class WorkspaceComponentsDrawer implements DrawerType {
|
|
@@ -28,19 +42,45 @@ export class WorkspaceComponentsDrawer implements DrawerType {
|
|
|
28
42
|
id = 'workspace-components';
|
|
29
43
|
name = 'COMPONENTS';
|
|
30
44
|
|
|
31
|
-
|
|
45
|
+
widgets = [<FilterWidget key={'filter-widget'} />, <TreeToggleWidget key={'tree-toggle-widget'} />];
|
|
32
46
|
|
|
33
47
|
Context = ({ children }) => {
|
|
34
48
|
const [collapsed, setCollapsed] = useState(true);
|
|
49
|
+
const [activeFilters, setActiveFilters] = useState<string[]>([]);
|
|
50
|
+
const [filterOpen, setFilterOpen] = useState<boolean>(false);
|
|
51
|
+
|
|
52
|
+
const handleActiveFilterToggle = (filterId: string) => {
|
|
53
|
+
const isFilterActive = activeFilters.includes(filterId);
|
|
54
|
+
if (isFilterActive) {
|
|
55
|
+
setActiveFilters((list) => list.filter((id) => id !== filterId));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
setActiveFilters((list) => list.concat(filterId));
|
|
59
|
+
};
|
|
60
|
+
|
|
35
61
|
return (
|
|
36
|
-
<WorkspaceTreeContext.Provider
|
|
62
|
+
<WorkspaceTreeContext.Provider
|
|
63
|
+
value={{
|
|
64
|
+
collapsed,
|
|
65
|
+
setCollapsed,
|
|
66
|
+
activeFilters,
|
|
67
|
+
setActiveFilter: handleActiveFilterToggle,
|
|
68
|
+
filterOpen,
|
|
69
|
+
setFilterOpen,
|
|
70
|
+
}}
|
|
71
|
+
>
|
|
72
|
+
{children}
|
|
73
|
+
</WorkspaceTreeContext.Provider>
|
|
37
74
|
);
|
|
38
75
|
};
|
|
39
76
|
|
|
77
|
+
Filters = [<DeprecateFilter key={'deprecate-filter'} />];
|
|
78
|
+
|
|
40
79
|
render = () => {
|
|
41
80
|
const workspace = useContext(WorkspaceContext);
|
|
42
|
-
const { collapsed } = useContext(WorkspaceTreeContext);
|
|
81
|
+
const { collapsed, activeFilters } = useContext(WorkspaceTreeContext);
|
|
43
82
|
const { treeNodeSlot } = this;
|
|
83
|
+
const showDeprecatedComponents = activeFilters.find((activeFilter) => activeFilter === 'deprecate');
|
|
44
84
|
|
|
45
85
|
const TreeNodeRenderer = useCallback(
|
|
46
86
|
function TreeNode(props: TreeNodeProps<PayloadType>) {
|
|
@@ -56,18 +96,53 @@ export class WorkspaceComponentsDrawer implements DrawerType {
|
|
|
56
96
|
);
|
|
57
97
|
|
|
58
98
|
if (!workspace) return <FullLoader />;
|
|
59
|
-
|
|
99
|
+
|
|
100
|
+
const components = showDeprecatedComponents
|
|
101
|
+
? workspace.components
|
|
102
|
+
: workspace.components.filter((component) => !component.deprecation?.isDeprecate);
|
|
103
|
+
|
|
104
|
+
if (components.length === 0) {
|
|
60
105
|
return <span className={classNames(mutedItalic, ellipsis, styles.emptyWorkspace)}>Workspace is empty</span>;
|
|
61
106
|
}
|
|
62
107
|
|
|
63
|
-
return <ComponentTree components={
|
|
108
|
+
return <ComponentTree components={components} isCollapsed={collapsed} TreeNode={TreeNodeRenderer} />;
|
|
64
109
|
};
|
|
65
110
|
}
|
|
66
111
|
|
|
67
|
-
function
|
|
112
|
+
function TreeToggleWidget() {
|
|
68
113
|
const { collapsed, setCollapsed } = useContext(WorkspaceTreeContext);
|
|
69
114
|
const icon = collapsed
|
|
70
115
|
? 'https://static.bit.dev/bit-icons/expand.svg'
|
|
71
116
|
: 'https://static.bit.dev/bit-icons/collapse.svg';
|
|
72
117
|
return <img src={icon} className={styles.collapseIcon} onClick={() => setCollapsed(!collapsed)} />;
|
|
73
118
|
}
|
|
119
|
+
|
|
120
|
+
function FilterWidget() {
|
|
121
|
+
const { filterOpen, setFilterOpen } = useContext(WorkspaceTreeContext);
|
|
122
|
+
return (
|
|
123
|
+
<Icon
|
|
124
|
+
className={classNames(styles.filterWidgetIcon, filterOpen && styles.open)}
|
|
125
|
+
of="Ripple_filters"
|
|
126
|
+
onClick={() => setFilterOpen(!filterOpen)}
|
|
127
|
+
/>
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function DeprecateFilter() {
|
|
132
|
+
const { activeFilters, setActiveFilter, filterOpen } = useContext(WorkspaceTreeContext);
|
|
133
|
+
const isActive = activeFilters.includes('deprecate');
|
|
134
|
+
|
|
135
|
+
if (!filterOpen) return null;
|
|
136
|
+
|
|
137
|
+
return (
|
|
138
|
+
<div className={classNames(styles.deprecateFilter, isActive && styles.active)}>
|
|
139
|
+
<div className={styles.filterIcon}>
|
|
140
|
+
<Icon of="note-deprecated" />
|
|
141
|
+
<span className={styles.filterIconLabel}>Deprecated</span>
|
|
142
|
+
</div>
|
|
143
|
+
<div>
|
|
144
|
+
<Toggle checked={isActive} onInputChanged={() => setActiveFilter('deprecate')} />
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
);
|
|
148
|
+
}
|
|
Binary file
|
package/preview-1646920477648.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|