@hi-ui/menu 4.0.0-alpha.1

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.
@@ -0,0 +1,17 @@
1
+ /** @LICENSE
2
+ * @hi-ui/menu
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/menu#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ var css_248z = "@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n.hi-v4-menu-fat-menu {\n background-color: #fff;\n background-color: var(--hi-v4-color-static-white, #fff);\n margin: 0;\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n padding: 8px;\n padding: var(--hi-v4-spacing-4, 8px);\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n color: #1f2733;\n color: var(--hi-v4-color-gray-700, #1f2733);\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n.hi-v4-menu-fat-menu__group:not(:last-of-type) {\n margin-right: 36px;\n margin-right: var(--hi-v4-spacing-18, 36px); }\n.hi-v4-menu-fat-menu .hi-v4-menu-group-item {\n height: 40px;\n margin: 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n padding: 0 12px;\n padding: 0 var(--hi-v4-spacing-6, 12px);\n color: #929aa6;\n color: var(--hi-v4-color-gray-500, #929aa6); }\n.hi-v4-menu-fat-menu .hi-v4-menu-item {\n height: 40px;\n margin: 0;\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n padding: 0 12px;\n padding: 0 var(--hi-v4-spacing-6, 12px); }\n.hi-v4-menu-fat-menu .hi-v4-menu-item--active {\n color: #237ffa;\n color: var(--hi-v4-color-brandblue-500, #237ffa);\n background-color: #e2f3fe;\n background-color: var(--hi-v4-color-brandblue-50, #e2f3fe); }\n.hi-v4-menu-fat-menu .hi-v4-menu-item:not(.hi-v4-menu-item--active):hover {\n background-color: #f2f4f7;\n background-color: var(--hi-v4-color-gray-100, #f2f4f7); }\n.hi-v4-menu-fat-menu ul {\n padding: 0;\n margin: 0; }\n.hi-v4-menu-fat-menu ul li {\n list-style-type: none; }\n.hi-v4-menu-popmenu {\n background-color: #fff;\n background-color: var(--hi-v4-color-static-white, #fff);\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n margin: 0;\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n padding: 8px;\n padding: var(--hi-v4-spacing-4, 8px);\n color: #1f2733;\n color: var(--hi-v4-color-gray-700, #1f2733); }\n.hi-v4-menu-popmenu .hi-v4-menu-item {\n height: 40px;\n margin: 0; }\n.hi-v4-menu-popmenu .hi-v4-menu-item__inner {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 40px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n margin-bottom: 8px;\n margin-bottom: var(--hi-v4-spacing-4, 8px);\n padding: 0 12px;\n padding: 0 var(--hi-v4-spacing-6, 12px);\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px); }\n.hi-v4-menu-popmenu .hi-v4-menu-item__inner--active {\n color: #237ffa;\n color: var(--hi-v4-color-brandblue-500, #237ffa);\n background-color: #e2f3fe;\n background-color: var(--hi-v4-color-brandblue-50, #e2f3fe); }\n.hi-v4-menu-popmenu .hi-v4-menu-item__inner--active-p {\n color: #237ffa;\n color: var(--hi-v4-color-brandblue-500, #237ffa); }\n.hi-v4-menu-popmenu .hi-v4-menu-item__inner:not(.hi-v4-menu-item__inner--active):hover {\n background-color: #f2f4f7;\n background-color: var(--hi-v4-color-gray-100, #f2f4f7); }\n.hi-v4-menu-popmenu .hi-v4-menu-item__content {\n -webkit-box-flex: 1;\n -ms-flex: 1 1;\n flex: 1 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100px;\n padding-right: 8px;\n padding-right: var(--hi-v4-spacing-4, 8px); }\n.hi-v4-menu {\n background-color: #fff;\n background-color: var(--hi-v4-color-static-white, #fff);\n color: #1f2733;\n color: var(--hi-v4-color-gray-700, #1f2733);\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n line-height: 1.375rem;\n line-height: var(--hi-v4-text-lineheight-normal, 1.375rem);\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n.hi-v4-menu ul {\n margin: 0;\n padding: 0; }\n.hi-v4-menu-item {\n list-style: none;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n cursor: pointer;\n -webkit-transition: all 0.3s;\n transition: all 0.3s; }\n.hi-v4-menu__wrapper {\n padding: 0;\n margin: 0; }\n.hi-v4-menu--horizontal {\n width: 100%;\n overflow: auto; }\n.hi-v4-menu--horizontal .hi-v4-menu__wrapper {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex; }\n.hi-v4-menu--horizontal .hi-v4-menu-item {\n margin: 0 20px;\n margin: 0 var(--hi-v4-spacing-10, 20px);\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n height: 56px;\n border-bottom: 2px solid transparent;\n font-size: 1rem;\n font-size: var(--hi-v4-text-size-lg, 1rem); }\n.hi-v4-menu--horizontal .hi-v4-menu-item:hover {\n color: #237ffa;\n color: var(--hi-v4-color-brandblue-500, #237ffa);\n border-bottom: 2px solid #237ffa;\n border-bottom: 2px solid var(--hi-v4-color-brandblue-500, #237ffa); }\n.hi-v4-menu--horizontal .hi-v4-menu-item--active {\n color: #237ffa;\n color: var(--hi-v4-color-brandblue-500, #237ffa);\n border-bottom: 2px solid #237ffa;\n border-bottom: 2px solid var(--hi-v4-color-brandblue-500, #237ffa); }\n.hi-v4-menu--horizontal .hi-v4-menu-item--active-p {\n color: #237ffa;\n color: var(--hi-v4-color-brandblue-500, #237ffa); }\n.hi-v4-menu--horizontal .hi-v4-menu-item__inner {\n height: 100%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n.hi-v4-menu--horizontal .hi-v4-menu-item__content {\n -webkit-box-flex: 1;\n -ms-flex: 1 1;\n flex: 1 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100px;\n margin-right: 8px;\n margin-right: var(--hi-v4-spacing-4, 8px); }\n.hi-v4-menu--vertical {\n padding: 8px;\n padding: var(--hi-v4-spacing-4, 8px);\n width: 232px;\n height: 100%;\n overflow: auto;\n -webkit-transition: width 0.3s;\n transition: width 0.3s; }\n.hi-v4-menu--vertical.hi-v4-menu--mini {\n width: 56px;\n overflow-x: hidden; }\n.hi-v4-menu--vertical .hi-v4-menu__toggle {\n width: 40px;\n cursor: pointer;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n height: 40px; }\n.hi-v4-menu--vertical .hi-v4-menu__toggle:hover {\n background-color: #f2f4f7;\n background-color: var(--hi-v4-color-gray-100, #f2f4f7); }\n.hi-v4-menu--vertical .hi-v4-menu-item__inner {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 40px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n margin-bottom: 8px;\n margin-bottom: var(--hi-v4-spacing-4, 8px);\n padding: 0 12px;\n padding: 0 var(--hi-v4-spacing-6, 12px);\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n -webkit-transition: all 0.3s;\n transition: all 0.3s; }\n.hi-v4-menu--vertical .hi-v4-menu-item__inner--mini {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n.hi-v4-menu--vertical .hi-v4-menu-item__inner--active {\n color: #237ffa;\n color: var(--hi-v4-color-brandblue-500, #237ffa);\n background-color: #e2f3fe;\n background-color: var(--hi-v4-color-brandblue-50, #e2f3fe); }\n.hi-v4-menu--vertical .hi-v4-menu-item__inner--active-p {\n color: #237ffa;\n color: var(--hi-v4-color-brandblue-500, #237ffa); }\n.hi-v4-menu--vertical .hi-v4-menu-item__inner:not(.hi-v4-menu-item__inner--active):hover {\n background-color: #f2f4f7;\n background-color: var(--hi-v4-color-gray-100, #f2f4f7); }\n.hi-v4-menu--vertical .hi-v4-menu-item__content {\n -webkit-box-flex: 1;\n -ms-flex: 1 1;\n flex: 1 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-indent: 0.5px; }\n";
11
+
12
+ var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
13
+
14
+ __styleInject__(css_248z);
15
+
16
+ export default css_248z;
17
+ //# sourceMappingURL=index.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -0,0 +1,42 @@
1
+ /** @LICENSE
2
+ * @hi-ui/menu
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/menu#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ // 寻找某一节点的父节点
11
+ var getParentId = function getParentId(id, data) {
12
+ var parentId = '';
13
+ data.forEach(function (item) {
14
+ if (item.children) {
15
+ if (item.children.some(function (item) {
16
+ return item.id === id;
17
+ })) {
18
+ parentId = item.id;
19
+ } else if (getParentId(id, item.children)) {
20
+ parentId = getParentId(id, item.children);
21
+ }
22
+ }
23
+ });
24
+ return parentId;
25
+ }; // 寻找某一节点的所有祖先节点
26
+
27
+
28
+ var getAncestorIds = function getAncestorIds(id, data, arr) {
29
+ if (arr === void 0) {
30
+ arr = [];
31
+ }
32
+
33
+ if (getParentId(id, data)) {
34
+ arr.push(getParentId(id, data));
35
+ getAncestorIds(getParentId(id, data), data, arr);
36
+ }
37
+
38
+ return arr;
39
+ };
40
+
41
+ export { getAncestorIds, getParentId };
42
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sources":["../../src/util.ts"],"sourcesContent":[null],"names":["getParentId","id","data","parentId","forEach","item","children","some","getAncestorIds","arr","push"],"mappings":";;;;;;;;;AAAA;IACaA,WAAW,GAAG,SAAdA,WAAc,CAACC,EAAD,EAAsBC,IAAtB;MACrBC,QAAQ,GAAG;AACfD,EAAAA,IAAI,CAACE,OAALF,CAAa,UAACG,IAAD;QACPA,IAAI,CAACC,UAAU;UACbD,IAAI,CAACC,QAALD,CAAcE,IAAdF,CAAmB,UAACA,IAAD;eAA+BA,IAAI,CAACJ,EAALI,KAAYJ;AAA9D,OAAAI,GAAmE;AACrEF,QAAAA,QAAQ,GAAGE,IAAI,CAACJ,EAAhBE;AADF,aAEO,IAAIH,WAAW,CAACC,EAAD,EAAKI,IAAI,CAACC,QAAV,CAAf,EAAoC;AACzCH,QAAAA,QAAQ,GAAGH,WAAW,CAACC,EAAD,EAAKI,IAAI,CAACC,QAAV,CAAtBH;;;AALN,GAAAD;SASOC;;;;IAIIK,cAAc,GAAG,SAAjBA,cAAiB,CAC5BP,EAD4B,EAE5BC,IAF4B,EAG5BO,GAH4B;MAG5BA;AAAAA,IAAAA,MAA2B,EAA3BA;;;MAEIT,WAAW,CAACC,EAAD,EAAKC,IAAL,GAAY;AACzBO,IAAAA,GAAG,CAACC,IAAJD,CAAST,WAAW,CAACC,EAAD,EAAKC,IAAL,CAApBO;AACAD,IAAAA,cAAc,CAACR,WAAW,CAACC,EAAD,EAAKC,IAAL,CAAZ,EAAwBA,IAAxB,EAA8BO,GAA9B,CAAdD;;;SAEKC;;;"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export declare const Expander: React.FC<ExpanderProps>;
3
+ interface ExpanderProps {
4
+ className?: string;
5
+ visible: boolean;
6
+ }
7
+ export {};
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ /**
3
+ * TODO: What is Menu
4
+ */
5
+ export declare const Menu: React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<HTMLDivElement | null>>;
6
+ export declare type MenuItemProps = {
7
+ /**
8
+ * 组件默认的选择器类
9
+ */
10
+ prefixCls?: string;
11
+ content: React.ReactNode;
12
+ icon?: React.ReactNode;
13
+ id: string | number;
14
+ disabled?: boolean;
15
+ children?: MenuItemProps[];
16
+ level: number;
17
+ parentIds: React.ReactText[];
18
+ };
19
+ export interface MenuProps {
20
+ /**
21
+ * 组件默认的选择器类
22
+ */
23
+ prefixCls?: string;
24
+ /**
25
+ * 组件的语义化 Role 属性
26
+ */
27
+ role?: string;
28
+ /**
29
+ * 组件的注入选择器类
30
+ */
31
+ className?: string;
32
+ /**
33
+ * 组件的注入样式
34
+ */
35
+ data: MenuItemProps[];
36
+ activeId?: string | number;
37
+ placement?: 'horizontal' | 'vertical';
38
+ collapsed?: boolean;
39
+ showCollapse?: boolean;
40
+ showAllSubMenus?: boolean;
41
+ accordion?: boolean;
42
+ style?: React.CSSProperties;
43
+ onClick?: (menuId: React.ReactText) => void;
44
+ onClickSubMenu?: (subMenuId: React.ReactText) => void;
45
+ onCollapse?: (collapsed: boolean) => void;
46
+ overlayClassName?: string;
47
+ expandedType: 'default' | 'pop';
48
+ defaultExpandedIds: React.ReactText[];
49
+ defaultActiveId: React.ReactText;
50
+ }
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { MenuItemProps } from './Menu';
3
+ export declare const MenuItem: React.FC<MenuItemProps>;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ declare const MenuContext: React.Context<{
3
+ placement?: "vertical" | "horizontal" | undefined;
4
+ expandedType?: "default" | "pop" | undefined;
5
+ showAllSubMenus?: boolean | undefined;
6
+ mini?: boolean | undefined;
7
+ expandedIds?: React.ReactText[] | undefined;
8
+ activeId?: React.ReactText | undefined;
9
+ activeParents?: React.ReactText[] | undefined;
10
+ clickMenu?: ((id: React.ReactText) => void) | undefined;
11
+ clickSubMenu?: ((id: React.ReactText) => void) | undefined;
12
+ closePopper?: ((id: React.ReactText) => void) | undefined;
13
+ closeAllPopper?: (() => void) | undefined;
14
+ }>;
15
+ export default MenuContext;
@@ -0,0 +1,3 @@
1
+ import './styles/index.scss';
2
+ export * from './Menu';
3
+ export { Menu as default } from './Menu';
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export interface MenuDataItem {
3
+ /**
4
+ * 节点唯一 id
5
+ */
6
+ id: React.ReactText;
7
+ /**
8
+ * 节点标题
9
+ */
10
+ title: React.ReactNode;
11
+ }
@@ -0,0 +1,2 @@
1
+ export declare const getParentId: (id: string | number, data: Record<string, any>[]) => string | number;
2
+ export declare const getAncestorIds: (id: string | number, data: Record<string, any>[], arr?: (string | number)[]) => (string | number)[];
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@hi-ui/menu",
3
+ "version": "4.0.0-alpha.1",
4
+ "description": "A sub-package for @hi-ui/hiui.",
5
+ "keywords": [],
6
+ "author": "HIUI <mi-hiui@xiaomi.com>",
7
+ "homepage": "https://github.com/XiaoMi/hiui/tree/master/packages/ui/menu#readme",
8
+ "license": "MIT",
9
+ "directories": {
10
+ "lib": "lib",
11
+ "test": "__tests__"
12
+ },
13
+ "files": [
14
+ "lib"
15
+ ],
16
+ "main": "lib/cjs/index.js",
17
+ "module": "lib/esm/index.js",
18
+ "types": "lib/types/index.d.ts",
19
+ "typings": "lib/types/index.d.ts",
20
+ "exports": {
21
+ ".": {
22
+ "require": "./lib/cjs/index.js",
23
+ "default": "./lib/esm/index.js"
24
+ }
25
+ },
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/XiaoMi/hiui.git"
32
+ },
33
+ "scripts": {
34
+ "test": "jest",
35
+ "clean": "rimraf lib",
36
+ "prebuild": "yarn clean",
37
+ "build:esm": "hi-build ./src/index.ts --format esm -d ./lib/esm",
38
+ "build:cjs": "hi-build ./src/index.ts --format cjs -d ./lib/cjs",
39
+ "build:types": "tsc --emitDeclarationOnly --declaration --declarationDir lib/types",
40
+ "build": "concurrently yarn:build:*"
41
+ },
42
+ "bugs": {
43
+ "url": "https://github.com/XiaoMi/hiui/issues"
44
+ },
45
+ "dependencies": {
46
+ "@hi-ui/classname": "^4.0.0-alpha.0",
47
+ "@hi-ui/core": "^4.0.0-alpha.8",
48
+ "@hi-ui/core-css": "^4.0.0-alpha.6",
49
+ "@hi-ui/env": "^4.0.0-alpha.0",
50
+ "@hi-ui/icons": "^4.0.0-alpha.13",
51
+ "@hi-ui/popper": "^4.0.0-alpha.11",
52
+ "@hi-ui/use-uncontrolled-state": "^4.0.0-alpha.8",
53
+ "react-transition-group": "^4.4.2"
54
+ },
55
+ "peerDependencies": {
56
+ "react": "^17.0.1",
57
+ "react-dom": "^17.0.1"
58
+ },
59
+ "devDependencies": {
60
+ "@hi-ui/hi-build": "^4.0.0-alpha.3",
61
+ "react": "^17.0.1",
62
+ "react-dom": "^17.0.1"
63
+ },
64
+ "gitHead": "689ef7c6b19089bf0aa818978c70da1e27714e6b"
65
+ }