@gingkoo/pandora-explorer 0.0.1-alpha.96 → 0.0.1-alpha.98

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.
@@ -3,7 +3,7 @@ import { ReactNode } from 'react';
3
3
  interface MenuProps {
4
4
  menu?: MenuItem[];
5
5
  onChange?: (key: string, parent?: MenuItem) => any;
6
- loadMenu?: (item: MenuItem) => MenuItem;
6
+ loadMenu?: (item: MenuItem) => MenuItem | MenuItem[];
7
7
  store?: any;
8
8
  }
9
9
  export interface MenuItem {
@@ -1,3 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  export declare function getMenu(key: string): import("react").ComponentType<{}>;
3
3
  export declare function registerMenu(key: string, component: any): void;
4
+ export declare function addMenuItem(key: string | string[], menu: any[]): void;
5
+ export declare function removeMenuItem(key: string | string[], menuItem: string[]): void;
package/lib/es/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import Explorer from './explorer';
2
2
  import ExplorerMenu from './components/menu';
3
- export { registerMenu } from './components/menu/menulist';
3
+ export { registerMenu, addMenuItem, removeMenuItem } from './components/menu/menulist';
4
4
  export { Icons } from './explorer';
5
5
  export * from './types';
6
6
  export * from './enum';
package/lib/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @gingkoo/pandora-explorer v0.0.1-alpha.96
2
+ * @gingkoo/pandora-explorer v0.0.1-alpha.98
3
3
  */
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
  import cx$1 from 'classnames';
@@ -1603,6 +1603,32 @@ function getMenu(key) {
1603
1603
  function registerMenu(key, component) {
1604
1604
  iconFactory[key] = component;
1605
1605
  }
1606
+ function addMenuItem(key, menu) {
1607
+ let keys = [];
1608
+ if (Array.isArray(key)) {
1609
+ keys = key;
1610
+ } else {
1611
+ keys = [key];
1612
+ }
1613
+ keys.map(v => {
1614
+ let component = getMenu(v);
1615
+ let arr = [...component, ...menu];
1616
+ registerMenu(v, arr);
1617
+ });
1618
+ }
1619
+ function removeMenuItem(key, menuItem) {
1620
+ let keys = [];
1621
+ if (Array.isArray(key)) {
1622
+ keys = key;
1623
+ } else {
1624
+ keys = [key];
1625
+ }
1626
+ keys.map(v => {
1627
+ let component = getMenu(v);
1628
+ let arr = component.filter(item => !menuItem.includes(item.key));
1629
+ registerMenu(v, arr);
1630
+ });
1631
+ }
1606
1632
  //
1607
1633
  registerMenu('basis', [{
1608
1634
  key: 'open',
@@ -1892,12 +1918,17 @@ function Menu(props) {
1892
1918
  let upload = ['file-upload'];
1893
1919
  let delect = ['remove'];
1894
1920
  let arr = [];
1895
- let _menu = menu.map(v => {
1921
+ let _menu = [];
1922
+ menu.map(v => {
1896
1923
  let data = v;
1897
1924
  if (loadMenu) {
1898
1925
  data = loadMenu(v);
1899
1926
  }
1900
- return data;
1927
+ if (Array.isArray(data)) {
1928
+ _menu = [..._menu, ...data];
1929
+ } else {
1930
+ _menu.push(data);
1931
+ }
1901
1932
  });
1902
1933
  _menu.map(v => {
1903
1934
  if (!store?.isEdit && edit.includes(v?.key)) {
@@ -5532,6 +5563,7 @@ function TableItem(props) {
5532
5563
  ischeck,
5533
5564
  onCheck,
5534
5565
  onMenuClick,
5566
+ isdrag,
5535
5567
  rename,
5536
5568
  onRename,
5537
5569
  onSelect,
@@ -5549,6 +5581,7 @@ function TableItem(props) {
5549
5581
  }),
5550
5582
  "data-id": !disable ? id : null,
5551
5583
  "data-type": !disable ? props.type : null,
5584
+ "data-isdrag": isdrag === false ? false : true,
5552
5585
  onContextMenu: e => {
5553
5586
  e.stopPropagation();
5554
5587
  e.preventDefault();
@@ -5951,7 +5984,7 @@ var Tree = /*#__PURE__*/forwardRef((props, _ref) => {
5951
5984
  return size > w ? size : Math.ceil(w);
5952
5985
  }, [width, _widht]);
5953
5986
  useEffect(() => {
5954
- let arr = cloneDeep(treeData);
5987
+ let arr = cloneDeep(treeData) || [];
5955
5988
  arr = addLevel(arr, 0, type, filterData);
5956
5989
  setData(arr);
5957
5990
  }, [treeData, type, filterData]);
@@ -6843,7 +6876,7 @@ const SelectBox = props => {
6843
6876
  * @param isregion//是否过滤区域
6844
6877
  * @returns
6845
6878
  */
6846
- function isSelectTarget(e, checkType, status, isregion) {
6879
+ function isSelectTarget(e, checkType, status, isregion, drag = true) {
6847
6880
  let idx = [];
6848
6881
  Array.from(document.querySelectorAll(selectClass)).filter(v => {
6849
6882
  if (v.contains(e.target)) {
@@ -6852,6 +6885,10 @@ const SelectBox = props => {
6852
6885
  dataDom = v.querySelector(dataClass);
6853
6886
  }
6854
6887
  let id = dataDom?.getAttribute('data-id');
6888
+ if (drag) {
6889
+ let isdrag = dataDom?.getAttribute('data-isdrag');
6890
+ if (isdrag == 'false') return;
6891
+ }
6855
6892
  if (checkType) {
6856
6893
  let type = dataDom?.getAttribute('data-type');
6857
6894
  if (type !== checkType) return;
@@ -6943,7 +6980,7 @@ const SelectBox = props => {
6943
6980
  });
6944
6981
  onMouseup?.(e);
6945
6982
  if (cur.current?.length) {
6946
- let target = isSelectTarget(e, 'folder', '', true);
6983
+ let target = isSelectTarget(e, 'folder', '', true, false);
6947
6984
  if (target?.[0] && !checks?.includes(target?.[0])) {
6948
6985
  if (target?.[0] !== stageClickInfo.startkey) {
6949
6986
  props.onMoveFile(checks, target?.[0]);
@@ -6971,7 +7008,7 @@ const SelectBox = props => {
6971
7008
  }
6972
7009
  }
6973
7010
  /***************** 拖动 *****************/
6974
- //拖动文件
7011
+ //拖动文件 (外部文件上传)
6975
7012
  const handleDragOver = e => {
6976
7013
  e?.preventDefault();
6977
7014
  const {
@@ -7092,7 +7129,7 @@ const SelectBox = props => {
7092
7129
  }
7093
7130
  });
7094
7131
  await Promise.all(promises);
7095
- let data = isSelectTarget(e, 'folder', '', true);
7132
+ let data = isSelectTarget(e, 'folder', '', true, false);
7096
7133
  handleDragLeave();
7097
7134
  let key = null;
7098
7135
  if (typeof data?.[0] == 'string' && store?.dataMap?.[data?.[0]]) {
@@ -7142,7 +7179,7 @@ const SelectBox = props => {
7142
7179
  }
7143
7180
  setIsDragUpload(true);
7144
7181
  }
7145
- /*********** 创建绘制页面 *************/
7182
+ /*********** 创建绘制页面 (拖动是执行样式) *************/
7146
7183
  //创建文案
7147
7184
  function createText() {
7148
7185
  let _box = null;
@@ -7319,6 +7356,8 @@ const SelectBox = props => {
7319
7356
  let type = dataDom?.getAttribute('data-type');
7320
7357
  if (type !== checkType) return;
7321
7358
  }
7359
+ let isdrag = dataDom?.getAttribute('data-isdrag');
7360
+ if (isdrag == 'false') return;
7322
7361
  let id = dataDom?.getAttribute('data-id');
7323
7362
  if (id && !idx.includes(id)) {
7324
7363
  idx.push(id);
@@ -7910,7 +7949,7 @@ const SelectBox = props => {
7910
7949
  store: store,
7911
7950
  menu: menudata,
7912
7951
  loadMenu: v => {
7913
- let menu = loadMenu(v);
7952
+ let menu = loadMenu?.(v);
7914
7953
  if (menu?.key == 'rename') return undefined;
7915
7954
  if (menu?.key == 'copy') return undefined;
7916
7955
  return menu;
@@ -9071,9 +9110,9 @@ const Layout = props => {
9071
9110
  poi: isNavtab ? [200] : [0, 'max'],
9072
9111
  fix: [true, false],
9073
9112
  rang: [10, 350],
9074
- children: [jsx(ExplorerMenu, {
9113
+ children: [isNavtab ? jsx(ExplorerMenu, {
9075
9114
  ...props
9076
- }), jsxs("div", {
9115
+ }) : jsx(Fragment, {}), jsxs("div", {
9077
9116
  className: 'frame-right',
9078
9117
  children: [isHeader && jsx("div", {
9079
9118
  className: 'frame-header',
@@ -9257,6 +9296,7 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9257
9296
  accept,
9258
9297
  selectedSuffix,
9259
9298
  multiple = true,
9299
+ filelist,
9260
9300
  expandkey: _expandkey,
9261
9301
  createFile,
9262
9302
  onCopy,
@@ -9268,6 +9308,7 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9268
9308
  onExpand,
9269
9309
  loadData: _loadData,
9270
9310
  onRename: _onRename,
9311
+ onSelectFile,
9271
9312
  onMenuClick: _onMenuClick,
9272
9313
  onMoveFile: _onMoveFile
9273
9314
  } = props;
@@ -9322,6 +9363,11 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9322
9363
  },
9323
9364
  createFolder: createFolder
9324
9365
  }));
9366
+ useEffect(() => {
9367
+ if (Array.isArray(filelist)) {
9368
+ setCurList(filelist);
9369
+ }
9370
+ }, [filelist]);
9325
9371
  /* ************ 挂载监听 **************** */
9326
9372
  useEffect(() => {
9327
9373
  window.addEventListener('click', closeMenu);
@@ -9424,7 +9470,9 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9424
9470
  }, [curlist, curSelectFile, curInfo]);
9425
9471
  //切换当前 文件目录时 需要清空的内容
9426
9472
  useEffect(() => {
9473
+ if (!curInfo?.key) return;
9427
9474
  setExpandkey([]);
9475
+ onExpand?.([]);
9428
9476
  setCurSelect(null);
9429
9477
  props?.onCheck?.([]);
9430
9478
  }, [curInfo?.key]);
@@ -9446,6 +9494,7 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9446
9494
  }, [dataMap]);
9447
9495
  /* ************ 加载更新数据 **************** */
9448
9496
  async function loadData(key, param, closeload = true) {
9497
+ if (!props?.loadData) return;
9449
9498
  closeload && setLoading(ApiStatusEnum.LOADING);
9450
9499
  let data = (await props.loadData?.(key, param)) || {};
9451
9500
  if (data.status == 'Err') {
@@ -9657,7 +9706,8 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9657
9706
  type: _type,
9658
9707
  title: _type == 'folder' ? '新建文件夹' : `新建文件.${suffix}`,
9659
9708
  create_file: true,
9660
- suffix: suffix
9709
+ suffix: suffix,
9710
+ parent: params
9661
9711
  });
9662
9712
  setCurList(list);
9663
9713
  }
@@ -9824,8 +9874,8 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9824
9874
  if (curInfo || !isNavtab) {
9825
9875
  setLoading(ApiStatusEnum.LOADING);
9826
9876
  await createFile?.(value, param, info);
9827
- await loadData(curInfo?.key || '', null, false);
9828
- reloadNode(curInfo?.key || '', param);
9877
+ await loadData?.(curInfo?.key || '', null, false);
9878
+ // data && reloadNode(curInfo?.key || '', param);
9829
9879
  setLoading(ApiStatusEnum.READY);
9830
9880
  }
9831
9881
  } else {
@@ -9843,7 +9893,7 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9843
9893
  });
9844
9894
  }
9845
9895
  } else {
9846
- curInfo?.key && loadData(curInfo?.key || '');
9896
+ loadData(curInfo?.key || '');
9847
9897
  updata(key, {
9848
9898
  title: value
9849
9899
  });
@@ -9911,7 +9961,7 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9911
9961
  totalNum,
9912
9962
  //icon
9913
9963
  getIcons: Icons,
9914
- loadMenu: props.loadMenu,
9964
+ loadMenu: props?.loadMenu,
9915
9965
  uploadFile,
9916
9966
  createFolder,
9917
9967
  reloadNode,
@@ -9930,7 +9980,13 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9930
9980
  setLoading,
9931
9981
  setReName: setRename,
9932
9982
  setMenuRename,
9933
- setCurSelect,
9983
+ setCurSelect: v => {
9984
+ if (v == '_ending') {
9985
+ v = null;
9986
+ }
9987
+ setCurSelect(v);
9988
+ onSelectFile?.(v, dataMap?.[v || '']);
9989
+ },
9934
9990
  setCurSelectFile,
9935
9991
  setLoadKey,
9936
9992
  setNavLoadKey,
@@ -9955,5 +10011,5 @@ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
9955
10011
  });
9956
10012
  });
9957
10013
 
9958
- export { ApiStatusEnum, Explorer, Menu as ExplorerMenu, Icons, ImgSuffix, Explorer as default, registerMenu };
10014
+ export { ApiStatusEnum, Explorer, Menu as ExplorerMenu, Icons, ImgSuffix, addMenuItem, Explorer as default, registerMenu, removeMenuItem };
9959
10015
  //# sourceMappingURL=index.js.map