diff --git a/packages/canvas/src/components/container/container.js b/packages/canvas/src/components/container/container.js index 1bea1dd83b..d27a686ea8 100644 --- a/packages/canvas/src/components/container/container.js +++ b/packages/canvas/src/components/container/container.js @@ -403,6 +403,8 @@ export const clearSelect = () => { canvasState.current = null canvasState.parent = null Object.assign(selectState, initialRectState) + // 临时借用 remote 事件出发 currentSchema 更新 + canvasState?.emit?.('remove') } export const querySelectById = (id, type = '') => { diff --git a/packages/controller/src/useProperties.js b/packages/controller/src/useProperties.js index dad95daf3d..81e132aed7 100644 --- a/packages/controller/src/useProperties.js +++ b/packages/controller/src/useProperties.js @@ -10,11 +10,13 @@ * */ -import { toRaw, nextTick, shallowReactive } from 'vue' +import { toRaw, nextTick, shallowReactive, ref } from 'vue' +import { getNode, setState, updateRect } from '@opentiny/tiny-engine-canvas' import useCanvas from './useCanvas' import useResource from './useResource' import useTranslate from './useTranslate' -import { getNode, setState, updateRect } from '@opentiny/tiny-engine-canvas' + +const propsUpdateKey = ref(0) const otherBaseKey = { className: { @@ -168,6 +170,10 @@ const getProps = (schema, parent) => { } const setProp = (name, value) => { + if (!properties.schema) { + return + } + properties.schema.props = properties.schema.props || {} if (value === '' || value === undefined || value === null) { @@ -178,6 +184,7 @@ const setProp = (name, value) => { // 没有父级,或者不在节点上面,要更新内容。就用setState getNode(properties.schema.id, true).parent || setState(useCanvas().getPageSchema().state) + propsUpdateKey.value++ nextTick(updateRect) } @@ -188,6 +195,7 @@ const getProp = (key) => { const delProp = (name) => { const props = properties.schema.props || {} delete props[name] + propsUpdateKey.value++ } const setProps = (schema) => { @@ -205,6 +213,7 @@ export default function () { translateProp, getSchema(parent) { return parent ? properties : properties.schema - } + }, + propsUpdateKey } } diff --git a/packages/settings/styles/package.json b/packages/settings/styles/package.json index 179e94d15f..9b81820376 100644 --- a/packages/settings/styles/package.json +++ b/packages/settings/styles/package.json @@ -17,8 +17,11 @@ "@opentiny/tiny-engine-common": "workspace:^1.0.0", "@opentiny/tiny-engine-controller": "workspace:^1.0.0", "@opentiny/tiny-engine-http": "workspace:^1.0.0", + "@opentiny/tiny-engine-utils": "workspace:^1.0.0", "@opentiny/vue": "~3.10.0", "@opentiny/vue-renderless": "~3.10.0", + "@vueuse/core": "^9.6.0", + "postcss": "^8.4.31", "vue": "3.2.45" }, "devDependencies": { diff --git a/packages/settings/styles/src/Main.vue b/packages/settings/styles/src/Main.vue index 396b45b8be..6a1e0a9f99 100644 --- a/packages/settings/styles/src/Main.vue +++ b/packages/settings/styles/src/Main.vue @@ -17,7 +17,7 @@ @save="save(CSS_TYPE.Style, $event)" /> - + @@ -58,23 +58,26 @@ + + + diff --git a/packages/settings/styles/src/components/effects/EffectGroup.vue b/packages/settings/styles/src/components/effects/EffectGroup.vue index 7d46ea1b53..95c66a02a4 100644 --- a/packages/settings/styles/src/components/effects/EffectGroup.vue +++ b/packages/settings/styles/src/components/effects/EffectGroup.vue @@ -388,7 +388,6 @@ export default { const { setPosition } = useModal() const { getSettingFlag, getProperty } = useProperties({ - props, names: Object.values(EFFECTS_PROPERTY), parseNumber: true }) diff --git a/packages/settings/styles/src/components/index.js b/packages/settings/styles/src/components/index.js index 31d6d66b65..ec2f4c1c78 100644 --- a/packages/settings/styles/src/components/index.js +++ b/packages/settings/styles/src/components/index.js @@ -1,41 +1,28 @@ /** -* 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 BackgroundGroup from './background/BackgroundGroup.vue' -import BorderGroup from './border/BorderGroup.vue' -import EffectGroup from './effects/EffectGroup.vue' -import ImageSelect from './inputs/ImageSelect.vue' -import ResetButton from './inputs/ResetButton.vue' -import LayoutGroup from './layout/LayoutGroup.vue' -import PositionGroup from './position/PositionGroup.vue' -import BoxShadowGroup from './shadow/BoxShadowGroup.vue' -import SizeGroup from './size/SizeGroup.vue' -import SpacingGroup from './spacing/SpacingGroup.vue' -import SpacingSetting from './spacing/SpacingSetting.vue' -import TypographyGroup from './typography/TypographyGroup.vue' -import TypographyMore from './typography/TypographyMore.vue' - -export default { - BackgroundGroup, - BorderGroup, - EffectGroup, - ImageSelect, - ResetButton, - LayoutGroup, - PositionGroup, - BoxShadowGroup, - SizeGroup, - SpacingGroup, - SpacingSetting, - TypographyGroup, - TypographyMore -} +export { default as BackgroundGroup } from './background/BackgroundGroup.vue' +export { default as BorderGroup } from './border/BorderGroup.vue' +export { default as EffectGroup } from './effects/EffectGroup.vue' +export { default as ImageSelect } from './inputs/ImageSelect.vue' +export { default as ResetButton } from './inputs/ResetButton.vue' +export { default as LayoutGroup } from './layout/LayoutGroup.vue' +export { default as PositionGroup } from './position/PositionGroup.vue' +export { default as BoxShadowGroup } from './shadow/BoxShadowGroup.vue' +export { default as SizeGroup } from './size/SizeGroup.vue' +export { default as SpacingGroup } from './spacing/SpacingGroup.vue' +export { default as SpacingSetting } from './spacing/SpacingSetting.vue' +export { default as TypographyGroup } from './typography/TypographyGroup.vue' +export { default as TypographyMore } from './typography/TypographyMore.vue' +export { default as FlexBox } from './layout/FlexBox.vue' +export { default as GridBox } from './layout/GridBox.vue' +export { default as ClassNamesContainer } from './classNamesContainer/index.vue' diff --git a/packages/settings/styles/src/components/layout/FlexBox.vue b/packages/settings/styles/src/components/layout/FlexBox.vue index a92beacec8..7aa410a205 100644 --- a/packages/settings/styles/src/components/layout/FlexBox.vue +++ b/packages/settings/styles/src/components/layout/FlexBox.vue @@ -176,7 +176,6 @@ export default { const showModal = ref(false) const { getSettingFlag } = useProperties({ - props, names: Object.values(FLEX_PROPERTY), parseNumber: true }) diff --git a/packages/settings/styles/src/components/layout/GridBox.vue b/packages/settings/styles/src/components/layout/GridBox.vue index ae377015b4..5f07cefcf8 100644 --- a/packages/settings/styles/src/components/layout/GridBox.vue +++ b/packages/settings/styles/src/components/layout/GridBox.vue @@ -361,7 +361,6 @@ export default { }) const { getProperty, getSettingFlag } = useProperties({ - props, names: Object.values(GRID_PROPERTY), parseNumber: true }) diff --git a/packages/settings/styles/src/components/position/PositionGroup.vue b/packages/settings/styles/src/components/position/PositionGroup.vue index a8e1664204..f103ff021e 100644 --- a/packages/settings/styles/src/components/position/PositionGroup.vue +++ b/packages/settings/styles/src/components/position/PositionGroup.vue @@ -221,7 +221,6 @@ import { reactive, watchEffect } from 'vue' import { Tooltip } from '@opentiny/vue' import { MetaSelect } from '@opentiny/tiny-engine-common' -import { camelize } from '@opentiny/tiny-engine-controller/utils' import { push } from '@opentiny/vue-renderless/common/array' import ModalMask, { useModal } from '../inputs/ModalMask.vue' import SpacingSetting from '../spacing/SpacingSetting.vue' @@ -368,7 +367,6 @@ export default { } const { getProperty, getSettingFlag, getPropertyValue, getPropertyText } = useProperties({ - props, names: Object.values(POSITION_PROPERTY), parseNumber: true }) @@ -413,7 +411,6 @@ export default { } const openDirectionSetting = (type, styleName) => { - styleName = camelize(styleName) state.property = { type, diff --git a/packages/settings/styles/src/components/size/SizeGroup.vue b/packages/settings/styles/src/components/size/SizeGroup.vue index b440f0765c..84165a5b15 100644 --- a/packages/settings/styles/src/components/size/SizeGroup.vue +++ b/packages/settings/styles/src/components/size/SizeGroup.vue @@ -339,7 +339,6 @@ export default { }) const { getProperty, getSettingFlag, getPropertyValue } = useProperties({ - props, names: Object.values(SIZE_PROPERTY), parseNumber: true }) diff --git a/packages/settings/styles/src/components/spacing/SpacingGroup.vue b/packages/settings/styles/src/components/spacing/SpacingGroup.vue index bb45f860b6..57dc55861d 100644 --- a/packages/settings/styles/src/components/spacing/SpacingGroup.vue +++ b/packages/settings/styles/src/components/spacing/SpacingGroup.vue @@ -397,7 +397,6 @@