Showing preview only (2,631K chars total). Download the full file or copy to clipboard to get everything.
Repository: alibaba/lowcode-materials
Branch: main
Commit: 8d0d912e5872
Files: 879
Total size: 2.2 MB
Directory structure:
gitextract_p86v3tr9/
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .markdownlint.json
├── .markdownlintignore
├── .prettierrc.js
├── .stylelintignore
├── .stylelintrc.js
├── LICENSE
├── README.md
├── commitlint.config.js
├── f2elint.config.js
├── package.json
├── packages/
│ ├── antd-lowcode-materials/
│ │ ├── README.md
│ │ ├── build.json
│ │ ├── build.lowcode.js
│ │ ├── lowcode/
│ │ │ ├── _setters/
│ │ │ │ ├── antd-icon-setter/
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── style.less
│ │ │ │ └── index.tsx
│ │ │ ├── _utils/
│ │ │ │ ├── hoc.tsx
│ │ │ │ ├── transform-meta.ts
│ │ │ │ └── utils.ts
│ │ │ ├── affix/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── alert/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── anchor/
│ │ │ │ └── snippets.ts
│ │ │ ├── anchor.link/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── auto-complete/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── avatar/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── back-top/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── badge/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── breadcrumb/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── button/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── calendar/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── card/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── carousel/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── cascader/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── checkbox/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── checkbox.group/
│ │ │ │ └── meta.ts
│ │ │ ├── collapse/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── collapse.pane/
│ │ │ │ └── meta.ts
│ │ │ ├── comment/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── config-provider/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── date-picker/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── date-picker.range-picker/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── descriptions/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── descriptions.item/
│ │ │ │ └── meta.ts
│ │ │ ├── divider/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── drawer/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── dropdown/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── empty/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── form/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── form.item/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── form.list/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── grid.col/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── grid.row/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── icon/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── image/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── input/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── input-number/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── input.group/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── input.password/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── input.search/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── input.text-area/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── list/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── list.item/
│ │ │ │ └── meta.ts
│ │ │ ├── list.item.meta/
│ │ │ │ └── meta.ts
│ │ │ ├── mentions/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── menu/
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.ts
│ │ │ │ └── utils.ts
│ │ │ ├── menu.item/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── menu.item-group/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── menu.sub-menu/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── modal/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── page-header/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── pagination/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── popconfirm/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── popover/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── progress/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── radio/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── radio.group/
│ │ │ │ └── meta.ts
│ │ │ ├── rate/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── result/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── segmented/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── select/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── skeleton/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── slider/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── slot/
│ │ │ │ ├── meta.ts
│ │ │ │ └── view.tsx
│ │ │ ├── space/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── spin/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── statistic/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── steps/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── steps.step/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── switch/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── table/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tabs/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tabs.tab-pane/
│ │ │ │ └── meta.ts
│ │ │ ├── tag/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── time-picker/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── timeline/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── timeline.item/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tooltip/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── transfer/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tree/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tree-select/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── typography.link/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── typography.paragraph/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── typography.text/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── typography.title/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ └── upload/
│ │ │ ├── meta.ts
│ │ │ └── snippets.ts
│ │ ├── package.json
│ │ └── src/
│ │ ├── components/
│ │ │ ├── auto-complete/
│ │ │ │ └── index.tsx
│ │ │ ├── button/
│ │ │ │ └── index.tsx
│ │ │ ├── calendar/
│ │ │ │ └── index.tsx
│ │ │ ├── cascader/
│ │ │ │ └── index.tsx
│ │ │ ├── checkbox/
│ │ │ │ └── index.tsx
│ │ │ ├── config-provider/
│ │ │ │ └── index.tsx
│ │ │ ├── date-picker/
│ │ │ │ └── index.tsx
│ │ │ ├── drawer/
│ │ │ │ └── index.tsx
│ │ │ ├── dropdown/
│ │ │ │ └── index.tsx
│ │ │ ├── form/
│ │ │ │ └── index.tsx
│ │ │ ├── icon/
│ │ │ │ └── index.tsx
│ │ │ ├── input/
│ │ │ │ └── index.tsx
│ │ │ ├── modal/
│ │ │ │ └── index.tsx
│ │ │ ├── popover/
│ │ │ │ └── index.tsx
│ │ │ ├── radio/
│ │ │ │ └── index.tsx
│ │ │ ├── select/
│ │ │ │ └── index.tsx
│ │ │ ├── skeleton/
│ │ │ │ └── index.tsx
│ │ │ ├── slider/
│ │ │ │ └── index.tsx
│ │ │ ├── table/
│ │ │ │ └── index.tsx
│ │ │ ├── tabs/
│ │ │ │ └── index.tsx
│ │ │ ├── time-picker/
│ │ │ │ └── index.tsx
│ │ │ ├── tree-select/
│ │ │ │ └── index.tsx
│ │ │ └── upload/
│ │ │ └── index.tsx
│ │ ├── index.scss
│ │ ├── index.tsx
│ │ └── utils/
│ │ ├── hoc.tsx
│ │ └── warning.ts
│ ├── fusion-lowcode-materials/
│ │ ├── HISTORY.md
│ │ ├── README.md
│ │ ├── build.json
│ │ ├── build.lowcode.js
│ │ ├── demo/
│ │ │ ├── Image.md
│ │ │ ├── Link.md
│ │ │ ├── NoteWrapper.md
│ │ │ ├── RichText.md
│ │ │ └── Video.md
│ │ ├── lowcode/
│ │ │ ├── alert/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── avatar/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── badge/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── balloon/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── balloon-inner/
│ │ │ │ └── meta.ts
│ │ │ ├── box/
│ │ │ │ ├── meta.design.tsx
│ │ │ │ └── meta.tsx
│ │ │ ├── breadcrumb/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── breadcrumb-item/
│ │ │ │ └── meta.ts
│ │ │ ├── button/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── button-group/
│ │ │ │ └── meta.ts
│ │ │ ├── calendar/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── card/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── card-actions/
│ │ │ │ └── meta.ts
│ │ │ ├── card-bullet-header/
│ │ │ │ └── meta.ts
│ │ │ ├── card-collaspe-content/
│ │ │ │ └── meta.ts
│ │ │ ├── card-content/
│ │ │ │ └── meta.ts
│ │ │ ├── card-divider/
│ │ │ │ └── meta.ts
│ │ │ ├── card-header/
│ │ │ │ └── meta.ts
│ │ │ ├── card-media/
│ │ │ │ └── meta.ts
│ │ │ ├── cascader/
│ │ │ │ ├── meta.design.ts
│ │ │ │ └── meta.ts
│ │ │ ├── cascader-select/
│ │ │ │ ├── adaptor.ts
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── checkbox/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── checkbox-group/
│ │ │ │ ├── meta.design.ts
│ │ │ │ └── meta.ts
│ │ │ ├── checkbox-item/
│ │ │ │ └── meta.ts
│ │ │ ├── collapse/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── view.tsx
│ │ │ ├── collapse-panel/
│ │ │ │ └── meta.ts
│ │ │ ├── date-picker/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── dialog/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── div/
│ │ │ │ └── meta.ts
│ │ │ ├── divider/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── drawer/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── drawer-inner/
│ │ │ │ └── meta.ts
│ │ │ ├── dropdown/
│ │ │ │ └── meta.ts
│ │ │ ├── error-boundary/
│ │ │ │ └── meta.ts
│ │ │ ├── field/
│ │ │ │ └── meta.ts
│ │ │ ├── form/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── form-error/
│ │ │ │ └── meta.ts
│ │ │ ├── form-item/
│ │ │ │ └── meta.ts
│ │ │ ├── form-reset/
│ │ │ │ └── meta.ts
│ │ │ ├── form-submit/
│ │ │ │ └── meta.ts
│ │ │ ├── group/
│ │ │ │ └── meta.ts
│ │ │ ├── icon/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── img/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── inner/
│ │ │ │ └── meta.ts
│ │ │ ├── input/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ ├── snippets.ts
│ │ │ │ └── view.tsx
│ │ │ ├── input-group/
│ │ │ │ └── meta.ts
│ │ │ ├── input-password/
│ │ │ │ └── meta.ts
│ │ │ ├── input-text-area/
│ │ │ │ └── meta.ts
│ │ │ ├── link/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── list/
│ │ │ │ └── meta.ts
│ │ │ ├── list-item/
│ │ │ │ └── meta.ts
│ │ │ ├── loading/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── menu/
│ │ │ │ ├── adaptor.ts
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.design.ts
│ │ │ ├── menu-button/
│ │ │ │ ├── adaptor.ts
│ │ │ │ ├── meta.design.ts
│ │ │ │ └── meta.ts
│ │ │ ├── menu-divider/
│ │ │ │ └── meta.ts
│ │ │ ├── menu-group/
│ │ │ │ └── meta.ts
│ │ │ ├── menu-item/
│ │ │ │ └── meta.ts
│ │ │ ├── menu-popup-item/
│ │ │ │ └── meta.ts
│ │ │ ├── month-picker/
│ │ │ │ └── meta.ts
│ │ │ ├── nav/
│ │ │ │ └── meta.ts
│ │ │ ├── nav-item/
│ │ │ │ └── meta.ts
│ │ │ ├── next-table/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── next-text/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── note-wrapper/
│ │ │ │ └── meta.ts
│ │ │ ├── number-picker/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.ts
│ │ │ │ └── view.tsx
│ │ │ ├── page/
│ │ │ │ └── meta.ts
│ │ │ ├── pagination/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── paragraph/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── popup-item/
│ │ │ │ └── meta.ts
│ │ │ ├── progress/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── radio/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── radio-group/
│ │ │ │ ├── meta.design.ts
│ │ │ │ └── meta.ts
│ │ │ ├── radio-item/
│ │ │ │ └── meta.ts
│ │ │ ├── range/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── range-calendar/
│ │ │ │ └── meta.ts
│ │ │ ├── range-picker/
│ │ │ │ └── meta.ts
│ │ │ ├── rating/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── responsive-grid/
│ │ │ │ └── meta.ts
│ │ │ ├── responsive-grid-cell/
│ │ │ │ └── meta.ts
│ │ │ ├── rich-text/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── search/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── select/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── select-option/
│ │ │ │ └── meta.ts
│ │ │ ├── slider/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── slot/
│ │ │ │ ├── meta.ts
│ │ │ │ └── view.tsx
│ │ │ ├── split-button/
│ │ │ │ ├── adaptor.ts
│ │ │ │ ├── meta.design.ts
│ │ │ │ └── meta.ts
│ │ │ ├── step/
│ │ │ │ ├── adaptor.ts
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── step-item/
│ │ │ │ └── meta.ts
│ │ │ ├── sub-menu/
│ │ │ │ └── meta.ts
│ │ │ ├── sub-nav/
│ │ │ │ └── meta.ts
│ │ │ ├── switch/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tab/
│ │ │ │ ├── adaptor.ts
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tab-item/
│ │ │ │ ├── meta.design.ts
│ │ │ │ └── meta.ts
│ │ │ ├── tab-tab-pane/
│ │ │ │ └── meta.ts
│ │ │ ├── table/
│ │ │ │ └── meta.ts
│ │ │ ├── table-column/
│ │ │ │ └── meta.ts
│ │ │ ├── tag/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tag-closeable/
│ │ │ │ └── meta.ts
│ │ │ ├── tag-selectable/
│ │ │ │ └── meta.ts
│ │ │ ├── time-picker/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── timeline/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── timeline-item/
│ │ │ │ ├── meta.design.ts
│ │ │ │ └── meta.ts
│ │ │ ├── toast/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tooltip/
│ │ │ │ └── meta.ts
│ │ │ ├── transfer/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tree/
│ │ │ │ ├── adaptor.ts
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── tree-node/
│ │ │ │ └── meta.ts
│ │ │ ├── tree-select/
│ │ │ │ ├── adaptor.ts
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── snippets.design.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── typography/
│ │ │ │ └── meta.ts
│ │ │ ├── typography-text/
│ │ │ │ └── meta.ts
│ │ │ ├── upload/
│ │ │ │ ├── meta.design.ts
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── upload-dragger/
│ │ │ │ └── meta.ts
│ │ │ ├── upload-list/
│ │ │ │ └── meta.ts
│ │ │ ├── upload-selecter/
│ │ │ │ └── meta.ts
│ │ │ ├── utils/
│ │ │ │ ├── component-wrapper.ts
│ │ │ │ ├── icons.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── parse-data.ts
│ │ │ ├── video/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.ts
│ │ │ ├── week-picker/
│ │ │ │ └── meta.ts
│ │ │ └── year-picker/
│ │ │ └── meta.ts
│ │ ├── package.json
│ │ ├── plugins/
│ │ │ └── compatible.build.js
│ │ ├── scripts/
│ │ │ └── utils.js
│ │ └── src/
│ │ ├── components/
│ │ │ ├── balloon/
│ │ │ │ └── index.tsx
│ │ │ ├── calendar/
│ │ │ │ └── index.tsx
│ │ │ ├── div/
│ │ │ │ └── index.tsx
│ │ │ ├── image/
│ │ │ │ └── index.tsx
│ │ │ ├── link/
│ │ │ │ └── index.tsx
│ │ │ ├── next-table/
│ │ │ │ ├── component/
│ │ │ │ │ ├── field/
│ │ │ │ │ │ ├── baseTableField.tsx
│ │ │ │ │ │ ├── customField.tsx
│ │ │ │ │ │ ├── dateField.tsx
│ │ │ │ │ │ ├── dateRangeField.tsx
│ │ │ │ │ │ ├── inputField.tsx
│ │ │ │ │ │ ├── radioField.tsx
│ │ │ │ │ │ └── selectField.tsx
│ │ │ │ │ ├── webCustomColumnDrawer.tsx
│ │ │ │ │ ├── webLinkBar.tsx
│ │ │ │ │ ├── webNextTableActionCell.tsx
│ │ │ │ │ ├── webNextTableCell.tsx
│ │ │ │ │ ├── webPagination.tsx
│ │ │ │ │ ├── webRowOrder.tsx
│ │ │ │ │ └── webToolbar.tsx
│ │ │ │ ├── index.scss
│ │ │ │ ├── index.tsx
│ │ │ │ ├── interface/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── locale/
│ │ │ │ │ ├── en-us.ts
│ │ │ │ │ └── zh-cn.ts
│ │ │ │ ├── mixin/
│ │ │ │ │ ├── columnMethods.tsx
│ │ │ │ │ ├── commonMethods.ts
│ │ │ │ │ ├── editableMethods.ts
│ │ │ │ │ └── loadMethods.ts
│ │ │ │ ├── scss/
│ │ │ │ │ └── variables.scss
│ │ │ │ ├── table/
│ │ │ │ │ └── webTable.tsx
│ │ │ │ └── utils/
│ │ │ │ ├── buildNextTableMethod.ts
│ │ │ │ ├── buildTableProps.ts
│ │ │ │ ├── chainAccess.ts
│ │ │ │ ├── convertData.ts
│ │ │ │ ├── delegateFunctions.ts
│ │ │ │ ├── dispatchResizeEvent.ts
│ │ │ │ ├── filterActionColumn.ts
│ │ │ │ ├── filterActionColumnByDevice.ts
│ │ │ │ ├── filterColumn.ts
│ │ │ │ ├── formatter.ts
│ │ │ │ ├── getCleanRowData.ts
│ │ │ │ ├── getColumnsFromChildern.tsx
│ │ │ │ ├── getDataSource.ts
│ │ │ │ ├── hasRowAction.ts
│ │ │ │ ├── render/
│ │ │ │ │ ├── actionTitleRender.tsx
│ │ │ │ │ ├── cascadeTimestampRender.tsx
│ │ │ │ │ ├── commonTableCellRender.tsx
│ │ │ │ │ ├── defaultRender.tsx
│ │ │ │ │ ├── enumRender.tsx
│ │ │ │ │ ├── errorRender.tsx
│ │ │ │ │ ├── fileRender.tsx
│ │ │ │ │ ├── imageRender.tsx
│ │ │ │ │ ├── linkRender.tsx
│ │ │ │ │ ├── moneyRangeRender.tsx
│ │ │ │ │ ├── moneyRender.tsx
│ │ │ │ │ ├── timestampRender.tsx
│ │ │ │ │ └── titleMessageRender.tsx
│ │ │ │ ├── runColumnActionCallback.ts
│ │ │ │ ├── runToolbarActionCallback.ts
│ │ │ │ └── tableProps.ts
│ │ │ ├── next-text/
│ │ │ │ ├── index.scss
│ │ │ │ └── index.tsx
│ │ │ ├── note-wrapper/
│ │ │ │ ├── index.scss
│ │ │ │ └── index.tsx
│ │ │ ├── rich-text/
│ │ │ │ └── index.tsx
│ │ │ └── video/
│ │ │ └── index.tsx
│ │ ├── index.scss
│ │ ├── index.tsx
│ │ └── utils.js
│ ├── fusion-ui/
│ │ ├── .editorconfig
│ │ ├── .eslintignore
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .markdownlint.json
│ │ ├── .markdownlintignore
│ │ ├── .prettierrc.js
│ │ ├── .stylelintignore
│ │ ├── .stylelintrc.js
│ │ ├── README.md
│ │ ├── build.json
│ │ ├── build.lowcode.js
│ │ ├── commitlint.config.js
│ │ ├── docs/
│ │ │ ├── .dumi/
│ │ │ │ └── theme/
│ │ │ │ ├── builtins/
│ │ │ │ │ ├── API.tsx
│ │ │ │ │ └── index.scss
│ │ │ │ └── layout.tsx
│ │ │ ├── .fatherrc.ts
│ │ │ ├── .umirc.ts
│ │ │ └── src/
│ │ │ ├── BarChart/
│ │ │ │ └── index.md
│ │ │ ├── ColumnChart/
│ │ │ │ └── index.md
│ │ │ ├── DonutChart/
│ │ │ │ └── index.md
│ │ │ ├── EditTable/
│ │ │ │ ├── index.md
│ │ │ │ └── index.tsx
│ │ │ ├── ExpandTable/
│ │ │ │ ├── index.md
│ │ │ │ └── index.tsx
│ │ │ ├── Filter/
│ │ │ │ ├── index.md
│ │ │ │ └── index.tsx
│ │ │ ├── GroupTable/
│ │ │ │ ├── index.md
│ │ │ │ └── index.tsx
│ │ │ ├── LineChart/
│ │ │ │ ├── basic.tsx
│ │ │ │ ├── index.md
│ │ │ │ └── slider.tsx
│ │ │ ├── PageHeader/
│ │ │ │ ├── basic.tsx
│ │ │ │ ├── breadcrumb.tsx
│ │ │ │ └── index.md
│ │ │ ├── PieChart/
│ │ │ │ ├── basic.tsx
│ │ │ │ ├── index.md
│ │ │ │ └── percent.tsx
│ │ │ ├── ProDialog/
│ │ │ │ ├── basic.tsx
│ │ │ │ ├── index.md
│ │ │ │ └── large-content.tsx
│ │ │ ├── ProDrawer/
│ │ │ │ ├── basic.tsx
│ │ │ │ └── index.md
│ │ │ ├── ProForm/
│ │ │ │ ├── basic.tsx
│ │ │ │ ├── index.md
│ │ │ │ └── operations.tsx
│ │ │ ├── ProTable/
│ │ │ │ ├── basic.tsx
│ │ │ │ ├── index.md
│ │ │ │ └── service.ts
│ │ │ ├── StepForm/
│ │ │ │ ├── basic.tsx
│ │ │ │ └── index.md
│ │ │ ├── TabContainer/
│ │ │ │ ├── basic.tsx
│ │ │ │ └── index.md
│ │ │ ├── anchorForm/
│ │ │ │ └── index.md
│ │ │ ├── areaChart/
│ │ │ │ └── index.md
│ │ │ └── childForm/
│ │ │ └── index.md
│ │ ├── f2elint.config.js
│ │ ├── jest.config.js
│ │ ├── lowcode/
│ │ │ ├── anchor/
│ │ │ │ └── meta.ts
│ │ │ ├── anchor-form/
│ │ │ │ └── meta.ts
│ │ │ ├── area-chart/
│ │ │ │ └── meta.ts
│ │ │ ├── bar-chart/
│ │ │ │ └── meta.ts
│ │ │ ├── cascader-select/
│ │ │ │ ├── meta.js
│ │ │ │ └── snippets.js
│ │ │ ├── checkbox-group/
│ │ │ │ └── meta.js
│ │ │ ├── child-form/
│ │ │ │ └── meta.ts
│ │ │ ├── column-chart/
│ │ │ │ └── meta.ts
│ │ │ ├── common/
│ │ │ │ ├── actions.ts
│ │ │ │ ├── button-groups.ts
│ │ │ │ ├── chart-action.ts
│ │ │ │ ├── chart-plot.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── operations.ts
│ │ │ ├── date-picker/
│ │ │ │ ├── meta.ts
│ │ │ │ └── snippets.js
│ │ │ ├── donut-chart/
│ │ │ │ └── meta.ts
│ │ │ ├── edit-table/
│ │ │ │ └── meta.ts
│ │ │ ├── expand-table/
│ │ │ │ └── meta.ts
│ │ │ ├── filter/
│ │ │ │ └── meta.ts
│ │ │ ├── filter-item/
│ │ │ │ └── meta.ts
│ │ │ ├── group-table/
│ │ │ │ └── meta.ts
│ │ │ ├── input/
│ │ │ │ └── meta.ts
│ │ │ ├── line-chart/
│ │ │ │ └── meta.ts
│ │ │ ├── month-picker/
│ │ │ │ └── meta.js
│ │ │ ├── number-picker/
│ │ │ │ └── meta.ts
│ │ │ ├── page-header/
│ │ │ │ ├── common/
│ │ │ │ │ └── props.ts
│ │ │ │ ├── meta.design.js
│ │ │ │ └── meta.ts
│ │ │ ├── pie-chart/
│ │ │ │ └── meta.ts
│ │ │ ├── pro-dialog/
│ │ │ │ └── meta.ts
│ │ │ ├── pro-drawer/
│ │ │ │ └── meta.ts
│ │ │ ├── pro-form/
│ │ │ │ ├── common/
│ │ │ │ │ ├── form-base-props.ts
│ │ │ │ │ ├── form-item-props.ts
│ │ │ │ │ └── props.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── password.ts
│ │ │ │ │ └── text-area.ts
│ │ │ │ └── meta.ts
│ │ │ ├── pro-table/
│ │ │ │ ├── actionColumnFields.ts
│ │ │ │ ├── columns-field.ts
│ │ │ │ ├── global-style.ts
│ │ │ │ ├── meta.ts
│ │ │ │ ├── pro-table-meta.ts
│ │ │ │ └── utils.ts
│ │ │ ├── pro-table-slot/
│ │ │ │ └── meta.ts
│ │ │ ├── radio-group/
│ │ │ │ └── meta.js
│ │ │ ├── range-picker/
│ │ │ │ └── meta.js
│ │ │ ├── rating/
│ │ │ │ ├── meta.js
│ │ │ │ └── snippets.js
│ │ │ ├── select/
│ │ │ │ ├── meta.js
│ │ │ │ └── snippets.js
│ │ │ ├── step-form/
│ │ │ │ ├── meta.ts
│ │ │ │ └── step-props.ts
│ │ │ ├── story-placeholder/
│ │ │ │ └── meta.ts
│ │ │ ├── tab-container/
│ │ │ │ ├── meta.ts
│ │ │ │ └── props.ts
│ │ │ ├── tree-select/
│ │ │ │ ├── meta.js
│ │ │ │ └── snippets.js
│ │ │ ├── types/
│ │ │ │ └── index.ts
│ │ │ ├── upload/
│ │ │ │ └── meta.js
│ │ │ ├── utils/
│ │ │ │ ├── form-utils.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── keybindingService.ts
│ │ │ ├── week-picker/
│ │ │ │ └── meta.js
│ │ │ └── year-picker/
│ │ │ └── meta.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── common/
│ │ │ │ └── operations/
│ │ │ │ ├── index.scss
│ │ │ │ └── index.tsx
│ │ │ ├── components/
│ │ │ │ ├── anchor/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── HozAnchor/
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ └── VerAnchor/
│ │ │ │ │ │ ├── AnchorList/
│ │ │ │ │ │ │ ├── AnchorLink.tsx
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── index.tsx
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ ├── theme-dark.scss
│ │ │ │ │ └── util.ts
│ │ │ │ ├── area-chart/
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── bar-chart/
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── button/
│ │ │ │ │ ├── Button.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── button-group/
│ │ │ │ │ ├── ButtonGroup.tsx
│ │ │ │ │ ├── i18n.ts
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── column-chart/
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── container/
│ │ │ │ │ ├── Grid.tsx
│ │ │ │ │ ├── Space.tsx
│ │ │ │ │ ├── i18n.ts
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── donut-chart/
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── ellipsis/
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── theme-dark.scss
│ │ │ │ ├── expand-table/
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── filter/
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── theme-dark.scss
│ │ │ │ ├── line-chart/
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── menu/
│ │ │ │ │ ├── Menu.tsx
│ │ │ │ │ ├── MenuItem.tsx
│ │ │ │ │ ├── MenuItemText.tsx
│ │ │ │ │ ├── i18n.ts
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── theme-dark.scss
│ │ │ │ ├── menu-button/
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── scss/
│ │ │ │ │ └── variable.scss
│ │ │ │ ├── page-header/
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── pie-chart/
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── pro-card/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── button-group/
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ ├── card/
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ ├── card-collapse/
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ ├── card-header/
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ └── card-section/
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── index.tsx
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── theme-dark.scss
│ │ │ │ ├── pro-dialog/
│ │ │ │ │ ├── dialog.tsx
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── pro-drawer/
│ │ │ │ │ ├── drawer.tsx
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── pro-form/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── Input.tsx
│ │ │ │ │ │ ├── form-item/
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ └── next-wrapper.tsx
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── layouts/
│ │ │ │ │ ├── anchor-form/
│ │ │ │ │ │ ├── container.tsx
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── index.tsx
│ │ │ │ │ ├── child-form/
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── index.tsx
│ │ │ │ │ ├── pro-form/
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── index.tsx
│ │ │ │ │ └── step-form/
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── pro-table/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── edit-table/
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ ├── group-table/
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ ├── pro-table/
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ ├── pro-table-action-bar-buttons.tsx
│ │ │ │ │ │ ├── pro-table-base/
│ │ │ │ │ │ │ ├── columns/
│ │ │ │ │ │ │ │ ├── useActionColumn.tsx
│ │ │ │ │ │ │ │ ├── useIndexColumn.tsx
│ │ │ │ │ │ │ │ └── useRowSelection.tsx
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ ├── index.tsx
│ │ │ │ │ │ │ └── utils.tsx
│ │ │ │ │ │ ├── pro-table-button-group/
│ │ │ │ │ │ │ ├── index.tsx
│ │ │ │ │ │ │ └── payload-button.ts
│ │ │ │ │ │ ├── pro-table-cell/
│ │ │ │ │ │ │ ├── cell-label.tsx
│ │ │ │ │ │ │ ├── pro-table-cell.tsx
│ │ │ │ │ │ │ └── pro-table-tree-cell.tsx
│ │ │ │ │ │ ├── pro-table-cells/
│ │ │ │ │ │ │ └── utils.ts
│ │ │ │ │ │ ├── pro-table-column/
│ │ │ │ │ │ │ ├── defaultColumnFormatters.tsx
│ │ │ │ │ │ │ ├── index.tsx
│ │ │ │ │ │ │ └── pro-table-column-formatter.tsx
│ │ │ │ │ │ ├── pro-table-column-title/
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ ├── index.tsx
│ │ │ │ │ │ │ ├── pro-table-column-title-filter-panel.tsx
│ │ │ │ │ │ │ ├── pro-table-column-title-filter.tsx
│ │ │ │ │ │ │ ├── pro-table-column-title-sortter.tsx
│ │ │ │ │ │ │ └── utils.ts
│ │ │ │ │ │ ├── pro-table-compact-button.tsx
│ │ │ │ │ │ ├── pro-table-fullscreen-button.tsx
│ │ │ │ │ │ ├── pro-table-setting-button/
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ ├── index.tsx
│ │ │ │ │ │ │ ├── pro-table-setting-overlay.tsx
│ │ │ │ │ │ │ ├── pro-table-setting-sortable-list.tsx
│ │ │ │ │ │ │ └── types.ts
│ │ │ │ │ │ ├── pro-table-slot.tsx
│ │ │ │ │ │ └── pro-table-zebra-button.tsx
│ │ │ │ │ ├── contexts/
│ │ │ │ │ │ ├── pro-table-columns-context.tsx
│ │ │ │ │ │ ├── pro-table-columns-filters-context.tsx
│ │ │ │ │ │ ├── pro-table-columns-setting-context.tsx
│ │ │ │ │ │ ├── pro-table-context.tsx
│ │ │ │ │ │ ├── pro-table-pagination-context.tsx
│ │ │ │ │ │ ├── pro-table-row-selection-context.tsx
│ │ │ │ │ │ └── pro-table-setting-context.tsx
│ │ │ │ │ ├── hooks.ts
│ │ │ │ │ ├── i18n.ts
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ ├── theme-dark.scss
│ │ │ │ │ └── types/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── instance.ts
│ │ │ │ ├── segment/
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ └── theme-dark.scss
│ │ │ │ ├── story-placeholder/
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── tab-container/
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── index.tsx
│ │ │ │ └── toggle-icon/
│ │ │ │ ├── index.scss
│ │ │ │ ├── index.tsx
│ │ │ │ └── theme-dark.scss
│ │ │ ├── index.scss
│ │ │ ├── index.tsx
│ │ │ ├── provider/
│ │ │ │ ├── contexts/
│ │ │ │ │ ├── locale-context/
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── util.ts
│ │ │ │ │ └── theme-context/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── index.tsx
│ │ │ │ └── provider.tsx
│ │ │ ├── types/
│ │ │ │ ├── dataSource.ts
│ │ │ │ ├── enum.ts
│ │ │ │ └── index.ts
│ │ │ ├── utils/
│ │ │ │ ├── checkComName.ts
│ │ │ │ ├── constants.ts
│ │ │ │ ├── currency.ts
│ │ │ │ ├── dataSource/
│ │ │ │ │ ├── data-source-label.tsx
│ │ │ │ │ ├── hooks.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── formatters.ts
│ │ │ │ ├── hooks/
│ │ │ │ │ └── useFiledState.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── locales/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── object.ts
│ │ │ │ ├── util/
│ │ │ │ │ ├── date.js
│ │ │ │ │ ├── dom.js
│ │ │ │ │ ├── env.js
│ │ │ │ │ ├── events.js
│ │ │ │ │ ├── focus.js
│ │ │ │ │ ├── func.js
│ │ │ │ │ ├── guid.js
│ │ │ │ │ ├── htmlId.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── keycode.js
│ │ │ │ │ ├── log.js
│ │ │ │ │ ├── mobile/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── object.js
│ │ │ │ │ ├── pick-attrs.js
│ │ │ │ │ ├── string.js
│ │ │ │ │ └── support.js
│ │ │ │ └── variables.scss
│ │ │ ├── variables.scss
│ │ │ └── variables.tsx
│ │ └── tsconfig.json
│ └── graph-x6-materials/
│ ├── .editorconfig
│ ├── .eslintignore
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .markdownlint.json
│ ├── .markdownlintignore
│ ├── .prettierrc.js
│ ├── .stylelintignore
│ ├── .stylelintrc.js
│ ├── README.md
│ ├── build.json
│ ├── build.lowcode.js
│ ├── commitlint.config.js
│ ├── f2elint.config.js
│ ├── jest.config.js
│ ├── lowcode/
│ │ ├── line/
│ │ │ └── meta.ts
│ │ ├── send-email/
│ │ │ └── meta.ts
│ │ └── start-end/
│ │ └── meta.ts
│ ├── package.json
│ ├── src/
│ │ ├── components/
│ │ │ ├── line/
│ │ │ │ └── index.tsx
│ │ │ ├── send-email/
│ │ │ │ └── index.tsx
│ │ │ └── start-end/
│ │ │ └── index.tsx
│ │ ├── index.scss
│ │ ├── index.tsx
│ │ ├── sync-oss.js
│ │ ├── variables.scss
│ │ └── variables.tsx
│ └── tsconfig.json
├── scripts/
│ └── update-readme.js
├── tsconfig.json
└── typings.d.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
quote_type = single
[*.md]
trim_trailing_whitespace = false
================================================
FILE: .eslintignore
================================================
build/
coverage/
dist/
es/
lib/
node_modules/
**/*.min.js
**/*-min.js
**/*.bundle.js
================================================
FILE: .eslintrc.js
================================================
module.exports = {
extends: [
'eslint-config-ali/typescript/react',
'prettier',
'prettier/@typescript-eslint',
'prettier/react',
],
};
================================================
FILE: .gitignore
================================================
lowcode_es/
lowcode_lib/
# project custom
build
dist
site
.tmp
es
public/resources/meta.json
packages/*/lib/
packages/*/es/
packages/*/dist/
packages/*/output/
package-lock.json
yarn.lock
deploy-space/packages
deploy-space/.env
# IDE
.vscode
.idea
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
lib
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# mac config files
.DS_Store
# codealike
codealike.json
src/assets.js
src/assets.json
src/assets.container.js
src/assets.container.json
assets.json
assets.container.json
material-meta.json
================================================
FILE: .markdownlint.json
================================================
{
"extends": "markdownlint-config-ali"
}
================================================
FILE: .markdownlintignore
================================================
node_modules/
build/
dist/
coverage/
es/
lib/
================================================
FILE: .prettierrc.js
================================================
module.exports = {
printWidth: 100,
tabWidth: 2,
semi: true,
singleQuote: true,
trailingComma: 'all',
arrowParens: 'always',
};
================================================
FILE: .stylelintignore
================================================
node_modules/
build/
dist/
coverage/
es/
lib/
**/*.min.css
**/*-min.css
**/*.bundle.css
================================================
FILE: .stylelintrc.js
================================================
module.exports = {
extends: 'stylelint-config-ali',
};
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2021 Alibaba
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<h1 align="center">Lowcode Materials</h1>
<div align="center">
基于 [Fusion Design](https://fusion.design) 和 [Ant Design](https://ant.design) 设计规范的低代码基础物料库
</div>
## 介绍 / Introduce
物料(Material)是指能够被沉淀下来的前端能力,一般表现为组件、区块和模板。而低代码物料库,则是一套专门用于低代码开发模式(Lowcode)的物料,它除了包含物料组件,还有一套描述组件信息的低代码引擎物料协议。简单来说,低代码物料库包含了两个部分:
- 组件的实现,即组件的代码和样式
- 遵循[《低代码引擎物料协议规范》](https://lowcode-engine.cn/material)的物料协议
低代码物料应该配合[低代码引擎](https://lowcode-engine.cn/)使用,如果你还不了解低代码引擎,请先阅读相关文档。
在使用中遇到的任何问题,请在[lowcode-engine](https://github.com/alibaba/lowcode-engine)项目中反馈。
<h2><img width="50" src="https://img.alicdn.com/tfs/TB1YsoiHVzqK1RjSZFCXXbbxVXa-159-99.svg"> Fusion Design For Lowcode</h2>
[![NPM version][npm-image-fusion]][npm-url-fusion]
### [在线示例 / DEMO](https://alifd.alicdn.com/npm/@alilc/lowcode-materials@1.2.1/build/lowcode/index.html)
### 使用 / Usage
#### NPM
```js
const { material } from '@alilc/lowcode-engine';
const assets = require('@alilc/lowcode-materials/dist/assets.json');
// in GeneralWorkbench init
material.setAssets(assets);
```
#### CDN
```js
// in GeneralWorkbench init
const assets = await fetch(
`https://alifd.alicdn.com/npm/@alilc/lowcode-materials@1.2.1/dist/assets.json`,
).then((res) => res.json());
material.setAssets(assets);
```
[npm-image-fusion]: https://img.shields.io/npm/v/@alilc/lowcode-materials.svg?style=flat-square
[npm-url-fusion]: http://npmjs.org/package/@alilc/lowcode-materials
<h2><img width="30" src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg"> Ant Design For Lowcode</h2>
[![NPM version][npm-image-antd]][npm-url-antd]
### [在线示例 / DEMO](https://alifd.alicdn.com/npm/@alilc/antd-lowcode-materials@1.2.2/build/lowcode/index.html)
### 使用 / Usage
#### NPM
```js
const { material } from '@alilc/lowcode-engine';
const assets = require('@alilc/antd-lowcode-materials/build/lowcode/assets-prod.json');
// in GeneralWorkbench init
material.setAssets(assets);
```
#### CDN
```js
// in GeneralWorkbench init
const assets = await fetch(
`https://alifd.alicdn.com/npm/@alilc/antd-lowcode-materials@1.2.2/build/lowcode/assets-prod.json`,
).then((res) => res.json());
material.setAssets(assets);
```
[npm-image-antd]: https://img.shields.io/npm/v/@alilc/antd-lowcode-materials.svg?style=flat-square
[npm-url-antd]: http://npmjs.org/package/@alilc/antd-lowcode-materials
## 如何贡献 / How-to-contribute
### 目录结构 / Structure
```
|-packages
|-{package-name} // fusion 或 antd 低代码组件包
|-lowcode // 组件低代码描述文件
|-{component-name}
|-meta.ts // 组件低代码描述协议
|-meta.design.ts // 【可选】面向设计者的组件低代码描述,移除面向研发的高级配置能力,可做静态搭建和简单的交互
|-src
|-index.tsx // 组件库导出文件
|-components // 组件库源码
|-{component-name}
|-index.tsx
|-index.scss
|-build.lowcode.js // 低代码调试和构建使用的配置文件
|-build.json // 源码调试和构建使用的配置文件
```
### 常用命令 / Commands
#### 低代码 / LowCode
```bash
cd packages/fusion-lowcode-materilas
# OR `cd packages/antd-lowcode-materilas`
npm run lowcode:dev
npm run lowcode:build
```
#### 源码 / ProCode
```bash
npm start
npm run build
```
#### 其他命令 / Other Commands
```bash
# 更新 README 中的版本号
npm run update-readme
```
### 贡献者 / Contributors
因无法保留开源前的提交记录,这里列出开源前的贡献者(花名):
@荣彬 @度城 @屹凡 @启剑 @春希 @梧忌 @褚天 @莫夭 @金禅 @默吉 @旅途 @斩鲌 @永元 @听鸿 @晓吉 @与白 @若泉 @独寒 @尤恩 @馨焱
================================================
FILE: commitlint.config.js
================================================
module.exports = {
extends: ['ali'],
};
================================================
FILE: f2elint.config.js
================================================
module.exports = {
enableStylelint: true,
enableMarkdownlint: true,
enablePrettier: true,
};
================================================
FILE: package.json
================================================
{
"name": "lowcode-materials",
"private": true,
"version": "0.0.0",
"description": "Materials for LowCode",
"scripts": {
"prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",
"f2elint-scan": "f2elint scan",
"f2elint-fix": "f2elint fix",
"update-readme": "node scripts/update-readme.js",
"prepublishOnly": "npm run build && npm run lowcode:build && npm run lowcode:antd:build"
},
"lint-staged": {
"*.ts?(x)": [
"prettier --parser=typescript --write"
],
"*.{js,jsx,less,md,json}": [
"prettier --write"
]
},
"devDependencies": {
"f2elint": "^2.2.0",
"glob": "^11.0.0",
"lint-staged": "^10.5.3",
"prettier": "^1.19.1",
"typescript": "^3.9.3",
"yorkie": "^2.0.0"
},
"authors": [
{
"name": "金禅"
},
{
"name": "荣彬"
},
{
"name": "屹凡"
},
{
"name": "启剑"
},
{
"name": "春希"
},
{
"name": "度城"
},
{
"name": "梧忌"
},
{
"name": "莫夭"
}
],
"license": "MIT",
"husky": {
"hooks": {
"pre-commit": "f2elint commit-file-scan",
"commit-msg": "f2elint commit-msg-scan"
}
}
}
================================================
FILE: packages/antd-lowcode-materials/README.md
================================================
<h2><img width="30" src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg"> Ant Design For Lowcode</h2>
[![NPM version][npm-image-antd]][npm-url-antd]
### [在线示例 / DEMO](https://alifd.alicdn.com/npm/@alilc/antd-lowcode-materials@1.2.2/build/lowcode/index.html)
### 使用 / Usage
#### NPM
```js
const { material } from '@alilc/lowcode-engine';
const assets = require('@alilc/antd-lowcode-materials/build/lowcode/assets-prod.json');
// in GeneralWorkbench init
material.setAssets(assets);
```
#### CDN
```js
// in GeneralWorkbench init
const assets = await (await fetch(`https://alifd.alicdn.com/npm/@alilc/antd-lowcode-materials@1.2.2/build/lowcode/assets-prod.json`)).json();
material.setAssets(assets);
```
[npm-image-antd]: https://img.shields.io/npm/v/@alilc/antd-lowcode-materials.svg?style=flat-square
[npm-url-antd]: http://npmjs.org/package/@alilc/antd-lowcode-materials
================================================
FILE: packages/antd-lowcode-materials/build.json
================================================
{
"sourceMap": false,
"alias": {
"@": "./src",
"@components": "./src/components"
},
"plugins": [["build-plugin-component"]]
}
================================================
FILE: packages/antd-lowcode-materials/build.lowcode.js
================================================
const { name, version } = require("./package.json");
const library = 'AntdLowcode';
module.exports = {
sourceMap: false,
alias: {
'@': './src',
lowcode: './lowcode'
},
plugins: [
[
'@alifd/build-plugin-lowcode',
{
noParse: true,
engineScope: '@alilc',
library,
staticResources: {
engineCoreCssUrl:
'https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.2.1/dist/css/engine-core.css',
engineExtCssUrl:
'https://alifd.alicdn.com/npm/@alilc/lowcode-engine-ext@1.0.6/dist/css/engine-ext.css',
engineCoreJsUrl:
'https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.2.1/dist/js/engine-core.js',
engineExtJsUrl:
'https://alifd.alicdn.com/npm/@alilc/lowcode-engine-ext@1.0.6/dist/js/engine-ext.js',
},
npmInfo: {
package: name,
version,
},
lowcodeDir: 'lowcode',
entryPath: 'src/index.tsx',
categories: ['通用', '导航', '信息输入', '信息展示', '信息反馈'],
baseUrl: {
prod: `https://alifd.alicdn.com/npm/${name}@${version}`,
daily: `https://alifd.alicdn.com/npm/${name}@${version}`,
},
builtinAssets: [
{
packages: [
{
package: 'moment',
version: '2.24.0',
urls: ['https://g.alicdn.com/mylib/moment/2.24.0/min/moment.min.js'],
library: 'moment',
},
{
package: 'lodash',
library: '_',
urls: ['https://g.alicdn.com/platform/c/lodash/4.6.1/lodash.min.js'],
},
{
package: 'iconfont-icons',
urls: '//at.alicdn.com/t/font_2369445_ukrtsovd92r.js',
},
{
package: '@ant-design/icons',
version: '4.7.0',
urls: [`//g.alicdn.com/code/npm/@ali/ant-design-icons-cdn/4.5.0/index.umd.min.js`],
library: 'icons',
},
{
package: 'antd',
version: '4.23.0',
urls: [
`//g.alicdn.com/code/lib/antd/4.23.0/antd.min.js`,
`//g.alicdn.com/code/lib/antd/4.23.0/antd.min.css`,
],
library: 'antd',
},
],
components: [],
},
],
},
],
],
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/_setters/antd-icon-setter/index.tsx
================================================
import React, { useState, useEffect, Component } from 'react';
// setter使用@alifd/next,和编辑器保持一致
import { Input, Icon as NextIcon, Radio, Balloon, Search } from '@alifd/next';
import { get } from '../../_utils/utils';
import './style.less';
type IconGroup = 'outlined' | 'filled' | 'two-tone' | 'iconfont';
const IconGroupNameMap: Record<IconGroup, string> = {
outlined: '线框风格',
filled: '实底风格',
'two-tone': '双色风格',
iconfont: 'Iconfont',
};
function getIconfontIconList() {
const iframe = document.querySelector<HTMLIFrameElement>(
'iframe.lc-simulator-content-frame',
)!;
const antdIcons = get(iframe, 'contentWindow.icons', {}) as Record<
string,
any
>;
// iconfont的js会在页面中添加svg元素
const symbols = Array.prototype.slice.call(
iframe.contentDocument!.querySelectorAll(
'svg[style="position: absolute; width: 0px; height: 0px; overflow: hidden;"][aria-hidden="true"] > symbol',
),
);
const Icon = antdIcons.createFromIconfontCN();
return symbols.map(symbol => {
const { id } = symbol;
return {
name: id,
group: 'iconfont',
icon: (props: any) => (
<span role="img" className="anticon">
<svg
viewBox="64 64 896 896"
width="1em"
height="1em"
fill="currentColor"
dangerouslySetInnerHTML={{ __html: symbol.innerHTML }}
/>
</span>
),
};
});
}
function getAntdIconList() {
const iframe = document.querySelector<HTMLIFrameElement>(
'iframe.lc-simulator-content-frame',
);
const icons: Record<string, any> = {};
// document.querySelectorAll('svg[style="position: absolute; width: 0px; height: 0px; overflow: hidden;"][aria-hidden="true"]')
const antdIcons = get(iframe, 'contentWindow.icons', {}) as Record<
string,
any
>;
return Object.keys(antdIcons)
.map(key => {
const item = (antdIcons as any)[key];
if (typeof item !== 'object') {
return null;
}
const name = item?.displayName ?? item?.render?.displayName ?? key;
let group: IconGroup = 'outlined';
const lowercaseName = name.toLowerCase();
if (/outlined$/.test(lowercaseName)) {
group = 'outlined';
} else if (/filled$/.test(lowercaseName)) {
group = 'filled';
} else if (/twotone$/.test(lowercaseName)) {
group = 'two-tone';
} else {
return null;
}
return {
name,
group,
icon: item,
};
})
.filter(Boolean);
}
function getIconList() {
const iconfontIconList = getIconfontIconList();
const antdIconList = getAntdIconList();
return [...antdIconList, ...iconfontIconList];
}
const Icon = (props: any) => {
const { type, icons = {}, ...rest } = props;
const Comp = icons[type];
if (!Comp) return null;
return <Comp {...rest} />;
};
interface AntdIconSetterProps {
value: string;
type: string;
defaultValue: string;
placeholder: string;
hasClear: boolean;
onChange: (icon: string | object) => undefined;
icons: string[];
}
const Tooltip = Balloon.Tooltip;
const AntdIconSetter = (props: AntdIconSetterProps) => {
const [search, setSearch] = useState('');
const [icons, setIcons] = useState<Record<string, any>>({});
const [groups, setGroups] = useState<{ group: IconGroup; list: any[] }[]>([]);
const [selectedGroup, setSelectedGroup] = useState<IconGroup>('outlined');
const [firstLoad, setFirstLoad] = useState(true);
const [list, setList] = useState<any[]>([]);
const { value, defaultValue, type, onChange, placeholder, hasClear } = props;
const _value =
typeof value === 'object' ? (value as any)?.props?.type : value;
if (firstLoad && defaultValue && typeof value === 'undefined') {
onChange(defaultValue);
setFirstLoad(false);
}
const handleChange = (icon: string) => {
if (type === 'string') {
onChange(icon);
} else if (type === 'node') {
onChange({
componentName: 'Icon',
props: {
type: icon,
},
});
}
};
useEffect(() => {
const iconList = getIconList();
const groups: { group: IconGroup; list: any[] }[] = [];
const icons: any = {};
iconList.forEach(item => {
const { group, name, icon } = item!;
if (groups.every(item => item.group !== group)) {
groups.push({ group: group as IconGroup, list: [] });
}
const target = groups.find(item => item.group === group)!;
target.list.push(item);
icons[item!.name] = item?.icon;
});
setIcons(icons);
setGroups(groups);
setSelectedGroup(groups[0]?.group);
}, []);
useEffect(() => {
const currentGroup = groups.find(item => item.group === selectedGroup);
setList(
(currentGroup?.list ?? []).filter(item => {
return search
? item.name.toLowerCase().indexOf(search.toLowerCase()) > -1
: true;
}),
);
}, [selectedGroup, search, groups]);
const currentIcon = (
<Icon type={_value} icons={icons} style={{ fontSize: 16 }} />
);
const clearIcon = hasClear && (
<NextIcon
size="xs"
id="icon-clear"
type="delete-filling"
onClick={e => {
e.preventDefault();
e.stopPropagation();
handleChange('');
}}
/>
);
const triggerNode = (
<div>
<Input
placeholder={placeholder}
addonTextBefore={currentIcon}
onChange={handleChange}
value={_value}
defaultValue={defaultValue}
readOnly
addonTextAfter={clearIcon}
/>
</div>
);
return (
<div className="lc-antd-icon-setter">
<Balloon
className="lc-antd-icon-setter-balloon"
trigger={triggerNode}
needAdjust
triggerType="click"
closable={false}
alignEdge
align="lt"
style={{ width: 300 }}
>
<div className="lc-antd-icon-setter-header">
<Radio.Group
className="lc-antd-icon-setter-header-style"
shape="button"
value={selectedGroup}
onChange={value => setSelectedGroup(value as any)}
>
{groups.map(item => (
<Radio key={item.group} value={item.group}>
{IconGroupNameMap[item.group]}
</Radio>
))}
</Radio.Group>
<Search
className="lc-antd-icon-setter-header-search"
size="medium"
shape="simple"
onChange={setSearch}
/>
</div>
<div className="lc-antd-icon-setter-content">
<ul className="lc-antd-icon-setter-list">
{list.map(item => (
<li
key={item.name}
className="lc-antd-icon-setter-list-item"
onClick={() => handleChange(item.name)}
>
<Tooltip v2 trigger={<Icon type={item.name} icons={icons} />} popupStyle= {{backgroundColor: "#fff"}}>
{item.name}
</Tooltip>
</li>
))}
</ul>
</div>
</Balloon>
</div>
);
};
AntdIconSetter.defaultProps = {
value: undefined,
type: 'string',
defaultValue: '',
hasClear: false,
placeholder: '请点击选择 Icon',
onChange: () => undefined,
};
// 因为下面这个问题,setter必须使用class组件
// http://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine/issues/109046
export default class extends Component<AntdIconSetterProps> {
render() {
return <AntdIconSetter {...this.props} />;
}
}
================================================
FILE: packages/antd-lowcode-materials/lowcode/_setters/antd-icon-setter/style.less
================================================
.lc-antd-icon-setter {
&-header {
&-style {
width: 100%;
margin-bottom: 12px;
display: flex;
> label {
flex: 1;
text-align: center;
}
}
&-search {
width: 100%;
margin-bottom: 12px;
padding-bottom: 12px;
border-bottom: 1px solid #ddd;
}
}
&-list {
display: block;
max-height: 400px;
overflow-y: auto;
overflow-x: hidden;
&-item {
display: inline-block;
position: relative;
width: 36px;
height: 36px;
line-height: 36px;
text-align: center;
font-size: 24px;
border-radius: 4px;
transition: background-color 0.2s;
&-name {
display: none;
font-size: 14px;
position: absolute;
height: 30px;
word-break: keep-all;
white-space: nowrap;
bottom: -24px;
left: 50%;
z-index: 100;
height: 24px;
line-height: 24px;
padding: 0 5px;
border-radius: 4px;
background-color: #fff;
pointer-events: none;
transform: translateX(-50%);
box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12),
0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
}
&:hover {
background-color: #f1f2f3;
.lc-antd-icon-setter-list-item-name {
display: block;
}
}
}
}
}
================================================
FILE: packages/antd-lowcode-materials/lowcode/_setters/index.tsx
================================================
export { default as AntdIconSetter } from './antd-icon-setter';
================================================
FILE: packages/antd-lowcode-materials/lowcode/_utils/hoc.tsx
================================================
import React, { ComponentType, ReactNode, useState } from 'react';
import moment from 'moment';
import { get, set, has } from './utils';
function convertProps(
props: Record<string, any>,
list: string[],
mapper: (v: any, key: string) => any,
) {
const out: Record<string, any> = {};
list.forEach(key => {
if (has(props, key)) {
set(out, key, mapper(get(props, key), key));
}
});
return out;
}
/**
* 简单包装,不做任何处理
* 部分组件ref比较特殊,包一层会解决这个问题
*/
export function withWrap(Comp: ComponentType<any>) {
return (props: any) => {
return <Comp {...props} />;
};
}
/**
* 某些组件会用React.Children.only检查子节点
* 需要做处理避免报错
*/
export function withSingleChild(
Comp: ComponentType<any>,
needsConvert = ['children'],
) {
return (props: any) => {
const convertedProps = convertProps(props, needsConvert, prop => {
let node = React.Children.toArray(prop)[0];
if (node === null || typeof node !== 'object') {
node = <div>{node}</div>;
}
return node;
});
return <Comp {...(props as any)} {...(convertedProps as any)} />;
};
}
export function withSingleFunctionChild(Comp: ComponentType<any>) {
return (props: any) => {
const { children } = props;
let node;
if (typeof children === 'function') {
node = children;
}
if (
Array.isArray(children) &&
children.length === 1 &&
typeof children[0] === 'function'
) {
node = children[0];
}
if (node) {
return <Comp {...(props as any)}>{node}</Comp>;
}
return <div>{children}</div>;
};
}
/**
* moment对象在序列化后会被转为字符串
* 需要让日期类组件支持接受字符串值
*/
export function withMomentProps(
Comp: ComponentType<any>,
needsConvert = ['value', 'defaultValue'],
) {
return (props: any) => {
const convertedProps = convertProps(props, needsConvert, prop => {
if (prop) {
if (Array.isArray(prop)) {
return prop.map(v => (moment.isMoment(v) ? v : moment(v)));
}
return moment.isMoment(prop) ? prop : moment(prop);
}
});
return <Comp {...(props as any)} {...(convertedProps as any)} />;
};
}
================================================
FILE: packages/antd-lowcode-materials/lowcode/_utils/transform-meta.ts
================================================
import {
FieldConfig,
PropConfig,
PropType,
SetterType,
OneOf,
ObjectOf,
ArrayOf,
TransformedComponentMetadata,
} from '@ali/lowcode-types';
// http://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine/merge_requests/1054678
// 这个MR合并后可以去掉这个文件
function propConfigToFieldConfig(
propConfig: PropConfig,
supportVariable: boolean,
): FieldConfig {
const { name, description } = propConfig;
const title = {
label: {
type: 'i18n',
'en-US': name,
'zh-CN': description?.slice(0, 10) || name,
},
tip: description ? `${name} | ${description}` : undefined,
};
let setter =
(propConfig as any).setter ||
propTypeToSetter(propConfig.propType, supportVariable);
if (supportVariable && (propConfig as any).supportVariable !== false) {
if (
setter.componentName === 'MixedSetter' &&
setter.props?.setters &&
setter.props?.setters?.every((setter: any) => {
return (
setter?.componentName !== 'VariableSetter' &&
setter !== 'VariableSetter'
);
})
) {
setter.props.setters.push('VariableSetter');
} else if (
setter &&
setter !== 'VariableSetter' &&
setter.componentName !== 'VariableSetter'
) {
setter = {
componentName: 'MixedSetter',
props: {
setters: [setter, 'VariableSetter'],
},
};
}
}
return {
title,
...propConfig,
// TODO 这边直接用propConfig,将setter丢在propconfig里,需要确认是否在PropConfig扩展还是换实现
setter,
};
}
function propTypeToSetter(
propType: PropType,
supportVariable: boolean,
): SetterType {
let typeName: string;
let isRequired: boolean | undefined = false;
if (typeof propType === 'string') {
typeName = propType;
} else if (typeof propType === 'object') {
typeName = propType.type;
isRequired = propType.isRequired;
} else {
typeName = 'string';
}
// TODO: use mixinSetter wrapper
switch (typeName) {
case 'string':
return {
componentName: 'StringSetter',
isRequired,
initialValue: '',
};
case 'number':
return {
componentName: 'NumberSetter',
isRequired,
initialValue: 0,
};
case 'bool':
return {
componentName: 'BoolSetter',
isRequired,
initialValue: false,
};
case 'oneOf':
const dataSource = ((propType as OneOf).value || []).map(
(value, index) => {
const t = typeof value;
return {
label:
t === 'string' || t === 'number' || t === 'boolean'
? String(value)
: `value ${index}`,
value,
};
},
);
const componentName =
dataSource.length >= 4 ? 'SelectSetter' : 'RadioGroupSetter';
return {
componentName,
props: { dataSource, options: dataSource },
isRequired,
initialValue: dataSource[0] ? dataSource[0].value : null,
};
case 'element':
case 'node': // TODO: use Mixin
return {
// slotSetter
componentName: 'SlotSetter',
props: {
mode: typeName,
},
isRequired,
initialValue: {
type: 'JSSlot',
value: [],
},
};
case 'shape':
case 'exact':
const items = ((propType as any).value || []).map((item: any) =>
propConfigToFieldConfig(item, supportVariable),
);
return {
componentName: 'ObjectSetter',
props: {
config: {
items,
extraSetter:
typeName === 'shape'
? propTypeToSetter('any', supportVariable)
: null,
},
},
isRequired,
initialValue: (field: any) => {
const data: any = {};
items.forEach((item: any) => {
let initial = item.defaultValue;
if (
initial == null &&
item.setter &&
typeof item.setter === 'object'
) {
initial = (item.setter as any).initialValue;
}
data[item.name] = initial
? typeof initial === 'function'
? initial(field)
: initial
: null;
});
return data;
},
};
case 'object':
case 'objectOf':
return {
componentName: 'ObjectSetter',
props: {
config: {
extraSetter: propTypeToSetter(
typeName === 'objectOf' ? (propType as ObjectOf).value : 'any',
supportVariable,
),
},
},
isRequired,
initialValue: {},
};
case 'array':
case 'arrayOf':
return {
componentName: 'ArraySetter',
props: {
itemSetter: propTypeToSetter(
typeName === 'arrayOf' ? (propType as ArrayOf).value : 'any',
supportVariable,
),
},
isRequired,
initialValue: [],
};
case 'func':
return {
componentName: 'FunctionSetter',
isRequired,
};
case 'color':
return {
componentName: 'ColorSetter',
isRequired,
};
case 'oneOfType':
return {
componentName: 'MixedSetter',
props: {
// TODO:
setters: (propType as any).value.map((item: any) =>
propTypeToSetter(item, supportVariable),
),
},
isRequired,
};
default:
// do nothing
}
return {
componentName: 'MixedSetter',
isRequired,
props: {},
};
}
const NO_EVENTS = ['beforeUpload'];
const EVENT_RE = /^on|after|before[A-Z][\w]*$/;
export default function(
metadata: TransformedComponentMetadata,
supportVariable: boolean,
): TransformedComponentMetadata {
const { configure = {} } = metadata;
// TODO types后续补充
let extendsProps: any = null;
if (configure.props) {
if (Array.isArray(configure.props)) {
return metadata;
}
const { isExtends, override = [] } = configure.props;
// 不开启继承时,直接返回configure配置
if (!isExtends) {
return {
...metadata,
configure: {
...configure,
props: [...override],
},
};
}
extendsProps = {};
// 开启继承后,缓存重写内容的配置
override.forEach((prop: any) => {
extendsProps[prop.name] = prop;
});
}
if (!metadata.props) {
return {
...metadata,
configure: {
...configure,
props: [],
},
};
}
const { component = {}, supports = {} } = configure;
const supportedEvents: any[] | null = (supports as any).events ? null : [];
const props: FieldConfig[] = [];
metadata.props.forEach(prop => {
const { name, propType, description } = prop;
if (
name === 'children' &&
(component.isContainer ||
propType === 'node' ||
propType === 'element' ||
propType === 'any')
) {
if (component.isContainer !== false) {
component.isContainer = true;
props.push(propConfigToFieldConfig(prop, supportVariable));
return;
}
}
if (
EVENT_RE.test(name) &&
NO_EVENTS.indexOf(name) < 0 &&
(propType === 'func' || propType === 'any')
) {
if (supportedEvents) {
supportedEvents.push({
name,
description,
});
(supports as any).events = supportedEvents;
}
return;
}
if (name === 'className' && (propType === 'string' || propType === 'any')) {
if ((supports as any).className == null) {
(supports as any).className = true;
}
return;
}
if (name === 'style' && (propType === 'object' || propType === 'any')) {
if ((supports as any).style == null) {
(supports as any).style = true;
}
return;
}
// 存在覆盖配置时
if (extendsProps) {
if (name in extendsProps) {
prop = extendsProps[name];
}
}
props.push(propConfigToFieldConfig(prop, supportVariable));
});
return {
...metadata,
configure: {
...configure,
props,
supports,
component,
},
} as any;
}
================================================
FILE: packages/antd-lowcode-materials/lowcode/_utils/utils.ts
================================================
export { get, set, has } from 'lodash';
// simple uuid
export function uuid() {
return ((Math.random() * 1e6) >> 0).toString(36);
}
================================================
FILE: packages/antd-lowcode-materials/lowcode/affix/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Affix',
title: '固钉',
category: '导航',
props: [
{
name: 'offsetBottom',
title: { label: '底部触发距离', tip: '距离窗口底部达到指定偏移量后触发' },
propType: 'number',
},
{
name: 'offsetTop',
title: { label: '顶部触发距离', tip: '距离窗口顶部达到指定偏移量后触发' },
propType: 'number',
},
{
name: 'target',
title: {
label: '获取触发元素',
tip: '设置 `Affix` 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数',
},
propType: 'func',
},
{
name: 'onChange',
title: { label: '监听状态改变', tip: '固定状态改变时触发的回调函数' },
propType: 'func',
},
],
configure: {
supports: {
style: true,
events: [
{
name: 'onChange',
template:
"onChange(affixed,${extParams}){\n// 固定状态变更回调函数\nconsole.log('onChange', affixed);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/affix/snippets.ts
================================================
export default [
{
title: '固钉',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/affix-1.jpg',
schema: {
componentName: 'Affix',
props: {
offsetTop: 100,
},
children: [
{
componentName: 'Button',
props: {
children: 'Affix Top',
},
},
],
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/alert/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Alert',
title: '警告提示',
category: '反馈',
props: [
{
name: 'afterClose',
title: {
label: '关闭动画结束后触发的回调函数',
tip: '关闭动画结束后触发的回调函数',
},
propType: 'func',
},
{
name: 'banner',
title: { label: '顶部公告', tip: '是否用作顶部公告' },
propType: 'bool',
defaultValue: false,
},
{
name: 'closable',
title: { label: '可关闭', tip: '默认不显示关闭按钮' },
propType: 'bool',
},
{
name: 'closeText',
title: { label: '自定义关闭按钮', tip: '自定义关闭按钮' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'description',
title: {
label: '描述信息',
tip: '警告提示的辅助性文字介绍',
},
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'icon',
title: {
label: '图标',
tip: '自定义图标,`showIcon` 为 true 时有效',
},
propType: 'node',
},
{
name: 'message',
title: { label: '警告提示内容', tip: '警告提示内容' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'showIcon',
title: { label: '显示图标', tip: '是否显示辅助图标' },
propType: 'bool',
},
{
name: 'type',
title: { label: '类型', tip: '类型' },
propType: {
type: 'oneOf',
value: ['success', 'info', 'warning', 'error'],
},
},
{
name: 'onClose',
title: { label: '关闭时触发的回调函数', tip: '关闭时触发的回调函数' },
propType: 'func',
},
],
configure: {
supports: {
style: true,
events: [
{
name: 'onClose',
template:
"onChange(event,${extParams}){\n// 关闭时触发的回调函数\nconsole.log('onChange');}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/alert/snippets.ts
================================================
export default [
{
title: '成功提示',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/alert-1.png',
schema: {
componentName: 'Alert',
props: {
message: 'Success Tips',
description: 'Detailed description and advice about successful copywriting.',
type: 'success',
showIcon: true,
},
},
},
{
title: '信息提示',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/alert-2.png',
schema: {
componentName: 'Alert',
props: {
message: 'Informational Notes',
description: 'Additional description and information about copywriting.',
type: 'info',
showIcon: true,
},
},
},
{
title: '警告提示',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/alert-3.png',
schema: {
componentName: 'Alert',
props: {
message: 'Warning',
description: 'This is a warning notice about copywriting.',
type: 'warning',
showIcon: true,
},
},
},
{
title: '错误提示',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/alert-4.png',
schema: {
componentName: 'Alert',
props: {
message: 'Error',
description: 'This is an error message about copywriting.',
type: 'error',
showIcon: true,
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/anchor/snippets.ts
================================================
export default [
{
title: '锚点',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/anchor-1.png',
schema: {
componentName: 'Anchor',
props: {},
children: [
{
componentName: 'Anchor.Link',
props: {
title: 'Document',
},
},
{
componentName: 'Anchor.Link',
props: {
title: 'API',
},
},
{
componentName: 'Anchor.Link',
props: {
title: 'Demo',
},
},
],
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/anchor.link/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Anchor.Link',
title: '锚点链接',
category: '其他',
props: [
{
name: 'href',
title: { label: '锚点链接', tip: '锚点链接' },
propType: 'string',
},
{
name: 'target',
title: {
label: 'target',
tip: '该属性指定在何处显示链接的资源',
},
propType: 'string',
},
{
name: 'title',
title: { label: '内容', tip: '内容' },
propType: 'string',
},
],
configure: { supports: { style: true } },
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/anchor.link/snippets.ts
================================================
export default [];
================================================
FILE: packages/antd-lowcode-materials/lowcode/auto-complete/meta.ts
================================================
import { uuid } from '../_utils/utils';
import snippets from './snippets';
export default {
snippets,
componentName: 'AutoComplete',
title: '辅助提示输入框',
category: '表单',
props: [
{
name: 'defaultValue',
title: { label: '默认值', tip: '默认选中值' },
propType: 'string',
},
{
name: 'value',
title: { label: '当前值', tip: '当前选中值' },
propType: 'string',
},
{
name: 'allowClear',
title: { label: '支持清除', tip: '是否允许清除' },
propType: 'bool',
defaultValue: false,
},
{
name: 'options',
title: { label: '选项内容', tip: '选项列表' },
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'label',
title: '选项名',
setter: 'StringSetter',
},
{
name: 'value',
title: '选项值',
setter: 'StringSetter',
},
],
},
},
initialValue: () => {
return {
label: '选项名',
value: uuid(),
};
},
},
},
},
},
{
name: 'autoFocus',
title: { label: '自动聚焦', tip: '自动获取焦点' },
propType: 'bool',
defaultValue: false,
},
{
name: 'backfill',
title: {
label: '键盘选中回填',
tip: '使用键盘选择选项的时候把选中项回填到输入框中',
},
propType: 'bool',
defaultValue: false,
},
{
name: 'defaultActiveFirstOption',
title: { label: '默认高亮首个选项', tip: '是否默认高亮第一个选项' },
propType: 'bool',
defaultValue: true,
},
{
name: 'disabled',
title: { label: '是否禁用', tip: '是否为禁用状态' },
propType: 'bool',
defaultValue: false,
},
{
name: 'filterOption',
title: { label: '可选项筛选', tip: '是否根据输入项进行筛选' },
propType: 'bool',
},
{
name: 'placeholder',
title: { label: '输入框提示', tip: '输入框提示' },
propType: 'string',
},
{
name: 'onBlur',
title: { label: '失去焦点时的回调', tip: '失去焦点时的回调' },
propType: 'func',
},
{
name: 'onChange',
title: {
label: 'value变化时的回调',
tip: '选中 option,或 input 的 value 变化时,调用此函数',
},
propType: 'func',
},
{
name: 'onFocus',
title: { label: '获得焦点时的回调', tip: '获得焦点时的回调' },
propType: 'func',
},
{
name: 'onSearch',
title: { label: '搜索补全项的时候调用', tip: '搜索补全项的时候调用' },
propType: 'func',
},
{
name: 'onSelect',
title: {
label: '被选中时的回调',
tip: '被选中时调用,参数为选中项的 value 值',
},
propType: 'func',
},
{
name: 'defaultOpen',
title: { label: '默认展开菜单', tip: '是否默认展开下拉菜单' },
propType: 'bool',
},
// {
// name: 'open',
// title: { label: '展开下拉菜单', tip: '是否展开下拉菜单' },
// propType: 'bool',
// },
{
name: 'onDropdownVisibleChange',
title: { label: '展开下拉菜单的回调', tip: '展开下拉菜单的回调' },
propType: 'func',
},
{
name: 'notFoundContent',
title: { label: '无数据展示', tip: '当下拉列表为空时显示的内容' },
propType: 'string',
},
],
configure: {
props: [
{
name: 'defaultValue',
title: {
label: {
type: 'i18n',
zh_CN: '默认值',
en_US: 'Default Value',
},
tip: {
type: 'i18n',
zh_CN: '属性: defaultValue | 说明: 默认值',
en_US: 'prop: defaultValue | description: defaultValue',
},
},
setter: 'StringSetter',
supportVariable: true,
},
{
name: 'value',
title: {
label: {
type: 'i18n',
zh_CN: '当前值',
en_US: 'Value',
},
tip: {
type: 'i18n',
zh_CN: '属性: Value | 说明: 当前值',
en_US: 'prop: Value | description: Value',
},
},
setter: 'StringSetter',
supportVariable: true,
},
{
name: 'allowClear',
title: {
label: {
type: 'i18n',
zh_CN: '支持清除',
en_US: 'Allow Clear',
},
tip: {
type: 'i18n',
zh_CN: '属性: allowClear | 说明:是否允许清除',
en_US: 'prop: allowClear | description: Allow Clear',
}
},
setter: 'BoolSetter',
supportVariable: true,
},
{
name: 'options',
title: {
label: {
type: 'i18n',
zh_CN: '选项内容',
en_US: 'Options',
},
tip: {
type: 'i18n',
zh_CN: '属性: options | 说明:选项列表',
en_US: 'prop: options | description: Options',
}
},
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'label',
title: '选项名',
setter: 'StringSetter',
isRequired: true
},
{
name: 'value',
title: '选项值',
setter: 'StringSetter',
isRequired: true
},
],
},
},
initialValue: () => {
return {
label: '选项名',
value: uuid(),
};
},
},
},
},
},
{
name: 'autoFocus',
title: {
label: {
type: 'i18n',
zh_CN: '自动聚焦',
en_US: 'Auto Focus',
},
tip: {
type: 'i18n',
zh_CN: '属性: autoFocus | 说明:自动获取焦点',
en_US: 'prop: autoFocus | description: Auto Focus',
}
},
setter: 'BoolSetter',
supportVariable: true,
},
{
name: 'backfill',
title: {
label: {
type: 'i18n',
zh_CN: '键盘选中回填',
en_US: 'Backfill',
},
tip: {
type: 'i18n',
zh_CN: '属性: backfill | 说明:使用键盘选择选项的时候把选中项回填到输入框中',
en_US: 'prop: backfill | description: When using the keyboard to select options, backfill the selected items into the input box',
}
},
setter: 'BoolSetter',
supportVariable: true,
},
{
name: 'defaultActiveFirstOption',
title: {
label: {
type: 'i18n',
zh_CN: '默认高亮首个选项',
en_US: 'Default Active First Option',
},
tip: {
type: 'i18n',
zh_CN: '属性: defaultActiveFirstOption | 说明:是否默认高亮第一个选项',
en_US: 'prop: defaultActiveFirstOption | description: Whether to highlight the first option by default',
}
},
setter: 'BoolSetter',
defaultValue: true,
supportVariable: true,
},
{
name: 'disabled',
title: {
label: {
type: 'i18n',
zh_CN: '是否禁用',
en_US: 'Disabled',
},
tip: {
type: 'i18n',
zh_CN: '属性: disabled | 说明:是否为禁用状态',
en_US: 'prop: disabled | description: Disable',
}
},
setter: 'BoolSetter',
supportVariable: true,
},
{
name: 'filterOption',
title: {
label: {
type: 'i18n',
zh_CN: '可选项筛选',
en_US: 'Filter Option',
},
tip: {
type: 'i18n',
zh_CN: '属性: filterOption | 说明:是否根据输入项进行筛选',
en_US: 'prop: filterOption | description: Filter based on input',
}
},
setter: 'BoolSetter',
supportVariable: true,
},
{
name: 'placeholder',
title: {
label: {
type: 'i18n',
zh_CN: '输入框提示',
en_US: 'Placeholder',
},
tip: {
type: 'i18n',
zh_CN: '属性: placeholder | 说明: 输入框提示',
en_US: 'prop: placeholder | description: Placeholder',
},
},
setter: 'StringSetter',
supportVariable: true,
},
{
name: 'defaultOpen',
propType: 'bool',
title: {
label: {
type: 'i18n',
zh_CN: '默认展开菜单',
en_US: 'Default Open',
},
tip: {
type: 'i18n',
zh_CN: '属性: defaultOpen | 说明:是否默认展开下拉菜单',
en_US: 'prop: defaultOpen | description: Expand drop-down menu by default',
}
},
setter: 'BoolSetter',
supportVariable: true,
},
// {
// name: 'open',
// title: {
// label: {
// type: 'i18n',
// zh_CN: '展开下拉菜单',
// en_US: 'Open',
// },
// tip: {
// type: 'i18n',
// zh_CN: '属性: open | 说明:是否展开下拉菜单',
// en_US: 'prop: open | description: Expand drop-down menu',
// }
// },
// setter: 'BoolSetter',
// supportVariable: true,
// },
{
name: 'notFoundContent',
title: {
label: {
type: 'i18n',
zh_CN: '无数据展示',
en_US: 'Not Found Content',
},
tip: {
type: 'i18n',
zh_CN: '属性: notFoundContent | 说明: 当下拉列表为空时显示的内容',
en_US: 'prop: notFoundContent | description: Content displayed when the drop-down list is empty',
},
},
setter: 'StringSetter',
supportVariable: true,
},
],
supports: {
style: true,
events: [
{
name: 'onBlur',
template: "onBlur(${extParams}){\n// 失去焦点时的回调\nconsole.log('onBlur');}",
},
{
name: 'onChange',
template:
"onChange(value,${extParams}){\n// 选中 option,或 input 的 value 变化时,调用此函数\nconsole.log('onChange', value);}",
},
{
name: 'onFocus',
template:
"onFocus(${extParams}){\n// 选中 option,或 input 的 value 变化时,调用此函数\nconsole.log('onFocus')}",
},
{
name: 'onSearch',
template:
"onSearch(value,${extParams}){\n// 搜索补全项的时候调用\nconsole.log('onSearch',value);}",
},
{
name: 'onSelect',
template:
"onSelect(value,option,${extParams}){\n// 被选中时调用\nconsole.log('onSelect', value, option);}",
},
{
name: 'onDropdownVisibleChange',
template:
"onDropdownVisibleChange(open,${extParams}){\n// 展开下拉菜单的回调\nconsole.log('onDropdownVisibleChange', open);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/auto-complete/snippets.ts
================================================
export default [
{
title: '辅助提示输入框',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/auto-complete-1.png',
schema: {
componentName: 'AutoComplete',
props: {
placeholder: '请输入',
options: [
{
label: '测试1',
value: 'aaa',
},
{
label: '测试2',
value: 'bbb',
},
],
filterOption: true,
style: {
width: '200px',
},
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/avatar/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Avatar',
title: '头像',
category: '数据展示',
props: [
{
name: 'icon',
title: { label: '头像图标', tip: '设置头像的自定义图标' },
propType: 'node',
},
{
name: 'shape',
title: { label: '头像形状', tip: '指定头像的形状' },
propType: { type: 'oneOf', value: ['circle', 'square'] },
},
{
name: 'size',
title: { label: '尺寸', tip: '设置头像的大小' },
propType: {
type: 'oneOfType',
value: ['number', { type: 'oneOf', value: ['large', 'small', 'default'] }],
},
defaultValue: 'default',
},
{
name: 'src',
title: { label: '图片地址', tip: '图片类头像的资源地址' },
propType: 'string',
},
{
name: 'alt',
title: {
label: '替代文本',
tip: '图像无法显示时的替代文本',
},
propType: 'string',
},
{
name: 'onError',
title: {
label: '图片加载失败的事件',
tip: '图片加载失败的事件,返回 false 会关闭组件默认的 fallback 行为',
},
propType: 'func',
},
{
name: 'gap',
title: {
label: '文字边距',
tip: '字符类型距离左右两侧边界单位像素',
},
propType: 'number',
},
],
configure: {
supports: {
style: true,
events: [
{
name: 'onError',
template: "onError(${extParams}){\n// 图片加载失败的事件\nconsole.log('onError');}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/avatar/snippets.ts
================================================
export default [
{
title: '头像',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/avatar-1.jpg',
schema: {
componentName: 'Avatar',
props: {
src: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/back-top/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'BackTop',
title: '回到顶部',
category: '其他',
props: [
{
name: 'target',
title: {
label: '监听元素',
tip: '设置需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数',
},
propType: 'func',
},
{
name: 'visibilityHeight',
title: {
label: '可见高度',
tip: '滚动高度达到此参数值才出现 BackTop',
},
propType: 'number',
},
{
name: 'onClick',
title: { label: '点击按钮的回调函数', tip: '点击按钮的回调函数' },
propType: 'func',
},
{
name: 'duration',
title: { label: '滚动时间', tip: '回到顶部所需时间(ms)' },
propType: 'number',
},
],
configure: {
supports: {
style: true,
events: [
{
name: 'onClick',
template: "onClick(${extParams}){\n// 点击按钮的回调函数\nconsole.log('onClick');}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/back-top/snippets.ts
================================================
export default [
{
title: '回到顶部',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/back-top-1.jpg',
schema: {
componentName: 'BackTop',
props: {},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/badge/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Badge',
title: '徽标数',
category: '数据展示',
props: [
{
name: 'color',
title: { label: '圆点颜色', tip: '自定义小圆点的颜色' },
propType: 'string',
},
{
name: 'count',
title: {
label: '展示数字',
tip: '展示的数字,大于 overflowCount 时显示为 `${overflowCount}+`,为 0 时隐藏',
},
propType: 'node',
},
{
name: 'dot',
title: {
label: '展示圆点',
tip: '不展示数字,只有一个小红点',
},
propType: 'bool',
defaultValue: false,
},
{
name: 'offset',
title: {
label: '圆点偏移',
tip: '设置状态点的位置偏移 [number, number]',
},
propType: { type: 'arrayOf', value: 'number' },
},
{
name: 'overflowCount',
title: { label: '封顶值', tip: '展示封顶的数字值' },
propType: 'number',
},
{
name: 'showZero',
title: {
label: '展示零值',
tip: '当数值为 0 时,是否展示 Badge',
},
propType: 'bool',
defaultValue: false,
},
{
name: 'status',
title: { label: '状态', tip: '设置 Badge 为状态点' },
propType: {
type: 'oneOf',
value: ['success', 'processing', 'default', 'error', 'warning'],
},
},
{
name: 'text',
title: {
label: '状态文本',
tip: '在设置了 `status` 的前提下有效,设置状态点的文本',
},
condition(target) {
return !!target.getProps().getPropValue('status');
},
propType: 'string',
},
{
name: 'title',
title: {
label: '悬浮提示',
tip: '设置鼠标放在状态点上时显示的文字',
},
propType: 'string',
},
],
configure: { supports: { style: true } },
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/badge/snippets.ts
================================================
export default [
{
title: '徽标数',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/badge-1.png',
schema: {
componentName: 'Badge',
props: {
count: 25,
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/breadcrumb/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Breadcrumb',
title: '面包屑',
category: '导航',
props: [
{
title: '基础',
display: 'block',
type: 'group',
items: [
{
name: 'routes',
title: { label: '路由栈信息', tip: 'router 的路由栈信息' },
propType: {
type: 'arrayOf',
value: {
type: 'shape',
value: [
{ name: 'path', propType: 'string' },
{ name: 'breadcrumbName', propType: 'string' },
],
},
},
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'path',
title: { label: '路由路径', tip: 'path | 路由路径' },
propType: 'string',
setter: 'StringSetter',
isRequired: true
},
{
name: 'breadcrumbName',
title: {
label: '路由名称',
tip: 'breadcrumbName | 路由名称',
},
propType: 'string',
setter: 'StringSetter',
isRequired: true
},
],
},
},
initialValue: {
path: 'path',
breadcrumbName: 'breadcrumbName',
},
},
},
},
},
{
name: 'params',
title: { label: '路由的参数', tip: '路由的参数' },
propType: 'object',
setter: 'JsonSetter',
},
{
name: 'separator',
title: { label: '分隔符自定义', tip: '分隔符自定义' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
setter: [
'StringSetter',
{
componentName: 'SlotSetter',
initialValue: {
type: 'JSSlot',
value: [],
},
},
'VariableSetter',
],
},
],
},
{
title: '扩展',
display: 'block',
type: 'group',
items: [
{
name: 'itemRender',
title: {
label: '自定义渲染',
tip: 'itemRender | 自定义渲染',
},
propType: { type: 'oneOfType', value: ['func', 'node'] },
setter: [
{
componentName: 'SlotSetter',
title: '自定义渲染插槽',
initialValue: {
type: 'JSSlot',
params: ['route', 'params', 'routes', 'paths'],
value: [],
},
},
{
componentName: 'FunctionSetter',
props: {
template:
'itemRender(route, params, routes, paths,${extParams}){\n// 自定义渲染\nreturn `${route.breadcrumbName}`}',
},
},
'VariableSetter',
],
},
],
},
],
configure: { supports: { style: true } },
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/breadcrumb/snippets.ts
================================================
export default [
{
title: '面包屑',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/breadcrumb-1.jpg',
schema: {
componentName: 'Breadcrumb',
props: {
routes: [
{
path: 'a',
breadcrumbName: 'Home',
},
{
path: 'center',
breadcrumbName: 'Application Center',
},
{
path: 'app',
breadcrumbName: 'An Application',
},
],
itemRender: {
type: 'JSSlot',
params: ['route', 'params', 'routes', 'paths'],
value: [
{
componentName: 'Typography.Link',
props: {
href: {
type: 'JSExpression',
value: 'this.route.path',
},
children: {
type: 'JSExpression',
value: 'this.route.breadcrumbName',
},
},
},
],
},
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/button/meta.ts
================================================
import snippets from './snippets';
export default {
componentName: 'Button',
title: '按钮',
category: '通用',
props: [
{
title: '功能',
display: 'block',
type: 'group',
items: [
{
name: 'children',
title: {
label: '内容',
tip: 'children | 内容',
},
propType: {
type: 'oneOfType',
value: ['node', 'string'],
},
setter: ['SlotSetter', 'StringSetter', 'VariableSetter'],
},
{
name: 'htmlType',
title: {
label: '原生类型',
tip: 'htmlType | 设置 `button` 原生的 `type` 值',
},
propType: {
type: 'oneOf',
value: ['submit', 'reset', 'button'],
},
setter: [
{
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: 'Submit',
value: 'submit',
},
{
title: 'Reset',
value: 'reset',
},
{
title: 'Button',
value: 'button',
},
],
},
},
'VariableSetter',
],
defaultValue: 'button',
},
{
name: 'href',
title: {
label: '跳转地址',
tip: 'href | 点击跳转的地址,指定此属性 button 的行为和 a 链接一致',
},
propType: 'string',
setter: ['StringSetter', 'VariableSetter'],
},
{
name: 'target',
title: {
label: 'Target',
tip: 'target | 相当于 a 链接的 target 属性,href 存在时生效',
},
propType: {
type: 'oneOf',
value: ['_self', '_blank', '_parent', '_top'],
},
setter: [
{
componentName: 'SelectSetter',
props: {
options: [
{
title: '本窗口跳转',
value: '_self',
},
{
title: '打开新标签页',
value: '_blank',
},
{
title: '父窗口跳转',
value: '_parent',
},
{
title: '顶层窗口跳转',
value: '_top',
},
],
},
},
'StringSetter',
'VariableSetter',
],
condition: {
type: 'JSFunction',
value: 'target => !!target.getProps().getPropValue("href")?.trim()',
},
},
],
},
{
title: '外观',
display: 'block',
type: 'group',
items: [
{
name: 'type',
title: { label: '类型', tip: 'type | 设置按钮类型' },
propType: {
type: 'oneOf',
value: ['primary', 'ghost', 'dashed', 'danger', 'link', 'text'],
},
setter: [
{
componentName: 'SelectSetter',
props: {
options: [
{
title: '主按钮',
value: 'primary',
},
{
title: '虚线框按钮',
value: 'dashed',
},
{
title: '危险按钮',
value: 'danger',
},
{
title: '链接按钮',
value: 'link',
},
{
title: '类文本按钮',
value: 'text',
},
],
},
},
'VariableSetter',
],
},
{
name: 'size',
title: { label: '尺寸', tip: 'size | 设置按钮大小' },
propType: { type: 'oneOf', value: ['large', 'middle', 'small'] },
setter: [
{
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '大',
value: 'large',
},
{
title: '中',
value: 'middle',
},
{
title: '小',
value: 'small',
},
],
},
},
'VariableSetter',
],
defaultValue: 'middle',
},
{
name: 'shape',
title: {
label: '形状',
tip: 'shape | 设置按钮形状,可选值为 `circle`、 `round` 或者不设',
},
propType: { type: 'oneOf', value: ['default', 'circle', 'round'] },
defaultValue: 'default',
setter: [
{
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '默认',
value: 'default',
},
{
title: '圆形',
value: 'circle',
},
{
title: '圆角',
value: 'round',
},
],
},
},
'VariableSetter',
],
},
{
name: 'icon',
title: { label: '图标', tip: 'icon | 设置按钮的图标组件' },
propType: 'node',
setter: {
componentName: 'SlotSetter',
initialValue: {
type: 'JSSlot',
value: [
{
componentName: 'Icon',
props: {
type: 'SmileOutlined',
size: 20,
rotate: 0,
spin: false,
},
},
],
},
},
},
{
name: 'block',
title: {
label: '自适应',
tip: 'block | 将按钮宽度调整为其父宽度的选项',
},
propType: 'bool',
setter: 'BoolSetter',
defaultValue: false,
},
{
name: 'danger',
title: { label: '危险按钮', tip: 'danger | 设置危险按钮' },
propType: 'bool',
setter: 'BoolSetter',
defaultValue: false,
},
{
name: 'ghost',
title: { label: '幽灵属性', tip: 'ghost | 幽灵属性,使按钮背景透明' },
propType: 'bool',
setter: 'BoolSetter',
defaultValue: false,
},
],
},
{
title: '状态',
display: 'block',
type: 'group',
items: [
{
name: 'loading',
title: { label: '载入状态', tip: 'loading | 设置按钮载入状态' },
propType: 'bool',
setter: ['BoolSetter', 'VariableSetter'],
},
{
name: 'disabled',
title: { label: '是否禁用', tip: 'disabled | 是否为禁用状态' },
propType: 'bool',
setter: ['BoolSetter', 'VariableSetter'],
defaultValue: false,
},
],
},
{
name: 'onClick',
title: { label: '点击回调', tip: '点击按钮时的回调' },
propType: 'func',
},
],
configure: {
supports: {
events: [
{
name: 'onClick',
template:
"onClick(event,${extParams}){\n// 点击按钮时的回调\nconsole.log('onClick', event);}",
},
],
style: true,
},
},
snippets,
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/button/snippets.ts
================================================
export default [
{
title: '主按钮',
screenshot: require('./__screenshots__/button-1.png'),
schema: {
componentName: 'Button',
props: {
type: 'primary',
children: '主按钮',
},
},
},
{
title: '次按钮',
screenshot: require('./__screenshots__/button-2.png'),
schema: {
componentName: 'Button',
props: {
type: 'default',
children: '次按钮',
},
},
},
{
title: '危险按钮',
screenshot: require('./__screenshots__/button-3.png'),
schema: {
componentName: 'Button',
props: {
type: 'danger',
children: '危险按钮',
},
},
},
{
title: '文字按钮',
screenshot: require('./__screenshots__/button-4.png'),
schema: {
componentName: 'Button',
props: {
type: 'text',
children: '文字按钮',
},
},
},
{
title: '虚框按钮',
screenshot: require('./__screenshots__/button-5.png'),
schema: {
componentName: 'Button',
props: {
type: 'dashed',
children: '虚框按钮',
},
},
},
{
title: '链接按钮',
screenshot: require('./__screenshots__/button-6.png'),
schema: {
componentName: 'Button',
props: {
type: 'link',
children: '链接按钮',
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/calendar/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Calendar',
title: '日历',
category: '数据展示',
props: [
{
name: 'defaultValue',
title: { label: '默认值', tip: '默认展示的日期' },
propType: 'date',
setter: 'DateSetter',
},
// {
// name: 'dateCellRender',
// title: {
// label: '自定义日期追加渲染',
// tip: '自定义渲染日期单元格,返回内容会被追加到单元格',
// },
// propType: 'func',
// },
// {
// name: 'dateFullCellRender',
// title: {
// label: '自定义渲染日期单元格,返回内容覆盖单元格',
// tip: '自定义渲染日期单元格,返回内容覆盖单元格',
// },
// propType: 'func',
// },
{
name: 'disabledDate',
title: { label: '不可选日期', tip: '不可选择的日期' },
propType: 'func',
},
{
name: 'fullscreen',
title: { label: '全屏显示', tip: '是否全屏显示' },
propType: 'bool',
defaultValue: true,
},
// {
// name: 'locale',
// title: { label: '国际化配置', tip: '国际化配置' },
// propType: 'object',
// },
{
name: 'mode',
title: { label: '初始模式', tip: '初始模式' },
propType: { type: 'oneOf', value: ['month', 'year'] },
defaultValue: 'month',
},
// {
// name: 'monthCellRender',
// title: {
// label: '自定义渲染月单元格,返回内容会被追加到单元格',
// tip: '自定义渲染月单元格,返回内容会被追加到单元格',
// },
// propType: 'func',
// },
// {
// name: 'monthFullCellRender',
// title: {
// label: '自定义渲染月单元格,返回内容覆盖单元格',
// tip: '自定义渲染月单元格,返回内容覆盖单元格',
// },
// propType: 'func',
// },
// {
// name: 'validRange',
// title: { label: '设置可以显示的日期', tip: '设置可以显示的日期' },
// propType: { type: 'arrayOf', value: 'object' },
// },
// {
// name: 'value',
// title: { label: '当前值', tip: '展示日期' },
// propType: 'object',
// },
{
name: 'onPanelChange',
title: { label: '日期面板变化回调', tip: '日期面板变化回调' },
propType: 'func',
},
{
name: 'onSelect',
title: { label: '点击选择日期回调', tip: '点击选择日期回调' },
propType: 'func',
},
{
name: 'onChange',
title: { label: '日期变化回调', tip: '日期变化回调' },
propType: 'func',
},
// {
// name: 'headerRender',
// title: { label: '自定义头部内容', tip: '自定义头部内容' },
// propType: 'func',
// },
],
configure: {
supports: {
style: true,
events: [
{
name: 'onPanelChange',
template:
"onPanelChange(date,mode,${extParams}){\n// 日期面板变化回调\nconsole.log('onPanelChange', date, mode);}",
},
{
name: 'onSelect',
template:
"onSelect(date,${extParams}){\n// 点击选择日期回调\nconsole.log('onSelect', date);}",
},
{
name: 'onChange',
template:
"onChange(date,${extParams}){\n// 日期变化回调\nconsole.log('onChange', date);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/calendar/snippets.ts
================================================
export default [
{
title: '日历',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/calendar-1.jpg',
schema: {
componentName: 'Calendar',
props: {},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/card/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Card',
title: '卡片',
category: '数据展示',
props: [
{
name: 'title',
title: { label: '卡片标题', tip: '卡片标题' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
// {
// name: 'actions',
// title: { label: '卡片操作组', tip: '卡片操作组,位置在卡片底部' },
// propType: { type: 'arrayOf', value: 'node' },
// },
// {
// name: 'headStyle',
// title: { label: '标题区域样式', tip: '自定义标题区域样式' },
// propType: 'object',
// },
// {
// name: 'bodyStyle',
// title: { label: '内容区域样式', tip: '内容区域自定义样式' },
// propType: 'object',
// },
{
name: 'bordered',
title: { label: '显示边框', tip: '是否有边框' },
propType: 'bool',
defaultValue: true,
},
{
name: 'cover',
title: { label: '卡片封面', tip: '卡片封面' },
propType: 'node',
},
{
name: 'extra',
title: { label: '额外元素', tip: '卡片右上角的操作区域' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'hoverable',
title: { label: '可浮起', tip: '鼠标移过时可浮起' },
propType: 'bool',
defaultValue: false,
},
{
name: 'loading',
title: {
label: 'loading',
tip: '当卡片内容还在加载中时,可以用 loading 展示一个占位',
},
propType: 'bool',
defaultValue: false,
},
{
name: 'size',
title: { label: '尺寸', tip: 'card 的尺寸' },
propType: { type: 'oneOf', value: ['default', 'small'] },
defaultValue: 'default',
},
{
name: 'type',
title: { label: '卡片类型', tip: '卡片类型' },
propType: { type: 'oneOf', value: ['default', 'inner'] },
defaultValue: 'default',
},
],
configure: {
component: { isContainer: true },
supports: {
style: true,
events: [
{
name: 'onTabChange',
template:
"onTabChange(key,${extParams}){\n// 页签切换的回调\nconsole.log('onTabChange', key);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/card/snippets.ts
================================================
export default [
{
title: '卡片',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/card-1.png',
schema: {
componentName: 'Card',
props: {
title: 'Default size card',
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/carousel/meta.ts
================================================
import { uuid } from '../_utils/utils';
import snippets from './snippets';
export default {
snippets,
componentName: 'Carousel',
title: '走马灯',
category: '数据展示',
props: [
{
name: 'afterChange',
title: { label: '切换面板的回调', tip: '切换面板的回调' },
propType: 'func',
},
{
name: 'autoplay',
title: { label: '是否自动切换', tip: '是否自动切换' },
propType: 'bool',
defaultValue: false,
},
{
name: 'beforeChange',
title: { label: '切换面板的回调', tip: '切换面板的回调' },
propType: 'func',
},
{
name: 'dotPosition',
title: {
label: '指示点位置',
tip: '面板指示点位置,可选 `top` `bottom` `left` `right`',
},
propType: {
type: 'oneOf',
value: ['top', 'bottom', 'left', 'right'],
},
},
{
name: 'dots',
title: {
label: '显示指示点',
tip: '是否显示面板指示点',
},
propType: { type: 'oneOfType', value: ['bool', 'object'] },
},
{
name: 'easing',
title: { label: '动画效果', tip: '动画效果' },
propType: 'string',
},
{
name: 'effect',
title: { label: '动画效果函数', tip: '动画效果函数' },
propType: { type: 'oneOf', value: ['scrollx', 'fade'] },
},
{
name: 'items',
title: '折叠项',
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'ObjectSetter',
initialValue: () => {
return {
key: uuid(),
};
},
},
},
},
extraProps: {
getValue(target, fieldValue) {
console.log('getValue', target.node.children.length);
const map = target.node.children.map((child) => {
const key = child.getPropValue('key') ? String(child.getPropValue('key')) : child.id;
return { key };
});
return map;
},
setValue(target, value) {
const { node } = target;
const map = {};
if (!Array.isArray(value)) {
value = [];
}
value.forEach((item) => {
const tabItem = Object.assign({}, item);
map[item.key] = tabItem;
});
node.children.mergeChildren(
(child) => {
const key = String(child.getPropValue('key'));
if (Object.hasOwnProperty.call(map, key)) {
delete map[key];
return false;
}
return true;
},
() => {
const items = [];
for (const key in map) {
if (Object.hasOwnProperty.call(map, key)) {
items.push({
componentName: 'Card',
props: map[key],
});
}
}
return items;
},
(child1, child2) => {
const a = value.findIndex(
(item) => String(item.key) === String(child1.getPropValue('key')),
);
const b = value.findIndex(
(item) => String(item.key) === String(child2.getPropValue('key')),
);
return a - b;
},
);
},
},
},
],
configure: {
supports: { style: true },
component: {
isContainer: true,
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/carousel/snippets.ts
================================================
export default [
{
title: '走马灯',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/carousel-1.jpg',
schema: {
componentName: 'Carousel',
children: [
{
componentName: 'Card',
props: {
key: 'panel-1',
},
},
{
componentName: 'Card',
props: {
key: 'panel-2',
},
},
],
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/cascader/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Cascader',
title: '级联选择',
category: '表单',
props: [
{
name: 'defaultValue',
title: { label: '默认的选中项', tip: '默认的选中项' },
propType: {
type: 'arrayOf',
value: { type: 'oneOfType', value: ['string', 'number'] },
},
},
{
name: 'value',
title: { label: '当前选中项', tip: '当前选中项' },
propType: {
type: 'arrayOf',
value: { type: 'oneOfType', value: ['string', 'number'] },
},
},
{
name: 'options',
title: { label: '选项数据', tip: '可选项数据源' },
setter: 'JsonSetter',
},
{
name: 'allowClear',
title: { label: '支持清除', tip: '是否允许清除' },
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter'
},
{
name: 'autoFocus',
title: { label: '自动聚焦', tip: '自动获取焦点' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter'
},
{
name: 'bordered',
title: { label: '显示边框', tip: '是否有边框' },
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter'
},
{
name: 'changeOnSelect',
title: {
label: '点选触发',
tip: '点选每级菜单选项值都会触发onChange',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter'
},
{
name: 'className',
title: { label: '自定义类名', tip: '自定义类名' },
propType: 'string',
setter: 'StringSetter'
},
{
name: 'disabled',
title: { label: '是否禁用', tip: '是否为禁用状态' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter'
},
{
name: 'expandTrigger',
title: { label: '菜单触发方式', tip: '触发次级菜单的展开的方式' },
propType: { type: 'oneOf', value: ['click', 'hover'] },
},
{
name: 'notFoundContent',
title: { label: '无数据展示', tip: '无数据' },
propType: 'string',
setter: 'StringSetter'
},
{
name: 'placeholder',
title: { label: '输入框占位文本', tip: '输入框占位文本' },
propType: 'string',
setter: 'StringSetter'
},
{
name: 'placement',
title: { label: '浮层预设位置', tip: '浮层预设位置' },
propType: {
type: 'oneOf',
value: ['bottomLeft', 'bottomRight', 'topLeft', 'topRight'],
},
},
{
name: 'showSearch',
title: { label: '支持搜索', tip: '在选择框中显示搜索框' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter'
},
{
name: 'size',
title: { label: '尺寸', tip: '输入框大小' },
propType: { type: 'oneOf', value: ['large', 'middle', 'small'] },
setter: {
componentName: 'SelectSetter',
props: {
options: [
{
title: '大',
value: 'large',
},
{
title: '中',
value: 'middle',
},
{
title: '小',
value: 'small',
},
],
},
},
defaultValue: 'middle',
},
{
name: 'style',
title: { label: '自定义样式', tip: '自定义样式' },
propType: 'object',
},
{
name: 'onChange',
title: { label: '选择完成后的回调', tip: '选择完成后的回调' },
propType: 'func',
},
{
name: 'onPopupVisibleChange',
title: { label: '显示/隐藏浮层的回调', tip: '显示/隐藏浮层的回调' },
propType: 'func',
},
],
configure: {
supports: {
style: true,
events: [
{
name: 'onChange',
template:
"onChange(value,selectedOptions,${extParams}){\n// 选择完成后的回调\nconsole.log('onChange', value, selectedOptions);}",
},
{
name: 'onPopupVisibleChange',
template:
"onPopupVisibleChange(value,selectedOptions,${extParams}){\n// 显示/隐藏浮层的回调\nconsole.log('onPopupVisibleChange', value, selectedOptions);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/cascader/snippets.ts
================================================
export default [
{
title: '级联选择',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/cascader-1.png',
schema: {
componentName: 'Cascader',
props: {
options: [
{
value: 'zhejiang',
label: 'Zhejiang',
children: [
{
value: 'hangzhou',
label: 'Hangzhou',
children: [
{
value: 'xihu',
label: 'West Lake',
},
],
},
],
},
{
value: 'jiangsu',
label: 'Jiangsu',
children: [
{
value: 'nanjing',
label: 'Nanjing',
children: [
{
value: 'zhonghuamen',
label: 'Zhong Hua Men',
},
],
},
],
},
],
placeholder: '请选择',
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/checkbox/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Checkbox',
title: '多选框',
category: '表单',
props: [
{
name: 'children',
title: { label: '内容', tip: '内容' },
propType: 'string',
setter: 'StringSetter',
supportVariable: true
},
{
name: 'autoFocus',
title: { label: '自动聚焦', tip: '自动获取焦点' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'checked',
title: { label: '当前值', tip: '指定当前是否选中' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'defaultChecked',
title: { label: '默认值', tip: '初始是否选中' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'disabled',
title: { label: '是否禁用', tip: '是否为禁用状态' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'indeterminate',
title: { label: '不确定状态', tip: 'indeterminate状态' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'onChange',
title: { label: '变化时回调函数', tip: '变化时回调函数' },
propType: 'func',
},
],
configure: {
supports: {
style: true,
events: [
{
name: 'onChange',
template:
"onChange(event,${extParams}){\n// 变化时回调函数\nconsole.log('onChange', event);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/checkbox/snippets.ts
================================================
export default [
{
title: '多选框',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/checkbox-1.png',
schema: {
componentName: 'Checkbox',
props: {
children: 'Checkbox',
},
},
},
{
title: '多选框组',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/checkbox-group-1.png',
schema: {
componentName: 'Checkbox.Group',
props: {
options: [
{
label: 'A',
value: 'A',
},
{
label: 'B',
value: 'B',
},
{
label: 'C',
value: 'C',
},
],
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/checkbox.group/meta.ts
================================================
import { uuid } from '../_utils/utils';
export default {
componentName: 'Checkbox.Group',
title: '多选框组',
category: '表单',
props: [
{
name: 'defaultValue',
title: { label: '默认值', tip: '默认选中值' },
propType: { type: 'arrayOf', value: 'string' },
defaultValue: [],
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'StringSetter',
}
}
},
supportVariable: true
},
{
name: 'value',
title: { label: '当前值', tip: '当前选中的选项' },
propType: { type: 'arrayOf', value: 'string' },
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'StringSetter',
}
}
},
supportVariable: true
},
{
name: 'disabled',
title: { label: '是否禁用', tip: '是否为禁用状态' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'name',
title: { label: 'name属性', tip: 'name属性' },
propType: 'string',
setter: 'StringSetter',
supportVariable: true
},
{
name: 'options',
title: { label: '指定可选项', tip: '指定可选项' },
propType: {
type: 'arrayOf',
value: {
type: 'shape',
value: [
{
name: 'label',
description: '选项名',
propType: 'string',
defaultValue: '选项名',
},
{
name: 'value',
description: '选项值',
propType: 'string',
defaultValue: '选项值',
},
{
name: 'disabled',
description: '是否禁用',
propType: 'bool',
defaultValue: false,
},
],
},
},
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'label',
title: '选项名',
setter: 'StringSetter',
isRequired: true
},
{
name: 'value',
title: '选项值',
setter: 'StringSetter',
isRequired: true
},
{
name: 'disabled',
title: '是否禁用',
setter: 'BoolSetter',
},
],
},
},
initialValue: () => {
return {
label: '选项名',
value: uuid(),
disabled: false,
};
},
},
},
},
supportVariable: true
},
{
name: 'onChange',
title: { label: '变化时回调函数', tip: '变化时回调函数' },
propType: 'func',
},
],
configure: {
supports: {
style: true,
events: [
{
name: 'onChange',
template:
"onChange(checkedValue,${extParams}){\n// 变化时回调函数\nconsole.log('onChange', checkedValue);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/collapse/meta.ts
================================================
import { uuid } from '../_utils/utils';
import snippets from './snippets';
export default {
snippets,
componentName: 'Collapse',
title: '折叠面板',
category: '数据展示',
props: [
{
name: 'bordered',
title: { label: '显示边框', tip: '带边框风格的折叠面板' },
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'accordion',
title: { label: '手风琴模式', tip: '手风琴模式' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'collapsible',
title: '可折叠触发区域',
propType: {
type: 'oneOf',
value: ['-', 'header', 'disabled'],
},
},
// {
// name: 'expandIcon',
// title: { label: '自定义切换图标', tip: '自定义切换图标' },
// propType: 'func',
// },
{
name: 'expandIconPosition',
title: { label: '图标位置', tip: '设置图标位置' },
propType: { type: 'oneOf', value: ['left', 'right'] },
},
{
name: 'destroyInactivePanel',
title: { label: '隐藏时销毁', tip: '销毁折叠隐藏的面板' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'ghost',
title: { label: '透明无边框', tip: '使折叠面板透明且无边框' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'collapses',
title: '折叠项',
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'key',
title: 'key',
setter: 'StringSetter',
initialValue: (val) => val || uuid()
},
{
name: 'header',
title: '面板头内容',
setter: 'StringSetter',
initialValue: '折叠项'
},
],
},
},
initialValue: () => {
return {
key: uuid(),
header: '折叠项',
showArrow: true,
collapsible: undefined,
forceRender: false,
};
},
},
},
},
extraProps: {
getValue(target, fieldValue) {
console.log('getValue', target.node.children.length);
const map = target.node.children.map((child) => {
const key = child.getPropValue('key') ? String(child.getPropValue('key')) : child.id;
return {
key,
header: child.getPropValue('header'),
showArrow: child.getPropValue('showArrow'),
collapsible: child.getPropValue('collapsible'),
forceRender: child.getPropValue('forceRender'),
};
});
return map;
},
setValue(target, value) {
const { node } = target;
const map = {};
// console.log('setValue',value);
if (!Array.isArray(value)) {
value = [];
}
value.forEach((item) => {
const tabItem = Object.assign({}, item);
map[item.key] = tabItem;
});
node.children.mergeChildren(
(child) => {
const key = String(child.getPropValue('key'));
if (Object.hasOwnProperty.call(map, key)) {
child.setPropValue('header', map[key].header);
child.setPropValue('showArrow', map[key].showArrow);
child.setPropValue('collapsible', map[key].collapsible);
child.setPropValue('forceRender', map[key].forceRender);
delete map[key];
return false;
}
return true;
},
() => {
const items = [];
for (const key in map) {
if (Object.hasOwnProperty.call(map, key)) {
items.push({
componentName: 'Collapse.Panel',
props: map[key],
});
}
}
return items;
},
(child1, child2) => {
const a = value.findIndex(
(item) => String(item.key) === String(child1.getPropValue('key')),
);
const b = value.findIndex(
(item) => String(item.key) === String(child2.getPropValue('key')),
);
return a - b;
},
);
},
},
},
{
name: 'defaultActiveKey',
title: { label: '初始化选中面板的 key', tip: '初始化选中面板的 key' },
propType: {
type: 'oneOfType',
value: [
'string',
{ type: 'arrayOf', value: 'string' },
'number',
{ type: 'arrayOf', value: 'number' },
],
},
},
{
name: 'activeKey',
title: {
label: '当前激活 tab 面板的 key',
tip: '当前激活 tab 面板的 key',
},
propType: {
type: 'oneOfType',
value: [
'string',
{ type: 'arrayOf', value: 'string' },
'number',
{ type: 'arrayOf', value: 'number' },
],
},
},
],
configure: {
supports: {
style: true,
events: [
{
name: 'onChange',
template: "onChange(${extParams}){\n// 切换面板的回调\nconsole.log('onChange');}",
},
],
},
component: {
isContainer: true,
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/collapse/snippets.ts
================================================
export default [
{
title: '折叠面板',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/collapse-1.png',
schema: {
componentName: 'Collapse',
props: {
defaultActiveKey: ['collapse-item-1'],
},
children: [
{
componentName: 'Collapse.Panel',
props: {
header: '折叠项1',
key: 'collapse-item-1',
},
},
{
componentName: 'Collapse.Panel',
props: {
header: '折叠项2',
key: 'collapse-item-2',
},
},
],
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/collapse.pane/meta.ts
================================================
// FIXME: 选中tabPane点复制,会出问题,因为复制的组件key一样
export default {
componentName: 'Collapse.Panel',
title: '折叠项',
category: '',
props: [
{
name: 'key',
title: {
label: 'key',
tip: 'key',
},
propType: 'string',
setter: 'StringSetter',
supportVariable: true
},
{
name: 'header',
title: {
label: '标题',
tip: '标题',
},
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'extra',
title: {
label: '右上角内容',
tip: '自定义渲染每个面板右上角的内容',
},
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'collapsible',
title: '可折叠触发区域',
propType: {
type: 'oneOf',
value: ['-', 'header', 'disabled'],
},
},
{
name: 'showArrow',
title: {
label: '显示折叠图标',
tip: '是否展示当前面板上的箭头',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'forceRender',
title: {
label: '隐藏时渲染',
tip: '被隐藏时是否渲染 DOM 结构',
},
propType: 'bool',
setter: 'BoolSetter',
supportVariable: true
},
],
configure: {
component: {
isContainer: true,
nestingRule: {
parentWhitelist: ['Collapse'],
},
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/comment/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Comment',
title: '评论',
category: '数据展示',
props: [
{
name: 'actions',
title: {
label: '操作列表',
tip: '在评论内容下面呈现的操作项列表',
},
propType: { type: 'arrayOf', value: 'node' },
},
{
name: 'author',
title: { label: '要显示为注释作者的元素', tip: '要显示为注释作者的元素' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'avatar',
title: {
label: '头像元素',
tip: '要显示为评论头像的元素 - 通常是 antd Avatar 或者 src',
},
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'children',
title: {
label: '子节点',
tip: '嵌套注释应作为注释的子项提供',
},
propType: 'node',
},
{
name: 'content',
title: { label: '评论的主要内容', tip: '评论的主要内容' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'datetime',
title: { label: '展示时间描述', tip: '展示时间描述' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
],
configure: { supports: { style: true } },
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/comment/snippets.ts
================================================
export default [
{
title: '评论',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/comment-1.png',
schema: {
componentName: 'Comment',
props: {},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/config-provider/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'ConfigProvider',
title: '全局化配置',
category: '其他',
props: [
{
name: 'autoInsertSpaceInButton',
title: {
label: '按钮插入空格',
tip: '自动在按钮中 2 个汉字之间插入空格',
},
propType: 'bool',
defaultValue: true,
},
{
name: 'componentSize',
title: { label: '组件大小', tip: '设置 antd 组件大小' },
propType: { type: 'oneOf', value: ['small', 'middle', 'large'] },
default: 'middle',
},
{
name: 'csp',
title: {
label: 'CSP配置',
tip: '设置Content Security Policy配置',
},
propType: 'object',
setter: 'JsonSetter',
},
{
name: 'form',
title: {
label: 'Form通用属性',
tip: '设置 Form 组件的通用属性',
},
propType: 'object',
setter: 'JsonSetter',
},
{
name: 'input',
title: {
label: 'Input通用属性',
tip: '设置 Input 组件的通用属性',
},
propType: 'object',
setter: 'JsonSetter',
},
// {
// name: 'renderEmpty',
// title: { label: '自定义组件空状态', tip: '自定义组件空状态' },
// propType: 'func',
// },
{
name: 'getPopupContainer',
title: {
label: '弹出框父节点',
tip: '弹出框渲染父节点,默认渲染到 body 上。',
},
propType: 'func',
},
{
name: 'getTargetContainer',
title: {
label: '滚动监听容器',
tip: '配置 Affix、Anchor 滚动监听容器。',
},
propType: 'func',
},
{
name: 'locale',
title: { label: '语言', tip: '语言' },
propType: {
type: 'oneOf',
value: ['zh-CN', 'en-US'],
},
defaultValue: 'en-US',
},
{
name: 'prefixCls',
title: {
label: '样式前缀',
tip: '设置统一样式前缀。`注意:这将不会应用由 antd 提供的默认样式`',
},
propType: 'string',
},
{
name: 'pageHeader',
title: {
label: '统一设置 PageHeader 的 ghost',
tip: '统一设置 PageHeader 的 ghost',
},
propType: 'object',
setter: 'JsonSetter',
},
{
name: 'direction',
title: { label: '文本方向', tip: '设置文本展示方向' },
propType: { type: 'oneOf', value: ['ltr', 'rtl'] },
},
{
name: 'space',
title: { label: '设置 Space 的 尺寸', tip: '设置 Space 的 `size`' },
propType: {
type: 'oneOf',
value: ['small', 'middle', 'large', 'number'],
},
},
{
name: 'virtual',
title: {
label: '虚拟滚动',
tip: '设置 `false` 时关闭虚拟滚动',
},
propType: 'bool',
defaultValue: true,
},
{
name: 'dropdownMatchSelectWidth',
title: { label: '下拉菜单和选择器同宽', tip: '下拉菜单和选择器同宽' },
propType: { type: 'oneOfType', value: ['bool', 'number'] },
},
],
configure: { component: { isContainer: true } },
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/config-provider/snippets.ts
================================================
export default [
{
title: '全局化配置',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/config-provider-1.jpg',
schema: {
componentName: 'ConfigProvider',
props: {},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/date-picker/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'DatePicker',
title: '日期选择框',
category: '表单',
props: [
{
title: '值设置',
display: 'block',
type: 'group',
items: [
{
name: 'defaultValue',
title: {
label: '默认值',
tip: 'defaultValue | 默认值',
},
propType: 'date',
setter: 'DateSetter',
},
{
name: 'value',
title: {
label: '当前值',
tip: 'value | 当前值',
},
propType: 'date',
setter: 'DateSetter',
},
],
},
{
title: '功能选项',
display: 'block',
type: 'group',
items: [
{
name: 'size',
title: {
label: '尺寸',
tip: 'size | 输入框大小',
},
propType: {
type: 'oneOf',
value: ['large', 'middle', 'small'],
},
setter: {
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '大',
value: 'large',
},
{
title: '中',
value: 'middle',
},
{
title: '小',
value: 'small',
},
],
},
},
defaultValue: 'middle',
},
{
name: 'picker',
title: {
label: '日期类型',
tip: 'picker | 选择器日期类型',
},
setter: {
componentName: 'SelectSetter',
props: {
options: [
{
title: '日期',
value: 'date',
},
{
title: '周',
value: 'week',
},
{
title: '月份',
value: 'month',
},
{
title: '季度',
value: 'quarter',
},
{
title: '年份',
value: 'year',
},
],
},
},
propType: {
type: 'oneOf',
value: ['date', 'week', 'month', 'quarter', 'year'],
},
},
{
name: 'format',
title: {
label: '日期格式',
tip: 'format | 设置日期格式',
},
propType: 'string',
defaultValue: 'YYYY-MM-DD',
setter: 'StringSetter',
},
{
name: 'placeholder',
title: {
label: '提示文字',
tip: 'placeholder | 输入框提示文字',
},
propType: 'string',
setter: 'StringSetter',
},
{
name: 'allowClear',
title: {
label: '支持清除',
tip: 'allowClear | 是否允许清除',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'bordered',
title: {
label: '显示边框',
tip: 'bordered | 是否有边框',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'showToday',
title: {
label: '展示今天按钮',
tip: 'showToday | 是否展示今天按钮',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'autoFocus',
title: {
label: '自动聚焦',
tip: 'autoFocus | 自动获取焦点',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
{
name: 'disabled',
title: {
label: '是否禁用',
tip: 'disabled | 是否为禁用状态',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
{
name: 'inputReadOnly',
title: {
label: '是否只读',
tip: 'inputReadOnly | 避免在移动设备上打开虚拟键盘',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
{
name: 'showTime',
title: {
label: '时间选择',
tip: 'showTime | 是否能选择时间',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
],
},
{
title: '高级',
display: 'block',
type: 'group',
items: [
{
name: 'disabledDate',
title: {
label: '不可选日期',
tip: 'disabledDate | 不可选择的日期',
},
propType: 'func',
setter: [
{
componentName: 'FunctionSetter',
props: {
template:
'disabledDate(currentDate,${extParams}){\n// 设置不可选择的日期\nreturn true\n}',
},
},
'VariableSetter',
],
},
],
},
// {
// name: 'dropdownClassName',
// title: {
// label: '额外的弹出日历 className',
// tip: '额外的弹出日历 className',
// },
// setter: 'ClassNameSetter',
// },
// {
// name: 'popupStyle',
// title: { label: '额外的弹出日历样式', tip: '额外的弹出日历样式' },
// setter: 'JsonSetter',
// },
// {
// name: 'suffixIcon',
// title: { label: '自定义的选择框后缀图标', tip: '自定义的选择框后缀图标' },
// setter: 'IconSetter',
// },
// {
// name: 'style',
// title: { label: '自定义输入框样式', tip: '自定义输入框样式' },
// setter: 'JsonSetter',
// },
],
configure: {
supports: {
style: true,
events: [
{
name: 'onChange',
template:
"onChange(date,dateString,${extParams}){\n// 时间发生变化的回调\nconsole.log('onChange',date,dateString);}",
},
{
name: 'onOpenChange',
template:
"onOpenChange(open,${extParams}){\n// 弹出日历和关闭日历的回调\nconsole.log('onOpenChange',open);}",
},
{
name: 'onPanelChange',
template:
"onPanelChange(value,mode,${extParams}){\n// 日历面板切换的回调\nconsole.log('onPanelChange',value,mode);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/date-picker/snippets.ts
================================================
export default [
{
title: '选择日期',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date-picker-1.png',
schema: {
componentName: 'DatePicker',
props: {},
},
},
{
title: '选择周',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date-picker-2.png',
schema: {
componentName: 'DatePicker',
props: {
picker: 'week',
},
},
},
{
title: '选择月份',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date-picker-3.png',
schema: {
componentName: 'DatePicker',
props: {
picker: 'month',
},
},
},
{
title: '选择季度',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date-picker-4.png',
schema: {
componentName: 'DatePicker',
props: {
picker: 'quarter',
},
},
},
{
title: '选择年份',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date-picker-5.png',
schema: {
componentName: 'DatePicker',
props: {
picker: 'year',
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/date-picker.range-picker/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'DatePicker.RangePicker',
title: '日期区间选择',
category: '表单',
props: [
{
title: '值设置',
display: 'block',
type: 'group',
items: [
{
name: 'defaultValue',
title: {
label: '默认值',
tip: 'defaultValue | 默认值',
},
propType: 'object',
setter: 'JsonSetter',
},
{
name: 'value',
title: {
label: '当前值',
tip: 'value | 当前值',
},
propType: 'object',
setter: 'JsonSetter',
},
{
name: 'defaultPickerValue',
title: {
label: '默认面板日期',
tip: 'defaultPickerValue | 默认面板日期',
},
propType: 'object',
setter: 'JsonSetter',
},
],
},
{
title: '功能选项',
display: 'block',
type: 'group',
items: [
{
name: 'size',
title: {
label: '尺寸',
tip: 'size | 输入框大小,large 高度为 40px,small 为 24px,默认是 32px',
},
propType: {
type: 'oneOf',
value: ['large', 'middle', 'small'],
},
setter: {
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '大',
value: 'large',
},
{
title: '中',
value: 'middle',
},
{
title: '小',
value: 'small',
},
],
},
},
defaultValue: 'middle',
},
{
name: 'picker',
title: {
label: '选择器类型',
tip: 'picker | 设置选择器类型',
},
propType: {
type: 'oneOf',
value: ['date', 'week', 'month', 'quarter', 'year'],
},
defaultValue: 'date',
setter: {
componentName: 'SelectSetter',
props: {
options: [
{
title: '日期',
value: 'date',
},
{
title: '周',
value: 'week',
},
{
title: '月份',
value: 'month',
},
{
title: '季度',
value: 'quarter',
},
{
title: '年份',
value: 'year',
},
],
},
},
},
{
name: 'mode',
title: {
label: '面板模式',
tip: 'mode | 日期面板的状态',
},
propType: {
type: 'oneOf',
value: ['time', 'date', 'month', 'year', 'decade'],
},
setter: {
componentName: 'SelectSetter',
props: {
options: [
{
title: '日期',
value: 'date',
},
{
title: '周',
value: 'week',
},
{
title: '月份',
value: 'month',
},
{
title: '年份',
value: 'year',
},
{
title: '十年间隔',
value: 'decade',
},
],
},
},
},
{
name: 'format',
title: {
label: '日期格式',
tip: 'format | 展示的日期格式,配置参考 moment.js',
},
propType: 'string',
setter: 'StringSetter',
},
{
name: 'placeholder',
title: {
label: '提示文字',
tip: 'placeholder | 输入框提示文字',
},
propType: 'string',
setter: 'StringSetter',
},
{
name: 'allowClear',
title: {
label: '支持清除',
tip: 'allowClear | 是否允许清除',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'bordered',
title: {
label: '显示边框',
tip: 'bordered | 是否有边框',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'autoFocus',
title: {
label: '自动聚焦',
tip: 'autoFocus | 自动获取焦点',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
{
name: 'disabled',
title: {
label: '是否禁用',
tip: 'disabled | 是否为禁用状态',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
// {
// name: 'open',
// title: {
// label: '弹层是否展开',
// tip: 'open | 控制弹层是否展开',
// },
// propType: 'bool',
// setter: 'BoolSetter',
// },
{
name: 'showTime',
title: {
label: '时间选择',
tip: 'showTime | 时间选择',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
{
name: 'inputReadOnly',
title: {
label: '输入框只读',
tip: 'inputReadOnly | 设置输入框为只读(避免在移动设备上打开虚拟键盘)',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
],
},
{
title: '高级',
display: 'block',
type: 'group',
items: [
{
name: 'ranges',
title: {
label: '预设范围',
tip: 'ranges | 预设时间范围快捷选择',
},
propType: 'object',
setter: 'JsonSetter',
},
{
name: 'disabledDate',
title: {
label: '不可选日期',
tip: 'disabledDate | 不可选择的日期',
},
propType: 'func',
setter: [
{
componentName: 'FunctionSetter',
props: {
template:
'disabledDate(currentDate,${extParams}){\n// 设置不可选择的日期\nreturn true\n}',
},
},
'VariableSetter',
],
},
],
},
// {
// name: 'renderExtraFooter',
// title: { label: '在面板中添加额外的页脚', tip: '在面板中添加额外的页脚' },
// propType: 'func',
// },
// {
// name: 'className',
// title: { label: '选择器 className', tip: '选择器 className' },
// propType: 'string',
// },
// {
// name: 'dropdownClassName',
// title: {
// label: '额外的弹出日历 className',
// tip: '额外的弹出日历 className',
// },
// propType: 'string',
// },
// {
// name: 'getPopupContainer',
// title: {
// label: '定义浮层的容器,默认为 body 上新建 div',
// tip: '定义浮层的容器,默认为 body 上新建 div',
// },
// propType: 'func',
// },
// {
// name: 'locale',
// title: { label: '国际化配置', tip: '国际化配置' },
// propType: 'object',
// },
// {
// name: 'popupStyle',
// title: { label: '额外的弹出日历样式', tip: '额外的弹出日历样式' },
// propType: 'CSSProperties',
// defaultValue: '{}',
// },
// {
// name: 'style',
// title: { label: '自定义输入框样式', tip: '自定义输入框样式' },
// propType: 'CSSProperties',
// defaultValue: '{}',
// },
],
configure: {
supports: {
style: true,
events: [
{
name: 'onChange',
template:
"onChange(dates,dateStrings,${extParams}){\n// 日期范围发生变化的回调\nconsole.log('onChange',dates,dateStrings);}",
},
{
name: 'onOpenChange',
template:
"onOpenChange(open,${extParams}){\n// 弹出日历和关闭日历的回调\nconsole.log('onOpenChange',open);}",
},
{
name: 'onPanelChange',
template:
"onPanelChange(value,mode,${extParams}){\n// 日历面板切换的回调\nconsole.log('onPanelChange',value,mode);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/date-picker.range-picker/snippets.ts
================================================
export default [
{
title: '日期区间',
screenshot:
'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date-picker-range-picker-1.png',
schema: {
componentName: 'DatePicker.RangePicker',
props: {},
},
},
{
title: '周区间',
screenshot:
'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date-picker-range-picker-2.png',
schema: {
componentName: 'DatePicker.RangePicker',
props: {
picker: 'week',
},
},
},
{
title: '月区间',
screenshot:
'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date-picker-range-picker-3.png',
schema: {
componentName: 'DatePicker.RangePicker',
props: {
picker: 'month',
},
},
},
{
title: '年区间',
screenshot:
'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date-picker-range-picker-4.png',
schema: {
componentName: 'DatePicker.RangePicker',
props: {
picker: 'year',
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/descriptions/meta.ts
================================================
import { uuid } from '../_utils/utils';
import snippets from './snippets';
export default {
snippets,
componentName: 'Descriptions',
title: '描述列表',
category: '数据展示',
props: [
{
name: 'title',
title: {
label: '标题',
tip: '描述列表的标题,显示在最顶部',
},
propType: {
type: 'oneOfType',
value: ['string', 'node'],
},
},
{
name: 'items',
title: {
label: '列表项',
tip: '列表项',
},
setter: {
componentName: 'ArraySetter',
props: {
itemSetter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'key',
title: 'key',
setter: 'StringSetter',
initialValue: (val) => val || uuid(),
condition: () => false,
},
{
name: 'label',
title: '标题',
setter: 'StringSetter',
initialValue: '列表项',
},
{
name: 'span',
title: '所占列数',
setter: 'NumberSetter',
initialValue: 1,
},
{
name: 'children',
title: '内容',
setter: {
componentName: 'SlotSetter',
initialValue: {
type: 'JSSlot',
value: [],
},
},
},
],
},
},
initialValue: () => {
return {
key: uuid(),
label: '标签项',
span: 1,
children: {
type: 'JSSlot',
value: [],
},
};
},
},
},
},
extraProps: {
getValue(target, fieldValue) {
const map = target.node.children.map((child) => {
const key = child.getPropValue('key') ? String(child.getPropValue('key')) : child.id;
return {
key,
label: child.getPropValue('label'),
span: child.getPropValue('span'),
children: child.getPropValue('children'),
};
});
return map;
},
setValue(target, value) {
const { node } = target;
const map = {};
if (!Array.isArray(value)) {
value = [];
}
value.forEach((item) => {
const tabItem = Object.assign({}, item);
map[item.key] = tabItem;
});
node.children.mergeChildren(
(child) => {
const key = String(child.getPropValue('key'));
if (Object.hasOwnProperty.call(map, key)) {
child.setPropValue('label', map[key].label);
child.setPropValue('span', map[key].span);
child.setPropValue('children', map[key].children);
delete map[key];
return false;
}
return true;
},
() => {
const items = [];
for (const key in map) {
if (Object.hasOwnProperty.call(map, key)) {
items.push({
componentName: 'Descriptions.Item',
props: map[key],
});
}
}
return items;
},
(child1, child2) => {
const a = value.findIndex(
(item) => String(item.key) === String(child1.getPropValue('key')),
);
const b = value.findIndex(
(item) => String(item.key) === String(child2.getPropValue('key')),
);
return a - b;
},
);
},
// getValue(target, fieldValue) {
// // const node = target.nodes[0];
// // const children = node.getChildren();
// const map = target.node.children.map(child => {
// return {
// key: child.getPropValue('key') || uuid(),
// label: child.getPropValue('label'),
// span: child.getPropValue('span'),
// children: child.getPropValue('children'),
// };
// });
// return map;
// },
// setValue(target, value) {
// const node = target.node;
// if (!Array.isArray(value)) {
// value = [];
// }
// node.children.mergeChildren(
// () => true,
// () => {
// return value.map(item => ({
// componentName: 'Descriptions.Item',
// props: Object.assign({}, item),
// }));
// }
// );
// },
},
},
{
name: 'bordered',
title: { label: '显示边框', tip: '是否展示边框' },
propType: 'bool',
defaultValue: false,
},
{
name: 'column',
title: {
label: '列数',
tip: '一行的列表项数量',
},
propType: 'number',
defaultValue: 3,
},
{
name: 'size',
title: {
label: '尺寸',
tip:
'设置列表的大小。可以设置为 `middle` 、`small`, 或不填(只有设置 `bordered={true}` 生效)',
},
propType: { type: 'oneOf', value: ['default', 'middle', 'small'] },
defaultValue: 'middle',
},
{
name: 'layout',
title: { label: '布局方向', tip: '描述布局' },
propType: { type: 'oneOf', value: ['horizontal', 'vertical'] },
defaultValue: 'horizontal',
},
{
name: 'colon',
title: {
label: '展示冒号',
tip: '配置 `Descriptions.Item` 的 `colon` 的默认值',
},
propType: 'bool',
defaultValue: true,
},
],
configure: {
supports: { style: true },
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/descriptions/snippets.ts
================================================
export default [
{
title: '描述列表',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/descriptions-1.jpg',
schema: {
componentName: 'Descriptions',
props: {
title: '用户信息',
items: [
{
label: '用户名',
children: 'Mo Yao',
},
],
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/descriptions.item/meta.ts
================================================
export default {
componentName: 'Descriptions.Item',
title: '描述列表项',
props: [
{
name: 'key',
title: {
label: 'key',
tip: 'key',
},
propType: 'string',
},
{
name: 'tab',
title: {
label: '标题',
tip: '标题',
},
propType: 'string',
},
],
configure: {
component: { isContainer: true },
supports: { style: true },
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/divider/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Divider',
title: '分割线',
category: '布局',
props: [
{
name: 'className',
title: { label: '分割线样式类', tip: '分割线样式类' },
propType: 'string',
},
{
name: 'dashed',
title: { label: '是否虚线', tip: '是否虚线' },
propType: 'bool',
defaultValue: false,
},
{
name: 'orientation',
title: { label: '标题位置', tip: '分割线标题的位置' },
propType: { type: 'oneOf', value: ['left', 'right', 'center'] },
},
{
name: 'orientationMargin',
title: {
label: '标题边距',
tip:
'标题和最近 left/right 边框之间的距离,去除了分割线,同时 orientation 必须为 left 或 right',
},
propType: { type: 'oneOfType', value: ['string', 'number'] },
},
{
name: 'style',
title: { label: '分割线样式对象', tip: '分割线样式对象' },
propType: 'object',
},
{
name: 'type',
title: { label: '方向', tip: '水平还是垂直类型' },
propType: { type: 'oneOf', value: ['horizontal', 'vertical'] },
},
{
name: 'plain',
title: {
label: '普通正文样式',
tip: '文字是否显示为普通正文样式',
},
propType: 'bool',
defaultValue: false,
},
],
configure: {
component: {
isContainer: true,
},
supports: { style: true, className: true },
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/divider/snippets.ts
================================================
export default [
{
title: '分割线',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/divider-1.png',
schema: {
componentName: 'Divider',
props: {},
},
},
{
title: '带文字分割线',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/divider-2.png',
schema: {
componentName: 'Divider',
props: {
children: [
{
componentName: 'Typography.Text',
props: {
children: '分割文字',
},
},
],
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/drawer/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Drawer',
title: '抽屉',
category: '反馈',
props: [
{
title: '基础',
display: 'block',
type: 'group',
items: [
{
name: 'open',
title: { label: '是否可见', tip: 'open | Drawer 是否可见' },
propType: 'bool',
setter: 'BoolSetter',
},
{
name: 'title',
title: { label: '标题', tip: 'title | 标题' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
setter: [
'StringSetter',
{
componentName: 'SlotSetter',
title: '标题插槽',
initialValue: {
type: 'JSSlot',
value: [],
},
},
'VariableSetter',
],
},
],
},
{
title: '外观',
display: 'block',
type: 'group',
items: [
{
name: 'placement',
title: { label: '位置', tip: 'placement | 抽屉的显示位置' },
propType: {
type: 'oneOf',
value: ['top', 'right', 'bottom', 'left'],
},
defaultValue: 'right',
setter: {
componentName: 'SelectSetter',
props: {
options: [
{
title: '上方',
value: 'top',
},
{
title: '右侧',
value: 'right',
},
{
title: '下方',
value: 'bottom',
},
{
title: '左侧',
value: 'left',
},
],
},
},
},
{
name: 'size',
title: { label: '大小', tip: 'size | 抽屉的大小' },
propType: { type: 'oneOf', value: ['default', 'large'] },
defaultValue: 'default',
setter: {
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '默认',
value: 'default',
},
{
title: '超大',
value: 'large',
},
],
},
},
},
{
name: 'width',
title: { label: '宽度', tip: 'width | 宽度' },
propType: { type: 'oneOfType', value: ['string', 'number'] },
setter: ['StringSetter', 'NumberSetter', 'VariableSetter'],
},
{
name: 'height',
title: {
label: '高度',
tip: 'height | 高度, 在 placement 为 top 或 bottom 时使用',
},
propType: { type: 'oneOfType', value: ['string', 'number'] },
setter: ['StringSetter', 'NumberSetter', 'VariableSetter'],
},
{
name: 'zIndex',
title: { label: 'z-index', tip: '设置 Drawer 的 `z-index`' },
propType: 'number',
setter: 'NumberSetter',
},
],
},
{
title: '功能',
display: 'block',
type: 'group',
items: [
{
name: 'mask',
title: { label: '显示遮罩', tip: 'mask | 是否显示遮罩' },
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'maskClosable',
title: {
label: '点击遮罩关闭',
tip: 'maskClosable | 点击遮罩是否关闭抽屉',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'autoFocus',
title: {
label: '自动获得焦点',
tip: 'autoFocus | 抽屉展开后是否将焦点切换至其 Dom 节点',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'keyboard',
title: {
label: '键盘Esc关闭',
tip: 'keyboard | 是否支持键盘按 Esc 关闭',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'destroyOnClose',
title: {
label: '关闭时销毁',
tip: 'destroyOnClose | 关闭时销毁 Drawer 里的子元素',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
{
name: 'closable',
title: {
label: '关闭按钮',
tip: 'closable | 是否显示左上角的关闭按钮',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'forceRender',
title: { label: '预渲染', tip: 'forceRender | 预渲染 Drawer 内元素' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
],
},
{
title: '插槽扩展',
display: 'block',
type: 'group',
items: [
{
name: 'closeIcon',
title: { label: '关闭图标', tip: 'closeIcon | 自定义关闭图标' },
propType: 'node',
setter: {
componentName: 'SlotSetter',
title: '关闭图标插槽',
initialValue: {
type: 'JSSlot',
value: [
{
componentName: 'Icon',
props: {
type: 'CloseOutlined',
size: 16
},
},
],
},
},
},
{
name: 'extra',
title: { label: '操作区域', tip: 'extra | 抽屉右上角的操作区域' },
propType: 'node',
setter: {
componentName: 'SlotSetter',
title: '操作区域插槽',
initialValue: {
type: 'JSSlot',
value: [],
},
},
},
{
name: 'footer',
title: { label: '抽屉的页脚', tip: 'footer | 抽屉的页脚' },
propType: 'node',
setter: {
componentName: 'SlotSetter',
title: '抽屉页脚插槽',
initialValue: {
type: 'JSSlot',
value: [],
},
},
},
],
},
{
title: '其它',
display: 'block',
type: 'group',
items: [
{
name: 'className',
title: { label: '容器类名', tip: 'className | 对话框外层容器的类名' },
propType: 'string',
setter: 'StringSetter',
},
{
name: 'drawerStyle',
title: '弹出层样式',
type: 'group',
extraProps: {
display: 'entry',
},
items: [
{
name: 'drawerStyle',
title: {
label: '样式设置',
tip: 'drawerStyle | 用于设置 Drawer 弹出层的样式',
},
setter: 'StyleSetter',
extraProps: {
display: 'block',
},
},
],
},
{
name: 'contentWrapperStyle',
title: '包裹层样式',
type: 'group',
extraProps: {
display: 'entry',
},
items: [
{
name: 'contentWrapperStyle',
title: {
label: '样式设置',
tip: 'contentWrapperStyle | 可用于设置 Drawer 包裹内容部分的样式',
},
setter: 'StyleSetter',
extraProps: {
display: 'block',
},
},
],
},
{
name: 'headerStyle',
title: '头部样式',
type: 'group',
extraProps: {
display: 'entry',
},
items: [
{
name: 'headerStyle',
title: {
label: '样式设置',
tip: 'headerStyle | 用于设置 Drawer 头部的样式',
},
setter: 'StyleSetter',
extraProps: {
display: 'block',
},
},
],
},
{
name: 'bodyStyle',
title: '内容样式',
type: 'group',
extraProps: {
display: 'entry',
},
items: [
{
name: 'bodyStyle',
title: {
label: '样式设置',
tip: 'bodyStyle | 可用于设置 Drawer 内容部分的样式',
},
setter: 'StyleSetter',
extraProps: {
display: 'block',
},
},
],
},
{
name: 'footerStyle',
title: '页脚样式',
type: 'group',
extraProps: {
display: 'entry',
},
items: [
{
name: 'footerStyle',
title: {
label: '样式设置',
tip: 'footerStyle | 抽屉页脚部件的样式',
},
setter: 'StyleSetter',
extraProps: {
display: 'block',
},
},
],
},
{
name: 'maskStyle',
title: '遮罩样式',
type: 'group',
extraProps: {
display: 'entry',
},
items: [
{
name: 'maskStyle',
title: {
label: '样式设置',
tip: 'maskStyle | 遮罩样式',
},
setter: 'StyleSetter',
extraProps: {
display: 'block',
},
},
],
},
],
},
],
configure: {
component: {
isContainer: true,
isModal: true,
nestingRule: {
parentWhitelist: ['Page', 'Component'],
},
},
supports: {
style: true,
events: [
{
name: 'onClose',
template:
"onClose(event,${extParams}){\n// 点击遮罩层或右上角叉或取消按钮的回调\nconsole.log('onClose',event);}",
},
{
name: 'afterOpenChange',
template:
"afterOpenChange(open,${extParams}){\n// 切换抽屉时动画结束后的回调\nconsole.log('afterOpenChange',open);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/drawer/snippets.ts
================================================
export default [
{
title: '侧边抽屉',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/drawer-1.png',
schema: {
componentName: 'Drawer',
props: {
title: 'Basic Drawer',
open: true,
placement: 'right',
destroyOnClose: true,
},
children: [
{
componentName: 'Typography.Paragraph',
children: 'Some contents...',
},
],
},
},
{
title: '底部抽屉',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/drawer-2.png',
schema: {
componentName: 'Drawer',
props: {
title: 'Basic Drawer',
open: true,
placement: 'bottom',
destroyOnClose: true,
},
children: [
{
componentName: 'Typography.Paragraph',
children: 'Some contents...',
},
],
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/dropdown/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Dropdown',
title: '下拉菜单',
category: '导航',
props: [
{
name: 'open',
title: { label: '菜单是否显示', tip: '菜单是否显示' },
propType: { type: 'oneOf', value: [true, false, '-'] },
defaultValue: '-',
setter: {
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '默认非受控',
value: '-',
},
{
title: '显示',
value: true,
},
{
title: '不显示',
value: false,
},
],
},
},
extraProps: {
getValue(target, fieldValue) {
const { node } = target;
let value = node.getPropValue('open');
if (value === undefined) {
value = '-';
}
return value;
},
setValue(target, value) {
const { node } = target;
if (value === '-') {
setTimeout(() => {
node.clearPropValue('open');
});
}
},
},
},
{
name: 'arrow',
title: { label: '显示下拉箭头', tip: '是否显示下拉箭头' },
propType: 'bool',
defaultValue: false,
},
{
name: 'disabled',
title: { label: '是否禁用', tip: '是否为禁用状态' },
propType: 'bool',
},
// {
// name: 'getPopupContainer',
// title: {
// label: '渲染父节点',
// tip:
// '菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。[示例](https://codepen.io/afc163/pen/zEjNOy?editors=0010)',
// },
// propType: 'func',
// },
{
name: 'overlay',
title: { label: '菜单', tip: '菜单' },
propType: { type: 'oneOfType', value: ['node', 'func'] },
},
// {
// name: 'overlayClassName',
// title: { label: '根元素的类名称', tip: '根元素的类名称' },
// propType: 'string',
// },
// {
// name: 'overlayStyle',
// title: { label: '根元素的样式', tip: '根元素的样式' },
// propType: 'object',
// },
{
name: 'placement',
title: {
label: '弹出位置',
tip:
'菜单弹出位置:`bottomLeft` `bottomCenter` `bottomRight` `topLeft` `topCenter` `topRight`',
},
propType: {
type: 'oneOf',
value: ['bottomLeft', 'bottomCenter', 'bottomRight', 'topLeft', 'topCenter', 'topRight'],
},
},
{
name: 'trigger',
title: {
label: '触发下拉的行为',
tip: '触发下拉的行为, 移动端不支持 hover',
},
propType: {
type: 'arrayOf',
value: { type: 'oneOf', value: ['click', 'hover', 'contextMenu'] },
},
},
{
name: 'onOpenChange',
title: {
label: '显示状态回调',
tip: '菜单显示状态改变时调用,参数为 `open`',
},
propType: 'func',
},
],
configure: {
component: { isContainer: true },
supports: {
style: true,
events: [
{
name: 'onOpenChange',
template:
"onOpenChange(open,${extParams}){\n// 菜单显示状态改变时调用\nconsole.log('onOpenChange',open);}",
},
],
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/dropdown/snippets.ts
================================================
export default [
{
title: '下拉菜单',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/dropdown-1.png',
schema: {
componentName: 'Dropdown',
props: {
overlay: {
type: 'JSSlot',
value: [
{
componentName: 'Menu',
props: {
items: [
{
key: 'timeLinei5wd',
category: 'Item',
title: '菜单名',
},
],
},
children: [
{
componentName: 'Menu.Item',
id: 'node_ocky01yzdq3',
props: {
key: 'timeLinei5wd',
category: 'Item',
title: '菜单名',
children: '菜单名',
},
},
],
},
],
},
},
children: [
{
componentName: 'Button',
props: {
type: 'link',
children: {
type: 'JSSlot',
value: [
{
componentName: 'Typography.Text',
props: {
children: 'Hover me',
style: {
color: 'inherit',
},
},
},
{
componentName: 'Icon',
props: {
type: 'DownOutlined',
size: 15,
style: {
marginLeft: 4,
verticalAlign: 'middle',
},
},
},
],
},
},
},
],
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/empty/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Empty',
title: '空状态',
category: '数据展示',
props: [
{
name: 'description',
title: { label: '内容描述', tip: '自定义描述内容' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
// {
// name: 'imageStyle',
// title: { label: '图片样式', tip: '图片样式' },
// propType: 'object',
// },
{
name: 'image',
title: {
label: '图片地址',
tip: '设置显示图片,为string时表示自定义图片地址。',
},
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
],
configure: { supports: { style: true } },
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/empty/snippets.ts
================================================
export default [
{
title: '空状态',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/empty-1.png',
schema: {
componentName: 'Empty',
props: {},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/form/meta.ts
================================================
import snippets from './snippets';
import { uuid } from '../_utils/utils'
export default {
snippets,
componentName: 'Form',
title: '表单容器',
category: '表单',
props: [
{
name: 'ref',
title: {
label: 'ref',
tip: 'ref | 通过 this.$(\'xxx\') 获取到组件实例',
},
defaultValue: () => {
return `form_${uuid()}`
},
setter: 'StringSetter',
supportVariable: true
},
{
name: 'values',
title: { label: '表单数据源', tip: '表单数据源' },
propType: 'object',
setter: 'JsonSetter',
supportVariable: true
},
{
name: 'colon',
title: { label: '展示冒号', tip: '' },
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'hideRequiredMark',
title: { label: '隐藏必填标记', tip: '隐藏必填标记' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
type: 'group',
title: '布局',
display: 'accordion',
items: [
{
name: 'labelCol',
title: '标签栅格布局设置',
display: 'inline',
setter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'span',
title: '宽度',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
{
name: 'offset',
title: '偏移',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
],
},
},
},
description:
'label 标签布局,同 `<Col>` 组件,设置 span offset 值,如 {span: 8, offset: 16},该项仅在垂直表单有效',
},
{
name: 'wrapperCol',
title: '内容栅格布局设置',
display: 'inline',
setter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'span',
title: '宽度',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
{
name: 'offset',
title: '偏移',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
],
},
},
},
description: '需要为输入控件设置布局样式时,使用该属性,用法同 labelCol',
},
],
},
{
name: 'labelAlign',
title: {
label: '标签对齐',
tip: 'label 标签的文本对齐方式',
},
setter: {
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '左',
value: 'left',
},
{
title: '右',
value: 'right',
},
],
},
},
propType: { type: 'oneOf', value: ['left', 'right'] },
defaultValue: 'right',
},
{
name: 'layout',
title: { label: '表单布局', tip: '表单布局' },
setter: {
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '水平',
value: 'horizontal',
},
{
title: '垂直',
value: 'vertical',
},
{
title: '行内',
value: 'inline',
},
],
},
},
propType: { type: 'oneOf', value: ['horizontal', 'vertical', 'inline'] },
defaultValue: 'horizontal',
},
{
name: 'name',
title: {
label: '表单名称',
tip: '表单名称,会作为表单字段 `id` 前缀使用',
},
propType: 'string',
setter: 'StringSetter',
supportVariable: true
},
{
name: 'preserve',
title: {
label: '删除时保留值',
tip: '当字段被删除时保留字段值',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'scrollToFirstError',
title: {
label: '滚至错误',
tip: '提交失败自动滚动到第一个错误字段',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'size',
title: {
label: '字段组件尺寸',
tip: '设置字段组件的尺寸(仅限 antd 组件)',
},
propType: { type: 'oneOf', value: ['small', 'middle', 'large'] },
setter: {
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '大',
value: 'large',
},
{
title: '中',
value: 'middle',
},
{
title: '小',
value: 'small',
},
],
},
},
defaultValue: 'middle',
},
{
name: 'validateMessages',
title: { label: '验证提示模板', tip: '验证提示模板' },
setter: 'JsonSetter',
defaultValue: { required: "'${name}' 不能为空" },
},
{
name: 'validateTrigger',
title: { label: '校验时机', tip: '所有字段校验触发时机' },
propType: {
type: 'oneOf',
value: ['onChange', 'onBlur'],
},
setter: {
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '当前值变化时',
value: 'onChange',
},
{
title: '失去焦点时',
value: 'onBlur',
},
],
},
},
},
{
name: 'onFinish',
title: {
label: '提交表单且数据验证成功后回调事件',
tip: '提交表单且数据验证成功后回调事件',
},
propType: 'func',
},
{
name: 'onFinishFailed',
title: {
label: '提交表单且数据验证失败后回调事件',
tip: '提交表单且数据验证失败后回调事件',
},
propType: 'func',
},
{
name: 'onFieldsChange',
title: { label: '字段更新时触发回调事件', tip: '字段更新时触发回调事件' },
propType: 'func',
},
{
name: 'onValuesChange',
title: {
label: '字段值更新时触发回调事件',
tip: '字段值更新时触发回调事件',
},
propType: 'func',
},
],
configure: {
component: { isContainer: true },
supports: {
style: true,
events: [
{
name: 'onFinish',
template:
"onFinish(values,${extParams}){\n// 提交表单且数据验证成功后回调事件\nconsole.log('onFinish',values);}",
},
{
name: 'onFinishFailed',
template:
"onFinishFailed({values,errorFields,outOfDate},${extParams}){\n// 提交表单且数据验证失败后回调事件\nconsole.log('onFinishFailed',values, errorFields, outOfDate);}",
},
{
name: 'onFieldsChange',
template:
"onFieldsChange(changedFields,allFields,${extParams}){\n// 字段更新时触发回调事件\nconsole.log('onFieldsChange',changedFields,allFields);}",
},
{
name: 'onValuesChange',
template:
"onValuesChange(changedValues,allValues,${extParams}){\n// 字段值更新时触发回调事件\nconsole.log('onValuesChange',changedValues,allValues);}",
},
],
},
advanced: {
callbacks: {
onNodeAdd: (dragment, currentNode) => {
const comps = [
'Input',
'Select',
'Radio',
'Checkbox',
'Switch',
'Upload',
'Datepicker',
'Rate',
'Transfer',
];
if (
!dragment ||
!dragment.componentMeta ||
!dragment.componentMeta.npm ||
!dragment.componentMeta.npm.package ||
dragment.componentMeta.npm.package.indexOf('@alilc/antd-lowcode-materials') === -1 ||
comps.every((comp) => dragment.componentName.indexOf(comp) === -1)
) {
return;
}
// 为目标元素包裹一层P
const layoutPNode = currentNode.document.createNode({
componentName: 'Form.Item',
props: {
label: '表单项: ',
},
children: [dragment.exportSchema()],
});
// 当前dragment还未添加入node子节点,需要setTimeout处理
setTimeout(() => {
currentNode.replaceChild(
dragment,
layoutPNode.exportSchema(),
// 避免生成新的 nodeId
{ reserveSchemaNodeId: true },
);
}, 1);
},
},
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/form/snippets.ts
================================================
export default [
{
"title": "表单容器",
"screenshot": "https://alifd.alicdn.com/fusion-cool/icons/icon-antd/form-1.png",
"schema": {
"componentName": "Form",
"props": {
"labelCol": {
"span": 6
},
"wrapperCol": {
"span": 14
},
"onValuesChange": {
"type": "JSFunction",
"value": "function onValuesChange(changedValues, allValues) {\n console.log('onValuesChange', changedValues, allValues);\n}"
},
"onFinish": {
"type": "JSFunction",
"value": "function onFinish(values) {\n console.log('onFinish', values);\n}"
},
"onFinishFailed": {
"type": "JSFunction",
"value": "function onFinishFailed({ values, errorFields, outOfDate }) {\n console.log('onFinishFailed', values, errorFields, outOfDate);\n}"
},
"name": "basic"
},
"children": [
{
"componentName": "Form.Item",
"props": {
"label": "表单项",
"labelAlign": "right",
"colon": true,
"required": true,
"noStyle": false,
"valuePropName": "value",
"name": "a",
"requiredobj": {
"required": true,
"message": "必填"
},
"typeobj": {
"type": null,
"message": null
},
"lenobj": {
"max": null,
"min": null,
"message": null
},
"patternobj": {
"pattern": null,
"message": null
}
},
"children": [
{
"componentName": "Input",
"props": {
"placeholder": "请输入",
"bordered": true,
"disabled": false,
"size": "middle"
}
}
]
},
{
"componentName": "Form.Item",
"props": {
"label": "表单项",
"labelAlign": "right",
"colon": true,
"required": false,
"noStyle": false,
"valuePropName": "value",
"requiredobj": {
"required": null,
"message": null
},
"typeobj": {
"type": null,
"message": null
},
"lenobj": {
"max": null,
"min": null,
"message": null
},
"patternobj": {
"pattern": null,
"message": null
},
"name": "b"
},
"children": [
{
"componentName": "InputNumber",
"props": {
"placeholder": "请输入",
"autoFocus": false,
"disabled": false,
"controls": true,
"bordered": true,
"size": "middle"
}
}
]
},
{
"componentName": "Form.Item",
"props": {
"label": "表单项",
"labelAlign": "right",
"colon": true,
"required": false,
"noStyle": false,
"valuePropName": "value",
"requiredobj": {
"required": null,
"message": null
},
"typeobj": {
"type": null,
"message": null
},
"lenobj": {
"max": null,
"min": null,
"message": null
},
"patternobj": {
"pattern": null,
"message": null
},
"name": "c"
},
"children": [
{
"componentName": "Input.Password",
"props": {
"bordered": true,
"disabled": false,
"visibilityToggle": true,
"placeholder": "请输入",
"size": "middle"
}
}
]
},
{
"componentName": "Form.Item",
"props": {
"label": "表单项",
"labelAlign": "right",
"colon": true,
"required": false,
"noStyle": false,
"valuePropName": "value",
"requiredobj": {
"required": null,
"message": null
},
"typeobj": {
"type": null,
"message": null
},
"lenobj": {
"max": null,
"min": null,
"message": null
},
"patternobj": {
"pattern": null,
"message": null
},
"name": "d"
},
"children": [
{
"componentName": "Input.TextArea",
"props": {
"autoSize": {
"minRows": 3,
"maxRows": 3
},
"placeholder": "请输入",
"bordered": true,
"disabled": false,
"showCount": false,
"size": "middle"
}
}
]
},
{
"componentName": "Form.Item",
"props": {
"label": "表单项",
"name": "e",
"labelAlign": "right",
"colon": true,
"required": false,
"noStyle": false,
"valuePropName": "value",
"requiredobj": {
"required": null,
"message": null
},
"typeobj": {
"type": null,
"message": null
},
"lenobj": {
"max": null,
"min": null,
"message": null
},
"patternobj": {
"pattern": null,
"message": null
}
},
"children": [
{
"componentName": "Select",
"props": {
"style": {
"width": 200
},
"options": [
{
"label": "A",
"value": "A"
},
{
"label": "B",
"value": "B"
},
{
"label": "C",
"value": "C"
}
],
"allowClear": false,
"autoFocus": false,
"defaultActiveFirstOption": true,
"disabled": false,
"labelInValue": false,
"showSearch": false,
"size": "middle",
"loading": false,
"bordered": true,
"filterOption": true,
"optionFilterProp": "value",
"tokenSeparators": []
}
}
]
},
{
"componentName": "Form.Item",
"props": {
"label": "表单项",
"labelAlign": "right",
"colon": true,
"required": false,
"noStyle": false,
"valuePropName": "value",
"requiredobj": {
"required": null,
"message": null
},
"typeobj": {
"type": null,
"message": null
},
"lenobj": {
"max": null,
"min": null,
"message": null
},
"patternobj": {
"pattern": null,
"message": null
},
"name": "f"
},
"children": [
{
"componentName": "Slider",
"props": {
"defaultValue": 30,
"range": false,
"disabled": false,
"dots": false,
"reverse": false,
"vertical": false
}
}
]
},
{
"componentName": "Form.Item",
"props": {
"label": "表单项",
"name": "g",
"initialValue": "A",
"colon": true,
"required": false,
"noStyle": false,
"valuePropName": "value",
"requiredobj": {
"required": null,
"message": null
},
"typeobj": {
"type": null,
"message": null
},
"lenobj": {
"max": null,
"min": null,
"message": null
},
"patternobj": {
"pattern": null,
"message": null
}
},
"children": [
{
"componentName": "Checkbox.Group",
"props": {
"options": [
{
"label": "A",
"value": "A"
},
{
"label": "B",
"value": "B"
},
{
"label": "C",
"value": "C"
}
]
}
}
]
},
{
"componentName": "Form.Item",
"props": {
"label": "表单项",
"labelAlign": "right",
"colon": true,
"required": false,
"noStyle": false,
"valuePropName": "checked",
"requiredobj": {
"required": null,
"message": null
},
"typeobj": {
"type": null,
"message": null
},
"lenobj": {
"max": null,
"min": null,
"message": null
},
"patternobj": {
"pattern": null,
"message": null
},
"name": "i"
},
"children": [
{
"componentName": "Switch",
"props": {
"defaultChecked": false,
"autoFocus": false,
"disabled": false,
"loading": false,
"size": "default"
}
}
]
},
{
"componentName": "Form.Item",
"props": {
"label": "表单项",
"labelAlign": "right",
"colon": true,
"required": false,
"noStyle": false,
"valuePropName": "value",
"requiredobj": {
"required": null,
"message": null
},
"typeobj": {
"type": null,
"message": null
},
"lenobj": {
"max": null,
"min": null,
"message": null
},
"patternobj": {
"pattern": null,
"message": null
},
"name": "j"
},
"children": [
{
"componentName": "TimePicker",
"props": {
"allowClear": true,
"autoFocus": false,
"bordered": true,
"disabled": false,
"hideDisabledOptions": false,
"inputReadOnly": false,
"use12Hours": false
}
}
]
},
{
"componentName": "Form.Item",
"props": {
"label": "表单项",
"labelAlign": "right",
"colon": true,
"required": false,
"noStyle": false,
"valuePropName": "value",
"requiredobj": {
"required": null,
"message": null
},
"typeobj": {
"type": null,
"message": null
},
"lenobj": {
"max": null,
"min": null,
"message": null
},
"patternobj": {
"pattern": null,
"message": null
},
"name": "k"
},
"children": [
{
"componentName": "Rate",
"props": {
"defaultValue": 3,
"allowClear": true,
"allowHalf": false,
"autoFocus": false,
"count": 5,
"disabled": false,
"tooltips": []
}
}
]
},
{
"componentName": "Form.Item",
"props": {
"wrapperCol": {
"offset": 6
}
},
"children": [
{
"componentName": "Button",
"props": {
"type": "primary",
"children": "提交",
"htmlType": "submit"
}
},
{
"componentName": "Button",
"props": {
"style": {
"marginLeft": 20
},
"children": "取消"
}
}
]
}
]
}
}
]
================================================
FILE: packages/antd-lowcode-materials/lowcode/form.item/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Form.Item',
title: '表单项',
category: '表单',
props: [
{
name: 'name',
title: { label: '字段名', tip: '字段名' },
isRequired: true,
propType: 'string',
setter: 'StringSetter',
supportVariable: true
},
{
name: 'label',
title: { label: '标签', tip: '标签的文本' },
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'labelAlign',
title: { label: '标签对齐', tip: '标签文本对齐方式' },
propType: { type: 'oneOf', value: ['left', 'right'] },
setter: {
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '左',
value: 'left',
},
{
title: '右',
value: 'right',
},
],
},
},
defaultValue: 'right',
},
{
name: 'colon',
title: {
label: '显示冒号',
tip: '配合 label 属性使用,表示是否显示 label 后面的冒号',
},
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'extra',
title: {
label: '提示信息',
tip: '额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。',
},
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'tooltip',
title: {
label: '标签提示信息',
tip: '标签提示信息,当需要对标签进行解释时,可以使用这个。',
},
propType: { type: 'oneOfType', value: ['string', 'node'] },
},
{
name: 'required',
title: {
label: '必填标记',
tip: '必填样式设置。如不设置,则会根据校验规则自动生成',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
// {
// name: 'hasFeedback',
// title: {
// label: '校验状态图标',
// tip:
// '配合 validateStatus 属性使用,展示校验状态图标,建议只配合 Input 组件使用',
// },
// propType: 'bool',
// defaultValue: false,
// },
{
name: 'initialValue',
title: {
label: '默认值',
tip: '设置子元素默认值,如果与 Form 的 initialValues 冲突则以 Form 为准',
},
propType: 'string',
setter: 'StringSetter',
supportVariable: true
},
{
name: 'noStyle',
title: {
label: '隐藏标签',
tip: '为 true 时不带样式,作为纯字段控件使用',
},
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
supportVariable: true
},
{
name: 'valuePropName',
title: {
label: '子组件值字段',
tip: `子节点的值的字段,如 Switch 的是 'checked'`,
},
propType: 'string',
defaultValue: 'value',
setter: 'StringSetter',
supportVariable: true
},
{
name: 'getValueFromEvent',
title: {
label: 'event转换器',
tip: `设置如何将 event 的值转换成字段值,如将上传组件的fileList作为value值传出`,
},
propType: 'func',
},
{
type: 'group',
title: '布局',
display: 'accordion',
items: [
{
name: 'labelCol',
title: '标签栅格布局设置',
display: 'inline',
setter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'span',
title: '宽度',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
{
name: 'offset',
title: '偏移',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
],
},
},
},
description:
'label 标签布局,同 `<Col>` 组件,设置 span offset 值,如 {span: 8, offset: 16},该项仅在垂直表单有效',
},
{
name: 'wrapperCol',
title: '内容栅格布局设置',
display: 'inline',
setter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
{
name: 'span',
title: '宽度',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
{
name: 'offset',
title: '偏移',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
],
},
},
},
description: '需要为输入控件设置布局样式时,使用该属性,用法同 labelCol',
},
],
},
{
name: 'requiredobj',
title: { label: '必填设置', tip: '必填设置' },
propType: {
type: 'shape',
value: [
{
name: 'required',
title: '是否必填',
propType: 'bool',
setter: 'BoolSetter',
supportVariable: true,
extraProps: {
setValue(target: any, value: boolean) {
// 同步 必填标记
target.parent.parent.setPropValue('required', value);
}
}
},
{
name: 'message',
title: '错误信息提示',
propType: 'string',
setter: 'StringSetter',
supportVariable: true
},
],
},
},
{
name: 'typeobj',
title: { label: '输入类型设置', tip: '输入类型设置' },
propType: {
type: 'shape',
value: [
{
name: 'type',
title: '输入类型',
setter: {
componentName: 'SelectSetter',
props: {
options: [
{
title: '字符串',
value: 'string',
},
// {
// title: '纯数字',
// value: 'number',
// },
{
title: '邮箱',
value: 'email',
},
{
title: '网址',
value: 'url',
},
],
},
},
propType: {
type: 'oneOf',
value: ['string', 'number', 'email', 'url'],
},
},
{ name: 'message', title: '错误信息提示', propType: 'string' },
],
},
},
{
name: 'lenobj',
title: { label: '长度校验设置', tip: '长度校验设置' },
propType: {
type: 'shape',
value: [
// { name: 'len', title: '固定长度', propType: 'string' },
{ name: 'max', title: '最大长度', propType: 'number' },
{ name: 'min', title: '最小长度', propType: 'number' },
{ name: 'message', title: '错误信息提示', propType: 'string' },
],
},
},
{
name: 'patternobj',
title: { label: '正则设置', tip: '正则设置' },
propType: {
type: 'shape',
value: [
{ name: 'pattern', title: '正则', propType: 'string' },
{ name: 'message', title: '错误信息提示', propType: 'string' },
],
},
},
{
name: 'validator',
title: {
label: '自定义校验函数',
tip: '自定义校验,接收 Promise 作为返回值',
},
propType: 'func',
},
],
configure: {
component: {
isContainer: true,
nestingRule: { childWhitelist: [], parentWhitelist: [] },
},
supports: { style: true },
advanced: {
callbacks: {
onNodeRemove: (removedNode, currentNode) => {
if (!removedNode || !currentNode) {
return;
}
const { children } = currentNode;
// 若无children,则说明当前P组件内已为空,需要删除P组件本身
if (children && children.length === 0) {
currentNode.remove();
}
},
},
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/form.item/snippets.ts
================================================
export default [
{
title: '表单项',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/form-item-1.jpg',
schema: {
componentName: 'Form.Item',
props: {
label: '表单项',
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/form.list/meta.ts
================================================
import snippets from './snippets';
export default {
componentName: 'Form.List',
title: '表单列表',
category: '表单',
snippets,
props: [
{
name: 'name',
title: { label: '字段名', tip: '字段名' },
isRequired: true,
propType: 'string',
},
{
name: 'initialValue',
title: {
label: '默认值',
tip: '设置子元素默认值,如果与 Form 的 initialValues 冲突则以 Form 为准',
},
propType: 'object',
setter: 'JsonSetter',
},
],
configure: {
component: {
isContainer: true,
},
supports: { className: true, style: true },
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/form.list/snippets.ts
================================================
export default [
{
title: '表单列表',
// TODO: 换成国内OSS地址
screenshot: 'https://user-images.githubusercontent.com/5419886/221425341-e982c944-8af4-4bad-9c17-1b2fd3fda835.png',
schema: {
componentName: 'Form.List',
props: {},
}
}
]
================================================
FILE: packages/antd-lowcode-materials/lowcode/grid.col/meta.ts
================================================
import snippets from './snippets';
function clamp(value, min, max) {
return Math.max(min, Math.min(max, value));
}
export default {
snippets,
componentName: 'Col',
title: '栅格-列',
props: [
{
name: 'span',
title: { label: '占位格数', tip: '栅格占位格数' },
propType: 'number',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
{
name: 'order',
title: { label: '栅格顺序', tip: '栅格顺序' },
propType: 'number',
},
{
name: 'pull',
title: { label: '右侧偏移', tip: '栅格往右移动格数' },
propType: 'number',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
{
name: 'push',
title: { label: '左侧偏移', tip: '栅格往左移动格数' },
propType: 'number',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
max: 24,
},
},
},
],
configure: {
component: { isContainer: true, nestingRule: { parentWhitelist: ['Row'] } },
supports: { style: true },
advanced: {
getResizingHandlers: () => {
return ['e'];
},
callbacks: {
onResizeStart: (e, currentNode) => {
const parent = currentNode.parent;
if (parent) {
const parentNode = parent.getDOMNode();
if (parentNode) {
currentNode.parentRect = parentNode.getBoundingClientRect();
}
}
currentNode.beforeSpan = currentNode.getPropValue('span') || 24;
currentNode.startRect = currentNode.getRect();
},
onResize: (e, currentNode) => {
const { deltaX } = e;
const startWidth = currentNode.startRect
? currentNode.startRect.width
: currentNode.beforeSpan * (currentNode.parentRect.width / 24);
let width = startWidth + deltaX;
if (!currentNode.startRect) {
currentNode.startRect = { width };
}
width = clamp(width, 0, currentNode.parentRect.width);
const allowMoveX = Math.round(width - startWidth); // 实际被允许的x轴移动
currentNode.moveColumn = Math.round(allowMoveX / (currentNode.parentRect.width / 24)); // 计算移动距离所占的列
if (allowMoveX > 0) {
currentNode.moveColumn++;
} else {
currentNode.moveColumn--;
}
currentNode.targetColumn = clamp(currentNode.beforeSpan + currentNode.moveColumn, 1, 24);
// currentNode.setPropValue('span', currentNode.targetColumn);
const dom = currentNode.getDOMNode();
dom.style.width = `${Math.round(width)}px`;
dom.style.flex = 'none';
dom.style.maxWidth = '100%';
},
onResizeEnd: (e, currentNode) => {
currentNode.getDOMNode().style.cssText = '';
currentNode.targetColumn = clamp(currentNode.targetColumn, 1, 24);
currentNode.setPropValue('span', currentNode.targetColumn);
},
},
},
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/grid.col/snippets.ts
================================================
export default [];
================================================
FILE: packages/antd-lowcode-materials/lowcode/grid.row/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Row',
title: '栅格-行',
category: '布局',
props: [
{
name: 'align',
title: { label: '垂直对齐方式', tip: '垂直对齐方式' },
propType: { type: 'oneOf', value: ['top', 'middle', 'bottom'] },
},
{
name: 'h-gutter',
title: {
label: '水平间隔',
tip: '栅格水平间隔,单位为像素(px)',
},
propType: 'number',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
},
},
defaultValue: 0,
extraProps: {
getValue(target) {
const { node } = target;
const gutter = node.getPropValue('gutter');
if (typeof gutter === 'number') {
return gutter;
} else if (Array.isArray(gutter)) {
return gutter[0];
}
return 0;
},
setValue(target, value) {
const { node } = target;
const gutter = node.getPropValue('gutter');
if (Array.isArray(gutter)) {
gutter[0] = value;
node.setPropValue('gutter', gutter);
} else {
node.setPropValue('gutter', [value, 0]);
}
},
},
},
{
name: 'v-gutter',
title: {
label: '垂直间隔',
tip: '栅格垂直间隔,单位为像素(px)',
},
propType: 'number',
setter: {
componentName: 'NumberSetter',
props: {
min: 0,
},
},
defaultValue: 0,
extraProps: {
getValue(target) {
const { node } = target;
const gutter = node.getPropValue('gutter');
if (typeof gutter === 'number') {
return 0;
} else if (Array.isArray(gutter)) {
return gutter[1];
}
return 0;
},
setValue(target, value) {
const { node } = target;
const gutter = node.getPropValue('gutter');
if (Array.isArray(gutter)) {
gutter[1] = value;
node.setPropValue('gutter', gutter);
} else {
node.setPropValue('gutter', [gutter, value]);
}
},
},
},
{
name: 'justify',
title: { label: '水平排列方式', tip: '水平排列方式' },
propType: {
type: 'oneOf',
value: ['start', 'end', 'center', 'space-around', 'space-between'],
},
},
{
name: 'wrap',
title: { label: '自动换行', tip: '是否自动换行' },
propType: 'bool',
defaultValue: true,
},
],
configure: {
component: { isContainer: true, nestingRule: { childWhitelist: ['Col'] } },
supports: { style: true },
},
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/grid.row/snippets.ts
================================================
export default [
{
title: '两栏',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/1-1.png',
schema: {
componentName: 'Row',
props: {},
children: [
{
componentName: 'Col',
props: {
span: 12,
},
},
{
componentName: 'Col',
props: {
span: 12,
},
},
],
},
},
{
title: '三栏',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/1-1-1.png',
schema: {
componentName: 'Row',
props: {},
children: [
{
componentName: 'Col',
props: {
span: 8,
},
},
{
componentName: 'Col',
props: {
span: 8,
},
},
{
componentName: 'Col',
props: {
span: 8,
},
},
],
},
},
{
title: '四栏',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/1-1-1-1.png',
schema: {
componentName: 'Row',
props: {},
children: [
{
componentName: 'Col',
props: {
span: 6,
},
},
{
componentName: 'Col',
props: {
span: 6,
},
},
{
componentName: 'Col',
props: {
span: 6,
},
},
{
componentName: 'Col',
props: {
span: 6,
},
},
],
},
},
{
title: '1:3',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/1-3.png',
schema: {
componentName: 'Row',
props: {},
children: [
{
componentName: 'Col',
props: {
span: 6,
},
},
{
componentName: 'Col',
props: {
span: 18,
},
},
],
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/icon/meta.ts
================================================
import snippets from './snippets';
import { AntdIconSetter } from '../_setters';
export default {
snippets,
componentName: 'Icon',
title: '图标',
category: '通用',
props: [
{
name: 'className',
title: { label: '设置图标的样式名', tip: '设置图标的样式名' },
propType: 'string',
},
{
name: 'style',
title: {
label: '设置图标的样式,例如 `fontSize` 和 `color`',
tip: '设置图标的样式,例如 `fontSize` 和 `color`',
},
propType: 'object',
},
{
name: 'type',
description: '图标',
propType: 'string',
setter: AntdIconSetter,
},
{
name: 'size',
description: '大小',
propType: 'number',
defaultValue: 20,
},
{
name: 'color',
description: '颜色',
propType: 'string',
setter: 'ColorSetter',
},
{
name: 'rotate',
title: {
label: '旋转角度',
tip: '图标旋转角度',
},
propType: 'number',
defaultValue: 0,
},
{
name: 'spin',
title: { label: '旋转动画', tip: '是否有旋转动画' },
propType: 'bool',
defaultValue: false,
},
{
name: 'onClick',
title: { label: '点击回调', tip: '点击按钮时的回调' },
propType: 'func',
},
],
configure: { supports: { style: true } },
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/icon/snippets.ts
================================================
export default [
{
title: '图标',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/icon-1.jpg',
schema: {
componentName: 'Icon',
props: {
type: 'SmileOutlined',
size: 20,
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/image/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Image',
title: '图片',
category: '数据展示',
props: [
{
name: 'src',
title: { label: '图片地址', tip: '图片地址' },
propType: { type: 'string', isRequired: true },
},
{
name: 'alt',
title: { label: '替换文本', tip: '替换文本' },
propType: 'string',
},
{
name: 'preview',
title: { label: '支持预览', tip: '支持预览' },
defaultValue: true,
propType: 'bool',
},
{
name: 'fallback',
title: { label: '失败地址', tip: '加载失败容错地址' },
propType: 'string',
},
{
name: 'width',
title: { label: '宽度', tip: '宽度' },
propType: 'number',
},
{
name: 'height',
title: { label: '高度', tip: '高度' },
propType: 'number',
},
],
configure: { supports: { style: true } },
};
================================================
FILE: packages/antd-lowcode-materials/lowcode/image/snippets.ts
================================================
export default [
{
title: '图片',
screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/image-1.png',
schema: {
componentName: 'Image',
props: {
src: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',
height: 120,
width: 120,
},
},
},
];
================================================
FILE: packages/antd-lowcode-materials/lowcode/input/meta.ts
================================================
import snippets from './snippets';
export default {
snippets,
componentName: 'Input',
title: '输入框',
category: '表单',
props: [
{
name: 'defaultValue',
title: { label: '默认值', tip: '默认内容' },
propType: 'string',
setter: 'StringSetter',
},
{
name: 'value',
title: { label: '当前值', tip: '当前值' },
propType: 'string',
setter: 'StringSetter'
},
{
name: 'allowClear',
title: { label: '支持清除', tip: '是否允许清除' },
propType: 'bool',
setter: 'BoolSetter',
},
{
name: 'bordered',
title: { label: '显示边框', tip: '是否有边框' },
propType: 'bool',
defaultValue: true,
setter: 'BoolSetter',
},
{
name: 'disabled',
title: { label: '是否禁用', tip: '是否为禁用状态' },
propType: 'bool',
defaultValue: false,
setter: 'BoolSetter',
},
{
name: 'placeholder',
title: { label: '占位提示', tip: '占位提示' },
propType: 'string',
defaultValue: '请输入',
setter: 'StringSetter'
},
// {
// name: 'id',
// title: { label: '输入框ID', tip: '输入框的ID' },
// propType: 'string',
// },
{
name: 'maxLength',
title: { label: '最大长度', tip: '最大长度' },
propType: 'number',
setter: 'NumberSetter',
},
{
name: 'size',
title: { label: '控件大小', tip: '控件大小' },
setter: {
componentName: 'RadioGroupSetter',
props: {
options: [
{
title: '大',
value: 'large',
},
{
title: '中',
value: 'middle',
},
{
title: '小',
value: 'small',
},
],
},
},
propType: { type: 'oneOf', value: ['large', 'middle', 'small'] },
defaultValue: 'middle',
},
{
name: 'addonAfter',
title: { label: '后置标签', tip: '后置标签' },
propType: { ty
gitextract_p86v3tr9/ ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .markdownlint.json ├── .markdownlintignore ├── .prettierrc.js ├── .stylelintignore ├── .stylelintrc.js ├── LICENSE ├── README.md ├── commitlint.config.js ├── f2elint.config.js ├── package.json ├── packages/ │ ├── antd-lowcode-materials/ │ │ ├── README.md │ │ ├── build.json │ │ ├── build.lowcode.js │ │ ├── lowcode/ │ │ │ ├── _setters/ │ │ │ │ ├── antd-icon-setter/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── style.less │ │ │ │ └── index.tsx │ │ │ ├── _utils/ │ │ │ │ ├── hoc.tsx │ │ │ │ ├── transform-meta.ts │ │ │ │ └── utils.ts │ │ │ ├── affix/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── alert/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── anchor/ │ │ │ │ └── snippets.ts │ │ │ ├── anchor.link/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── auto-complete/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── avatar/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── back-top/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── badge/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── breadcrumb/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── button/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── calendar/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── card/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── carousel/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── cascader/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── checkbox/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── checkbox.group/ │ │ │ │ └── meta.ts │ │ │ ├── collapse/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── collapse.pane/ │ │ │ │ └── meta.ts │ │ │ ├── comment/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── config-provider/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── date-picker/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── date-picker.range-picker/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── descriptions/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── descriptions.item/ │ │ │ │ └── meta.ts │ │ │ ├── divider/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── drawer/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── dropdown/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── empty/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── form/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── form.item/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── form.list/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── grid.col/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── grid.row/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── icon/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── image/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── input/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── input-number/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── input.group/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── input.password/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── input.search/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── input.text-area/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── list/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── list.item/ │ │ │ │ └── meta.ts │ │ │ ├── list.item.meta/ │ │ │ │ └── meta.ts │ │ │ ├── mentions/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── menu/ │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.ts │ │ │ │ └── utils.ts │ │ │ ├── menu.item/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── menu.item-group/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── menu.sub-menu/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── modal/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── page-header/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── pagination/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── popconfirm/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── popover/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── progress/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── radio/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── radio.group/ │ │ │ │ └── meta.ts │ │ │ ├── rate/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── result/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── segmented/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── select/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── skeleton/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── slider/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── slot/ │ │ │ │ ├── meta.ts │ │ │ │ └── view.tsx │ │ │ ├── space/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── spin/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── statistic/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── steps/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── steps.step/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── switch/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── table/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── tabs/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── tabs.tab-pane/ │ │ │ │ └── meta.ts │ │ │ ├── tag/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── time-picker/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── timeline/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── timeline.item/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── tooltip/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── transfer/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── tree/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── tree-select/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── typography.link/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── typography.paragraph/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── typography.text/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── typography.title/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ └── upload/ │ │ │ ├── meta.ts │ │ │ └── snippets.ts │ │ ├── package.json │ │ └── src/ │ │ ├── components/ │ │ │ ├── auto-complete/ │ │ │ │ └── index.tsx │ │ │ ├── button/ │ │ │ │ └── index.tsx │ │ │ ├── calendar/ │ │ │ │ └── index.tsx │ │ │ ├── cascader/ │ │ │ │ └── index.tsx │ │ │ ├── checkbox/ │ │ │ │ └── index.tsx │ │ │ ├── config-provider/ │ │ │ │ └── index.tsx │ │ │ ├── date-picker/ │ │ │ │ └── index.tsx │ │ │ ├── drawer/ │ │ │ │ └── index.tsx │ │ │ ├── dropdown/ │ │ │ │ └── index.tsx │ │ │ ├── form/ │ │ │ │ └── index.tsx │ │ │ ├── icon/ │ │ │ │ └── index.tsx │ │ │ ├── input/ │ │ │ │ └── index.tsx │ │ │ ├── modal/ │ │ │ │ └── index.tsx │ │ │ ├── popover/ │ │ │ │ └── index.tsx │ │ │ ├── radio/ │ │ │ │ └── index.tsx │ │ │ ├── select/ │ │ │ │ └── index.tsx │ │ │ ├── skeleton/ │ │ │ │ └── index.tsx │ │ │ ├── slider/ │ │ │ │ └── index.tsx │ │ │ ├── table/ │ │ │ │ └── index.tsx │ │ │ ├── tabs/ │ │ │ │ └── index.tsx │ │ │ ├── time-picker/ │ │ │ │ └── index.tsx │ │ │ ├── tree-select/ │ │ │ │ └── index.tsx │ │ │ └── upload/ │ │ │ └── index.tsx │ │ ├── index.scss │ │ ├── index.tsx │ │ └── utils/ │ │ ├── hoc.tsx │ │ └── warning.ts │ ├── fusion-lowcode-materials/ │ │ ├── HISTORY.md │ │ ├── README.md │ │ ├── build.json │ │ ├── build.lowcode.js │ │ ├── demo/ │ │ │ ├── Image.md │ │ │ ├── Link.md │ │ │ ├── NoteWrapper.md │ │ │ ├── RichText.md │ │ │ └── Video.md │ │ ├── lowcode/ │ │ │ ├── alert/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── avatar/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── badge/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── balloon/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── balloon-inner/ │ │ │ │ └── meta.ts │ │ │ ├── box/ │ │ │ │ ├── meta.design.tsx │ │ │ │ └── meta.tsx │ │ │ ├── breadcrumb/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── breadcrumb-item/ │ │ │ │ └── meta.ts │ │ │ ├── button/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── button-group/ │ │ │ │ └── meta.ts │ │ │ ├── calendar/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── card/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── card-actions/ │ │ │ │ └── meta.ts │ │ │ ├── card-bullet-header/ │ │ │ │ └── meta.ts │ │ │ ├── card-collaspe-content/ │ │ │ │ └── meta.ts │ │ │ ├── card-content/ │ │ │ │ └── meta.ts │ │ │ ├── card-divider/ │ │ │ │ └── meta.ts │ │ │ ├── card-header/ │ │ │ │ └── meta.ts │ │ │ ├── card-media/ │ │ │ │ └── meta.ts │ │ │ ├── cascader/ │ │ │ │ ├── meta.design.ts │ │ │ │ └── meta.ts │ │ │ ├── cascader-select/ │ │ │ │ ├── adaptor.ts │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── checkbox/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── checkbox-group/ │ │ │ │ ├── meta.design.ts │ │ │ │ └── meta.ts │ │ │ ├── checkbox-item/ │ │ │ │ └── meta.ts │ │ │ ├── collapse/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── view.tsx │ │ │ ├── collapse-panel/ │ │ │ │ └── meta.ts │ │ │ ├── date-picker/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── dialog/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── div/ │ │ │ │ └── meta.ts │ │ │ ├── divider/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── drawer/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── drawer-inner/ │ │ │ │ └── meta.ts │ │ │ ├── dropdown/ │ │ │ │ └── meta.ts │ │ │ ├── error-boundary/ │ │ │ │ └── meta.ts │ │ │ ├── field/ │ │ │ │ └── meta.ts │ │ │ ├── form/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── form-error/ │ │ │ │ └── meta.ts │ │ │ ├── form-item/ │ │ │ │ └── meta.ts │ │ │ ├── form-reset/ │ │ │ │ └── meta.ts │ │ │ ├── form-submit/ │ │ │ │ └── meta.ts │ │ │ ├── group/ │ │ │ │ └── meta.ts │ │ │ ├── icon/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── img/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── inner/ │ │ │ │ └── meta.ts │ │ │ ├── input/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ ├── snippets.ts │ │ │ │ └── view.tsx │ │ │ ├── input-group/ │ │ │ │ └── meta.ts │ │ │ ├── input-password/ │ │ │ │ └── meta.ts │ │ │ ├── input-text-area/ │ │ │ │ └── meta.ts │ │ │ ├── link/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── list/ │ │ │ │ └── meta.ts │ │ │ ├── list-item/ │ │ │ │ └── meta.ts │ │ │ ├── loading/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── menu/ │ │ │ │ ├── adaptor.ts │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.design.ts │ │ │ ├── menu-button/ │ │ │ │ ├── adaptor.ts │ │ │ │ ├── meta.design.ts │ │ │ │ └── meta.ts │ │ │ ├── menu-divider/ │ │ │ │ └── meta.ts │ │ │ ├── menu-group/ │ │ │ │ └── meta.ts │ │ │ ├── menu-item/ │ │ │ │ └── meta.ts │ │ │ ├── menu-popup-item/ │ │ │ │ └── meta.ts │ │ │ ├── month-picker/ │ │ │ │ └── meta.ts │ │ │ ├── nav/ │ │ │ │ └── meta.ts │ │ │ ├── nav-item/ │ │ │ │ └── meta.ts │ │ │ ├── next-table/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── next-text/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── note-wrapper/ │ │ │ │ └── meta.ts │ │ │ ├── number-picker/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.ts │ │ │ │ └── view.tsx │ │ │ ├── page/ │ │ │ │ └── meta.ts │ │ │ ├── pagination/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── paragraph/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── popup-item/ │ │ │ │ └── meta.ts │ │ │ ├── progress/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── radio/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── radio-group/ │ │ │ │ ├── meta.design.ts │ │ │ │ └── meta.ts │ │ │ ├── radio-item/ │ │ │ │ └── meta.ts │ │ │ ├── range/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── range-calendar/ │ │ │ │ └── meta.ts │ │ │ ├── range-picker/ │ │ │ │ └── meta.ts │ │ │ ├── rating/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── responsive-grid/ │ │ │ │ └── meta.ts │ │ │ ├── responsive-grid-cell/ │ │ │ │ └── meta.ts │ │ │ ├── rich-text/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── search/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── select/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── select-option/ │ │ │ │ └── meta.ts │ │ │ ├── slider/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── slot/ │ │ │ │ ├── meta.ts │ │ │ │ └── view.tsx │ │ │ ├── split-button/ │ │ │ │ ├── adaptor.ts │ │ │ │ ├── meta.design.ts │ │ │ │ └── meta.ts │ │ │ ├── step/ │ │ │ │ ├── adaptor.ts │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── step-item/ │ │ │ │ └── meta.ts │ │ │ ├── sub-menu/ │ │ │ │ └── meta.ts │ │ │ ├── sub-nav/ │ │ │ │ └── meta.ts │ │ │ ├── switch/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── tab/ │ │ │ │ ├── adaptor.ts │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── tab-item/ │ │ │ │ ├── meta.design.ts │ │ │ │ └── meta.ts │ │ │ ├── tab-tab-pane/ │ │ │ │ └── meta.ts │ │ │ ├── table/ │ │ │ │ └── meta.ts │ │ │ ├── table-column/ │ │ │ │ └── meta.ts │ │ │ ├── tag/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── tag-closeable/ │ │ │ │ └── meta.ts │ │ │ ├── tag-selectable/ │ │ │ │ └── meta.ts │ │ │ ├── time-picker/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── timeline/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── timeline-item/ │ │ │ │ ├── meta.design.ts │ │ │ │ └── meta.ts │ │ │ ├── toast/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── tooltip/ │ │ │ │ └── meta.ts │ │ │ ├── transfer/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── tree/ │ │ │ │ ├── adaptor.ts │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── tree-node/ │ │ │ │ └── meta.ts │ │ │ ├── tree-select/ │ │ │ │ ├── adaptor.ts │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── snippets.design.ts │ │ │ │ └── snippets.ts │ │ │ ├── typography/ │ │ │ │ └── meta.ts │ │ │ ├── typography-text/ │ │ │ │ └── meta.ts │ │ │ ├── upload/ │ │ │ │ ├── meta.design.ts │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── upload-dragger/ │ │ │ │ └── meta.ts │ │ │ ├── upload-list/ │ │ │ │ └── meta.ts │ │ │ ├── upload-selecter/ │ │ │ │ └── meta.ts │ │ │ ├── utils/ │ │ │ │ ├── component-wrapper.ts │ │ │ │ ├── icons.ts │ │ │ │ ├── index.ts │ │ │ │ └── parse-data.ts │ │ │ ├── video/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.ts │ │ │ ├── week-picker/ │ │ │ │ └── meta.ts │ │ │ └── year-picker/ │ │ │ └── meta.ts │ │ ├── package.json │ │ ├── plugins/ │ │ │ └── compatible.build.js │ │ ├── scripts/ │ │ │ └── utils.js │ │ └── src/ │ │ ├── components/ │ │ │ ├── balloon/ │ │ │ │ └── index.tsx │ │ │ ├── calendar/ │ │ │ │ └── index.tsx │ │ │ ├── div/ │ │ │ │ └── index.tsx │ │ │ ├── image/ │ │ │ │ └── index.tsx │ │ │ ├── link/ │ │ │ │ └── index.tsx │ │ │ ├── next-table/ │ │ │ │ ├── component/ │ │ │ │ │ ├── field/ │ │ │ │ │ │ ├── baseTableField.tsx │ │ │ │ │ │ ├── customField.tsx │ │ │ │ │ │ ├── dateField.tsx │ │ │ │ │ │ ├── dateRangeField.tsx │ │ │ │ │ │ ├── inputField.tsx │ │ │ │ │ │ ├── radioField.tsx │ │ │ │ │ │ └── selectField.tsx │ │ │ │ │ ├── webCustomColumnDrawer.tsx │ │ │ │ │ ├── webLinkBar.tsx │ │ │ │ │ ├── webNextTableActionCell.tsx │ │ │ │ │ ├── webNextTableCell.tsx │ │ │ │ │ ├── webPagination.tsx │ │ │ │ │ ├── webRowOrder.tsx │ │ │ │ │ └── webToolbar.tsx │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── interface/ │ │ │ │ │ └── index.ts │ │ │ │ ├── locale/ │ │ │ │ │ ├── en-us.ts │ │ │ │ │ └── zh-cn.ts │ │ │ │ ├── mixin/ │ │ │ │ │ ├── columnMethods.tsx │ │ │ │ │ ├── commonMethods.ts │ │ │ │ │ ├── editableMethods.ts │ │ │ │ │ └── loadMethods.ts │ │ │ │ ├── scss/ │ │ │ │ │ └── variables.scss │ │ │ │ ├── table/ │ │ │ │ │ └── webTable.tsx │ │ │ │ └── utils/ │ │ │ │ ├── buildNextTableMethod.ts │ │ │ │ ├── buildTableProps.ts │ │ │ │ ├── chainAccess.ts │ │ │ │ ├── convertData.ts │ │ │ │ ├── delegateFunctions.ts │ │ │ │ ├── dispatchResizeEvent.ts │ │ │ │ ├── filterActionColumn.ts │ │ │ │ ├── filterActionColumnByDevice.ts │ │ │ │ ├── filterColumn.ts │ │ │ │ ├── formatter.ts │ │ │ │ ├── getCleanRowData.ts │ │ │ │ ├── getColumnsFromChildern.tsx │ │ │ │ ├── getDataSource.ts │ │ │ │ ├── hasRowAction.ts │ │ │ │ ├── render/ │ │ │ │ │ ├── actionTitleRender.tsx │ │ │ │ │ ├── cascadeTimestampRender.tsx │ │ │ │ │ ├── commonTableCellRender.tsx │ │ │ │ │ ├── defaultRender.tsx │ │ │ │ │ ├── enumRender.tsx │ │ │ │ │ ├── errorRender.tsx │ │ │ │ │ ├── fileRender.tsx │ │ │ │ │ ├── imageRender.tsx │ │ │ │ │ ├── linkRender.tsx │ │ │ │ │ ├── moneyRangeRender.tsx │ │ │ │ │ ├── moneyRender.tsx │ │ │ │ │ ├── timestampRender.tsx │ │ │ │ │ └── titleMessageRender.tsx │ │ │ │ ├── runColumnActionCallback.ts │ │ │ │ ├── runToolbarActionCallback.ts │ │ │ │ └── tableProps.ts │ │ │ ├── next-text/ │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── note-wrapper/ │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── rich-text/ │ │ │ │ └── index.tsx │ │ │ └── video/ │ │ │ └── index.tsx │ │ ├── index.scss │ │ ├── index.tsx │ │ └── utils.js │ ├── fusion-ui/ │ │ ├── .editorconfig │ │ ├── .eslintignore │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .markdownlint.json │ │ ├── .markdownlintignore │ │ ├── .prettierrc.js │ │ ├── .stylelintignore │ │ ├── .stylelintrc.js │ │ ├── README.md │ │ ├── build.json │ │ ├── build.lowcode.js │ │ ├── commitlint.config.js │ │ ├── docs/ │ │ │ ├── .dumi/ │ │ │ │ └── theme/ │ │ │ │ ├── builtins/ │ │ │ │ │ ├── API.tsx │ │ │ │ │ └── index.scss │ │ │ │ └── layout.tsx │ │ │ ├── .fatherrc.ts │ │ │ ├── .umirc.ts │ │ │ └── src/ │ │ │ ├── BarChart/ │ │ │ │ └── index.md │ │ │ ├── ColumnChart/ │ │ │ │ └── index.md │ │ │ ├── DonutChart/ │ │ │ │ └── index.md │ │ │ ├── EditTable/ │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── ExpandTable/ │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── Filter/ │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── GroupTable/ │ │ │ │ ├── index.md │ │ │ │ └── index.tsx │ │ │ ├── LineChart/ │ │ │ │ ├── basic.tsx │ │ │ │ ├── index.md │ │ │ │ └── slider.tsx │ │ │ ├── PageHeader/ │ │ │ │ ├── basic.tsx │ │ │ │ ├── breadcrumb.tsx │ │ │ │ └── index.md │ │ │ ├── PieChart/ │ │ │ │ ├── basic.tsx │ │ │ │ ├── index.md │ │ │ │ └── percent.tsx │ │ │ ├── ProDialog/ │ │ │ │ ├── basic.tsx │ │ │ │ ├── index.md │ │ │ │ └── large-content.tsx │ │ │ ├── ProDrawer/ │ │ │ │ ├── basic.tsx │ │ │ │ └── index.md │ │ │ ├── ProForm/ │ │ │ │ ├── basic.tsx │ │ │ │ ├── index.md │ │ │ │ └── operations.tsx │ │ │ ├── ProTable/ │ │ │ │ ├── basic.tsx │ │ │ │ ├── index.md │ │ │ │ └── service.ts │ │ │ ├── StepForm/ │ │ │ │ ├── basic.tsx │ │ │ │ └── index.md │ │ │ ├── TabContainer/ │ │ │ │ ├── basic.tsx │ │ │ │ └── index.md │ │ │ ├── anchorForm/ │ │ │ │ └── index.md │ │ │ ├── areaChart/ │ │ │ │ └── index.md │ │ │ └── childForm/ │ │ │ └── index.md │ │ ├── f2elint.config.js │ │ ├── jest.config.js │ │ ├── lowcode/ │ │ │ ├── anchor/ │ │ │ │ └── meta.ts │ │ │ ├── anchor-form/ │ │ │ │ └── meta.ts │ │ │ ├── area-chart/ │ │ │ │ └── meta.ts │ │ │ ├── bar-chart/ │ │ │ │ └── meta.ts │ │ │ ├── cascader-select/ │ │ │ │ ├── meta.js │ │ │ │ └── snippets.js │ │ │ ├── checkbox-group/ │ │ │ │ └── meta.js │ │ │ ├── child-form/ │ │ │ │ └── meta.ts │ │ │ ├── column-chart/ │ │ │ │ └── meta.ts │ │ │ ├── common/ │ │ │ │ ├── actions.ts │ │ │ │ ├── button-groups.ts │ │ │ │ ├── chart-action.ts │ │ │ │ ├── chart-plot.ts │ │ │ │ ├── index.ts │ │ │ │ └── operations.ts │ │ │ ├── date-picker/ │ │ │ │ ├── meta.ts │ │ │ │ └── snippets.js │ │ │ ├── donut-chart/ │ │ │ │ └── meta.ts │ │ │ ├── edit-table/ │ │ │ │ └── meta.ts │ │ │ ├── expand-table/ │ │ │ │ └── meta.ts │ │ │ ├── filter/ │ │ │ │ └── meta.ts │ │ │ ├── filter-item/ │ │ │ │ └── meta.ts │ │ │ ├── group-table/ │ │ │ │ └── meta.ts │ │ │ ├── input/ │ │ │ │ └── meta.ts │ │ │ ├── line-chart/ │ │ │ │ └── meta.ts │ │ │ ├── month-picker/ │ │ │ │ └── meta.js │ │ │ ├── number-picker/ │ │ │ │ └── meta.ts │ │ │ ├── page-header/ │ │ │ │ ├── common/ │ │ │ │ │ └── props.ts │ │ │ │ ├── meta.design.js │ │ │ │ └── meta.ts │ │ │ ├── pie-chart/ │ │ │ │ └── meta.ts │ │ │ ├── pro-dialog/ │ │ │ │ └── meta.ts │ │ │ ├── pro-drawer/ │ │ │ │ └── meta.ts │ │ │ ├── pro-form/ │ │ │ │ ├── common/ │ │ │ │ │ ├── form-base-props.ts │ │ │ │ │ ├── form-item-props.ts │ │ │ │ │ └── props.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── password.ts │ │ │ │ │ └── text-area.ts │ │ │ │ └── meta.ts │ │ │ ├── pro-table/ │ │ │ │ ├── actionColumnFields.ts │ │ │ │ ├── columns-field.ts │ │ │ │ ├── global-style.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── pro-table-meta.ts │ │ │ │ └── utils.ts │ │ │ ├── pro-table-slot/ │ │ │ │ └── meta.ts │ │ │ ├── radio-group/ │ │ │ │ └── meta.js │ │ │ ├── range-picker/ │ │ │ │ └── meta.js │ │ │ ├── rating/ │ │ │ │ ├── meta.js │ │ │ │ └── snippets.js │ │ │ ├── select/ │ │ │ │ ├── meta.js │ │ │ │ └── snippets.js │ │ │ ├── step-form/ │ │ │ │ ├── meta.ts │ │ │ │ └── step-props.ts │ │ │ ├── story-placeholder/ │ │ │ │ └── meta.ts │ │ │ ├── tab-container/ │ │ │ │ ├── meta.ts │ │ │ │ └── props.ts │ │ │ ├── tree-select/ │ │ │ │ ├── meta.js │ │ │ │ └── snippets.js │ │ │ ├── types/ │ │ │ │ └── index.ts │ │ │ ├── upload/ │ │ │ │ └── meta.js │ │ │ ├── utils/ │ │ │ │ ├── form-utils.ts │ │ │ │ ├── index.ts │ │ │ │ └── keybindingService.ts │ │ │ ├── week-picker/ │ │ │ │ └── meta.js │ │ │ └── year-picker/ │ │ │ └── meta.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── common/ │ │ │ │ └── operations/ │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── components/ │ │ │ │ ├── anchor/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── HozAnchor/ │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── VerAnchor/ │ │ │ │ │ │ ├── AnchorList/ │ │ │ │ │ │ │ ├── AnchorLink.tsx │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── theme-dark.scss │ │ │ │ │ └── util.ts │ │ │ │ ├── area-chart/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── bar-chart/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── button/ │ │ │ │ │ ├── Button.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── button-group/ │ │ │ │ │ ├── ButtonGroup.tsx │ │ │ │ │ ├── i18n.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── column-chart/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── container/ │ │ │ │ │ ├── Grid.tsx │ │ │ │ │ ├── Space.tsx │ │ │ │ │ ├── i18n.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── donut-chart/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ellipsis/ │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── theme-dark.scss │ │ │ │ ├── expand-table/ │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── filter/ │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── theme-dark.scss │ │ │ │ ├── line-chart/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── menu/ │ │ │ │ │ ├── Menu.tsx │ │ │ │ │ ├── MenuItem.tsx │ │ │ │ │ ├── MenuItemText.tsx │ │ │ │ │ ├── i18n.ts │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── theme-dark.scss │ │ │ │ ├── menu-button/ │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── scss/ │ │ │ │ │ └── variable.scss │ │ │ │ ├── page-header/ │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── pie-chart/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── pro-card/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── button-group/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── card/ │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── card-collapse/ │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── card-header/ │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── card-section/ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── theme-dark.scss │ │ │ │ ├── pro-dialog/ │ │ │ │ │ ├── dialog.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── pro-drawer/ │ │ │ │ │ ├── drawer.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── pro-form/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── Input.tsx │ │ │ │ │ │ ├── form-item/ │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── next-wrapper.tsx │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── layouts/ │ │ │ │ │ ├── anchor-form/ │ │ │ │ │ │ ├── container.tsx │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── child-form/ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── pro-form/ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── step-form/ │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── pro-table/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── edit-table/ │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── group-table/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── pro-table/ │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── pro-table-action-bar-buttons.tsx │ │ │ │ │ │ ├── pro-table-base/ │ │ │ │ │ │ │ ├── columns/ │ │ │ │ │ │ │ │ ├── useActionColumn.tsx │ │ │ │ │ │ │ │ ├── useIndexColumn.tsx │ │ │ │ │ │ │ │ └── useRowSelection.tsx │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── utils.tsx │ │ │ │ │ │ ├── pro-table-button-group/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── payload-button.ts │ │ │ │ │ │ ├── pro-table-cell/ │ │ │ │ │ │ │ ├── cell-label.tsx │ │ │ │ │ │ │ ├── pro-table-cell.tsx │ │ │ │ │ │ │ └── pro-table-tree-cell.tsx │ │ │ │ │ │ ├── pro-table-cells/ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── pro-table-column/ │ │ │ │ │ │ │ ├── defaultColumnFormatters.tsx │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── pro-table-column-formatter.tsx │ │ │ │ │ │ ├── pro-table-column-title/ │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── pro-table-column-title-filter-panel.tsx │ │ │ │ │ │ │ ├── pro-table-column-title-filter.tsx │ │ │ │ │ │ │ ├── pro-table-column-title-sortter.tsx │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── pro-table-compact-button.tsx │ │ │ │ │ │ ├── pro-table-fullscreen-button.tsx │ │ │ │ │ │ ├── pro-table-setting-button/ │ │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── pro-table-setting-overlay.tsx │ │ │ │ │ │ │ ├── pro-table-setting-sortable-list.tsx │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── pro-table-slot.tsx │ │ │ │ │ │ └── pro-table-zebra-button.tsx │ │ │ │ │ ├── contexts/ │ │ │ │ │ │ ├── pro-table-columns-context.tsx │ │ │ │ │ │ ├── pro-table-columns-filters-context.tsx │ │ │ │ │ │ ├── pro-table-columns-setting-context.tsx │ │ │ │ │ │ ├── pro-table-context.tsx │ │ │ │ │ │ ├── pro-table-pagination-context.tsx │ │ │ │ │ │ ├── pro-table-row-selection-context.tsx │ │ │ │ │ │ └── pro-table-setting-context.tsx │ │ │ │ │ ├── hooks.ts │ │ │ │ │ ├── i18n.ts │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── theme-dark.scss │ │ │ │ │ └── types/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── instance.ts │ │ │ │ ├── segment/ │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── theme-dark.scss │ │ │ │ ├── story-placeholder/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── tab-container/ │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ └── toggle-icon/ │ │ │ │ ├── index.scss │ │ │ │ ├── index.tsx │ │ │ │ └── theme-dark.scss │ │ │ ├── index.scss │ │ │ ├── index.tsx │ │ │ ├── provider/ │ │ │ │ ├── contexts/ │ │ │ │ │ ├── locale-context/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── util.ts │ │ │ │ │ └── theme-context/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.tsx │ │ │ │ └── provider.tsx │ │ │ ├── types/ │ │ │ │ ├── dataSource.ts │ │ │ │ ├── enum.ts │ │ │ │ └── index.ts │ │ │ ├── utils/ │ │ │ │ ├── checkComName.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── currency.ts │ │ │ │ ├── dataSource/ │ │ │ │ │ ├── data-source-label.tsx │ │ │ │ │ ├── hooks.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── formatters.ts │ │ │ │ ├── hooks/ │ │ │ │ │ └── useFiledState.ts │ │ │ │ ├── index.ts │ │ │ │ ├── locales/ │ │ │ │ │ └── index.ts │ │ │ │ ├── object.ts │ │ │ │ ├── util/ │ │ │ │ │ ├── date.js │ │ │ │ │ ├── dom.js │ │ │ │ │ ├── env.js │ │ │ │ │ ├── events.js │ │ │ │ │ ├── focus.js │ │ │ │ │ ├── func.js │ │ │ │ │ ├── guid.js │ │ │ │ │ ├── htmlId.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── keycode.js │ │ │ │ │ ├── log.js │ │ │ │ │ ├── mobile/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── object.js │ │ │ │ │ ├── pick-attrs.js │ │ │ │ │ ├── string.js │ │ │ │ │ └── support.js │ │ │ │ └── variables.scss │ │ │ ├── variables.scss │ │ │ └── variables.tsx │ │ └── tsconfig.json │ └── graph-x6-materials/ │ ├── .editorconfig │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .markdownlint.json │ ├── .markdownlintignore │ ├── .prettierrc.js │ ├── .stylelintignore │ ├── .stylelintrc.js │ ├── README.md │ ├── build.json │ ├── build.lowcode.js │ ├── commitlint.config.js │ ├── f2elint.config.js │ ├── jest.config.js │ ├── lowcode/ │ │ ├── line/ │ │ │ └── meta.ts │ │ ├── send-email/ │ │ │ └── meta.ts │ │ └── start-end/ │ │ └── meta.ts │ ├── package.json │ ├── src/ │ │ ├── components/ │ │ │ ├── line/ │ │ │ │ └── index.tsx │ │ │ ├── send-email/ │ │ │ │ └── index.tsx │ │ │ └── start-end/ │ │ │ └── index.tsx │ │ ├── index.scss │ │ ├── index.tsx │ │ ├── sync-oss.js │ │ ├── variables.scss │ │ └── variables.tsx │ └── tsconfig.json ├── scripts/ │ └── update-readme.js ├── tsconfig.json └── typings.d.ts
SYMBOL INDEX (655 symbols across 209 files)
FILE: packages/antd-lowcode-materials/lowcode/_setters/antd-icon-setter/index.tsx
type IconGroup (line 7) | type IconGroup = 'outlined' | 'filled' | 'two-tone' | 'iconfont';
function getIconfontIconList (line 15) | function getIconfontIconList() {
function getAntdIconList (line 54) | function getAntdIconList() {
function getIconList (line 99) | function getIconList() {
type AntdIconSetterProps (line 113) | interface AntdIconSetterProps {
method render (line 281) | render() {
FILE: packages/antd-lowcode-materials/lowcode/_utils/hoc.tsx
function convertProps (line 5) | function convertProps(
function withWrap (line 23) | function withWrap(Comp: ComponentType<any>) {
function withSingleChild (line 33) | function withSingleChild(
function withSingleFunctionChild (line 50) | function withSingleFunctionChild(Comp: ComponentType<any>) {
function withMomentProps (line 77) | function withMomentProps(
FILE: packages/antd-lowcode-materials/lowcode/_utils/transform-meta.ts
function propConfigToFieldConfig (line 15) | function propConfigToFieldConfig(
function propTypeToSetter (line 67) | function propTypeToSetter(
constant NO_EVENTS (line 233) | const NO_EVENTS = ['beforeUpload'];
constant EVENT_RE (line 234) | const EVENT_RE = /^on|after|before[A-Z][\w]*$/;
FILE: packages/antd-lowcode-materials/lowcode/_utils/utils.ts
function uuid (line 4) | function uuid() {
FILE: packages/antd-lowcode-materials/lowcode/badge/meta.ts
method condition (line 67) | condition(target) {
FILE: packages/antd-lowcode-materials/lowcode/carousel/meta.ts
method getValue (line 73) | getValue(target, fieldValue) {
method setValue (line 81) | setValue(target, value) {
FILE: packages/antd-lowcode-materials/lowcode/collapse/meta.ts
method getValue (line 100) | getValue(target, fieldValue) {
method setValue (line 114) | setValue(target, value) {
FILE: packages/antd-lowcode-materials/lowcode/descriptions/meta.ts
method getValue (line 84) | getValue(target, fieldValue) {
method setValue (line 96) | setValue(target, value) {
FILE: packages/antd-lowcode-materials/lowcode/dropdown/meta.ts
method getValue (line 34) | getValue(target, fieldValue) {
method setValue (line 42) | setValue(target, value) {
FILE: packages/antd-lowcode-materials/lowcode/form.item/meta.ts
method setValue (line 226) | setValue(target: any, value: boolean) {
FILE: packages/antd-lowcode-materials/lowcode/grid.col/meta.ts
function clamp (line 3) | function clamp(value, min, max) {
FILE: packages/antd-lowcode-materials/lowcode/grid.row/meta.ts
method getValue (line 29) | getValue(target) {
method setValue (line 39) | setValue(target, value) {
method getValue (line 66) | getValue(target) {
method setValue (line 76) | setValue(target, value) {
FILE: packages/antd-lowcode-materials/lowcode/list/meta.ts
method setValue (line 142) | setValue(target, value) {
FILE: packages/antd-lowcode-materials/lowcode/menu/utils.ts
method getValue (line 4) | getValue(target, fieldValue) {
method setValue (line 20) | setValue(target, value) {
FILE: packages/antd-lowcode-materials/lowcode/progress/meta.ts
method condition (line 52) | condition(target) {
method condition (line 85) | condition(target) {
method condition (line 106) | condition(target) {
method condition (line 119) | condition(target) {
FILE: packages/antd-lowcode-materials/lowcode/radio.group/meta.ts
method condition (line 132) | condition(target) {
method condition (line 163) | condition(target) {
FILE: packages/antd-lowcode-materials/lowcode/select/meta.ts
method condition (line 170) | condition(target) {
method condition (line 178) | condition(target) {
FILE: packages/antd-lowcode-materials/lowcode/slider/meta.ts
method setValue (line 26) | setValue(target, range) {
method condition (line 53) | condition(target) {
FILE: packages/antd-lowcode-materials/lowcode/slot/view.tsx
class Slot (line 3) | class Slot extends Component {
method render (line 52) | render() {
FILE: packages/antd-lowcode-materials/lowcode/steps/meta.ts
method getValue (line 95) | getValue(target, fieldValue) {
method setValue (line 109) | setValue(target, value) {
FILE: packages/antd-lowcode-materials/lowcode/tabs/meta.ts
method condition (line 260) | condition(target) {
method condition (line 340) | condition(target) {
FILE: packages/antd-lowcode-materials/lowcode/timeline/meta.ts
method getValue (line 85) | getValue(target, fieldValue, a, b, c) {
method setValue (line 96) | setValue(target, value) {
FILE: packages/antd-lowcode-materials/src/components/form/index.tsx
class Form (line 6) | class Form extends Component<any, any> {
method componentDidUpdate (line 9) | componentDidUpdate(prevProps: any) {
method componentDidMount (line 22) | componentDidMount() {
method render (line 44) | render() {
FILE: packages/antd-lowcode-materials/src/components/icon/index.tsx
type IconProps (line 5) | interface IconProps {
FILE: packages/antd-lowcode-materials/src/components/popover/index.tsx
type PopoverProps (line 4) | interface PopoverProps {
FILE: packages/antd-lowcode-materials/src/components/tabs/index.tsx
class Tabs (line 6) | class Tabs extends Component<any> {
method render (line 27) | render() {
FILE: packages/antd-lowcode-materials/src/utils/hoc.tsx
function convertProps (line 5) | function convertProps(
function withWrap (line 23) | function withWrap(Comp: ComponentType<any>) {
function withSingleChild (line 33) | function withSingleChild(
function withSingleFunctionChild (line 50) | function withSingleFunctionChild(Comp: ComponentType<any>) {
function withMomentProps (line 77) | function withMomentProps(
FILE: packages/fusion-lowcode-materials/lowcode/checkbox/meta.design.ts
method condition (line 140) | condition(target) {
FILE: packages/fusion-lowcode-materials/lowcode/checkbox/meta.ts
method condition (line 138) | condition(target) {
FILE: packages/fusion-lowcode-materials/lowcode/menu-button/adaptor.ts
function getButtonLabel (line 174) | function getButtonLabel(buttonItem) {
function getDataFromPlainText (line 207) | function getDataFromPlainText(value) {
FILE: packages/fusion-lowcode-materials/lowcode/menu/adaptor.ts
function getDataFromPlainText (line 169) | function getDataFromPlainText(value) {
FILE: packages/fusion-lowcode-materials/lowcode/responsive-grid/meta.ts
method setValue (line 61) | setValue(target, value) {
FILE: packages/fusion-lowcode-materials/lowcode/slot/view.tsx
class Slot (line 3) | class Slot extends Component {
method render (line 52) | render() {
FILE: packages/fusion-lowcode-materials/lowcode/split-button/adaptor.ts
function getButtonLabel (line 174) | function getButtonLabel(buttonItem) {
function getDataFromPlainText (line 207) | function getDataFromPlainText(value) {
FILE: packages/fusion-lowcode-materials/lowcode/step/adaptor.ts
function createContents (line 32) | function createContents(dataSource) {
function getDataFromPlainText (line 42) | function getDataFromPlainText(value) {
FILE: packages/fusion-lowcode-materials/lowcode/step/meta.ts
method getValue (line 157) | getValue(target, fieldValue) {
method setValue (line 176) | setValue(target, value) {
FILE: packages/fusion-lowcode-materials/lowcode/tab/adaptor.ts
function createContents (line 45) | function createContents(dataSource) {
function getDataFromPlainText (line 55) | function getDataFromPlainText(value) {
FILE: packages/fusion-lowcode-materials/lowcode/tab/meta.ts
method getValue (line 201) | getValue(target: IPublicModelSettingField, value: any) {
method setValue (line 215) | setValue(target: IPublicModelSettingField, value: any) {
method condition (line 349) | condition(target: IPublicModelSettingField) {
FILE: packages/fusion-lowcode-materials/lowcode/timeline/meta.ts
method getValue (line 128) | getValue(target, fieldValue) {
method setValue (line 148) | setValue(target, value) {
FILE: packages/fusion-lowcode-materials/lowcode/transfer/meta.design.ts
method condition (line 217) | condition(target) {
FILE: packages/fusion-lowcode-materials/lowcode/transfer/meta.ts
method condition (line 230) | condition(target) {
method condition (line 247) | condition(target) {
FILE: packages/fusion-lowcode-materials/lowcode/utils/parse-data.ts
constant STATE_MARK (line 1) | const STATE_MARK: any = {
type NodeType (line 9) | enum NodeType {
type ContentType (line 15) | enum ContentType {
type IContent (line 20) | interface IContent {
type INode (line 25) | interface INode {
type IParseOption (line 32) | interface IParseOption {
FILE: packages/fusion-lowcode-materials/scripts/utils.js
method replacer (line 2) | replacer(key, value) {
method reviewer (line 14) | reviewer(key, value) {
method toJson (line 65) | toJson(object, replacer) {
method parseJson (line 68) | parseJson(json) {
method calculateDependencies (line 72) | calculateDependencies(schema, componentsMap) {
FILE: packages/fusion-lowcode-materials/src/components/image/index.tsx
type ImageProps (line 2) | interface ImageProps {
FILE: packages/fusion-lowcode-materials/src/components/link/index.tsx
type LinkProps (line 2) | interface LinkProps {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/field/baseTableField.tsx
type IBaseTableFieldProps (line 6) | interface IBaseTableFieldProps {
class BaseTableField (line 14) | class BaseTableField<P = {}> extends React.Component<IBaseTableFieldProp...
method constructor (line 16) | constructor(props: IBaseTableFieldProps & P) {
method componentWillMount (line 26) | componentWillMount() {
method componentWillReceiveProps (line 32) | componentWillReceiveProps(nextProps: IBaseTableFieldProps) {
method validate (line 38) | validate() {
method convertValueToSet (line 48) | convertValueToSet(value: any) {
method dataChangeHandler (line 52) | dataChangeHandler(value: any) {
method renderField (line 57) | renderField(): ReactNode {
method render (line 61) | render() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/field/customField.tsx
type ICustomFieldProps (line 5) | interface ICustomFieldProps {
class CustomField (line 10) | class CustomField extends BaseTableField<ICustomFieldProps> {
method renderField (line 12) | renderField() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/field/dateField.tsx
class DateField (line 6) | class DateField extends BaseTableField {
method convertValueToSet (line 7) | convertValueToSet(value: MomentInput) {
method dataChangeHandler (line 11) | dataChangeHandler(value: any) {
method renderField (line 16) | renderField() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/field/dateRangeField.tsx
class DateRangeField (line 8) | class DateRangeField extends BaseTableField {
method convertValueToSet (line 9) | convertValueToSet(value: { start?: MomentInput; end?: MomentInput }) {
method dataChangeHandler (line 18) | dataChangeHandler(value: any) {
method renderField (line 31) | renderField() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/field/inputField.tsx
class InputField (line 5) | class InputField extends BaseTableField {
method renderField (line 7) | renderField() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/field/radioField.tsx
type IRadioFieldProps (line 8) | interface IRadioFieldProps {
class RadioField (line 12) | class RadioField extends BaseTableField<IRadioFieldProps> {
method renderField (line 14) | renderField() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/field/selectField.tsx
type ISelectFieldProps (line 6) | interface ISelectFieldProps {
class SelectField (line 10) | class SelectField extends BaseTableField<ISelectFieldProps> {
method renderField (line 12) | renderField() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/webCustomColumnDrawer.tsx
function getSelectedRowKeys (line 7) | function getSelectedRowKeys(columns: IWebCustomColumnDrawerProps['column...
type IWebCustomColumnDrawerProps (line 21) | interface IWebCustomColumnDrawerProps {
type IWebCustomColumnDrawerState (line 32) | interface IWebCustomColumnDrawerState {
class WebCustomColumnDrawer (line 37) | class WebCustomColumnDrawer extends React.Component<IWebCustomColumnDraw...
method constructor (line 42) | constructor(props: IWebCustomColumnDrawerProps) {
method componentWillReceiveProps (line 53) | componentWillReceiveProps(nextProps: IWebCustomColumnDrawerProps) {
method isHidden (line 65) | isHidden(dataKey: string) {
method isLocked (line 75) | isLocked(dataKey: string) {
method isAllColumnsShown (line 90) | isAllColumnsShown() {
method handleCheck (line 98) | handleCheck(checked: boolean, dataKey: string) {
method handleLock (line 112) | handleLock(checked: boolean, dataKey: string) {
method restoreDefault (line 125) | restoreDefault() {
method handleOk (line 133) | handleOk() {
method handleCheckAll (line 159) | handleCheckAll(checked: boolean) {
method renderColumnShown (line 169) | renderColumnShown(value: any, record: any, hasCheckbox: boolean) {
method renderColumnFixed (line 184) | renderColumnFixed(value: any, rowIndex: string, record: any) {
method render (line 193) | render() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/webLinkBar.tsx
type IWebLinkBarProps (line 5) | interface IWebLinkBarProps {
class WebLinkBar (line 11) | class WebLinkBar extends React.Component<IWebLinkBarProps> {
method renderActionButton (line 12) | renderActionButton(item: IAction, index: number) {
method render (line 44) | render() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/webNextTableActionCell.tsx
type IActionColumnItem (line 11) | interface IActionColumnItem {
type IWebNextTableActionCellProps (line 19) | interface IWebNextTableActionCellProps {
class WebNextTableActionCell (line 32) | class WebNextTableActionCell extends React.Component<IWebNextTableAction...
method refreshCellUI (line 33) | refreshCellUI() {
method componentDidMount (line 38) | componentDidMount() {
method render (line 44) | render() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/webNextTableCell.tsx
function canEditCell (line 22) | function canEditCell(canEdit: boolean, rowData: IWebNextTableCellProps['...
type IWebNextTableCellProps (line 34) | interface IWebNextTableCellProps {
type IWebNextTableCellState (line 52) | interface IWebNextTableCellState {
class WebNextTableCell (line 57) | class WebNextTableCell extends React.Component<IWebNextTableCellProps, I...
method constructor (line 59) | constructor(props: IWebNextTableCellProps) {
method setEditable (line 70) | setEditable(v: boolean) {
method getRowValue (line 77) | getRowValue() {
method saveCell (line 84) | saveCell() {
method resetCell (line 93) | resetCell() {
method validateCell (line 101) | validateCell() {
method _fillFields (line 107) | _fillFields(rowData: IWebNextTableCellProps['rowData'], dataKey: IWebN...
method renderCellEditInner (line 112) | renderCellEditInner() {
method render (line 147) | render() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/webPagination.tsx
type IWebPaginationProps (line 8) | interface IWebPaginationProps extends Pick<PaginationProps, 'pageSize' |...
class WebPagination (line 20) | class WebPagination extends React.Component<IWebPaginationProps> {
method render (line 21) | render() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/webRowOrder.tsx
type IWebRowOrderProps (line 7) | interface IWebRowOrderProps {
class WebRowOrder (line 17) | class WebRowOrder extends React.Component<IWebRowOrderProps> {
method render (line 19) | render() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/component/webToolbar.tsx
type IAction (line 10) | interface IAction {
type IWebToolbarProps (line 19) | interface IWebToolbarProps {
class WebToolbar (line 46) | class WebToolbar extends React.Component<IWebToolbarProps> {
method render (line 47) | render() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/index.tsx
type ITableProps (line 17) | interface ITableProps extends IWebTableProps {}
type NextTable (line 19) | interface NextTable extends React.Component<ITableProps>, Omit<IEditable...
method constructor (line 41) | constructor(props: ITableProps) {
method renderTable (line 48) | renderTable() {
method render (line 63) | render() {
class NextTable (line 20) | class NextTable extends React.Component<ITableProps> {
method constructor (line 41) | constructor(props: ITableProps) {
method renderTable (line 48) | renderTable() {
method render (line 63) | render() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/mixin/columnMethods.tsx
type IColumnMethods (line 9) | interface IColumnMethods {
method init (line 19) | init() {
method showCustomColumnDrawer (line 32) | showCustomColumnDrawer() {
method hideCustomColumnDrawer (line 38) | hideCustomColumnDrawer() {
method setOriginalColumns (line 44) | setOriginalColumns(columns) {
method changeCurrentColumns (line 50) | changeCurrentColumns(columns) {
method renderCustomColumnDrawer (line 55) | renderCustomColumnDrawer() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/mixin/commonMethods.ts
type ICommonMethods (line 9) | interface ICommonMethods {
method init (line 23) | init() {
method loadData (line 41) | loadData(this, from) {
method getDataSource (line 52) | getDataSource(this) {
method getDataItem (line 65) | getDataItem(value) {
method onSort (line 73) | onSort(dataIndex, order) {
method onSearch (line 81) | onSearch(searchKey) {
method renderEmptyContent (line 86) | renderEmptyContent() {
method onPageSizeChange (line 95) | onPageSizeChange(pageSize) {
method onPageNumChange (line 100) | onPageNumChange(current) {
method getPaginationProps (line 107) | getPaginationProps() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/mixin/editableMethods.ts
function getDataItemByValue (line 8) | function getDataItemByValue(rowData: any, instance: WebTable) {
function getAndCloneDataItem (line 15) | function getAndCloneDataItem(rowData: any, instance: WebTable) {
function callTableCell (line 19) | function callTableCell(rowData: any, instance: WebTable, callback: (fiel...
type IEditableMethodsProps (line 44) | interface IEditableMethodsProps {
type IEditableMethods (line 50) | interface IEditableMethods {
method init (line 59) | init() {
method validateRow (line 65) | validateRow(rowData) {
method editRow (line 80) | editRow(rowData) {
method saveRow (line 98) | saveRow(rowData) {
method resetRow (line 123) | resetRow(rowData) {
FILE: packages/fusion-lowcode-materials/src/components/next-table/mixin/loadMethods.ts
function loadMethods (line 3) | function loadMethods(target: {[propKey: string]: any}, source: {[propKey...
FILE: packages/fusion-lowcode-materials/src/components/next-table/table/webTable.tsx
type IWebTableProps (line 23) | interface IWebTableProps extends IWebToolbarProps, IEditableMethodsProps...
type IWebTableState (line 57) | interface IWebTableState {
type WebTable (line 70) | interface WebTable extends React.Component<IWebTableProps, IWebTableStat...
method constructor (line 74) | constructor(props: IWebTableProps) {
method componentWillReceiveProps (line 82) | componentWillReceiveProps(nextProps: IWebTableProps) {
method renderColumn (line 99) | renderColumn(column: any) {
method renderColumns (line 136) | renderColumns(columns: IWebTableState['currentColumns']) {
method renderActionColumns (line 151) | renderActionColumns() {
method render (line 184) | render() {
class WebTable (line 71) | class WebTable extends React.Component<IWebTableProps, IWebTableState> {
method constructor (line 74) | constructor(props: IWebTableProps) {
method componentWillReceiveProps (line 82) | componentWillReceiveProps(nextProps: IWebTableProps) {
method renderColumn (line 99) | renderColumn(column: any) {
method renderColumns (line 136) | renderColumns(columns: IWebTableState['currentColumns']) {
method renderActionColumns (line 151) | renderActionColumns() {
method render (line 184) | render() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/buildNextTableMethod.ts
function buildNextTableMethod (line 12) | function buildNextTableMethod(instance: NextTable) {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/buildTableProps.ts
function buildTableProps (line 4) | function buildTableProps(props: IWebTableProps) {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/chainAccess.ts
function safeAccess (line 1) | function safeAccess(obj: { [prop: string]: any }, str: string) {
function safeWrite (line 5) | function safeWrite(obj: { [prop: string]: any }, str: string, value: any) {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/convertData.ts
function convertData (line 4) | function convertData(data: Array<any> | { data?: Array<any>; currentPage...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/delegateFunctions.ts
function delegateFunctions (line 4) | function delegateFunctions(list: any[] | undefined, key: string, context...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/dispatchResizeEvent.ts
function dispatchResizeEvent (line 3) | function dispatchResizeEvent() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/filterActionColumn.ts
function filterActionColumn (line 4) | function filterActionColumn(actionColumn: IWebTableProps['actionColumn']...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/filterActionColumnByDevice.ts
function filterActionColumnByDevice (line 3) | function filterActionColumnByDevice(actionColumn: IWebTableProps['action...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/filterColumn.ts
function filterColumn (line 3) | function filterColumn(columns: IWebCustomColumnDrawerProps['columns'] = ...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/getCleanRowData.ts
function deepCopyExcept (line 5) | function deepCopyExcept(data: any, callback: (value: any, key: string | ...
function getCleanRowData (line 32) | function getCleanRowData(rowData: any) {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/getDataSource.ts
function getDataSource (line 3) | function getDataSource(props: IWebTableProps) {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/hasRowAction.ts
function hasRowAction (line 4) | function hasRowAction(props: IWebTableProps, withoutEdit?: boolean) {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/actionTitleRender.tsx
function actionTitleRender (line 3) | function actionTitleRender(action: IActionColumnItem, rowData: any) {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/cascadeTimestampRender.tsx
function cascadeTimestampRender (line 5) | function cascadeTimestampRender(cellData: any, item: { timeFormatter?: s...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/commonTableCellRender.tsx
function commonTableCellRender (line 11) | function commonTableCellRender(value: any, index: number, rowData: any, ...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/defaultRender.tsx
function defaultRender (line 4) | function defaultRender(value: any, className = '') {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/enumRender.tsx
function enumRender (line 3) | function enumRender(cellData: any, column: {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/errorRender.tsx
function errorRender (line 3) | function errorRender() {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/fileRender.tsx
function fileRender (line 3) | function fileRender(value: {name?: string; url?: string}[]) {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/imageRender.tsx
type IImageRenderColumn (line 3) | interface IImageRenderColumn {
function ImageRender (line 8) | function ImageRender(value: string, column: IImageRenderColumn, rowData:...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/linkRender.tsx
function linkRender (line 5) | function linkRender(value?: { title?: string; href?: string } | string, ...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/moneyRangeRender.tsx
function moneyRangeRender (line 5) | function moneyRangeRender(cellData: {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/moneyRender.tsx
function moneyRender (line 5) | function moneyRender(cellData: {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/timestampRender.tsx
function timestampRender (line 5) | function timestampRender(cellData: string, item: { timeFormatter?: strin...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/render/titleMessageRender.tsx
function titleMessageRender (line 3) | function titleMessageRender(title: ReactNode, message: ReactNode, prefix...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/runColumnActionCallback.ts
function runColumnActionCallback (line 4) | function runColumnActionCallback(param: { action: IActionColumnItem; row...
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/runToolbarActionCallback.ts
function runToolbarActionCallback (line 3) | function runToolbarActionCallback(param: { action: IAction }) {
FILE: packages/fusion-lowcode-materials/src/components/next-table/utils/tableProps.ts
function fetchKey (line 3) | function fetchKey<T>(source: T, keyList: Array<keyof T>): Partial<T> {
FILE: packages/fusion-lowcode-materials/src/components/next-text/index.tsx
class Title (line 10) | class Title extends React.Component {
method render (line 15) | render() {
type TextProps (line 61) | interface TextProps {
FILE: packages/fusion-lowcode-materials/src/components/note-wrapper/index.tsx
type NoteProps (line 18) | interface NoteProps {
FILE: packages/fusion-lowcode-materials/src/components/rich-text/index.tsx
type IContent (line 4) | interface IContent {
type IRichTextProps (line 18) | interface IRichTextProps {
FILE: packages/fusion-lowcode-materials/src/components/video/index.tsx
type Props (line 3) | interface Props {
FILE: packages/fusion-lowcode-materials/src/utils.js
method replacer (line 2) | replacer(key, value) {
method reviewer (line 14) | reviewer(key, value) {
method toJson (line 65) | toJson(object, replacer) {
method parseJson (line 68) | parseJson(json) {
method calculateDependencies (line 72) | calculateDependencies(schema, componentsMap) {
FILE: packages/fusion-ui/docs/.dumi/theme/builtins/API.tsx
constant LOCALE_TEXTS (line 7) | const LOCALE_TEXTS = {
FILE: packages/fusion-ui/docs/.umirc.ts
method chainWebpack (line 14) | chainWebpack(memo) {
FILE: packages/fusion-ui/lowcode/common/actions.ts
method accessor (line 49) | accessor() {
method mutator (line 53) | mutator(value) {
method setter (line 60) | setter() {
method hidden (line 75) | hidden() {
method hidden (line 89) | hidden() {
method setter (line 93) | setter() {
FILE: packages/fusion-ui/lowcode/edit-table/meta.ts
function editTablePropsFilter (line 4) | function editTablePropsFilter(prop: any) {
FILE: packages/fusion-ui/lowcode/group-table/meta.ts
method hidden (line 235) | hidden() {
FILE: packages/fusion-ui/lowcode/pro-form/common/form-base-props.ts
function getInitialPropsForFormItem (line 9) | function getInitialPropsForFormItem(componentName, currentComponentProps) {
FILE: packages/fusion-ui/lowcode/pro-table/pro-table-meta.ts
method hidden (line 126) | hidden() {
FILE: packages/fusion-ui/lowcode/pro-table/utils.ts
constant PRO_TABLE_COLUMN_MOCK_VALUES (line 5) | const PRO_TABLE_COLUMN_MOCK_VALUES = {
FILE: packages/fusion-ui/lowcode/step-form/step-props.ts
method getValue (line 72) | getValue(target) {
method setValue (line 85) | setValue(target, value) {
FILE: packages/fusion-ui/lowcode/story-placeholder/meta.ts
type INode (line 24) | interface INode extends IPublicModelNode {
FILE: packages/fusion-ui/lowcode/tab-container/props.ts
method getValue (line 53) | getValue(target) {
method setValue (line 67) | setValue(target, value) {
FILE: packages/fusion-ui/lowcode/types/index.ts
type ISnippet (line 3) | interface ISnippet extends IPublicTypeSnippet {
type IComponentDescription (line 8) | interface IComponentDescription extends IPublicTypeComponentMetadata {
type IProps (line 12) | interface IProps extends IPublicTypeFieldConfig {
type SetterProps (line 19) | interface SetterProps {
type IAssets (line 32) | interface IAssets {
FILE: packages/fusion-ui/lowcode/utils/index.ts
function isJSExpression (line 3) | function isJSExpression(data: any) {
FILE: packages/fusion-ui/lowcode/utils/keybindingService.ts
type cbFunc (line 1) | interface cbFunc {
type IKeyBinding (line 5) | interface IKeyBinding {
class KeybindingService (line 30) | class KeybindingService {
method constructor (line 35) | constructor() {
method bind (line 41) | bind(kb: IKeyBinding) {
method execCommand (line 63) | execCommand(command: string, node: any, ...rest: any[]) {
method getSelectedNode (line 77) | private getSelectedNode() {
method isValidNode (line 81) | private isValidNode(node: any, kb: IKeyBinding) {
FILE: packages/fusion-ui/src/common/operations/index.tsx
type OperationProps (line 12) | interface OperationProps {
FILE: packages/fusion-ui/src/components/anchor/components/HozAnchor/index.tsx
class HozAnchor (line 8) | class HozAnchor extends React.Component<Omit<AnchorProps, 'direction'>> {
method componentDidMount (line 16) | componentDidMount() {
method componentWillUnmount (line 27) | componentWillUnmount() {
method render (line 53) | render() {
FILE: packages/fusion-ui/src/components/anchor/components/VerAnchor/AnchorList/AnchorLink.tsx
type AnchorLinkProps (line 5) | interface AnchorLinkProps {
class AnchorLink (line 13) | class AnchorLink extends React.Component<AnchorLinkProps> {
method render (line 20) | render() {
FILE: packages/fusion-ui/src/components/anchor/components/VerAnchor/AnchorList/index.tsx
type AnchorListProps (line 5) | interface AnchorListProps {
type AnchorTocState (line 11) | interface AnchorTocState {
class AnchorList (line 40) | class AnchorList extends React.Component<AnchorListProps, AnchorTocState> {
method constructor (line 55) | constructor(props) {
method render (line 64) | render() {
FILE: packages/fusion-ui/src/components/anchor/components/VerAnchor/index.tsx
class VerAnchor (line 8) | class VerAnchor extends React.Component<Omit<AnchorProps, 'direction'>> {
method componentDidMount (line 23) | componentDidMount() {
method componentWillUnmount (line 34) | componentWillUnmount() {
method render (line 69) | render() {
FILE: packages/fusion-ui/src/components/anchor/index.tsx
type LinkItemData (line 7) | interface LinkItemData {
type AnchorProps (line 19) | interface AnchorProps extends Omit<React.HTMLAttributes<HTMLDivElement>,...
function getScrollElement (line 80) | function getScrollElement(element: HTMLElement) {
function elementCanScroll (line 88) | function elementCanScroll(element: any) {
class Anchor (line 103) | class Anchor extends React.Component<AnchorProps> {
method render (line 121) | render() {
FILE: packages/fusion-ui/src/components/anchor/util.ts
function getScroll (line 59) | function getScroll(node, isVertical) {
FILE: packages/fusion-ui/src/components/area-chart/index.tsx
type Iprops (line 4) | type Iprops = React.ComponentProps<typeof BizAreaChart>;
function AreaChart (line 6) | function AreaChart(props:Iprops) {
FILE: packages/fusion-ui/src/components/bar-chart/index.tsx
type Iprops (line 4) | type Iprops = React.ComponentProps<typeof BizBarChart>;
function BarChart (line 6) | function BarChart(props:Iprops) {
FILE: packages/fusion-ui/src/components/button-group/ButtonGroup.tsx
type ButtonGroupProps (line 9) | interface ButtonGroupProps extends SpaceProps {
class ButtonGroup (line 40) | class ButtonGroup extends React.Component<ButtonGroupProps> {
method renderVisible (line 130) | renderVisible(dataSource) {
method renderCollapse (line 146) | renderCollapse(dataSource) {
method render (line 169) | render() {
FILE: packages/fusion-ui/src/components/button/Button.tsx
type ButtonProps (line 6) | interface ButtonProps extends NextButtonProps {
type TooltipProps (line 14) | interface TooltipProps {
type ButtonState (line 19) | interface ButtonState {
class Button (line 25) | class Button extends React.Component<ButtonProps, ButtonState> {
method constructor (line 43) | constructor(props: ButtonProps) {
method render (line 77) | render() {
FILE: packages/fusion-ui/src/components/column-chart/index.tsx
type Iprops (line 4) | type Iprops = React.ComponentProps<typeof BizColumnChart>;
function ColumnChart (line 6) | function ColumnChart(props: Iprops) {
FILE: packages/fusion-ui/src/components/container/Grid.tsx
type GridProps (line 5) | interface GridProps {
constant DEFAULT_COLS (line 50) | const DEFAULT_COLS = 4;
FILE: packages/fusion-ui/src/components/container/Space.tsx
type Direction (line 6) | type Direction = 'ver' | 'hoz' | 'hoz-reverse';
type SpaceProps (line 7) | interface SpaceProps extends Omit<BoxProps, 'direction'> {
class Space (line 23) | class Space extends React.Component<SpaceProps> {
method render (line 60) | render() {
FILE: packages/fusion-ui/src/components/donut-chart/index.tsx
type Iprops (line 27) | type Iprops = React.ComponentProps<typeof MyChart>;
function DonutChart (line 30) | function DonutChart(props: Iprops) {
FILE: packages/fusion-ui/src/components/ellipsis/index.tsx
type FusionEllipsisProps (line 6) | interface FusionEllipsisProps {
type FusionEllipsisState (line 28) | interface FusionEllipsisState {
class Ellipsis (line 32) | class Ellipsis extends React.Component<FusionEllipsisProps, FusionEllips...
method constructor (line 43) | constructor(props) {
method componentDidMount (line 50) | componentDidMount() {
method render (line 76) | render() {
type TextClipProps (line 129) | interface TextClipProps {
FILE: packages/fusion-ui/src/components/expand-table/index.tsx
type ExpandTableDataProps (line 6) | interface ExpandTableDataProps {
type ExpandTableProps (line 10) | interface ExpandTableProps extends ProTableProps {
class ExpandTable (line 20) | class ExpandTable extends React.Component<ExpandTableProps> {
method render (line 28) | render() {
FILE: packages/fusion-ui/src/components/filter/index.tsx
type IFilterConfig (line 16) | interface IFilterConfig {
type FilterProps (line 21) | interface FilterProps extends GridProps {
FILE: packages/fusion-ui/src/components/line-chart/index.tsx
type Iprops (line 4) | type Iprops = React.ComponentProps<typeof BizLineChart>;
function LineChart (line 6) | function LineChart(props: Iprops) {
FILE: packages/fusion-ui/src/components/menu-button/index.tsx
type MenuButtonProps (line 10) | interface MenuButtonProps extends NextMenuButtonProps {
type MenuButtonState (line 17) | interface MenuButtonState {
class MenuButton (line 25) | class MenuButton extends React.Component<MenuButtonProps, MenuButtonStat...
method getDerivedStateFromProps (line 40) | static getDerivedStateFromProps(props) {
method constructor (line 54) | constructor(props) {
method render (line 108) | render() {
FILE: packages/fusion-ui/src/components/menu/Menu.tsx
type MenuItemProps (line 18) | interface MenuItemProps {
type MenuProps (line 46) | interface MenuProps extends Omit<NextMenuProps, 'hasSelectedIcon' | 'isS...
class Menu (line 65) | class Menu extends React.Component<MenuProps> {
method renderChildren (line 68) | renderChildren(dataSource) {
method renderLoadingContent (line 115) | renderLoadingContent() {
method renderErrorContent (line 119) | renderErrorContent() {
method render (line 133) | render() {
FILE: packages/fusion-ui/src/components/menu/MenuItem.tsx
type SelectableItemProps (line 14) | interface SelectableItemProps {
class SelectableItem (line 63) | class SelectableItem extends React.Component<SelectableItemProps> {
method constructor (line 95) | constructor(props) {
method getSelected (line 101) | getSelected() {
method handleSelect (line 108) | handleSelect(e) {
method handleKeyDown (line 117) | handleKeyDown(e) {
method handleClick (line 125) | handleClick(e) {
method render (line 131) | render() {
FILE: packages/fusion-ui/src/components/menu/MenuItemText.tsx
type MenuItemTextProps (line 4) | type MenuItemTextProps = React.HTMLAttributes<HTMLElement>;
class MenuItemText (line 6) | class MenuItemText extends React.Component<MenuItemTextProps> {
method componentDidMount (line 13) | componentDidMount() {
method render (line 21) | render() {
FILE: packages/fusion-ui/src/components/page-header/index.tsx
type PageHeaderProps (line 10) | interface PageHeaderProps {
FILE: packages/fusion-ui/src/components/pie-chart/index.tsx
type IProps (line 9) | type IProps = React.ComponentProps<typeof MyPie>;
function PieChart (line 11) | function PieChart(props: IProps) {
FILE: packages/fusion-ui/src/components/pro-card/components/button-group/index.tsx
type ButtonDataSource (line 4) | interface ButtonDataSource {
type CardButtonGroupProps (line 8) | interface CardButtonGroupProps {
FILE: packages/fusion-ui/src/components/pro-card/components/card-header/index.tsx
function formatActionButtons (line 11) | function formatActionButtons(actionButtons) {
type CardTagProps (line 22) | interface CardTagProps {
type CardHeaderProps (line 27) | interface CardHeaderProps {
FILE: packages/fusion-ui/src/components/pro-card/components/card-section/index.tsx
type CardSectionProps (line 10) | interface CardSectionProps extends Omit<React.HTMLAttributes<HTMLDivElem...
FILE: packages/fusion-ui/src/components/pro-card/components/card/index.tsx
type IOperationConfig (line 10) | interface IOperationConfig {
type IOperationItem (line 16) | interface IOperationItem {
type CardProps (line 22) | interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, '...
FILE: packages/fusion-ui/src/components/pro-dialog/dialog.tsx
constant ACTION_MAP (line 12) | const ACTION_MAP: Record<string | number, any> = {
function getAction (line 17) | function getAction(action: string | number) {
type DialogProps (line 21) | interface DialogProps extends NextDialogProps {
type DialogOperationsProps (line 35) | interface DialogOperationsProps extends OperationProps {
type DialogState (line 40) | interface DialogState {
function Dialog (line 74) | function Dialog(props: DialogProps) {
class InnerProDialog (line 154) | class InnerProDialog extends React.Component {
method constructor (line 159) | constructor(props: DialogProps) {
method render (line 220) | render() {
FILE: packages/fusion-ui/src/components/pro-drawer/drawer.tsx
constant ACTION_MAP (line 14) | const ACTION_MAP: Record<string | number, any> = {
function getAction (line 19) | function getAction(action: string | number) {
type DrawerProps (line 22) | interface DrawerProps extends NextDrawerProps {
type DrawerOperationsProps (line 35) | interface DrawerOperationsProps extends OperationProps {
function Drawer (line 85) | function Drawer(props: DrawerProps) {
class InnerProDrawer (line 179) | class InnerProDrawer extends React.Component<DrawerProps> {
method constructor (line 184) | constructor(props: DrawerProps) {
method render (line 245) | render() {
FILE: packages/fusion-ui/src/components/pro-form/components/form-item/index.tsx
type FormItemTypes (line 8) | enum FormItemTypes {
type ProFormItemProps (line 14) | interface ProFormItemProps extends ItemProps {
FILE: packages/fusion-ui/src/components/pro-form/components/next-wrapper.tsx
function wrapper (line 36) | function wrapper(NextFormComponent: any, displayName: string) {
FILE: packages/fusion-ui/src/components/pro-form/layouts/anchor-form/container.tsx
function AnchorContainer (line 3) | function AnchorContainer() {
FILE: packages/fusion-ui/src/components/pro-form/layouts/anchor-form/index.tsx
type AnchorFormProps (line 9) | interface AnchorFormProps {
type AnchorFormItemProps (line 26) | type AnchorFormItemProps = LinkItemData;
function renderAnchor (line 28) | function renderAnchor(props: AnchorFormProps, formArray: Map<string, Anc...
function renderForm (line 41) | function renderForm(
function AnchorForm (line 75) | function AnchorForm(props: AnchorFormProps, ref: any) {
FILE: packages/fusion-ui/src/components/pro-form/layouts/child-form/index.tsx
type ChildFormProps (line 6) | interface ChildFormProps extends ProFormProps {
FILE: packages/fusion-ui/src/components/pro-form/layouts/pro-form/index.tsx
function getVisibleChildren (line 15) | function getVisibleChildren(children: any[]) {
type ProFormProps (line 21) | interface ProFormProps extends FormProps {
FILE: packages/fusion-ui/src/components/pro-form/layouts/step-form/index.tsx
type StepFormProps (line 7) | interface StepFormProps extends StepProps {
type StepFormItemProps (line 17) | interface StepFormItemProps extends ItemProps {
constant ACTION_MAP (line 21) | const ACTION_MAP = {
function getAction (line 32) | function getAction(action: string | number) {
function renderStep (line 36) | function renderStep(
function renderForm (line 87) | function renderForm(
function StepForm (line 162) | function StepForm(props: StepFormProps, ref) {
FILE: packages/fusion-ui/src/components/pro-table/components/edit-table/index.tsx
type EditTableProps (line 7) | interface EditTableProps extends ProTableProps {
function actionColumnButtonsHidden (line 28) | function actionColumnButtonsHidden(showInEdit) {
method onClick (line 37) | onClick(e, payload) {
method onClick (line 52) | onClick(e, payload) {
method onClick (line 68) | onClick(e, payload) {
method onClick (line 89) | onClick(e, payload) {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-base/columns/useActionColumn.tsx
type ActionColumnProps (line 17) | type ActionColumnProps = Pick<
type ActionColumnButtonGroupProps (line 82) | interface ActionColumnButtonGroupProps {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-base/columns/useIndexColumn.tsx
type IndexColumnProps (line 6) | type IndexColumnProps = Pick<ProTableBaseProps, 'indexColumn' | 'indexCo...
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-base/utils.tsx
function getColumnKey (line 5) | function getColumnKey(column: ProTableColumnProps, columnKey?: string) {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-button-group/index.tsx
type ProTableButtonGroupProps (line 9) | interface ProTableButtonGroupProps<Payload = unknown> extends SpaceProps {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-button-group/payload-button.ts
type PayloadButtonProps (line 5) | interface PayloadButtonProps<Payload = unknown>
function isPayloadButtonTruth (line 24) | function isPayloadButtonTruth<Payload>(
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-cell/cell-label.tsx
type CellLabelProps (line 10) | interface CellLabelProps extends React.HTMLProps<HTMLDivElement> {
type CellToolTipProps (line 43) | interface CellToolTipProps {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-cell/pro-table-cell.tsx
type ProTableCellProps (line 9) | interface ProTableCellProps extends ProTableCellCommonProps, ProTableCol...
class ProTableCell (line 32) | class ProTableCell extends React.Component<ProTableCellProps> {
method shouldComponentUpdate (line 41) | shouldComponentUpdate(nextProps: ProTableCellProps) {
method render (line 49) | render() {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-cell/pro-table-tree-cell.tsx
type ProTableTreeCellProps (line 7) | interface ProTableTreeCellProps extends ProTableCellProps {
constant KEYCODE (line 10) | const KEYCODE = {
class ProTableTreeCell (line 43) | class ProTableTreeCell extends React.Component<ProTableTreeCellProps> {
method render (line 71) | render() {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-cells/utils.ts
type StatusColorType (line 3) | type StatusColorType =
type FormatColor (line 13) | type FormatColor =
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-column-title/index.tsx
type ProTableColumnTitlePropsKey (line 13) | type ProTableColumnTitlePropsKey =
type ProTableColumnTitleProps (line 25) | type ProTableColumnTitleProps = Pick<ProTableColumnProps, ProTableColumn...
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-column-title/pro-table-column-title-filter-panel.tsx
type ProTableColumnFilterPanelProps (line 17) | interface ProTableColumnFilterPanelProps {
type FilterMenuProps (line 160) | interface FilterMenuProps extends Omit<MenuProps, 'dataSource'> {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-column-title/pro-table-column-title-filter.tsx
type ProTableColumnTitleFilterProps (line 11) | interface ProTableColumnTitleFilterProps
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-column-title/pro-table-column-title-sortter.tsx
type ProTableColumnTitleSortterProps (line 6) | interface ProTableColumnTitleSortterProps {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-column/index.tsx
type ColumnWithSetting (line 11) | interface ColumnWithSetting {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-column/pro-table-column-formatter.tsx
type CellFactoryCellOptions (line 10) | interface CellFactoryCellOptions {
type ProTableColumnFormatterOptions (line 24) | interface ProTableColumnFormatterOptions {
type ProTableColumnFormatter (line 44) | type ProTableColumnFormatter = (
class ProTableColumnFormatterManager (line 48) | class ProTableColumnFormatterManager {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-fullscreen-button.tsx
type ProTableFullscreenButtonProps (line 8) | interface ProTableFullscreenButtonProps {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-setting-button/index.tsx
type ProTableSettingButtonProps (line 9) | interface ProTableSettingButtonProps {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-setting-button/pro-table-setting-overlay.tsx
type ProTableSettingOverlayActionType (line 14) | type ProTableSettingOverlayActionType = 'init' | 'input' | 'resize';
type ProTableSettingOverlayValue (line 15) | type ProTableSettingOverlayValue = Record<string, ProTableSettingItem>;
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-setting-button/pro-table-setting-sortable-list.tsx
type ProTableSettingSortableListProps (line 10) | interface ProTableSettingSortableListProps {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-setting-button/types.ts
type ProTableSettingItem (line 1) | interface ProTableSettingItem {
type ProTableSettingActionType (line 21) | type ProTableSettingActionType = 'init' | 'input' | 'resize';
type ProTableSettingMenuItem (line 23) | interface ProTableSettingMenuItem {
FILE: packages/fusion-ui/src/components/pro-table/components/pro-table-slot.tsx
type ProTableSlotPosition (line 5) | type ProTableSlotPosition =
type ProTableSlotProps (line 15) | interface ProTableSlotProps {
type ProTableSlotsOptions (line 33) | interface ProTableSlotsOptions {
FILE: packages/fusion-ui/src/components/pro-table/contexts/pro-table-columns-context.tsx
type ProTableColumnsValue (line 17) | type ProTableColumnsValue = ReturnType<typeof useProTableColumnsValue>;
FILE: packages/fusion-ui/src/components/pro-table/contexts/pro-table-columns-filters-context.tsx
type UseColumnsFilterOptions (line 7) | type UseColumnsFilterOptions = Pick<
type ProTableColumnsFilterValue (line 133) | type ProTableColumnsFilterValue = ReturnType<typeof useColumnsFilterValue>;
FILE: packages/fusion-ui/src/components/pro-table/contexts/pro-table-columns-setting-context.tsx
type ProTableColumnsSettingValue (line 91) | type ProTableColumnsSettingValue = ReturnType<typeof useColumnsSettingVa...
FILE: packages/fusion-ui/src/components/pro-table/contexts/pro-table-context.tsx
type ProTableValue (line 21) | type ProTableValue = ReturnType<typeof useProTableValue>;
FILE: packages/fusion-ui/src/components/pro-table/contexts/pro-table-pagination-context.tsx
type ProTablePaginationValue (line 39) | type ProTablePaginationValue = ReturnType<typeof useProTablePaginationVa...
FILE: packages/fusion-ui/src/components/pro-table/contexts/pro-table-setting-context.tsx
type UseProTableSettingOptions (line 6) | type UseProTableSettingOptions = Pick<ProTableBaseProps, 'isZebra' | 'si...
type ProTableSettingValue (line 30) | type ProTableSettingValue = ReturnType<typeof useProTableSettingValue>;
FILE: packages/fusion-ui/src/components/pro-table/hooks.ts
type TableParams (line 9) | interface TableParams {
type FilterParams (line 14) | type FilterParams = Record<string, any>;
type UseProTableResult (line 16) | interface UseProTableResult<Item> extends Omit<Result<Item>, 'tableProps...
type UseProTableServiceParams (line 28) | interface UseProTableServiceParams {
type UseProTableService (line 48) | type UseProTableService<Item = unknown> = (params: UseProTableServicePar...
type UseProTableOptions (line 54) | interface UseProTableOptions<Item = unknown>
FILE: packages/fusion-ui/src/components/pro-table/types/index.ts
type ProTableCellCommonProps (line 25) | interface ProTableCellCommonProps {
type ProTableRowInstance (line 42) | interface ProTableRowInstance {
type ProTablePaginationInstance (line 51) | interface ProTablePaginationInstance {
type ProTableInstance (line 63) | interface ProTableInstance {
type ProTableColumnProps (line 67) | interface ProTableColumnProps extends ProTableCellCommonProps, Omit<Colu...
type SearchParam (line 147) | interface SearchParam {
type FilterParam (line 151) | interface FilterParam {
type SortValue (line 156) | type SortValue = 'desc' | 'asc' | 'default';
type ProTableColumnFilterValue (line 157) | interface ProTableColumnFilterValue {
type ProTableColumnsFilterValue (line 162) | type ProTableColumnsFilterValue = Record<string, ProTableColumnFilterVal...
type ProTableRowRecord (line 164) | type ProTableRowRecord = Record<string, any>;
type ProTableRowKey (line 165) | type ProTableRowKey = string;
type ProTableRowSelectionInstance (line 166) | interface ProTableRowSelectionInstance {
type ProTableRowSelectionType (line 188) | type ProTableRowSelectionType = 'SELECTION_ALL' | 'SELECTION_NONE';
type ProTableRowPayload (line 190) | type ProTableRowPayload = ProTableRowInstance;
type ProTablePayload (line 191) | type ProTablePayload = ProTableInstance;
type ActionColumnButton (line 193) | interface ActionColumnButton
type ProTableActionColumnButtons (line 208) | interface ProTableActionColumnButtons
type ProTableActionBarButtons (line 212) | type ProTableActionBarButtons = ProTableButtonGroupProps<ProTablePayload>;
type ProTableBaseProps (line 213) | interface ProTableBaseProps
type ProTableColumnsSetting (line 421) | type ProTableColumnsSetting = Record<string, ProTableSettingItem>;
type ProTableSettingButtonType (line 422) | type ProTableSettingButtonType = 'compact' | 'zebra' | 'fullscreen' | 's...
type ProTableProps (line 423) | interface ProTableProps
FILE: packages/fusion-ui/src/components/segment/index.tsx
type SegmentDataSourceItem (line 7) | interface SegmentDataSourceItem {
type SegmentProps (line 12) | interface SegmentProps {
FILE: packages/fusion-ui/src/components/story-placeholder/index.tsx
type IContent (line 4) | interface IContent {
type IStoryPlaceholderProps (line 18) | interface IStoryPlaceholderProps {
FILE: packages/fusion-ui/src/components/tab-container/index.tsx
type ITabContainerProps (line 5) | interface ITabContainerProps extends React.ComponentProps<typeof Tab> {
FILE: packages/fusion-ui/src/components/toggle-icon/index.tsx
type ToggleIconProps (line 23) | interface ToggleIconProps extends React.HtmlHTMLAttributes<HTMLSpanEleme...
FILE: packages/fusion-ui/src/provider/contexts/locale-context/index.ts
type LanguageType (line 5) | type LanguageType = 'zh-CN' | 'en-US';
constant DEFAULT_LANGUAGE (line 6) | const DEFAULT_LANGUAGE: LanguageType = 'zh-CN';
type I18nBundlesType (line 7) | type I18nBundlesType = typeof defaultI18nBundles;
type I18nBundlesNames (line 12) | type I18nBundlesNames = keyof I18nBundlesType;
type ComponentI18nBundleType (line 15) | type ComponentI18nBundleType<Name extends I18nBundlesNames> = I18nBundle...
type CustomI18nBundles (line 20) | type CustomI18nBundles = {
type LocaleContextValue (line 64) | interface LocaleContextValue {
FILE: packages/fusion-ui/src/provider/contexts/locale-context/util.ts
function getCookieLanguage (line 31) | function getCookieLanguage() {
FILE: packages/fusion-ui/src/provider/contexts/theme-context/index.ts
type ThemeType (line 3) | type ThemeType = 'light' | 'dark';
type ThemeContextValue (line 4) | interface ThemeContextValue {
FILE: packages/fusion-ui/src/provider/provider.tsx
type GlobalConfig (line 24) | type GlobalConfig = LocaleContextValue & ThemeContextValue;
type GlobalConfigOptions (line 54) | interface GlobalConfigOptions {
type GlobalHocOption (line 61) | interface GlobalHocOption extends GlobalConfigOptions {
function withGlobal (line 80) | function withGlobal<Props>(
function withBizGlobal (line 104) | function withBizGlobal<Props>(
FILE: packages/fusion-ui/src/types/dataSource.ts
type DefaultLabel (line 1) | type DefaultLabel = string | number | boolean;
type DefaultValue (line 2) | type DefaultValue = string | number | boolean;
type DefaultKey (line 3) | type DefaultKey = string | number;
type DataSourceNode (line 4) | interface DataSourceNode<Label = DefaultLabel, Value = DefaultValue> {
type DataSource (line 12) | type DataSource<Label = DefaultLabel, Value = DefaultValue> = Array<
type PromiseOrSync (line 16) | type PromiseOrSync<T> = Promise<T> | T;
type DataSourceService (line 17) | type DataSourceService<Label = DefaultLabel, Value = DefaultValue> = () ...
type DataSourceOnLoadNode (line 21) | type DataSourceOnLoadNode<Label = DefaultLabel, Value = DefaultValue> = (
type LooseDataSource (line 24) | type LooseDataSource<Label = DefaultLabel, Value = DefaultValue> = Array<
type AsyncDataSource (line 28) | type AsyncDataSource<Label = DefaultLabel, Value = DefaultValue> =
FILE: packages/fusion-ui/src/types/enum.ts
type StatusType (line 1) | type StatusType = 'success' | 'error' | 'warning' | 'notice' | 'help' | ...
type ColorType (line 11) | type ColorType = 'success' | 'error' | 'warning' | 'notice' | 'help' | '...
FILE: packages/fusion-ui/src/utils/currency.ts
method getFormatDetails (line 92) | getFormatDetails(p) {
method getFormatter (line 106) | getFormatter(n, fd) {
method formatAmount (line 128) | formatAmount(value, currency = 'CNY', config = {}) {
FILE: packages/fusion-ui/src/utils/dataSource/data-source-label.tsx
type DataSourceLabelProps (line 6) | interface DataSourceLabelProps<Label = DefaultLabel, Value = DefaultValu...
FILE: packages/fusion-ui/src/utils/dataSource/hooks.ts
type UseDataSourceOptions (line 6) | interface UseDataSourceOptions<Label = DefaultLabel, Value = DefaultValu...
type UseDataSourceNodeOptions (line 14) | interface UseDataSourceNodeOptions<Label = DefaultLabel, Value = Default...
FILE: packages/fusion-ui/src/utils/hooks/useFiledState.ts
type FiledState (line 4) | interface FiledState<Value, OnChangeOtherArgs extends any[]> {
type SetFiledState (line 9) | type SetFiledState<Value, OnChangeOtherArgs extends any[]> = (
function useFiledState (line 13) | function useFiledState<Value = unknown, OnChangeOtherArgs extends any[] ...
FILE: packages/fusion-ui/src/utils/index.ts
function arrayToString (line 8) | function arrayToString(ar, symbolChar) {
function getRandomIntInclusive (line 19) | function getRandomIntInclusive(min, max) {
function getCookie (line 25) | function getCookie(name) {
function getLanguage (line 35) | function getLanguage() {
function loadScriptAndCss (line 41) | function loadScriptAndCss({ jses = [], csses = [] }, once) {
function gid (line 80) | function gid(len) {
function getId (line 111) | function getId() {
function clone (line 139) | function clone(obj) {
function measureText (line 147) | function measureText(text, style) {
function getUrlParam (line 176) | function getUrlParam(name) {
function transferProps (line 203) | function transferProps(props, keys) {
function isEditorEnv (line 212) | function isEditorEnv(props) {
function uniqueArray (line 218) | function uniqueArray(arr) {
function getContentParentElement (line 225) | function getContentParentElement(ele: any, i = 0): any {
FILE: packages/fusion-ui/src/utils/object.ts
function typeOf (line 13) | function typeOf(obj) {
function isArrayLike (line 27) | function isArrayLike(obj) {
function isPromise (line 43) | function isPromise(obj) {
function isPlainObject (line 57) | function isPlainObject(obj) {
function shallowEqual (line 91) | function shallowEqual(objA, objB, compare) {
function each (line 149) | function each(obj, callback, direction) {
function pickDefined (line 182) | function pickDefined(obj: any) {
function pickOthers (line 202) | function pickOthers(holdProps, props) {
function pickProps (line 225) | function pickProps(holdProps, props) {
function pickAttrsWith (line 247) | function pickAttrsWith(holdProps, prefix) {
function isNil (line 264) | function isNil(value) {
function deepMerge (line 276) | function deepMerge(target, ...sources) {
function isFunctionComponent (line 308) | function isFunctionComponent(component) {
function isClassComponent (line 320) | function isClassComponent(component) {
function isReactFragment (line 332) | function isReactFragment(component) {
FILE: packages/fusion-ui/src/utils/util/date.js
function _interopRequireDefault (line 35) | function _interopRequireDefault(obj) {
FILE: packages/fusion-ui/src/utils/util/dom.js
function _interopRequireDefault (line 26) | function _interopRequireDefault(obj) {
function hasClass (line 46) | function hasClass(node, className) {
function addClass (line 67) | function addClass(node, className, _force) {
function removeClass (line 88) | function removeClass(node, className, _force) {
function toggleClass (line 110) | function toggleClass(node, className) {
function _getComputedStyle (line 166) | function _getComputedStyle(node) {
constant PIXEL_PATTERN (line 170) | const PIXEL_PATTERN = /margin|padding|width|height|max|min|offset|size|t...
function _getStyleValue (line 180) | function _getStyleValue(node, type, value) {
function getStyle (line 208) | function getStyle(node, name) {
function setStyle (line 246) | function setStyle(node, name, value) {
function scrollbar (line 273) | function scrollbar() {
function getOffset (line 299) | function getOffset(node) {
function getPixels (line 313) | function getPixels(len) {
function getClosest (line 341) | function getClosest(dom, selector) {
function getMatches (line 367) | function getMatches(dom, selector) {
FILE: packages/fusion-ui/src/utils/util/events.js
function _off (line 13) | function _off(node, eventName, callback, useCapture) {
function on (line 36) | function on(node, eventName, callback, useCapture) {
function once (line 57) | function once(node, eventName, callback, useCapture) {
FILE: packages/fusion-ui/src/utils/util/focus.js
function _interopRequireDefault (line 16) | function _interopRequireDefault(obj) {
function _isVisible (line 30) | function _isVisible(node) {
function _isFocusable (line 49) | function _isFocusable(node) {
function getFocusNodeList (line 73) | function getFocusNodeList(node) {
function saveLastFocusNode (line 97) | function saveLastFocusNode() {
function clearLastFocusNode (line 104) | function clearLastFocusNode() {
function backLastFocusNode (line 111) | function backLastFocusNode() {
function limitTabRange (line 127) | function limitTabRange(node, e) {
FILE: packages/fusion-ui/src/utils/util/func.js
function makeChain (line 33) | function makeChain() {
function bindCtx (line 65) | function bindCtx(ctx, fns, ns) {
function promiseCall (line 85) | function promiseCall(ret, success) {
function invoke (line 110) | function invoke(target, method, args) {
function renderNode (line 115) | function renderNode(render, defaultRender) {
FILE: packages/fusion-ui/src/utils/util/htmlId.js
function _interopRequireDefault (line 12) | function _interopRequireDefault(obj) {
function randomId (line 23) | function randomId(prefix) {
function escapeForId (line 37) | function escapeForId(text) {
FILE: packages/fusion-ui/src/utils/util/index.js
function _interopRequireDefault (line 76) | function _interopRequireDefault(obj) {
function _interopRequireWildcard (line 80) | function _interopRequireWildcard(obj) {
constant KEYCODE (line 105) | const KEYCODE = (exports.KEYCODE = _keycode2.default);
FILE: packages/fusion-ui/src/utils/util/log.js
function deprecated (line 21) | function deprecated(props, instead, component) {
function warning (line 36) | function warning(msg) {
FILE: packages/fusion-ui/src/utils/util/mobile/index.js
function _interopRequireDefault (line 11) | function _interopRequireDefault(obj) {
FILE: packages/fusion-ui/src/utils/util/object.js
function _interopRequireDefault (line 32) | function _interopRequireDefault(obj) {
function typeOf (line 46) | function typeOf(obj) {
function isArrayLike (line 60) | function isArrayLike(obj) {
function isPromise (line 76) | function isPromise(obj) {
function isPlainObject (line 91) | function isPlainObject(obj) {
function shallowEqual (line 125) | function shallowEqual(objA, objB, compare) {
function each (line 189) | function each(obj, callback, direction) {
function pickOthers (line 234) | function pickOthers(holdProps, props) {
function pickProps (line 257) | function pickProps(holdProps, props) {
function pickAttrsWith (line 279) | function pickAttrsWith(holdProps, prefix) {
function isNil (line 296) | function isNil(value) {
function deepMerge (line 308) | function deepMerge(target) {
function isFunctionComponent (line 356) | function isFunctionComponent(component) {
function isClassComponent (line 368) | function isClassComponent(component) {
function isReactFragment (line 380) | function isReactFragment(component) {
FILE: packages/fusion-ui/src/utils/util/string.js
function camelcase (line 17) | function camelcase(str) {
function hyphenate (line 31) | function hyphenate(str) {
function template (line 52) | function template(tpl) {
FILE: packages/fusion-ui/src/utils/util/support.js
function _supportEnd (line 28) | function _supportEnd(names) {
function _supportCSS (line 54) | function _supportCSS(names) {
FILE: packages/graph-x6-materials/src/components/send-email/index.tsx
method component (line 99) | component(node: Node) {
Condensed preview — 879 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,604K chars).
[
{
"path": ".editorconfig",
"chars": 208,
"preview": "root = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ni"
},
{
"path": ".eslintignore",
"chars": 85,
"preview": "build/\ncoverage/\ndist/\nes/\nlib/\nnode_modules/\n**/*.min.js\n**/*-min.js\n**/*.bundle.js\n"
},
{
"path": ".eslintrc.js",
"chars": 155,
"preview": "module.exports = {\n extends: [\n 'eslint-config-ali/typescript/react',\n 'prettier',\n 'prettier/@typescript-esli"
},
{
"path": ".gitignore",
"chars": 1617,
"preview": "lowcode_es/\r\nlowcode_lib/\r\n# project custom\nbuild\ndist\nsite\n.tmp\nes\npublic/resources/meta.json\npackages/*/lib/\npackages/"
},
{
"path": ".markdownlint.json",
"chars": 43,
"preview": "{\n \"extends\": \"markdownlint-config-ali\"\n}\n"
},
{
"path": ".markdownlintignore",
"chars": 47,
"preview": "node_modules/\nbuild/\ndist/\ncoverage/\nes/\nlib/\n\n"
},
{
"path": ".prettierrc.js",
"chars": 140,
"preview": "module.exports = {\n printWidth: 100,\n tabWidth: 2,\n semi: true,\n singleQuote: true,\n trailingComma: 'all',\n arrowP"
},
{
"path": ".stylelintignore",
"chars": 89,
"preview": "node_modules/\nbuild/\ndist/\ncoverage/\nes/\nlib/\n**/*.min.css\n**/*-min.css\n**/*.bundle.css\n\n"
},
{
"path": ".stylelintrc.js",
"chars": 57,
"preview": "module.exports = {\n extends: 'stylelint-config-ali',\n};\n"
},
{
"path": "LICENSE",
"chars": 1064,
"preview": "MIT License\n\nCopyright (c) 2021 Alibaba\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof"
},
{
"path": "README.md",
"chars": 3337,
"preview": "<h1 align=\"center\">Lowcode Materials</h1>\n\n<div align=\"center\">\n\n基于 [Fusion Design](https://fusion.design) 和 [Ant Design"
},
{
"path": "commitlint.config.js",
"chars": 42,
"preview": "module.exports = {\n extends: ['ali'],\n};\n"
},
{
"path": "f2elint.config.js",
"chars": 99,
"preview": "module.exports = {\n enableStylelint: true,\n enableMarkdownlint: true,\n enablePrettier: true,\n};\n"
},
{
"path": "package.json",
"chars": 1196,
"preview": "{\n \"name\": \"lowcode-materials\",\n \"private\": true,\n \"version\": \"0.0.0\",\n \"description\": \"Materials for LowCode\",\n \"s"
},
{
"path": "packages/antd-lowcode-materials/README.md",
"chars": 899,
"preview": "<h2><img width=\"30\" src=\"https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg\"> Ant Design For Lowcode</h"
},
{
"path": "packages/antd-lowcode-materials/build.json",
"chars": 142,
"preview": "{\n \"sourceMap\": false,\n \"alias\": {\n \"@\": \"./src\",\n \"@components\": \"./src/components\"\n },\n \"plugins\": [[\"build-"
},
{
"path": "packages/antd-lowcode-materials/build.lowcode.js",
"chars": 2489,
"preview": "const { name, version } = require(\"./package.json\");\n\nconst library = 'AntdLowcode';\n\nmodule.exports = {\n sourceMap: fa"
},
{
"path": "packages/antd-lowcode-materials/lowcode/_setters/antd-icon-setter/index.tsx",
"chars": 7566,
"preview": "import React, { useState, useEffect, Component } from 'react';\n// setter使用@alifd/next,和编辑器保持一致\nimport { Input, Icon as N"
},
{
"path": "packages/antd-lowcode-materials/lowcode/_setters/antd-icon-setter/style.less",
"chars": 1416,
"preview": ".lc-antd-icon-setter {\n &-header {\n &-style {\n width: 100%;\n margin-bottom: 12px;\n display: flex;\n\n "
},
{
"path": "packages/antd-lowcode-materials/lowcode/_setters/index.tsx",
"chars": 64,
"preview": "export { default as AntdIconSetter } from './antd-icon-setter';\n"
},
{
"path": "packages/antd-lowcode-materials/lowcode/_utils/hoc.tsx",
"chars": 2125,
"preview": "import React, { ComponentType, ReactNode, useState } from 'react';\nimport moment from 'moment';\nimport { get, set, has }"
},
{
"path": "packages/antd-lowcode-materials/lowcode/_utils/transform-meta.ts",
"chars": 8249,
"preview": "import {\n FieldConfig,\n PropConfig,\n PropType,\n SetterType,\n OneOf,\n ObjectOf,\n ArrayOf,\n TransformedComponentMe"
},
{
"path": "packages/antd-lowcode-materials/lowcode/_utils/utils.ts",
"chars": 135,
"preview": "export { get, set, has } from 'lodash';\n\n// simple uuid\nexport function uuid() {\n return ((Math.random() * 1e6) >> 0).t"
},
{
"path": "packages/antd-lowcode-materials/lowcode/affix/meta.ts",
"chars": 931,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Affix',\n title: '固钉',\n category: '导"
},
{
"path": "packages/antd-lowcode-materials/lowcode/affix/snippets.ts",
"chars": 379,
"preview": "export default [\n {\n title: '固钉',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/affix-1.jpg'"
},
{
"path": "packages/antd-lowcode-materials/lowcode/alert/meta.ts",
"chars": 1824,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Alert',\n title: '警告提示',\n category: "
},
{
"path": "packages/antd-lowcode-materials/lowcode/alert/snippets.ts",
"chars": 1390,
"preview": "export default [\n {\n title: '成功提示',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/alert-1.pn"
},
{
"path": "packages/antd-lowcode-materials/lowcode/anchor/snippets.ts",
"chars": 590,
"preview": "export default [\n {\n title: '锚点',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/anchor-1.png"
},
{
"path": "packages/antd-lowcode-materials/lowcode/anchor.link/meta.ts",
"chars": 542,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Anchor.Link',\n title: '锚点链接',\n cate"
},
{
"path": "packages/antd-lowcode-materials/lowcode/anchor.link/snippets.ts",
"chars": 19,
"preview": "export default [];\n"
},
{
"path": "packages/antd-lowcode-materials/lowcode/auto-complete/meta.ts",
"chars": 11203,
"preview": "import { uuid } from '../_utils/utils';\n\nimport snippets from './snippets';\n\nexport default {\n snippets,\n componentNam"
},
{
"path": "packages/antd-lowcode-materials/lowcode/auto-complete/snippets.ts",
"chars": 519,
"preview": "export default [\n {\n title: '辅助提示输入框',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/auto-co"
},
{
"path": "packages/antd-lowcode-materials/lowcode/avatar/meta.ts",
"chars": 1418,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Avatar',\n title: '头像',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/avatar/snippets.ts",
"chars": 288,
"preview": "export default [\n {\n title: '头像',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/avatar-1.jpg"
},
{
"path": "packages/antd-lowcode-materials/lowcode/back-top/meta.ts",
"chars": 911,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'BackTop',\n title: '回到顶部',\n category"
},
{
"path": "packages/antd-lowcode-materials/lowcode/back-top/snippets.ts",
"chars": 205,
"preview": "export default [\n {\n title: '回到顶部',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/back-top-1"
},
{
"path": "packages/antd-lowcode-materials/lowcode/badge/meta.ts",
"chars": 1700,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Badge',\n title: '徽标数',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/badge/snippets.ts",
"chars": 225,
"preview": "export default [\n {\n title: '徽标数',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/badge-1.png"
},
{
"path": "packages/antd-lowcode-materials/lowcode/breadcrumb/meta.ts",
"chars": 3368,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Breadcrumb',\n title: '面包屑',\n catego"
},
{
"path": "packages/antd-lowcode-materials/lowcode/breadcrumb/snippets.ts",
"chars": 1062,
"preview": "export default [\n {\n title: '面包屑',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/breadcrumb-"
},
{
"path": "packages/antd-lowcode-materials/lowcode/button/meta.ts",
"chars": 7653,
"preview": "import snippets from './snippets';\n\nexport default {\n componentName: 'Button',\n title: '按钮',\n category: '通用',\n props"
},
{
"path": "packages/antd-lowcode-materials/lowcode/button/snippets.ts",
"chars": 1292,
"preview": "export default [\n {\n title: '主按钮',\n screenshot: require('./__screenshots__/button-1.png'),\n schema: {\n co"
},
{
"path": "packages/antd-lowcode-materials/lowcode/calendar/meta.ts",
"chars": 2941,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Calendar',\n title: '日历',\n category:"
},
{
"path": "packages/antd-lowcode-materials/lowcode/calendar/snippets.ts",
"chars": 204,
"preview": "export default [\n {\n title: '日历',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/calendar-1.j"
},
{
"path": "packages/antd-lowcode-materials/lowcode/card/meta.ts",
"chars": 2055,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Card',\n title: '卡片',\n category: '数据"
},
{
"path": "packages/antd-lowcode-materials/lowcode/card/snippets.ts",
"chars": 239,
"preview": "export default [\n {\n title: '卡片',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/card-1.png',"
},
{
"path": "packages/antd-lowcode-materials/lowcode/carousel/meta.ts",
"chars": 3397,
"preview": "import { uuid } from '../_utils/utils';\n\nimport snippets from './snippets';\n\nexport default {\n snippets,\n componentNam"
},
{
"path": "packages/antd-lowcode-materials/lowcode/carousel/snippets.ts",
"chars": 443,
"preview": "export default [\n {\n title: '走马灯',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/carousel-1."
},
{
"path": "packages/antd-lowcode-materials/lowcode/cascader/meta.ts",
"chars": 3911,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Cascader',\n title: '级联选择',\n categor"
},
{
"path": "packages/antd-lowcode-materials/lowcode/cascader/snippets.ts",
"chars": 1062,
"preview": "export default [\n {\n title: '级联选择',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/cascader-1"
},
{
"path": "packages/antd-lowcode-materials/lowcode/checkbox/meta.ts",
"chars": 1645,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Checkbox',\n title: '多选框',\n category"
},
{
"path": "packages/antd-lowcode-materials/lowcode/checkbox/snippets.ts",
"chars": 696,
"preview": "export default [\n {\n title: '多选框',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/checkbox-1."
},
{
"path": "packages/antd-lowcode-materials/lowcode/checkbox.group/meta.ts",
"chars": 3317,
"preview": "import { uuid } from '../_utils/utils';\n\nexport default {\n componentName: 'Checkbox.Group',\n title: '多选框组',\n category"
},
{
"path": "packages/antd-lowcode-materials/lowcode/collapse/meta.ts",
"chars": 5696,
"preview": "import { uuid } from '../_utils/utils';\n\nimport snippets from './snippets';\n\nexport default {\n snippets,\n componentNam"
},
{
"path": "packages/antd-lowcode-materials/lowcode/collapse/snippets.ts",
"chars": 607,
"preview": "export default [\n {\n title: '折叠面板',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/collapse-1"
},
{
"path": "packages/antd-lowcode-materials/lowcode/collapse.pane/meta.ts",
"chars": 1391,
"preview": "// FIXME: 选中tabPane点复制,会出问题,因为复制的组件key一样\n\nexport default {\n componentName: 'Collapse.Panel',\n title: '折叠项',\n category"
},
{
"path": "packages/antd-lowcode-materials/lowcode/comment/meta.ts",
"chars": 1162,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Comment',\n title: '评论',\n category: "
},
{
"path": "packages/antd-lowcode-materials/lowcode/comment/snippets.ts",
"chars": 202,
"preview": "export default [\n {\n title: '评论',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/comment-1.pn"
},
{
"path": "packages/antd-lowcode-materials/lowcode/config-provider/meta.ts",
"chars": 2801,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'ConfigProvider',\n title: '全局化配置',\n "
},
{
"path": "packages/antd-lowcode-materials/lowcode/config-provider/snippets.ts",
"chars": 220,
"preview": "export default [\n {\n title: '全局化配置',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/config-pr"
},
{
"path": "packages/antd-lowcode-materials/lowcode/date-picker/meta.ts",
"chars": 6398,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'DatePicker',\n title: '日期选择框',\n cate"
},
{
"path": "packages/antd-lowcode-materials/lowcode/date-picker/snippets.ts",
"chars": 1102,
"preview": "export default [\n {\n title: '选择日期',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date-picke"
},
{
"path": "packages/antd-lowcode-materials/lowcode/date-picker.range-picker/meta.ts",
"chars": 8361,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'DatePicker.RangePicker',\n title: '日期"
},
{
"path": "packages/antd-lowcode-materials/lowcode/date-picker.range-picker/snippets.ts",
"chars": 999,
"preview": "export default [\n {\n title: '日期区间',\n screenshot:\n 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/date"
},
{
"path": "packages/antd-lowcode-materials/lowcode/descriptions/meta.ts",
"chars": 6081,
"preview": "import { uuid } from '../_utils/utils';\n\nimport snippets from './snippets';\n\nexport default {\n snippets,\n componentNam"
},
{
"path": "packages/antd-lowcode-materials/lowcode/descriptions/snippets.ts",
"chars": 355,
"preview": "export default [\n {\n title: '描述列表',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/descriptio"
},
{
"path": "packages/antd-lowcode-materials/lowcode/descriptions.item/meta.ts",
"chars": 427,
"preview": "export default {\n componentName: 'Descriptions.Item',\n title: '描述列表项',\n props: [\n {\n name: 'key',\n title"
},
{
"path": "packages/antd-lowcode-materials/lowcode/divider/meta.ts",
"chars": 1343,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Divider',\n title: '分割线',\n category:"
},
{
"path": "packages/antd-lowcode-materials/lowcode/divider/snippets.ts",
"chars": 566,
"preview": "export default [\n {\n title: '分割线',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/divider-1.p"
},
{
"path": "packages/antd-lowcode-materials/lowcode/drawer/meta.ts",
"chars": 10117,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Drawer',\n title: '抽屉',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/drawer/snippets.ts",
"chars": 891,
"preview": "export default [\n {\n title: '侧边抽屉',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/drawer-1.p"
},
{
"path": "packages/antd-lowcode-materials/lowcode/dropdown/meta.ts",
"chars": 3152,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Dropdown',\n title: '下拉菜单',\n categor"
},
{
"path": "packages/antd-lowcode-materials/lowcode/dropdown/snippets.ts",
"chars": 1826,
"preview": "export default [\n {\n title: '下拉菜单',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/dropdown-1"
},
{
"path": "packages/antd-lowcode-materials/lowcode/empty/meta.ts",
"chars": 658,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Empty',\n title: '空状态',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/empty/snippets.ts",
"chars": 199,
"preview": "export default [\n {\n title: '空状态',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/empty-1.png"
},
{
"path": "packages/antd-lowcode-materials/lowcode/form/meta.ts",
"chars": 9104,
"preview": "import snippets from './snippets';\nimport { uuid } from '../_utils/utils'\n\nexport default {\n snippets,\n componentName:"
},
{
"path": "packages/antd-lowcode-materials/lowcode/form/snippets.ts",
"chars": 13451,
"preview": "export default [\n {\n \"title\": \"表单容器\",\n \"screenshot\": \"https://alifd.alicdn.com/fusion-cool/icons/icon-antd/form-1"
},
{
"path": "packages/antd-lowcode-materials/lowcode/form.item/meta.ts",
"chars": 8402,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Form.Item',\n title: '表单项',\n categor"
},
{
"path": "packages/antd-lowcode-materials/lowcode/form.item/snippets.ts",
"chars": 236,
"preview": "export default [\n {\n title: '表单项',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/form-item-1"
},
{
"path": "packages/antd-lowcode-materials/lowcode/form.list/meta.ts",
"chars": 596,
"preview": "import snippets from './snippets';\n\nexport default {\n componentName: 'Form.List',\n title: '表单列表',\n category: '表单',\n "
},
{
"path": "packages/antd-lowcode-materials/lowcode/form.list/snippets.ts",
"chars": 260,
"preview": "export default [\n {\n title: '表单列表',\n // TODO: 换成国内OSS地址\n screenshot: 'https://user-images.githubusercontent.co"
},
{
"path": "packages/antd-lowcode-materials/lowcode/grid.col/meta.ts",
"chars": 3100,
"preview": "import snippets from './snippets';\n\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n\ne"
},
{
"path": "packages/antd-lowcode-materials/lowcode/grid.col/snippets.ts",
"chars": 19,
"preview": "export default [];\n"
},
{
"path": "packages/antd-lowcode-materials/lowcode/grid.row/meta.ts",
"chars": 2665,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Row',\n title: '栅格-行',\n category: '布"
},
{
"path": "packages/antd-lowcode-materials/lowcode/grid.row/snippets.ts",
"chars": 1992,
"preview": "export default [\n {\n title: '两栏',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/1-1.png',\n "
},
{
"path": "packages/antd-lowcode-materials/lowcode/icon/meta.ts",
"chars": 1262,
"preview": "import snippets from './snippets';\nimport { AntdIconSetter } from '../_setters';\n\nexport default {\n snippets,\n compone"
},
{
"path": "packages/antd-lowcode-materials/lowcode/icon/snippets.ts",
"chars": 252,
"preview": "export default [\n {\n title: '图标',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/icon-1.jpg',"
},
{
"path": "packages/antd-lowcode-materials/lowcode/image/meta.ts",
"chars": 869,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Image',\n title: '图片',\n category: '数"
},
{
"path": "packages/antd-lowcode-materials/lowcode/image/snippets.ts",
"chars": 339,
"preview": "export default [\n {\n title: '图片',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/image-1.png'"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input/meta.ts",
"chars": 4434,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Input',\n title: '输入框',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input/snippets.ts",
"chars": 234,
"preview": "export default [\n {\n title: '输入框',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/input-1.png"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input-number/meta.ts",
"chars": 4884,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'InputNumber',\n title: '数字输入框',\n cat"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input-number/snippets.ts",
"chars": 249,
"preview": "export default [\n {\n title: '数字输入框',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/input-num"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input.group/meta.ts",
"chars": 931,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Input.Group',\n title: '输入框组合',\n cat"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input.group/snippets.ts",
"chars": 478,
"preview": "export default [\n {\n title: '输入框组合',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/input-gro"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input.password/meta.ts",
"chars": 4470,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Input.Password',\n title: '密码框',\n ca"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input.password/snippets.ts",
"chars": 259,
"preview": "export default [\n {\n title: '密码框',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/input-passw"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input.search/meta.ts",
"chars": 4861,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Input.Search',\n title: '搜索框',\n cate"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input.search/snippets.ts",
"chars": 250,
"preview": "export default [\n {\n title: '搜索框',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/input-searc"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input.text-area/meta.ts",
"chars": 4835,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Input.TextArea',\n title: '长文本',\n ca"
},
{
"path": "packages/antd-lowcode-materials/lowcode/input.text-area/snippets.ts",
"chars": 328,
"preview": "export default [\n {\n title: '长文本',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/input-text-"
},
{
"path": "packages/antd-lowcode-materials/lowcode/list/meta.ts",
"chars": 13295,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'List',\n title: '列表',\n category: '数据"
},
{
"path": "packages/antd-lowcode-materials/lowcode/list/snippets.ts",
"chars": 5878,
"preview": "export default [\n {\n title: '简单列表',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/list-1.png"
},
{
"path": "packages/antd-lowcode-materials/lowcode/list.item/meta.ts",
"chars": 881,
"preview": "// FIXME: 选中tabPane点复制,会出问题,因为复制的组件key一样\n\nexport default {\n componentName: 'List.Item',\n title: '列表项',\n category: '',"
},
{
"path": "packages/antd-lowcode-materials/lowcode/list.item.meta/meta.ts",
"chars": 739,
"preview": "export default {\n componentName: 'List.Item.Meta',\n title: '列表项内容',\n category: '',\n props: [\n {\n name: 'avat"
},
{
"path": "packages/antd-lowcode-materials/lowcode/mentions/meta.ts",
"chars": 3849,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Mentions',\n title: '提及',\n category:"
},
{
"path": "packages/antd-lowcode-materials/lowcode/mentions/snippets.ts",
"chars": 204,
"preview": "export default [\n {\n title: '提及',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/mentions-1.p"
},
{
"path": "packages/antd-lowcode-materials/lowcode/menu/meta.ts",
"chars": 6296,
"preview": "import { uuid } from '../_utils/utils';\nimport { itemsExtraProps } from './utils';\n\nimport snippets from './snippets';\n\n"
},
{
"path": "packages/antd-lowcode-materials/lowcode/menu/snippets.ts",
"chars": 470,
"preview": "export default [\n {\n title: '导航菜单',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/menu-1.jpg"
},
{
"path": "packages/antd-lowcode-materials/lowcode/menu/utils.ts",
"chars": 2881,
"preview": "import { uuid } from '../_utils/utils';\n\nexport const itemsExtraProps = {\n getValue(target, fieldValue) {\n const map"
},
{
"path": "packages/antd-lowcode-materials/lowcode/menu.item/meta.ts",
"chars": 1111,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Menu.Item',\n title: '菜单项',\n props: "
},
{
"path": "packages/antd-lowcode-materials/lowcode/menu.item/snippets.ts",
"chars": 19,
"preview": "export default [];\n"
},
{
"path": "packages/antd-lowcode-materials/lowcode/menu.item-group/meta.ts",
"chars": 2820,
"preview": "import { uuid } from '../_utils/utils';\nimport { itemsExtraProps } from '../menu/utils';\n\nimport snippets from './snippe"
},
{
"path": "packages/antd-lowcode-materials/lowcode/menu.item-group/snippets.ts",
"chars": 19,
"preview": "export default [];\n"
},
{
"path": "packages/antd-lowcode-materials/lowcode/menu.sub-menu/meta.ts",
"chars": 3193,
"preview": "import { uuid } from '../_utils/utils';\nimport { itemsExtraProps } from '../menu/utils';\n\nimport snippets from './snippe"
},
{
"path": "packages/antd-lowcode-materials/lowcode/menu.sub-menu/snippets.ts",
"chars": 19,
"preview": "export default [];\n"
},
{
"path": "packages/antd-lowcode-materials/lowcode/modal/meta.ts",
"chars": 6206,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Modal',\n title: '对话框',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/modal/snippets.ts",
"chars": 711,
"preview": "export default [\n {\n title: '普通型',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/modal-1.png"
},
{
"path": "packages/antd-lowcode-materials/lowcode/page-header/meta.ts",
"chars": 3946,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'PageHeader',\n title: '页头',\n categor"
},
{
"path": "packages/antd-lowcode-materials/lowcode/page-header/snippets.ts",
"chars": 280,
"preview": "export default [\n {\n title: '页头',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/page-header-"
},
{
"path": "packages/antd-lowcode-materials/lowcode/pagination/meta.ts",
"chars": 5420,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Pagination',\n title: '分页',\n categor"
},
{
"path": "packages/antd-lowcode-materials/lowcode/pagination/snippets.ts",
"chars": 276,
"preview": "export default [\n {\n title: '分页',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/pagination-1"
},
{
"path": "packages/antd-lowcode-materials/lowcode/popconfirm/meta.ts",
"chars": 2631,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Popconfirm',\n title: '气泡确认框',\n cate"
},
{
"path": "packages/antd-lowcode-materials/lowcode/popconfirm/snippets.ts",
"chars": 431,
"preview": "export default [\n {\n title: '气泡确认框',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/popconfir"
},
{
"path": "packages/antd-lowcode-materials/lowcode/popover/meta.ts",
"chars": 7384,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Popover',\n title: '气泡卡片',\n category"
},
{
"path": "packages/antd-lowcode-materials/lowcode/popover/snippets.ts",
"chars": 204,
"preview": "export default [\n {\n title: '气泡卡片',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/popover-1."
},
{
"path": "packages/antd-lowcode-materials/lowcode/progress/meta.ts",
"chars": 3045,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Progress',\n title: '进度条',\n category"
},
{
"path": "packages/antd-lowcode-materials/lowcode/progress/snippets.ts",
"chars": 496,
"preview": "export default [\n {\n title: '进度条',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/progress-1."
},
{
"path": "packages/antd-lowcode-materials/lowcode/radio/meta.ts",
"chars": 1292,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Radio',\n title: '单选框',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/radio/snippets.ts",
"chars": 681,
"preview": "export default [\n {\n title: '单选框',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/radio-1.png"
},
{
"path": "packages/antd-lowcode-materials/lowcode/radio.group/meta.ts",
"chars": 4785,
"preview": "import { uuid } from '../_utils/utils';\n\nexport default {\n componentName: 'Radio.Group',\n title: '单选框组',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/rate/meta.ts",
"chars": 2854,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Rate',\n title: '评分',\n category: '表单"
},
{
"path": "packages/antd-lowcode-materials/lowcode/rate/snippets.ts",
"chars": 228,
"preview": "export default [\n {\n title: '评分',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/rate-1.png',"
},
{
"path": "packages/antd-lowcode-materials/lowcode/result/meta.ts",
"chars": 853,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Result',\n title: '结果',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/result/snippets.ts",
"chars": 300,
"preview": "export default [\n {\n title: '结果',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/result-1.png"
},
{
"path": "packages/antd-lowcode-materials/lowcode/segmented/meta.ts",
"chars": 1832,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Segmented',\n title: '分段控制器',\n categ"
},
{
"path": "packages/antd-lowcode-materials/lowcode/segmented/snippets.ts",
"chars": 295,
"preview": "export default [\n {\n title: '分段控制器',\n screenshot: require('./__screenshots__/segmented.png'),\n schema: {\n "
},
{
"path": "packages/antd-lowcode-materials/lowcode/select/meta.ts",
"chars": 10428,
"preview": "import { uuid } from '../_utils/utils';\n\nimport snippets from './snippets';\n\nexport default {\n snippets,\n componentNam"
},
{
"path": "packages/antd-lowcode-materials/lowcode/select/snippets.ts",
"chars": 507,
"preview": "export default [\n {\n title: '选择器',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/select-1.pn"
},
{
"path": "packages/antd-lowcode-materials/lowcode/skeleton/meta.ts",
"chars": 1143,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Skeleton',\n title: '骨架屏',\n category"
},
{
"path": "packages/antd-lowcode-materials/lowcode/skeleton/snippets.ts",
"chars": 257,
"preview": "export default [\n {\n title: '骨架屏',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/skeleton-1."
},
{
"path": "packages/antd-lowcode-materials/lowcode/slider/meta.ts",
"chars": 5339,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Slider',\n title: '滑动输入条',\n category"
},
{
"path": "packages/antd-lowcode-materials/lowcode/slider/snippets.ts",
"chars": 236,
"preview": "export default [\n {\n title: '滑动输入条',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/slider-1."
},
{
"path": "packages/antd-lowcode-materials/lowcode/slot/meta.ts",
"chars": 1317,
"preview": "module.exports = {\n componentName: 'Slot',\n npm: {\n package: '@alilc/antd-lowcode-materials',\n version: 'latest'"
},
{
"path": "packages/antd-lowcode-materials/lowcode/slot/view.tsx",
"chars": 1274,
"preview": "import { Component } from 'react';\n\nclass Slot extends Component {\n static displayName = 'Slot';\n\n static componentMet"
},
{
"path": "packages/antd-lowcode-materials/lowcode/space/meta.ts",
"chars": 1324,
"preview": "import { ComponentMetadata } from \"@alilc/lowcode-types\";\nimport snippets from './snippets';\n\nexport default {\n snippet"
},
{
"path": "packages/antd-lowcode-materials/lowcode/space/snippets.ts",
"chars": 469,
"preview": "export default [\n {\n title: '间距',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/space-1.png'"
},
{
"path": "packages/antd-lowcode-materials/lowcode/spin/meta.ts",
"chars": 1037,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Spin',\n title: '加载中',\n category: '反"
},
{
"path": "packages/antd-lowcode-materials/lowcode/spin/snippets.ts",
"chars": 254,
"preview": "export default [\n {\n title: '加载中',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/spin-1.png'"
},
{
"path": "packages/antd-lowcode-materials/lowcode/statistic/meta.ts",
"chars": 1371,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Statistic',\n title: '统计数值',\n catego"
},
{
"path": "packages/antd-lowcode-materials/lowcode/statistic/snippets.ts",
"chars": 268,
"preview": "export default [\n {\n title: '统计数值',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/statistic-"
},
{
"path": "packages/antd-lowcode-materials/lowcode/steps/meta.ts",
"chars": 7404,
"preview": "import { uuid } from '../_utils/utils';\n\nimport snippets from './snippets';\n\nexport default {\n snippets,\n componentNam"
},
{
"path": "packages/antd-lowcode-materials/lowcode/steps/snippets.ts",
"chars": 816,
"preview": "export default [\n {\n title: '步骤条',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/steps-1.png"
},
{
"path": "packages/antd-lowcode-materials/lowcode/steps.step/meta.ts",
"chars": 873,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Steps.Step',\n title: '步骤项',\n props:"
},
{
"path": "packages/antd-lowcode-materials/lowcode/steps.step/snippets.ts",
"chars": 19,
"preview": "export default [];\n"
},
{
"path": "packages/antd-lowcode-materials/lowcode/switch/meta.ts",
"chars": 2537,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Switch',\n title: '开关',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/switch/snippets.ts",
"chars": 237,
"preview": "export default [\n {\n title: '开关',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/switch-1.png"
},
{
"path": "packages/antd-lowcode-materials/lowcode/table/meta.ts",
"chars": 24783,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Table',\n title: '表格',\n category: '数"
},
{
"path": "packages/antd-lowcode-materials/lowcode/table/snippets.ts",
"chars": 853,
"preview": "export default [\n {\n title: '表格',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/table-1.png'"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tabs/meta.ts",
"chars": 11615,
"preview": "import { uuid } from '../_utils/utils';\n\nimport snippets from './snippets';\n\nexport default {\n snippets,\n componentNam"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tabs/snippets.ts",
"chars": 1786,
"preview": "export default [\n {\n title: '普通型',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/tabs-1.jpg'"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tabs.tab-pane/meta.ts",
"chars": 1237,
"preview": "// FIXME: 选中tabPane点复制,会出问题,因为复制的组件key一样\n\nexport default {\n componentName: 'Tabs.TabPane',\n title: '标签页项',\n category:"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tag/meta.ts",
"chars": 1208,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Tag',\n title: '标签',\n category: '数据展"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tag/snippets.ts",
"chars": 252,
"preview": "export default [\n {\n title: '标签',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/tag-1.png',\n"
},
{
"path": "packages/antd-lowcode-materials/lowcode/time-picker/meta.ts",
"chars": 5008,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'TimePicker',\n title: '时间选择框',\n cate"
},
{
"path": "packages/antd-lowcode-materials/lowcode/time-picker/snippets.ts",
"chars": 212,
"preview": "export default [\n {\n title: '时间选择框',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/time-pick"
},
{
"path": "packages/antd-lowcode-materials/lowcode/timeline/meta.ts",
"chars": 5123,
"preview": "import { uuid } from '../_utils/utils';\n\nimport snippets from './snippets';\n\nexport default {\n snippets,\n componentNam"
},
{
"path": "packages/antd-lowcode-materials/lowcode/timeline/snippets.ts",
"chars": 408,
"preview": "export default [\n {\n title: '时间轴',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/timeline-1."
},
{
"path": "packages/antd-lowcode-materials/lowcode/timeline.item/meta.ts",
"chars": 811,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Timeline.Item',\n title: '时间轴项',\n ca"
},
{
"path": "packages/antd-lowcode-materials/lowcode/timeline.item/snippets.ts",
"chars": 229,
"preview": "export default [\n // {\n // title: '时间轴',\n // screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/ti"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tooltip/meta.ts",
"chars": 6864,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Tooltip',\n title: '文字提示',\n category"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tooltip/snippets.ts",
"chars": 234,
"preview": "export default [\n {\n title: '文字提示',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/tooltip-1."
},
{
"path": "packages/antd-lowcode-materials/lowcode/transfer/meta.ts",
"chars": 7738,
"preview": "import { uuid } from '../_utils/utils';\n\nimport snippets from './snippets';\n\nexport default {\n snippets,\n componentNam"
},
{
"path": "packages/antd-lowcode-materials/lowcode/transfer/snippets.ts",
"chars": 857,
"preview": "import { uuid } from '../_utils/utils';\n\nexport default [\n {\n title: '穿梭框',\n screenshot: 'https://alifd.alicdn.co"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tree/meta.ts",
"chars": 9271,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Tree',\n title: '树形控件',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tree/snippets.ts",
"chars": 766,
"preview": "export default [\n {\n title: '树形控件',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/tree-1.jpg"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tree-select/meta.ts",
"chars": 7316,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'TreeSelect',\n title: '树选择',\n catego"
},
{
"path": "packages/antd-lowcode-materials/lowcode/tree-select/snippets.ts",
"chars": 876,
"preview": "export default [\n {\n title: '树选择',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/tree-select"
},
{
"path": "packages/antd-lowcode-materials/lowcode/typography.link/meta.ts",
"chars": 702,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Typography.Link',\n title: '链接',\n ca"
},
{
"path": "packages/antd-lowcode-materials/lowcode/typography.link/snippets.ts",
"chars": 312,
"preview": "export default [\n {\n title: '链接',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/typography-l"
},
{
"path": "packages/antd-lowcode-materials/lowcode/typography.paragraph/meta.ts",
"chars": 2548,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Typography.Paragraph',\n title: '段落',"
},
{
"path": "packages/antd-lowcode-materials/lowcode/typography.paragraph/snippets.ts",
"chars": 399,
"preview": "export default [\n {\n title: '段落',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/typography-p"
},
{
"path": "packages/antd-lowcode-materials/lowcode/typography.text/meta.ts",
"chars": 4681,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Typography.Text',\n title: '文本',\n ca"
},
{
"path": "packages/antd-lowcode-materials/lowcode/typography.text/snippets.ts",
"chars": 767,
"preview": "export default [\n {\n title: '文本',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/typography-t"
},
{
"path": "packages/antd-lowcode-materials/lowcode/typography.title/meta.ts",
"chars": 2600,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Typography.Title',\n title: '标题',\n c"
},
{
"path": "packages/antd-lowcode-materials/lowcode/typography.title/snippets.ts",
"chars": 1032,
"preview": "export default [\n {\n title: '一级标题',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/typography"
},
{
"path": "packages/antd-lowcode-materials/lowcode/upload/meta.ts",
"chars": 11860,
"preview": "import snippets from './snippets';\n\nexport default {\n snippets,\n componentName: 'Upload',\n title: '上传',\n category: '"
},
{
"path": "packages/antd-lowcode-materials/lowcode/upload/snippets.ts",
"chars": 318,
"preview": "export default [\n {\n title: '上传',\n screenshot: 'https://alifd.alicdn.com/fusion-cool/icons/icon-antd/upload-1.png"
},
{
"path": "packages/antd-lowcode-materials/package.json",
"chars": 2064,
"preview": "{\n \"name\": \"@alilc/antd-lowcode-materials\",\n \"version\": \"1.2.2\",\n \"description\": \"Antd for LowCode\",\n \"main\": \"lib/i"
},
{
"path": "packages/antd-lowcode-materials/src/components/auto-complete/index.tsx",
"chars": 189,
"preview": "import { AutoComplete as OriginalAutoComplete } from 'antd';\nimport { withWrap } from '../../utils/hoc';\n\nconst AutoComp"
},
{
"path": "packages/antd-lowcode-materials/src/components/button/index.tsx",
"chars": 424,
"preview": "import React, { forwardRef, Ref } from 'react';\nimport { Button as OriginalButton } from 'antd';\n\nconst Button: any = (p"
},
{
"path": "packages/antd-lowcode-materials/src/components/calendar/index.tsx",
"chars": 246,
"preview": "import { Calendar as OriginalCalendar } from 'antd';\nimport { withMomentProps } from '../../utils/hoc';\n\nconst Calendar "
},
{
"path": "packages/antd-lowcode-materials/src/components/cascader/index.tsx",
"chars": 168,
"preview": "import { Cascader as OriginalCascader } from 'antd';\nimport { withWrap } from '../../utils/hoc';\n\nconst Cascader = withW"
},
{
"path": "packages/antd-lowcode-materials/src/components/checkbox/index.tsx",
"chars": 219,
"preview": "import { Checkbox as OriginalCheckbok } from 'antd';\nimport { withWrap } from '../../utils/hoc';\n\nconst Checkbox = withW"
},
{
"path": "packages/antd-lowcode-materials/src/components/config-provider/index.tsx",
"chars": 670,
"preview": "import React from 'react';\nimport { ConfigProvider as OriginalConfigProvider } from 'antd';\nimport moment from 'moment';"
},
{
"path": "packages/antd-lowcode-materials/src/components/date-picker/index.tsx",
"chars": 531,
"preview": "import { DatePicker as OriginalDatePicker } from 'antd';\nimport { withMomentProps } from '../../utils/hoc';\n\nconst Origi"
},
{
"path": "packages/antd-lowcode-materials/src/components/drawer/index.tsx",
"chars": 329,
"preview": "import React from 'react';\nimport { Drawer as OriginalDrawer } from 'antd';\n\nconst Drawer: any = (props: any) => {\n con"
},
{
"path": "packages/antd-lowcode-materials/src/components/dropdown/index.tsx",
"chars": 432,
"preview": "import React from 'react';\nimport { Dropdown as OriginalDropdown } from 'antd';\nimport { withSingleChild } from '../../u"
},
{
"path": "packages/antd-lowcode-materials/src/components/form/index.tsx",
"chars": 2574,
"preview": "import React, { Component, createRef } from 'react';\nimport { Form as OriginalForm } from 'antd';\n\nimport { withSingleFu"
},
{
"path": "packages/antd-lowcode-materials/src/components/icon/index.tsx",
"chars": 801,
"preview": "import React, { forwardRef, Ref } from 'react';\nimport * as icons from '@ant-design/icons';\n\nconst createFromIconfontCN "
}
]
// ... and 679 more files (download for full content)
About this extraction
This page contains the full source code of the alibaba/lowcode-materials GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 879 files (2.2 MB), approximately 625.5k tokens, and a symbol index with 655 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.