@teambit/scope 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/scope.docs.mdx +8 -0
- package/dist/ui/components-drawer/components-drawer.module.scss +33 -0
- package/dist/ui/components-drawer/components.drawer.d.ts +2 -1
- package/dist/ui/components-drawer/components.drawer.js +97 -7
- package/dist/ui/components-drawer/components.drawer.js.map +1 -1
- package/package-tar/teambit-scope-0.0.674.tgz +0 -0
- package/package.json +22 -19
- package/preview-1647202499074.js +1 -0
- package/scope.docs.mdx +8 -0
- package/ui/components-drawer/components-drawer.module.scss +33 -0
- package/ui/components-drawer/components.drawer.tsx +84 -8
- package/package-tar/teambit-scope-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,7 +6,8 @@ export declare class ComponentsDrawer implements DrawerType {
|
|
|
6
6
|
constructor(treeNodeSlot: ComponentTreeSlot);
|
|
7
7
|
id: string;
|
|
8
8
|
name: string;
|
|
9
|
-
|
|
9
|
+
widgets: JSX.Element[];
|
|
10
|
+
Filters: JSX.Element[];
|
|
10
11
|
Context: ({ children }: {
|
|
11
12
|
children: any;
|
|
12
13
|
}) => JSX.Element;
|
|
@@ -59,6 +59,16 @@ function _uiFoundationUi() {
|
|
|
59
59
|
return data;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
function _evangelistElements() {
|
|
63
|
+
const data = require("@teambit/evangelist.elements.icon");
|
|
64
|
+
|
|
65
|
+
_evangelistElements = function () {
|
|
66
|
+
return data;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
return data;
|
|
70
|
+
}
|
|
71
|
+
|
|
62
72
|
function _uiFoundationUi2() {
|
|
63
73
|
const data = require("@teambit/ui-foundation.ui.full-loader");
|
|
64
74
|
|
|
@@ -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 _scopeUiHooks() {
|
|
93
113
|
const data = require("@teambit/scope.ui.hooks.use-scope");
|
|
94
114
|
|
|
@@ -115,7 +135,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
115
135
|
|
|
116
136
|
const ScopeTreeContext = /*#__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 ComponentsDrawer {
|
|
@@ -123,15 +147,40 @@ class ComponentsDrawer {
|
|
|
123
147
|
this.treeNodeSlot = treeNodeSlot;
|
|
124
148
|
(0, _defineProperty2().default)(this, "id", 'components-drawer');
|
|
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
|
+
})]);
|
|
155
|
+
(0, _defineProperty2().default)(this, "Filters", [/*#__PURE__*/_react().default.createElement(DeprecateFilter, {
|
|
156
|
+
key: 'deprecate-filter'
|
|
157
|
+
})]);
|
|
127
158
|
(0, _defineProperty2().default)(this, "Context", ({
|
|
128
159
|
children
|
|
129
160
|
}) => {
|
|
130
161
|
const [collapsed, setCollapsed] = (0, _react().useState)(true);
|
|
162
|
+
const [activeFilters, setActiveFilters] = (0, _react().useState)([]);
|
|
163
|
+
const [filterOpen, setFilterOpen] = (0, _react().useState)(false);
|
|
164
|
+
|
|
165
|
+
const handleActiveFilterToggle = filterId => {
|
|
166
|
+
const isFilterActive = activeFilters.includes(filterId);
|
|
167
|
+
|
|
168
|
+
if (isFilterActive) {
|
|
169
|
+
setActiveFilters(list => list.filter(id => id !== filterId));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
setActiveFilters(list => list.concat(filterId));
|
|
174
|
+
};
|
|
175
|
+
|
|
131
176
|
return /*#__PURE__*/_react().default.createElement(ScopeTreeContext.Provider, {
|
|
132
177
|
value: {
|
|
133
178
|
collapsed,
|
|
134
|
-
setCollapsed
|
|
179
|
+
setCollapsed,
|
|
180
|
+
activeFilters,
|
|
181
|
+
setActiveFilter: handleActiveFilterToggle,
|
|
182
|
+
filterOpen,
|
|
183
|
+
setFilterOpen
|
|
135
184
|
}
|
|
136
185
|
}, children);
|
|
137
186
|
});
|
|
@@ -140,11 +189,13 @@ class ComponentsDrawer {
|
|
|
140
189
|
scope
|
|
141
190
|
} = (0, _scopeUiHooks().useScopeQuery)();
|
|
142
191
|
const {
|
|
143
|
-
collapsed
|
|
192
|
+
collapsed,
|
|
193
|
+
activeFilters
|
|
144
194
|
} = (0, _react().useContext)(ScopeTreeContext);
|
|
145
195
|
const {
|
|
146
196
|
treeNodeSlot
|
|
147
197
|
} = this;
|
|
198
|
+
const showDeprecatedComponents = activeFilters.find(activeFilter => activeFilter === 'deprecate');
|
|
148
199
|
const TreeNodeRenderer = (0, _react().useCallback)(function TreeNode(props) {
|
|
149
200
|
const children = props.node.children;
|
|
150
201
|
if (!children) return /*#__PURE__*/_react().default.createElement(_uiFoundationUi().ComponentView, (0, _extends2().default)({}, props, {
|
|
@@ -162,11 +213,16 @@ class ComponentsDrawer {
|
|
|
162
213
|
return /*#__PURE__*/_react().default.createElement(_uiFoundationUi().NamespaceTreeNode, props);
|
|
163
214
|
}, [treeNodeSlot]);
|
|
164
215
|
if (!scope) return /*#__PURE__*/_react().default.createElement(_uiFoundationUi2().FullLoader, null);
|
|
165
|
-
|
|
216
|
+
const components = showDeprecatedComponents ? scope.components : scope.components.filter(component => {
|
|
217
|
+
var _component$deprecatio;
|
|
218
|
+
|
|
219
|
+
return !((_component$deprecatio = component.deprecation) !== null && _component$deprecatio !== void 0 && _component$deprecatio.isDeprecate);
|
|
220
|
+
});
|
|
221
|
+
if (components.length === 0) return /*#__PURE__*/_react().default.createElement("span", {
|
|
166
222
|
className: (0, _classnames().default)(_designUiStyles().mutedItalic, _designUiStyles2().ellipsis, _componentsDrawerModule().default.emptyScope)
|
|
167
223
|
}, "Scope is empty");
|
|
168
224
|
return /*#__PURE__*/_react().default.createElement(_uiFoundationUi().ComponentTree, {
|
|
169
|
-
components:
|
|
225
|
+
components: components,
|
|
170
226
|
isCollapsed: collapsed,
|
|
171
227
|
TreeNode: TreeNodeRenderer
|
|
172
228
|
});
|
|
@@ -177,7 +233,7 @@ class ComponentsDrawer {
|
|
|
177
233
|
|
|
178
234
|
exports.ComponentsDrawer = ComponentsDrawer;
|
|
179
235
|
|
|
180
|
-
function
|
|
236
|
+
function TreeToggleWidget() {
|
|
181
237
|
const {
|
|
182
238
|
collapsed,
|
|
183
239
|
setCollapsed
|
|
@@ -190,4 +246,38 @@ function Widget() {
|
|
|
190
246
|
});
|
|
191
247
|
}
|
|
192
248
|
|
|
249
|
+
function FilterWidget() {
|
|
250
|
+
const {
|
|
251
|
+
filterOpen,
|
|
252
|
+
setFilterOpen
|
|
253
|
+
} = (0, _react().useContext)(ScopeTreeContext);
|
|
254
|
+
return /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
|
|
255
|
+
className: (0, _classnames().default)(_componentsDrawerModule().default.filterWidgetIcon, filterOpen && _componentsDrawerModule().default.open),
|
|
256
|
+
of: "Ripple_filters",
|
|
257
|
+
onClick: () => setFilterOpen(!filterOpen)
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
function DeprecateFilter() {
|
|
262
|
+
const {
|
|
263
|
+
activeFilters,
|
|
264
|
+
setActiveFilter,
|
|
265
|
+
filterOpen
|
|
266
|
+
} = (0, _react().useContext)(ScopeTreeContext);
|
|
267
|
+
const isActive = activeFilters.includes('deprecate');
|
|
268
|
+
if (!filterOpen) return null;
|
|
269
|
+
return /*#__PURE__*/_react().default.createElement("div", {
|
|
270
|
+
className: (0, _classnames().default)(_componentsDrawerModule().default.deprecateFilter, isActive && _componentsDrawerModule().default.active)
|
|
271
|
+
}, /*#__PURE__*/_react().default.createElement("div", {
|
|
272
|
+
className: _componentsDrawerModule().default.filterIcon
|
|
273
|
+
}, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
|
|
274
|
+
of: "note-deprecated"
|
|
275
|
+
}), /*#__PURE__*/_react().default.createElement("span", {
|
|
276
|
+
className: _componentsDrawerModule().default.filterIconLabel
|
|
277
|
+
}, "Deprecated")), /*#__PURE__*/_react().default.createElement("div", null, /*#__PURE__*/_react().default.createElement(_designUiInput().Toggle, {
|
|
278
|
+
checked: isActive,
|
|
279
|
+
onInputChanged: () => setActiveFilter('deprecate')
|
|
280
|
+
})));
|
|
281
|
+
}
|
|
282
|
+
|
|
193
283
|
//# sourceMappingURL=components.drawer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["components.drawer.tsx"],"names":["ScopeTreeContext","collapsed","setCollapsed","ComponentsDrawer","constructor","treeNodeSlot","children","scope","TreeNodeRenderer","TreeNode","props","node","payload","ScopePayload","map","childNode","id","components","length","mutedItalic","ellipsis","styles","emptyScope","Widget","icon","collapseIcon"],"mappings":"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","sourcesContent":["import React, { useCallback, useState, useContext, createContext } from 'react';\nimport classNames from 'classnames';\nimport {\n ComponentTree,\n ComponentView,\n NamespaceTreeNode,\n PayloadType,\n ScopePayload,\n} from '@teambit/ui-foundation.ui.side-bar';\nimport { TreeNodeProps } from '@teambit/base-ui.graph.tree.recursive-tree';\n\nimport { FullLoader } from '@teambit/ui-foundation.ui.full-loader';\nimport { ComponentTreeSlot } from '@teambit/component-tree';\nimport type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\nimport { mutedItalic } from '@teambit/design.ui.styles.muted-italic';\nimport { ellipsis } from '@teambit/design.ui.styles.ellipsis';\nimport { useScopeQuery } from '@teambit/scope.ui.hooks.use-scope';\nimport styles from './components-drawer.module.scss';\n\nconst ScopeTreeContext = createContext<{ collapsed: boolean; setCollapsed: (x: boolean) => void }>({\n collapsed: true,\n setCollapsed: () => {},\n});\n\nexport class ComponentsDrawer implements DrawerType {\n constructor(private treeNodeSlot: ComponentTreeSlot) {}\n\n id = 'components-drawer';\n\n name = 'COMPONENTS';\n\n widget = (<Widget />);\n\n Context = ({ children }) => {\n const [collapsed, setCollapsed] = useState(true);\n return <ScopeTreeContext.Provider value={{ collapsed, setCollapsed }}>{children}</ScopeTreeContext.Provider>;\n };\n\n render = () => {\n const { scope } = useScopeQuery();\n const { collapsed } = useContext(ScopeTreeContext);\n const { treeNodeSlot } = this;\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} />;\n\n // skip over scope node and render only children\n if (props.node.payload instanceof ScopePayload) {\n return (\n <>\n {children.map((childNode) => (\n <TreeNodeRenderer key={childNode.id} {...props} node={childNode}></TreeNodeRenderer>\n ))}\n </>\n );\n }\n\n return <NamespaceTreeNode {...props} />;\n },\n [treeNodeSlot]\n );\n\n if (!scope) return <FullLoader />;\n if (scope.components.length === 0)\n return <span className={classNames(mutedItalic, ellipsis, styles.emptyScope)}>Scope is empty</span>;\n return <ComponentTree components={scope.components} isCollapsed={collapsed} TreeNode={TreeNodeRenderer} />;\n };\n}\n\nfunction Widget() {\n const { collapsed, setCollapsed } = useContext(ScopeTreeContext);\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"]}
|
|
1
|
+
{"version":3,"sources":["components.drawer.tsx"],"names":["ScopeTreeContext","collapsed","setCollapsed","activeFilters","setActiveFilter","filterOpen","setFilterOpen","ComponentsDrawer","constructor","treeNodeSlot","children","setActiveFilters","handleActiveFilterToggle","filterId","isFilterActive","includes","list","filter","id","concat","scope","showDeprecatedComponents","find","activeFilter","TreeNodeRenderer","TreeNode","props","node","payload","ScopePayload","map","childNode","components","component","deprecation","isDeprecate","length","mutedItalic","ellipsis","styles","emptyScope","TreeToggleWidget","icon","collapseIcon","FilterWidget","filterWidgetIcon","open","DeprecateFilter","isActive","deprecateFilter","active","filterIcon","filterIconLabel"],"mappings":"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","sourcesContent":["import React, { useCallback, useState, useContext, createContext } from 'react';\nimport classNames from 'classnames';\nimport {\n ComponentTree,\n ComponentView,\n NamespaceTreeNode,\n PayloadType,\n ScopePayload,\n} from '@teambit/ui-foundation.ui.side-bar';\nimport { TreeNodeProps } from '@teambit/base-ui.graph.tree.recursive-tree';\nimport { Icon } from '@teambit/evangelist.elements.icon';\nimport { FullLoader } from '@teambit/ui-foundation.ui.full-loader';\nimport { ComponentTreeSlot } from '@teambit/component-tree';\nimport type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';\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 { useScopeQuery } from '@teambit/scope.ui.hooks.use-scope';\nimport styles from './components-drawer.module.scss';\n\ntype ScopeTreeContextType = {\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};\n\nconst ScopeTreeContext = createContext<ScopeTreeContextType>({\n collapsed: true,\n setCollapsed: () => {},\n activeFilters: [],\n setActiveFilter: () => {},\n filterOpen: false,\n setFilterOpen: () => {},\n});\n\nexport class ComponentsDrawer implements DrawerType {\n constructor(private treeNodeSlot: ComponentTreeSlot) {}\n\n id = 'components-drawer';\n\n name = 'COMPONENTS';\n\n widgets = [<FilterWidget key={'filter-widget'} />, <TreeToggleWidget key={'tree-toggle-widget'} />];\n Filters = [<DeprecateFilter key={'deprecate-filter'} />];\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 return (\n <ScopeTreeContext.Provider\n value={{\n collapsed,\n setCollapsed,\n activeFilters,\n setActiveFilter: handleActiveFilterToggle,\n filterOpen,\n setFilterOpen,\n }}\n >\n {children}\n </ScopeTreeContext.Provider>\n );\n };\n\n render = () => {\n const { scope } = useScopeQuery();\n const { collapsed, activeFilters } = useContext(ScopeTreeContext);\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} />;\n\n // skip over scope node and render only children\n if (props.node.payload instanceof ScopePayload) {\n return (\n <>\n {children.map((childNode) => (\n <TreeNodeRenderer key={childNode.id} {...props} node={childNode}></TreeNodeRenderer>\n ))}\n </>\n );\n }\n\n return <NamespaceTreeNode {...props} />;\n },\n [treeNodeSlot]\n );\n\n if (!scope) return <FullLoader />;\n\n const components = showDeprecatedComponents\n ? scope.components\n : scope.components.filter((component) => !component.deprecation?.isDeprecate);\n\n if (components.length === 0)\n return <span className={classNames(mutedItalic, ellipsis, styles.emptyScope)}>Scope is empty</span>;\n\n return <ComponentTree components={components} isCollapsed={collapsed} TreeNode={TreeNodeRenderer} />;\n };\n}\n\nfunction TreeToggleWidget() {\n const { collapsed, setCollapsed } = useContext(ScopeTreeContext);\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(ScopeTreeContext);\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(ScopeTreeContext);\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/scope",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.674",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/scope/scope",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.scope",
|
|
8
8
|
"name": "scope",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.674"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"semver": "7.3.4",
|
|
@@ -25,32 +25,34 @@
|
|
|
25
25
|
"@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
|
|
26
26
|
"@teambit/base-ui.utils.composer": "1.0.0",
|
|
27
27
|
"@teambit/base-ui.graph.tree.recursive-tree": "1.0.0",
|
|
28
|
+
"@teambit/design.ui.input.toggle": "1.0.12",
|
|
29
|
+
"@teambit/evangelist.elements.icon": "1.0.2",
|
|
28
30
|
"@teambit/scope.models.scope-model": "0.0.104",
|
|
29
31
|
"@teambit/scope.ui.hooks.scope-context": "0.0.104",
|
|
30
|
-
"@teambit/component": "0.0.
|
|
31
|
-
"@teambit/logger": "0.0.
|
|
32
|
-
"@teambit/aspect-loader": "0.0.
|
|
33
|
-
"@teambit/builder": "0.0.
|
|
32
|
+
"@teambit/component": "0.0.674",
|
|
33
|
+
"@teambit/logger": "0.0.544",
|
|
34
|
+
"@teambit/aspect-loader": "0.0.674",
|
|
35
|
+
"@teambit/builder": "0.0.674",
|
|
34
36
|
"@teambit/cli": "0.0.452",
|
|
35
|
-
"@teambit/compiler": "0.0.
|
|
37
|
+
"@teambit/compiler": "0.0.674",
|
|
36
38
|
"@teambit/config": "0.0.465",
|
|
37
|
-
"@teambit/envs": "0.0.
|
|
38
|
-
"@teambit/express": "0.0.
|
|
39
|
-
"@teambit/graphql": "0.0.
|
|
39
|
+
"@teambit/envs": "0.0.674",
|
|
40
|
+
"@teambit/express": "0.0.548",
|
|
41
|
+
"@teambit/graphql": "0.0.674",
|
|
40
42
|
"@teambit/harmony.modules.requireable-component": "0.0.484",
|
|
41
|
-
"@teambit/isolator": "0.0.
|
|
43
|
+
"@teambit/isolator": "0.0.674",
|
|
42
44
|
"@teambit/legacy-bit-id": "0.0.398",
|
|
43
|
-
"@teambit/ui": "0.0.
|
|
45
|
+
"@teambit/ui": "0.0.674",
|
|
44
46
|
"@teambit/workspace.modules.match-pattern": "0.0.489",
|
|
45
|
-
"@teambit/command-bar": "0.0.
|
|
46
|
-
"@teambit/component-tree": "0.0.
|
|
47
|
+
"@teambit/command-bar": "0.0.674",
|
|
48
|
+
"@teambit/component-tree": "0.0.462",
|
|
47
49
|
"@teambit/design.ui.surfaces.menu.link-item": "0.0.379",
|
|
48
|
-
"@teambit/react-router": "0.0.
|
|
49
|
-
"@teambit/sidebar": "0.0.
|
|
50
|
+
"@teambit/react-router": "0.0.674",
|
|
51
|
+
"@teambit/sidebar": "0.0.674",
|
|
50
52
|
"@teambit/ui-foundation.ui.main-dropdown": "0.0.486",
|
|
51
53
|
"@teambit/ui-foundation.ui.menu": "0.0.486",
|
|
52
54
|
"@teambit/ui-foundation.ui.react-router.slot-router": "0.0.488",
|
|
53
|
-
"@teambit/ui-foundation.ui.tree.drawer": "0.0.
|
|
55
|
+
"@teambit/ui-foundation.ui.tree.drawer": "0.0.495",
|
|
54
56
|
"@teambit/bit-error": "0.0.394",
|
|
55
57
|
"@teambit/ui-foundation.ui.constants.z-indexes": "0.0.487",
|
|
56
58
|
"@teambit/scope.ui.hooks.use-scope": "0.0.107",
|
|
@@ -61,7 +63,7 @@
|
|
|
61
63
|
"@teambit/ui-foundation.ui.top-bar": "0.0.489",
|
|
62
64
|
"@teambit/design.ui.styles.ellipsis": "0.0.347",
|
|
63
65
|
"@teambit/design.ui.styles.muted-italic": "0.0.35",
|
|
64
|
-
"@teambit/ui-foundation.ui.side-bar": "0.0.
|
|
66
|
+
"@teambit/ui-foundation.ui.side-bar": "0.0.510",
|
|
65
67
|
"@teambit/ui-foundation.ui.use-box.dropdown": "0.0.111",
|
|
66
68
|
"@teambit/ui-foundation.ui.use-box.scope-menu": "0.0.111",
|
|
67
69
|
"@teambit/explorer.ui.gallery.component-card": "0.0.494",
|
|
@@ -82,7 +84,8 @@
|
|
|
82
84
|
"@types/testing-library__jest-dom": "5.9.5",
|
|
83
85
|
"@types/jest": "^26.0.0",
|
|
84
86
|
"@types/react-dom": "^17.0.5",
|
|
85
|
-
"@types/node": "12.20.4"
|
|
87
|
+
"@types/node": "12.20.4",
|
|
88
|
+
"@teambit/scope.content.scope-overview": "1.95.0"
|
|
86
89
|
},
|
|
87
90
|
"peerDependencies": {
|
|
88
91
|
"@teambit/legacy": "1.0.231",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.scope_scope@0.0.674/dist/scope.docs.mdx')]
|
package/scope.docs.mdx
ADDED
|
@@ -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
|
ScopePayload,
|
|
9
9
|
} from '@teambit/ui-foundation.ui.side-bar';
|
|
10
10
|
import { TreeNodeProps } from '@teambit/base-ui.graph.tree.recursive-tree';
|
|
11
|
-
|
|
11
|
+
import { Icon } from '@teambit/evangelist.elements.icon';
|
|
12
12
|
import { FullLoader } from '@teambit/ui-foundation.ui.full-loader';
|
|
13
13
|
import { ComponentTreeSlot } from '@teambit/component-tree';
|
|
14
14
|
import type { DrawerType } from '@teambit/ui-foundation.ui.tree.drawer';
|
|
15
15
|
import { mutedItalic } from '@teambit/design.ui.styles.muted-italic';
|
|
16
16
|
import { ellipsis } from '@teambit/design.ui.styles.ellipsis';
|
|
17
|
+
import { Toggle } from '@teambit/design.ui.input.toggle';
|
|
17
18
|
import { useScopeQuery } from '@teambit/scope.ui.hooks.use-scope';
|
|
18
19
|
import styles from './components-drawer.module.scss';
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
type ScopeTreeContextType = {
|
|
22
|
+
collapsed: boolean;
|
|
23
|
+
setCollapsed: (x: boolean) => void;
|
|
24
|
+
filterOpen: boolean;
|
|
25
|
+
setFilterOpen: (open: boolean) => void;
|
|
26
|
+
activeFilters: string[];
|
|
27
|
+
setActiveFilter: (filterId: string) => void;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const ScopeTreeContext = createContext<ScopeTreeContextType>({
|
|
21
31
|
collapsed: true,
|
|
22
32
|
setCollapsed: () => {},
|
|
33
|
+
activeFilters: [],
|
|
34
|
+
setActiveFilter: () => {},
|
|
35
|
+
filterOpen: false,
|
|
36
|
+
setFilterOpen: () => {},
|
|
23
37
|
});
|
|
24
38
|
|
|
25
39
|
export class ComponentsDrawer implements DrawerType {
|
|
@@ -29,17 +43,43 @@ export class ComponentsDrawer implements DrawerType {
|
|
|
29
43
|
|
|
30
44
|
name = 'COMPONENTS';
|
|
31
45
|
|
|
32
|
-
|
|
46
|
+
widgets = [<FilterWidget key={'filter-widget'} />, <TreeToggleWidget key={'tree-toggle-widget'} />];
|
|
47
|
+
Filters = [<DeprecateFilter key={'deprecate-filter'} />];
|
|
33
48
|
|
|
34
49
|
Context = ({ children }) => {
|
|
35
50
|
const [collapsed, setCollapsed] = useState(true);
|
|
36
|
-
|
|
51
|
+
const [activeFilters, setActiveFilters] = useState<string[]>([]);
|
|
52
|
+
const [filterOpen, setFilterOpen] = useState<boolean>(false);
|
|
53
|
+
|
|
54
|
+
const handleActiveFilterToggle = (filterId: string) => {
|
|
55
|
+
const isFilterActive = activeFilters.includes(filterId);
|
|
56
|
+
if (isFilterActive) {
|
|
57
|
+
setActiveFilters((list) => list.filter((id) => id !== filterId));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
setActiveFilters((list) => list.concat(filterId));
|
|
61
|
+
};
|
|
62
|
+
return (
|
|
63
|
+
<ScopeTreeContext.Provider
|
|
64
|
+
value={{
|
|
65
|
+
collapsed,
|
|
66
|
+
setCollapsed,
|
|
67
|
+
activeFilters,
|
|
68
|
+
setActiveFilter: handleActiveFilterToggle,
|
|
69
|
+
filterOpen,
|
|
70
|
+
setFilterOpen,
|
|
71
|
+
}}
|
|
72
|
+
>
|
|
73
|
+
{children}
|
|
74
|
+
</ScopeTreeContext.Provider>
|
|
75
|
+
);
|
|
37
76
|
};
|
|
38
77
|
|
|
39
78
|
render = () => {
|
|
40
79
|
const { scope } = useScopeQuery();
|
|
41
|
-
const { collapsed } = useContext(ScopeTreeContext);
|
|
80
|
+
const { collapsed, activeFilters } = useContext(ScopeTreeContext);
|
|
42
81
|
const { treeNodeSlot } = this;
|
|
82
|
+
const showDeprecatedComponents = activeFilters.find((activeFilter) => activeFilter === 'deprecate');
|
|
43
83
|
|
|
44
84
|
const TreeNodeRenderer = useCallback(
|
|
45
85
|
function TreeNode(props: TreeNodeProps<PayloadType>) {
|
|
@@ -64,16 +104,52 @@ export class ComponentsDrawer implements DrawerType {
|
|
|
64
104
|
);
|
|
65
105
|
|
|
66
106
|
if (!scope) return <FullLoader />;
|
|
67
|
-
|
|
107
|
+
|
|
108
|
+
const components = showDeprecatedComponents
|
|
109
|
+
? scope.components
|
|
110
|
+
: scope.components.filter((component) => !component.deprecation?.isDeprecate);
|
|
111
|
+
|
|
112
|
+
if (components.length === 0)
|
|
68
113
|
return <span className={classNames(mutedItalic, ellipsis, styles.emptyScope)}>Scope is empty</span>;
|
|
69
|
-
|
|
114
|
+
|
|
115
|
+
return <ComponentTree components={components} isCollapsed={collapsed} TreeNode={TreeNodeRenderer} />;
|
|
70
116
|
};
|
|
71
117
|
}
|
|
72
118
|
|
|
73
|
-
function
|
|
119
|
+
function TreeToggleWidget() {
|
|
74
120
|
const { collapsed, setCollapsed } = useContext(ScopeTreeContext);
|
|
75
121
|
const icon = collapsed
|
|
76
122
|
? 'https://static.bit.dev/bit-icons/expand.svg'
|
|
77
123
|
: 'https://static.bit.dev/bit-icons/collapse.svg';
|
|
78
124
|
return <img src={icon} className={styles.collapseIcon} onClick={() => setCollapsed(!collapsed)} />;
|
|
79
125
|
}
|
|
126
|
+
|
|
127
|
+
function FilterWidget() {
|
|
128
|
+
const { filterOpen, setFilterOpen } = useContext(ScopeTreeContext);
|
|
129
|
+
return (
|
|
130
|
+
<Icon
|
|
131
|
+
className={classNames(styles.filterWidgetIcon, filterOpen && styles.open)}
|
|
132
|
+
of="Ripple_filters"
|
|
133
|
+
onClick={() => setFilterOpen(!filterOpen)}
|
|
134
|
+
/>
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function DeprecateFilter() {
|
|
139
|
+
const { activeFilters, setActiveFilter, filterOpen } = useContext(ScopeTreeContext);
|
|
140
|
+
const isActive = activeFilters.includes('deprecate');
|
|
141
|
+
|
|
142
|
+
if (!filterOpen) return null;
|
|
143
|
+
|
|
144
|
+
return (
|
|
145
|
+
<div className={classNames(styles.deprecateFilter, isActive && styles.active)}>
|
|
146
|
+
<div className={styles.filterIcon}>
|
|
147
|
+
<Icon of="note-deprecated" />
|
|
148
|
+
<span className={styles.filterIconLabel}>Deprecated</span>
|
|
149
|
+
</div>
|
|
150
|
+
<div>
|
|
151
|
+
<Toggle checked={isActive} onInputChanged={() => setActiveFilter('deprecate')} />
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
);
|
|
155
|
+
}
|
|
Binary file
|
package/preview-1646920477648.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|