@nutui/nutui 3.1.15 → 3.1.17-beta.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.
Files changed (127) hide show
  1. package/CHANGELOG.md +22 -1
  2. package/dist/nutui.d.ts +3 -1
  3. package/dist/nutui.es.js +2037 -1005
  4. package/dist/nutui.umd.js +2043 -1006
  5. package/dist/packages/_es/ActionSheet.js +2 -2
  6. package/dist/packages/_es/Address.js +60 -7
  7. package/dist/packages/_es/Audio.js +289 -0
  8. package/dist/packages/_es/Avatar.js +1 -1
  9. package/dist/packages/_es/BackTop.js +1 -1
  10. package/dist/packages/_es/Badge.js +1 -1
  11. package/dist/packages/_es/Barrage.js +1 -1
  12. package/dist/packages/_es/Button.js +13 -4
  13. package/dist/packages/_es/Calendar.js +428 -209
  14. package/dist/packages/_es/Card.js +1 -2
  15. package/dist/packages/_es/Cascader.js +2 -2
  16. package/dist/packages/_es/Cell.js +1 -1
  17. package/dist/packages/_es/CellGroup.js +1 -1
  18. package/dist/packages/_es/Checkbox.js +2 -2
  19. package/dist/packages/_es/CheckboxGroup.js +1 -1
  20. package/dist/packages/_es/CircleProgress.js +1 -1
  21. package/dist/packages/_es/Col.js +1 -1
  22. package/dist/packages/_es/Collapse.js +1 -1
  23. package/dist/packages/_es/CollapseItem.js +1 -1
  24. package/dist/packages/_es/CountDown.js +1 -1
  25. package/dist/packages/_es/CountUp.js +1 -1
  26. package/dist/packages/_es/DatePicker.js +1 -3
  27. package/dist/packages/_es/Dialog.js +1 -1
  28. package/dist/packages/_es/Divider.js +1 -1
  29. package/dist/packages/_es/Drag.js +1 -1
  30. package/dist/packages/_es/Elevator.js +10 -5
  31. package/dist/packages/_es/Empty.js +1 -1
  32. package/dist/packages/_es/FixedNav.js +1 -1
  33. package/dist/packages/_es/Form.js +1 -1
  34. package/dist/packages/_es/FormItem.js +1 -1
  35. package/dist/packages/_es/Grid.js +1 -1
  36. package/dist/packages/_es/GridItem.js +1 -1
  37. package/dist/packages/_es/Icon.js +1 -1
  38. package/dist/packages/_es/ImagePreview.js +1 -3
  39. package/dist/packages/_es/Indicator.js +1 -1
  40. package/dist/packages/_es/InfiniteLoading.js +1 -1
  41. package/dist/packages/_es/Input.js +21 -11
  42. package/dist/packages/_es/InputNumber.js +1 -1
  43. package/dist/packages/_es/Layout.js +1 -1
  44. package/dist/packages/_es/Menu.js +2 -2
  45. package/dist/packages/_es/MenuItem.js +1 -1
  46. package/dist/packages/_es/Navbar.js +6 -32
  47. package/dist/packages/_es/NoticeBar.js +1 -4
  48. package/dist/packages/_es/Notify.js +1 -1
  49. package/dist/packages/_es/NumberKeyboard.js +1 -2
  50. package/dist/packages/_es/OverLay.js +1 -1
  51. package/dist/packages/_es/Pagination.js +1 -1
  52. package/dist/packages/_es/Picker.js +170 -189
  53. package/dist/packages/_es/Popover.js +1 -1
  54. package/dist/packages/_es/Popup.js +1 -1
  55. package/dist/packages/_es/Price.js +2 -2
  56. package/dist/packages/_es/Progress.js +24 -11
  57. package/dist/packages/_es/Radio.js +2 -2
  58. package/dist/packages/_es/RadioGroup.js +1 -1
  59. package/dist/packages/_es/Range.js +3 -3
  60. package/dist/packages/_es/Rate.js +1 -1
  61. package/dist/packages/_es/Row.js +1 -1
  62. package/dist/packages/_es/SearchBar.js +1 -1
  63. package/dist/packages/_es/ShortPassword.js +5 -2
  64. package/dist/packages/_es/SideNavBar.js +1 -1
  65. package/dist/packages/_es/SideNavBarItem.js +1 -1
  66. package/dist/packages/_es/Signature.js +1 -1
  67. package/dist/packages/_es/Skeleton.js +8 -6
  68. package/dist/packages/_es/Sku.js +1 -2
  69. package/dist/packages/_es/Step.js +1 -1
  70. package/dist/packages/_es/Steps.js +1 -1
  71. package/dist/packages/_es/Sticky.js +143 -0
  72. package/dist/packages/_es/SubSideNavBar.js +1 -1
  73. package/dist/packages/_es/Swipe.js +2 -2
  74. package/dist/packages/_es/Swiper.js +1 -1
  75. package/dist/packages/_es/SwiperItem.js +3 -8
  76. package/dist/packages/_es/Switch.js +2 -2
  77. package/dist/packages/_es/TabPane.js +1 -1
  78. package/dist/packages/_es/Tabbar.js +1 -1
  79. package/dist/packages/_es/TabbarItem.js +1 -1
  80. package/dist/packages/_es/Table.js +2 -2
  81. package/dist/packages/_es/Tabs.js +1 -1
  82. package/dist/packages/_es/Tag.js +1 -1
  83. package/dist/packages/_es/TextArea.js +1 -1
  84. package/dist/packages/_es/TimeDetail.js +1 -1
  85. package/dist/packages/_es/TimePannel.js +1 -1
  86. package/dist/packages/_es/TimeSelect.js +1 -1
  87. package/dist/packages/_es/Toast.js +1 -1
  88. package/dist/packages/_es/Uploader.js +6 -4
  89. package/dist/packages/_es/Video.js +1 -55
  90. package/dist/packages/_es/common.js +1 -1
  91. package/dist/packages/_es/component.js +1 -1
  92. package/dist/packages/_es/index.js +1 -1
  93. package/dist/packages/_es/index2.js +28 -56
  94. package/dist/packages/_es/index3.js +56 -28
  95. package/dist/packages/_es/plugin-vue_export-helper.js +1 -1
  96. package/dist/packages/_es/pxCheck.js +1 -1
  97. package/dist/packages/_es/raf.js +1 -1
  98. package/dist/packages/_es/util.js +1 -1
  99. package/dist/packages/address/index.scss +8 -0
  100. package/dist/packages/audio/index.scss +66 -0
  101. package/dist/packages/audiooperate/index.scss +13 -0
  102. package/dist/packages/button/index.scss +3 -0
  103. package/dist/packages/calendar/index.scss +47 -41
  104. package/dist/packages/calendaritem/index.scss +57 -42
  105. package/dist/packages/elevator/index.scss +3 -0
  106. package/dist/packages/icon/index.scss +2 -2
  107. package/dist/packages/infiniteloading/index.scss +1 -1
  108. package/dist/packages/input/index.scss +8 -3
  109. package/dist/packages/menuitem/index.scss +1 -1
  110. package/dist/packages/navbar/index.scss +8 -34
  111. package/dist/packages/picker/index.scss +73 -17
  112. package/dist/packages/range/index.scss +4 -4
  113. package/dist/packages/row/index.scss +3 -0
  114. package/dist/packages/sticky/index.scss +5 -0
  115. package/dist/packages/tabbar/index.scss +4 -2
  116. package/dist/style.css +1 -1
  117. package/dist/styles/font/config.json +6 -1
  118. package/dist/styles/font/demo_index.html +118 -3
  119. package/dist/styles/font/iconfont.css +23 -3
  120. package/dist/styles/font/iconfont.js +25 -24
  121. package/dist/styles/font/iconfont.json +35 -0
  122. package/dist/styles/font/iconfont.ttf +0 -0
  123. package/dist/styles/font/iconfont.woff +0 -0
  124. package/dist/styles/font/iconfont.woff2 +0 -0
  125. package/dist/styles/themes/default.scss +40 -37
  126. package/dist/styles/variables.scss +34 -31
  127. package/package.json +12 -13
@@ -18,13 +18,12 @@ var __spreadValues = (a, b) => {
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  /*!
21
- * @nutui/nutui v3.1.15 Fri Jan 21 2022 15:38:52 GMT+0800 (GMT+08:00)
21
+ * @nutui/nutui v3.1.16 Fri Feb 25 2022 17:05:36 GMT+0800 (GMT+08:00)
22
22
  * (c) 2021 @jdf2e.
23
23
  * Released under the MIT License.
24
24
  */
25
- import { ref, reactive, computed, onMounted, watch, toRefs, openBlock, createElementBlock, normalizeStyle, createElementVNode, Fragment, renderList, toDisplayString, toRaw, resolveComponent, normalizeClass, createVNode, withCtx } from "vue";
25
+ import { ref, reactive, computed, watch, onMounted, toRefs, openBlock, createElementBlock, createElementVNode, normalizeStyle, Fragment, renderList, normalizeClass, toDisplayString, createCommentVNode, toRaw, resolveComponent, createVNode, withCtx } from "vue";
26
26
  import { c as createComponent } from "./component.js";
27
- import { u as useTouch } from "./index2.js";
28
27
  import { _ as _export_sfc } from "./plugin-vue_export-helper.js";
29
28
  import Popup, { popupProps } from "./Popup.js";
30
29
  import "./OverLay.js";
@@ -41,10 +40,6 @@ const commonProps = {
41
40
  type: Boolean,
42
41
  default: false
43
42
  },
44
- visibleItemCount: {
45
- type: [Number, String],
46
- default: 7
47
- },
48
43
  defaultIndex: {
49
44
  type: [Number, String],
50
45
  default: 0
@@ -54,206 +49,208 @@ const commonProps = {
54
49
  default: 35
55
50
  }
56
51
  };
57
- const MOMENTUM_LIMIT_DISTANCE = 15;
58
- const MOMENTUM_LIMIT_TIME = 300;
59
- const DEFAULT_DURATION = 200;
60
52
  const { create: create$1 } = createComponent("picker-column");
61
- function range(num, min, max) {
62
- return Math.min(Math.max(num, min), max);
63
- }
64
- function stopPropagation(event) {
65
- event.stopPropagation();
66
- }
67
- function preventDefault(event, isStopPropagation) {
68
- if (typeof event.cancelable !== "boolean" || event.cancelable) {
69
- event.preventDefault();
70
- }
71
- if (isStopPropagation) {
72
- stopPropagation(event);
73
- }
74
- }
75
- function getElementTranslateY(element) {
76
- const style = window.getComputedStyle(element);
77
- const transform = style.transform || style.webkitTransform;
78
- const translateY = transform.slice(7, transform.length - 1).split(", ")[5];
79
- return Number(translateY);
80
- }
81
- function isObject(val) {
82
- return val !== null && typeof val === "object";
83
- }
84
- function isOptionDisabled(option) {
85
- return isObject(option) && option.disabled;
86
- }
87
53
  const _sfc_main$1 = create$1({
88
54
  props: __spreadValues({
89
- dataType: String
55
+ dataType: String,
56
+ itemShow: {
57
+ type: Boolean,
58
+ default: false
59
+ }
90
60
  }, commonProps),
91
61
  emits: ["click", "change"],
92
62
  setup(props, { emit }) {
93
63
  const wrapper = ref();
94
64
  const state = reactive({
95
- index: props.defaultIndex,
96
- offset: 0,
97
- duration: 0,
98
- options: props.listData,
99
- moving: false,
100
- startOffset: 0,
101
- touchStartTime: 0,
102
- momentumOffset: 0,
103
- transitionEndTrigger: null
65
+ touchParams: {
66
+ startY: 0,
67
+ endY: 0,
68
+ startTime: 0,
69
+ endTime: 0,
70
+ lastY: 0
71
+ },
72
+ currIndex: 1,
73
+ transformY: 0,
74
+ scrollDistance: 0,
75
+ lineSpacing: 36,
76
+ rotation: 20,
77
+ timer: null
78
+ });
79
+ const roller = ref(null);
80
+ const list = ref(null);
81
+ const listItem = ref(null);
82
+ const touchDeg = ref(0);
83
+ const touchTime = ref(0);
84
+ const touchTranslateY = ref(0);
85
+ const touchListStyle = computed(() => {
86
+ return {
87
+ transition: `transform ${touchTime.value}ms cubic-bezier(0.19, 1, 0.22, 1)`,
88
+ transform: `translate3d(0, ${state.scrollDistance}px, 0)`
89
+ };
90
+ });
91
+ const touchRollerStyle = computed(() => {
92
+ return {
93
+ transition: `transform ${touchTime.value}ms cubic-bezier(0.19, 1, 0.22, 1)`,
94
+ transform: `rotate3d(1, 0, 0, ${touchDeg.value})`
95
+ };
104
96
  });
105
- const touch = useTouch();
106
- const wrapperStyle = computed(() => ({
107
- transform: `translate3d(0, ${state.offset + baseOffset()}px, 0)`,
108
- transitionDuration: `${state.duration}ms`,
109
- transitionProperty: state.duration ? "all" : "none"
110
- }));
111
- const getIndexByOffset = (offset) => {
112
- return range(Math.round(-offset / +props.itemHeight), 0, state.options.length - 1);
97
+ const onTouchStart = (event) => {
98
+ event.preventDefault();
99
+ let changedTouches = event.changedTouches[0];
100
+ state.touchParams.startY = changedTouches.pageY;
101
+ state.touchParams.startTime = event.timeStamp || Date.now();
102
+ state.transformY = state.scrollDistance;
113
103
  };
114
- const baseOffset = () => {
115
- return +props.itemHeight * (+props.visibleItemCount - 1) / 2;
104
+ const onTouchMove = (event) => {
105
+ event.preventDefault();
106
+ let changedTouches = event.changedTouches[0];
107
+ state.touchParams.lastY = changedTouches.pageY;
108
+ state.touchParams.lastTime = event.timeStamp || Date.now();
109
+ let move = state.touchParams.lastY - state.touchParams.startY;
110
+ setMove(move);
116
111
  };
117
- const stopMomentum = () => {
118
- state.moving = false;
119
- state.duration = 0;
120
- if (state.transitionEndTrigger) {
121
- state.transitionEndTrigger();
122
- state.transitionEndTrigger = null;
112
+ const onTouchEnd = (event) => {
113
+ event.preventDefault();
114
+ let changedTouches = event.changedTouches[0];
115
+ state.touchParams.lastY = changedTouches.pageY;
116
+ state.touchParams.lastTime = event.timestamp || Date.now();
117
+ let move = state.touchParams.lastY - state.touchParams.startY;
118
+ let moveTime = state.touchParams.lastTime - state.touchParams.startTime;
119
+ if (moveTime <= 300) {
120
+ move = move * 2;
121
+ moveTime = moveTime + 1e3;
122
+ setMove(move, "end", moveTime);
123
+ } else {
124
+ setMove(move, "end");
123
125
  }
124
126
  };
125
- const adjustIndex = (index) => {
126
- index = range(index, 0, state.options.length);
127
- for (let i = index; i < state.options.length; i++) {
128
- if (!isOptionDisabled(state.options[i]))
129
- return i;
130
- }
131
- for (let i = index - 1; i >= 0; i--) {
132
- if (!isOptionDisabled(state.options[i]))
133
- return i;
134
- }
127
+ const setRollerStyle = (index) => {
128
+ return `transform: rotate3d(1, 0, 0, ${-state.rotation * index}deg) translate3d(0px, 0px, 104px)`;
135
129
  };
136
- const setIndex = (index, emitChange = false) => {
137
- index = adjustIndex(index) || 0;
138
- const offset = -index * +props.itemHeight;
139
- const trigger = () => {
140
- if (index !== state.index) {
141
- state.index = index;
142
- if (emitChange) {
143
- emit("change", index);
144
- }
145
- }
146
- };
147
- if (state.moving && offset !== state.offset) {
148
- state.transitionEndTrigger = trigger;
130
+ const isHidden = (index) => {
131
+ if (index >= state.currIndex + 8 || index <= state.currIndex - 8) {
132
+ return true;
149
133
  } else {
150
- trigger();
134
+ return false;
151
135
  }
152
- state.offset = offset;
153
- };
154
- const momentum = (distance, duration) => {
155
- const speed = Math.abs(distance / duration);
156
- distance = state.offset + speed / 0.03 * (distance < 0 ? -1 : 1);
157
- const index = getIndexByOffset(distance);
158
- setIndex(index, true);
159
136
  };
160
- const onTouchStart = (event) => {
161
- if (props.readonly) {
162
- return;
163
- }
164
- touch.start(event);
165
- if (state.moving) {
166
- const translateY = getElementTranslateY(wrapper.value);
167
- state.offset = Math.min(0, translateY - baseOffset());
168
- state.startOffset = state.offset;
137
+ const setTransform = (translateY = 0, type, time = 1e3, deg) => {
138
+ if (type === "end") {
139
+ touchTime.value = time;
169
140
  } else {
170
- state.startOffset = state.offset;
141
+ touchTime.value = 0;
171
142
  }
172
- state.duration = 0;
173
- state.touchStartTime = Date.now();
174
- state.momentumOffset = state.startOffset;
175
- state.transitionEndTrigger = null;
143
+ touchDeg.value = deg;
144
+ touchTranslateY.value = translateY;
145
+ state.scrollDistance = translateY;
176
146
  };
177
- const onTouchMove = (event) => {
178
- if (props.readonly) {
179
- return;
180
- }
181
- state.moving = true;
182
- touch.move(event);
183
- if (touch.isVertical()) {
184
- state.moving = true;
185
- preventDefault(event, true);
186
- }
187
- const moveOffset = state.startOffset + touch.deltaY.value;
188
- if (moveOffset > props.itemHeight) {
189
- state.offset = props.itemHeight;
147
+ const setMove = (move, type, time) => {
148
+ let updateMove = move + state.transformY;
149
+ if (type === "end") {
150
+ if (updateMove > 0) {
151
+ updateMove = 0;
152
+ }
153
+ if (updateMove < -(props.listData.values.length - 1) * state.lineSpacing) {
154
+ updateMove = -(props.listData.values.length - 1) * state.lineSpacing;
155
+ }
156
+ let endMove = Math.round(updateMove / state.lineSpacing) * state.lineSpacing;
157
+ let deg = `${(Math.abs(Math.round(endMove / state.lineSpacing)) + 1) * state.rotation}deg`;
158
+ setTransform(endMove, type, time, deg);
159
+ let t = time ? time / 2 : 0;
160
+ state.timer = setTimeout(() => {
161
+ setChooseValue();
162
+ }, t);
163
+ state.currIndex = Math.abs(Math.round(endMove / state.lineSpacing)) + 1;
190
164
  } else {
191
- state.offset = state.startOffset + touch.deltaY.value;
192
- }
193
- const now = Date.now();
194
- if (now - state.touchStartTime > MOMENTUM_LIMIT_TIME) {
195
- state.touchStartTime = now;
196
- state.momentumOffset = state.offset;
165
+ let deg = "0deg";
166
+ if (updateMove < 0) {
167
+ deg = `${(Math.abs(updateMove / state.lineSpacing) + 1) * state.rotation}deg`;
168
+ } else {
169
+ deg = `${(-updateMove / state.lineSpacing + 1) * state.rotation}deg`;
170
+ }
171
+ setTransform(updateMove, null, void 0, deg);
172
+ state.currIndex = Math.abs(Math.round(updateMove / state.lineSpacing)) + 1;
197
173
  }
198
174
  };
199
- const onTouchEnd = () => {
200
- const index = getIndexByOffset(state.offset);
201
- state.duration = DEFAULT_DURATION;
202
- setIndex(index, true);
203
- const distance = state.offset - state.momentumOffset;
204
- const duration = Date.now() - state.touchStartTime;
205
- const allowMomentum = duration < MOMENTUM_LIMIT_TIME && Math.abs(distance) > MOMENTUM_LIMIT_DISTANCE;
206
- if (allowMomentum) {
207
- momentum(distance, duration);
208
- return;
209
- }
175
+ const setChooseValue = () => {
176
+ emit("change", state.currIndex - 1);
177
+ };
178
+ const modifyStatus = (type) => {
179
+ let index = props.defaultIndex;
180
+ state.currIndex = index === -1 ? 1 : index + 1;
181
+ let move = index === -1 ? 0 : index * state.lineSpacing;
182
+ type && setChooseValue();
183
+ setMove(-move);
210
184
  };
211
- onMounted(() => {
212
- setIndex(+props.defaultIndex);
213
- });
214
185
  watch(() => props.listData, (val) => {
215
- if (val) {
216
- state.options = val;
217
- }
186
+ state.transformY = 0;
187
+ modifyStatus(false);
188
+ }, {
189
+ deep: true
218
190
  });
219
191
  watch(() => props.defaultIndex, (val) => {
220
- setIndex(+val);
192
+ state.transformY = 0;
193
+ modifyStatus(false);
194
+ });
195
+ onMounted(() => {
196
+ modifyStatus(true);
221
197
  });
222
- return __spreadProps(__spreadValues({}, toRefs(state)), {
198
+ return __spreadProps(__spreadValues(__spreadValues({}, toRefs(state)), toRefs(props)), {
223
199
  wrapper,
200
+ setRollerStyle,
201
+ isHidden,
202
+ roller,
203
+ list,
204
+ listItem,
224
205
  onTouchStart,
225
206
  onTouchMove,
226
207
  onTouchEnd,
227
- wrapperStyle,
228
- stopMomentum,
229
- columns: state.options,
230
- height: Number(props.visibleItemCount) * +props.itemHeight
208
+ touchRollerStyle,
209
+ touchListStyle
231
210
  });
232
211
  }
233
212
  });
213
+ const _hoisted_1$1 = { class: "nut-picker-content" };
214
+ const _hoisted_2$1 = {
215
+ key: 0,
216
+ class: "nut-picker-placeholder"
217
+ };
234
218
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
235
219
  return openBlock(), createElementBlock("view", {
236
- class: "nut-picker__content",
237
- style: normalizeStyle({ height: _ctx.height + "px" }),
220
+ class: "nut-picker__list",
238
221
  onTouchstart: _cache[0] || (_cache[0] = (...args) => _ctx.onTouchStart && _ctx.onTouchStart(...args)),
239
222
  onTouchmove: _cache[1] || (_cache[1] = (...args) => _ctx.onTouchMove && _ctx.onTouchMove(...args)),
240
- onTouchend: _cache[2] || (_cache[2] = (...args) => _ctx.onTouchEnd && _ctx.onTouchEnd(...args)),
241
- onTouchcancel: _cache[3] || (_cache[3] = (...args) => _ctx.onTouchEnd && _ctx.onTouchEnd(...args)),
242
- onTransitionend: _cache[4] || (_cache[4] = (...args) => _ctx.stopMomentum && _ctx.stopMomentum(...args))
223
+ onTouchend: _cache[2] || (_cache[2] = (...args) => _ctx.onTouchEnd && _ctx.onTouchEnd(...args))
243
224
  }, [
244
225
  createElementVNode("view", {
245
- class: "nut-picker__wrapper",
246
- ref: "wrapper",
247
- style: normalizeStyle(_ctx.wrapperStyle)
226
+ class: "nut-picker-roller",
227
+ ref: "roller",
228
+ style: normalizeStyle(_ctx.touchRollerStyle)
248
229
  }, [
249
- (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.options, (item, index) => {
230
+ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.listData.values, (item, index) => {
250
231
  return openBlock(), createElementBlock("view", {
251
- class: "nut-picker__item",
252
- key: index
253
- }, toDisplayString(_ctx.dataType === "cascade" ? item.text : item), 1);
232
+ class: normalizeClass(["nut-picker-roller-item", { "nut-picker-roller-item-hidden": _ctx.isHidden(index + 1) }]),
233
+ style: normalizeStyle(_ctx.setRollerStyle(index + 1)),
234
+ key: item.label ? item.label : index
235
+ }, toDisplayString(_ctx.dataType === "cascade" ? item.text : item), 7);
254
236
  }), 128))
255
- ], 4)
256
- ], 36);
237
+ ], 4),
238
+ createElementVNode("view", _hoisted_1$1, [
239
+ createElementVNode("view", {
240
+ class: "nut-picker-list-panel",
241
+ ref: "list",
242
+ style: normalizeStyle(_ctx.touchListStyle)
243
+ }, [
244
+ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.listData.values, (item, index) => {
245
+ return openBlock(), createElementBlock("view", {
246
+ class: "nut-picker-item nut-picker-item-ref",
247
+ key: item.label ? item.label : index
248
+ }, toDisplayString(_ctx.dataType === "cascade" ? item.text : item), 1);
249
+ }), 128)),
250
+ _ctx.listData && _ctx.listData.length === 1 ? (openBlock(), createElementBlock("view", _hoisted_2$1)) : createCommentVNode("", true)
251
+ ], 4)
252
+ ])
253
+ ], 32);
257
254
  }
258
255
  var column = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1]]);
259
256
  const { create, componentName } = createComponent("picker");
@@ -293,12 +290,6 @@ const _sfc_main = create({
293
290
  [prefixCls]: true
294
291
  };
295
292
  });
296
- const top = computed(() => {
297
- return Number(+props.visibleItemCount - 1) / 2 * +props.itemHeight;
298
- });
299
- const height = computed(() => {
300
- return Number(props.visibleItemCount) * +props.itemHeight;
301
- });
302
293
  const dataType = computed(() => {
303
294
  const firstColumn = state.formattedColumns[0];
304
295
  if (typeof firstColumn === "object") {
@@ -313,9 +304,7 @@ const _sfc_main = create({
313
304
  });
314
305
  const columnList = computed(() => {
315
306
  if (dataType.value === "text") {
316
- return [
317
- { values: state.formattedColumns, defaultIndex: state.defaultIndex }
318
- ];
307
+ return [{ values: state.formattedColumns, defaultIndex: state.defaultIndex }];
319
308
  } else if (dataType.value === "multipleColumns") {
320
309
  return state.formattedColumns;
321
310
  } else if (dataType.value === "cascade") {
@@ -380,7 +369,7 @@ const _sfc_main = create({
380
369
  } else if (dataType.value === "multipleColumns") {
381
370
  defaultIndexList[columnIndex] = dataIndex;
382
371
  const val = defaultIndexList.map((res, i) => toRaw(state.formattedColumns)[i].values[res]);
383
- emit("change", val);
372
+ emit("change", val, columnIndex, dataIndex);
384
373
  }
385
374
  };
386
375
  const confirm = () => {
@@ -410,8 +399,6 @@ const _sfc_main = create({
410
399
  column,
411
400
  dataType,
412
401
  columnList,
413
- top,
414
- height,
415
402
  close,
416
403
  changeHandler,
417
404
  confirm
@@ -420,6 +407,7 @@ const _sfc_main = create({
420
407
  });
421
408
  const _hoisted_1 = { class: "nut-picker__bar" };
422
409
  const _hoisted_2 = { class: "nut-picker__column" };
410
+ const _hoisted_3 = /* @__PURE__ */ createElementVNode("view", { class: "nut-picker__hairline" }, null, -1);
423
411
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
424
412
  const _component_nut_picker_column = resolveComponent("nut-picker-column");
425
413
  const _component_nut_popup = resolveComponent("nut-popup");
@@ -428,13 +416,13 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
428
416
  }, [
429
417
  createVNode(_component_nut_popup, {
430
418
  position: "bottom",
431
- style: normalizeStyle({ height: _ctx.height + 56 + "px" }),
432
419
  visible: _ctx.show,
433
420
  "onUpdate:visible": _cache[2] || (_cache[2] = ($event) => _ctx.show = $event),
434
421
  teleport: _ctx.teleport,
435
422
  "lock-scroll": _ctx.lockScroll,
436
423
  "close-on-click-overlay": _ctx.closeOnClickOverlay,
437
- onClose: _ctx.close
424
+ onClose: _ctx.close,
425
+ round: true
438
426
  }, {
439
427
  default: withCtx(() => [
440
428
  createElementVNode("view", _hoisted_1, [
@@ -449,36 +437,29 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
449
437
  }, toDisplayString(_ctx.okText), 1)
450
438
  ]),
451
439
  createElementVNode("view", _hoisted_2, [
452
- createElementVNode("view", {
453
- class: "nut-picker__mask",
454
- style: normalizeStyle({ backgroundSize: `100% ${_ctx.top}px` })
455
- }, null, 4),
456
- createElementVNode("view", {
457
- class: "nut-picker__hairline",
458
- style: normalizeStyle({ top: ` ${_ctx.top}px` })
459
- }, null, 4),
440
+ _hoisted_3,
460
441
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.columnList, (item, columnIndex) => {
461
442
  return openBlock(), createElementBlock("view", {
462
443
  class: "nut-picker__columnitem",
463
444
  key: columnIndex
464
445
  }, [
465
446
  createVNode(_component_nut_picker_column, {
466
- "list-data": item.values,
447
+ itemShow: _ctx.show,
448
+ "list-data": item,
467
449
  readonly: _ctx.readonly,
468
450
  "default-index": item.defaultIndex,
469
451
  "visible-item-count": _ctx.visibleItemCount,
470
- "item-height": _ctx.itemHeight,
471
452
  "data-type": _ctx.dataType,
472
453
  onChange: (dataIndex) => {
473
454
  _ctx.changeHandler(columnIndex, dataIndex);
474
455
  }
475
- }, null, 8, ["list-data", "readonly", "default-index", "visible-item-count", "item-height", "data-type", "onChange"])
456
+ }, null, 8, ["itemShow", "list-data", "readonly", "default-index", "visible-item-count", "data-type", "onChange"])
476
457
  ]);
477
458
  }), 128))
478
459
  ])
479
460
  ]),
480
461
  _: 1
481
- }, 8, ["style", "visible", "teleport", "lock-scroll", "close-on-click-overlay", "onClose"])
462
+ }, 8, ["visible", "teleport", "lock-scroll", "close-on-click-overlay", "onClose"])
482
463
  ], 2);
483
464
  }
484
465
  var picker = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
@@ -18,7 +18,7 @@ var __spreadValues = (a, b) => {
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  /*!
21
- * @nutui/nutui v3.1.15 Fri Jan 21 2022 15:38:52 GMT+0800 (GMT+08:00)
21
+ * @nutui/nutui v3.1.16 Fri Feb 25 2022 17:05:36 GMT+0800 (GMT+08:00)
22
22
  * (c) 2021 @jdf2e.
23
23
  * Released under the MIT License.
24
24
  */
@@ -18,7 +18,7 @@ var __spreadValues = (a, b) => {
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  /*!
21
- * @nutui/nutui v3.1.15 Fri Jan 21 2022 15:38:52 GMT+0800 (GMT+08:00)
21
+ * @nutui/nutui v3.1.16 Fri Feb 25 2022 17:05:36 GMT+0800 (GMT+08:00)
22
22
  * (c) 2021 @jdf2e.
23
23
  * Released under the MIT License.
24
24
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui v3.1.15 Fri Jan 21 2022 15:38:52 GMT+0800 (GMT+08:00)
2
+ * @nutui/nutui v3.1.16 Fri Feb 25 2022 17:05:36 GMT+0800 (GMT+08:00)
3
3
  * (c) 2021 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -22,7 +22,7 @@ const _sfc_main = create({
22
22
  default: "&yen;"
23
23
  },
24
24
  decimalDigits: {
25
- type: Number,
25
+ type: [Number, String],
26
26
  default: 2
27
27
  },
28
28
  thousands: {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui v3.1.15 Fri Jan 21 2022 15:38:52 GMT+0800 (GMT+08:00)
2
+ * @nutui/nutui v3.1.16 Fri Feb 25 2022 17:05:36 GMT+0800 (GMT+08:00)
3
3
  * (c) 2021 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -49,11 +49,16 @@ const _sfc_main = create({
49
49
  iconColor: {
50
50
  type: String,
51
51
  default: "#439422"
52
+ },
53
+ isShowPercentage: {
54
+ type: Boolean,
55
+ default: true
52
56
  }
53
57
  },
54
58
  setup(props, { emit }) {
55
59
  const height = ref(props.strokeWidth + "px");
56
60
  const progressOuter = ref();
61
+ const insideText = ref();
57
62
  const left = ref();
58
63
  const bgStyle = computed(() => {
59
64
  return {
@@ -66,19 +71,29 @@ const _sfc_main = create({
66
71
  color: props.textColor || ""
67
72
  };
68
73
  });
74
+ const slideLeft = (values) => {
75
+ if (props.textInside) {
76
+ let offsetWidth = progressOuter.value.offsetWidth;
77
+ let percentageWidth = progressOuter.value.offsetWidth * Number(values) * 0.01;
78
+ let insideTextWidth = insideText.value.offsetWidth;
79
+ left.value = percentageWidth - 5 + "px";
80
+ if (offsetWidth == percentageWidth) {
81
+ left.value = percentageWidth - insideTextWidth + "px";
82
+ }
83
+ }
84
+ };
69
85
  watch(() => props.percentage, (values) => {
70
- console.log("progressOuter.value.offsetWidth", progressOuter.value.offsetWidth);
71
- console.log("values", values);
72
- left.value = progressOuter.value.offsetWidth * Number(values) * 0.01 - 5 + "px";
86
+ slideLeft(values);
73
87
  });
74
88
  onMounted(() => {
75
- left.value = progressOuter.value.offsetWidth * Number(props.percentage) * 0.01 - 5 + "px";
89
+ slideLeft(props.percentage);
76
90
  });
77
91
  return {
78
92
  height,
79
93
  bgStyle,
80
94
  textStyle,
81
95
  progressOuter,
96
+ insideText,
82
97
  left
83
98
  };
84
99
  }
@@ -88,10 +103,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
88
103
  const _component_nut_icon = resolveComponent("nut-icon");
89
104
  return openBlock(), createElementBlock("div", _hoisted_1, [
90
105
  createElementVNode("div", {
91
- class: normalizeClass(["nut-progress-outer", [
92
- _ctx.showText && !_ctx.textInside ? "nut-progress-outer-part" : "",
93
- _ctx.size ? "nut-progress-" + _ctx.size : ""
94
- ]]),
106
+ class: normalizeClass(["nut-progress-outer", [_ctx.showText && !_ctx.textInside ? "nut-progress-outer-part" : "", _ctx.size ? "nut-progress-" + _ctx.size : ""]]),
95
107
  ref: "progressOuter",
96
108
  style: normalizeStyle({ height: _ctx.height })
97
109
  }, [
@@ -102,11 +114,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
102
114
  _ctx.showText && _ctx.textInside ? (openBlock(), createElementBlock("div", {
103
115
  key: 0,
104
116
  class: "nut-progress-text nut-progress-insidetext",
117
+ ref: "insideText",
105
118
  style: normalizeStyle({ lineHeight: _ctx.height, left: _ctx.left })
106
119
  }, [
107
120
  createElementVNode("span", {
108
121
  style: normalizeStyle(_ctx.textStyle)
109
- }, toDisplayString(_ctx.percentage) + "%", 5)
122
+ }, toDisplayString(_ctx.percentage) + toDisplayString(_ctx.isShowPercentage ? "%" : ""), 5)
110
123
  ], 4)) : createCommentVNode("", true)
111
124
  ], 6)
112
125
  ], 6),
@@ -118,7 +131,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
118
131
  _ctx.status == "active" || _ctx.status == "" ? (openBlock(), createElementBlock("span", {
119
132
  key: 0,
120
133
  style: normalizeStyle(_ctx.textStyle)
121
- }, toDisplayString(_ctx.percentage) + "%", 5)) : _ctx.status == "icon" ? (openBlock(), createBlock(_component_nut_icon, {
134
+ }, toDisplayString(_ctx.percentage) + toDisplayString(_ctx.isShowPercentage ? "%" : ""), 5)) : _ctx.status == "icon" ? (openBlock(), createBlock(_component_nut_icon, {
122
135
  key: 1,
123
136
  size: "16px",
124
137
  name: _ctx.iconName,
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui v3.1.15 Fri Jan 21 2022 15:38:52 GMT+0800 (GMT+08:00)
2
+ * @nutui/nutui v3.1.16 Fri Feb 25 2022 17:05:36 GMT+0800 (GMT+08:00)
3
3
  * (c) 2021 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -36,7 +36,7 @@ const _sfc_main = create({
36
36
  }
37
37
  },
38
38
  setup(props, { emit, slots }) {
39
- let parent = inject("parent");
39
+ let parent = inject("parent", null);
40
40
  const isCurValue = computed(() => {
41
41
  return parent.label.value == props.label;
42
42
  });
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui v3.1.15 Fri Jan 21 2022 15:38:52 GMT+0800 (GMT+08:00)
2
+ * @nutui/nutui v3.1.16 Fri Feb 25 2022 17:05:36 GMT+0800 (GMT+08:00)
3
3
  * (c) 2021 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -18,14 +18,14 @@ var __spreadValues = (a, b) => {
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  /*!
21
- * @nutui/nutui v3.1.15 Fri Jan 21 2022 15:38:52 GMT+0800 (GMT+08:00)
21
+ * @nutui/nutui v3.1.16 Fri Feb 25 2022 17:05:36 GMT+0800 (GMT+08:00)
22
22
  * (c) 2021 @jdf2e.
23
23
  * Released under the MIT License.
24
24
  */
25
25
  import { ref, computed, toRefs, openBlock, createElementBlock, toDisplayString, createCommentVNode, createElementVNode, normalizeStyle, normalizeClass, withModifiers, Fragment, renderList, renderSlot } from "vue";
26
26
  import { c as createComponent } from "./component.js";
27
- import { u as useTouch } from "./index2.js";
28
- import { u as useRect } from "./index3.js";
27
+ import { u as useTouch } from "./index3.js";
28
+ import { u as useRect } from "./index2.js";
29
29
  import { _ as _export_sfc } from "./plugin-vue_export-helper.js";
30
30
  const { componentName, create } = createComponent("range");
31
31
  const _sfc_main = create({