diff --git a/CHANGELOG.md b/CHANGELOG.md index f6b9745965867272cf9dd90771bdcb567464ab62..72f76e238afad76aafc75b830853158df179788f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,18 @@ ### Fixed - 修复时间范围选择无值时点击不出选择弹框及适配值分隔符与pc端保持一致 +- 修复门户视图权重低导致未生效 + +### Change + +- 编辑器对齐、行高、换行统一调整 +- 添加移动端安全距离 +- 表单分组样式调整 style2添加padding阴影 +- 多数据视图引擎支持单选配置 + +### Added + +- 添加dingtalk-jsapi依赖 ## [0.0.31] - 2024-10-27 diff --git a/package.json b/package.json index d1f97958b4ced764f8636d28e54b941b4cf7c41c..8814de2bd3f63ed4abe409f1eaa0d94c16bec65b 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@ibiz-template/mob-theme": "^0.2.17", "async-validator": "^4.2.5", "cherry-markdown": "^0.8.26", + "dingtalk-jsapi": "^3.0.38", "dayjs": "^1.11.10", "echarts": "^5.4.3", "lodash-es": "^4.17.21", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e121553879e4ba1973ee1c805a864f1a36c34fa..e12be28ab1f8e3e74cbb2697a897bc3f9c990ee0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,6 +41,9 @@ dependencies: dayjs: specifier: ^1.11.10 version: 1.11.10 + dingtalk-jsapi: + specifier: ^3.0.38 + version: 3.0.38 echarts: specifier: ^5.4.3 version: 5.4.3 @@ -3629,6 +3632,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /dingtalk-jsapi@3.0.38: + resolution: {integrity: sha512-Hm77aRq2k3KPyBF0lGi0Nk9qjdABF0fp+m4gsnEKGJ+0Iyu+rimwfxkRSjFd/HF2OvFbYVNBOKhqj9NitC46ig==} + dependencies: + promise-polyfill: 7.1.2 + dev: false + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -6860,6 +6869,10 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + /promise-polyfill@7.1.2: + resolution: {integrity: sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==} + dev: false + /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false diff --git a/src/control/form/form-detail/form-group-panel/form-group-panel.scss b/src/control/form/form-detail/form-group-panel/form-group-panel.scss index 658d00d60ffab481600c8853761417dc0ae2feef..b02875a9de967ba4dbacb7eb02c7dab8966108cd 100644 --- a/src/control/form/form-detail/form-group-panel/form-group-panel.scss +++ b/src/control/form/form-detail/form-group-panel/form-group-panel.scss @@ -3,7 +3,6 @@ $form-group: ( footer-padding: getCssVar(spacing, tight) getCssVar(spacing, base), show-more-color: getCssVar(color-primary), padding: getCssVar(spacing-extra-tight), - border-radius: getCssVar('border-radius', 'large'), ); $form-group-header: ( @@ -35,7 +34,6 @@ $form-group-content: ( @include b(form-group) { overflow: hidden; background-color: getCssVar('form-group', 'bg-color'); - padding: getCssVar('form-group', 'padding'); // 分组标题 @include e(caption) { @@ -53,7 +51,19 @@ $form-group-content: ( @include m(style2) { background-color: getCssVar(color, bg, 0); - border-radius: getCssVar('form-group', 'border-radius'); + padding: getCssVar('form-group', 'padding'); + >.#{bem(form-group-header)} { + border-radius: getCssVar('border-radius', 'large') getCssVar('border-radius', 'large') 0 0; + } + .#{bem(form-group, content)} { + padding: getCssVar('border-radius', 'large') 0; + border-radius: getCssVar('border-radius', 'large'); + background-color: getCssVar('form-group-content', 'bg-color'); + } + >.#{bem(form-group-header)} + .#{bem(form-group, content)} { + padding-top: 0; + border-radius: 0 0 getCssVar('border-radius', 'large') getCssVar('border-radius', 'large'); + } } } diff --git a/src/control/form/form-detail/form-item/form-item-container/form-item-container.scss b/src/control/form/form-detail/form-item/form-item-container/form-item-container.scss index bf9cba7931f67dcdf15ef4d019b9fa18519f938c..8af1af17d6962fab9aef96c24b9a400e15622483 100644 --- a/src/control/form/form-detail/form-item/form-item-container/form-item-container.scss +++ b/src/control/form/form-detail/form-item/form-item-container/form-item-container.scss @@ -71,7 +71,7 @@ $form-item-label: (line-height: 1, width: getCssVar(form-item-container, label-width); overflow: visible; color: getCssVar(form-item-label, text-color); - + height: getCssVar(form-item, line-height); span { @include utils-ellipsis; @@ -87,10 +87,17 @@ $form-item-label: (line-height: 1, width: 100%; text-align: getCssVar(form-item-container, editor-align); min-height: calc(getCssVar(form-item, line-height) + 2 * getCssVar(spacing, tight)); + #{--van-cell-line-height}: getCssVar(form-item, line-height); + #{--van-cell-line-height}: getCssVar(form-item, line-height); .van-cell { padding-bottom: 0; } + + ::placeholder { + color: getCssVar('form-item', 'placeholder-color'); + -webkit-text-fill-color: getCssVar('form-item', 'placeholder-color'); + } } // 必填图标 * diff --git a/src/control/form/form-detail/form-page/form-page-item/form-page-item.scss b/src/control/form/form-detail/form-page/form-page-item/form-page-item.scss index efce6af5a5302e14215dae8986cb61a7483b6fe6..8dfbe859a513d03ad5b88415e1dda569ab6c1ec7 100644 --- a/src/control/form/form-detail/form-page/form-page-item/form-page-item.scss +++ b/src/control/form/form-detail/form-page/form-page-item/form-page-item.scss @@ -5,8 +5,4 @@ $form-page-item: ('margin': 0 0 getCssVar('spacing', 'tight') 0, @include set-component-css-var('form-page-item', $form-page-item); border-radius: getCssVar('border-radius', 'small'); - - >.van-col { - margin: getCssVar('form-page-item', 'margin'); - } } \ No newline at end of file diff --git a/src/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.scss b/src/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.scss index 7dbdfe8525986af948e073457396424e6596633f..a61e4b26cad34e0b951425e8ee86b3290bb1ae3a 100644 --- a/src/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.scss +++ b/src/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.scss @@ -10,9 +10,20 @@ } .van-field__button { + height: getCssVar(form-item, line-height); + display: flex; + align-items: center; button { color: var(--van-field-right-icon-color); border: none; + height: getCssVar(form-item, line-height); + border-radius: 0; + --van-button-default-line-height: 1; + } + .van-button__text { + display: flex; + align-items: center; + height: 100%; } } diff --git a/src/editor/dropdown-list/ibiz-dropdown-list/ibiz-dropdown-list.scss b/src/editor/dropdown-list/ibiz-dropdown-list/ibiz-dropdown-list.scss index ff222c545092bbfea20c71d56bcead8b8eded172..2566d0e6bc5278e117fe716e120391a6a69c703e 100644 --- a/src/editor/dropdown-list/ibiz-dropdown-list/ibiz-dropdown-list.scss +++ b/src/editor/dropdown-list/ibiz-dropdown-list/ibiz-dropdown-list.scss @@ -85,6 +85,7 @@ display: flex; flex-direction: row; justify-content: getCssVar(form-item-container, editor-align); + flex-wrap: wrap; } &.#{bem('dropdown-list','','readonly')} { display: flex; diff --git a/src/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.scss b/src/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.scss index a3fdfe755c6c678ec5434fa5fbacb2659d839062..210e885f3626f2670ae33a58492d7bf8a3285bb2 100644 --- a/src/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.scss +++ b/src/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.scss @@ -34,13 +34,6 @@ border-radius: getCssVar(spacing, base); } - .van-cell { - line-height: getCssVar(form-item, line-height); - .van-field__control--custom { - min-height: getCssVar(form-item, line-height); - } - } - .van-picker { .van-picker__mask { background-image: getCssVar(color, overlay, bg); diff --git a/src/editor/html/quill-editor-preview/quill-editor-preview.tsx b/src/editor/html/quill-editor-preview/quill-editor-preview.tsx index 17606341861891e7dcf9d8a5a1f2398b8ed4a038..c9ed4b7bf77bfbe80a6b1145cf569dccfc4c273d 100644 --- a/src/editor/html/quill-editor-preview/quill-editor-preview.tsx +++ b/src/editor/html/quill-editor-preview/quill-editor-preview.tsx @@ -31,6 +31,7 @@ const IBizQuillPreview: any = defineComponent({ theme: 'bubble', modules: c.modules, readOnly: true, + placeholder: c.placeHolder, }); if (c.valueMode === 'text') { quill.setText(props.value || ''); diff --git a/src/editor/html/quill-editor/quill-editor.scss b/src/editor/html/quill-editor/quill-editor.scss index c4b71840bda8f7dd3e7083a5270964f5a277b86e..c4f7b7496d760b1ec857fe1b36b94d45494ba8eb 100644 --- a/src/editor/html/quill-editor/quill-editor.scss +++ b/src/editor/html/quill-editor/quill-editor.scss @@ -37,6 +37,14 @@ height: 0; } } + .ql-editor.ql-blank { + padding: 0; + &::before { + font-style: normal; + color: getCssVar('form-item', 'placeholder-color'); + left: 0; + } + } // quill多语言特殊处理,后续补充多语言 @include m(zh-cn) { .ql-snow { diff --git a/src/ibiz-vue3.ts b/src/ibiz-vue3.ts index b424109b1435283853266089e228b9b3a82ebe90..59b1b1f35cd3d9c8c0cedd024037e8d18e818aee 100644 --- a/src/ibiz-vue3.ts +++ b/src/ibiz-vue3.ts @@ -33,7 +33,10 @@ import { } from './control'; import { iBizI18n } from './locale'; import IBizPanelComponents from './panel-component'; -import { VueBrowserPlatformProvider } from './platform'; +import { + VueBrowserPlatformProvider, + DingTalkPlatformProvider, +} from './platform'; import { IBizPortalView } from './view/portal-view'; import { IBizViewEngine } from './view-engine'; import IBizEditor from './editor'; @@ -44,10 +47,15 @@ export default { ibiz.i18n = iBizI18n; // vue 浏览器搭载平台 const browserPlatformProvider = new VueBrowserPlatformProvider(); + const dingTalkPlatformProvider = new DingTalkPlatformProvider(); registerPlatformProvider( PlatformType.BROWSER, () => browserPlatformProvider, ); + registerPlatformProvider( + PlatformType.DINGTALK, + () => dingTalkPlatformProvider, + ); v.use(IBizCommonComponents); v.use(IBizViewEngine); diff --git a/src/mob-app/App.scss b/src/mob-app/App.scss index 614c6996ff9d34b7b00458ae2ca3005d4873bb01..4b8d52cb9c3390196c351bf8bd01e051dde57646 100644 --- a/src/mob-app/App.scss +++ b/src/mob-app/App.scss @@ -2,4 +2,6 @@ width: 100vw; height: 100vh; background: getCssVar(color, bg, 0); + // 移动端安全距离 + padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); } \ No newline at end of file diff --git a/src/mob-app/main.ts b/src/mob-app/main.ts index 1cffdfafdc554623fa9f35ad0a7122ec5a468a53..21c1ef35e6786f41a718abd5a5a78dc2a53fe202 100644 --- a/src/mob-app/main.ts +++ b/src/mob-app/main.ts @@ -10,6 +10,9 @@ import { PluginFactory, } from '@ibiz-template/vue3-util'; import { Plugin } from 'vue'; +// 此处必须要引入,否则无法使用 +// eslint-disable-next-line import/no-extraneous-dependencies, unused-imports/no-unused-imports, @typescript-eslint/no-unused-vars, no-unused-vars +import dd from 'dingtalk-jsapi'; import App from './App'; import { attachEnvironmentConfig } from './attach-environment-config'; import { createVueApp } from './create-vue-app'; diff --git a/src/platform/ding-talk-platform-provider.ts b/src/platform/ding-talk-platform-provider.ts new file mode 100644 index 0000000000000000000000000000000000000000..8224f9415304481ab87faca2bf49ffff30dd30f7 --- /dev/null +++ b/src/platform/ding-talk-platform-provider.ts @@ -0,0 +1,26 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { PlatformProviderBase } from '@ibiz-template/runtime'; +import * as dd from 'dingtalk-jsapi'; + +/** + * @description 钉钉搭载平台适配器 + * @export + * @class DingTalkPlatformProvider + * @extends {PlatformProviderBase} + */ +export class DingTalkPlatformProvider extends PlatformProviderBase { + /** + * @description 设置浏览器标签页标题 + * @param {string} title + * @memberof PlatformProviderBase + */ + setBrowserTitle(title: string): void { + if (dd) { + dd.setNavigationTitle({ + title, + }); + } else { + super.setBrowserTitle(title); + } + } +} diff --git a/src/platform/index.d.ts b/src/platform/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4851baca3b1336b9bb489b5047cec6ecba22fd76 --- /dev/null +++ b/src/platform/index.d.ts @@ -0,0 +1 @@ +declare module 'dingtalk-jsapi'; diff --git a/src/platform/index.ts b/src/platform/index.ts index 555b7e12edbbd5b4138a990854a218825f577b51..cea95bb884e09eded8ec20c3010797fbef875667 100644 --- a/src/platform/index.ts +++ b/src/platform/index.ts @@ -1 +1,2 @@ export { VueBrowserPlatformProvider } from './vue-browser-platform-provider'; +export { DingTalkPlatformProvider } from './ding-talk-platform-provider'; diff --git a/src/view-engine/mob-md-view-engine.ts b/src/view-engine/mob-md-view-engine.ts index ad42924b8b153d7324b60a52db88426f4b2a17bc..5c463132dd0afcbb4108c55fef0c065029704460 100644 --- a/src/view-engine/mob-md-view-engine.ts +++ b/src/view-engine/mob-md-view-engine.ts @@ -78,7 +78,6 @@ export class MobMDViewEngine extends MDViewEngine { */ async onMounted(): Promise { await super.onMounted(); - this.xdataControl.state.singleSelect = this.view.state.singleSelect; this.xdataControl.evt.on('onSelectionChange', async event => { this.view.evt.emit('onSelectionChange', { ...event }); }); diff --git a/src/view/portal-view/portal-view.scss b/src/view/portal-view/portal-view.scss index 05efbf8e398a2788ee1294741010d730e7005c46..47622756ba3c5f0068493817678c414740d3752f 100644 --- a/src/view/portal-view/portal-view.scss +++ b/src/view/portal-view/portal-view.scss @@ -1,7 +1,7 @@ @include b(portal-view) { display: flex; flex-direction: column; - .#{bem(view)} { - #{getCssVarName(view, bg, color)}: getCssVar(color, bg, 0); - } +} +.#{bem(portal-view)}.#{bem(view)} { + #{getCssVarName(view, bg, color)}: getCssVar(color, bg, 0); } \ No newline at end of file