@neatui/vue 5.3.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @neatui/vue 更新记录
2
2
 
3
+ ## 5.5.0
4
+
5
+ ### 换行改用 `ui-wrap`
6
+ - 所有组件内部的 `nowrap` 类替换为 `ui-wrap="no"`,显示效果不变。
7
+ - TableLoader:表头与单元格默认 `ui-wrap="=mob"`(桌面、平板不换行,移动端卡片换行);在 `thead` / `attrs` 写 `ui-wrap` 即整体替换,`'no'` 为三端不换行。不再识别 `wrap` / `nowrap` class。
8
+
3
9
  ## 5.2.1
4
10
 
5
11
  ### IFollowView(移动端底部面板)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neatui/vue",
3
- "version": "5.3.0",
3
+ "version": "5.5.0",
4
4
  "description": "basic component ui",
5
5
  "main": "./src/index.ts",
6
6
  "license": "MIT",
@@ -36,7 +36,7 @@
36
36
  "@fekit/scrollto": "^3.0.3",
37
37
  "@fekit/toast": "^2.7.2",
38
38
  "@fekit/utils": "^6.0.0",
39
- "@neatui/css": "^5.3.0",
39
+ "@neatui/css": "^5.5.0",
40
40
  "@rollup/plugin-commonjs": "^26.0.1",
41
41
  "@rollup/plugin-node-resolve": "^15.2.3",
42
42
  "@vue/compiler-sfc": "^3.4.30",
@@ -15,7 +15,7 @@
15
15
  <ul v-if="opt?.length" class="min-h-ms*s max-h-xl*s" :class="`nx-sm lh-ml ${optIndex === 0 ? '' : 'bl-xs b-back b-solid'}`" ui-scroll=":y s">
16
16
  <!-- 多选 -->
17
17
  <template v-if="multiple">
18
- <li v-for="(item, idx) of opt" :key="idx" class="ux-hover nx-sm r-ss nowrap" @click="multiSelect(item, optIndex)">
18
+ <li v-for="(item, idx) of opt" :key="idx" class="ux-hover nx-sm r-ss" ui-wrap="no" @click="multiSelect(item, optIndex)">
19
19
  <div ui-flex="row xm">
20
20
  <div :ui-form="`${theme} type:checkbox :block`">
21
21
  <input
@@ -38,7 +38,7 @@
38
38
  v-for="(item, idx) of opt"
39
39
  :key="idx"
40
40
  :class="item.value === state.transSelected?.value ? 'co-main' : ''"
41
- class="ux-hover nx-sm r-ss nowrap"
41
+ class="ux-hover nx-sm r-ss" ui-wrap="no"
42
42
  @click="select(item, optIndex)"
43
43
  >
44
44
  <IFollowView :ui-tips="uiTips" v-if="item.optTips" event="hover">
@@ -47,7 +47,7 @@
47
47
  <i v-if="item.children?.length" :class="`icon icon-next ${state.transSelected.value[optIndex] === item.value ? 'co-main' : 'co-note'}`"></i>
48
48
  </div>
49
49
  <template #tips>
50
- <div class="nowrap">{{ item.optTips }}</div>
50
+ <div ui-wrap="no">{{ item.optTips }}</div>
51
51
  </template>
52
52
  </IFollowView>
53
53
  <div v-else ui-flex="row xm">
@@ -67,11 +67,11 @@
67
67
  </li>
68
68
  <li ui-flex="row xm">
69
69
  <div v-if="!multiple">
70
- <p class="nx-sm r-ss nowrap">
70
+ <p class="nx-sm r-ss" ui-wrap="no">
71
71
  <span>单选</span>
72
72
  </p>
73
73
  </div>
74
- <label v-else class="nx-sm r-ss nowrap" :ui-form="`${theme} type:checkbox :block`">
74
+ <label v-else class="nx-sm r-ss" ui-wrap="no" :ui-form="`${theme} type:checkbox :block`">
75
75
  <input :checked="state.checkAll" name="checkAll" type="checkbox" @change="checkAllChange" />
76
76
  <span :class="`${state.checkAll ? 'co-main' : ''}`">全选</span>
77
77
  </label>
@@ -67,7 +67,7 @@
67
67
  <span>{{ item.day }}</span>
68
68
  </div>
69
69
  </div>
70
- <div class="pa w-full lh-xs ny-ss ob-no ol-no nowrap s-ml bold" style="transform-origin: 50% 110%" ui-flex="row ct" v-html="extras(item)"></div>
70
+ <div class="pa w-full lh-xs ny-ss ob-no ol-no s-ml bold" ui-wrap="no" style="transform-origin: 50% 110%" ui-flex="row ct" v-html="extras(item)"></div>
71
71
  </div>
72
72
  </li>
73
73
  </ul>
@@ -141,7 +141,7 @@
141
141
  <span>{{ item.day }}</span>
142
142
  </div>
143
143
  </div>
144
- <div class="pa w-full lh-xs ny-ss ob-no ol-no nowrap s-ml bold" style="transform-origin: 50% 110%" ui-flex="row ct" v-html="extras(item)"></div>
144
+ <div class="pa w-full lh-xs ny-ss ob-no ol-no s-ml bold" ui-wrap="no" style="transform-origin: 50% 110%" ui-flex="row ct" v-html="extras(item)"></div>
145
145
  </div>
146
146
  </li>
147
147
  </ul>
@@ -152,12 +152,12 @@
152
152
  <div v-if="tools" ui-date-foot="" ui-flex="row xm" class="nx-sl ny-sl b-solid b-line-o-ls bt-xs">
153
153
  <div ui-flex="row lm" class="nl-ss">
154
154
  <p v-if="sta.value || end.value">
155
- <span class="nowrap">已选:</span>
155
+ <span ui-wrap="no">已选:</span>
156
156
  <span>{{ sta.value || '-' }} ~ {{ end.value || '-' }}</span>
157
157
  </p>
158
158
  <div v-else-if="com.shortcuts?.length" ui-flex="row lm">
159
- <span class="nowrap">推荐:</span>
160
- <div class="mr-sm-sub nx-sl-sub ny-ss-sub lh-ss nowrap fs-sl dib-sub" ui-scroll=":x y:hidden">
159
+ <span ui-wrap="no">推荐:</span>
160
+ <div class="mr-sm-sub nx-sl-sub ny-ss-sub lh-ss fs-sl dib-sub" ui-wrap="no" ui-scroll=":x y:hidden">
161
161
  <p v-for="(item, idx) in com.shortcuts" :key="idx" class="bg-main-o-xs co-main r-xl" ui-btn="@a xs none :round" @click="item?.func">{{ item?.text }}</p>
162
162
  <p class="bg-main-o-xs co-main r-xl" ui-btn="@a xs none :round"><Icon class="co-main" name="more" /></p>
163
163
  </div>
@@ -7,15 +7,15 @@
7
7
  </div>
8
8
  </div>
9
9
  <div ui-btns="@a none s" @click="setPanelType()">
10
- <p v-if="state.type === 2" class="nowrap" ui-flex="row cm">
10
+ <p v-if="state.type === 2" ui-wrap="no" ui-flex="row cm">
11
11
  <b class="nx-ss">{{ panel.sta }}年</b>
12
12
  <span class="nx-xs">-</span>
13
13
  <b class="nx-ss">{{ panel.end }}年</b>
14
14
  </p>
15
- <p v-else-if="state.type === 1" class="nowrap" ui-flex="row cm">
15
+ <p v-else-if="state.type === 1" ui-wrap="no" ui-flex="row cm">
16
16
  <b class="nx-ss">{{ state.curr.y }}年</b>
17
17
  </p>
18
- <p v-else class="nowrap" ui-flex="row cm">
18
+ <p v-else ui-wrap="no" ui-flex="row cm">
19
19
  <b class="nx-xs">{{ state.curr.y }}年</b>
20
20
  <b class="nx-xs">{{ state.curr.M }}月</b>
21
21
  </p>
@@ -106,7 +106,7 @@
106
106
  <span>{{ item.day }}</span>
107
107
  </div>
108
108
  </div>
109
- <div class="pa w-full lh-xs ny-ss ob-no ol-no nowrap s-ml bold" style="transform-origin: 50% 100%" ui-flex="row ct" v-html="extras(item)"></div>
109
+ <div class="pa w-full lh-xs ny-ss ob-no ol-no s-ml bold" ui-wrap="no" style="transform-origin: 50% 100%" ui-flex="row ct" v-html="extras(item)"></div>
110
110
  </div>
111
111
  </li>
112
112
  </ul>
@@ -165,7 +165,7 @@
165
165
  <!-- <span v-if="!state.isNoTime" :anim-editing="state.type === baseType" class="nx-ss">{{ idate(state.panel).format('HH:mm:ss') }}</span> -->
166
166
  </div>
167
167
  <div v-else-if="state.shortcuts?.length" ui-flex="row lm">
168
- <div class="mr-sm-sub nx-sl-sub ny-ss-sub lh-ss nowrap fs-sl dib-sub" ui-scroll=":x y:hidden">
168
+ <div class="mr-sm-sub nx-sl-sub ny-ss-sub lh-ss fs-sl dib-sub" ui-wrap="no" ui-scroll=":x y:hidden">
169
169
  <p v-for="(item, idx) in state.shortcuts" :key="idx" class="bg-main-o-ss co-main r-xl" ui-btn="@a xs none :round" @click="item?.func">{{ item?.text }}</p>
170
170
  <p class="bg-main-o-ss co-main r-xl" ui-btn="@a xs none :round"><Icon class="co-main" name="more" /></p>
171
171
  </div>
@@ -22,13 +22,13 @@
22
22
  </div>
23
23
  <ul v-if="state.filter?.length" ui-scroll=":y s" class="nx-sm lh-ml" style="min-width: 100%; max-height: 15em">
24
24
  <template v-for="(item, idx) of state.filter" :key="idx">
25
- <li v-if="item.disabled" class="ux-hover nx-sm r-ss o-ms nowrap">
25
+ <li v-if="item.disabled" class="ux-hover nx-sm r-ss o-ms" ui-wrap="no">
26
26
  <label style="pointer-events: none" :ui-form="`${theme} type:checkbox :block`">
27
27
  <input type="checkbox" :name="state.name" :checked="state.processedValue?.some((i: any) => `${i}` === `${item.value}`)" />
28
28
  <del class="ml-sm">{{ item.label || item }}</del>
29
29
  </label>
30
30
  </li>
31
- <li v-else class="ux-hover nx-sm r-ss nowrap" @click.stop="select(item.value)">
31
+ <li v-else class="ux-hover nx-sm r-ss" ui-wrap="no" @click.stop="select(item.value)">
32
32
  <label style="pointer-events: none" :ui-form="`${theme} type:checkbox :block`">
33
33
  <input type="checkbox" :name="state.name" :checked="state.processedValue?.some((i: any) => `${i}` === `${item.value}`)" />
34
34
  <span class="ml-sm">{{ item.label || item }}</span>
@@ -40,7 +40,7 @@
40
40
  <ul class="nx-sm lh-sl" v-if="tools">
41
41
  <li class="my-ss"><div class="o-mm" ui-line="@a"></div></li>
42
42
  <li ui-flex="row xm">
43
- <div class="ux-hover nx-sm ny-ss r-ss nowrap co-main" @click.stop="allselect()">
43
+ <div class="ux-hover nx-sm ny-ss r-ss co-main" ui-wrap="no" @click.stop="allselect()">
44
44
  <label style="pointer-events: none" :ui-form="`${theme} type:checkbox :block`">
45
45
  <input type="checkbox" :name="state.name" :checked="state.all" />
46
46
  <span class="ml-sm">全选({{ state.selectedCount }}/{{ state.availableCount }})</span>
@@ -33,7 +33,7 @@
33
33
  <ul class="nx-sm lh-ml" v-if="tools">
34
34
  <li class="my-ss"><div class="o-mm" ui-line="@a"></div></li>
35
35
  <li ui-flex="row xm">
36
- <div class="ux-hover nx-sm r-ss nowrap co-main" @click.stop="allselect()">
36
+ <div class="ux-hover nx-sm r-ss co-main" ui-wrap="no" @click.stop="allselect()">
37
37
  <label style="pointer-events: none" :ui-form="`${theme} type:checkbox :block`">
38
38
  <input type="checkbox" :name="state.name" :checked="state.all" />
39
39
  <span class="ml-sm">全选({{ props.options?.length || 0 }})</span>
@@ -13,7 +13,7 @@
13
13
  <div class="flex-block">
14
14
  <IScrollView class="full n-ms" :pull="false" :load="false">
15
15
  <ul v-if="props.options?.length" class="my-sm-sub">
16
- <li class="ux-hover n-sm r-ss nowrap b-solid b-case b-xs" v-for="(item, idx) of props.options" :key="idx" @click.stop="select(item.value)">
16
+ <li class="ux-hover n-sm r-ss b-solid b-case b-xs" ui-wrap="no" v-for="(item, idx) of props.options" :key="idx" @click.stop="select(item.value)">
17
17
  <label style="pointer-events: none" :ui-form="`${theme} type:checkbox :block`">
18
18
  <input type="checkbox" :name="field" :checked="mv?.some((i: any) => `${i}` === `${item.value}`)" />
19
19
  <span class="ml-sm">{{ item.label || item }}</span>
@@ -33,7 +33,7 @@
33
33
  <li class="my-ss"><div class="o-mm" ui-line="@a"></div></li>
34
34
  <li ui-flex="row xm">
35
35
  <div class="co-main">
36
- <p class="nx-sm r-ss nowrap">
36
+ <p class="nx-sm r-ss" ui-wrap="no">
37
37
  <span>{{ state.count }}个可选项</span>
38
38
  </p>
39
39
  </div>
@@ -17,7 +17,7 @@
17
17
  </div>
18
18
  </div>
19
19
  <ul v-if="props.options?.length" ui-form-dropdown="" ui-scroll=":y s" class="nx-sm lh-ml" style="min-width: 100%; max-height: 15em">
20
- <li class="ux-hover nx-sm r-ss nowrap" v-for="(item, idx) of props.options" :key="idx" @click.stop="select(item.value)">
20
+ <li class="ux-hover nx-sm r-ss" ui-wrap="no" v-for="(item, idx) of props.options" :key="idx" @click.stop="select(item.value)">
21
21
  <label style="pointer-events: none" :ui-form="`${theme} type:checkbox :block`">
22
22
  <input type="checkbox" :name="formName" :checked="modelValue?.some((i: any) => `${i}` === `${item.value}`)" />
23
23
  <span class="ml-sm">{{ item.label || item }}</span>
@@ -28,7 +28,7 @@
28
28
  <ul class="nx-sm lh-ml" v-if="tools">
29
29
  <li class="my-ss"><div class="o-mm" ui-line="@a"></div></li>
30
30
  <li ui-flex="row xm">
31
- <div class="ux-hover nx-sm r-ss nowrap co-main" @click.stop="allselect()">
31
+ <div class="ux-hover nx-sm r-ss co-main" ui-wrap="no" @click.stop="allselect()">
32
32
  <label style="pointer-events: none" :ui-form="`${theme} type:checkbox :block`">
33
33
  <input type="checkbox" :name="formName" :checked="state.all" />
34
34
  <!-- <span class="ml-sm">全选({{ props.options?.length || 0 }})</span> -->
@@ -15,7 +15,7 @@
15
15
  </div>
16
16
  </div>
17
17
  <ul v-if="props.options?.length" ui-scroll=":y s" class="nx-sm lh-ml" style="min-width: 100%; max-height: 16em">
18
- <li class="ux-hover nx-sm r-ss nowrap" :class="item.value === state.selectd?.value ? 'co-main' : ''" v-for="(item, idx) of options" :key="idx" @click="select(item)">
18
+ <li class="ux-hover nx-sm r-ss" ui-wrap="no" :class="item.value === state.selectd?.value ? 'co-main' : ''" v-for="(item, idx) of options" :key="idx" @click="select(item)">
19
19
  {{ item.label || item }}
20
20
  </li>
21
21
  </ul>
@@ -15,7 +15,7 @@
15
15
  </div>
16
16
  </div>
17
17
  <ul v-if="props.options?.length" ui-form-dropdown="" ui-scroll=":y s" class="nx-sm lh-ml" style="min-width: 100%; max-height: 15em">
18
- <li class="ux-hover nx-sm r-ss nowrap" v-for="(item, idx) of state.filter" :key="idx" @click.stop="select(item.value)">
18
+ <li class="ux-hover nx-sm r-ss" ui-wrap="no" v-for="(item, idx) of state.filter" :key="idx" @click.stop="select(item.value)">
19
19
  <label style="pointer-events: none" :ui-form="`${theme} type:checkbox :block`">
20
20
  <input type="checkbox" :name="formName" :checked="modelValue?.some((i: any) => `${i}` === `${item.value}`)" />
21
21
  <span class="ml-sm">{{ item.label || item }}</span>
@@ -26,7 +26,7 @@
26
26
  <ul class="nx-sm lh-ml" v-if="tools">
27
27
  <li class="my-ss"><div class="o-mm" ui-line="@a"></div></li>
28
28
  <li ui-flex="row xm">
29
- <div class="ux-hover nx-sm r-ss nowrap co-main" @click.stop="allselect()">
29
+ <div class="ux-hover nx-sm r-ss co-main" ui-wrap="no" @click.stop="allselect()">
30
30
  <label style="pointer-events: none" :ui-form="`${theme} type:checkbox :block`">
31
31
  <input type="checkbox" :name="formName" :checked="state.all" />
32
32
  <span class="ml-sm">全选({{ state.filter?.length || 0 }})</span>
@@ -18,7 +18,7 @@
18
18
  </div>
19
19
  <ul v-if="props.options?.length" ui-scroll=":y s" class="nx-sm lh-sl" style="min-width: 100%; max-height: 16em">
20
20
  <li
21
- class="ux-hover nx-sm ny-ss r-ss nowrap"
21
+ class="ux-hover nx-sm ny-ss r-ss" ui-wrap="no"
22
22
  :class="item.value === state.selectd?.value ? 'co-main' : ''"
23
23
  v-for="(item, idx) of state.filter"
24
24
  :key="idx"
@@ -32,7 +32,7 @@
32
32
  <li class="my-ss"><div class="o-mm" ui-line="@a"></div></li>
33
33
  <li ui-flex="row xm">
34
34
  <div class="co-main">
35
- <p class="nx-sm r-ss nowrap">
35
+ <p class="nx-sm r-ss" ui-wrap="no">
36
36
  <span>{{ state.filter?.length || 0 }}个可选项</span>
37
37
  </p>
38
38
  </div>
@@ -21,10 +21,10 @@
21
21
  </div>
22
22
  <ul v-if="state.filter?.length" ui-scroll=":y s" class="nx-sm lh-sl" style="min-width: 100%; max-height: 16em">
23
23
  <template v-for="(item, idx) of state.filter" :key="idx">
24
- <li v-if="item.disabled" class="ux-hover nx-sm ny-ss r-ss o-ms nowrap" :class="isItemSelected(item) ? 'co-main' : ''">
24
+ <li v-if="item.disabled" class="ux-hover nx-sm ny-ss r-ss o-ms" ui-wrap="no" :class="isItemSelected(item) ? 'co-main' : ''">
25
25
  <del>{{ item.label || item }}</del>
26
26
  </li>
27
- <li v-else class="ux-hover nx-sm ny-ss r-ss nowrap" :class="isItemSelected(item) ? 'co-main' : ''" @click="select(item)">
27
+ <li v-else class="ux-hover nx-sm ny-ss r-ss" ui-wrap="no" :class="isItemSelected(item) ? 'co-main' : ''" @click="select(item)">
28
28
  <span>{{ item.label || item }}</span>
29
29
  </li>
30
30
  </template>
@@ -51,7 +51,7 @@
51
51
  <li class="my-ss"><div class="o-mm" ui-line="@a"></div></li>
52
52
  <li ui-flex="row xm">
53
53
  <div class="co-main">
54
- <p class="nx-sm r-ss nowrap">
54
+ <p class="nx-sm r-ss" ui-wrap="no">
55
55
  <span>{{ state.availableCount }}个可选项</span>
56
56
  </p>
57
57
  </div>
@@ -24,7 +24,7 @@
24
24
  <li class="my-ss"><div class="o-mm" ui-line="@a"></div></li>
25
25
  <li ui-flex="row xm">
26
26
  <div class="co-main">
27
- <p class="nx-sm r-ss nowrap">
27
+ <p class="nx-sm r-ss" ui-wrap="no">
28
28
  <span>{{ state.filter?.length || 0 }}个可选项</span>
29
29
  </p>
30
30
  </div>
@@ -30,7 +30,7 @@
30
30
  <i class="icon icon-add"></i>
31
31
  </button>
32
32
  <div ui-tips-box="bl">
33
- <div class="n-sm nowrap fs-sl">
33
+ <div class="n-sm fs-sl" ui-wrap="no">
34
34
  <ul class="nx-sm-sub ny-ss-sub">
35
35
  <li class="r-sm ux-hover" @click="fAddArea(item, data, path, idx)">用容器包裹</li>
36
36
  <li class="b-solid b-line bb-xs n-no my-ss" v-if="isBoxNode(item.model)"></li>
@@ -22,7 +22,7 @@
22
22
  </div>
23
23
  </template>
24
24
  </div>
25
- <div class="flex-fixed mr-sl-sub my-sm-sub nowrap" ui-flex="row rm" ui-hide="<pad">
25
+ <div class="flex-fixed mr-sl-sub my-sm-sub" ui-wrap="no" ui-flex="row rm" ui-hide="<pad">
26
26
  <IFollowView v-if="tools" tipBoxClass="nr-no">
27
27
  <button class="bg-fore" ui-btn="@a s case :border :square">
28
28
  <svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" class="co-read fs-sl" style="width: 1em; height: 1em">
@@ -33,7 +33,7 @@
33
33
  </button>
34
34
  <template v-if="state.limit.length" #tips>
35
35
  <div class="w-ml*s max-h-xl*s n-sl" ui-scroll="x:hidden :y">
36
- <div v-for="(item, idx) in state.limit" :key="idx" class="item ux-hover nowrap r-ss">
36
+ <div v-for="(item, idx) in state.limit" :key="idx" class="item ux-hover r-ss" ui-wrap="no">
37
37
  <label class="ny-xs nx-sm" ui-form="@a type:checkbox">
38
38
  <input :checked="!item._close" type="checkbox" @change="item._close = item._close ? 0 : 1" />
39
39
  <span>{{ item.label }}</span>
@@ -41,7 +41,7 @@
41
41
  <div class="w-ml*s h-ll*s n-sl" ui-scroll="x:hidden :y">
42
42
  <IDraggable v-model:lists="state.table">
43
43
  <template #default="{ item: element, idx: index }">
44
- <div :class="`item ux-hover nowrap r-ss ${element.fixed ? 'forbid' : 'element'}`" :key="index">
44
+ <div :class="`item ux-hover r-ss ${element.fixed ? 'forbid' : 'element'}`" ui-wrap="no" :key="index">
45
45
  <label ui-form="@a type:checkbox" class="ny-xs nx-sl">
46
46
  <input type="checkbox" :checked="!element.__close" @change="element.__close = element.__close ? 0 : 1" />
47
47
  <span>
@@ -65,7 +65,7 @@
65
65
  col-fixed="r"
66
66
  :col-fixed-side="fixedSide('__operate')"
67
67
  :style="fixedStyle('__operate')"
68
- class="fs-sl nowrap ar"
68
+ class="fs-sl ar" ui-wrap="no"
69
69
  >
70
70
  <div ui-flex="row rm">
71
71
  <span>{{ words['operate'] || '操作' }}</span>
@@ -77,7 +77,7 @@
77
77
  <div class="w-ml*s h-ll*s n-sl" ui-scroll="x:hidden :y">
78
78
  <IDraggable v-model:lists="state.table">
79
79
  <template #default="{ item: element, idx: index }">
80
- <div :class="`item ux-hover nowrap r-ss ${element.fixed ? 'forbid' : 'element'}`" :key="index">
80
+ <div :class="`item ux-hover r-ss ${element.fixed ? 'forbid' : 'element'}`" ui-wrap="no" :key="index">
81
81
  <label ui-form="@a type:checkbox" class="ny-xs nx-sl">
82
82
  <input type="checkbox" :checked="!element.__close" @change="element.__close = element.__close ? 0 : 1" />
83
83
  <span>
@@ -176,7 +176,7 @@
176
176
  <template #tips>
177
177
  <IDraggable v-model:lists="state.table">
178
178
  <template #default="{ item: element, idx: index }">
179
- <div class="item ux-hover nowrap r-ss" :key="index">
179
+ <div class="item ux-hover r-ss" ui-wrap="no" :key="index">
180
180
  <label ui-form="@a type:checkbox" class="ny-xs nx-sl">
181
181
  <input type="checkbox" :checked="!element.__close" @change="element.__close = element.__close ? 0 : 1" />
182
182
  <span>{{ element.label }}</span>
@@ -194,7 +194,7 @@
194
194
  <tbody>
195
195
  <template v-for="(col, cid) in state.table" :key="cid">
196
196
  <tr v-if="!col.__close">
197
- <td class="nowrap vt n-ss">{{ col.label }}:</td>
197
+ <td class="vt n-ss" ui-wrap="no">{{ col.label }}:</td>
198
198
  <td class="n-ss">
199
199
  <TableRender :node="col" :data="item" />
200
200
  </td>
@@ -216,7 +216,7 @@
216
216
  <tbody>
217
217
  <template v-for="(col, cid) in state.table" :key="cid">
218
218
  <tr v-if="!col.__close && childHas(col, child)">
219
- <td class="nowrap vt n-ss">{{ col.label }}:</td>
219
+ <td class="vt n-ss" ui-wrap="no">{{ col.label }}:</td>
220
220
  <td class="n-ss">
221
221
  <TableRender :node="col" :data="child" />
222
222
  </td>
@@ -238,7 +238,7 @@
238
238
  <tbody>
239
239
  <template v-for="(col, cid) in state.table" :key="cid">
240
240
  <tr v-if="!col.__close && childHas(col, grand)">
241
- <td class="nowrap vt n-ss">{{ col.label }}:</td>
241
+ <td class="vt n-ss" ui-wrap="no">{{ col.label }}:</td>
242
242
  <td class="n-ss">
243
243
  <TableRender :node="col" :data="grand" />
244
244
  </td>
@@ -449,9 +449,8 @@
449
449
  // 表头属性处理
450
450
  col.thead ??= {};
451
451
  col.thead.class = (col.thead.class || '').split(/\s+/);
452
- if (!col.thead.class.some((c: any) => c === 'wrap' || c === 'nowrap')) {
453
- col.thead.class.push('nowrap');
454
- }
452
+ // 换行:未配置 ui-wrap(null / undefined)时默认仅移动端换行;'' 表示三端都不换行
453
+ if (col.thead['ui-wrap'] == null) col.thead['ui-wrap'] = '=mob';
455
454
  // 如果没有以 fs- 开头的类,就加 fs-sl
456
455
  if (!col.thead.class.some((c: string) => /^fs-/.test(c))) {
457
456
  col.thead.class.push('fs-sl');
@@ -66,15 +66,8 @@
66
66
  if (!attrs) attrs = {};
67
67
  else attrs = { ...attrs };
68
68
 
69
- // 处理 class 属性
70
- if (attrs.class) {
71
- attrs.class = attrs.class.split(/\s+/);
72
- if (!attrs.class.some((c: string) => c === 'wrap' || c === 'nowrap')) {
73
- attrs.class.push('nowrap');
74
- }
75
- } else {
76
- attrs.class = ['nowrap'];
77
- }
69
+ // 换行:未配置 ui-wrap(null / undefined)时默认仅移动端换行;'' 表示三端都不换行
70
+ if (attrs['ui-wrap'] == null) attrs['ui-wrap'] = '=mob';
78
71
 
79
72
  return attrs;
80
73
  });
@@ -17,7 +17,7 @@
17
17
  <ul v-if="state.detail" class="mb-sl fs-sl" ui-scroll=":y" style="max-height: 20rem">
18
18
  <template v-for="(item, idx) in state.diffs" :key="idx">
19
19
  <li v-if="item.label" ui-flex="row lm" class="bb-xs b-line b-solid ny-ss">
20
- <span class="nx-ss r-sm mr-sm ux-hover nowrap" @click="fScrollToField(item.domId)">[{{ item.label }}]</span>
20
+ <span class="nx-ss r-sm mr-sm ux-hover" ui-wrap="no" @click="fScrollToField(item.domId)">[{{ item.label }}]</span>
21
21
  <span v-if="item.lhsLabel" class="nx-ss r-sm ux-hover" ui-flex="row lm" @click="fDiscardDrafts(item)">
22
22
  <i class="icon icon-cloud co-well o-mm mr-xs"></i>
23
23
  <span ui-omit="1">{{ item.lhsLabel }}</span>
@@ -5,7 +5,7 @@
5
5
  <slot name="prefix"></slot>
6
6
  <slot>
7
7
  <div>
8
- <h6 class="fs-sm o-mm nowrap">每页显示数量</h6>
8
+ <h6 class="fs-sm o-mm" ui-wrap="no">每页显示数量</h6>
9
9
  <div ui-btns="@a line s :group :border">
10
10
  <button @click="setLinkMode('default')"><code :class="`${state.tools.confs.linkMode === 'default' ? 'co-main' : ''}`">跳转</code></button>
11
11
  <button @click="setLinkMode('preview')"><code :class="`${state.tools.confs.linkMode === 'preview' ? 'co-main' : ''}`">预览</code></button>
@@ -14,7 +14,7 @@
14
14
  </div>
15
15
  <div ui-line="@a" class="mt-sm mb-ss"></div>
16
16
  <div>
17
- <h6 class="fs-sm o-mm nowrap">每页显示数量</h6>
17
+ <h6 class="fs-sm o-mm" ui-wrap="no">每页显示数量</h6>
18
18
  <div ui-btns="@a line s :group :border">
19
19
  <button @click="setPageSize(10)"><code :class="`${state.tools.param.pageSize === 10 ? 'co-main' : ''}`">10</code></button>
20
20
  <button @click="setPageSize(20)"><code :class="`${state.tools.param.pageSize === 20 ? 'co-main' : ''}`">20</code></button>
@@ -89,14 +89,14 @@
89
89
  <slot name="setting">
90
90
  <ul class="n-ms mb-sm-sub">
91
91
  <li>
92
- <h6 class="fs-sm o-mm nowrap">显示总条数</h6>
92
+ <h6 class="fs-sm o-mm" ui-wrap="no">显示总条数</h6>
93
93
  <label ui-form="@a type:switch">
94
94
  <input type="checkbox" name="form2" v-model="state.showTotal" />
95
95
  <span>{{ state.showTotal ? '' : '' }}</span>
96
96
  </label>
97
97
  </li>
98
98
  <li>
99
- <h6 class="fs-sm o-mm nowrap">每页显示数量</h6>
99
+ <h6 class="fs-sm o-mm" ui-wrap="no">每页显示数量</h6>
100
100
  <ul>
101
101
  <li v-for="item in pageSizeOptions" :key="item" @click="size(item)" class="ux-hover r-sm">
102
102
  <code :class="`${pageSize === item ? 'co-main' : ''}`">{{ item }}条/页</code>
@@ -70,7 +70,7 @@
70
70
  </div>
71
71
  <div v-if="state.list.length" ui-tips-box="tl" class="ny-sl al">
72
72
  <div class="max-h-xl*s" ui-scroll=":y s">
73
- <ul class="n-ms nx-ss-sub nowrap">
73
+ <ul class="n-ms nx-ss-sub" ui-wrap="no">
74
74
  <li @click="size(10)" class="ux-hover r-sm"><code :class="`${modelValue.pageSize === 10 ? 'co-main' : ''}`">10条/页</code></li>
75
75
  <li @click="size(20)" class="ux-hover r-sm"><code :class="`${modelValue.pageSize === 20 ? 'co-main' : ''}`">20条/页</code></li>
76
76
  <li @click="size(50)" class="ux-hover r-sm"><code :class="`${modelValue.pageSize === 50 ? 'co-main' : ''}`">50条/页</code></li>
@@ -104,14 +104,14 @@
104
104
  <slot name="setting">
105
105
  <ul class="n-ms mb-sm-sub">
106
106
  <li>
107
- <h6 class="fs-sm o-mm nowrap">显示总页数</h6>
107
+ <h6 class="fs-sm o-mm" ui-wrap="no">显示总页数</h6>
108
108
  <label ui-form="@a type:switch">
109
109
  <input type="checkbox" v-model="state.showTotalPages" />
110
110
  <span>{{ state.showTotalPages ? '' : '' }}</span>
111
111
  </label>
112
112
  </li>
113
113
  <li>
114
- <h6 class="fs-sm o-mm nowrap">显示总条数</h6>
114
+ <h6 class="fs-sm o-mm" ui-wrap="no">显示总条数</h6>
115
115
  <label ui-form="@a type:switch">
116
116
  <input type="checkbox" v-model="state.showTotal" />
117
117
  <span>{{ state.showTotal ? '' : '' }}</span>