@teambit/lanes.ui.inputs.lane-selector 0.0.83 → 0.0.84
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/lane-grouped-menu-item.d.ts +3 -1
- package/dist/lane-grouped-menu-item.js +4 -4
- package/dist/lane-grouped-menu-item.js.map +1 -1
- package/dist/lane-menu-item.d.ts +3 -1
- package/dist/lane-menu-item.js +3 -3
- package/dist/lane-menu-item.js.map +1 -1
- package/dist/lane-selector.d.ts +3 -1
- package/dist/lane-selector.js +5 -5
- package/dist/lane-selector.js.map +1 -1
- package/dist/lane-selector.module.scss +1 -3
- package/dist/{preview-1675759172294.js → preview-1675822998765.js} +0 -0
- package/lane-grouped-menu-item.tsx +28 -4
- package/lane-menu-item.tsx +17 -3
- package/lane-selector.module.scss +1 -3
- package/lane-selector.tsx +28 -5
- package/package-tar/teambit-lanes.ui.inputs.lane-selector-0.0.84.tgz +0 -0
- package/package.json +4 -4
- package/package-tar/teambit-lanes.ui.inputs.lane-selector-0.0.83.tgz +0 -0
|
@@ -4,5 +4,7 @@ export declare type LaneGroupedMenuItemProps = {
|
|
|
4
4
|
selected?: LaneId;
|
|
5
5
|
current: LaneId[];
|
|
6
6
|
scope: string;
|
|
7
|
+
getHref?: (laneId: LaneId) => string;
|
|
8
|
+
onLaneSelected?: (laneId: LaneId) => void;
|
|
7
9
|
} & HTMLAttributes<HTMLDivElement>;
|
|
8
|
-
export declare function LaneGroupedMenuItem({ selected, current, className, scope, ...rest }: LaneGroupedMenuItemProps): JSX.Element;
|
|
10
|
+
export declare function LaneGroupedMenuItem({ selected, current, className, scope, getHref, onLaneSelected, ...rest }: LaneGroupedMenuItemProps): JSX.Element;
|
|
@@ -20,17 +20,17 @@ const classnames_1 = __importDefault(require("classnames"));
|
|
|
20
20
|
const lane_menu_item_1 = require("./lane-menu-item");
|
|
21
21
|
const lane_grouped_menu_item_module_scss_1 = __importDefault(require("./lane-grouped-menu-item.module.scss"));
|
|
22
22
|
function LaneGroupedMenuItem(_a) {
|
|
23
|
-
var { selected, current, className, scope } = _a, rest = __rest(_a, ["selected", "current", "className", "scope"]);
|
|
23
|
+
var { selected, current, className, scope, getHref, onLaneSelected } = _a, rest = __rest(_a, ["selected", "current", "className", "scope", "getHref", "onLaneSelected"]);
|
|
24
24
|
if (current.length === 0)
|
|
25
25
|
return null;
|
|
26
|
-
if (current[0].isDefault()) {
|
|
26
|
+
if (current.length === 1 && current[0].isDefault()) {
|
|
27
27
|
const defaultLane = current[0];
|
|
28
|
-
return react_1.default.createElement(lane_menu_item_1.LaneMenuItem, { key: defaultLane.toString(), selected: selected, current: defaultLane });
|
|
28
|
+
return (react_1.default.createElement(lane_menu_item_1.LaneMenuItem, { key: defaultLane.toString(), onLaneSelected: onLaneSelected, getHref: getHref, selected: selected, current: defaultLane }));
|
|
29
29
|
}
|
|
30
30
|
const onClickStopPropagation = (e) => e.stopPropagation();
|
|
31
31
|
return (react_1.default.createElement("div", Object.assign({ className: (0, classnames_1.default)(lane_grouped_menu_item_module_scss_1.default.groupedMenuItem, className) }, rest),
|
|
32
32
|
react_1.default.createElement("div", { onClick: onClickStopPropagation, className: lane_grouped_menu_item_module_scss_1.default.scope }, scope),
|
|
33
|
-
current.map((lane) => (react_1.default.createElement(lane_menu_item_1.LaneMenuItem, { key: lane.toString(), selected: selected, current: lane })))));
|
|
33
|
+
current.map((lane) => (react_1.default.createElement(lane_menu_item_1.LaneMenuItem, { key: lane.toString(), onLaneSelected: onLaneSelected, getHref: getHref, selected: selected, current: lane })))));
|
|
34
34
|
}
|
|
35
35
|
exports.LaneGroupedMenuItem = LaneGroupedMenuItem;
|
|
36
36
|
//# sourceMappingURL=lane-grouped-menu-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lane-grouped-menu-item.js","sourceRoot":"","sources":["../lane-grouped-menu-item.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAA8C;AAE9C,4DAAoC;AACpC,qDAAgD;AAEhD,8GAA0D;
|
|
1
|
+
{"version":3,"file":"lane-grouped-menu-item.js","sourceRoot":"","sources":["../lane-grouped-menu-item.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kDAA8C;AAE9C,4DAAoC;AACpC,qDAAgD;AAEhD,8GAA0D;AAU1D,SAAgB,mBAAmB,CAAC,EAQT;QARS,EAClC,QAAQ,EACR,OAAO,EACP,SAAS,EACT,KAAK,EACL,OAAO,EACP,cAAc,OAEW,EADtB,IAAI,cAP2B,0EAQnC,CADQ;IAEP,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE;QAClD,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAW,CAAC;QACzC,OAAO,CACL,8BAAC,6BAAY,IACX,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,EAC3B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,GACpB,CACH,CAAC;KACH;IAED,MAAM,sBAAsB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IAE1D,OAAO,CACL,qDAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,4CAAM,CAAC,eAAe,EAAE,SAAS,CAAC,IAAM,IAAI;QACrE,uCAAK,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,4CAAM,CAAC,KAAK,IAC1D,KAAK,CACF;QACL,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACrB,8BAAC,6BAAY,IACX,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,EACpB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,IAAI,GACb,CACH,CAAC,CACE,CACP,CAAC;AACJ,CAAC;AA1CD,kDA0CC"}
|
package/dist/lane-menu-item.d.ts
CHANGED
|
@@ -3,5 +3,7 @@ import { LaneId } from '@teambit/lane-id';
|
|
|
3
3
|
export declare type LaneMenuItemProps = {
|
|
4
4
|
selected?: LaneId;
|
|
5
5
|
current: LaneId;
|
|
6
|
+
getHref?: (laneId: LaneId) => string;
|
|
7
|
+
onLaneSelected?: (laneId: LaneId) => void;
|
|
6
8
|
} & HTMLAttributes<HTMLDivElement>;
|
|
7
|
-
export declare function LaneMenuItem({ selected, current, className, ...rest }: LaneMenuItemProps): JSX.Element;
|
|
9
|
+
export declare function LaneMenuItem({ selected, current, className, onLaneSelected, getHref, ...rest }: LaneMenuItemProps): JSX.Element;
|
package/dist/lane-menu-item.js
CHANGED
|
@@ -44,7 +44,7 @@ const design_ui_pill_label_1 = require("@teambit/design.ui.pill-label");
|
|
|
44
44
|
const design_ui_surfaces_menu_link_item_1 = require("@teambit/design.ui.surfaces.menu.link-item");
|
|
45
45
|
const lane_menu_item_module_scss_1 = __importDefault(require("./lane-menu-item.module.scss"));
|
|
46
46
|
function LaneMenuItem(_a) {
|
|
47
|
-
var { selected, current, className } = _a, rest = __rest(_a, ["selected", "current", "className"]);
|
|
47
|
+
var { selected, current, className, onLaneSelected, getHref = lanes_ui_models_lanes_model_1.LanesModel.getLaneUrl } = _a, rest = __rest(_a, ["selected", "current", "className", "onLaneSelected", "getHref"]);
|
|
48
48
|
const isCurrent = (selected === null || selected === void 0 ? void 0 : selected.toString()) === current.toString();
|
|
49
49
|
const currentVersionRef = (0, react_1.useRef)(null);
|
|
50
50
|
(0, react_1.useEffect)(() => {
|
|
@@ -53,9 +53,9 @@ function LaneMenuItem(_a) {
|
|
|
53
53
|
(_a = currentVersionRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
|
54
54
|
}
|
|
55
55
|
}, [isCurrent]);
|
|
56
|
-
const href =
|
|
56
|
+
const href = getHref(current);
|
|
57
57
|
return (react_1.default.createElement("div", Object.assign({}, rest, { className: className, ref: currentVersionRef }),
|
|
58
|
-
react_1.default.createElement(design_ui_surfaces_menu_link_item_1.MenuLinkItem, { active: isCurrent, href: href, className: lane_menu_item_module_scss_1.default.menuItem },
|
|
58
|
+
react_1.default.createElement(design_ui_surfaces_menu_link_item_1.MenuLinkItem, { active: isCurrent, href: href, className: lane_menu_item_module_scss_1.default.menuItem, onClick: onLaneSelected && (() => onLaneSelected(current)) },
|
|
59
59
|
react_1.default.createElement("div", { className: lane_menu_item_module_scss_1.default.laneName }, current.name),
|
|
60
60
|
current.isDefault() && (react_1.default.createElement(design_ui_pill_label_1.PillLabel, { className: lane_menu_item_module_scss_1.default.defaultLanePill },
|
|
61
61
|
react_1.default.createElement("span", null, "default"))))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lane-menu-item.js","sourceRoot":"","sources":["../lane-menu-item.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiE;AAEjE,sFAAkE;AAClE,wEAA0D;AAC1D,kGAA0E;AAE1E,8FAAkD;
|
|
1
|
+
{"version":3,"file":"lane-menu-item.js","sourceRoot":"","sources":["../lane-menu-item.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiE;AAEjE,sFAAkE;AAClE,wEAA0D;AAC1D,kGAA0E;AAE1E,8FAAkD;AASlD,SAAgB,YAAY,CAAC,EAOT;QAPS,EAC3B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,cAAc,EACd,OAAO,GAAG,wCAAU,CAAC,UAAU,OAEb,EADf,IAAI,cANoB,iEAO5B,CADQ;IAEP,MAAM,SAAS,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,EAAE,MAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;IAE9D,MAAM,iBAAiB,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IACvD,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACb,IAAI,SAAS,EAAE;YACb,MAAA,iBAAiB,CAAC,OAAO,0CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;SACrF;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9B,OAAO,CACL,uDAAS,IAAI,IAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,iBAAiB;QACzD,8BAAC,gDAAY,IACX,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,oCAAM,CAAC,QAAQ,EAC1B,OAAO,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAE1D,uCAAK,SAAS,EAAE,oCAAM,CAAC,QAAQ,IAAG,OAAO,CAAC,IAAI,CAAO;YACpD,OAAO,CAAC,SAAS,EAAE,IAAI,CACtB,8BAAC,gCAAS,IAAC,SAAS,EAAE,oCAAM,CAAC,eAAe;gBAC1C,sDAAoB,CACV,CACb,CACY,CACX,CACP,CAAC;AACJ,CAAC;AApCD,oCAoCC"}
|
package/dist/lane-selector.d.ts
CHANGED
|
@@ -4,5 +4,7 @@ export declare type LaneSelectorProps = {
|
|
|
4
4
|
lanes: Array<LaneId>;
|
|
5
5
|
selectedLaneId?: LaneId;
|
|
6
6
|
groupByScope?: boolean;
|
|
7
|
+
getHref?: (laneId: LaneId) => string;
|
|
8
|
+
onLaneSelected?: (laneId: LaneId) => void;
|
|
7
9
|
} & HTMLAttributes<HTMLDivElement>;
|
|
8
|
-
export declare function LaneSelector({ className, lanes, selectedLaneId, groupByScope, ...rest }: LaneSelectorProps): JSX.Element;
|
|
10
|
+
export declare function LaneSelector({ className, lanes, selectedLaneId, groupByScope, getHref, onLaneSelected, ...rest }: LaneSelectorProps): JSX.Element;
|
package/dist/lane-selector.js
CHANGED
|
@@ -48,12 +48,12 @@ const lane_grouped_menu_item_1 = require("./lane-grouped-menu-item");
|
|
|
48
48
|
const lane_search_1 = require("./lane-search");
|
|
49
49
|
const lane_selector_module_scss_1 = __importDefault(require("./lane-selector.module.scss"));
|
|
50
50
|
function LaneSelector(_a) {
|
|
51
|
-
var { className, lanes, selectedLaneId, groupByScope = true } = _a, rest = __rest(_a, ["className", "lanes", "selectedLaneId", "groupByScope"]);
|
|
51
|
+
var { className, lanes, selectedLaneId, groupByScope = true, getHref, onLaneSelected } = _a, rest = __rest(_a, ["className", "lanes", "selectedLaneId", "groupByScope", "getHref", "onLaneSelected"]);
|
|
52
52
|
const [filteredLanes, setFilteredLanes] = (0, react_1.useState)(lanes);
|
|
53
53
|
const [focus, setFocus] = (0, react_1.useState)(false);
|
|
54
54
|
(0, react_1.useEffect)(() => {
|
|
55
55
|
setFilteredLanes(lanes);
|
|
56
|
-
}, [lanes]);
|
|
56
|
+
}, [lanes.length]);
|
|
57
57
|
const multipleLanes = lanes.length > 1;
|
|
58
58
|
const laneDropdownItems = groupByScope
|
|
59
59
|
? Array.from(lanes_ui_models_lanes_model_1.LanesModel.groupByScope(filteredLanes).entries())
|
|
@@ -71,7 +71,7 @@ function LaneSelector(_a) {
|
|
|
71
71
|
const onDropdownToggled = (_, open) => {
|
|
72
72
|
setFocus(open);
|
|
73
73
|
};
|
|
74
|
-
return (react_1.default.createElement(evangelist_surfaces_dropdown_1.Dropdown, Object.assign({}, rest, { open: !multipleLanes ? false : undefined, dropClass: lane_selector_module_scss_1.default.menu, elevation:
|
|
74
|
+
return (react_1.default.createElement(evangelist_surfaces_dropdown_1.Dropdown, Object.assign({}, rest, { open: !multipleLanes ? false : undefined, dropClass: lane_selector_module_scss_1.default.menu, elevation: "none", onChange: multipleLanes ? onDropdownToggled : undefined,
|
|
75
75
|
// @ts-ignore - mismatch between @types/react
|
|
76
76
|
placeholder: react_1.default.createElement(lane_placeholder_1.LanePlaceholder, { disabled: !multipleLanes, selectedLaneId: selectedLaneId, showScope: groupByScope }), className: (0, classnames_1.default)(className, lane_selector_module_scss_1.default.dropdown, !multipleLanes && lane_selector_module_scss_1.default.disabled) }),
|
|
77
77
|
multipleLanes && react_1.default.createElement("div", { className: lane_selector_module_scss_1.default.header }, "Switch lane"),
|
|
@@ -79,10 +79,10 @@ function LaneSelector(_a) {
|
|
|
79
79
|
react_1.default.createElement(lane_search_1.LaneSearch, { focus: focus, onChange: handleOnChange }))),
|
|
80
80
|
multipleLanes &&
|
|
81
81
|
groupByScope &&
|
|
82
|
-
laneDropdownItems.map(([scope, lanesByScope]) => (react_1.default.createElement(lane_grouped_menu_item_1.LaneGroupedMenuItem, { key: scope, scope: scope, selected: selectedLaneId, current: lanesByScope }))),
|
|
82
|
+
laneDropdownItems.map(([scope, lanesByScope]) => (react_1.default.createElement(lane_grouped_menu_item_1.LaneGroupedMenuItem, { key: scope, onLaneSelected: onLaneSelected, getHref: getHref, scope: scope, selected: selectedLaneId, current: lanesByScope }))),
|
|
83
83
|
multipleLanes &&
|
|
84
84
|
!groupByScope &&
|
|
85
|
-
laneDropdownItems.map((lane) => (react_1.default.createElement(lane_menu_item_1.LaneMenuItem, { key: lane.toString(), selected: selectedLaneId, current: lane })))));
|
|
85
|
+
laneDropdownItems.map((lane) => (react_1.default.createElement(lane_menu_item_1.LaneMenuItem, { onLaneSelected: onLaneSelected, key: lane.toString(), getHref: getHref, selected: selectedLaneId, current: lane })))));
|
|
86
86
|
}
|
|
87
87
|
exports.LaneSelector = LaneSelector;
|
|
88
88
|
//# sourceMappingURL=lane-selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lane-selector.js","sourceRoot":"","sources":["../lane-selector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAuF;AACvF,4DAAoC;AAEpC,wFAAiE;AAEjE,sFAAkE;AAClE,qDAAgD;AAChD,yDAAqD;AACrD,qEAA+D;AAC/D,+CAA2C;AAE3C,4FAAiD;
|
|
1
|
+
{"version":3,"file":"lane-selector.js","sourceRoot":"","sources":["../lane-selector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,6 @@
|
|
|
5
5
|
// (this is bizarre, the tree has no position absolute)
|
|
6
6
|
z-index: $nav-z-index;
|
|
7
7
|
border-radius: 8px;
|
|
8
|
-
// override dropdown default width: 100%
|
|
9
|
-
width: calc(100% - 40px) !important;
|
|
10
8
|
|
|
11
9
|
&.disabled {
|
|
12
10
|
> div {
|
|
@@ -28,7 +26,7 @@
|
|
|
28
26
|
}
|
|
29
27
|
|
|
30
28
|
.menu {
|
|
31
|
-
width:
|
|
29
|
+
width: 100%;
|
|
32
30
|
border-radius: 8px;
|
|
33
31
|
padding: 0;
|
|
34
32
|
padding-top: 8px;
|
|
File without changes
|
|
@@ -9,14 +9,32 @@ export type LaneGroupedMenuItemProps = {
|
|
|
9
9
|
selected?: LaneId;
|
|
10
10
|
current: LaneId[];
|
|
11
11
|
scope: string;
|
|
12
|
+
getHref?: (laneId: LaneId) => string;
|
|
13
|
+
onLaneSelected?: (laneId: LaneId) => void;
|
|
12
14
|
} & HTMLAttributes<HTMLDivElement>;
|
|
13
15
|
|
|
14
|
-
export function LaneGroupedMenuItem({
|
|
16
|
+
export function LaneGroupedMenuItem({
|
|
17
|
+
selected,
|
|
18
|
+
current,
|
|
19
|
+
className,
|
|
20
|
+
scope,
|
|
21
|
+
getHref,
|
|
22
|
+
onLaneSelected,
|
|
23
|
+
...rest
|
|
24
|
+
}: LaneGroupedMenuItemProps) {
|
|
15
25
|
if (current.length === 0) return null;
|
|
16
26
|
|
|
17
|
-
if (current[0].isDefault()) {
|
|
27
|
+
if (current.length === 1 && current[0].isDefault()) {
|
|
18
28
|
const defaultLane = current[0] as LaneId;
|
|
19
|
-
return
|
|
29
|
+
return (
|
|
30
|
+
<LaneMenuItem
|
|
31
|
+
key={defaultLane.toString()}
|
|
32
|
+
onLaneSelected={onLaneSelected}
|
|
33
|
+
getHref={getHref}
|
|
34
|
+
selected={selected}
|
|
35
|
+
current={defaultLane}
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
20
38
|
}
|
|
21
39
|
|
|
22
40
|
const onClickStopPropagation = (e) => e.stopPropagation();
|
|
@@ -27,7 +45,13 @@ export function LaneGroupedMenuItem({ selected, current, className, scope, ...re
|
|
|
27
45
|
{scope}
|
|
28
46
|
</div>
|
|
29
47
|
{current.map((lane) => (
|
|
30
|
-
<LaneMenuItem
|
|
48
|
+
<LaneMenuItem
|
|
49
|
+
key={lane.toString()}
|
|
50
|
+
onLaneSelected={onLaneSelected}
|
|
51
|
+
getHref={getHref}
|
|
52
|
+
selected={selected}
|
|
53
|
+
current={lane}
|
|
54
|
+
/>
|
|
31
55
|
))}
|
|
32
56
|
</div>
|
|
33
57
|
);
|
package/lane-menu-item.tsx
CHANGED
|
@@ -9,9 +9,18 @@ import styles from './lane-menu-item.module.scss';
|
|
|
9
9
|
export type LaneMenuItemProps = {
|
|
10
10
|
selected?: LaneId;
|
|
11
11
|
current: LaneId;
|
|
12
|
+
getHref?: (laneId: LaneId) => string;
|
|
13
|
+
onLaneSelected?: (laneId: LaneId) => void;
|
|
12
14
|
} & HTMLAttributes<HTMLDivElement>;
|
|
13
15
|
|
|
14
|
-
export function LaneMenuItem({
|
|
16
|
+
export function LaneMenuItem({
|
|
17
|
+
selected,
|
|
18
|
+
current,
|
|
19
|
+
className,
|
|
20
|
+
onLaneSelected,
|
|
21
|
+
getHref = LanesModel.getLaneUrl,
|
|
22
|
+
...rest
|
|
23
|
+
}: LaneMenuItemProps) {
|
|
15
24
|
const isCurrent = selected?.toString() === current.toString();
|
|
16
25
|
|
|
17
26
|
const currentVersionRef = useRef<HTMLDivElement>(null);
|
|
@@ -21,11 +30,16 @@ export function LaneMenuItem({ selected, current, className, ...rest }: LaneMenu
|
|
|
21
30
|
}
|
|
22
31
|
}, [isCurrent]);
|
|
23
32
|
|
|
24
|
-
const href =
|
|
33
|
+
const href = getHref(current);
|
|
25
34
|
|
|
26
35
|
return (
|
|
27
36
|
<div {...rest} className={className} ref={currentVersionRef}>
|
|
28
|
-
<MenuLinkItem
|
|
37
|
+
<MenuLinkItem
|
|
38
|
+
active={isCurrent}
|
|
39
|
+
href={href}
|
|
40
|
+
className={styles.menuItem}
|
|
41
|
+
onClick={onLaneSelected && (() => onLaneSelected(current))}
|
|
42
|
+
>
|
|
29
43
|
<div className={styles.laneName}>{current.name}</div>
|
|
30
44
|
{current.isDefault() && (
|
|
31
45
|
<PillLabel className={styles.defaultLanePill}>
|
|
@@ -5,8 +5,6 @@
|
|
|
5
5
|
// (this is bizarre, the tree has no position absolute)
|
|
6
6
|
z-index: $nav-z-index;
|
|
7
7
|
border-radius: 8px;
|
|
8
|
-
// override dropdown default width: 100%
|
|
9
|
-
width: calc(100% - 40px) !important;
|
|
10
8
|
|
|
11
9
|
&.disabled {
|
|
12
10
|
> div {
|
|
@@ -28,7 +26,7 @@
|
|
|
28
26
|
}
|
|
29
27
|
|
|
30
28
|
.menu {
|
|
31
|
-
width:
|
|
29
|
+
width: 100%;
|
|
32
30
|
border-radius: 8px;
|
|
33
31
|
padding: 0;
|
|
34
32
|
padding-top: 8px;
|
package/lane-selector.tsx
CHANGED
|
@@ -15,17 +15,27 @@ export type LaneSelectorProps = {
|
|
|
15
15
|
lanes: Array<LaneId>;
|
|
16
16
|
selectedLaneId?: LaneId;
|
|
17
17
|
groupByScope?: boolean;
|
|
18
|
+
getHref?: (laneId: LaneId) => string;
|
|
19
|
+
onLaneSelected?: (laneId: LaneId) => void;
|
|
18
20
|
} & HTMLAttributes<HTMLDivElement>;
|
|
19
21
|
|
|
20
22
|
type LaneDropdownItems = Array<LaneId> | Array<[scope: string, lanes: LaneId[]]>;
|
|
21
23
|
|
|
22
|
-
export function LaneSelector({
|
|
24
|
+
export function LaneSelector({
|
|
25
|
+
className,
|
|
26
|
+
lanes,
|
|
27
|
+
selectedLaneId,
|
|
28
|
+
groupByScope = true,
|
|
29
|
+
getHref,
|
|
30
|
+
onLaneSelected,
|
|
31
|
+
...rest
|
|
32
|
+
}: LaneSelectorProps) {
|
|
23
33
|
const [filteredLanes, setFilteredLanes] = useState<LaneId[]>(lanes);
|
|
24
34
|
const [focus, setFocus] = useState<boolean>(false);
|
|
25
35
|
|
|
26
36
|
useEffect(() => {
|
|
27
37
|
setFilteredLanes(lanes);
|
|
28
|
-
}, [lanes]);
|
|
38
|
+
}, [lanes.length]);
|
|
29
39
|
|
|
30
40
|
const multipleLanes = lanes.length > 1;
|
|
31
41
|
const laneDropdownItems: LaneDropdownItems = groupByScope
|
|
@@ -51,7 +61,7 @@ export function LaneSelector({ className, lanes, selectedLaneId, groupByScope =
|
|
|
51
61
|
{...rest}
|
|
52
62
|
open={!multipleLanes ? false : undefined}
|
|
53
63
|
dropClass={styles.menu}
|
|
54
|
-
elevation=
|
|
64
|
+
elevation="none"
|
|
55
65
|
onChange={multipleLanes ? onDropdownToggled : undefined}
|
|
56
66
|
// @ts-ignore - mismatch between @types/react
|
|
57
67
|
placeholder={
|
|
@@ -68,12 +78,25 @@ export function LaneSelector({ className, lanes, selectedLaneId, groupByScope =
|
|
|
68
78
|
{multipleLanes &&
|
|
69
79
|
groupByScope &&
|
|
70
80
|
(laneDropdownItems as Array<[scope: string, lanes: LaneId[]]>).map(([scope, lanesByScope]) => (
|
|
71
|
-
<LaneGroupedMenuItem
|
|
81
|
+
<LaneGroupedMenuItem
|
|
82
|
+
key={scope}
|
|
83
|
+
onLaneSelected={onLaneSelected}
|
|
84
|
+
getHref={getHref}
|
|
85
|
+
scope={scope}
|
|
86
|
+
selected={selectedLaneId}
|
|
87
|
+
current={lanesByScope}
|
|
88
|
+
/>
|
|
72
89
|
))}
|
|
73
90
|
{multipleLanes &&
|
|
74
91
|
!groupByScope &&
|
|
75
92
|
(laneDropdownItems as LaneId[]).map((lane) => (
|
|
76
|
-
<LaneMenuItem
|
|
93
|
+
<LaneMenuItem
|
|
94
|
+
onLaneSelected={onLaneSelected}
|
|
95
|
+
key={lane.toString()}
|
|
96
|
+
getHref={getHref}
|
|
97
|
+
selected={selectedLaneId}
|
|
98
|
+
current={lane}
|
|
99
|
+
></LaneMenuItem>
|
|
77
100
|
))}
|
|
78
101
|
</Dropdown>
|
|
79
102
|
);
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/lanes.ui.inputs.lane-selector",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.84",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/lanes/ui/inputs/lane-selector",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.lanes",
|
|
8
8
|
"name": "ui/inputs/lane-selector",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.84"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"classnames": "2.2.6",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"@teambit/design.ui.surfaces.menu.link-item": "1.0.0",
|
|
16
16
|
"@teambit/evangelist.elements.icon": "1.0.2",
|
|
17
17
|
"@teambit/evangelist.surfaces.dropdown": "1.0.2",
|
|
18
|
-
"@teambit/lane-id": "0.0.
|
|
19
|
-
"@teambit/lanes.ui.models.lanes-model": "0.0.
|
|
18
|
+
"@teambit/lane-id": "0.0.176",
|
|
19
|
+
"@teambit/lanes.ui.models.lanes-model": "0.0.84",
|
|
20
20
|
"@teambit/design.ui.styles.ellipsis": "0.0.357",
|
|
21
21
|
"@teambit/lanes.ui.icons.lane-icon": "0.0.4",
|
|
22
22
|
"@teambit/ui-foundation.ui.constants.z-indexes": "0.0.498"
|
|
Binary file
|