@teambit/component 0.0.636 → 0.0.640

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.
@@ -1 +1 @@
1
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.636/dist/component.docs.mdx')]
1
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.640/dist/component.docs.mdx')]
@@ -4,6 +4,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  require("core-js/modules/es.array.iterator.js");
6
6
 
7
+ require("core-js/modules/es.regexp.exec.js");
8
+
7
9
  Object.defineProperty(exports, "__esModule", {
8
10
  value: true
9
11
  });
@@ -39,6 +41,16 @@ function _fullLoader() {
39
41
  return data;
40
42
  }
41
43
 
44
+ function _baseUiRouting() {
45
+ const data = require("@teambit/base-ui.routing.routing-provider");
46
+
47
+ _baseUiRouting = function () {
48
+ return data;
49
+ };
50
+
51
+ return data;
52
+ }
53
+
42
54
  function _lodash() {
43
55
  const data = require("lodash");
44
56
 
@@ -153,7 +165,8 @@ function Menu({
153
165
  navigationSlot: widgetSlot
154
166
  })), /*#__PURE__*/_react().default.createElement(VersionRelatedDropdowns, {
155
167
  component: component,
156
- consumeMethods: consumeMethodSlot
168
+ consumeMethods: consumeMethodSlot,
169
+ host: host
157
170
  }), /*#__PURE__*/_react().default.createElement(_uiFoundationUi().MainDropdown, {
158
171
  menuItems: mainMenuItems
159
172
  })));
@@ -161,17 +174,24 @@ function Menu({
161
174
 
162
175
  function VersionRelatedDropdowns({
163
176
  component,
164
- consumeMethods
177
+ consumeMethods,
178
+ host
165
179
  }) {
180
+ const location = (0, _baseUiRouting().useLocation)();
181
+ const isNew = component.tags.isEmpty();
182
+ const isWorkspace = host === 'teambit.workspace/workspace';
166
183
  const versionList = (0, _react().useMemo)(() => {
167
184
  var _component$tags;
168
185
 
169
- return (_component$tags = component.tags) === null || _component$tags === void 0 ? void 0 : _component$tags.toArray().map(tag => {
186
+ const tagsArray = (_component$tags = component.tags) === null || _component$tags === void 0 ? void 0 : _component$tags.toArray().map(tag => {
170
187
  var _tag$version;
171
188
 
172
189
  return tag === null || tag === void 0 ? void 0 : (_tag$version = tag.version) === null || _tag$version === void 0 ? void 0 : _tag$version.version;
173
190
  }).filter(x => x !== undefined).reverse();
174
- }, [component.tags]) || [];
191
+ const wsLink = [isWorkspace && !isNew ? 'workspace' : undefined];
192
+ return (0, _lodash().compact)([...wsLink, ...tagsArray]);
193
+ }, [component.tags, isWorkspace, isNew]);
194
+ const currentVersion = isWorkspace && !isNew && !location.search.includes('version') ? 'workspace' : component.version;
175
195
  const methods = useConsumeMethods(consumeMethods, component);
176
196
  return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, versionList.length > 0 && /*#__PURE__*/_react().default.createElement(_uiFoundationUiUseBox().UseBoxDropdown, {
177
197
  position: "bottom-end",
@@ -182,7 +202,8 @@ function VersionRelatedDropdowns({
182
202
  })
183
203
  }), /*#__PURE__*/_react().default.createElement(_componentUi().VersionDropdown, {
184
204
  versions: versionList,
185
- currentVersion: component.version
205
+ currentVersion: currentVersion,
206
+ latestVersion: component.latest
186
207
  }));
187
208
  }
188
209
 
@@ -1 +1 @@
1
- {"version":3,"sources":["menu.tsx"],"names":["Menu","navigationSlot","widgetSlot","className","host","menuItemSlot","consumeMethodSlot","component","mainMenuItems","values","styles","topBar","leftSide","rightSide","widgets","VersionRelatedDropdowns","consumeMethods","versionList","tags","toArray","map","tag","version","filter","x","undefined","reverse","methods","useConsumeMethods","length","useBox","id","name","componentModel","method","Component","Title"],"mappings":"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","sourcesContent":["import { MainDropdown, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { VersionDropdown } from '@teambit/component.ui.version-dropdown';\nimport { FullLoader } from '@teambit/legacy/dist/to-eject/full-loader';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { flatten, groupBy } from 'lodash';\nimport classnames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';\nimport { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';\nimport type { ComponentModel } from '../component-model';\nimport { useComponent } from '../use-component';\nimport { MenuNav } from './menu-nav';\nimport styles from './menu.module.scss';\nimport { OrderedNavigationSlot, ConsumeMethodSlot } from './nav-plugin';\n\nexport type MenuProps = {\n className?: string;\n /**\n * slot for top bar menu nav items\n */\n navigationSlot: OrderedNavigationSlot;\n /**\n * right side menu item slot\n */\n widgetSlot: OrderedNavigationSlot;\n host: string;\n /**\n * main dropdown item slot\n */\n menuItemSlot: MenuItemSlot;\n\n consumeMethodSlot: ConsumeMethodSlot;\n};\n\n/**\n * top bar menu.\n */\nexport function Menu({ navigationSlot, widgetSlot, className, host, menuItemSlot, consumeMethodSlot }: MenuProps) {\n const { component } = useComponent(host);\n const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);\n if (!component) return <FullLoader />;\n return (\n <div className={classnames(styles.topBar, className)}>\n <div className={styles.leftSide}>\n <MenuNav navigationSlot={navigationSlot} />\n </div>\n <div className={styles.rightSide}>\n <div className={styles.widgets}>\n <MenuNav navigationSlot={widgetSlot} />\n </div>\n <VersionRelatedDropdowns component={component} consumeMethods={consumeMethodSlot} />\n <MainDropdown menuItems={mainMenuItems} />\n </div>\n </div>\n );\n}\n\nfunction VersionRelatedDropdowns({\n component,\n consumeMethods,\n}: {\n component: ComponentModel;\n consumeMethods: ConsumeMethodSlot;\n}) {\n const versionList =\n useMemo(\n () =>\n component.tags\n ?.toArray()\n .map((tag) => tag?.version?.version)\n .filter((x) => x !== undefined)\n .reverse(),\n [component.tags]\n ) || [];\n\n const methods = useConsumeMethods(consumeMethods, component);\n return (\n <>\n {versionList.length > 0 && (\n <UseBoxDropdown\n position=\"bottom-end\"\n className={styles.useBox}\n Menu={<ConsumeMethodsMenu methods={methods} componentName={component.id.name} />}\n />\n )}\n <VersionDropdown versions={versionList} currentVersion={component.version} />\n </>\n );\n}\n\nfunction useConsumeMethods(consumeMethods: ConsumeMethodSlot, componentModel: ComponentModel): ConsumeMethod[] {\n return useMemo(\n () =>\n flatten(consumeMethods.values())\n .map((method) => {\n return method?.(componentModel);\n })\n .filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],\n [consumeMethods, componentModel]\n );\n}\n"]}
1
+ {"version":3,"sources":["menu.tsx"],"names":["Menu","navigationSlot","widgetSlot","className","host","menuItemSlot","consumeMethodSlot","component","mainMenuItems","values","styles","topBar","leftSide","rightSide","widgets","VersionRelatedDropdowns","consumeMethods","location","isNew","tags","isEmpty","isWorkspace","versionList","tagsArray","toArray","map","tag","version","filter","x","undefined","reverse","wsLink","currentVersion","search","includes","methods","useConsumeMethods","length","useBox","id","name","latest","componentModel","method","Component","Title"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAsBA;AACA;AACA;AACO,SAASA,IAAT,CAAc;AAAEC,EAAAA,cAAF;AAAkBC,EAAAA,UAAlB;AAA8BC,EAAAA,SAA9B;AAAyCC,EAAAA,IAAzC;AAA+CC,EAAAA,YAA/C;AAA6DC,EAAAA;AAA7D,CAAd,EAA2G;AAChH,QAAM;AAAEC,IAAAA;AAAF,MAAgB,kCAAaH,IAAb,CAAtB;AACA,QAAMI,aAAa,GAAG,sBAAQ,MAAM,uBAAQ,uBAAQH,YAAY,CAACI,MAAb,EAAR,CAAR,EAAwC,UAAxC,CAAd,EAAmE,CAACJ,YAAD,CAAnE,CAAtB;AACA,MAAI,CAACE,SAAL,EAAgB,oBAAO,+BAAC,wBAAD,OAAP;AAChB,sBACE;AAAK,IAAA,SAAS,EAAE,2BAAWG,sBAAOC,MAAlB,EAA0BR,SAA1B;AAAhB,kBACE;AAAK,IAAA,SAAS,EAAEO,sBAAOE;AAAvB,kBACE,+BAAC,kBAAD;AAAS,IAAA,cAAc,EAAEX;AAAzB,IADF,CADF,eAIE;AAAK,IAAA,SAAS,EAAES,sBAAOG;AAAvB,kBACE;AAAK,IAAA,SAAS,EAAEH,sBAAOI;AAAvB,kBACE,+BAAC,kBAAD;AAAS,IAAA,cAAc,EAAEZ;AAAzB,IADF,CADF,eAIE,+BAAC,uBAAD;AAAyB,IAAA,SAAS,EAAEK,SAApC;AAA+C,IAAA,cAAc,EAAED,iBAA/D;AAAkF,IAAA,IAAI,EAAEF;AAAxF,IAJF,eAKE,+BAAC,8BAAD;AAAc,IAAA,SAAS,EAAEI;AAAzB,IALF,CAJF,CADF;AAcD;;AAED,SAASO,uBAAT,CAAiC;AAC/BR,EAAAA,SAD+B;AAE/BS,EAAAA,cAF+B;AAG/BZ,EAAAA;AAH+B,CAAjC,EAQG;AACD,QAAMa,QAAQ,GAAG,mCAAjB;AACA,QAAMC,KAAK,GAAGX,SAAS,CAACY,IAAV,CAAeC,OAAf,EAAd;AAEA,QAAMC,WAAW,GAAGjB,IAAI,KAAK,6BAA7B;AACA,QAAMkB,WAAW,GAAG,sBAAQ,MAAM;AAAA;;AAChC,UAAMC,SAAS,sBAAGhB,SAAS,CAACY,IAAb,oDAAG,gBACdK,OADc,GAEfC,GAFe,CAEVC,GAAD;AAAA;;AAAA,aAASA,GAAT,aAASA,GAAT,uCAASA,GAAG,CAAEC,OAAd,iDAAS,aAAcA,OAAvB;AAAA,KAFW,EAGfC,MAHe,CAGPC,CAAD,IAAOA,CAAC,KAAKC,SAHL,EAIfC,OAJe,EAAlB;AAKA,UAAMC,MAAM,GAAG,CAACX,WAAW,IAAI,CAACH,KAAhB,GAAwB,WAAxB,GAAsCY,SAAvC,CAAf;AAEA,WAAO,uBAAQ,CAAC,GAAGE,MAAJ,EAAY,GAAGT,SAAf,CAAR,CAAP;AACD,GATmB,EASjB,CAAChB,SAAS,CAACY,IAAX,EAAiBE,WAAjB,EAA8BH,KAA9B,CATiB,CAApB;AAWA,QAAMe,cAAc,GAClBZ,WAAW,IAAI,CAACH,KAAhB,IAAyB,CAACD,QAAQ,CAACiB,MAAT,CAAgBC,QAAhB,CAAyB,SAAzB,CAA1B,GAAgE,WAAhE,GAA8E5B,SAAS,CAACoB,OAD1F;AAGA,QAAMS,OAAO,GAAGC,iBAAiB,CAACrB,cAAD,EAAiBT,SAAjB,CAAjC;AACA,sBACE,gEACGe,WAAW,CAACgB,MAAZ,GAAqB,CAArB,iBACC,+BAAC,sCAAD;AACE,IAAA,QAAQ,EAAC,YADX;AAEE,IAAA,SAAS,EAAE5B,sBAAO6B,MAFpB;AAGE,IAAA,IAAI,eAAE,+BAAC,6BAAD;AAAoB,MAAA,OAAO,EAAEH,OAA7B;AAAsC,MAAA,aAAa,EAAE7B,SAAS,CAACiC,EAAV,CAAaC;AAAlE;AAHR,IAFJ,eAQE,+BAAC,8BAAD;AAAiB,IAAA,QAAQ,EAAEnB,WAA3B;AAAwC,IAAA,cAAc,EAAEW,cAAxD;AAAwE,IAAA,aAAa,EAAE1B,SAAS,CAACmC;AAAjG,IARF,CADF;AAYD;;AAED,SAASL,iBAAT,CAA2BrB,cAA3B,EAA8D2B,cAA9D,EAA+G;AAC7G,SAAO,sBACL,MACE,uBAAQ3B,cAAc,CAACP,MAAf,EAAR,EACGgB,GADH,CACQmB,MAAD,IAAY;AACf,WAAOA,MAAP,aAAOA,MAAP,uBAAOA,MAAM,CAAGD,cAAH,CAAb;AACD,GAHH,EAIGf,MAJH,CAIWC,CAAD,IAAO,CAAC,CAACA,CAAF,IAAOA,CAAC,CAACgB,SAAT,IAAsBhB,CAAC,CAACiB,KAJzC,CAFG,EAOL,CAAC9B,cAAD,EAAiB2B,cAAjB,CAPK,CAAP;AASD","sourcesContent":["import { MainDropdown, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { VersionDropdown } from '@teambit/component.ui.version-dropdown';\nimport { FullLoader } from '@teambit/legacy/dist/to-eject/full-loader';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { useLocation } from '@teambit/base-ui.routing.routing-provider';\nimport { compact, flatten, groupBy } from 'lodash';\nimport classnames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';\nimport { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';\nimport type { ComponentModel } from '../component-model';\nimport { useComponent } from '../use-component';\nimport { MenuNav } from './menu-nav';\nimport styles from './menu.module.scss';\nimport { OrderedNavigationSlot, ConsumeMethodSlot } from './nav-plugin';\n\nexport type MenuProps = {\n className?: string;\n /**\n * slot for top bar menu nav items\n */\n navigationSlot: OrderedNavigationSlot;\n /**\n * right side menu item slot\n */\n widgetSlot: OrderedNavigationSlot;\n host: string;\n /**\n * main dropdown item slot\n */\n menuItemSlot: MenuItemSlot;\n\n consumeMethodSlot: ConsumeMethodSlot;\n};\n\n/**\n * top bar menu.\n */\nexport function Menu({ navigationSlot, widgetSlot, className, host, menuItemSlot, consumeMethodSlot }: MenuProps) {\n const { component } = useComponent(host);\n const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);\n if (!component) return <FullLoader />;\n return (\n <div className={classnames(styles.topBar, className)}>\n <div className={styles.leftSide}>\n <MenuNav navigationSlot={navigationSlot} />\n </div>\n <div className={styles.rightSide}>\n <div className={styles.widgets}>\n <MenuNav navigationSlot={widgetSlot} />\n </div>\n <VersionRelatedDropdowns component={component} consumeMethods={consumeMethodSlot} host={host} />\n <MainDropdown menuItems={mainMenuItems} />\n </div>\n </div>\n );\n}\n\nfunction VersionRelatedDropdowns({\n component,\n consumeMethods,\n host,\n}: {\n component: ComponentModel;\n consumeMethods: ConsumeMethodSlot;\n host: string;\n}) {\n const location = useLocation();\n const isNew = component.tags.isEmpty();\n\n const isWorkspace = host === 'teambit.workspace/workspace';\n const versionList = useMemo(() => {\n const tagsArray = component.tags\n ?.toArray()\n .map((tag) => tag?.version?.version)\n .filter((x) => x !== undefined)\n .reverse();\n const wsLink = [isWorkspace && !isNew ? 'workspace' : undefined];\n\n return compact([...wsLink, ...tagsArray]);\n }, [component.tags, isWorkspace, isNew]);\n\n const currentVersion =\n isWorkspace && !isNew && !location.search.includes('version') ? 'workspace' : component.version;\n\n const methods = useConsumeMethods(consumeMethods, component);\n return (\n <>\n {versionList.length > 0 && (\n <UseBoxDropdown\n position=\"bottom-end\"\n className={styles.useBox}\n Menu={<ConsumeMethodsMenu methods={methods} componentName={component.id.name} />}\n />\n )}\n <VersionDropdown versions={versionList} currentVersion={currentVersion} latestVersion={component.latest} />\n </>\n );\n}\n\nfunction useConsumeMethods(consumeMethods: ConsumeMethodSlot, componentModel: ComponentModel): ConsumeMethod[] {\n return useMemo(\n () =>\n flatten(consumeMethods.values())\n .map((method) => {\n return method?.(componentModel);\n })\n .filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],\n [consumeMethods, componentModel]\n );\n}\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/component",
3
- "version": "0.0.636",
3
+ "version": "0.0.640",
4
4
  "homepage": "https://bit.dev/teambit/component/component",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "component",
9
- "version": "0.0.636"
9
+ "version": "0.0.640"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -26,24 +26,25 @@
26
26
  "@teambit/base-ui.routing.nav-link": "1.0.0",
27
27
  "@teambit/documenter.ui.heading": "4.1.1",
28
28
  "@teambit/documenter.ui.separator": "4.1.1",
29
+ "@teambit/base-ui.routing.routing-provider": "1.0.0",
29
30
  "@teambit/component-id": "0.0.400",
30
31
  "@teambit/ui-foundation.ui.menu-widget-icon": "0.0.487",
31
- "@teambit/aspect-loader": "0.0.636",
32
+ "@teambit/aspect-loader": "0.0.640",
32
33
  "@teambit/legacy-bit-id": "0.0.397",
33
34
  "@teambit/toolbox.string.capitalize": "0.0.482",
34
- "@teambit/cli": "0.0.434",
35
- "@teambit/config": "0.0.447",
36
- "@teambit/express": "0.0.528",
37
- "@teambit/graphql": "0.0.636",
35
+ "@teambit/cli": "0.0.437",
36
+ "@teambit/config": "0.0.450",
37
+ "@teambit/express": "0.0.531",
38
+ "@teambit/graphql": "0.0.640",
38
39
  "@teambit/bit-error": "0.0.394",
39
- "@teambit/command-bar": "0.0.636",
40
- "@teambit/preview": "0.0.636",
41
- "@teambit/pubsub": "0.0.636",
40
+ "@teambit/command-bar": "0.0.640",
41
+ "@teambit/preview": "0.0.640",
42
+ "@teambit/pubsub": "0.0.640",
42
43
  "@teambit/ui-foundation.ui.is-browser": "0.0.485",
43
44
  "@teambit/ui-foundation.ui.main-dropdown": "0.0.485",
44
45
  "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.487",
45
46
  "@teambit/ui-foundation.ui.use-box.menu": "0.0.108",
46
- "@teambit/ui": "0.0.636",
47
+ "@teambit/ui": "0.0.640",
47
48
  "@teambit/component-issues": "0.0.45",
48
49
  "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.486",
49
50
  "@teambit/cli-table": "0.0.33",
@@ -52,10 +53,10 @@
52
53
  "@teambit/harmony.ui.aspect-box": "0.0.485",
53
54
  "@teambit/design.ui.pages.not-found": "0.0.353",
54
55
  "@teambit/design.ui.pages.server-error": "0.0.353",
55
- "@teambit/compositions": "0.0.636",
56
- "@teambit/deprecation": "0.0.636",
57
- "@teambit/envs": "0.0.636",
58
- "@teambit/component.ui.version-dropdown": "0.0.490",
56
+ "@teambit/compositions": "0.0.640",
57
+ "@teambit/deprecation": "0.0.640",
58
+ "@teambit/envs": "0.0.640",
59
+ "@teambit/component.ui.version-dropdown": "0.0.491",
59
60
  "@teambit/ui-foundation.ui.use-box.dropdown": "0.0.108",
60
61
  "@teambit/ui-foundation.ui.react-router.extend-path": "0.0.485"
61
62
  },
@@ -76,7 +77,7 @@
76
77
  },
77
78
  "peerDependencies": {
78
79
  "@apollo/client": "^3.0.0",
79
- "@teambit/legacy": "1.0.210",
80
+ "@teambit/legacy": "1.0.213",
80
81
  "react-dom": "^16.8.0 || ^17.0.0",
81
82
  "react": "^16.8.0 || ^17.0.0"
82
83
  },
@@ -104,7 +105,7 @@
104
105
  "react": "-"
105
106
  },
106
107
  "peerDependencies": {
107
- "@teambit/legacy": "1.0.210",
108
+ "@teambit/legacy": "1.0.213",
108
109
  "react-dom": "^16.8.0 || ^17.0.0",
109
110
  "react": "^16.8.0 || ^17.0.0"
110
111
  }
package/ui/menu/menu.tsx CHANGED
@@ -2,7 +2,8 @@ import { MainDropdown, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropd
2
2
  import { VersionDropdown } from '@teambit/component.ui.version-dropdown';
3
3
  import { FullLoader } from '@teambit/legacy/dist/to-eject/full-loader';
4
4
  import type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';
5
- import { flatten, groupBy } from 'lodash';
5
+ import { useLocation } from '@teambit/base-ui.routing.routing-provider';
6
+ import { compact, flatten, groupBy } from 'lodash';
6
7
  import classnames from 'classnames';
7
8
  import React, { useMemo } from 'react';
8
9
  import { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';
@@ -48,7 +49,7 @@ export function Menu({ navigationSlot, widgetSlot, className, host, menuItemSlot
48
49
  <div className={styles.widgets}>
49
50
  <MenuNav navigationSlot={widgetSlot} />
50
51
  </div>
51
- <VersionRelatedDropdowns component={component} consumeMethods={consumeMethodSlot} />
52
+ <VersionRelatedDropdowns component={component} consumeMethods={consumeMethodSlot} host={host} />
52
53
  <MainDropdown menuItems={mainMenuItems} />
53
54
  </div>
54
55
  </div>
@@ -58,20 +59,29 @@ export function Menu({ navigationSlot, widgetSlot, className, host, menuItemSlot
58
59
  function VersionRelatedDropdowns({
59
60
  component,
60
61
  consumeMethods,
62
+ host,
61
63
  }: {
62
64
  component: ComponentModel;
63
65
  consumeMethods: ConsumeMethodSlot;
66
+ host: string;
64
67
  }) {
65
- const versionList =
66
- useMemo(
67
- () =>
68
- component.tags
69
- ?.toArray()
70
- .map((tag) => tag?.version?.version)
71
- .filter((x) => x !== undefined)
72
- .reverse(),
73
- [component.tags]
74
- ) || [];
68
+ const location = useLocation();
69
+ const isNew = component.tags.isEmpty();
70
+
71
+ const isWorkspace = host === 'teambit.workspace/workspace';
72
+ const versionList = useMemo(() => {
73
+ const tagsArray = component.tags
74
+ ?.toArray()
75
+ .map((tag) => tag?.version?.version)
76
+ .filter((x) => x !== undefined)
77
+ .reverse();
78
+ const wsLink = [isWorkspace && !isNew ? 'workspace' : undefined];
79
+
80
+ return compact([...wsLink, ...tagsArray]);
81
+ }, [component.tags, isWorkspace, isNew]);
82
+
83
+ const currentVersion =
84
+ isWorkspace && !isNew && !location.search.includes('version') ? 'workspace' : component.version;
75
85
 
76
86
  const methods = useConsumeMethods(consumeMethods, component);
77
87
  return (
@@ -83,7 +93,7 @@ function VersionRelatedDropdowns({
83
93
  Menu={<ConsumeMethodsMenu methods={methods} componentName={component.id.name} />}
84
94
  />
85
95
  )}
86
- <VersionDropdown versions={versionList} currentVersion={component.version} />
96
+ <VersionDropdown versions={versionList} currentVersion={currentVersion} latestVersion={component.latest} />
87
97
  </>
88
98
  );
89
99
  }