Repository: Tencent/tdesign-mobile-vue (ts)

Issue:
[Table] 文档中是用无效的 props
### tdesign-mobile-vue 版本

1.0.8

### 重现链接

https://tdesign.tencent.com/mobile-vue/components/table?tab=demo#%E6%A8%AA%E5%90%91%E5%B9%B3%E9%93%BA%E5%8F%AF%E6%BB%9A%E5%8A%A8%E8%A1%A8%E6%A0%BC

### 重现步骤

`layout-table="auto"` 无效

### 期望结果

应当使用 `table-layout="auto"`

### 实际结果

使用了无效的 props `layout-table="auto"`

### 框架版本

_No response_

### 浏览器版本

_No response_

### 系统版本

_No response_

### Node版本

_No response_

### 补充说明

修改文档，使其与 API 中的定义一致

Pull request:
fix(Table): resolved demo error
<!--
首先，感谢你的贡献！😄
请阅读并遵循 [TDesign 贡献指南](https://github.com/Tencent/tdesign/blob/main/docs/contributing.md)，填写以下 pull request 的信息。
PR 在维护者审核通过后会合并，谢谢！
-->

### 🤔 这个 PR 的性质是？

- [ ] 日常 bug 修复
- [ ] 新特性提交
- [ ] 文档改进
- [x] 演示代码改进
- [ ] 组件样式/交互改进
- [ ] CI/CD 改进
- [ ] 重构
- [ ] 代码风格优化
- [ ] 测试用例
- [ ] 分支合并
- [ ] 其他

### 🔗 相关 Issue
fix #1183 
<!--
1. 描述相关需求的来源，如相关的 issue 讨论链接。
-->

### 💡 需求背景和解决方案

<!--
1. 要解决的具体问题。
2. 列出最终的 API 实现和用法。
3. 涉及UI/交互变动需要有截图或 GIF。
-->

### 📝 更新日志

<!--
从用户角度描述具体变化，以及可能的 breaking change 和其他风险。
-->

- fix(Table): 修复演示代码错误

- [x] 本条 PR 不需要纳入 Changelog

### ☑️ 请求合并前的自查清单

⚠️ 请自检并全部**勾选全部选项**。⚠️

- [ ] 文档已补充或无须补充
- [ ] 代码演示已提供或无须提供
- [ ] TypeScript 定义已补充或无须补充
- [ ] Changelog 已提供或无须提供


Patch:
diff --git a/src/action-sheet/action-sheet.vue b/src/action-sheet/action-sheet.vue
index d17c7753..c18a4d65 100644
--- a/src/action-sheet/action-sheet.vue
+++ b/src/action-sheet/action-sheet.vue
@@ -39,7 +39,7 @@ export default defineComponent({
     ActionSheetGrid,
   },
   props: ActionSheetProps,
-  emits: ['selected', 'update:modelValue', 'cancel', 'close'],
+  emits: ['selected', 'update:modelValue', 'cancel', 'close', 'update:visible'],
   setup(props: any, context) {
     const actionItems = computed(() => {
       return props.items.map((item: String | ActionSheetItem) => {
diff --git a/src/cascader/cascader.en-US.md b/src/cascader/cascader.en-US.md
index 5fe0241e..8d7306d4 100644
--- a/src/cascader/cascader.en-US.md
+++ b/src/cascader/cascader.en-US.md
@@ -15,6 +15,7 @@ title | String / Slot / Function | - | Typescript：`string \| TNode`。[see mor
 value | String / Number | - | `v-model` and `v-model:value` is supported | N
 defaultValue | String / Number | - | uncontrolled property | N
 visible | Boolean | false | \- | N
+checkStrictly | Boolean | false | \- | N
 placeholder | String / Slot / Function | - | Typescript：`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts) | N
 onChange | Function |  | Typescript：`(value: string \| number, selectedOptions: string[]) => void`<br/> | N
 onClose | Function |  | Typescript：`(trigger: TriggerSource) => void`<br/>[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/cascader/type.ts)。<br/>`type TriggerSource = 'overlay' \| 'close-btn' \| 'finish'`<br/> | N
diff --git a/src/cascader/cascader.md b/src/cascader/cascader.md
index a1909c90..571d6618 100644
--- a/src/cascader/cascader.md
+++ b/src/cascader/cascader.md
@@ -14,6 +14,7 @@ title | String / Slot / Function | - | 标题。TS 类型：`string \| TNode`。
 value | String / Number | - | 选项值。支持语法糖 `v-model` 或 `v-model:value` | N
 defaultValue | String / Number | - | 选项值。非受控属性 | N
 visible | Boolean | false | 是否展示 | N
+checkStrictly | Boolean | false | 父子节点选中状态不再关联，可各自选中或取消 | N
 placeholder | String / Slot / Function | 选择选项 | 未选中时的提示文案。TS 类型：`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts) | N
 onChange | Function |  | TS 类型：`(value: string \| number, selectedOptions: string[]) => void`<br/>值发生变更时触发 | N
 onClose | Function |  | TS 类型：`(trigger: TriggerSource) => void`<br/>关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/cascader/type.ts)。<br/>`type TriggerSource = 'overlay' \| 'close-btn' \| 'finish'`<br/> | N
diff --git a/src/cascader/cascader.vue b/src/cascader/cascader.vue
index dfd08b85..aadadd01 100644
--- a/src/cascader/cascader.vue
+++ b/src/cascader/cascader.vue
@@ -259,11 +259,25 @@ export default defineComponent({
     );
 
     const close = (trigger: string) => {
+      if (props.checkStrictly) onCloseChange();
       props.onClose?.({ trigger });
     };
 
-    const onVisibleChange = (visible: boolean) => {
-      close('overlay');
+    const onVisibleChange = (visible: boolean, e?: any) => {
+      if (e?.trigger === 'overlay') close('overlay');
+    };
+
+    const onCloseChange = () => {
+      if (!stepIndex.value) {
+        setCascaderValue('', []);
+      } else {
+        const item = items[stepIndex.value - 1][selectedIndexes[stepIndex.value - 1]];
+
+        setCascaderValue(
+          item[(keys as Ref<KeysType>).value?.value ?? 'value'],
+          items.slice(0, stepIndex.value).map((item, index) => toRaw(item?.[selectedIndexes[index]])),
+        );
+      }
     };
 
     const onClose = () => {
diff --git a/src/cascader/props.ts b/src/cascader/props.ts
index 67c8f635..dedacc5b 100644
--- a/src/cascader/props.ts
+++ b/src/cascader/props.ts
@@ -59,6 +59,11 @@ export default {
   },
   /** 是否展示 */
   visible: Boolean,
+  /** 父子节点选中状态不再关联，可各自选中或取消 */
+  checkStrictly: {
+    type: Boolean,
+    default: false,
+  },
   /** 值发生变更时触发 */
   onChange: Function as PropType<TdCascaderProps['onChange']>,
   /** 关闭时触发 */
diff --git a/src/slider/demos/step.vue b/src/slider/demos/step.vue
index 1950de47..590f5086 100644
--- a/src/slider/demos/step.vue
+++ b/src/slider/demos/step.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="wrapper">
-    <t-slider v-model="value" :marks="marks" :step="20" />
+    <t-slider v-model="value" :marks="marksRange" :min="5" :max="10" :step="0.5" />
   </div>
 
   <div class="wrapper">
@@ -11,7 +11,15 @@
 <script lang="ts" setup>
 import { ref } from 'vue';
 
-const value = ref(60);
+const value = ref(6.5);
+const marksRange = ref({
+  5: '5',
+  6: '6',
+  7: '7',
+  8: '8',
+  9: '9',
+  10: '10',
+});
 const marks = ref({
   0: '0',
   20: '20',
diff --git a/src/slider/slider.vue b/src/slider/slider.vue
index e88aef23..77b96a89 100644
--- a/src/slider/slider.vue
+++ b/src/slider/slider.vue
@@ -217,6 +217,14 @@ export default defineComponent({
       },
     ]);
 
+    const precision = computed(() => {
+      const precisions = [min.value, max.value, step.value].map((item) => {
+        const decimalArr = `${item}`.split('.');
+        return decimalArr[1] ? decimalArr[1].length : 0;
+      });
+      return Math.max.apply(null, precisions);
+    });
+
     const lineBarWidth = ref<number>();
     const setSingleBarWidth = (value: number) => {
       const halfBlock = theme.value === 'capsule' ? Number(state.blockSize) / 2 : 0;
@@ -276,8 +284,7 @@ export default defineComponent({
       if (disabled.value) return;
       const [{ pageX }] = e.changedTouches;
       const value = convertPosToValue(pageX - state.initialLeft);
-
-      changeValue(value);
+      changeValue(calcByStep(value));
     };
 
     const changeValue = (value: SliderValue) => {
@@ -285,10 +292,10 @@ export default defineComponent({
     };
 
     const calcByStep = (value: number): number => {
-      if (step.value < 1 || step.value > scope.value) return value;
+      if (step.value < 0 || step.value > scope.value) return Number(parseFloat(`${value}`).toFixed(precision.value));
       const closestStep = trimSingleValue(Math.round(value / step.value) * step.value, min.value, max.value);
 
-      return closestStep as number;
+      return Number(parseFloat(`${closestStep}`).toFixed(precision.value));
     };
 
     const getValue = (label: any, value: any) => {
@@ -324,7 +331,8 @@ export default defineComponent({
       const raw = isLeft
         ? (posValue / state.maxRange) * scope.value + min.value
         : max.value - (posValue / state.maxRange) * scope.value;
-      return Math.round(raw);
+
+      return raw;
     };
 
     const onTouchMoveLeft = (e: TouchEvent) => {
@@ -353,7 +361,7 @@ export default defineComponent({
       if (!sliderLine.value) return;
       const currentLeft = e.clientX - state.initialLeft;
       const value = convertPosToValue(currentLeft);
-      changeValue(value);
+      changeValue(calcByStep(value));
     };
 
     const onLineClick = (e: MouseEvent) => {
diff --git a/src/table/demos/scroll.vue b/src/table/demos/scroll.vue
index 46413314..a2d65878 100644
--- a/src/table/demos/scroll.vue
+++ b/src/table/demos/scroll.vue
@@ -2,7 +2,6 @@
   <div>
     <t-table
       row-key="index"
-      layout-table="auto"
       :data="data"
       :columns="columns"
       :show-header="showHeader"


Test patch:
diff --git a/src/table/__test__/__snapshots__/demo.test.jsx.snap b/src/table/__test__/__snapshots__/demo.test.jsx.snap
index c1ca873e..3bbbb893 100644
--- a/src/table/__test__/__snapshots__/demo.test.jsx.snap
+++ b/src/table/__test__/__snapshots__/demo.test.jsx.snap
@@ -1590,7 +1590,6 @@ exports[`Table > Table mobileVue demo works fine 1`] = `
       <div>
         <div
           class="t-table t-vertical-align-middle"
-          layout-table="auto"
           style="position: relative;"
         >
           <div
@@ -2885,7 +2884,6 @@ exports[`Table > Table scrollVue demo works fine 1`] = `
 <div>
   <div
     class="t-table t-vertical-align-middle"
-    layout-table="auto"
     style="position: relative;"
   >
     <div