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 @@