diff --git a/.codecheck/check.yml b/.codecheck/check.yml index 7ecb34223a..4a049241a0 100644 --- a/.codecheck/check.yml +++ b/.codecheck/check.yml @@ -8,4 +8,4 @@ tool_params: secsolar: source_dir: ./ cmetrics: - exclude: vite.config.js|package.json|index.js|mockServer/assets + exclude: vite.config.js|package.json|index.js|axios.js|.eslintrc.js|mockServer|packages/vue-generator/test|packages/vue-generator/src/templates|packages/build/vite-plugin-meta-comments/src/test diff --git a/.env.alpha b/.env.alpha deleted file mode 100644 index e2bb46d0b7..0000000000 --- a/.env.alpha +++ /dev/null @@ -1,4 +0,0 @@ -# alpha mode, used by the "build:alpha" script - -NODE_ENV=production -#VITE_ORIGIN= diff --git a/.env.development b/.env.development deleted file mode 100644 index 08dd7cf365..0000000000 --- a/.env.development +++ /dev/null @@ -1,5 +0,0 @@ -# development mode, used by the "vite" command - -NODE_ENV=development -# request data via alpha service -#VITE_ORIGIN= diff --git a/.env.local b/.env.local new file mode 100644 index 0000000000..a361a78c8f --- /dev/null +++ b/.env.local @@ -0,0 +1,5 @@ +SQL_HOST=localhost +SQL_PORT=3306 +SQL_USER=root +SQL_PASSWORD=admin +SQL_DATABASE=tiny_engine \ No newline at end of file diff --git a/.env.prod b/.env.prod deleted file mode 100644 index 5ddb7273d7..0000000000 --- a/.env.prod +++ /dev/null @@ -1,4 +0,0 @@ -# prod mode, used by the "build:prod" script - -NODE_ENV=production -#VITE_ORIGIN= \ No newline at end of file diff --git a/.eslintignore b/.eslintignore index a5f9925b3a..b06ec3c3f3 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,3 +5,6 @@ package-lock.json **/node_modules/** tmp temp +mockServer +packages/vue-generator/**/output/** +packages/build/vite-plugin-meta-comments/src/test/code/** diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 100% rename from .eslintrc.js rename to .eslintrc.cjs diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000000..b2afa90093 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,81 @@ +name: '🐛 Bug report' +description: Create a report to help us improve Tiny Engine +title: '🐛 [Bug]: ' +labels: ['🐛 bug'] +body: + - type: markdown + attributes: + value: | + Please fill out the following carefully in order to better fix the problem. + - type: input + id: Environment + attributes: + label: Environment + description: | + **Depending on your browser and operating system, websites may behave differently from one environment to another. Make sure your developers know your technical environment.** + placeholder: Please browser information. + validations: + required: true + - type: input + id: node-version + attributes: + label: Version + description: | + ### **Check if the issue is reproducible with the latest stable version.** + You can use the command `node -v` to view it + placeholder: latest + validations: + required: true + - type: input + id: tiny-vue-version + attributes: + label: Version + description: | + ### **Check if the issue is reproducible with the latest stable version.** + You can use the command `npm ls @opentiny/vue` to view it + placeholder: latest + validations: + required: true + - type: textarea + id: minimal-repo + attributes: + label: Link to minimal reproduction + description: | + **Provide a streamlined CodePen / CodeSandbox or GitHub repository link as much as possible. Please don't fill in a link randomly, it will only close your issue directly.** + placeholder: Please Input + validations: + required: true + - type: textarea + id: reproduce + attributes: + label: Step to reproduce + description: | + **After the replay is turned on, what actions do we need to perform to make the bug appear? Simple and clear steps can help us locate the problem more quickly. Please clearly describe the steps of reproducing the issue. Issues without clear reproducing steps will not be repaired. If the issue marked with 'need reproduction' does not provide relevant steps within 7 days, it will be closed directly.** + placeholder: Please Input + validations: + required: true + - type: textarea + id: expected + attributes: + label: What is expected + placeholder: Please Input + - type: textarea + id: actually + attributes: + label: What is actually happening + placeholder: Please Input + - type: input + id: project-name + attributes: + label: What is your project name + description: We also welcome you to fill in more detailed project information in the following issue [#334](https://github.com/opentiny/tiny-engine/issues/334). + placeholder: Please Input + validations: + required: true + - type: textarea + id: additional-comments + attributes: + label: Any additional comments (optional) + description: | + **Some background / context of how you ran into this bug.** + placeholder: Please Input diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..157e35cd38 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Questions or need help + url: https://github.com/opentiny/tiny-engine/discussions + about: Add this WeChat(opentiny-official), we will invite you to the WeChat discussion group later. diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 0000000000..d864f3dee3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,31 @@ +name: ✨ Feature Request +description: Propose new features to @opentiny/tiny-engine to improve it. +title: '✨ [Feature]: ' +labels: ['✨ feature'] +body: + - type: textarea + id: feature-solve + attributes: + label: What problem does this feature solve + description: | + Explain your use case, context, and rationale behind this feature request. More importantly, what is the end user experience you are trying to build that led to the need for this feature? + placeholder: Please Input + validations: + required: true + - type: textarea + id: feature-api + attributes: + label: What does the proposed API look like + description: | + Describe how you propose to solve the problem and provide code samples of how the API would work once implemented. Note that you can use Markdown to format your code blocks. + placeholder: Please Input + validations: + required: true + - type: input + id: project-name + attributes: + label: What is your project name + description: We also welcome you to fill in more detailed project information in the following issue [#334](https://github.com/opentiny/tiny-engine/issues/334). + placeholder: Please Input + validations: + required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..f4e2f220ca --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,52 @@ +English | [简体中文](https://github.com/opentiny/tiny-engine/blob/develop/.github/PULL_REQUEST_TEMPLATE/PULL_REQUEST_TEMPLATE.zh-CN.md) + +# PR + +## PR Checklist + +Please check if your PR fulfills the following requirements: + +- [ ] The commit message follows our [Commit Message Guidelines](https://github.com/opentiny/tiny-engine/blob/develop/CONTRIBUTING.md) +- [ ] Tests for the changes have been added (for bug fixes / features) +- [ ] Docs have been added / updated (for bug fixes / features) +- [ ] Built its own designer, fully self-validated + +## PR Type + +What kind of change does this PR introduce? + + + +- [ ] Bugfix +- [ ] Feature +- [ ] Code style update (formatting, local variables) +- [ ] Refactoring (no functional changes, no api changes) +- [ ] Build related changes +- [ ] CI related changes +- [ ] Documentation content changes +- [ ] Other... Please describe: + +## Background and solution + + +### What is the current behavior? + + + +Issue Number: N/A + +### What is the new behavior? + + +## Does this PR introduce a breaking change? + +- [ ] Yes +- [ ] No + + + +## Other information diff --git a/.github/PULL_REQUEST_TEMPLATE/PULL_REQUEST_TEMPLATE.zh-CN.md b/.github/PULL_REQUEST_TEMPLATE/PULL_REQUEST_TEMPLATE.zh-CN.md new file mode 100644 index 0000000000..6ceff4df4d --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/PULL_REQUEST_TEMPLATE.zh-CN.md @@ -0,0 +1,52 @@ +[English](https://github.com/opentiny/tiny-engine/blob/develop/.github/PULL_REQUEST_TEMPLATE.md) | 简体中文 + +# PR + +## PR Checklist + +请检查您的 PR 是否满足以下要求: + +- [ ] commit message遵循我们的[提交贡献指南](https://github.com/opentiny/tiny-engine/blob/develop/CONTRIBUTING.md) +- [ ] 添加了更改内容的测试用例(用于bugfix/功能) +- [ ] 文档已添加/更新(用于bugfix/功能) +- [ ] 是否构建了自己的设计器,经过了充分的自验证 + +## PR 类型 + +这个PR的类型是? + +- [ ] 日常 bug 修复 +- [ ] 新特性支持 +- [ ] 代码风格优化 +- [ ] 重构 +- [ ] 构建优化 +- [ ] 测试用例 +- [ ] 文档更新 +- [ ] 分支合并 +- [ ] 其他改动(请补充) + + +## 需求背景和解决方案 + + + + +Issue Number: N/A + +### 修改前 + + +### 修改后 + +## 此PR是否含有 breaking change? + +- [ ] 是 +- [ ] 否 + + + +## Other information diff --git a/.github/auto-labeler.yml b/.github/auto-labeler.yml new file mode 100644 index 0000000000..9727d7434e --- /dev/null +++ b/.github/auto-labeler.yml @@ -0,0 +1,23 @@ +version: v1 + +labels: + - label: 'enhancement' + sync: true + matcher: + title: '^feat:.*' + - label: 'document' + sync: true + matcher: + title: '^docs:.*' + - label: 'bug' + sync: true + matcher: + title: '^fix:.*' + - label: 'ospp-2024' + sync: true + matcher: + baseBranch: '^ospp-2024/.*' + - label: 'refactor-main' + sync: true + matcher: + baseBranch: 'refactor/develop' diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000000..274543b227 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,26 @@ +changelog: + exclude: + labels: + - ignore-for-release + authors: + - allcontributors[bot] + categories: + - title: Breaking Changes 🛠 + labels: + - Semver-Major + - breaking-change + - title: Exciting New Features 🎉 + labels: + - Semver-Minor + - feature + - enhancement + - title: Bug Fixes 🐛 + labels: + - Semver-Patch + - bug + - title: Other Changes + labels: + - documentation + - refactoring + - unit-test + - ci diff --git a/.github/workflows/auto-labeler.yml b/.github/workflows/auto-labeler.yml new file mode 100644 index 0000000000..f607334c51 --- /dev/null +++ b/.github/workflows/auto-labeler.yml @@ -0,0 +1,19 @@ +name: Pull Request Auto Labeler + +on: + pull_request_target: + types: [opened, edited] + +permissions: + # Setting up permissions in the workflow to limit the scope of what it can do. Optional! + contents: read # the config file + pull-requests: write # for labeling pull requests (on: pull_request_target or on: pull_request) + +jobs: + label: + runs-on: ubuntu-latest + steps: + - uses: fuxingloh/multi-labeler@v4 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} # optional, default to '${{ github.token }}' + config-path: .github/auto-labeler.yml # optional, default to '.github/labeler.yml' diff --git a/.github/workflows/issue-translator.yml b/.github/workflows/issue-translator.yml new file mode 100644 index 0000000000..8b3397bf72 --- /dev/null +++ b/.github/workflows/issue-translator.yml @@ -0,0 +1,18 @@ +name: 'issue-translator' +on: + issue_comment: + types: [created] + issues: + types: [opened] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: usthe/issues-translate-action@v2.7 + with: + IS_MODIFY_TITLE: false + # 非必须,决定是否需要修改issue标题内容 + # 若是true,则机器人账户@Issues-translate-bot必须拥有修改此仓库issue权限。可以通过邀请@Issues-translate-bot加入仓库协作者实现。 + CUSTOM_BOT_NOTE: Bot detected the issue body's language is not English, translate it automatically. + # 非必须,自定义机器人翻译的前缀开始内容。 diff --git a/.github/workflows/push-check.yml b/.github/workflows/push-check.yml new file mode 100644 index 0000000000..0acaab2bdd --- /dev/null +++ b/.github/workflows/push-check.yml @@ -0,0 +1,43 @@ +name: Push And Create PR Check + +on: + push: + branches: [] + pull_request: + branches: [develop,main, refactor/develop] + +jobs: + push-check: + runs-on: ubuntu-latest # windows-latest || macos-latest + + steps: + - uses: actions/checkout@v4 + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 9 + - uses: actions/setup-node@v4 + with: + node-version: 18 + + - name: Install dependencies + run: pnpm i + + - name: Get changed files + id: get_changed_files + uses: tj-actions/changed-files@v41 + with: + files: | + **.js + **.vue + **.jsx + - name: Run ESLint + run: npx eslint ${{steps.get_changed_files.outputs.all_changed_files}} + - name: Run Build + run: pnpm run build:plugin && pnpm run build:alpha > build-alpha.log 2>&1 + + - name: Upload build logs + uses: actions/upload-artifact@v4 + with: + name: build-alpha-log + path: build-alpha.log diff --git a/.gitignore b/.gitignore index 836373965b..1ed9582ece 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ node_modules dist/ package-lock.json yarn.lock +pnpm-lock.yaml +lerna-debug.log +packages/design-core/bundle-deps # local env files .env.local diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100644 new mode 100755 index 099e5fd1f3..9179da3dd6 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -2,5 +2,5 @@ . "$(dirname -- "$0")/_/husky.sh" # npm run lint -npx lint-staged +npx lint-staged -q diff --git a/.npmignore b/.npmignore index 2df6aa4ea1..06d519d56f 100644 --- a/.npmignore +++ b/.npmignore @@ -18,7 +18,6 @@ package-lock.json # 忽略可能存在的其它编辑器文件夹 .idea -/src/app/public/mock/* -!/src/app/public/mock/graph-bundle.json -tmp -temp \ No newline at end of file +/packages/design-core/public/mock/* +**/**/tmp +**/**/temp \ No newline at end of file diff --git a/CHNAGELOG.md b/CHANGELOG.md similarity index 100% rename from CHNAGELOG.md rename to CHANGELOG.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4a462f49cd..3070a8ccec 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -51,14 +51,11 @@ Local startup steps: git clone git@github.com:username/tiny-engine.git cd tiny-engine git remote add upstream git@github.com:opentiny/tiny-engine.git -npm i +pnpm i # Start the project. -$ npm run serve +$ pnpm dev -# start another terminal -$ cd mockServer -$ npm run dev ``` To submit a PR: @@ -67,7 +64,7 @@ To submit a PR: - Local coding. - Submit according to [Commit Message Format](https://www.conventionalcommits.org/zh-hans/v1.0.0/) specification. PR that do not conform to the submission specification will not be merged. - Submit to remote repository: `git push origin branchName`. -- (Optional) Synchronize upstream repository dev branch latest code: `git pull upstream dev`. +- (Optional) Synchronize upstream repository dev branch latest code: `git pull upstream develop`. - Open the [Pull requests](https://github.com/opentiny/tiny-engine/pulls) link of the TinyEngine code repository and click the New pull request button to submit the PR. - Project Committer conducts Code Review and makes comments. - The PR author adjusts the code according to the opinion. Please note that when a branch initiates PR, the subsequent commit will be synchronized automatically, and there is no need to resubmit the PR. diff --git a/CONTRIBUTING.zh-CN.md b/CONTRIBUTING.zh-CN.md index 171f91b225..6729ec5857 100644 --- a/CONTRIBUTING.zh-CN.md +++ b/CONTRIBUTING.zh-CN.md @@ -42,23 +42,18 @@ - 点击 [TinyEngine](https://github.com/opentiny/tiny-engine) 代码仓库右上角的 Fork 按钮,将上游仓库 Fork 到个人仓库 - Clone 个人仓库到本地 -- 在 TinyEngine 根目录下运行 `npm install`, 安装依赖 -- 在 TinyEngine mockServer 运行 `npm install`, 安装依赖 -- 在 TinyEngine 根目录下运行 `npm run serve`,再到 mockServer 目录下运行 `npm run dev`,启动本地开发 +- 在 TinyEngine 根目录下运行 `pnpm i`, 安装依赖 +- 在 TinyEngine 根目录下运行 `pnpm dev`,启动本地开发 ```shell # username 为用户名,执行前请替换 git clone git@github.com:username/tiny-engine.git cd tiny-engine git remote add upstream git@github.com:opentiny/tiny-engine.git -npm i +pnpm i # 启动项目 -$ npm run serve - -# start another terminal -$ cd mockServer -$ npm run dev +$ pnpm dev ``` @@ -68,7 +63,7 @@ $ npm run dev - 本地编码 - 遵循 Commit Message Format 规范进行提交,不符合提交规范的 PR 将不会被合并 - 提交到远程仓库:git push origin branchName -- (可选)同步上游仓库 dev 分支最新代码:git pull upstream dev +- (可选)同步上游仓库 develop 分支最新代码:git pull upstream develop - 打开 TinyEngine 代码仓库的 [Pull requests](https://github.com/opentiny/tiny-engine/pulls) 链接,点击 New pull request 按钮提交 PR - 项目 Committer 进行 Code Review,并提出意见 - PR 作者根据意见调整代码,请注意一个分支发起了 PR 后,后续的 commit 会自动同步,无需重新提交 PR @@ -81,4 +76,4 @@ $ npm run dev 如果你对我们的开源项目感兴趣,欢迎通过以下方式加入我们的开源社区。 - 添加官方小助手微信:opentiny-official,加入我们的技术交流群 -- 加入邮件列表:opentiny@googlegroups.com +- 加入邮件列表:opentiny@googlegroups.com \ No newline at end of file diff --git a/README.en-US.md b/README.en-US.md deleted file mode 100644 index c41c5b0fb6..0000000000 --- a/README.en-US.md +++ /dev/null @@ -1,102 +0,0 @@ -

- - OpenTiny Logo - -

- -

TinyEngine enables developers to customize low-code platforms, build low-bit platforms online in real time, and support secondary development or integration of low-bit platform capabilities.

- -English | [简体中文](README.zh-CN.md) - -🌈 Features: - -- Cross-end cross-frame front-end components -- Supports online real-time construction, secondary development, or being integrated. -- Directly generate deployable source code without engine support. -- Allows access to third-party components and customized extension plug-ins. -- Supports high-code and low-code, and hybrid development and deployment of applications. -- The platform accesses AI big model capabilities to help developers build applications. - -## Development - -### Dependencies required for installation - -```sh -$ npm install -$ pushd mockServer -$ npm install -$ popd -``` - -### Local development: Start the local mock server and use the mock data of the local mock server. - -```sh -$ npm run serve - -# start another terminal -$ cd mockServer -$ npm run dev -``` - -Open a browser: `http://localhost:8080/?type=app&id=918&tenant=1&pageid=NTJ4MjvqoVj8OVsc` -`url search` Parameters: - -- `type=app` Application type -- `id=xxx` Application ID -- `tenant=xxx` Organization ID -- `pagdId=xxx` Page ID - -## Build - -```sh -# Build all plug-ins first -npm run build:plugin - -# Build Designer -npm run build:alpha or build:prod - -# Release all plug-ins. -npm run publish:plugin - -# Publish the designer. -npm run publish:core - -``` - -## Common Packet Sending Process - -1. Release the plug-in. - -```sh -npm run build:plugin && npm run publish:plugin -``` - -2. Publish Designer - -a) Change the package name and version number. -Package name: @opentiny/tinybuilder-design-core-test -Version number: The last digit plus 1 each time. For example: - -``` -"name": "@opentiny/tinybuilder-design-core-test", -"version": "1.0.87", -``` - -b) npm publish - -## 🤝 Participation and Contribution - -If you are interested in our open source project, please join us! 🎉 - -Please read the [Contribution Guide](CONTRIBUTING.md) before participating in the contribution. - -- Add official assistant WeChat opentiny-official and join the technical exchange group -- Join the mailing list opentiny@googlegroups.com - -## Open source protocol - -[MIT](LICENSE) - -``` - -``` diff --git a/README.md b/README.md index 6cc0a5a576..37515208cd 100644 --- a/README.md +++ b/README.md @@ -17,25 +17,45 @@ English | [简体中文](README.zh-CN.md) - Supports high-code and low-code, and hybrid development and deployment of applications. - The platform accesses AI big model capabilities to help developers build applications. +## Documentation + +- intro:https://opentiny.design/tiny-engine#/home +- tutorial:https://opentiny.design/tiny-engine#/help-center/course/engine +- playground:https://opentiny.design/tiny-engine#/tiny-engine-editor + ## Development ### Dependencies required for installation ```sh -$ npm install -$ pushd mockServer -$ npm install -$ popd +$ pnpm install ``` ### Local development: Start the local mock server and use the mock data of the local mock server. ```sh -$ npm run serve +$ pnpm dev +``` + +## Local development, directly connected to the local tiny-engine-webservice server + +1. Start tiny-engine-data-center + +2. Start tiny-engine-webservice + +3. Modify the origin value in `vite.config.js` in the `packages/design-core/` directory of the tiny-engine project to be the address port of your local webService project (the webService port defaults to 7011), such as: + +Modify port + + +### Materials Synchronization [Solution](https://opentiny.design/tiny-engine#/help-center/course/engine/56) + +```sh +$ pnpm splitMaterials +``` -# start another terminal -$ cd mockServer -$ npm run dev +```sh +$ pnpm buildMaterials ``` Open a browser: `http://localhost:8080/?type=app&id=918&tenant=1&pageid=NTJ4MjvqoVj8OVsc` @@ -44,45 +64,35 @@ Open a browser: `http://localhost:8080/?type=app&id=918&tenant=1&pageid=NTJ4Mjvq - `type=app` Application type - `id=xxx` Application ID - `tenant=xxx` Organization ID -- `pagdId=xxx` Page ID +- `pageid=xxx` Page ID ## Build ```sh # Build all plug-ins first -npm run build:plugin +pnpm build:plugin # Build Designer -npm run build:alpha or build:prod - -# Release all plug-ins. -npm run publish:plugin - -# Publish the designer. -npm run publish:core +pnpm build:alpha or build:prod ``` - -## Common Packet Sending Process - -1. Release the plug-in. - -```sh -npm run build:plugin && npm run publish:plugin +The folder where the product is located after building +``` + tiny-engine/packages/design-core/dist/ ``` -2. Publish Designer +## Milestones -a) Change the package name and version number. -Package name: @opentiny/tinybuilder-design-core-test -Version number: The last digit plus 1 each time. For example: +```mermaid +gantt +dateFormat YYYY-MM-DD +axisFormat %Y-%m-%d -``` -"name": "@opentiny/tinybuilder-design-core-test", -"version": "1.0.87", -``` +1.0.0-beta.x version : 2023-09-25, 2024-05-20 +1.0.0-rc version(refactor version) : 2024-10-01 +1.0.0 version : 2024-11-01 -b) npm publish +``` ## 🤝 Participation and Contribution @@ -93,6 +103,6 @@ Please read the [Contribution Guide](CONTRIBUTING.md) before participating in th - Add official assistant WeChat opentiny-official and join the technical exchange group - Join the mailing list opentiny@googlegroups.com -## Open source protocol +## License [MIT](LICENSE) diff --git a/README.zh-CN.md b/README.zh-CN.md index 17cc565609..636ad668c4 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -17,26 +17,45 @@ - 支持高代码与低代码,混合开发部署应用 - 平台接入 AI 大模型能力,辅助开发者构建应用 +## 文档 + +- 介绍:https://opentiny.design/tiny-engine#/home +- 使用文档:https://opentiny.design/tiny-engine#/help-center/course/engine +- 演示应用:https://opentiny.design/tiny-engine#/tiny-engine-editor + ## 开发 ### 安装所需的依赖 ```sh -$ npm install -$ pushd mockServer -$ npm install -$ popd +$ pnpm install ``` ### 本地开发,启动本地 mock 服务器,使用本地 mock 服务器的 mock 数据 ```sh -$ npm run serve +$ pnpm dev +``` + +### 本地开发,直连本地的tiny-engine-webservice服务端 + +1. 启动 tiny-engine-data-center + +2. 启动 tiny-engine-webservice + +3. 修改 tiny-engine 项目 `packages/design-core/` 目录下 `vite.config.js` 中origin的值为自己本地webService项目的地址端口(webService端口默认为7011),如: + +修改端口 + + +### 物料同步[方案](https://opentiny.design/tiny-engine#/help-center/course/engine/56) -# 另起一个终端 -$ cd mockServer -$ npm run dev +```sh +$ pnpm splitMaterials +``` +```sh +$ pnpm buildMaterials ``` 浏览器打开:`http://localhost:8080/?type=app&id=918&tenant=1&pageid=NTJ4MjvqoVj8OVsc` @@ -45,42 +64,35 @@ $ npm run dev - `type=app` 应用类型 - `id=xxx` 应用 ID - `tenant=xxx` 组织 ID -- `pagdId=xxx` 页面 ID +- `pageid=xxx` 页面 ID ## 构建 ```sh # 先构建所有插件 -npm run build:plugin +pnpm run build:plugin # 构建设计器 -npm run build:alpha 或 build:prod - -# 发布所有插件 -npm run publish:plugin - -# 发布设计器 -npm run publish:core +pnpm run build:alpha 或 build:prod ``` +构建后产物所在文件夹 +``` + tiny-engine/packages/design-core/dist/ +``` -## 常规发包流程 - -1. 发布插件 - npm run build:plugin && npm run publish:plugin +## 里程碑 -2. 发布设计器 +```mermaid +gantt +dateFormat YYYY-MM-DD +axisFormat %Y-%m-%d -a) 修改包名和版本号: -包名:@opentiny/tinybuilder-design-core-test -版本号:末位每次+1, 例如: +1.0.0-beta.x version : 2023-09-25, 2024-05-20 +1.0.0-rc version(refactor version) : 2024-10-01 +1.0.0 version : 2024-11-01 ``` - "name": "@opentiny/tinybuilder-design-core-test", - "version": "1.0.87", -``` - -b) npm publish ## 🤝 参与贡献 diff --git a/canvas.html b/canvas.html deleted file mode 100644 index 724ceda252..0000000000 --- a/canvas.html +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - - - - - -
-
-
-
-
-
-
- - - diff --git a/designer-demo/engine.config.js b/designer-demo/engine.config.js new file mode 100644 index 0000000000..fa2b077e00 --- /dev/null +++ b/designer-demo/engine.config.js @@ -0,0 +1,7 @@ +export default { + id: 'engine.config', + theme: import.meta.env.VITE_THEME || 'light', + material: ['/mock/bundle.json'], + scripts: [], + styles: [] +} diff --git a/designer-demo/env/.env.alpha b/designer-demo/env/.env.alpha new file mode 100644 index 0000000000..6cd7ceea6a --- /dev/null +++ b/designer-demo/env/.env.alpha @@ -0,0 +1,12 @@ +# alpha mode, used by the "build:alpha" script + +NODE_ENV=production +VITE_CDN_DOMAIN=https://unpkg.com +VITE_LOCAL_IMPORT_MAPS=false +VITE_LOCAL_BUNDLE_DEPS=false +# VITE_ORIGIN= + +# 错误监控上报 url +VITE_ERROR_MONITOR_URL=/platform-center/api/platform/monitoring/event +# 是否开启错误监控 +VITE_ERROR_MONITOR=false diff --git a/designer-demo/env/.env.development b/designer-demo/env/.env.development new file mode 100644 index 0000000000..e02fbee0fd --- /dev/null +++ b/designer-demo/env/.env.development @@ -0,0 +1,8 @@ +# development mode, used by the "vite" command + +NODE_ENV=development +VITE_CDN_DOMAIN=https://unpkg.com +VITE_LOCAL_IMPORT_MAPS=false +VITE_LOCAL_BUNDLE_DEPS=false +# request data via alpha service +# VITE_ORIGIN= diff --git a/designer-demo/env/.env.production b/designer-demo/env/.env.production new file mode 100644 index 0000000000..8768ec32ca --- /dev/null +++ b/designer-demo/env/.env.production @@ -0,0 +1,7 @@ +# prod mode, used by the "build:prod" script + +NODE_ENV=production +VITE_CDN_DOMAIN=https://unpkg.com +VITE_LOCAL_IMPORT_MAPS=false +VITE_LOCAL_BUNDLE_DEPS=false +#VITE_ORIGIN= diff --git a/designer-demo/index.html b/designer-demo/index.html new file mode 100644 index 0000000000..795e4fbadb --- /dev/null +++ b/designer-demo/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + Vue + + +
+ + + diff --git a/designer-demo/package.json b/designer-demo/package.json new file mode 100644 index 0000000000..cab669d9e1 --- /dev/null +++ b/designer-demo/package.json @@ -0,0 +1,30 @@ +{ + "name": "designer-demo", + "private": true, + "version": "2.0.0-alpha.2", + "type": "module", + "scripts": { + "dev": "cross-env VITE_THEME=light vite", + "build:alpha": "cross-env NODE_OPTIONS=--max-old-space-size=8192 VITE_THEME=light vite build --mode alpha", + "build": "cross-env NODE_OPTIONS=--max-old-space-size=8192 VITE_THEME=light vite build" + }, + "dependencies": { + "@opentiny/tiny-engine": "workspace:^", + "@opentiny/tiny-engine-theme-dark": "workspace:*", + "@opentiny/tiny-engine-theme-light": "workspace:*", + "@opentiny/vue": "~3.14.0", + "@opentiny/vue-design-smb": "~3.14.0", + "@opentiny/vue-icon": "~3.14.0", + "@opentiny/vue-locale": "~3.14.0", + "@opentiny/vue-renderless": "~3.14.0", + "@opentiny/vue-theme": "~3.14.0", + "vue": "^3.4.21" + }, + "devDependencies": { + "@opentiny/tiny-engine-mock": "workspace:^", + "@opentiny/tiny-engine-vite-config": "workspace:^", + "@vitejs/plugin-vue": "^5.1.2", + "cross-env": "^7.0.3", + "vite": "^5.4.2" + } +} diff --git a/designer-demo/preview.html b/designer-demo/preview.html new file mode 100644 index 0000000000..2291301fa4 --- /dev/null +++ b/designer-demo/preview.html @@ -0,0 +1,13 @@ + + + + + + + Design Core Preview + + +
+ + + diff --git a/designer-demo/public/favicon.ico b/designer-demo/public/favicon.ico new file mode 100644 index 0000000000..826d98acb7 Binary files /dev/null and b/designer-demo/public/favicon.ico differ diff --git a/designer-demo/public/mock/bundle.json b/designer-demo/public/mock/bundle.json new file mode 100644 index 0000000000..f60003e403 --- /dev/null +++ b/designer-demo/public/mock/bundle.json @@ -0,0 +1,14664 @@ +{ + "data": { + "framework": "Vue", + "materials": { + "components": [ + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "输入框" + }, + "component": "ElInput", + "icon": "input", + "description": "通过鼠标或键盘输入字符", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElInput" + }, + "group": "表单组件", + "category": "element-plus", + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "isPopper": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "type", + "size" + ] + }, + "contextMenu": { + "actions": [ + "copy", + "remove", + "insert", + "updateAttr", + "bindEevent", + "createBlock" + ], + "disable": [] + }, + "invalidity": [ + "" + ], + "clickCapture": true, + "framework": "Vue" + }, + "schema": { + "properties": [ + { + "name": "0", + "label": { + "zh_CN": "基础属性" + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "description": { + "zh_CN": "绑定值" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "MyInputConfigurator", + "props": {} + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "尺寸" + } + }, + "description": { + "zh_CN": "尺寸" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "default", + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "default", + "value": "default" + }, + { + "label": "small", + "value": "small" + } + ] + } + } + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "description": { + "zh_CN": "类型" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "maxlength", + "label": { + "text": { + "zh_CN": "最大长度" + } + }, + "description": { + "zh_CN": "最大输入长度" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "number", + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" + } + }, + "description": { + "zh_CN": "是否禁用" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定值改变时触发" + }, + "description": { + "zh_CN": "双向绑定值改变时触发" + } + }, + "onBlur": { + "label": { + "zh_CN": "输入框失去焦点时触发" + }, + "description": { + "zh_CN": "输入框失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + }, + "slots": { + "prefix": { + "label": { + "zh_CN": "头部内容" + }, + "description": { + "zh_CN": "输入框头部内容,只对非 type='textarea' 有效" + } + }, + "suffix": { + "label": { + "zh_CN": "尾部内容" + }, + "description": { + "zh_CN": "输入框尾部内容,只对非 type='textarea' 有效" + } + }, + "prepend": { + "label": { + "zh_CN": "前置内容" + }, + "description": { + "zh_CN": "输入框前置内容,只对非 type='textarea' 有效" + } + }, + "append": { + "label": { + "zh_CN": "后置内容" + }, + "description": { + "zh_CN": "输入框后置内容,只对非 type='textarea' 有效" + } + } + } + } + }, + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "按钮" + }, + "component": "ElButton", + "icon": "button", + "description": "常用的操作按钮", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElButton" + }, + "group": "基础组件", + "category": "element-plus", + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "isPopper": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "type", + "size" + ] + }, + "contextMenu": { + "actions": [ + "copy", + "remove", + "insert", + "updateAttr", + "bindEevent", + "createBlock" + ], + "disable": [] + }, + "invalidity": [ + "" + ], + "clickCapture": true, + "framework": "Vue" + }, + "schema": { + "properties": [ + { + "name": "0", + "label": { + "zh_CN": "基础属性" + }, + "content": [ + { + "property": "size", + "label": { + "text": { + "zh_CN": "尺寸" + } + }, + "description": { + "zh_CN": "尺寸" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "default", + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "default", + "value": "default" + }, + { + "label": "small", + "value": "small" + } + ] + } + } + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "description": { + "zh_CN": "类型" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "plain", + "label": { + "text": { + "zh_CN": "朴素按钮" + } + }, + "description": { + "zh_CN": "是否为朴素按钮" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "text", + "label": { + "text": { + "zh_CN": "文字按钮" + } + }, + "description": { + "zh_CN": "是否为文字按钮" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "bg", + "label": { + "text": { + "zh_CN": "背景颜色" + } + }, + "description": { + "zh_CN": "是否显示文字按钮背景颜色" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "link", + "label": { + "text": { + "zh_CN": "链接按钮" + } + }, + "description": { + "zh_CN": "是否为链接按钮" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "round", + "label": { + "text": { + "zh_CN": "圆角按钮" + } + }, + "description": { + "zh_CN": "是否为圆角按钮" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "circle", + "label": { + "text": { + "zh_CN": "圆形按钮" + } + }, + "description": { + "zh_CN": "是否为圆形按钮" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "loading", + "label": { + "text": { + "zh_CN": "加载中状态" + } + }, + "description": { + "zh_CN": "是否为加载中状态" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "description": { + "zh_CN": "是否禁用" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": {}, + "slots": { + "default": { + "label": { + "zh_CN": "default" + }, + "description": { + "zh_CN": "自定义默认内容" + } + }, + "loading": { + "label": { + "zh_CN": "loading" + }, + "description": { + "zh_CN": "自定义加载中组件" + } + } + } + } + }, + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "表单" + }, + "component": "ElForm", + "icon": "form", + "description": "表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElForm" + }, + "group": "表单组件", + "category": "element-plus", + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "isPopper": false, + "nestingRule": { + "childWhitelist": [ + "ElFormItem" + ], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "inline", + "label-width" + ] + }, + "contextMenu": { + "actions": [ + "copy", + "remove", + "insert", + "updateAttr", + "bindEevent", + "createBlock" + ], + "disable": [] + }, + "invalidity": [ + "" + ], + "clickCapture": true, + "framework": "Vue" + }, + "schema": { + "properties": [ + { + "name": "0", + "label": { + "zh_CN": "基础属性" + }, + "content": [ + { + "property": "model", + "label": { + "text": { + "zh_CN": "数据对象" + } + }, + "description": { + "zh_CN": "表单数据对象" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "object", + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } + }, + { + "property": "rules", + "label": { + "text": { + "zh_CN": "验证规则" + } + }, + "description": { + "zh_CN": "表单验证规则" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "object", + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } + }, + { + "property": "inline", + "label": { + "text": { + "zh_CN": "行内模式" + } + }, + "description": { + "zh_CN": "行内表单模式" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "label-position", + "label": { + "text": { + "zh_CN": "标签位置" + } + }, + "description": { + "zh_CN": "表单域标签的位置, 当设置为 left 或 right 时,则也需要设置标签宽度属性" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "right", + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "left", + "value": "left" + }, + { + "label": "right", + "value": "right" + }, + { + "label": "top", + "value": "top" + } + ] + } + } + }, + { + "property": "label-width", + "label": { + "text": { + "zh_CN": "标签宽度" + } + }, + "description": { + "zh_CN": "标签的长度,例如 '50px'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "label-suffix", + "label": { + "text": { + "zh_CN": "标签后缀" + } + }, + "description": { + "zh_CN": "表单域标签的后缀" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "hide-required-asterisk", + "label": { + "text": { + "zh_CN": "隐藏必填星号" + } + }, + "description": { + "zh_CN": "是否隐藏必填字段标签旁边的红色星号" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "require-asterisk-position", + "label": { + "text": { + "zh_CN": "星号位置" + } + }, + "description": { + "zh_CN": "星号的位置" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "left", + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "left", + "value": "left" + }, + { + "label": "right", + "value": "right" + } + ] + } + } + }, + { + "property": "show-message", + "label": { + "text": { + "zh_CN": "显示校验信息" + } + }, + "description": { + "zh_CN": "是否显示校验错误信息" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": true, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "inline-message", + "label": { + "text": { + "zh_CN": "行内显示校验信息" + } + }, + "description": { + "zh_CN": "是否以行内形式展示校验信息" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "status-icon", + "label": { + "text": { + "zh_CN": "显示校验结果图标" + } + }, + "description": { + "zh_CN": "是否在输入框中显示校验结果反馈图标" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "validate-on-rule-change", + "label": { + "text": { + "zh_CN": "触发验证" + } + }, + "description": { + "zh_CN": "是否在 rules 属性改变后立即触发一次验证" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": true, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "尺寸" + } + }, + "description": { + "zh_CN": "用于控制该表单内组件的尺寸" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "default", + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "default", + "value": "default" + }, + { + "label": "small", + "value": "small" + } + ] + } + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "description": { + "zh_CN": "是否禁用该表单内的所有组件。 如果设置为 true, 它将覆盖内部组件的 disabled 属性" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "scroll-to-error", + "label": { + "text": { + "zh_CN": "滚动到错误项" + } + }, + "description": { + "zh_CN": "当校验失败时,滚动到第一个错误表单项" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onValidate": { + "label": { + "zh_CN": "任一表单项被校验后触发" + }, + "description": { + "zh_CN": "任一表单项被校验后触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "slots": {} + } + }, + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "表单子项" + }, + "component": "ElFormItem", + "icon": "formItem", + "description": "表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElFormItem" + }, + "group": "表单组件", + "category": "element-plus", + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "isPopper": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "inline", + "label-width" + ] + }, + "contextMenu": { + "actions": [ + "copy", + "remove", + "insert", + "updateAttr", + "bindEevent", + "createBlock" + ], + "disable": [] + }, + "invalidity": [ + "" + ], + "clickCapture": true, + "framework": "Vue" + }, + "schema": { + "properties": [ + { + "name": "0", + "label": { + "zh_CN": "基础属性" + }, + "content": [ + { + "property": "prop", + "label": { + "text": { + "zh_CN": "键名" + } + }, + "description": { + "zh_CN": "model 的键名。 它可以是一个属性的值(如 a.b.0 或 [a', 'b', '0'])。 在定义了 validate、resetFields 的方法时,该属性是必填的" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "label", + "label": { + "text": { + "zh_CN": "标签文本" + } + }, + "description": { + "zh_CN": "标签文本" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "label-width", + "label": { + "text": { + "zh_CN": "标签宽度" + } + }, + "description": { + "zh_CN": "标签宽度,例如 '50px'。 可以使用 auto" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "required", + "label": { + "text": { + "zh_CN": "必填项" + } + }, + "description": { + "zh_CN": "是否为必填项,如不设置,则会根据校验规则确认" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "rules", + "label": { + "text": { + "zh_CN": "验证规则" + } + }, + "description": { + "zh_CN": "表单验证规则, 更多内容可以参考async-validator" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "object", + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } + }, + { + "property": "error", + "label": { + "text": { + "zh_CN": "错误信息" + } + }, + "description": { + "zh_CN": "表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "show-message", + "label": { + "text": { + "zh_CN": "显示错误信息" + } + }, + "description": { + "zh_CN": "是否显示校验错误信息" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "inline-message", + "label": { + "text": { + "zh_CN": "行内显示错误信息" + } + }, + "description": { + "zh_CN": "是否在行内显示校验信息" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "尺寸" + } + }, + "description": { + "zh_CN": "用于控制该表单内组件的尺寸" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "default", + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "default", + "value": "default" + }, + { + "label": "small", + "value": "small" + } + ] + } + } + }, + { + "property": "for", + "label": { + "text": { + "zh_CN": "for" + } + }, + "description": { + "zh_CN": "和原生标签相同能力" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "validate-status", + "label": { + "text": { + "zh_CN": "校验状态" + } + }, + "description": { + "zh_CN": "formItem 校验的状态" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "error", + "value": "error" + }, + { + "label": "validating", + "value": "validating" + }, + { + "label": "success", + "value": "success" + } + ] + } + } + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": {}, + "slots": { + "label": { + "label": { + "zh_CN": "label" + }, + "description": { + "zh_CN": "标签位置显示的内容" + } + }, + "error": { + "label": { + "zh_CN": "error" + }, + "description": { + "zh_CN": "验证错误信息的显示内容" + } + } + } + } + }, + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "表单" + }, + "component": "ElTable", + "icon": "table", + "description": "用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElTable" + }, + "group": "数据展示", + "category": "element-plus", + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "isPopper": false, + "nestingRule": { + "childWhitelist": [ + "ElTableColumn" + ], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "inline", + "label-width" + ] + }, + "contextMenu": { + "actions": [ + "copy", + "remove", + "insert", + "updateAttr", + "bindEevent", + "createBlock" + ], + "disable": [] + }, + "invalidity": [ + "" + ], + "clickCapture": true, + "framework": "Vue" + }, + "schema": { + "properties": [ + { + "name": "0", + "label": { + "zh_CN": "基础属性" + }, + "content": [ + { + "property": "data", + "label": { + "text": { + "zh_CN": "数据" + } + }, + "description": { + "zh_CN": "显示的数据" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "array", + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } + }, + { + "property": "columns", + "label": { + "text": { + "zh_CN": "表格列配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "properties": [ + { + "label": { + "zh_CN": "默认分组" + }, + "content": [ + { + "property": "type", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "type" + } + }, + "description": { + "text": { + "zh_CN": "对应列的类型。 如果设置了selection则显示多选框; 如果设置了 index 则显示该行的索引(从 1 开始计算); 如果设置了 expand 则显示为一个可展开的按钮" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "selection", + "value": "selection" + }, + { + "label": "index", + "value": "index" + }, + { + "label": "expand", + "value": "expand" + } + ] + } + } + }, + { + "property": "index", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "index" + } + }, + "description": { + "text": { + "zh_CN": "如果设置了 type=index,可以通过传递 index 属性来自定义索引" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": {} + } + }, + { + "property": "label", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "label" + } + }, + "description": { + "text": { + "zh_CN": "显示的标题" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "column-key", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "column-key" + } + }, + "description": { + "text": { + "zh_CN": "column 的 key, column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "prop", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "prop" + } + }, + "description": { + "text": { + "zh_CN": "字段名称 对应列内容的字段名, 也可以使用 property属性" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "width", + "type": "number", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "width" + } + }, + "description": { + "text": { + "zh_CN": "对应列的宽度" + } + }, + "widget": { + "component": "NumberConfigurator", + "props": {} + } + }, + { + "property": "min-width", + "type": "number", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "min-width" + } + }, + "description": { + "text": { + "zh_CN": "对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列" + } + }, + "widget": { + "component": "NumberConfigurator", + "props": {} + } + }, + { + "property": "fixed", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "fixed" + } + }, + "description": { + "text": { + "zh_CN": "列是否固定在左侧或者右侧。 true 表示固定在左侧" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "left", + "value": "left" + }, + { + "label": "right", + "value": "right" + } + ] + } + } + }, + { + "property": "sortable", + "type": "boolean", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "sortable" + } + }, + "description": { + "text": { + "zh_CN": "对应列是否可以排序" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "sort-method", + "type": "function", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "sort-method" + } + }, + "description": { + "text": { + "zh_CN": "指定数据按照哪个属性进行排序,仅当sortable设置为true的时候有效。 应该如同 Array.sort 那样返回一个 Number" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": {} + } + }, + { + "property": "sort-by", + "type": "array", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "sort-by" + } + }, + "description": { + "text": { + "zh_CN": "指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } + }, + { + "property": "sort-orders", + "type": "array", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "sort-orders" + } + }, + "description": { + "text": { + "zh_CN": "数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } + }, + { + "property": "resizable", + "type": "boolean", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "resizable" + } + }, + "description": { + "text": { + "zh_CN": "对应列是否可以通过拖动改变宽度(需要在 el-table 上设置 border 属性为真)" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "formatter", + "type": "function", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "formatter" + } + }, + "description": { + "text": { + "zh_CN": "用来格式化内容" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "dataType": "JSFunction" + } + } + }, + { + "property": "show-overflow-tooltip", + "type": "boolean", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "show-overflow-tooltip" + } + }, + "description": { + "text": { + "zh_CN": "当内容过长被隐藏时显示 tooltip" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "align", + "type": "string", + "labelPosition": "top", + "defaultValue": "left", + "label": { + "text": { + "zh_CN": "align" + } + }, + "description": { + "text": { + "zh_CN": "对齐方式" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "left", + "value": "left" + }, + { + "label": "center", + "value": "center" + }, + { + "label": "right", + "value": "right" + } + ] + } + } + }, + { + "property": "header-align", + "type": "string", + "labelPosition": "top", + "defaultValue": "left", + "label": { + "text": { + "zh_CN": "header-align" + } + }, + "description": { + "text": { + "zh_CN": "表头对齐方式, 若不设置该项,则使用表格的对齐方式" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "left", + "value": "left" + }, + { + "label": "center", + "value": "center" + }, + { + "label": "right", + "value": "right" + } + ] + } + } + }, + { + "property": "class-name", + "type": "string", + "labelPosition": "top", + "defaultValue": "left", + "label": { + "text": { + "zh_CN": "class-name" + } + }, + "description": { + "text": { + "zh_CN": "列的 className" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "label-class-name", + "type": "string", + "labelPosition": "top", + "defaultValue": "left", + "label": { + "text": { + "zh_CN": "label-class-name" + } + }, + "description": { + "text": { + "zh_CN": "当前列标题的自定义类名" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "selectable", + "type": "function", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "selectable" + } + }, + "description": { + "text": { + "zh_CN": "仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": {} + } + }, + { + "property": "reserve-selection", + "type": "boolean", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "reserve-selection" + } + }, + "description": { + "text": { + "zh_CN": "数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "filters", + "type": "array", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "filters" + } + }, + "description": { + "text": { + "zh_CN": "数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } + }, + { + "property": "filter-placement", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "filter-placement" + } + }, + "description": { + "text": { + "zh_CN": "过滤弹出框的定位" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "filter-multiple", + "type": "string", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "filter-multiple" + } + }, + "description": { + "text": { + "zh_CN": "数据过滤的选项是否多选" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "filter-method", + "type": "function", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "filter-method" + } + }, + "description": { + "text": { + "zh_CN": "数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": {} + } + }, + { + "property": "filtered-value", + "type": "array", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "filtered-value" + } + }, + "description": { + "text": { + "zh_CN": "选中的数据过滤项,如果需要自定义表头过滤的渲染方式,可能会需要此属性" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } + } + ] + } + ], + "widget": { + "component": "TableColumnsConfigurator", + "props": { + "type": "object", + "textField": "label", + "language": "json", + "buttonText": "编辑列配置", + "title": "编辑列配置", + "expand": true + } + }, + "description": { + "zh_CN": "表格列的配置信息" + }, + "labelPosition": "top" + }, + { + "property": "max-height", + "label": { + "text": { + "zh_CN": "最大高度" + } + }, + "description": { + "zh_CN": "Table 的最大高度。" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "number", + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "height", + "label": { + "text": { + "zh_CN": "表格高度" + } + }, + "description": { + "zh_CN": "Table 的高度, 默认为自动高度。 这个高度会设置为 Table 的 style.height 的值,Table 的高度会受控于外部样式。" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "stripe", + "label": { + "text": { + "zh_CN": "斑马纹" + } + }, + "description": { + "zh_CN": "是否为斑马纹 table" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "border", + "label": { + "text": { + "zh_CN": "纵向边框" + } + }, + "description": { + "zh_CN": "是否带有纵向边框" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "表格尺寸" + } + }, + "description": { + "zh_CN": "Table 的尺寸" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "default", + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "default", + "value": "default" + }, + { + "label": "small", + "value": "small" + } + ] + } + } + }, + { + "property": "fit", + "label": { + "text": { + "zh_CN": "列宽自撑开" + } + }, + "description": { + "zh_CN": "列的宽度是否自撑开" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": true, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "show-header", + "label": { + "text": { + "zh_CN": "显示表头" + } + }, + "description": { + "zh_CN": "是否显示表头" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": true, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "highlight-current-row", + "label": { + "text": { + "zh_CN": "高亮当前行" + } + }, + "description": { + "zh_CN": "是否要高亮当前行" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "current-row-key", + "label": { + "text": { + "zh_CN": "当前行的 key" + } + }, + "description": { + "zh_CN": "当前行的 key,只写属性" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "row-class-name", + "label": { + "text": { + "zh_CN": "行的类名" + } + }, + "description": { + "zh_CN": "行的 className" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "row-key", + "label": { + "text": { + "zh_CN": "行数据的 Key" + } + }, + "description": { + "zh_CN": "行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "empty-text", + "label": { + "text": { + "zh_CN": "空数据文本" + } + }, + "description": { + "zh_CN": "空数据时显示的文本内容" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "device": [] + }, + { + "property": "table-layout", + "label": { + "text": { + "zh_CN": "表格布局方式" + } + }, + "description": { + "zh_CN": "设置表格单元、行和列的布局方式" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": "fixed", + "widget": { + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "fixed", + "value": "fixed" + }, + { + "label": "auto", + "value": "auto" + } + ] + } + }, + "device": [] + }, + { + "property": "scrollbar-always-on", + "label": { + "text": { + "zh_CN": "显示滚动条" + } + }, + "description": { + "zh_CN": "总是显示滚动条" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "flexible", + "label": { + "text": { + "zh_CN": "主轴最小尺寸" + } + }, + "description": { + "zh_CN": "确保主轴的最小尺寸,以便不超过内容" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onSelect": { + "label": { + "zh_CN": "勾选数据行的 Checkbox 时触发" + }, + "description": { + "zh_CN": "当用户手动勾选数据行的 Checkbox 时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "selection", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中项" + } + }, + { + "name": "row", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前行" + } + } + ], + "returns": {} + } + }, + "onSelectAll": { + "label": { + "zh_CN": "勾选全选时触发" + }, + "description": { + "zh_CN": "当用户手动勾选全选 Checkbox 时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "selection", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中项" + } + } + ], + "returns": {} + } + }, + "onSelectionChange": { + "label": { + "zh_CN": "选择项发生变化时会触发" + }, + "description": { + "zh_CN": "当选择项发生变化时会触发该事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "selection", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中项" + } + } + ], + "returns": {} + } + }, + "onCellMouseEnter": { + "label": { + "zh_CN": "单元格 hover 时会触发" + }, + "description": { + "zh_CN": "当单元格 hover 进入时会触发该事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "row", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前行" + } + }, + { + "name": "column", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前列" + } + }, + { + "name": "cell", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前单元格" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生事件 event" + } + } + ], + "returns": {} + } + }, + "onCellMouseLeave": { + "label": { + "zh_CN": "单元格 hover 退出时会触发" + }, + "description": { + "zh_CN": "当单元格 hover 退出时会触发该事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "row", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前行" + } + }, + { + "name": "column", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前列" + } + }, + { + "name": "cell", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前单元格" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生事件 event" + } + } + ], + "returns": {} + } + } + }, + "slots": { + "empty": { + "label": { + "zh_CN": "empty" + }, + "description": { + "zh_CN": "当数据为空时自定义的内容" + } + }, + "append": { + "label": { + "zh_CN": "append" + }, + "description": { + "zh_CN": "插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。" + } + } + } + } + }, + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "表单" + }, + "component": "ElTableColumn", + "icon": "table", + "description": "用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElTableColumn" + }, + "group": "表单组件", + "category": "element-plus", + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "isPopper": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "inline", + "label-width" + ] + }, + "contextMenu": { + "actions": [ + "copy", + "remove", + "insert", + "updateAttr", + "bindEevent", + "createBlock" + ], + "disable": [] + }, + "invalidity": [ + "" + ], + "clickCapture": true, + "framework": "Vue" + }, + "schema": { + "properties": [ + { + "name": "0", + "label": { + "zh_CN": "基础属性" + }, + "content": [], + "description": { + "zh_CN": "" + } + } + ], + "events": {}, + "slots": {} + } + }, + { + "name": { + "zh_CN": "走马灯子项" + }, + "component": "TinyCarouselItem", + "icon": "carouselitem", + "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CarouselItem", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "category": "容器组件", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "name", + "label": { + "text": { + "zh_CN": "名称" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "幻灯片的名字,可用作 setActiveItem 的参数" + } + }, + { + "property": "title", + "label": { + "text": { + "zh_CN": "标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "幻灯片的标题" + } + }, + { + "property": "indicator-position", + "label": { + "text": { + "zh_CN": "指示器位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "outside", + "value": "outside" + }, + { + "label": "none", + "value": "none" + } + ] + } + }, + "description": { + "zh_CN": "指示器的位置" + } + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "disabled", + "size" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "name": { + "zh_CN": "走马灯" + }, + "component": "TinyCarousel", + "icon": "carousel", + "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Carousel", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "category": "容器组件", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "arrow", + "label": { + "text": { + "zh_CN": "箭头显示时机" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "总是显示", + "value": "always" + }, + { + "label": "鼠标悬停时显示", + "value": "hover" + }, + { + "label": "从不显示", + "value": "never" + } + ] + } + }, + "description": { + "zh_CN": "切换箭头的显示时机" + } + }, + { + "property": "autoplay", + "label": { + "text": { + "zh_CN": "自动切换" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否自动切换" + } + }, + { + "property": "tabs", + "label": { + "text": { + "zh_CN": "选项卡" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": "", + "cols": 12, + "bindState": false, + "widget": { + "component": "ContainerConfigurator", + "props": {} + }, + "description": { + "zh_CN": "tabs 选项卡" + }, + "labelPosition": "none" + }, + { + "property": "height", + "label": { + "text": { + "zh_CN": "高度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "走马灯的高度" + } + }, + { + "property": "indicator-position", + "label": { + "text": { + "zh_CN": "位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "走马灯外部", + "value": "outside" + }, + { + "label": "不显示", + "value": "none" + } + ] + } + }, + "description": { + "zh_CN": "指示器的位置" + } + }, + { + "property": "initial-index", + "label": { + "text": { + "zh_CN": "初始索引" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "初始状态激活的幻灯片的索引,从 0 开始 " + } + }, + { + "property": "interval", + "label": { + "text": { + "zh_CN": "自动切换间隔" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "自动切换的时间间隔,单位为毫秒" + } + }, + { + "property": "loop", + "label": { + "text": { + "zh_CN": "循环显示" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否循环显示" + } + }, + { + "property": "show-title", + "label": { + "text": { + "zh_CN": "显示标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示标题" + } + }, + { + "property": "trigger", + "label": { + "text": { + "zh_CN": "触发方式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "点击", + "value": "click" + }, + { + "label": "悬停", + "value": "hover" + } + ] + } + }, + "description": { + "zh_CN": "指示器的触发方式,默认为 hover" + } + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "水平", + "value": "horizontal" + }, + { + "label": "垂直", + "value": "vertical" + }, + { + "label": "卡片", + "value": "card" + } + ] + } + }, + "description": { + "zh_CN": "走马灯的类型" + } + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "clickCapture": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [ + "TinyCarouselItem" + ], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "disabled", + "size" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "link", + "name": { + "zh_CN": "提示框" + }, + "component": "a", + "description": "链接", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "group": "component", + "priority": 7, + "npm": {}, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "children", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlTextConfigurator", + "props": {} + }, + "description": { + "zh_CN": "类型" + }, + "labelPosition": "none" + }, + { + "property": "href", + "label": { + "text": { + "zh_CN": "链接" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "指定链接的 URL" + } + }, + { + "property": "target", + "label": { + "text": { + "zh_CN": "打开方式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "当前页面", + "value": "_self" + }, + { + "label": "打开新页面", + "value": "_blank" + } + ] + } + }, + "description": { + "zh_CN": "指定链接的打开方式,例如在当前窗口中打开或在新窗口中打开。" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "原生属性" + }, + "labelPosition": "none" + } + ] + } + ] + }, + "configure": { + "loop": true, + "condition": true, + "slots": [], + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [] + }, + "contextMenu": { + "actions": [], + "disable": [] + } + } + }, + { + "name": { + "zh_CN": "标题" + }, + "component": [ + "h1", + "h2", + "h3", + "h4", + "h5", + "h6" + ], + "icon": "h16", + "description": "标题", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 20, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "children", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlTextConfigurator", + "props": { + "showRadioButton": true + } + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "disabled", + "size" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "name": { + "zh_CN": "段落" + }, + "component": "p", + "icon": "paragraph", + "description": "段落", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 30, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "children", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlTextConfigurator", + "props": {} + }, + "description": { + "zh_CN": "类型" + }, + "labelPosition": "none" + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "原生属性" + }, + "labelPosition": "none" + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [] + }, + "contextMenu": { + "actions": [], + "disable": [] + } + } + }, + { + "name": { + "zh_CN": "输入框" + }, + "component": "input", + "icon": "input", + "description": "输入框", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 40, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "checkbox", + "value": "checkbox" + }, + { + "label": "color", + "value": "color" + }, + { + "label": "date", + "value": "date" + }, + { + "label": "button", + "value": "button" + }, + { + "label": "email", + "value": "email" + }, + { + "label": "file", + "value": "file" + }, + { + "label": "hidden", + "value": "hidden" + }, + { + "label": "image", + "value": "image" + }, + { + "label": "month", + "value": "month" + }, + { + "label": "number", + "value": "number" + }, + { + "label": "password", + "value": "password" + }, + { + "label": "radio", + "value": "radio" + }, + { + "label": "range", + "value": "range" + }, + { + "label": "reset", + "value": "reset" + }, + { + "label": "search", + "value": "search" + }, + { + "label": "submit", + "value": "submit" + }, + { + "label": "text", + "value": "text" + }, + { + "label": "time", + "value": "time" + }, + { + "label": "week", + "value": "week" + }, + { + "label": "url", + "value": "url" + } + ] + } + }, + "description": { + "zh_CN": "类型" + } + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位符" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "占位符" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "原生属性" + }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onChange": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "disabled", + "size" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "name": { + "zh_CN": "视频" + }, + "component": "video", + "icon": "video", + "description": "视频", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 50, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 10, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "src", + "label": { + "text": { + "zh_CN": "资源" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "视频的 URL" + } + }, + { + "property": "width", + "label": { + "text": { + "zh_CN": "播放器宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "视频播放器的宽度" + } + }, + { + "property": "height", + "label": { + "text": { + "zh_CN": "播放器高度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "视频播放器的高度" + } + }, + { + "property": "controls", + "label": { + "text": { + "zh_CN": "显示控件" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示控件" + } + }, + { + "property": "autoplay", + "label": { + "text": { + "zh_CN": "马上播放" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否马上播放" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "原生属性" + }, + "labelPosition": "none" + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [] + }, + "contextMenu": { + "actions": [], + "disable": [] + } + } + }, + { + "icon": "Image", + "name": { + "zh_CN": "Img" + }, + "component": "Img", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 60, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "src", + "type": "string", + "defaultValue": "", + "bindState": true, + "label": { + "text": { + "zh_CN": "资源" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "src路径" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "原生属性" + }, + "labelPosition": "none" + } + ] + } + ], + "events": {}, + "shortcuts": { + "properties": [ + "src" + ] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "button", + "name": { + "zh_CN": "Button" + }, + "component": "button", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 70, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "原生属性" + }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + }, + "configure": { + "isContainer": true + } + }, + { + "icon": "table", + "name": { + "zh_CN": "表格" + }, + "component": "table", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 80, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "width", + "label": { + "text": { + "zh_CN": "宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表格的宽度" + } + }, + { + "property": "border", + "label": { + "text": { + "zh_CN": "边框宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表格边框的宽度" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "原生属性" + }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "td", + "name": { + "zh_CN": "表格单元格" + }, + "component": "td", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 90, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "colspan", + "label": { + "text": { + "zh_CN": "合并列" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "单元格可横跨的列数" + } + }, + { + "property": "rowspan", + "label": { + "text": { + "zh_CN": "合并行" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "单元格可横跨的行数" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "原生属性" + }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "form", + "name": { + "zh_CN": "表单" + }, + "component": "form", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 100, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "name", + "label": { + "text": { + "zh_CN": "名称" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单的名称" + } + }, + { + "property": "action", + "label": { + "text": { + "zh_CN": "提交地址" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "提交表单时向何处发送表单数据" + } + }, + { + "property": "method", + "label": { + "text": { + "zh_CN": "HTTP方法" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "get", + "value": "get" + }, + { + "label": "post", + "value": "post" + } + ] + } + }, + "description": { + "zh_CN": "用于发送 form-data 的 HTTP 方法" + } + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + }, + "configure": { + "isContainer": true + } + }, + { + "icon": "label", + "name": { + "zh_CN": "表单标签" + }, + "component": "label", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 110, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "for", + "label": { + "text": { + "zh_CN": "label绑定表单元素" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "label 绑定到哪个表单元素" + } + }, + { + "property": "form", + "label": { + "text": { + "zh_CN": "label字段所属表单" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "label 字段所属的一个或多个表单" + } + } + ] + } + ], + "events": {}, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "name": { + "zh_CN": "按钮组" + }, + "component": "TinyButtonGroup", + "icon": "buttonGroup", + "description": "以按钮组的方式出现,常用于多项类似操作", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "ButtonGroup", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "category": "general", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "data", + "label": { + "text": { + "zh_CN": "数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "配置按钮组数据" + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "大小" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "mini", + "value": "mini" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "medium", + "value": "medium" + } + ] + } + }, + "description": { + "zh_CN": "组件大小" + } + }, + { + "property": "plain", + "label": { + "text": { + "zh_CN": "朴素按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否是朴素按钮" + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "disabled", + "size" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "row", + "name": { + "zh_CN": "row" + }, + "component": "TinyRow", + "description": "定义 Layout 的行配置信息", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Row", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 5, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "layout", + "label": { + "text": { + "zh_CN": "布局" + } + }, + "cols": 12, + "widget": { + "component": "LayoutGridConfigurator", + "props": {} + }, + "description": { + "zh_CN": "选择布局方式" + }, + "labelPosition": "none" + }, + { + "property": "align", + "label": { + "text": { + "zh_CN": "子项对齐方式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "top", + "value": "top" + }, + { + "label": "middle", + "value": "middle" + }, + { + "label": "bottom", + "value": "bottom" + } + ] + } + }, + "description": { + "zh_CN": "子项的副轴对齐方向,可取值:top, middle, bottom" + } + }, + { + "property": "flex", + "label": { + "text": { + "zh_CN": "flex容器" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否为flex容器" + } + }, + { + "property": "gutter", + "label": { + "text": { + "zh_CN": "子项间隔" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "子项的间隔的像素" + } + } + ] + } + ] + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "label-width", + "disabled" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "form", + "name": { + "zh_CN": "表单" + }, + "component": "TinyForm", + "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Form", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 5, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + }, + { + "property": "label-width", + "label": { + "text": { + "zh_CN": "标签宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单中标签占位宽度,默认为 80px" + }, + "labelPosition": "left" + }, + { + "property": "inline", + "label": { + "text": { + "zh_CN": "行内布局" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "行内布局模式,默认为 false" + } + }, + { + "property": "label-align", + "label": { + "text": { + "zh_CN": "必填标识占位" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "必填标识 * 是否占位" + }, + "labelPosition": "left" + }, + { + "property": "label-suffix", + "label": { + "text": { + "zh_CN": "标签后缀" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单中标签后缀" + } + }, + { + "property": "label-position", + "label": { + "text": { + "zh_CN": "标签位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "right", + "value": "right" + }, + { + "label": "left ", + "value": "left " + }, + { + "label": "top", + "value": "top" + } + ] + } + }, + "description": { + "zh_CN": "表单中标签的布局位置" + } + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "校验属性" + }, + "content": [ + { + "property": "model", + "label": { + "text": { + "zh_CN": "数据对象" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单数据对象" + }, + "labelPosition": "left" + }, + { + "property": "rules", + "label": { + "text": { + "zh_CN": "校验规则" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单验证规则" + } + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onValidate": { + "label": { + "zh_CN": "表单项被校验后触发" + }, + "description": { + "zh_CN": "表单项被校验后触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "function", + "type": "Function", + "defaultValue": "(valid) => {}", + "description": { + "zh_CN": "校验回调函数" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onInput": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框输入的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "label-width", + "disabled" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "formitem", + "name": { + "zh_CN": "表单项" + }, + "component": "TinyFormItem", + "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "FormItem", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 12, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "label", + "label": { + "text": { + "zh_CN": "标签文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": "标签", + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "标签文本" + }, + "labelPosition": "left" + }, + { + "property": "prop", + "label": { + "text": { + "zh_CN": "校验字段" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的" + } + }, + { + "property": "required", + "label": { + "text": { + "zh_CN": "必填" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否必填" + }, + "labelPosition": "left" + } + ] + } + ], + "events": {}, + "slots": { + "label": { + "label": { + "zh_CN": "字段名" + }, + "description": { + "zh_CN": "自定义显示字段名称" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": [ + "TinyForm" + ], + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "label", + "rules" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "col", + "name": { + "zh_CN": "col" + }, + "component": "TinyCol", + "description": "列配置信息", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Col", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "span", + "label": { + "text": { + "zh_CN": "栅格列格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "整行", + "value": 12 + }, + { + "label": "6格", + "value": 6 + }, + { + "label": "4格", + "value": 4 + }, + { + "label": "3格", + "value": 3 + }, + { + "label": "1格", + "value": 1 + } + ] + } + }, + "description": { + "zh_CN": "当一行分为12格时,一列可占位多少格" + } + }, + { + "property": "move", + "label": { + "text": { + "zh_CN": "栅格移动格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": -12, + "max": 12 + } + }, + "description": { + "zh_CN": "栅格左右移动格数(正数向右,负数向左)" + } + }, + { + "property": "no", + "label": { + "text": { + "zh_CN": "排序编号" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "max": 12 + } + }, + "description": { + "zh_CN": "排序编号(row中启用order生效)" + } + }, + { + "property": "offset", + "label": { + "text": { + "zh_CN": "间隔格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 0, + "max": 12 + } + }, + "description": { + "zh_CN": "栅格左侧的间隔格数" + } + }, + { + "property": "xs", + "label": { + "text": { + "zh_CN": "超小屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "<768px 响应式栅格数" + } + }, + { + "property": "sm", + "label": { + "text": { + "zh_CN": "小屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "≥768px 响应式栅格数" + } + }, + { + "property": "md", + "label": { + "text": { + "zh_CN": "中屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "≥992px 响应式栅格数" + } + }, + { + "property": "lg", + "label": { + "text": { + "zh_CN": "大屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "≥1200px 响应式栅格数" + } + }, + { + "property": "xl", + "label": { + "text": { + "zh_CN": "超大屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "≥1920px 响应式栅格数" + } + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "label", + "rules" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "name": { + "zh_CN": "按钮" + }, + "component": "TinyButton", + "icon": "button", + "description": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Button", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "text", + "type": "string", + "defaultValue": "按钮文案", + "label": { + "text": { + "zh_CN": "按钮文字" + } + }, + "cols": 12, + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "按钮文字" + } + }, + { + "property": "size", + "type": "select", + "label": { + "text": { + "zh_CN": "大小" + } + }, + "cols": 12, + "rules": [], + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "medium", + "value": "medium" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "mini", + "value": "mini" + } + ] + } + }, + "description": { + "zh_CN": "按钮大小" + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否被禁用" + }, + "labelPosition": "left" + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "primary", + "value": "primary" + }, + { + "label": "success", + "value": "success" + }, + { + "label": "info", + "value": "info" + }, + { + "label": "warning", + "value": "warning" + }, + { + "label": "danger", + "value": "danger" + }, + { + "label": "text", + "value": "text" + } + ] + } + }, + "description": { + "zh_CN": "设置不同的主题样式" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "round", + "label": { + "text": { + "zh_CN": "圆角" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否圆角按钮" + }, + "labelPosition": "left" + }, + { + "property": "plain", + "label": { + "text": { + "zh_CN": "朴素按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否为朴素按钮" + }, + "labelPosition": "left" + }, + { + "property": "reset-time", + "label": { + "text": { + "zh_CN": "禁用时间" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置禁用时间,防止重复提交,单位毫秒" + } + }, + { + "property": "circle", + "label": { + "text": { + "zh_CN": "圆形按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否圆形按钮" + }, + "labelPosition": "left" + }, + { + "property": "autofocus", + "label": { + "text": { + "zh_CN": "自动聚焦" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否默认聚焦" + }, + "labelPosition": "left" + }, + { + "property": "loading", + "label": { + "text": { + "zh_CN": "加载中样式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否展示位加载中样式" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击事件" + }, + "description": { + "zh_CN": "按钮被点击时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "text", + "size" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "name": { + "zh_CN": "输入框" + }, + "component": "TinyInput", + "icon": "input", + "description": "通过鼠标或键盘输入字符", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Input", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "textarea", + "value": "textarea" + }, + { + "label": "text", + "value": "text" + }, + { + "label": "password", + "value": "password" + } + ] + } + }, + "description": { + "zh_CN": "设置input框的type属性" + } + }, + { + "property": "rows", + "label": { + "text": { + "zh_CN": "行数" + } + }, + "widget": { + "component": "NumberConfigurator" + }, + "description": { + "zh_CN": "输入框行数,只对 type='textarea' 有效" + } + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "labelPosition": "left" + }, + { + "property": "clearable", + "label": { + "text": { + "zh_CN": "清除按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示清除按钮" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "medium", + "value": "medium" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "mini", + "value": "mini" + } + ] + } + }, + "description": { + "zh_CN": "输入框尺寸。该属性的可选值为 medium / small / mini" + } + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "maxlength", + "label": { + "text": { + "zh_CN": "最大输入长度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置 input 框的maxLength" + }, + "labelPosition": "left" + }, + { + "property": "autofocus", + "label": { + "text": { + "zh_CN": "自动聚焦" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "自动获取焦点" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值改变时触发" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框改变后的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onInput": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框输入的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "slots": { + "prefix": { + "label": { + "zh_CN": "前置内容" + } + }, + "suffix": { + "label": { + "zh_CN": "后置内容" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "value", + "disabled" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "radio", + "name": { + "zh_CN": "单选" + }, + "component": "TinyRadio", + "description": "用于配置不同场景的选项,在一组备选项中进行单选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Radio", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 3, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "text", + "label": { + "text": { + "zh_CN": "文本内容" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "单选框文本内容" + } + }, + { + "property": "label", + "label": { + "text": { + "zh_CN": "选中值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "props": {} + }, + "description": { + "zh_CN": "radio 选中时的值" + } + }, + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + } + ] + }, + { + "label": { + "zh_CN": "其他" + }, + "description": { + "zh_CN": "" + }, + "content": [ + { + "property": "border", + "label": { + "text": { + "zh_CN": "显示边框" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示边框" + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "单选框的尺寸,仅在 border 为true时有效" + } + }, + { + "property": "name", + "label": { + "text": { + "zh_CN": "原生name属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "原生 name 属性" + } + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值变化事件" + }, + "description": { + "zh_CN": "绑定值变化时触发的事件" + } + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "visible", + "width" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "select", + "name": { + "zh_CN": "下拉框" + }, + "component": "TinySelect", + "description": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Select", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 8, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 10, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + }, + "labelPosition": "left" + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "labelPosition": "left" + }, + { + "property": "clearable", + "label": { + "text": { + "zh_CN": "清除按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示清除按钮" + }, + "labelPosition": "left" + }, + { + "property": "searchable", + "label": { + "text": { + "zh_CN": "下拉可搜索" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "下拉面板是否可搜索" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + }, + { + "property": "options", + "label": { + "text": { + "zh_CN": "选项数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "配置 Select 下拉数据项" + }, + "labelPosition": "left" + }, + { + "property": "multiple", + "label": { + "text": { + "zh_CN": "多选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否允许输入框输入或选择多个项" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "multiple-limit", + "label": { + "text": { + "zh_CN": "最大可选值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "多选时用户最多可以选择的项目数,为 0 则不限制" + }, + "labelPosition": "left" + }, + { + "property": "popper-class", + "label": { + "text": { + "zh_CN": "下拉框类名" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置下拉框自定义的类名" + }, + "labelPosition": "left" + }, + { + "property": "collapse-tags", + "label": { + "text": { + "zh_CN": "多选展示" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "多选时是否将选中值按文字的形式展示" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值改变时触发" + }, + "description": { + "zh_CN": "在下拉框值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "下拉框选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onRemoveTag": { + "label": { + "zh_CN": "多选模式下移除tag时触发" + }, + "description": { + "zh_CN": "多选模式下移除tag时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "被移除Tag对应数据项的值字段" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + }, + "onBeforeMount": "console.log('table on load'); this.options = source.data" + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "multiple", + "options" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "switch", + "name": { + "zh_CN": "开关" + }, + "component": "TinySwitch", + "description": "Switch 在两种状态间切换选择", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Switch", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 9, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否被禁用" + }, + "labelPosition": "left" + }, + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "绑定默认值" + } + }, + { + "property": "true-value", + "label": { + "text": { + "zh_CN": "设置打开值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置打开时的值(Boolean / String / Number)" + }, + "labelPosition": "left" + }, + { + "property": "false-value", + "label": { + "text": { + "zh_CN": "设置关闭值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置关闭时的值(Boolean / String / Number)" + }, + "labelPosition": "left" + }, + { + "property": "mini", + "label": { + "text": { + "zh_CN": "迷你尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示为 mini 模式" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "点击事件" + }, + "description": { + "zh_CN": "按钮被点击时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "开关的状态值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的开关状态值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "disabled", + "mini" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "search", + "name": { + "zh_CN": "搜索框" + }, + "component": "TinySearch", + "description": "指定条件对象进行搜索数据", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Search", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "默认值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框内的默认搜索值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否被禁用" + }, + "labelPosition": "left" + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框内的提示占位文本" + }, + "labelPosition": "left" + }, + { + "property": "clearable", + "label": { + "text": { + "zh_CN": "清空按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置显示清空图标按钮" + }, + "labelPosition": "left" + }, + { + "property": "isEnterSearch", + "label": { + "text": { + "zh_CN": "Enter键触发" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否在按下键盘Enter键的时候触发search事件" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "mini", + "label": { + "text": { + "zh_CN": "迷你尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开" + }, + "labelPosition": "left" + }, + { + "property": "transparent", + "label": { + "text": { + "zh_CN": "透明模式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "输入完成时触发" + }, + "description": { + "zh_CN": "在 input 框中输入完成时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "type", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "搜索类型,默认值为 {} " + } + }, + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前input框中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onSearch": { + "label": { + "zh_CN": "点击搜索按钮时触发" + }, + "description": { + "zh_CN": "展开状态点击搜索按钮时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "type", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "搜索类型,默认值为 {} " + } + }, + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前input框中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "clearable", + "mini" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "checkbox", + "name": { + "zh_CN": "复选框" + }, + "component": "TinyCheckbox", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Checkbox", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 4, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + }, + { + "property": "checked", + "label": { + "text": { + "zh_CN": "勾选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当前是否勾选" + }, + "labelPosition": "left" + }, + { + "property": "text", + "label": { + "text": { + "zh_CN": "文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "复选框的文本" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "border", + "label": { + "text": { + "zh_CN": "边框" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示边框" + } + }, + { + "property": "false-label", + "label": { + "text": { + "zh_CN": "未选中的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "没有选中时的值" + } + }, + { + "property": "true-label", + "label": { + "text": { + "zh_CN": "选择时的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "选中时的值" + } + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "勾选值改变后将触发" + }, + "description": { + "zh_CN": "勾选值改变后将触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "border", + "disabled" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "checkboxbutton", + "name": { + "zh_CN": "复选按钮" + }, + "component": "TinyCheckboxButton", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CheckboxButton", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + }, + { + "property": "checked", + "label": { + "text": { + "zh_CN": "勾选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当前是否勾选" + }, + "labelPosition": "left" + }, + { + "property": "text", + "label": { + "text": { + "zh_CN": "文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "按钮文本" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "勾选值改变后将触发" + }, + "description": { + "zh_CN": "勾选值改变后将触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "array", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "text", + "size" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "checkboxgroup", + "name": { + "zh_CN": "复选按钮组" + }, + "component": "TinyCheckboxGroup", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CheckboxGroup", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "dataType": "Array" + } + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + }, + { + "property": "options", + "label": { + "text": { + "zh_CN": "选项列表" + } + }, + "defaultValue": [ + { + "label": "标签2" + }, + { + "label": "标签2" + } + ], + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "checkbox组件列表" + } + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "button", + "value": "button" + }, + { + "label": "checkbox", + "value": "checkbox" + } + ] + } + }, + "description": { + "zh_CN": "checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "勾选值改变后将触发" + }, + "description": { + "zh_CN": "勾选值改变后将触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "array", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "disabled", + "type" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "dialogbox", + "name": { + "zh_CN": "对话框" + }, + "component": "TinyDialogBox", + "description": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "DialogBox", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 4, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "title", + "label": { + "text": { + "zh_CN": "标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "弹出框标题" + }, + "labelPosition": "left" + }, + { + "property": "visible", + "label": { + "text": { + "zh_CN": "显示与隐藏" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "控制弹出框显示与关闭" + }, + "labelPosition": "left" + }, + { + "property": "width", + "label": { + "text": { + "zh_CN": "宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "弹出框的宽度" + }, + "labelPosition": "left" + }, + { + "property": "draggable", + "label": { + "text": { + "zh_CN": "可拖拽" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否开启弹窗的拖拽功能,默认值为 false 。" + } + }, + { + "property": "center", + "label": { + "text": { + "zh_CN": "居中" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "弹出框的头部与底部内容会自动居中" + }, + "labelPosition": "left" + }, + { + "property": "dialog-class", + "label": { + "text": { + "zh_CN": "自定义类名" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "自定义配置弹窗类名" + }, + "labelPosition": "left" + }, + { + "property": "append-to-body", + "label": { + "text": { + "zh_CN": "插入到Body" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true" + }, + "labelPosition": "left" + }, + { + "property": "show-close", + "label": { + "text": { + "zh_CN": "关闭按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示关闭按钮,默认值为 true 。" + } + } + ] + } + ], + "selector": ".TinyDialogBox", + "events": { + "onClose": { + "label": { + "zh_CN": "关闭弹窗时触发" + }, + "description": { + "zh_CN": "Dialog 关闭的回调" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:visible": { + "label": { + "zh_CN": "双向绑定的状态改变时触发" + }, + "description": { + "zh_CN": "显示或隐藏的状态值,发生改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "boolean", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的显示或隐藏的状态值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + }, + "slots": { + "title": { + "label": { + "zh_CN": "标题区" + }, + "description": { + "zh_CN": "Dialog 标题区的内容" + } + }, + "footer": { + "label": { + "zh_CN": "按钮操作区" + }, + "description": { + "zh_CN": "Dialog 按钮操作区的内容" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": true, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": ".tiny-dialog-box", + "shortcuts": { + "properties": [ + "visible", + "width" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "tabs", + "name": { + "zh_CN": "标签页" + }, + "component": "TinyTabs", + "description": "分隔内容上有关联但属于不同类别的数据集合", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Tabs", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 10, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "showEditIcon", + "label": { + "text": { + "zh_CN": "显示编辑图标" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示标题后编辑 ICON" + }, + "labelPosition": "left" + }, + { + "property": "tabs", + "label": { + "text": { + "zh_CN": "选项卡" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": "", + "cols": 12, + "bindState": false, + "widget": { + "component": "ContainerConfigurator", + "props": {} + }, + "description": { + "zh_CN": "tabs 选项卡" + }, + "labelPosition": "none" + }, + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "绑定值,选中选项卡的 name" + }, + "labelPosition": "left" + }, + { + "property": "with-add", + "label": { + "text": { + "zh_CN": "标签新增" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "标签是否可增加" + }, + "labelPosition": "left" + }, + { + "property": "with-close", + "label": { + "text": { + "zh_CN": "可关闭" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "标签是否可关闭" + }, + "labelPosition": "left" + }, + { + "property": "tab-style", + "label": { + "text": { + "zh_CN": "标签页样式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "card", + "value": "card" + }, + { + "label": "border-card", + "value": "border-card" + } + ] + } + }, + "description": { + "zh_CN": "标签页样式" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击页签时触发事件" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "component", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前点击的页签对象" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onEdit": { + "label": { + "zh_CN": "点击新增按钮或关闭按钮或者编辑按钮后触发" + }, + "description": { + "zh_CN": "点击新增按钮或关闭按钮或者编辑按钮后触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "tab", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前操作的页签对象" + } + }, + { + "name": "type", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前操作的类型(remove || add || edit)" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClose": { + "label": { + "zh_CN": "关闭页签时触发" + }, + "description": { + "zh_CN": "关闭页签时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "name", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "页签名称" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "clickCapture": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [ + "TinyTabItem" + ], + "parentWhitelist": [], + "descendantBlacklist": [], + "ancestorWhitelist": [] + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "size", + "tab-style" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "tabitem", + "name": { + "zh_CN": "tab页签" + }, + "component": "TinyTabItem", + "description": "tab 标签页", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "TabItem", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "name", + "label": { + "text": { + "zh_CN": "唯一标识" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "唯一标识" + } + }, + { + "property": "title", + "label": { + "text": { + "zh_CN": "标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "标题" + } + } + ] + } + ], + "events": {}, + "slots": { + "title": { + "label": { + "zh_CN": "标题" + }, + "description": { + "zh_CN": "自定义标题" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": [ + "TinyTab" + ], + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "name", + "title" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "breadcrumb", + "name": { + "zh_CN": "面包屑" + }, + "component": "TinyBreadcrumb", + "description": "告诉访问者他们目前在网站中的位置以及如何返回", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Select", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "separator", + "label": { + "text": { + "zh_CN": "分隔符" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "自定义分隔符" + }, + "labelPosition": "left" + }, + { + "property": "options", + "label": { + "text": { + "zh_CN": "配置数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "单独使用 Breadcrumb,通过 option 配置生成面包屑" + } + }, + { + "property": "textField", + "label": { + "text": { + "zh_CN": "键值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "指定面包屑的显示键值,结合 options 使用" + } + } + ] + } + ], + "events": { + "onSelect": { + "label": { + "zh_CN": "选择 breadcrumb 时触发" + }, + "description": { + "zh_CN": "选择 breadcrumb 时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "clickCapture": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [ + "TinyBreadcrumbItem" + ], + "parentWhitelist": [], + "descendantBlacklist": [], + "ancestorWhitelist": [] + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "separator" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "breadcrumb", + "name": { + "zh_CN": "面包屑项" + }, + "component": "TinyBreadcrumbItem", + "description": "", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "BreadcrumbItem", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "to", + "label": { + "text": { + "zh_CN": "路由跳转" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "路由跳转对象,同 vue-router 的 to" + } + } + ] + } + ], + "slots": { + "default": { + "label": { + "zh_CN": "面包屑项标签" + }, + "description": { + "zh_CN": "面包屑项" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": [ + "TinyBreadcrumb" + ], + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "to" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "collapse", + "name": { + "zh_CN": "折叠面板" + }, + "component": "TinyCollapse", + "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Collapse", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 3, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "当前激活面板" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定当前激活的面板" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "激活面板改变时触发" + }, + "description": { + "zh_CN": "当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "data", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前激活面板的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前激活面板的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "label-width", + "disabled" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "collapseitem", + "name": { + "zh_CN": "折叠面板项" + }, + "component": "TinyCollapseItem", + "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CollapseItem", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "name", + "label": { + "text": { + "zh_CN": "唯一标识符" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "唯一标识符: String | Number" + }, + "labelPosition": "left" + }, + { + "property": "title", + "label": { + "text": { + "zh_CN": "标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "面板标题" + }, + "labelPosition": "left" + } + ] + } + ], + "events": {}, + "slots": { + "title": { + "label": { + "zh_CN": "标题" + }, + "description": { + "zh_CN": "自定义标题" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "label-width", + "disabled" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "grid", + "name": { + "zh_CN": "表格" + }, + "component": "TinyGrid", + "description": "提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Grid", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础属性" + }, + "description": { + "zh_CN": "基础属性" + }, + "collapse": { + "number": 15, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "data", + "label": { + "text": { + "zh_CN": "表格数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "onChange": "this.delProp('fetchData')", + "description": { + "zh_CN": "设置表格的数据" + } + }, + { + "property": "columns", + "label": { + "text": { + "zh_CN": "表格列" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "properties": [ + { + "label": { + "zh_CN": "默认分组" + }, + "content": [ + { + "property": "title", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列标题" + } + }, + "widget": { + "component": "I18nConfigurator", + "props": {} + } + }, + { + "property": "field", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列键值" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "sortable", + "type": "boolean", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "是否排序" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "width", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列宽" + } + }, + "widget": { + "component": "NumberConfigurator", + "props": {} + } + }, + { + "property": "formatText", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "内置渲染器" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "整数", + "value": "integer" + }, + { + "label": "小数", + "value": "number" + }, + { + "label": "金额", + "value": "money" + }, + { + "label": "百分比", + "value": "rate" + }, + { + "label": "布尔", + "value": "boole" + }, + { + "label": "年月日", + "value": "date" + }, + { + "label": "年月日时分", + "value": "dateTime" + }, + { + "label": "时间", + "value": "time" + }, + { + "label": "省略", + "value": "ellipsis" + } + ] + } + } + }, + { + "property": "renderer", + "type": "object", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "渲染函数" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "dataType": "JSFunction" + } + } + }, + { + "property": "slots", + "type": "object", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "插槽" + } + }, + "labelPosition": "none", + "widget": { + "component": "JsSlotConfigurator", + "props": { + "slots": [ + "header", + "default" + ] + } + } + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "列类型" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "索引列", + "value": "index" + }, + { + "label": "单选列", + "value": "radio" + }, + { + "label": "多选列", + "value": "selection" + }, + { + "label": "展开列", + "value": "expand" + } + ], + "clearable": true + } + }, + "description": { + "zh_CN": "设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)" + }, + "labelPosition": "left" + }, + { + "property": "editor", + "label": { + "text": { + "zh_CN": "编辑配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "单元格编辑渲染配置项,也可以是函数 Function(h, params)" + }, + "labelPosition": "left" + }, + { + "property": "filter", + "label": { + "text": { + "zh_CN": "筛选配置" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "设置表格列的筛选配置信息。默认值为 false 不配置筛选信息" + } + }, + { + "property": "showOverflow", + "label": { + "text": { + "zh_CN": "内容超出部分省略号配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "只显示省略号", + "value": "ellipsis" + }, + { + "label": "显示为原生 title", + "value": "title" + }, + { + "label": "显示为 tooltip 提示", + "value": "tooltip" + } + ], + "clearable": true + } + }, + "description": { + "zh_CN": "设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)" + }, + "labelPosition": "left" + } + ] + } + ], + "widget": { + "component": "ArrayItemConfigurator", + "props": { + "type": "object", + "textField": "title", + "language": "json", + "buttonText": "编辑列配置", + "title": "编辑列配置", + "expand": true + } + }, + "description": { + "zh_CN": "表格列的配置信息" + }, + "labelPosition": "left" + }, + { + "property": "fetchData", + "label": { + "text": { + "zh_CN": "服务端查询" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "onChange": "this.delProp('data')", + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "name": "fetchData", + "dataType": "JSExpression" + } + }, + "description": { + "zh_CN": "服务端数据查询方法" + } + }, + { + "property": "pager", + "label": { + "text": { + "zh_CN": "分页配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "defaultValue": { + "attrs": { + "currentPage": 1 + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "name": "pager", + "dataType": "JSExpression" + } + }, + "description": { + "zh_CN": "分页配置,需结合fetchData使用" + } + }, + { + "property": "resizable", + "label": { + "text": { + "zh_CN": "调整列宽" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否允许调整列宽" + }, + "labelPosition": "left" + }, + { + "property": "row-id", + "label": { + "text": { + "zh_CN": "行数据主键" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "placeholder": "比如:id" + } + }, + "description": { + "zh_CN": "自定义行数据唯一主键的字段名(行数据必须要有唯一主键,默认自动生成)" + }, + "labelPosition": "left" + }, + { + "property": "select-config", + "label": { + "text": { + "zh_CN": "行复选框配置" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "dataType": "JSExpression" + } + }, + "description": { + "zh_CN": "表格行数据复选框配置项" + }, + "labelPosition": "left" + }, + { + "property": "edit-rules", + "label": { + "text": { + "zh_CN": "校验规则" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表格校验规则配置项" + }, + "labelPosition": "left" + }, + { + "property": "edit-config", + "label": { + "text": { + "zh_CN": "编辑配置项" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表格编辑配置项" + } + }, + { + "property": "expand-config", + "label": { + "text": { + "zh_CN": "展开行配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "展开行配置项" + }, + "labelPosition": "left" + }, + { + "property": "sortable", + "label": { + "text": { + "zh_CN": "可排序" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否允许列数据排序。默认为 true 可排序" + }, + "labelPosition": "left" + } + ] + }, + { + "label": { + "zh_CN": "其他" + }, + "description": { + "zh_CN": "其他属性" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "auto-resize", + "label": { + "text": { + "zh_CN": "响应式监听" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表格属性设置 autoResize 属性开启响应式表格宽高的同时,将高度height设置为auto就可以自动跟随父容器高度。" + }, + "labelPosition": "left" + }, + { + "property": "border", + "label": { + "text": { + "zh_CN": "边框" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否带有纵向边框" + }, + "labelPosition": "left" + }, + { + "property": "seq-serial", + "label": { + "text": { + "zh_CN": "行号连续" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置行序号是否连续,开启分页时有效,该属性的默认值为 false" + }, + "labelPosition": "left" + }, + { + "property": "highlight-current-row", + "label": { + "text": { + "zh_CN": "高亮当前行" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "高亮当前行" + }, + "labelPosition": "left" + }, + { + "property": "highlight-hover-row", + "label": { + "text": { + "zh_CN": "移入行高亮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "鼠标移到行是否要高亮显示" + }, + "labelPosition": "left" + }, + { + "property": "row-class-name", + "label": { + "text": { + "zh_CN": "设置行高亮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})" + }, + "labelPosition": "left" + }, + { + "property": "max-height", + "label": { + "text": { + "zh_CN": "内容最大高度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置表格内容区域(不含表格头部,底部)的最大高度。" + }, + "labelPosition": "left" + }, + { + "property": "row-span", + "label": { + "text": { + "zh_CN": "行合并" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onFilterChange": { + "label": { + "zh_CN": "筛选条件改变时触发改事件" + }, + "description": { + "zh_CN": "配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "{$table,filters} 包含 table 实例对象和过滤条件的对象" + } + } + ], + "returns": {} + }, + "defaultValue": "function onClick(e) {}" + }, + "onSortChange": { + "label": { + "zh_CN": "点击列头,执行数据排序前触发的事件" + }, + "description": { + "zh_CN": "配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "{$table,filters} 包含 table 实例对象和过滤条件的对象" + } + } + ], + "returns": {} + }, + "defaultValue": "function onClick(e) {}" + }, + "onSelectAll": { + "label": { + "zh_CN": "当手动勾选全选时触发的事件" + }, + "description": { + "zh_CN": "只对 type=selection 有效,当手动勾选全选时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": " 包含 table 实例对象" + } + }, + { + "name": "checked", + "type": "boolean", + "defaultValue": "", + "description": { + "zh_CN": "勾选状态" + } + }, + { + "name": "selction", + "type": "Array", + "defaultValue": "", + "description": { + "zh_CN": "选中的表格数据数组" + } + } + ], + "returns": {} + }, + "defaultValue": "function onClick(e) {}" + }, + "onSelectChange": { + "label": { + "zh_CN": "手动勾选并且值发生改变时触发的事件" + }, + "description": { + "zh_CN": "只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": " table 实例对象" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": " 原生 Event" + } + } + ], + "returns": {} + }, + "defaultValue": "function onClick(e) {}" + }, + "onToggleExpandChange": { + "label": { + "zh_CN": "当行展开或收起时会触发该事件" + }, + "description": { + "zh_CN": "当行展开或收起时会触发该事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": " 原生 Event" + } + } + ], + "returns": {} + }, + "defaultValue": "function onClick(e) {}" + }, + "onCurrentChange": { + "label": { + "zh_CN": "行点击时触发" + }, + "description": { + "zh_CN": "行点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [ + "sortable", + "columns" + ] + }, + "contentMenu": { + "actions": [ + "create symbol" + ] + }, + "onBeforeMount": "console.log('table on load'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns" + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "sortable", + "columns" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "name": { + "zh_CN": "分页" + }, + "component": "TinyPager", + "icon": "pager", + "description": "当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Pager", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 10, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "currentPage", + "label": { + "text": { + "zh_CN": "当前页数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当前页数,支持 .sync 修饰符" + }, + "labelPosition": "left" + }, + { + "property": "pageSize", + "label": { + "text": { + "zh_CN": "每页条数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "每页显示条目个数" + }, + "labelPosition": "left" + }, + { + "property": "pageSizes", + "label": { + "text": { + "zh_CN": "可选每页条数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置可选择的每页显示条数" + } + }, + { + "property": "total", + "label": { + "text": { + "zh_CN": "总条数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "数据总条数" + }, + "labelPosition": "left" + }, + { + "property": "layout", + "label": { + "text": { + "zh_CN": "布局" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "defaultValue": "total,sizes,prev, pager, next", + "widget": { + "component": "InputConfigurator", + "props": { + "type": "textarea" + } + }, + "description": { + "zh_CN": "组件布局,子组件名用逗号分隔" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onCurrentChange ": { + "label": { + "zh_CN": "切换页码时触发" + }, + "description": { + "zh_CN": "切换页码时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前页的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onPrevClick ": { + "label": { + "zh_CN": "点击上一页按钮时触发" + }, + "description": { + "zh_CN": "点击上一页按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "page", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前页的页码值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onNextClick": { + "label": { + "zh_CN": "点击下一页按钮时触发" + }, + "description": { + "zh_CN": "点击上一页按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "page", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前页的页码值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "currentPage", + "total" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "name": { + "zh_CN": "弹出编辑" + }, + "component": "TinyPopeditor", + "icon": "popEditor", + "description": "该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "PopEditor", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 6, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "labelPosition": "left" + }, + { + "property": "show-clear-btn", + "label": { + "text": { + "zh_CN": "清除按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示清除按钮" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "width", + "label": { + "text": { + "zh_CN": "宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置弹出面板的宽度(单位像素)" + }, + "labelPosition": "left" + }, + { + "property": "conditions", + "label": { + "text": { + "zh_CN": "过滤条件" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当弹出面板配置的是表格时,设置弹出面板中的过滤条件" + }, + "labelPosition": "left" + }, + { + "property": "grid-op", + "label": { + "text": { + "zh_CN": "面板表格配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置弹出面板中表格组件的配置信息" + }, + "labelPosition": "left" + }, + { + "property": "pager-op", + "label": { + "text": { + "zh_CN": "分页配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置弹出编辑框中分页配置" + }, + "labelPosition": "left" + }, + { + "property": "multi", + "label": { + "text": { + "zh_CN": "多选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置弹出面板中的数据是否可多选" + }, + "labelPosition": "left" + }, + { + "property": "show-pager", + "label": { + "text": { + "zh_CN": "启用分页" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性" + } + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "选中值改变时触发" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前选中项的值" + } + }, + { + "name": "value", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中对象" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClose": { + "label": { + "zh_CN": "弹框关闭时触发的事件" + }, + "description": { + "zh_CN": "弹框关闭时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onPageChange": { + "label": { + "zh_CN": "分页切换事件" + }, + "description": { + "zh_CN": "表格模式下分页切换事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前页码数" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "modelValue", + "disabled" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "tree", + "name": { + "zh_CN": "树" + }, + "component": "TinyTree", + "description": "可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Tree", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 12, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 10, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "show-checkbox", + "label": { + "text": { + "zh_CN": "多选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置接口是否可以多选" + }, + "labelPosition": "left" + }, + { + "property": "data", + "label": { + "text": { + "zh_CN": "数据源" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": [ + { + "label": "一级 1", + "children": [ + { + "label": "二级 1-1" + } + ] + } + ], + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "可配置静态数据源和动态数据源" + } + }, + { + "property": "node-key", + "label": { + "text": { + "zh_CN": "唯一标识" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点唯一标识属性名称" + }, + "labelPosition": "left" + }, + { + "property": "render-content", + "label": { + "text": { + "zh_CN": "渲染函数" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "disabled": true, + "placeholder": "请使用变量绑定来绑定函数" + } + }, + "description": { + "zh_CN": "树节点的内容区的渲染函数" + } + }, + { + "property": "icon-trigger-click-node", + "label": { + "text": { + "zh_CN": "触发NodeClick事件" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "点击图标展开节点时是否触发 node-click 事件" + }, + "labelPosition": "left" + }, + { + "property": "expand-icon", + "label": { + "text": { + "zh_CN": "展开图标" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点展开图标" + }, + "labelPosition": "left" + }, + { + "property": "shrink-icon", + "label": { + "text": { + "zh_CN": "收缩图标" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点收缩的图标" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "check-on-click-node", + "label": { + "text": { + "zh_CN": "点击节点选中" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点" + }, + "labelPosition": "left" + }, + { + "property": "filter-node-method", + "label": { + "text": { + "zh_CN": "筛选函数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点筛选函数" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onCheck": { + "label": { + "zh_CN": "勾选节点后的事件" + }, + "description": { + "zh_CN": "勾选节点后的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "data", + "type": "object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中节点信息" + } + }, + { + "name": "currentNode", + "type": "object", + "defaultValue": "", + "description": { + "zh_CN": "树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onNodeClick": { + "label": { + "zh_CN": "点击节点后的事件" + }, + "description": { + "zh_CN": "点击节点后的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "data", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中节点信息" + } + }, + { + "name": "node", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性" + } + }, + { + "name": "vm", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "树组件实例" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "data", + "show-checkbox" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "timeline", + "name": { + "zh_CN": "时间线" + }, + "component": "TinyTimeLine", + "description": "TimeLine 时间线", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "TimeLine", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 3, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "horizontal", + "type": "Boolean", + "defaultValue": { + "type": "i18n", + "zh_CN": "布局", + "en_US": "layout", + "key": "" + }, + "label": { + "text": { + "zh_CN": "水平布局" + } + }, + "cols": 12, + "rules": [], + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点和文字横向布局" + } + }, + { + "property": "vertical", + "type": "Boolean", + "defaultValue": { + "type": "i18n", + "zh_CN": "垂直布局", + "en_US": "layout", + "key": "" + }, + "label": { + "text": { + "zh_CN": "垂直布局" + } + }, + "cols": 12, + "rules": [], + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点和文字垂直布局" + } + }, + { + "property": "active", + "label": { + "text": { + "zh_CN": "选中值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "步骤条的选中步骤值" + }, + "labelPosition": "left" + }, + { + "property": "data", + "label": { + "text": { + "zh_CN": "步骤条数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": [ + { + "name": "配置基本信息", + "status": "ready" + }, + { + "name": "配置报价", + "status": "wait" + }, + { + "name": "完成报价", + "status": "wait" + } + ], + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "时间线步骤条数据" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "节点的点击时触发" + }, + "description": { + "zh_CN": "节点的点击时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "type", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "点击节点的下标" + } + }, + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前节点对象:{ name: 节点名称, time: 时间 }" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "active", + "data" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "tooltip", + "name": { + "zh_CN": "文字提示框" + }, + "component": "TinyTooltip", + "description": "动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Tooltip", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 11, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 20, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "placement", + "label": { + "text": { + "zh_CN": "提示位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "top", + "value": "top" + }, + { + "label": "top-start", + "value": "top-start" + }, + { + "label": "top-end", + "value": "top-end" + }, + { + "label": "bottom", + "value": "bottom" + }, + { + "label": "bottom-start", + "value": "bottom-start" + }, + { + "label": "bottom-end", + "value": "bottom-end" + }, + { + "label": "left", + "value": "left" + }, + { + "label": "left-start", + "value": "left-start" + }, + { + "label": "left-end", + "value": "left-end" + }, + { + "label": "right", + "value": "right" + }, + { + "label": "right-start", + "value": "right-start" + }, + { + "label": "right-end", + "value": "right-end" + } + ] + } + }, + "description": { + "zh_CN": "Tooltip 的出现位置" + }, + "labelPosition": "left" + }, + { + "property": "content", + "label": { + "text": { + "zh_CN": "内容" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": "提示信息", + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "显示的内容,也可以通过 slot#content 传入 DOM" + } + }, + { + "property": "render-content", + "label": { + "text": { + "zh_CN": "渲染函数" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "disabled": true, + "placeholder": "请使用变量绑定来绑定函数" + } + }, + "description": { + "zh_CN": "自定义渲染函数,返回需要渲染的节点内容" + } + }, + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "是否可见" + } + }, + "defaultValue": true, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "状态是否可见" + } + }, + { + "property": "manual", + "label": { + "text": { + "zh_CN": "手动控制" + } + }, + "defaultValue": true, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效" + } + } + ] + } + ], + "events": {}, + "slots": { + "content": { + "label": { + "zh_CN": "提示内容" + }, + "description": { + "zh_CN": "自定义提示内容" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "isPopper": true, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "disabled", + "content" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "icon": "popover", + "name": { + "zh_CN": "提示框" + }, + "component": "TinyPopover", + "description": "Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Popover", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 7, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定,手动控制是否可见的状态值" + }, + "labelPosition": "left" + }, + { + "property": "placement", + "label": { + "text": { + "zh_CN": "位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "top", + "value": "top" + }, + { + "label": "top-start", + "value": "top-start" + }, + { + "label": "top-end", + "value": "top-end" + }, + { + "label": "bottom", + "value": "bottom" + }, + { + "label": "bottom-start", + "value": "bottom-start" + }, + { + "label": "bottom-end", + "value": "bottom-end" + }, + { + "label": "left", + "value": "left" + }, + { + "label": "left-start", + "value": "left-start" + }, + { + "label": "left-end", + "value": "left-end" + }, + { + "label": "right", + "value": "right" + }, + { + "label": "right-start", + "value": "right-start" + }, + { + "label": "right-end", + "value": "right-end" + } + ] + } + }, + "description": { + "zh_CN": "提示框位置" + }, + "labelPosition": "left" + }, + { + "property": "trigger", + "label": { + "text": { + "zh_CN": "触发方式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "click", + "value": "click" + }, + { + "label": "focus", + "value": "focus" + }, + { + "label": "hover", + "value": "hover" + }, + { + "label": "manual", + "value": "manual" + } + ] + } + }, + "description": { + "zh_CN": "触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click" + } + }, + { + "property": "popper-class", + "label": { + "text": { + "zh_CN": "自定义类" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "为 popper 添加类名" + }, + "labelPosition": "left" + }, + { + "property": "visible-arrow", + "label": { + "text": { + "zh_CN": "显示箭头" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示 Tooltip 箭头" + } + }, + { + "property": "append-to-body", + "label": { + "text": { + "zh_CN": "添加到body上" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "Popover弹窗是否添加到body上" + } + }, + { + "property": "arrow-offset", + "label": { + "text": { + "zh_CN": "箭头的位置偏移" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "箭头的位置偏移,该属性的默认值为 0" + } + }, + { + "property": "close-delay", + "label": { + "text": { + "zh_CN": "延迟隐藏" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "触发方式为 hover 时的隐藏延迟,单位为毫秒" + } + }, + { + "property": "content", + "label": { + "text": { + "zh_CN": "显示的内容" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "显示的内容,也可以通过 slot 传入 DOM" + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "Popover 是否可用" + } + }, + { + "property": "offset", + "label": { + "text": { + "zh_CN": "位置偏移量" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "出现位置的偏移量" + } + }, + { + "property": "open-delay", + "label": { + "text": { + "zh_CN": "显示延迟" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "触发方式为 hover 时的显示延迟,单位为毫秒" + } + }, + { + "property": "popper-options", + "label": { + "text": { + "zh_CN": "弹出层参数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "popper.js 的参数" + } + }, + { + "property": "title", + "label": { + "text": { + "zh_CN": "标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "提示内容标题" + } + }, + { + "property": "transform-origin", + "label": { + "text": { + "zh_CN": "旋转中心点" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "组件的旋转中心点,组件的旋转中心点" + } + }, + { + "property": "transition", + "label": { + "text": { + "zh_CN": "渐变动画" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "该属性的默认值为 fade-in-linear" + } + }, + { + "property": "width", + "label": { + "text": { + "zh_CN": "宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "宽度" + } + } + ] + } + ], + "events": { + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "手动控制是否可见的状态值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "boolean", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的可见状态值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "isPopper": true, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "visible", + "width" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "name": { + "zh_CN": "日期选择" + }, + "component": "TinyDatePicker", + "icon": "datepick", + "description": "用于输入或选择日期", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "DatePicker", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "日期", + "value": "date" + }, + { + "label": "日期时间", + "value": "datetime" + }, + { + "label": "周", + "value": "week" + }, + { + "label": "月份", + "value": "month" + }, + { + "label": "年份", + "value": "year" + } + ] + } + }, + "description": { + "zh_CN": "设置日期框的type属性" + } + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "labelPosition": "left" + }, + { + "property": "clearable", + "label": { + "text": { + "zh_CN": "清除按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示清除按钮" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + }, + { + "property": "readonly", + "label": { + "text": { + "zh_CN": "只读" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否只读" + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "medium", + "value": "medium" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "mini", + "value": "mini" + } + ] + } + }, + "description": { + "zh_CN": "日期框尺寸。该属性的可选值为 medium / small / mini" + } + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "maxlength", + "label": { + "text": { + "zh_CN": "输入最大长度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置 input 框的maxLength" + }, + "labelPosition": "left" + }, + { + "property": "autofocus", + "label": { + "text": { + "zh_CN": "聚焦" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "自动获取焦点" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值改变时触发" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框改变后的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onInput": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框输入的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "value", + "disabled" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + }, + { + "name": { + "zh_CN": "数字输入框" + }, + "component": "TinyNumeric", + "icon": "numeric", + "description": "通过鼠标或键盘输入字符", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Numeric", + "version": "3.14.0", + "destructuring": true, + "script": "https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs", + "css": "https://unpkg.com/@opentiny/vue-theme@~3.14/index.css" + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "labelPosition": "left" + }, + { + "property": "allow-empty", + "label": { + "text": { + "zh_CN": "内容可清空" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否内容可清空" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否禁用" + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "medium", + "value": "medium" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "mini", + "value": "mini" + } + ] + } + }, + "description": { + "zh_CN": "输入框尺寸。该属性的可选值为 medium / small / mini" + } + }, + { + "property": "controls", + "label": { + "text": { + "zh_CN": "加减按钮" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否使用加减按钮" + } + }, + { + "property": "controls-position", + "label": { + "text": { + "zh_CN": "加减按钮位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "左右两侧", + "value": "" + }, + { + "label": "只在右侧", + "value": "right" + } + ] + } + }, + "description": { + "zh_CN": "加减按钮位置" + }, + "labelPosition": "left" + }, + { + "property": "precision", + "label": { + "text": { + "zh_CN": "精度" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "allowEmpty": true + } + }, + "description": { + "zh_CN": "数值精度" + }, + "labelPosition": "left" + }, + { + "property": "step", + "label": { + "text": { + "zh_CN": "步长" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "allowEmpty": true + } + }, + "description": { + "zh_CN": "步长" + }, + "labelPosition": "left" + }, + { + "property": "max", + "label": { + "text": { + "zh_CN": "最大数值" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "allowEmpty": true + } + }, + "description": { + "zh_CN": "可输入的最大数值" + }, + "labelPosition": "left" + }, + { + "property": "min", + "label": { + "text": { + "zh_CN": "最小数值" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "allowEmpty": true + } + }, + "description": { + "zh_CN": "可输入的最大数值" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值改变时触发" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框改变后的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onInput": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框输入的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [ + "value", + "disabled" + ] + }, + "contextMenu": { + "actions": [ + "create symbol" + ], + "disable": [ + "copy", + "remove" + ] + } + } + } + ], + "blocks": [], + "snippets": [ + { + "group": "layout", + "label": { + "zh_CN": "布局与容器" + }, + "children": [ + { + "name": { + "zh_CN": "栅格布局" + }, + "icon": "row", + "screenshot": "", + "snippetName": "TinyLayout", + "schema": { + "componentName": "TinyLayout", + "props": {}, + "children": [ + { + "componentName": "TinyRow", + "props": { + "style": "padding: 10px;" + }, + "children": [ + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + }, + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + }, + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + }, + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + } + ] + }, + { + "componentName": "TinyRow", + "props": { + "style": "padding: 10px;" + }, + "children": [ + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + }, + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + }, + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + }, + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + } + ] + } + ] + } + } + ] + }, + { + "group": "basic", + "label": { + "zh_CN": "基础元素" + }, + "children": [ + { + "name": { + "zh_CN": "段落" + }, + "icon": "paragraph", + "screenshot": "", + "snippetName": "p", + "schema": { + "componentName": "p", + "children": "TinyEngine 前端可视化设计器致力于通过友好的用户交互提升业务应用的开发效率。" + } + }, + { + "name": { + "zh_CN": "链接" + }, + "icon": "link", + "screenshot": "", + "snippetName": "a", + "schema": { + "componentName": "a", + "children": "链接" + } + }, + { + "name": { + "zh_CN": "分隔线" + }, + "icon": "hr", + "screenshot": "", + "snippetName": "hr", + "schema": {} + }, + { + "name": { + "zh_CN": "标题" + }, + "icon": "h16", + "screenshot": "", + "snippetName": "h1", + "schema": { + "componentName": "h1", + "props": {}, + "children": "Heading" + } + }, + { + "name": { + "zh_CN": "视频" + }, + "icon": "video", + "screenshot": "", + "snippetName": "video", + "schema": { + "componentName": "video", + "props": { + "src": "img/webNova.jpg", + "width": "200", + "height": "100", + "style": "border:1px solid #ccc" + } + } + }, + { + "name": { + "zh_CN": "按钮" + }, + "icon": "button", + "screenshot": "", + "snippetName": "TinyButton", + "schema": { + "componentName": "TinyButton", + "props": { + "text": "按钮文案" + } + } + }, + { + "name": { + "zh_CN": "按钮组" + }, + "icon": "buttons", + "snippetName": "TinyButtons", + "screenshot": "", + "schema": { + "componentName": "div", + "props": {}, + "children": [ + { + "componentName": "TinyButton", + "props": { + "text": "提交", + "type": "primary", + "style": { + "margin": "0 5px 0 5px" + } + } + }, + { + "componentName": "TinyButton", + "props": { + "text": "重置", + "style": { + "margin": "0 5px 0 5px" + } + } + }, + { + "componentName": "TinyButton", + "props": { + "text": "取消" + } + } + ] + }, + "configure": { + "isContainer": true + } + }, + { + "name": { + "zh_CN": "互斥按钮组" + }, + "icon": "buttons", + "snippetName": "TinyButtonGroup", + "screenshot": "", + "schema": { + "componentName": "TinyButtonGroup", + "props": { + "data": [ + { + "text": "Button1", + "value": "1" + }, + { + "text": "Button2", + "value": "2" + }, + { + "text": "Button3", + "value": "3" + } + ], + "modelValue": "1" + } + } + }, + { + "name": { + "zh_CN": "搜索框" + }, + "icon": "search", + "screenshot": "", + "snippetName": "TinySearch", + "schema": { + "componentName": "TinySearch", + "props": { + "modelValue": "", + "placeholder": "输入关键词" + } + } + } + ] + }, + { + "group": "form", + "label": { + "zh_CN": "表单类型" + }, + "children": [ + { + "name": { + "zh_CN": "表单" + }, + "screenshot": "", + "snippetName": "tiny-form", + "icon": "form", + "schema": { + "componentName": "TinyForm", + "props": { + "labelWidth": "80px", + "labelPosition": "top" + }, + "children": [ + { + "componentName": "TinyFormItem", + "props": { + "label": "人员" + }, + "children": [ + { + "componentName": "TinyInput", + "props": { + "placeholder": "请输入", + "modelValue": "" + } + } + ] + }, + { + "componentName": "TinyFormItem", + "props": { + "label": "密码" + }, + "children": [ + { + "componentName": "TinyInput", + "props": { + "placeholder": "请输入", + "modelValue": "", + "type": "password" + } + } + ] + }, + { + "componentName": "TinyFormItem", + "props": { + "label": "" + }, + "children": [ + { + "componentName": "TinyButton", + "props": { + "text": "提交", + "type": "primary", + "style": "margin-right: 10px" + } + }, + { + "componentName": "TinyButton", + "props": { + "text": "重置", + "type": "primary" + } + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "下拉框" + }, + "icon": "select", + "screenshot": "", + "snippetName": "TinySelect", + "schema": { + "componentName": "TinySelect", + "props": { + "modelValue": "", + "placeholder": "请选择", + "options": [ + { + "value": "1", + "label": "黄金糕" + }, + { + "value": "2", + "label": "双皮奶" + } + ] + } + } + }, + { + "name": { + "zh_CN": "开关" + }, + "icon": "switch", + "screenshot": "", + "snippetName": "TinySwitch", + "schema": { + "componentName": "TinySwitch", + "props": { + "modelValue": "" + } + } + }, + { + "name": { + "zh_CN": "复选框组" + }, + "icon": "checkboxs", + "screenshot": "", + "snippetName": "TinyCheckboxGroup", + "schema": { + "componentName": "TinyCheckboxGroup", + "props": { + "modelValue": [ + "name1", + "name2" + ], + "type": "checkbox", + "options": [ + { + "text": "复选框1", + "label": "name1" + }, + { + "text": "复选框2", + "label": "name2" + }, + { + "text": "复选框3", + "label": "name3" + } + ] + } + } + }, + { + "name": { + "zh_CN": "复选框拖拽按钮组" + }, + "icon": "checkboxgroup", + "screenshot": "", + "snippetName": "TinyCheckboxbuttonGroup", + "schema": { + "componentName": "TinyCheckboxGroup", + "props": { + "modelValue": [] + }, + "children": [ + { + "componentName": "TinyCheckboxButton", + "children": [ + { + "componentName": "div" + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "输入框" + }, + "icon": "input", + "screenshot": "", + "snippetName": "TinyInput", + "schema": { + "componentName": "TinyInput", + "props": { + "placeholder": "请输入", + "modelValue": "" + } + } + }, + { + "name": { + "zh_CN": "单选" + }, + "icon": "radio", + "screenshot": "", + "snippetName": "TinyRadio", + "schema": { + "componentName": "TinyRadio", + "props": { + "label": "1", + "text": "单选文本" + } + } + }, + { + "name": { + "zh_CN": "复选框" + }, + "icon": "checkbox", + "screenshot": "", + "snippetName": "TinyCheckbox", + "schema": { + "componentName": "TinyCheckbox", + "props": { + "text": "复选框文案" + } + } + }, + { + "name": { + "zh_CN": "日期选择" + }, + "icon": "datepick", + "screenshot": "", + "snippetName": "TinyDatePicker", + "schema": { + "componentName": "TinyDatePicker", + "props": { + "placeholder": "请输入", + "modelValue": "" + } + } + }, + { + "name": { + "zh_CN": "数字输入框" + }, + "icon": "numeric", + "screenshot": "", + "snippetName": "TinyNumeric", + "schema": { + "componentName": "TinyNumeric", + "props": { + "allow-empty": true, + "placeholder": "请输入", + "controlsPosition": "right", + "step": 1 + } + } + } + ] + }, + { + "group": "table", + "label": { + "zh_CN": "表格类型" + }, + "children": [ + { + "name": { + "zh_CN": "表格" + }, + "icon": "grid", + "screenshot": "", + "snippetName": "tinyGrid", + "schema": { + "componentName": "TinyGrid", + "props": { + "editConfig": { + "trigger": "click", + "mode": "cell", + "showStatus": true + }, + "columns": [ + { + "type": "index", + "width": 60 + }, + { + "type": "selection", + "width": 60 + }, + { + "field": "employees", + "title": "员工数" + }, + { + "field": "created_date", + "title": "创建日期" + }, + { + "field": "city", + "title": "城市" + } + ], + "data": [ + { + "id": "1", + "name": "GFD科技有限公司", + "city": "福州", + "employees": 800, + "created_date": "2014-04-30 00:56:00", + "boole": false + }, + { + "id": "2", + "name": "WWW科技有限公司", + "city": "深圳", + "employees": 300, + "created_date": "2016-07-08 12:36:22", + "boole": true + } + ] + } + } + }, + { + "name": { + "zh_CN": "分页" + }, + "icon": "pager", + "screenshot": "", + "snippetName": "TinyPager", + "schema": { + "componentName": "TinyPager", + "props": { + "layout": "total, sizes, prev, pager, next", + "total": 100, + "pageSize": 10, + "currentPage": 1 + } + } + } + ] + }, + { + "group": "data-display", + "label": { + "zh_CN": "数据展示类" + }, + "children": [ + { + "name": { + "zh_CN": "走马灯" + }, + "screenshot": "", + "snippetName": "tiny-carousel", + "icon": "carousel", + "schema": { + "componentName": "TinyCarousel", + "props": { + "height": "180px" + }, + "children": [ + { + "componentName": "TinyCarouselItem", + "children": [ + { + "componentName": "div", + "props": { + "style": "margin:10px 0 0 30px" + } + } + ] + }, + { + "componentName": "TinyCarouselItem", + "children": [ + { + "componentName": "div", + "props": { + "style": "margin:10px 0 0 30px" + } + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "对话框" + }, + "screenshot": "", + "snippetName": "TinyDialogBox", + "icon": "dialogbox", + "schema": { + "componentName": "TinyDialogBox", + "props": { + "visible": true, + "show-close": true, + "title": "dialogBox title" + }, + "children": [ + { + "componentName": "div" + } + ] + } + }, + { + "name": { + "zh_CN": "折叠面板" + }, + "screenshot": "", + "snippetName": "TinyCollapse", + "icon": "collapse", + "schema": { + "componentName": "TinyCollapse", + "props": { + "modelValue": "collapse1" + }, + "children": [ + { + "componentName": "TinyCollapseItem", + "props": { + "name": "collapse1", + "title": "折叠项1" + }, + "children": [ + { + "componentName": "div" + } + ] + }, + { + "componentName": "TinyCollapseItem", + "props": { + "name": "collapse2", + "title": "折叠项2" + }, + "children": [ + { + "componentName": "div" + } + ] + }, + { + "componentName": "TinyCollapseItem", + "props": { + "name": "collapse3", + "title": "折叠项3" + }, + "children": [ + { + "componentName": "div" + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "弹出编辑" + }, + "icon": "popeditor", + "screenshot": "", + "snippetName": "TinyPopeditor", + "schema": { + "componentName": "TinyPopeditor", + "props": { + "modelValue": "", + "placeholder": "请选择", + "gridOp": { + "columns": [ + { + "field": "id", + "title": "ID", + "width": 40 + }, + { + "field": "name", + "title": "名称", + "showOverflow": "tooltip" + }, + { + "field": "province", + "title": "省份", + "width": 80 + }, + { + "field": "city", + "title": "城市", + "width": 80 + } + ], + "data": [ + { + "id": "1", + "name": "GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司", + "city": "福州", + "province": "福建" + }, + { + "id": "2", + "name": "WWW科技有限公司", + "city": "深圳", + "province": "广东" + }, + { + "id": "3", + "name": "RFV有限责任公司", + "city": "中山", + "province": "广东" + }, + { + "id": "4", + "name": "TGB科技有限公司", + "city": "龙岩", + "province": "福建" + }, + { + "id": "5", + "name": "YHN科技有限公司", + "city": "韶关", + "province": "广东" + }, + { + "id": "6", + "name": "WSX科技有限公司", + "city": "黄冈", + "province": "武汉" + } + ] + } + } + } + }, + { + "name": { + "zh_CN": "树" + }, + "icon": "tree", + "screenshot": "", + "snippetName": "TinyTree", + "schema": { + "componentName": "TinyTree", + "props": { + "data": [ + { + "label": "一级 1", + "children": [ + { + "label": "二级 1-1", + "children": [ + { + "label": "三级 1-1-1" + } + ] + } + ] + }, + { + "label": "一级 2", + "children": [ + { + "label": "二级 2-1", + "children": [ + { + "label": "三级 2-1-1" + } + ] + }, + { + "label": "二级 2-2", + "children": [ + { + "label": "三级 2-2-1" + } + ] + } + ] + } + ] + } + } + }, + { + "name": { + "zh_CN": "文字提示框" + }, + "icon": "tooltip", + "screenshot": "", + "snippetName": "TinyTooltip", + "schema": { + "componentName": "TinyTooltip", + "props": { + "content": "Top Left 提示文字", + "placement": "top-start", + "manual": true, + "modelValue": true + }, + "children": [ + { + "componentName": "span", + "children": [ + { + "componentName": "div", + "props": {} + } + ] + }, + { + "componentName": "Template", + "props": { + "slot": "content" + }, + "children": [ + { + "componentName": "span", + "children": [ + { + "componentName": "div", + "props": { + "placeholder": "提示内容" + } + } + ] + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "提示框" + }, + "icon": "popover", + "screenshot": "", + "snippetName": "TinyPopover", + "schema": { + "componentName": "TinyPopover", + "props": { + "width": 200, + "title": "弹框标题", + "trigger": "manual", + "modelValue": true + }, + "children": [ + { + "componentName": "Template", + "props": { + "slot": "reference" + }, + "children": [ + { + "componentName": "div", + "props": { + "placeholder": "触发源" + } + } + ] + }, + { + "componentName": "Template", + "props": { + "slot": "default" + }, + "children": [ + { + "componentName": "div", + "props": { + "placeholder": "提示内容" + } + } + ] + } + ] + } + } + ] + }, + { + "group": "navigation", + "label": { + "zh_CN": "导航类型" + }, + "children": [ + { + "name": { + "zh_CN": "时间线" + }, + "icon": "timeline", + "screenshot": "", + "snippetName": "TinyTimeLine", + "schema": { + "componentName": "TinyTimeLine", + "props": { + "active": "2", + "data": [ + { + "name": "已下单" + }, + { + "name": "运输中" + }, + { + "name": "已签收" + } + ] + } + } + }, + { + "name": { + "zh_CN": "面包屑" + }, + "icon": "breadcrumb", + "screenshot": "", + "snippetName": "TinyBreadcrumb", + "schema": { + "componentName": "TinyBreadcrumb", + "props": { + "options": [ + { + "to": "{ path: '/' }", + "label": "首页" + }, + { + "to": "{ path: '/breadcrumb' }", + "label": "产品" + }, + { + "replace": "true", + "label": "软件" + } + ] + } + } + }, + { + "name": { + "zh_CN": "标签页" + }, + "icon": "tabs", + "screenshot": "", + "group": true, + "snippetName": "TinyTabs", + "schema": { + "componentName": "TinyTabs", + "props": { + "modelValue": "first" + }, + "children": [ + { + "componentName": "TinyTabItem", + "props": { + "title": "标签页1", + "name": "first" + }, + "children": [ + { + "componentName": "div", + "props": { + "style": "margin:10px 0 0 30px" + } + } + ] + }, + { + "componentName": "TinyTabItem", + "props": { + "title": "标签页2", + "name": "second" + }, + "children": [ + { + "componentName": "div", + "props": { + "style": "margin:10px 0 0 30px" + } + } + ] + } + ] + } + } + ] + }, + { + "group": "element-plus", + "label": { + "zh_CN": "Element Plus组件" + }, + "children": [ + { + "name": { + "zh_CN": "输入框" + }, + "icon": "input", + "screenshot": "", + "snippetName": "ElInput", + "schema": {} + }, + { + "name": { + "zh_CN": "按钮" + }, + "icon": "button", + "screenshot": "", + "snippetName": "ElButton", + "schema": { + "children": [ + { + "componentName": "Text", + "props": { + "text": "按钮文本" + } + } + ] + } + }, + { + "name": { + "zh_CN": "表单" + }, + "icon": "form", + "screenshot": "", + "snippetName": "ElForm", + "schema": { + "children": [ + { + "componentName": "ElFormItem", + "props": { + "label": "账号", + "prop": "account" + }, + "children": [ + { + "componentName": "ElInput", + "props": { + "modelValue": "", + "placeholder": "请输入账号" + } + } + ] + }, + { + "componentName": "ElFormItem", + "props": { + "label": "密码", + "prop": "password" + }, + "children": [ + { + "componentName": "ElInput", + "props": { + "modelValue": "", + "placeholder": "请输入密码", + "type": "password" + } + } + ] + }, + { + "componentName": "ElFormItem", + "props": {}, + "children": [ + { + "componentName": "ElButton", + "props": { + "type": "primary", + "style": "margin-right: 10px" + }, + "children": [ + { + "componentName": "Text", + "props": { + "text": "提交" + } + } + ] + }, + { + "componentName": "ElButton", + "props": { + "type": "primary" + }, + "children": [ + { + "componentName": "Text", + "props": { + "text": "重置" + } + } + ] + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "表格" + }, + "icon": "grid", + "screenshot": "", + "snippetName": "ElTable", + "schema": { + "props": { + "data": [ + { + "date": "2016-05-03", + "name": "Tom", + "address": "No. 189, Grove St, Los Angeles" + }, + { + "date": "2016-05-02", + "name": "Tom", + "address": "No. 189, Grove St, Los Angeles" + }, + { + "date": "2016-05-04", + "name": "Tom", + "address": "No. 189, Grove St, Los Angeles" + }, + { + "date": "2016-05-01", + "name": "Tom", + "address": "No. 189, Grove St, Los Angeles" + } + ], + "columns": [ + { + "type": "index" + }, + { + "label": "Date", + "prop": "date" + }, + { + "label": "Name", + "prop": "name" + }, + { + "label": "Address", + "prop": "address" + } + ] + } + } + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/designer-demo/registry.js b/designer-demo/registry.js new file mode 100644 index 0000000000..72bcf82965 --- /dev/null +++ b/designer-demo/registry.js @@ -0,0 +1,105 @@ +/** + * Copyright (c) 2024 - present TinyEngine Authors. + * Copyright (c) 2024 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +import { + Breadcrumb, + Fullscreen, + Lang, + Logo, + Lock, + Media, + Redoundo, + Save, + Clean, + Preview, + GenerateCode, + Refresh, + Collaboration, + Materials, + State, + Script, + Tree, + Help, + Schema, + Page, + I18n, + Bridge, + Block, + Datasource, + Robot, + Props, + Events, + Styles, + Layout, + Canvas, + EditorInfoService, + AppService, + GenerateCodeService +} from '@opentiny/tiny-engine' +import engineConfig from './engine.config' + +export default { + root: { + id: 'engine.root', + metas: [EditorInfoService, AppService, GenerateCodeService] + }, + config: engineConfig, + layout: { + ...Layout, + options: { + ...Layout.options, + isShowLine: true, + isShowCollapse: true, + toolbars: { + left: ['engine.toolbars.breadcrumb', 'engine.toolbars.lock', 'engine.toolbars.logo'], + center: ['engine.toolbars.media'], + right: [ + ['engine.toolbars.redoundo', 'engine.toolbars.clean'], + ['engine.toolbars.preview'], + ['engine.toolbars.generate-code', 'engine.toolbars.save'] + ], + collapse: [ + ['engine.toolbars.collaboration'], + ['engine.toolbars.refresh', 'engine.toolbars.fullscreen'], + ['engine.toolbars.lang'] + ] + } + } + }, + themes: [ + { + id: 'engine.theme.light' + }, + { + id: 'engine.theme.dark' + } + ], + toolbars: [ + Logo, + Breadcrumb, + Lock, + Media, + Redoundo, + Collaboration, + Clean, + Preview, + Refresh, + GenerateCode, + Save, + Fullscreen, + Lang + ], + plugins: [Materials, Tree, Page, Block, Datasource, Bridge, I18n, Script, State, Schema, Help, Robot], + dsls: [{ id: 'engine.dsls.dslvue' }], + settings: [Props, Styles, Events], + canvas: Canvas +} diff --git a/designer-demo/src/configurators/MyInputConfigurator.vue b/designer-demo/src/configurators/MyInputConfigurator.vue new file mode 100644 index 0000000000..47a9b11e53 --- /dev/null +++ b/designer-demo/src/configurators/MyInputConfigurator.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/designer-demo/src/configurators/index.js b/designer-demo/src/configurators/index.js new file mode 100644 index 0000000000..d30de4ee5d --- /dev/null +++ b/designer-demo/src/configurators/index.js @@ -0,0 +1,5 @@ +import MyInputConfigurator from './MyInputConfigurator.vue' + +export const configurators = { + MyInputConfigurator +} diff --git a/designer-demo/src/defineEntry.js b/designer-demo/src/defineEntry.js new file mode 100644 index 0000000000..f8b215c1b4 --- /dev/null +++ b/designer-demo/src/defineEntry.js @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +import registry from '../registry.js' +import { defineEntry } from '@opentiny/tiny-engine' + +defineEntry(registry) + +export { registry } diff --git a/designer-demo/src/main.js b/designer-demo/src/main.js new file mode 100644 index 0000000000..19d563cb09 --- /dev/null +++ b/designer-demo/src/main.js @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +// 导入@opentiny/tiny-engine时,内部的依赖包也会逐个导入,可能会执行useComplie,此时需要templateHashMap。所以需要先执行一次defineEntry +import { registry } from './defineEntry.js' +import { init } from '@opentiny/tiny-engine' +import { configurators } from './configurators/' +import 'virtual:svg-icons-register' +import '@opentiny/tiny-engine-theme' + +init({ registry, configurators }) diff --git a/designer-demo/src/preview.js b/designer-demo/src/preview.js new file mode 100644 index 0000000000..4e120d4c6c --- /dev/null +++ b/designer-demo/src/preview.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +import { initHook, HOOK_NAME, GenerateCodeService, Breadcrumb, Media, Lang } from '@opentiny/tiny-engine' +import { initPreview } from '@opentiny/tiny-engine' +import 'virtual:svg-icons-register' +import '@opentiny/tiny-engine-theme' + +const beforeAppCreate = () => { + initHook(HOOK_NAME.useEnv, import.meta.env) +} + +initPreview({ + registry: { + root: { + id: 'engine.root', + metas: [GenerateCodeService] + }, + config: { id: 'engine.config', theme: 'light' }, + toolbars: [Breadcrumb, Media, Lang] + }, + lifeCycles: { + beforeAppCreate + } +}) diff --git a/designer-demo/vite.config.js b/designer-demo/vite.config.js new file mode 100644 index 0000000000..e608817972 --- /dev/null +++ b/designer-demo/vite.config.js @@ -0,0 +1,23 @@ +import path from 'node:path' +import { defineConfig, mergeConfig } from 'vite' +import { useTinyEngineBaseConfig } from '@opentiny/tiny-engine-vite-config' + +export default defineConfig((configEnv) => { + const baseConfig = useTinyEngineBaseConfig({ + viteConfigEnv: configEnv, + root: __dirname, + iconDirs: [path.resolve(__dirname, './node_modules/@opentiny/tiny-engine/assets/')], + useSourceAlias: true, + envDir: './env' + }) + + const customConfig = { + envDir: './env', + publicDir: path.resolve(__dirname, './public'), + server: { + port: 8090 + } + } + + return mergeConfig(baseConfig, customConfig) +}) diff --git a/index.html b/index.html deleted file mode 100644 index 7a968872fd..0000000000 --- a/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - TinyEditor 前端可视化设计器 - - - -
-
-
-

Loading

- - - - - - - -
-
-
- - - diff --git a/jsconfig.json b/jsconfig.json index e4f51d6fdc..06993f5949 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -3,71 +3,71 @@ "baseUrl": "./", "jsx": "react", "paths": { - "@/*": ["src/*"], - "@opentiny/tiny-engine-canvas": ["src/canvas/src/index.js"], - "@opentiny/tiny-engine-controller": ["src/controller/src/index"], - "@opentiny/tiny-engine-plugin-materials": ["src/plugins/packages/materials/index"], - "@opentiny/tiny-engine-plugin-data": ["src/plugins/packages/data/index"], - "@opentiny/tiny-engine-plugin-script": ["src/plugins/packages/script/index"], - "@opentiny/tiny-engine-plugin-tree": ["src/plugins/packages/tree/index"], - "@opentiny/tiny-engine-plugin-help": ["src/plugins/packages/help/index"], - "@opentiny/tiny-engine-plugin-schema": ["src/plugins/packages/schema/index"], - "@opentiny/tiny-engine-plugin-page": ["src/plugins/packages/page/index"], - "@opentiny/tiny-engine-plugin-i18n": ["src/plugins/packages/i18n/index"], - "@opentiny/tiny-engine-plugin-bridge": ["src/plugins/packages/bridge/index"], - "@opentiny/tiny-engine-setting-events": ["src/settings/packages/events/index"], - "@opentiny/tiny-engine-setting-props": ["src/settings/packages/props/index"], - "@opentiny/tiny-engine-common": ["src/common/index"], - "@opentiny/tiny-engine-setting-styles": ["src/settings/packages/styles/index"], - "@opentiny/tiny-engine-toolbar-breadcrumb": ["src/toolbars/packages/breadcrumb/index"], - "@opentiny/tiny-engine-toolbar-fullscreen": ["src/toolbars/packages/fullscreen/index"], - "@opentiny/tiny-engine-toolbar-lang": ["src/toolbars/packages/lang/index"], - "@opentiny/tiny-engine-toolbar-layout": ["src/toolbars/packages/layout/index"], - "@opentiny/tiny-engine-toolbar-checkinout": ["src/toolbars/packages/lock/index"], - "@opentiny/tiny-engine-toolbar-logo": ["src/toolbars/packages/logo/index"], - "@opentiny/tiny-engine-toolbar-media": ["src/toolbars/packages/media/index"], - "@opentiny/tiny-engine-toolbar-preview": ["src/toolbars/packages/preview/index"], - "@opentiny/tiny-engine-toolbar-generate-vue": ["src/toolbars/packages/generate-vue/index"], - "@opentiny/tiny-engine-toolbar-clean": ["src/toolbars/packages/clean/index"], - "@opentiny/tiny-engine-toolbar-save": ["src/toolbars/packages/save/index"], - "tiny-engine-canvas": ["src/canvas/index"], - "@opentiny/tiny-engine-theme-dark": ["src/theme/packages/dark/index.less"], - "@opentiny/tiny-engine-theme-light": ["src/theme/packages/light/index.less"], - "@opentiny/tiny-engine-svgs": ["src/svgs/index"], - "@opentiny/tiny-engine-http": ["src/http/index"], - "@opentiny/tiny-engine-controller/*": ["src/controller/src/*"], - "@opentiny/tiny-engine-plugin-materials/*": ["src/plugins/packages/materials/*"], - "@opentiny/tiny-engine-plugin-data/*": ["src/plugins/packages/data/*"], - "@opentiny/tiny-engine-plugin-script/*": ["src/plugins/packages/script/*"], - "@opentiny/tiny-engine-plugin-tree/*": ["src/plugins/packages/tree/*"], - "@opentiny/tiny-engine-plugin-help/*": ["src/plugins/packages/help/*"], - "@opentiny/tiny-engine-plugin-schema/*": ["src/plugins/packages/schema/*"], - "@opentiny/tiny-engine-plugin-page/*": ["src/plugins/packages/page/*"], - "@opentiny/tiny-engine-plugin-i18n/*": ["src/plugins/packages/i18n/*"], - "@opentiny/tiny-engine-plugin-bridge/*": ["src/plugins/packages/bridge/*"], - "@opentiny/tiny-engine-setting-events/*": ["src/settings/packages/events/*"], - "@opentiny/tiny-engine-setting-props/*": ["src/settings/packages/props/*"], - "@opentiny/tiny-engine-common/*": ["src/common/*"], - "@opentiny/tiny-engine-setting-styles/*": ["src/settings/packages/styles/*"], - "@opentiny/tiny-engine-toolbar-breadcrumb/*": ["src/toolbars/packages/breadcrumb/*"], - "@opentiny/tiny-engine-toolbar-fullscreen/*": ["src/toolbars/packages/fullscreen/*"], - "@opentiny/tiny-engine-toolbar-lang/*": ["src/toolbars/packages/lang/*"], - "@opentiny/tiny-engine-toolbar-layout/*": ["src/toolbars/packages/layout/*"], - "@opentiny/tiny-engine-toolbar-checkinout/*": ["src/toolbars/packages/lock/*"], - "@opentiny/tiny-engine-toolbar-logo/*": ["src/toolbars/packages/logo/*"], - "@opentiny/tiny-engine-toolbar-media/*": ["src/toolbars/packages/media/*"], - "@opentiny/tiny-engine-toolbar-preview/*": ["src/toolbars/packages/preview/*"], - "@opentiny/tiny-engine-toolbar-clean/*": ["src/toolbars/packages/clean/*"], - "@opentiny/tiny-engine-toolbar-save/*": ["src/toolbars/packages/save/*"], - "@opentiny/tiny-engine-theme-dark/*": ["src/theme/packages/dark/*"], - "@opentiny/tiny-engine-theme-light/*": ["src/theme/packages/light/*"], - "@opentiny/tiny-engine-svgs/*": ["src/svgs/*"], - "@opentiny/tiny-engine-http/*": ["src/http/*"], - "@opentiny/tiny-engine-utils": ["src/utils/src/index.js"], - "@opentiny/tiny-engine-webcomponent-core": ["src/webcomponent/src/lib"], - "@opentiny/tiny-engine-i18n-host": ["src/i18n/src/lib"] + "@/*": ["packages/*"], + "@opentiny/tiny-engine": ["packages/design-core/index.js"], + "@opentiny/tiny-engine-meta-register": ["packages/register/src/index.js"], + "@opentiny/tiny-engine-canvas": ["packages/canvas/src/index.js"], + "@opentiny/tiny-engine-plugin-materials": ["packages/plugins/materials/index"], + "@opentiny/tiny-engine-plugin-state": ["packages/plugins/state/index"], + "@opentiny/tiny-engine-plugin-script": ["packages/plugins/script/index"], + "@opentiny/tiny-engine-plugin-tree": ["packages/plugins/tree/index"], + "@opentiny/tiny-engine-plugin-help": ["packages/plugins/help/index"], + "@opentiny/tiny-engine-plugin-schema": ["packages/plugins/schema/index"], + "@opentiny/tiny-engine-plugin-page": ["packages/plugins/page/index"], + "@opentiny/tiny-engine-plugin-i18n": ["packages/plugins/i18n/index"], + "@opentiny/tiny-engine-plugin-bridge": ["packages/plugins/bridge/index"], + "@opentiny/tiny-engine-setting-events": ["packages/settings/events/index"], + "@opentiny/tiny-engine-setting-props": ["packages/settings/props/index"], + "@opentiny/tiny-engine-common": ["packages/common/index"], + "@opentiny/tiny-engine-setting-styles": ["packages/settings/styles/index"], + "@opentiny/tiny-engine-toolbar-breadcrumb": ["packages/toolbars/breadcrumb/index"], + "@opentiny/tiny-engine-toolbar-fullscreen": ["packages/toolbars/fullscreen/index"], + "@opentiny/tiny-engine-toolbar-lang": ["packages/toolbars/lang/index"], + "@opentiny/tiny-engine-toolbar-layout": ["packages/toolbars/layout/index"], + "@opentiny/tiny-engine-toolbar-lock": ["packages/toolbars/lock/index"], + "@opentiny/tiny-engine-toolbar-logo": ["packages/toolbars/logo/index"], + "@opentiny/tiny-engine-toolbar-media": ["packages/toolbars/media/index"], + "@opentiny/tiny-engine-toolbar-preview": ["packages/toolbars/preview/index"], + "@opentiny/tiny-engine-toolbar-generate-code": ["packages/toolbars/generate-code/index"], + "@opentiny/tiny-engine-toolbar-clean": ["packages/toolbars/clean/index"], + "@opentiny/tiny-engine-toolbar-save": ["packages/toolbars/save/index"], + "tiny-engine-canvas": ["packages/canvas/index"], + "@opentiny/tiny-engine-theme-dark": ["packages/theme/dark/index.less"], + "@opentiny/tiny-engine-theme-light": ["packages/theme/light/index.less"], + "@opentiny/tiny-engine-svgs": ["packages/svgs/index"], + "@opentiny/tiny-engine-http": ["packages/http/index"], + "@opentiny/tiny-engine-plugin-materials/*": ["packages/plugins/materials/*"], + "@opentiny/tiny-engine-plugin-state/*": ["packages/plugins/state/*"], + "@opentiny/tiny-engine-plugin-script/*": ["packages/plugins/script/*"], + "@opentiny/tiny-engine-plugin-tree/*": ["packages/plugins/tree/*"], + "@opentiny/tiny-engine-plugin-help/*": ["packages/plugins/help/*"], + "@opentiny/tiny-engine-plugin-schema/*": ["packages/plugins/schema/*"], + "@opentiny/tiny-engine-plugin-page/*": ["packages/plugins/page/*"], + "@opentiny/tiny-engine-plugin-i18n/*": ["packages/plugins/i18n/*"], + "@opentiny/tiny-engine-plugin-bridge/*": ["packages/plugins/bridge/*"], + "@opentiny/tiny-engine-setting-events/*": ["packages/settings/events/*"], + "@opentiny/tiny-engine-setting-props/*": ["packages/settings/props/*"], + "@opentiny/tiny-engine-common/*": ["packages/common/*"], + "@opentiny/tiny-engine-setting-styles/*": ["packages/settings/styles/*"], + "@opentiny/tiny-engine-toolbar-breadcrumb/*": ["packages/toolbars/breadcrumb/*"], + "@opentiny/tiny-engine-toolbar-fullscreen/*": ["packages/toolbars/fullscreen/*"], + "@opentiny/tiny-engine-toolbar-lang/*": ["packages/toolbars/lang/*"], + "@opentiny/tiny-engine-toolbar-layout/*": ["packages/toolbars/layout/*"], + "@opentiny/tiny-engine-toolbar-lock/*": ["packages/toolbars/lock/*"], + "@opentiny/tiny-engine-toolbar-logo/*": ["packages/toolbars/logo/*"], + "@opentiny/tiny-engine-toolbar-media/*": ["packages/toolbars/media/*"], + "@opentiny/tiny-engine-toolbar-preview/*": ["packages/toolbars/preview/*"], + "@opentiny/tiny-engine-toolbar-clean/*": ["packages/toolbars/clean/*"], + "@opentiny/tiny-engine-toolbar-save/*": ["packages/toolbars/save/*"], + "@opentiny/tiny-engine-theme-dark/*": ["packages/theme/dark/*"], + "@opentiny/tiny-engine-theme-light/*": ["packages/theme/light/*"], + "@opentiny/tiny-engine-svgs/*": ["packages/svgs/*"], + "@opentiny/tiny-engine-http/*": ["packages/http/*"], + "@opentiny/tiny-engine-utils": ["packages/utils/src/index.js"], + "@opentiny/tiny-engine-webcomponent-core": ["packages/webcomponent/src/lib"], + "@opentiny/tiny-engine-i18n-host": ["packages/i18n/src/lib"] } }, - "include": ["src/**/*"], + "include": ["packages/**/*"], "exclude": ["node_modules", "dist"] } diff --git a/lerna.json b/lerna.json index ef32bdfb9f..74c0687b9e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,11 +1,15 @@ { - "packages": [ - "src/*", - "src/plugins/packages/*", - "src/settings/packages/*", - "src/theme/packages/*", - "src/toolbars/packages/*" - ], + "command": { + "version": { + "message": "chore(release): publish" + } + }, "useNx": false, - "version": "independent" + "version": "independent", + "npmClient": "pnpm", + "publish": { + "npmClient": "pnpm" + }, + "ignoreChanges": ["**/*.md", "**/test/**", ".npmrc"], + "granularPathspec": false } diff --git a/lint-staged.config.cjs b/lint-staged.config.cjs new file mode 100644 index 0000000000..d673344c2e --- /dev/null +++ b/lint-staged.config.cjs @@ -0,0 +1,4 @@ +module.exports = { + './packages/**/**.{js,vue,jsx}': 'eslint', + './packages/**/**.{vue,js,ts,html,json,less}': 'prettier --write' +} diff --git a/lint-staged.config.js b/lint-staged.config.js deleted file mode 100644 index 237086fb9a..0000000000 --- a/lint-staged.config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - './src/**/**.{js,vue,jsx}': 'eslint', - './src/**/**.{vue,js,ts,html,json,less}': 'prettier --write' -} diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000000..59d1b063bd --- /dev/null +++ b/logo.svg @@ -0,0 +1,44 @@ + + + logo-top + + + + + + + + + + + + + + + + + + + + + + + + + + + + OpenTiny + + + + + + + + + + + + + \ No newline at end of file diff --git a/mockServer/assets/js/1505web-components.umd.js b/mockServer/assets/js/1505web-components.umd.js deleted file mode 100644 index 3fefed87d6..0000000000 --- a/mockServer/assets/js/1505web-components.umd.js +++ /dev/null @@ -1,58 +0,0 @@ -/** -* Copyright (c) 2023 - present TinyEngine Authors. -* Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. -* -* Use of this source code is governed by an MIT-style license. -* -* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, -* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR -* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. -* -*/ - -;(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' - ? (module.exports = factory(require('@opentiny/vue'))) - : typeof define === 'function' && define.amd - ? define(['@opentiny/vue'], factory) - : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), - (global.TinyLowcodeComponent = factory(global.TinyVue))) -})(this, function (tinyVue3) { - 'use strict' - const Mapper = { - TinyCarouselItem: tinyVue3.CarouselItem, - TinyCheckboxButton: tinyVue3.CheckboxButton, - TinyTree: tinyVue3.Tree, - TinyPopover: tinyVue3.Popover, - TinyTooltip: tinyVue3.Tooltip, - TinyCol: tinyVue3.Col, - TinyDropdownItem: tinyVue3.DropdownItem, - TinyPager: tinyVue3.Pager, - TinySearch: tinyVue3.Search, - TinyRow: tinyVue3.Row, - TinyFormItem: tinyVue3.FormItem, - TinyAlert: tinyVue3.Alert, - TinyInput: tinyVue3.Input, - TinyTabs: tinyVue3.Tabs, - TinyDropdownMenu: tinyVue3.DropdownMenu, - TinyDialogBox: tinyVue3.DialogBox, - TinySwitch: tinyVue3.Switch, - TinyTimeLine: tinyVue3.TimeLine, - TinyTabItem: tinyVue3.TabItem, - TinyRadio: tinyVue3.Radio, - TinyForm: tinyVue3.Form, - TinyGrid: tinyVue3.Grid, - TinyNumeric: tinyVue3.Numeric, - TinyCheckboxGroup: tinyVue3.CheckboxGroup, - TinySelect: tinyVue3.Select, - TinyButtonGroup: tinyVue3.ButtonGroup, - TinyCarousel: tinyVue3.Carousel, - TinyPopeditor: tinyVue3.Popeditor, - TinyDatePicker: tinyVue3.DatePicker, - TinyDropdown: tinyVue3.Dropdown, - TinyChartHistogram: tinyVue3.ChartHistogram - } - Mapper['TinyTabs'].isGroup = true - Mapper['TinyGrid'].isGroup = true - return Mapper -}) diff --git a/mockServer/assets/json/bundle.json b/mockServer/assets/json/bundle.json deleted file mode 100644 index c5b2117ee6..0000000000 --- a/mockServer/assets/json/bundle.json +++ /dev/null @@ -1,10471 +0,0 @@ -{ - "data": { - "framework": "Vue", - "materials": { - "components": [ - { - "name": { - "zh_CN": "走马灯子项" - }, - "component": "TinyCarouselItem", - "icon": "carouselitem", - "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "CarouselItem", - "version": "", - "destructuring": true - }, - "group": "component", - "category": "容器组件", - "priority": 2, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "name", - "label": { - "text": { - "zh_CN": "幻灯片的名字,可用作 setActiveItem 的参数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "title", - "label": { - "text": { - "zh_CN": "幻灯片的标题" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "indicator-position", - "label": { - "text": { - "zh_CN": "指示器的位置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "outside", - "value": "outside" - }, - { - "label": "none", - "value": "none" - } - ] - } - }, - "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": [], - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["disabled", "size"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "name": { - "zh_CN": "走马灯" - }, - "component": "TinyCarousel", - "icon": "carousel", - "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Carousel", - "version": "", - "destructuring": true - }, - "group": "component", - "category": "容器组件", - "priority": 2, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "arrow", - "label": { - "text": { - "zh_CN": "切换箭头的显示时机" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": { - "options": [ - { - "label": "总是显示", - "value": "always" - }, - { - "label": "鼠标悬停时显示", - "value": "hover" - }, - { - "label": "从不显示", - "value": "never" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "autoplay", - "label": { - "text": { - "zh_CN": "是否自动切换" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "tabs", - "label": { - "text": { - "zh_CN": "选项卡" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "defaultValue": "", - "cols": 12, - "bindState": false, - "widget": { - "component": "MetaContainer", - "props": {} - }, - "description": { - "zh_CN": "tabs" - }, - "labelPosition": "none" - }, - { - "property": "height", - "label": { - "text": { - "zh_CN": "走马灯的高度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "indicator-position", - "label": { - "text": { - "zh_CN": "指示器的位置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": { - "options": [ - { - "label": "走马灯外部", - "value": "outside" - }, - { - "label": "不显示", - "value": "none" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "initial-index", - "label": { - "text": { - "zh_CN": "初始状态激活的幻灯片的索引,从 0 开始 " - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "interval", - "label": { - "text": { - "zh_CN": "自动切换的时间间隔,单位为毫秒" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "loop", - "label": { - "text": { - "zh_CN": "是否循环显示" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "show-title", - "label": { - "text": { - "zh_CN": "是否显示标题" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "trigger", - "label": { - "text": { - "zh_CN": "指示器的触发方式,默认为 hover" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": { - "options": [ - { - "label": "点击", - "value": "click" - }, - { - "label": "悬停", - "value": "hover" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "type", - "label": { - "text": { - "zh_CN": "走马灯的类型" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": { - "options": [ - { - "label": "水平", - "value": "horizontal" - }, - { - "label": "垂直", - "value": "vertical" - }, - { - "label": "卡片", - "value": "card" - } - ] - } - }, - "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "clickCapture": false, - "isModal": false, - "nestingRule": { - "childWhitelist": ["TinyCarouselItem"], - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["disabled", "size"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "link", - "name": { - "zh_CN": "提示框" - }, - "component": "a", - "description": "链接", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "group": "component", - "priority": 7, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "children", - "label": { - "text": { - "zh_CN": "类型" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlText", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - }, - { - "property": "href", - "label": { - "text": { - "zh_CN": "跳转链接" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "链接" - } - }, - { - "property": "target", - "label": { - "text": { - "zh_CN": "页面目标" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "当前页面", - "value": "_self" - }, - { - "label": "打开新页面", - "value": "_blank" - } - ] - } - }, - "description": { - "zh_CN": "链接" - } - }, - { - "property": "attributes3", - "label": { - "text": { - "zh_CN": "原生属性" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlAttributes", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - } - ] - } - ] - }, - "configure": { - "loop": true, - "condition": true, - "slots": [], - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": [] - }, - "contextMenu": { - "actions": [], - "disable": [] - } - } - }, - { - "name": { - "zh_CN": "标题" - }, - "component": ["h1", "h2", "h3", "h4", "h5", "h6"], - "icon": "h16", - "description": "标题", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": {}, - "group": "component", - "category": "html", - "priority": 20, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "children", - "label": { - "text": { - "zh_CN": "类型" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlText", - "props": { - "showRadioButton": true - } - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - }, - { - "property": "attributes3", - "label": { - "text": { - "zh_CN": "原生属性" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlAttributes", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": [], - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["disabled", "size"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "name": { - "zh_CN": "段落" - }, - "component": "p", - "icon": "paragraph", - "description": "段落", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": {}, - "group": "component", - "category": "html", - "priority": 30, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "children", - "label": { - "text": { - "zh_CN": "类型" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlText", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - }, - { - "property": "attributes3", - "label": { - "text": { - "zh_CN": "原生属性" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlAttributes", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": [], - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": [] - }, - "contextMenu": { - "actions": [], - "disable": [] - } - } - }, - { - "name": { - "zh_CN": "输入框" - }, - "component": "input", - "icon": "input", - "description": "输入框", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": {}, - "group": "component", - "category": "html", - "priority": 40, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "type", - "label": { - "text": { - "zh_CN": "类型" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "checkbox", - "value": "checkbox" - }, - { - "label": "color", - "value": "color" - }, - { - "label": "date", - "value": "date" - }, - { - "label": "button", - "value": "button" - }, - { - "label": "email", - "value": "email" - }, - { - "label": "file", - "value": "file" - }, - { - "label": "hidden", - "value": "hidden" - }, - { - "label": "image", - "value": "image" - }, - { - "label": "month", - "value": "month" - }, - { - "label": "number", - "value": "number" - }, - { - "label": "password", - "value": "password" - }, - { - "label": "radio", - "value": "radio" - }, - { - "label": "range", - "value": "range" - }, - { - "label": "reset", - "value": "reset" - }, - { - "label": "search", - "value": "search" - }, - { - "label": "submit", - "value": "submit" - }, - { - "label": "text", - "value": "text" - }, - { - "label": "time", - "value": "time" - }, - { - "label": "week", - "value": "week" - }, - { - "label": "url", - "value": "url" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "placeholder", - "label": { - "text": { - "zh_CN": "占位符" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "attributes3", - "label": { - "text": { - "zh_CN": "原生属性" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlAttributes", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - } - ] - } - ], - "events": { - "onBlur": { - "label": { - "zh_CN": "失去焦点时触发" - }, - "description": { - "zh_CN": "在 Input 失去焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onFocus": { - "label": { - "zh_CN": "获取焦点时触发" - }, - "description": { - "zh_CN": "在 Input 获取焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onChange": { - "label": { - "zh_CN": "输入值改变时触发" - }, - "description": { - "zh_CN": "在 Input 输入值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": [], - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["disabled", "size"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "name": { - "zh_CN": "视频" - }, - "component": "video", - "icon": "video", - "description": "视频", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": {}, - "group": "component", - "category": "html", - "priority": 50, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 10, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "src", - "label": { - "text": { - "zh_CN": "视频的 URL" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "width", - "label": { - "text": { - "zh_CN": "视频播放器的宽度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "height", - "label": { - "text": { - "zh_CN": "视频播放器的高度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "controls", - "label": { - "text": { - "zh_CN": "是否显示控件" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "autoplay", - "label": { - "text": { - "zh_CN": "是否马上播放" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "attributes3", - "label": { - "text": { - "zh_CN": "原生属性" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlAttributes", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": [], - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": [] - }, - "contextMenu": { - "actions": [], - "disable": [] - } - } - }, - { - "icon": "Image", - "name": { - "zh_CN": "Img" - }, - "component": "Img", - "container": false, - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": {}, - "group": "component", - "category": "html", - "priority": 60, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "src", - "type": "string", - "defaultValue": "", - "bindState": true, - "label": { - "text": { - "zh_CN": "src路径" - } - }, - "cols": 12, - "rules": [], - "widget": { - "component": "MetaInput", - "props": {} - } - }, - { - "property": "attributes3", - "label": { - "text": { - "zh_CN": "原生属性" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlAttributes", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - } - ] - } - ], - "events": {}, - "shortcuts": { - "properties": ["src"] - }, - "contentMenu": { - "actions": [] - } - } - }, - { - "icon": "button", - "name": { - "zh_CN": "Button" - }, - "component": "button", - "container": false, - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": {}, - "group": "component", - "category": "html", - "priority": 70, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "attributes3", - "label": { - "text": { - "zh_CN": "原生属性" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlAttributes", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - } - ] - } - ], - "events": { - "onClick": { - "label": { - "zh_CN": "点击时触发" - }, - "description": { - "zh_CN": "点击时触发" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - } - }, - "shortcuts": { - "properties": [] - }, - "contentMenu": { - "actions": [] - } - } - }, - { - "icon": "table", - "name": { - "zh_CN": "表格" - }, - "component": "table", - "container": false, - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": {}, - "group": "component", - "category": "html", - "priority": 80, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "width", - "label": { - "text": { - "zh_CN": "表格的宽度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "border", - "label": { - "text": { - "zh_CN": "表格边框的宽度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "attributes3", - "label": { - "text": { - "zh_CN": "原生属性" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlAttributes", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - } - ] - } - ], - "events": { - "onClick": { - "label": { - "zh_CN": "点击时触发" - }, - "description": { - "zh_CN": "点击时触发" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - } - }, - "shortcuts": { - "properties": [] - }, - "contentMenu": { - "actions": [] - } - } - }, - { - "icon": "td", - "name": { - "zh_CN": "表格单元格" - }, - "component": "td", - "container": false, - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": {}, - "group": "component", - "category": "html", - "priority": 90, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "colspan", - "label": { - "text": { - "zh_CN": "单元格可横跨的列数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "rowspan", - "label": { - "text": { - "zh_CN": "单元格可横跨的行数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "attributes3", - "label": { - "text": { - "zh_CN": "原生属性" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaHtmlAttributes", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "none" - } - ] - } - ], - "events": { - "onClick": { - "label": { - "zh_CN": "点击时触发" - }, - "description": { - "zh_CN": "点击时触发" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - } - }, - "shortcuts": { - "properties": [] - }, - "contentMenu": { - "actions": [] - } - } - }, - { - "icon": "form", - "name": { - "zh_CN": "表单" - }, - "component": "form", - "container": false, - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": {}, - "group": "component", - "category": "html", - "priority": 100, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "name", - "label": { - "text": { - "zh_CN": "表单的名称" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "action", - "label": { - "text": { - "zh_CN": "提交表单时向何处发送表单数据" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "method", - "label": { - "text": { - "zh_CN": "用于发送 form-data 的 HTTP 方法" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "get", - "value": "get" - }, - { - "label": "post", - "value": "post" - } - ] - } - }, - "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": { - "onClick": { - "label": { - "zh_CN": "点击时触发" - }, - "description": { - "zh_CN": "点击时触发" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - } - }, - "shortcuts": { - "properties": [] - }, - "contentMenu": { - "actions": [] - } - } - }, - { - "icon": "label", - "name": { - "zh_CN": "表单标签" - }, - "component": "label", - "container": false, - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": {}, - "group": "component", - "category": "html", - "priority": 110, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "for", - "label": { - "text": { - "zh_CN": "label 绑定到哪个表单元素" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "form", - "label": { - "text": { - "zh_CN": "label 字段所属的一个或多个表单" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": {}, - "shortcuts": { - "properties": [] - }, - "contentMenu": { - "actions": [] - } - } - }, - { - "name": { - "zh_CN": "按钮组" - }, - "component": "TinyButtonGroup", - "icon": "buttonGroup", - "description": "以按钮组的方式出现,常用于多项类似操作", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "ButtonGroup", - "version": "", - "destructuring": true - }, - "group": "component", - "category": "general", - "priority": 2, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "data", - "label": { - "text": { - "zh_CN": "按钮组数据" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "size", - "label": { - "text": { - "zh_CN": "组件大小" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "mini", - "value": "mini" - }, - { - "label": "small", - "value": "small" - }, - { - "label": "medium", - "value": "medium" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "plain", - "label": { - "text": { - "zh_CN": "是否是朴素按钮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": [], - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["disabled", "size"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "row", - "name": { - "zh_CN": "row" - }, - "component": "TinyRow", - "description": "定义 Layout 的行配置信息", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Row", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 5, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "layout", - "label": { - "text": { - "zh_CN": "layout" - } - }, - "cols": 12, - "widget": { - "component": "MetaLayoutGrid", - "props": {} - }, - "description": { - "zh_CN": "layout" - }, - "labelPosition": "none" - }, - { - "property": "align", - "label": { - "text": { - "zh_CN": "align" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "top", - "value": "top" - }, - { - "label": "middle", - "value": "middle" - }, - { - "label": "bottom", - "value": "bottom" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "flex", - "label": { - "text": { - "zh_CN": "flex" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - } - }, - { - "property": "gutter", - "label": { - "text": { - "zh_CN": "gutter" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ] - } - ] - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": [], - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["label-width", "disabled"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "form", - "name": { - "zh_CN": "表单" - }, - "component": "TinyForm", - "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Form", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 5, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "是否禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "label-width", - "label": { - "text": { - "zh_CN": "标签宽度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "表单中标签占位宽度,默认为 80px" - }, - "labelPosition": "left" - }, - { - "property": "inline", - "label": { - "text": { - "zh_CN": "行内布局" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "行内布局模式,默认为 false" - } - }, - { - "property": "label-align", - "label": { - "text": { - "zh_CN": "必填标识是否占位" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "必填标识 * 是否占位" - }, - "labelPosition": "left" - }, - { - "property": "label-suffix", - "label": { - "text": { - "zh_CN": "标签后缀" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "表单中标签后缀" - } - }, - { - "property": "label-position", - "label": { - "text": { - "zh_CN": "标签位置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "right", - "value": "right" - }, - { - "label": "left ", - "value": "left " - }, - { - "label": "top", - "value": "top" - } - ] - } - }, - "description": { - "zh_CN": "表单中标签的布局位置" - } - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "校验属性" - }, - "content": [ - { - "property": "model", - "label": { - "text": { - "zh_CN": "表单校验对象" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "表单数据对象" - }, - "labelPosition": "left" - }, - { - "property": "rules", - "label": { - "text": { - "zh_CN": "校验规则" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "表单验证规则" - } - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": { - "onValidate": { - "label": { - "zh_CN": "表单项被校验后触发" - }, - "description": { - "zh_CN": "表单项被校验后触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "function", - "type": "Function", - "defaultValue": "(valid) => {}", - "description": { - "zh_CN": "校验回调函数" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onInput": { - "label": { - "zh_CN": "输入值改变时触发" - }, - "description": { - "zh_CN": "在 Input 输入值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "输入框输入的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onBlur": { - "label": { - "zh_CN": "失去焦点时触发" - }, - "description": { - "zh_CN": "在 Input 失去焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onFocus": { - "label": { - "zh_CN": "获取焦点时触发" - }, - "description": { - "zh_CN": "在 Input 获取焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onClear": { - "label": { - "zh_CN": "点击清空按钮时触发" - }, - "description": { - "zh_CN": "点击清空按钮时触发" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": [], - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["label-width", "disabled"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "formitem", - "name": { - "zh_CN": "表单项" - }, - "component": "TinyFormItem", - "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "FormItem", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 12, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "label", - "label": { - "text": { - "zh_CN": "标签文本" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "defaultValue": "标签", - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "标签文本" - }, - "labelPosition": "left" - }, - { - "property": "prop", - "label": { - "text": { - "zh_CN": "校验字段" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的" - } - }, - { - "property": "required", - "label": { - "text": { - "zh_CN": "必填" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否必填" - }, - "labelPosition": "left" - } - ] - } - ], - "events": {}, - "slots": { - "label": { - "label": { - "zh_CN": "字段名" - }, - "description": { - "zh_CN": "自定义显示字段名称" - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": ["TinyForm"], - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["label", "rules"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "col", - "name": { - "zh_CN": "col" - }, - "component": "TinyCol", - "description": "列配置信息", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Col", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 2, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "span", - "label": { - "text": { - "zh_CN": "栅格列格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "整行", - "value": 12 - }, - { - "label": "6格", - "value": 6 - }, - { - "label": "4格", - "value": 4 - }, - { - "label": "3格", - "value": 3 - }, - { - "label": "1格", - "value": 1 - } - ] - } - }, - "description": { - "zh_CN": "当一行分为12格时,一列可占位多少格" - } - }, - { - "property": "move", - "label": { - "text": { - "zh_CN": "栅格左右移动格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": -12, - "max": 12 - } - }, - "description": { - "zh_CN": "栅格左右移动格数(正数向右,负数向左)" - } - }, - { - "property": "no", - "label": { - "text": { - "zh_CN": "排序编号" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "max": 12 - } - }, - "description": { - "zh_CN": "排序编号(row中启用order生效)" - } - }, - { - "property": "offset", - "label": { - "text": { - "zh_CN": "间隔格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 0, - "max": 12 - } - }, - "description": { - "zh_CN": "栅格左侧的间隔格数" - } - }, - { - "property": "xs", - "label": { - "text": { - "zh_CN": "超小屏格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 1, - "max": 12 - } - }, - "description": { - "zh_CN": "<768px 响应式栅格数" - } - }, - { - "property": "sm", - "label": { - "text": { - "zh_CN": "小屏格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 1, - "max": 12 - } - }, - "description": { - "zh_CN": "≥768px 响应式栅格数" - } - }, - { - "property": "md", - "label": { - "text": { - "zh_CN": "中屏格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 1, - "max": 12 - } - }, - "description": { - "zh_CN": "≥992px 响应式栅格数" - } - }, - { - "property": "lg", - "label": { - "text": { - "zh_CN": "大屏格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 1, - "max": 12 - } - }, - "description": { - "zh_CN": "≥1200px 响应式栅格数" - } - }, - { - "property": "xl", - "label": { - "text": { - "zh_CN": "超大屏格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 1, - "max": 12 - } - }, - "description": { - "zh_CN": "≥1920px 响应式栅格数" - } - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["label", "rules"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "name": { - "zh_CN": "按钮" - }, - "component": "TinyButton", - "icon": "button", - "description": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Button", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 2, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "text", - "type": "string", - "defaultValue": "按钮文案", - "label": { - "text": { - "zh_CN": "按钮文字" - } - }, - "cols": 12, - "hidden": false, - "required": true, - "readOnly": false, - "disabled": false, - "widget": { - "component": "MetaBindI18n", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "size", - "type": "select", - "label": { - "text": { - "zh_CN": "大小" - } - }, - "cols": 12, - "rules": [], - "hidden": false, - "required": true, - "readOnly": false, - "disabled": false, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "large", - "value": "large" - }, - { - "label": "medium", - "value": "medium" - }, - { - "label": "small", - "value": "small" - }, - { - "label": "mini", - "value": "mini" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否被禁用" - }, - "labelPosition": "left" - }, - { - "property": "type", - "label": { - "text": { - "zh_CN": "类型" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "primary", - "value": "primary" - }, - { - "label": "success", - "value": "success" - }, - { - "label": "info", - "value": "info" - }, - { - "label": "warning", - "value": "warning" - }, - { - "label": "danger", - "value": "danger" - }, - { - "label": "text", - "value": "text" - } - ] - } - }, - "description": { - "zh_CN": "设置不同的主题样式" - }, - "labelPosition": "left" - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "其他" - }, - "content": [ - { - "property": "round", - "label": { - "text": { - "zh_CN": "圆角" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否圆角按钮" - }, - "labelPosition": "left" - }, - { - "property": "plain", - "label": { - "text": { - "zh_CN": "朴素按钮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否为朴素按钮" - }, - "labelPosition": "left" - }, - { - "property": "reset-time", - "label": { - "text": { - "zh_CN": "禁用时间" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "设置禁用时间,防止重复提交,单位毫秒" - } - }, - { - "property": "circle", - "label": { - "text": { - "zh_CN": "圆角" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否圆形按钮" - }, - "labelPosition": "left" - }, - { - "property": "autofocus", - "label": { - "text": { - "zh_CN": "聚焦" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否默认聚焦" - }, - "labelPosition": "left" - }, - { - "property": "loading", - "label": { - "text": { - "zh_CN": "加载中" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否展示位加载中样式" - }, - "labelPosition": "left" - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": { - "onClick": { - "label": { - "zh_CN": "点击事件" - }, - "description": { - "zh_CN": "按钮被点击时触发的回调函数" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["text", "size"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "name": { - "zh_CN": "输入框" - }, - "component": "TinyInput", - "icon": "input", - "description": "通过鼠标或键盘输入字符", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Input", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 1, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaBindI18n", - "props": {} - }, - "description": { - "zh_CN": "双向绑定值" - }, - "labelPosition": "left" - }, - { - "property": "type", - "label": { - "text": { - "zh_CN": "类型" - } - }, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "textarea", - "value": "textarea" - }, - { - "label": "text", - "value": "text" - }, - { - "label": "password", - "value": "password" - } - ] - } - }, - "description": { - "zh_CN": "设置input框的type属性" - } - }, - { - "property": "rows", - "label": { - "text": { - "zh_CN": "行数" - } - }, - "widget": { - "component": "MetaNumber" - }, - "description": { - "zh_CN": "输入框行数,只对 type='textarea' 有效" - } - }, - { - "property": "placeholder", - "label": { - "text": { - "zh_CN": "占位文本" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaBindI18n", - "props": {} - }, - "description": { - "zh_CN": "输入框占位文本" - }, - "labelPosition": "left" - }, - { - "property": "clearable", - "label": { - "text": { - "zh_CN": "清除按钮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否显示清除按钮" - }, - "labelPosition": "left" - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "是否禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "size", - "label": { - "text": { - "zh_CN": "尺寸" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "medium", - "value": "medium" - }, - { - "label": "small", - "value": "small" - }, - { - "label": "mini", - "value": "mini" - } - ] - } - }, - "description": { - "zh_CN": "输入框尺寸。该属性的可选值为 medium / small / mini" - } - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "其他" - }, - "content": [ - { - "property": "maxlength", - "label": { - "text": { - "zh_CN": "最大长度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "设置 input 框的maxLength" - }, - "labelPosition": "left" - }, - { - "property": "autofocus", - "label": { - "text": { - "zh_CN": "聚焦" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "自动获取焦点" - }, - "labelPosition": "left" - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "值改变时触发" - }, - "description": { - "zh_CN": "在 Input 值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "输入框改变后的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onInput": { - "label": { - "zh_CN": "输入值改变时触发" - }, - "description": { - "zh_CN": "在 Input 输入值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "输入框输入的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "在 Input 输入值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onBlur": { - "label": { - "zh_CN": "失去焦点时触发" - }, - "description": { - "zh_CN": "在 Input 失去焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onFocus": { - "label": { - "zh_CN": "获取焦点时触发" - }, - "description": { - "zh_CN": "在 Input 获取焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onClear": { - "label": { - "zh_CN": "点击清空按钮时触发" - }, - "description": { - "zh_CN": "点击清空按钮时触发" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - } - }, - "slots": { - "prefix": { - "label": { - "zh_CN": "前置内容" - } - }, - "suffix": { - "label": { - "zh_CN": "后置内容" - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["value", "disabled"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "radio", - "name": { - "zh_CN": "单选" - }, - "component": "TinyRadio", - "description": "用于配置不同场景的选项,在一组备选项中进行单选", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Radio", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 3, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "text", - "label": { - "text": { - "zh_CN": "文本" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "label", - "label": { - "text": { - "zh_CN": "单选框的值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "双向绑定的当前选中值" - } - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ] - }, - { - "label": { - "zh_CN": "其他" - }, - "description": { - "zh_CN": "" - }, - "content": [ - { - "property": "border", - "label": { - "text": { - "zh_CN": "显示边框" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "size", - "label": { - "text": { - "zh_CN": "单选框的尺寸" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "name", - "label": { - "text": { - "zh_CN": "原生 name 属性" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "值变化事件" - }, - "description": { - "zh_CN": "绑定值变化时触发的事件" - } - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "当前选中的值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的当前选中值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["visible", "width"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "select", - "name": { - "zh_CN": "下拉框" - }, - "component": "TinySelect", - "description": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Select", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 8, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 10, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "双向绑定的当前选中值" - }, - "labelPosition": "left" - }, - { - "property": "placeholder", - "label": { - "text": { - "zh_CN": "占位文本" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "输入框占位文本" - }, - "labelPosition": "left" - }, - { - "property": "clearable", - "label": { - "text": { - "zh_CN": "清除按钮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否显示清除按钮" - }, - "labelPosition": "left" - }, - { - "property": "searchable", - "label": { - "text": { - "zh_CN": "下拉面板可搜索" - } - }, - "required": false, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "下拉面板是否可搜索" - }, - "labelPosition": "left" - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "是否禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "options", - "label": { - "text": { - "zh_CN": "下拉数据" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": { - "language": "json" - } - }, - "description": { - "zh_CN": "配置 Select 下拉数据项" - }, - "labelPosition": "left" - }, - { - "property": "multiple", - "label": { - "text": { - "zh_CN": "多选" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否允许输入框输入或选择多个项" - }, - "labelPosition": "left" - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "其他" - }, - "content": [ - { - "property": "multiple-limit", - "label": { - "text": { - "zh_CN": "最大可选值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "多选时用户最多可以选择的项目数,为 0 则不限制" - }, - "labelPosition": "left" - }, - { - "property": "popper-class", - "label": { - "text": { - "zh_CN": "下拉框的类名" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "设置下拉框自定义的类名" - }, - "labelPosition": "left" - }, - { - "property": "collapse-tags", - "label": { - "text": { - "zh_CN": "多选展示" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "多选时是否将选中值按文字的形式展示" - }, - "labelPosition": "left" - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "值改变时触发" - }, - "description": { - "zh_CN": "在下拉框值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "下拉框选中项的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "当前选中的值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的当前选中值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onBlur": { - "label": { - "zh_CN": "失去焦点时触发" - }, - "description": { - "zh_CN": "在 Input 失去焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onFocus": { - "label": { - "zh_CN": "获取焦点时触发" - }, - "description": { - "zh_CN": "在 Input 获取焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onClear": { - "label": { - "zh_CN": "点击清空按钮时触发" - }, - "description": { - "zh_CN": "点击清空按钮时触发" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - }, - "onRemoveTag": { - "label": { - "zh_CN": "多选模式下移除tag时触发" - }, - "description": { - "zh_CN": "多选模式下移除tag时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "被移除Tag对应数据项的值字段" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - }, - "onBeforeMount": "console.log('table on load'); this.options = source.data" - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["multiple", "options"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "switch", - "name": { - "zh_CN": "开关" - }, - "component": "TinySwitch", - "description": "Switch 在两种状态间切换选择", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Switch", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 9, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否被禁用" - }, - "labelPosition": "left" - }, - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "绑定默认值" - } - }, - { - "property": "true-value", - "label": { - "text": { - "zh_CN": "打开时的值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "设置打开时的值(Boolean / String / Number)" - }, - "labelPosition": "left" - }, - { - "property": "false-value", - "label": { - "text": { - "zh_CN": "关闭时的值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "设置关闭时的值(Boolean / String / Number)" - }, - "labelPosition": "left" - }, - { - "property": "mini", - "label": { - "text": { - "zh_CN": "迷你尺寸" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否显示为 mini 模式" - }, - "labelPosition": "left" - } - ] - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "点击事件" - }, - "description": { - "zh_CN": "按钮被点击时触发的回调函数" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "开关的状态值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的开关状态值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["disabled", "mini"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "search", - "name": { - "zh_CN": "搜索框" - }, - "component": "TinySearch", - "description": "指定条件对象进行搜索数据", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Search", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 2, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "默认值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "输入框内的默认搜索值" - }, - "labelPosition": "left" - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否被禁用" - }, - "labelPosition": "left" - }, - { - "property": "placeholder", - "label": { - "text": { - "zh_CN": "占位文本 " - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "输入框内的提示占位文本" - }, - "labelPosition": "left" - }, - { - "property": "clearable", - "label": { - "text": { - "zh_CN": "清空按钮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "设置显示清空图标按钮" - }, - "labelPosition": "left" - }, - { - "property": "isEnterSearch", - "label": { - "text": { - "zh_CN": "是否Enter键触发search事件" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否在按下键盘Enter键的时候触发search事件" - }, - "labelPosition": "left" - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "其他配置" - }, - "content": [ - { - "property": "mini", - "label": { - "text": { - "zh_CN": "迷你尺寸" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开" - }, - "labelPosition": "left" - }, - { - "property": "transparent", - "label": { - "text": { - "zh_CN": "透明模式" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false" - }, - "labelPosition": "left" - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "输入完成时触发" - }, - "description": { - "zh_CN": "在 input 框中输入完成时触发的回调函数" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "type", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "搜索类型,默认值为 {} " - } - }, - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "当前input框中值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onSearch": { - "label": { - "zh_CN": "点击搜索按钮时触发" - }, - "description": { - "zh_CN": "展开状态点击搜索按钮时触发的回调函数" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "type", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "搜索类型,默认值为 {} " - } - }, - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "当前input框中值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["clearable", "mini"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "checkbox", - "name": { - "zh_CN": "复选框" - }, - "component": "TinyCheckbox", - "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Checkbox", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 4, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "双向绑定值" - }, - "labelPosition": "left" - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "是否禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "checked", - "label": { - "text": { - "zh_CN": "勾选" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "当前是否勾选" - }, - "labelPosition": "left" - }, - { - "property": "text", - "label": { - "text": { - "zh_CN": "文本" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "复选框的文本" - }, - "labelPosition": "left" - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "其他" - }, - "content": [ - { - "property": "border", - "label": { - "text": { - "zh_CN": "边框" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否显示边框" - } - }, - { - "property": "false-label", - "label": { - "text": { - "zh_CN": "未选中的值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "没有选中时的值" - } - }, - { - "property": "true-label", - "label": { - "text": { - "zh_CN": "选择时的值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "选中时的值" - } - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "勾选值改变后将触发" - }, - "description": { - "zh_CN": "勾选值改变后将触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "选中项的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "当前选中的值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的当前选中值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["border", "disabled"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "checkboxbutton", - "name": { - "zh_CN": "复选按钮" - }, - "component": "TinyCheckboxButton", - "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "CheckboxButton", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 1, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "双向绑定的当前选中值" - }, - "labelPosition": "left" - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "是否禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "checked", - "label": { - "text": { - "zh_CN": "勾选" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "当前是否勾选" - }, - "labelPosition": "left" - }, - { - "property": "text", - "label": { - "text": { - "zh_CN": "文本" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "按钮文本" - }, - "labelPosition": "left" - } - ] - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "勾选值改变后将触发" - }, - "description": { - "zh_CN": "勾选值改变后将触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "选中项的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "当前选中的值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "array", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的当前选中值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["text", "size"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "checkboxgroup", - "name": { - "zh_CN": "复选按钮组" - }, - "component": "TinyCheckboxGroup", - "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "CheckboxGroup", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 2, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": { - "dataType": "Array" - } - }, - "description": { - "zh_CN": "双向绑定的当前选中值" - }, - "labelPosition": "left" - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "是否禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "options", - "label": { - "text": { - "zh_CN": "数据列表" - } - }, - "defaultValue": [ - { - "label": "标签2" - }, - { - "label": "标签2" - } - ], - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "checkbox组件列表" - } - }, - { - "property": "type", - "label": { - "text": { - "zh_CN": "类型" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "button", - "value": "button" - }, - { - "label": "checkbox", - "value": "checkbox" - } - ] - } - }, - "description": { - "zh_CN": "checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用" - }, - "labelPosition": "left" - } - ] - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "勾选值改变后将触发" - }, - "description": { - "zh_CN": "勾选值改变后将触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "选中项的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "当前选中的值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "array", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的当前选中值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["disabled", "type"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "dialogbox", - "name": { - "zh_CN": "对话框" - }, - "component": "TinyDialogBox", - "description": "模态对话框,在浮层中显示,引导用户进行相关操作。", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "DialogBox", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 4, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "title", - "label": { - "text": { - "zh_CN": "标题" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "弹出框标题" - }, - "labelPosition": "left" - }, - { - "property": "visible", - "label": { - "text": { - "zh_CN": "显示与隐藏" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "控制弹出框显示与关闭" - }, - "labelPosition": "left" - }, - { - "property": "width", - "label": { - "text": { - "zh_CN": "宽度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "弹出框的宽度" - }, - "labelPosition": "left" - }, - { - "property": "draggable", - "label": { - "text": { - "zh_CN": "可拖拽" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否开启弹窗的拖拽功能,默认值为 false 。" - } - }, - { - "property": "center", - "label": { - "text": { - "zh_CN": "居中" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "弹出框的头部与底部内容会自动居中" - }, - "labelPosition": "left" - }, - { - "property": "dialog-class", - "label": { - "text": { - "zh_CN": "自定义类" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "自定义配置弹窗类名" - }, - "labelPosition": "left" - }, - { - "property": "append-to-body", - "label": { - "text": { - "zh_CN": "插入到 Body " - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true" - }, - "labelPosition": "left" - }, - { - "property": "show-close", - "label": { - "text": { - "zh_CN": "关闭按钮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否显示关闭按钮,默认值为 true 。" - } - } - ] - } - ], - "selector": ".TinyDialogBox", - "events": { - "onClose": { - "label": { - "zh_CN": "关闭弹窗时触发" - }, - "description": { - "zh_CN": "Dialog 关闭的回调" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:visible": { - "label": { - "zh_CN": "双向绑定的状态改变时触发" - }, - "description": { - "zh_CN": "显示或隐藏的状态值,发生改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "boolean", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的显示或隐藏的状态值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - }, - "slots": { - "title": { - "label": { - "zh_CN": "标题区" - }, - "description": { - "zh_CN": "Dialog 标题区的内容" - } - }, - "footer": { - "label": { - "zh_CN": "按钮操作区" - }, - "description": { - "zh_CN": "Dialog 按钮操作区的内容" - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": true, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": ".tiny-dialog-box", - "shortcuts": { - "properties": ["visible", "width"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "tabs", - "name": { - "zh_CN": "标签页" - }, - "component": "TinyTabs", - "description": "分隔内容上有关联但属于不同类别的数据集合", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Tabs", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 10, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "showEditIcon", - "label": { - "text": { - "zh_CN": "显示编辑ICON " - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否显示标题后编辑 ICON" - }, - "labelPosition": "left" - }, - { - "property": "tabs", - "label": { - "text": { - "zh_CN": "选项卡" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "defaultValue": "", - "cols": 12, - "bindState": false, - "widget": { - "component": "MetaContainer", - "props": {} - }, - "description": { - "zh_CN": "tabs" - }, - "labelPosition": "none" - }, - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "绑定值,选中选项卡的 name" - }, - "labelPosition": "left" - }, - { - "property": "with-add", - "label": { - "text": { - "zh_CN": "可新增" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "标签是否可增加" - }, - "labelPosition": "left" - }, - { - "property": "with-close", - "label": { - "text": { - "zh_CN": "可关闭" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "标签是否可关闭" - }, - "labelPosition": "left" - }, - { - "property": "tab-style", - "label": { - "text": { - "zh_CN": "标签页样式" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "card", - "value": "card" - }, - { - "label": "border-card", - "value": "border-card" - } - ] - } - }, - "description": { - "zh_CN": "标签页样式" - }, - "labelPosition": "left" - } - ] - } - ], - "events": { - "onClick": { - "label": { - "zh_CN": "点击页签时触发事件" - }, - "description": { - "zh_CN": "在 Input 值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "component", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "当前点击的页签对象" - } - }, - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onEdit": { - "label": { - "zh_CN": "点击新增按钮或关闭按钮或者编辑按钮后触发" - }, - "description": { - "zh_CN": "点击新增按钮或关闭按钮或者编辑按钮后触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "tab", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "当前操作的页签对象" - } - }, - { - "name": "type", - "type": "String", - "defaultValue": "", - "description": { - "zh_CN": "当前操作的类型(remove || add || edit)" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onClose": { - "label": { - "zh_CN": "关闭页签时触发" - }, - "description": { - "zh_CN": "关闭页签时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "name", - "type": "String", - "defaultValue": "", - "description": { - "zh_CN": "页签名称" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "clickCapture": false, - "isModal": false, - "nestingRule": { - "childWhitelist": ["TinyTabItem"], - "parentWhitelist": [], - "descendantBlacklist": [], - "ancestorWhitelist": [] - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["size", "tab-style"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "tabitem", - "name": { - "zh_CN": "tab页签" - }, - "component": "TinyTabItem", - "description": "tab 标签页", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "TinyTabItem", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 2, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "name", - "label": { - "text": { - "zh_CN": "唯一表示" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "唯一表示" - } - }, - { - "property": "title", - "label": { - "text": { - "zh_CN": "标题" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "标题" - } - } - ] - } - ], - "events": {}, - "slots": { - "title": { - "label": { - "zh_CN": "标题" - }, - "description": { - "zh_CN": "自定义标题" - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": ["TinyTab"], - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["name", "title"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "breadcrumb", - "name": { - "zh_CN": "面包屑" - }, - "component": "TinyBreadcrumb", - "description": "告诉访问者他们目前在网站中的位置以及如何返回", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Select", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 1, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "separator", - "label": { - "text": { - "zh_CN": "分隔符" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "自定义分隔符" - }, - "labelPosition": "left" - }, - { - "property": "options", - "label": { - "text": { - "zh_CN": "options" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "textField", - "label": { - "text": { - "zh_CN": "textField" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - } - } - ] - } - ], - "events": { - "onSelect": { - "label": { - "zh_CN": "选择 breadcrumb 时触发" - }, - "description": { - "zh_CN": "选择 breadcrumb 时触发" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "clickCapture": false, - "isModal": false, - "nestingRule": { - "childWhitelist": ["TinyBreadcrumbItem"], - "parentWhitelist": [], - "descendantBlacklist": [], - "ancestorWhitelist": [] - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["separator"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "breadcrumb", - "name": { - "zh_CN": "面包屑项" - }, - "component": "TinyBreadcrumbItem", - "description": "", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "TinyBreadcrumbItem", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 1, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "to", - "label": { - "text": { - "zh_CN": "路由路径" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "面包屑项" - } - } - ] - } - ], - "slots": { - "default": { - "label": { - "zh_CN": "面包屑项标签" - }, - "description": { - "zh_CN": "面包屑项" - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": ["TinyBreadcrumb"], - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["to"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "collapse", - "name": { - "zh_CN": "折叠面板" - }, - "component": "TinyCollapse", - "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Collapse", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 3, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "当前激活的面板" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "双向绑定当前激活的面板" - }, - "labelPosition": "left" - } - ] - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "激活面板改变时触发" - }, - "description": { - "zh_CN": "当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "data", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "当前激活面板的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "当前激活面板的值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["label-width", "disabled"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "collapseitem", - "name": { - "zh_CN": "折叠面板项" - }, - "component": "TinyCollapseItem", - "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "CollapseItem", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 2, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "name", - "label": { - "text": { - "zh_CN": "唯一标志符" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "唯一标志符;String | Number" - }, - "labelPosition": "left" - }, - { - "property": "title", - "label": { - "text": { - "zh_CN": "面板标题" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "面板标题" - }, - "labelPosition": "left" - } - ] - } - ], - "events": {}, - "slots": { - "title": { - "label": { - "zh_CN": "标题" - }, - "description": { - "zh_CN": "自定义标题" - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["label-width", "disabled"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "grid", - "name": { - "zh_CN": "表格" - }, - "component": "TinyGrid", - "description": "提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Grid", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 2, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础属性" - }, - "description": { - "zh_CN": "基础属性" - }, - "collapse": { - "number": 15, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "data", - "label": { - "text": { - "zh_CN": "表格数据" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": { - "language": "json" - } - }, - "onChange": "this.delProp('fetchData')", - "description": { - "zh_CN": "设置表格的数据" - } - }, - { - "property": "columns", - "label": { - "text": { - "zh_CN": "表格列" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "properties": [ - { - "label": { - "zh_CN": "默认分组" - }, - "content": [ - { - "property": "title", - "type": "string", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "列标题" - } - }, - "widget": { - "component": "MetaBindI18n", - "props": {} - } - }, - { - "property": "field", - "type": "string", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "列键值" - } - }, - "widget": { - "component": "MetaInput", - "props": {} - } - }, - { - "property": "sortable", - "type": "boolean", - "defaultValue": true, - "label": { - "text": { - "zh_CN": "是否排序" - } - }, - "widget": { - "component": "MetaSwitch", - "props": {} - } - }, - { - "property": "width", - "type": "string", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "列宽" - } - }, - "widget": { - "component": "MetaNumber", - "props": {} - } - }, - { - "property": "formatText", - "type": "string", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "内置渲染器" - } - }, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "整数", - "value": "integer" - }, - { - "label": "小数", - "value": "number" - }, - { - "label": "金额", - "value": "money" - }, - { - "label": "百分比", - "value": "rate" - }, - { - "label": "布尔", - "value": "boole" - }, - { - "label": "年月日", - "value": "date" - }, - { - "label": "年月日时分", - "value": "dateTime" - }, - { - "label": "时间", - "value": "time" - }, - { - "label": "省略", - "value": "ellipsis" - } - ] - } - } - }, - { - "property": "renderer", - "type": "object", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "渲染函数" - } - }, - "widget": { - "component": "MetaCodeEditor", - "props": { - "dataType": "JSFunction" - } - } - }, - { - "property": "slots", - "type": "object", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "插槽" - } - }, - "labelPosition": "none", - "widget": { - "component": "MetaJsSlot", - "props": { - "slots": ["header", "default"] - } - } - }, - { - "property": "type", - "label": { - "text": { - "zh_CN": "列类型" - } - }, - "required": false, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "索引列", - "value": "index" - }, - { - "label": "单选列", - "value": "radio" - }, - { - "label": "多选列", - "value": "selection" - }, - { - "label": "展开列", - "value": "expand" - } - ], - "clearable": true - } - }, - "description": { - "zh_CN": "设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)" - }, - "labelPosition": "left" - }, - { - "property": "editor", - "label": { - "text": { - "zh_CN": "编辑配置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": { - "language": "json" - } - }, - "description": { - "zh_CN": "单元格编辑渲染配置项,也可以是函数 Function(h, params)" - }, - "labelPosition": "left" - }, - { - "property": "filter", - "label": { - "text": { - "zh_CN": "筛选配置" - } - }, - "required": false, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": { - "language": "json" - } - }, - "description": { - "zh_CN": "设置表格列的筛选配置信息。默认值为 false 不配置筛选信息" - } - }, - { - "property": "showOverflow", - "label": { - "text": { - "zh_CN": "内容超出部分省略号配置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "只显示省略号", - "value": "ellipsis" - }, - { - "label": "显示为原生 title", - "value": "title" - }, - { - "label": "显示为 tooltip 提示", - "value": "tooltip" - } - ], - "clearable": true - } - }, - "description": { - "zh_CN": "设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)" - }, - "labelPosition": "left" - } - ] - } - ], - "widget": { - "component": "MetaArrayItem", - "props": { - "type": "object", - "textField": "title", - "language": "json", - "buttonText": "编辑列配置", - "title": "编辑列配置", - "expand": true - } - }, - "description": { - "zh_CN": "表格列的配置信息" - }, - "labelPosition": "left" - }, - { - "property": "fetchData", - "label": { - "text": { - "zh_CN": "服务端数据" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "onChange": "this.delProp('data')", - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": { - "name": "fetchData", - "dataType": "JSExpression" - } - }, - "description": { - "zh_CN": "服务端数据查询方法" - } - }, - { - "property": "pager", - "label": { - "text": { - "zh_CN": "分页配置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "defaultValue": { - "attrs": { - "currentPage": 1 - } - }, - "widget": { - "component": "MetaCodeEditor", - "props": { - "name": "pager", - "dataType": "JSExpression" - } - }, - "description": { - "zh_CN": "分页配置" - } - }, - { - "property": "resizable", - "label": { - "text": { - "zh_CN": "调整列宽" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否允许调整列宽" - }, - "labelPosition": "left" - }, - { - "property": "row-id", - "label": { - "text": { - "zh_CN": "行数据唯一标识的字段名" - } - }, - "required": false, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": { - "placeholder": "比如:id" - } - }, - "description": { - "zh_CN": "行数据唯一标识的字段名" - }, - "labelPosition": "left" - }, - { - "property": "select-config", - "label": { - "text": { - "zh_CN": "复选框配置" - } - }, - "required": false, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": { - "dataType": "JSExpression" - } - }, - "description": { - "zh_CN": "表格行数据复选框配置项" - }, - "labelPosition": "left" - }, - { - "property": "edit-rules", - "label": { - "text": { - "zh_CN": "校验规则" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "表格校验规则配置项" - }, - "labelPosition": "left" - }, - { - "property": "edit-config", - "label": { - "text": { - "zh_CN": "编辑配置项" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "表格编辑配置项" - } - }, - { - "property": "expand-config", - "label": { - "text": { - "zh_CN": "复选框配置项" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "复选框配置项" - }, - "labelPosition": "left" - }, - { - "property": "sortable", - "label": { - "text": { - "zh_CN": "可排序" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否允许列数据排序。默认为 true 可排序" - }, - "labelPosition": "left" - } - ] - }, - { - "label": { - "zh_CN": "其他属性" - }, - "description": { - "zh_CN": "其他属性" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "auto-resize", - "label": { - "text": { - "zh_CN": "可排序" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否允许列数据排序。默认为 true 可排序" - }, - "labelPosition": "left" - }, - { - "property": "border", - "label": { - "text": { - "zh_CN": "边框" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否带有纵向边框" - }, - "labelPosition": "left" - }, - { - "property": "seq-serial", - "label": { - "text": { - "zh_CN": "行号连续" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "设置行序号是否连续,开启分页时有效,该属性的默认值为 false" - }, - "labelPosition": "left" - }, - { - "property": "highlight-current-row", - "label": { - "text": { - "zh_CN": "高亮当前行" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "高亮当前行" - }, - "labelPosition": "left" - }, - { - "property": "highlight-hover-row", - "label": { - "text": { - "zh_CN": "hover 时候高亮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "鼠标移到行是否要高亮显示" - }, - "labelPosition": "left" - }, - { - "property": "row-class-name", - "label": { - "text": { - "zh_CN": "hover 高亮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})" - }, - "labelPosition": "left" - }, - { - "property": "max-height", - "label": { - "text": { - "zh_CN": "最大高度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "设置表格内容区域(不含表格头部,底部)的最大高度。" - }, - "labelPosition": "left" - }, - { - "property": "row-span", - "label": { - "text": { - "zh_CN": "行合并" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用" - }, - "labelPosition": "left" - } - ] - } - ], - "events": { - "onFilterChange": { - "label": { - "zh_CN": "筛选条件改变时触发改事件" - }, - "description": { - "zh_CN": "配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "table", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "{$table,filters} 包含 table 实例对象和过滤条件的对象" - } - } - ], - "returns": {} - }, - "defaultValue": "function onClick(e) {}" - }, - "onSortChange": { - "label": { - "zh_CN": "点击列头,执行数据排序前触发的事件" - }, - "description": { - "zh_CN": "配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "table", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "{$table,filters} 包含 table 实例对象和过滤条件的对象" - } - } - ], - "returns": {} - }, - "defaultValue": "function onClick(e) {}" - }, - "onSelectAll": { - "label": { - "zh_CN": "当手动勾选全选时触发的事件" - }, - "description": { - "zh_CN": "只对 type=selection 有效,当手动勾选全选时触发的事件" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "table", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": " 包含 table 实例对象" - } - }, - { - "name": "checked", - "type": "boolean", - "defaultValue": "", - "description": { - "zh_CN": "勾选状态" - } - }, - { - "name": "selction", - "type": "Array", - "defaultValue": "", - "description": { - "zh_CN": "选中的表格数据数组" - } - } - ], - "returns": {} - }, - "defaultValue": "function onClick(e) {}" - }, - "onSelectChange": { - "label": { - "zh_CN": "手动勾选并且值发生改变时触发的事件" - }, - "description": { - "zh_CN": "只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "table", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": " table 实例对象" - } - }, - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": " 原生 Event" - } - } - ], - "returns": {} - }, - "defaultValue": "function onClick(e) {}" - }, - "onToggleExpandChange": { - "label": { - "zh_CN": "当行展开或收起时会触发该事件" - }, - "description": { - "zh_CN": "当行展开或收起时会触发该事件" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "table", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象" - } - }, - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": " 原生 Event" - } - } - ], - "returns": {} - }, - "defaultValue": "function onClick(e) {}" - }, - "onCurrentChange": { - "label": { - "zh_CN": "行点击时触发" - }, - "description": { - "zh_CN": "行点击时触发" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - } - }, - "shortcuts": { - "properties": ["sortable", "columns"] - }, - "contentMenu": { - "actions": ["create symbol"] - }, - "onBeforeMount": "console.log('table on load'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns" - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["sortable", "columns"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "name": { - "zh_CN": "分页" - }, - "component": "TinyPager", - "icon": "pager", - "description": "当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Pager", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 1, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 10, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "currentPage", - "label": { - "text": { - "zh_CN": "当前页数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "当前页数,支持 .sync 修饰符" - }, - "labelPosition": "left" - }, - { - "property": "pageSize", - "label": { - "text": { - "zh_CN": "每页条数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "每页显示条目个数" - }, - "labelPosition": "left" - }, - { - "property": "pageSizes", - "label": { - "text": { - "zh_CN": "可选每页条数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "设置可选择的每页显示条数" - } - }, - { - "property": "total", - "label": { - "text": { - "zh_CN": "总条数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "数据总条数" - }, - "labelPosition": "left" - }, - { - "property": "layout", - "label": { - "text": { - "zh_CN": "布局" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "defaultValue": "total,sizes,prev, pager, next", - "widget": { - "component": "MetaInput", - "props": { - "type": "textarea" - } - }, - "description": { - "zh_CN": "组件布局,子组件名用逗号分隔" - }, - "labelPosition": "left" - } - ] - } - ], - "events": { - "onCurrentChange ": { - "label": { - "zh_CN": "切换页码时触发" - }, - "description": { - "zh_CN": "切换页码时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "当前页的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onPrevClick ": { - "label": { - "zh_CN": "点击上一页按钮时触发" - }, - "description": { - "zh_CN": "点击上一页按钮时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "page", - "type": "String", - "defaultValue": "", - "description": { - "zh_CN": "当前页的页码值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onNextClick": { - "label": { - "zh_CN": "点击下一页按钮时触发" - }, - "description": { - "zh_CN": "点击上一页按钮时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "page", - "type": "String", - "defaultValue": "", - "description": { - "zh_CN": "当前页的页码值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["currentPage", "total"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "name": { - "zh_CN": "弹出编辑" - }, - "component": "TinyPopeditor", - "icon": "popEditor", - "description": "该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "PopEditor", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 6, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "双向绑定值" - }, - "labelPosition": "left" - }, - { - "property": "placeholder", - "label": { - "text": { - "zh_CN": "占位文本" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "输入框占位文本" - }, - "labelPosition": "left" - }, - { - "property": "show-clear-btn", - "label": { - "text": { - "zh_CN": "清除按钮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否显示清除按钮" - }, - "labelPosition": "left" - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "是否禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "其他" - }, - "content": [ - { - "property": "width", - "label": { - "text": { - "zh_CN": "宽度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "设置弹出面板的宽度(单位像素)" - }, - "labelPosition": "left" - }, - { - "property": "conditions", - "label": { - "text": { - "zh_CN": "过滤条件" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "当弹出面板配置的是表格时,设置弹出面板中的过滤条件" - }, - "labelPosition": "left" - }, - { - "property": "grid-op", - "label": { - "text": { - "zh_CN": "表格配置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "设置弹出面板中表格组件的配置信息" - }, - "labelPosition": "left" - }, - { - "property": "pager-op", - "label": { - "text": { - "zh_CN": "分页配置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "设置弹出编辑框中分页配置" - }, - "labelPosition": "left" - }, - { - "property": "multi", - "label": { - "text": { - "zh_CN": "多选" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "设置弹出面板中的数据是否可多选" - }, - "labelPosition": "left" - }, - { - "property": "show-pager", - "label": { - "text": { - "zh_CN": "启用分页" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性" - } - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "选中值改变时触发" - }, - "description": { - "zh_CN": "在 Input 值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "当前选中项的值" - } - }, - { - "name": "value", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "当前选中对象" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "当前选中的值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的当前选中值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onClose": { - "label": { - "zh_CN": "弹框关闭时触发的事件" - }, - "description": { - "zh_CN": "弹框关闭时触发的事件" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - }, - "onPageChange": { - "label": { - "zh_CN": "分页切换事件" - }, - "description": { - "zh_CN": "表格模式下分页切换事件" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "String", - "defaultValue": "", - "description": { - "zh_CN": "当前页码数" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["modelValue", "disabled"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "tree", - "name": { - "zh_CN": "树" - }, - "component": "TinyTree", - "description": "可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Tree", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 12, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "show-checkbox", - "label": { - "text": { - "zh_CN": "多选" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "设置接口是否可以多选" - }, - "labelPosition": "left" - }, - { - "property": "data", - "label": { - "text": { - "zh_CN": "数据源" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "defaultValue": [ - { - "label": "一级 1", - "children": [ - { - "label": "二级 1-1" - } - ] - } - ], - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "可配置静态数据源和动态数据源" - } - }, - { - "property": "node-key", - "label": { - "text": { - "zh_CN": "唯一标识" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "节点唯一标识属性名称" - }, - "labelPosition": "left" - }, - { - "property": "icon-trigger-click-node", - "label": { - "text": { - "zh_CN": "触发NodeClick 事件" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "点击图标展开节点时是否触发 node-click 事件" - }, - "labelPosition": "left" - }, - { - "property": "expand-icon", - "label": { - "text": { - "zh_CN": "展开图标" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "节点展开图标" - }, - "labelPosition": "left" - }, - { - "property": "shrink-icon", - "label": { - "text": { - "zh_CN": "收缩图标" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "节点收缩的图标" - }, - "labelPosition": "left" - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "其他" - }, - "content": [ - { - "property": "check-on-click-node", - "label": { - "text": { - "zh_CN": "点击节点选中" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点" - }, - "labelPosition": "left" - }, - { - "property": "filter-node-method", - "label": { - "text": { - "zh_CN": "筛选函数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "节点筛选函数" - }, - "labelPosition": "left" - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": { - "onCheck": { - "label": { - "zh_CN": "勾选节点后的事件" - }, - "description": { - "zh_CN": "勾选节点后的事件" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "data", - "type": "object", - "defaultValue": "", - "description": { - "zh_CN": "当前选中节点信息" - } - }, - { - "name": "currentNode", - "type": "object", - "defaultValue": "", - "description": { - "zh_CN": "树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onNodeClick": { - "label": { - "zh_CN": "点击节点后的事件" - }, - "description": { - "zh_CN": "点击节点后的事件" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "data", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "当前选中节点信息" - } - }, - { - "name": "node", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性" - } - }, - { - "name": "vm", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "树组件实例" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["data", "show-checkbox"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "timeline", - "name": { - "zh_CN": "时间线" - }, - "component": "TinyTimeLine", - "description": "TimeLine 时间线", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "TimeLine", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 3, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "horizontal", - "type": "Boolean", - "defaultValue": { - "type": "i18n", - "zh_CN": "布局", - "en_US": "layout", - "key": "" - }, - "label": { - "text": { - "zh_CN": "水平布局" - } - }, - "cols": 12, - "rules": [], - "hidden": false, - "required": true, - "readOnly": false, - "disabled": false, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "节点和文字横向布局" - } - }, - { - "property": "vertical", - "type": "Boolean", - "defaultValue": { - "type": "i18n", - "zh_CN": "垂直布局", - "en_US": "layout", - "key": "" - }, - "label": { - "text": { - "zh_CN": "垂直布局" - } - }, - "cols": 12, - "rules": [], - "hidden": false, - "required": true, - "readOnly": false, - "disabled": false, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "节点和文字垂直布局" - } - }, - { - "property": "active", - "label": { - "text": { - "zh_CN": "选中值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "步骤条的选中步骤值" - }, - "labelPosition": "left" - }, - { - "property": "data", - "label": { - "text": { - "zh_CN": "数据" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "defaultValue": [ - { - "name": "配置基本信息", - "status": "ready" - }, - { - "name": "配置报价", - "status": "wait" - }, - { - "name": "完成报价", - "status": "wait" - } - ], - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "时间线步骤条数据" - }, - "labelPosition": "left" - } - ] - } - ], - "events": { - "onClick": { - "label": { - "zh_CN": "节点的点击时触发" - }, - "description": { - "zh_CN": "节点的点击时触发的回调函数" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "type", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "点击节点的下标" - } - }, - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "当前节点对象:{ name: 节点名称, time: 时间 }" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["active", "data"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "tooltip", - "name": { - "zh_CN": "文字提示框" - }, - "component": "TinyTooltip", - "description": "动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Tooltip", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 11, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 20, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "placement", - "label": { - "text": { - "zh_CN": "提示位置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "top", - "value": "top" - }, - { - "label": "top-start", - "value": "top-start" - }, - { - "label": "top-end", - "value": "top-end" - }, - { - "label": "bottom", - "value": "bottom" - }, - { - "label": "bottom-start", - "value": "bottom-start" - }, - { - "label": "bottom-end", - "value": "bottom-end" - }, - { - "label": "left", - "value": "left" - }, - { - "label": "left-start", - "value": "left-start" - }, - { - "label": "left-end", - "value": "left-end" - }, - { - "label": "right", - "value": "right" - }, - { - "label": "right-start", - "value": "right-start" - }, - { - "label": "right-end", - "value": "right-end" - } - ] - } - }, - "description": { - "zh_CN": "Tooltip 的出现位置" - }, - "labelPosition": "left" - }, - { - "property": "content", - "label": { - "text": { - "zh_CN": "内容" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "defaultValue": "提示信息", - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "显示的内容,也可以通过 slot#content 传入 DOM" - } - }, - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "是否可见" - } - }, - "defaultValue": true, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "状态是否可见" - } - }, - { - "property": "manual", - "label": { - "text": { - "zh_CN": "手动控制" - } - }, - "defaultValue": true, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效" - } - } - ] - } - ], - "events": {}, - "slots": { - "content": { - "label": { - "zh_CN": "提示内容" - }, - "description": { - "zh_CN": "自定义提示内容" - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "isPopper": true, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["disabled", "content"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - }, - { - "icon": "popover", - "name": { - "zh_CN": "提示框" - }, - "component": "TinyPopover", - "description": "Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画", - "docUrl": "", - "screenshot": "", - "tags": "", - "keywords": "", - "devMode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Popover", - "version": "", - "destructuring": true - }, - "group": "component", - "priority": 7, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "双向绑定,手动控制是否可见的状态值" - }, - "labelPosition": "left" - }, - { - "property": "placement", - "label": { - "text": { - "zh_CN": "位置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "top", - "value": "top" - }, - { - "label": "top-start", - "value": "top-start" - }, - { - "label": "top-end", - "value": "top-end" - }, - { - "label": "bottom", - "value": "bottom" - }, - { - "label": "bottom-start", - "value": "bottom-start" - }, - { - "label": "bottom-end", - "value": "bottom-end" - }, - { - "label": "left", - "value": "left" - }, - { - "label": "left-start", - "value": "left-start" - }, - { - "label": "left-end", - "value": "left-end" - }, - { - "label": "right", - "value": "right" - }, - { - "label": "right-start", - "value": "right-start" - }, - { - "label": "right-end", - "value": "right-end" - } - ] - } - }, - "description": { - "zh_CN": "" - }, - "labelPosition": "left" - }, - { - "property": "trigger", - "label": { - "text": { - "zh_CN": "触发方式" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "click", - "value": "click" - }, - { - "label": "focus", - "value": "focus" - }, - { - "label": "hover", - "value": "hover" - }, - { - "label": "manual", - "value": "manual" - } - ] - } - }, - "description": { - "zh_CN": "触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click" - } - }, - { - "property": "popper-class", - "label": { - "text": { - "zh_CN": "自定义类" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "为 popper 添加类名" - }, - "labelPosition": "left" - }, - { - "property": "visible-arrow", - "label": { - "text": { - "zh_CN": "显示箭头" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否显示 Tooltip 箭头" - } - }, - { - "property": "append-to-body", - "label": { - "text": { - "zh_CN": "添加到body上" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "Popover弹窗是否添加到body上" - } - }, - { - "property": "arrow-offset", - "label": { - "text": { - "zh_CN": "箭头的位置偏移" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "箭头的位置偏移,该属性的默认值为 0" - } - }, - { - "property": "close-delay", - "label": { - "text": { - "zh_CN": "隐藏延迟" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "触发方式为 hover 时的隐藏延迟,单位为毫秒" - } - }, - { - "property": "content", - "label": { - "text": { - "zh_CN": "显示的内容" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "显示的内容,也可以通过 slot 传入 DOM" - } - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "Popover 是否可用" - } - }, - { - "property": "offset", - "label": { - "text": { - "zh_CN": "位置偏移量" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "出现位置的偏移量" - } - }, - { - "property": "open-delay", - "label": { - "text": { - "zh_CN": "显示延迟" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "触发方式为 hover 时的显示延迟,单位为毫秒" - } - }, - { - "property": "popper-options", - "label": { - "text": { - "zh_CN": "popper.js的参数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "popper.js 的参数" - } - }, - { - "property": "title", - "label": { - "text": { - "zh_CN": "标题" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "标题" - } - }, - { - "property": "transform-origin", - "label": { - "text": { - "zh_CN": "旋转中心点" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "组件的旋转中心点,组件的旋转中心点" - } - }, - { - "property": "transition", - "label": { - "text": { - "zh_CN": "定义渐变动画" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "该属性的默认值为 fade-in-linear" - } - }, - { - "property": "width", - "label": { - "text": { - "zh_CN": "宽度" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "宽度" - } - } - ] - } - ], - "events": { - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "手动控制是否可见的状态值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "boolean", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的可见状态值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "isPopper": true, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["visible", "width"] - }, - "contextMenu": { - "actions": ["create symbol"], - "disable": ["copy", "remove"] - } - } - } - ], - "blocks": [], - "snippets": [ - { - "group": "html", - "children": [ - { - "name": { - "zh_CN": "段落" - }, - "icon": "paragraph", - "screenshot": "", - "snippetName": "p", - "schema": { - "componentName": "p", - "children": "TinyEngine 前端可视化设计器致力于通过友好的用户交互提升业务应用的开发效率。" - } - }, - { - "name": { - "zh_CN": "链接" - }, - "icon": "link", - "screenshot": "", - "snippetName": "a", - "schema": { - "componentName": "a", - "children": "链接" - } - }, - { - "name": { - "zh_CN": "分隔线" - }, - "icon": "hr", - "screenshot": "", - "snippetName": "hr", - "schema": {} - }, - { - "name": { - "zh_CN": "标题" - }, - "icon": "h16", - "screenshot": "", - "snippetName": "h1", - "schema": { - "componentName": "h1", - "props": {}, - "children": "Heading" - } - }, - { - "name": { - "zh_CN": "输入框" - }, - "icon": "input", - "screenshot": "", - "snippetName": "input", - "schema": { - "componentName": "input", - "props": { - "type": "text", - "placeholder": "请输入" - } - } - }, - { - "name": { - "zh_CN": "视频" - }, - "icon": "video", - "screenshot": "", - "snippetName": "video", - "schema": { - "componentName": "video", - "props": { - "src": "img/webNova.jpg", - "width": "200", - "height": "100", - "style": "border:1px solid #ccc" - } - } - }, - { - "name": { - "zh_CN": "图片" - }, - "icon": "Image", - "screenshot": "", - "snippetName": "img", - "schema": { - "componentName": "img", - "props": { - "src": "img/webNova.jpg", - "width": "200", - "height": "100" - } - } - }, - { - "name": { - "zh_CN": "按钮" - }, - "icon": "button", - "screenshot": "", - "snippetName": "button", - "schema": { - "componentName": "button", - "props": {}, - "children": [ - { - "componentName": "Text", - "props": { - "text": "按钮文案" - } - } - ] - } - }, - { - "name": { - "zh_CN": "表格" - }, - "icon": "table", - "screenshot": "", - "snippetName": "table", - "schema": { - "componentName": "table", - "props": { - "border": "1" - }, - "children": [ - { - "componentName": "tr", - "children": [ - { - "componentName": "td", - "children": "Month" - }, - { - "componentName": "td", - "children": "Savings" - } - ] - }, - { - "componentName": "tr", - "children": [ - { - "componentName": "td", - "children": "January" - }, - { - "componentName": "td", - "children": "100" - } - ] - } - ] - } - }, - { - "name": { - "zh_CN": "表单" - }, - "icon": "form", - "screenshot": "", - "snippetName": "form", - "schema": { - "componentName": "form", - "props": { - "action": "action" - }, - "children": [ - { - "componentName": "label", - "props": { - "for": "male" - }, - "children": "male" - }, - { - "componentName": "input", - "props": { - "type": "text" - } - }, - { - "componentName": "br" - }, - { - "componentName": "label", - "props": { - "for": "Female" - }, - "children": "Female" - }, - { - "componentName": "input", - "props": { - "type": "text" - } - } - ] - } - } - ] - }, - { - "group": "content", - "children": [ - { - "name": { - "zh_CN": "走马灯" - }, - "screenshot": "", - "snippetName": "tiny-carousel", - "icon": "carousel", - "schema": { - "componentName": "TinyCarousel", - "props": { - "height": "180px" - }, - "children": [ - { - "componentName": "TinyCarouselItem", - "children": [ - { - "componentName": "div", - "props": { - "style": "margin:10px 0 0 30px" - } - } - ] - }, - { - "componentName": "TinyCarouselItem", - "children": [ - { - "componentName": "div", - "props": { - "style": "margin:10px 0 0 30px" - } - } - ] - } - ] - } - }, - { - "name": { - "zh_CN": "表单" - }, - "screenshot": "", - "snippetName": "tiny-form", - "icon": "form", - "schema": { - "componentName": "TinyForm", - "props": { - "labelWidth": "80px", - "labelPosition": "top" - }, - "children": [ - { - "componentName": "TinyFormItem", - "props": { - "label": "人员" - }, - "children": [ - { - "componentName": "TinyInput", - "props": { - "placeholder": "请输入", - "modelValue": "" - } - } - ] - }, - { - "componentName": "TinyFormItem", - "props": { - "label": "密码" - }, - "children": [ - { - "componentName": "TinyInput", - "props": { - "placeholder": "请输入", - "modelValue": "", - "type": "password" - } - } - ] - }, - { - "componentName": "TinyFormItem", - "props": { - "label": "" - }, - "children": [ - { - "componentName": "TinyButton", - "props": { - "text": "提交", - "type": "primary", - "style": "margin-right: 10px" - } - }, - { - "componentName": "TinyButton", - "props": { - "text": "重置", - "type": "primary" - } - } - ] - } - ] - } - }, - { - "name": { - "zh_CN": "下拉框" - }, - "icon": "select", - "screenshot": "", - "snippetName": "TinySelect", - "schema": { - "componentName": "TinySelect", - "props": { - "modelValue": "", - "placeholder": "请选择", - "options": [ - { - "value": "1", - "label": "黄金糕" - }, - { - "value": "2", - "label": "双皮奶" - } - ] - } - } - }, - { - "name": { - "zh_CN": "开关" - }, - "icon": "switch", - "screenshot": "", - "snippetName": "TinySwitch", - "schema": { - "componentName": "TinySwitch", - "props": { - "modelValue": "" - } - } - }, - { - "name": { - "zh_CN": "复选框组" - }, - "icon": "checkboxs", - "screenshot": "", - "snippetName": "TinyCheckboxGroup", - "schema": { - "componentName": "TinyCheckboxGroup", - "props": { - "modelValue": ["name1", "name2"], - "type": "checkbox", - "options": [ - { - "text": "复选框1", - "label": "name1" - }, - { - "text": "复选框2", - "label": "name2" - }, - { - "text": "复选框3", - "label": "name3" - } - ] - } - } - }, - { - "name": { - "zh_CN": "复选框拖拽按钮组" - }, - "icon": "checkboxgroup", - "screenshot": "", - "snippetName": "TinyCheckboxbuttonGroup", - "schema": { - "componentName": "TinyCheckboxGroup", - "props": { - "modelValue": [] - }, - "children": [ - { - "componentName": "TinyCheckboxButton", - "children": [ - { - "componentName": "div" - } - ] - } - ] - } - }, - { - "name": { - "zh_CN": "对话框" - }, - "screenshot": "", - "snippetName": "TinyDialogBox", - "icon": "dialogbox", - "schema": { - "componentName": "TinyDialogBox", - "props": { - "visible": true, - "show-close": true, - "title": "dialogBox title" - }, - "children": [ - { - "componentName": "div" - } - ] - } - }, - { - "name": { - "zh_CN": "标签页" - }, - "icon": "tabs", - "screenshot": "", - "group": true, - "snippetName": "TinyTabs", - "schema": { - "componentName": "TinyTabs", - "props": { - "modelValue": "first" - }, - "children": [ - { - "componentName": "TinyTabItem", - "props": { - "title": "标签页1", - "name": "first" - }, - "children": [ - { - "componentName": "div", - "props": { - "style": "margin:10px 0 0 30px" - } - } - ] - }, - { - "componentName": "TinyTabItem", - "props": { - "title": "标签页2", - "name": "second" - }, - "children": [ - { - "componentName": "div", - "props": { - "style": "margin:10px 0 0 30px" - } - } - ] - } - ] - } - }, - { - "name": { - "zh_CN": "折叠面板" - }, - "screenshot": "", - "snippetName": "TinyCollapse", - "icon": "collapse", - "schema": { - "componentName": "TinyCollapse", - "props": { - "modelValue": "collapse1" - }, - "children": [ - { - "componentName": "TinyCollapseItem", - "props": { - "name": "collapse1", - "title": "折叠项1" - }, - "children": [ - { - "componentName": "div" - } - ] - }, - { - "componentName": "TinyCollapseItem", - "props": { - "name": "collapse2", - "title": "折叠项2" - }, - "children": [ - { - "componentName": "div" - } - ] - }, - { - "componentName": "TinyCollapseItem", - "props": { - "name": "collapse3", - "title": "折叠项3" - }, - "children": [ - { - "componentName": "div" - } - ] - } - ] - } - }, - { - "name": { - "zh_CN": "表格" - }, - "icon": "grid", - "screenshot": "", - "snippetName": "tinyGrid", - "schema": { - "componentName": "TinyGrid", - "props": { - "editConfig": { - "trigger": "click", - "mode": "cell", - "showStatus": true - }, - "columns": [ - { - "type": "index", - "width": 60 - }, - { - "type": "selection", - "width": 60 - }, - { - "field": "employees", - "title": "员工数" - }, - { - "field": "created_date", - "title": "创建日期" - }, - { - "field": "city", - "title": "城市" - } - ], - "data": [ - { - "id": "1", - "name": "GFD科技有限公司", - "city": "福州", - "employees": 800, - "created_date": "2014-04-30 00:56:00", - "boole": false - }, - { - "id": "2", - "name": "WWW科技有限公司", - "city": "深圳", - "employees": 300, - "created_date": "2016-07-08 12:36:22", - "boole": true - } - ] - } - } - }, - { - "name": { - "zh_CN": "弹出编辑" - }, - "icon": "popeditor", - "screenshot": "", - "snippetName": "TinyPopeditor", - "schema": { - "componentName": "TinyPopeditor", - "props": { - "modelValue": "", - "placeholder": "请选择", - "gridOp": { - "columns": [ - { - "field": "id", - "title": "ID", - "width": 40 - }, - { - "field": "name", - "title": "名称", - "showOverflow": "tooltip" - }, - { - "field": "province", - "title": "省份", - "width": 80 - }, - { - "field": "city", - "title": "城市", - "width": 80 - } - ], - "data": [ - { - "id": "1", - "name": "GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司", - "city": "福州", - "province": "福建" - }, - { - "id": "2", - "name": "WWW科技有限公司", - "city": "深圳", - "province": "广东" - }, - { - "id": "3", - "name": "RFV有限责任公司", - "city": "中山", - "province": "广东" - }, - { - "id": "4", - "name": "TGB科技有限公司", - "city": "龙岩", - "province": "福建" - }, - { - "id": "5", - "name": "YHN科技有限公司", - "city": "韶关", - "province": "广东" - }, - { - "id": "6", - "name": "WSX科技有限公司", - "city": "黄冈", - "province": "武汉" - } - ] - } - } - } - }, - { - "name": { - "zh_CN": "树" - }, - "icon": "tree", - "screenshot": "", - "snippetName": "TinyTree", - "schema": { - "componentName": "TinyTree", - "props": { - "data": [ - { - "label": "一级 1", - "children": [ - { - "label": "二级 1-1", - "children": [ - { - "label": "三级 1-1-1" - } - ] - } - ] - }, - { - "label": "一级 2", - "children": [ - { - "label": "二级 2-1", - "children": [ - { - "label": "三级 2-1-1" - } - ] - }, - { - "label": "二级 2-2", - "children": [ - { - "label": "三级 2-2-1" - } - ] - } - ] - } - ] - } - } - }, - { - "name": { - "zh_CN": "文字提示框" - }, - "icon": "tooltip", - "screenshot": "", - "snippetName": "TinyTooltip", - "schema": { - "componentName": "TinyTooltip", - "props": { - "content": "Top Left 提示文字", - "placement": "top-start", - "manual": true, - "modelValue": true - }, - "children": [ - { - "componentName": "span", - "children": [ - { - "componentName": "div", - "props": {} - } - ] - }, - { - "componentName": "Template", - "props": { - "slot": "content" - }, - "children": [ - { - "componentName": "span", - "children": [ - { - "componentName": "div", - "props": { - "placeholder": "提示内容" - } - } - ] - } - ] - } - ] - } - }, - { - "name": { - "zh_CN": "提示框" - }, - "icon": "popover", - "screenshot": "", - "snippetName": "TinyPopover", - "schema": { - "componentName": "TinyPopover", - "props": { - "width": 200, - "title": "弹框标题", - "trigger": "manual", - "modelValue": true - }, - "children": [ - { - "componentName": "Template", - "props": { - "slot": "reference" - }, - "children": [ - { - "componentName": "div", - "props": { - "placeholder": "触发源" - } - } - ] - }, - { - "componentName": "Template", - "props": { - "slot": "default" - }, - "children": [ - { - "componentName": "div", - "props": { - "placeholder": "提示内容" - } - } - ] - } - ] - } - }, - { - "name": { - "zh_CN": "分页" - }, - "icon": "pager", - "screenshot": "", - "snippetName": "TinyPager", - "schema": { - "componentName": "TinyPager", - "props": { - "layout": "total, sizes, prev, pager, next", - "total": 100, - "pageSize": 10, - "currentPage": 1 - } - } - }, - { - "name": { - "zh_CN": "面包屑" - }, - "icon": "breadcrumb", - "screenshot": "", - "snippetName": "TinyBreadcrumb", - "schema": { - "componentName": "TinyBreadcrumb", - "props": { - "options": [ - { - "to": "{ path: '/' }", - "label": "首页" - }, - { - "to": "{ path: '/breadcrumb' }", - "label": "产品" - }, - { - "replace": "true", - "label": "软件" - } - ] - } - } - } - ] - }, - { - "group": "general", - "children": [ - { - "name": { - "zh_CN": "Row" - }, - "icon": "row", - "screenshot": "", - "snippetName": "TinyRow", - "schema": { - "componentName": "TinyRow", - "props": {}, - "children": [ - { - "componentName": "TinyCol", - "props": { - "span": 3 - } - }, - { - "componentName": "TinyCol", - "props": { - "span": 3 - } - }, - { - "componentName": "TinyCol", - "props": { - "span": 3 - } - }, - { - "componentName": "TinyCol", - "props": { - "span": 3 - } - } - ] - } - }, - { - "name": { - "zh_CN": "Col" - }, - "icon": "col", - "screenshot": "", - "snippetName": "TinyCol", - "schema": { - "componentName": "TinyCol", - "props": { - "span": 12, - "style": { - "height": "30px", - "border": "1px solid #ccc" - } - } - } - }, - { - "name": { - "zh_CN": "按钮" - }, - "icon": "button", - "screenshot": "", - "snippetName": "TinyButton", - "schema": { - "componentName": "TinyButton", - "props": { - "text": "按钮文案" - } - } - }, - { - "name": { - "zh_CN": "按钮组" - }, - "icon": "buttons", - "snippetName": "TinyButtons", - "screenshot": "", - "schema": { - "componentName": "div", - "props": {}, - "children": [ - { - "componentName": "TinyButton", - "props": { - "text": "提交", - "type": "primary", - "style": { - "margin": "0 5px 0 5px" - } - } - }, - { - "componentName": "TinyButton", - "props": { - "text": "重置", - "style": { - "margin": "0 5px 0 5px" - } - } - }, - { - "componentName": "TinyButton", - "props": { - "text": "取消" - } - } - ] - }, - "configure": { - "isContainer": true - } - }, - { - "name": { - "zh_CN": "互斥按钮组" - }, - "icon": "buttons", - "snippetName": "TinyButtonGroup", - "screenshot": "", - "schema": { - "componentName": "TinyButtonGroup", - "props": { - "data": [ - { - "text": "Button1", - "value": "1" - }, - { - "text": "Button2", - "value": "2" - }, - { - "text": "Button3", - "value": "3" - } - ], - "modelValue": "1" - } - } - }, - { - "name": { - "zh_CN": "输入框" - }, - "icon": "input", - "screenshot": "", - "snippetName": "TinyInput", - "schema": { - "componentName": "TinyInput", - "props": { - "placeholder": "请输入", - "modelValue": "" - } - } - }, - { - "name": { - "zh_CN": "单选" - }, - "icon": "radio", - "screenshot": "", - "snippetName": "TinyRadio", - "schema": { - "componentName": "TinyRadio", - "props": { - "label": "1", - "text": "单选文本" - } - } - }, - { - "name": { - "zh_CN": "复选框" - }, - "icon": "checkbox", - "screenshot": "", - "snippetName": "TinyCheckbox", - "schema": { - "componentName": "TinyCheckbox", - "props": { - "text": "复选框文案" - } - } - } - ] - }, - { - "group": "navigation", - "children": [ - { - "name": { - "zh_CN": "搜索框" - }, - "icon": "search", - "screenshot": "", - "snippetName": "TinySearch", - "schema": { - "componentName": "TinySearch", - "props": { - "modelValue": "", - "placeholder": "输入关键词" - } - } - }, - { - "name": { - "zh_CN": "时间线" - }, - "icon": "timeline", - "screenshot": "", - "snippetName": "TinyTimeLine", - "schema": { - "componentName": "TinyTimeLine", - "props": { - "active": "2", - "data": [ - { - "name": "已下单" - }, - { - "name": "运输中" - }, - { - "name": "已签收" - } - ] - } - } - } - ] - } - ] - } - } -} diff --git a/mockServer/package.json b/mockServer/package.json index 0700197ab7..7def9d96aa 100644 --- a/mockServer/package.json +++ b/mockServer/package.json @@ -1,19 +1,38 @@ { - "name": "koa2-mock", - "version": "1.0.0", + "name": "@opentiny/tiny-engine-mock", + "version": "2.0.0-alpha.2", + "publishConfig": { + "access": "public" + }, "description": "mock服务", - "author": "opentiny", - "license": "WTFPL", + "repository": { + "type": "git", + "url": "https://github.com/opentiny/tiny-engine", + "directory": "mockServer" + }, + "bugs": { + "url": "https://github.com/opentiny/tiny-engine/issues" + }, + "author": "OpenTiny Team", + "license": "MIT", + "homepage": "https://opentiny.design/tiny-engine", + "main": "dist/app.js", + "files": [ + "dist", + "README.md" + ], "scripts": { "start": "gulp nodemon", "dev": "gulp", - "build": "babel src -d dist", - "production": "node dist/app.js", + "build:js": "babel src --out-dir dist", + "build:static": "ncp src/assets dist/assets && ncp src/mock dist/mock && ncp src/database dist/database", + "build": "npm run build:js && npm run build:static", "test": "jest", "lint": "eslint --fix ." }, "dependencies": { - "@opentiny/lowcode-dsl-vue": "0.4.0", + "@babel/runtime": "^7.9.2", + "@opentiny/tiny-engine-dsl-vue": "^2.0.0-alpha.2", "@seald-io/nedb": "^4.0.2", "fs-extra": "^11.1.1", "glob": "^10.3.4", @@ -31,7 +50,6 @@ "@babel/plugin-transform-runtime": "^7.9.0", "@babel/preset-env": "^7.9.5", "@babel/register": "^7.9.0", - "@babel/runtime": "^7.9.2", "babel-core": "^7.0.0-bridge.0", "babel-eslint": "^10.1.0", "babel-jest": "^25.3.0", @@ -48,10 +66,11 @@ "gulp-eslint": "^6.0.0", "gulp-nodemon": "^2.5.0", "jest": "^25.3.0", - "koa-logger": "^3.2.1" + "koa-logger": "^3.2.1", + "ncp": "^2.0.0" }, "engines": { - "node": ">= 7.8.0", - "npm": ">= 4.2.0" + "node": ">= 16", + "npm": ">= 6" } } diff --git a/mockServer/src/app.js b/mockServer/src/app.js index 3c3f6d2a33..8abfa078b5 100644 --- a/mockServer/src/app.js +++ b/mockServer/src/app.js @@ -14,13 +14,12 @@ import Koa2 from 'koa' import KoaBody from 'koa-body' import KoaStatic from 'koa-static2' import path from 'path' -import MainRoutes from './routes/main-routes' +import { env, port } from './config/config' import ErrorRoutesCatch from './middleware/ErrorRoutesCatch' import ErrorRoutes from './routes/error-routes' +import MainRoutes from './routes/main-routes' const app = new Koa2() -const env = process.env.NODE_ENV || 'development' // Current mode -const PORT = 9090 app .use((ctx, next) => { ctx.set('Access-Control-Allow-Origin', '*') @@ -30,13 +29,13 @@ app return next() }) .use(ErrorRoutesCatch()) - .use(KoaStatic('assets', path.resolve(__dirname, '../assets'))) // Static resource + .use(KoaStatic('assets', path.resolve(__dirname, './assets'))) // Static resource .use( KoaBody({ multipart: true, parsedMethods: ['POST', 'PUT', 'PATCH', 'GET', 'HEAD', 'DELETE'], // parse GET, HEAD, DELETE requests formidable: { - uploadDir: path.join(__dirname, '../assets/uploads/tmp') + uploadDir: path.join(__dirname, './assets/uploads/tmp') }, jsonLimit: '50mb', formLimit: '50mb', @@ -57,6 +56,6 @@ if (env === 'development') { }) } -app.listen(PORT) +app.listen(port) export default app diff --git a/mockServer/assets/css/0.1.20/index.css b/mockServer/src/assets/css/0.1.20/index.css similarity index 100% rename from mockServer/assets/css/0.1.20/index.css rename to mockServer/src/assets/css/0.1.20/index.css diff --git a/mockServer/assets/images/0055f57e0a38d45ced54e1b2b566cb29_308x180.jpg b/mockServer/src/assets/images/0055f57e0a38d45ced54e1b2b566cb29_308x180.jpg similarity index 100% rename from mockServer/assets/images/0055f57e0a38d45ced54e1b2b566cb29_308x180.jpg rename to mockServer/src/assets/images/0055f57e0a38d45ced54e1b2b566cb29_308x180.jpg diff --git a/mockServer/assets/images/0cfe4680-dd6c-11ec-a115-b53bbc5cfe9d.png b/mockServer/src/assets/images/0cfe4680-dd6c-11ec-a115-b53bbc5cfe9d.png similarity index 100% rename from mockServer/assets/images/0cfe4680-dd6c-11ec-a115-b53bbc5cfe9d.png rename to mockServer/src/assets/images/0cfe4680-dd6c-11ec-a115-b53bbc5cfe9d.png diff --git a/mockServer/assets/images/120.jpg b/mockServer/src/assets/images/120.jpg similarity index 100% rename from mockServer/assets/images/120.jpg rename to mockServer/src/assets/images/120.jpg diff --git a/mockServer/assets/images/24b520f0-dd5d-11ec-9e28-e51c91ead705.png b/mockServer/src/assets/images/24b520f0-dd5d-11ec-9e28-e51c91ead705.png similarity index 100% rename from mockServer/assets/images/24b520f0-dd5d-11ec-9e28-e51c91ead705.png rename to mockServer/src/assets/images/24b520f0-dd5d-11ec-9e28-e51c91ead705.png diff --git a/mockServer/assets/images/27f7f9d26edd98f6bb1ed8d594d408d9_100x100.jpg b/mockServer/src/assets/images/27f7f9d26edd98f6bb1ed8d594d408d9_100x100.jpg similarity index 100% rename from mockServer/assets/images/27f7f9d26edd98f6bb1ed8d594d408d9_100x100.jpg rename to mockServer/src/assets/images/27f7f9d26edd98f6bb1ed8d594d408d9_100x100.jpg diff --git a/mockServer/assets/images/627366463067fa2f1a59d7db4ac55885_308x100.jpg b/mockServer/src/assets/images/627366463067fa2f1a59d7db4ac55885_308x100.jpg similarity index 100% rename from mockServer/assets/images/627366463067fa2f1a59d7db4ac55885_308x100.jpg rename to mockServer/src/assets/images/627366463067fa2f1a59d7db4ac55885_308x100.jpg diff --git a/mockServer/assets/images/777aad0c570f653f0a95b48b898c7b4b_308x180.jpg b/mockServer/src/assets/images/777aad0c570f653f0a95b48b898c7b4b_308x180.jpg similarity index 100% rename from mockServer/assets/images/777aad0c570f653f0a95b48b898c7b4b_308x180.jpg rename to mockServer/src/assets/images/777aad0c570f653f0a95b48b898c7b4b_308x180.jpg diff --git a/mockServer/assets/images/bbb35cd0-db30-11ec-a1c4-7b3b3de0a1d8.png b/mockServer/src/assets/images/bbb35cd0-db30-11ec-a1c4-7b3b3de0a1d8.png similarity index 100% rename from mockServer/assets/images/bbb35cd0-db30-11ec-a1c4-7b3b3de0a1d8.png rename to mockServer/src/assets/images/bbb35cd0-db30-11ec-a1c4-7b3b3de0a1d8.png diff --git a/mockServer/assets/images/e4f27d446aef8318e4b4989f1f816b1e_220x220.png b/mockServer/src/assets/images/e4f27d446aef8318e4b4989f1f816b1e_220x220.png similarity index 100% rename from mockServer/assets/images/e4f27d446aef8318e4b4989f1f816b1e_220x220.png rename to mockServer/src/assets/images/e4f27d446aef8318e4b4989f1f816b1e_220x220.png diff --git a/mockServer/assets/images/f750dc319828b039af713c643aad02bd_222x134.png b/mockServer/src/assets/images/f750dc319828b039af713c643aad02bd_222x134.png similarity index 100% rename from mockServer/assets/images/f750dc319828b039af713c643aad02bd_222x134.png rename to mockServer/src/assets/images/f750dc319828b039af713c643aad02bd_222x134.png diff --git a/mockServer/assets/images/logo.png b/mockServer/src/assets/images/logo.png similarity index 100% rename from mockServer/assets/images/logo.png rename to mockServer/src/assets/images/logo.png diff --git a/mockServer/assets/js/1005web-components.es.js b/mockServer/src/assets/js/1005web-components.es.js similarity index 97% rename from mockServer/assets/js/1005web-components.es.js rename to mockServer/src/assets/js/1005web-components.es.js index 0043c1ad7e..689d20a989 100644 --- a/mockServer/assets/js/1005web-components.es.js +++ b/mockServer/src/assets/js/1005web-components.es.js @@ -26,7 +26,7 @@ const cacheStringFunction = (fn) => { } const hyphenateRE = /\B([A-Z])/g const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase()) -var _export_sfc = (sfc, props) => { +const _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc for (const [key, val] of props) { target[key] = val @@ -73,7 +73,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { ]) ) } -var block = /* @__PURE__ */ _export_sfc(_sfc_main, [ +const block = /* @__PURE__ */ _export_sfc(_sfc_main, [ ['render', _sfc_render], ['__file', 'D:/tmp/buildground/buildground_1673597935715/src/block/generated/components/PortalBlock.vue'] ]) diff --git a/mockServer/assets/js/1005web-components.umd.js b/mockServer/src/assets/js/1005web-components.umd.js similarity index 79% rename from mockServer/assets/js/1005web-components.umd.js rename to mockServer/src/assets/js/1005web-components.umd.js index 09985233a4..049e2961bd 100644 --- a/mockServer/assets/js/1005web-components.umd.js +++ b/mockServer/src/assets/js/1005web-components.umd.js @@ -11,25 +11,27 @@ */ ;(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' - ? (module.exports = factory( - require('@opentiny/tiny-engine-webcomponent-core'), - require('vue'), - require('vue-i18n'), - require('@opentiny/vue-icon') - )) - : typeof define === 'function' && define.amd - ? define(['@opentiny/tiny-engine-webcomponent-core', 'vue', 'vue-i18n', '@opentiny/vue-icon'], factory) - : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), - (global.TinyVueBlock = factory(global.TinyWebcomponentCore, global.Vue, global.VueI18n, global.TinyVueIcon))) -})(this, function (tinyWebcomponentCore, vue, vueI18n, tinyVue3Icon) { + if (typeof exports === 'object' && typeof module !== 'undefined') { + module.exports = factory( + require('@opentiny/tiny-engine-webcomponent-core'), + require('vue'), + require('vue-i18n'), + require('@opentiny/vue-icon') + ) + } else if (typeof define === 'function' && define.amd) { + define(['@opentiny/tiny-engine-webcomponent-core', 'vue', 'vue-i18n', '@opentiny/vue-icon'], factory) + } else { + ;(global = typeof globalThis !== 'undefined' ? globalThis : global || self), + (global.TinyVueBlock = factory(global.TinyWebcomponentCore, global.Vue, global.VueI18n, global.TinyVueIcon)) + } +})(this, (tinyWebcomponentCore, vue, vueI18n, tinyVue3Icon) => { function _interopNamespace(e) { if (e && e.__esModule) return e - var n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } }) + const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } }) if (e) { - Object.keys(e).forEach(function (k) { + Object.keys(e).forEach((k) => { if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k) + const d = Object.getOwnPropertyDescriptor(e, k) Object.defineProperty( n, k, @@ -45,10 +47,10 @@ } }) } - n['default'] = e + n.default = e return Object.freeze(n) } - var vue__namespace = /* @__PURE__ */ _interopNamespace(vue) + const vue__namespace = /* @__PURE__ */ _interopNamespace(vue) Object.freeze({}) Object.freeze([]) const cacheStringFunction = (fn) => { @@ -60,7 +62,7 @@ } const hyphenateRE = /\B([A-Z])/g const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase()) - var _export_sfc = (sfc, props) => { + const _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc for (const [key, val] of props) { target[key] = val @@ -112,7 +114,7 @@ ]) ) } - var block = /* @__PURE__ */ _export_sfc(_sfc_main, [ + const block = /* @__PURE__ */ _export_sfc(_sfc_main, [ ['render', _sfc_render], ['__file', 'D:/tmp/buildground/buildground_1673597935715/src/block/generated/components/PortalBlock.vue'] ]) diff --git a/mockServer/assets/js/1505web-components.es.js b/mockServer/src/assets/js/1505web-components.es.js similarity index 96% rename from mockServer/assets/js/1505web-components.es.js rename to mockServer/src/assets/js/1505web-components.es.js index 6fa9696bed..1d33e4e1c6 100644 --- a/mockServer/assets/js/1505web-components.es.js +++ b/mockServer/src/assets/js/1505web-components.es.js @@ -76,6 +76,6 @@ const Mapper = { TinyDropdown: Dropdown, TinyChartHistogram: ChartHistogram } -Mapper['TinyTabs'].isGroup = true -Mapper['TinyGrid'].isGroup = true +Mapper.TinyTabs.isGroup = true +Mapper.TinyGrid.isGroup = true export { Mapper as default } diff --git a/mockServer/src/assets/js/1505web-components.umd.js b/mockServer/src/assets/js/1505web-components.umd.js new file mode 100644 index 0000000000..baf6863938 --- /dev/null +++ b/mockServer/src/assets/js/1505web-components.umd.js @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +;(function (global, factory) { + if (typeof exports === 'object' && typeof module !== 'undefined') { + module.exports = factory(require('@opentiny/vue')) + } else if (typeof define === 'function' && define.amd) { + define(['@opentiny/vue'], factory) + } else { + ;(global = typeof globalThis !== 'undefined' ? globalThis : global || self), + (global.TinyLowcodeComponent = factory(global.TinyVue)) + } +})(this, (tinyVue3) => { + 'use strict' + const Mapper = { + TinyCarouselItem: tinyVue3.CarouselItem, + TinyCheckboxButton: tinyVue3.CheckboxButton, + TinyTree: tinyVue3.Tree, + TinyPopover: tinyVue3.Popover, + TinyTooltip: tinyVue3.Tooltip, + TinyCol: tinyVue3.Col, + TinyDropdownItem: tinyVue3.DropdownItem, + TinyPager: tinyVue3.Pager, + TinySearch: tinyVue3.Search, + TinyRow: tinyVue3.Row, + TinyFormItem: tinyVue3.FormItem, + TinyAlert: tinyVue3.Alert, + TinyInput: tinyVue3.Input, + TinyTabs: tinyVue3.Tabs, + TinyDropdownMenu: tinyVue3.DropdownMenu, + TinyDialogBox: tinyVue3.DialogBox, + TinySwitch: tinyVue3.Switch, + TinyTimeLine: tinyVue3.TimeLine, + TinyTabItem: tinyVue3.TabItem, + TinyRadio: tinyVue3.Radio, + TinyForm: tinyVue3.Form, + TinyGrid: tinyVue3.Grid, + TinyNumeric: tinyVue3.Numeric, + TinyCheckboxGroup: tinyVue3.CheckboxGroup, + TinySelect: tinyVue3.Select, + TinyButtonGroup: tinyVue3.ButtonGroup, + TinyCarousel: tinyVue3.Carousel, + TinyPopeditor: tinyVue3.Popeditor, + TinyDatePicker: tinyVue3.DatePicker, + TinyDropdown: tinyVue3.Dropdown, + TinyChartHistogram: tinyVue3.ChartHistogram + } + Mapper.TinyTabs.isGroup = true + Mapper.TinyGrid.isGroup = true + return Mapper +}) diff --git a/mockServer/assets/js/989web-components.es.js b/mockServer/src/assets/js/989web-components.es.js similarity index 100% rename from mockServer/assets/js/989web-components.es.js rename to mockServer/src/assets/js/989web-components.es.js diff --git a/mockServer/assets/js/989web-components.umd.js b/mockServer/src/assets/js/989web-components.umd.js similarity index 100% rename from mockServer/assets/js/989web-components.umd.js rename to mockServer/src/assets/js/989web-components.umd.js diff --git a/mockServer/assets/js/998web-components.es.js b/mockServer/src/assets/js/998web-components.es.js similarity index 99% rename from mockServer/assets/js/998web-components.es.js rename to mockServer/src/assets/js/998web-components.es.js index 4dae48ff3f..173aa17861 100644 --- a/mockServer/assets/js/998web-components.es.js +++ b/mockServer/src/assets/js/998web-components.es.js @@ -42,9 +42,9 @@ const cacheStringFunction = (fn) => { } const hyphenateRE = /\B([A-Z])/g const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase()) -var _style_0 = +const _style_0 = '\n.team-list-item.active[data-v-b66e3972] {\r\n border: 1px solid #38acff;\n}\n.toolbars-item[data-v-b66e3972]:hover {\r\n cursor: pointer;\r\n background-color: #f1f2f3;\n}\n.toolbars-item.active[data-v-b66e3972] {\r\n background-color: #e5e6e8;\n}\n' -var _export_sfc = (sfc, props) => { +const _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc for (const [key, val] of props) { target[key] = val @@ -406,7 +406,7 @@ const _hoisted_22 = /* @__PURE__ */ _withScopeId(() => ) ) function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { - var _a + let _a const _component_tiny_icon_setting = resolveComponent('tiny-icon-setting') const _component_tiny_tooltip = resolveComponent('tiny-tooltip') const _component_tiny_icon_check_out = resolveComponent('tiny-icon-check-out') @@ -640,7 +640,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { ]) ) } -var block = /* @__PURE__ */ _export_sfc(_sfc_main, [ +const block = /* @__PURE__ */ _export_sfc(_sfc_main, [ ['render', _sfc_render], ['styles', [_style_0]], ['__scopeId', 'data-v-b66e3972'], diff --git a/mockServer/assets/js/998web-components.umd.js b/mockServer/src/assets/js/998web-components.umd.js similarity index 95% rename from mockServer/assets/js/998web-components.umd.js rename to mockServer/src/assets/js/998web-components.umd.js index 13b18553a8..312b59ebaf 100644 --- a/mockServer/assets/js/998web-components.umd.js +++ b/mockServer/src/assets/js/998web-components.umd.js @@ -11,36 +11,41 @@ */ ;(function (global, factory) { - typeof exports === 'object ' && typeof module !== 'undefined ' - ? (module.exports = factory( - require('@opentiny/tiny-engine-webcomponent-core '), - require('vue '), - require('vue-i18n '), - require('@opentiny/vue-icon '), - require('@opentiny/vue ') - )) - : typeof define === 'function ' && define.amd - ? define( - ['@opentiny/tiny-engine-webcomponent-core ', 'vue ', 'vue-i18n ', '@opentiny/vue-icon ', '@opentiny/vue '], - factory - ) - : ((global = typeof globalThis !== 'undefined ' ? globalThis : global || self), + if (typeof exports === 'object' && typeof module !== 'undefined') { + module.exports = factory( + require('@opentiny/tiny-engine-webcomponent-core'), + require('vue'), + require('vue-i18n'), + require('@opentiny/vue-icon'), + require('@opentiny/vue') + ) + } else if (typeof define === 'function ' && define.amd) { + define([ + '@opentiny/tiny-engine-webcomponent-core', + 'vue', + 'vue-i18n', + '@opentiny/vue-icon', + '@opentiny/vue' + ], factory) + } else { + ;(global = typeof globalThis !== 'undefined' ? globalThis : global || self), (global.TinyVueBlock = factory( global.TinyWebcomponentCore, global.Vue, global.VueI18n, global.TinyVueIcon, global.TinyVue - ))) -})(this, function (tinyWebcomponentCore, vue, vueI18n, tinyVue3Icon, tinyVue3) { + )) + } +})(this, (tinyWebcomponentCore, vue, vueI18n, tinyVue3Icon, tinyVue3) => { 'use strict ' function _interopNamespace(e) { if (e && e.__esModule) return e - var n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module ' } }) + const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module ' } }) if (e) { - Object.keys(e).forEach(function (k) { + Object.keys(e).forEach((k) => { if (k !== 'default ') { - var d = Object.getOwnPropertyDescriptor(e, k) + const d = Object.getOwnPropertyDescriptor(e, k) Object.defineProperty( n, k, @@ -59,7 +64,7 @@ n['default '] = e return Object.freeze(n) } - var vue__namespace = /* @__PURE__ */ _interopNamespace(vue) + const vue__namespace = /* @__PURE__ */ _interopNamespace(vue) Object.freeze({}) Object.freeze([]) const cacheStringFunction = (fn) => { @@ -71,9 +76,9 @@ } const hyphenateRE = /\B([A-Z])/g const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1 ').toLowerCase()) - var _style_0 = + const _style_0 = '\n.team-list-item.active[data-v-b66e3972] {\r\n border: 1px solid #38acff;\n}\n.toolbars-item[data-v-b66e3972]:hover {\r\n cursor: pointer;\r\n background-color: #f1f2f3;\n}\n.toolbars-item.active[data-v-b66e3972] {\r\n background-color: #e5e6e8;\n}\n ' - var _export_sfc = (sfc, props) => { + const _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc for (const [key, val] of props) { target[key] = val @@ -446,7 +451,7 @@ ) ) function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { - var _a + let _a const _component_tiny_icon_setting = vue.resolveComponent('tiny-icon-setting ') const _component_tiny_tooltip = vue.resolveComponent('tiny-tooltip ') const _component_tiny_icon_check_out = vue.resolveComponent('tiny-icon-check-out ') @@ -688,7 +693,7 @@ ]) ) } - var block = /* @__PURE__ */ _export_sfc(_sfc_main, [ + const block = /* @__PURE__ */ _export_sfc(_sfc_main, [ ['render ', _sfc_render], ['styles ', [_style_0]], ['__scopeId ', 'data-v-b66e3972 '], diff --git a/mockServer/src/services/appinfo.json b/mockServer/src/assets/json/appinfo.json similarity index 85% rename from mockServer/src/services/appinfo.json rename to mockServer/src/assets/json/appinfo.json index 693b50cc51..156bb9ccee 100644 --- a/mockServer/src/services/appinfo.json +++ b/mockServer/src/assets/json/appinfo.json @@ -941,7 +941,674 @@ "updated_at": "2023-08-21T02:52:34.000Z" } ], - "source": [], + "source": [ + { + "id": 132, + "name": "getAllComponent", + "data": { + "data": [], + "type": "array" + }, + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-06-28T06:26:26.000Z", + "updated_at": "2022-06-28T07:02:30.000Z" + }, + { + "id": 133, + "name": "getAllList", + "data": { + "columns": [ + { + "name": "test", + "title": "测试", + "field": "test", + "type": "string", + "format": {} + }, + { + "name": "test1", + "title": "测试1", + "field": "test1", + "type": "string", + "format": {} + } + ], + "type": "array", + "data": [ + { + "test": "test1", + "test1": "test1", + "_id": "341efc48" + }, + { + "test": "test2", + "test1": "test1", + "_id": "b86b516c" + }, + { + "test": "test3", + "test1": "test1", + "_id": "f680cd78" + } + ], + "options": { + "uri": "", + "method": "GET" + }, + "dataHandler": { + "type": "JSFunction", + "value": "function dataHandler(data) { \n return data \n}" + }, + "willFetch": { + "type": "JSFunction", + "value": "function willFetch(option) {\n return option \n}" + }, + "shouldFetch": { + "type": "JSFunction", + "value": "function shouldFetch(option) {\n return true \n}" + }, + "errorHandler": { + "type": "JSFunction", + "value": "function errorHandler(err) {}" + } + }, + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-06-28T07:32:16.000Z", + "updated_at": "2023-01-19T03:29:11.000Z" + }, + { + "id": 135, + "name": "getAllMaterialList", + "data": { + "columns": [ + { + "name": "id", + "title": "id", + "field": "id", + "type": "string", + "format": {} + }, + { + "name": "name", + "title": "name", + "field": "name", + "type": "string", + "format": {} + }, + { + "name": "framework", + "title": "framework", + "field": "framework", + "type": "string", + "format": { + "required": true + } + }, + { + "name": "components", + "title": "components", + "field": "components", + "type": "string", + "format": {} + }, + { + "name": "content", + "title": "content", + "field": "content", + "type": "string", + "format": {} + }, + { + "name": "url", + "title": "url", + "field": "url", + "type": "string", + "format": {} + }, + { + "name": "published_at", + "title": "published_at", + "field": "published_at", + "type": "string", + "format": {} + }, + { + "name": "created_at", + "title": "created_at", + "field": "created_at", + "type": "string", + "format": {} + }, + { + "name": "updated_at", + "title": "updated_at", + "field": "updated_at", + "type": "string", + "format": {} + }, + { + "name": "published", + "title": "published", + "field": "published", + "type": "string", + "format": {} + }, + { + "name": "last_build_info", + "title": "last_build_info", + "field": "last_build_info", + "type": "string", + "format": {} + }, + { + "name": "tenant", + "title": "tenant", + "field": "tenant", + "type": "string", + "format": {} + }, + { + "name": "version", + "title": "version", + "field": "version", + "type": "string", + "format": {} + }, + { + "name": "description", + "title": "description", + "field": "description", + "type": "string", + "format": {} + } + ], + "type": "array", + "data": [ + { + "id": "f37123ec", + "url": "", + "name": "ng-material", + "tenant": "", + "content": "", + "version": "1.0.0", + "framework": "Angular", + "published": "", + "components": "", + "created_at": "2021-11-02T11:32:22.000Z", + "updated_at": "2021-11-02T11:32:22.000Z", + "description": "angular组件库物料", + "published_at": "2021-11-02T11:32:22.000Z", + "last_build_info": "", + "_id": "2a23e653" + }, + { + "id": "f37123ec", + "url": "", + "name": "ng-material", + "tenant": "", + "content": "", + "version": "1.0.0", + "framework": "Angular", + "published": "", + "components": "", + "created_at": "2021-11-02T11:32:22.000Z", + "updated_at": "2021-11-02T11:32:22.000Z", + "description": "angular组件库物料", + "published_at": "2021-11-02T11:32:22.000Z", + "last_build_info": "", + "_id": "06b253be" + }, + { + "id": "f37123ec", + "url": "", + "name": "ng-material", + "tenant": "", + "content": "", + "version": "1.0.0", + "framework": "Angular", + "published": "", + "components": "", + "created_at": "2021-11-02T11:32:22.000Z", + "updated_at": "2021-11-02T11:32:22.000Z", + "description": "angular组件库物料", + "published_at": "2021-11-02T11:32:22.000Z", + "last_build_info": "", + "_id": "c55a41ed" + }, + { + "id": "f37123ec", + "url": "", + "name": "ng-material", + "tenant": "", + "content": "", + "version": "1.0.0", + "framework": "Angular", + "published": "", + "components": "", + "created_at": "2021-11-02T11:32:22.000Z", + "updated_at": "2021-11-02T11:32:22.000Z", + "description": "angular组件库物料", + "published_at": "2021-11-02T11:32:22.000Z", + "last_build_info": "", + "_id": "f37123ec" + }, + { + "id": "7a63c1a2", + "url": "", + "name": "tiny-vue", + "tenant": "", + "content": "Tiny Vue物料", + "version": "1.0.0", + "framework": "Vue", + "published": "", + "components": "", + "created_at": "", + "updated_at": "", + "description": "Tiny Vue物料", + "published_at": "", + "last_build_info": "", + "_id": "7a63c1a2" + } + ], + "options": { + "uri": "", + "method": "GET" + }, + "willFetch": { + "type": "JSFunction", + "value": "function willFetch(option) {\n return option \n}" + }, + "dataHandler": { + "type": "JSFunction", + "value": "function dataHandler(data) { \n return data \n}" + }, + "shouldFetch": { + "type": "JSFunction", + "value": "function shouldFetch(option) {\n return true \n}" + }, + "errorHandler": { + "type": "JSFunction", + "value": "function errorHandler(err) {}" + } + }, + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-06-29T00:57:50.000Z", + "updated_at": "2023-05-15T02:37:12.000Z" + }, + { + "id": 139, + "name": "treedata", + "data": { + "data": [ + { + "label": "level111", + "value": "111", + "id": "f6609643", + "pid": "", + "_RID": "row_4" + }, + { + "label": "level1-son", + "value": "111-1", + "id": "af1f937f", + "pid": "f6609643", + "_RID": "row_5" + }, + { + "label": "level222", + "value": "222", + "id": "28e3709c", + "pid": "", + "_RID": "row_6" + }, + { + "label": "level2-son", + "value": "222-1", + "id": "6b571bef", + "pid": "28e3709c", + "_RID": "row_5" + }, + { + "id": "6317c2cc", + "pid": "fdfa", + "label": "fsdfaa", + "value": "fsadf", + "_RID": "row_6" + }, + { + "id": "9cce369f", + "pid": "test", + "label": "test1", + "value": "001" + } + ], + "type": "tree" + }, + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-06-30T06:13:57.000Z", + "updated_at": "2022-07-29T03:14:55.000Z" + }, + { + "id": 150, + "name": "componentList", + "data": { + "data": [ + { + "_RID": "row_1", + "name": "表单", + "isSelected": "true", + "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据" + }, + { + "name": "按钮", + "isSelected": "false", + "description": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型" + }, + { + "id": "490f8a00", + "_RID": "row_3", + "name": "表单项", + "framework": "", + "materials": "", + "description": "Form 组件下的 FormItem 配置" + }, + { + "id": "c259b8b3", + "_RID": "row_4", + "name": "开关", + "framework": "", + "materials": "", + "description": "关闭或打开" + }, + { + "id": "083ed9c7", + "_RID": "row_5", + "name": "互斥按钮组", + "framework": "", + "materials": "", + "description": "以按钮组的方式出现,常用于多项类似操作" + }, + { + "id": "09136cea", + "_RID": "row_6", + "name": "提示框", + "framework": "", + "materials": "", + "description": "Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画" + }, + { + "id": "a63b57d5", + "_RID": "row_7", + "name": "文字提示框", + "framework": "", + "materials": "", + "description": "动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信" + }, + { + "id": "a0f6e8a3", + "_RID": "row_8", + "name": "树", + "framework": "", + "materials": "", + "description": "可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单" + }, + { + "id": "d1aa18fc", + "_RID": "row_9", + "name": "分页", + "framework": "", + "materials": "", + "description": "当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件" + }, + { + "id": "ca49cc52", + "_RID": "row_10", + "name": "表格", + "framework": "", + "materials": "", + "description": "提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等" + }, + { + "id": "4e20ecc9", + "name": "搜索框", + "framework": "", + "materials": "", + "description": "指定条件对象进行搜索数据" + }, + { + "id": "6b093ee5", + "name": "折叠面板", + "framework": "", + "materials": "", + "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作" + }, + { + "id": "0a09abc0", + "name": "对话框", + "framework": "", + "materials": "", + "description": "模态对话框,在浮层中显示,引导用户进行相关操作" + }, + { + "id": "f814b901", + "name": "标签页签项", + "framework": "", + "materials": "", + "description": "tab页签" + }, + { + "id": "c5ae797c", + "name": "单选", + "framework": "", + "materials": "", + "description": "用于配置不同场景的选项,在一组备选项中进行单选" + }, + { + "id": "33d0c590", + "_RID": "row_13", + "name": "弹出编辑", + "framework": "", + "materials": "", + "description": "该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件" + }, + { + "id": "16711dfa", + "_RID": "row_14", + "name": "下拉框", + "framework": "", + "materials": "", + "description": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件" + }, + { + "id": "a9fd190a", + "_RID": "row_15", + "name": "折叠面板项", + "framework": "", + "materials": "", + "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作" + }, + { + "id": "a7dfa9ec", + "_RID": "row_16", + "name": "复选框", + "framework": "", + "materials": "", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选" + }, + { + "id": "d4bb8330", + "name": "输入框", + "framework": "", + "materials": "", + "description": "通过鼠标或键盘输入字符" + }, + { + "id": "ced3dc83", + "name": "时间线", + "framework": "", + "materials": "", + "description": "时间线" + } + ], + "type": "array", + "columns": [ + { + "name": "name", + "type": "string", + "field": "name", + "title": "name", + "format": { + "max": 0, + "min": 0, + "dateTime": false, + "required": false, + "stringType": "" + } + }, + { + "name": "description", + "type": "string", + "field": "description", + "title": "description", + "format": { + "max": 0, + "min": 0, + "dateTime": false, + "required": false, + "stringType": "" + } + }, + { + "name": "isSelected", + "type": "string", + "field": "isSelected", + "title": "isSelected", + "format": { + "max": 0, + "min": 0, + "dateTime": false, + "required": false, + "stringType": "" + } + } + ], + "options": { + "uri": "http://localhost:9090/assets/json/bundle.json", + "method": "GET" + }, + "willFetch": { + "type": "JSFunction", + "value": "function willFetch(option) {\n return option \n}" + }, + "dataHandler": { + "type": "JSFunction", + "value": "function dataHandler(data) { \n return data \n}" + }, + "shouldFetch": { + "type": "JSFunction", + "value": "function shouldFetch(option) {\n return true \n}" + }, + "errorHandler": { + "type": "JSFunction", + "value": "function errorHandler(err) {}" + } + }, + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-07-04T02:20:07.000Z", + "updated_at": "2022-07-04T06:25:29.000Z" + }, + { + "id": 151, + "name": "selectedComponents", + "data": { + "columns": [ + { + "name": "name", + "title": "name", + "field": "name", + "type": "string", + "format": { + "required": false, + "stringType": "", + "min": 0, + "max": 0, + "dateTime": false + } + }, + { + "name": "description", + "title": "description", + "field": "description", + "type": "string", + "format": { + "required": false, + "stringType": "", + "min": 0, + "max": 0, + "dateTime": false + } + }, + { + "name": "isSelected", + "title": "isSelected", + "field": "isSelected", + "type": "string", + "format": { + "required": false, + "stringType": "", + "min": 0, + "max": 0, + "dateTime": false + } + } + ], + "type": "array", + "data": [ + { + "name": "标签页", + "description": "分隔内容上有关联但属于不同类别的数据集合", + "isSelected": "true", + "_RID": "row_2" + }, + { + "name": "布局列", + "description": "列配置信息", + "isSelected": "true", + "id": "76a7080a", + "_RID": "row_4" + }, + { + "name": "日期选择器", + "description": "用于设置/选择日期,包括年月/年月日/年月日时分/年月日时分秒日期格式", + "isSelected": "true", + "id": "76b20d73", + "_RID": "row_1" + }, + { + "name": "走马灯", + "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现", + "isSelected": "true", + "id": "4c884c3d" + } + ] + }, + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-07-04T03:04:05.000Z", + "updated_at": "2022-07-04T03:43:40.000Z" + } + ], "extension": [ { "id": 176, @@ -1057,7 +1724,7 @@ "type": "function", "content": { "type": "JSFunction", - "value": "function util() {\r\n console.log(3211)\r\n}" + "value": "function test() {\r\n return 'test'\r\n}" }, "app": 918, "category": "utils", @@ -3227,6 +3894,9 @@ "mode": null, "block_id": 989, "version": "1.0.0", + "publishConfig": { + "access": "public" + }, "i18n": null, "created_app": null, "content_blocks": null @@ -3315,7 +3985,7 @@ "readOnly": false, "disabled": false, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": { "modelValue": "MT0526-React 1.0" } @@ -3465,7 +4135,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -3484,7 +4154,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -3581,7 +4251,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -3601,7 +4271,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -3620,7 +4290,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -3640,7 +4310,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -3834,7 +4504,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -3864,7 +4534,7 @@ ], "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -3883,7 +4553,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -3903,7 +4573,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -3923,7 +4593,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -3943,7 +4613,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -3971,7 +4641,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -3991,7 +4661,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -4212,7 +4882,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -4232,7 +4902,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -4303,7 +4973,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -4341,7 +5011,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -4361,7 +5031,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -4380,7 +5050,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -4399,7 +5069,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -4418,7 +5088,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -4437,7 +5107,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -4456,7 +5126,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -4475,7 +5145,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -4494,7 +5164,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -4513,7 +5183,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -4532,7 +5202,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -4551,7 +5221,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -4570,7 +5240,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -4589,7 +5259,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -4761,7 +5431,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -4833,7 +5503,7 @@ "defaultValue": "提示信息", "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -4850,7 +5520,7 @@ "defaultValue": true, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -4866,7 +5536,7 @@ }, "defaultValue": true, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -4991,7 +5661,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -5033,7 +5703,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": { "min": -12, "max": 12 @@ -5055,7 +5725,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": { "max": 12 } @@ -5076,7 +5746,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": { "min": 0, "max": 12 @@ -5098,7 +5768,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": { "min": 1, "max": 12 @@ -5120,7 +5790,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": { "min": 1, "max": 12 @@ -5142,7 +5812,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": { "min": 1, "max": 12 @@ -5164,7 +5834,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": { "min": 1, "max": 12 @@ -5186,7 +5856,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": { "min": 1, "max": 12 @@ -5326,7 +5996,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -5345,7 +6015,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -5364,7 +6034,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -5513,7 +6183,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -5533,7 +6203,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -5553,7 +6223,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -5572,7 +6242,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -5592,7 +6262,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": { "value": "total,sizes,prev, pager, next" } @@ -5777,7 +6447,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -5796,7 +6466,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -5815,7 +6485,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -5834,7 +6504,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -5982,7 +6652,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6001,7 +6671,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6020,7 +6690,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6039,7 +6709,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6195,7 +6865,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -6214,7 +6884,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6355,7 +7025,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6374,7 +7044,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6393,7 +7063,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6412,7 +7082,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6574,7 +7244,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6594,7 +7264,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -6614,7 +7284,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6634,7 +7304,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -6647,7 +7317,7 @@ { "name": "1", "label": { - "zh_CN": "其他配置" + "zh_CN": "其他" }, "content": [ { @@ -6662,7 +7332,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -6682,7 +7352,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -6702,7 +7372,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} } }, @@ -6718,7 +7388,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -6748,7 +7418,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -6960,7 +7630,7 @@ }, "cols": 12, "widget": { - "component": "MetaLayoutGrid", + "component": "LayoutGridConfigurator", "props": {} }, "description": { @@ -6980,7 +7650,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -7014,7 +7684,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -7033,7 +7703,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -7052,7 +7722,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -7182,7 +7852,7 @@ "defaultValue": "标签", "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -7202,7 +7872,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -7221,7 +7891,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -7241,7 +7911,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } } @@ -7447,7 +8117,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -7466,7 +8136,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -7485,7 +8155,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -7504,7 +8174,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -7523,7 +8193,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -7561,7 +8231,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -7580,7 +8250,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -7610,7 +8280,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -7629,7 +8299,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -7648,7 +8318,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -7875,7 +8545,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } }, @@ -7891,7 +8561,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -7921,7 +8591,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaBindI18n", + "component": "I18nConfigurator", "props": {} }, "description": { @@ -7940,7 +8610,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -7974,7 +8644,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -7993,7 +8663,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaBindI18n", + "component": "I18nConfigurator", "props": {} }, "description": { @@ -8012,7 +8682,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -8031,7 +8701,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -8050,7 +8720,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -8084,7 +8754,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -8103,7 +8773,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -8406,7 +9076,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -8426,7 +9096,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -8446,7 +9116,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -8466,7 +9136,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -8486,7 +9156,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -8517,7 +9187,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } }, @@ -8533,7 +9203,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} } }, @@ -8549,7 +9219,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -8907,7 +9577,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } }, @@ -8923,7 +9593,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } }, @@ -8939,7 +9609,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -8965,7 +9635,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } }, @@ -8981,7 +9651,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } }, @@ -8997,7 +9667,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} } }, @@ -9013,7 +9683,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} } }, @@ -9029,7 +9699,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } }, @@ -9045,7 +9715,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} } }, @@ -9061,7 +9731,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} } } @@ -9255,7 +9925,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -9275,7 +9945,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -9295,7 +9965,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -9315,7 +9985,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -9334,7 +10004,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -9354,7 +10024,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -9374,7 +10044,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -9394,7 +10064,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": { "modelValue": true } @@ -9415,7 +10085,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": { "modelValue": true } @@ -9436,7 +10106,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -9611,7 +10281,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -9631,7 +10301,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -9650,7 +10320,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -9670,7 +10340,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -9690,7 +10360,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -9710,7 +10380,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -9904,7 +10574,7 @@ "readOnly": false, "disabled": false, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -9932,7 +10602,7 @@ "readOnly": false, "disabled": false, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -9960,7 +10630,7 @@ "readOnly": false, "disabled": false, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -9979,7 +10649,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -10013,7 +10683,7 @@ ], "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -10033,7 +10703,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -10201,7 +10871,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -10220,7 +10890,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -10239,7 +10909,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -10377,7 +11047,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -10414,7 +11084,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -10433,7 +11103,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -10462,7 +11132,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -10481,7 +11151,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -10500,7 +11170,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -10519,7 +11189,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -10745,7 +11415,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -10764,7 +11434,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -10784,7 +11454,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -10803,7 +11473,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -10823,7 +11493,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -10842,7 +11512,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -10876,7 +11546,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -10914,7 +11584,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -10934,7 +11604,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -11240,7 +11910,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": { "language": "json" } @@ -11277,7 +11947,7 @@ } }, "widget": { - "component": "MetaBindI18n", + "component": "I18nConfigurator", "props": {} } }, @@ -11291,7 +11961,7 @@ } }, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } }, @@ -11305,7 +11975,7 @@ } }, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} } }, @@ -11319,7 +11989,7 @@ } }, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": {} } }, @@ -11333,7 +12003,7 @@ } }, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -11386,7 +12056,7 @@ } }, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": { "dataType": "JSFunction" } @@ -11403,7 +12073,7 @@ }, "labelPosition": "none", "widget": { - "component": "MetaJsSlot", + "component": "JsSlotConfigurator", "props": { "slots": ["header", "default"] } @@ -11421,7 +12091,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -11461,7 +12131,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": { "language": "json" } @@ -11483,7 +12153,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -11502,7 +12172,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -11530,7 +12200,7 @@ } ], "widget": { - "component": "MetaArrayItem", + "component": "ArrayItemConfigurator", "props": { "type": "object", "textField": "title", @@ -11558,7 +12228,7 @@ "onChange": "this.delProp('data')", "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": { "name": "fetchData" } @@ -11584,7 +12254,7 @@ } }, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": { "name": "pager" } @@ -11605,7 +12275,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -11625,7 +12295,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": { "placeholder": "比如:id" } @@ -11647,7 +12317,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": { "dataType": "JSExpression" } @@ -11669,7 +12339,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -11689,7 +12359,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -11708,7 +12378,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -11728,7 +12398,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -11748,7 +12418,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} } } @@ -11756,7 +12426,7 @@ }, { "label": { - "zh_CN": "其他属性" + "zh_CN": "其他" }, "description": { "zh_CN": "其他属性" @@ -11780,7 +12450,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -11800,7 +12470,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -11820,7 +12490,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -11840,7 +12510,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -11860,7 +12530,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -11880,7 +12550,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -11900,7 +12570,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -12205,7 +12875,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -12224,7 +12894,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -12258,7 +12928,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -12277,7 +12947,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -12296,7 +12966,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -12315,7 +12985,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -12334,7 +13004,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -12353,7 +13023,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -12372,7 +13042,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -12391,7 +13061,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -12410,7 +13080,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -12429,7 +13099,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -12448,7 +13118,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -12467,7 +13137,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -12486,7 +13156,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -12505,7 +13175,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -12524,7 +13194,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -12543,7 +13213,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -12784,7 +13454,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": { "dataType": "Array" } @@ -12806,7 +13476,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -12833,7 +13503,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -12852,7 +13522,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -12883,7 +13553,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -13086,7 +13756,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -13106,7 +13776,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -13126,7 +13796,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -13146,7 +13816,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -13166,7 +13836,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -13185,7 +13855,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": { "language": "json" } @@ -13207,7 +13877,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -13235,7 +13905,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -13255,7 +13925,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -13275,7 +13945,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -13295,7 +13965,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -13583,7 +14253,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -13602,7 +14272,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -13636,7 +14306,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -13655,7 +14325,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -13674,7 +14344,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -13830,7 +14500,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -13864,7 +14534,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -13883,7 +14553,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -13902,7 +14572,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -13932,7 +14602,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -13951,7 +14621,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -13970,7 +14640,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -13989,7 +14659,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14008,7 +14678,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -14038,7 +14708,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -14229,7 +14899,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -14249,7 +14919,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -14269,7 +14939,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14289,7 +14959,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14316,7 +14986,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -14336,7 +15006,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -14356,7 +15026,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -14376,7 +15046,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -14396,7 +15066,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14416,7 +15086,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14626,7 +15296,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -14660,7 +15330,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -14679,7 +15349,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14698,7 +15368,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -14735,7 +15405,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14754,7 +15424,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14773,7 +15443,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -14792,7 +15462,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -14811,7 +15481,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14830,7 +15500,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -14849,7 +15519,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -14868,7 +15538,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -14887,7 +15557,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14906,7 +15576,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -14925,7 +15595,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -14944,7 +15614,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -14963,7 +15633,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -14997,7 +15667,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -15016,7 +15686,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -15035,7 +15705,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -15054,7 +15724,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -15112,7 +15782,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -15131,7 +15801,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -15150,7 +15820,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -15169,7 +15839,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -15380,7 +16050,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -15399,7 +16069,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -15418,7 +16088,7 @@ "disabled": false, "cols": 6, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -15452,7 +16122,7 @@ } }, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } }, @@ -15466,7 +16136,7 @@ } }, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} } }, @@ -15480,7 +16150,7 @@ } }, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": {} } } @@ -15501,7 +16171,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { @@ -15547,7 +16217,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -15566,7 +16236,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, "description": { @@ -15585,7 +16255,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -15843,7 +16513,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -15862,7 +16532,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -15881,7 +16551,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -15900,7 +16570,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -15919,7 +16589,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -15938,7 +16608,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -15957,7 +16627,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -15976,7 +16646,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -16014,305 +16684,316 @@ "description": "2023.3.9", "components": [ { - "id": 52, - "version": "0.1.16", + "id": 1, + "version": "2.4.2", "name": { - "zh_CN": "走马灯子项" + "zh_CN": "输入框" }, - "component": "TinyCarouselItem", - "icon": "carouselitem", - "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。", + "component": "ElInput", + "icon": "input", + "description": "通过鼠标或键盘输入字符", "doc_url": "", - "screenshot": "screenshoot", - "tags": "tiny-carousel-item", + "screenshot": "", + "tags": "", "keywords": "", "dev_mode": "proCode", "npm": { - "package": "@opentiny/vue", - "exportName": "CarouselItem", - "version": "0.1.16", - "destructuring": true + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElInput" }, - "group": "component", - "category": "容器组件", - "priority": 2, - "snippets": [], - "schema_fragment": { + "group": "表单组件", + "category": "element-plus", + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "isPopper": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["type", "size"] + }, + "contextMenu": { + "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], + "disable": [] + }, + "invalidity": [""], + "clickCapture": true, + "framework": "Vue" + }, + "schema": { "properties": [ { + "name": "0", "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } + "zh_CN": "基础属性" }, "content": [ { - "property": "name", + "property": "modelValue", "label": { "text": { - "zh_CN": "幻灯片的名字,可用作 setActiveItem 的参数" + "zh_CN": "modelValue" } }, + "description": { + "zh_CN": "绑定值" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} - }, - "description": { - "zh_CN": "" } }, { - "property": "title", + "property": "size", "label": { "text": { - "zh_CN": "幻灯片的标题" + "zh_CN": "size" } }, + "description": { + "zh_CN": "尺寸" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "default", "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "default", + "value": "default" + }, + { + "label": "small", + "value": "small" + } + ] + } } - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": [""] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-06-23T12:05:38.000Z", - "updated_at": "2022-06-27T06:51:25.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": null, - "library": null - }, - { - "id": 48, - "version": "0.1.17", - "name": { - "zh_CN": "复选框按钮" - }, - "component": "TinyCheckboxButton", - "icon": "checkboxbutton", - "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", - "doc_url": "", - "screenshot": "screenshot", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "CheckboxButton", - "version": "0.1.17", - "destructuring": true - }, - "group": "component", - "category": "表单组件", - "priority": 2, - "snippets": [], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ + }, { - "property": "modelValue", + "property": "type", "label": { "text": { - "zh_CN": "绑定值" + "zh_CN": "type" } }, + "description": { + "zh_CN": "类型" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} - }, - "description": { - "zh_CN": "双向绑定的是否选中的状态值" - }, - "labelPosition": "left" + } }, { - "property": "disabled", + "property": "placeholder", "label": { "text": { - "zh_CN": "是否禁用" + "zh_CN": "placeholder" } }, + "description": { + "zh_CN": "输入框占位文本" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaSwitch", + "component": "I18nConfigurator", "props": {} }, - "description": { - "zh_CN": "" - } + "device": [] }, { - "property": "checked", + "property": "maxlength", "label": { "text": { - "zh_CN": "勾选" + "zh_CN": "maxlength" } }, + "description": { + "zh_CN": "最大输入长度" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "number", "widget": { - "component": "MetaSwitch", + "component": "NumberConfigurator", "props": {} }, - "description": { - "zh_CN": "当前是否勾选" - }, - "labelPosition": "left" + "device": [] }, { - "property": "text", + "property": "disabled", "label": { "text": { - "zh_CN": "文本" + "zh_CN": "disabled" } }, + "description": { + "zh_CN": "是否禁用" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} }, - "description": { - "zh_CN": "按钮文本" - }, - "labelPosition": "left" + "device": [] } - ] + ], + "description": { + "zh_CN": "" + } } ], "events": { - "onChange": { + "onUpdate:modelValue": { "label": { - "zh_CN": "勾选值改变后将触发" + "zh_CN": "双向绑定值改变时触发" }, "description": { - "zh_CN": "勾选值改变后将触发" + "zh_CN": "双向绑定值改变时触发" + } + }, + "onBlur": { + "label": { + "zh_CN": "输入框失去焦点时触发" + }, + "description": { + "zh_CN": "输入框失去焦点时触发" }, "type": "event", "functionInfo": { "params": [ { - "name": "value", - "type": "boolean", + "name": "event", + "type": "Object", "defaultValue": "", "description": { - "zh_CN": "选中项的值" + "zh_CN": "原生 event" } } ], "returns": {} }, "defaultValue": "" + } + }, + "slots": { + "prefix": { + "label": { + "zh_CN": "头部内容" + }, + "description": { + "zh_CN": "输入框头部内容,只对非 type='textarea' 有效" + } }, - "onUpdate:modelValue": { + "suffix": { "label": { - "zh_CN": "双向绑定的值改变时触发" + "zh_CN": "尾部内容" }, "description": { - "zh_CN": "是否选中的状态值改变时触发" + "zh_CN": "输入框尾部内容,只对非 type='textarea' 有效" + } + }, + "prepend": { + "label": { + "zh_CN": "前置内容" }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "boolean", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的是否选中的状态值" - } - } - ], - "returns": {} + "description": { + "zh_CN": "输入框前置内容,只对非 type='textarea' 有效" + } + }, + "append": { + "label": { + "zh_CN": "后置内容" }, - "defaultValue": "" + "description": { + "zh_CN": "输入框后置内容,只对非 type='textarea' 有效" + } } } + } + }, + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "按钮" + }, + "component": "ElButton", + "icon": "button", + "description": "常用的操作按钮", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElButton" }, + "group": "基础组件", + "category": "element-plus", "configure": { "loop": true, "condition": true, "styles": true, "isContainer": false, "isModal": false, + "isPopper": false, "nestingRule": { "childWhitelist": "", "parentWhitelist": "", @@ -16323,296 +17004,258 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": [""] + "properties": ["type", "size"] }, "contextMenu": { - "actions": ["remove", "copy", "insert", "updateAttr", "bindEevent", "createBlock"], + "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], "disable": [] }, - "slots": [], + "invalidity": [""], + "clickCapture": true, "framework": "Vue" }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-06-17T06:42:16.000Z", - "updated_at": "2022-06-27T08:31:33.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": null, - "library": null - }, - { - "id": 27, - "version": "0.1.16", - "name": { - "zh_CN": "树" - }, - "component": "TinyTree", - "icon": "tree", - "description": "可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单", - "doc_url": "", - "screenshot": "null", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Tree", - "version": "0.1.16", - "destructuring": true - }, - "group": "component", - "category": "数据组件", - "priority": 12, - "snippets": [ - { - "name": { - "zh_CN": "树" - }, - "icon": "tree", - "screenshot": "", - "snippetName": "TinyTree", - "schema": { - "componentName": "TinyTree", - "props": { - "data": [ - { - "label": "一级 1", - "children": [ - { - "label": "二级 1-1", - "children": [ - { - "label": "三级 1-1-1" - } - ] - } - ] + "schema": { + "properties": [ + { + "name": "0", + "label": { + "zh_CN": "基础属性" + }, + "content": [ + { + "property": "size", + "label": { + "text": { + "zh_CN": "size" + } }, - { - "label": "一级 2", - "children": [ - { - "label": "二级 2-1", - "children": [ - { - "label": "三级 2-1-1" - } - ] - }, - { - "label": "二级 2-2", - "children": [ - { - "label": "三级 2-2-1" - } - ] - } - ] + "description": { + "zh_CN": "尺寸" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "default", + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "default", + "value": "default" + }, + { + "label": "small", + "value": "small" + } + ] + } } - ] - } - } - } - ], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ + }, { - "property": "show-checkbox", + "property": "type", "label": { "text": { - "zh_CN": "多选" + "zh_CN": "type" } }, + "description": { + "zh_CN": "类型" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} + } + }, + { + "property": "plain", + "label": { + "text": { + "zh_CN": "plain" + } }, "description": { - "zh_CN": "设置接口是否可以多选" + "zh_CN": "是否为朴素按钮" }, - "labelPosition": "left" + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "string", + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "device": [] }, { - "property": "data", + "property": "text", "label": { "text": { - "zh_CN": "数据源" + "zh_CN": "text" } }, + "description": { + "zh_CN": "是否为文字按钮" + }, "required": true, "readOnly": false, "disabled": false, - "defaultValue": [ - { - "label": "一级 1", - "children": [ - { - "label": "二级 1-1" - } - ] - } - ], "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, - "description": { - "zh_CN": "可配置静态数据源和动态数据源" - } + "device": [] }, { - "property": "node-key", + "property": "bg", "label": { "text": { - "zh_CN": "唯一标识" + "zh_CN": "bg" } }, + "description": { + "zh_CN": "是否显示文字按钮背景颜色" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} }, - "description": { - "zh_CN": "节点唯一标识属性名称" - }, - "labelPosition": "left" + "device": [] }, { - "property": "icon-trigger-click-node", + "property": "link", "label": { "text": { - "zh_CN": "触发NodeClick 事件" + "zh_CN": "link" } }, + "description": { + "zh_CN": "是否为链接按钮" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, - "description": { - "zh_CN": "点击图标展开节点时是否触发 node-click 事件" - }, - "labelPosition": "left" + "device": [] }, { - "property": "expand-icon", + "property": "round", "label": { "text": { - "zh_CN": "展开图标" + "zh_CN": "round" } }, + "description": { + "zh_CN": "是否为圆角按钮" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, - "description": { - "zh_CN": "节点展开图标" - }, - "labelPosition": "left" + "device": [] }, { - "property": "shrink-icon", + "property": "circle", "label": { "text": { - "zh_CN": "收缩图标" + "zh_CN": "circle" } }, + "description": { + "zh_CN": "是否为圆形按钮" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, - "description": { - "zh_CN": "节点收缩的图标" - }, - "labelPosition": "left" - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "其他" - }, - "content": [ + "device": [] + }, { - "property": "check-on-click-node", + "property": "loading", "label": { "text": { - "zh_CN": "点击节点选中" + "zh_CN": "loading" } }, + "description": { + "zh_CN": "是否为加载中状态" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, - "description": { - "zh_CN": "是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点" - }, - "labelPosition": "left" + "device": [] }, { - "property": "filter-node-method", + "property": "disabled", "label": { "text": { - "zh_CN": "筛选函数" + "zh_CN": "disabled" } }, + "description": { + "zh_CN": "是否禁用" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, - "description": { - "zh_CN": "节点筛选函数" - }, - "labelPosition": "left" + "device": [] } ], "description": { @@ -16620,87 +17263,60 @@ } } ], - "events": { - "onCheck": { + "events": {}, + "slots": { + "default": { "label": { - "zh_CN": "勾选节点后的事件" + "zh_CN": "default" }, "description": { - "zh_CN": "勾选节点后的事件" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "data", - "type": "object", - "defaultValue": "", - "description": { - "zh_CN": "当前选中节点信息" - } - }, - { - "name": "currentNode", - "type": "object", - "defaultValue": "", - "description": { - "zh_CN": "树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性" - } - } - ], - "returns": {} - }, - "defaultValue": "" + "zh_CN": "自定义默认内容" + } }, - "onNodeClick": { + "loading": { "label": { - "zh_CN": "点击节点后的事件" + "zh_CN": "loading" }, "description": { - "zh_CN": "点击节点后的事件" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "data", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "当前选中节点信息" - } - }, - { - "name": "node", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性" - } - }, - { - "name": "vm", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "树组件实例" - } - } - ], - "returns": {} - }, - "defaultValue": "" + "zh_CN": "自定义加载中组件" + } } } + } + }, + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "表单" }, - "configure": { - "loop": false, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, + "component": "ElForm", + "icon": "form", + "description": "表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElForm" + }, + "group": "表单组件", + "category": "element-plus", + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "isPopper": false, "nestingRule": { - "childWhitelist": "", + "childWhitelist": ["ElFormItem"], "parentWhitelist": "", "descendantBlacklist": "", "ancestorWhitelist": "" @@ -16709,552 +17325,453 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["show-checkbox"] + "properties": ["inline", "label-width"] }, "contextMenu": { "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], "disable": [] }, + "invalidity": [""], + "clickCapture": true, "framework": "Vue" }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:31:12.000Z", - "updated_at": "2022-06-30T10:55:59.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": null, - "library": null - }, - { - "id": 24, - "version": "0.1.16", - "name": { - "zh_CN": "提示框" - }, - "component": "TinyPopover", - "icon": "popover", - "description": "Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画", - "doc_url": "", - "screenshot": "null", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Popover", - "version": "0.1.16", - "destructuring": true - }, - "group": "component", - "category": "提示组件", - "priority": 7, - "snippets": [ - { - "name": { - "zh_CN": "提示框" - }, - "icon": "popover", - "screenshot": "", - "snippetName": "TinyPopover", - "schema": { - "componentName": "TinyPopover", - "props": { - "width": 200, - "title": "弹框标题", - "trigger": "manual", - "modelValue": true - }, - "children": [ - { - "componentName": "Template", - "props": { - "slot": "reference" - }, - "children": [ - { - "componentName": "div", - "props": { - "placeholder": "触发源" - } - } - ] - }, - { - "componentName": "Template", - "props": { - "slot": "default" - }, - "children": [ - { - "componentName": "div", - "props": { - "placeholder": "提示内容" - } - } - ] - } - ] - } - } - ], - "schema_fragment": { + "schema": { "properties": [ { + "name": "0", "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } + "zh_CN": "基础属性" }, "content": [ { - "property": "modelValue", + "property": "model", "label": { "text": { - "zh_CN": "绑定值" + "zh_CN": "model" } }, + "description": { + "zh_CN": "表单数据对象" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "object", "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "双向绑定,手动控制是否可见的状态值" - }, - "labelPosition": "left" + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } }, { - "property": "placement", + "property": "rules", "label": { "text": { - "zh_CN": "位置" + "zh_CN": "rules" } }, + "description": { + "zh_CN": "表单验证规则" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "object", "widget": { - "component": "MetaSelect", + "component": "CodeConfigurator", "props": { - "options": [ - { - "label": "top", - "value": "top" - }, - { - "label": "top-start", - "value": "top-start" - }, - { - "label": "top-end", - "value": "top-end" - }, - { - "label": "bottom", - "value": "bottom" - }, - { - "label": "bottom-start", - "value": "bottom-start" - }, - { - "label": "bottom-end", - "value": "bottom-end" - }, - { - "label": "left", - "value": "left" - }, - { - "label": "left-start", - "value": "left-start" - }, - { - "label": "left-end", - "value": "left-end" - }, - { - "label": "right", - "value": "right" - }, - { - "label": "right-start", - "value": "right-start" - }, - { - "label": "right-end", - "value": "right-end" - } - ] + "language": "json" + } + } + }, + { + "property": "inline", + "label": { + "text": { + "zh_CN": "inline" } }, "description": { - "zh_CN": "" + "zh_CN": "行内表单模式" }, - "labelPosition": "left" + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } }, { - "property": "trigger", + "property": "label-position", "label": { "text": { - "zh_CN": "触发方式" + "zh_CN": "label-position" } }, + "description": { + "zh_CN": "表单域标签的位置, 当设置为 left 或 right 时,则也需要设置 label-width 属性" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "right", "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { - "label": "click", - "value": "click" - }, - { - "label": "focus", - "value": "focus" + "label": "left", + "value": "left" }, { - "label": "hover", - "value": "hover" + "label": "right", + "value": "right" }, { - "label": "manual", - "value": "manual" + "label": "top", + "value": "top" } ] } - }, - "description": { - "zh_CN": "触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click" } }, { - "property": "popper-class", + "property": "label-width", "label": { "text": { - "zh_CN": "自定义类" + "zh_CN": "label-width" } }, + "description": { + "zh_CN": "标签的长度,例如 '50px'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, - "description": { - "zh_CN": "为 popper 添加类名" - }, - "labelPosition": "left" + "device": [] }, { - "property": "visible-arrow", + "property": "label-suffix", "label": { "text": { - "zh_CN": "显示箭头" + "zh_CN": "label-suffix" } }, + "description": { + "zh_CN": "表单域标签的后缀" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, - "description": { - "zh_CN": "是否显示 Tooltip 箭头" - } + "device": [] }, { - "property": "append-to-body", + "property": "hide-required-asterisk", "label": { "text": { - "zh_CN": "添加到body上" + "zh_CN": "hide-required-asterisk" } }, + "description": { + "zh_CN": "是否隐藏必填字段标签旁边的红色星号" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "boolean", "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} - }, - "description": { - "zh_CN": "Popover弹窗是否添加到body上" } }, { - "property": "arrow-offset", + "property": "require-asterisk-position", "label": { "text": { - "zh_CN": "箭头的位置偏移" + "zh_CN": "星号的位置" } }, + "description": { + "zh_CN": "星号的位置" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "left", "widget": { - "component": "MetaNumber", - "props": {} - }, - "description": { - "zh_CN": "箭头的位置偏移,该属性的默认值为 0" + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "left", + "value": "left" + }, + { + "label": "right", + "value": "right" + } + ] + } } }, { - "property": "close-delay", + "property": "show-message", "label": { "text": { - "zh_CN": "隐藏延迟" + "zh_CN": "show-message" } }, + "description": { + "zh_CN": "是否显示校验错误信息" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": true, + "type": "boolean", "widget": { - "component": "MetaNumber", + "component": "SwitchConfigurator", "props": {} - }, - "description": { - "zh_CN": "触发方式为 hover 时的隐藏延迟,单位为毫秒" } }, { - "property": "content", + "property": "inline-message", "label": { "text": { - "zh_CN": "显示的内容" + "zh_CN": "inline-message" } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, "description": { - "zh_CN": "显示的内容,也可以通过 slot 传入 DOM" - } - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "禁用" - } + "zh_CN": "是否以行内形式展示校验信息" }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} - }, - "description": { - "zh_CN": "Popover 是否可用" } }, { - "property": "offset", + "property": "status-icon", "label": { "text": { - "zh_CN": "位置偏移量" + "zh_CN": "status-icon" } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": {} - }, "description": { - "zh_CN": "出现位置的偏移量" - } - }, - { - "property": "open-delay", - "label": { - "text": { - "zh_CN": "显示延迟" - } + "zh_CN": "是否在输入框中显示校验结果反馈图标" }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", "widget": { - "component": "MetaNumber", + "component": "SwitchConfigurator", "props": {} - }, - "description": { - "zh_CN": "触发方式为 hover 时的显示延迟,单位为毫秒" } }, { - "property": "popper-options", + "property": "validate-on-rule-change", "label": { "text": { - "zh_CN": "popper.js的参数" + "zh_CN": "validate-on-rule-change" } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, "description": { - "zh_CN": "popper.js 的参数" - } - }, - { - "property": "title", - "label": { - "text": { - "zh_CN": "标题" - } + "zh_CN": "是否在 rules 属性改变后立即触发一次验证" }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": true, + "type": "boolean", "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} - }, - "description": { - "zh_CN": "标题" } }, { - "property": "transform-origin", + "property": "size", "label": { "text": { - "zh_CN": "旋转中心点" + "zh_CN": "size" } }, + "description": { + "zh_CN": "用于控制该表单内组件的尺寸" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", + "defaultValue": "default", "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "组件的旋转中心点,组件的旋转中心点" + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "default", + "value": "default" + }, + { + "label": "small", + "value": "small" + } + ] + } } }, { - "property": "transition", + "property": "disabled", "label": { "text": { - "zh_CN": "定义渐变动画" + "zh_CN": "disabled" } }, + "description": { + "zh_CN": "是否禁用该表单内的所有组件。 如果设置为 true, 它将覆盖内部组件的 disabled 属性" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} }, - "description": { - "zh_CN": "该属性的默认值为 fade-in-linear" - } + "device": [] }, { - "property": "width", + "property": "scroll-to-error", "label": { "text": { - "zh_CN": "宽度" + "zh_CN": "scroll-to-error" } }, + "description": { + "zh_CN": "当校验失败时,滚动到第一个错误表单项" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", "widget": { - "component": "MetaNumber", + "component": "SwitchConfigurator", "props": {} }, - "description": { - "zh_CN": "宽度" - } + "device": [] } - ] + ], + "description": { + "zh_CN": "" + } } ], "events": { - "onHide": { + "onValidate": { "label": { - "zh_CN": "hide" + "zh_CN": "任一表单项被校验后触发" }, "description": { - "zh_CN": "隐藏时触发" + "zh_CN": "任一表单项被校验后触发" }, "type": "event", "functionInfo": { - "params": [null], + "params": [], "returns": {} - } - }, - "onShow": { - "label": { - "zh_CN": "show" - }, - "description": { - "zh_CN": "显示时触发" }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } + "defaultValue": "" } }, - "slots": [] + "slots": {} + } + }, + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "表单子项" }, + "component": "ElFormItem", + "icon": "formItem", + "description": "表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElFormItem" + }, + "group": "表单组件", + "category": "element-plus", "configure": { "loop": true, "condition": true, "styles": true, - "isContainer": true, + "isContainer": false, "isModal": false, + "isPopper": false, "nestingRule": { "childWhitelist": "", "parentWhitelist": "", @@ -17265,3485 +17782,1661 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["placement", "trigger"] + "properties": ["inline", "label-width"] }, "contextMenu": { - "actions": ["createBlock", "copy"], - "disable": ["copy", "remove"] + "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], + "disable": [] }, - "slots": ["reference"], - "isPopper": true, + "invalidity": [""], + "clickCapture": true, "framework": "Vue" }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:17:18.000Z", - "updated_at": "2023-05-09T03:47:40.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "hide", - "label": "hide", - "params": null, - "defaultValue": null, - "description": "隐藏时触发", - "_RID": "row_2" - }, - { - "eventName": "show", - "label": "show", - "params": null, - "defaultValue": null, - "description": "显示时触发", - "_RID": "row_1" - } - ], - "attrs": [], - "slots": [] - }, - "library": null - }, - { - "id": 25, - "version": "0.1.16", - "name": { - "zh_CN": "文字提示框" - }, - "component": "TinyTooltip", - "icon": "tooltip", - "description": "动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信", - "doc_url": "", - "screenshot": "null", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Tooltip", - "version": "3.2.0", - "destructuring": true - }, - "group": "component", - "category": "提示组件", - "priority": 11, - "snippets": [ - { - "name": { - "zh_CN": "文字提示框" - }, - "icon": "tooltip", - "screenshot": "", - "snippetName": "TinyTooltip", - "schema": { - "componentName": "TinyTooltip", - "props": { - "content": "Top Left 提示文字", - "placement": "top-start", - "manual": true, - "modelValue": true - }, - "children": [ - { - "componentName": "span", - "children": [ - { - "componentName": "div", - "props": { - "placeholder": "触发源" - } - } - ] - }, - { - "componentName": "Template", - "props": { - "slot": "content" - }, - "children": [ - { - "componentName": "span", - "children": [ - { - "componentName": "div", - "props": { - "placeholder": "触发源" - } - } - ] - } - ] - } - ] - } - } - ], - "schema_fragment": { + "schema": { "properties": [ { + "name": "0", "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 20, - "text": { - "zh_CN": "显示更多" - } + "zh_CN": "基础属性" }, "content": [ { - "property": "placement", + "property": "prop", "label": { "text": { - "zh_CN": "提示位置" + "zh_CN": "prop" } }, + "description": { + "zh_CN": "model 的键名。 它可以是一个属性的值(如 a.b.0 或 [a', 'b', '0'])。 在定义了 validate、resetFields 的方法时,该属性是必填的" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "top", - "value": "top" - }, - { - "label": "top-start", - "value": "top-start" - }, - { - "label": "top-end", - "value": "top-end" - }, - { - "label": "bottom", - "value": "bottom" - }, - { - "label": "bottom-start", - "value": "bottom-start" - }, - { - "label": "bottom-end", - "value": "bottom-end" - }, - { - "label": "left", - "value": "left" - }, - { - "label": "left-start", - "value": "left-start" - }, - { - "label": "left-end", - "value": "left-end" - }, - { - "label": "right", - "value": "right" - }, - { - "label": "right-start", - "value": "right-start" - }, - { - "label": "right-end", - "value": "right-end" - } - ] - } - }, - "description": { - "zh_CN": "Tooltip 的出现位置" - }, - "labelPosition": "left" + "component": "InputConfigurator", + "props": {} + } }, { - "property": "content", + "property": "label", "label": { "text": { - "zh_CN": "内容" + "zh_CN": "label" } }, + "description": { + "zh_CN": "标签文本" + }, "required": true, "readOnly": false, "disabled": false, - "defaultValue": "提示信息", "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} - }, - "description": { - "zh_CN": "显示的内容,也可以通过 slot#content 传入 DOM" } }, { - "property": "tabindex", + "property": "label-width", "label": { "text": { - "zh_CN": "tabindex" + "zh_CN": "label-width" } }, + "description": { + "zh_CN": "标签宽度,例如 '50px'。 可以使用 auto" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "number", + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaNumeric", + "component": "InputConfigurator", "props": {} - }, - "description": { - "zh_CN": "配置该元素,配置的属性会自动添加到该组件的触发原上" } }, { - "property": "hide-after", + "property": "required", "label": { "text": { - "zh_CN": "hide-after" + "zh_CN": "required" } }, + "description": { + "zh_CN": "是否为必填项,如不设置,则会根据校验规则确认" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "number", + "labelPosition": "top", + "type": "boolean", "widget": { - "component": "MetaNumeric", + "component": "SwitchConfigurator", "props": {} - }, - "description": { - "zh_CN": "Tooltip 出现后自动隐藏延时,单位毫秒,为 0 则不会自动隐藏" } }, { - "property": "enterable", + "property": "rules", "label": { "text": { - "zh_CN": "enterable" + "zh_CN": "rules" } }, + "description": { + "zh_CN": "表单验证规则, 更多内容可以参考async-validator" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "boolean", + "labelPosition": "top", + "type": "object", "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "鼠标是否可进入到 tooltip 中" + "component": "CodeConfigurator", + "props": { + "language": "json" + } } }, { - "property": "modelValue", + "property": "error", "label": { "text": { - "zh_CN": "是否可见" + "zh_CN": "error" } }, - "defaultValue": true, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, "description": { - "zh_CN": "状态是否可见" - } - }, - { - "property": "popper-class", - "label": { - "text": { - "zh_CN": "popper-class" - } + "zh_CN": "表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息" }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", + "labelPosition": "top", "type": "string", "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} - }, - "description": { - "zh_CN": "" } }, { - "property": "manual", + "property": "show-message", "label": { "text": { - "zh_CN": "手动控制" + "zh_CN": "show-message" } }, - "defaultValue": true, - "widget": { - "component": "MetaSwitch", - "props": {} - }, "description": { - "zh_CN": "手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效" - } - }, - { - "property": "visible-arrow", - "label": { - "text": { - "zh_CN": "visible-arrow" - } + "zh_CN": "是否显示校验错误信息" }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", + "labelPosition": "top", "type": "boolean", "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} - }, - "description": { - "zh_CN": "是否显示 Tooltip 箭头,popper.js 的参数" } }, { - "property": "open-delay", + "property": "inline-message", "label": { "text": { - "zh_CN": "open-delay" + "zh_CN": "inline-message" } }, + "description": { + "zh_CN": "是否在行内显示校验信息" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", + "labelPosition": "top", + "type": "boolean", "widget": { - "component": "MetaNumeric", + "component": "SwitchConfigurator", "props": {} - }, - "description": { - "zh_CN": "延迟出现,单位毫秒" } }, { - "property": "tiny_mode", + "property": "size", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "size" } }, + "description": { + "zh_CN": "用于控制该表单内组件的尺寸" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", + "labelPosition": "top", "type": "string", + "defaultValue": "default", "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { - "label": "pc", - "value": "pc" + "label": "large", + "value": "large" + }, + { + "label": "default", + "value": "default" + }, + { + "label": "small", + "value": "small" } ] } - }, - "description": { - "zh_CN": "" } }, { - "property": "popper-options", + "property": "for", "label": { "text": { - "zh_CN": "popper-options" + "zh_CN": "for" } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "labelPosition": "left", - "type": "object", - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, "description": { - "zh_CN": "popper.js 的参数;该属性的可选值为 参考 popper.js 文档" - } - }, - { - "property": "effect", - "label": { - "text": { - "zh_CN": "effect" - } + "zh_CN": "和原生标签相同能力" }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", + "labelPosition": "top", "type": "string", "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} - }, - "description": { - "zh_CN": "默认提供的主题;该属性的可选值为 dark/light" } }, { - "property": "visible", + "property": "validate-status", "label": { "text": { - "zh_CN": "visible" + "zh_CN": "validate-status" } }, + "description": { + "zh_CN": "formItem 校验的状态" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", + "labelPosition": "top", "type": "string", "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "提示的智能出现的模式;该属性的可选值为 auto/always" + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "error", + "value": "error" + }, + { + "label": "validating", + "value": "validating" + }, + { + "label": "success", + "value": "success" + } + ] + } } - }, + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": {}, + "slots": { + "label": { + "label": { + "zh_CN": "label" + }, + "description": { + "zh_CN": "标签位置显示的内容" + } + }, + "error": { + "label": { + "zh_CN": "error" + }, + "description": { + "zh_CN": "验证错误信息的显示内容" + } + } + } + } + }, + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "表单" + }, + "component": "ElTable", + "icon": "table", + "description": "用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElTable" + }, + "group": "表单组件", + "category": "element-plus", + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "isPopper": false, + "nestingRule": { + "childWhitelist": ["ElTableColumn"], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["inline", "label-width"] + }, + "contextMenu": { + "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], + "disable": [] + }, + "invalidity": [""], + "clickCapture": true, + "framework": "Vue" + }, + "schema": { + "properties": [ + { + "name": "0", + "label": { + "zh_CN": "基础属性" + }, + "content": [ { - "property": "transition", + "property": "data", "label": { "text": { - "zh_CN": "transition" + "zh_CN": "data" } }, + "description": { + "zh_CN": "显示的数据" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", + "labelPosition": "top", + "type": "array", "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "该属性的默认值为 tiny-fade-in-linea,r定义渐变动画" + "component": "CodeConfigurator", + "props": { + "language": "json" + } } }, { - "property": "append-to-body", + "property": "columns", "label": { "text": { - "zh_CN": "append-to-body" + "zh_CN": "表格列" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "disabled" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "labelPosition": "left", - "type": "string", - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "offset", - "label": { - "text": { - "zh_CN": "offset" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "labelPosition": "left", - "type": "string", - "widget": { - "component": "MetaNumeric", - "props": {} - }, - "description": { - "zh_CN": "出现位置的偏移量" - } - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["text", "", "size"] - }, - "contextMenu": { - "actions": ["createBlock", "copy", "remove", "insert", "updateAttr", "bindEevent"], - "disable": [] - }, - "slots": ["content"], - "isPopper": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:22:59.000Z", - "updated_at": "2023-05-13T08:55:35.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_22" - }, - { - "property": "effect", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "\t默认提供的主题;该属性的可选值为 dark/light", - "_RID": "row_21" - }, - { - "property": "visible-arrow", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_22" - }, - { - "property": "visible", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_23" - }, - { - "property": "tabindex", - "type": "number", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_24" - }, - { - "property": "hide-after", - "type": "number", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_25" - }, - { - "property": "enterable", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_26" - }, - { - "property": "popper-class", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_27" - }, - { - "property": "open-delay", - "type": "number", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_28" - }, - { - "property": "popper-options", - "type": "object", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_29" - }, - { - "property": "transition", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_30" - }, - { - "property": "offset", - "type": "number", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_31" - }, - { - "property": "disabled", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_32" - }, - { - "property": "append-to-body", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_33" - } - ], - "slots": [ - { - "slotName": "content", - "description": "\t内容", - "_RID": "row_20" - }, - { - "slotName": "default", - "description": "认插槽", - "_RID": "row_19" - } - ] - }, - "library": null - }, - { - "id": 30, - "version": "0.1.16", - "name": { - "zh_CN": "布局列" - }, - "component": "TinyCol", - "icon": "col", - "description": "列配置信息", - "doc_url": "", - "screenshot": "colscreenshot", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Col", - "version": "0.1.16", - "destructuring": true - }, - "group": "component", - "category": "布局组件", - "priority": 20, - "snippets": [ - { - "name": { - "zh_CN": "Col" - }, - "icon": "col", - "screenshot": "", - "snippetName": "TinyCol", - "schema": { - "componentName": "TinyCol", - "props": { - "span": 12, - "style": { - "height": "30px", - "border": "1px solid #ccc" - } - } - } - } - ], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "span", - "label": { - "text": { - "zh_CN": "栅格列格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ + "properties": [ + { + "label": { + "zh_CN": "默认分组" + }, + "content": [ { - "label": "整行", - "value": 12 + "property": "type", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "type" + } + }, + "description": { + "text": { + "zh_CN": "对应列的类型。 如果设置了selection则显示多选框; 如果设置了 index 则显示该行的索引(从 1 开始计算); 如果设置了 expand 则显示为一个可展开的按钮" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "selection", + "value": "selection" + }, + { + "label": "index", + "value": "index" + }, + { + "label": "expand", + "value": "expand" + } + ] + } + } }, { - "label": "6格", - "value": 6 + "property": "index", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "index" + } + }, + "description": { + "text": { + "zh_CN": "如果设置了 type=index,可以通过传递 index 属性来自定义索引" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": {} + } }, { - "label": "4格", - "value": 4 + "property": "label", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "label" + } + }, + "description": { + "text": { + "zh_CN": "显示的标题" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } }, { - "label": "3格", - "value": 3 + "property": "column-key", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "column-key" + } + }, + "description": { + "text": { + "zh_CN": "column 的 key, column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } }, { - "label": "1格", - "value": 1 - } - ] - } - }, - "description": { - "zh_CN": "当一行分为12格时,一列可占位多少格" - } - }, - { - "property": "move", - "label": { - "text": { - "zh_CN": "栅格左右移动格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": -12, - "max": 12 - } - }, - "description": { - "zh_CN": "栅格左右移动格数(正数向右,负数向左)" - } - }, - { - "property": "no", - "label": { - "text": { - "zh_CN": "排序编号" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "max": 12 - } - }, - "description": { - "zh_CN": "排序编号(row中启用order生效)" - } - }, - { - "property": "offset", - "label": { - "text": { - "zh_CN": "间隔格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 0, - "max": 12 - } - }, - "description": { - "zh_CN": "栅格左侧的间隔格数" - } - }, - { - "property": "xs", - "label": { - "text": { - "zh_CN": "超小屏格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 1, - "max": 12 - } - }, - "description": { - "zh_CN": "<768px 响应式栅格数" - } - }, - { - "property": "sm", - "label": { - "text": { - "zh_CN": "小屏格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 1, - "max": 12 - } - }, - "description": { - "zh_CN": "≥768px 响应式栅格数" - } - }, - { - "property": "md", - "label": { - "text": { - "zh_CN": "中屏格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 1, - "max": 12 - } - }, - "description": { - "zh_CN": "≥992px 响应式栅格数" - } - }, - { - "property": "lg", - "label": { - "text": { - "zh_CN": "大屏格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 1, - "max": 12 - } - }, - "description": { - "zh_CN": "≥1200px 响应式栅格数" - } - }, - { - "property": "xl", - "label": { - "text": { - "zh_CN": "超大屏格数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumber", - "props": { - "min": 1, - "max": 12 - } - }, - "description": { - "zh_CN": "≥1920px 响应式栅格数" - } - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "TinyRow", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["span"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:40:08.000Z", - "updated_at": "2022-07-15T02:22:42.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": null, - "library": null - }, - { - "id": 182, - "version": "0.1.16", - "name": { - "zh_CN": "下拉菜单子项" - }, - "component": "TinyDropdownItem", - "icon": "dropdown", - "description": "下拉菜单子项", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "DropdownItem", - "version": "0.1.16", - "destructuring": true - }, - "group": "component", - "category": "导航组件", - "priority": 2, - "snippets": [ - { - "name": { - "zh_CN": "下拉菜单子项" - }, - "icon": "dropdown", - "screenshot": "", - "snippetName": "TinyDropdownItem", - "schema": { - "componentName": "TinyDropdownItem", - "props": { - "label": "text" - } - } - } - ], - "schema_fragment": { - "properties": [ - { - "name": "0", - "label": { - "zh_CN": "基础信息" - }, - "content": [ - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "是否禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "icon", - "label": { - "text": { - "zh_CN": "图标" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "" - }, - "type": "object" - }, - { - "property": "label", - "label": { - "text": { - "zh_CN": "label" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "labelPosition": "left", - "type": "string", - "widget": { - "component": "MetaInput", - "props": {} - } - }, - { - "property": "divided", - "label": { - "text": { - "zh_CN": "显示分割线" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": [] - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "isPopper": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "TinyDropdownMenu", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": [""] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "invalidity": [""], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-11-09T03:31:38.000Z", - "updated_at": "2023-05-05T08:40:37.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "divided", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": "显示分割线", - "_RID": "row_1" - }, - { - "property": "disabled", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_3" - }, - { - "property": "icon", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "菜单项", - "_RID": "row_2" - }, - { - "property": "label", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "菜单项标签", - "_RID": "row_1" - }, - { - "property": "label", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "菜单项标签", - "_RID": "row_1" - } - ], - "slots": [ - { - "slotName": "default", - "description": null, - "_RID": "row_3" - } - ] - }, - "library": null - }, - { - "id": 29, - "version": "0.1.16", - "name": { - "zh_CN": "分页" - }, - "component": "TinyPager", - "icon": "pager", - "description": "当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件", - "doc_url": "", - "screenshot": "null", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Pager", - "version": "0.1.16", - "destructuring": true - }, - "group": "component", - "category": "数据组件", - "priority": 1, - "snippets": [ - { - "name": { - "zh_CN": "分页" - }, - "icon": "pager", - "screenshot": "", - "snippetName": "TinyPager", - "schema": { - "componentName": "TinyPager", - "props": { - "layout": "total, sizes, prev, pager, next", - "total": 100, - "pageSize": 10, - "currentPage": 1 - } - } - } - ], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 10, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "currentPage", - "label": { - "text": { - "zh_CN": "当前页数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumeric", - "props": {} - }, - "description": { - "zh_CN": "当前页数,支持 .sync 修饰符" - }, - "labelPosition": "left" - }, - { - "property": "pageSize", - "label": { - "text": { - "zh_CN": "每页条数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumeric", - "props": {} - }, - "description": { - "zh_CN": "每页显示条目个数" - }, - "labelPosition": "left" - }, - { - "property": "pageSizes", - "label": { - "text": { - "zh_CN": "可选每页条数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "设置可选择的每页显示条数" - } - }, - { - "property": "total", - "label": { - "text": { - "zh_CN": "总条数" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumeric", - "props": {} - }, - "description": { - "zh_CN": "数据总条数" - }, - "labelPosition": "left" - }, - { - "property": "layout", - "label": { - "text": { - "zh_CN": "布局" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": { - "value": "total,sizes,prev, pager, next" - } - }, - "description": { - "zh_CN": "组件布局,子组件名用逗号分隔" - }, - "labelPosition": "left" - }, - { - "property": "tiny_mode", - "label": { - "text": { - "zh_CN": "tiny_mode" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "labelPosition": "left", - "type": "string", - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - } - ] - } - }, - "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": { - "onCurrent-change": { - "label": { - "zh_CN": "切换页码触发事件" - }, - "description": { - "zh_CN": "\tcurrentPage 改变时会触发;arg1: 新的当前页的值" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onSize-change": { - "label": { - "zh_CN": "分页事件" - }, - "description": { - "zh_CN": "设置分页跳转后的事件;pageSize 改变时会触发;arg1: pageSize 新的当前值" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["text", "", "size"] - }, - "contextMenu": { - "actions": [], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:36:23.000Z", - "updated_at": "2023-03-10T06:45:28.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "current-change", - "label": "切换页码触发事件", - "params": null, - "defaultValue": null, - "description": "\tcurrentPage 改变时会触发;arg1: 新的当前页的值", - "_RID": "row_1" - }, - { - "eventName": "size-change", - "label": "分页事件", - "params": null, - "defaultValue": null, - "description": "设置分页跳转后的事件;pageSize 改变时会触发;arg1: pageSize 新的当前值", - "_RID": "row_2" - } - ], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_19" - } - ], - "slots": [] - }, - "library": null - }, - { - "id": 187, - "version": "3.1.0", - "name": { - "zh_CN": "访问受限页面" - }, - "component": "TinyPlusAccessdeclined", - "icon": "accessdeclined", - "description": "访问受限页面组件", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "tags": "", - "keywords": "受限", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "AccessDeclined", - "version": "3.4.1", - "destructuring": true - }, - "group": "component", - "category": "业务组件", - "priority": 1, - "snippets": [ - { - "name": { - "zh_CN": "访问受限页面" - }, - "icon": "accessdeclined", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "snippetName": "TinyPlusAccessdeclined", - "schema": { - "componentName": "TinyPlusAccessdeclined", - "props": { - "description": "非常抱歉,您尚未有该服务的访问权限,请联系管理员申请权限。", - "linkText": "返回华为云首页", - "linkHref": "" - } - } - } - ], - "schema_fragment": { - "properties": [ - { - "name": "0", - "label": { - "zh_CN": "基础信息" - }, - "content": [ - { - "property": "description", - "label": { - "text": { - "zh_CN": "description" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "linkText", - "label": { - "text": { - "zh_CN": "linkText" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "linkHref", - "label": { - "text": { - "zh_CN": "linkHref" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "image", - "label": { - "text": { - "zh_CN": "image" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "isPopper": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["text", "size"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "invalidity": [""], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-11-21T07:08:03.000Z", - "updated_at": "2023-01-18T06:35:58.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "description", - "label": null, - "params": null, - "defaultValue": null, - "description": null, - "_RID": "row_1" - } - ], - "attrs": [ - { - "property": "image", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_4" - }, - { - "property": "linkHref", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_3" - }, - { - "property": "linkText", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_2" - }, - { - "property": "description", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - } - ], - "slots": [] - }, - "library": null - }, - { - "id": 190, - "version": "3.1.0", - "name": { - "zh_CN": "冻结页面" - }, - "component": "TinyPlusFrozenPage", - "icon": "frozenpage", - "description": "冻结页面组件", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "tags": "", - "keywords": "冻结", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "FrozenPage", - "version": "3.4.1", - "destructuring": true - }, - "group": "component", - "category": "业务组件", - "priority": 4, - "snippets": [ - { - "name": { - "zh_CN": "冻结页面" - }, - "icon": "frozenpage", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "snippetName": "TinyPlusFrozenPage", - "schema": { - "componentName": "TinyPlusFrozenPage", - "props": { - "description": "非常抱歉,您尚未有该服务的访问权限,请联系管理员申请权限。", - "linkText": "返回华为云首页", - "linkHref": "" - } - } - } - ], - "schema_fragment": { - "properties": [ - { - "name": "0", - "label": { - "zh_CN": "基础信息" - }, - "content": [ - { - "property": "description", - "label": { - "text": { - "zh_CN": "description" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "linkText", - "label": { - "text": { - "zh_CN": "linkText" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "linkHref", - "label": { - "text": { - "zh_CN": "linkHref" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "image", - "label": { - "text": { - "zh_CN": "image" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": [] - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "isPopper": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["text", "size"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "invalidity": [""], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-11-22T08:56:31.000Z", - "updated_at": "2023-01-18T06:36:15.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "image", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_25" - }, - { - "property": "linkHref", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_24" - }, - { - "property": "linkText", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_23" - }, - { - "property": "description", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_22" - } - ], - "slots": [] - }, - "library": null - }, - { - "id": 191, - "version": "3.1.0", - "name": { - "zh_CN": "区域服务不支持页面" - }, - "component": "TinyPlusNonSupportRegion", - "icon": "nonsupportregion", - "description": "区域服务不支持页面组件", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "NonSupportRegion", - "version": "3.4.1", - "destructuring": true - }, - "group": "component", - "category": "业务组件", - "priority": 5, - "snippets": [ - { - "name": { - "zh_CN": "区域服务不支持页面" - }, - "icon": "nonsupportregion", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "snippetName": "TinyPlusNonSupportRegion", - "schema": { - "componentName": "TinyPlusNonSupportRegion", - "props": { - "regionData": { - "region": { - "displayName": "奥丁" - }, - "supportRegions": [ - { - "displayName": "华北-北京一", - "href": "1" - }, - { - "displayName": "华东-上海二", - "href": "1" - }, - { - "displayName": "华南-广州", - "href": "1" - } - ] - } - } - } - } - ], - "schema_fragment": { - "properties": [ - { - "name": "0", - "label": { - "zh_CN": "基础信息" - }, - "content": [ - { - "property": "regionData", - "label": { - "text": { - "zh_CN": "regionData" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "image", - "label": { - "text": { - "zh_CN": "image" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": [] - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "isPopper": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["text", "size"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "invalidity": [""], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-11-22T11:18:52.000Z", - "updated_at": "2023-01-18T06:36:24.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "image", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_21" - }, - { - "property": "regionData", - "type": "object", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_20" - }, - { - "property": "regionData", - "type": "object", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_20" - } - ], - "slots": [] - }, - "library": null - }, - { - "id": 189, - "version": "0.1.16", - "name": { - "zh_CN": "公测" - }, - "component": "TinyPlusBeta", - "icon": "beta", - "description": "公测组件", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "tags": "", - "keywords": "公测", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Beta", - "version": "3.4.1", - "destructuring": true - }, - "group": "component", - "category": "业务组件", - "priority": 3, - "snippets": [ - { - "name": { - "zh_CN": "公测" - }, - "icon": "beta", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "snippetName": "TinyPlusBeta", - "schema": {} - } - ], - "schema_fragment": { - "properties": [ - { - "name": "0", - "label": { - "zh_CN": "基础信息" - }, - "content": [ - { - "property": "applyUrl", - "label": { - "text": { - "zh_CN": "applyUrl" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "icon", - "label": { - "text": { - "zh_CN": "icon" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "intro", - "label": { - "text": { - "zh_CN": "intro" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "message", - "label": { - "text": { - "zh_CN": "message" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": [] - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "isPopper": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["text", "size"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "invalidity": [""], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-11-22T08:13:37.000Z", - "updated_at": "2023-01-18T06:36:53.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "message", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_4" - }, - { - "property": "intro", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_3" - }, - { - "property": "icon", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_2" - }, - { - "property": "applyUrl", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - } - ], - "slots": [] - }, - "library": null - }, - { - "id": 33, - "version": "0.1.13", - "name": { - "zh_CN": "搜索框" - }, - "component": "TinySearch", - "icon": "search", - "description": "指定条件对象进行搜索数据", - "doc_url": "", - "screenshot": "searchscreenshot", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Search", - "version": "0.1.13", - "destructuring": true - }, - "group": "component", - "category": "表单组件", - "priority": 2, - "snippets": [ - { - "name": { - "zh_CN": "搜索框" - }, - "icon": "search", - "screenshot": "", - "snippetName": "TinySearch", - "schema": { - "componentName": "TinySearch", - "props": { - "modelValue": "", - "placeholder": "输入关键词" - } - } - } - ], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "默认值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "双向绑定的搜索值" - }, - "labelPosition": "left" - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "是否被禁用" - }, - "labelPosition": "left" - }, - { - "property": "placeholder", - "label": { - "text": { - "zh_CN": "占位文本 " - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "输入框内的提示占位文本" - }, - "labelPosition": "left" - }, - { - "property": "clearable", - "label": { - "text": { - "zh_CN": "清空按钮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "设置显示清空图标按钮" - }, - "labelPosition": "left" - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "其他配置" - }, - "content": [ - { - "property": "mini", - "label": { - "text": { - "zh_CN": "迷你尺寸" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开" - }, - "labelPosition": "left" - }, - { - "property": "transparent", - "label": { - "text": { - "zh_CN": "透明模式" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false" - }, - "labelPosition": "left" - }, - { - "property": "isEnterSearch", - "label": { - "text": { - "zh_CN": "isEnterSearch" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - } - }, - { - "property": "tiny_mode", - "label": { - "text": { - "zh_CN": "tiny_mode" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ + "property": "prop", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "prop" + } + }, + "description": { + "text": { + "zh_CN": "字段名称 对应列内容的字段名, 也可以使用 property属性" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "width", + "type": "number", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "width" + } + }, + "description": { + "text": { + "zh_CN": "对应列的宽度" + } + }, + "widget": { + "component": "NumberConfigurator", + "props": {} + } + }, + { + "property": "min-width", + "type": "number", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "min-width" + } + }, + "description": { + "text": { + "zh_CN": "对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列" + } + }, + "widget": { + "component": "NumberConfigurator", + "props": {} + } + }, + { + "property": "fixed", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "fixed" + } + }, + "description": { + "text": { + "zh_CN": "列是否固定在左侧或者右侧。 true 表示固定在左侧" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "left", + "value": "left" + }, + { + "label": "right", + "value": "right" + } + ] + } + } + }, + { + "property": "sortable", + "type": "boolean", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "sortable" + } + }, + "description": { + "text": { + "zh_CN": "对应列是否可以排序" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "sort-method", + "type": "function", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "sort-method" + } + }, + "description": { + "text": { + "zh_CN": "指定数据按照哪个属性进行排序,仅当sortable设置为true的时候有效。 应该如同 Array.sort 那样返回一个 Number" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": {} + } + }, + { + "property": "sort-by", + "type": "array", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "sort-by" + } + }, + "description": { + "text": { + "zh_CN": "指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } + }, + { + "property": "sort-orders", + "type": "array", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "sort-orders" + } + }, + "description": { + "text": { + "zh_CN": "数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } + }, + { + "property": "resizable", + "type": "boolean", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "resizable" + } + }, + "description": { + "text": { + "zh_CN": "对应列是否可以通过拖动改变宽度(需要在 el-table 上设置 border 属性为真)" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "formatter", + "type": "function", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "formatter" + } + }, + "description": { + "text": { + "zh_CN": "用来格式化内容" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": {} + } + }, + { + "property": "show-overflow-tooltip", + "type": "boolean", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "show-overflow-tooltip" + } + }, + "description": { + "text": { + "zh_CN": "当内容过长被隐藏时显示 tooltip" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "align", + "type": "string", + "labelPosition": "top", + "defaultValue": "left", + "label": { + "text": { + "zh_CN": "align" + } + }, + "description": { + "text": { + "zh_CN": "对齐方式" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "left", + "value": "left" + }, + { + "label": "center", + "value": "center" + }, + { + "label": "right", + "value": "right" + } + ] + } + } + }, + { + "property": "header-align", + "type": "string", + "labelPosition": "top", + "defaultValue": "left", + "label": { + "text": { + "zh_CN": "header-align" + } + }, + "description": { + "text": { + "zh_CN": "表头对齐方式, 若不设置该项,则使用表格的对齐方式" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "left", + "value": "left" + }, + { + "label": "center", + "value": "center" + }, + { + "label": "right", + "value": "right" + } + ] + } + } + }, + { + "property": "class-name", + "type": "string", + "labelPosition": "top", + "defaultValue": "left", + "label": { + "text": { + "zh_CN": "class-name" + } + }, + "description": { + "text": { + "zh_CN": "列的 className" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "label-class-name", + "type": "string", + "labelPosition": "top", + "defaultValue": "left", + "label": { + "text": { + "zh_CN": "label-class-name" + } + }, + "description": { + "text": { + "zh_CN": "当前列标题的自定义类名" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "selectable", + "type": "function", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "selectable" + } + }, + "description": { + "text": { + "zh_CN": "仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": {} + } + }, + { + "property": "reserve-selection", + "type": "boolean", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "reserve-selection" + } + }, + "description": { + "text": { + "zh_CN": "数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, { - "label": "pc", - "value": "pc" + "property": "filters", + "type": "array", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "filters" + } + }, + "description": { + "text": { + "zh_CN": "数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } }, { - "label": "mobile", - "value": "mobile" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "button-text", - "label": { - "text": { - "zh_CN": "button-text" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "自定义搜索框按钮的文本内容" - } - } - ], - "description": { - "zh_CN": "" - } - } - ], - "events": { - "onSearch": { - "label": { - "zh_CN": "搜索的回调" - }, - "description": { - "zh_CN": "在展开状态点击搜索按钮时触发的回调函数;arg1:{Object 搜索类型},arg2:{String 当前input框中值}" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onMouseout": { - "label": { - "zh_CN": "鼠标离开" - }, - "description": { - "zh_CN": "鼠标离开时候触发该时间" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["clearable", "", "mini"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "createBlock", "bindEevent"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:47:45.000Z", - "updated_at": "2023-02-16T03:13:14.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "search", - "label": "搜索的回调", - "params": null, - "defaultValue": null, - "description": "在展开状态点击搜索按钮时触发的回调函数;arg1:{Object 搜索类型},arg2:{String 当前input框中值}", - "_RID": "row_1" - }, - { - "eventName": "mouseout", - "label": "鼠标离开", - "params": null, - "defaultValue": null, - "description": "鼠标离开时候触发该时间", - "_RID": "row_2" - } - ], - "attrs": [ - { - "property": "isEnterSearch", - "type": "boolean", - "defaultValue": "false", - "enumerateValue": null, - "title": "是否在按下键盘Enter键的时候触发search事件", - "_RID": "row_1" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - }, - { - "property": "button-text", - "type": "string", - "defaultValue": "搜索", - "enumerateValue": null, - "title": null, - "_RID": "row_2" - } - ], - "slots": [] - }, - "library": null - }, - { - "id": 23, - "version": "0.1.16", - "name": { - "zh_CN": "布局行" - }, - "component": "TinyRow", - "icon": "row", - "description": "定义 Layout 的行配置信息", - "doc_url": "", - "screenshot": "rowscreenshot", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Row", - "version": "0.1.16", - "destructuring": true - }, - "group": "component", - "category": "布局组件", - "priority": 2, - "snippets": [ - { - "name": { - "zh_CN": "Row" - }, - "icon": "row", - "screenshot": "", - "snippetName": "TinyRow", - "schema": { - "componentName": "TinyRow", - "props": {}, - "children": [ - { - "componentName": "TinyCol", - "props": { - "span": 3, - "style": "height:100%;" - }, - "children": [ - { - "componentName": "div", - "props": { - "style": "height: 100%;" - } - } - ] - }, - { - "componentName": "TinyCol", - "props": { - "span": 3, - "style": "height:100%;" - }, - "children": [ - { - "componentName": "div", - "props": { - "style": "height: 100%;" - } - } - ] - }, - { - "componentName": "TinyCol", - "props": { - "span": 3, - "style": "height:100%;" - }, - "children": [ - { - "componentName": "div", - "props": { - "style": "height: 100%;" - } - } - ] - }, - { - "componentName": "TinyCol", - "props": { - "span": 3, - "style": "height:100%;" - }, - "children": [ - { - "componentName": "div", - "props": { - "style": "height: 100%;" - } - } - ] - } - ] - } - } - ], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "layout", - "label": { - "text": { - "zh_CN": "layout" - } - }, - "cols": 12, - "widget": { - "component": "MetaLayoutGrid", - "props": {} - }, - "description": { - "zh_CN": "layout" - }, - "labelPosition": "none" - }, - { - "property": "align", - "label": { - "text": { - "zh_CN": "align" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ + "property": "filter-placement", + "type": "string", + "labelPosition": "top", + "label": { + "text": { + "zh_CN": "filter-placement" + } + }, + "description": { + "text": { + "zh_CN": "过滤弹出框的定位" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, { - "label": "top", - "value": "top" + "property": "filter-multiple", + "type": "string", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "filter-multiple" + } + }, + "description": { + "text": { + "zh_CN": "数据过滤的选项是否多选" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } }, { - "label": "middle", - "value": "middle" + "property": "filter-method", + "type": "function", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "filter-method" + } + }, + "description": { + "text": { + "zh_CN": "数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": {} + } }, { - "label": "bottom", - "value": "bottom" + "property": "filtered-value", + "type": "array", + "labelPosition": "top", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "filtered-value" + } + }, + "description": { + "text": { + "zh_CN": "选中的数据过滤项,如果需要自定义表头过滤的渲染方式,可能会需要此属性" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + } } ] } + ], + "widget": { + "component": "TableColumnsConfigurator", + "props": { + "type": "object", + "textField": "title", + "language": "json", + "buttonText": "编辑列配置", + "title": "编辑列配置", + "expand": true + } }, "description": { - "zh_CN": "" - } + "zh_CN": "表格列的配置信息" + }, + "labelPosition": "top" }, { - "property": "flex", + "property": "max-height", "label": { "text": { - "zh_CN": "flex" + "zh_CN": "max-height" } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, "description": { - "zh_CN": "" - } - }, - { - "property": "gutter", - "label": { - "text": { - "zh_CN": "gutter" - } + "zh_CN": "Table 的最大高度。" }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "number", "widget": { - "component": "MetaNumeric", + "component": "NumberConfigurator", "props": {} }, - "description": { - "zh_CN": "" - } + "device": [] }, { - "property": "tiny_mode", + "property": "height", "label": { "text": { - "zh_CN": "tiny_mode" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] + "zh_CN": "height" } }, "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": [] - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "TinyCol", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["flex", "align"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:02:47.000Z", - "updated_at": "2023-02-16T03:53:28.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_44" - } - ], - "slots": [] - }, - "library": null - }, - { - "id": 8, - "version": "0.1.16", - "name": { - "zh_CN": "表单项" - }, - "component": "TinyFormItem", - "icon": "formitem", - "description": "Form 组件下的 FormItem 配置", - "doc_url": "", - "screenshot": "img/logo.png", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "FormItem", - "version": "0.1.16", - "destructuring": true - }, - "group": "component", - "category": "表单组件", - "priority": 3, - "snippets": [{}], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "label", - "label": { - "text": { - "zh_CN": "标签文本" - } + "zh_CN": "Table 的高度, 默认为自动高度。 这个高度会设置为 Table 的 style.height 的值,Table 的高度会受控于外部样式。" }, "required": true, "readOnly": false, "disabled": false, - "defaultValue": "标签", "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, - "description": { - "zh_CN": "标签文本" - }, - "labelPosition": "left" + "device": [] }, { - "property": "prop", + "property": "stripe", "label": { "text": { - "zh_CN": "校验字段" + "zh_CN": "stripe" } }, + "description": { + "zh_CN": "是否为斑马纹 table" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} - }, - "description": { - "zh_CN": "表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的" } }, { - "property": "required", + "property": "border", "label": { "text": { - "zh_CN": "必填" + "zh_CN": "border" } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, "description": { - "zh_CN": "是否必填" - }, - "labelPosition": "left" - }, - { - "property": "validateIcon", - "label": { - "text": { - "zh_CN": "validateIcon" - } + "zh_CN": "是否带有纵向边框" }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} } }, { - "property": "tiny_mode", + "property": "size", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "size" } }, + "description": { + "zh_CN": "Table 的尺寸" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", + "labelPosition": "top", "type": "string", + "defaultValue": "default", "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { - "label": "pc", - "value": "pc" + "label": "large", + "value": "large" + }, + { + "label": "default", + "value": "default" }, { - "label": "mobile", - "value": "mobile" + "label": "small", + "value": "small" } ] } + } + }, + { + "property": "fit", + "label": { + "text": { + "zh_CN": "fit" + } }, "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "TinyForm", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": [""] - }, - "contextMenu": { - "actions": ["remove", "insert", "copy", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": ["label"], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-09T03:09:44.000Z", - "updated_at": "2023-03-10T06:41:50.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "validateIcon", - "type": "object", - "defaultValue": null, - "enumerateValue": null, - "title": "校验提示图标", - "_RID": "row_1" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_8" - } - ], - "slots": [] - }, - "library": null - }, - { - "id": 176, - "version": "0.1.16", - "name": { - "zh_CN": "警告" - }, - "component": "TinyAlert", - "icon": "alert", - "description": "警告", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Alert", - "version": "3.2.0", - "destructuring": true - }, - "group": "component", - "category": "提示组件", - "priority": 2, - "snippets": [ - { - "name": { - "zh_CN": "警告" - }, - "icon": "alert", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "snippetName": "TinyAlert", - "schema": { - "componentName": "TinyAlert", - "props": { - "description": "提示内容" - } - } - } - ], - "schema_fragment": { - "properties": [ - { - "name": "0", - "label": { - "zh_CN": "基础信息" - }, - "content": [ + "zh_CN": "列的宽度是否自撑开" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": true, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, { - "property": "show-icon", + "property": "show-header", "label": { "text": { - "zh_CN": "是否显示图标" + "zh_CN": "show-header" } }, + "description": { + "zh_CN": "是否显示表头" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": true, + "type": "boolean", "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} + } + }, + { + "property": "highlight-current-row", + "label": { + "text": { + "zh_CN": "highlight-current-row" + } }, "description": { - "zh_CN": "" + "zh_CN": "是否要高亮当前行" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", + "widget": { + "component": "SwitchConfigurator", + "props": {} } }, { - "property": "close-text", + "property": "current-row-key", "label": { "text": { - "zh_CN": "关闭按钮文本" + "zh_CN": "current-row-key" } }, + "description": { + "zh_CN": "当前行的 key,只写属性" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "type": "string", "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, - "description": { - "zh_CN": "" - } + "device": [] }, { - "property": "center", + "property": "row-class-name", "label": { "text": { - "zh_CN": "文字是否居中" + "zh_CN": "row-class-name" } }, + "description": { + "zh_CN": "行的 className" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, - "description": { - "zh_CN": "" - } + "device": [] }, { - "property": "description", + "property": "row-key", "label": { "text": { - "zh_CN": "提示内容" + "zh_CN": "row-key" } }, + "description": { + "zh_CN": "行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", "widget": { - "component": "MetaInput", + "component": "CodeConfigurator", "props": {} }, + "device": [] + }, + { + "property": "empty-text", + "label": { + "text": { + "zh_CN": "empty-text" + } + }, "description": { - "zh_CN": "" - } + "zh_CN": "空数据时显示的文本内容" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "labelPosition": "top", + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "device": [] }, { - "property": "type", + "property": "table-layout", "label": { "text": { - "zh_CN": "警告类型" + "zh_CN": "table-layout" } }, + "description": { + "zh_CN": "设置表格单元、行和列的布局方式" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": "fixed", "widget": { - "component": "MetaSelect", + "component": "InputConfigurator", "props": { "options": [ { - "label": "success", - "value": "success" - }, - { - "label": "warning", - "value": "warning" - }, - { - "label": "info", - "value": "info" + "label": "fixed", + "value": "fixed" }, { - "label": "error", - "value": "error" + "label": "auto", + "value": "auto" } ] } }, - "description": { - "zh_CN": "" - } + "device": [] }, { - "property": "closable", + "property": "scrollbar-always-on", "label": { "text": { - "zh_CN": "是否可以关闭" + "zh_CN": "scrollbar-always-on" } }, + "description": { + "zh_CN": "总是显示滚动条" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} - }, - "description": { - "zh_CN": "" } }, { - "property": "size", + "property": "flexible", "label": { "text": { - "zh_CN": "尺寸" + "zh_CN": "flexible" } }, + "description": { + "zh_CN": "确保主轴的最小尺寸,以便不超过内容" + }, "required": true, "readOnly": false, "disabled": false, "cols": 12, + "labelPosition": "top", + "defaultValue": false, + "type": "boolean", "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "normal", - "value": "normal" - }, - { - "label": "large", - "value": "large" - } - ] + "component": "SwitchConfigurator", + "props": {} + } + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onSelect": { + "label": { + "zh_CN": "勾选数据行的 Checkbox 时触发" + }, + "description": { + "zh_CN": "当用户手动勾选数据行的 Checkbox 时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "selection", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中项" } }, - "description": { - "zh_CN": "" + { + "name": "row", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前行" + } } - }, + ], + "returns": {} + } + }, + "onSelectAll": { + "label": { + "zh_CN": "勾选全选时触发" + }, + "description": { + "zh_CN": "当用户手动勾选全选 Checkbox 时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "selection", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中项" + } + } + ], + "returns": {} + } + }, + "onSelectionChange": { + "label": { + "zh_CN": "选择项发生变化时会触发" + }, + "description": { + "zh_CN": "当选择项发生变化时会触发该事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "selection", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中项" + } + } + ], + "returns": {} + } + }, + "onCellMouseEnter": { + "label": { + "zh_CN": "单元格 hover 时会触发" + }, + "description": { + "zh_CN": "当单元格 hover 进入时会触发该事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "row", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前行" + } + }, + { + "name": "column", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前列" + } + }, + { + "name": "cell", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前单元格" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生事件 event" + } + } + ], + "returns": {} + } + }, + "onCellMouseLeave": { + "label": { + "zh_CN": "单元格 hover 退出时会触发" + }, + "description": { + "zh_CN": "当单元格 hover 退出时会触发该事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "row", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前行" + } + }, + { + "name": "column", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前列" + } + }, + { + "name": "cell", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前单元格" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生事件 event" + } + } + ], + "returns": {} + } + } + }, + "slots": { + "empty": { + "label": { + "zh_CN": "empty" + }, + "description": { + "zh_CN": "当数据为空时自定义的内容" + } + }, + "append": { + "label": { + "zh_CN": "append" + }, + "description": { + "zh_CN": "插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。" + } + } + } + } + }, + { + "id": 1, + "version": "2.4.2", + "name": { + "zh_CN": "表单" + }, + "component": "ElTableColumn", + "icon": "table", + "description": "用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作", + "doc_url": "", + "screenshot": "", + "tags": "", + "keywords": "", + "dev_mode": "proCode", + "npm": { + "package": "element-plus", + "version": "2.4.2", + "script": "https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs", + "css": "https://unpkg.com/element-plus@2.4.2/dist/index.css", + "dependencies": null, + "exportName": "ElTableColumn" + }, + "group": "表单组件", + "category": "element-plus", + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "isPopper": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["inline", "label-width"] + }, + "contextMenu": { + "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], + "disable": [] + }, + "invalidity": [""], + "clickCapture": true, + "framework": "Vue" + }, + "schema": { + "properties": [ + { + "name": "0", + "label": { + "zh_CN": "基础属性" + }, + "content": [], + "description": { + "zh_CN": "" + } + } + ], + "events": {}, + "slots": {} + } + }, + { + "name": { + "zh_CN": "走马灯子项" + }, + "component": "TinyCarouselItem", + "icon": "carouselitem", + "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CarouselItem", + "version": "", + "destructuring": true + }, + "group": "component", + "category": "容器组件", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "icon", + "property": "name", "label": { "text": { - "zh_CN": "图标" + "zh_CN": "幻灯片的名字,可用作 setActiveItem 的参数" } }, "required": true, @@ -20751,7 +19444,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -20762,7 +19455,7 @@ "property": "title", "label": { "text": { - "zh_CN": "标题,在 size 为 large 时有效" + "zh_CN": "幻灯片的标题" } }, "required": true, @@ -20770,7 +19463,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { @@ -20778,10 +19471,10 @@ } }, { - "property": "tiny_mode", + "property": "indicator-position", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "指示器的位置" } }, "required": true, @@ -20789,16 +19482,16 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { - "label": "pc", - "value": "pc" + "label": "outside", + "value": "outside" }, { - "label": "mobile", - "value": "mobile" + "label": "none", + "value": "none" } ] } @@ -20807,53 +19500,10 @@ "zh_CN": "" } } - ], - "description": { - "zh_CN": "" - } + ] } ], - "events": { - "onClose": { - "label": { - "zh_CN": "关闭Alert时触发的事件" - }, - "description": { - "zh_CN": null - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - } - }, - "slots": { - "description": { - "label": { - "zh_CN": "description" - }, - "description": { - "zh_CN": "提示内容" - } - }, - "title": { - "label": { - "zh_CN": "title" - }, - "description": { - "zh_CN": "标题的内容" - } - }, - "default": { - "label": { - "zh_CN": "default" - }, - "description": { - "zh_CN": "组件默认插槽" - } - } - } + "events": {} }, "configure": { "loop": true, @@ -20861,9 +19511,8 @@ "styles": true, "isContainer": true, "isModal": false, - "isPopper": false, "nestingRule": { - "childWhitelist": "", + "childWhitelist": [], "parentWhitelist": "", "descendantBlacklist": "", "ancestorWhitelist": "" @@ -20872,178 +19521,90 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["type", "size"] + "properties": ["disabled", "size"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "invalidity": [""], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-10-25T07:27:44.000Z", - "updated_at": "2023-05-23T07:48:01.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "close", - "label": "关闭Alert时触发的事件", - "params": null, - "defaultValue": null, - "description": null, - "_RID": "row_1" - } - ], - "attrs": [ - { - "property": "title", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_13" - }, - { - "property": "icon", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_12" - }, - { - "property": "show-icon", - "type": "boolean", - "defaultValue": "true", - "enumerateValue": null, - "title": "是否显示图标", - "_RID": "row_7" - }, - { - "property": "close-text", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "关闭按钮文本", - "_RID": "row_6" - }, - { - "property": "center", - "type": "boolean", - "defaultValue": "true", - "enumerateValue": null, - "title": "是否居中", - "_RID": "row_5" - }, - { - "property": "description", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "提示内容", - "_RID": "row_4" - }, - { - "property": "type", - "type": "array", - "defaultValue": "info", - "enumerateValue": null, - "title": "类型", - "_RID": "row_3" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_1" - } - ], - "slots": [ - { - "slotName": "description", - "description": "提示内容", - "_RID": "row_12" - }, - { - "slotName": "title", - "description": "标题的内容", - "_RID": "row_11" - }, - { - "slotName": "default", - "description": "组件默认插槽", - "_RID": "row_10" - } - ] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 10, - "version": "0.1.16", "name": { - "zh_CN": "输入框" + "zh_CN": "走马灯" }, - "component": "TinyInput", - "icon": "input", - "description": "通过鼠标或键盘输入字符", - "doc_url": "", - "screenshot": "input-screeshot", + "component": "TinyCarousel", + "icon": "carousel", + "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "Input", - "version": "0.1.16", + "exportName": "Carousel", + "version": "", "destructuring": true }, "group": "component", - "category": "表单组件", - "priority": 3, - "snippets": [ - { - "icon": "input", - "name": { - "zh_CN": "输入框" - }, - "schema": { - "props": { - "modelValue": "", - "placeholder": "请输入" - }, - "componentName": "TinyInput" - }, - "screenshot": "", - "snippetName": "TinyInput" - } - ], - "schema_fragment": { + "category": "容器组件", + "priority": 2, + "schema": { "properties": [ { - "name": "0", "label": { "zh_CN": "基础信息" }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, "content": [ { - "property": "key", + "property": "arrow", + "label": { + "text": { + "zh_CN": "切换箭头的显示时机" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "总是显示", + "value": "always" + }, + { + "label": "鼠标悬停时显示", + "value": "hover" + }, + { + "label": "从不显示", + "value": "never" + } + ] + } + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "autoplay", "label": { "text": { - "zh_CN": "key" + "zh_CN": "是否自动切换" } }, "required": true, @@ -21051,45 +19612,40 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} + }, + "description": { + "zh_CN": "" } }, { - "property": "tiny_mode", + "property": "tabs", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "选项卡" } }, "required": true, "readOnly": false, "disabled": false, + "defaultValue": "", "cols": 12, + "bindState": false, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] - } + "component": "ContainerConfigurator", + "props": {} }, "description": { - "zh_CN": "" - } + "zh_CN": "tabs" + }, + "labelPosition": "none" }, { - "property": "modelValue", + "property": "height", "label": { "text": { - "zh_CN": "绑定值" + "zh_CN": "走马灯的高度" } }, "required": true, @@ -21097,18 +19653,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaBindI18n", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "双向绑定值" + "zh_CN": "" } }, { - "property": "type", + "property": "indicator-position", "label": { "text": { - "zh_CN": "类型" + "zh_CN": "指示器的位置" } }, "required": true, @@ -21116,33 +19672,29 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "InputConfigurator", "props": { "options": [ { - "label": "textarea", - "value": "textarea" - }, - { - "label": "text", - "value": "text" + "label": "走马灯外部", + "value": "outside" }, { - "label": "password", - "value": "password" + "label": "不显示", + "value": "none" } ] } }, "description": { - "zh_CN": "设置input框的type属性" + "zh_CN": "" } }, { - "property": "rows", + "property": "initial-index", "label": { "text": { - "zh_CN": "行数" + "zh_CN": "初始状态激活的幻灯片的索引,从 0 开始 " } }, "required": true, @@ -21150,18 +19702,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumber", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "输入框行数,只对 type='textarea' 有效" + "zh_CN": "" } }, { - "property": "placeholder", + "property": "interval", "label": { "text": { - "zh_CN": "占位文本" + "zh_CN": "自动切换的时间间隔,单位为毫秒" } }, "required": true, @@ -21169,18 +19721,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaBindI18n", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "输入框占位文本" + "zh_CN": "" } }, { - "property": "clearable", + "property": "loop", "label": { "text": { - "zh_CN": "清除按钮" + "zh_CN": "是否循环显示" } }, "required": true, @@ -21188,18 +19740,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "是否显示清除按钮" + "zh_CN": "" } }, { - "property": "disabled", + "property": "show-title", "label": { "text": { - "zh_CN": "是否禁用" + "zh_CN": "是否显示标题" } }, "required": true, @@ -21207,18 +19759,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "是否禁用" + "zh_CN": "" } }, { - "property": "size", + "property": "trigger", "label": { "text": { - "zh_CN": "尺寸" + "zh_CN": "指示器的触发方式,默认为 hover" } }, "required": true, @@ -21226,33 +19778,29 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "InputConfigurator", "props": { "options": [ { - "label": "medium", - "value": "medium" - }, - { - "label": "small", - "value": "small" + "label": "点击", + "value": "click" }, { - "label": "mini", - "value": "mini" + "label": "悬停", + "value": "hover" } ] } }, "description": { - "zh_CN": "输入框尺寸。该属性的可选值为 medium / small / mini" + "zh_CN": "" } }, { - "property": "maxlength", + "property": "type", "label": { "text": { - "zh_CN": "最大长度" + "zh_CN": "走马灯的类型" } }, "required": true, @@ -21260,178 +19808,42 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", - "props": {} - }, - "description": { - "zh_CN": "最大长度" - } - }, - { - "property": "autofocus", - "label": { - "text": { - "zh_CN": "聚焦" + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "水平", + "value": "horizontal" + }, + { + "label": "垂直", + "value": "vertical" + }, + { + "label": "卡片", + "value": "card" + } + ] } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, "description": { - "zh_CN": "自动获取焦点" + "zh_CN": "" } } - ], - "description": { - "zh_CN": "" - } + ] } ], - "events": { - "onChange": { - "label": { - "zh_CN": "值改变时触发" - }, - "description": { - "zh_CN": "在 Input 值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "输入框改变后的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onInput": { - "label": { - "zh_CN": "输入值改变时触发" - }, - "description": { - "zh_CN": "在 Input 输入值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "输入框输入的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "在 Input 输入值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onBlur": { - "label": { - "zh_CN": "失去焦点时触发" - }, - "description": { - "zh_CN": "在 Input 失去焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onFocus": { - "label": { - "zh_CN": "获取焦点时触发" - }, - "description": { - "zh_CN": "在 Input 获取焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onClear": { - "label": { - "zh_CN": "点击清空按钮时触发" - }, - "description": { - "zh_CN": "点击清空按钮时触发" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - } - } + "events": {} }, "configure": { "loop": true, "condition": true, "styles": true, - "isContainer": false, + "isContainer": true, + "clickCapture": false, "isModal": false, "nestingRule": { - "childWhitelist": "", + "childWhitelist": ["TinyCarouselItem"], "parentWhitelist": "", "descendantBlacklist": "", "ancestorWhitelist": "" @@ -21440,190 +19852,179 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["value", "disabled"] + "properties": ["disabled", "size"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-11T07:22:02.000Z", - "updated_at": "2023-03-06T06:44:18.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "key", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_2" - }, - { - "property": "modelValue", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "", - "_RID": "row_1" - }, - { - "property": "type", - "type": "array", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_2" - }, - { - "property": "rows", - "type": "number", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_3" - }, - { - "property": "placeholder", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_4" - }, - { - "property": "clearable", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_5" - }, - { - "property": "disabled", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_6" - }, - { - "property": "size", - "type": "array", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_7" - }, - { - "property": "maxlength", - "type": "number", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_8" - }, - { - "property": "autofocus", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_9" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 38, - "version": "0.1.16", + "icon": "link", "name": { - "zh_CN": "标签页" + "zh_CN": "提示框" }, - "component": "TinyTabs", - "icon": "tabs", - "description": "分隔内容上有关联但属于不同类别的数据集合", - "doc_url": "", - "screenshot": "tabsscreenshot", + "component": "a", + "description": "链接", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Tabs", - "version": "0.1.16", - "destructuring": true - }, + "devMode": "proCode", "group": "component", - "category": "容器组件", - "priority": 5, - "snippets": [ - { - "icon": "tabs", - "name": { - "zh_CN": "标签页" - }, - "group": true, - "schema": { - "props": { - "modelValue": "first" + "priority": 7, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } }, - "children": [ + "content": [ { - "props": { - "name": "first", - "title": "标签页1" + "property": "children", + "label": { + "text": { + "zh_CN": "类型" + } }, - "children": [ - { - "componentName": "div" + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlTextConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + }, + { + "property": "href", + "label": { + "text": { + "zh_CN": "跳转链接" } - ], - "componentName": "TinyTabItem" + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "链接" + } }, { - "props": { - "name": "second", - "title": "标签页2" + "property": "target", + "label": { + "text": { + "zh_CN": "页面目标" + } }, - "children": [ - { - "componentName": "div" + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "当前页面", + "value": "_self" + }, + { + "label": "打开新页面", + "value": "_blank" + } + ] } - ], - "componentName": "TinyTabItem" + }, + "description": { + "zh_CN": "链接" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" } - ], - "componentName": "TinyTabs" - }, - "screenshot": "", - "snippetName": "TinyTabs" + ] + } + ] + }, + "configure": { + "loop": true, + "condition": true, + "slots": [], + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [] + }, + "contextMenu": { + "actions": [], + "disable": [] } - ], - "schema_fragment": { + } + }, + { + "name": { + "zh_CN": "标题" + }, + "component": ["h1", "h2", "h3", "h4", "h5", "h6"], + "icon": "h16", + "description": "标题", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 20, + "schema": { "properties": [ { "label": { @@ -21640,10 +20041,10 @@ }, "content": [ { - "property": "showEditIcon", + "property": "children", "label": { "text": { - "zh_CN": "显示编辑ICON " + "zh_CN": "类型" } }, "required": true, @@ -21651,19 +20052,21 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", - "props": {} + "component": "HtmlTextConfigurator", + "props": { + "showRadioButton": true + } }, "description": { - "zh_CN": "是否显示标题后编辑 ICON" + "zh_CN": "" }, - "labelPosition": "left" + "labelPosition": "none" }, { - "property": "modelValue", + "property": "attributes3", "label": { "text": { - "zh_CN": "绑定值" + "zh_CN": "原生属性" } }, "required": true, @@ -21671,19 +20074,80 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "HtmlAttributesConfigurator", "props": {} }, "description": { - "zh_CN": "双向绑定,当前选中选项卡的 name" + "zh_CN": "" }, - "labelPosition": "left" - }, + "labelPosition": "none" + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "size"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "name": { + "zh_CN": "段落" + }, + "component": "p", + "icon": "paragraph", + "description": "段落", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 30, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "with-add", + "property": "children", "label": { "text": { - "zh_CN": "可新增" + "zh_CN": "类型" } }, "required": true, @@ -21691,19 +20155,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "HtmlTextConfigurator", "props": {} }, "description": { - "zh_CN": "标签是否可增加" + "zh_CN": "" }, - "labelPosition": "left" + "labelPosition": "none" }, { - "property": "with-close", + "property": "attributes3", "label": { "text": { - "zh_CN": "可关闭" + "zh_CN": "原生属性" } }, "required": true, @@ -21711,19 +20175,80 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "HtmlAttributesConfigurator", "props": {} }, "description": { - "zh_CN": "标签是否可关闭" + "zh_CN": "" }, - "labelPosition": "left" - }, + "labelPosition": "none" + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [] + }, + "contextMenu": { + "actions": [], + "disable": [] + } + } + }, + { + "name": { + "zh_CN": "输入框" + }, + "component": "input", + "icon": "input", + "description": "输入框", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 40, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "tab-style", + "property": "type", "label": { "text": { - "zh_CN": "标签页样式" + "zh_CN": "类型" } }, "required": true, @@ -21731,46 +20256,101 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { - "label": "card", - "value": "card" + "label": "checkbox", + "value": "checkbox" }, { - "label": "border-card", - "value": "border-card" + "label": "color", + "value": "color" + }, + { + "label": "date", + "value": "date" + }, + { + "label": "button", + "value": "button" + }, + { + "label": "email", + "value": "email" + }, + { + "label": "file", + "value": "file" + }, + { + "label": "hidden", + "value": "hidden" + }, + { + "label": "image", + "value": "image" + }, + { + "label": "month", + "value": "month" + }, + { + "label": "number", + "value": "number" + }, + { + "label": "password", + "value": "password" + }, + { + "label": "radio", + "value": "radio" + }, + { + "label": "range", + "value": "range" + }, + { + "label": "reset", + "value": "reset" + }, + { + "label": "search", + "value": "search" + }, + { + "label": "submit", + "value": "submit" + }, + { + "label": "text", + "value": "text" + }, + { + "label": "time", + "value": "time" + }, + { + "label": "week", + "value": "week" + }, + { + "label": "url", + "value": "url" } ] } }, "description": { - "zh_CN": "标签页样式" - }, - "labelPosition": "left" - }, - { - "property": "active-color", - "label": { - "text": { - "zh_CN": "active-color" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} + "zh_CN": "" } }, { - "property": "swipeable", + "property": "placeholder", "label": { "text": { - "zh_CN": "swipeable" + "zh_CN": "占位符" } }, "required": true, @@ -21778,15 +20358,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} + }, + "description": { + "zh_CN": "" } }, { - "property": "tiny_mode", + "property": "attributes3", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "原生属性" } }, "required": true, @@ -21794,46 +20377,28 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] - } + "component": "HtmlAttributesConfigurator", + "props": {} }, "description": { "zh_CN": "" - } + }, + "labelPosition": "none" } ] } ], "events": { - "onClick": { + "onBlur": { "label": { - "zh_CN": "点击页签时触发事件" + "zh_CN": "失去焦点时触发" }, "description": { - "zh_CN": "在 Input 值改变时触发" + "zh_CN": "在 Input 失去焦点时触发" }, "type": "event", "functionInfo": { "params": [ - { - "name": "component", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "当前点击的页签对象" - } - }, { "name": "event", "type": "Object", @@ -21847,53 +20412,22 @@ }, "defaultValue": "" }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "当前选中的选项卡改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的当前选中选项卡的 name 值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onEdit": { + "onFocus": { "label": { - "zh_CN": "点击新增按钮或关闭按钮或者编辑按钮后触发" + "zh_CN": "获取焦点时触发" }, "description": { - "zh_CN": "点击新增按钮或关闭按钮或者编辑按钮后触发" + "zh_CN": "在 Input 获取焦点时触发" }, "type": "event", "functionInfo": { "params": [ { - "name": "tab", + "name": "event", "type": "Object", "defaultValue": "", "description": { - "zh_CN": "当前操作的页签对象" - } - }, - { - "name": "type", - "type": "String", - "defaultValue": "", - "description": { - "zh_CN": "当前操作的类型(remove || add || edit)" + "zh_CN": "原生 event" } } ], @@ -21901,22 +20435,22 @@ }, "defaultValue": "" }, - "onClose": { + "onChange": { "label": { - "zh_CN": "关闭页签时触发" + "zh_CN": "输入值改变时触发" }, "description": { - "zh_CN": "关闭页签时触发" + "zh_CN": "在 Input 输入值改变时触发" }, "type": "event", "functionInfo": { "params": [ { - "name": "name", - "type": "String", + "name": "event", + "type": "Object", "defaultValue": "", "description": { - "zh_CN": "页签名称" + "zh_CN": "原生 event" } } ], @@ -21933,7 +20467,7 @@ "isContainer": false, "isModal": false, "nestingRule": { - "childWhitelist": "TinyTabItem", + "childWhitelist": [], "parentWhitelist": "", "descendantBlacklist": "", "ancestorWhitelist": "" @@ -21942,122 +20476,51 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["tab-style", "", "size"] + "properties": ["disabled", "size"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "clickCapture": false, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:58:09.000Z", - "updated_at": "2023-03-06T06:45:54.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "swipeable", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - }, - { - "property": "active-color", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_2" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 181, - "version": "0.1.16", "name": { - "zh_CN": "下拉菜单menu" - }, - "component": "TinyDropdownMenu", - "icon": "dropdown", - "description": "下拉菜单menu", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "DropdownMenu", - "version": "0.1.16", - "destructuring": true + "zh_CN": "视频" }, + "component": "video", + "icon": "video", + "description": "视频", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, "group": "component", - "category": "导航组件", - "priority": 2, - "snippets": [ - { - "name": { - "zh_CN": "下拉菜单menu" - }, - "icon": "dropdown", - "screenshot": "", - "snippetName": "TinyDropdownMenu", - "schema": { - "componentName": "TinyDropdownMenu", - "props": { - "modelValue": "", - "options": [ - { - "value": "1", - "text": "黄金糕" - }, - { - "value": "2", - "text": "双皮奶" - } - ] - } - } - } - ], - "schema_fragment": { + "category": "html", + "priority": 50, + "schema": { "properties": [ { - "name": "0", "label": { - "zh_CN": "分组1" + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 10, + "text": { + "zh_CN": "显示更多" + } }, "content": [ { - "property": "icon", + "property": "src", "label": { "text": { - "zh_CN": "icon" + "zh_CN": "视频的 URL" } }, "required": true, @@ -22065,31 +20528,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} - } - }, - { - "property": "label", - "label": { - "text": { - "zh_CN": "label" - } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} + "description": { + "zh_CN": "" } }, { - "property": "tiny_mode", + "property": "width", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "视频播放器的宽度" } }, "required": true, @@ -22097,25 +20547,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "mobile", - "value": "mobile" - } - ] - } + "component": "InputConfigurator", + "props": {} }, "description": { "zh_CN": "" } }, { - "property": "key", + "property": "height", "label": { "text": { - "zh_CN": "key" + "zh_CN": "视频播放器的高度" } }, "required": true, @@ -22123,31 +20566,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} - } - }, - { - "property": "active-color", - "label": { - "text": { - "zh_CN": "active-color" - } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} + "description": { + "zh_CN": "" } }, { - "property": "close-on-click-outside", + "property": "controls", "label": { "text": { - "zh_CN": "close-on-click-outside" + "zh_CN": "是否显示控件" } }, "required": true, @@ -22155,31 +20585,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} - } - }, - { - "property": "close-on-click-overlay", - "label": { - "text": { - "zh_CN": "close-on-click-overlay" - } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} + "description": { + "zh_CN": "" } }, { - "property": "direction", + "property": "autoplay", "label": { "text": { - "zh_CN": "direction" + "zh_CN": "是否马上播放" } }, "required": true, @@ -22187,31 +20604,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} - } - }, - { - "property": "duration", - "label": { - "text": { - "zh_CN": "duration" - } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumeric", - "props": {} + "description": { + "zh_CN": "" } }, { - "property": "overlay", + "property": "attributes3", "label": { "text": { - "zh_CN": "overlay" + "zh_CN": "原生属性" } }, "required": true, @@ -22219,77 +20623,27 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "HtmlAttributesConfigurator", "props": {} - } + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" } - ], - "description": { - "zh_CN": "" - } + ] } ], - "events": { - "onOpen": { - "label": { - "zh_CN": null - }, - "description": { - "zh_CN": null - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onClose": { - "label": { - "zh_CN": null - }, - "description": { - "zh_CN": "关闭菜单时触发" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onChange": { - "label": { - "zh_CN": null - }, - "description": { - "zh_CN": "点击选项时触发,type为 selection 时启用" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - } - }, - "slots": { - "default": { - "label": { - "zh_CN": "default" - }, - "description": { - "zh_CN": "下拉列表选项通常是 组件。" - } - } - } + "events": {} }, "configure": { "loop": true, "condition": true, "styles": true, - "isContainer": true, + "isContainer": false, "isModal": false, - "isPopper": false, "nestingRule": { - "childWhitelist": "DropdownItem", + "childWhitelist": [], "parentWhitelist": "", "descendantBlacklist": "", "ancestorWhitelist": "" @@ -22298,253 +20652,67 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": [""] + "properties": [] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], + "actions": [], "disable": [] - }, - "invalidity": [""], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-11-09T03:28:12.000Z", - "updated_at": "2023-05-05T08:37:24.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "open", - "label": null, - "params": null, - "defaultValue": null, - "description": null, - "_RID": "row_27" - }, - { - "eventName": "close", - "label": null, - "params": null, - "defaultValue": null, - "description": "关闭菜单时触发", - "_RID": "row_26" - }, - { - "eventName": "change", - "label": null, - "params": null, - "defaultValue": null, - "description": "点击选项时触发,type为 selection 时启用", - "_RID": "row_25" - } - ], - "attrs": [ - { - "property": "icon", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "菜单项", - "_RID": "row_2" - }, - { - "property": "label", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "菜单项标签", - "_RID": "row_1" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": "mobile", - "enumerateValue": "mobile", - "title": null, - "_RID": "row_22" - }, - { - "property": "key", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - }, - { - "property": "active-color", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "标题和选项的选中态颜色", - "_RID": "row_2" - }, - { - "property": "close-on-click-outside", - "type": "boolean", - "defaultValue": "true", - "enumerateValue": null, - "title": "设置点击外部元素后关闭菜单", - "_RID": "row_3" - }, - { - "property": "close-on-click-overlay", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": "设置点击遮罩层后关闭菜单", - "_RID": "row_4" - }, - { - "property": "direction", - "type": "string", - "defaultValue": "down", - "enumerateValue": null, - "title": "设置弹出框弹出框展开方向", - "_RID": "row_5" - }, - { - "property": "duration", - "type": "number", - "defaultValue": null, - "enumerateValue": null, - "title": "设置弹出框的动画时长", - "_RID": "row_6" - }, - { - "property": "overlay", - "type": "boolean", - "defaultValue": "true", - "enumerateValue": null, - "title": "设置是否显示遮罩层", - "_RID": "row_7" - } - ], - "slots": [ - { - "slotName": "default", - "description": "下拉列表选项通常是 组件。", - "_RID": "row_2" - } - ] - }, - "library": null + } + } }, { - "id": 37, - "version": "0.1.16", + "icon": "Image", "name": { - "zh_CN": "对话框" + "zh_CN": "Img" }, - "component": "TinyDialogBox", - "icon": "dialogbox", - "description": "模态对话框,在浮层中显示,引导用户进行相关操作。", - "doc_url": "", - "screenshot": "dialogboxshot", + "component": "Img", + "container": false, + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "DialogBox", - "version": "3.2.0", - "destructuring": true - }, + "devMode": "proCode", + "npm": {}, "group": "component", - "category": "容器组件", - "priority": 2, - "snippets": [ - { - "icon": "dialogbox", - "name": { - "zh_CN": "对话框" - }, - "schema": { - "props": { - "title": "dialogBox title", - "visible": true - }, - "children": [ - { - "componentName": "div" - } - ], - "componentName": "TinyDialogBox" - }, - "screenshot": "", - "snippetName": "TinyDialogBox" - } - ], - "schema_fragment": { + "category": "html", + "priority": 60, + "schema": { "properties": [ { "label": { "zh_CN": "基础信息" }, "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "title", - "label": { - "text": { - "zh_CN": "标题" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "弹出框标题" - }, - "labelPosition": "left" - }, + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "visible", + "property": "src", + "type": "string", + "defaultValue": "", + "bindState": true, "label": { "text": { - "zh_CN": "显示与隐藏" + "zh_CN": "src路径" } }, - "required": true, - "readOnly": false, - "disabled": false, "cols": 12, + "rules": [], "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} - }, - "description": { - "zh_CN": "控制弹出框显示与关闭" - }, - "labelPosition": "left" + } }, { - "property": "width", + "property": "attributes3", "label": { "text": { - "zh_CN": "宽度" + "zh_CN": "原生属性" } }, "required": true, @@ -22552,82 +20720,178 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "HtmlAttributesConfigurator", "props": {} }, "description": { - "zh_CN": "弹出框的宽度" + "zh_CN": "" }, - "labelPosition": "left" - }, + "labelPosition": "none" + } + ] + } + ], + "events": {}, + "shortcuts": { + "properties": ["src"] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "button", + "name": { + "zh_CN": "Button" + }, + "component": "button", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 70, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "is-form-reset", + "property": "attributes3", "label": { "text": { - "zh_CN": "is-form-reset" + "zh_CN": "原生属性" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "boolean", "widget": { - "component": "MetaSwitch", + "component": "HtmlAttributesConfigurator", "props": {} }, "description": { - "zh_CN": "关闭弹窗,默认重置表单数据" - } - }, + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "table", + "name": { + "zh_CN": "表格" + }, + "component": "table", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 80, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "show-header", + "property": "width", "label": { "text": { - "zh_CN": "show-header" + "zh_CN": "表格的宽度" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "boolean", "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "是否显示弹窗头部 header,默认值为 true 。" + "zh_CN": "" } }, { - "property": "modal", + "property": "border", "label": { "text": { - "zh_CN": "modal" + "zh_CN": "表格边框的宽度" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "boolean", "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "是否启用遮罩层" + "zh_CN": "" } }, { - "property": "draggable", + "property": "attributes3", "label": { "text": { - "zh_CN": "可拖拽" + "zh_CN": "原生属性" } }, "required": true, @@ -22635,18 +20899,77 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "HtmlAttributesConfigurator", "props": {} }, "description": { - "zh_CN": "是否开启弹窗的拖拽功能,默认值为 false 。" - } - }, + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "td", + "name": { + "zh_CN": "表格单元格" + }, + "component": "td", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 90, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "center", + "property": "colspan", "label": { "text": { - "zh_CN": "居中" + "zh_CN": "单元格可横跨的列数" } }, "required": true, @@ -22654,19 +20977,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "弹出框的头部与底部内容会自动居中" - }, - "labelPosition": "left" + "zh_CN": "" + } }, { - "property": "dialog-class", + "property": "rowspan", "label": { "text": { - "zh_CN": "自定义类" + "zh_CN": "单元格可横跨的行数" } }, "required": true, @@ -22674,19 +20996,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "自定义配置弹窗类名" - }, - "labelPosition": "left" + "zh_CN": "" + } }, { - "property": "append-to-body", + "property": "attributes3", "label": { "text": { - "zh_CN": "插入到 Body " + "zh_CN": "原生属性" } }, "required": true, @@ -22694,19 +21015,77 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "HtmlAttributesConfigurator", "props": {} }, "description": { - "zh_CN": "DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true" + "zh_CN": "" }, - "labelPosition": "left" - }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "form", + "name": { + "zh_CN": "表单" + }, + "component": "form", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 100, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "show-close", + "property": "name", "label": { "text": { - "zh_CN": "show-close" + "zh_CN": "表单的名称" } }, "required": true, @@ -22714,41 +21093,37 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", - "props": { - "modelValue": true - } + "component": "InputConfigurator", + "props": {} }, "description": { "zh_CN": "" } }, { - "property": "close-on-click-modal", + "property": "action", "label": { "text": { - "zh_CN": "close-on-click-modal" + "zh_CN": "提交表单时向何处发送表单数据" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": { - "modelValue": true - } + "widget": { + "component": "InputConfigurator", + "props": {} }, "description": { - "zh_CN": "是否可以通过点击遮罩层关闭弹窗,默认为 true ,可以在标签上设置:modal-closable=\"false\"不能通过点击遮罩层关闭弹窗。" + "zh_CN": "" } }, { - "property": "tiny_mode", + "property": "method", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "用于发送 form-data 的 HTTP 方法" } }, "required": true, @@ -22756,16 +21131,16 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { - "label": "pc", - "value": "pc" + "label": "get", + "value": "get" }, { - "label": "mobile", - "value": "mobile" + "label": "post", + "value": "post" } ] } @@ -22778,370 +21153,45 @@ } ], "events": { - "onDrag-end": { - "label": { - "zh_CN": null - }, - "description": { - "zh_CN": "Dialog 拖拽结束事件;arg:event(包含弹窗的位置等信息)" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onDrag-move": { - "label": { - "zh_CN": null - }, - "description": { - "zh_CN": "Dialog 拖拽移动事件;arg:event(包含弹窗的位置等信息)" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onDrag-start": { - "label": { - "zh_CN": null - }, - "description": { - "zh_CN": "Dialog 拖拽开始事件;arg:event(包含弹窗的位置等信息)" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onClosed": { - "label": { - "zh_CN": null - }, - "description": { - "zh_CN": "\tDialog 关闭动画结束时的回调;无arguments" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onOpened": { - "label": { - "zh_CN": null - }, - "description": { - "zh_CN": "Dialog 打开动画结束时的回调;无arguments" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onOpen": { - "label": { - "zh_CN": null - }, - "description": { - "zh_CN": "Dialog 打开的回调;Dialog 打开的回调;无arguments" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onClose": { - "label": { - "zh_CN": "关闭弹窗时触发" - }, - "description": { - "zh_CN": "Dialog 关闭的回调;无arguments" - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onUpdate:visible": { + "onClick": { "label": { - "zh_CN": "双向绑定的状态改变时触发" + "zh_CN": "点击时触发" }, "description": { - "zh_CN": "显示或隐藏的状态值,发生改变时触发" + "zh_CN": "点击时触发" }, "type": "event", "functionInfo": { - "params": [ - { - "name": "value", - "type": "boolean", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的显示或隐藏的状态值" - } - } - ], + "params": [], "returns": {} }, "defaultValue": "" } }, - "slots": { - "title": { - "label": { - "zh_CN": "title" - }, - "description": { - "zh_CN": "Dialog 标题区的内容" - } - }, - "default": { - "label": { - "zh_CN": "default" - }, - "description": { - "zh_CN": "Dialog 的内容" - } - }, - "footer": { - "label": { - "zh_CN": "footer" - }, - "description": { - "zh_CN": "\tDialog 按钮操作区的内容" - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": ".tiny-dialog-box", "shortcuts": { - "properties": ["visible", "", "width"] - }, - "contextMenu": { - "actions": ["remove", "insert", "copy", "updateAttr", "bindEevent", "createBlock"], - "disable": [] + "properties": [] }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:55:58.000Z", - "updated_at": "2023-05-13T08:55:56.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "drag-end", - "label": null, - "params": null, - "defaultValue": null, - "description": "Dialog 拖拽结束事件;arg:event(包含弹窗的位置等信息)", - "_RID": "row_14" - }, - { - "eventName": "drag-move", - "label": null, - "params": null, - "defaultValue": null, - "description": "Dialog 拖拽移动事件;arg:event(包含弹窗的位置等信息)", - "_RID": "row_13" - }, - { - "eventName": "drag-start", - "label": null, - "params": null, - "defaultValue": null, - "description": "Dialog 拖拽开始事件;arg:event(包含弹窗的位置等信息)", - "_RID": "row_12" - }, - { - "eventName": "closed", - "label": null, - "params": null, - "defaultValue": null, - "description": "\tDialog 关闭动画结束时的回调;无arguments", - "_RID": "row_11" - }, - { - "eventName": "opened", - "label": null, - "params": null, - "defaultValue": null, - "description": "Dialog 打开动画结束时的回调;无arguments", - "_RID": "row_10" - }, - { - "eventName": "open", - "label": null, - "params": null, - "defaultValue": null, - "description": "Dialog 打开的回调;Dialog 打开的回调;无arguments", - "_RID": "row_9" - }, - { - "eventName": "close", - "label": null, - "params": null, - "defaultValue": null, - "description": "\tDialog 关闭的回调;Dialog 关闭的回调;无arguments", - "_RID": "row_8" - } - ], - "attrs": [ - { - "property": "close-on-click-modal", - "type": "boolean", - "defaultValue": "true", - "enumerateValue": null, - "title": "是否可以通过点击遮罩层关闭弹窗,默认为 true ,可以在标签上设置:modal-closable=\"false\"不能通过点击遮罩层关闭弹窗。", - "_RID": "row_1" - }, - { - "property": "show-close", - "type": "boolean", - "defaultValue": "true", - "enumerateValue": null, - "title": "是否显示关闭按钮", - "_RID": "row_1" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_16" - }, - { - "property": "modal", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": "是否启用遮罩层", - "_RID": "row_15" - }, - { - "property": "modal", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": "是否启用遮罩层", - "_RID": "row_15" - }, - { - "property": "is-form-reset", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_16" - }, - { - "property": "close-on-click-modal", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": "\t是否可以通过点击遮罩层关闭弹窗,默认为 true ,可以在标签上设置:modal-closable=\"false\"不能通过点击遮罩层关闭弹窗。", - "_RID": "row_17" - }, - { - "property": "show-header", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_18" - } - ], - "slots": [ - { - "slotName": "title", - "description": "Dialog 标题区的内容", - "_RID": "row_7" - }, - { - "slotName": "default", - "description": "Dialog 的内容", - "_RID": "row_6" - }, - { - "slotName": "footer", - "description": "\tDialog 按钮操作区的内容", - "_RID": "row_2" - } - ] - }, - "library": null + "contentMenu": { + "actions": [] + } + } }, { - "id": 19, - "version": "0.1.16", + "icon": "label", "name": { - "zh_CN": "开关" + "zh_CN": "表单标签" }, - "component": "TinySwitch", - "icon": "switch", - "description": "开关开关开关开关开关", - "doc_url": "", - "screenshot": "img/logo.png", + "component": "label", + "container": false, + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Switch", - "version": "0.1.16", - "destructuring": true - }, + "devMode": "proCode", + "npm": {}, "group": "component", - "category": "表单组件", - "priority": 5, - "snippets": [ - { - "icon": "switch", - "name": { - "zh_CN": "开关" - }, - "schema": { - "props": { - "modelValue": "" - }, - "componentName": "TinySwitch" - }, - "screenshot": "", - "snippetName": "TinySwitch" - } - ], - "schema_fragment": { + "category": "html", + "priority": 110, + "schema": { "properties": [ { "label": { @@ -23158,10 +21208,10 @@ }, "content": [ { - "property": "disabled", + "property": "for", "label": { "text": { - "zh_CN": "禁用" + "zh_CN": "label 绑定到哪个表单元素" } }, "required": true, @@ -23169,19 +21219,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "是否被禁用" - }, - "labelPosition": "left" + "zh_CN": "" + } }, { - "property": "modelValue", + "property": "form", "label": { "text": { - "zh_CN": "绑定值" + "zh_CN": "label 字段所属的一个或多个表单" } }, "required": true, @@ -23189,18 +21238,67 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "双向绑定的开关状态值" + "zh_CN": "" } - }, + } + ] + } + ], + "events": {}, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "name": { + "zh_CN": "按钮组" + }, + "component": "TinyButtonGroup", + "icon": "buttonGroup", + "description": "以按钮组的方式出现,常用于多项类似操作", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "ButtonGroup", + "version": "", + "destructuring": true + }, + "group": "component", + "category": "general", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "true-value", + "property": "data", "label": { "text": { - "zh_CN": "打开时的值" + "zh_CN": "按钮组数据" } }, "required": true, @@ -23208,19 +21306,20 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", - "props": {} + "component": "CodeConfigurator", + "props": { + "language": "json" + } }, "description": { - "zh_CN": "设置打开时的值(Boolean / String / Number)" - }, - "labelPosition": "left" + "zh_CN": "" + } }, { - "property": "false-value", + "property": "size", "label": { "text": { - "zh_CN": "关闭时的值" + "zh_CN": "组件大小" } }, "required": true, @@ -23228,19 +21327,33 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", - "props": {} + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "mini", + "value": "mini" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "medium", + "value": "medium" + } + ] + } }, "description": { - "zh_CN": "设置关闭时的值(Boolean / String / Number)" - }, - "labelPosition": "left" + "zh_CN": "" + } }, { - "property": "mini", + "property": "plain", "label": { "text": { - "zh_CN": "迷你尺寸" + "zh_CN": "是否是朴素按钮" } }, "required": true, @@ -23248,19 +21361,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "是否显示为 mini 模式" - }, - "labelPosition": "left" + "zh_CN": "" + } }, { - "property": "tiny_mode", + "property": "disabled", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "禁用" } }, "required": true, @@ -23268,19 +21380,8 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] - } + "component": "SwitchConfigurator", + "props": {} }, "description": { "zh_CN": "" @@ -23289,45 +21390,7 @@ ] } ], - "events": { - "onChange": { - "label": { - "zh_CN": "点击事件" - }, - "description": { - "zh_CN": "按钮被点击时触发的回调函数" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "开关的状态值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的开关状态值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } + "events": {} }, "configure": { "loop": true, @@ -23336,7 +21399,7 @@ "isContainer": false, "isModal": false, "nestingRule": { - "childWhitelist": "", + "childWhitelist": [], "parentWhitelist": "", "descendantBlacklist": "", "ancestorWhitelist": "" @@ -23345,94 +21408,35 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["disabled", "mini"] + "properties": ["disabled", "size"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-12T08:13:59.000Z", - "updated_at": "2023-03-06T07:02:29.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_3" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 26, - "version": "0.1.16", + "icon": "row", "name": { - "zh_CN": "时间线" + "zh_CN": "row" }, - "component": "TinyTimeLine", - "icon": "timeline", - "description": "时间线", - "doc_url": "", - "screenshot": "null", + "component": "TinyRow", + "description": "定义 Layout 的行配置信息", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "TimeLine", - "version": "0.1.16", + "exportName": "Row", + "version": "", "destructuring": true }, "group": "component", - "category": "数据组件", - "priority": 3, - "snippets": [ - { - "icon": "timeline", - "name": { - "zh_CN": "时间线" - }, - "schema": { - "props": { - "data": [ - { - "name": "已下单" - }, - { - "name": "运输中" - }, - { - "name": "已签收" - } - ], - "active": "2" - }, - "componentName": "TinyTimeLine" - }, - "screenshot": "", - "snippetName": "TinyTimeLine" - } - ], - "schema_fragment": { + "priority": 5, + "schema": { "properties": [ { "label": { @@ -23449,115 +21453,199 @@ }, "content": [ { - "property": "type", + "property": "layout", "label": { "text": { - "zh_CN": "type" + "zh_CN": "layout" + } + }, + "cols": 12, + "widget": { + "component": "LayoutGridConfigurator", + "props": {} + }, + "description": { + "zh_CN": "layout" + }, + "labelPosition": "none" + }, + { + "property": "align", + "label": { + "text": { + "zh_CN": "align" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", "widget": { - "component": "MetaInput", - "props": {} + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "top", + "value": "top" + }, + { + "label": "middle", + "value": "middle" + }, + { + "label": "bottom", + "value": "bottom" + } + ] + } }, "description": { - "zh_CN": "normal、timeline" + "zh_CN": "" } }, { - "property": "vertical", - "type": "Boolean", - "defaultValue": { - "type": "i18n", - "zh_CN": "布局", - "en_US": "layout", - "key": "" - }, + "property": "flex", "label": { "text": { - "zh_CN": "竖向布局" + "zh_CN": "flex" } }, + "required": true, + "readOnly": false, + "disabled": false, "cols": 12, - "rules": [], - "hidden": false, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "gutter", + "label": { + "text": { + "zh_CN": "gutter" + } + }, "required": true, "readOnly": false, "disabled": false, + "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "竖向时间线" + "zh_CN": "" } - }, + } + ] + } + ] + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["label-width", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "form", + "name": { + "zh_CN": "表单" + }, + "component": "TinyForm", + "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Form", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 5, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "reverse", - "type": "Boolean", - "defaultValue": { - "type": "i18n", - "zh_CN": "布局", - "en_US": "layout", - "key": "" - }, + "property": "disabled", "label": { "text": { - "zh_CN": "竖向逆向" + "zh_CN": "是否禁用" } }, - "cols": 12, - "rules": [], - "hidden": false, "required": true, "readOnly": false, "disabled": false, + "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "竖向时数字的顺序,从上到下还是从下到上" + "zh_CN": "" } }, { - "property": "horizontal", - "type": "Boolean", - "defaultValue": { - "type": "i18n", - "zh_CN": "布局", - "en_US": "layout", - "key": "" - }, + "property": "label-width", "label": { "text": { - "zh_CN": "水平布局" + "zh_CN": "标签宽度" } }, - "cols": 12, - "rules": [], - "hidden": false, "required": true, "readOnly": false, "disabled": false, + "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "节点和文字横向布局" - } + "zh_CN": "表单中标签占位宽度,默认为 80px" + }, + "labelPosition": "left" }, { - "property": "active", + "property": "inline", "label": { "text": { - "zh_CN": "选中值" + "zh_CN": "行内布局" } }, "required": true, @@ -23565,306 +21653,293 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "步骤条的选中步骤值" - }, - "labelPosition": "left" + "zh_CN": "行内布局模式,默认为 false" + } }, { - "property": "data", + "property": "label-align", "label": { "text": { - "zh_CN": "数据" + "zh_CN": "必填标识是否占位" } }, "required": true, "readOnly": false, "disabled": false, - "defaultValue": [ - { - "name": "配置基本信息", - "status": "ready" - }, - { - "name": "配置报价", - "status": "wait" - }, - { - "name": "完成报价", - "status": "wait" - } - ], "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "时间线步骤条数据" + "zh_CN": "必填标识 * 是否占位" }, "labelPosition": "left" }, { - "property": "status-field", + "property": "label-suffix", "label": { "text": { - "zh_CN": "status-field" + "zh_CN": "标签后缀" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "设置数据状态对应的字段名,默认为 'status'" + "zh_CN": "表单中标签后缀" } }, { - "property": "name-field", + "property": "label-position", "label": { "text": { - "zh_CN": "name-field" + "zh_CN": "标签位置" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", "widget": { - "component": "MetaInput", - "props": {} + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "right", + "value": "right" + }, + { + "label": "left ", + "value": "left " + }, + { + "label": "top", + "value": "top" + } + ] + } }, "description": { - "zh_CN": "设置节点信息中名称对应的字段名,默认为 'name'" + "zh_CN": "表单中标签的布局位置" } - }, + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "校验属性" + }, + "content": [ { - "property": "count-field", + "property": "model", "label": { "text": { - "zh_CN": "count-field" + "zh_CN": "表单校验对象" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", "widget": { - "component": "MetaInput", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "设置高级向导里徽标计数对应的字段名,默认为 'count'" - } + "zh_CN": "表单数据对象" + }, + "labelPosition": "left" }, { - "property": "space", + "property": "rules", "label": { "text": { - "zh_CN": "space" + "zh_CN": "校验规则" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", "widget": { - "component": "MetaNumeric", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "设置步骤条的宽度。" + "zh_CN": "表单验证规则" } } - ] + ], + "description": { + "zh_CN": "" + } } ], "events": { - "onClick": { + "onValidate": { "label": { - "zh_CN": "Click" + "zh_CN": "表单项被校验后触发" }, "description": { - "zh_CN": "节点的点击事件,参数(index:节点索引, node:节点数据信息)" + "zh_CN": "表单项被校验后触发" }, "type": "event", "functionInfo": { - "params": [null], + "params": [ + { + "name": "function", + "type": "Function", + "defaultValue": "(valid) => {}", + "description": { + "zh_CN": "校验回调函数" + } + } + ], "returns": {} - } - } - }, - "slots": { - "item": { + }, + "defaultValue": "" + }, + "onInput": { "label": { - "zh_CN": "item" + "zh_CN": "输入值改变时触发" }, "description": { - "zh_CN": "步骤条数据项插槽" - } - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["horizontal", "", "active"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:26:32.000Z", - "updated_at": "2023-05-13T09:47:40.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "click", - "label": "Click", - "params": null, - "defaultValue": null, - "description": "节点的点击事件,参数(index:节点索引, node:节点数据信息)", - "_RID": "row_16" - } - ], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_4" - }, - { - "property": "type", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_10" - }, - { - "property": "space", - "type": "number", - "defaultValue": null, - "enumerateValue": null, - "title": "设置步骤条的宽度。", - "_RID": "row_11" + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框输入的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" }, - { - "property": "count-field", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "\t设置高级向导里徽标计数对应的字段名,默认为 'count'", - "_RID": "row_12" + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" }, - { - "property": "name-field", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "设置节点信息中名称对应的字段名,默认为 'name'", - "_RID": "row_13" + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" }, - { - "property": "status-field", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "设置数据状态对应的字段名,默认为 'status'", - "_RID": "row_14" - } - ], - "slots": [ - { - "slotName": "item", - "description": "步骤条数据项插槽", - "_RID": "row_15" + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" } - ] + } }, - "library": null + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["label-width", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 39, - "version": "0.1.16", + "icon": "formitem", "name": { - "zh_CN": "标签页签项" + "zh_CN": "表单项" }, - "component": "TinyTabItem", - "icon": "tabitem", - "description": "tab页签", - "doc_url": "", - "screenshot": "tabshot", + "component": "TinyFormItem", + "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "TabItem", - "version": "0.1.16", + "exportName": "FormItem", + "version": "", "destructuring": true }, "group": "component", - "category": "容器组件", - "priority": 20, - "snippets": [ - { - "icon": "tabitem", - "name": { - "zh_CN": "标签页签项" - }, - "schema": { - "props": {}, - "componentName": "TinyTabItem" - }, - "screenshot": "", - "snippetName": "TinyTabItem" - } - ], - "schema_fragment": { + "priority": 12, + "schema": { "properties": [ { "label": { @@ -23881,29 +21956,31 @@ }, "content": [ { - "property": "name", + "property": "label", "label": { "text": { - "zh_CN": "唯一表示" + "zh_CN": "标签文本" } }, "required": true, "readOnly": false, "disabled": false, + "defaultValue": "标签", "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "唯一表示" - } + "zh_CN": "标签文本" + }, + "labelPosition": "left" }, { - "property": "title", + "property": "prop", "label": { "text": { - "zh_CN": "标题" + "zh_CN": "校验字段" } }, "required": true, @@ -23911,18 +21988,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "标题" + "zh_CN": "表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的" } }, { - "property": "tiny_mode", + "property": "required", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "必填" } }, "required": true, @@ -23930,38 +22007,38 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] - } + "component": "SwitchConfigurator", + "props": {} }, "description": { - "zh_CN": "" - } + "zh_CN": "是否必填" + }, + "labelPosition": "left" } ] } ], - "events": {} + "events": {}, + "slots": { + "label": { + "label": { + "zh_CN": "字段名" + }, + "description": { + "zh_CN": "自定义显示字段名称" + } + } + } }, "configure": { "loop": true, "condition": true, "styles": true, - "isContainer": false, + "isContainer": true, "isModal": false, "nestingRule": { "childWhitelist": "", - "parentWhitelist": "TinyTabs", + "parentWhitelist": ["TinyForm"], "descendantBlacklist": "", "ancestorWhitelist": "" }, @@ -23969,84 +22046,35 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["name", "title"] + "properties": ["label", "rules"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T03:00:11.000Z", - "updated_at": "2023-03-06T07:04:47.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_1" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 20, - "version": "0.1.16", + "icon": "col", "name": { - "zh_CN": "单选" + "zh_CN": "col" }, - "component": "TinyRadio", - "icon": "radio", - "description": "用于配置不同场景的选项,在一组备选项中进行单选", - "doc_url": "", - "screenshot": "img/logo.png", + "component": "TinyCol", + "description": "列配置信息", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "Radio", - "version": "0.1.16", + "exportName": "Col", + "version": "", "destructuring": true }, "group": "component", - "category": "表单组件", - "priority": 5, - "snippets": [ - { - "icon": "radio", - "name": { - "zh_CN": "单选" - }, - "schema": { - "props": { - "text": "单选文本", - "label": "1" - }, - "componentName": "TinyRadio" - }, - "screenshot": "", - "snippetName": "TinyRadio" - } - ], - "schema_fragment": { + "priority": 2, + "schema": { "properties": [ { "label": { @@ -24063,10 +22091,10 @@ }, "content": [ { - "property": "text", + "property": "span", "label": { "text": { - "zh_CN": "文本" + "zh_CN": "栅格列格数" } }, "required": true, @@ -24074,18 +22102,41 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", - "props": {} + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "整行", + "value": 12 + }, + { + "label": "6格", + "value": 6 + }, + { + "label": "4格", + "value": 4 + }, + { + "label": "3格", + "value": 3 + }, + { + "label": "1格", + "value": 1 + } + ] + } }, "description": { - "zh_CN": "" + "zh_CN": "当一行分为12格时,一列可占位多少格" } }, { - "property": "label", + "property": "move", "label": { "text": { - "zh_CN": "单选框的值" + "zh_CN": "栅格左右移动格数" } }, "required": true, @@ -24093,17 +22144,21 @@ "disabled": false, "cols": 12, "widget": { - "props": {} + "component": "NumberConfigurator", + "props": { + "min": -12, + "max": 12 + } }, "description": { - "zh_CN": "" + "zh_CN": "栅格左右移动格数(正数向右,负数向左)" } }, { - "property": "modelValue", + "property": "no", "label": { "text": { - "zh_CN": "绑定值" + "zh_CN": "排序编号" } }, "required": true, @@ -24111,18 +22166,20 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", - "props": {} + "component": "NumberConfigurator", + "props": { + "max": 12 + } }, "description": { - "zh_CN": "双向绑定的当前选中值" + "zh_CN": "排序编号(row中启用order生效)" } }, { - "property": "disabled", + "property": "offset", "label": { "text": { - "zh_CN": "禁用" + "zh_CN": "间隔格数" } }, "required": true, @@ -24130,28 +22187,21 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", - "props": {} + "component": "NumberConfigurator", + "props": { + "min": 0, + "max": 12 + } }, "description": { - "zh_CN": "" + "zh_CN": "栅格左侧的间隔格数" } - } - ] - }, - { - "label": { - "zh_CN": "其他" - }, - "description": { - "zh_CN": "" - }, - "content": [ + }, { - "property": "border", + "property": "xs", "label": { "text": { - "zh_CN": "显示边框" + "zh_CN": "超小屏格数" } }, "required": true, @@ -24159,18 +22209,21 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", - "props": {} + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } }, "description": { - "zh_CN": "" + "zh_CN": "<768px 响应式栅格数" } }, { - "property": "size", + "property": "sm", "label": { "text": { - "zh_CN": "单选框的尺寸" + "zh_CN": "小屏格数" } }, "required": true, @@ -24178,18 +22231,21 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", - "props": {} + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } }, "description": { - "zh_CN": "" + "zh_CN": "≥768px 响应式栅格数" } }, { - "property": "name", + "property": "md", "label": { "text": { - "zh_CN": "原生 name 属性" + "zh_CN": "中屏格数" } }, "required": true, @@ -24197,18 +22253,43 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", - "props": {} + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "≥992px 响应式栅格数" + } + }, + { + "property": "lg", + "label": { + "text": { + "zh_CN": "大屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } }, "description": { - "zh_CN": "" + "zh_CN": "≥1200px 响应式栅格数" } }, { - "property": "tiny_mode", + "property": "xl", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "超大屏格数" } }, "required": true, @@ -24216,66 +22297,26 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "NumberConfigurator", "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] + "min": 1, + "max": 12 } }, "description": { - "zh_CN": "" + "zh_CN": "≥1920px 响应式栅格数" } } ] } ], - "events": { - "onChange": { - "label": { - "zh_CN": "值变化事件" - }, - "description": { - "zh_CN": "绑定值变化时触发的事件" - } - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "当前选中的值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的当前选中值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } + "events": {} }, "configure": { "loop": true, "condition": true, "styles": true, - "isContainer": false, + "isContainer": true, "isModal": false, "nestingRule": { "childWhitelist": "", @@ -24287,140 +22328,35 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["text", "size"] + "properties": ["label", "rules"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-16T02:38:18.000Z", - "updated_at": "2023-03-06T07:05:11.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_13" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 7, - "version": "0.1.16", "name": { - "zh_CN": "表单" + "zh_CN": "按钮" }, - "component": "TinyForm", - "icon": "form", - "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", - "doc_url": "", - "screenshot": "formscreenshot", + "component": "TinyButton", + "icon": "button", + "description": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "Form", - "version": "0.1.16", + "exportName": "Button", + "version": "", "destructuring": true }, "group": "component", - "category": "表单组件", "priority": 2, - "snippets": [ - { - "icon": "form", - "name": { - "zh_CN": "表单" - }, - "schema": { - "props": { - "labelWidth": "80px", - "labelPosition": "top" - }, - "children": [ - { - "props": { - "label": "人员" - }, - "children": [ - { - "props": { - "modelValue": "", - "placeholder": "请输入" - }, - "componentName": "TinyInput" - } - ], - "componentName": "TinyFormItem" - }, - { - "props": { - "label": "密码" - }, - "children": [ - { - "props": { - "type": "password", - "modelValue": "", - "placeholder": "请输入" - }, - "componentName": "TinyInput" - } - ], - "componentName": "TinyFormItem" - }, - { - "props": { - "label": "" - }, - "children": [ - { - "props": { - "text": "提交", - "type": "primary", - "style": "margin-right: 10px" - }, - "componentName": "TinyButton" - }, - { - "props": { - "text": "重置", - "type": "primary" - }, - "componentName": "TinyButton" - } - ], - "componentName": "TinyFormItem" - } - ], - "componentName": "TinyForm" - }, - "screenshot": "", - "snippetName": "tiny-form" - } - ], - "schema_fragment": { + "schema": { "properties": [ { "label": { @@ -24437,18 +22373,21 @@ }, "content": [ { - "property": "disabled", + "property": "text", + "type": "string", + "defaultValue": "按钮文案", "label": { "text": { - "zh_CN": "是否禁用" + "zh_CN": "按钮文字" } }, + "cols": 12, + "hidden": false, "required": true, "readOnly": false, "disabled": false, - "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "I18nConfigurator", "props": {} }, "description": { @@ -24456,10 +22395,51 @@ } }, { - "property": "label-width", + "property": "size", + "type": "select", "label": { "text": { - "zh_CN": "标签宽度" + "zh_CN": "大小" + } + }, + "cols": 12, + "rules": [], + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "medium", + "value": "medium" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "mini", + "value": "mini" + } + ] + } + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" } }, "required": true, @@ -24467,19 +22447,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "表单中标签占位宽度,默认为 80px" + "zh_CN": "是否被禁用" }, "labelPosition": "left" }, { - "property": "inline", + "property": "type", "label": { "text": { - "zh_CN": "行内布局" + "zh_CN": "类型" } }, "required": true, @@ -24487,18 +22467,54 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", - "props": {} + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "primary", + "value": "primary" + }, + { + "label": "success", + "value": "success" + }, + { + "label": "info", + "value": "info" + }, + { + "label": "warning", + "value": "warning" + }, + { + "label": "danger", + "value": "danger" + }, + { + "label": "text", + "value": "text" + } + ] + } }, "description": { - "zh_CN": "行内布局模式,默认为 false" - } - }, + "zh_CN": "设置不同的主题样式" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ { - "property": "label-align", + "property": "round", "label": { "text": { - "zh_CN": "必填标识是否占位" + "zh_CN": "圆角" } }, "required": true, @@ -24506,19 +22522,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "必填标识 * 是否占位" + "zh_CN": "是否圆角按钮" }, "labelPosition": "left" }, { - "property": "label-suffix", + "property": "plain", "label": { "text": { - "zh_CN": "标签后缀" + "zh_CN": "朴素按钮" } }, "required": true, @@ -24526,18 +22542,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "表单中标签后缀" - } + "zh_CN": "是否为朴素按钮" + }, + "labelPosition": "left" }, { - "property": "label-position", + "property": "reset-time", "label": { "text": { - "zh_CN": "标签位置" + "zh_CN": "禁用时间" } }, "required": true, @@ -24545,33 +22562,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "right", - "value": "right" - }, - { - "label": "left ", - "value": "left " - }, - { - "label": "top", - "value": "top" - } - ] - } + "component": "NumberConfigurator", + "props": {} }, "description": { - "zh_CN": "表单中标签的布局位置" + "zh_CN": "设置禁用时间,防止重复提交,单位毫秒" } }, { - "property": "tiny_mode", + "property": "circle", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "圆角" } }, "required": true, @@ -24579,37 +22581,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] - } - }, - "description": { - "zh_CN": "" - } - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "校验属性" - }, - "content": [ + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否圆形按钮" + }, + "labelPosition": "left" + }, { - "property": "model", + "property": "autofocus", "label": { "text": { - "zh_CN": "表单校验对象" + "zh_CN": "聚焦" } }, "required": true, @@ -24617,19 +22601,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "表单数据对象" + "zh_CN": "是否默认聚焦" }, "labelPosition": "left" }, { - "property": "rules", + "property": "loading", "label": { "text": { - "zh_CN": "校验规则" + "zh_CN": "加载中" } }, "required": true, @@ -24637,12 +22621,13 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "表单验证规则" - } + "zh_CN": "是否展示位加载中样式" + }, + "labelPosition": "left" } ], "description": { @@ -24651,104 +22636,12 @@ } ], "events": { - "onValidate": { - "label": { - "zh_CN": "表单项被校验后触发" - }, - "description": { - "zh_CN": "表单项被校验后触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "function", - "type": "Function", - "defaultValue": "(valid) => {}", - "description": { - "zh_CN": "校验回调函数" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onInput": { - "label": { - "zh_CN": "输入值改变时触发" - }, - "description": { - "zh_CN": "在 Input 输入值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "string", - "defaultValue": "", - "description": { - "zh_CN": "输入框输入的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onBlur": { - "label": { - "zh_CN": "失去焦点时触发" - }, - "description": { - "zh_CN": "在 Input 失去焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onFocus": { - "label": { - "zh_CN": "获取焦点时触发" - }, - "description": { - "zh_CN": "在 Input 获取焦点时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "event", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "原生 event" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onClear": { + "onClick": { "label": { - "zh_CN": "点击清空按钮时触发" + "zh_CN": "点击事件" }, "description": { - "zh_CN": "点击清空按钮时触发" + "zh_CN": "按钮被点击时触发的回调函数" }, "type": "event", "functionInfo": { @@ -24757,34 +22650,16 @@ }, "defaultValue": "" } - }, - "slots": { - "default": { - "label": { - "zh_CN": "default" - }, - "description": { - "zh_CN": "默认插槽" - } - }, - "label": { - "label": { - "zh_CN": "label" - }, - "description": { - "zh_CN": "标签文本插槽" - } - } } }, "configure": { "loop": true, "condition": true, "styles": true, - "isContainer": false, + "isContainer": true, "isModal": false, "nestingRule": { - "childWhitelist": "TinyFormItem", + "childWhitelist": "", "parentWhitelist": "", "descendantBlacklist": "", "ancestorWhitelist": "" @@ -24793,158 +22668,159 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["label-width", "", "disabled"] + "properties": ["text", "size"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-09T02:50:45.000Z", - "updated_at": "2023-05-16T07:13:14.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_12" - } - ], - "slots": [ - { - "slotName": "default", - "description": "默认插槽", - "_RID": "row_2" - }, - { - "slotName": "label", - "description": "标签文本插槽", - "_RID": "row_1" - } - ] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 31, - "version": "0.1.16", "name": { - "zh_CN": "表格" + "zh_CN": "输入框" }, - "component": "TinyGrid", - "icon": "grid", - "description": "提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等", - "doc_url": null, - "screenshot": "null", - "tags": null, - "keywords": null, - "dev_mode": "proCode", + "component": "TinyInput", + "icon": "input", + "description": "通过鼠标或键盘输入字符", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "Grid", - "version": "0.1.16", + "exportName": "Input", + "version": "", "destructuring": true }, "group": "component", - "category": "数据组件", - "priority": 2, - "snippets": [ - { - "icon": "grid", - "name": { - "zh_CN": "表格" - }, - "schema": { - "props": { - "data": [ - { - "id": "1", - "city": "福州", - "name": "GFD科技有限公司", - "boole": false, - "employees": 800, - "created_date": "2014-04-30 00:56:00" + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "textarea", + "value": "textarea" + }, + { + "label": "text", + "value": "text" + }, + { + "label": "password", + "value": "password" + } + ] + } + }, + "description": { + "zh_CN": "设置input框的type属性" + } + }, + { + "property": "rows", + "label": { + "text": { + "zh_CN": "行数" + } + }, + "widget": { + "component": "NumberConfigurator" + }, + "description": { + "zh_CN": "输入框行数,只对 type='textarea' 有效" + } + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } }, - { - "id": "2", - "city": "深圳", - "name": "WWW科技有限公司", - "boole": true, - "employees": 300, - "created_date": "2016-07-08 12:36:22" - } - ], - "columns": [ - { - "type": "index", - "width": 60 + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "I18nConfigurator", + "props": {} }, - { - "type": "selection", - "width": 60 + "description": { + "zh_CN": "输入框占位文本" }, - { - "field": "employees", - "title": "员工数" + "labelPosition": "left" + }, + { + "property": "clearable", + "label": { + "text": { + "zh_CN": "清除按钮" + } }, - { - "field": "created_date", - "title": "创建日期" + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} }, - { - "field": "city", - "title": "城市" - } - ], - "editConfig": { - "mode": "cell", - "trigger": "click", - "showStatus": true - } - }, - "componentName": "TinyGrid" - }, - "screenshot": "", - "snippetName": "tinyGrid" - } - ], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础属性" - }, - "description": { - "zh_CN": "基础属性" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ + "description": { + "zh_CN": "是否显示清除按钮" + }, + "labelPosition": "left" + }, { - "property": "data", + "property": "disabled", "label": { "text": { - "zh_CN": "表格数据" + "zh_CN": "是否禁用" } }, "required": true, @@ -24952,428 +22828,2119 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", - "props": { - "language": "json" - } + "component": "SwitchConfigurator", + "props": {} }, - "onChange": "this.delProp('fetchData')", "description": { - "zh_CN": "设置表格的数据" + "zh_CN": "" } }, { - "property": "columns", + "property": "size", "label": { "text": { - "zh_CN": "表格列" + "zh_CN": "尺寸" } }, "required": true, "readOnly": false, "disabled": false, - "cols": 12, - "properties": [ - { - "label": { - "zh_CN": "默认分组" - }, - "content": [ - { - "property": "title", - "type": "string", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "列标题" - } - }, - "widget": { - "component": "MetaBindI18n", - "props": {} - } - }, - { - "property": "field", - "type": "string", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "列键值" - } - }, - "widget": { - "component": "MetaInput", - "props": {} - } - }, - { - "property": "sortable", - "type": "boolean", - "defaultValue": true, - "label": { - "text": { - "zh_CN": "是否排序" - } - }, - "widget": { - "component": "MetaSwitch", - "props": {} - } - }, - { - "property": "width", - "type": "string", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "列宽" - } - }, - "widget": { - "component": "MetaNumber", - "props": {} - } - }, - { - "property": "formatText", - "type": "string", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "内置渲染器" - } - }, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "整数", - "value": "integer" - }, - { - "label": "小数", - "value": "number" - }, - { - "label": "金额", - "value": "money" - }, - { - "label": "百分比", - "value": "rate" - }, - { - "label": "布尔", - "value": "boole" - }, - { - "label": "年月日", - "value": "date" - }, - { - "label": "年月日时分", - "value": "dateTime" - }, - { - "label": "时间", - "value": "time" - }, - { - "label": "省略", - "value": "ellipsis" - } - ] - } - } - }, - { - "property": "renderer", - "type": "object", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "渲染函数" - } - }, - "widget": { - "component": "MetaCodeEditor", - "props": { - "dataType": "JSFunction" - } - } - }, - { - "property": "slots", - "type": "object", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "插槽" - } - }, - "labelPosition": "none", - "widget": { - "component": "MetaJsSlot", - "props": { - "slots": ["header", "default"] - } - } - }, - { - "property": "type", - "label": { - "text": { - "zh_CN": "列类型" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "索引列", - "value": "index" - }, - { - "label": "单选列", - "value": "radio" - }, - { - "label": "多选列", - "value": "selection" - }, - { - "label": "展开列", - "value": "expand" - } - ], - "clearable": true - } - }, - "description": { - "zh_CN": "设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)" - }, - "labelPosition": "left" - }, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ { - "property": "editor", - "label": { - "text": { - "zh_CN": "编辑配置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": { - "language": "json" - } - }, - "description": { - "zh_CN": "单元格编辑渲染配置项,也可以是函数 Function(h, params)" - }, - "labelPosition": "left" + "label": "medium", + "value": "medium" }, { - "property": "filter", - "label": { - "text": { - "zh_CN": "筛选配置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "设置表格列的筛选配置信息。默认值为 false 不配置筛选信息" - } + "label": "small", + "value": "small" }, { - "property": "showOverflow", - "label": { - "text": { - "zh_CN": "内容超出部分省略号配置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "只显示省略号", - "value": "ellipsis" - }, - { - "label": "显示为原生 title", - "value": "title" - }, - { - "label": "显示为 tooltip 提示", - "value": "tooltip" - } - ], - "clearable": true - } - }, - "description": { - "zh_CN": "设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)" - }, - "labelPosition": "left" + "label": "mini", + "value": "mini" } ] } - ], + }, + "description": { + "zh_CN": "输入框尺寸。该属性的可选值为 medium / small / mini" + } + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "maxlength", + "label": { + "text": { + "zh_CN": "最大长度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置 input 框的maxLength" + }, + "labelPosition": "left" + }, + { + "property": "autofocus", + "label": { + "text": { + "zh_CN": "聚焦" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "自动获取焦点" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值改变时触发" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框改变后的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onInput": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框输入的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "slots": { + "prefix": { + "label": { + "zh_CN": "前置内容" + } + }, + "suffix": { + "label": { + "zh_CN": "后置内容" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["value", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "radio", + "name": { + "zh_CN": "单选" + }, + "component": "TinyRadio", + "description": "用于配置不同场景的选项,在一组备选项中进行单选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Radio", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 3, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "text", + "label": { + "text": { + "zh_CN": "文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "label", + "label": { + "text": { + "zh_CN": "单选框的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + } + ] + }, + { + "label": { + "zh_CN": "其他" + }, + "description": { + "zh_CN": "" + }, + "content": [ + { + "property": "border", + "label": { + "text": { + "zh_CN": "显示边框" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "单选框的尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "name", + "label": { + "text": { + "zh_CN": "原生 name 属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值变化事件" + }, + "description": { + "zh_CN": "绑定值变化时触发的事件" + } + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["visible", "width"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "select", + "name": { + "zh_CN": "下拉框" + }, + "component": "TinySelect", + "description": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Select", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 8, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 10, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + }, + "labelPosition": "left" + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "labelPosition": "left" + }, + { + "property": "clearable", + "label": { + "text": { + "zh_CN": "清除按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示清除按钮" + }, + "labelPosition": "left" + }, + { + "property": "searchable", + "label": { + "text": { + "zh_CN": "下拉面板可搜索" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "下拉面板是否可搜索" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "options", + "label": { + "text": { + "zh_CN": "下拉数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "配置 Select 下拉数据项" + }, + "labelPosition": "left" + }, + { + "property": "multiple", + "label": { + "text": { + "zh_CN": "多选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否允许输入框输入或选择多个项" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "multiple-limit", + "label": { + "text": { + "zh_CN": "最大可选值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "多选时用户最多可以选择的项目数,为 0 则不限制" + }, + "labelPosition": "left" + }, + { + "property": "popper-class", + "label": { + "text": { + "zh_CN": "下拉框的类名" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置下拉框自定义的类名" + }, + "labelPosition": "left" + }, + { + "property": "collapse-tags", + "label": { + "text": { + "zh_CN": "多选展示" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "多选时是否将选中值按文字的形式展示" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值改变时触发" + }, + "description": { + "zh_CN": "在下拉框值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "下拉框选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onRemoveTag": { + "label": { + "zh_CN": "多选模式下移除tag时触发" + }, + "description": { + "zh_CN": "多选模式下移除tag时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "被移除Tag对应数据项的值字段" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + }, + "onBeforeMount": "console.log('table on load'); this.options = source.data" + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["multiple", "options"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "switch", + "name": { + "zh_CN": "开关" + }, + "component": "TinySwitch", + "description": "Switch 在两种状态间切换选择", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Switch", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 9, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否被禁用" + }, + "labelPosition": "left" + }, + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "绑定默认值" + } + }, + { + "property": "true-value", + "label": { + "text": { + "zh_CN": "打开时的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置打开时的值(Boolean / String / Number)" + }, + "labelPosition": "left" + }, + { + "property": "false-value", + "label": { + "text": { + "zh_CN": "关闭时的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置关闭时的值(Boolean / String / Number)" + }, + "labelPosition": "left" + }, + { + "property": "mini", + "label": { + "text": { + "zh_CN": "迷你尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示为 mini 模式" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "点击事件" + }, + "description": { + "zh_CN": "按钮被点击时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "开关的状态值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的开关状态值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "mini"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "search", + "name": { + "zh_CN": "搜索框" + }, + "component": "TinySearch", + "description": "指定条件对象进行搜索数据", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Search", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "默认值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框内的默认搜索值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否被禁用" + }, + "labelPosition": "left" + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本 " + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框内的提示占位文本" + }, + "labelPosition": "left" + }, + { + "property": "clearable", + "label": { + "text": { + "zh_CN": "清空按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置显示清空图标按钮" + }, + "labelPosition": "left" + }, + { + "property": "isEnterSearch", + "label": { + "text": { + "zh_CN": "是否Enter键触发search事件" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否在按下键盘Enter键的时候触发search事件" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "mini", + "label": { + "text": { + "zh_CN": "迷你尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开" + }, + "labelPosition": "left" + }, + { + "property": "transparent", + "label": { + "text": { + "zh_CN": "透明模式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "输入完成时触发" + }, + "description": { + "zh_CN": "在 input 框中输入完成时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "type", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "搜索类型,默认值为 {} " + } + }, + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前input框中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onSearch": { + "label": { + "zh_CN": "点击搜索按钮时触发" + }, + "description": { + "zh_CN": "展开状态点击搜索按钮时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "type", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "搜索类型,默认值为 {} " + } + }, + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前input框中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["clearable", "mini"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "checkbox", + "name": { + "zh_CN": "复选框" + }, + "component": "TinyCheckbox", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Checkbox", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 4, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "checked", + "label": { + "text": { + "zh_CN": "勾选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当前是否勾选" + }, + "labelPosition": "left" + }, + { + "property": "text", + "label": { + "text": { + "zh_CN": "文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "复选框的文本" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "border", + "label": { + "text": { + "zh_CN": "边框" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示边框" + } + }, + { + "property": "false-label", + "label": { + "text": { + "zh_CN": "未选中的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "没有选中时的值" + } + }, + { + "property": "true-label", + "label": { + "text": { + "zh_CN": "选择时的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "选中时的值" + } + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "勾选值改变后将触发" + }, + "description": { + "zh_CN": "勾选值改变后将触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["border", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "checkboxbutton", + "name": { + "zh_CN": "复选按钮" + }, + "component": "TinyCheckboxButton", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CheckboxButton", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, "widget": { - "component": "MetaArrayItem", - "props": { - "type": "object", - "textField": "title", - "language": "json", - "buttonText": "编辑列配置", - "title": "编辑列配置", - "expand": true + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" } }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, "description": { - "zh_CN": "表格列的配置信息" + "zh_CN": "" + } + }, + { + "property": "checked", + "label": { + "text": { + "zh_CN": "勾选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当前是否勾选" }, "labelPosition": "left" }, { - "property": "fetchData", + "property": "text", + "label": { + "text": { + "zh_CN": "文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "按钮文本" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "勾选值改变后将触发" + }, + "description": { + "zh_CN": "勾选值改变后将触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "array", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["text", "size"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "checkboxgroup", + "name": { + "zh_CN": "复选按钮组" + }, + "component": "TinyCheckboxGroup", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CheckboxGroup", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", "label": { "text": { - "zh_CN": "服务端数据" + "zh_CN": "绑定值" } }, "required": true, "readOnly": false, "disabled": false, - "onChange": "this.delProp('data')", "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "InputConfigurator", "props": { - "name": "fetchData" + "dataType": "Array" } }, "description": { - "zh_CN": "服务端数据查询方法" - } + "zh_CN": "双向绑定的当前选中值" + }, + "labelPosition": "left" }, { - "property": "pager", + "property": "disabled", "label": { "text": { - "zh_CN": "分页配置" + "zh_CN": "是否禁用" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "defaultValue": { - "attrs": { - "currentPage": 1 - } - }, "widget": { - "component": "MetaCodeEditor", - "props": { - "name": "pager" - } + "component": "SwitchConfigurator", + "props": {} }, "description": { - "zh_CN": "分页配置" + "zh_CN": "" } }, { - "property": "resizable", + "property": "options", "label": { "text": { - "zh_CN": "调整列宽" + "zh_CN": "数据列表" } }, + "defaultValue": [ + { + "label": "标签2" + }, + { + "label": "标签2" + } + ], "required": true, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "是否允许调整列宽" - }, - "labelPosition": "left" + "zh_CN": "checkbox组件列表" + } }, { - "property": "row-id", + "property": "type", "label": { "text": { - "zh_CN": "行数据唯一标识的字段名" + "zh_CN": "类型" } }, - "required": false, + "required": true, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "SelectConfigurator", "props": { - "placeholder": "比如:id" + "options": [ + { + "label": "button", + "value": "button" + }, + { + "label": "checkbox", + "value": "checkbox" + } + ] } }, "description": { - "zh_CN": "行数据唯一标识的字段名" + "zh_CN": "checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用" }, "labelPosition": "left" - }, + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "勾选值改变后将触发" + }, + "description": { + "zh_CN": "勾选值改变后将触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "array", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "type"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "dialogbox", + "name": { + "zh_CN": "对话框" + }, + "component": "TinyDialogBox", + "description": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "DialogBox", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 4, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "select-config", + "property": "title", "label": { "text": { - "zh_CN": "复选框配置" + "zh_CN": "标题" } }, - "required": false, + "required": true, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", - "props": { - "dataType": "JSExpression" - } + "component": "InputConfigurator", + "props": {} }, "description": { - "zh_CN": "表格行数据复选框配置项" + "zh_CN": "弹出框标题" }, "labelPosition": "left" }, { - "property": "edit-rules", + "property": "visible", "label": { "text": { - "zh_CN": "校验规则" + "zh_CN": "显示与隐藏" } }, "required": true, @@ -25381,19 +24948,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "表格校验规则配置项" + "zh_CN": "控制弹出框显示与关闭" }, "labelPosition": "left" }, { - "property": "edit-config", + "property": "width", "label": { "text": { - "zh_CN": "编辑配置项" + "zh_CN": "宽度" } }, "required": true, @@ -25401,18 +24968,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "表格编辑配置项" - } + "zh_CN": "弹出框的宽度" + }, + "labelPosition": "left" }, { - "property": "expand-config", + "property": "draggable", "label": { "text": { - "zh_CN": "复选框配置项" + "zh_CN": "可拖拽" } }, "required": true, @@ -25420,19 +24988,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "复选框配置项" - }, - "labelPosition": "left" + "zh_CN": "是否开启弹窗的拖拽功能,默认值为 false 。" + } }, { - "property": "sortable", + "property": "center", "label": { "text": { - "zh_CN": "可排序" + "zh_CN": "居中" } }, "required": true, @@ -25440,51 +25007,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "是否允许列数据排序。默认为 true 可排序" + "zh_CN": "弹出框的头部与底部内容会自动居中" }, "labelPosition": "left" }, { - "property": "highlight-current-row", - "label": { - "text": { - "zh_CN": "highlight-current-row" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - } - } - ] - }, - { - "label": { - "zh_CN": "其他属性" - }, - "description": { - "zh_CN": "其他属性" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "auto-resize", + "property": "dialog-class", "label": { "text": { - "zh_CN": "父元素响应式监听" + "zh_CN": "自定义类" } }, "required": true, @@ -25492,19 +25027,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "父元素响应式监听(对于父元素可能存在动态变化的场景可能会用到)" + "zh_CN": "自定义配置弹窗类名" }, "labelPosition": "left" }, { - "property": "border", + "property": "append-to-body", "label": { "text": { - "zh_CN": "边框" + "zh_CN": "插入到 Body " } }, "required": true, @@ -25512,19 +25047,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "是否带有纵向边框" + "zh_CN": "DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true" }, "labelPosition": "left" }, { - "property": "seq-serial", + "property": "show-close", "label": { "text": { - "zh_CN": "行号连续" + "zh_CN": "关闭按钮" } }, "required": true, @@ -25532,85 +25067,202 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "设置行序号是否连续,开启分页时有效,该属性的默认值为 false" - }, - "labelPosition": "left" - }, + "zh_CN": "是否显示关闭按钮,默认值为 true 。" + } + } + ] + } + ], + "selector": ".TinyDialogBox", + "events": { + "onClose": { + "label": { + "zh_CN": "关闭弹窗时触发" + }, + "description": { + "zh_CN": "Dialog 关闭的回调" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:visible": { + "label": { + "zh_CN": "双向绑定的状态改变时触发" + }, + "description": { + "zh_CN": "显示或隐藏的状态值,发生改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "boolean", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的显示或隐藏的状态值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + }, + "slots": { + "title": { + "label": { + "zh_CN": "标题区" + }, + "description": { + "zh_CN": "Dialog 标题区的内容" + } + }, + "footer": { + "label": { + "zh_CN": "按钮操作区" + }, + "description": { + "zh_CN": "Dialog 按钮操作区的内容" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": true, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": ".tiny-dialog-box", + "shortcuts": { + "properties": ["visible", "width"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "tabs", + "name": { + "zh_CN": "标签页" + }, + "component": "TinyTabs", + "description": "分隔内容上有关联但属于不同类别的数据集合", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Tabs", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 10, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "drop-config", + "property": "showEditIcon", "label": { "text": { - "zh_CN": "drop-config" + "zh_CN": "显示编辑ICON " } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} - } + }, + "description": { + "zh_CN": "是否显示标题后编辑 ICON" + }, + "labelPosition": "left" }, { - "property": "highlight-hover-row", + "property": "tabs", "label": { "text": { - "zh_CN": "hover 高亮" + "zh_CN": "选项卡" } }, "required": true, "readOnly": false, "disabled": false, + "defaultValue": "", "cols": 12, + "bindState": false, "widget": { - "component": "MetaSwitch", + "component": "ContainerConfigurator", "props": {} }, "description": { - "zh_CN": "鼠标移到行是否要高亮显示" + "zh_CN": "tabs" }, - "labelPosition": "left" + "labelPosition": "none" }, { - "property": "tiny_mode", + "property": "modelValue", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "绑定值" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - } - ] - } + "component": "InputConfigurator", + "props": {} }, "description": { - "zh_CN": "" - } + "zh_CN": "绑定值,选中选项卡的 name" + }, + "labelPosition": "left" }, { - "property": "row-class-name", + "property": "with-add", "label": { "text": { - "zh_CN": "hover 高亮" + "zh_CN": "可新增" } }, "required": true, @@ -25618,19 +25270,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})" + "zh_CN": "标签是否可增加" }, "labelPosition": "left" }, { - "property": "max-height", + "property": "with-close", "label": { "text": { - "zh_CN": "最大高度" + "zh_CN": "可关闭" } }, "required": true, @@ -25638,19 +25290,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "设置表格内容区域(不含表格头部,底部)的最大高度。" + "zh_CN": "标签是否可关闭" }, "labelPosition": "left" }, { - "property": "row-span", + "property": "tab-style", "label": { "text": { - "zh_CN": "行合并" + "zh_CN": "标签页样式" } }, "required": true, @@ -25658,11 +25310,22 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", - "props": {} + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "card", + "value": "card" + }, + { + "label": "border-card", + "value": "border-card" + } + ] + } }, "description": { - "zh_CN": "设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用" + "zh_CN": "标签页样式" }, "labelPosition": "left" } @@ -25670,354 +25333,159 @@ } ], "events": { - "onRow-drop-move": { - "label": { - "zh_CN": "行拖拽移动时" - }, - "description": { - "zh_CN": null - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onRow-drop-start": { - "label": { - "zh_CN": "行拖拽开始" - }, - "description": { - "zh_CN": "行拖拽开始" - }, - "type": "event", - "functionInfo": { - "params": [""], - "returns": {} - } - }, - "onRow-drop-end": { + "onClick": { "label": { - "zh_CN": "行拖拽结束" + "zh_CN": "点击页签时触发事件" }, "description": { - "zh_CN": "行拖拽结束" + "zh_CN": "在 Input 值改变时触发" }, "type": "event", "functionInfo": { - "params": [""], + "params": [ + { + "name": "component", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前点击的页签对象" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], "returns": {} - } - }, - "onSelect-change": { - "label": { - "zh_CN": "当手动勾选并且值发生改变时触发的事件" - }, - "description": { - "zh_CN": "只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件;" }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } + "defaultValue": "" }, - "onSelect-all": { + "onEdit": { "label": { - "zh_CN": "全选时触发的事件" + "zh_CN": "点击新增按钮或关闭按钮或者编辑按钮后触发" }, "description": { - "zh_CN": "只对 type=selection 有效,当手动勾选全选时触发的事件" + "zh_CN": "点击新增按钮或关闭按钮或者编辑按钮后触发" }, "type": "event", "functionInfo": { - "params": [null], + "params": [ + { + "name": "tab", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前操作的页签对象" + } + }, + { + "name": "type", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前操作的类型(remove || add || edit)" + } + } + ], "returns": {} - } + }, + "defaultValue": "" }, - "onCurrent-change": { + "onClose": { "label": { - "zh_CN": "行选中事件" + "zh_CN": "关闭页签时触发" }, "description": { - "zh_CN": "行选中事件" + "zh_CN": "关闭页签时触发" }, "type": "event", "functionInfo": { - "params": ["e"], + "params": [ + { + "name": "name", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "页签名称" + } + } + ], "returns": {} - } + }, + "defaultValue": "" } } }, "configure": { - "loop": false, + "loop": true, "condition": true, "styles": true, - "isContainer": false, + "isContainer": true, + "clickCapture": false, "isModal": false, "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" + "childWhitelist": ["TinyTabItem"], + "parentWhitelist": [], + "descendantBlacklist": [], + "ancestorWhitelist": [] }, "isNullNode": false, "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["columns", "", "resizable"] + "properties": ["size", "tab-style"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue", - "invalidity": [""] - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T10:41:29.000Z", - "updated_at": "2023-03-16T02:01:43.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "row-drop-move", - "label": "行拖拽移动时", - "params": null, - "defaultValue": null, - "description": null, - "_RID": "row_4" - }, - { - "eventName": "row-drop-start", - "label": "行拖拽开始", - "params": "", - "defaultValue": null, - "description": "行拖拽开始", - "_RID": "row_3" - }, - { - "eventName": "row-drop-end", - "label": "行拖拽结束", - "params": "", - "defaultValue": null, - "description": "行拖拽结束", - "_RID": "row_2" - }, - { - "eventName": "select-change", - "label": "当手动勾选并且值发生改变时触发的事件", - "params": null, - "defaultValue": null, - "description": "只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件;", - "_RID": "row_2" - }, - { - "eventName": "select-all", - "label": "全选时触发的事件", - "params": null, - "defaultValue": null, - "description": "只对 type=selection 有效,当手动勾选全选时触发的事件", - "_RID": "row_1" - }, - { - "eventName": "current-change", - "label": "行选中事件", - "params": "e", - "defaultValue": null, - "description": "行选中事件", - "_RID": "row_4" - } - ], - "attrs": [ - { - "property": "highlight-current-row", - "type": "boolean", - "defaultValue": "false", - "enumerateValue": null, - "title": "是否需要高亮当前行", - "_RID": "row_3" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_18" - }, - { - "property": "drop-config", - "type": "object", - "defaultValue": "{}", - "enumerateValue": null, - "title": "拖拽配置", - "_RID": "row_1" - }, - { - "property": "drop-config", - "type": "object", - "defaultValue": "{}", - "enumerateValue": null, - "title": "拖拽配置", - "_RID": "row_1" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 175, - "version": "0.1.16", + "icon": "tabitem", "name": { - "zh_CN": "计数器" + "zh_CN": "tab页签" }, - "component": "TinyNumeric", - "icon": "numeric", - "description": "用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/logo.png", + "component": "TinyTabItem", + "description": "tab 标签页", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "Numeric", - "version": "0.1.16", + "exportName": "TabItem", + "version": "", "destructuring": true }, "group": "component", - "category": "表单组件", "priority": 2, - "snippets": [ - { - "icon": "numeric", - "name": { - "zh_CN": "计数器" - }, - "schema": { - "props": {}, - "componentName": "TinyNumeric" - }, - "screenshot": "http://localhost:9090/assets/images/logo.png", - "snippetName": "TinyNumeric" - } - ], - "schema_fragment": { + "schema": { "properties": [ { - "name": "0", "label": { "zh_CN": "基础信息" }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, "content": [ { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumeric", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "size", - "label": { - "text": { - "zh_CN": "尺寸" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "mini", - "value": "mini" - }, - { - "label": "small", - "value": "small" - }, - { - "label": "medium", - "value": "medium" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "disabled", - "label": { - "text": { - "zh_CN": "禁用" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "mouse-wheel", - "label": { - "text": { - "zh_CN": "鼠标滚动滑轮是否改变数值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "circulate", + "property": "name", "label": { "text": { - "zh_CN": "向上到达最大值后从最小值开始,或反过来" + "zh_CN": "唯一表示" } }, "required": true, @@ -26025,18 +25493,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "唯一表示" } }, { - "property": "step", + "property": "title", "label": { "text": { - "zh_CN": "步长" + "zh_CN": "标题" } }, "required": true, @@ -26044,18 +25512,93 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "标题" } - }, + } + ] + } + ], + "events": {}, + "slots": { + "title": { + "label": { + "zh_CN": "标题" + }, + "description": { + "zh_CN": "自定义标题" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": ["TinyTab"], + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["name", "title"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "breadcrumb", + "name": { + "zh_CN": "面包屑" + }, + "component": "TinyBreadcrumb", + "description": "告诉访问者他们目前在网站中的位置以及如何返回", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Select", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "max", + "property": "separator", "label": { "text": { - "zh_CN": "最大数值" + "zh_CN": "分隔符" } }, "required": true, @@ -26063,37 +25606,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" - } - }, - { - "property": "min", - "label": { - "text": { - "zh_CN": "最小数值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumeric", - "props": {} + "zh_CN": "自定义分隔符" }, - "description": { - "zh_CN": "" - } + "labelPosition": "left" }, { - "property": "controls", + "property": "options", "label": { "text": { - "zh_CN": "是否使用控制按钮" + "zh_CN": "options" } }, "required": true, @@ -26101,7 +25626,7 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "CodeConfigurator", "props": {} }, "description": { @@ -26109,10 +25634,10 @@ } }, { - "property": "controls-position", + "property": "textField", "label": { "text": { - "zh_CN": "控制按钮位置;该属性的可选值为 right" + "zh_CN": "textField" } }, "required": true, @@ -26120,18 +25645,96 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} - }, - "description": { - "zh_CN": "" } - }, + } + ] + } + ], + "events": { + "onSelect": { + "label": { + "zh_CN": "选择 breadcrumb 时触发" + }, + "description": { + "zh_CN": "选择 breadcrumb 时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "clickCapture": false, + "isModal": false, + "nestingRule": { + "childWhitelist": ["TinyBreadcrumbItem"], + "parentWhitelist": [], + "descendantBlacklist": [], + "ancestorWhitelist": [] + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["separator"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "breadcrumb", + "name": { + "zh_CN": "面包屑项" + }, + "component": "TinyBreadcrumbItem", + "description": "", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "BreadcrumbItem", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "step-strictly", + "property": "to", "label": { "text": { - "zh_CN": "是否只能输入 step 的倍数" + "zh_CN": "路由路径" } }, "required": true, @@ -26139,18 +25742,92 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "面包屑项" } - }, + } + ] + } + ], + "slots": { + "default": { + "label": { + "zh_CN": "面包屑项标签" + }, + "description": { + "zh_CN": "面包屑项" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": ["TinyBreadcrumb"], + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["to"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "collapse", + "name": { + "zh_CN": "折叠面板" + }, + "component": "TinyCollapse", + "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Collapse", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 3, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "name", + "property": "modelValue", "label": { "text": { - "zh_CN": "原生属性" + "zh_CN": "当前激活的面板" } }, "required": true, @@ -26158,56 +25835,131 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" - } - }, - { - "property": "label", - "label": { - "text": { - "zh_CN": "输入框关联的label文字" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} + "zh_CN": "双向绑定当前激活的面板" }, - "description": { - "zh_CN": "" + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "激活面板改变时触发" + }, + "description": { + "zh_CN": "当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "data", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前激活面板的值" + } } - }, - { - "property": "placeholder", - "label": { - "text": { - "zh_CN": "输入框内的提示占位文本" + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前激活面板的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的值" } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" } - }, + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["label-width", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "collapseitem", + "name": { + "zh_CN": "折叠面板项" + }, + "component": "TinyCollapseItem", + "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CollapseItem", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "precision", + "property": "name", "label": { "text": { - "zh_CN": "数值精度" + "zh_CN": "唯一标志符" } }, "required": true, @@ -26215,37 +25967,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" - } - }, - { - "property": "format", - "label": { - "text": { - "zh_CN": "数字格式化置项" - } + "zh_CN": "唯一标志符;String | Number" }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, - "description": { - "zh_CN": "" - } + "labelPosition": "left" }, { - "property": "allow-empty", + "property": "title", "label": { "text": { - "zh_CN": "计数器内容可清空" + "zh_CN": "面板标题" } }, "required": true, @@ -26253,109 +25987,25 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" - } - }, - { - "property": "tiny_mode", - "label": { - "text": { - "zh_CN": "tiny_mode" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] - } + "zh_CN": "面板标题" }, - "description": { - "zh_CN": "" - } + "labelPosition": "left" } - ], - "description": { - "zh_CN": "" - } + ] } ], - "events": { - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "计数器的值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "number", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的计数值" - } - } - ], - "returns": {} - } - }, - "onBlur": { - "label": { - "zh_CN": "失去焦点事件" - }, - "description": { - "zh_CN": null - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onFocus": { - "label": { - "zh_CN": "获得焦点事件" - }, - "description": { - "zh_CN": null - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} - } - }, - "onChange": { + "events": {}, + "slots": { + "title": { "label": { - "zh_CN": "值变化事件" + "zh_CN": "标题" }, "description": { - "zh_CN": null - }, - "type": "event", - "functionInfo": { - "params": [null], - "returns": {} + "zh_CN": "自定义标题" } } } @@ -26364,9 +26014,8 @@ "loop": true, "condition": true, "styles": true, - "isContainer": false, + "isContainer": true, "isModal": false, - "isPopper": false, "nestingRule": { "childWhitelist": "", "parentWhitelist": "", @@ -26377,356 +26026,424 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["value", "size"] + "properties": ["label-width", "disabled"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "invalidity": [""], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-10-25T03:02:56.000Z", - "updated_at": "2023-03-06T07:07:18.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "update:modelValue", - "label": "双向绑定的值改变时触发", - "params": null, - "defaultValue": null, - "description": null, - "_RID": "row_2" - }, - { - "eventName": "blur", - "label": "失去焦点事件", - "params": null, - "defaultValue": null, - "description": null, - "_RID": "row_11" - }, - { - "eventName": "focus", - "label": "获得焦点事件", - "params": null, - "defaultValue": null, - "description": null, - "_RID": "row_10" - }, - { - "eventName": "change", - "label": "值变化事件", - "params": null, - "defaultValue": null, - "description": null, - "_RID": "row_11" - } - ], - "attrs": [ - { - "property": "allow-empty", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_9" - }, - { - "property": "format", - "type": "object", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_8" - }, - { - "property": "precision", - "type": "number", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_7" - }, - { - "property": "placeholder", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_6" - }, - { - "property": "label", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_5" - }, - { - "property": "name", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_4" - }, - { - "property": "controls-position", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_3" - }, - { - "property": "controls", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_2" - }, - { - "property": "step-strictly", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - }, - { - "property": "modelValue", - "type": "number", - "defaultValue": null, - "enumerateValue": null, - "title": "绑定值", - "_RID": "row_10" - }, - { - "property": "size", - "type": "array", - "defaultValue": "small", - "enumerateValue": "mini,small,medium", - "title": "尺寸", - "_RID": "row_9" - }, - { - "property": "disabled", - "type": "boolean", - "defaultValue": "false", - "enumerateValue": null, - "title": "禁用", - "_RID": "row_8" - }, - { - "property": "mouse-wheel", - "type": "boolean", - "defaultValue": "true", - "enumerateValue": null, - "title": "鼠标滚动", - "_RID": "row_6" - }, - { - "property": "circulate", - "type": "boolean", - "defaultValue": "false", - "enumerateValue": null, - "title": "数值循环", - "_RID": "row_5" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_2" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 49, - "version": "0.1.17", + "icon": "grid", "name": { - "zh_CN": "复选框按钮组" + "zh_CN": "表格" }, - "component": "TinyCheckboxGroup", - "icon": "checkboxgroup", - "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", - "doc_url": "", - "screenshot": "screenshot", + "component": "TinyGrid", + "description": "提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等", + "docUrl": "", + "screenshot": "", "tags": "", - "keywords": "复选框按钮组", - "dev_mode": "proCode", + "keywords": "", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "CheckboxGroup", - "version": "0.1.17", + "exportName": "Grid", + "version": "", "destructuring": true }, "group": "component", - "category": "表单组件", "priority": 2, - "snippets": [ - { - "icon": "checkboxs", - "name": { - "zh_CN": "复选框组" - }, - "schema": { - "props": { - "type": "checkbox", - "options": [ - { - "text": "复选框1", - "label": "name1" + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础属性" + }, + "description": { + "zh_CN": "基础属性" + }, + "collapse": { + "number": 15, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "data", + "label": { + "text": { + "zh_CN": "表格数据" + } }, - { - "text": "复选框2", - "label": "name2" + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } }, - { - "text": "复选框3", - "label": "name3" + "onChange": "this.delProp('fetchData')", + "description": { + "zh_CN": "设置表格的数据" } - ], - "modelValue": ["name1", "name2"] - }, - "componentName": "TinyCheckboxGroup" - }, - "screenshot": "", - "snippetName": "TinyCheckboxGroup" - }, - { - "icon": "checkboxgroup", - "name": { - "zh_CN": "复选框拖拽按钮组" - }, - "schema": { - "props": { - "modelValue": [] - }, - "children": [ + }, { - "children": [ + "property": "columns", + "label": { + "text": { + "zh_CN": "表格列" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "properties": [ { - "componentName": "div" + "label": { + "zh_CN": "默认分组" + }, + "content": [ + { + "property": "title", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列标题" + } + }, + "widget": { + "component": "I18nConfigurator", + "props": {} + } + }, + { + "property": "field", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列键值" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "sortable", + "type": "boolean", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "是否排序" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "width", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列宽" + } + }, + "widget": { + "component": "NumberConfigurator", + "props": {} + } + }, + { + "property": "formatText", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "内置渲染器" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "整数", + "value": "integer" + }, + { + "label": "小数", + "value": "number" + }, + { + "label": "金额", + "value": "money" + }, + { + "label": "百分比", + "value": "rate" + }, + { + "label": "布尔", + "value": "boole" + }, + { + "label": "年月日", + "value": "date" + }, + { + "label": "年月日时分", + "value": "dateTime" + }, + { + "label": "时间", + "value": "time" + }, + { + "label": "省略", + "value": "ellipsis" + } + ] + } + } + }, + { + "property": "renderer", + "type": "object", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "渲染函数" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "dataType": "JSFunction" + } + } + }, + { + "property": "slots", + "type": "object", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "插槽" + } + }, + "labelPosition": "none", + "widget": { + "component": "JsSlotConfigurator", + "props": { + "slots": ["header", "default"] + } + } + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "列类型" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "索引列", + "value": "index" + }, + { + "label": "单选列", + "value": "radio" + }, + { + "label": "多选列", + "value": "selection" + }, + { + "label": "展开列", + "value": "expand" + } + ], + "clearable": true + } + }, + "description": { + "zh_CN": "设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)" + }, + "labelPosition": "left" + }, + { + "property": "editor", + "label": { + "text": { + "zh_CN": "编辑配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "单元格编辑渲染配置项,也可以是函数 Function(h, params)" + }, + "labelPosition": "left" + }, + { + "property": "filter", + "label": { + "text": { + "zh_CN": "筛选配置" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "设置表格列的筛选配置信息。默认值为 false 不配置筛选信息" + } + }, + { + "property": "showOverflow", + "label": { + "text": { + "zh_CN": "内容超出部分省略号配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "只显示省略号", + "value": "ellipsis" + }, + { + "label": "显示为原生 title", + "value": "title" + }, + { + "label": "显示为 tooltip 提示", + "value": "tooltip" + } + ], + "clearable": true + } + }, + "description": { + "zh_CN": "设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)" + }, + "labelPosition": "left" + } + ] } ], - "componentName": "TinyCheckboxButton" - } - ], - "componentName": "TinyCheckboxGroup" - }, - "screenshot": "", - "snippetName": "TinyCheckboxbuttonGroup" - } - ], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "modelValue", - "label": { - "text": { - "zh_CN": "绑定值" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, "widget": { - "component": "MetaInput", + "component": "ArrayItemConfigurator", "props": { - "dataType": "Array" + "type": "object", + "textField": "title", + "language": "json", + "buttonText": "编辑列配置", + "title": "编辑列配置", + "expand": true } }, "description": { - "zh_CN": "双向绑定选中的选项值" + "zh_CN": "表格列的配置信息" }, "labelPosition": "left" }, { - "property": "disabled", + "property": "fetchData", "label": { "text": { - "zh_CN": "是否禁用" + "zh_CN": "服务端数据" } }, "required": true, "readOnly": false, "disabled": false, + "onChange": "this.delProp('data')", "cols": 12, "widget": { - "component": "MetaSwitch", - "props": {} + "component": "CodeConfigurator", + "props": { + "name": "fetchData", + "dataType": "JSExpression" + } }, "description": { - "zh_CN": "" + "zh_CN": "服务端数据查询方法" } }, { - "property": "options", + "property": "pager", "label": { "text": { - "zh_CN": "数据列表" + "zh_CN": "分页配置" } }, - "defaultValue": [ - { - "label": "标签2" - }, - { - "label": "标签2" - } - ], "required": true, "readOnly": false, "disabled": false, "cols": 12, + "defaultValue": { + "attrs": { + "currentPage": 1 + } + }, "widget": { - "component": "MetaCodeEditor", - "props": {} + "component": "CodeConfigurator", + "props": { + "name": "pager", + "dataType": "JSExpression" + } }, "description": { - "zh_CN": "checkbox组件列表" + "zh_CN": "分页配置" } }, { - "property": "type", + "property": "resizable", "label": { "text": { - "zh_CN": "类型" + "zh_CN": "调整列宽" } }, "required": true, @@ -26734,231 +26451,63 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "button", - "value": "button" - }, - { - "label": "checkbox", - "value": "checkbox" - } - ] - } + "component": "SwitchConfigurator", + "props": {} }, "description": { - "zh_CN": "checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用" + "zh_CN": "是否允许调整列宽" }, "labelPosition": "left" }, { - "property": "tiny_mode", + "property": "row-id", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "行数据唯一标识的字段名" } }, - "required": true, + "required": false, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "InputConfigurator", "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] + "placeholder": "比如:id" } }, "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": { - "onChange": { - "label": { - "zh_CN": "勾选值改变后将触发" - }, - "description": { - "zh_CN": "勾选值改变后将触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "array", - "defaultValue": "", - "description": { - "zh_CN": "选中项的值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - }, - "onUpdate:modelValue": { - "label": { - "zh_CN": "双向绑定的值改变时触发" - }, - "description": { - "zh_CN": "双向绑定选中的选项值改变时触发" - }, - "type": "event", - "functionInfo": { - "params": [ - { - "name": "value", - "type": "array", - "defaultValue": "", - "description": { - "zh_CN": "双向绑定的选中选项值" - } - } - ], - "returns": {} - }, - "defaultValue": "" - } - } - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": false, - "isModal": false, - "nestingRule": { - "childWhitelist": "", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["text", "size"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-06-18T03:09:20.000Z", - "updated_at": "2023-03-06T07:08:09.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": "pc,mobile", - "title": null, - "_RID": "row_45" - } - ], - "slots": [] - }, - "library": null - }, - { - "id": 32, - "version": "0.1.16", - "name": { - "zh_CN": "下拉框" - }, - "component": "TinySelect", - "icon": "select", - "description": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件", - "doc_url": "", - "screenshot": "selectScreenshot", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Select", - "version": "0.1.16", - "destructuring": true - }, - "group": "component", - "category": "表单组件", - "priority": 2, - "snippets": [ - { - "icon": "select", - "name": { - "zh_CN": "下拉框" - }, - "schema": { - "props": { - "options": [ - { - "label": "黄金糕", - "value": "1" + "zh_CN": "行数据唯一标识的字段名" }, - { - "label": "双皮奶", - "value": "2" - } - ], - "modelValue": "", - "placeholder": "请选择" - }, - "componentName": "TinySelect" - }, - "screenshot": "", - "snippetName": "TinySelect" - } - ], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 10, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ + "labelPosition": "left" + }, + { + "property": "select-config", + "label": { + "text": { + "zh_CN": "复选框配置" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "dataType": "JSExpression" + } + }, + "description": { + "zh_CN": "表格行数据复选框配置项" + }, + "labelPosition": "left" + }, { - "property": "modelValue", + "property": "edit-rules", "label": { "text": { - "zh_CN": "绑定值" + "zh_CN": "校验规则" } }, "required": true, @@ -26966,19 +26515,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "双向绑定的当前选中值" + "zh_CN": "表格校验规则配置项" }, "labelPosition": "left" }, { - "property": "placeholder", + "property": "edit-config", "label": { "text": { - "zh_CN": "占位文本" + "zh_CN": "编辑配置项" } }, "required": true, @@ -26986,19 +26535,38 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "输入框占位文本" + "zh_CN": "表格编辑配置项" + } + }, + { + "property": "expand-config", + "label": { + "text": { + "zh_CN": "复选框配置项" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "复选框配置项" }, "labelPosition": "left" }, { - "property": "clearable", + "property": "sortable", "label": { "text": { - "zh_CN": "清除按钮" + "zh_CN": "可排序" } }, "required": true, @@ -27006,39 +26574,55 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "是否显示清除按钮" + "zh_CN": "是否允许列数据排序。默认为 true 可排序" }, "labelPosition": "left" - }, + } + ] + }, + { + "label": { + "zh_CN": "其他" + }, + "description": { + "zh_CN": "其他属性" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "searchable", + "property": "auto-resize", "label": { "text": { - "zh_CN": "下拉面板可搜索" + "zh_CN": "可排序" } }, - "required": false, + "required": true, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "下拉面板是否可搜索" + "zh_CN": "是否允许列数据排序。默认为 true 可排序" }, "labelPosition": "left" }, { - "property": "disabled", + "property": "border", "label": { "text": { - "zh_CN": "是否禁用" + "zh_CN": "边框" } }, "required": true, @@ -27046,18 +26630,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" - } + "zh_CN": "是否带有纵向边框" + }, + "labelPosition": "left" }, { - "property": "options", + "property": "seq-serial", "label": { "text": { - "zh_CN": "下拉数据" + "zh_CN": "行号连续" } }, "required": true, @@ -27065,21 +26650,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", - "props": { - "language": "json" - } + "component": "SwitchConfigurator", + "props": {} }, "description": { - "zh_CN": "配置 Select 下拉数据项" + "zh_CN": "设置行序号是否连续,开启分页时有效,该属性的默认值为 false" }, "labelPosition": "left" }, { - "property": "multiple", + "property": "highlight-current-row", "label": { "text": { - "zh_CN": "多选" + "zh_CN": "高亮当前行" } }, "required": true, @@ -27087,27 +26670,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "是否允许输入框输入或选择多个项" + "zh_CN": "高亮当前行" }, "labelPosition": "left" - } - ] - }, - { - "name": "1", - "label": { - "zh_CN": "其他" - }, - "content": [ + }, { - "property": "multiple-limit", + "property": "highlight-hover-row", "label": { "text": { - "zh_CN": "最大可选值" + "zh_CN": "hover 时候高亮" } }, "required": true, @@ -27115,19 +26690,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "多选时用户最多可以选择的项目数,为 0 则不限制" + "zh_CN": "鼠标移到行是否要高亮显示" }, "labelPosition": "left" }, { - "property": "popper-class", + "property": "row-class-name", "label": { "text": { - "zh_CN": "下拉框的类名" + "zh_CN": "hover 高亮" } }, "required": true, @@ -27135,19 +26710,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "设置下拉框自定义的类名" + "zh_CN": "给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})" }, "labelPosition": "left" }, { - "property": "collapse-tags", + "property": "max-height", "label": { "text": { - "zh_CN": "多选展示" + "zh_CN": "最大高度" } }, "required": true, @@ -27155,19 +26730,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "多选时是否将选中值按文字的形式展示" + "zh_CN": "设置表格内容区域(不含表格头部,底部)的最大高度。" }, "labelPosition": "left" }, { - "property": "tiny_mode", + "property": "row-span", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "行合并" } }, "required": true, @@ -27175,160 +26750,190 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - } - ] - } + "component": "CodeConfigurator", + "props": {} }, "description": { - "zh_CN": "" - } + "zh_CN": "设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用" + }, + "labelPosition": "left" } - ], - "description": { - "zh_CN": "" - } + ] } ], "events": { - "onChange": { + "onFilterChange": { "label": { - "zh_CN": "值改变时触发" + "zh_CN": "筛选条件改变时触发改事件" }, "description": { - "zh_CN": "在下拉框值改变时触发" + "zh_CN": "配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件" }, "type": "event", "functionInfo": { "params": [ { - "name": "value", - "type": "string", + "name": "table", + "type": "Object", "defaultValue": "", "description": { - "zh_CN": "下拉框选中项的值" + "zh_CN": "{$table,filters} 包含 table 实例对象和过滤条件的对象" } } ], "returns": {} }, - "defaultValue": "" + "defaultValue": "function onClick(e) {}" }, - "onUpdate:modelValue": { + "onSortChange": { "label": { - "zh_CN": "双向绑定的值改变时触发" + "zh_CN": "点击列头,执行数据排序前触发的事件" }, "description": { - "zh_CN": "当前选中的值改变时触发" + "zh_CN": "配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件" }, "type": "event", "functionInfo": { "params": [ { - "name": "value", - "type": "string", + "name": "table", + "type": "Object", "defaultValue": "", "description": { - "zh_CN": "双向绑定的当前选中值" + "zh_CN": "{$table,filters} 包含 table 实例对象和过滤条件的对象" } } ], "returns": {} }, - "defaultValue": "" + "defaultValue": "function onClick(e) {}" }, - "onBlur": { + "onSelectAll": { "label": { - "zh_CN": "失去焦点时触发" + "zh_CN": "当手动勾选全选时触发的事件" }, "description": { - "zh_CN": "在 Input 失去焦点时触发" + "zh_CN": "只对 type=selection 有效,当手动勾选全选时触发的事件" }, "type": "event", "functionInfo": { "params": [ { - "name": "event", + "name": "table", "type": "Object", "defaultValue": "", "description": { - "zh_CN": "原生 event" + "zh_CN": " 包含 table 实例对象" + } + }, + { + "name": "checked", + "type": "boolean", + "defaultValue": "", + "description": { + "zh_CN": "勾选状态" + } + }, + { + "name": "selction", + "type": "Array", + "defaultValue": "", + "description": { + "zh_CN": "选中的表格数据数组" } } ], "returns": {} }, - "defaultValue": "" + "defaultValue": "function onClick(e) {}" }, - "onFocus": { + "onSelectChange": { "label": { - "zh_CN": "获取焦点时触发" + "zh_CN": "手动勾选并且值发生改变时触发的事件" }, "description": { - "zh_CN": "在 Input 获取焦点时触发" + "zh_CN": "只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件" }, "type": "event", "functionInfo": { "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": " table 实例对象" + } + }, { "name": "event", "type": "Object", "defaultValue": "", "description": { - "zh_CN": "原生 event" + "zh_CN": " 原生 Event" } } ], "returns": {} }, - "defaultValue": "" + "defaultValue": "function onClick(e) {}" }, - "onClear": { + "onToggleExpandChange": { "label": { - "zh_CN": "点击清空按钮时触发" + "zh_CN": "当行展开或收起时会触发该事件" }, "description": { - "zh_CN": "点击清空按钮时触发" + "zh_CN": "当行展开或收起时会触发该事件" }, "type": "event", "functionInfo": { - "params": [], + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": " 原生 Event" + } + } + ], "returns": {} }, - "defaultValue": "" + "defaultValue": "function onClick(e) {}" }, - "onRemoveTag": { + "onCurrentChange": { "label": { - "zh_CN": "多选模式下移除tag时触发" + "zh_CN": "行点击时触发" }, "description": { - "zh_CN": "多选模式下移除tag时触发" + "zh_CN": "行点击时触发" }, "type": "event", "functionInfo": { - "params": [ - { - "name": "value", - "type": "Object", - "defaultValue": "", - "description": { - "zh_CN": "被移除Tag对应数据项的值字段" - } - } - ], + "params": [], "returns": {} }, "defaultValue": "" } - } + }, + "shortcuts": { + "properties": ["sortable", "columns"] + }, + "contentMenu": { + "actions": ["create symbol"] + }, + "onBeforeMount": "console.log('table on load'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns" }, "configure": { - "loop": false, + "loop": true, "condition": true, "styles": true, "isContainer": false, @@ -27339,109 +26944,39 @@ "descendantBlacklist": "", "ancestorWhitelist": "" }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["multiple", "", "options"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:44:05.000Z", - "updated_at": "2023-03-06T07:08:49.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "searchable", - "type": "boolean", - "defaultValue": "false", - "enumerateValue": null, - "title": "是否可搜索", - "_RID": "row_1" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": "", - "enumerateValue": null, - "title": null, - "_RID": "row_1" - } - ], - "slots": [] - }, - "library": null + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["sortable", "columns"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 22, - "version": "0.1.16", "name": { - "zh_CN": "按钮组" + "zh_CN": "分页" }, - "component": "TinyButtonGroup", - "icon": "buttons", - "description": "以按钮组的方式出现,常用于多项类似操作", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/e4f27d446aef8318e4b4989f1f816b1e_220x220.png", + "component": "TinyPager", + "icon": "pager", + "description": "当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "ButtonGroup", - "version": "0.1.16", + "exportName": "Pager", + "version": "", "destructuring": true }, "group": "component", - "category": "表单组件", - "priority": 2, - "snippets": [ - { - "icon": "buttons", - "name": { - "zh_CN": "互斥按钮组" - }, - "schema": { - "props": { - "data": [ - { - "text": "Button1", - "value": "1" - }, - { - "text": "Button2", - "value": "2" - }, - { - "text": "Button3", - "value": "3" - } - ], - "modelValue": "1" - }, - "componentName": "TinyButtonGroup" - }, - "screenshot": "", - "snippetName": "TinyButtonGroup" - } - ], - "schema_fragment": { + "priority": 1, + "schema": { "properties": [ { "label": { @@ -27451,17 +26986,17 @@ "zh_CN": "基础信息" }, "collapse": { - "number": 6, + "number": 10, "text": { "zh_CN": "显示更多" } }, "content": [ { - "property": "data", + "property": "currentPage", "label": { "text": { - "zh_CN": "按钮组数据" + "zh_CN": "当前页数" } }, "required": true, @@ -27469,52 +27004,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "" - } - }, - { - "property": "size", - "label": { - "text": { - "zh_CN": "组件大小" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "mini", - "value": "mini" - }, - { - "label": "small", - "value": "small" - }, - { - "label": "medium", - "value": "medium" - } - ] - } + "zh_CN": "当前页数,支持 .sync 修饰符" }, - "description": { - "zh_CN": "" - } + "labelPosition": "left" }, { - "property": "plain", + "property": "pageSize", "label": { "text": { - "zh_CN": "是否是朴素按钮" + "zh_CN": "每页条数" } }, "required": true, @@ -27522,18 +27024,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "" - } + "zh_CN": "每页显示条目个数" + }, + "labelPosition": "left" }, { - "property": "disabled", + "property": "pageSizes", "label": { "text": { - "zh_CN": "禁用" + "zh_CN": "可选每页条数" } }, "required": true, @@ -27541,18 +27044,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "设置可选择的每页显示条数" } }, { - "property": "modelValue", + "property": "total", "label": { "text": { - "zh_CN": "modelValue" + "zh_CN": "总条数" } }, "required": true, @@ -27560,61 +27063,109 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "" - } + "zh_CN": "数据总条数" + }, + "labelPosition": "left" }, { - "property": "tiny_mode", + "property": "layout", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "布局" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", + "defaultValue": "total,sizes,prev, pager, next", "widget": { - "component": "MetaSelect", + "component": "InputConfigurator", "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] + "type": "textarea" } }, "description": { - "zh_CN": "" - } + "zh_CN": "组件布局,子组件名用逗号分隔" + }, + "labelPosition": "left" } ] } ], "events": { - "onUpdate:modelValue": { + "onCurrentChange ": { "label": { - "zh_CN": "绑定值改变触发的事件" + "zh_CN": "切换页码时触发" }, "description": { - "zh_CN": null + "zh_CN": "切换页码时触发" }, "type": "event", "functionInfo": { - "params": [null], + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前页的值" + } + } + ], "returns": {} - } + }, + "defaultValue": "" + }, + "onPrevClick ": { + "label": { + "zh_CN": "点击上一页按钮时触发" + }, + "description": { + "zh_CN": "点击上一页按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "page", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前页的页码值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onNextClick": { + "label": { + "zh_CN": "点击下一页按钮时触发" + }, + "description": { + "zh_CN": "点击上一页按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "page", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前页的页码值" + } + } + ], + "returns": {} + }, + "defaultValue": "" } } }, @@ -27634,123 +27185,35 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["disabled", "size"] + "properties": ["currentPage", "total"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T01:53:17.000Z", - "updated_at": "2023-03-10T06:30:58.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "update:modelValue", - "label": "绑定值改变触发的事件", - "params": null, - "defaultValue": null, - "description": null, - "_RID": "row_1" - } - ], - "attrs": [ - { - "property": "modelValue", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_16" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 51, - "version": "0.1.16", "name": { - "zh_CN": "走马灯" + "zh_CN": "弹出编辑" }, - "component": "TinyCarousel", - "icon": "carousel", - "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。", - "doc_url": "", - "screenshot": "screenshoot", - "tags": "tiny-carousel", + "component": "TinyPopeditor", + "icon": "popEditor", + "description": "该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件", + "docUrl": "", + "screenshot": "", + "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "Carousel", - "version": "0.1.16", + "exportName": "PopEditor", + "version": "", "destructuring": true }, "group": "component", - "category": "容器组件", - "priority": 2, - "snippets": [ - { - "icon": "carousel", - "name": { - "zh_CN": "走马灯" - }, - "schema": { - "props": { - "height": "180px" - }, - "children": [ - { - "children": [ - { - "props": { - "style": "margin:10px 0 0 30px" - }, - "componentName": "div" - } - ], - "componentName": "TinyCarouselItem" - }, - { - "children": [ - { - "props": { - "style": "margin:10px 0 0 30px" - }, - "componentName": "div" - } - ], - "componentName": "TinyCarouselItem" - } - ], - "componentName": "TinyCarousel" - }, - "screenshot": "", - "snippetName": "tiny-carousel" - } - ], - "schema_fragment": { + "priority": 6, + "schema": { "properties": [ { "label": { @@ -27760,51 +27223,17 @@ "zh_CN": "基础信息" }, "collapse": { - "number": 12, + "number": 6, "text": { "zh_CN": "显示更多" } }, - "content": [ - { - "property": "arrow", - "label": { - "text": { - "zh_CN": "切换箭头的显示时机" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "总是显示", - "value": "always" - }, - { - "label": "鼠标悬停时显示", - "value": "hover" - }, - { - "label": "从不显示", - "value": "never" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, + "content": [ { - "property": "autoplay", + "property": "modelValue", "label": { "text": { - "zh_CN": "是否自动切换" + "zh_CN": "绑定值" } }, "required": true, @@ -27812,18 +27241,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" - } + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" }, { - "property": "height", + "property": "placeholder", "label": { "text": { - "zh_CN": "走马灯的高度" + "zh_CN": "占位文本" } }, "required": true, @@ -27831,48 +27261,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" - } - }, - { - "property": "indicator-position", - "label": { - "text": { - "zh_CN": "指示器的位置" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "outside", - "value": "outside" - }, - { - "label": "none", - "value": "none" - } - ] - } + "zh_CN": "输入框占位文本" }, - "description": { - "zh_CN": "" - } + "labelPosition": "left" }, { - "property": "initial-index", + "property": "show-clear-btn", "label": { "text": { - "zh_CN": "初始状态激活的幻灯片的索引,从 0 开始 " + "zh_CN": "清除按钮" } }, "required": true, @@ -27880,37 +27281,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" - } - }, - { - "property": "interval", - "label": { - "text": { - "zh_CN": "自动切换的时间间隔,单位为毫秒" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaNumeric", - "props": {} + "zh_CN": "是否显示清除按钮" }, - "description": { - "zh_CN": "" - } + "labelPosition": "left" }, { - "property": "loop", + "property": "disabled", "label": { "text": { - "zh_CN": "是否循环显示" + "zh_CN": "是否禁用" } }, "required": true, @@ -27918,18 +27301,26 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { "zh_CN": "" } - }, + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ { - "property": "show-title", + "property": "width", "label": { "text": { - "zh_CN": "是否显示标题" + "zh_CN": "宽度" } }, "required": true, @@ -27937,290 +27328,39 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "" - } - }, - { - "property": "tiny_mode", - "label": { - "text": { - "zh_CN": "tiny_mode" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "labelPosition": "left", - "type": "string", - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "trigger", - "label": { - "text": { - "zh_CN": "指示器的触发方式,默认为 hover" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "点击", - "value": "click" - }, - { - "label": "悬停", - "value": "hover" - } - ] - } + "zh_CN": "设置弹出面板的宽度(单位像素)" }, - "description": { - "zh_CN": "" - } + "labelPosition": "left" }, { - "property": "type", + "property": "conditions", "label": { "text": { - "zh_CN": "走马灯的类型" + "zh_CN": "过滤条件" } }, "required": true, "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "水平", - "value": "horizontal" - }, - { - "label": "垂直", - "value": "vertical" - }, - { - "label": "卡片", - "value": "card" - } - ] - } - }, - "description": { - "zh_CN": "" - } - } - ] - } - ], - "events": {} - }, - "configure": { - "loop": true, - "condition": true, - "styles": true, - "isContainer": true, - "isModal": false, - "nestingRule": { - "childWhitelist": "TinyCarouselItem", - "parentWhitelist": "", - "descendantBlacklist": "", - "ancestorWhitelist": "" - }, - "isNullNode": false, - "isLayout": false, - "rootSelector": "", - "shortcuts": { - "properties": ["arrow"] - }, - "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": ["default"], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-06-23T12:01:18.000Z", - "updated_at": "2023-03-10T06:29:29.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_15" - } - ], - "slots": [] - }, - "library": null - }, - { - "id": 28, - "version": "0.1.16", - "name": { - "zh_CN": "弹出编辑" - }, - "component": "TinyPopeditor", - "icon": "popeditor", - "description": "该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件", - "doc_url": "", - "screenshot": "null", - "tags": "", - "keywords": "", - "dev_mode": "proCode", - "npm": { - "package": "@opentiny/vue", - "exportName": "Popeditor", - "version": "0.1.16", - "destructuring": true - }, - "group": "component", - "category": "表单组件", - "priority": 2, - "snippets": [ - { - "icon": "popeditor", - "name": { - "zh_CN": "弹出编辑" - }, - "schema": { - "props": { - "gridOp": { - "data": [ - { - "id": "1", - "city": "福州", - "name": "GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司", - "province": "福建" - }, - { - "id": "2", - "city": "深圳", - "name": "WWW科技有限公司", - "province": "广东" - }, - { - "id": "3", - "city": "中山", - "name": "RFV有限责任公司", - "province": "广东" - }, - { - "id": "4", - "city": "龙岩", - "name": "TGB科技有限公司", - "province": "福建" - }, - { - "id": "5", - "city": "韶关", - "name": "YHN科技有限公司", - "province": "广东" - }, - { - "id": "6", - "city": "黄冈", - "name": "WSX科技有限公司", - "province": "武汉" - } - ], - "columns": [ - { - "field": "id", - "title": "ID", - "width": 40 - }, - { - "field": "name", - "title": "名称", - "showOverflow": "tooltip" - }, - { - "field": "province", - "title": "省份", - "width": 80 - }, - { - "field": "city", - "title": "城市", - "width": 80 - } - ] + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当弹出面板配置的是表格时,设置弹出面板中的过滤条件" + }, + "labelPosition": "left" }, - "modelValue": "", - "placeholder": "请选择" - }, - "componentName": "TinyPopeditor" - }, - "screenshot": "", - "snippetName": "TinyPopeditor" - } - ], - "schema_fragment": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ { - "property": "modelValue", + "property": "grid-op", "label": { "text": { - "zh_CN": "绑定值" + "zh_CN": "表格配置" } }, "required": true, @@ -28228,19 +27368,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "双向绑定值" + "zh_CN": "设置弹出面板中表格组件的配置信息" }, "labelPosition": "left" }, { - "property": "placeholder", + "property": "pager-op", "label": { "text": { - "zh_CN": "占位文本" + "zh_CN": "分页配置" } }, "required": true, @@ -28248,19 +27388,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "输入框占位文本" + "zh_CN": "设置弹出编辑框中分页配置" }, "labelPosition": "left" }, { - "property": "show-clear-btn", + "property": "multi", "label": { "text": { - "zh_CN": "清除按钮" + "zh_CN": "多选" } }, "required": true, @@ -28268,19 +27408,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "是否显示清除按钮" + "zh_CN": "设置弹出面板中的数据是否可多选" }, "labelPosition": "left" }, { - "property": "disabled", + "property": "show-pager", "label": { "text": { - "zh_CN": "是否禁用" + "zh_CN": "启用分页" } }, "required": true, @@ -28288,26 +27428,178 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性" } } - ] + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "选中值改变时触发" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前选中项的值" + } + }, + { + "name": "value", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中对象" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClose": { + "label": { + "zh_CN": "弹框关闭时触发的事件" + }, + "description": { + "zh_CN": "弹框关闭时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" }, + "onPageChange": { + "label": { + "zh_CN": "分页切换事件" + }, + "description": { + "zh_CN": "表格模式下分页切换事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前页码数" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["modelValue", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "tree", + "name": { + "zh_CN": "树" + }, + "component": "TinyTree", + "description": "可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Tree", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 12, + "schema": { + "properties": [ { - "name": "1", "label": { - "zh_CN": "其他" + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } }, "content": [ { - "property": "width", + "property": "show-checkbox", "label": { "text": { - "zh_CN": "宽度" + "zh_CN": "多选" } }, "required": true, @@ -28315,19 +27607,48 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "设置弹出面板的宽度(单位像素)" + "zh_CN": "设置接口是否可以多选" }, "labelPosition": "left" }, { - "property": "conditions", + "property": "data", "label": { "text": { - "zh_CN": "过滤条件" + "zh_CN": "数据源" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": [ + { + "label": "一级 1", + "children": [ + { + "label": "二级 1-1" + } + ] + } + ], + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "可配置静态数据源和动态数据源" + } + }, + { + "property": "node-key", + "label": { + "text": { + "zh_CN": "唯一标识" } }, "required": true, @@ -28335,51 +27656,39 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "当弹出面板配置的是表格时,设置弹出面板中的过滤条件" + "zh_CN": "节点唯一标识属性名称" }, "labelPosition": "left" }, { - "property": "tiny_mode", + "property": "icon-trigger-click-node", "label": { "text": { - "zh_CN": "tiny_mode" + "zh_CN": "触发NodeClick 事件" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", - "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "pc", - "value": "pc" - }, - { - "label": "mobile", - "value": "mobile" - } - ] - } + "widget": { + "component": "SwitchConfigurator", + "props": {} }, "description": { - "zh_CN": "" - } + "zh_CN": "点击图标展开节点时是否触发 node-click 事件" + }, + "labelPosition": "left" }, { - "property": "grid-op", + "property": "expand-icon", "label": { "text": { - "zh_CN": "表格配置" + "zh_CN": "展开图标" } }, "required": true, @@ -28387,19 +27696,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "设置弹出面板中表格组件的配置信息" + "zh_CN": "节点展开图标" }, "labelPosition": "left" }, { - "property": "pager-op", + "property": "shrink-icon", "label": { "text": { - "zh_CN": "分页配置" + "zh_CN": "收缩图标" } }, "required": true, @@ -28407,19 +27716,27 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "设置弹出编辑框中分页配置" + "zh_CN": "节点收缩的图标" }, "labelPosition": "left" - }, + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ { - "property": "multi", + "property": "check-on-click-node", "label": { "text": { - "zh_CN": "多选" + "zh_CN": "点击节点选中" } }, "required": true, @@ -28427,19 +27744,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "设置弹出面板中的数据是否可多选" + "zh_CN": "是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点" }, "labelPosition": "left" }, { - "property": "show-pager", + "property": "filter-node-method", "label": { "text": { - "zh_CN": "启用分页" + "zh_CN": "筛选函数" } }, "required": true, @@ -28447,12 +27764,13 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "CodeConfigurator", "props": {} }, "description": { - "zh_CN": "当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性" - } + "zh_CN": "节点筛选函数" + }, + "labelPosition": "left" } ], "description": { @@ -28461,30 +27779,30 @@ } ], "events": { - "onChange": { + "onCheck": { "label": { - "zh_CN": "选中值改变时触发" + "zh_CN": "勾选节点后的事件" }, "description": { - "zh_CN": "在 Input 值改变时触发" + "zh_CN": "勾选节点后的事件" }, "type": "event", "functionInfo": { "params": [ { - "name": "value", - "type": "string", + "name": "data", + "type": "object", "defaultValue": "", "description": { - "zh_CN": "当前选中项的值" + "zh_CN": "当前选中节点信息" } }, { - "name": "value", - "type": "Object", + "name": "currentNode", + "type": "object", "defaultValue": "", "description": { - "zh_CN": "当前选中对象" + "zh_CN": "树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性" } } ], @@ -28492,59 +27810,247 @@ }, "defaultValue": "" }, - "onUpdate:modelValue": { + "onNodeClick": { "label": { - "zh_CN": "双向绑定的值改变时触发" + "zh_CN": "点击节点后的事件" }, "description": { - "zh_CN": "当前选中的值改变时触发" + "zh_CN": "点击节点后的事件" }, "type": "event", "functionInfo": { "params": [ { - "name": "value", - "type": "string", + "name": "data", + "type": "Object", "defaultValue": "", "description": { - "zh_CN": "双向绑定的当前选中值" + "zh_CN": "当前选中节点信息" + } + }, + { + "name": "node", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性" + } + }, + { + "name": "vm", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "树组件实例" } } ], "returns": {} }, "defaultValue": "" - }, - "onClose": { + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["data", "show-checkbox"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "timeline", + "name": { + "zh_CN": "时间线" + }, + "component": "TinyTimeLine", + "description": "TimeLine 时间线", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "TimeLine", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 3, + "schema": { + "properties": [ + { "label": { - "zh_CN": "弹框关闭时触发的事件" + "zh_CN": "基础信息" }, "description": { - "zh_CN": "弹框关闭时触发的事件" + "zh_CN": "基础信息" }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } }, - "defaultValue": "" - }, - "onPageChange": { + "content": [ + { + "property": "horizontal", + "type": "Boolean", + "defaultValue": { + "type": "i18n", + "zh_CN": "布局", + "en_US": "layout", + "key": "" + }, + "label": { + "text": { + "zh_CN": "水平布局" + } + }, + "cols": 12, + "rules": [], + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点和文字横向布局" + } + }, + { + "property": "vertical", + "type": "Boolean", + "defaultValue": { + "type": "i18n", + "zh_CN": "垂直布局", + "en_US": "layout", + "key": "" + }, + "label": { + "text": { + "zh_CN": "垂直布局" + } + }, + "cols": 12, + "rules": [], + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点和文字垂直布局" + } + }, + { + "property": "active", + "label": { + "text": { + "zh_CN": "选中值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "步骤条的选中步骤值" + }, + "labelPosition": "left" + }, + { + "property": "data", + "label": { + "text": { + "zh_CN": "数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": [ + { + "name": "配置基本信息", + "status": "ready" + }, + { + "name": "配置报价", + "status": "wait" + }, + { + "name": "完成报价", + "status": "wait" + } + ], + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "时间线步骤条数据" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onClick": { "label": { - "zh_CN": "分页切换事件" + "zh_CN": "节点的点击时触发" }, "description": { - "zh_CN": "表格模式下分页切换事件" + "zh_CN": "节点的点击时触发的回调函数" }, "type": "event", "functionInfo": { "params": [ + { + "name": "type", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "点击节点的下标" + } + }, { "name": "value", - "type": "String", + "type": "string", "defaultValue": "", "description": { - "zh_CN": "当前页码数" + "zh_CN": "当前节点对象:{ name: 节点名称, time: 时间 }" } } ], @@ -28570,84 +28076,35 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["placeholder", "show-clear-btn"] + "properties": ["active", "data"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "slots": [], - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-19T02:34:37.000Z", - "updated_at": "2023-03-10T06:22:27.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_11" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 59, - "version": "0.1.16", + "icon": "tooltip", "name": { - "zh_CN": "日期选择器" + "zh_CN": "文字提示框" }, - "component": "TinyDatePicker", - "icon": "datepicker", - "description": "用于设置/选择日期,包括年月/年月日/年月日时分/年月日时分秒日期格式。", - "doc_url": "", - "screenshot": "screenshoot", + "component": "TinyTooltip", + "description": "动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "DatePicker", - "version": "0.1.16", + "exportName": "Tooltip", + "version": "", "destructuring": true }, "group": "component", - "category": "表单组件", - "priority": 2, - "snippets": [ - { - "icon": "datepick", - "name": { - "zh_CN": "日期选择器" - }, - "schema": { - "props": { - "modelValue": "", - "placeholder": "请选择日期" - }, - "componentName": "TinyDatePicker" - }, - "screenshot": "", - "snippetName": "tiny-date-picker" - } - ], - "schema_fragment": { + "priority": 11, + "schema": { "properties": [ { "label": { @@ -28657,17 +28114,17 @@ "zh_CN": "基础信息" }, "collapse": { - "number": 6, + "number": 20, "text": { "zh_CN": "显示更多" } }, "content": [ { - "property": "align", + "property": "placement", "label": { "text": { - "zh_CN": "对齐方式" + "zh_CN": "提示位置" } }, "required": true, @@ -28675,178 +28132,199 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", + "component": "SelectConfigurator", "props": { "options": [ { - "label": "左对齐", + "label": "top", + "value": "top" + }, + { + "label": "top-start", + "value": "top-start" + }, + { + "label": "top-end", + "value": "top-end" + }, + { + "label": "bottom", + "value": "bottom" + }, + { + "label": "bottom-start", + "value": "bottom-start" + }, + { + "label": "bottom-end", + "value": "bottom-end" + }, + { + "label": "left", "value": "left" }, { - "label": "居中对齐", - "value": "center" + "label": "left-start", + "value": "left-start" + }, + { + "label": "left-end", + "value": "left-end" }, { - "label": "右对齐", + "label": "right", "value": "right" - } - ] - } - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "clear-icon", - "label": { - "text": { - "zh_CN": "自定义清空图标的类名" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaCodeEditor", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "clearable", - "label": { - "text": { - "zh_CN": "是否显示清除按钮" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "tiny_mode", - "label": { - "text": { - "zh_CN": "tiny_mode" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "labelPosition": "left", - "type": "string", - "widget": { - "component": "MetaSelect", - "props": { - "options": [ + }, { - "label": "pc", - "value": "pc" + "label": "right-start", + "value": "right-start" }, { - "label": "mobile", - "value": "mobile" + "label": "right-end", + "value": "right-end" } ] } }, "description": { - "zh_CN": "" - } - }, - { - "property": "default-time", - "label": { - "text": { - "zh_CN": "范围选择时选中日期所使用的当日内具体时刻,可选值为 支持的日期格式" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} + "zh_CN": "Tooltip 的出现位置" }, - "description": { - "zh_CN": "" - } + "labelPosition": "left" }, { - "property": "default-value", + "property": "content", "label": { "text": { - "zh_CN": "可选,选择器打开时默认显示的时间,可选值为 可被new Date()解析" + "zh_CN": "内容" } }, "required": true, "readOnly": false, "disabled": false, + "defaultValue": "提示信息", "cols": 12, "widget": { + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "显示的内容,也可以通过 slot#content 传入 DOM" } }, { - "property": "disabled", + "property": "modelValue", "label": { "text": { - "zh_CN": "禁用" + "zh_CN": "是否可见" } }, - "required": true, - "readOnly": false, - "disabled": false, + "defaultValue": true, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "状态是否可见" } }, { - "property": "editable", + "property": "manual", "label": { "text": { - "zh_CN": "文本框可输入" + "zh_CN": "手动控制" } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, + "defaultValue": true, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效" } - }, + } + ] + } + ], + "events": {}, + "slots": { + "content": { + "label": { + "zh_CN": "提示内容" + }, + "description": { + "zh_CN": "自定义提示内容" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "isPopper": true, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "content"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "popover", + "name": { + "zh_CN": "提示框" + }, + "component": "TinyPopover", + "description": "Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Popover", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 7, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ { - "property": "end-placeholder", + "property": "modelValue", "label": { "text": { - "zh_CN": "范围选择时结束日期的占位内容" + "zh_CN": "绑定值" } }, "required": true, @@ -28854,37 +28332,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" - } - }, - { - "property": "format", - "label": { - "text": { - "zh_CN": "显示在输入框中的格式" - } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} + "zh_CN": "双向绑定,手动控制是否可见的状态值" }, - "description": { - "zh_CN": "" - } + "labelPosition": "left" }, { - "property": "isutc8", + "property": "placement", "label": { "text": { - "zh_CN": "默认值为 false ,设置为 true 时切换系统默认时区,时间依然显示为东八区时间。适用场景为海外地区显示东八区时间" + "zh_CN": "位置" } }, "required": true, @@ -28892,37 +28352,70 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" - } - }, - { - "property": "name", - "label": { - "text": { - "zh_CN": "原生属性" + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "top", + "value": "top" + }, + { + "label": "top-start", + "value": "top-start" + }, + { + "label": "top-end", + "value": "top-end" + }, + { + "label": "bottom", + "value": "bottom" + }, + { + "label": "bottom-start", + "value": "bottom-start" + }, + { + "label": "bottom-end", + "value": "bottom-end" + }, + { + "label": "left", + "value": "left" + }, + { + "label": "left-start", + "value": "left-start" + }, + { + "label": "left-end", + "value": "left-end" + }, + { + "label": "right", + "value": "right" + }, + { + "label": "right-start", + "value": "right-start" + }, + { + "label": "right-end", + "value": "right-end" + } + ] } }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaInput", - "props": {} - }, "description": { "zh_CN": "" - } + }, + "labelPosition": "left" }, { - "property": "picker-options", + "property": "trigger", "label": { "text": { - "zh_CN": "当前时间日期选择器特有的选项参考下表" + "zh_CN": "触发方式" } }, "required": true, @@ -28930,18 +28423,37 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", - "props": {} + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "click", + "value": "click" + }, + { + "label": "focus", + "value": "focus" + }, + { + "label": "hover", + "value": "hover" + }, + { + "label": "manual", + "value": "manual" + } + ] + } }, "description": { - "zh_CN": "" + "zh_CN": "触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click" } }, { - "property": "placeholder", + "property": "popper-class", "label": { "text": { - "zh_CN": "非范围选择时的占位内容" + "zh_CN": "自定义类" } }, "required": true, @@ -28949,18 +28461,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" - } + "zh_CN": "为 popper 添加类名" + }, + "labelPosition": "left" }, { - "property": "popper-append-to-body", + "property": "visible-arrow", "label": { "text": { - "zh_CN": "是否将弹出框插入至 body 元素。在弹出框的定位出现问题时,可将该属性设置为 false (可参考 select 组件)" + "zh_CN": "显示箭头" } }, "required": true, @@ -28968,18 +28481,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "是否显示 Tooltip 箭头" } }, { - "property": "popper-class", + "property": "append-to-body", "label": { "text": { - "zh_CN": "为 popper 添加类名(可参考 popover 组件)" + "zh_CN": "添加到body上" } }, "required": true, @@ -28987,18 +28500,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "Popover弹窗是否添加到body上" } }, { - "property": "range-separator", + "property": "arrow-offset", "label": { "text": { - "zh_CN": "选择范围时的分隔符" + "zh_CN": "箭头的位置偏移" } }, "required": true, @@ -29006,18 +28519,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "箭头的位置偏移,该属性的默认值为 0" } }, { - "property": "readonly", + "property": "close-delay", "label": { "text": { - "zh_CN": "设置日历组件是否只读" + "zh_CN": "隐藏延迟" } }, "required": true, @@ -29025,18 +28538,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "触发方式为 hover 时的隐藏延迟,单位为毫秒" } }, { - "property": "size", + "property": "content", "label": { "text": { - "zh_CN": "输入框尺寸" + "zh_CN": "显示的内容" } }, "required": true, @@ -29044,33 +28557,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "中等尺寸", - "value": "medium" - }, - { - "label": "较小尺寸", - "value": "small" - }, - { - "label": "迷你尺寸", - "value": "mini" - } - ] - } + "component": "InputConfigurator", + "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "显示的内容,也可以通过 slot 传入 DOM" } }, { - "property": "start-placeholder", + "property": "disabled", "label": { "text": { - "zh_CN": "范围选择时开始日期的占位内容" + "zh_CN": "禁用" } }, "required": true, @@ -29078,18 +28576,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "Popover 是否可用" } }, { - "property": "suffix-icon ", + "property": "offset", "label": { "text": { - "zh_CN": "自定义后置图标的类名,prefix-icon 自 AUI 3.8.0 版本将替换为 suffix-icon " + "zh_CN": "位置偏移量" } }, "required": true, @@ -29097,18 +28595,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "出现位置的偏移量" } }, { - "property": "time-arrow-control", + "property": "open-delay", "label": { "text": { - "zh_CN": "通过箭头按钮控制时间选择,当 type 为 datetime、datetimerange 时使用,默认为 通过鼠标滚轮滚动选择时间" + "zh_CN": "显示延迟" } }, "required": true, @@ -29116,18 +28614,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "触发方式为 hover 时的显示延迟,单位为毫秒" } }, { - "property": "type", + "property": "popper-options", "label": { "text": { - "zh_CN": "显示类型" + "zh_CN": "popper.js的参数" } }, "required": true, @@ -29135,57 +28633,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "年", - "value": "year" - }, - { - "label": "月", - "value": "month" - }, - { - "label": "多个日期", - "value": "dates" - }, - { - "label": "周", - "value": "week" - }, - { - "label": "日期范围", - "value": "daterange" - }, - { - "label": "日期", - "value": "date" - }, - { - "label": "日期时间", - "value": "datetime" - }, - { - "label": "日期时间范围", - "value": "datetimerange" - }, - { - "label": "月范围", - "value": "monthrange" - } - ] - } + "component": "CodeConfigurator", + "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "popper.js 的参数" } }, { - "property": "unlink-panels", + "property": "title", "label": { "text": { - "zh_CN": "在范围选择器里取消两个日期面板之间的联动" + "zh_CN": "标题" } }, "required": true, @@ -29193,18 +28652,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "标题" } }, { - "property": "validate-event", + "property": "transform-origin", "label": { "text": { - "zh_CN": "设置日期选择器在输入时是否会触发表单校验" + "zh_CN": "旋转中心点" } }, "required": true, @@ -29212,18 +28671,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "组件的旋转中心点,组件的旋转中心点" } }, { - "property": "value", + "property": "transition", "label": { "text": { - "zh_CN": "绑定值" + "zh_CN": "定义渐变动画" } }, "required": true, @@ -29231,18 +28690,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "InputConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "该属性的默认值为 fade-in-linear" } }, { - "property": "value-format", + "property": "width", "label": { "text": { - "zh_CN": "指定绑定值的格式。不指定则绑定值为 Date 对象" + "zh_CN": "宽度" } }, "required": true, @@ -29250,24 +28709,49 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "宽度" } } ] } - ], - "events": {} + ], + "events": { + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "手动控制是否可见的状态值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "boolean", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的可见状态值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } }, "configure": { "loop": true, "condition": true, "styles": true, - "isContainer": false, + "isContainer": true, "isModal": false, + "isPopper": true, "nestingRule": { "childWhitelist": "", "parentWhitelist": "", @@ -29278,113 +28762,55 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": [""] + "properties": ["visible", "width"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "invalidity": [], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-06-28T01:54:39.000Z", - "updated_at": "2023-03-10T06:21:52.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": true, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_13" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 180, - "version": "0.1.16", "name": { - "zh_CN": "下拉菜单" + "zh_CN": "日期选择" }, - "component": "TinyDropdown", - "icon": "dropdown", - "description": "Dropdown 下拉菜单", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/logo.png", + "component": "TinyDatePicker", + "icon": "datepick", + "description": "用于输入或选择日期", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "Dropdown", - "version": "0.1.20", + "exportName": "DatePicker", + "version": "", "destructuring": true }, "group": "component", - "category": "导航组件", - "priority": 2, - "snippets": [ - { - "name": { - "zh_CN": "下拉菜单" - }, - "icon": "dropdown", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "snippetName": "TinyDropdown", - "schema": { - "componentName": "TinyDropdown", - "props": { - "trigger": "hover", - "title": "下拉菜单", - "menuOptions": { - "options": [ - { - "label": "老友粉", - "disabled": true - }, - { - "label": "狮子头", - "divided": true - }, - { - "label": "黄金糕", - "divided": true - } - ] - } - } - } - } - ], - "schema_fragment": { + "priority": 1, + "schema": { "properties": [ { - "name": "0", "label": { "zh_CN": "基础信息" }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, "content": [ { - "property": "title", + "property": "modelValue", "label": { "text": { - "zh_CN": "触发源名称" + "zh_CN": "绑定值" } }, "required": true, @@ -29392,19 +28818,57 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", + "component": "I18nConfigurator", "props": {} }, "description": { - "zh_CN": "不使用默认插槽时,title属性可以配置菜单标题" + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "日期", + "value": "date" + }, + { + "label": "日期时间", + "value": "datetime" + }, + { + "label": "周", + "value": "week" + }, + { + "label": "月份", + "value": "month" + }, + { + "label": "年份", + "value": "year" + } + ] + } }, - "type": "string" + "description": { + "zh_CN": "设置日期框的type属性" + } }, { - "property": "menuOptions", + "property": "placeholder", "label": { "text": { - "zh_CN": "菜单子项" + "zh_CN": "占位文本" } }, "required": true, @@ -29412,19 +28876,19 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "I18nConfigurator", "props": {} }, "description": { - "zh_CN": "配置式配置 DropdownMenu 属性 {\"options\":[],\"textField\":\"label\",\"popper-class\":\"\",\"placement\":\"bottom-end\"}\t" + "zh_CN": "输入框占位文本" }, - "type": "object" + "labelPosition": "left" }, { - "property": "trigger", + "property": "clearable", "label": { "text": { - "zh_CN": "触发下拉的行为" + "zh_CN": "清除按钮" } }, "required": true, @@ -29432,102 +28896,38 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSelect", - "props": { - "options": [ - { - "label": "hover", - "value": "hover" - }, - { - "label": "click", - "value": "click" - } - ] - } + "component": "SwitchConfigurator", + "props": {} }, "description": { - "zh_CN": "触发下拉的行为。可选值(hover, click),默认值:hover" + "zh_CN": "是否显示清除按钮" }, - "type": "string", - "properties": [ - { - "label": { - "zh_CN": "默认分组" - }, - "content": [ - { - "property": "title", - "type": "string", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "customProperty" - } - }, - "widget": { - "component": "MetaInput", - "props": {} - } - }, - { - "property": "id", - "type": "string", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "customProperty" - } - }, - "widget": { - "component": "MetaInput", - "props": {} - } - }, - { - "property": "field", - "type": "array", - "defaultValue": "", - "label": { - "text": { - "zh_CN": "customProperty" - } - }, - "widget": { - "component": "MetaSelect", - "props": {} - } - } - ] - } - ], "labelPosition": "left" }, { - "property": "hide-timeout", + "property": "disabled", "label": { "text": { - "zh_CN": "收起下拉菜单的延时" + "zh_CN": "禁用" } }, - "required": true, + "required": false, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "收起下拉菜单的延时(仅在 trigger 为 hover 时有效)。默认:150 毫秒" - }, - "type": "number" + "zh_CN": "禁用" + } }, { - "property": "show-timeout", + "property": "readonly", "label": { "text": { - "zh_CN": "展开下拉菜单的延时" + "zh_CN": "是否只读" } }, "required": true, @@ -29535,19 +28935,18 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaNumeric", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "展开下拉菜单的延时(仅在 trigger 为 hover 时有效)。默认:250 毫秒" - }, - "type": "number" + "zh_CN": "" + } }, { - "property": "hide-on-click", + "property": "size", "label": { "text": { - "zh_CN": "点击菜单项后隐藏菜单" + "zh_CN": "尺寸" } }, "required": true, @@ -29555,55 +28954,75 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", - "props": {} + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "medium", + "value": "medium" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "mini", + "value": "mini" + } + ] + } }, "description": { - "zh_CN": "是否在点击菜单项后隐藏菜单。默认为 true。" - }, - "type": "boolean" - }, + "zh_CN": "日期框尺寸。该属性的可选值为 medium / small / mini" + } + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ { - "property": "size", + "property": "maxlength", "label": { "text": { - "zh_CN": "size" + "zh_CN": "最大长度" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "string", "widget": { - "component": "MetaInput", + "component": "NumberConfigurator", "props": {} }, "description": { - "zh_CN": "菜单尺寸,在split-button为 true 的情况下也对触发按钮生效。可选值(medium / small / mini)" - } + "zh_CN": "设置 input 框的maxLength" + }, + "labelPosition": "left" }, { - "property": "disabled", + "property": "autofocus", "label": { "text": { - "zh_CN": "disabled" + "zh_CN": "聚焦" } }, "required": true, "readOnly": false, "disabled": false, "cols": 12, - "labelPosition": "left", - "type": "boolean", "widget": { - "component": "MetaSwitch", + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "是否禁用。默认值:false" - } + "zh_CN": "自动获取焦点" + }, + "labelPosition": "left" } ], "description": { @@ -29612,62 +29031,134 @@ } ], "events": { - "onVisible-change": { + "onChange": { + "label": { + "zh_CN": "值改变时触发" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框改变后的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onInput": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框输入的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { "label": { - "zh_CN": "下拉框出现/隐藏时触发" + "zh_CN": "双向绑定的值改变时触发" }, "description": { - "zh_CN": "下拉框出现/隐藏时触发" + "zh_CN": "在 Input 输入值改变时触发" }, "type": "event", "functionInfo": { - "params": [null], + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的值" + } + } + ], "returns": {} - } + }, + "defaultValue": "" }, - "onButton-click": { + "onBlur": { "label": { - "zh_CN": "点击左侧按钮的回调" + "zh_CN": "失去焦点时触发" }, "description": { - "zh_CN": "点击左侧按钮的回调" + "zh_CN": "在 Input 失去焦点时触发" }, "type": "event", "functionInfo": { - "params": [null], + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], "returns": {} - } + }, + "defaultValue": "" }, - "onItem-click": { + "onFocus": { "label": { - "zh_CN": "点击菜单项触发的事件回调" + "zh_CN": "获取焦点时触发" }, "description": { - "zh_CN": "点击菜单项触发的事件回调" + "zh_CN": "在 Input 获取焦点时触发" }, "type": "event", "functionInfo": { - "params": [null], + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], "returns": {} - } - } - }, - "slots": { - "dropdown": { - "label": { - "zh_CN": "dropdown" }, - "description": { - "zh_CN": "下拉列表,通常是 组件。" - } + "defaultValue": "" }, - "default": { + "onClear": { "label": { - "zh_CN": "default" + "zh_CN": "点击清空按钮时触发" }, "description": { - "zh_CN": "触发下拉列表显示的元素。 注意: 必须是一个元素或者或者组件。" - } + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" } } }, @@ -29677,7 +29168,6 @@ "styles": true, "isContainer": true, "isModal": false, - "isPopper": false, "nestingRule": { "childWhitelist": "", "parentWhitelist": "", @@ -29688,228 +29178,94 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": ["size", "trigger"] + "properties": ["value", "disabled"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "invalidity": [""], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-11-09T03:20:31.000Z", - "updated_at": "2023-05-05T08:35:46.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": false, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [ - { - "eventName": "visible-change", - "label": "下拉框出现/隐藏时触发", - "params": null, - "defaultValue": null, - "description": "下拉框出现/隐藏时触发", - "_RID": "row_8" - }, - { - "eventName": "button-click", - "label": "点击左侧按钮的回调", - "params": null, - "defaultValue": null, - "description": "点击左侧按钮的回调", - "_RID": "row_7" - }, - { - "eventName": "item-click", - "label": "点击菜单项触发的事件回调", - "params": null, - "defaultValue": null, - "description": "点击菜单项触发的事件回调", - "_RID": "row_6" - } - ], - "attrs": [ - { - "property": "menuOptions", - "type": "object", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_2" - }, - { - "property": "title", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - }, - { - "property": "size", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "菜单尺寸", - "_RID": "row_4" - }, - { - "property": "trigger", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "触发下拉的行为", - "_RID": "row_3" - }, - { - "property": "trigger", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "触发下拉的行为", - "_RID": "row_3" - }, - { - "property": "trigger", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": "触发下拉的行为", - "_RID": "row_3" - }, - { - "property": "tiny_mode", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_12" - }, - { - "property": "disabled", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_16" - } - ], - "slots": [ - { - "slotName": "dropdown", - "description": "下拉列表,通常是 组件。", - "_RID": "row_15" - }, - { - "slotName": "default", - "description": "触发下拉列表显示的元素。 注意: 必须是一个元素或者或者组件。", - "_RID": "row_14" - } - ] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } }, { - "id": 184, - "version": "0.1.16", "name": { - "zh_CN": "柱状图" + "zh_CN": "数字输入框" }, - "component": "TinyChartHistogram", - "icon": "histogram ", - "description": "基于 eCharts 封装的柱状图", - "doc_url": "", - "screenshot": "http://localhost:9090/assets/images/logo.png", + "component": "TinyNumeric", + "icon": "numeric", + "description": "通过鼠标或键盘输入字符", + "docUrl": "", + "screenshot": "", "tags": "", "keywords": "", - "dev_mode": "proCode", + "devMode": "proCode", "npm": { "package": "@opentiny/vue", - "exportName": "ChartHistogram", - "version": "0.1.16", + "exportName": "Numeric", + "version": "", "destructuring": true }, "group": "component", - "category": "图表组件", - "priority": 2, - "snippets": [ - { - "name": { - "zh_CN": "柱状图" - }, - "icon": "histogram ", - "screenshot": "http://localhost:9090/assets/images/logo.png", - "snippetName": "TinyChartHistogram", - "schema": { - "componentName": "TinyChartHistogram", - "props": { - "data": { - "columns": ["日期", "访问用户", "下单用户", "下单率"], - "rows": [ - { - "日期": "1/1", - "访问用户": 1393, - "下单用户": 1093, - "下单率": 0.32 - }, - { - "日期": "1/2", - "访问用户": 3530, - "下单用户": 3230, - "下单率": 0.26 - }, - { - "日期": "1/3", - "访问用户": 2923, - "下单用户": 2623, - "下单率": 0.76 - }, - { - "日期": "1/4", - "访问用户": 1723, - "下单用户": 1423, - "下单率": 0.49 - }, - { - "日期": "1/5", - "访问用户": 3792, - "下单用户": 3492, - "下单率": 0.323 - }, - { - "日期": "1/6", - "访问用户": 4593, - "下单用户": 4293, - "下单率": 0.78 - } - ] - } - } - } - } - ], - "schema_fragment": { + "priority": 1, + "schema": { "properties": [ { - "name": "0", "label": { "zh_CN": "基础信息" }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, "content": [ { - "property": "data", + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "labelPosition": "left" + }, + { + "property": "allow-empty", "label": { "text": { - "zh_CN": "图表数据" + "zh_CN": "内容可清空" } }, "required": true, @@ -29917,26 +29273,80 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否内容可清空" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", "props": {} }, "description": { - "zh_CN": "" + "zh_CN": "禁用" + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "medium", + "value": "medium" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "mini", + "value": "mini" + } + ] + } + }, + "description": { + "zh_CN": "输入框尺寸。该属性的可选值为 medium / small / mini" } }, { - "property": "settings", + "property": "controls", "label": { "text": { - "zh_CN": "图表配置" + "zh_CN": "是否使用加减按钮" } }, - "required": true, + "required": false, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", + "component": "SwitchConfigurator", "props": {} }, "description": { @@ -29944,10 +29354,10 @@ } }, { - "property": "extend", + "property": "controls-position", "label": { "text": { - "zh_CN": "图表扩展配置,参考eChart" + "zh_CN": "加减按钮位置" } }, "required": true, @@ -29955,123 +29365,254 @@ "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", - "props": {} + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "左右两侧", + "value": "" + }, + { + "label": "只在右侧", + "value": "right" + } + ] + } }, "description": { - "zh_CN": "" - } + "zh_CN": "加减按钮位置" + }, + "labelPosition": "left" }, { - "property": "height", + "property": "precision", "label": { "text": { - "zh_CN": "图表容器的高度" + "zh_CN": "数值精度" } }, - "required": true, + "required": false, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", - "props": {} + "component": "NumberConfigurator", + "props": { + "allowEmpty": true + } }, "description": { - "zh_CN": "" - } + "zh_CN": "数值精度" + }, + "labelPosition": "left" }, { - "property": "width", + "property": "step", "label": { "text": { - "zh_CN": "图表容器的宽度" + "zh_CN": "步长" } }, - "required": true, + "required": false, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaInput", - "props": {} + "component": "NumberConfigurator", + "props": { + "allowEmpty": true + } }, "description": { - "zh_CN": "" - } + "zh_CN": "步长" + }, + "labelPosition": "left" }, { - "property": "events", + "property": "max", "label": { "text": { - "zh_CN": "事件绑定" + "zh_CN": "可输入的最大数值" } }, - "required": true, + "required": false, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaCodeEditor", - "props": {} + "component": "NumberConfigurator", + "props": { + "allowEmpty": true + } }, "description": { - "zh_CN": "" - } + "zh_CN": "可输入的最大数值" + }, + "labelPosition": "left" }, { - "property": "loading", + "property": "min", "label": { "text": { - "zh_CN": "显示loading" + "zh_CN": "可输入的最小数值" } }, - "required": true, + "required": false, "readOnly": false, "disabled": false, "cols": 12, "widget": { - "component": "MetaSwitch", - "props": {} + "component": "NumberConfigurator", + "props": { + "allowEmpty": true + } }, "description": { - "zh_CN": "" + "zh_CN": "可输入的最大数值" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值改变时触发" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框改变后的值" + } } - }, - { - "property": "data-empty", - "label": { - "text": { - "zh_CN": "暂无数据" + ], + "returns": {} + }, + "defaultValue": "" + }, + "onInput": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框输入的值" } - }, - "required": true, - "readOnly": false, - "disabled": false, - "cols": 12, - "widget": { - "component": "MetaSwitch", - "props": {} - }, - "description": { - "zh_CN": "" } - } - ], + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, "description": { - "zh_CN": "" - } + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" } - ], - "events": [] + } }, "configure": { "loop": true, "condition": true, "styles": true, - "isContainer": false, + "isContainer": true, "isModal": false, - "isPopper": false, "nestingRule": { "childWhitelist": "", "parentWhitelist": "", @@ -30082,99 +29623,13 @@ "isLayout": false, "rootSelector": "", "shortcuts": { - "properties": [""] + "properties": ["value", "disabled"] }, "contextMenu": { - "actions": ["copy", "remove", "insert", "updateAttr", "bindEevent", "createBlock"], - "disable": [] - }, - "invalidity": [""], - "clickCapture": true, - "framework": "Vue" - }, - "createdBy": 169, - "updatedBy": 169, - "created_by": null, - "updated_by": null, - "created_at": "2022-11-11T03:25:54.000Z", - "updated_at": "2022-11-12T08:18:30.000Z", - "public": 1, - "framework": "Vue", - "isOfficial": true, - "isDefault": false, - "tiny_reserved": true, - "tenant": null, - "component_metadata": { - "events": [], - "attrs": [ - { - "property": "data-empty", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_6" - }, - { - "property": "loading", - "type": "boolean", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_5" - }, - { - "property": "events", - "type": "object", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_4" - }, - { - "property": "extend", - "type": "object", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_3" - }, - { - "property": "height", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_2" - }, - { - "property": "width", - "type": "string", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - }, - { - "property": "settings", - "type": "object", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_2" - }, - { - "property": "data", - "type": "object", - "defaultValue": null, - "enumerateValue": null, - "title": null, - "_RID": "row_1" - } - ], - "slots": [] - }, - "library": null + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } } ] }, diff --git a/mockServer/src/assets/json/bundle.json b/mockServer/src/assets/json/bundle.json new file mode 100644 index 0000000000..85420cf945 --- /dev/null +++ b/mockServer/src/assets/json/bundle.json @@ -0,0 +1,10471 @@ +{ + "data": { + "framework": "Vue", + "materials": { + "components": [ + { + "name": { + "zh_CN": "走马灯子项" + }, + "component": "TinyCarouselItem", + "icon": "carouselitem", + "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CarouselItem", + "version": "", + "destructuring": true + }, + "group": "component", + "category": "容器组件", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "name", + "label": { + "text": { + "zh_CN": "幻灯片的名字,可用作 setActiveItem 的参数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "title", + "label": { + "text": { + "zh_CN": "幻灯片的标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "indicator-position", + "label": { + "text": { + "zh_CN": "指示器的位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "outside", + "value": "outside" + }, + { + "label": "none", + "value": "none" + } + ] + } + }, + "description": { + "zh_CN": "" + } + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "size"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "name": { + "zh_CN": "走马灯" + }, + "component": "TinyCarousel", + "icon": "carousel", + "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Carousel", + "version": "", + "destructuring": true + }, + "group": "component", + "category": "容器组件", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "arrow", + "label": { + "text": { + "zh_CN": "切换箭头的显示时机" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "总是显示", + "value": "always" + }, + { + "label": "鼠标悬停时显示", + "value": "hover" + }, + { + "label": "从不显示", + "value": "never" + } + ] + } + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "autoplay", + "label": { + "text": { + "zh_CN": "是否自动切换" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "tabs", + "label": { + "text": { + "zh_CN": "选项卡" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": "", + "cols": 12, + "bindState": false, + "widget": { + "component": "ContainerConfigurator", + "props": {} + }, + "description": { + "zh_CN": "tabs" + }, + "labelPosition": "none" + }, + { + "property": "height", + "label": { + "text": { + "zh_CN": "走马灯的高度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "indicator-position", + "label": { + "text": { + "zh_CN": "指示器的位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "走马灯外部", + "value": "outside" + }, + { + "label": "不显示", + "value": "none" + } + ] + } + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "initial-index", + "label": { + "text": { + "zh_CN": "初始状态激活的幻灯片的索引,从 0 开始 " + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "interval", + "label": { + "text": { + "zh_CN": "自动切换的时间间隔,单位为毫秒" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "loop", + "label": { + "text": { + "zh_CN": "是否循环显示" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "show-title", + "label": { + "text": { + "zh_CN": "是否显示标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "trigger", + "label": { + "text": { + "zh_CN": "指示器的触发方式,默认为 hover" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "点击", + "value": "click" + }, + { + "label": "悬停", + "value": "hover" + } + ] + } + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "走马灯的类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "options": [ + { + "label": "水平", + "value": "horizontal" + }, + { + "label": "垂直", + "value": "vertical" + }, + { + "label": "卡片", + "value": "card" + } + ] + } + }, + "description": { + "zh_CN": "" + } + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "clickCapture": false, + "isModal": false, + "nestingRule": { + "childWhitelist": ["TinyCarouselItem"], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "size"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "link", + "name": { + "zh_CN": "提示框" + }, + "component": "a", + "description": "链接", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "group": "component", + "priority": 7, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "children", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlTextConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + }, + { + "property": "href", + "label": { + "text": { + "zh_CN": "跳转链接" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "链接" + } + }, + { + "property": "target", + "label": { + "text": { + "zh_CN": "页面目标" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "当前页面", + "value": "_self" + }, + { + "label": "打开新页面", + "value": "_blank" + } + ] + } + }, + "description": { + "zh_CN": "链接" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ] + }, + "configure": { + "loop": true, + "condition": true, + "slots": [], + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [] + }, + "contextMenu": { + "actions": [], + "disable": [] + } + } + }, + { + "name": { + "zh_CN": "标题" + }, + "component": ["h1", "h2", "h3", "h4", "h5", "h6"], + "icon": "h16", + "description": "标题", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 20, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "children", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlTextConfigurator", + "props": { + "showRadioButton": true + } + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "size"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "name": { + "zh_CN": "段落" + }, + "component": "p", + "icon": "paragraph", + "description": "段落", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 30, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "children", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlTextConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [] + }, + "contextMenu": { + "actions": [], + "disable": [] + } + } + }, + { + "name": { + "zh_CN": "输入框" + }, + "component": "input", + "icon": "input", + "description": "输入框", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 40, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "checkbox", + "value": "checkbox" + }, + { + "label": "color", + "value": "color" + }, + { + "label": "date", + "value": "date" + }, + { + "label": "button", + "value": "button" + }, + { + "label": "email", + "value": "email" + }, + { + "label": "file", + "value": "file" + }, + { + "label": "hidden", + "value": "hidden" + }, + { + "label": "image", + "value": "image" + }, + { + "label": "month", + "value": "month" + }, + { + "label": "number", + "value": "number" + }, + { + "label": "password", + "value": "password" + }, + { + "label": "radio", + "value": "radio" + }, + { + "label": "range", + "value": "range" + }, + { + "label": "reset", + "value": "reset" + }, + { + "label": "search", + "value": "search" + }, + { + "label": "submit", + "value": "submit" + }, + { + "label": "text", + "value": "text" + }, + { + "label": "time", + "value": "time" + }, + { + "label": "week", + "value": "week" + }, + { + "label": "url", + "value": "url" + } + ] + } + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位符" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onChange": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "size"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "name": { + "zh_CN": "视频" + }, + "component": "video", + "icon": "video", + "description": "视频", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 50, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 10, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "src", + "label": { + "text": { + "zh_CN": "视频的 URL" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "width", + "label": { + "text": { + "zh_CN": "视频播放器的宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "height", + "label": { + "text": { + "zh_CN": "视频播放器的高度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "controls", + "label": { + "text": { + "zh_CN": "是否显示控件" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "autoplay", + "label": { + "text": { + "zh_CN": "是否马上播放" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": [] + }, + "contextMenu": { + "actions": [], + "disable": [] + } + } + }, + { + "icon": "Image", + "name": { + "zh_CN": "Img" + }, + "component": "Img", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 60, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "src", + "type": "string", + "defaultValue": "", + "bindState": true, + "label": { + "text": { + "zh_CN": "src路径" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": {}, + "shortcuts": { + "properties": ["src"] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "button", + "name": { + "zh_CN": "Button" + }, + "component": "button", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 70, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "table", + "name": { + "zh_CN": "表格" + }, + "component": "table", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 80, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "width", + "label": { + "text": { + "zh_CN": "表格的宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "border", + "label": { + "text": { + "zh_CN": "表格边框的宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "td", + "name": { + "zh_CN": "表格单元格" + }, + "component": "td", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 90, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "colspan", + "label": { + "text": { + "zh_CN": "单元格可横跨的列数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "rowspan", + "label": { + "text": { + "zh_CN": "单元格可横跨的行数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "attributes3", + "label": { + "text": { + "zh_CN": "原生属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "HtmlAttributesConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "none" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "form", + "name": { + "zh_CN": "表单" + }, + "component": "form", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 100, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "name", + "label": { + "text": { + "zh_CN": "表单的名称" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "action", + "label": { + "text": { + "zh_CN": "提交表单时向何处发送表单数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "method", + "label": { + "text": { + "zh_CN": "用于发送 form-data 的 HTTP 方法" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "get", + "value": "get" + }, + { + "label": "post", + "value": "post" + } + ] + } + }, + "description": { + "zh_CN": "" + } + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击时触发" + }, + "description": { + "zh_CN": "点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "icon": "label", + "name": { + "zh_CN": "表单标签" + }, + "component": "label", + "container": false, + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": {}, + "group": "component", + "category": "html", + "priority": 110, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "for", + "label": { + "text": { + "zh_CN": "label 绑定到哪个表单元素" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "form", + "label": { + "text": { + "zh_CN": "label 字段所属的一个或多个表单" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + } + ] + } + ], + "events": {}, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + } + }, + { + "name": { + "zh_CN": "按钮组" + }, + "component": "TinyButtonGroup", + "icon": "buttonGroup", + "description": "以按钮组的方式出现,常用于多项类似操作", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "ButtonGroup", + "version": "", + "destructuring": true + }, + "group": "component", + "category": "general", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "data", + "label": { + "text": { + "zh_CN": "按钮组数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "组件大小" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "mini", + "value": "mini" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "medium", + "value": "medium" + } + ] + } + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "plain", + "label": { + "text": { + "zh_CN": "是否是朴素按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "size"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "row", + "name": { + "zh_CN": "row" + }, + "component": "TinyRow", + "description": "定义 Layout 的行配置信息", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Row", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 5, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "layout", + "label": { + "text": { + "zh_CN": "layout" + } + }, + "cols": 12, + "widget": { + "component": "LayoutGridConfigurator", + "props": {} + }, + "description": { + "zh_CN": "layout" + }, + "labelPosition": "none" + }, + { + "property": "align", + "label": { + "text": { + "zh_CN": "align" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "top", + "value": "top" + }, + { + "label": "middle", + "value": "middle" + }, + { + "label": "bottom", + "value": "bottom" + } + ] + } + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "flex", + "label": { + "text": { + "zh_CN": "flex" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "gutter", + "label": { + "text": { + "zh_CN": "gutter" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + } + ] + } + ] + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["label-width", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "form", + "name": { + "zh_CN": "表单" + }, + "component": "TinyForm", + "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Form", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 5, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "label-width", + "label": { + "text": { + "zh_CN": "标签宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单中标签占位宽度,默认为 80px" + }, + "labelPosition": "left" + }, + { + "property": "inline", + "label": { + "text": { + "zh_CN": "行内布局" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "行内布局模式,默认为 false" + } + }, + { + "property": "label-align", + "label": { + "text": { + "zh_CN": "必填标识是否占位" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "必填标识 * 是否占位" + }, + "labelPosition": "left" + }, + { + "property": "label-suffix", + "label": { + "text": { + "zh_CN": "标签后缀" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单中标签后缀" + } + }, + { + "property": "label-position", + "label": { + "text": { + "zh_CN": "标签位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "right", + "value": "right" + }, + { + "label": "left ", + "value": "left " + }, + { + "label": "top", + "value": "top" + } + ] + } + }, + "description": { + "zh_CN": "表单中标签的布局位置" + } + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "校验属性" + }, + "content": [ + { + "property": "model", + "label": { + "text": { + "zh_CN": "表单校验对象" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单数据对象" + }, + "labelPosition": "left" + }, + { + "property": "rules", + "label": { + "text": { + "zh_CN": "校验规则" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单验证规则" + } + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onValidate": { + "label": { + "zh_CN": "表单项被校验后触发" + }, + "description": { + "zh_CN": "表单项被校验后触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "function", + "type": "Function", + "defaultValue": "(valid) => {}", + "description": { + "zh_CN": "校验回调函数" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onInput": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框输入的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": [], + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["label-width", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "formitem", + "name": { + "zh_CN": "表单项" + }, + "component": "TinyFormItem", + "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "FormItem", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 12, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "label", + "label": { + "text": { + "zh_CN": "标签文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": "标签", + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "标签文本" + }, + "labelPosition": "left" + }, + { + "property": "prop", + "label": { + "text": { + "zh_CN": "校验字段" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的" + } + }, + { + "property": "required", + "label": { + "text": { + "zh_CN": "必填" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否必填" + }, + "labelPosition": "left" + } + ] + } + ], + "events": {}, + "slots": { + "label": { + "label": { + "zh_CN": "字段名" + }, + "description": { + "zh_CN": "自定义显示字段名称" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": ["TinyForm"], + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["label", "rules"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "col", + "name": { + "zh_CN": "col" + }, + "component": "TinyCol", + "description": "列配置信息", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Col", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "span", + "label": { + "text": { + "zh_CN": "栅格列格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "整行", + "value": 12 + }, + { + "label": "6格", + "value": 6 + }, + { + "label": "4格", + "value": 4 + }, + { + "label": "3格", + "value": 3 + }, + { + "label": "1格", + "value": 1 + } + ] + } + }, + "description": { + "zh_CN": "当一行分为12格时,一列可占位多少格" + } + }, + { + "property": "move", + "label": { + "text": { + "zh_CN": "栅格左右移动格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": -12, + "max": 12 + } + }, + "description": { + "zh_CN": "栅格左右移动格数(正数向右,负数向左)" + } + }, + { + "property": "no", + "label": { + "text": { + "zh_CN": "排序编号" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "max": 12 + } + }, + "description": { + "zh_CN": "排序编号(row中启用order生效)" + } + }, + { + "property": "offset", + "label": { + "text": { + "zh_CN": "间隔格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 0, + "max": 12 + } + }, + "description": { + "zh_CN": "栅格左侧的间隔格数" + } + }, + { + "property": "xs", + "label": { + "text": { + "zh_CN": "超小屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "<768px 响应式栅格数" + } + }, + { + "property": "sm", + "label": { + "text": { + "zh_CN": "小屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "≥768px 响应式栅格数" + } + }, + { + "property": "md", + "label": { + "text": { + "zh_CN": "中屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "≥992px 响应式栅格数" + } + }, + { + "property": "lg", + "label": { + "text": { + "zh_CN": "大屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "≥1200px 响应式栅格数" + } + }, + { + "property": "xl", + "label": { + "text": { + "zh_CN": "超大屏格数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": { + "min": 1, + "max": 12 + } + }, + "description": { + "zh_CN": "≥1920px 响应式栅格数" + } + } + ] + } + ], + "events": {} + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["label", "rules"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "name": { + "zh_CN": "按钮" + }, + "component": "TinyButton", + "icon": "button", + "description": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Button", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "text", + "type": "string", + "defaultValue": "按钮文案", + "label": { + "text": { + "zh_CN": "按钮文字" + } + }, + "cols": 12, + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "size", + "type": "select", + "label": { + "text": { + "zh_CN": "大小" + } + }, + "cols": 12, + "rules": [], + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "large", + "value": "large" + }, + { + "label": "medium", + "value": "medium" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "mini", + "value": "mini" + } + ] + } + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否被禁用" + }, + "labelPosition": "left" + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "primary", + "value": "primary" + }, + { + "label": "success", + "value": "success" + }, + { + "label": "info", + "value": "info" + }, + { + "label": "warning", + "value": "warning" + }, + { + "label": "danger", + "value": "danger" + }, + { + "label": "text", + "value": "text" + } + ] + } + }, + "description": { + "zh_CN": "设置不同的主题样式" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "round", + "label": { + "text": { + "zh_CN": "圆角" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否圆角按钮" + }, + "labelPosition": "left" + }, + { + "property": "plain", + "label": { + "text": { + "zh_CN": "朴素按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否为朴素按钮" + }, + "labelPosition": "left" + }, + { + "property": "reset-time", + "label": { + "text": { + "zh_CN": "禁用时间" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置禁用时间,防止重复提交,单位毫秒" + } + }, + { + "property": "circle", + "label": { + "text": { + "zh_CN": "圆角" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否圆形按钮" + }, + "labelPosition": "left" + }, + { + "property": "autofocus", + "label": { + "text": { + "zh_CN": "聚焦" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否默认聚焦" + }, + "labelPosition": "left" + }, + { + "property": "loading", + "label": { + "text": { + "zh_CN": "加载中" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否展示位加载中样式" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击事件" + }, + "description": { + "zh_CN": "按钮被点击时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["text", "size"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "name": { + "zh_CN": "输入框" + }, + "component": "TinyInput", + "icon": "input", + "description": "通过鼠标或键盘输入字符", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Input", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "textarea", + "value": "textarea" + }, + { + "label": "text", + "value": "text" + }, + { + "label": "password", + "value": "password" + } + ] + } + }, + "description": { + "zh_CN": "设置input框的type属性" + } + }, + { + "property": "rows", + "label": { + "text": { + "zh_CN": "行数" + } + }, + "widget": { + "component": "NumberConfigurator" + }, + "description": { + "zh_CN": "输入框行数,只对 type='textarea' 有效" + } + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "I18nConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "labelPosition": "left" + }, + { + "property": "clearable", + "label": { + "text": { + "zh_CN": "清除按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示清除按钮" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "medium", + "value": "medium" + }, + { + "label": "small", + "value": "small" + }, + { + "label": "mini", + "value": "mini" + } + ] + } + }, + "description": { + "zh_CN": "输入框尺寸。该属性的可选值为 medium / small / mini" + } + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "maxlength", + "label": { + "text": { + "zh_CN": "最大长度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置 input 框的maxLength" + }, + "labelPosition": "left" + }, + { + "property": "autofocus", + "label": { + "text": { + "zh_CN": "聚焦" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "自动获取焦点" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值改变时触发" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框改变后的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onInput": { + "label": { + "zh_CN": "输入值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "输入框输入的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "在 Input 输入值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "slots": { + "prefix": { + "label": { + "zh_CN": "前置内容" + } + }, + "suffix": { + "label": { + "zh_CN": "后置内容" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["value", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "radio", + "name": { + "zh_CN": "单选" + }, + "component": "TinyRadio", + "description": "用于配置不同场景的选项,在一组备选项中进行单选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Radio", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 3, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "text", + "label": { + "text": { + "zh_CN": "文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "label", + "label": { + "text": { + "zh_CN": "单选框的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + } + ] + }, + { + "label": { + "zh_CN": "其他" + }, + "description": { + "zh_CN": "" + }, + "content": [ + { + "property": "border", + "label": { + "text": { + "zh_CN": "显示边框" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "size", + "label": { + "text": { + "zh_CN": "单选框的尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "name", + "label": { + "text": { + "zh_CN": "原生 name 属性" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值变化事件" + }, + "description": { + "zh_CN": "绑定值变化时触发的事件" + } + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["visible", "width"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "select", + "name": { + "zh_CN": "下拉框" + }, + "component": "TinySelect", + "description": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Select", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 8, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 10, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + }, + "labelPosition": "left" + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "labelPosition": "left" + }, + { + "property": "clearable", + "label": { + "text": { + "zh_CN": "清除按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示清除按钮" + }, + "labelPosition": "left" + }, + { + "property": "searchable", + "label": { + "text": { + "zh_CN": "下拉面板可搜索" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "下拉面板是否可搜索" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "options", + "label": { + "text": { + "zh_CN": "下拉数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "配置 Select 下拉数据项" + }, + "labelPosition": "left" + }, + { + "property": "multiple", + "label": { + "text": { + "zh_CN": "多选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否允许输入框输入或选择多个项" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "multiple-limit", + "label": { + "text": { + "zh_CN": "最大可选值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "多选时用户最多可以选择的项目数,为 0 则不限制" + }, + "labelPosition": "left" + }, + { + "property": "popper-class", + "label": { + "text": { + "zh_CN": "下拉框的类名" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置下拉框自定义的类名" + }, + "labelPosition": "left" + }, + { + "property": "collapse-tags", + "label": { + "text": { + "zh_CN": "多选展示" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "多选时是否将选中值按文字的形式展示" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "值改变时触发" + }, + "description": { + "zh_CN": "在下拉框值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "下拉框选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onBlur": { + "label": { + "zh_CN": "失去焦点时触发" + }, + "description": { + "zh_CN": "在 Input 失去焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onFocus": { + "label": { + "zh_CN": "获取焦点时触发" + }, + "description": { + "zh_CN": "在 Input 获取焦点时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClear": { + "label": { + "zh_CN": "点击清空按钮时触发" + }, + "description": { + "zh_CN": "点击清空按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onRemoveTag": { + "label": { + "zh_CN": "多选模式下移除tag时触发" + }, + "description": { + "zh_CN": "多选模式下移除tag时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "被移除Tag对应数据项的值字段" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + }, + "onBeforeMount": "console.log('table on load'); this.options = source.data" + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["multiple", "options"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "switch", + "name": { + "zh_CN": "开关" + }, + "component": "TinySwitch", + "description": "Switch 在两种状态间切换选择", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Switch", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 9, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否被禁用" + }, + "labelPosition": "left" + }, + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "绑定默认值" + } + }, + { + "property": "true-value", + "label": { + "text": { + "zh_CN": "打开时的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置打开时的值(Boolean / String / Number)" + }, + "labelPosition": "left" + }, + { + "property": "false-value", + "label": { + "text": { + "zh_CN": "关闭时的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置关闭时的值(Boolean / String / Number)" + }, + "labelPosition": "left" + }, + { + "property": "mini", + "label": { + "text": { + "zh_CN": "迷你尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示为 mini 模式" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "点击事件" + }, + "description": { + "zh_CN": "按钮被点击时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "开关的状态值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的开关状态值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "mini"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "search", + "name": { + "zh_CN": "搜索框" + }, + "component": "TinySearch", + "description": "指定条件对象进行搜索数据", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Search", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "默认值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框内的默认搜索值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否被禁用" + }, + "labelPosition": "left" + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本 " + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框内的提示占位文本" + }, + "labelPosition": "left" + }, + { + "property": "clearable", + "label": { + "text": { + "zh_CN": "清空按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置显示清空图标按钮" + }, + "labelPosition": "left" + }, + { + "property": "isEnterSearch", + "label": { + "text": { + "zh_CN": "是否Enter键触发search事件" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否在按下键盘Enter键的时候触发search事件" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "mini", + "label": { + "text": { + "zh_CN": "迷你尺寸" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开" + }, + "labelPosition": "left" + }, + { + "property": "transparent", + "label": { + "text": { + "zh_CN": "透明模式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "输入完成时触发" + }, + "description": { + "zh_CN": "在 input 框中输入完成时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "type", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "搜索类型,默认值为 {} " + } + }, + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前input框中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onSearch": { + "label": { + "zh_CN": "点击搜索按钮时触发" + }, + "description": { + "zh_CN": "展开状态点击搜索按钮时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "type", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "搜索类型,默认值为 {} " + } + }, + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前input框中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["clearable", "mini"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "checkbox", + "name": { + "zh_CN": "复选框" + }, + "component": "TinyCheckbox", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Checkbox", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 4, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "checked", + "label": { + "text": { + "zh_CN": "勾选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当前是否勾选" + }, + "labelPosition": "left" + }, + { + "property": "text", + "label": { + "text": { + "zh_CN": "文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "复选框的文本" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "border", + "label": { + "text": { + "zh_CN": "边框" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示边框" + } + }, + { + "property": "false-label", + "label": { + "text": { + "zh_CN": "未选中的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "没有选中时的值" + } + }, + { + "property": "true-label", + "label": { + "text": { + "zh_CN": "选择时的值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "选中时的值" + } + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "勾选值改变后将触发" + }, + "description": { + "zh_CN": "勾选值改变后将触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["border", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "checkboxbutton", + "name": { + "zh_CN": "复选按钮" + }, + "component": "TinyCheckboxButton", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CheckboxButton", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "checked", + "label": { + "text": { + "zh_CN": "勾选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当前是否勾选" + }, + "labelPosition": "left" + }, + { + "property": "text", + "label": { + "text": { + "zh_CN": "文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "按钮文本" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "勾选值改变后将触发" + }, + "description": { + "zh_CN": "勾选值改变后将触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "array", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["text", "size"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "checkboxgroup", + "name": { + "zh_CN": "复选按钮组" + }, + "component": "TinyCheckboxGroup", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CheckboxGroup", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "dataType": "Array" + } + }, + "description": { + "zh_CN": "双向绑定的当前选中值" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "options", + "label": { + "text": { + "zh_CN": "数据列表" + } + }, + "defaultValue": [ + { + "label": "标签2" + }, + { + "label": "标签2" + } + ], + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "checkbox组件列表" + } + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "类型" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "button", + "value": "button" + }, + { + "label": "checkbox", + "value": "checkbox" + } + ] + } + }, + "description": { + "zh_CN": "checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "勾选值改变后将触发" + }, + "description": { + "zh_CN": "勾选值改变后将触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "选中项的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "array", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "type"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "dialogbox", + "name": { + "zh_CN": "对话框" + }, + "component": "TinyDialogBox", + "description": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "DialogBox", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 4, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "title", + "label": { + "text": { + "zh_CN": "标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "弹出框标题" + }, + "labelPosition": "left" + }, + { + "property": "visible", + "label": { + "text": { + "zh_CN": "显示与隐藏" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "控制弹出框显示与关闭" + }, + "labelPosition": "left" + }, + { + "property": "width", + "label": { + "text": { + "zh_CN": "宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "弹出框的宽度" + }, + "labelPosition": "left" + }, + { + "property": "draggable", + "label": { + "text": { + "zh_CN": "可拖拽" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否开启弹窗的拖拽功能,默认值为 false 。" + } + }, + { + "property": "center", + "label": { + "text": { + "zh_CN": "居中" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "弹出框的头部与底部内容会自动居中" + }, + "labelPosition": "left" + }, + { + "property": "dialog-class", + "label": { + "text": { + "zh_CN": "自定义类" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "自定义配置弹窗类名" + }, + "labelPosition": "left" + }, + { + "property": "append-to-body", + "label": { + "text": { + "zh_CN": "插入到 Body " + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true" + }, + "labelPosition": "left" + }, + { + "property": "show-close", + "label": { + "text": { + "zh_CN": "关闭按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示关闭按钮,默认值为 true 。" + } + } + ] + } + ], + "selector": ".TinyDialogBox", + "events": { + "onClose": { + "label": { + "zh_CN": "关闭弹窗时触发" + }, + "description": { + "zh_CN": "Dialog 关闭的回调" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:visible": { + "label": { + "zh_CN": "双向绑定的状态改变时触发" + }, + "description": { + "zh_CN": "显示或隐藏的状态值,发生改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "boolean", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的显示或隐藏的状态值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + }, + "slots": { + "title": { + "label": { + "zh_CN": "标题区" + }, + "description": { + "zh_CN": "Dialog 标题区的内容" + } + }, + "footer": { + "label": { + "zh_CN": "按钮操作区" + }, + "description": { + "zh_CN": "Dialog 按钮操作区的内容" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": true, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": ".tiny-dialog-box", + "shortcuts": { + "properties": ["visible", "width"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "tabs", + "name": { + "zh_CN": "标签页" + }, + "component": "TinyTabs", + "description": "分隔内容上有关联但属于不同类别的数据集合", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Tabs", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 10, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "showEditIcon", + "label": { + "text": { + "zh_CN": "显示编辑ICON " + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示标题后编辑 ICON" + }, + "labelPosition": "left" + }, + { + "property": "tabs", + "label": { + "text": { + "zh_CN": "选项卡" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": "", + "cols": 12, + "bindState": false, + "widget": { + "component": "ContainerConfigurator", + "props": {} + }, + "description": { + "zh_CN": "tabs" + }, + "labelPosition": "none" + }, + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "绑定值,选中选项卡的 name" + }, + "labelPosition": "left" + }, + { + "property": "with-add", + "label": { + "text": { + "zh_CN": "可新增" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "标签是否可增加" + }, + "labelPosition": "left" + }, + { + "property": "with-close", + "label": { + "text": { + "zh_CN": "可关闭" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "标签是否可关闭" + }, + "labelPosition": "left" + }, + { + "property": "tab-style", + "label": { + "text": { + "zh_CN": "标签页样式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "card", + "value": "card" + }, + { + "label": "border-card", + "value": "border-card" + } + ] + } + }, + "description": { + "zh_CN": "标签页样式" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "点击页签时触发事件" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "component", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前点击的页签对象" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "原生 event" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onEdit": { + "label": { + "zh_CN": "点击新增按钮或关闭按钮或者编辑按钮后触发" + }, + "description": { + "zh_CN": "点击新增按钮或关闭按钮或者编辑按钮后触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "tab", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前操作的页签对象" + } + }, + { + "name": "type", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前操作的类型(remove || add || edit)" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClose": { + "label": { + "zh_CN": "关闭页签时触发" + }, + "description": { + "zh_CN": "关闭页签时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "name", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "页签名称" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "clickCapture": false, + "isModal": false, + "nestingRule": { + "childWhitelist": ["TinyTabItem"], + "parentWhitelist": [], + "descendantBlacklist": [], + "ancestorWhitelist": [] + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["size", "tab-style"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "tabitem", + "name": { + "zh_CN": "tab页签" + }, + "component": "TinyTabItem", + "description": "tab 标签页", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "TabItem", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "name", + "label": { + "text": { + "zh_CN": "唯一表示" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "唯一表示" + } + }, + { + "property": "title", + "label": { + "text": { + "zh_CN": "标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "标题" + } + } + ] + } + ], + "events": {}, + "slots": { + "title": { + "label": { + "zh_CN": "标题" + }, + "description": { + "zh_CN": "自定义标题" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": ["TinyTab"], + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["name", "title"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "breadcrumb", + "name": { + "zh_CN": "面包屑" + }, + "component": "TinyBreadcrumb", + "description": "告诉访问者他们目前在网站中的位置以及如何返回", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Select", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "separator", + "label": { + "text": { + "zh_CN": "分隔符" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "自定义分隔符" + }, + "labelPosition": "left" + }, + { + "property": "options", + "label": { + "text": { + "zh_CN": "options" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + }, + { + "property": "textField", + "label": { + "text": { + "zh_CN": "textField" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + } + } + ] + } + ], + "events": { + "onSelect": { + "label": { + "zh_CN": "选择 breadcrumb 时触发" + }, + "description": { + "zh_CN": "选择 breadcrumb 时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "clickCapture": false, + "isModal": false, + "nestingRule": { + "childWhitelist": ["TinyBreadcrumbItem"], + "parentWhitelist": [], + "descendantBlacklist": [], + "ancestorWhitelist": [] + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["separator"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "breadcrumb", + "name": { + "zh_CN": "面包屑项" + }, + "component": "TinyBreadcrumbItem", + "description": "", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "BreadcrumbItem", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "to", + "label": { + "text": { + "zh_CN": "路由路径" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "面包屑项" + } + } + ] + } + ], + "slots": { + "default": { + "label": { + "zh_CN": "面包屑项标签" + }, + "description": { + "zh_CN": "面包屑项" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": ["TinyBreadcrumb"], + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["to"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "collapse", + "name": { + "zh_CN": "折叠面板" + }, + "component": "TinyCollapse", + "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Collapse", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 3, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "当前激活的面板" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定当前激活的面板" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "激活面板改变时触发" + }, + "description": { + "zh_CN": "当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "data", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前激活面板的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前激活面板的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["label-width", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "collapseitem", + "name": { + "zh_CN": "折叠面板项" + }, + "component": "TinyCollapseItem", + "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "CollapseItem", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "name", + "label": { + "text": { + "zh_CN": "唯一标志符" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "唯一标志符;String | Number" + }, + "labelPosition": "left" + }, + { + "property": "title", + "label": { + "text": { + "zh_CN": "面板标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "面板标题" + }, + "labelPosition": "left" + } + ] + } + ], + "events": {}, + "slots": { + "title": { + "label": { + "zh_CN": "标题" + }, + "description": { + "zh_CN": "自定义标题" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["label-width", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "grid", + "name": { + "zh_CN": "表格" + }, + "component": "TinyGrid", + "description": "提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Grid", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 2, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础属性" + }, + "description": { + "zh_CN": "基础属性" + }, + "collapse": { + "number": 15, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "data", + "label": { + "text": { + "zh_CN": "表格数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "onChange": "this.delProp('fetchData')", + "description": { + "zh_CN": "设置表格的数据" + } + }, + { + "property": "columns", + "label": { + "text": { + "zh_CN": "表格列" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "properties": [ + { + "label": { + "zh_CN": "默认分组" + }, + "content": [ + { + "property": "title", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列标题" + } + }, + "widget": { + "component": "I18nConfigurator", + "props": {} + } + }, + { + "property": "field", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列键值" + } + }, + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "sortable", + "type": "boolean", + "defaultValue": true, + "label": { + "text": { + "zh_CN": "是否排序" + } + }, + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "width", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列宽" + } + }, + "widget": { + "component": "NumberConfigurator", + "props": {} + } + }, + { + "property": "formatText", + "type": "string", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "内置渲染器" + } + }, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "整数", + "value": "integer" + }, + { + "label": "小数", + "value": "number" + }, + { + "label": "金额", + "value": "money" + }, + { + "label": "百分比", + "value": "rate" + }, + { + "label": "布尔", + "value": "boole" + }, + { + "label": "年月日", + "value": "date" + }, + { + "label": "年月日时分", + "value": "dateTime" + }, + { + "label": "时间", + "value": "time" + }, + { + "label": "省略", + "value": "ellipsis" + } + ] + } + } + }, + { + "property": "renderer", + "type": "object", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "渲染函数" + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "dataType": "JSFunction" + } + } + }, + { + "property": "slots", + "type": "object", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "插槽" + } + }, + "labelPosition": "none", + "widget": { + "component": "JsSlotConfigurator", + "props": { + "slots": ["header", "default"] + } + } + }, + { + "property": "type", + "label": { + "text": { + "zh_CN": "列类型" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "索引列", + "value": "index" + }, + { + "label": "单选列", + "value": "radio" + }, + { + "label": "多选列", + "value": "selection" + }, + { + "label": "展开列", + "value": "expand" + } + ], + "clearable": true + } + }, + "description": { + "zh_CN": "设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)" + }, + "labelPosition": "left" + }, + { + "property": "editor", + "label": { + "text": { + "zh_CN": "编辑配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "单元格编辑渲染配置项,也可以是函数 Function(h, params)" + }, + "labelPosition": "left" + }, + { + "property": "filter", + "label": { + "text": { + "zh_CN": "筛选配置" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "language": "json" + } + }, + "description": { + "zh_CN": "设置表格列的筛选配置信息。默认值为 false 不配置筛选信息" + } + }, + { + "property": "showOverflow", + "label": { + "text": { + "zh_CN": "内容超出部分省略号配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "只显示省略号", + "value": "ellipsis" + }, + { + "label": "显示为原生 title", + "value": "title" + }, + { + "label": "显示为 tooltip 提示", + "value": "tooltip" + } + ], + "clearable": true + } + }, + "description": { + "zh_CN": "设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)" + }, + "labelPosition": "left" + } + ] + } + ], + "widget": { + "component": "ArrayItemConfigurator", + "props": { + "type": "object", + "textField": "title", + "language": "json", + "buttonText": "编辑列配置", + "title": "编辑列配置", + "expand": true + } + }, + "description": { + "zh_CN": "表格列的配置信息" + }, + "labelPosition": "left" + }, + { + "property": "fetchData", + "label": { + "text": { + "zh_CN": "服务端数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "onChange": "this.delProp('data')", + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "name": "fetchData", + "dataType": "JSExpression" + } + }, + "description": { + "zh_CN": "服务端数据查询方法" + } + }, + { + "property": "pager", + "label": { + "text": { + "zh_CN": "分页配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "defaultValue": { + "attrs": { + "currentPage": 1 + } + }, + "widget": { + "component": "CodeConfigurator", + "props": { + "name": "pager", + "dataType": "JSExpression" + } + }, + "description": { + "zh_CN": "分页配置" + } + }, + { + "property": "resizable", + "label": { + "text": { + "zh_CN": "调整列宽" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否允许调整列宽" + }, + "labelPosition": "left" + }, + { + "property": "row-id", + "label": { + "text": { + "zh_CN": "行数据唯一标识的字段名" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": { + "placeholder": "比如:id" + } + }, + "description": { + "zh_CN": "行数据唯一标识的字段名" + }, + "labelPosition": "left" + }, + { + "property": "select-config", + "label": { + "text": { + "zh_CN": "复选框配置" + } + }, + "required": false, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": { + "dataType": "JSExpression" + } + }, + "description": { + "zh_CN": "表格行数据复选框配置项" + }, + "labelPosition": "left" + }, + { + "property": "edit-rules", + "label": { + "text": { + "zh_CN": "校验规则" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表格校验规则配置项" + }, + "labelPosition": "left" + }, + { + "property": "edit-config", + "label": { + "text": { + "zh_CN": "编辑配置项" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "表格编辑配置项" + } + }, + { + "property": "expand-config", + "label": { + "text": { + "zh_CN": "复选框配置项" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "复选框配置项" + }, + "labelPosition": "left" + }, + { + "property": "sortable", + "label": { + "text": { + "zh_CN": "可排序" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否允许列数据排序。默认为 true 可排序" + }, + "labelPosition": "left" + } + ] + }, + { + "label": { + "zh_CN": "其他" + }, + "description": { + "zh_CN": "其他属性" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "auto-resize", + "label": { + "text": { + "zh_CN": "可排序" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否允许列数据排序。默认为 true 可排序" + }, + "labelPosition": "left" + }, + { + "property": "border", + "label": { + "text": { + "zh_CN": "边框" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否带有纵向边框" + }, + "labelPosition": "left" + }, + { + "property": "seq-serial", + "label": { + "text": { + "zh_CN": "行号连续" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置行序号是否连续,开启分页时有效,该属性的默认值为 false" + }, + "labelPosition": "left" + }, + { + "property": "highlight-current-row", + "label": { + "text": { + "zh_CN": "高亮当前行" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "高亮当前行" + }, + "labelPosition": "left" + }, + { + "property": "highlight-hover-row", + "label": { + "text": { + "zh_CN": "hover 时候高亮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "鼠标移到行是否要高亮显示" + }, + "labelPosition": "left" + }, + { + "property": "row-class-name", + "label": { + "text": { + "zh_CN": "hover 高亮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})" + }, + "labelPosition": "left" + }, + { + "property": "max-height", + "label": { + "text": { + "zh_CN": "最大高度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置表格内容区域(不含表格头部,底部)的最大高度。" + }, + "labelPosition": "left" + }, + { + "property": "row-span", + "label": { + "text": { + "zh_CN": "行合并" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onFilterChange": { + "label": { + "zh_CN": "筛选条件改变时触发改事件" + }, + "description": { + "zh_CN": "配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "{$table,filters} 包含 table 实例对象和过滤条件的对象" + } + } + ], + "returns": {} + }, + "defaultValue": "function onClick(e) {}" + }, + "onSortChange": { + "label": { + "zh_CN": "点击列头,执行数据排序前触发的事件" + }, + "description": { + "zh_CN": "配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "{$table,filters} 包含 table 实例对象和过滤条件的对象" + } + } + ], + "returns": {} + }, + "defaultValue": "function onClick(e) {}" + }, + "onSelectAll": { + "label": { + "zh_CN": "当手动勾选全选时触发的事件" + }, + "description": { + "zh_CN": "只对 type=selection 有效,当手动勾选全选时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": " 包含 table 实例对象" + } + }, + { + "name": "checked", + "type": "boolean", + "defaultValue": "", + "description": { + "zh_CN": "勾选状态" + } + }, + { + "name": "selction", + "type": "Array", + "defaultValue": "", + "description": { + "zh_CN": "选中的表格数据数组" + } + } + ], + "returns": {} + }, + "defaultValue": "function onClick(e) {}" + }, + "onSelectChange": { + "label": { + "zh_CN": "手动勾选并且值发生改变时触发的事件" + }, + "description": { + "zh_CN": "只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": " table 实例对象" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": " 原生 Event" + } + } + ], + "returns": {} + }, + "defaultValue": "function onClick(e) {}" + }, + "onToggleExpandChange": { + "label": { + "zh_CN": "当行展开或收起时会触发该事件" + }, + "description": { + "zh_CN": "当行展开或收起时会触发该事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "table", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象" + } + }, + { + "name": "event", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": " 原生 Event" + } + } + ], + "returns": {} + }, + "defaultValue": "function onClick(e) {}" + }, + "onCurrentChange": { + "label": { + "zh_CN": "行点击时触发" + }, + "description": { + "zh_CN": "行点击时触发" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + } + }, + "shortcuts": { + "properties": ["sortable", "columns"] + }, + "contentMenu": { + "actions": ["create symbol"] + }, + "onBeforeMount": "console.log('table on load'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns" + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["sortable", "columns"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "name": { + "zh_CN": "分页" + }, + "component": "TinyPager", + "icon": "pager", + "description": "当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Pager", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 1, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 10, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "currentPage", + "label": { + "text": { + "zh_CN": "当前页数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当前页数,支持 .sync 修饰符" + }, + "labelPosition": "left" + }, + { + "property": "pageSize", + "label": { + "text": { + "zh_CN": "每页条数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "每页显示条目个数" + }, + "labelPosition": "left" + }, + { + "property": "pageSizes", + "label": { + "text": { + "zh_CN": "可选每页条数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置可选择的每页显示条数" + } + }, + { + "property": "total", + "label": { + "text": { + "zh_CN": "总条数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "数据总条数" + }, + "labelPosition": "left" + }, + { + "property": "layout", + "label": { + "text": { + "zh_CN": "布局" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "defaultValue": "total,sizes,prev, pager, next", + "widget": { + "component": "InputConfigurator", + "props": { + "type": "textarea" + } + }, + "description": { + "zh_CN": "组件布局,子组件名用逗号分隔" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onCurrentChange ": { + "label": { + "zh_CN": "切换页码时触发" + }, + "description": { + "zh_CN": "切换页码时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前页的值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onPrevClick ": { + "label": { + "zh_CN": "点击上一页按钮时触发" + }, + "description": { + "zh_CN": "点击上一页按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "page", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前页的页码值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onNextClick": { + "label": { + "zh_CN": "点击下一页按钮时触发" + }, + "description": { + "zh_CN": "点击上一页按钮时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "page", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前页的页码值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["currentPage", "total"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "name": { + "zh_CN": "弹出编辑" + }, + "component": "TinyPopeditor", + "icon": "popEditor", + "description": "该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "PopEditor", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 6, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定值" + }, + "labelPosition": "left" + }, + { + "property": "placeholder", + "label": { + "text": { + "zh_CN": "占位文本" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "输入框占位文本" + }, + "labelPosition": "left" + }, + { + "property": "show-clear-btn", + "label": { + "text": { + "zh_CN": "清除按钮" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示清除按钮" + }, + "labelPosition": "left" + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "是否禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "" + } + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "width", + "label": { + "text": { + "zh_CN": "宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置弹出面板的宽度(单位像素)" + }, + "labelPosition": "left" + }, + { + "property": "conditions", + "label": { + "text": { + "zh_CN": "过滤条件" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当弹出面板配置的是表格时,设置弹出面板中的过滤条件" + }, + "labelPosition": "left" + }, + { + "property": "grid-op", + "label": { + "text": { + "zh_CN": "表格配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置弹出面板中表格组件的配置信息" + }, + "labelPosition": "left" + }, + { + "property": "pager-op", + "label": { + "text": { + "zh_CN": "分页配置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置弹出编辑框中分页配置" + }, + "labelPosition": "left" + }, + { + "property": "multi", + "label": { + "text": { + "zh_CN": "多选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置弹出面板中的数据是否可多选" + }, + "labelPosition": "left" + }, + { + "property": "show-pager", + "label": { + "text": { + "zh_CN": "启用分页" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性" + } + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onChange": { + "label": { + "zh_CN": "选中值改变时触发" + }, + "description": { + "zh_CN": "在 Input 值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前选中项的值" + } + }, + { + "name": "value", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中对象" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "当前选中的值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的当前选中值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onClose": { + "label": { + "zh_CN": "弹框关闭时触发的事件" + }, + "description": { + "zh_CN": "弹框关闭时触发的事件" + }, + "type": "event", + "functionInfo": { + "params": [], + "returns": {} + }, + "defaultValue": "" + }, + "onPageChange": { + "label": { + "zh_CN": "分页切换事件" + }, + "description": { + "zh_CN": "表格模式下分页切换事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "String", + "defaultValue": "", + "description": { + "zh_CN": "当前页码数" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["modelValue", "disabled"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "tree", + "name": { + "zh_CN": "树" + }, + "component": "TinyTree", + "description": "可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Tree", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 12, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "show-checkbox", + "label": { + "text": { + "zh_CN": "多选" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "设置接口是否可以多选" + }, + "labelPosition": "left" + }, + { + "property": "data", + "label": { + "text": { + "zh_CN": "数据源" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": [ + { + "label": "一级 1", + "children": [ + { + "label": "二级 1-1" + } + ] + } + ], + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "可配置静态数据源和动态数据源" + } + }, + { + "property": "node-key", + "label": { + "text": { + "zh_CN": "唯一标识" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点唯一标识属性名称" + }, + "labelPosition": "left" + }, + { + "property": "icon-trigger-click-node", + "label": { + "text": { + "zh_CN": "触发NodeClick 事件" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "点击图标展开节点时是否触发 node-click 事件" + }, + "labelPosition": "left" + }, + { + "property": "expand-icon", + "label": { + "text": { + "zh_CN": "展开图标" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点展开图标" + }, + "labelPosition": "left" + }, + { + "property": "shrink-icon", + "label": { + "text": { + "zh_CN": "收缩图标" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点收缩的图标" + }, + "labelPosition": "left" + } + ] + }, + { + "name": "1", + "label": { + "zh_CN": "其他" + }, + "content": [ + { + "property": "check-on-click-node", + "label": { + "text": { + "zh_CN": "点击节点选中" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点" + }, + "labelPosition": "left" + }, + { + "property": "filter-node-method", + "label": { + "text": { + "zh_CN": "筛选函数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点筛选函数" + }, + "labelPosition": "left" + } + ], + "description": { + "zh_CN": "" + } + } + ], + "events": { + "onCheck": { + "label": { + "zh_CN": "勾选节点后的事件" + }, + "description": { + "zh_CN": "勾选节点后的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "data", + "type": "object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中节点信息" + } + }, + { + "name": "currentNode", + "type": "object", + "defaultValue": "", + "description": { + "zh_CN": "树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性" + } + } + ], + "returns": {} + }, + "defaultValue": "" + }, + "onNodeClick": { + "label": { + "zh_CN": "点击节点后的事件" + }, + "description": { + "zh_CN": "点击节点后的事件" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "data", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "当前选中节点信息" + } + }, + { + "name": "node", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性" + } + }, + { + "name": "vm", + "type": "Object", + "defaultValue": "", + "description": { + "zh_CN": "树组件实例" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["data", "show-checkbox"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "timeline", + "name": { + "zh_CN": "时间线" + }, + "component": "TinyTimeLine", + "description": "TimeLine 时间线", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "TimeLine", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 3, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "horizontal", + "type": "Boolean", + "defaultValue": { + "type": "i18n", + "zh_CN": "布局", + "en_US": "layout", + "key": "" + }, + "label": { + "text": { + "zh_CN": "水平布局" + } + }, + "cols": 12, + "rules": [], + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点和文字横向布局" + } + }, + { + "property": "vertical", + "type": "Boolean", + "defaultValue": { + "type": "i18n", + "zh_CN": "垂直布局", + "en_US": "layout", + "key": "" + }, + "label": { + "text": { + "zh_CN": "垂直布局" + } + }, + "cols": 12, + "rules": [], + "hidden": false, + "required": true, + "readOnly": false, + "disabled": false, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "节点和文字垂直布局" + } + }, + { + "property": "active", + "label": { + "text": { + "zh_CN": "选中值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "步骤条的选中步骤值" + }, + "labelPosition": "left" + }, + { + "property": "data", + "label": { + "text": { + "zh_CN": "数据" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": [ + { + "name": "配置基本信息", + "status": "ready" + }, + { + "name": "配置报价", + "status": "wait" + }, + { + "name": "完成报价", + "status": "wait" + } + ], + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "时间线步骤条数据" + }, + "labelPosition": "left" + } + ] + } + ], + "events": { + "onClick": { + "label": { + "zh_CN": "节点的点击时触发" + }, + "description": { + "zh_CN": "节点的点击时触发的回调函数" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "type", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "点击节点的下标" + } + }, + { + "name": "value", + "type": "string", + "defaultValue": "", + "description": { + "zh_CN": "当前节点对象:{ name: 节点名称, time: 时间 }" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": false, + "isModal": false, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["active", "data"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "tooltip", + "name": { + "zh_CN": "文字提示框" + }, + "component": "TinyTooltip", + "description": "动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Tooltip", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 11, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 20, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "placement", + "label": { + "text": { + "zh_CN": "提示位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "top", + "value": "top" + }, + { + "label": "top-start", + "value": "top-start" + }, + { + "label": "top-end", + "value": "top-end" + }, + { + "label": "bottom", + "value": "bottom" + }, + { + "label": "bottom-start", + "value": "bottom-start" + }, + { + "label": "bottom-end", + "value": "bottom-end" + }, + { + "label": "left", + "value": "left" + }, + { + "label": "left-start", + "value": "left-start" + }, + { + "label": "left-end", + "value": "left-end" + }, + { + "label": "right", + "value": "right" + }, + { + "label": "right-start", + "value": "right-start" + }, + { + "label": "right-end", + "value": "right-end" + } + ] + } + }, + "description": { + "zh_CN": "Tooltip 的出现位置" + }, + "labelPosition": "left" + }, + { + "property": "content", + "label": { + "text": { + "zh_CN": "内容" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "defaultValue": "提示信息", + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "显示的内容,也可以通过 slot#content 传入 DOM" + } + }, + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "是否可见" + } + }, + "defaultValue": true, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "状态是否可见" + } + }, + { + "property": "manual", + "label": { + "text": { + "zh_CN": "手动控制" + } + }, + "defaultValue": true, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效" + } + } + ] + } + ], + "events": {}, + "slots": { + "content": { + "label": { + "zh_CN": "提示内容" + }, + "description": { + "zh_CN": "自定义提示内容" + } + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "isPopper": true, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["disabled", "content"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + }, + { + "icon": "popover", + "name": { + "zh_CN": "提示框" + }, + "component": "TinyPopover", + "description": "Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画", + "docUrl": "", + "screenshot": "", + "tags": "", + "keywords": "", + "devMode": "proCode", + "npm": { + "package": "@opentiny/vue", + "exportName": "Popover", + "version": "", + "destructuring": true + }, + "group": "component", + "priority": 7, + "schema": { + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "modelValue", + "label": { + "text": { + "zh_CN": "绑定值" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "双向绑定,手动控制是否可见的状态值" + }, + "labelPosition": "left" + }, + { + "property": "placement", + "label": { + "text": { + "zh_CN": "位置" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "top", + "value": "top" + }, + { + "label": "top-start", + "value": "top-start" + }, + { + "label": "top-end", + "value": "top-end" + }, + { + "label": "bottom", + "value": "bottom" + }, + { + "label": "bottom-start", + "value": "bottom-start" + }, + { + "label": "bottom-end", + "value": "bottom-end" + }, + { + "label": "left", + "value": "left" + }, + { + "label": "left-start", + "value": "left-start" + }, + { + "label": "left-end", + "value": "left-end" + }, + { + "label": "right", + "value": "right" + }, + { + "label": "right-start", + "value": "right-start" + }, + { + "label": "right-end", + "value": "right-end" + } + ] + } + }, + "description": { + "zh_CN": "" + }, + "labelPosition": "left" + }, + { + "property": "trigger", + "label": { + "text": { + "zh_CN": "触发方式" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { + "label": "click", + "value": "click" + }, + { + "label": "focus", + "value": "focus" + }, + { + "label": "hover", + "value": "hover" + }, + { + "label": "manual", + "value": "manual" + } + ] + } + }, + "description": { + "zh_CN": "触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click" + } + }, + { + "property": "popper-class", + "label": { + "text": { + "zh_CN": "自定义类" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "为 popper 添加类名" + }, + "labelPosition": "left" + }, + { + "property": "visible-arrow", + "label": { + "text": { + "zh_CN": "显示箭头" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "是否显示 Tooltip 箭头" + } + }, + { + "property": "append-to-body", + "label": { + "text": { + "zh_CN": "添加到body上" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "Popover弹窗是否添加到body上" + } + }, + { + "property": "arrow-offset", + "label": { + "text": { + "zh_CN": "箭头的位置偏移" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "箭头的位置偏移,该属性的默认值为 0" + } + }, + { + "property": "close-delay", + "label": { + "text": { + "zh_CN": "隐藏延迟" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "触发方式为 hover 时的隐藏延迟,单位为毫秒" + } + }, + { + "property": "content", + "label": { + "text": { + "zh_CN": "显示的内容" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "显示的内容,也可以通过 slot 传入 DOM" + } + }, + { + "property": "disabled", + "label": { + "text": { + "zh_CN": "禁用" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "Popover 是否可用" + } + }, + { + "property": "offset", + "label": { + "text": { + "zh_CN": "位置偏移量" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "出现位置的偏移量" + } + }, + { + "property": "open-delay", + "label": { + "text": { + "zh_CN": "显示延迟" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "触发方式为 hover 时的显示延迟,单位为毫秒" + } + }, + { + "property": "popper-options", + "label": { + "text": { + "zh_CN": "popper.js的参数" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "CodeConfigurator", + "props": {} + }, + "description": { + "zh_CN": "popper.js 的参数" + } + }, + { + "property": "title", + "label": { + "text": { + "zh_CN": "标题" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "标题" + } + }, + { + "property": "transform-origin", + "label": { + "text": { + "zh_CN": "旋转中心点" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "SwitchConfigurator", + "props": {} + }, + "description": { + "zh_CN": "组件的旋转中心点,组件的旋转中心点" + } + }, + { + "property": "transition", + "label": { + "text": { + "zh_CN": "定义渐变动画" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "InputConfigurator", + "props": {} + }, + "description": { + "zh_CN": "该属性的默认值为 fade-in-linear" + } + }, + { + "property": "width", + "label": { + "text": { + "zh_CN": "宽度" + } + }, + "required": true, + "readOnly": false, + "disabled": false, + "cols": 12, + "widget": { + "component": "NumberConfigurator", + "props": {} + }, + "description": { + "zh_CN": "宽度" + } + } + ] + } + ], + "events": { + "onUpdate:modelValue": { + "label": { + "zh_CN": "双向绑定的值改变时触发" + }, + "description": { + "zh_CN": "手动控制是否可见的状态值改变时触发" + }, + "type": "event", + "functionInfo": { + "params": [ + { + "name": "value", + "type": "boolean", + "defaultValue": "", + "description": { + "zh_CN": "双向绑定的可见状态值" + } + } + ], + "returns": {} + }, + "defaultValue": "" + } + } + }, + "configure": { + "loop": true, + "condition": true, + "styles": true, + "isContainer": true, + "isModal": false, + "isPopper": true, + "nestingRule": { + "childWhitelist": "", + "parentWhitelist": "", + "descendantBlacklist": "", + "ancestorWhitelist": "" + }, + "isNullNode": false, + "isLayout": false, + "rootSelector": "", + "shortcuts": { + "properties": ["visible", "width"] + }, + "contextMenu": { + "actions": ["create symbol"], + "disable": ["copy", "remove"] + } + } + } + ], + "blocks": [], + "snippets": [ + { + "group": "html", + "children": [ + { + "name": { + "zh_CN": "段落" + }, + "icon": "paragraph", + "screenshot": "", + "snippetName": "p", + "schema": { + "componentName": "p", + "children": "TinyEngine 前端可视化设计器致力于通过友好的用户交互提升业务应用的开发效率。" + } + }, + { + "name": { + "zh_CN": "链接" + }, + "icon": "link", + "screenshot": "", + "snippetName": "a", + "schema": { + "componentName": "a", + "children": "链接" + } + }, + { + "name": { + "zh_CN": "分隔线" + }, + "icon": "hr", + "screenshot": "", + "snippetName": "hr", + "schema": {} + }, + { + "name": { + "zh_CN": "标题" + }, + "icon": "h16", + "screenshot": "", + "snippetName": "h1", + "schema": { + "componentName": "h1", + "props": {}, + "children": "Heading" + } + }, + { + "name": { + "zh_CN": "输入框" + }, + "icon": "input", + "screenshot": "", + "snippetName": "input", + "schema": { + "componentName": "input", + "props": { + "type": "text", + "placeholder": "请输入" + } + } + }, + { + "name": { + "zh_CN": "视频" + }, + "icon": "video", + "screenshot": "", + "snippetName": "video", + "schema": { + "componentName": "video", + "props": { + "src": "img/webNova.jpg", + "width": "200", + "height": "100", + "style": "border:1px solid #ccc" + } + } + }, + { + "name": { + "zh_CN": "图片" + }, + "icon": "Image", + "screenshot": "", + "snippetName": "img", + "schema": { + "componentName": "img", + "props": { + "src": "img/webNova.jpg", + "width": "200", + "height": "100" + } + } + }, + { + "name": { + "zh_CN": "按钮" + }, + "icon": "button", + "screenshot": "", + "snippetName": "button", + "schema": { + "componentName": "button", + "props": {}, + "children": [ + { + "componentName": "Text", + "props": { + "text": "按钮文案" + } + } + ] + } + }, + { + "name": { + "zh_CN": "表格" + }, + "icon": "table", + "screenshot": "", + "snippetName": "table", + "schema": { + "componentName": "table", + "props": { + "border": "1" + }, + "children": [ + { + "componentName": "tr", + "children": [ + { + "componentName": "td", + "children": "Month" + }, + { + "componentName": "td", + "children": "Savings" + } + ] + }, + { + "componentName": "tr", + "children": [ + { + "componentName": "td", + "children": "January" + }, + { + "componentName": "td", + "children": "100" + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "表单" + }, + "icon": "form", + "screenshot": "", + "snippetName": "form", + "schema": { + "componentName": "form", + "props": { + "action": "action" + }, + "children": [ + { + "componentName": "label", + "props": { + "for": "male" + }, + "children": "male" + }, + { + "componentName": "input", + "props": { + "type": "text" + } + }, + { + "componentName": "br" + }, + { + "componentName": "label", + "props": { + "for": "Female" + }, + "children": "Female" + }, + { + "componentName": "input", + "props": { + "type": "text" + } + } + ] + } + } + ] + }, + { + "group": "content", + "children": [ + { + "name": { + "zh_CN": "走马灯" + }, + "screenshot": "", + "snippetName": "tiny-carousel", + "icon": "carousel", + "schema": { + "componentName": "TinyCarousel", + "props": { + "height": "180px" + }, + "children": [ + { + "componentName": "TinyCarouselItem", + "children": [ + { + "componentName": "div", + "props": { + "style": "margin:10px 0 0 30px" + } + } + ] + }, + { + "componentName": "TinyCarouselItem", + "children": [ + { + "componentName": "div", + "props": { + "style": "margin:10px 0 0 30px" + } + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "表单" + }, + "screenshot": "", + "snippetName": "tiny-form", + "icon": "form", + "schema": { + "componentName": "TinyForm", + "props": { + "labelWidth": "80px", + "labelPosition": "top" + }, + "children": [ + { + "componentName": "TinyFormItem", + "props": { + "label": "人员" + }, + "children": [ + { + "componentName": "TinyInput", + "props": { + "placeholder": "请输入", + "modelValue": "" + } + } + ] + }, + { + "componentName": "TinyFormItem", + "props": { + "label": "密码" + }, + "children": [ + { + "componentName": "TinyInput", + "props": { + "placeholder": "请输入", + "modelValue": "", + "type": "password" + } + } + ] + }, + { + "componentName": "TinyFormItem", + "props": { + "label": "" + }, + "children": [ + { + "componentName": "TinyButton", + "props": { + "text": "提交", + "type": "primary", + "style": "margin-right: 10px" + } + }, + { + "componentName": "TinyButton", + "props": { + "text": "重置", + "type": "primary" + } + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "下拉框" + }, + "icon": "select", + "screenshot": "", + "snippetName": "TinySelect", + "schema": { + "componentName": "TinySelect", + "props": { + "modelValue": "", + "placeholder": "请选择", + "options": [ + { + "value": "1", + "label": "黄金糕" + }, + { + "value": "2", + "label": "双皮奶" + } + ] + } + } + }, + { + "name": { + "zh_CN": "开关" + }, + "icon": "switch", + "screenshot": "", + "snippetName": "TinySwitch", + "schema": { + "componentName": "TinySwitch", + "props": { + "modelValue": "" + } + } + }, + { + "name": { + "zh_CN": "复选框组" + }, + "icon": "checkboxs", + "screenshot": "", + "snippetName": "TinyCheckboxGroup", + "schema": { + "componentName": "TinyCheckboxGroup", + "props": { + "modelValue": ["name1", "name2"], + "type": "checkbox", + "options": [ + { + "text": "复选框1", + "label": "name1" + }, + { + "text": "复选框2", + "label": "name2" + }, + { + "text": "复选框3", + "label": "name3" + } + ] + } + } + }, + { + "name": { + "zh_CN": "复选框拖拽按钮组" + }, + "icon": "checkboxgroup", + "screenshot": "", + "snippetName": "TinyCheckboxbuttonGroup", + "schema": { + "componentName": "TinyCheckboxGroup", + "props": { + "modelValue": [] + }, + "children": [ + { + "componentName": "TinyCheckboxButton", + "children": [ + { + "componentName": "div" + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "对话框" + }, + "screenshot": "", + "snippetName": "TinyDialogBox", + "icon": "dialogbox", + "schema": { + "componentName": "TinyDialogBox", + "props": { + "visible": true, + "show-close": true, + "title": "dialogBox title" + }, + "children": [ + { + "componentName": "div" + } + ] + } + }, + { + "name": { + "zh_CN": "标签页" + }, + "icon": "tabs", + "screenshot": "", + "group": true, + "snippetName": "TinyTabs", + "schema": { + "componentName": "TinyTabs", + "props": { + "modelValue": "first" + }, + "children": [ + { + "componentName": "TinyTabItem", + "props": { + "title": "标签页1", + "name": "first" + }, + "children": [ + { + "componentName": "div", + "props": { + "style": "margin:10px 0 0 30px" + } + } + ] + }, + { + "componentName": "TinyTabItem", + "props": { + "title": "标签页2", + "name": "second" + }, + "children": [ + { + "componentName": "div", + "props": { + "style": "margin:10px 0 0 30px" + } + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "折叠面板" + }, + "screenshot": "", + "snippetName": "TinyCollapse", + "icon": "collapse", + "schema": { + "componentName": "TinyCollapse", + "props": { + "modelValue": "collapse1" + }, + "children": [ + { + "componentName": "TinyCollapseItem", + "props": { + "name": "collapse1", + "title": "折叠项1" + }, + "children": [ + { + "componentName": "div" + } + ] + }, + { + "componentName": "TinyCollapseItem", + "props": { + "name": "collapse2", + "title": "折叠项2" + }, + "children": [ + { + "componentName": "div" + } + ] + }, + { + "componentName": "TinyCollapseItem", + "props": { + "name": "collapse3", + "title": "折叠项3" + }, + "children": [ + { + "componentName": "div" + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "表格" + }, + "icon": "grid", + "screenshot": "", + "snippetName": "tinyGrid", + "schema": { + "componentName": "TinyGrid", + "props": { + "editConfig": { + "trigger": "click", + "mode": "cell", + "showStatus": true + }, + "columns": [ + { + "type": "index", + "width": 60 + }, + { + "type": "selection", + "width": 60 + }, + { + "field": "employees", + "title": "员工数" + }, + { + "field": "created_date", + "title": "创建日期" + }, + { + "field": "city", + "title": "城市" + } + ], + "data": [ + { + "id": "1", + "name": "GFD科技有限公司", + "city": "福州", + "employees": 800, + "created_date": "2014-04-30 00:56:00", + "boole": false + }, + { + "id": "2", + "name": "WWW科技有限公司", + "city": "深圳", + "employees": 300, + "created_date": "2016-07-08 12:36:22", + "boole": true + } + ] + } + } + }, + { + "name": { + "zh_CN": "弹出编辑" + }, + "icon": "popeditor", + "screenshot": "", + "snippetName": "TinyPopeditor", + "schema": { + "componentName": "TinyPopeditor", + "props": { + "modelValue": "", + "placeholder": "请选择", + "gridOp": { + "columns": [ + { + "field": "id", + "title": "ID", + "width": 40 + }, + { + "field": "name", + "title": "名称", + "showOverflow": "tooltip" + }, + { + "field": "province", + "title": "省份", + "width": 80 + }, + { + "field": "city", + "title": "城市", + "width": 80 + } + ], + "data": [ + { + "id": "1", + "name": "GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司", + "city": "福州", + "province": "福建" + }, + { + "id": "2", + "name": "WWW科技有限公司", + "city": "深圳", + "province": "广东" + }, + { + "id": "3", + "name": "RFV有限责任公司", + "city": "中山", + "province": "广东" + }, + { + "id": "4", + "name": "TGB科技有限公司", + "city": "龙岩", + "province": "福建" + }, + { + "id": "5", + "name": "YHN科技有限公司", + "city": "韶关", + "province": "广东" + }, + { + "id": "6", + "name": "WSX科技有限公司", + "city": "黄冈", + "province": "武汉" + } + ] + } + } + } + }, + { + "name": { + "zh_CN": "树" + }, + "icon": "tree", + "screenshot": "", + "snippetName": "TinyTree", + "schema": { + "componentName": "TinyTree", + "props": { + "data": [ + { + "label": "一级 1", + "children": [ + { + "label": "二级 1-1", + "children": [ + { + "label": "三级 1-1-1" + } + ] + } + ] + }, + { + "label": "一级 2", + "children": [ + { + "label": "二级 2-1", + "children": [ + { + "label": "三级 2-1-1" + } + ] + }, + { + "label": "二级 2-2", + "children": [ + { + "label": "三级 2-2-1" + } + ] + } + ] + } + ] + } + } + }, + { + "name": { + "zh_CN": "文字提示框" + }, + "icon": "tooltip", + "screenshot": "", + "snippetName": "TinyTooltip", + "schema": { + "componentName": "TinyTooltip", + "props": { + "content": "Top Left 提示文字", + "placement": "top-start", + "manual": true, + "modelValue": true + }, + "children": [ + { + "componentName": "span", + "children": [ + { + "componentName": "div", + "props": {} + } + ] + }, + { + "componentName": "Template", + "props": { + "slot": "content" + }, + "children": [ + { + "componentName": "span", + "children": [ + { + "componentName": "div", + "props": { + "placeholder": "提示内容" + } + } + ] + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "提示框" + }, + "icon": "popover", + "screenshot": "", + "snippetName": "TinyPopover", + "schema": { + "componentName": "TinyPopover", + "props": { + "width": 200, + "title": "弹框标题", + "trigger": "manual", + "modelValue": true + }, + "children": [ + { + "componentName": "Template", + "props": { + "slot": "reference" + }, + "children": [ + { + "componentName": "div", + "props": { + "placeholder": "触发源" + } + } + ] + }, + { + "componentName": "Template", + "props": { + "slot": "default" + }, + "children": [ + { + "componentName": "div", + "props": { + "placeholder": "提示内容" + } + } + ] + } + ] + } + }, + { + "name": { + "zh_CN": "分页" + }, + "icon": "pager", + "screenshot": "", + "snippetName": "TinyPager", + "schema": { + "componentName": "TinyPager", + "props": { + "layout": "total, sizes, prev, pager, next", + "total": 100, + "pageSize": 10, + "currentPage": 1 + } + } + }, + { + "name": { + "zh_CN": "面包屑" + }, + "icon": "breadcrumb", + "screenshot": "", + "snippetName": "TinyBreadcrumb", + "schema": { + "componentName": "TinyBreadcrumb", + "props": { + "options": [ + { + "to": "{ path: '/' }", + "label": "首页" + }, + { + "to": "{ path: '/breadcrumb' }", + "label": "产品" + }, + { + "replace": "true", + "label": "软件" + } + ] + } + } + } + ] + }, + { + "group": "general", + "children": [ + { + "name": { + "zh_CN": "Row" + }, + "icon": "row", + "screenshot": "", + "snippetName": "TinyRow", + "schema": { + "componentName": "TinyRow", + "props": {}, + "children": [ + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + }, + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + }, + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + }, + { + "componentName": "TinyCol", + "props": { + "span": 3 + } + } + ] + } + }, + { + "name": { + "zh_CN": "Col" + }, + "icon": "col", + "screenshot": "", + "snippetName": "TinyCol", + "schema": { + "componentName": "TinyCol", + "props": { + "span": 12, + "style": { + "height": "30px", + "border": "1px solid #ccc" + } + } + } + }, + { + "name": { + "zh_CN": "按钮" + }, + "icon": "button", + "screenshot": "", + "snippetName": "TinyButton", + "schema": { + "componentName": "TinyButton", + "props": { + "text": "按钮文案" + } + } + }, + { + "name": { + "zh_CN": "按钮组" + }, + "icon": "buttons", + "snippetName": "TinyButtons", + "screenshot": "", + "schema": { + "componentName": "div", + "props": {}, + "children": [ + { + "componentName": "TinyButton", + "props": { + "text": "提交", + "type": "primary", + "style": { + "margin": "0 5px 0 5px" + } + } + }, + { + "componentName": "TinyButton", + "props": { + "text": "重置", + "style": { + "margin": "0 5px 0 5px" + } + } + }, + { + "componentName": "TinyButton", + "props": { + "text": "取消" + } + } + ] + }, + "configure": { + "isContainer": true + } + }, + { + "name": { + "zh_CN": "互斥按钮组" + }, + "icon": "buttons", + "snippetName": "TinyButtonGroup", + "screenshot": "", + "schema": { + "componentName": "TinyButtonGroup", + "props": { + "data": [ + { + "text": "Button1", + "value": "1" + }, + { + "text": "Button2", + "value": "2" + }, + { + "text": "Button3", + "value": "3" + } + ], + "modelValue": "1" + } + } + }, + { + "name": { + "zh_CN": "输入框" + }, + "icon": "input", + "screenshot": "", + "snippetName": "TinyInput", + "schema": { + "componentName": "TinyInput", + "props": { + "placeholder": "请输入", + "modelValue": "" + } + } + }, + { + "name": { + "zh_CN": "单选" + }, + "icon": "radio", + "screenshot": "", + "snippetName": "TinyRadio", + "schema": { + "componentName": "TinyRadio", + "props": { + "label": "1", + "text": "单选文本" + } + } + }, + { + "name": { + "zh_CN": "复选框" + }, + "icon": "checkbox", + "screenshot": "", + "snippetName": "TinyCheckbox", + "schema": { + "componentName": "TinyCheckbox", + "props": { + "text": "复选框文案" + } + } + } + ] + }, + { + "group": "navigation", + "children": [ + { + "name": { + "zh_CN": "搜索框" + }, + "icon": "search", + "screenshot": "", + "snippetName": "TinySearch", + "schema": { + "componentName": "TinySearch", + "props": { + "modelValue": "", + "placeholder": "输入关键词" + } + } + }, + { + "name": { + "zh_CN": "时间线" + }, + "icon": "timeline", + "screenshot": "", + "snippetName": "TinyTimeLine", + "schema": { + "componentName": "TinyTimeLine", + "props": { + "active": "2", + "data": [ + { + "name": "已下单" + }, + { + "name": "运输中" + }, + { + "name": "已签收" + } + ] + } + } + } + ] + } + ] + } + } +} diff --git a/mockServer/src/services/sources.json b/mockServer/src/assets/json/sources.json similarity index 100% rename from mockServer/src/services/sources.json rename to mockServer/src/assets/json/sources.json diff --git a/mockServer/assets/uploads/.gitkeep b/mockServer/src/assets/uploads/.gitkeep similarity index 100% rename from mockServer/assets/uploads/.gitkeep rename to mockServer/src/assets/uploads/.gitkeep diff --git a/mockServer/src/config/config.js b/mockServer/src/config/config.js new file mode 100644 index 0000000000..dcd70e9a14 --- /dev/null +++ b/mockServer/src/config/config.js @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +module.exports = { + port: process.env.MOCK_PORT || 9090, + env: process.env.NODE_ENV || 'development' // Current mode +} diff --git a/mockServer/src/database/blockCategories.db b/mockServer/src/database/blockCategories.db new file mode 100644 index 0000000000..85744f5a58 --- /dev/null +++ b/mockServer/src/database/blockCategories.db @@ -0,0 +1,3 @@ +{"id":"L0fyFYECrNiRZMiX","app":{"id":918,"name":"portal-app","app_website":null,"platform":{"id":897,"name":"portal-platform"},"obs_url":"","created_by":null,"updated_by":null,"created_at":"2022-06-08T07:19:01.000Z","updated_at":"2023-09-04T08:55:40.000Z","state":null,"published":false,"createdBy":86,"updatedBy":564,"tenant":1,"home_page":"NTJ4MjvqoVj8OVsc","css":null,"config":{},"git_group":"","project_name":"","constants":null,"data_handler":{"type":"JSFunction","value":"function dataHanlder(res){\n return res;\n}"},"description":"demo应用","latest":22,"platform_history":null,"editor_url":"","branch":"develop","visit_url":null,"is_demo":null,"image_url":"","is_default":true,"template_type":null,"set_template_time":null,"set_template_by":null,"set_default_by":169,"framework":"Vue","global_state":[],"default_lang":null,"extend_config":{"business":{"serviceName":"","endpointName":"cce","endpointId":"ee","serviceId":"ee","router":"ee"},"env":{"alpha":{"regions":[{"name":"","baseUrl":"","isDefault":false}],"isDefault":true}},"type":"console"},"assets_url":"","data_hash":"ae128e37f6bc378f1b9c21d75bd05551","can_associate":true,"data_source_global":{"dataHandler":{"type":"JSFunction","value":"function dataHanlder(res){\n return res;\n}"}}},"name":"我的分类","desc":"","blocks":["ALvDb0JD8atzd3nA"],"category_id":"qukuaifenlei","_id":"L0fyFYECrNiRZMiX"} +{"$$indexCreated":{"fieldName":"name","unique":true,"sparse":false}} +{"$$indexCreated":{"fieldName":"name","unique":true}} diff --git a/mockServer/src/database/blockGroups.db b/mockServer/src/database/blockGroups.db new file mode 100644 index 0000000000..fe904aae8a --- /dev/null +++ b/mockServer/src/database/blockGroups.db @@ -0,0 +1,3 @@ +{"id":"b57MCCORYPGjgL23","app":{"id":918,"name":"portal-app","app_website":null,"platform":{"id":897,"name":"portal-platform"},"obs_url":"","created_by":null,"updated_by":null,"created_at":"2022-06-08T07:19:01.000Z","updated_at":"2023-09-04T08:55:40.000Z","state":null,"published":false,"createdBy":86,"updatedBy":564,"tenant":1,"home_page":"NTJ4MjvqoVj8OVsc","css":null,"config":{},"git_group":"","project_name":"","constants":null,"data_handler":{"type":"JSFunction","value":"function dataHanlder(res){\n return res;\n}"},"description":"demo应用","latest":22,"platform_history":null,"editor_url":"","branch":"develop","visit_url":null,"is_demo":null,"image_url":"","is_default":true,"template_type":null,"set_template_time":null,"set_template_by":null,"set_default_by":169,"framework":"Vue","global_state":[],"default_lang":null,"extend_config":{"business":{"serviceName":"","endpointName":"cce","endpointId":"ee","serviceId":"ee","router":"ee"},"env":{"alpha":{"regions":[{"name":"","baseUrl":"","isDefault":false}],"isDefault":true}},"type":"console"},"assets_url":"","data_hash":"ae128e37f6bc378f1b9c21d75bd05551","can_associate":true,"data_source_global":{"dataHandler":{"type":"JSFunction","value":"function dataHanlder(res){\n return res;\n}"}}},"name":"我的区块","desc":"","blocks":["ALvDb0JD8atzd3nA"],"_id":"b57MCCORYPGjgL23"} +{"$$indexCreated":{"fieldName":"name","unique":true,"sparse":false}} +{"$$indexCreated":{"fieldName":"name","unique":true}} diff --git a/mockServer/src/database/blocks.db b/mockServer/src/database/blocks.db new file mode 100644 index 0000000000..387c640b25 --- /dev/null +++ b/mockServer/src/database/blocks.db @@ -0,0 +1,4 @@ +{"id":"ALvDb0JD8atzd3nA","label":"PortalHome","name_cn":null,"framework":"Vue","content":{"state":{"logoUrl":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXwAAAF8CAYAAADM5wDKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI5OEVGOTU4RTg2NDExRUM5MDhERjU4NjRDOUUxQTUwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjI5OEVGOTU5RTg2NDExRUM5MDhERjU4NjRDOUUxQTUwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Mjk4RUY5NTZFODY0MTFFQzkwOERGNTg2NEM5RTFBNTAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Mjk4RUY5NTdFODY0MTFFQzkwOERGNTg2NEM5RTFBNTAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4dZkpJAAAvNElEQVR42uyd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","loginImgUrl":"data:image/png;base64,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"},"componentName":"Block","css":".home-content {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n text-align: center;\r\n height: calc(100vh - 262px);\r\n \r\n}\r\n.home-content .btn {\r\n margin-top: 24px;\r\n \r\n }\r\n .home-content .btn button {\r\n border: none;\r\n border-radius: 30px;\r\n background: #5e7ce0;\r\n \r\n font-size: 14px;\r\n color: #fff;\r\n \r\n cursor: pointer;\r\n }\r\n\r\n .home-content .text {\r\n font-size: 18px;\r\n }\r\n\r\n .home-content .account {\r\n margin-top: 16px;\r\n \r\n \r\n }\r\n\r\n .home-content .account .sub-text {\r\n color: #575d6c;\r\n }\r\n .home-content .account .login {\r\n color: #1890ff;\r\n cursor: pointer;\r\n }\r\n .home-content .logo img{\r\n border-radius: 50%;\r\n overflow: hidden;\r\n }","props":{},"children":[{"componentName":"div","props":{"className":"home","style":"height: 100vh; display: flex;"},"id":"357534ab","children":[{"componentName":"TinyRow","props":{"align":"middle","flex":true,"style":""},"children":[{"componentName":"TinyCol","props":{"span":6,"style":"text-align: center; display: flex; justify-content: center;"},"id":"f01b66ea","children":[{"componentName":"div","props":{"style":"width: 90%; height: 50%;"},"id":"8197d016","children":[{"componentName":"Img","props":{"style":"width: 100%; height: 100%;","src":{"type":"JSExpression","value":"this.state.loginImgUrl"}},"id":"471e30f3"}]}]},{"componentName":"TinyCol","props":{"span":"6","style":"text-align: center;"},"id":"781d5b46","children":[{"componentName":"div","props":{"className":"home-content","style":"font-size: 14px;"},"id":"08638b8a","children":[{"componentName":"div","props":{"className":"text"},"id":"18712ee2","children":[{"componentName":"div","props":{"style":"font-size: 16px;"},"id":"07e6794c","children":[{"componentName":"div","props":{"className":"logo"},"id":"07cad264","children":[{"componentName":"Img","props":{"style":"width: 105px; height: 105px; border-radius: 100px;","src":{"type":"JSExpression","value":"this.state.logoUrl"}},"id":"f4489e27"}]},{"componentName":"Text","props":{"text":"TinyLowCode 低代码平台","style":"display: block; font-size: 28px; margin-top: 12px; margin-bottom: 12px; font-weight: bold;","ref":"","className":"title"},"id":"e82108ce"},{"componentName":"Text","props":{"text":"致力于通过友好的用户交互提升业务的开发效率","style":"display: block; margin-bottom: 12px;"},"id":"65a2f1ad"},{"componentName":"Text","props":{"text":"欢迎一起来解锁~~","style":"margin-top: 12px;"},"id":"bb879abb"}]},{"componentName":"div","props":{"className":"btn"},"id":"44b2bcbd","children":[{"componentName":"TinyButton","props":{"text":"立即体验","round":true,"type":"primary","style":"margin-top: 40px;"},"id":"9580c5e7"},{"componentName":"div","props":{"className":"account"},"id":"6a8ffa3e","children":[{"componentName":"div","props":{"style":"font-size: 14px; margin-top: 4px;"},"id":"bfc6eb6c","children":[{"componentName":"Text","props":{"text":"已有团队?","style":"color: #777777;"},"id":"3d993264"},{"componentName":"Text","props":{"text":"立即进入","style":"color: #5e7ce0;","onClick":{"type":"JSExpression","value":"this.handleClick(event)"}},"id":"21390118"}]}]}]}]}]}]}],"id":"4545fea2"}]}],"methods":{"handleClick":{"type":"JSFunction","value":"function (event) {this.emit('goto-home', event)\n}"}},"fileName":"PortalHome","meta":{"id":1722,"parentId":"0","group":"staticPages","title":null,"occupier":null,"isHome":false,"description":"","router":"/","rootElement":"div","creator":"开发者","gmt_create":"2022-06-08 03:25:51","gmt_modified":"2022-06-09 05:19:09"},"id":1722,"schema":{"properties":[{"label":{"zh_CN":"基础信息"},"description":{"zh_CN":"基础信息"},"collapse":{"number":6,"text":{"zh_CN":"显示更多"}},"content":[]}],"events":{"onGotoHome":{"label":{"zh_CN":"点击立即进入触发方法"},"description":{"zh_CN":"点击立即进入触发方法"},"type":"event","functionInfo":{"params":[],"returns":{}},"defaultValue":"","linked":{"id":"21390118","componentName":"Text","event":"onClick"}}},"slots":{}},"dataSource":{},"i18n":{}},"description":null,"path":"common/components/home","screenshot":"","created_app":null,"tags":"","categories":[],"occupier":null,"isDefault":null,"isOfficial":true,"created_at":"2022-06-13T07:56:51.000Z","updated_at":"2023-01-13T08:12:51.000Z","assets":{"material":[],"scripts":["http://localhost:9090/assets/js/989web-components.es.js","http://localhost:9090/assets/js/989web-components.umd.js"],"styles":[]},"createdBy":86,"current_history":1655,"public":1,"tiny_reserved":false,"author":null,"content_blocks":null,"current_version":"x","is_published":true,"_id":"ALvDb0JD8atzd3nA"} +{"id":"V85zd9sWEya25Kxh","label":"PortalBlock","name_cn":null,"framework":"Vue","content":{"state":{},"methods":{},"componentName":"Block","fileName":"PortalBlock","css":"","props":{},"children":[{"componentName":"div","props":{"style":"font-size: 18px; height: 40px; border-bottom: 1px solid rgb(223, 225, 230); margin-top: 20px;"},"id":"d38cea57","children":[{"componentName":"Icon","props":{"name":"IconChevronLeft"},"id":"86c6e6b0"},{"componentName":"Text","props":{"text":"编辑物料资产包 | ","style":"margin-left: 10px; font-weight: bold;"},"id":"38d9fbc8"},{"componentName":"Text","props":{"text":{"type":"JSExpression","value":"this.props.blockName"},"style":"margin-left: 10px; font-weight: bold;"},"id":"6cd76396"}]}],"schema":{"properties":[{"label":{"zh_CN":"基础信息"},"description":{"zh_CN":"基础信息"},"collapse":{"number":6,"text":{"zh_CN":"显示更多"}},"content":[{"property":"blockName","type":"String","defaultValue":"MT0526-React 1.0","label":{"text":{"zh_CN":"区块名称"}},"cols":12,"rules":[],"handle":{"getter":"","setter":""},"hidden":false,"required":true,"readOnly":false,"disabled":false,"widget":{"component":"MetaInput","props":{"modelValue":"MT0526-React 1.0"}}}]}],"events":{},"slots":{}},"dataSource":{}},"description":null,"path":"portal","screenshot":"","created_app":null,"tags":null,"categories":[],"occupier":{"id":86,"username":"开发者","resetPasswordToken":"developer"},"isDefault":null,"isOfficial":null,"created_at":"2022-06-28T08:59:54.000Z","updated_at":"2023-01-13T08:20:09.000Z","assets":{"material":[],"scripts":["http://localhost:9090/assets/js/1005web-components.es.js","http://localhost:9090/assets/js/1005web-components.umd.js"],"styles":[]},"createdBy":{"id":86,"username":"开发者","resetPasswordToken":"developer"},"current_history":1665,"public":1,"tiny_reserved":false,"author":null,"content_blocks":null,"public_scope_tenants":[],"histories_length":1,"is_published":true,"_id":"V85zd9sWEya25Kxh"} +{"$$indexCreated":{"fieldName":"label","unique":true,"sparse":false}} +{"$$indexCreated":{"fieldName":"label","unique":true}} diff --git a/mockServer/src/database/pages.db b/mockServer/src/database/pages.db index 4ebe412f3f..103c886105 100644 --- a/mockServer/src/database/pages.db +++ b/mockServer/src/database/pages.db @@ -1,5 +1,4 @@ {"name":"DemoPage","id":"5bhD7p5FUsUOTFRN","app":"918","route":"demopage","page_content":{"state":{},"methods":{},"componentName":"Page","css":"","props":{},"lifeCycles":{},"children":[{"componentName":"div","props":{},"id":"85375559","children":[{"componentName":"TinySwitch","props":{"modelValue":""},"id":"33433546"}]}],"dataSource":{"list":[]},"utils":[],"bridge":[],"inputs":[],"outputs":[],"fileName":"DemoPage"},"tenant":1,"isBody":false,"parentId":"0","group":"staticPages","depth":0,"isPage":true,"isDefault":false,"occupier":{"id":86,"username":"开发者","email":"developer@lowcode.com","resetPasswordToken":"developer","confirmationToken":"dfb2c162-351f-4f44-ad5f-8998","is_admin":true},"isHome":false,"message":"Page auto save","_id":"5bhD7p5FUsUOTFRN"} {"name":"createVm","id":"NTJ4MjvqoVj8OVsc","app":"918","route":"createVm","page_content":{"state":{"dataDisk":[1,2,3]},"methods":{},"componentName":"Page","css":"body {\r\n background-color:#eef0f5 ;\r\n margin-bottom: 80px;\r\n}","props":{},"children":[{"componentName":"div","props":{"style":"padding-bottom: 10px; padding-top: 10px;"},"id":"2b2cabf0","children":[{"componentName":"TinyTimeLine","props":{"active":"2","data":[{"name":"基础配置"},{"name":"网络配置"},{"name":"高级配置"},{"name":"确认配置"}],"horizontal":true,"style":"border-radius: 0px;"},"id":"dd764b17"}]},{"componentName":"div","props":{"style":"border-width: 1px; border-style: solid; border-radius: 4px; border-color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; margin-bottom: 10px;"},"id":"30c94cc8","children":[{"componentName":"TinyForm","props":{"labelWidth":"80px","labelPosition":"top","inline":false,"label-position":"left ","label-width":"150px","style":"border-radius: 0px;"},"children":[{"componentName":"TinyFormItem","props":{"label":"计费模式"},"children":[{"componentName":"TinyButtonGroup","props":{"data":[{"text":"包年/包月","value":"1"},{"text":"按需计费","value":"2"}],"modelValue":"1"},"id":"a8d84361"}],"id":"9f39f3e7"},{"componentName":"TinyFormItem","props":{"label":"区域"},"children":[{"componentName":"TinyButtonGroup","props":{"data":[{"text":"乌兰察布二零一","value":"1"}],"modelValue":"1","style":"border-radius: 0px; margin-right: 10px;"},"id":"c97ccd99"},{"componentName":"Text","props":{"text":"温馨提示:页面左上角切换区域","style":"background-color: [object Event]; color: #8a8e99; font-size: 12px;"},"id":"20923497"},{"componentName":"Text","props":{"text":"不同区域的云服务产品之间内网互不相通;请就近选择靠近您业务的区域,可减少网络时延,提高访问速度","style":"display: block; color: #8a8e99; border-radius: 0px; font-size: 12px;"},"id":"54780a26"}],"id":"4966384d"},{"componentName":"TinyFormItem","props":{"label":"可用区","style":"border-radius: 0px;"},"children":[{"componentName":"TinyButtonGroup","props":{"data":[{"text":"可用区1","value":"1"},{"text":"可用区2","value":"2"},{"text":"可用区3","value":"3"}],"modelValue":"1"},"id":"6184481b"}],"id":"690837bf"}],"id":"b6a425d4"}]},{"componentName":"div","props":{"style":"border-width: 1px; border-style: solid; border-radius: 4px; border-color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; margin-bottom: 10px;"},"children":[{"componentName":"TinyForm","props":{"labelWidth":"80px","labelPosition":"top","inline":false,"label-position":"left ","label-width":"150px","style":"border-radius: 0px;"},"children":[{"componentName":"TinyFormItem","props":{"label":"CPU架构"},"children":[{"componentName":"TinyButtonGroup","props":{"data":[{"text":"x86计算","value":"1"},{"text":"鲲鹏计算","value":"2"}],"modelValue":"1"},"id":"7d33ced7"}],"id":"05ed5a79"},{"componentName":"TinyFormItem","props":{"label":"区域"},"children":[{"componentName":"div","props":{"style":"display: flex; justify-content: flex-start; align-items: center;"},"id":"606edf78","children":[{"componentName":"div","props":{"style":"display: flex; align-items: center; margin-right: 10px;"},"id":"f3f98246","children":[{"componentName":"Text","props":{"text":"vCPUs","style":"width: 80px;"},"id":"c287437e"},{"componentName":"TinySelect","props":{"modelValue":"","placeholder":"请选择","options":[{"value":"1","label":"黄金糕"},{"value":"2","label":"双皮奶"}]},"id":"4c43286b"}]},{"componentName":"div","props":{"style":"display: flex; align-items: center; margin-right: 10px;"},"children":[{"componentName":"Text","props":{"text":"内存","style":"width: 80px; border-radius: 0px;"},"id":"38b8fa1f"},{"componentName":"TinySelect","props":{"modelValue":"","placeholder":"请选择","options":[{"value":"1","label":"黄金糕"},{"value":"2","label":"双皮奶"}]},"id":"cd33328e"}],"id":"2b2c678f"},{"componentName":"div","props":{"style":"display: flex; align-items: center;"},"children":[{"componentName":"Text","props":{"text":"规格名称","style":"width: 80px;"},"id":"d3eb6352"},{"componentName":"TinySearch","props":{"modelValue":"","placeholder":"输入关键词"},"id":"21cb9282"}],"id":"b8e0f35c"}]},{"componentName":"div","props":{"style":"border-radius: 0px;"},"id":"5000c83e","children":[{"componentName":"TinyButtonGroup","props":{"data":[{"text":"通用计算型","value":"1"},{"text":"通用计算增强型","value":"2"},{"text":"内存优化型","value":"3"},{"text":"内存优化型","value":"4"},{"text":"磁盘增强型","value":"5"},{"text":"超高I/O型","value":"6"},{"text":"GPU加速型","value":"7"}],"modelValue":"1","style":"border-radius: 0px; margin-top: 12px;"},"id":"b8724703"},{"componentName":"TinyGrid","props":{"editConfig":{"trigger":"click","mode":"cell","showStatus":true},"columns":[{"type":"radio","width":60},{"field":"employees","title":"规格名称"},{"field":"created_date","title":"vCPUs | 内存(GiB)","sortable":true},{"field":"city","title":"CPU","sortable":true},{"title":"基准 / 最大带宽\t","sortable":true},{"title":"内网收发包","sortable":true}],"data":[{"id":"1","name":"GFD科技有限公司","city":"福州","employees":800,"created_date":"2014-04-30 00:56:00","boole":false},{"id":"2","name":"WWW科技有限公司","city":"深圳","employees":300,"created_date":"2016-07-08 12:36:22","boole":true}],"style":"margin-top: 12px; border-radius: 0px;","auto-resize":true},"id":"77701c25"},{"componentName":"div","props":{"style":"margin-top: 12px; border-radius: 0px;"},"id":"3339838b","children":[{"componentName":"Text","props":{"text":"当前规格","style":"width: 150px; display: inline-block;"},"id":"203b012b"},{"componentName":"Text","props":{"text":"通用计算型 | Si2.large.2 | 2vCPUs | 4 GiB","style":"font-weight: 700;"},"id":"87723f52"}]}]}],"id":"657fb2fc"}],"id":"d19b15cf"}],"id":"9991228b"},{"componentName":"div","props":{"style":"border-width: 1px; border-style: solid; border-radius: 4px; border-color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; margin-bottom: 10px;"},"children":[{"componentName":"TinyForm","props":{"labelWidth":"80px","labelPosition":"top","inline":false,"label-position":"left ","label-width":"150px","style":"border-radius: 0px;"},"children":[{"componentName":"TinyFormItem","props":{"label":"镜像","style":"border-radius: 0px;"},"children":[{"componentName":"TinyButtonGroup","props":{"data":[{"text":"公共镜像","value":"1"},{"text":"私有镜像","value":"2"},{"text":"共享镜像","value":"3"}],"modelValue":"1"},"id":"922b14cb"},{"componentName":"div","props":{"style":"display: flex; margin-top: 12px; border-radius: 0px;"},"id":"6b679524","children":[{"componentName":"TinySelect","props":{"modelValue":"","placeholder":"请选择","options":[{"value":"1","label":"黄金糕"},{"value":"2","label":"双皮奶"}],"style":"width: 170px; margin-right: 10px;"},"id":"4851fff7"},{"componentName":"TinySelect","props":{"modelValue":"","placeholder":"请选择","options":[{"value":"1","label":"黄金糕"},{"value":"2","label":"双皮奶"}],"style":"width: 340px;"},"id":"a7183eb7"}]},{"componentName":"div","props":{"style":"margin-top: 12px;"},"id":"57aee314","children":[{"componentName":"Text","props":{"text":"请注意操作系统的语言类型。","style":"color: #e37d29;"},"id":"56d36c27"}]}],"id":"e3b02436"}],"id":"59aebf2b"}],"id":"87ff7b99"},{"componentName":"div","props":{"style":"border-width: 1px; border-style: solid; border-radius: 4px; border-color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; margin-bottom: 10px;"},"children":[{"componentName":"TinyForm","props":{"labelWidth":"80px","labelPosition":"top","inline":false,"label-position":"left ","label-width":"150px","style":"border-radius: 0px;"},"children":[{"componentName":"TinyFormItem","props":{"label":"系统盘","style":"border-radius: 0px;"},"children":[{"componentName":"div","props":{"style":"display: flex;"},"id":"cddba5b8","children":[{"componentName":"TinySelect","props":{"modelValue":"","placeholder":"请选择","options":[{"value":"1","label":"黄金糕"},{"value":"2","label":"双皮奶"}],"style":"width: 200px; margin-right: 10px;"},"id":"a97fbe15"},{"componentName":"TinyInput","props":{"placeholder":"请输入","modelValue":"","style":"width: 120px; margin-right: 10px;"},"id":"1cde4c0f"},{"componentName":"Text","props":{"text":"GiB \nIOPS上限240,IOPS突发上限5,000","style":"color: #575d6c; font-size: 12px;"},"id":"2815d82d"}]}],"id":"50239a3a"}],"id":"e8582986"},{"componentName":"TinyForm","props":{"labelWidth":"80px","labelPosition":"top","inline":false,"label-position":"left ","label-width":"150px","style":"border-radius: 0px;"},"children":[{"componentName":"TinyFormItem","props":{"label":"数据盘","style":"border-radius: 0px;"},"children":[{"componentName":"div","props":{"style":"margin-top: 12px; display: flex;"},"id":"728c9825","children":[{"componentName":"Icon","props":{"style":"margin-right: 10px; width: 16px; height: 16px;","name":"IconPanelMini"},"id":"fded6930"},{"componentName":"TinySelect","props":{"modelValue":"","placeholder":"请选择","options":[{"value":"1","label":"黄金糕"},{"value":"2","label":"双皮奶"}],"style":"width: 200px; margin-right: 10px;"},"id":"62734e3f"},{"componentName":"TinyInput","props":{"placeholder":"请输入","modelValue":"","style":"width: 120px; margin-right: 10px;"},"id":"667c7926"},{"componentName":"Text","props":{"text":"GiB \nIOPS上限600,IOPS突发上限5,000","style":"color: #575d6c; font-size: 12px; margin-right: 10px;"},"id":"e7bc36d6"},{"componentName":"TinyInput","props":{"placeholder":"请输入","modelValue":"","style":"width: 120px;"},"id":"1bd56dc0"}],"loop":{"type":"JSExpression","value":"this.state.dataDisk"}},{"componentName":"div","props":{"style":"display: flex; margin-top: 12px; border-radius: 0px;"},"children":[{"componentName":"Icon","props":{"name":"IconPlus","style":"width: 16px; height: 16px; margin-right: 10px;"},"id":"65c89f2b"},{"componentName":"Text","props":{"text":"增加一块数据盘","style":"font-size: 12px; border-radius: 0px; margin-right: 10px;"},"id":"cb344071"},{"componentName":"Text","props":{"text":"您还可以挂载 21 块磁盘(云硬盘)","style":"color: #8a8e99; font-size: 12px;"},"id":"80eea996"}],"id":"e9e530ab"}],"id":"078e03ef"}],"id":"ccef886e"}],"id":"0fb7bd74"},{"componentName":"div","props":{"style":"border-width: 1px; border-style: solid; border-color: #ffffff; padding-top: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; position: fixed; inset: auto 0% 0% 0%; height: 80px; line-height: 80px; border-radius: 0px;"},"children":[{"componentName":"TinyForm","props":{"labelWidth":"80px","labelPosition":"top","inline":false,"label-position":"left ","label-width":"150px","style":"border-radius: 0px;"},"children":[],"id":"21ed4475"},{"componentName":"TinyRow","props":{"style":"border-radius: 0px; height: 100%;"},"children":[{"componentName":"TinyCol","props":{"span":"8"},"id":"b9d051a5","children":[{"componentName":"TinyRow","props":{"style":"border-radius: 0px;"},"children":[{"componentName":"TinyCol","props":{"span":"5","style":"display: flex;"},"id":"02352776","children":[{"componentName":"Text","props":{"text":"购买量","style":"margin-right: 10px;"},"id":"0cd9ed5c"},{"componentName":"TinyInput","props":{"placeholder":"请输入","modelValue":"","style":"width: 120px; margin-right: 10px;"},"id":"2f9cf442"},{"componentName":"Text","props":{"text":"台"},"id":"facd4481"}]},{"componentName":"TinyCol","props":{"span":"7"},"id":"82b6c659","children":[{"componentName":"div","props":{},"id":"9cd65874","children":[{"componentName":"Text","props":{"text":"配置费用","style":"font-size: 12px;"},"id":"b5a0a0da"},{"componentName":"Text","props":{"text":"¥1.5776","style":"padding-left: 10px; padding-right: 10px; color: #de504e;"},"id":"d9464214"},{"componentName":"Text","props":{"text":"/小时","style":"font-size: 12px;"},"id":"af7cc5e6"}]},{"componentName":"div","props":{},"id":"89063830","children":[{"componentName":"Text","props":{"text":"参考价格,具体扣费请以账单为准。","style":"font-size: 12px; border-radius: 0px;"},"id":"d8995fbc"},{"componentName":"Text","props":{"text":"了解计费详情","style":"font-size: 12px; color: #344899;"},"id":"b383c3e2"}]}]}],"id":"94fc0e43"}]},{"componentName":"TinyCol","props":{"span":"4","style":"display: flex; flex-direction: row-reverse; border-radius: 0px; height: 100%; justify-content: flex-start; align-items: center;"},"id":"10b73009","children":[{"componentName":"TinyButton","props":{"text":"下一步: 网络配置","type":"danger","style":"max-width: unset;"},"id":"0b584011"}]}],"id":"d414a473"}],"id":"e8ec029b"}],"fileName":"createVm"},"tenant":1,"isBody":false,"parentId":"0","group":"staticPages","depth":0,"isPage":true,"isDefault":false,"occupier":{"id":86,"username":"开发者","email":"developer@lowcode.com","resetPasswordToken":"developer","confirmationToken":"dfb2c162-351f-4f44-ad5f-8998","is_admin":true},"isHome":false,"_id":"NTJ4MjvqoVj8OVsc"} -{"name":"ComponentsSetting","id":"fh7U0xYetFGA5Ieu","app":"918","route":"componentsSetting","page_content":{"state":{"components":[{"name":"表单","text":"由按钮、输入框、选择器、单选框、多选框等控件组成..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."},{"name":"按钮","text":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..."}],"pageConfig":{"component":{"type":"JSResource","value":"this.utils.Pager"},"attrs":{"currentPage":1,"pageSize":50,"pageSizes":[10,20,50],"total":0,"layout":"sizes,total, prev, pager, next, jumper"}},"componentsTotal":0,"renderf5956ed2":[{"label":"按更新时间","value":"updata","_RID":"row_6"},{"label":"按创建时间","value":"create"}],"renderb52aeac9":[{"framework":"","materials":"","name":"表单","description":"由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据","id":"021fd6b6","_RID":"row_1"},{"framework":"","materials":"","name":"按钮","description":"常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型","id":"84d239bb","_RID":"row_2"},{"framework":"","materials":"","name":"表单项","description":"Form 组件下的 FormItem 配置","id":"490f8a00","_RID":"row_3"},{"framework":"","materials":"","name":"开关","description":"关闭或打开","id":"c259b8b3","_RID":"row_4"},{"framework":"","materials":"","name":"互斥按钮组","description":"以按钮组的方式出现,常用于多项类似操作","id":"083ed9c7","_RID":"row_5"},{"framework":"","materials":"","name":"提示框","description":"Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画","id":"09136cea","_RID":"row_6"},{"framework":"","materials":"","name":"文字提示框","description":"动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信","id":"a63b57d5","_RID":"row_7"},{"framework":"","materials":"","name":"树","description":"可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单","id":"a0f6e8a3","_RID":"row_8"},{"framework":"","materials":"","name":"分页","description":"当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件","id":"d1aa18fc","_RID":"row_9"},{"framework":"","materials":"","name":"表格","description":"提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等","id":"ca49cc52","_RID":"row_10"},{"framework":"","materials":"","name":"搜索框","description":"指定条件对象进行搜索数据","id":"4e20ecc9"},{"framework":"","materials":"","name":"折叠面板","description":"内容区可指定动态页面或自定义 html 等,支持展开收起操作","id":"6b093ee5"},{"framework":"","materials":"","name":"对话框","description":"模态对话框,在浮层中显示,引导用户进行相关操作","id":"0a09abc0"},{"framework":"","materials":"","name":"标签页签项","description":"tab页签","id":"f814b901"},{"framework":"","materials":"","name":"单选","description":"用于配置不同场景的选项,在一组备选项中进行单选","id":"c5ae797c"},{"framework":"","materials":"","name":"弹出编辑","description":"该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件","id":"33d0c590"},{"framework":"","materials":"","name":"下拉框","description":"Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件","id":"16711dfa"},{"framework":"","materials":"","name":"折叠面板项","description":"内容区可指定动态页面或自定义 html 等,支持展开收起操作","id":"a9fd190a"},{"framework":"","materials":"","name":"复选框","description":"用于配置不同场景的选项,提供用户可在一组选项中进行多选","id":"a7dfa9ec"},{"framework":"","materials":"","name":"复选框按钮","description":"用于配置不同场景的选项,提供用户可在一组选项中进行多选","id":"c9071a7b"},{"framework":"","materials":"","name":"输入框","description":"通过鼠标或键盘输入字符","id":"d4bb8330"},{"framework":"","materials":"","name":"时间线","description":"时间线","id":"ced3dc83"}],"render7e97d9c7":[{"name":"标签页","description":"分隔内容上有关联但属于不同类别的数据集合","id":"a2b3e681","_RID":"row_1"},{"name":"走马灯","description":"常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现","id":"311fd1ae","_RID":"row_2"},{"name":"日期选择器","description":"用于设置/选择日期,包括年月/年月日/年月日时分/年月日时分秒日期格式","id":"8d38b248","_RID":"row_3"},{"name":"布局列","description":"列配置信息","id":"1f6940d8"}]},"methods":{"linkClick":{"type":"JSFunction","value":"function linkClick() {\n location.href = 'http://10.37.114.118:3000/my-platform/create';\n}"},"query":{"type":"JSFunction","value":"function query(name) {\n this.state.components.fillter((e) => {\n return e.name !== name;\n });\n}"},"getTableData":{"type":"JSFunction","value":"function getTableData() {\n return new Promise((resolve, reject) => {\n this.dataSourceMap['timeData'].load().then((res) => {\n resolve({ result: [], page: { total: 0 } });\n });\n });\n}"},"clearSelected":{"type":"JSFunction","value":"function clearSelected(event) {\n this.dataSourceMap['selectedComponents'] = this.dataSourceMap['selectedComponents'] || [];\n this.dataSourceMap['selectedComponents'].map((e) => {\n this.dataSourceMap['componentList'].push(e);\n });\n this.dataSourceMap['selectedComponents'] = [];\n}"}},"componentName":"Page","css":".components-box{\r\n height:900px;\r\n display: flex;\r\n}\r\n.components-box-left{\r\n width: 270px;\r\n}\r\n.components-box-right{\r\n width:50%;\r\n}\r\n.components-box-right-add{\r\n width: 100%;\r\n height: 200px;\r\n}\r\n.mgr20{\r\n margin-right: 20px;\r\n}","props":{},"children":[{"componentName":"div","props":{},"id":"2a5d4622","children":[{"componentName":"TinyGrid","props":{"editConfig":{"trigger":"click","mode":"cell","showStatus":true},"columns":[{"type":"index","width":60},{"type":"selection","width":60},{"field":"employees","title":"员工数"},{"field":"created_date","title":"创建日期"},{"field":"city","title":"城市"}],"data":[{"id":"1","name":"GFD科技有限公司","city":"福州","employees":800,"created_date":"2014-04-30 00:56:00","boole":false},{"id":"2","name":"WWW科技有限公司","city":"深圳","employees":300,"created_date":"2016-07-08 12:36:22","boole":true}]},"id":"3635454e"}]},{"componentName":"div","props":{"style":"height: 80px; width: 87%; margin: 0 auto; margin-bottom: 20px; margin-top: 20px; padding-left: 20px; padding-top: 30px; background: rgb(242, 245, 252);"},"id":"436ecc4a","children":[{"componentName":"Text","props":{"text":" 物料资产包简介","style":"color: rgb(138, 142, 153);"},"id":"16ad7aa9"},{"componentName":"Text","props":{"text":"调试构建报错","style":"margin-left: 10px; margin-right: 10px;"},"id":"ab44d8ea"},{"componentName":"Icon","props":{"name":"IconEdit"},"id":"8b6be3c2"},{"componentName":"div","props":{},"id":"848e3e8a","children":[{"componentName":"Text","props":{"text":"发布地址","style":"color: rgb(138, 142, 153);"},"id":"cd51ad2c"},{"componentName":"Text","props":{"text":"http://10.37.114.118:3000/my-platform/create","style":"margin-left: 20px; margin-right: 10px; color: rgb(36, 150, 255);","onClick":{"type":"JSExpression","value":"this.linkClick"}},"id":"3ed13633"},{"componentName":"Icon","props":{"name":"IconEdit"},"id":"16b75d9f"}]}]},{"componentName":"div","props":{"className":"components-box","style":"width: 88%; margin: 0 auto; border-width: 1px; border-color: rgb(223, 225, 230); border-style: solid; padding-top: 40px; padding-bottom: 40px; height: 1200px;"},"id":"c880007b","children":[{"componentName":"div","props":{"className":"components-box-left","style":"border-right-width: 2px; border-right-style: solid; border-color: rgb(223, 225, 230); position: relative;"},"id":"3525fc52","children":[{"componentName":"TinyTimeLine","props":{"active":"1","data":[{"name":"添加组件"},{"name":"添加区块"}],"horizontal":false,"className":"components-box-left","vertical":true},"id":"1e391ed7"},{"componentName":"div","props":{},"id":"81ccd767","children":[{"componentName":"div","props":{"style":"height: 300px; position: absolute; bottom: 20px; left: 20px;"},"id":"bc11d593","children":[{"componentName":"div","props":{},"id":"50ed6e39","children":[{"componentName":"Text","props":{"text":"组件示意图 "},"id":"fa6b920c"}]},{"componentName":"div","props":{},"id":"9ca346e6","children":[{"componentName":"Text","props":{"text":"组件是构建物料资产包的必要元素\n","style":"margin-top: 10px; color: rgb(173, 176, 184); margin-bottom: 20px;"},"id":"d0ac5a34"}]},{"componentName":"Img","props":{"src":"http://localhost:9090/assets/images/f750dc319828b039af713c643aad02bd_222x134.png","style":"margin-top: 20px; width: 95%;"},"id":"3eac458c"}]}]}]},{"componentName":"div","props":{"className":".components-box-right","style":"padding-left: 50px; border-radius: 0px; height: 100%;"},"id":"d0890144","children":[{"componentName":"div","props":{"className":"components-box-right-add"},"id":"0c79b824","children":[{"componentName":"div","props":{"style":"height: 50px;"},"id":"5dd75633","children":[{"componentName":"Text","props":{"text":"已添加","style":"font-size: 16px; font-weight: bold;"},"id":"e534646e"},{"componentName":"div","props":{"style":"display: inline-block;","onClick":{"type":"JSExpression","value":"this.clearSelected(event)"}},"id":"1f3f03e5","children":[{"componentName":"Icon","props":{"name":"IconUndelete","style":"margin-left: 10px; font-size: 20px; color:rgb(94, 124, 224);"},"id":"1ea6eea4"},{"componentName":"Text","props":{"text":"清空默认","style":"color: rgb(94, 124, 224); border-radius: 0px;"},"id":"4f143cd5"}]}]},{"componentName":"Collection","props":{"style":"height: 140px; display: flex; border-radius: 0px;","dataSource":151},"id":"9b4f4898","children":[{"componentName":"div","props":{"style":"width: 300px; height: 70px; margin-top: 20px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-width: 1px; border-style: solid; border-color: #dfe1e6; display: flex; flex-direction: row; padding-right: 0px; padding-left: 0px; margin-right: 25px; margin-left: 0px; padding-top: 20px; margin-bottom: 20px; position: relative; background: rgb(242, 245, 252); border-radius: 2px;"},"id":"b5f585f9","children":[{"componentName":"Img","props":{"style":"width: 50px; height: 50px; margin-left: 20px; margin-top: 0px;","src":"http://localhost:9090/assets/images/24b520f0-dd5d-11ec-9e28-e51c91ead705.png"},"id":"ee90fa60"},{"componentName":"div","props":{"style":"width: 200px; margin-left: 12px;"},"id":"7735e4da","children":[{"componentName":"Text","props":{"text":{"type":"JSExpression","value":"item.name"},"style":"font-weight: bold;"},"id":"068127b6"},{"componentName":"Text","props":{"text":"默认","style":"position: absolute; right: 2px; top: 2px; font-family: \"Microsoft YaHei\"; color: rgb(255, 255, 255); background: rgb(80, 212, 171); border-radius: 4.5px 0px;"},"id":"6d0281d2"},{"componentName":"TinyCheckbox","props":{"text":"","style":"position: absolute; right: 10px; bottom: 10px; color: rgb(82, 110, 204);","checked":{"type":"JSExpression","value":"item.isSelected"},"modelValue":true},"id":"622d9bdf"},{"componentName":"Text","props":{"text":{"type":"JSExpression","value":"item.description"},"style":"display: block; margin-top: 10px; text-overflow: ellipsis; width: 90%; overflow: hidden; white-space: nowrap;"},"id":"eb87da78"}]}],"loop":{"type":"JSExpression","value":"this.state.render7e97d9c7"}}]}]},{"componentName":"div","props":{"style":"width: 98%; display: flex; margin-bottom: 22px; justify-content: space-between; margin-right: 0px; padding-right: 0px;"},"id":"c7f80c55","children":[{"componentName":"Text","props":{"text":"选择组件","style":"font-size: 16px; font-weight: bold;"},"id":"2ebef929"},{"componentName":"div","props":{"style":"display: flex;"},"id":"00a6fb16","children":[{"componentName":"TinySearch","props":{"modelValue":"","placeholder":"输入关键词","style":"width: 295px; margin-right: 12px;","onChange":{"type":"JSExpression","value":"this.query"}},"id":"d7364e4d"},{"componentName":"Collection","props":{"dataSource":129},"id":"03a2f95b","children":[{"componentName":"TinySelect","props":{"modelValue":"","placeholder":"请选择","options":{"type":"JSExpression","value":"this.state.renderf5956ed2"},"style":"border-radius: 0px; margin-right: 0px;"},"id":"181b5ab7"}]}]}]},{"componentName":"Collection","props":{"dataSource":150,"style":"margin-left: 0px; margin-right: 314px; display: flex; justify-content: flex-start; flex-wrap: wrap; width: 98%; over-flow: hidden; border-radius: 0px;"},"id":"2b24a6d3","children":[{"componentName":"div","props":{"style":"padding-top: 20px; padding-left: 12px; padding-right: 12px; width: 280px; height: 92px; background: rgb(255, 255, 255); border-width: 1px; border-color: rgb(223, 225, 230); border-style: solid; border-radius: 2px; padding-bottom: 20px; display: flex; margin-right: 0px; margin-bottom: 20px; margin-left: 20px;"},"id":"8a6e5b83","children":[{"componentName":"Img","props":{"style":"width: 40px; height: 40px;","src":"http://localhost:9090/assets/images/0cfe4680-dd6c-11ec-a115-b53bbc5cfe9d.png"},"id":"474ffcb2"},{"componentName":"div","props":{"style":"margin-left: 12px; border-radius: 0px; width: 90%;"},"id":"99944a57","children":[{"componentName":"div","props":{"style":"display: flex; justify-content: space-between;"},"id":"b5c88120","children":[{"componentName":"Text","props":{"text":{"type":"JSExpression","value":"item.name"},"style":"font-weight: bold; border-radius: 0px;"},"id":"a747169d"},{"componentName":"TinyCheckbox","props":{"text":"","checked":false,"modelValue":{"type":"JSExpression","value":"item.isSelected","model":true},"style":"border-radius: 0px;"},"id":"72cee0e5"}]},{"componentName":"Text","props":{"style":"display: block; font-size: 12px; line-height: 17px; color: #333333; margin-top: 10px;","text":{"type":"JSExpression","value":"item.description"}},"id":"1aed3258"}]}],"loop":{"type":"JSExpression","value":"this.state.renderb52aeac9"},"condition":true,"loopArgs":["item","idx"]}]},{"componentName":"TinyPager","props":{"layout":"sizes,total, prev, pager, next","total":{"type":"JSExpression","value":"this.state.componentsTotal"},"pageSize":10,"currentPage":1,"style":"margin-left: 314px; margin-right: 314px;"},"id":"ff96cc4e"}]}]},{"componentName":"div","props":{"style":"height: 100px; background: rgb(255, 255, 255); filter: drop-shadow(rgba(0, 0, 0, 0.1) 0px -1px 4px); text-align: center;"},"id":"616d5f40","children":[{"componentName":"TinyButton","props":{"text":"创建物料资产包","style":"background: rgb(245, 245, 246); border-width: 1px; border-color: rgb(173, 176, 184); border-style: solid; border-radius: 2.5px; opacity: 0.6; margin: 0 auto; width: 200px; height: 32px; margin-top: 30px; max-width: none; margin-bottom: 10px;"},"id":"e6abff72"},{"componentName":"Text","props":{"style":"display: block; color: rgb(173, 176, 184); margin-top: 5px; width: 380px; margin: 0 auto;","text":"组件或区块未添加,请切换左侧步骤条去完成添加"},"id":"f3a123ba","children":[{"componentName":"Icon","props":{}}]}]}],"fileName":"componentsSetting"},"tenant":1,"isBody":false,"parentId":"0","group":"staticPages","depth":0,"isPage":true,"isDefault":false,"occupier":{"id":86,"username":"开发者","email":"developer@lowcode.com","resetPasswordToken":"developer","confirmationToken":"dfb2c162-351f-4f44-ad5f-8998","is_admin":true},"isHome":true,"_id":"fh7U0xYetFGA5Ieu"} {"$$indexCreated":{"fieldName":"route","unique":true,"sparse":false}} {"$$indexCreated":{"fieldName":"route","unique":true}} diff --git a/mockServer/src/mock/get/app-center/apps/extension/list.json b/mockServer/src/mock/get/app-center/apps/extension/list.json index 67a3ac8a3f..d3f2008dd4 100644 --- a/mockServer/src/mock/get/app-center/apps/extension/list.json +++ b/mockServer/src/mock/get/app-center/apps/extension/list.json @@ -102,7 +102,7 @@ "type": "function", "content": { "type": "JSFunction", - "value": "function util() {\r\n console.log(3211)\r\n}" + "value": "function test() {\r\n return 'test'\r\n}" }, "app": 918, "category": "utils", diff --git a/mockServer/src/mock/get/app-center/v1/apps/schema/918.json b/mockServer/src/mock/get/app-center/v1/apps/schema/918.json index bdae6dad17..17656258e4 100644 --- a/mockServer/src/mock/get/app-center/v1/apps/schema/918.json +++ b/mockServer/src/mock/get/app-center/v1/apps/schema/918.json @@ -15,924 +15,741 @@ "gmt_modified": "2023-08-23 10:22:28" }, "dataSource": { - "list": [], - "dataHandler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - } - }, - "i18n": { - "zh_CN": { - "lowcode.cca8d0ea": "应用", - "lowcode.c257d5e8": "查询", - "lowcode.61c8ac8c": "地方", - "lowcode.f53187a0": "测试", - "lowcode.97ad00dd": "创建物料资产包", - "lowcode.61dcef52": "terterere", - "lowcode.45f4c42a": "gdfgdf", - "lowcode.c6f5a652": "fsdaf", - "lowcode.34923432": "fdsafdsa", - "lowcode.48521e45": "fdsfds", - "lowcode.6534943e": "fdsafds", - "lowcode.44252642": "fdsafds", - "lowcode.2a743651": "sda", - "lowcode.24315357": "fdsafds", - "lowcode.44621691": "fdsafsd", - "lowcode.65636226": "fdsaf", - "lowcode.6426a4e2": "sd", - "lowcode.e41c6636": "aa", - "lowcode.51c23164": "aa", - "lowcode.17245b46": "aa", - "lowcode.4573143c": "aa", - "lowcode.56432442": "aa", - "lowcode.33566643": "aa", - "lowcode.565128f3": "aa", - "lowcode.56643835": "aa", - "lowcode.33311134": "aa", - "lowcode.44326643": "aa", - "lowcode.36223242": "aa" - }, - "en_US": { - "lowcode.cca8d0ea": "app", - "lowcode.c257d5e8": "search", - "lowcode.61c8ac8c": "dsdsa", - "lowcode.f53187a0": "test", - "lowcode.97ad00dd": "createMaterial", - "lowcode.61dcef52": "sadasda", - "lowcode.45f4c42a": "gfdgfd", - "lowcode.c6f5a652": "fsdafds", - "lowcode.34923432": "fdsafds", - "lowcode.6534943e": "fdsafdsa", - "lowcode.44252642": "aaaa", - "lowcode.2a743651": "fdsaf", - "lowcode.24315357": "fsdafds", - "lowcode.44621691": "sd", - "lowcode.65636226": "fdsfsd", - "lowcode.6426a4e2": "fdsafsd", - "lowcode.e41c6636": "aa", - "lowcode.51c23164": "aa", - "lowcode.17245b46": "aa", - "lowcode.4573143c": "a", - "lowcode.56432442": "aa", - "lowcode.33566643": "aa", - "lowcode.565128f3": "aa", - "lowcode.56643835": "aa", - "lowcode.33311134": "aa", - "lowcode.44326643": "aa", - "lowcode.36223242": "aa" - } - }, - "componentsTree": [ - { - "state": { - "components": [ - { - "name": "表单", - "text": "由按钮、输入框、选择器、单选框、多选框等控件组成..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - }, - { - "name": "按钮", - "text": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮..." - } - ], - "pageConfig": { - "component": { - "type": "JSResource", - "value": "this.utils.Pager" - }, - "attrs": { - "currentPage": 1, - "pageSize": 50, - "pageSizes": [10, 20, 50], - "total": 0, - "layout": "sizes,total, prev, pager, next, jumper" - } + "list": [ + { + "id": 132, + "name": "getAllComponent", + "data": { + "data": [], + "type": "array" }, - "componentsTotal": 0, - "renderf5956ed2": [ - { - "label": "按更新时间", - "value": "updata", - "_RID": "row_6" - }, - { - "label": "按创建时间", - "value": "create" - } - ], - "renderb52aeac9": [ - { - "framework": "", - "materials": "", - "name": "表单", - "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", - "id": "021fd6b6", - "_RID": "row_1" - }, - { - "framework": "", - "materials": "", - "name": "按钮", - "description": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型", - "id": "84d239bb", - "_RID": "row_2" - }, - { - "framework": "", - "materials": "", - "name": "表单项", - "description": "Form 组件下的 FormItem 配置", - "id": "490f8a00", - "_RID": "row_3" - }, - { - "framework": "", - "materials": "", - "name": "开关", - "description": "关闭或打开", - "id": "c259b8b3", - "_RID": "row_4" - }, - { - "framework": "", - "materials": "", - "name": "互斥按钮组", - "description": "以按钮组的方式出现,常用于多项类似操作", - "id": "083ed9c7", - "_RID": "row_5" - }, - { - "framework": "", - "materials": "", - "name": "提示框", - "description": "Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画", - "id": "09136cea", - "_RID": "row_6" - }, - { - "framework": "", - "materials": "", - "name": "文字提示框", - "description": "动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信", - "id": "a63b57d5", - "_RID": "row_7" - }, - { - "framework": "", - "materials": "", - "name": "树", - "description": "可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单", - "id": "a0f6e8a3", - "_RID": "row_8" - }, - { - "framework": "", - "materials": "", - "name": "分页", - "description": "当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件", - "id": "d1aa18fc", - "_RID": "row_9" - }, - { - "framework": "", - "materials": "", - "name": "表格", - "description": "提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等", - "id": "ca49cc52", - "_RID": "row_10" - }, - { - "framework": "", - "materials": "", - "name": "搜索框", - "description": "指定条件对象进行搜索数据", - "id": "4e20ecc9" - }, - { - "framework": "", - "materials": "", - "name": "折叠面板", - "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作", - "id": "6b093ee5" - }, - { - "framework": "", - "materials": "", - "name": "对话框", - "description": "模态对话框,在浮层中显示,引导用户进行相关操作", - "id": "0a09abc0" - }, - { - "framework": "", - "materials": "", - "name": "标签页签项", - "description": "tab页签", - "id": "f814b901" - }, - { - "framework": "", - "materials": "", - "name": "单选", - "description": "用于配置不同场景的选项,在一组备选项中进行单选", - "id": "c5ae797c" - }, - { - "framework": "", - "materials": "", - "name": "弹出编辑", - "description": "该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件", - "id": "33d0c590" - }, - { - "framework": "", - "materials": "", - "name": "下拉框", - "description": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件", - "id": "16711dfa" - }, - { - "framework": "", - "materials": "", - "name": "折叠面板项", - "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作", - "id": "a9fd190a" - }, - { - "framework": "", - "materials": "", - "name": "复选框", - "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", - "id": "a7dfa9ec" - }, - { - "framework": "", - "materials": "", - "name": "复选框按钮", - "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选", - "id": "c9071a7b" - }, - { - "framework": "", - "materials": "", - "name": "输入框", - "description": "通过鼠标或键盘输入字符", - "id": "d4bb8330" + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-06-28T06:26:26.000Z", + "updated_at": "2022-06-28T07:02:30.000Z" + }, + { + "id": 133, + "name": "getAllList", + "data": { + "columns": [ + { + "name": "test", + "title": "测试", + "field": "test", + "type": "string", + "format": {} + }, + { + "name": "test1", + "title": "测试1", + "field": "test1", + "type": "string", + "format": {} + } + ], + "type": "array", + "data": [ + { + "test": "test1", + "test1": "test1", + "_id": "341efc48" + }, + { + "test": "test2", + "test1": "test1", + "_id": "b86b516c" + }, + { + "test": "test3", + "test1": "test1", + "_id": "f680cd78" + } + ], + "options": { + "uri": "", + "method": "GET" }, - { - "framework": "", - "materials": "", - "name": "时间线", - "description": "时间线", - "id": "ced3dc83" - } - ], - "render7e97d9c7": [ - { - "name": "标签页", - "description": "分隔内容上有关联但属于不同类别的数据集合", - "id": "a2b3e681", - "_RID": "row_1" + "dataHandler": { + "type": "JSFunction", + "value": "function dataHandler(data) { \n return data \n}" }, - { - "name": "走马灯", - "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现", - "id": "311fd1ae", - "_RID": "row_2" + "willFetch": { + "type": "JSFunction", + "value": "function willFetch(option) {\n return option \n}" }, - { - "name": "日期选择器", - "description": "用于设置/选择日期,包括年月/年月日/年月日时分/年月日时分秒日期格式", - "id": "8d38b248", - "_RID": "row_3" + "shouldFetch": { + "type": "JSFunction", + "value": "function shouldFetch(option) {\n return true \n}" }, - { - "name": "布局列", - "description": "列配置信息", - "id": "1f6940d8" + "errorHandler": { + "type": "JSFunction", + "value": "function errorHandler(err) {}" } - ] - }, - "methods": { - "linkClick": { - "type": "JSFunction", - "value": "function linkClick() {\n location.href = '';\n}" }, - "query": { - "type": "JSFunction", - "value": "function query(name) {\n this.state.components.fillter((e) => {\n return e.name !== name;\n });\n}" - }, - "getTableData": { - "type": "JSFunction", - "value": "function getTableData() {\n return new Promise((resolve, reject) => {\n this.dataSourceMap['timeData'].load().then((res) => {\n resolve({ result: [], page: { total: 0 } });\n });\n });\n}" - }, - "clearSelected": { - "type": "JSFunction", - "value": "function clearSelected(event) {\nthis.dataSourceMap['selectedComponents'] = this.dataSourceMap['selectedComponents'] || [];\n this.dataSourceMap['selectedComponents'].map((e) => {\n this.dataSourceMap['componentList'].push(e);\n });\n this.dataSourceMap['selectedComponents'] = [];\n}" - } + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-06-28T07:32:16.000Z", + "updated_at": "2023-01-19T03:29:11.000Z" }, - "componentName": "Page", - "css": ".components-box{\r\n height:900px;\r\n display: flex;\r\n}\r\n.components-box-left{\r\n width: 270px;\r\n}\r\n.components-box-right{\r\n width:50%;\r\n}\r\n.components-box-right-add{\r\n width: 100%;\r\n height: 200px;\r\n}\r\n.mgr20{\r\n margin-right: 20px;\r\n}", - "props": {}, - "children": [ - { - "componentName": "PortalHeader", - "props": {}, - "componentType": "Block", - "id": "60284cf1" - }, - { - "componentName": "portalBlock", - "props": {}, - "componentType": "Block", - "id": "6911db84" - }, - { - "componentName": "div", - "props": { - "style": "height: 80px; width: 87%; margin: 0 auto; margin-bottom: 20px; margin-top: 20px; padding-left: 20px; padding-top: 30px; background: rgb(242, 245, 252);" - }, - "id": "436ecc4a", - "children": [ + { + "id": 135, + "name": "getAllMaterialList", + "data": { + "columns": [ { - "componentName": "Text", - "props": { - "text": " 物料资产包简介", - "style": "color: rgb(138, 142, 153);" - }, - "id": "16ad7aa9" + "name": "id", + "title": "id", + "field": "id", + "type": "string", + "format": {} }, { - "componentName": "Text", - "props": { - "text": "调试构建报错", - "style": "margin-left: 10px; margin-right: 10px;" - }, - "id": "ab44d8ea" + "name": "name", + "title": "name", + "field": "name", + "type": "string", + "format": {} }, { - "componentName": "Icon", - "props": { - "name": "IconEdit" - }, - "id": "8b6be3c2" + "name": "framework", + "title": "framework", + "field": "framework", + "type": "string", + "format": { + "required": true + } }, { - "componentName": "div", - "props": {}, - "id": "848e3e8a", - "children": [ - { - "componentName": "Text", - "props": { - "text": "发布地址", - "style": "color: rgb(138, 142, 153);" - }, - "id": "cd51ad2c" - }, - { - "componentName": "Text", - "props": { - "text": "", - "style": "margin-left: 20px; margin-right: 10px; color: rgb(36, 150, 255);", - "onClick": { - "type": "JSExpression", - "value": "this.linkClick" - } - }, - "id": "3ed13633" - }, - { - "componentName": "Icon", - "props": { - "name": "IconEdit" - }, - "id": "16b75d9f" - } - ] - } - ] - }, - { - "componentName": "div", - "props": { - "className": "components-box", - "style": "width: 88%; margin: 0 auto; border-width: 1px; border-color: rgb(223, 225, 230); border-style: solid; padding-top: 40px; padding-bottom: 40px; height: 1200px;" - }, - "id": "c880007b", - "children": [ + "name": "components", + "title": "components", + "field": "components", + "type": "string", + "format": {} + }, { - "componentName": "div", - "props": { - "className": "components-box-left", - "style": "border-right-width: 2px; border-right-style: solid; border-color: rgb(223, 225, 230); position: relative;" - }, - "id": "3525fc52", - "children": [ - { - "componentName": "TinyTimeLine", - "props": { - "active": "1", - "data": [ - { - "name": "添加组件" - }, - { - "name": "添加区块" - } - ], - "horizontal": false, - "className": "components-box-left", - "vertical": true - }, - "id": "1e391ed7" - }, - { - "componentName": "div", - "props": {}, - "id": "81ccd767", - "children": [ - { - "componentName": "div", - "props": { - "style": "height: 300px; position: absolute; bottom: 20px; left: 20px;" - }, - "id": "bc11d593", - "children": [ - { - "componentName": "div", - "props": {}, - "id": "50ed6e39", - "children": [ - { - "componentName": "Text", - "props": { - "text": "组件示意图 " - }, - "id": "fa6b920c" - } - ] - }, - { - "componentName": "div", - "props": {}, - "id": "9ca346e6", - "children": [ - { - "componentName": "Text", - "props": { - "text": "组件是构建物料资产包的必要元素\n", - "style": "margin-top: 10px; color: rgb(173, 176, 184); margin-bottom: 20px;" - }, - "id": "d0ac5a34" - } - ] - }, - { - "componentName": "Img", - "props": { - "src": "http://localhost:9090/assets/images/f750dc319828b039af713c643aad02bd_222x134.png", - "style": "margin-top: 20px; width: 95%;" - }, - "id": "3eac458c" - } - ] - } - ] - } - ] + "name": "content", + "title": "content", + "field": "content", + "type": "string", + "format": {} }, { - "componentName": "div", - "props": { - "className": ".components-box-right", - "style": "padding-left: 50px; border-radius: 0px; height: 100%;" - }, - "id": "d0890144", - "children": [ - { - "componentName": "div", - "props": { - "className": "components-box-right-add" - }, - "id": "0c79b824", - "children": [ - { - "componentName": "div", - "props": { - "style": "height: 50px;" - }, - "id": "5dd75633", - "children": [ - { - "componentName": "Text", - "props": { - "text": "已添加", - "style": "font-size: 16px; font-weight: bold;" - }, - "id": "e534646e" - }, - { - "componentName": "div", - "props": { - "style": "display: inline-block;", - "onClick": { - "type": "JSExpression", - "value": "this.clearSelected(event)" - } - }, - "id": "1f3f03e5", - "children": [ - { - "componentName": "Icon", - "props": { - "name": "IconUndelete", - "style": "margin-left: 10px; font-size: 20px; color:rgb(94, 124, 224);" - }, - "id": "1ea6eea4" - }, - { - "componentName": "Text", - "props": { - "text": "清空默认", - "style": "color: rgb(94, 124, 224); border-radius: 0px;" - }, - "id": "4f143cd5" - } - ] - } - ] - }, - { - "componentName": "Collection", - "props": { - "style": "height: 140px; display: flex; border-radius: 0px;", - "dataSource": 151 - }, - "id": "9b4f4898", - "children": [ - { - "componentName": "div", - "props": { - "style": "width: 300px; height: 70px; margin-top: 20px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-width: 1px; border-style: solid; border-color: #dfe1e6; display: flex; flex-direction: row; padding-right: 0px; padding-left: 0px; margin-right: 25px; margin-left: 0px; padding-top: 20px; margin-bottom: 20px; position: relative; background: rgb(242, 245, 252); border-radius: 2px;" - }, - "id": "b5f585f9", - "children": [ - { - "componentName": "Img", - "props": { - "style": "width: 50px; height: 50px; margin-left: 20px; margin-top: 0px;", - "src": "http://localhost:9090/assets/images/24b520f0-dd5d-11ec-9e28-e51c91ead705.png" - }, - "id": "ee90fa60" - }, - { - "componentName": "div", - "props": { - "style": "width: 200px; margin-left: 12px;" - }, - "id": "7735e4da", - "children": [ - { - "componentName": "Text", - "props": { - "text": { - "type": "JSExpression", - "value": "item.name" - }, - "style": "font-weight: bold;" - }, - "id": "068127b6" - }, - { - "componentName": "Text", - "props": { - "text": "默认", - "style": "position: absolute; right: 2px; top: 2px; font-family: \"Microsoft YaHei\"; color: rgb(255, 255, 255); background: rgb(80, 212, 171); border-radius: 4.5px 0px;" - }, - "id": "6d0281d2" - }, - { - "componentName": "TinyCheckbox", - "props": { - "text": "", - "style": "position: absolute; right: 10px; bottom: 10px; color: rgb(82, 110, 204);", - "checked": { - "type": "JSExpression", - "value": "item.isSelected" - }, - "modelValue": true - }, - "id": "622d9bdf" - }, - { - "componentName": "Text", - "props": { - "text": { - "type": "JSExpression", - "value": "item.description" - }, - "style": "display: block; margin-top: 10px; text-overflow: ellipsis; width: 90%; overflow: hidden; white-space: nowrap;" - }, - "id": "eb87da78" - } - ] - } - ], - "loop": { - "type": "JSExpression", - "value": "this.state.render7e97d9c7" - } - } - ] - } - ] - }, - { - "componentName": "div", - "props": { - "style": "width: 98%; display: flex; margin-bottom: 22px; justify-content: space-between; margin-right: 0px; padding-right: 0px;" - }, - "id": "c7f80c55", - "children": [ - { - "componentName": "Text", - "props": { - "text": "选择组件", - "style": "font-size: 16px; font-weight: bold;" - }, - "id": "2ebef929" - }, - { - "componentName": "div", - "props": { - "style": "display: flex;" - }, - "id": "00a6fb16", - "children": [ - { - "componentName": "TinySearch", - "props": { - "modelValue": "", - "placeholder": "输入关键词", - "style": "width: 295px; margin-right: 12px;", - "onChange": { - "type": "JSExpression", - "value": "this.query" - } - }, - "id": "d7364e4d" - }, - { - "componentName": "Collection", - "props": { - "dataSource": 129 - }, - "id": "03a2f95b", - "children": [ - { - "componentName": "TinySelect", - "props": { - "modelValue": "", - "placeholder": "请选择", - "options": { - "type": "JSExpression", - "value": "this.state.renderf5956ed2" - }, - "style": "border-radius: 0px; margin-right: 0px;" - }, - "id": "181b5ab7" - } - ] - } - ] - } - ] - }, - { - "componentName": "Collection", - "props": { - "dataSource": 150, - "style": "margin-left: 0px; margin-right: 314px; display: flex; justify-content: flex-start; flex-wrap: wrap; width: 98%; over-flow: hidden; border-radius: 0px;" - }, - "id": "2b24a6d3", - "children": [ - { - "componentName": "div", - "props": { - "style": "padding-top: 20px; padding-left: 12px; padding-right: 12px; width: 280px; height: 92px; background: rgb(255, 255, 255); border-width: 1px; border-color: rgb(223, 225, 230); border-style: solid; border-radius: 2px; padding-bottom: 20px; display: flex; margin-right: 0px; margin-bottom: 20px; margin-left: 20px;" - }, - "id": "8a6e5b83", - "children": [ - { - "componentName": "Img", - "props": { - "style": "width: 40px; height: 40px;", - "src": "http://localhost:9090/assets/images/0cfe4680-dd6c-11ec-a115-b53bbc5cfe9d.png" - }, - "id": "474ffcb2" - }, - { - "componentName": "div", - "props": { - "style": "margin-left: 12px; border-radius: 0px; width: 90%;" - }, - "id": "99944a57", - "children": [ - { - "componentName": "div", - "props": { - "style": "display: flex; justify-content: space-between;" - }, - "id": "b5c88120", - "children": [ - { - "componentName": "Text", - "props": { - "text": { - "type": "JSExpression", - "value": "item.name" - }, - "style": "font-weight: bold; border-radius: 0px;" - }, - "id": "a747169d" - }, - { - "componentName": "TinyCheckbox", - "props": { - "text": "", - "checked": false, - "modelValue": { - "type": "JSExpression", - "value": "item.isSelected", - "model": true - }, - "style": "border-radius: 0px;" - }, - "id": "72cee0e5" - } - ] - }, - { - "componentName": "Text", - "props": { - "style": "display: block; font-size: 12px; line-height: 17px; color: #333333; margin-top: 10px;", - "text": { - "type": "JSExpression", - "value": "item.description" - } - }, - "id": "1aed3258" - } - ] - } - ], - "loop": { - "type": "JSExpression", - "value": "this.state.renderb52aeac9" - }, - "condition": true, - "loopArgs": ["item", "idx"] - } - ] - }, - { - "componentName": "TinyPager", - "props": { - "layout": "sizes,total, prev, pager, next", - "total": { - "type": "JSExpression", - "value": "this.state.componentsTotal" - }, - "pageSize": 10, - "currentPage": 1, - "style": "margin-left: 314px; margin-right: 314px;" - }, - "id": "ff96cc4e" - } - ] + "name": "url", + "title": "url", + "field": "url", + "type": "string", + "format": {} + }, + { + "name": "published_at", + "title": "published_at", + "field": "published_at", + "type": "string", + "format": {} + }, + { + "name": "created_at", + "title": "created_at", + "field": "created_at", + "type": "string", + "format": {} + }, + { + "name": "updated_at", + "title": "updated_at", + "field": "updated_at", + "type": "string", + "format": {} + }, + { + "name": "published", + "title": "published", + "field": "published", + "type": "string", + "format": {} + }, + { + "name": "last_build_info", + "title": "last_build_info", + "field": "last_build_info", + "type": "string", + "format": {} + }, + { + "name": "tenant", + "title": "tenant", + "field": "tenant", + "type": "string", + "format": {} + }, + { + "name": "version", + "title": "version", + "field": "version", + "type": "string", + "format": {} + }, + { + "name": "description", + "title": "description", + "field": "description", + "type": "string", + "format": {} } - ] + ], + "type": "array", + "data": [ + { + "id": "f37123ec", + "url": "", + "name": "ng-material", + "tenant": "", + "content": "", + "version": "1.0.0", + "framework": "Angular", + "published": "", + "components": "", + "created_at": "2021-11-02T11:32:22.000Z", + "updated_at": "2021-11-02T11:32:22.000Z", + "description": "angular组件库物料", + "published_at": "2021-11-02T11:32:22.000Z", + "last_build_info": "", + "_id": "2a23e653" + }, + { + "id": "f37123ec", + "url": "", + "name": "ng-material", + "tenant": "", + "content": "", + "version": "1.0.0", + "framework": "Angular", + "published": "", + "components": "", + "created_at": "2021-11-02T11:32:22.000Z", + "updated_at": "2021-11-02T11:32:22.000Z", + "description": "angular组件库物料", + "published_at": "2021-11-02T11:32:22.000Z", + "last_build_info": "", + "_id": "06b253be" + }, + { + "id": "f37123ec", + "url": "", + "name": "ng-material", + "tenant": "", + "content": "", + "version": "1.0.0", + "framework": "Angular", + "published": "", + "components": "", + "created_at": "2021-11-02T11:32:22.000Z", + "updated_at": "2021-11-02T11:32:22.000Z", + "description": "angular组件库物料", + "published_at": "2021-11-02T11:32:22.000Z", + "last_build_info": "", + "_id": "c55a41ed" + }, + { + "id": "f37123ec", + "url": "", + "name": "ng-material", + "tenant": "", + "content": "", + "version": "1.0.0", + "framework": "Angular", + "published": "", + "components": "", + "created_at": "2021-11-02T11:32:22.000Z", + "updated_at": "2021-11-02T11:32:22.000Z", + "description": "angular组件库物料", + "published_at": "2021-11-02T11:32:22.000Z", + "last_build_info": "", + "_id": "f37123ec" + }, + { + "id": "7a63c1a2", + "url": "", + "name": "tiny-vue", + "tenant": "", + "content": "Tiny Vue物料", + "version": "1.0.0", + "framework": "Vue", + "published": "", + "components": "", + "created_at": "", + "updated_at": "", + "description": "Tiny Vue物料", + "published_at": "", + "last_build_info": "", + "_id": "7a63c1a2" + } + ], + "options": { + "uri": "", + "method": "GET" + }, + "willFetch": { + "type": "JSFunction", + "value": "function willFetch(option) {\n return option \n}" + }, + "dataHandler": { + "type": "JSFunction", + "value": "function dataHandler(data) { \n return data \n}" + }, + "shouldFetch": { + "type": "JSFunction", + "value": "function shouldFetch(option) {\n return true \n}" + }, + "errorHandler": { + "type": "JSFunction", + "value": "function errorHandler(err) {}" + } }, - { - "componentName": "div", - "props": { - "style": "height: 100px; background: rgb(255, 255, 255); filter: drop-shadow(rgba(0, 0, 0, 0.1) 0px -1px 4px); text-align: center;" + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-06-29T00:57:50.000Z", + "updated_at": "2023-05-15T02:37:12.000Z" + }, + { + "id": 139, + "name": "treedata", + "data": { + "data": [ + { + "label": "level111", + "value": "111", + "id": "f6609643", + "pid": "", + "_RID": "row_4" + }, + { + "label": "level1-son", + "value": "111-1", + "id": "af1f937f", + "pid": "f6609643", + "_RID": "row_5" + }, + { + "label": "level222", + "value": "222", + "id": "28e3709c", + "pid": "", + "_RID": "row_6" + }, + { + "label": "level2-son", + "value": "222-1", + "id": "6b571bef", + "pid": "28e3709c", + "_RID": "row_5" + }, + { + "id": "6317c2cc", + "pid": "fdfa", + "label": "fsdfaa", + "value": "fsadf", + "_RID": "row_6" + }, + { + "id": "9cce369f", + "pid": "test", + "label": "test1", + "value": "001" + } + ], + "type": "tree" + }, + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-06-30T06:13:57.000Z", + "updated_at": "2022-07-29T03:14:55.000Z" + }, + { + "id": 150, + "name": "componentList", + "data": { + "data": [ + { + "_RID": "row_1", + "name": "表单", + "isSelected": "true", + "description": "由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据" + }, + { + "name": "按钮", + "isSelected": "false", + "description": "常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型" + }, + { + "id": "490f8a00", + "_RID": "row_3", + "name": "表单项", + "framework": "", + "materials": "", + "description": "Form 组件下的 FormItem 配置" + }, + { + "id": "c259b8b3", + "_RID": "row_4", + "name": "开关", + "framework": "", + "materials": "", + "description": "关闭或打开" + }, + { + "id": "083ed9c7", + "_RID": "row_5", + "name": "互斥按钮组", + "framework": "", + "materials": "", + "description": "以按钮组的方式出现,常用于多项类似操作" + }, + { + "id": "09136cea", + "_RID": "row_6", + "name": "提示框", + "framework": "", + "materials": "", + "description": "Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画" + }, + { + "id": "a63b57d5", + "_RID": "row_7", + "name": "文字提示框", + "framework": "", + "materials": "", + "description": "动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信" + }, + { + "id": "a0f6e8a3", + "_RID": "row_8", + "name": "树", + "framework": "", + "materials": "", + "description": "可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单" + }, + { + "id": "d1aa18fc", + "_RID": "row_9", + "name": "分页", + "framework": "", + "materials": "", + "description": "当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件" + }, + { + "id": "ca49cc52", + "_RID": "row_10", + "name": "表格", + "framework": "", + "materials": "", + "description": "提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等" + }, + { + "id": "4e20ecc9", + "name": "搜索框", + "framework": "", + "materials": "", + "description": "指定条件对象进行搜索数据" + }, + { + "id": "6b093ee5", + "name": "折叠面板", + "framework": "", + "materials": "", + "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作" + }, + { + "id": "0a09abc0", + "name": "对话框", + "framework": "", + "materials": "", + "description": "模态对话框,在浮层中显示,引导用户进行相关操作" + }, + { + "id": "f814b901", + "name": "标签页签项", + "framework": "", + "materials": "", + "description": "tab页签" + }, + { + "id": "c5ae797c", + "name": "单选", + "framework": "", + "materials": "", + "description": "用于配置不同场景的选项,在一组备选项中进行单选" + }, + { + "id": "33d0c590", + "_RID": "row_13", + "name": "弹出编辑", + "framework": "", + "materials": "", + "description": "该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件" + }, + { + "id": "16711dfa", + "_RID": "row_14", + "name": "下拉框", + "framework": "", + "materials": "", + "description": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件" + }, + { + "id": "a9fd190a", + "_RID": "row_15", + "name": "折叠面板项", + "framework": "", + "materials": "", + "description": "内容区可指定动态页面或自定义 html 等,支持展开收起操作" + }, + { + "id": "a7dfa9ec", + "_RID": "row_16", + "name": "复选框", + "framework": "", + "materials": "", + "description": "用于配置不同场景的选项,提供用户可在一组选项中进行多选" + }, + { + "id": "d4bb8330", + "name": "输入框", + "framework": "", + "materials": "", + "description": "通过鼠标或键盘输入字符" + }, + { + "id": "ced3dc83", + "name": "时间线", + "framework": "", + "materials": "", + "description": "时间线" + } + ], + "type": "array", + "columns": [ + { + "name": "name", + "type": "string", + "field": "name", + "title": "name", + "format": { + "max": 0, + "min": 0, + "dateTime": false, + "required": false, + "stringType": "" + } + }, + { + "name": "description", + "type": "string", + "field": "description", + "title": "description", + "format": { + "max": 0, + "min": 0, + "dateTime": false, + "required": false, + "stringType": "" + } + }, + { + "name": "isSelected", + "type": "string", + "field": "isSelected", + "title": "isSelected", + "format": { + "max": 0, + "min": 0, + "dateTime": false, + "required": false, + "stringType": "" + } + } + ], + "options": { + "uri": "http://localhost:9090/assets/json/bundle.json", + "method": "GET" }, - "id": "616d5f40", - "children": [ + "willFetch": { + "type": "JSFunction", + "value": "function willFetch(option) {\n return option \n}" + }, + "dataHandler": { + "type": "JSFunction", + "value": "function dataHandler(data) { \n return data \n}" + }, + "shouldFetch": { + "type": "JSFunction", + "value": "function shouldFetch(option) {\n return true \n}" + }, + "errorHandler": { + "type": "JSFunction", + "value": "function errorHandler(err) {}" + } + }, + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-07-04T02:20:07.000Z", + "updated_at": "2022-07-04T06:25:29.000Z" + }, + { + "id": 151, + "name": "selectedComponents", + "data": { + "columns": [ { - "componentName": "TinyButton", - "props": { - "text": "创建物料资产包", - "style": "background: rgb(245, 245, 246); border-width: 1px; border-color: rgb(173, 176, 184); border-style: solid; border-radius: 2.5px; opacity: 0.6; margin: 0 auto; width: 200px; height: 32px; margin-top: 30px; max-width: none; margin-bottom: 10px;" - }, - "id": "e6abff72" + "name": "name", + "title": "name", + "field": "name", + "type": "string", + "format": { + "required": false, + "stringType": "", + "min": 0, + "max": 0, + "dateTime": false + } }, { - "componentName": "Text", - "props": { - "style": "display: block; color: rgb(173, 176, 184); margin-top: 5px; width: 380px; margin: 0 auto;", - "text": "组件或区块未添加,请切换左侧步骤条去完成添加" - }, - "id": "f3a123ba", - "children": [ - { - "componentName": "Icon", - "props": {} - } - ] + "name": "description", + "title": "description", + "field": "description", + "type": "string", + "format": { + "required": false, + "stringType": "", + "min": 0, + "max": 0, + "dateTime": false + } + }, + { + "name": "isSelected", + "title": "isSelected", + "field": "isSelected", + "type": "string", + "format": { + "required": false, + "stringType": "", + "min": 0, + "max": 0, + "dateTime": false + } + } + ], + "type": "array", + "data": [ + { + "name": "标签页", + "description": "分隔内容上有关联但属于不同类别的数据集合", + "isSelected": "true", + "_RID": "row_2" + }, + { + "name": "布局列", + "description": "列配置信息", + "isSelected": "true", + "id": "76a7080a", + "_RID": "row_4" + }, + { + "name": "日期选择器", + "description": "用于设置/选择日期,包括年月/年月日/年月日时分/年月日时分秒日期格式", + "isSelected": "true", + "id": "76b20d73", + "_RID": "row_1" + }, + { + "name": "走马灯", + "description": "常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现", + "isSelected": "true", + "id": "4c884c3d" } ] - } - ], - "fileName": "ComponentsSetting", - "meta": { - "id": 1761, - "parentId": "0", - "group": "staticPages", - "occupier": { - "id": 86, - "username": "开发者", - "email": "developer@lowcode.com", - "provider": null, - "password": null, - "resetPasswordToken": "developer", - "confirmationToken": "dfb2c162-351f-4f44-ad5f-899831311129", - "confirmed": true, - "blocked": null, - "role": null, - "created_by": null, - "updated_by": null, - "created_at": "2022-05-27T16:50:44.000Z", - "updated_at": "2022-05-27T16:50:44.000Z", - "block": null, - "is_admin": true, - "is_public": null }, - "isHome": true, - "router": "componentsSetting", - "rootElement": "div", - "creator": "", - "gmt_create": "2022-06-23 03:21:31", - "gmt_modified": "2023-05-10 07:36:26" + "tpl": null, + "app": "918", + "desc": null, + "created_at": "2022-07-04T03:04:05.000Z", + "updated_at": "2022-07-04T03:43:40.000Z" } + ], + "dataHandler": { + "type": "JSFunction", + "value": "function dataHanlder(res){\n return res;\n}" + } + }, + "i18n": { + "zh_CN": { + "lowcode.cca8d0ea": "应用", + "lowcode.c257d5e8": "查询", + "lowcode.61c8ac8c": "地方", + "lowcode.f53187a0": "测试", + "lowcode.97ad00dd": "创建物料资产包", + "lowcode.61dcef52": "terterere", + "lowcode.45f4c42a": "gdfgdf", + "lowcode.c6f5a652": "fsdaf", + "lowcode.34923432": "fdsafdsa", + "lowcode.48521e45": "fdsfds", + "lowcode.6534943e": "fdsafds", + "lowcode.44252642": "fdsafds", + "lowcode.2a743651": "sda", + "lowcode.24315357": "fdsafds", + "lowcode.44621691": "fdsafsd", + "lowcode.65636226": "fdsaf", + "lowcode.6426a4e2": "sd", + "lowcode.e41c6636": "aa", + "lowcode.51c23164": "aa", + "lowcode.17245b46": "aa", + "lowcode.4573143c": "aa", + "lowcode.56432442": "aa", + "lowcode.33566643": "aa", + "lowcode.565128f3": "aa", + "lowcode.56643835": "aa", + "lowcode.33311134": "aa", + "lowcode.44326643": "aa", + "lowcode.36223242": "aa" }, + "en_US": { + "lowcode.cca8d0ea": "app", + "lowcode.c257d5e8": "search", + "lowcode.61c8ac8c": "dsdsa", + "lowcode.f53187a0": "test", + "lowcode.97ad00dd": "createMaterial", + "lowcode.61dcef52": "sadasda", + "lowcode.45f4c42a": "gfdgfd", + "lowcode.c6f5a652": "fsdafds", + "lowcode.34923432": "fdsafds", + "lowcode.6534943e": "fdsafdsa", + "lowcode.44252642": "aaaa", + "lowcode.2a743651": "fdsaf", + "lowcode.24315357": "fsdafds", + "lowcode.44621691": "sd", + "lowcode.65636226": "fdsfsd", + "lowcode.6426a4e2": "fdsafsd", + "lowcode.e41c6636": "aa", + "lowcode.51c23164": "aa", + "lowcode.17245b46": "aa", + "lowcode.4573143c": "a", + "lowcode.56432442": "aa", + "lowcode.33566643": "aa", + "lowcode.565128f3": "aa", + "lowcode.56643835": "aa", + "lowcode.33311134": "aa", + "lowcode.44326643": "aa", + "lowcode.36223242": "aa" + } + }, + "componentsTree": [ { "state": { "dataDisk": [1, 2, 3] @@ -952,7 +769,7 @@ { "componentName": "TinyTimeLine", "props": { - "active": "2", + "active": 2, "data": [ { "name": "基础配置" @@ -1708,7 +1525,7 @@ { "componentName": "div", "props": { - "style": "border-width: 1px; border-style: solid; border-color: #ffffff; padding-top: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; position: fixed; inset: auto 0% 0% 0%; height: 80px; line-height: 80px; border-radius: 0px;" + "style": "border-width: 1px;z-index:1;border-style: solid; border-color: #ffffff; padding-top: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; position: fixed; inset: auto 0% 0% 0%; height: 80px; line-height: 80px; border-radius: 0px;" }, "children": [ { @@ -1733,7 +1550,7 @@ { "componentName": "TinyCol", "props": { - "span": "8" + "span": 8 }, "id": "b9d051a5", "children": [ @@ -1746,7 +1563,7 @@ { "componentName": "TinyCol", "props": { - "span": "5", + "span": 5, "style": "display: flex;" }, "id": "02352776", @@ -1780,7 +1597,7 @@ { "componentName": "TinyCol", "props": { - "span": "7" + "span": 7 }, "id": "82b6c659", "children": [ @@ -1848,7 +1665,7 @@ { "componentName": "TinyCol", "props": { - "span": "4", + "span": 4, "style": "display: flex; flex-direction: row-reverse; border-radius: 0px; height: 100%; justify-content: flex-start; align-items: center;" }, "id": "10b73009", @@ -1873,7 +1690,7 @@ ], "fileName": "createVm", "meta": { - "id": 1977, + "id": "NTJ4MjvqoVj8OVsc", "parentId": "0", "group": "staticPages", "occupier": { @@ -1970,7 +1787,7 @@ }, { "componentName": "TinyPlusFrozenPage", - "package": "@opentiny/vuee", + "package": "@opentiny/vue", "exportName": "FrozenPage", "destructuring": true, "version": "3.4.1" @@ -2101,6 +1918,13 @@ "destructuring": true, "version": "0.1.17" }, + { + "componentName": "TinyCheckbox", + "package": "@opentiny/vue", + "exportName": "Checkbox", + "destructuring": true, + "version": "3.14.0" + }, { "componentName": "TinySelect", "package": "@opentiny/vue", @@ -2108,6 +1932,13 @@ "destructuring": true, "version": "0.1.16" }, + { + "componentName": "TinyButton", + "package": "@opentiny/vue", + "exportName": "Button", + "destructuring": true, + "version": "0.1.16" + }, { "componentName": "TinyButtonGroup", "package": "@opentiny/vue", @@ -2150,6 +1981,76 @@ "destructuring": true, "version": "0.1.16" }, + { + "componentName": "TinyCollapse", + "package": "@opentiny/vue", + "exportName": "Collapse", + "destructuring": true, + "version": "3.14.0" + }, + { + "componentName": "TinyCollapseItem", + "package": "@opentiny/vue", + "exportName": "CollapseItem", + "destructuring": true, + "version": "3.14.0" + }, + { + "componentName": "TinyBreadcrumb", + "package": "@opentiny/vue", + "exportName": "Breadcrumb", + "destructuring": true, + "version": "3.14.0" + }, + { + "componentName": "TinyBreadcrumbItem", + "package": "@opentiny/vue", + "exportName": "BreadcrumbItem", + "destructuring": true, + "version": "3.14.0" + }, + { + "componentName": "ElInput", + "package": "element-plus", + "exportName": "ElInput", + "destructuring": true, + "version": "2.4.2" + }, + { + "componentName": "ElButton", + "package": "element-plus", + "exportName": "ElButton", + "destructuring": true, + "version": "2.4.2" + }, + { + "componentName": "ElForm", + "package": "element-plus", + "exportName": "ElForm", + "destructuring": true, + "version": "2.4.2" + }, + { + "componentName": "ElFormItem", + "package": "element-plus", + "exportName": "ElFormItem", + "destructuring": true, + "version": "2.4.2" + }, + { + "componentName": "ElTable", + "package": "element-plus", + "exportName": "ElTable", + "destructuring": true, + "version": "2.4.2" + }, + { + "componentName": "ElTableColumn", + "package": "element-plus", + "exportName": "ElTableColumn", + "destructuring": true, + "version": "2.4.2" + }, { "componentName": "PortalHome", "main": "common/components/home", @@ -2254,7 +2155,7 @@ "type": "function", "content": { "type": "JSFunction", - "value": "function util() {\r\n console.log(3211)\r\n}" + "value": "function test() {\r\n return 'test'\r\n}" } }, { diff --git a/mockServer/src/mock/get/material-center/block-categories.json b/mockServer/src/mock/get/material-center/block-categories.json deleted file mode 100644 index fa0ea5f923..0000000000 --- a/mockServer/src/mock/get/material-center/block-categories.json +++ /dev/null @@ -1,503 +0,0 @@ -{ - "data": [ - { - "id": 81, - "name": "test", - "app": { - "id": 918, - "name": "portal-app", - "app_website": null, - "platform": 897, - "obs_url": "", - "created_at": "2022-06-08T07:19:01.000Z", - "updated_at": "2023-08-23T02:22:28.000Z", - "state": null, - "published": false, - "createdBy": 86, - "tenant": 1, - "home_page": "1761", - "css": null, - "config": {}, - "git_group": "", - "project_name": "", - "constants": null, - "data_handler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - }, - "description": "demo应用", - "latest": 22, - "platform_history": null, - "editor_url": "http://localhost:9090/platform-center/entry/portal-platform?type=app&id=918", - "branch": "develop", - "visit_url": null, - "is_demo": null, - "image_url": "http://localhost:9090/assets/images/27f7f9d26edd98f6bb1ed8d594d408d9_100x100.jpg", - "is_default": true, - "template_type": null, - "set_template_time": null, - "set_template_by": null, - "framework": "Vue", - "global_state": [ - { - "id": "test1", - "state": { - "testa": 1 - }, - "getters": {}, - "actions": {} - }, - { - "id": "test2", - "state": { - "name1": "xxx1" - }, - "getters": { - "count": { - "type": "JSFunction", - "value": "function count() {}" - } - }, - "actions": { - "actions": { - "type": "JSFunction", - "value": "function actions() {}" - } - } - }, - { - "id": "test3", - "state": { - "name1": "xxx" - }, - "getters": { - "count": { - "type": "JSFunction", - "value": "function count() {}" - } - }, - "actions": { - "actions": { - "type": "JSFunction", - "value": "function actions() {}" - } - } - }, - { - "id": "test4", - "state": { - "region": "", - "scenario": "all", - "productId": "", - "planId": "", - "addEvs": false, - "addHss": false, - "addCbr": false, - "period": { - "value": 1, - "unit": "month" - }, - "amount": 1 - }, - "getters": {}, - "actions": {} - } - ], - "default_lang": null, - "extend_config": { - "business": { - "serviceName": "", - "endpointName": "cce", - "endpointId": "ee", - "serviceId": "ee", - "router": "ee" - }, - "env": { - "alpha": { - "regions": [ - { - "name": "", - "baseUrl": "", - "isDefault": false - } - ], - "isDefault": true - } - }, - "type": "console" - }, - "assets_url": "", - "data_hash": "d15fe133765a70ee503c9643a329f0db", - "can_associate": true, - "data_source_global": { - "dataHandler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - } - } - }, - "desc": null, - "createdBy": { - "id": 86, - "username": "开发者", - "email": "developer@lowcode.com", - "resetPasswordToken": "developer", - "blocked": null, - "created_at": "2022-05-27T16:50:44.000Z", - "updated_at": "2022-05-27T16:50:44.000Z", - "block": null, - "is_admin": true, - "is_public": null - }, - "updatedBy": { - "id": 86, - "username": "开发者", - "email": "developer@lowcode.com", - "resetPasswordToken": "developer", - "blocked": null, - "created_at": "2022-05-27T16:50:44.000Z", - "updated_at": "2022-05-27T16:50:44.000Z", - "block": null, - "is_admin": true, - "is_public": null - }, - "created_at": "2023-06-12T00:49:54.000Z", - "updated_at": "2023-06-12T00:49:54.000Z", - "category_id": "test", - "blocks": [] - }, - { - "id": 82, - "name": "test_mChange", - "app": { - "id": 918, - "name": "portal-app", - "app_website": null, - "platform": 897, - "obs_url": "", - "created_at": "2022-06-08T07:19:01.000Z", - "updated_at": "2023-08-23T02:22:28.000Z", - "state": null, - "published": false, - "createdBy": 86, - "tenant": 1, - "home_page": "1761", - "css": null, - "config": {}, - "git_group": "", - "project_name": "", - "constants": null, - "data_handler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - }, - "description": "demo应用", - "latest": 22, - "platform_history": null, - "editor_url": "http://localhost:9090/platform-center/entry/portal-platform?type=app&id=918", - "branch": "develop", - "visit_url": null, - "is_demo": null, - "image_url": "http://localhost:9090/assets/images/27f7f9d26edd98f6bb1ed8d594d408d9_100x100.jpg", - "is_default": true, - "template_type": null, - "set_template_time": null, - "set_template_by": null, - "framework": "Vue", - "global_state": [ - { - "id": "test1", - "state": { - "testa": 1 - }, - "getters": {}, - "actions": {} - }, - { - "id": "test2", - "state": { - "name1": "xxx1" - }, - "getters": { - "count": { - "type": "JSFunction", - "value": "function count() {}" - } - }, - "actions": { - "actions": { - "type": "JSFunction", - "value": "function actions() {}" - } - } - }, - { - "id": "test3", - "state": { - "name1": "xxx" - }, - "getters": { - "count": { - "type": "JSFunction", - "value": "function count() {}" - } - }, - "actions": { - "actions": { - "type": "JSFunction", - "value": "function actions() {}" - } - } - }, - { - "id": "test4", - "state": { - "region": "", - "scenario": "all", - "productId": "", - "planId": "", - "addEvs": false, - "addHss": false, - "addCbr": false, - "period": { - "value": 1, - "unit": "month" - }, - "amount": 1 - }, - "getters": {}, - "actions": {} - } - ], - "default_lang": null, - "extend_config": { - "business": { - "serviceName": "", - "endpointName": "cce", - "endpointId": "ee", - "serviceId": "ee", - "router": "ee" - }, - "env": { - "alpha": { - "regions": [ - { - "name": "", - "baseUrl": "", - "isDefault": false - } - ], - "isDefault": true - } - }, - "type": "console" - }, - "assets_url": "", - "data_hash": "d15fe133765a70ee503c9643a329f0db", - "can_associate": true, - "data_source_global": { - "dataHandler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - } - } - }, - "desc": null, - "createdBy": { - "id": 86, - "username": "开发者", - "email": "developer@lowcode.com", - "resetPasswordToken": "developer", - "blocked": null, - "created_at": "2022-05-27T16:50:44.000Z", - "updated_at": "2022-05-27T16:50:44.000Z", - "block": null, - "is_admin": true, - "is_public": null - }, - "updatedBy": { - "id": 86, - "username": "开发者", - "email": "developer@lowcode.com", - "resetPasswordToken": "developer", - "blocked": null, - "created_at": "2022-05-27T16:50:44.000Z", - "updated_at": "2022-05-27T16:50:44.000Z", - "block": null, - "is_admin": true, - "is_public": null - }, - "created_at": "2023-06-12T00:50:54.000Z", - "updated_at": "2023-06-12T00:50:54.000Z", - "category_id": "test_mChange", - "blocks": [] - }, - { - "id": 19, - "name": "test1", - "app": { - "id": 918, - "name": "portal-app", - "app_website": null, - "platform": 897, - "obs_url": "", - "created_at": "2022-06-08T07:19:01.000Z", - "updated_at": "2023-08-23T02:22:28.000Z", - "state": null, - "published": false, - "createdBy": 86, - "tenant": 1, - "home_page": "1761", - "css": null, - "config": {}, - "git_group": "", - "project_name": "", - "constants": null, - "data_handler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - }, - "description": "demo应用", - "latest": 22, - "platform_history": null, - "editor_url": "http://localhost:9090/platform-center/entry/portal-platform?type=app&id=918", - "branch": "develop", - "visit_url": null, - "is_demo": null, - "image_url": "http://localhost:9090/assets/images/27f7f9d26edd98f6bb1ed8d594d408d9_100x100.jpg", - "is_default": true, - "template_type": null, - "set_template_time": null, - "set_template_by": null, - "framework": "Vue", - "global_state": [ - { - "id": "test1", - "state": { - "testa": 1 - }, - "getters": {}, - "actions": {} - }, - { - "id": "test2", - "state": { - "name1": "xxx1" - }, - "getters": { - "count": { - "type": "JSFunction", - "value": "function count() {}" - } - }, - "actions": { - "actions": { - "type": "JSFunction", - "value": "function actions() {}" - } - } - }, - { - "id": "test3", - "state": { - "name1": "xxx" - }, - "getters": { - "count": { - "type": "JSFunction", - "value": "function count() {}" - } - }, - "actions": { - "actions": { - "type": "JSFunction", - "value": "function actions() {}" - } - } - }, - { - "id": "test4", - "state": { - "region": "", - "scenario": "all", - "productId": "", - "planId": "", - "addEvs": false, - "addHss": false, - "addCbr": false, - "period": { - "value": 1, - "unit": "month" - }, - "amount": 1 - }, - "getters": {}, - "actions": {} - } - ], - "default_lang": null, - "extend_config": { - "business": { - "serviceName": "", - "endpointName": "cce", - "endpointId": "ee", - "serviceId": "ee", - "router": "ee" - }, - "env": { - "alpha": { - "regions": [ - { - "name": "", - "baseUrl": "", - "isDefault": false - } - ], - "isDefault": true - } - }, - "type": "console" - }, - "assets_url": "", - "data_hash": "d15fe133765a70ee503c9643a329f0db", - "can_associate": true, - "data_source_global": { - "dataHandler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - } - } - }, - "desc": null, - "createdBy": { - "id": 86, - "username": "开发者", - "email": "developer@lowcode.com", - "resetPasswordToken": "developer", - "blocked": null, - "created_at": "2022-05-27T16:50:44.000Z", - "updated_at": "2022-05-27T16:50:44.000Z", - "block": null, - "is_admin": true, - "is_public": null - }, - "updatedBy": { - "id": 86, - "username": "开发者", - "email": "developer@lowcode.com", - "resetPasswordToken": "developer", - "blocked": null, - "created_at": "2022-05-27T16:50:44.000Z", - "updated_at": "2022-05-27T16:50:44.000Z", - "block": null, - "is_admin": true, - "is_public": null - }, - "created_at": "2023-03-22T07:26:04.000Z", - "updated_at": "2023-06-02T08:45:34.000Z", - "category_id": "test_mChange01", - "blocks": [] - } - ], - "locale": "zh-cn" -} diff --git a/mockServer/src/mock/get/material-center/block-groups.json b/mockServer/src/mock/get/material-center/block-groups.json deleted file mode 100644 index 434330edde..0000000000 --- a/mockServer/src/mock/get/material-center/block-groups.json +++ /dev/null @@ -1,1022 +0,0 @@ -{ - "data": [ - { - "id": 110, - "name": "门户网站区块分组", - "app": { - "id": 918, - "name": "portal-app", - "app_website": null, - "platform": 897, - "obs_url": "", - "created_at": "2022-06-08T07:19:01.000Z", - "updated_at": "2023-09-04T01:43:50.000Z", - "state": null, - "published": false, - "createdBy": 86, - "tenant": 1, - "home_page": "1761", - "css": null, - "config": {}, - "git_group": "", - "project_name": "", - "constants": null, - "data_handler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - }, - "description": "demo应用", - "latest": 22, - "platform_history": null, - "editor_url": "http://localhost:9090/platform-center/entry/portal-platform?type=app&id=918", - "branch": "develop", - "visit_url": null, - "is_demo": null, - "image_url": "http://localhost:9090/assets/images/27f7f9d26edd98f6bb1ed8d594d408d9_100x100.jpg", - "is_default": true, - "template_type": null, - "set_template_time": null, - "set_template_by": null, - "framework": "Vue", - "global_state": [ - { - "id": "test1", - "state": { - "testa": 1 - }, - "getters": {}, - "actions": {} - }, - { - "id": "test2", - "state": { - "name1": "xxx1" - }, - "getters": { - "count": { - "type": "JSFunction", - "value": "function count() {}" - } - }, - "actions": { - "actions": { - "type": "JSFunction", - "value": "function actions() {}" - } - } - }, - { - "id": "test3", - "state": { - "name1": "xxx" - }, - "getters": { - "count": { - "type": "JSFunction", - "value": "function count() {}" - } - }, - "actions": { - "actions": { - "type": "JSFunction", - "value": "function actions() {}" - } - } - }, - { - "id": "test4", - "state": { - "region": "", - "scenario": "all", - "productId": "", - "planId": "", - "addEvs": false, - "addHss": false, - "addCbr": false, - "period": { - "value": 1, - "unit": "month" - }, - "amount": 1 - }, - "getters": {}, - "actions": {} - } - ], - "default_lang": null, - "extend_config": { - "business": { - "serviceName": "", - "endpointName": "cce", - "endpointId": "ee", - "serviceId": "ee", - "router": "ee" - }, - "env": { - "alpha": { - "regions": [ - { - "name": "", - "baseUrl": "", - "isDefault": false - } - ], - "isDefault": true - } - }, - "type": "console" - }, - "assets_url": "", - "data_hash": "ae128e37f6bc378f1b9c21d75bd05551", - "can_associate": true, - "data_source_global": { - "dataHandler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - } - } - }, - "desc": null, - "created_at": "2022-06-08T08:43:03.000Z", - "updated_at": "2023-08-01T13:07:41.000Z", - "blocks": [ - { - "id": 989, - "label": "PortalHome", - "framework": "Vue", - "content": { - "state": { - "logoUrl": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXwAAAF8CAYAAADM5wDKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI5OEVGOTU4RTg2NDExRUM5MDhERjU4NjRDOUUxQTUwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjI5OEVGOTU5RTg2NDExRUM5MDhERjU4NjRDOUUxQTUwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Mjk4RUY5NTZFODY0MTFFQzkwOERGNTg2NEM5RTFBNTAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Mjk4RUY5NTdFODY0MTFFQzkwOERGNTg2NEM5RTFBNTAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4dZkpJAAAvNElEQVR42uyd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", - "loginImgUrl": "data:image/png;base64,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" - }, - "componentName": "Block", - "css": ".home-content {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n text-align: center;\r\n height: calc(100vh - 262px);\r\n \r\n}\r\n.home-content .btn {\r\n margin-top: 24px;\r\n \r\n }\r\n .home-content .btn button {\r\n border: none;\r\n border-radius: 30px;\r\n background: #5e7ce0;\r\n \r\n font-size: 14px;\r\n color: #fff;\r\n \r\n cursor: pointer;\r\n }\r\n\r\n .home-content .text {\r\n font-size: 18px;\r\n }\r\n\r\n .home-content .account {\r\n margin-top: 16px;\r\n \r\n \r\n }\r\n\r\n .home-content .account .sub-text {\r\n color: #575d6c;\r\n }\r\n .home-content .account .login {\r\n color: #1890ff;\r\n cursor: pointer;\r\n }\r\n .home-content .logo img{\r\n border-radius: 50%;\r\n overflow: hidden;\r\n }", - "props": {}, - "children": [ - { - "componentName": "div", - "props": { - "className": "home", - "style": "height: 100vh; display: flex;" - }, - "id": "357534ab", - "children": [ - { - "componentName": "TinyRow", - "props": { - "align": "middle", - "flex": true, - "style": "" - }, - "children": [ - { - "componentName": "TinyCol", - "props": { - "span": 6, - "style": "text-align: center; display: flex; justify-content: center;" - }, - "id": "f01b66ea", - "children": [ - { - "componentName": "div", - "props": { - "style": "width: 90%; height: 50%;" - }, - "id": "8197d016", - "children": [ - { - "componentName": "Img", - "props": { - "style": "width: 100%; height: 100%;", - "src": { - "type": "JSExpression", - "value": "this.state.loginImgUrl" - } - }, - "id": "471e30f3" - } - ] - } - ] - }, - { - "componentName": "TinyCol", - "props": { - "span": "6", - "style": "text-align: center;" - }, - "id": "781d5b46", - "children": [ - { - "componentName": "div", - "props": { - "className": "home-content", - "style": "font-size: 14px;" - }, - "id": "08638b8a", - "children": [ - { - "componentName": "div", - "props": { - "className": "text" - }, - "id": "18712ee2", - "children": [ - { - "componentName": "div", - "props": { - "style": "font-size: 16px;" - }, - "id": "07e6794c", - "children": [ - { - "componentName": "div", - "props": { - "className": "logo" - }, - "id": "07cad264", - "children": [ - { - "componentName": "Img", - "props": { - "style": "width: 105px; height: 105px; border-radius: 100px;", - "src": { - "type": "JSExpression", - "value": "this.state.logoUrl" - } - }, - "id": "f4489e27" - } - ] - }, - { - "componentName": "Text", - "props": { - "text": "TinyLowCode 低代码平台", - "style": "display: block; font-size: 28px; margin-top: 12px; margin-bottom: 12px; font-weight: bold;", - "ref": "", - "className": "title" - }, - "id": "e82108ce" - }, - { - "componentName": "Text", - "props": { - "text": "致力于通过友好的用户交互提升业务的开发效率", - "style": "display: block; margin-bottom: 12px;" - }, - "id": "65a2f1ad" - }, - { - "componentName": "Text", - "props": { - "text": "欢迎一起来解锁~~", - "style": "margin-top: 12px;" - }, - "id": "bb879abb" - } - ] - }, - { - "componentName": "div", - "props": { - "className": "btn" - }, - "id": "44b2bcbd", - "children": [ - { - "componentName": "TinyButton", - "props": { - "text": "立即体验", - "round": true, - "type": "primary", - "style": "margin-top: 40px;" - }, - "id": "9580c5e7" - }, - { - "componentName": "div", - "props": { - "className": "account" - }, - "id": "6a8ffa3e", - "children": [ - { - "componentName": "div", - "props": { - "style": "font-size: 14px; margin-top: 4px;" - }, - "id": "bfc6eb6c", - "children": [ - { - "componentName": "Text", - "props": { - "text": "已有团队?", - "style": "color: #777777;" - }, - "id": "3d993264" - }, - { - "componentName": "Text", - "props": { - "text": "立即进入", - "style": "color: #5e7ce0;", - "onClick": { - "type": "JSExpression", - "value": "this.handleClick(event)" - } - }, - "id": "21390118" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ], - "id": "4545fea2" - } - ] - } - ], - "methods": { - "handleClick": { - "type": "JSFunction", - "value": "function (event) {this.emit('goto-home', event)\n}" - } - }, - "fileName": "PortalHome", - "meta": { - "id": 1722, - "parentId": "0", - "group": "staticPages", - "title": null, - "occupier": null, - "isHome": false, - "description": "", - "router": "/", - "rootElement": "div", - "creator": "开发者", - "gmt_create": "2022-06-08 03:25:51", - "gmt_modified": "2022-06-09 05:19:09" - }, - "id": 1722, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [] - } - ], - "events": { - "onGotoHome": { - "label": { - "zh_CN": "点击立即进入触发方法" - }, - "description": { - "zh_CN": "点击立即进入触发方法" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "", - "linked": { - "id": "21390118", - "componentName": "Text", - "event": "onClick" - } - } - }, - "slots": {} - }, - "dataSource": {}, - "i18n": {} - }, - "created_at": "2022-06-13T07:56:51.000Z", - "updated_at": "2023-01-13T08:12:51.000Z", - "assets": { - "material": [], - "scripts": [ - "http://localhost:9090/assets/js/989web-components.es.js", - "http://localhost:9090/assets/js/989web-components.umd.js" - ], - "styles": [] - }, - "createdBy": 86, - "description": null, - "tags": "", - "current_history": 1655, - "screenshot": "", - "path": "common/components/home", - "occupier": null, - "isOfficial": true, - "public": 1, - "isDefault": null, - "tiny_reserved": false, - "author": null, - "name_cn": null, - "created_app": null, - "content_blocks": null, - "current_version": "x" - } - ] - }, - { - "id": 133, - "name": "门户网站拖拽分组C", - "app": { - "id": 918, - "name": "portal-app", - "app_website": null, - "platform": 897, - "obs_url": "", - "created_at": "2022-06-08T07:19:01.000Z", - "updated_at": "2023-09-04T01:43:50.000Z", - "state": null, - "published": false, - "createdBy": 86, - "tenant": 1, - "home_page": "1761", - "css": null, - "config": {}, - "git_group": "", - "project_name": "", - "constants": null, - "data_handler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - }, - "description": "demo应用", - "latest": 22, - "platform_history": null, - "editor_url": "http://localhost:9090/platform-center/entry/portal-platform?type=app&id=918", - "branch": "develop", - "visit_url": null, - "is_demo": null, - "image_url": "http://localhost:9090/assets/images/27f7f9d26edd98f6bb1ed8d594d408d9_100x100.jpg", - "is_default": true, - "template_type": null, - "set_template_time": null, - "set_template_by": null, - "framework": "Vue", - "global_state": [ - { - "id": "test1", - "state": { - "testa": 1 - }, - "getters": {}, - "actions": {} - }, - { - "id": "test2", - "state": { - "name1": "xxx1" - }, - "getters": { - "count": { - "type": "JSFunction", - "value": "function count() {}" - } - }, - "actions": { - "actions": { - "type": "JSFunction", - "value": "function actions() {}" - } - } - }, - { - "id": "test3", - "state": { - "name1": "xxx" - }, - "getters": { - "count": { - "type": "JSFunction", - "value": "function count() {}" - } - }, - "actions": { - "actions": { - "type": "JSFunction", - "value": "function actions() {}" - } - } - }, - { - "id": "test4", - "state": { - "region": "", - "scenario": "all", - "productId": "", - "planId": "", - "addEvs": false, - "addHss": false, - "addCbr": false, - "period": { - "value": 1, - "unit": "month" - }, - "amount": 1 - }, - "getters": {}, - "actions": {} - } - ], - "default_lang": null, - "extend_config": { - "business": { - "serviceName": "", - "endpointName": "cce", - "endpointId": "ee", - "serviceId": "ee", - "router": "ee" - }, - "env": { - "alpha": { - "regions": [ - { - "name": "", - "baseUrl": "", - "isDefault": false - } - ], - "isDefault": true - } - }, - "type": "console" - }, - "assets_url": "", - "data_hash": "ae128e37f6bc378f1b9c21d75bd05551", - "can_associate": true, - "data_source_global": { - "dataHandler": { - "type": "JSFunction", - "value": "function dataHanlder(res){\n return res;\n}" - } - } - }, - "desc": null, - "created_at": "2022-06-23T12:47:31.000Z", - "updated_at": "2023-04-14T08:01:18.000Z", - "blocks": [ - { - "id": 989, - "label": "PortalHome", - "framework": "Vue", - "content": { - "state": { - "logoUrl": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXwAAAF8CAYAAADM5wDKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI5OEVGOTU4RTg2NDExRUM5MDhERjU4NjRDOUUxQTUwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjI5OEVGOTU5RTg2NDExRUM5MDhERjU4NjRDOUUxQTUwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Mjk4RUY5NTZFODY0MTFFQzkwOERGNTg2NEM5RTFBNTAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Mjk4RUY5NTdFODY0MTFFQzkwOERGNTg2NEM5RTFBNTAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4dZkpJAAAvNElEQVR42uydCZRdVZnvd92aq1IZSQIJQ4AMTAkOSRQQugFBbQm+p2A7oK0igt2K0L5+/exeq/Xx1rP72bbic0IEXSpqO/ZzagdUEEQ0jCZgSAhkIoEACZVKap7e/p+7b3JTqeGee898fr+1vpUQkqq6++zzO/t8+9t7142OjhoAAMg+BZoAAADhAwAAwgcAAIQPAAAIHwAAED4AACB8AABA+AAAUDENlfylTbtoKACAJLJ0QcDCB0gAbTaOtTHPxlwbx9g4ysbMMTHdRrP7++02mty/b7HRWvb19tsYsjFiY5/7s14bfe73+1x0lsXzNp628ZyNZ208ZaOHSwOZGuEDRICEvMjGSe7XsTE34O/XUfb7OTV8Hcl/6zjxpPu1j0sLCB/ySqONU20sd7HCxhk2jkvp55nrYtUE/3+HjUdsrLexzv26wcYgXQEQPmQJpVTOsvESJ/blTvaNOWqD41y8puzPBp30Sw+BB23ca6ObLgNhUlfJbplM2kKFLLTxChvn2DjbxpkMKipG8wl/tPE7F3fb2EmzwFT4mbRF+FALp9i40AlecTxNEijbbdzj4lc2HqNJAOFDVMy2cZGLi0168+5pRfMBt9v4hft1L00CCB+C5HQbr7VxiSmmaeppkkQwbIqpn5/Y+LGNR2kShI/wwS91NlbauNzGG0yxTBKSj8pAv2fj+zb+YIOj7BA+wocJWW3jTU7y5OLTzXYn/m/aWEtzIHyED2KZjTfbeIuNJTRHJnncxjec/DfSHAgf4ecLbS9wmY132ziP5sgVd9m4xcZ3TXEbCUD4CD+jaOHTVTauMMU9ZyC/aF+g22x80RQXfgHCR/gZYJoppmw0ml9Nc8A4rHWjfqV8DtAcCB/hp4/FNt5v453m8E3CACZCu4d+2canbWymObIpfA5AyRbn2/iBKU7OXYvswQcdrs+o7/zQ9SXIGAg/G9dQk7D32fi1jUu5rlBjf1rj+tJ9rm/RnxA+xIwO9lBuXvurfMcUF0sBBMlK17cec32tiSZB+BC96K+2sckUqyyon4ewWeL6mvrcNYgf4UP4NDrRayHNTTZOoEkgYtTnPu/64NUmX+caIHyI7Bq91cafnOjZ9gDi5njXFze4volHED4EwKttPGSKi2QW0xyQME52ffMh11cB4UMVvNgU9zv/qSmukAVIMitcX/2l67uA8KECjrFxq437bbyS5oCUcaHru7e6vgwIH8ZBVQ8fNMVFL+/iukDKnaI+vMn1aSp6ED6UoaMCH7bxccPKWMgO01yfftj1cUD4uWauja/b+LmNU2kOyCinuj7+ddfnAeHnDm1RrJK2t9AUkBPe4vr822gKhJ8XFtn4mY2v2ZhDc0DOUJ//qrsHTqQ5EH5WqbdxnY1HbLyK5oCco3tgvbsn6mkOhJ8lTrPxOxuftNFOcwB4tLt74nfuHgGEn/q2vd7GA4bTpgAmYrW7R67HRwg/rWivEa2U/YSNFpoDYFJa3L1yu2GvKISfMnRgxB9tXEBTAPjiAnfvXEZTIPyk02bjZlM8MGImzQFQFTPdPXSzu6cA4SeOM0zxOLiraAqAQLjK3VNn0BQIP0loP/DfGyoNAIJG99Qf3D0GCD9Wmk3xEAjtB065JUA4tLl77AuGAgiEHxPH2rjbFI95A4DweY+Nu2wcR1Mg/Cg51xT3/F5FUwBEyip3751LUyD8KLjGxq9szKcpAGJhnrsH30tTIPywaLDxaRuft9FIcwDEiu7Bz9n4rLs3AeEHxgwbP7HxPpoCIFH8tbs3Z9AUCD8IFtm4x3BiD0BSudjdo4toCoRfCy+2ca+N02kKgERzurtXX0JTIPxqRw2/sXE0TQGQCnSv3snbOML3i44f/LHhQHGAtNHh7t0raAqEXwnXmuIRbFTiAKSTRncPX0tTIPzJ+LCNT9mooykAUk2du5c/QlMg/PE6xyfpHACZHMR9kkEcwi+XvRZvXEdXAMgk17l7HOnnXPj67F80LNEGyDrvdfd67jMaeW2Aehu32riSewEgF1zp7vlcSz+PH16vdtpb+x3cAwC5Qvf8zSbH6Z28CV8X+nOM7AFyPdL/XF6lnzfha8b+Gvo8QK6RA25E+NnmIzY+QF8HAFNcmPURhJ9N3m+KNbkAACU+bHK2IjcPwteJ95+ibwPAONzoHIHwM8AFNr5kWHQBAONT5xxxAcJPN8ttfN9GE30aACahybliOcJPJyfa+E/D0WcAUBlyxe02Tkb46btwP7BxLH0YAHww38Z/ZHmgmDXha8uEb+Xh1QwAQkHu+LZzCcJPOJ+28Sr6LADUwMXOJQg/wWj1HDtfAkAQyCV/jfCTybmGWnsACJZPOrcg/AShydnvGcovASBYmpxbMlMAknbhN5virPpc+iYAhIDc8v+caxB+zCiNs5I+CQAh8lKTkZRxmoX/NhtX0xcBIAKuds5B+DFwuo2b6IMAECE3Ofcg/AhpsfHvNtrofwAQIW3OPS0IPzr+1cYZ9D0AiAG552MIPxpeY+Nv6HMAECPvcy5C+CGijY2+bNjbHgDipc65aD7CD6+Bb0ljAwNAJpnvnJSqAWhahK99LS6hjwFAgpCTUrXfThqEf5qNj9O3ACCB/KtzFMIPAO1J/RUbrfQrAEggctNXbTQg/Nr5oGHrBABINi91rko8daOjo1P+pU27YvnZTrHxkEnxIgcAyA19Nl5s47Gov/HSBekf4evnuhXZA0BKkKu+ZBKeNUnqD/ceG2fThwAgRZxlEr6hYxKFf4yNf6bvAEAK+ahzGMKvkE/YmEm/AYAUMtM5DOFXgE6LfxN9BgBSzJucyxD+JDQaDiIHgGzwKec0hD8B15piKSYAQNo5xTktUSSlDv9oGxttTKefAEBG6HLifzrMb5LGOvz/jewBIGNMd25LDEkQ/pk23kHfgGrYubufRoAk81fOcQjf8XGT3sPUIWbZ3/PgPvPo4900BiQVue3fEH6Rv7DxSvoE+KWza8isXbff+/2mrb1mcHCURoGkcqFJyHkehZi/90fpC+AXyX3tui4zODRS/G/760MbDtAwkGQ+moABdqw/gBYnnEk/AL9I7p37hw77s607e71RP0BCWW4SsKg0LuFrQcIN9AHwi/L2kvtEDwKABHODiXkxVlzCv9LGyVx/8EN37/DBvP14PLd3wGx9qo+GgqRysnNfroTfZONDXHvwi2RfyttPxKObu5nAhSTzD86BuRH+u2wcz3UHP2jkrhF8JW8Bm7b20GCQVI5zDsyF8PVk+x9cc/CDRux+8vMq05T4ARLKh+Ia5Uct/LfbOIHrDX6Q7KdK5Rz2gLB/99HHGeVDYjneuTDTwtf3+u9ca/DDs3sGJ6zKmQz9G/1bgITy9zEMuCP9hq+3sYTrDH7QJGy1PLxhPw0ISWWxjTdkWfh/zzXOBwODo17UimruK5monQgtzqJMExJM5BmPqIT/5zZWcn3zwT4r2t3PD9Qs/YcDWEjl5f8p04RkstK5MXPCv45rmw+GhkdNT9+wGRkdrUn6GpkHUWmjCVzKNCHBROrGKISvXNUarms+2H/gkKRrkX4tufvxvhZlmpBQ1jhHZkb41xr2u88NB3oOF2s10g9qdF/Ow+yzA8mkYCI8+zZsEXfYeCfXNB/09I14gh+LX+kHObovoQlgyjQhobzTuTL1wr/CxjSuZz7o7pl4VF6p9CXlsNIv963v4iJBEpEj35YF4V/DtcwHIyPGm6yd9O9UIP0wRvcHH0jePju9XCxIIpG4Mkzhn2NjBdcxH0wl+0qkLyHXUndfCTr/ljJNSCDLnTNTK/yruYb5obev8r1uJpL+4xGMvr19djZz6Dnkc5QflvCnmxiWDUM8VJLOqUT6WyJaFau6fMo0IYG83rkzdcL/SxttXL980DcwUtW/K5e+SjH97IhZK5OdnAUQE23OnakT/ju4dvmht6/60XJJ+k/siHYyVXMFlGlCAgm1jD0M4S+zcTbXLUcj/P7aRuYa2WsOYGgo2slUyjQhgZzlHJoa4b+Fa5YftHeOoha6DgybjvZ6c9Ssxkilrzy+qnYAEkZoDkX4EOvoXmjCt67OmJbmQuTSV10+ZZqA8KtjtYlwIyCIn/6B2oQ/rN01ew99jailr3TSQ+yzA8lisXNp4DQE/PXezLXKF7Xued/dM2IaG+oO+7OS9J9/YdA0jPl/YaDjEJcuajUzpzekrv014d3pzh/oHyhOgE/E/KOaTHNTnffrzI4G71dILHLp2qC/aN3o6NQ37KZdlX0tG9tsHMe1ygeqv9/xTG218xLURGkh/XlU0p87u8mc/7KZiW/zbbv6zLadfWb7rn7v97VywoIWc/yCZrPsxDYeAMniKVM87HxKQS9dEI/w9QryB65TfpCQd++pbSsELbYq1E3+PaKS/jkvmWEWzm9O5Ch+7fr9ZtOWnkDmTCZihh31S/wrlrUj/2Tw8kqc6kf4Qb7DXsb1yRe1pnOUvx8ZGTWF+ollHmV6R3vmz7Mj/cbGukS077rHDpi77t/nHRkZBfo+a9d1eSHhr17eYVacwma3MfKGoAfRQY7wHzdM2OaKF/YNma7u6mXUtX/YvNBV2eKnqEb6py9uN6cvaY+1XYvS3R+Z6Kca9Z+3cgbij4cnKnFqHCmdU2xs4PrkCy//XkOVzh4r8AM9la/SjUL6jQ0Fc/ErZpn21vrI23Pjlh5z+z0vJEL044n/onNmeSkfiBTtOLw+KOEHVZb5aq5L/qh1wVWvz3x0FCWb3m6aj0d76LkE/92fPedFEmU/9mcMcx4BjuC1QX6xoIT/Gq4LwvdLNXMAUUhfZZpR7bOjUf0t33na+zUN6Of87Nd3BlIhBOkUfquNP+O6IPuwZR+l9KPYM1/pmzSOmPXz3vaD3eau+zq5EcJHe+vMTpLwL7DRzHXJmfBrlO3g4Iipr6H3hS197aa5NaT9+UvC1ORsmrn7/n3mR3fsIcUTLppMujhJwid/D77p6atdEmFLX1suBL3Pjif7H+7OTEpEpaP6PEg/VC5KkvDJ3+eQWvfQKQRUaBOm9DWBq9Oxgpb9ZNsfpBF9HqSfD+EvsXEy1wP80hugHMKUvnL5QRyHmFXZI/1I0HY1pyZB+BdzLaAa6gIupQ9T+g/XuJtm1mVfLn1V8GT9c8bEBUkQ/nlcB6gG7ewYNGFJf+fu/qrLNPMi+/LPqzLTtE9IJ5BAXIvwIRYqWeGdJOk/vMH/oed5k305KjlVJRKj/cAIpPS9FuHr3MWjuQ6QNMKQvvac1+lYWZG9tkrQ1sgK/T4MVImk0b7kT26/Zuab4hY2NVHLlX4F1wCqQYuu6urC3QQtjF02df7tiQtbptxNM8my1y6Y2hNHoi9HP6vEHEa5qNI76zYeMCuWTTOrV3SE9oDJAefaeCyuEf5ZtD9UQ62LruIa6Xv77EyxAjfpsr/i0vlHyP7g/3vd/NB2xVS7SPyfuW2nt7pY9fuM+n3zsjhH+C+n/SHpBD3SV13+kkWt4+6mmWTZqx0ke/06GWvOn2P2dQ2FujBM+/F4ewfdscfbfVMnbumBM96DCIJ1brXCn2ECqgsFSJv0tVf92OMQtZvkd+zINak5+3NXzphS9gf/7qoZZtsPolkJfFD+JbF0NHjn7epnnTenccJ/d8LCyR8O+hoZTB2d6ty7L2rh6zjDAiqBPEpf++yoTLMkpDQsOvKzj71G2mqvOD6PHpylLaI3bpn472kfn1qZ6o2idOj7ZH1qsqMg589pqvghWyEF597boxb+ShQCeZb+feu7zGv/fE5qVpj6He1KVlnfAnmqz1fr51d/e/flxwT9prEyDuG/OM/i6Owa8ibvFs5rNnPtKC+O05Hipr6+LpU/d1DS13YLGmVqIjKLk499A0yo1tyGtl+onDdg4dfk3mp/khfl+UKqrFCrLxVCwp87u8ksnN+UqEOww6ShPr2fMQjpa6Xwbx/Y5x3CngaUJ680rSNRsWCqtrcpbw5hekMYE9GRC7/D5Pyw8rGTSRrtde/s9U5KErrY8+wr8QL7BjDZxFOe0ULbuhifGbVIX7J/6pn+1MheaNFYpcLP+7YIJWEf/G8r7hnTDr3Fl2R+2H9HN0GszSqn26jqIlXzU55po87AhOg1rrgys1h9UBz9W/nPbjQzp2ejcqCpsfrJqPa2evOMHUHG/ZZQjfTTKHuhuveli1qnlL5G9vet35/6/lk+sk6YsGtFHVUHm/82KuEvR+lFiataoxL090p/t7GhWG6W9vx/ISM1Wn6kn1bZl/jxHXu8XyeSftq2OFaFjEIyV5lmS9PkVTMZYnmUwj8d3WuEW93oVKs1s5L/1yh/YDD9k3uVSD/tshcSuVa5avS7Yln7wVGu/lwpH70FJH3UrkVaknvOF2mdUe0/rEb4pxjwXgNL0q6F8fL/Sv/oIZD0/H8tp1YVCsl6sE0m/SzIvhyVG6ah5FLXZKl9G6kkFZUzqnYwwq9W+CHl4kv5f/so8P77oPwTmP/3FudUWb6nN6SwzqINUvpZk30a0H4+SH5SlkUlfO2stJD2NpHl3svTP8r/lyZ/k5D/r6/P3tx9ufSH7bMM2UeDJk21k6Z21Ax4dWoWWehc7DsH51f4J9HW4Y7wJ0P5/61l6R8Jv/gG0BhL/r+WSh1NsB0YGk7ktZVwFBu39CL7kFEufpUVPaN538jF68IW/mLa+RB+KnXCQPl/lX5u2uoeQhHn/5tqeMAk+e2gu2fEPL4V2Yctem3Sxg6ZVbMkCuEvoZ0PMcuO8uMU/ljiyP9rpF5NHr+xoS72xVcTyV6HdQwNI/swUOpGB7Awoq+Zqgbffi2wiHYuH+E3HhxdJ5Eo8v/VTtzq3w3bEXSStmhA9uGh671qeYc5b9VMGiMYToxC+MfTzodQ3jwtjM3/l7Z/qDX/39xUXR5fKZ36ArLPA0rbrLlgDkcbBstxUQj/ONq5LC1hJSlxdrr9u9PEoe0fSm8rxdSP3/x/LRUVmvTVgwjZZ3dUr4NXVq+YTmMg/IyM8u0oOY3CH8uh7R+6D27/UGn+v9o8viZ9B2NuOmQfDtriQMcl5mSrg0wKX7tkkoAbg3bELG2SlhUm2v5hovx/a0t9VcJvbSmYAz3DsU3cIvtw0MKpi86eRT19uMx0Tva1050f4c+jjccb4Td6I+IkpCZCE+ME2z+X8v9trQXzQhWbtUoIkm1jQ/TGR/bhoAocUjjR6SdM4c+hfcdH1S8lGeaB8fL/qraZPq3eV/mnJm6RfTbQw1ujeo3uITJm23gC4Ucu/KZcCX8spbUIO3cXt02e3t7gyV9VGdPa66cURZTb8SL7cGR/xaXzyddHj28n+xH+XNp34hF+1tM6lVDaI7+re8iL7U/3exOz06c1mA4rfu1RM3Ynymlt9aa3bySSPD6yR/YZw3eanRF+gNLP8yh/ogeA5Lp336DZ2zlontzRZ9paCt4DQG8AR81u9E6/2r1n0IS9/grZI/sMMjtM4c+mfSdm0cIWhD8ZdcrZG9M/OGKee2HAPLu3eM6qRv7DVsKq2AmrqgPZhwOyjx1SOrG9W7lyRVW0QAX+dw+Anr5ie/X0jXhbLTQ31pnGxoL3IAhiQhfZhwM19ongqDCFT0qnglH+o5u7aYgqkPxVtSMt69jEZ54f9k5r1mrcpqY6+wBoMPU+XwCQfTio9JJqHISfe5YuakP4AVEa3Y+MjprevlHTdaDfK/3UJLD27+mYovoH2YeDdrmkzj4xhJrD55E+laSsjBYtbCWXHzBK/5T23pfAB7qHzd59Q96f6Q2gvfXw/D+yDwelcC45n3FfgugIU/icVFDRKB/hh42qf5qbig8AlcLu6TyU/xeqBkL2waO8PdslJArfTvZz9XiPqwCtNJ07m8msKFH+X6N9KV5x9NwmM3tmY9VbN8ORaNdLJmkTh28n+xnhN9O+lXH64nZz59oBGiImVOKpmDOzwYyMGNPbN+xVAXX3DNs3Akb+fpHoObgkkfh2sh/ht9K+lVHaWjhJxx/mFaV/tLhLoc3eJHyt7C0GD4BKWEPePrFjmzCFD4zyU4+qfxqn1Xsrfe1/mf6BUU/8egDoLYCDyw9H5ZekcrJDQ0h/l1E+o/x0vBM3qcyzwcx02dCS+EsPgTxT2gETEovvJ7EfibfTvozyM/+O7PL/ujXK8/+Sf/9Avh4AOnScqpxkd9cwhQ9VjPKpy08v5fl/kaf8v0TPAqvsgfDDHuUvafOOCsz71slZIE/5f0b3CF9HaXXQZP7QhmpajMWWC9ljbP5fDwCd0Zv2/D+je4QvGKJWPcpvN1t39rGTZk4eAKXbSnX/acz/Lz2xjdF9OvCdK/Yj/D4bM2jjal+Rp5s7175AQ+Tp7a4s/68J4OLoP/n5/9XLeZFPCb4rQvwIv5/2rR5N4Go3zU1be2iMHOKd9VuW/5fwu3uSl/9XzT1199nFj/DJR9SIyjQ1gUtqBzQBrH2Xkpb/X7GM6usUEWpK50AeW3RP56B3IwbFsUc3m0ce7w7kNCfIDmPz/9t29pmBwehH/SuWsQt6ivCddWFmZgpUZRMkGtUdO7/Zy+kCjEdf/0g8sj9lGpO16aIrTOHvz2OL6gbQSUtBsujYluKDhG1bYAyjtk8MDMTTMUjnpG9sEKbwcztpq/NUg+a0xW2GfbpgrOw1ENh3YCjy7z2jo8GcsIAzjlKG70G4H+HvyWurTmurD/xrNjTUmeVL280w87fgqC/Umd7+ES+lEzWrV1CKmUL2IvwQUEldGNKf1l5vTjquhXw+mKGhUa90d/fz0W+2p7Qlk7WpxLeT/Qj/uTy3rF55w8A7jm9GA/n8HFNXV2eOmdds9u0fthF9OoeVtanFt5P9XOW9eW5ZTdy2hHRG6rKT2orzBEg/lyP7GdPqTb3tWtt29cXyM5y3kgX0jPAD+OKM8v2MslpNE4du5wpN0h41q9EbXcc1ulcpZpj9GkIl1Bz+c3lvXd2YYY3yS5O4TY1IPw9osn6mFW0plRLX6J5SzFTzLCP8FI/ykX5+ZK8J++LJWia20b3KMCnFTDWkdNI8ykf6+ZH9jGmHqr7iGt2fu4rcfcoJNaXzLO1bZM6sxlC/PtLPj+z3dA4xuodqCTWlo1VdnbRxsWInjLp8pJ9dtNZC5bflshdP7ojnvGNG96mn04S80lY8RTsXmTW90RTqwt3x8jDpU7KZWlR6KdmXcvYltu3qj2VV7bIT2xjdp5+qXOxX+NtpZ9dwBRNJOZuk/+LTpplZLM5KJaMjh0ovy9GRh7t2x7M91UXnzOLCpJ+qXOxX+Dto50Po9KKWiGrntRpSq3LZhiEloh912yUc1TTuKtaNW3rN0HA8WyBTd88Iv1K20M6HM2tGY2Tf64SFLebEY1sMR6ckGz2UC4U677Cb+nHusJ27B2KZqNWD56KzGd1nhCejEP5m2vlwmhrrvAU0UaFR/mmL200zk7mJRJU4Orh8/pzxBwJK5WyPqQxz1fIO9szJDlW52O/Vf5x2PhK9IkdZTaPSvjOWtpuOtgYvdQDJGdnPmXlkJU45caVy1EfPWzWTi4Tww3+NyANzZoZftVOOJnNPW9JmFi0kxZOEUb12vJw/Qb6+RFypHLHmgjlcqGzxRBTC10HmO2nrI1Fqx6ukiRileDQR19bCkYlx0D8w6k3eK4VTP8nd1N0zElvNPWWYmWOnc3HowheP0d7jo8VYYS/IGg+NKpcva/cmCSG6Ub1SOGrzjvbJr7lSOH96ojuWn1N945LzGd1njE3V/kOEHzBakBXX6tiFVj5n2tF+qx3tU74ZDpozGRwctde5wSyY1zTpqL7Enzb3xLLASpy7cgYTtdljQ5TCf5T2nqRBC9Hn88eO6LTl7ZITWr0zUknzBIfq6hsb6syC+c2mrbWyW+fJHX2x5e2Vxlm9YjoXLns8EqXw19Pek6N8/tzZjbH+DEfZ779yeYeX40f6tTFoRV+alNWq2foK75rdewbNzphW0+rBz0RtZqnawdUIf51BIRXdcBrpx40Wa730DCt+KyuqefyLXrn6OTMavUlZje4rRZO0m7b0xPazK5XDitpMMuocHJnwuwwLsCoirkncsaiEU+J/yell4ueRXZHoF85vqjh9Uy77dRsPxPbzk8rJNE84B0cmfPEw7V4ZGuUnQfpHiL+U6kH8B1GJpVI31Yq+XPZxLK4qvVle9uq5XMzs8lAt/7gQxzdF+skQ/8teNN37VVVFea3q0eeW6DXBraobpW6qEb2Q5Ddt7YlN9kIlmFTlZJqaBtvVJvnup939oXLNgcFRG8kyq0b6igPdw94EY+f+Ia/0sC7jCX9JXjl5yT2IvZAk+fUbu82BnuHYPpPSOFpkBZnmvlr+cd1oBZuxbNp1xB/puJy9Nbwh5HY0uXvPQOKkP5bn9w6a52w83znoSTEr8tcDV5Wqba313mIpP5OwSZe9Kojeffkx3GQZV4iN2Tb2lf/h0gXhj/D1DVX8fzrXoHJUoz9/TpN5oWswVjlMhUo6lfZpbi6Ynt5h09s3Ynr7R7yjHevrU3R3jBQnYCX25iZVTQUn+RLK2WsVbVwLq4RSOJeTt88DG8bK3i+1vMv+HuFXJ/1SuWZSpd/ZNWT27hvy6s01Ei5tHSCpKUqpKe35XkjQO15J8Pq5Jfj21oI3mq8P6WeMe4K2hPL2lGDmgrW1foFahX8l16A6kir9ctmPN5IsnxCU/Put/Ie8MsZR7y1AD4CgR9HjIbFL8Po5VVnT3GQjZMEf9oq7f9j8aXN37LJXvT15+9zw+ziFfzftX7v0NRLd0zmYeNlPlEpoaT5SxNprpm9gxMv99/SOeA8AvRFIjvX1lT8M9BCR1FXhVErN6IGidNP09kLV1TS1ohW0cS6qKiHRs8d9rrgrTuFvVN+3MZ/rUD2SmVIje14YNCMxnmbiV/YTISmXql/ErAnW/wyrHHKcvLeEnuSyQu2NE9d2CeVokpZdMHOFXFvzxpW1Jv5+Y+ONXIvaaGspmAZ7A2ukH0cFT1Cy94O+V1wj9Grwtjje3BPbRmhj36w0SUu9fa74TRBfpNYecxfXIRi04ZoqeLyDTDIu+7ShfP196/YnRvZXXDqfSdr8EYhra+01v+A6BIfSGdpls+tAwZNL2CkeZD8123b1x3bo+HhcdPYsL50DuePXSRC+DjXXZj4ncz2CQ0fmaSQXZooH2U9O/8CIl8JJUhXVmvPneMdZQu7YYWo49OSwQWUAX+NnXI/gUYrnmLlNgSz7R/b+0GHjDz56IFGy17YJyD633B5YFiGAr/FTrkd4KFd7zNzmwI5NRPYTU1xI1e0dNh53fX05Ev1F58ziAuWXXwb1hardS6ecVhsv2OAE7ZDpOjBcU24f2Y+P5K5RfZJy9eWyX0P5ZZ7Ra+Y8U9y7bFyi2EunnF5TLBm6mGsTLsrtq26/mr14kP34aBHVk9uTNaJH9lDGvZPJ3i9BJYh/hvCjobQXj1I9WqylFa3I3j8qtdTe9XFueobsoQJ+EuQXCyKlI04xAc0igz8kLKV5JhI/sj9S9Nt29SWiph7ZQyXdwUxxaHnUKR2hJb8653Yx1ydaivvZNHni3989bHr6hpH9OCh1s/v5gUSLHtnDGJ6cSvZ+CbLm7z9s/B3XKE7xF8zQcIMntS1P9XnCV3lnXlFefvfzg2bXs/2JTd0ge5iE7wX9BRsC/uEQfszokBJtV/ybtZ2e5LQqc+G8ZtPelp9hvsord1rJa44jiZOx46E6e0ovIWzhB5XD976Wje02juU6xYfSFrf9cPcRI1qN/hdY8R81q8HbkjlraGXs8y8MpWY0Xw4raGEcnrJxvI0pBR1HDt+4H+y7Nq7jWiVL9kJ/pgVFT+4obsk8b05xFW+aR/4ayevc3b2dyT4yciL0ENbeOMgexuG7lcjedwYg4K/3TYSfPNmPRXI80NN7UDoq8VTM7KhP9Ohfo/jO/cXFZ15lUspG8mNlr10v2QgNJnFp4ASZ0imhDdWo1kmo7CsRUXtrvR351x98A2ioj37iV7l3jeD1cJLcu3uHUy34ciR57WfPFscwAap4XFLpX44rpVPiGzb+iWuWPtmL0kHl2qlze6mTWOHrAaCHgd4AvIog9yYwo6P6/fs1Yu/rH/XkLrEPu1+7baRlstUvOpZQJ1VxeAlM4dBQCGOEv8wEcBQXRC/7IJhs1FoU/Ehur5cOHOcMWqgALWTdmJYRvn5Q7f9wFtctX7IXSV/YFAcazWtUr9E9wBT83o/s/RJWEvHLCD9/socjIV8PVbgzNMJI6YjpNp62wZAG2ecWFlOBT3psHGOjy88/8pPSCWvmSD/w97l+yD6PKIVzmR3VI3vwyff9yt4vYb5n3mTjCq4hss8TJyxo8WRPFQ5UwRfC/gZhCv8eU9zpbTnXEdnnYVSvKhylcQCqQK78bZqFLz5v43NcS2Sf9VH9mgvmMDELtXBTFN8krEnbEh029K/ZLATZM6oHGJ8DNjT1ur+afxx3HX45+gAqM3o/1xTZZwnV1GtSllE9BMCXq5V90kb4QvvqaCEBs1jIPvVI8ErfKI0DEAC6ybU7weZqv0CSRvjGfZAf2Xgd1xbZpxWlb1Yt72BrBAiaH9Uie79E9T56I8JH9mlF+9Vr33pKLSEkN0ZGVMK/08b9NlZyfZF9WqD6BkLmAefGzAlffMzGt7nGyD4Noj931Qzy9BA2/yfqbxil8HUgr3JVHI6C7BE95J3NJoRDypMk/BH3RPsi1xrZI3pgdG8iv/GjKMssRwd46gjE45E9so8bTcauWNaO6CFqdJicjjAcCOKLJa0ssxx9wH8xOd9uAdnHhyptViybZlav6GAyFuLiX4KSfdJH+KVRvvJXxyF7iAodRLJ6eYdZemIb5ZUQJ0/ZODlI4Sd5hF8a5X/UFDdWQ/YQ6mhegpfoJXyABPDPcY3u4xrhi0YbG9yTLjds3NJj1m/s9n6F8NA+N0sXtXo5eoAEscUUDygPVPh+RvhxCV+81cZtebzqOuhb0l9n5a9RPwQneVI2kGDebuNrQX/RtAhfd+UfbZyR5x6A/JE85IJHbJxpQijFTIvwxSWmuHkQWJTb32Tlv+3pfu9Xcv2Hozy8SiiPX9DsyR4gRayx8eMwvnCahC9+aeNC+sORaMS/bVef2b6r3/s1bw8AlU2esLDFnHBMs/crZZSQUn5l45VhffG0CV+vOQ8a9suv+AGwe8+g9/sspYCUkpk/p8kbvZdG8qRpIANolKZNIx9KgvCTMGRSHv8rNt5J35gciXBseaEeAPu6hkzn/iHvTUC/al4gyUjmM6Y3mBnT6r2R+0w7cmf0DhnlK2HK3i9JGOGLo03xVCwOBw3wbaBvYMRs29nn/fez9q2glBLSQyLskXrpAdXcVFcUuhW8/pxRO+QInVWrMsydYX6TtI3wxTM2brDxcfpIcG8DpdF0JQ+GCf+fe0iUpD0ejNABxuWGsGWf1hG+0GKsde6JCACQZh6zscLGYNjfyM8IP0nv12qYD9BPACADfCAK2fslaQnVX9j4Fn0FAFLMt5zLEkcSZ9Cut9FJnwGAFLLPOSyRJFH4T9v4B/oNAKSQDzmHIXwffMHGvfQdAEgR9zp3JZakCl+1gO+y0UcfAoAU0O+clej9T5K8CkZlTf+TfgQAKeAG56xEk/Rlj1qI9QB9CQASjBz1sTT8oEkXvjaFeYchtQMAyaTPOWooDT9sGjY20cEB/0i/AoAE8o/OUakgLTtZ3WjjDvoWACSIO5ybUkNahK+Zb22fzIIsAEgCnc5JqTqVKE171W6zcQ39DAASwDXOSakibZuTa4+KW+hrABAjXzQp3fMrjadRaBe6DfQ5AIgBuee6tP7waRR+j403ul8BAHBPhoUvVAb1XvofAETIe02KSjCzJHzxVRs30wcBIAJuds5JNWk/UVr5fLZeAIAwecBk5DS+tAtfy5r/i43n6JMAEAJyy381GdnepZCBz/CUjctsDNA3ASBABpxbdmTlAxUy8jnusvG39E8ACJAPOrdkhkKGPstnbXyePgoAASCXfCZrH6qQsc/zfhu301cBoAZ+6VySObIm/GEbl9tYT58FgCqQOy5zLkH4KWCfKc6qU7kDAH6QM17vHJJJChn9XE/YuDjLFw4AAh8oXmJjc5Y/ZCHDn+1h97SmXBMAJmPAuWJt1j9oIeOf79c23mVjlD4NAOMw6hzx6zx82EIOPuPXbVxPvwaAcbjeOSIXFHLyOT9l4wb6NgCUcYNzQ24o5OizftjG/6WPA4BzwYfz9qELOfu8OqnmC/R1gFxzs0nxqVUIv3I0QaNDDL5EnwfIJbr3rzE5LeQo5PAz60K/x8ZX6PsAueIr7t7PbdVeIaefW8umr7RxK/cAQC641d3zw3luhEKOP7su/FWGnD5A1vmCu9eH894QhZx//lJOn+odgGzyaXePs/gS4R+Uvs6r/F80BUCm0D19LbJH+OPxT6ZYqkXnAEj/IO56d08Dwp8Qrbp7p41BmgIglQy6e/hGmgLhV4JKt9bYOEBTAKQK3bOXGkquEb5Pfm7jz2w8Q1MApIJn3D37M5oC4VfDgzbOtvEoTQGQaB519+qDNAXCr4UtNs6x8QuaAiCR/MLdo1toCoQfBDr67LU2bqIpABLFTe7e5ChThB8oQ6a4eONvDBU8AHGje/B97p4cojkQflh8zsaFNp6lKQBiQffeK218lqZA+FFwt42VNu6jKQAi5UF3791FUyD8KNlh4zxTPEgBAMJH99o57t4DhB85fTautvE2Gz00B0Ao6N76K3ev9dEcCD9ubrPxMhsbaAqAQNng7q2v0hQIP0k8Yoq5xVtoCoBAuMXdU4/QFAg/qa+eOmThL2100hwAVdHp7qGrDKlShJ8Cvm3jRTbuoCkAfHGHu3e+TVMg/DSxzRRrhT9omGgCmIo+d6+80t07gPBTx4iNTxhq9gEm434bq9y9MkJzIPy0o538zrLxtza6aQ4Aj243qn+5YWIW4WeMYRuftLHcFPfaB8gzP3f3wifcvQEIP5NoC9dX23i7jT00B+SMPa7vv9qwnTHCzxFfs3GqjW/QFJATvuH6/NdoCoSfR56z8VYbrzKs0oXsssH18be6Pg8IP9foxB7VHv83w8HpkB3Ul//O9W1OjEP4UMaAjX+zsdTGlwzlaZBeRlwfVl/+uOvbgPBhHJ62caUp1u7fSXNAyrjT9d0rXV8GhA8V8JCN8238hY31NAckHPXR17o++xDNgfChOn5qijlQ7bn/BM0BCeMJ1zfVR/+T5kD4UDvKiWrP/dNM8dBmTvyBuNnh+uJprm8y54TwIWA0+XWTjcXuZttOk0DEbHd9b7Hri0zIInyISPxLbLzHxkaaBEJms+trSxA9wof4xP9F91r9Oht30yQQMA/YeKONZa6vIXqEDzGj/OkPbZxnitvM/ruNIZoFauhPPzLFvelVYvkdQ44e4UMi0d7ibzbFHOuNNvbTJFAh6iufsXGKjUtt/IomyR51o6OjU/6lTbtoqJTS4R4AV7nRGsBYdDiPDgzX5mZs7ZFCli5A+HAkZ9p4tynWTc+gOXLNPlPctVKi/yPNgfARfnZptXG5k/+5NEeuuNtJXnn5XpoD4SP8fKF8rVI+bzHFvD9kD5VUKl3zTRuP0RwIH+GDWO3E/wYbx9IcqeYpG993ov8DzYHwET5M2CdsvMzG6538T6JJUsGTNr7nRC/Jj9IkCB/hg19Ot3GJi7Ns1NMkiUCHf99r48cuHqVJED7ChyCZY+OisjiOJokUpWp0etTtLvbQJIDwISo06XuhjXNcHE+TBIo2K7vHhRZCMekKCB8Sw0JT3OJBqZ+zTXGfdFJAlaEUzcM2fmeKqZq7bOykWQDhQ1rQSl9NAL/Uxgoby91bQWPO22XQjdZ1UtQ6U9ykTBOtbIUBCB8yRZONU538FVoBfIZ7O8giGqU/YoorWte72GDYeRJiEH4DzQURM+DkN3ZJv1YAn2hjUVmcVPb7OQn9PJo43eriybLfK7YYVrRCgkD4kBQkxj+5GI9p7i1gro35No62cZSNmWOiwz08WtzvS318ujlyPkF58y73e20prZRKn/tZ9PvOMfG8jWds7LbxnBu9s+EYIHyAgJFYNxpO+AKomopy+AAAkH44AAUAAOEDAADCBwAAhA8AAAgfAAAQPgAAIHwAAED4AACA8AEAAOEDAOST/y/AAIYJhszBd/XvAAAAAElFTkSuQmCC", - "loginImgUrl": "data:image/png;base64,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" - }, - "componentName": "Block", - "css": ".home-content {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n text-align: center;\r\n height: calc(100vh - 262px);\r\n \r\n}\r\n.home-content .btn {\r\n margin-top: 24px;\r\n \r\n }\r\n .home-content .btn button {\r\n border: none;\r\n border-radius: 30px;\r\n background: #5e7ce0;\r\n \r\n font-size: 14px;\r\n color: #fff;\r\n \r\n cursor: pointer;\r\n }\r\n\r\n .home-content .text {\r\n font-size: 18px;\r\n }\r\n\r\n .home-content .account {\r\n margin-top: 16px;\r\n \r\n \r\n }\r\n\r\n .home-content .account .sub-text {\r\n color: #575d6c;\r\n }\r\n .home-content .account .login {\r\n color: #1890ff;\r\n cursor: pointer;\r\n }\r\n .home-content .logo img{\r\n border-radius: 50%;\r\n overflow: hidden;\r\n }", - "props": {}, - "children": [ - { - "componentName": "div", - "props": { - "className": "home", - "style": "height: 100vh; display: flex;" - }, - "id": "357534ab", - "children": [ - { - "componentName": "TinyRow", - "props": { - "align": "middle", - "flex": true, - "style": "" - }, - "children": [ - { - "componentName": "TinyCol", - "props": { - "span": 6, - "style": "text-align: center; display: flex; justify-content: center;" - }, - "id": "f01b66ea", - "children": [ - { - "componentName": "div", - "props": { - "style": "width: 90%; height: 50%;" - }, - "id": "8197d016", - "children": [ - { - "componentName": "Img", - "props": { - "style": "width: 100%; height: 100%;", - "src": { - "type": "JSExpression", - "value": "this.state.loginImgUrl" - } - }, - "id": "471e30f3" - } - ] - } - ] - }, - { - "componentName": "TinyCol", - "props": { - "span": "6", - "style": "text-align: center;" - }, - "id": "781d5b46", - "children": [ - { - "componentName": "div", - "props": { - "className": "home-content", - "style": "font-size: 14px;" - }, - "id": "08638b8a", - "children": [ - { - "componentName": "div", - "props": { - "className": "text" - }, - "id": "18712ee2", - "children": [ - { - "componentName": "div", - "props": { - "style": "font-size: 16px;" - }, - "id": "07e6794c", - "children": [ - { - "componentName": "div", - "props": { - "className": "logo" - }, - "id": "07cad264", - "children": [ - { - "componentName": "Img", - "props": { - "style": "width: 105px; height: 105px; border-radius: 100px;", - "src": { - "type": "JSExpression", - "value": "this.state.logoUrl" - } - }, - "id": "f4489e27" - } - ] - }, - { - "componentName": "Text", - "props": { - "text": "TinyLowCode 低代码平台", - "style": "display: block; font-size: 28px; margin-top: 12px; margin-bottom: 12px; font-weight: bold;", - "ref": "", - "className": "title" - }, - "id": "e82108ce" - }, - { - "componentName": "Text", - "props": { - "text": "致力于通过友好的用户交互提升业务的开发效率", - "style": "display: block; margin-bottom: 12px;" - }, - "id": "65a2f1ad" - }, - { - "componentName": "Text", - "props": { - "text": "欢迎一起来解锁~~", - "style": "margin-top: 12px;" - }, - "id": "bb879abb" - } - ] - }, - { - "componentName": "div", - "props": { - "className": "btn" - }, - "id": "44b2bcbd", - "children": [ - { - "componentName": "TinyButton", - "props": { - "text": "立即体验", - "round": true, - "type": "primary", - "style": "margin-top: 40px;" - }, - "id": "9580c5e7" - }, - { - "componentName": "div", - "props": { - "className": "account" - }, - "id": "6a8ffa3e", - "children": [ - { - "componentName": "div", - "props": { - "style": "font-size: 14px; margin-top: 4px;" - }, - "id": "bfc6eb6c", - "children": [ - { - "componentName": "Text", - "props": { - "text": "已有团队?", - "style": "color: #777777;" - }, - "id": "3d993264" - }, - { - "componentName": "Text", - "props": { - "text": "立即进入", - "style": "color: #5e7ce0;", - "onClick": { - "type": "JSExpression", - "value": "this.handleClick(event)" - } - }, - "id": "21390118" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ], - "id": "4545fea2" - } - ] - } - ], - "methods": { - "handleClick": { - "type": "JSFunction", - "value": "function (event) {this.emit('goto-home', event)\n}" - } - }, - "fileName": "PortalHome", - "meta": { - "id": 1722, - "parentId": "0", - "group": "staticPages", - "title": null, - "occupier": null, - "isHome": false, - "description": "", - "router": "/", - "rootElement": "div", - "creator": "开发者", - "gmt_create": "2022-06-08 03:25:51", - "gmt_modified": "2022-06-09 05:19:09" - }, - "id": 1722, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [] - } - ], - "events": { - "onGotoHome": { - "label": { - "zh_CN": "点击立即进入触发方法" - }, - "description": { - "zh_CN": "点击立即进入触发方法" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "", - "linked": { - "id": "21390118", - "componentName": "Text", - "event": "onClick" - } - } - }, - "slots": {} - }, - "dataSource": {}, - "i18n": {} - }, - "created_at": "2022-06-13T07:56:51.000Z", - "updated_at": "2023-01-13T08:12:51.000Z", - "assets": { - "material": [], - "scripts": [ - "http://localhost:9090/assets/js/989web-components.es.js", - "http://localhost:9090/assets/js/989web-components.umd.js" - ], - "styles": [] - }, - "createdBy": 86, - "description": null, - "tags": "", - "current_history": 1655, - "screenshot": "", - "path": "common/components/home", - "occupier": null, - "isOfficial": true, - "public": 1, - "isDefault": null, - "tiny_reserved": false, - "author": null, - "name_cn": null, - "created_app": null, - "content_blocks": null, - "current_version": "x" - }, - { - "id": 1005, - "label": "PortalBlock", - "framework": "Vue", - "content": { - "state": {}, - "methods": {}, - "componentName": "Block", - "fileName": "PortalBlock", - "css": "", - "props": {}, - "children": [ - { - "componentName": "div", - "props": { - "style": "font-size: 18px; height: 40px; border-bottom: 1px solid rgb(223, 225, 230); margin-top: 20px;" - }, - "id": "d38cea57", - "children": [ - { - "componentName": "Icon", - "props": { - "name": "IconChevronLeft" - }, - "id": "86c6e6b0" - }, - { - "componentName": "Text", - "props": { - "text": "编辑物料资产包 | ", - "style": "margin-left: 10px; font-weight: bold;" - }, - "id": "38d9fbc8" - }, - { - "componentName": "Text", - "props": { - "text": { - "type": "JSExpression", - "value": "this.props.blockName" - }, - "style": "margin-left: 10px; font-weight: bold;" - }, - "id": "6cd76396" - } - ] - } - ], - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "blockName", - "type": "String", - "defaultValue": "MT0526-React 1.0", - "label": { - "text": { - "zh_CN": "区块名称" - } - }, - "cols": 12, - "rules": [], - "handle": { - "getter": "", - "setter": "" - }, - "hidden": false, - "required": true, - "readOnly": false, - "disabled": false, - "widget": { - "component": "MetaInput", - "props": { - "modelValue": "MT0526-React 1.0" - } - } - } - ] - } - ], - "events": {}, - "slots": {} - }, - "dataSource": {} - }, - "created_at": "2022-06-28T08:59:54.000Z", - "updated_at": "2023-01-13T08:20:09.000Z", - "assets": { - "material": [], - "scripts": [ - "http://localhost:9090/assets/js/1005web-components.es.js", - "http://localhost:9090/assets/js/1005web-components.umd.js" - ], - "styles": [] - }, - "createdBy": { - "id": 86, - "username": "开发者", - "resetPasswordToken": "developer" - }, - "description": null, - "tags": null, - "current_history": 1665, - "screenshot": "", - "path": "portal", - "occupier": { - "id": 86, - "username": "开发者", - "resetPasswordToken": "developer" - }, - "isOfficial": null, - "public": 1, - "isDefault": null, - "tiny_reserved": false, - "author": null, - "name_cn": null, - "created_app": null, - "content_blocks": null, - "categories": [], - "public_scope_tenants": [], - "histories_length": 1 - } - ] - } - ], - "locale": "zh-cn" -} diff --git a/mockServer/src/mock/get/material-center/blocks.json b/mockServer/src/mock/get/material-center/blocks.json deleted file mode 100644 index af51e73245..0000000000 --- a/mockServer/src/mock/get/material-center/blocks.json +++ /dev/null @@ -1,441 +0,0 @@ -{ - "data": [ - { - "id": 989, - "label": "PortalHome", - "framework": "Vue", - "content": { - "state": { - "logoUrl": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXwAAAF8CAYAAADM5wDKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI5OEVGOTU4RTg2NDExRUM5MDhERjU4NjRDOUUxQTUwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjI5OEVGOTU5RTg2NDExRUM5MDhERjU4NjRDOUUxQTUwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Mjk4RUY5NTZFODY0MTFFQzkwOERGNTg2NEM5RTFBNTAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Mjk4RUY5NTdFODY0MTFFQzkwOERGNTg2NEM5RTFBNTAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4dZkpJAAAvNElEQVR42uyd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", - "loginImgUrl": "data:image/png;base64,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" - }, - "componentName": "Block", - "css": ".home-content {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n text-align: center;\r\n height: calc(100vh - 262px);\r\n \r\n}\r\n.home-content .btn {\r\n margin-top: 24px;\r\n \r\n }\r\n .home-content .btn button {\r\n border: none;\r\n border-radius: 30px;\r\n background: #5e7ce0;\r\n \r\n font-size: 14px;\r\n color: #fff;\r\n \r\n cursor: pointer;\r\n }\r\n\r\n .home-content .text {\r\n font-size: 18px;\r\n }\r\n\r\n .home-content .account {\r\n margin-top: 16px;\r\n \r\n \r\n }\r\n\r\n .home-content .account .sub-text {\r\n color: #575d6c;\r\n }\r\n .home-content .account .login {\r\n color: #1890ff;\r\n cursor: pointer;\r\n }\r\n .home-content .logo img{\r\n border-radius: 50%;\r\n overflow: hidden;\r\n }", - "props": {}, - "children": [ - { - "componentName": "div", - "props": { - "className": "home", - "style": "height: 100vh; display: flex;" - }, - "id": "357534ab", - "children": [ - { - "componentName": "TinyRow", - "props": { - "align": "middle", - "flex": true, - "style": "" - }, - "children": [ - { - "componentName": "TinyCol", - "props": { - "span": 6, - "style": "text-align: center; display: flex; justify-content: center;" - }, - "id": "f01b66ea", - "children": [ - { - "componentName": "div", - "props": { - "style": "width: 90%; height: 50%;" - }, - "id": "8197d016", - "children": [ - { - "componentName": "Img", - "props": { - "style": "width: 100%; height: 100%;", - "src": { - "type": "JSExpression", - "value": "this.state.loginImgUrl" - } - }, - "id": "471e30f3" - } - ] - } - ] - }, - { - "componentName": "TinyCol", - "props": { - "span": "6", - "style": "text-align: center;" - }, - "id": "781d5b46", - "children": [ - { - "componentName": "div", - "props": { - "className": "home-content", - "style": "font-size: 14px;" - }, - "id": "08638b8a", - "children": [ - { - "componentName": "div", - "props": { - "className": "text" - }, - "id": "18712ee2", - "children": [ - { - "componentName": "div", - "props": { - "style": "font-size: 16px;" - }, - "id": "07e6794c", - "children": [ - { - "componentName": "div", - "props": { - "className": "logo" - }, - "id": "07cad264", - "children": [ - { - "componentName": "Img", - "props": { - "style": "width: 105px; height: 105px; border-radius: 100px;", - "src": { - "type": "JSExpression", - "value": "this.state.logoUrl" - } - }, - "id": "f4489e27" - } - ] - }, - { - "componentName": "Text", - "props": { - "text": "TinyLowCode 低代码平台", - "style": "display: block; font-size: 28px; margin-top: 12px; margin-bottom: 12px; font-weight: bold;", - "ref": "", - "className": "title" - }, - "id": "e82108ce" - }, - { - "componentName": "Text", - "props": { - "text": "致力于通过友好的用户交互提升业务的开发效率", - "style": "display: block; margin-bottom: 12px;" - }, - "id": "65a2f1ad" - }, - { - "componentName": "Text", - "props": { - "text": "欢迎一起来解锁~~", - "style": "margin-top: 12px;" - }, - "id": "bb879abb" - } - ] - }, - { - "componentName": "div", - "props": { - "className": "btn" - }, - "id": "44b2bcbd", - "children": [ - { - "componentName": "TinyButton", - "props": { - "text": "立即体验", - "round": true, - "type": "primary", - "style": "margin-top: 40px;" - }, - "id": "9580c5e7" - }, - { - "componentName": "div", - "props": { - "className": "account" - }, - "id": "6a8ffa3e", - "children": [ - { - "componentName": "div", - "props": { - "style": "font-size: 14px; margin-top: 4px;" - }, - "id": "bfc6eb6c", - "children": [ - { - "componentName": "Text", - "props": { - "text": "已有团队?", - "style": "color: #777777;" - }, - "id": "3d993264" - }, - { - "componentName": "Text", - "props": { - "text": "立即进入", - "style": "color: #5e7ce0;", - "onClick": { - "type": "JSExpression", - "value": "this.handleClick(event)" - } - }, - "id": "21390118" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ], - "id": "4545fea2" - } - ] - } - ], - "methods": { - "handleClick": { - "type": "JSFunction", - "value": "function (event) {this.emit('goto-home', event)\n}" - } - }, - "fileName": "PortalHome", - "meta": { - "id": 1722, - "parentId": "0", - "group": "staticPages", - "title": null, - "occupier": null, - "isHome": false, - "description": "", - "router": "/", - "rootElement": "div", - "creator": "开发者", - "gmt_create": "2022-06-08 03:25:51", - "gmt_modified": "2022-06-09 05:19:09" - }, - "id": 1722, - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [] - } - ], - "events": { - "onGotoHome": { - "label": { - "zh_CN": "点击立即进入触发方法" - }, - "description": { - "zh_CN": "点击立即进入触发方法" - }, - "type": "event", - "functionInfo": { - "params": [], - "returns": {} - }, - "defaultValue": "", - "linked": { - "id": "21390118", - "componentName": "Text", - "event": "onClick" - } - } - }, - "slots": {} - }, - "dataSource": {}, - "i18n": {} - }, - "created_at": "2022-06-13T07:56:51.000Z", - "updated_at": "2023-01-13T08:12:51.000Z", - "assets": { - "material": [], - "scripts": [ - "http://localhost:9090/assets/js/989web-components.es.js", - "http://localhost:9090/assets/js/989web-components.umd.js" - ], - "styles": [] - }, - "createdBy": 86, - "description": null, - "tags": "", - "current_history": 1655, - "screenshot": "", - "path": "common/components/home", - "occupier": null, - "isOfficial": true, - "public": 1, - "isDefault": null, - "tiny_reserved": false, - "author": null, - "name_cn": null, - "created_app": null, - "content_blocks": null, - "current_version": "x", - "is_published": true - }, - { - "id": 1005, - "label": "PortalBlock", - "framework": "Vue", - "content": { - "state": {}, - "methods": {}, - "componentName": "Block", - "fileName": "PortalBlock", - "css": "", - "props": {}, - "children": [ - { - "componentName": "div", - "props": { - "style": "font-size: 18px; height: 40px; border-bottom: 1px solid rgb(223, 225, 230); margin-top: 20px;" - }, - "id": "d38cea57", - "children": [ - { - "componentName": "Icon", - "props": { - "name": "IconChevronLeft" - }, - "id": "86c6e6b0" - }, - { - "componentName": "Text", - "props": { - "text": "编辑物料资产包 | ", - "style": "margin-left: 10px; font-weight: bold;" - }, - "id": "38d9fbc8" - }, - { - "componentName": "Text", - "props": { - "text": { - "type": "JSExpression", - "value": "this.props.blockName" - }, - "style": "margin-left: 10px; font-weight: bold;" - }, - "id": "6cd76396" - } - ] - } - ], - "schema": { - "properties": [ - { - "label": { - "zh_CN": "基础信息" - }, - "description": { - "zh_CN": "基础信息" - }, - "collapse": { - "number": 6, - "text": { - "zh_CN": "显示更多" - } - }, - "content": [ - { - "property": "blockName", - "type": "String", - "defaultValue": "MT0526-React 1.0", - "label": { - "text": { - "zh_CN": "区块名称" - } - }, - "cols": 12, - "rules": [], - "handle": { - "getter": "", - "setter": "" - }, - "hidden": false, - "required": true, - "readOnly": false, - "disabled": false, - "widget": { - "component": "MetaInput", - "props": { - "modelValue": "MT0526-React 1.0" - } - } - } - ] - } - ], - "events": {}, - "slots": {} - }, - "dataSource": {} - }, - "created_at": "2022-06-28T08:59:54.000Z", - "updated_at": "2023-01-13T08:20:09.000Z", - "assets": { - "material": [], - "scripts": [ - "http://localhost:9090/assets/js/1005web-components.es.js", - "http://localhost:9090/assets/js/1005web-components.umd.js" - ], - "styles": [] - }, - "createdBy": { - "id": 86, - "username": "开发者", - "resetPasswordToken": "developer" - }, - "description": null, - "tags": null, - "current_history": 1665, - "screenshot": "", - "path": "portal", - "occupier": { - "id": 86, - "username": "开发者", - "resetPasswordToken": "developer" - }, - "isOfficial": null, - "public": 1, - "isDefault": null, - "tiny_reserved": false, - "author": null, - "name_cn": null, - "created_app": null, - "content_blocks": null, - "categories": [], - "public_scope_tenants": [], - "histories_length": 1, - "is_published": true - } - ], - "locale": "zh-cn" -} diff --git a/mockServer/src/routes/main-routes.js b/mockServer/src/routes/main-routes.js index e6f6ef4499..06280c494c 100644 --- a/mockServer/src/routes/main-routes.js +++ b/mockServer/src/routes/main-routes.js @@ -1,31 +1,24 @@ /** -* Copyright (c) 2023 - present TinyEngine Authors. -* Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. -* -* Use of this source code is governed by an MIT-style license. -* -* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, -* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR -* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. -* -*/ + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ -import KoaRouter from 'koa-router' +import fs from 'fs-extra' import * as glob from 'glob' +import KoaRouter from 'koa-router' import path from 'path' -import fs from 'fs-extra' -import Schema2CodeServcice from '../services/schema2code' -import PageService from '../services/pages' -import AppService from '../services/app' -import BlockService from '../services/block' -import SourceService from '../services/source' +import MockService from '../services/mockService' +import { getResponseData } from '../tool/Common' const router = new KoaRouter() -const schema2codeService = new Schema2CodeServcice() -export const pageService = new PageService() -export const appService = new AppService() -export const blockService = new BlockService() -export const sourceService = new SourceService() +export const mockService = new MockService() const getJsonPathData = (jpath, method = 'get') => { const usefulPath = jpath.split(`${method}${path.sep}`)[1] const apipath = usefulPath.split(path.sep) @@ -63,50 +56,172 @@ glob.globSync(`${mockPath}/post/**/*.json`).forEach((jpath) => { }) router.get('/app-center/api/apps/canvas/lock', async (ctx) => { - ctx.body = await appService.lock(ctx.request.query) + ctx.body = await mockService.appService.lock(ctx.request.query) }) router.post('/app-center/api/schema2code', (ctx) => { const { pageInfo } = ctx.request.body - ctx.body = schema2codeService.schema2code(pageInfo) + ctx.body = mockService.schema2codeService.schema2code(pageInfo) }) router.get('/app-center/api/preview/metadata', (ctx) => { - ctx.body = appService.getAppPreviewMetaData() + ctx.body = mockService.appService.getAppPreviewMetaData() }) router.post('/app-center/api/pages/create', async (ctx) => { - ctx.body = await pageService.create(ctx.request.body) + ctx.body = await mockService.pageService.create(ctx.request.body) }) router.post('/app-center/api/pages/update/:id', async (ctx) => { const { id } = ctx.params const { body } = ctx.request - ctx.body = await pageService.update(id, body) + ctx.body = await mockService.pageService.update(id, body) }) router.get('/app-center/api/pages/list/:appId', async (ctx) => { const { appId } = ctx.params - ctx.body = await pageService.list(appId) + ctx.body = await mockService.pageService.list(appId) }) router.get('/app-center/api/pages/detail/:id', async (ctx) => { const { id } = ctx.params - ctx.body = await pageService.detail(id) + ctx.body = await mockService.pageService.detail(id) }) router.get('/app-center/api/pages/delete/:id', async (ctx) => { const { id } = ctx.params - ctx.body = await pageService.delete(id) + ctx.body = await mockService.pageService.delete(id) +}) + +router.get('/material-center/api/block/detail/:id', async (ctx) => { + const { id } = ctx.params + ctx.body = await mockService.blockService.detail(id) +}) + +router.get('/material-center/api/blocks', async (ctx) => { + const { appId } = ctx.params + ctx.body = await mockService.blockService.list(appId) +}) + +router.post('/material-center/api/block/create', async (ctx) => { + const result = mockService.blockService.create(ctx.request.body) + const categoriesId = ctx.request.body.categories[0] + const _id = result.id + await mockService.blockCategoryService.update(categoriesId, { _id }) + ctx.body = getResponseData(result) +}) + +router.post('/material-center/api/block/update/:id', async (ctx) => { + const { id } = ctx.params + const { body } = ctx.request + ctx.body = await mockService.blockService.update(id, body) }) -router.get('/material-center/api/block', (ctx)=> { - ctx.body = blockService.find(ctx.request.query) +router.get('/material-center/api/block/delete/:id', async (ctx) => { + const { id } = ctx.params + ctx.body = await mockService.blockService.delete(id) +}) + +router.post('/material-center/api/block-groups/create', async (ctx) => { + ctx.body = await mockService.blockGroupService.create(ctx.request.body) +}) + +router.post('/material-center/api/block-groups/update/:id', async (ctx) => { + const { id } = ctx.params + const { body } = ctx.request + ctx.body = await mockService.blockGroupService.update(id, body) +}) + +router.get('/material-center/api/block-groups/delete/:id', async (ctx) => { + const { id } = ctx.params + ctx.body = await mockService.blockGroupService.delete(id) +}) + +router.get('/material-center/api/block-groups', async (ctx) => { + const result = await mockService.blockGroupService.find(ctx.query) + let blockGroup + if (result.data.length === 0) { + ctx.body = result + } else if (result.data.length > 1) { + blockGroup = await Promise.all( + result.data.map(async (group) => { + group.blocks = await Promise.all( + group.blocks.map(async (block) => { + const blockData = await mockService.blockService.detail(block.id) + return blockData + }) + ) + return group + }) + ) + ctx.body = getResponseData(blockGroup) + } else if (result.data.length === 1) { + blockGroup = result.data[0] + const blocks = await Promise.all( + blockGroup.blocks.map(async (item) => { + const blockData = await mockService.blockService.detail(item) + return blockData + }) + ) + + blockGroup.blocks = blocks + ctx.body = getResponseData([blockGroup]) + } +}) + +router.post('/material-center/api/block-categories', async (ctx) => { + ctx.body = await mockService.blockCategoryService.create(ctx.request.body) +}) + +router.put('/material-center/api/block-categories/:id', async (ctx) => { + const { id } = ctx.params + const { body } = ctx.request + ctx.body = await mockService.blockCategoryService.update(id, body) +}) + +router.delete('/material-center/api/block-categories/:id', async (ctx) => { + const { id } = ctx.params + ctx.body = await mockService.blockCategoryService.delete(id) +}) + +router.get('/material-center/api/block-categories', async (ctx) => { + const result = await mockService.blockCategoryService.find(ctx.query) + const blockCategories = await Promise.all( + result.data.map(async (group) => { + const blocks = await Promise.all( + group.blocks.map(async (block) => { + const blockData = await mockService.blockService.detail(block) + return blockData + }) + ) + group.blocks = blocks + return group + }) + ) + ctx.body = getResponseData(blockCategories) }) router.get('/app-center/api/sources/detail/:id', async (ctx) => { const { id } = ctx.params - ctx.body = await sourceService.detail(id) + ctx.body = await mockService.sourceService.detail(id) +}) + +router.post('/material-center/api/block/deploy', async (ctx) => { + ctx.body = await mockService.blockBuildService.build(ctx.request.body) +}) + +router.get('/material-center/api/tasks/:id', async (ctx) => { + const { id } = ctx.params + ctx.body = await mockService.taskService.detail(id) +}) + +router.get('/block-history', async (ctx) => { + const { id } = ctx.params + ctx.body = await mockService.blockHistoryService.find(id) +}) + +router.post('block-history/create', async (ctx) => { + ctx.body = await mockService.blockHistoryService.create(ctx.request.body) }) export default router diff --git a/mockServer/src/services/app.js b/mockServer/src/services/app.js index 3bfd171593..33f4a4bf17 100644 --- a/mockServer/src/services/app.js +++ b/mockServer/src/services/app.js @@ -25,13 +25,13 @@ export default class AppService { // 获取应用预览数据 getAppPreviewMetaData() { - const appMetaData = require('./appinfo.json') + const appMetaData = require('../assets/json/appinfo.json') const { i18n: i18nEntries, source = [], extension = [], app } = appMetaData // 拼装数据源 const dataSource = { list: source, - dataHandler: app['data_handler'] + dataHandler: app.data_handler } // 拼装工具类 const utils = [] @@ -47,7 +47,7 @@ export default class AppService { const i18n = this.formatI18nEntrites(entriesData) return getResponseData({ dataSource, - globalState: app['global_state'], + globalState: app.global_state, utils, i18n }) diff --git a/mockServer/src/services/block.js b/mockServer/src/services/block.js index bde0266711..c8071fe106 100644 --- a/mockServer/src/services/block.js +++ b/mockServer/src/services/block.js @@ -1,20 +1,93 @@ /** -* Copyright (c) 2023 - present TinyEngine Authors. -* Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. -* -* Use of this source code is governed by an MIT-style license. -* -* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, -* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR -* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. -* -*/ - + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ +import path from 'path' +import DateStore from '@seald-io/nedb' import { getResponseData } from '../tool/Common' -import blocks from './blocks.json' export default class BlockService { - find({label}) { - const blockData = blocks[label] || {} - return getResponseData(blockData) + constructor() { + this.db = new DateStore({ + filename: path.resolve(__dirname, '../database/blocks.db'), + autoload: true + }) + + this.db.ensureIndex({ + fieldName: 'label', + unique: true + }) + + this.userInfo = { + id: 86, + username: '开发者', + email: 'developer@lowcode.com', + resetPasswordToken: 'developer', + confirmationToken: 'dfb2c162-351f-4f44-ad5f-8998', + is_admin: true + } + + this.blockModel = { + id: '', + label: '', + name_cn: '', + framework: [], + content: {}, + description: '', + path: '', + screenshot: '', + created_app: '', + tags: '', + categories: [], + occupier: { + id: 86, + username: '开发者', + resetPasswordToken: 'developer' + }, + isDefault: null, + isOfficial: null + } + } + + async create(params) { + const blockData = { ...this.blockModel, ...params } + const result = await this.db.insertAsync(blockData) + const { _id } = result + await this.db.updateAsync({ _id }, { $set: { id: _id } }) + result.id = result._id + return result + } + + async update(id, params) { + await this.db.updateAsync({ _id: id }, { $set: params }) + const result = await this.db.findOneAsync({ _id: id }) + return getResponseData(result) + } + + async detail(blockId) { + const result = await this.db.findOneAsync({ _id: blockId }) + return result + } + + async delete(blockId) { + const result = await this.db.findOneAsync({ _id: blockId }) + await this.db.removeAsync({ _id: blockId }) + return getResponseData(result) + } + + async list(appId) { + const result = await this.db.findAsync() + return getResponseData(result) + } + + async find(params) { + const result = await this.db.findAsync(params) + return result } } diff --git a/mockServer/src/services/blockCategory.js b/mockServer/src/services/blockCategory.js new file mode 100644 index 0000000000..9f3f8ad7df --- /dev/null +++ b/mockServer/src/services/blockCategory.js @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ +import path from 'path' +import DateStore from '@seald-io/nedb' +import { getResponseData } from '../tool/Common' +import appinfo from '../assets/json/appinfo.json' +export default class BlockCategoryService { + constructor() { + this.db = new DateStore({ + filename: path.resolve(__dirname, '../database/blockCategories.db'), + autoload: true + }) + + this.db.ensureIndex({ + fieldName: 'name', + unique: true + }) + + this.blockCategoriesModel = { + id: '', + app: '', + name: '', + desc: '', + blocks: [] + } + } + + async create(params) { + const blockCategoriesData = { ...this.blockCategoriesModel, ...params } + blockCategoriesData.app = appinfo.app + const result = await this.db.insertAsync(blockCategoriesData) + const { _id } = result + await this.db.updateAsync({ _id }, { $set: { id: _id } }) + result.id = result._id + return getResponseData(result) + } + + async update(id, params) { + if (params?._id) { + const categories = await this.db.findOneAsync({ _id: id }) + categories.blocks.push(params._id) + await this.db.updateAsync({ _id: id }, { $set: categories }) + return getResponseData(categories) + } + params.app = appinfo.app + await this.db.updateAsync({ _id: id }, { $set: params }) + + const result = await this.db.findOneAsync({ _id: id }) + return getResponseData(result) + } + + async find(params) { + const result = await this.db.findAsync() + return getResponseData(result) + } + + async delete(id) { + const result = await this.db.findOneAsync({ _id: id }) + await this.db.removeAsync({ _id: id }) + return getResponseData(result) + } + + async list(appId) { + const result = await this.db.findAsync() + return getResponseData(result) + } +} diff --git a/mockServer/src/services/blockGroup.js b/mockServer/src/services/blockGroup.js new file mode 100644 index 0000000000..8900fedbab --- /dev/null +++ b/mockServer/src/services/blockGroup.js @@ -0,0 +1,75 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ +import path from 'path' +import DateStore from '@seald-io/nedb' +import { getResponseData } from '../tool/Common' +import appinfo from '../assets/json/appinfo.json' +export default class BlockGroupService { + constructor() { + this.db = new DateStore({ + filename: path.resolve(__dirname, '../database/blockGroups.db'), + autoload: true + }) + + this.db.ensureIndex({ + fieldName: 'name', + unique: true + }) + + this.blockGroupModel = { + id: '', + app: '', + name: '', + desc: '', + blocks: [] + } + } + + async create(params) { + const blockGroupData = { ...this.blockGroupModel, ...params } + blockGroupData.app = appinfo.app + const result = await this.db.insertAsync(blockGroupData) + const { _id } = result + await this.db.updateAsync({ _id }, { $set: { id: _id } }) + result.id = result._id + return getResponseData(result) + } + + async update(id, params) { + params.app = appinfo.app + await this.db.updateAsync({ _id: id }, { $set: params }) + + const result = await this.db.findOneAsync({ _id: id }) + return getResponseData(result) + } + + async find(params) { + if (params?.app || !params?.id) { + const result = await this.db.findAsync() + return getResponseData(result) + } + const { id } = params + const blockGroup = await this.db.findOneAsync({ _id: id }) + return getResponseData([blockGroup]) + } + + async delete(blockGroupId) { + const result = await this.db.findOneAsync({ _id: blockGroupId }) + await this.db.removeAsync({ _id: blockGroupId }) + return getResponseData(result) + } + + async list(appId) { + const result = await this.db.findAsync() + return getResponseData(result) + } +} diff --git a/mockServer/src/services/blocks.json b/mockServer/src/services/blocks.json index df91f08fcf..e4cf1b8c39 100644 --- a/mockServer/src/services/blocks.json +++ b/mockServer/src/services/blocks.json @@ -382,7 +382,7 @@ "readOnly": false, "disabled": false, "widget": { - "component": "MetaInput", + "component": "InputConfigurator", "props": { "modelValue": "MT0526-React 1.0" } @@ -432,5 +432,5 @@ "categories": [], "public_scope_tenants": [], "histories_length": 1 - } -} \ No newline at end of file + } +} diff --git a/mockServer/src/services/mockService.js b/mockServer/src/services/mockService.js new file mode 100644 index 0000000000..5f05fd389b --- /dev/null +++ b/mockServer/src/services/mockService.js @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ +import PageService from './pages' +import AppService from './app' +import BlockService from './block' +import SourceService from './source' +import BlockGroupService from './blockGroup' +import BlockCategoryService from './blockCategory' +import Schema2CodeServcice from './schema2code' +export default class MockService { + schema2codeService + pageService + appService + blockService + sourceService + blockGroupService + blockCategoryService + + constructor() { + this.schema2codeService = new Schema2CodeServcice() + this.pageService = new PageService() + this.appService = new AppService() + this.blockService = new BlockService() + this.sourceService = new SourceService() + this.blockGroupService = new BlockGroupService() + this.blockCategoryService = new BlockCategoryService() + } +} diff --git a/mockServer/src/services/schema2code.js b/mockServer/src/services/schema2code.js index 160361da73..f4171e53fb 100644 --- a/mockServer/src/services/schema2code.js +++ b/mockServer/src/services/schema2code.js @@ -1,17 +1,17 @@ /** -* Copyright (c) 2023 - present TinyEngine Authors. -* Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. -* -* Use of this source code is governed by an MIT-style license. -* -* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, -* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR -* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. -* -*/ + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ import { pageService } from '../routes/main-routes' -import appInfo from './appinfo.json' +import appInfo from '../assets/json/appinfo.json' export default class Schema2CodeServcice { constructor() { @@ -50,7 +50,7 @@ export default class Schema2CodeServcice { main: defaultMain }) - const { generateCode } = require('@opentiny/lowcode-dsl-vue') + const { generateCode } = require('@opentiny/tiny-engine-dsl-vue') let code try { code = generateCode({ @@ -84,7 +84,7 @@ export default class Schema2CodeServcice { return components.map((component) => { const { component: componentName, - npm: { package: packageName, exportName, version, destructuring } + npm: { package: packageName, exportName, version, destructuring } = {} } = component return { componentName, diff --git a/mockServer/src/services/source.js b/mockServer/src/services/source.js index be25719f07..e0f0386e0a 100644 --- a/mockServer/src/services/source.js +++ b/mockServer/src/services/source.js @@ -11,11 +11,10 @@ */ import { getResponseData } from '../tool/Common' -import sources from './sources.json' +import sources from '../assets/json/sources.json' export default class soueceService { detail(id) { const sourceData = sources[id] || {} return getResponseData(sourceData) } - } diff --git a/package.json b/package.json index 68d9f45c0e..bd1c91ce6d 100644 --- a/package.json +++ b/package.json @@ -1,130 +1,61 @@ { - "name": "@opentiny/tiny-engine", - "version": "1.0.0", - "description": "TinyEngine enables developers to customize low-code platforms, build low-bit platforms online in real time, and support secondary development or integration of low-bit platform capabilities.", - "homepage": "https://opentiny.design/tiny-engine", - "keywords": [ - "vue", - "vue3", - "frontend", - "opentiny", - "lowcode", - "tiny-engine" - ], + "name": "tiny-engine", + "private": true, + "type": "module", "scripts": { - "dev": "cross-env NODE_OPTIONS=--max-old-space-size=10240 VITE_API_MOCK=mock vite", - "serve": "cross-env NODE_OPTIONS=--max-old-space-size=10240 vite", - "build:plugin": "lerna run build --scope @opentiny/tiny-engine-*", - "build:alpha": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode alpha", - "build:prod": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode prod", + "preinstall": "npx only-allow pnpm", + "dev": "pnpm run setup && concurrently 'pnpm:serve:backend' 'pnpm:dev:demo:frontend'", + "dev:mock": "pnpm --filter @opentiny/tiny-engine dev", + "dev:demo": "pnpm run setup && concurrently 'pnpm:serve:backend' 'pnpm:dev:demo:frontend'", + "serve:frontend": "pnpm --filter designer-demo dev", + "dev:demo:frontend": "pnpm --filter designer-demo dev", + "serve:backend": "pnpm --filter @opentiny/tiny-engine-mock dev", + "build:plugin": "pnpm --filter @opentiny/tiny-engine-* --filter @opentiny/tiny-engine build", + "build:alpha": "pnpm --filter designer-demo build:alpha", + "build:prod": "pnpm --filter designer-demo build", "buildComponentSchemas": "node scripts/buildComponentSchemas.js", - "preview": "vite preview", + "preview": "pnpm --filter @opentiny/tiny-engine preview", "lint": "eslint . --ext .js,.vue,.jsx --fix", "format": "prettier --write **/*{.vue,.js,.ts,.html,.json}", - "auto:publish": "node autoPublish", - "publish:core": "npm publish", - "publish:plugin": "lerna exec npm publish --scope @opentiny/tiny-engine-*", - "version": "lerna exec npm version ${version}", - "clean": "lerna clean", - "prepare": "node -e \"if(require('fs').existsSync('.git')){process.exit(1)}\" || husky install" - }, - "dependencies": { - "@babel/core": "7.18.13", - "@babel/generator": "7.18.13", - "@babel/parser": "7.18.13", - "@babel/traverse": "7.18.13", - "@opentiny/vue": "~3.9.0", - "@opentiny/vue-design-smb": "~3.9.0", - "@vue/babel-plugin-jsx": "1.1.1", - "@vue/repl": "^1.3.0", - "@vueuse/core": "^9.6.0", - "element-resize-detector": "^1.2.4", - "file-saver": "^2.0.5", - "html2canvas": "^1.4.1", - "jszip": "^3.10.1", - "monaco-editor": "0.33.0", - "prettier": "2.7.1", - "sortablejs": "^1.14.0", - "vue": "3.2.45", - "vue-clipboard3": "^2.0.0", - "vue-draggable-next": "2.1.0", - "vue-i18n": "9.2.2", - "xlsx": "^0.18.5" + "prepare": "node -e \"if(require('fs').existsSync('.git')){process.exit(1)}\" || husky install", + "pub:premajor": "pnpm run build:plugin && pnpm run build:alpha && pnpm lerna version premajor --preid beta --no-push --yes && lerna publish from-package --pre-dist-tag beta --yes", + "pub:preminor": "pnpm run build:plugin && pnpm run build:alpha && pnpm lerna version preminor --preid beta --no-push --yes && lerna publish from-package --pre-dist-tag beta --yes", + "pub:prepatch": "pnpm run build:plugin && pnpm run build:alpha && pnpm lerna version prepatch --preid beta --no-push --yes && lerna publish from-package --pre-dist-tag beta --yes", + "pub:prerelease": "pnpm run build:plugin && pnpm run build:alpha && pnpm lerna version prerelease --preid beta --no-push --yes && lerna publish from-package --pre-dist-tag beta --yes", + "setup": "node ./scripts/setup.js", + "splitMaterials": "node ./scripts/splitMaterials.mjs", + "buildMaterials": "node ./scripts/buildMaterials.mjs" }, "devDependencies": { "@babel/eslint-parser": "^7.21.3", - "@esbuild-plugins/node-globals-polyfill": "^0.2.3", - "@esbuild-plugins/node-modules-polyfill": "^0.2.2", - "@opentiny/tiny-engine-canvas": "file:src/canvas", - "@opentiny/tiny-engine-common": "file:src/common", - "@opentiny/tiny-engine-controller": "file:src/controller", - "@opentiny/tiny-engine-http": "file:src/http", - "@opentiny/tiny-engine-plugin-block": "file:src/plugins/packages/block", - "@opentiny/tiny-engine-plugin-bridge": "file:src/plugins/packages/bridge", - "@opentiny/tiny-engine-plugin-data": "file:src/plugins/packages/data", - "@opentiny/tiny-engine-plugin-datasource": "file:src/plugins/packages/datasource", - "@opentiny/tiny-engine-plugin-help": "file:src/plugins/packages/help", - "@opentiny/tiny-engine-plugin-i18n": "file:src/plugins/packages/i18n", - "@opentiny/tiny-engine-plugin-materials": "file:src/plugins/packages/materials", - "@opentiny/tiny-engine-plugin-page": "file:src/plugins/packages/page", - "@opentiny/tiny-engine-plugin-schema": "file:src/plugins/packages/schema", - "@opentiny/tiny-engine-plugin-script": "file:src/plugins/packages/script", - "@opentiny/tiny-engine-plugin-tree": "file:src/plugins/packages/tree", - "@opentiny/tiny-engine-plugin-tutorial": "file:src/plugins/packages/tutorial", - "@opentiny/tiny-engine-plugin-robot": "file:src/plugins/packages/robot", - "@opentiny/tiny-engine-setting-design": "file:src/settings/packages/design", - "@opentiny/tiny-engine-setting-events": "file:src/settings/packages/events", - "@opentiny/tiny-engine-setting-props": "file:src/settings/packages/props", - "@opentiny/tiny-engine-setting-styles": "file:src/settings/packages/styles", - "@opentiny/tiny-engine-svgs": "file:src/svgs", - "@opentiny/tiny-engine-theme-dark": "file:src/theme/packages/dark", - "@opentiny/tiny-engine-theme-light": "file:src/theme/packages/light", - "@opentiny/tiny-engine-toolbar-breadcrumb": "file:src/toolbars/packages/breadcrumb", - "@opentiny/tiny-engine-toolbar-checkinout": "file:src/toolbars/packages/lock", - "@opentiny/tiny-engine-toolbar-clean": "file:src/toolbars/packages/clean", - "@opentiny/tiny-engine-toolbar-collaboration": "file:src/toolbars/packages/collaboration", - "@opentiny/tiny-engine-toolbar-fullscreen": "file:src/toolbars/packages/fullscreen", - "@opentiny/tiny-engine-toolbar-generate-vue": "file:src/toolbars/packages/generate-vue", - "@opentiny/tiny-engine-toolbar-lang": "file:src/toolbars/packages/lang", - "@opentiny/tiny-engine-toolbar-layout": "file:src/toolbars/packages/layout", - "@opentiny/tiny-engine-toolbar-logo": "file:src/toolbars/packages/logo", - "@opentiny/tiny-engine-toolbar-logout": "file:src/toolbars/packages/logout", - "@opentiny/tiny-engine-toolbar-media": "file:src/toolbars/packages/media", - "@opentiny/tiny-engine-toolbar-preview": "file:src/toolbars/packages/preview", - "@opentiny/tiny-engine-toolbar-redoundo": "file:src/toolbars/packages/redoundo", - "@opentiny/tiny-engine-toolbar-refresh": "file:src/toolbars/packages/refresh", - "@opentiny/tiny-engine-toolbar-save": "file:src/toolbars/packages/save", - "@opentiny/tiny-engine-toolbar-setting": "file:src/toolbars/packages/setting", - "@opentiny/tiny-engine-utils": "file:src/utils", - "@opentiny/tiny-engine-webcomponent-core": "file:src/webcomponent", - "@opentiny/tiny-engine-i18n-host": "file:src/i18n", "@types/node": "^18.0.0", - "@vitejs/plugin-vue": "^4.2.3", - "@vitejs/plugin-vue-jsx": "^1.3.2", - "assert": "^2.0.0", - "buffer": "^6.0.3", + "chokidar": "^3.5.3", + "concurrently": "^8.2.0", "cross-env": "^7.0.3", + "dotenv": "^16.3.1", "eslint": "^8.38.0", "eslint-plugin-vue": "^8.0.0", + "fast-glob": "^3.3.2", "fs-extra": "^10.1.0", "husky": "^8.0.0", - "lerna": "^5.1.8", - "less": "^4.1.2", + "lerna": "^7.2.0", "lint-staged": "^13.2.0", - "path": "^0.12.7", - "rimraf": "^3.0.2", - "rollup-plugin-polyfill-node": "^0.12.0", - "rollup-plugin-terser": "^7.0.2", - "rollup-plugin-visualizer": "^5.8.3", - "svg-sprite-loader": "^6.0.11", - "vite": "^4.3.7", - "vite-plugin-monaco-editor": "^1.0.10", - "vite-plugin-svg-icons": "^2.0.1", + "mysql": "^2.18.1", + "picocolors": "^1.0.0", "vue-eslint-parser": "^8.0.1" }, "browserslist": [ "> 1%", "last 2 versions", "not dead" - ] + ], + "engines": { + "node": ">=16", + "pnpm": ">=8" + }, + "pnpm": { + "patchedDependencies": { + "@vue/repl@2.9.0": "patches/@vue__repl@2.9.0.patch" + } + } } diff --git a/packages/blockToWebComponentTemplate/README.md b/packages/blockToWebComponentTemplate/README.md new file mode 100644 index 0000000000..cb104541e1 --- /dev/null +++ b/packages/blockToWebComponentTemplate/README.md @@ -0,0 +1,12 @@ +# @opentiny/tiny-engine-blockToWebComponentTemplate + +将区块转换成 webComponent,使得不同技术栈的区块可以统一在 vue 的画布上面运行 + +## 使用 + +- 后端拉取 template +- 将区块 schema 转换成 高代码,并写入 src 文件夹中 +- 写入 lib.js,替换 BlockFileName 为实际出码的文件名 +- 执行 `pnpm install` 安装依赖 +- 运行 `pnpm run build:block` 命令 +- 得到 webcomponent 转换产物 \ No newline at end of file diff --git a/packages/blockToWebComponentTemplate/package.json b/packages/blockToWebComponentTemplate/package.json new file mode 100644 index 0000000000..dd716cff84 --- /dev/null +++ b/packages/blockToWebComponentTemplate/package.json @@ -0,0 +1,48 @@ +{ + "name": "@opentiny/tiny-engine-block-build", + "version": "2.0.0-alpha.2", + "description": "translate block to webcomponent template", + "main": "./dist/web-components.es.js", + "type": "module", + "scripts": { + "build:block": "vite build --mode block" + }, + "keywords": [ + "vue", + "vue3", + "frontend", + "opentiny", + "lowcode", + "tiny-engine", + "webComponent" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/opentiny/tiny-engine", + "directory": "packages/builtinComponent" + }, + "bugs": { + "url": "https://github.com/opentiny/tiny-engine/issues" + }, + "author": "OpenTiny Team", + "license": "MIT", + "homepage": "https://opentiny.design/tiny-engine", + "dependencies": { + "@opentiny/tiny-engine-i18n-host": "workspace:*", + "@opentiny/tiny-engine-webcomponent-core": "workspace:*", + "@opentiny/vue": "~3.14.0", + "@opentiny/vue-icon": "~3.14.0", + "@opentiny/vue-theme": "~3.14.0", + "@vue/shared": "^3.3.11", + "vue": "^3.4.15", + "vue-i18n": "^9.9.0" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.1.2", + "@vitejs/plugin-vue-jsx": "^4.0.1", + "vite": "^5.4.2" + } +} diff --git a/packages/blockToWebComponentTemplate/src/BlockFileName.vue b/packages/blockToWebComponentTemplate/src/BlockFileName.vue new file mode 100644 index 0000000000..90791a4994 --- /dev/null +++ b/packages/blockToWebComponentTemplate/src/BlockFileName.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/packages/blockToWebComponentTemplate/src/lib.js b/packages/blockToWebComponentTemplate/src/lib.js new file mode 100644 index 0000000000..61a538b096 --- /dev/null +++ b/packages/blockToWebComponentTemplate/src/lib.js @@ -0,0 +1,20 @@ +import { hyphenate } from '@vue/shared' +import { defineCustomElement } from '@opentiny/tiny-engine-webcomponent-core' +import block from './BlockFileName.vue' + +window.TinyLowcodeResource = window.TinyLowcodeResource || {} + +const blockName = hyphenate('BlockFileName') + +if (customElements.get(blockName)) { + if (window.TinyLowcodeResource[blockName]) { + Object.assign(window.TinyLowcodeResource[blockName], block) + } +} else { + block.links = process.env.VUE_APP_UI_LIB_FULL_STYLE_FILE_URL + block.styles = ['svg { width: 10px; height: 10px;}', ...(block.styles || [])] + window.TinyLowcodeResource[blockName] = block + customElements.define(blockName, defineCustomElement(block)) +} + +export default block diff --git a/packages/blockToWebComponentTemplate/vite.config.js b/packages/blockToWebComponentTemplate/vite.config.js new file mode 100644 index 0000000000..9ad6a18618 --- /dev/null +++ b/packages/blockToWebComponentTemplate/vite.config.js @@ -0,0 +1,66 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import path from 'path' + +const config = { + define: {}, + resolve: { + alias: {} + }, + build: { + cssCodeSplit: false, + minify: false, + commonjsOptions: { + transformMixedEsModules: true + }, + rollupOptions: { + external: [ + 'vue', + 'vue-i18n', + '@opentiny/tiny-engine-i18n-host', + '@opentiny/tiny-engine-webcomponent-core', + '@opentiny/vue', + '@opentiny/vue-icon' + ], + output: { + globals: { + vue: 'Vue', + 'vue-i18n': 'VueI18n', + '@opentiny/tiny-engine-i18n-host': 'TinyI18nHost', + '@opentiny/tiny-engine-webcomponent-core': 'TinyWebcomponentCore', + '@opentiny/vue': 'TinyVue', + '@opentiny/vue-icon': 'TinyVueIcon' + } + } + } + } +} + +export default defineConfig(({ command, mode }) => { + if (command !== 'build' || mode !== 'block') { + return config + } + + const vuePluginConfig = {} + const styleLinks = ['https://unpkg.com/@opentiny/vue-theme@3.14/index.css'] + + config.publicDir = false + + config.build.lib = { + entry: path.resolve(__dirname, './src/lib.js'), + name: 'TinyVueBlock', + formats: ['umd', 'es'], + fileName: (format) => `js/web-component.${format}.js` + } + + vuePluginConfig.customElement = true + + config.plugins = [vue(vuePluginConfig), vueJsx()] + + config.define['process.env'] = { + VUE_APP_UI_LIB_FULL_STYLE_FILE_URL: styleLinks + } + + return config +}) diff --git a/packages/build/vite-config/README.md b/packages/build/vite-config/README.md new file mode 100644 index 0000000000..52226bef12 --- /dev/null +++ b/packages/build/vite-config/README.md @@ -0,0 +1,27 @@ +# tiny-engine-vite-config + +> tiny-engine 构建配置 + +## useTinyEngineBaseConfig + +基础的 TinyEngine vite 配置。用户基于 cli 创建的模板依赖该基础配置。 + +使用: + +```javascript +const baseConfig = useTinyEngineBaseConfig({ + viteConfigEnv: configEnv, + root: __dirname, + iconDirs: [path.resolve(__dirname, './node_modules/@opentiny/tiny-engine/assets/')], + useSourceAlias: true, + envDir: './env' +}) +``` + +配置项说明: + +- viteConfigEnv: defineConfig 的入参 +- root:当前项目的根目录,传入 __dirname 或者 process.cwd() +- iconDirs:icon 文件夹目录 +- useSourceAlias:是否开启TinyEngine源码级别的调试 +- envDir:env 文件夹存放的目录,默认值为项目根目录 diff --git a/packages/build/vite-config/index.js b/packages/build/vite-config/index.js new file mode 100644 index 0000000000..d7afd8d939 --- /dev/null +++ b/packages/build/vite-config/index.js @@ -0,0 +1,3 @@ +export { useTinyEngineBaseConfig } from './src/default-config.js' +export { default as metaCommentsPlugin } from '@opentiny/tiny-engine-vite-plugin-meta-comments' +export { canvasDevExternal } from './src/canvas-dev-external.js' diff --git a/packages/build/vite-config/package.json b/packages/build/vite-config/package.json new file mode 100644 index 0000000000..b706991374 --- /dev/null +++ b/packages/build/vite-config/package.json @@ -0,0 +1,66 @@ +{ + "name": "@opentiny/tiny-engine-vite-config", + "version": "2.0.0-alpha.2", + "description": "", + "type": "module", + "main": "./index.js", + "module": "./index.js", + "files": [ + "dist", + "src", + "index.js" + ], + "scripts": { + "build": "" + }, + "dependencies": { + "@babel/core": "~7.23.2", + "@babel/eslint-parser": "^7.21.3", + "@babel/generator": "~7.23.2", + "@babel/parser": "~7.23.2", + "@babel/traverse": "~7.23.2", + "@esbuild-plugins/node-globals-polyfill": "^0.2.3", + "@esbuild-plugins/node-modules-polyfill": "^0.2.2", + "@opentiny/tiny-engine-vite-plugin-meta-comments": "workspace:^", + "@types/node": "^18.0.0", + "@vitejs/plugin-vue": "^5.1.2", + "@vitejs/plugin-vue-jsx": "^4.0.1", + "assert": "^2.0.0", + "buffer": "^6.0.3", + "cross-env": "^7.0.3", + "esbuild-plugin-copy": "^2.1.1", + "eslint": "^8.38.0", + "eslint-plugin-vue": "^8.0.0", + "fs-extra": "^10.1.0", + "husky": "^8.0.0", + "lerna": "^7.2.0", + "less": "^4.1.2", + "lint-staged": "^13.2.0", + "path": "^0.12.7", + "rollup-plugin-polyfill-node": "^0.13.0", + "rollup-plugin-visualizer": "^5.8.3", + "shelljs": "^0.8.5", + "svg-sprite-loader": "^6.0.11", + "vite": "^5.4.2", + "vite-plugin-externalize-dependencies": "^1.0.1", + "vite-plugin-monaco-editor": "^1.1.0", + "vite-plugin-static-copy": "^1.0.6", + "vite-plugin-svg-icons": "^2.0.1", + "vue-eslint-parser": "^8.0.1" + }, + "keywords": [], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/opentiny/tiny-engine", + "directory": "packages/build/vite-config" + }, + "bugs": { + "url": "https://github.com/opentiny/tiny-engine/issues" + }, + "author": "OpenTiny Team", + "license": "MIT", + "homepage": "https://opentiny.design/tiny-engine" +} diff --git a/packages/build/vite-config/src/canvas-dev-external.js b/packages/build/vite-config/src/canvas-dev-external.js new file mode 100644 index 0000000000..0d0c4bcc30 --- /dev/null +++ b/packages/build/vite-config/src/canvas-dev-external.js @@ -0,0 +1,37 @@ +import vitePluginExternalize from 'vite-plugin-externalize-dependencies' +import { genImportMapPlugin } from './vite-plugins/genImportMapOnly.js' +export function canvasDevExternal(override = {}) { + const prefix = '/node_modules/@opentiny/tiny-engine' + + // 以下内容由于区块WebComponent加载需要补充 + const blockRequire = { + externals: [/^@opentiny\/vue$/, /^@opentiny\/vue-icon$/], + imports: { + '@opentiny/vue': `${prefix}/node_modules/@opentiny/vue/runtime/tiny-vue.mjs`, + '@opentiny/vue-icon': `${prefix}/node_modules/@opentiny/vue/runtime/tiny-vue-icon.mjs` + }, + importStyles: [`${prefix}/node_modules/@opentiny/vue-theme/index.css`] + } + // 以下内容由于物料协议不支持声明子依赖而@opentiny/vue需要依赖所以需要补充 + const tinyVueRequire = { + imports: { + '@opentiny/vue-common': `${prefix}/node_modules/@opentiny/vue/runtime/tiny-vue-common.mjs`, + '@opentiny/vue-locale': `${prefix}/node_modules/@opentiny/vue/runtime/tiny-vue-locale.mjs` + } + } + return [ + vitePluginExternalize({ externals: [/^vue$/, /^vue-i18n$/, ...blockRequire.externals] }), + genImportMapPlugin( + { + imports: { + vue: `${prefix}/node_modules/vue/dist/vue.runtime.esm-browser.js`, + 'vue-i18n': `${prefix}/node_modules/vue-i18n/dist/vue-i18n.esm-browser.js`, + ...blockRequire.imports, + ...tinyVueRequire.imports, + ...override + } + }, + [...blockRequire.importStyles] + ) + ] +} diff --git a/packages/build/vite-config/src/default-config.js b/packages/build/vite-config/src/default-config.js new file mode 100644 index 0000000000..54f0b86b52 --- /dev/null +++ b/packages/build/vite-config/src/default-config.js @@ -0,0 +1,186 @@ +import { loadEnv } from 'vite' +import path from 'path' +import vue from '@vitejs/plugin-vue' +import monacoEditorPluginCjs from 'vite-plugin-monaco-editor' +import vueJsx from '@vitejs/plugin-vue-jsx' +import nodeGlobalsPolyfillPluginCjs from '@esbuild-plugins/node-globals-polyfill' +import nodeModulesPolyfillPluginCjs from '@esbuild-plugins/node-modules-polyfill' +import nodePolyfill from 'rollup-plugin-polyfill-node' +import esbuildCopy from 'esbuild-plugin-copy' +import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' +import visualizerCjs from 'rollup-plugin-visualizer' +import generateComment from '@opentiny/tiny-engine-vite-plugin-meta-comments' +import { getBaseUrlFromCli, copyBundleDeps, copyPreviewImportMap } from './localCdnFile/index.js' +import { devAliasPlugin } from './vite-plugins/devAliasPlugin.js' +import { htmlUpgradeHttpsPlugin } from './vite-plugins/upgradeHttpsPlugin.js' +import { canvasDevExternal } from './canvas-dev-external.js' + +const monacoEditorPlugin = monacoEditorPluginCjs.default +const nodeGlobalsPolyfillPlugin = nodeGlobalsPolyfillPluginCjs.default +const nodeModulesPolyfillPlugin = nodeModulesPolyfillPluginCjs.default +const visualizer = visualizerCjs.default + +const origin = 'http://localhost:9090/' + +const getDefaultConfig = (engineConfig) => { + const { root } = engineConfig + + return { + base: './', + publicDir: path.resolve(root, './public'), + resolve: { + extensions: ['.js', '.jsx', '.vue'], + alias: {} + }, + server: { + // 这里保证本地启动服务是localhost,支持js多线程和谷歌浏览器读写本地文件api + port: 8080, + open: '/?type=app&id=918&tenant=1', + proxy: { + '/app-center/v1/api': { + target: origin, + changeOrigin: true + }, + '/app-center/api': { + target: origin, + changeOrigin: true + }, + '/material-center/api': { + target: origin, + changeOrigin: true + }, + '/platform-center/api': { + target: origin, + changeOrigin: true + } + } + }, + preview: { + host: 'localhost', + port: 8080, + open: false + }, + plugins: [ + generateComment(), + visualizer({ + filename: 'tmp/report.html', + title: 'Bundle Analyzer' + }), + vue({ + reactivityTransform: path.resolve(root, 'src'), + template: { + compilerOptions: { + isCustomElement: (tag) => tag.startsWith('tiny-i18n-host') || tag.startsWith('ng') + } + } + }), + vueJsx() + ], + optimizeDeps: { + esbuildOptions: { + plugins: [ + nodeGlobalsPolyfillPlugin({ + process: true, + buffer: true + }), + nodeModulesPolyfillPlugin(), + esbuildCopy({ + //@vue/repl monaco编辑器需要 + resolveFrom: 'cwd', + assets: { + from: ['./node_modules/@vue/repl/dist/assets/*'], // worker.js文件以url形式引用不会被esbuild拉起,需要手动复制 + to: ['./node_modules/.vite/assets'] // 开发态,js文件被缓存在.vite/deps,请求相对路径为.vite/assets + }, + watch: true + }) + ] + } + }, + build: { + commonjsOptions: { + transformMixedEsModules: true, + // monaco-editor 满足 ESM 规范,防止被误转换 + exclude: ['node_modules/*monaco-editor*/**', 'node_modules/lodash-es/**', 'node_modules/@types/lodash-es/**'] + }, + minify: true, + sourcemap: false, + rollupOptions: { + plugins: [nodePolyfill({ include: null })], // 使用@rollup/plugin-inject的默认值{include: null}, 即在所有代码中生效 + input: { + index: path.resolve(process.cwd(), './index.html'), + preview: path.resolve(process.cwd(), './preview.html') + }, + output: { + manualChunks: (id) => { + const chunksMap = { + monaco: ['node_modules/monaco-editor'], + prettier: ['node_modules/prettier'], + vendor: ['node_modules'] + } + for (const [chunkName, sourcePaths] of Object.entries(chunksMap)) { + if (sourcePaths.some((item) => id.indexOf(item) > -1)) { + return chunkName + } + } + return undefined + } + } + } + } + } +} + +export function useTinyEngineBaseConfig(engineConfig) { + const { envDir = '', viteConfigEnv } = engineConfig + const { command = 'serve', mode = 'serve' } = viteConfigEnv + const env = loadEnv(mode, envDir) + const { VITE_CDN_DOMAIN = 'https://unpkg.com', VITE_LOCAL_IMPORT_MAPS, VITE_LOCAL_BUNDLE_DEPS } = env + const isLocalImportMap = VITE_LOCAL_IMPORT_MAPS === 'true' // true公共依赖库使用本地打包文件,false公共依赖库使用公共CDN + const isCopyBundleDeps = VITE_LOCAL_BUNDLE_DEPS === 'true' // true bundle里的cdn依赖处理成本地依赖, false 不处理 + const monacoPublicPath = 'editor/monaco-workers' + const monacoEditorPluginInstance = monacoEditorPlugin({ + publicPath: monacoPublicPath, + forceBuildCDN: true, + customDistPath: (_root, outDir, _base) => path.join(outDir, monacoPublicPath) + }) + const config = getDefaultConfig(engineConfig) + + config.plugins.push( + createSvgIconsPlugin({ + iconDirs: engineConfig.iconDirs || [], + symbolId: 'icon-[name]', + inject: 'body-last' + }), + monacoEditorPluginInstance, + htmlUpgradeHttpsPlugin(mode), + isCopyBundleDeps + ? copyBundleDeps({ + bundleFile: 'public/mock/bundle.json', + targetBundleFile: 'mock/bundle.json', + originCdnPrefix: VITE_CDN_DOMAIN, // mock 中bundle的域名当前和环境的VITE_CDN_DOMAIN一致 + base: getBaseUrlFromCli(config.base) + }).plugin(command === 'serve') + : [], + isLocalImportMap + ? copyPreviewImportMap({ + // FIXME: 相对路径需要修正 + importMapJson: './src/preview/src/preview/importMap.json', + targetImportMapJson: 'preview-import-map-static/preview-importmap.json', + originCdnPrefix: VITE_CDN_DOMAIN, + base: getBaseUrlFromCli(config.base), + packageCopyLib: [ + // 以下的js存在相对路径引用,不能单独拷贝一个文件,需要整个包拷贝 + '@vue/devtools-api' + ] + }) + : [] + ) + + config.plugins.push(devAliasPlugin(env, engineConfig.useSourceAlias)) + + if (engineConfig.useSourceAlias && command === 'serve') { + config.plugins.push(canvasDevExternal()) + } + + return config +} diff --git a/packages/build/vite-config/src/externalDeps.js b/packages/build/vite-config/src/externalDeps.js new file mode 100644 index 0000000000..418fec751f --- /dev/null +++ b/packages/build/vite-config/src/externalDeps.js @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +/** + * 嵌入 + + diff --git a/packages/builtinComponent/src/components/CanvasRow.vue b/packages/builtinComponent/src/components/CanvasRow.vue new file mode 100644 index 0000000000..5c7ba54d59 --- /dev/null +++ b/packages/builtinComponent/src/components/CanvasRow.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/packages/builtinComponent/src/components/CanvasRowColContainer.vue b/packages/builtinComponent/src/components/CanvasRowColContainer.vue new file mode 100644 index 0000000000..ad46e409dd --- /dev/null +++ b/packages/builtinComponent/src/components/CanvasRowColContainer.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/packages/builtinComponent/src/components/helper.js b/packages/builtinComponent/src/components/helper.js new file mode 100644 index 0000000000..59200272ed --- /dev/null +++ b/packages/builtinComponent/src/components/helper.js @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +export const getStyleValue = (value) => { + if (typeof value === 'number' || /^\d+\.?\d*$/.test(value)) { + return `${value}px` + } + + if (/^\d+\.?\d*(px|%|pt|em|rem|vw|vh)$/.test(value)) { + return value + } + + return '' +} + +export const alignMap = { + 'flex-start': 'flex-start', + 'flex-end': 'flex-end', + center: 'center', + stretch: 'stretch', + start: 'start', + end: 'end' +} + +export const justAlignMap = { + 'space-between': 'space-between', + 'space-around': 'space-around', + 'space-evenly': 'space-evenly', + 'flex-start': 'flex-start', + 'flex-end': 'flex-end', + stretch: 'stretch', + center: 'center', + start: 'start', + end: 'end', + left: 'left', + right: 'right' +} diff --git a/packages/builtinComponent/src/meta/CanvasCol.json b/packages/builtinComponent/src/meta/CanvasCol.json new file mode 100644 index 0000000000..8e03bd5ab4 --- /dev/null +++ b/packages/builtinComponent/src/meta/CanvasCol.json @@ -0,0 +1,196 @@ +{ + "component": { + "icon": "Box", + "name": { + "zh_CN": "CanvasCol" + }, + "component": "CanvasCol", + "schema": { + "slots": {}, + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "widthType", + "type": "String", + "defaultValue": "auto", + "label": { + "text": { + "zh_CN": "宽度类型" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "RadioGroupConfigurator", + "props": { + "options": [ + { "label": "auto", "text": "自适应" }, + { "label": "fixed", "text": "固定" } + ], + "type": "button" + } + } + }, + { + "property": "flexBasis", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "固定宽度" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "rowGap", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "行间距" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "colGap", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列间距" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "align", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "副轴对齐" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { "value": "flex-start", "label": "头部对齐" }, + { "value": "center", "label": "中间对齐" }, + { "value": "flex-end", "label": "尾端对齐" }, + { "value": "stretch", "label": "拉伸对齐" } + ], + "type": "button" + } + } + }, + { + "property": "justAlign", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "主轴对齐" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { "value": "flex-start", "label": "头部对齐" }, + { "value": "center", "label": "中间对齐" }, + { "value": "flex-end", "label": "尾端对齐" }, + { "value": "space-between", "label": "两端对齐" }, + { "value": "space-evenly", "label": "均分对齐" } + ], + "type": "button" + } + } + }, + { + "property": "grow", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "增长" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + }, + { + "property": "shrink", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "收缩" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "SwitchConfigurator", + "props": {} + } + } + ] + } + ], + "events": {}, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + }, + "configure": { + "loop": true, + "isContainer": true, + "nestingRule": { + "childWhitelist": [], + "descendantBlacklist": [] + } + } + } +} diff --git a/packages/builtinComponent/src/meta/CanvasRow.json b/packages/builtinComponent/src/meta/CanvasRow.json new file mode 100644 index 0000000000..4ca0ea73b5 --- /dev/null +++ b/packages/builtinComponent/src/meta/CanvasRow.json @@ -0,0 +1,142 @@ +{ + "component": { + "icon": "Box", + "name": { + "zh_CN": "CanvasRow" + }, + "component": "CanvasRow", + "schema": { + "slots": {}, + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "minHeight", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "最小高度" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "rowGap", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "行间距" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "colGap", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "列间距" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "InputConfigurator", + "props": {} + } + }, + { + "property": "align", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "副轴对齐" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { "value": "flex-start", "label": "头部对齐" }, + { "value": "center", "label": "中间对齐" }, + { "value": "flex-end", "label": "尾端对齐" }, + { "value": "stretch", "label": "拉伸对齐" } + ], + "type": "button" + } + } + }, + { + "property": "justAlign", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "主轴对齐" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "SelectConfigurator", + "props": { + "options": [ + { "value": "flex-start", "label": "头部对齐" }, + { "value": "center", "label": "中间对齐" }, + { "value": "flex-end", "label": "尾端对齐" }, + { "value": "space-between", "label": "两端对齐" }, + { "value": "space-evenly", "label": "均分对齐" } + ], + "type": "button" + } + } + } + ] + } + ], + "events": {}, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + }, + "configure": { + "loop": true, + "isContainer": true, + "nestingRule": { + "childWhitelist": [], + "descendantBlacklist": [] + } + } + } +} diff --git a/packages/builtinComponent/src/meta/CanvasRowColContainer.json b/packages/builtinComponent/src/meta/CanvasRowColContainer.json new file mode 100644 index 0000000000..3281b14a0e --- /dev/null +++ b/packages/builtinComponent/src/meta/CanvasRowColContainer.json @@ -0,0 +1,96 @@ +{ + "component": { + "icon": "Box", + "name": { + "zh_CN": "行列容器" + }, + "component": "CanvasRowColContainer", + "schema": { + "slots": {}, + "properties": [ + { + "label": { + "zh_CN": "基础信息" + }, + "description": { + "zh_CN": "基础信息" + }, + "collapse": { + "number": 6, + "text": { + "zh_CN": "显示更多" + } + }, + "content": [ + { + "property": "rowGap", + "type": "String", + "defaultValue": "", + "label": { + "text": { + "zh_CN": "行间距" + } + }, + "cols": 12, + "rules": [], + "widget": { + "component": "InputConfigurator", + "props": {} + } + } + ] + } + ], + "events": {}, + "shortcuts": { + "properties": [] + }, + "contentMenu": { + "actions": [] + } + }, + "configure": { + "loop": true, + "isContainer": true, + "nestingRule": { + "childWhitelist": [], + "descendantBlacklist": [] + } + } + }, + "snippet": { + "name": { + "zh_CN": "行列容器" + }, + "screenshot": "", + "snippetName": "CanvasRowColContainer", + "icon": "Box", + "schema": { + "componentName": "CanvasRowColContainer", + "props": { + "rowGap": "20px" + }, + "children": [ + { + "componentName": "CanvasRow", + "props": { + "rowGap": "20px", + "colGap": "20px" + }, + "children": [ + { + "componentName": "CanvasCol", + "props": { + "rowGap": "20px", + "colGap": "20px", + "grow": true, + "shrink": true, + "widthType": "auto" + } + } + ] + } + ] + } + } +} diff --git a/packages/builtinComponent/src/meta/index.js b/packages/builtinComponent/src/meta/index.js new file mode 100644 index 0000000000..2480e70515 --- /dev/null +++ b/packages/builtinComponent/src/meta/index.js @@ -0,0 +1,16 @@ +import CanvasCol from './CanvasCol.json' +import CanvasRow from './CanvasRow.json' +import CanvasRowColContainer from './CanvasRowColContainer.json' + +export default { + components: [CanvasCol.component, CanvasRow.component, CanvasRowColContainer.component], + snippets: [ + { + group: 'layout', + label: { + zh_CN: '布局与容器' + }, + children: [CanvasRowColContainer.snippet] + } + ] +} diff --git a/packages/builtinComponent/vite.config.js b/packages/builtinComponent/vite.config.js new file mode 100644 index 0000000000..d77e390b58 --- /dev/null +++ b/packages/builtinComponent/vite.config.js @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ +import { defineConfig } from 'vite' +import path from 'path' +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import vitePluginCssInjectedByJs from 'vite-plugin-css-injected-by-js' + +export default defineConfig({ + plugins: [vue(), vueJsx(), vitePluginCssInjectedByJs()], + publicDir: false, + build: { + cssCodeSplit: false, + lib: { + entry: path.resolve(__dirname, './index.js'), + name: 'builtinComponent', + fileName: () => 'index.js', + formats: ['es'] + }, + rollupOptions: { + external: ['vue'] + } + } +}) diff --git a/src/canvas/.eslintrc.js b/packages/canvas/.eslintrc.cjs similarity index 100% rename from src/canvas/.eslintrc.js rename to packages/canvas/.eslintrc.cjs diff --git a/src/canvas/.gitignore b/packages/canvas/.gitignore similarity index 100% rename from src/canvas/.gitignore rename to packages/canvas/.gitignore diff --git a/packages/canvas/DesignCanvas/index.js b/packages/canvas/DesignCanvas/index.js new file mode 100644 index 0000000000..6f439f9a58 --- /dev/null +++ b/packages/canvas/DesignCanvas/index.js @@ -0,0 +1,12 @@ +import { HOOK_NAME } from '@opentiny/tiny-engine-meta-register' +import DesignCanvas from './src/DesignCanvas.vue' +import metaData from './meta' +import api from './src/api' +export default { + ...metaData, + entry: DesignCanvas, + apis: api(), + composable: { + name: HOOK_NAME.useCanvas + } +} diff --git a/packages/canvas/DesignCanvas/meta.js b/packages/canvas/DesignCanvas/meta.js new file mode 100644 index 0000000000..0952aa43dd --- /dev/null +++ b/packages/canvas/DesignCanvas/meta.js @@ -0,0 +1,3 @@ +export default { + id: 'engine.canvas' +} diff --git a/packages/canvas/DesignCanvas/src/DesignCanvas.vue b/packages/canvas/DesignCanvas/src/DesignCanvas.vue new file mode 100644 index 0000000000..041c6f2e89 --- /dev/null +++ b/packages/canvas/DesignCanvas/src/DesignCanvas.vue @@ -0,0 +1,194 @@ + + + diff --git a/packages/canvas/DesignCanvas/src/api/index.js b/packages/canvas/DesignCanvas/src/api/index.js new file mode 100644 index 0000000000..0545eb0410 --- /dev/null +++ b/packages/canvas/DesignCanvas/src/api/index.js @@ -0,0 +1,2 @@ +import api from './useCanvas' +export default api diff --git a/src/controller/src/useCanvas.js b/packages/canvas/DesignCanvas/src/api/useCanvas.js similarity index 88% rename from src/controller/src/useCanvas.js rename to packages/canvas/DesignCanvas/src/api/useCanvas.js index f0bbec9e8d..2be05169b7 100644 --- a/src/controller/src/useCanvas.js +++ b/packages/canvas/DesignCanvas/src/api/useCanvas.js @@ -11,10 +11,9 @@ */ /* eslint-disable no-new-func */ -import { reactive } from 'vue' -import { useHistory } from '@opentiny/tiny-engine-controller' -import { setSchema, renderApi } from '@opentiny/tiny-engine-canvas' +import { reactive, ref } from 'vue' import { constants } from '@opentiny/tiny-engine-utils' +import { useHistory } from '@opentiny/tiny-engine-meta-register' const { COMPONENT_NAME } = constants @@ -52,12 +51,20 @@ const defaultSchema = { outputs: [] } +const canvasApi = ref({}) +const isCanvasApiReady = ref(false) + +const initCanvasApi = (newCanvasApi) => { + canvasApi.value = newCanvasApi + isCanvasApiReady.value = true +} + const pageState = reactive({ ...defaultPageState, loading: true }) // 重置画布数据 const resetCanvasState = async (state = {}) => { Object.assign(pageState, defaultPageState, state) - await setSchema(pageState.pageSchema) + await canvasApi.value?.setSchema(pageState.pageSchema) } // 页面重置画布数据 @@ -151,10 +158,11 @@ export default function () { resetPageCanvasState, resetBlockCanvasState, clearCurrentState, - getDataSourceMap: renderApi.getDataSourceMap, - setDataSourceMap: renderApi.setDataSourceMap, getCurrentSchema, setCurrentSchema, - getCurrentPage + getCurrentPage, + initCanvasApi, + canvasApi, + isCanvasApiReady } } diff --git a/packages/canvas/DesignCanvas/src/importMap.js b/packages/canvas/DesignCanvas/src/importMap.js new file mode 100644 index 0000000000..813fdb7dc1 --- /dev/null +++ b/packages/canvas/DesignCanvas/src/importMap.js @@ -0,0 +1,45 @@ +import { VITE_CDN_DOMAIN } from '@opentiny/tiny-engine-common/js/environments' + +export function getImportMapData(overrideVersions = {}) { + const importMapVersions = Object.assign( + { + vue: '3.4.23', + tinyVue: '~3.14', + vueI18n: '^9.9.0' + }, + overrideVersions + ) + + // 以下内容由于区块WebComponent加载需要补充 + const blockRequire = { + imports: { + '@opentiny/vue': `${VITE_CDN_DOMAIN}/@opentiny/vue@${importMapVersions.tinyVue}/runtime/tiny-vue.mjs`, + '@opentiny/vue-icon': `${VITE_CDN_DOMAIN}/@opentiny/vue@${importMapVersions.tinyVue}/runtime/tiny-vue-icon.mjs` + }, + importStyles: [`${VITE_CDN_DOMAIN}/@opentiny/vue-theme@${importMapVersions.tinyVue}/index.css`] + } + + // 以下内容由于物料协议不支持声明子依赖而@opentiny/vue需要依赖所以需要补充 + const tinyVueRequire = { + imports: { + '@opentiny/vue-common': `${VITE_CDN_DOMAIN}/@opentiny/vue@${importMapVersions.tinyVue}/runtime/tiny-vue-common.mjs`, + '@opentiny/vue-locale': `${VITE_CDN_DOMAIN}/@opentiny/vue@${importMapVersions.tinyVue}/runtime/tiny-vue-locale.mjs` + } + } + + const importMap = { + imports: { + vue: `${VITE_CDN_DOMAIN}/vue@${importMapVersions.vue}/dist/vue.runtime.esm-browser.prod.js`, + 'vue-i18n': `${VITE_CDN_DOMAIN}/vue-i18n@${importMapVersions.vueI18n}/dist/vue-i18n.esm-browser.js`, + ...blockRequire.imports, + ...tinyVueRequire.imports + } + } + + const importStyles = [...blockRequire.importStyles] + + return { + importMap, + importStyles + } +} diff --git a/packages/canvas/README.md b/packages/canvas/README.md new file mode 100644 index 0000000000..63f827de33 --- /dev/null +++ b/packages/canvas/README.md @@ -0,0 +1,36 @@ +# tiny-engine-canvas + +## build + +Note: tiny-engine-canvas module contains two parts, *canvas-container* and *canvas*, and canvas is rendered in iframe window +During the build phase, they are built separately. The build products use different external strategies, and the *canvas* product will be embedded in base64 format within the *canvas-container* product, +since the library-mode-build now only supports embed dependent assets in base64 format, and the embedded base64 format is more general for other build and pack tools. +You should notice the difference between the products of *canvas-container* and *canvas*. The product of *canvas-container* works fine with other *tiny-engine-\** packages with unfixed versions. The product of *canvas* only externalizes `vue` and `vue-i18n`; the rest of the dependent packages will be packed and won't be replaceable with other versions. (This means you will not be able to joint-debug the dependent packages inside the *canvas* product code. You should joint-debug using the canvas module source code.) + +Develop and debug the canvas module in development mode requires: + +1) Setting the Vite config with `devAlias` (`resolve.alias`), which points the canvas package name to the canvas module source code. +2) Using the `canvas-dev-external` plugin. + +Vite uses esbuild in development. The `devAlias` configuration makes the source code of the canvas module work and allows for joint debugging. +However, esbuild won't perceive the external configuration for rollup; it will resolve `vue` and other dependencies (that we originally wanted to exclude and let them naturally point to the package addresses in the `importmap`) to `node_modules`. +For this reason, we need the `canvas-dev-external` plugin. It can externalize the dependencies specified in the `importmap` of *canvas* for esbuild. +On the other hand, externalizing the dependencies will affect all other packages in the same runtime. This plugin will generate another `importmap` that points all affected dependencies to `node_modules` to eliminate the side effects. + +Finally, modules inside and outside the *canvas* iframe can joint-debug well, and we accomplish the goal of decoupling the versions of `vue` and other dependencies inside and outside the *canvas*. (That is, we can use completely different versions of `vue` inside or outside the *canvas*; we don’t need to synchronize the versions. +In some cases, we may want to use a lower or higher version for better support.) + +## 构建 + +注意: tiny-engine-canvas模块目前含有两部分,*画布容器*和*画布*, 其中*画布*在iframe内进行渲染。 +在构建阶段canvas包使用分开构建,在构建完的产物中,*画布容器*和*画布*使用了不同的external策略,打包完后*画布*源码会base64内嵌到*画布容器*源码中。 +目前库打包依赖资源仅支持base64,且base64内嵌普适性较高,在其他非vite打包工具下能正常工作。 +所以使用canvas包产物应该注意到,*画布容器*打包后仍然可以和其他*tiny-engine-\**的包的不同版本配合工作,而*画布*本身打包完后内容就固化了,不会再和其他包联动。 + +开发态开发和调试canvas包需要: +1) vite配置中 devAlias(`resolve.alias`)将canvas包名指向canvas的src源码 +2) 搭配canvas-dev-external插件使用 +当前开发态vite使用了esbuild, devAlias配置将能正常工作和联调, 但是esbuild不接收来自rollup配置的externals,将导致原本画布应该走`importmap`解析的内容指向了`node_modules`, +故需要搭配canvas-dev-external插件,一方面将*画布*的external项排除,另一方面,对*画布*外也造成的影响将通过另一个指向`node_modules`的`importmap`进行补偿 + +最后,通过以上方式,画布内外能够很好地联调,并且完成了画布内外vue版本的解耦(即可以支持使用完全不同的vue版本) diff --git a/packages/canvas/breadcrumb/index.js b/packages/canvas/breadcrumb/index.js new file mode 100644 index 0000000000..914ab8f14e --- /dev/null +++ b/packages/canvas/breadcrumb/index.js @@ -0,0 +1 @@ +export { default as CanvasBreadcrumb } from './src/CanvasBreadcrumb.vue' diff --git a/packages/canvas/breadcrumb/src/CanvasBreadcrumb.vue b/packages/canvas/breadcrumb/src/CanvasBreadcrumb.vue new file mode 100644 index 0000000000..228ce941d5 --- /dev/null +++ b/packages/canvas/breadcrumb/src/CanvasBreadcrumb.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/packages/canvas/canvas.html b/packages/canvas/canvas.html new file mode 100644 index 0000000000..a8e0b27dea --- /dev/null +++ b/packages/canvas/canvas.html @@ -0,0 +1,212 @@ + + + + + + + + Vite App + + +
+ + + diff --git a/packages/canvas/common/index.js b/packages/canvas/common/index.js new file mode 100644 index 0000000000..72bc39ea0d --- /dev/null +++ b/packages/canvas/common/index.js @@ -0,0 +1,2 @@ +export * from './src/constant.js' +export * from './src/utils.js' diff --git a/packages/canvas/common/src/constant.js b/packages/canvas/common/src/constant.js new file mode 100644 index 0000000000..9fa572a249 --- /dev/null +++ b/packages/canvas/common/src/constant.js @@ -0,0 +1,3 @@ +export const NODE_UID = 'data-uid' +export const NODE_TAG = 'data-tag' +export const NODE_LOOP = 'loop-id' diff --git a/packages/canvas/common/src/utils.js b/packages/canvas/common/src/utils.js new file mode 100644 index 0000000000..cd27312305 --- /dev/null +++ b/packages/canvas/common/src/utils.js @@ -0,0 +1,96 @@ +export const addScript = (src, doc = document) => { + return new Promise((resolve, reject) => { + const script = doc.createElement('script') + + script.setAttribute('type', 'text/javascript') + script.setAttribute('src', src) + + script.async = false + + script.onload = resolve + script.onerror = reject + + doc.querySelector('head').appendChild(script) + }) +} + +export const addStyle = (href, doc = document) => { + return new Promise((resolve, reject) => { + const link = doc.createElement('link') + + link.setAttribute('href', href) + link.setAttribute('rel', 'stylesheet') + + link.onload = resolve + link.onerror = reject + + doc.querySelector('head').appendChild(link) + }) +} + +export const copyObject = (node) => { + if (typeof node === 'object') { + if (!node) { + return node + } + + if (Array.isArray(node)) { + return node.map(copyObject) + } + + const res = {} + Object.keys(node).forEach((key) => { + res[key] = copyObject(node[key]) + }) + + const { componentName, id } = res + + if (componentName && id) { + delete res.id + } + + return res + } + + return node +} + +/** + * 动态导入组件,缓存组件对象 + * @param {object} param0 组件的依赖: { package: 包名,script:js文件cdn, components:组件id和导出组件名的映射关系} + * @returns + */ +export const dynamicImportComponents = async ({ package: pkg, script, components }) => { + if (!script) return + const scriptUrl = script.startsWith('.') ? new URL(script, location.href).href : script + + if (!window.TinyComponentLibs[pkg]) { + const modules = await import(/* @vite-ignore */ scriptUrl) + + window.TinyComponentLibs[pkg] = modules + } + + Object.entries(components).forEach(([componentId, exportName]) => { + const modules = window.TinyComponentLibs[pkg] + + if (!window.TinyLowcodeComponent[componentId]) { + window.TinyLowcodeComponent[componentId] = modules[exportName] + } + }) +} + +/** + * 更新区块/组件依赖 + * @param {object} param0 依赖的CDN信息 + */ +export const updateDependencies = ({ detail }) => { + const { scripts = [], styles = [] } = detail || {} + const { styles: canvasStyles } = window.thirdPartyDeps + const newStyles = [...styles].filter((item) => !canvasStyles.has(item)) + + newStyles.forEach((item) => canvasStyles.add(item)) + + const promises = [...newStyles].map((src) => addStyle(src)).concat(scripts.map(dynamicImportComponents)) + + Promise.allSettled(promises) +} diff --git a/packages/canvas/container/index.js b/packages/canvas/container/index.js new file mode 100644 index 0000000000..1cc5930465 --- /dev/null +++ b/packages/canvas/container/index.js @@ -0,0 +1,7 @@ +import CanvasContainer from './src/CanvasContainer.vue' +import metaData from './meta' + +export default { + ...metaData, + entry: CanvasContainer +} diff --git a/packages/canvas/container/meta.js b/packages/canvas/container/meta.js new file mode 100644 index 0000000000..491dad2aa2 --- /dev/null +++ b/packages/canvas/container/meta.js @@ -0,0 +1,3 @@ +export default { + id: 'engine.canvas.container' +} diff --git a/packages/canvas/container/src/CanvasContainer.vue b/packages/canvas/container/src/CanvasContainer.vue new file mode 100644 index 0000000000..c757c4278f --- /dev/null +++ b/packages/canvas/container/src/CanvasContainer.vue @@ -0,0 +1,276 @@ + + + + diff --git a/packages/canvas/container/src/components/CanvasAction.vue b/packages/canvas/container/src/components/CanvasAction.vue new file mode 100644 index 0000000000..04284bf0e6 --- /dev/null +++ b/packages/canvas/container/src/components/CanvasAction.vue @@ -0,0 +1,737 @@ + + + + diff --git a/src/canvas/src/components/container/CanvasDivider.vue b/packages/canvas/container/src/components/CanvasDivider.vue similarity index 94% rename from src/canvas/src/components/container/CanvasDivider.vue rename to packages/canvas/container/src/components/CanvasDivider.vue index 84c1fcf110..9f0b9dcd51 100644 --- a/src/canvas/src/components/container/CanvasDivider.vue +++ b/packages/canvas/container/src/components/CanvasDivider.vue @@ -24,7 +24,7 @@ + + diff --git a/src/canvas/src/components/container/CanvasResize.vue b/packages/canvas/container/src/components/CanvasResize.vue similarity index 85% rename from src/canvas/src/components/container/CanvasResize.vue rename to packages/canvas/container/src/components/CanvasResize.vue index 9e1f87ca65..68a11894d2 100644 --- a/src/canvas/src/components/container/CanvasResize.vue +++ b/packages/canvas/container/src/components/CanvasResize.vue @@ -11,32 +11,24 @@ + + diff --git a/packages/canvas/index.js b/packages/canvas/index.js new file mode 100644 index 0000000000..14596342c6 --- /dev/null +++ b/packages/canvas/index.js @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ +import { CanvasBreadcrumb } from './breadcrumb' + +// meta app +import CanvasContainer from './container' +import CanvasLayout from './layout' +import DesignCanvas from './DesignCanvas' + +export { CanvasContainer, CanvasLayout, DesignCanvas } +export { createRender } from './render' + +export default { + ...DesignCanvas, + components: { + CanvasBreadcrumb + }, + layout: CanvasLayout, + metas: [CanvasContainer] +} diff --git a/packages/canvas/init-canvas/canvas.html b/packages/canvas/init-canvas/canvas.html new file mode 100644 index 0000000000..e9d2b2efaa --- /dev/null +++ b/packages/canvas/init-canvas/canvas.html @@ -0,0 +1,267 @@ + + + + + + + + + + + +
+
+
+
+
+
+
+ + + diff --git a/packages/canvas/init-canvas/canvas.js b/packages/canvas/init-canvas/canvas.js new file mode 100644 index 0000000000..cbfae18466 --- /dev/null +++ b/packages/canvas/init-canvas/canvas.js @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ +import { createRender } from '../render' + +createRender(window.parent.TinyGlobalConfig) diff --git a/packages/canvas/init-canvas/init-canvas.js b/packages/canvas/init-canvas/init-canvas.js new file mode 100644 index 0000000000..cdac3432dd --- /dev/null +++ b/packages/canvas/init-canvas/init-canvas.js @@ -0,0 +1,14 @@ +import canvasScript from './canvas?url&build=canvas' +import canvasHtml from './canvas.html?raw' + +export function initCanvas(importMap = {}, importStyleUrls = []) { + return { + html: canvasHtml + .replace('', ``) + .replace( + '', + importStyleUrls.map((styleUrl) => ``).join('\n') + ) + .replace('', ``) + } +} diff --git a/packages/canvas/layout/index.js b/packages/canvas/layout/index.js new file mode 100644 index 0000000000..9a3382240d --- /dev/null +++ b/packages/canvas/layout/index.js @@ -0,0 +1,7 @@ +import CanvasLayout from './src/CanvasLayout.vue' +import metaData from './meta' + +export default { + ...metaData, + entry: CanvasLayout +} diff --git a/packages/canvas/layout/meta.js b/packages/canvas/layout/meta.js new file mode 100644 index 0000000000..5d429a5074 --- /dev/null +++ b/packages/canvas/layout/meta.js @@ -0,0 +1,3 @@ +export default { + id: 'engine.canvas.layout' +} diff --git a/packages/canvas/layout/src/CanvasLayout.vue b/packages/canvas/layout/src/CanvasLayout.vue new file mode 100644 index 0000000000..bb75e32265 --- /dev/null +++ b/packages/canvas/layout/src/CanvasLayout.vue @@ -0,0 +1,39 @@ + + + + diff --git a/packages/canvas/meta.js b/packages/canvas/meta.js new file mode 100644 index 0000000000..0952aa43dd --- /dev/null +++ b/packages/canvas/meta.js @@ -0,0 +1,3 @@ +export default { + id: 'engine.canvas' +} diff --git a/packages/canvas/package.json b/packages/canvas/package.json new file mode 100644 index 0000000000..2551272de6 --- /dev/null +++ b/packages/canvas/package.json @@ -0,0 +1,56 @@ +{ + "name": "@opentiny/tiny-engine-canvas", + "version": "2.0.0-alpha.2", + "publishConfig": { + "access": "public" + }, + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "main": "dist/index.js", + "module": "dist/index.js", + "files": [ + "dist" + ], + "repository": { + "type": "git", + "url": "https://github.com/opentiny/tiny-engine", + "directory": "packages/canvas" + }, + "bugs": { + "url": "https://github.com/opentiny/tiny-engine/issues" + }, + "author": "OpenTiny Team", + "license": "MIT", + "homepage": "https://opentiny.design/tiny-engine", + "type": "module", + "dependencies": { + "@babel/core": "7.18.13", + "@opentiny/tiny-engine-builtin-component": "workspace:*", + "@opentiny/tiny-engine-common": "workspace:*", + "@opentiny/tiny-engine-http": "workspace:*", + "@opentiny/tiny-engine-i18n-host": "workspace:*", + "@opentiny/tiny-engine-meta-register": "workspace:*", + "@opentiny/tiny-engine-utils": "workspace:*", + "@opentiny/tiny-engine-webcomponent-core": "workspace:*", + "@vue/babel-plugin-jsx": "1.1.1", + "@vue/shared": "^3.3.4", + "@vueuse/core": "^9.6.0" + }, + "devDependencies": { + "@opentiny/tiny-engine-vite-plugin-meta-comments": "workspace:*", + "@vitejs/plugin-vue": "^5.1.2", + "@vitejs/plugin-vue-jsx": "^4.0.1", + "rollup-plugin-polyfill-node": "^0.13.0", + "vite": "^5.4.2" + }, + "peerDependencies": { + "@opentiny/vue": "^3.14.0", + "@opentiny/vue-icon": "^3.14.0", + "@opentiny/vue-renderless": "^3.14.0", + "vue": "^3.4.15", + "vue-i18n": "^9.9.0" + } +} diff --git a/packages/canvas/render/index.js b/packages/canvas/render/index.js new file mode 100644 index 0000000000..368299b80f --- /dev/null +++ b/packages/canvas/render/index.js @@ -0,0 +1 @@ +export { createRender } from './src/runner' diff --git a/src/canvas/src/components/render/CanvasEmpty.vue b/packages/canvas/render/src/CanvasEmpty.vue similarity index 100% rename from src/canvas/src/components/render/CanvasEmpty.vue rename to packages/canvas/render/src/CanvasEmpty.vue diff --git a/src/canvas/src/components/render/RenderMain.js b/packages/canvas/render/src/RenderMain.js similarity index 84% rename from src/canvas/src/components/render/RenderMain.js rename to packages/canvas/render/src/RenderMain.js index 29a7ac33b6..04e2c928fd 100644 --- a/src/canvas/src/components/render/RenderMain.js +++ b/packages/canvas/render/src/RenderMain.js @@ -12,14 +12,27 @@ import { h, provide, inject, nextTick, shallowReactive, reactive, ref, watch, watchEffect } from 'vue' import { I18nInjectionKey } from 'vue-i18n' +import TinyVue from '@opentiny/vue' +import * as TinyVueIcon from '@opentiny/vue-icon' import { useBroadcastChannel } from '@vueuse/core' -import { constants } from '@opentiny/tiny-engine-utils' -import { generateFunction } from '@opentiny/tiny-engine-controller/utils' +import { constants, utils as commonUtils } from '@opentiny/tiny-engine-utils' import renderer, { parseData, setConfigure, setController, globalNotify, isStateAccessor } from './render' -import { getNode as getNodeById, clearNodes, getRoot, setContext, getContext, setCondition, context } from './context' +import { + getNode as getNodeById, + clearNodes, + getRoot, + setContext, + getContext, + setCondition, + getCondition, + getConditions, + context, + setNode +} from './context' import CanvasEmpty from './CanvasEmpty.vue' const { BROADCAST_CHANNEL } = constants +const { parseFunction: generateFunction } = commonUtils const reset = (obj) => { Object.keys(obj).forEach((key) => delete obj[key]) @@ -37,15 +50,13 @@ const globalState = ref([]) const stores = shallowReactive({}) const dataSourceMap = shallowReactive({}) -const Func = Function - watchEffect(() => { reset(stores) globalState.value.forEach(({ id, state = {}, getters = {} }) => { const computedGetters = Object.keys(getters).reduce( (acc, key) => ({ ...acc, - [key]: new Func('return ' + getters[key].value)().call(acc, state) + [key]: parseData(getters[key], state, acc) }), {} ) @@ -63,13 +74,13 @@ const setUtils = (data, clear, isForceRefresh) => { const utilsCollection = {} // 目前画布还不具备远程加载utils工具类的功能,目前只能加载TinyVue组件库中的组件工具 data?.forEach((item) => { - const util = window.TinyVue[item.name] + const util = TinyVue[item.content.exportName] if (util) { utilsCollection[item.name] = util } // 此处需要把工具类中的icon图标也加入utils上下文环境 - const utilIcon = window.TinyVueIcon[item.name] + const utilIcon = TinyVueIcon[item.content.exportName] if (utilIcon) { utilsCollection[item.name] = utilIcon } @@ -88,6 +99,19 @@ const setUtils = (data, clear, isForceRefresh) => { } } +const updateUtils = (data) => { + setUtils(data, false, true) +} + +const deleteUtils = (data) => { + data?.forEach((item) => { + if (utils[item.name]) { + delete utils[item.name] + } + }) + setUtils([], false, true) +} + const setBridge = (data, clear) => { clear && reset(bridge) Object.assign(bridge, data) @@ -162,7 +186,7 @@ const setState = (data, clear) => { Object.assign(state, parseData(data, {}, getContext()) || {}) // 在状态变量合并之后,执行访问器中watchEffect,为了可以在访问器函数中可以访问其他state变量 - Object.entries(data)?.forEach(([key, stateData]) => { + Object.entries(data || {})?.forEach(([key, stateData]) => { if (isStateAccessor(stateData)) { const accessor = stateData.accessor if (accessor?.getter?.value) { @@ -332,6 +356,35 @@ const setSchema = async (data) => { const getNode = (id, parent) => (id ? getNodeById(id, parent) : schema) +let canvasRenderer = null + +const defaultRenderer = function () { + // 渲染画布增加根节点,与出码和预览保持一致 + const rootChildrenSchema = { + componentName: 'div', + // 手动添加一个唯一的属性,后续在画布选中此节点时方便处理额外的逻辑。由于没有修改schema,不会影响出码 + props: { ...schema.props, 'data-id': 'root-container' }, + children: schema.children + } + + return h( + 'tiny-i18n-host', + { + locale: 'zh_CN', + key: refreshKey.value, + ref: 'page', + className: 'design-page' + }, + schema.children?.length ? h(renderer, { schema: rootChildrenSchema, parent: schema }) : [h(CanvasEmpty)] + ) +} + +const getRenderer = () => canvasRenderer || defaultRenderer + +const setRenderer = (fn) => { + canvasRenderer = fn +} + export default { setup() { provide('rootSchema', schema) @@ -363,24 +416,15 @@ export default { ) }, render() { - return h( - 'tiny-i18n-host', - { - locale: 'zh_CN', - key: refreshKey.value, - ref: 'page', - className: 'design-page' - }, - schema.children?.length - ? schema.children.map((child) => h(renderer, { schema: child, parent: schema })) - : [h(CanvasEmpty)] - ) + return getRenderer().call(this) } } export const api = { getUtils, setUtils, + updateUtils, + deleteUtils, getBridge, setBridge, getMethods, @@ -399,10 +443,13 @@ export const api = { getRoot, setPagecss, setCondition, + getCondition, + getConditions, getGlobalState, getDataSourceMap, setDataSourceMap, - setGlobalState + setGlobalState, + setNode, + getRenderer, + setRenderer } - -window.api = api diff --git a/src/canvas/src/components/builtin/CanvasBox.vue b/packages/canvas/render/src/builtin/CanvasBox.vue similarity index 100% rename from src/canvas/src/components/builtin/CanvasBox.vue rename to packages/canvas/render/src/builtin/CanvasBox.vue diff --git a/src/canvas/src/components/builtin/CanvasCollection.js b/packages/canvas/render/src/builtin/CanvasCollection.js similarity index 96% rename from src/canvas/src/components/builtin/CanvasCollection.js rename to packages/canvas/render/src/builtin/CanvasCollection.js index 98def24732..b5cb227629 100644 --- a/src/canvas/src/components/builtin/CanvasCollection.js +++ b/packages/canvas/render/src/builtin/CanvasCollection.js @@ -10,9 +10,9 @@ * */ -import { getController } from '../render/render' -import { api } from '../render/RenderMain' -import { useModal } from '@opentiny/tiny-engine-controller' +import { getController } from '../render' +import { api } from '../RenderMain' +import { useModal } from '@opentiny/tiny-engine-meta-register' const NAME_PREFIX = { loop: 'loop', @@ -123,7 +123,7 @@ const askShouldImportData = ({ node, sourceRef }) => { node.props.columns = generateAssginColumns(sourceColums, node.props.columns) }, cancel() { - node.props.columns = [...sourceRef.value.data?.columns] + node.props.columns = [...(sourceRef.value.data?.columns || [])] } }) } @@ -139,7 +139,7 @@ const updateNodeHandler = ({ node, sourceRef, pageSchema, sourceName, methodName if (node.props.columns.length) { askShouldImportData({ node, sourceRef }) } else { - node.props.columns = [...sourceRef.value.data?.columns] + node.props.columns = [...(sourceRef.value.data?.columns || [])] } const pageConfig = { diff --git a/src/canvas/src/components/builtin/CanvasCollection.vue b/packages/canvas/render/src/builtin/CanvasCollection.vue similarity index 96% rename from src/canvas/src/components/builtin/CanvasCollection.vue rename to packages/canvas/render/src/builtin/CanvasCollection.vue index 35173f1eaa..d033924f34 100644 --- a/src/canvas/src/components/builtin/CanvasCollection.vue +++ b/packages/canvas/render/src/builtin/CanvasCollection.vue @@ -8,13 +8,13 @@ + diff --git a/src/common/component/CloseIcon.vue b/packages/common/component/CloseIcon.vue similarity index 100% rename from src/common/component/CloseIcon.vue rename to packages/common/component/CloseIcon.vue diff --git a/src/common/component/ConfigCollapse.vue b/packages/common/component/ConfigCollapse.vue similarity index 100% rename from src/common/component/ConfigCollapse.vue rename to packages/common/component/ConfigCollapse.vue diff --git a/src/common/component/ConfigGroup.vue b/packages/common/component/ConfigGroup.vue similarity index 100% rename from src/common/component/ConfigGroup.vue rename to packages/common/component/ConfigGroup.vue diff --git a/src/common/component/ConfigItem.vue b/packages/common/component/ConfigItem.vue similarity index 86% rename from src/common/component/ConfigItem.vue rename to packages/common/component/ConfigItem.vue index f2d6de5744..8fcd276d4b 100644 --- a/src/common/component/ConfigItem.vue +++ b/packages/common/component/ConfigItem.vue @@ -70,7 +70,8 @@
- - - + + >
@@ -103,15 +105,21 @@ import { inject, computed, watch, ref, reactive, provide } from 'vue' import { Popover, Tooltip } from '@opentiny/vue' import { IconWriting, IconHelpCircle, IconPlusCircle } from '@opentiny/vue-icon' import { typeOf } from '@opentiny/vue-renderless/common/type' +import { + useHistory, + useProperties, + useMaterial, + useLayout, + useCanvas, + getConfigurator +} from '@opentiny/tiny-engine-meta-register' +import { utils } from '@opentiny/tiny-engine-utils' import i18n from '../js/i18n' -import { MetaComponents } from '../index' -import MetaBindVariable from './MetaBindVariable.vue' -import MetaCodeEditor from './MetaCodeEditor.vue' import MultiTypeSelector from './MultiTypeSelector.vue' -import { useHistory, useProperties, useResource, useLayout, useCanvas } from '@opentiny/tiny-engine-controller' -import { generateFunction } from '@opentiny/tiny-engine-controller/utils' import { SCHEMA_DATA_TYPE, PAGE_STATUS, TYPES } from '../js/constants' +const { parseFunction: generateFunction } = utils + const hasRule = (required, rules) => { if (required) { return true @@ -122,8 +130,6 @@ const hasRule = (required, rules) => { export default { components: { MultiTypeSelector, - MetaCodeEditor, - MetaBindVariable, TinyPopover: Popover, TinyTooltip: Tooltip, IconWriting: IconWriting(), @@ -162,6 +168,9 @@ export default { }, emits: ['update:modelValue'], setup(props, { emit }) { + const CodeConfigurator = getConfigurator('CodeConfigurator') + const VariableConfigurator = getConfigurator('VariableConfigurator') + const { t, locale } = i18n.global const verification = reactive({ @@ -177,7 +186,7 @@ export default { const hidden = computed(() => props.hidden) const widget = computed(() => props.property?.widget || {}) const propLabel = computed( - () => props.property.property || props.property?.label?.text?.[locale.value] || props.property?.label?.text + () => props.property?.label?.text?.[locale.value] || props.property?.label?.text || props.property.property ) const multiType = computed(() => Array.isArray(widget.value.component)) const isBindingState = ref(false) // 当前是否是绑定到状态变量state @@ -192,7 +201,9 @@ export default { !props.onlyEdit && propLabel.value && (isBindingState.value || - !['MetaGroupItem', 'MetaArrayItem', 'MetaRelatedColumns'].includes(widget.value.component)) && + !['GroupItemConfigurator', 'ArrayItemConfigurator', 'RelatedColumnsConfigurator'].includes( + widget.value.component + )) && !multiType.value ) const propDescription = computed( @@ -201,13 +212,14 @@ export default { (props.property?.label?.text?.[locale.value] ?? props.property?.label?.text) ) const isLinked = computed(() => Boolean(props.property.linked)) - const component = computed(() => - multiType.value + const component = computed(() => { + // TODO: 需要弄清楚 props.metaComponents[widget.value.component] 是什么场景 + return multiType.value ? MultiTypeSelector - : props.metaComponents[widget.value.component] || - MetaComponents[widget.value.component] || - MetaComponents['MetaInput'] - ) + : getConfigurator(widget.value.component) || + props.metaComponents[widget.value.component] || + getConfigurator('InputConfigurator') + }) const bindValue = computed(() => { let value = props.property?.widget?.props?.modelValue @@ -236,15 +248,19 @@ export default { return props.property.labelPosition } - if (props.property.widget?.component === 'MetaSwitch') { + if (['CheckBoxConfigurator', 'SwitchConfigurator'].includes(props.property.widget?.component)) { return 'left' } - return 'top' + if (props.property.widget?.component === 'CodeConfigurator') { + return 'top' + } + + return 'auto' }) const updateValue = (value) => { - const { property } = props.property + const { property, type } = props.property const { setProp } = useProperties() // 是否双向绑定 @@ -252,7 +268,7 @@ export default { const currentComponent = useProperties().getSchema().componentName const { schema: { events = {} } - } = useResource().getMaterial(currentComponent) + } = useMaterial().getMaterial(currentComponent) if (Object.keys(events).includes(`onUpdate:${property}`)) { // 默认情况下,v-model 在组件上都是使用 modelValue 作为 prop,并以 update:modelValue 作为对应的事件。 @@ -272,7 +288,10 @@ export default { return } - if (property !== 'name' && props.property.widget.component === 'MetaSelectIcon') { + if ( + property !== 'name' && + ['SelectIconConfigurator', 'SelectIconConfigurator'].includes(props.property.widget.component) + ) { // icon以组件形式传入,实现类似:icon="IconPlus"的图标配置(排除Icon组件本身) value = { componentName: 'Icon', @@ -283,7 +302,7 @@ export default { } if (props.isTopLayer) { - setProp(property, value) + setProp(property, value, type) } } @@ -295,16 +314,13 @@ export default { result.message = typeof message === 'string' ? message : message?.[locale.value] } + const isEmptyInputValue = (value) => { + // 通过 value == null 做隐式类型转换 + // 空值约定为 undefined | null | '' + return value == null || (typeOf(value) === TYPES.StringType && value.trim() === '') + } const verifyRequired = (value) => { - if (typeOf(value) === TYPES.BooleanType) { - return true - } - - if (typeOf(value) === TYPES.StringType) { - return value.trim() - } - - return value + return !isEmptyInputValue(value) } const verifyValue = (value = '', rules = []) => { @@ -447,19 +463,21 @@ export default { } } - const isRelatedComponents = (component) => ['MetaRelatedEditor', 'MetaRelatedColumns'].includes(component) + const isRelatedComponents = (component) => + ['RelatedEditorConfigurator', 'RelatedColumnsConfigurator'].includes(component) const showBindState = computed( () => !props.onlyEdit && (isBindingState.value || isLinked.value) && !isRelatedComponents(widget.value.component) ) return { + CodeConfigurator, + VariableConfigurator, verification, showCodeEditIcon, editorModalRef, isBindingState, component, - MetaComponents, hidden, widget, required, @@ -496,16 +514,18 @@ export default { justify-content: space-between; position: relative; align-items: center; + padding-bottom: 8px; + &:last-child { + padding-bottom: 0; + } &.active { background: var(--ti-lowcode-meta-config-item-active-bg); } .item-label { - width: 30%; color: var(--ti-lowcode-meta-config-item-label-color); font-size: 14px; display: flex; - margin-right: 5px; line-height: 18px; } @@ -514,7 +534,6 @@ export default { } .item-input { - flex: 1; display: flex; justify-content: space-between; align-items: center; @@ -583,7 +602,7 @@ export default { .prop-description { margin-top: 8px; - color: var(--ti-lowcode-common-text-desc-color); + color: var(--te-common-text-weaken); } .label-tip { padding: 2px 0; @@ -598,9 +617,9 @@ export default { .item-warp { display: flex; + gap: 8px; width: 100%; - align-items: center; - padding: 8px 0; + .pro-underline { border-bottom: 1px dashed transparent; &:hover { @@ -611,25 +630,30 @@ export default { border-bottom: 1px solid var(--ti-lowcode-toolbar-active-bg); border-top: 1px solid var(--ti-lowcode-toolbar-active-bg); } - &.top, - &.bottom { - flex-direction: column; + &.auto { + flex-wrap: wrap; + align-items: center; .item-label { - width: 100%; - text-align: center; + min-width: 30%; } .item-input { - width: 100%; - display: flex; + width: calc(70% - 8px); + flex-grow: 1; } } - &.top { - flex-direction: column; - align-items: flex-start; + &.left { + flex-wrap: wrap; + align-items: center; .item-label { - margin-bottom: 8px; + width: 30%; + } + .item-input { + width: calc(70% - 8px); } } + &.top { + flex-direction: column; + } &.bottom { flex-direction: column-reverse; } @@ -637,6 +661,9 @@ export default { .item-label { display: none; } + .item-input { + flex-grow: 1; + } } } .error-tips { diff --git a/src/common/component/ConfigRender.vue b/packages/common/component/ConfigRender.vue similarity index 100% rename from src/common/component/ConfigRender.vue rename to packages/common/component/ConfigRender.vue diff --git a/src/common/component/EmptyTip.vue b/packages/common/component/EmptyTip.vue similarity index 100% rename from src/common/component/EmptyTip.vue rename to packages/common/component/EmptyTip.vue diff --git a/packages/common/component/I18nInput.vue b/packages/common/component/I18nInput.vue new file mode 100644 index 0000000000..076fe34fb2 --- /dev/null +++ b/packages/common/component/I18nInput.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/common/component/LifeCycles.vue b/packages/common/component/LifeCycles.vue similarity index 80% rename from src/common/component/LifeCycles.vue rename to packages/common/component/LifeCycles.vue index a1b67e0758..51077e740e 100644 --- a/src/common/component/LifeCycles.vue +++ b/packages/common/component/LifeCycles.vue @@ -1,12 +1,8 @@