diff --git a/CHANGELOG.md b/CHANGELOG.md index d93ed3d040d1a360463e00524753c9b32ee1516f..bcc9425c7f76a1d6669f069d4912549339387fcd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,14 +9,21 @@ ### Added +- 新增数组编辑器 - 多数据、卡片支持simple模式 - 分页导航面板支持计数器、支持左侧、右侧、下方布局 - 新增注册多数据容器(仅数据)、传送占位组件 ### Change +- 更新所有编辑器在进行属性透传时,class和style属性不往下透传 - 卡片部件样式调整,高度撑满视图内容 +### Fixed + +- 修复面板直接内容为视频类型时,配置的参数未识别的问题 +- 修复页面标题组件未绘制的问题 + ## [0.7.41-alpha.19] - 2025-10-16 ### Added diff --git a/src/common/carousel/carousel.tsx b/src/common/carousel/carousel.tsx index 01170ab06f80fa661d7bc56de0e8dd08121db9d8..68cb7d1332043cc1498546bc0b2fb52242ba7681 100644 --- a/src/common/carousel/carousel.tsx +++ b/src/common/carousel/carousel.tsx @@ -1,5 +1,5 @@ import { defineComponent, PropType } from 'vue'; -import { useNamespace } from '@ibiz-template/vue3-util'; +import { useNamespace, useFilterAttribute } from '@ibiz-template/vue3-util'; import './carousel.scss'; import { ISysImage } from '@ibiz/model-core'; import { IIcon } from '@ibiz-template/runtime'; @@ -49,7 +49,7 @@ export const IBizCarousel = defineComponent({ lazy-render show-indicators={this.showIndicators} touchable={this.touchable} - {...this.attrs} + {...useFilterAttribute(this.$attrs)} > {this.images && this.images.map(image => { diff --git a/src/common/date-range-picker/date-range-picker.tsx b/src/common/date-range-picker/date-range-picker.tsx index 0c7e4de111d7bdab2ba44925f4f673da131ce3c9..a20a52a04cd77acd3523010717925ce4aa43863a 100644 --- a/src/common/date-range-picker/date-range-picker.tsx +++ b/src/common/date-range-picker/date-range-picker.tsx @@ -10,7 +10,7 @@ import { ref, watch, } from 'vue'; -import { useNamespace } from '@ibiz-template/vue3-util'; +import { useNamespace, useFilterAttribute } from '@ibiz-template/vue3-util'; import dayjs from 'dayjs'; import './date-range-picker.scss'; import { RangePicker } from './components/range-picker/range-picker'; @@ -421,7 +421,7 @@ export const IBizDateRangeCalendar = defineComponent({ max-date={this.maxDate} onSelect={this.onSelect} onConfirm={this.onConfirm} - {...this.$attrs} + {...useFilterAttribute(this.$attrs)} > {{ title: () => { diff --git a/src/common/rawitem/rawitem.tsx b/src/common/rawitem/rawitem.tsx index 170af5d9d8449e768e2064dcccc87a5187f5d429..66983e0f2b733fd376aad3322f80b02ff417d564 100644 --- a/src/common/rawitem/rawitem.tsx +++ b/src/common/rawitem/rawitem.tsx @@ -5,6 +5,7 @@ import { IHtmlItem, IPanelRawItem, IRawItemContainer, + IRawItemParam, ITextItem, IUnkownItem, } from '@ibiz/model-core'; @@ -93,6 +94,22 @@ export const IBizRawItem = defineComponent({ // 文本类型显示值 const rawItemText: Ref = ref(''); + // 获取直接内容参数 + const getParamsValue = (key: string): string | undefined => { + let value: string | undefined; + const params: IRawItemParam[] | undefined = rawItem?.rawItemParams; + if (!params) { + ibiz.log.error(`未配置视频播放参数:${key}}`); + return undefined; + } + params.forEach((item: IRawItemParam) => { + if (item.key === key) { + value = item.value; + } + }); + return value; + }; + // 转换各类值操作 const convertValue = () => { // 图片类型 @@ -149,7 +166,13 @@ export const IBizRawItem = defineComponent({ rawConfig = func(); switch (rawItemType.value) { case 'VIDEO': - Object.assign(playerParams.value, rawConfig); + Object.assign(playerParams.value, rawConfig, { + path: getParamsValue('path'), + autoplay: getParamsValue('autoplay'), + mute: getParamsValue('mute'), + replay: getParamsValue('replay'), + showcontrols: getParamsValue('showcontrols'), + }); break; case 'DIVIDER': Object.assign(dividerParams.value, rawConfig); diff --git a/src/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.tsx b/src/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.tsx index 87ae280e4b38b8e00be48ac370ed53d6b87056a5..b598148492648908814a315c054188b44f4dcffb 100644 --- a/src/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.tsx +++ b/src/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.tsx @@ -4,6 +4,7 @@ import { getEditorEmits, useFocusAndBlur, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import { isNil, equals } from 'ramda'; import './ibiz-checkbox-list.scss'; @@ -173,7 +174,7 @@ export const IBizCheckboxList = defineComponent({ direction='horizontal' v-model={this.selectArray} onChange={this.onSelectArrayChange} - {...this.$attrs} + {...useFilterAttribute(this.$attrs)} > {this.items.map((item, index: number) => ( ); diff --git a/src/editor/radio-button-list/ibiz-radio/ibiz-radio.tsx b/src/editor/radio-button-list/ibiz-radio/ibiz-radio.tsx index 74500bd6633ffb70ed1fa91daf906e9ecca17cdb..a4ff5ab955bb46df15cd610372d9f191f7c8a23d 100644 --- a/src/editor/radio-button-list/ibiz-radio/ibiz-radio.tsx +++ b/src/editor/radio-button-list/ibiz-radio/ibiz-radio.tsx @@ -4,6 +4,7 @@ import { getRadioProps, useFocusAndBlur, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import './ibiz-radio.scss'; import { RadioButtonListEditorController } from '../radio-button-list.controller'; @@ -92,7 +93,7 @@ export const IBizRadio = defineComponent({ class={this.ns.e('group')} v-model={this.currentVal} direction='horizontal' - {...this.$attrs} + {...useFilterAttribute(this.$attrs)} > {this.items.map((_item, index: number) => ( ); diff --git a/src/editor/slider/ibiz-slider/ibiz-slider.tsx b/src/editor/slider/ibiz-slider/ibiz-slider.tsx index eeac4893a017b5dc8838238f435345adea2ec0e2..642ebf690c58e79d950aaaab2eeafaafe9790613 100644 --- a/src/editor/slider/ibiz-slider/ibiz-slider.tsx +++ b/src/editor/slider/ibiz-slider/ibiz-slider.tsx @@ -4,6 +4,7 @@ import { getSliderProps, useFocusAndBlur, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import { toNumber } from 'lodash-es'; import { SliderEditorController } from '../slider-editor.controller'; @@ -200,7 +201,7 @@ export const IBizSlider = defineComponent({ min={this.min} range={this.range} onChange={this.handleChange} - {...this.$attrs} + {...useFilterAttribute(this.$attrs)} > {{ button: () => { @@ -236,7 +237,7 @@ export const IBizSlider = defineComponent({ size={this.circleSize} // 显示直径 layer-color='lightgray' stroke-width='100' - {...this.$attrs} + {...useFilterAttribute(this.$attrs)} > {{ default: () => { diff --git a/src/editor/stepper/ibiz-stepper/ibiz-stepper.tsx b/src/editor/stepper/ibiz-stepper/ibiz-stepper.tsx index c7e2dc3d5c98af0cf5779775ebc6797fffbb88be..5fbbe25bacd9a3f6d3962dad019dc53f37d23123 100644 --- a/src/editor/stepper/ibiz-stepper/ibiz-stepper.tsx +++ b/src/editor/stepper/ibiz-stepper/ibiz-stepper.tsx @@ -3,6 +3,7 @@ import { getEditorEmits, getStepperProps, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import { toNumber } from 'lodash-es'; import { StepperEditorController } from '../stepper-editor.controller'; @@ -134,7 +135,7 @@ export const IBizStepper = defineComponent({ onChange={this.handleChange} onFocus={this.onFocus} onBlur={this.onBlur} - {...this.$attrs} + {...useFilterAttribute(this.$attrs)} >, ]; } diff --git a/src/editor/switch/ibiz-switch/ibiz-switch.tsx b/src/editor/switch/ibiz-switch/ibiz-switch.tsx index 825dff31a0aef1ec0fe1706ad46fcbf1d3b8f0f6..f88a9a444bf85d35e4bfa63105a6785c693ec3fd 100644 --- a/src/editor/switch/ibiz-switch/ibiz-switch.tsx +++ b/src/editor/switch/ibiz-switch/ibiz-switch.tsx @@ -4,6 +4,7 @@ import { getSwitchProps, useFocusAndBlur, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import './ibiz-switch.scss'; import { SwitchEditorController } from '../switch-editor.controller'; @@ -66,7 +67,7 @@ export const IBizSwitch = defineComponent({ v-model={this.currentVal} disabled={this.disabled || this.readonly} onChange={this.handleChange} - {...this.$attrs} + {...useFilterAttribute(this.$attrs)} > ); diff --git a/src/editor/text-box/ibiz-input-number/ibiz-input-number.tsx b/src/editor/text-box/ibiz-input-number/ibiz-input-number.tsx index 6eb42ecd31046573c770b34f8ce0daf20b9b5866..14fba590e5cbb21117a82bfc3955a8b219c1c2f6 100644 --- a/src/editor/text-box/ibiz-input-number/ibiz-input-number.tsx +++ b/src/editor/text-box/ibiz-input-number/ibiz-input-number.tsx @@ -3,6 +3,7 @@ import { getEditorEmits, getInputNumberProps, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import './ibiz-input-number.scss'; import { floor } from 'lodash-es'; @@ -118,7 +119,7 @@ export const IBizInputNumber = defineComponent({ onFocus={this.onFocus} onBlur={this.onBlur} onInput={this.handleChange} - {...this.$attrs} + {...useFilterAttribute(this.$attrs)} >, unitName && {unitName}, ]; diff --git a/src/editor/text-box/input/input.tsx b/src/editor/text-box/input/input.tsx index 206aad4398bafe5a8fa19ec759e57f8e412cfe41..b402c6b516d29b6856e41c5ab089fc736d77fed8 100644 --- a/src/editor/text-box/input/input.tsx +++ b/src/editor/text-box/input/input.tsx @@ -5,6 +5,7 @@ import { getEditorEmits, getInputProps, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import './input.scss'; import { TextBoxEditorController } from '../text-box-editor.controller'; @@ -221,7 +222,7 @@ export const IBizInput = defineComponent({ autocomplete='new-password' clearable onClear={this.onClear} - {...this.$attrs} + {...useFilterAttribute(this.$attrs)} > {slots} diff --git a/src/editor/upload/ibiz-file-upload/ibiz-file-upload.tsx b/src/editor/upload/ibiz-file-upload/ibiz-file-upload.tsx index 822631b4a4cbdac0c4db796db9c47d9e210d0a19..3c6b772c9d71a26cb60b4f034ab3516cd3c39988 100644 --- a/src/editor/upload/ibiz-file-upload/ibiz-file-upload.tsx +++ b/src/editor/upload/ibiz-file-upload/ibiz-file-upload.tsx @@ -3,6 +3,7 @@ import { getEditorEmits, getUploadProps, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import './ibiz-file-upload.scss'; import { useVanUpload } from '../use/use-van-upload'; @@ -119,7 +120,7 @@ export const IBizFileUpload = defineComponent({ before-read={this.beforeUpload} after-read={this.afterRead} before-delete={this.onRemove} - {...this.$attrs} + {...useFilterAttribute(this.$attrs)} > {{ default: () => { diff --git a/src/editor/upload/ibiz-image-cropping/ibiz-image-cropping.tsx b/src/editor/upload/ibiz-image-cropping/ibiz-image-cropping.tsx index 46a4dfc4f32509fa62aff38eacb102ab303655c3..79cb4e3933f0ededaf8a932582347943c9fe12d2 100644 --- a/src/editor/upload/ibiz-image-cropping/ibiz-image-cropping.tsx +++ b/src/editor/upload/ibiz-image-cropping/ibiz-image-cropping.tsx @@ -4,6 +4,7 @@ import { getEditorEmits, getUploadProps, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import './ibiz-image-cropping.scss'; import { showImagePreview } from 'vant'; @@ -153,6 +154,7 @@ export const IBizImageCropping = defineComponent({
{{ 'preview-cover': (file: IData) => { diff --git a/src/editor/upload/ibiz-image-select/ibiz-image-select.tsx b/src/editor/upload/ibiz-image-select/ibiz-image-select.tsx index 69eea0d0f033412bfa6a1c1054a3798495906792..79e89b9be27a3fdf0c9e2c15446dba7c5fce26e5 100644 --- a/src/editor/upload/ibiz-image-select/ibiz-image-select.tsx +++ b/src/editor/upload/ibiz-image-select/ibiz-image-select.tsx @@ -4,6 +4,7 @@ import { getEditorEmits, getUploadProps, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import './ibiz-image-select.scss'; import { showImagePreview } from 'vant'; @@ -75,7 +76,7 @@ export const IBizImageSelect = defineComponent({ }, render() { return ( -
+
{{ 'preview-cover': (file: IData) => { diff --git a/src/editor/upload/ibiz-image-upload/ibiz-image-upload.tsx b/src/editor/upload/ibiz-image-upload/ibiz-image-upload.tsx index 4c2c05d80512b4552e52daafeb151353cccac8e8..97de8407b349e8600003e4f0860f20a036369b2e 100644 --- a/src/editor/upload/ibiz-image-upload/ibiz-image-upload.tsx +++ b/src/editor/upload/ibiz-image-upload/ibiz-image-upload.tsx @@ -4,6 +4,7 @@ import { getEditorEmits, getUploadProps, useNamespace, + useFilterAttribute, } from '@ibiz-template/vue3-util'; import './ibiz-image-upload.scss'; import { showImagePreview } from 'vant'; @@ -99,6 +100,7 @@ export const IBizImageUpload = defineComponent({
{{ 'preview-cover': (file: IData) => { diff --git a/src/panel-component/index.ts b/src/panel-component/index.ts index 4b3819d11d5db41cb643009cf4323e7902f71a3f..a6caa2921ca5edec951533001bcd9cc42c028391 100644 --- a/src/panel-component/index.ts +++ b/src/panel-component/index.ts @@ -16,6 +16,7 @@ import { IBizPanelItemRender, IBizAuthWxmpQrcode, IBizTeleportPlaceholder, + IBizPanelCtrlViewPageCaption, } from '@ibiz-template/vue3-util'; import IBizViewContentPanelContainer from './view-content-panel-container'; import IBizViewHeaderPanelContainer from './view-header-panel-container'; @@ -37,6 +38,7 @@ import IBizIndexBlankPlaceholder from './index-blank-placeholder'; export const IBizPanelComponents = { install: (v: App): void => { + v.use(IBizPanelCtrlViewPageCaption); v.use(IBizPanelContainer); v.use(IBizPanelCtrlPos); v.use(IBizNavPosIndex);