@nutui/nutui 3.1.10 → 3.1.11-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 (90) hide show
  1. package/dist/nutui.d.ts +2 -1
  2. package/dist/nutui.es.js +1308 -698
  3. package/dist/nutui.umd.js +1314 -703
  4. package/dist/packages/_es/ActionSheet.js +1 -1
  5. package/dist/packages/_es/Address.js +1 -1
  6. package/dist/packages/_es/Avatar.js +1 -1
  7. package/dist/packages/_es/BackTop.js +1 -1
  8. package/dist/packages/_es/Badge.js +1 -1
  9. package/dist/packages/_es/Barrage.js +1 -1
  10. package/dist/packages/_es/Button.js +1 -1
  11. package/dist/packages/_es/Calendar.js +1 -1
  12. package/dist/packages/_es/Cell.js +1 -1
  13. package/dist/packages/_es/CellGroup.js +1 -1
  14. package/dist/packages/_es/Checkbox.js +1 -1
  15. package/dist/packages/_es/CheckboxGroup.js +1 -1
  16. package/dist/packages/_es/CircleProgress.js +1 -1
  17. package/dist/packages/_es/Col.js +1 -1
  18. package/dist/packages/_es/Collapse.js +1 -1
  19. package/dist/packages/_es/CollapseItem.js +1 -1
  20. package/dist/packages/_es/CountDown.js +1 -1
  21. package/dist/packages/_es/CountUp.js +1 -1
  22. package/dist/packages/_es/DatePicker.js +1 -1
  23. package/dist/packages/_es/Dialog.js +3 -12
  24. package/dist/packages/_es/Divider.js +1 -1
  25. package/dist/packages/_es/Drag.js +1 -1
  26. package/dist/packages/_es/Elevator.js +1 -1
  27. package/dist/packages/_es/FixedNav.js +1 -1
  28. package/dist/packages/_es/Icon.js +1 -1
  29. package/dist/packages/_es/ImagePreview.js +1 -1
  30. package/dist/packages/_es/InfiniteLoading.js +1 -1
  31. package/dist/packages/_es/Input.js +1 -1
  32. package/dist/packages/_es/InputNumber.js +1 -1
  33. package/dist/packages/_es/Layout.js +1 -1
  34. package/dist/packages/_es/Menu.js +1 -1
  35. package/dist/packages/_es/MenuItem.js +1 -1
  36. package/dist/packages/_es/Navbar.js +1 -1
  37. package/dist/packages/_es/NoticeBar.js +1 -1
  38. package/dist/packages/_es/Notify.js +1 -1
  39. package/dist/packages/_es/NumberKeyboard.js +1 -1
  40. package/dist/packages/_es/OverLay.js +1 -1
  41. package/dist/packages/_es/Pagination.js +1 -1
  42. package/dist/packages/_es/Picker.js +1 -1
  43. package/dist/packages/_es/Popover.js +1 -1
  44. package/dist/packages/_es/Popup.js +1 -1
  45. package/dist/packages/_es/Price.js +1 -1
  46. package/dist/packages/_es/Progress.js +1 -1
  47. package/dist/packages/_es/Radio.js +18 -5
  48. package/dist/packages/_es/RadioGroup.js +6 -2
  49. package/dist/packages/_es/Range.js +1 -1
  50. package/dist/packages/_es/Rate.js +1 -1
  51. package/dist/packages/_es/Row.js +1 -1
  52. package/dist/packages/_es/SearchBar.js +1 -1
  53. package/dist/packages/_es/ShortPassword.js +1 -1
  54. package/dist/packages/_es/Signature.js +1 -1
  55. package/dist/packages/_es/Sku.js +533 -0
  56. package/dist/packages/_es/Step.js +1 -1
  57. package/dist/packages/_es/Steps.js +1 -1
  58. package/dist/packages/_es/Swipe.js +1 -1
  59. package/dist/packages/_es/Swiper.js +1 -1
  60. package/dist/packages/_es/SwiperItem.js +1 -1
  61. package/dist/packages/_es/Switch.js +1 -1
  62. package/dist/packages/_es/TabPane.js +1 -1
  63. package/dist/packages/_es/Tabbar.js +1 -1
  64. package/dist/packages/_es/TabbarItem.js +1 -1
  65. package/dist/packages/_es/Tabs.js +2 -2
  66. package/dist/packages/_es/Tag.js +1 -1
  67. package/dist/packages/_es/TextArea.js +1 -1
  68. package/dist/packages/_es/TimeDetail.js +1 -1
  69. package/dist/packages/_es/TimePannel.js +1 -1
  70. package/dist/packages/_es/TimeSelect.js +1 -1
  71. package/dist/packages/_es/Toast.js +3 -3
  72. package/dist/packages/_es/Uploader.js +151 -73
  73. package/dist/packages/_es/Video.js +1 -1
  74. package/dist/packages/_es/component.js +1 -1
  75. package/dist/packages/_es/index.js +1 -1
  76. package/dist/packages/_es/index2.js +1 -1
  77. package/dist/packages/_es/plugin-vue_export-helper.js +1 -1
  78. package/dist/packages/_es/pxCheck.js +1 -1
  79. package/dist/packages/_es/raf.js +1 -1
  80. package/dist/packages/button/index.scss +3 -0
  81. package/dist/packages/progress/index.scss +2 -0
  82. package/dist/packages/radio/index.scss +32 -4
  83. package/dist/packages/radiogroup/index.scss +20 -0
  84. package/dist/packages/sku/index.scss +147 -0
  85. package/dist/packages/uploader/index.scss +94 -8
  86. package/dist/style.css +1 -1
  87. package/dist/styles/mixins/index.scss +0 -4
  88. package/dist/styles/themes/default.scss +36 -35
  89. package/dist/styles/variables.scss +22 -3
  90. package/package.json +1 -1
@@ -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.10 Fri Nov 05 2021 19:52:49 GMT+0800 (中国标准时间)
21
+ * @nutui/nutui v3.1.11-beta.0 Sat Nov 13 2021 21:43:55 GMT+0800 (中国标准时间)
22
22
  * (c) 2021 @jdf2e.
23
23
  * Released under the MIT License.
24
24
  */
@@ -306,8 +306,8 @@ const ToastFunction = {
306
306
  type: "loading"
307
307
  }));
308
308
  },
309
- hide() {
310
- clearToast();
309
+ hide(id) {
310
+ clearToast(id);
311
311
  },
312
312
  install(app) {
313
313
  app.use(Toast);
@@ -19,11 +19,11 @@ var __publicField = (obj, key, value) => {
19
19
  return value;
20
20
  };
21
21
  /*!
22
- * @nutui/nutui v3.1.10 Fri Nov 05 2021 19:52:49 GMT+0800 (中国标准时间)
22
+ * @nutui/nutui v3.1.11-beta.0 Sat Nov 13 2021 21:43:55 GMT+0800 (中国标准时间)
23
23
  * (c) 2021 @jdf2e.
24
24
  * Released under the MIT License.
25
25
  */
26
- import { reactive, computed, resolveComponent, openBlock, createElementBlock, normalizeClass, renderSlot, Fragment, createCommentVNode, renderList, createElementVNode, createBlock, toDisplayString, createVNode } from "vue";
26
+ import { reactive, computed, resolveComponent, openBlock, createElementBlock, normalizeClass, renderSlot, Fragment, createCommentVNode, renderList, createVNode, createElementVNode, toDisplayString, createBlock, createTextVNode } from "vue";
27
27
  import { c as createComponent } from "./component.js";
28
28
  import { _ as _export_sfc } from "./plugin-vue_export-helper.js";
29
29
  class UploadOptions {
@@ -61,7 +61,7 @@ class Uploader {
61
61
  xhr.onreadystatechange = () => {
62
62
  var _a2, _b;
63
63
  if (xhr.readyState === 4) {
64
- if (xhr.status === options.xhrState) {
64
+ if (xhr.status == options.xhrState) {
65
65
  (_a2 = options.onSuccess) == null ? void 0 : _a2.call(options, xhr.responseText, options);
66
66
  } else {
67
67
  (_b = options.onFailure) == null ? void 0 : _b.call(options, xhr.responseText, options);
@@ -92,7 +92,7 @@ class Uploader {
92
92
  name: options.name,
93
93
  success(response) {
94
94
  var _a2, _b;
95
- if (options.xhrState === response.statusCode) {
95
+ if (options.xhrState == response.statusCode) {
96
96
  (_a2 = options.onSuccess) == null ? void 0 : _a2.call(options, response, options);
97
97
  } else {
98
98
  (_b = options.onFailure) == null ? void 0 : _b.call(options, response, options);
@@ -114,10 +114,12 @@ const { componentName, create } = createComponent("uploader");
114
114
  class FileItem {
115
115
  constructor() {
116
116
  __publicField(this, "status", "ready");
117
+ __publicField(this, "message", "\u51C6\u5907\u5B8C\u6210");
117
118
  __publicField(this, "uid", new Date().getTime().toString());
118
119
  __publicField(this, "name");
119
120
  __publicField(this, "url");
120
121
  __publicField(this, "type");
122
+ __publicField(this, "percentage", 0);
121
123
  __publicField(this, "formData", new FormData());
122
124
  }
123
125
  }
@@ -128,12 +130,13 @@ const _sfc_main = create({
128
130
  timeout: { type: [Number, String], default: 1e3 * 30 },
129
131
  fileList: { type: Array, default: () => [] },
130
132
  isPreview: { type: Boolean, default: true },
133
+ listType: { type: String, default: "picture" },
131
134
  isDeletable: { type: Boolean, default: true },
132
135
  method: { type: String, default: "post" },
133
136
  capture: { type: Boolean, default: false },
134
137
  maximize: { type: [Number, String], default: Number.MAX_VALUE },
135
138
  maximum: { type: [Number, String], default: 1 },
136
- clearInput: { type: Boolean, default: false },
139
+ clearInput: { type: Boolean, default: true },
137
140
  accept: { type: String, default: "*" },
138
141
  headers: { type: Object, default: {} },
139
142
  data: { type: Object, default: {} },
@@ -156,7 +159,17 @@ const _sfc_main = create({
156
159
  },
157
160
  onChange: { type: Function }
158
161
  },
159
- emits: ["start", "progress", "oversize", "success", "failure", "change", "delete", "update:fileList"],
162
+ emits: [
163
+ "start",
164
+ "progress",
165
+ "oversize",
166
+ "success",
167
+ "failure",
168
+ "change",
169
+ "delete",
170
+ "update:fileList",
171
+ "file-item-click"
172
+ ],
160
173
  setup(props, { emit }) {
161
174
  const fileList = reactive(props.fileList);
162
175
  let uploadQueue = [];
@@ -169,12 +182,12 @@ const _sfc_main = create({
169
182
  const clearInput = (el) => {
170
183
  el.value = "";
171
184
  };
185
+ const fileItemClick = (fileItem) => {
186
+ emit("file-item-click", { fileItem });
187
+ };
172
188
  const executeUpload = (fileItem, index2) => {
173
189
  const uploadOption = new UploadOptions();
174
190
  uploadOption.url = props.url;
175
- for (const [key, value] of Object.entries(props.data)) {
176
- fileItem.formData.append(key, value);
177
- }
178
191
  uploadOption.formData = fileItem.formData;
179
192
  uploadOption.timeout = props.timeout * 1;
180
193
  uploadOption.method = props.method;
@@ -183,26 +196,33 @@ const _sfc_main = create({
183
196
  uploadOption.withCredentials = props.withCredentials;
184
197
  uploadOption.onStart = (option) => {
185
198
  fileItem.status = "ready";
199
+ fileItem.message = "\u51C6\u5907\u4E0A\u4F20";
186
200
  clearUploadQueue(index2);
187
201
  emit("start", option);
188
202
  };
189
- uploadOption.onProgress = (e, option) => {
203
+ uploadOption.onProgress = (event, option) => {
190
204
  fileItem.status = "uploading";
191
- emit("progress", { e, option });
205
+ fileItem.message = "\u4E0A\u4F20\u4E2D";
206
+ fileItem.percentage = (event.loaded / event.total * 100).toFixed(0);
207
+ emit("progress", { event, option, percentage: fileItem.percentage });
192
208
  };
193
209
  uploadOption.onSuccess = (responseText, option) => {
194
210
  fileItem.status = "success";
211
+ fileItem.message = "\u4E0A\u4F20\u6210\u529F";
195
212
  emit("success", {
196
213
  responseText,
197
- option
214
+ option,
215
+ fileItem
198
216
  });
199
217
  emit("update:fileList", fileList);
200
218
  };
201
219
  uploadOption.onFailure = (responseText, option) => {
202
220
  fileItem.status = "error";
221
+ fileItem.message = "\u4E0A\u4F20\u5931\u8D25";
203
222
  emit("failure", {
204
223
  responseText,
205
- option
224
+ option,
225
+ fileItem
206
226
  });
207
227
  };
208
228
  let task = new Uploader(uploadOption);
@@ -229,6 +249,9 @@ const _sfc_main = create({
229
249
  const readFile = (files) => {
230
250
  files.forEach((file, index2) => {
231
251
  const formData = new FormData();
252
+ for (const [key, value] of Object.entries(props.data)) {
253
+ formData.append(key, value);
254
+ }
232
255
  formData.append(props.name, file);
233
256
  const fileItem = reactive(new FileItem());
234
257
  fileItem.name = file.name;
@@ -308,6 +331,7 @@ const _sfc_main = create({
308
331
  onDelete,
309
332
  fileList,
310
333
  classes,
334
+ fileItemClick,
311
335
  clearUploadQueue,
312
336
  submit
313
337
  };
@@ -319,20 +343,32 @@ const _hoisted_1 = {
319
343
  };
320
344
  const _hoisted_2 = ["accept", "multiple", "name", "disabled"];
321
345
  const _hoisted_3 = ["accept", "multiple", "name", "disabled"];
322
- const _hoisted_4 = { class: "nut-uploader__preview-img" };
323
- const _hoisted_5 = ["src"];
324
- const _hoisted_6 = {
325
- key: 2,
326
- class: "tips"
346
+ const _hoisted_4 = {
347
+ key: 0,
348
+ class: "nut-uploader__preview-img"
327
349
  };
328
- const _hoisted_7 = {
350
+ const _hoisted_5 = {
329
351
  key: 0,
330
- class: "nut-uploader__upload"
352
+ class: "nut-uploader__preview__progress"
353
+ };
354
+ const _hoisted_6 = { class: "nut-uploader__preview__progress__msg" };
355
+ const _hoisted_7 = ["onClick", "src"];
356
+ const _hoisted_8 = {
357
+ key: 3,
358
+ class: "nut-uploader__preview-img__file"
359
+ };
360
+ const _hoisted_9 = ["onClick"];
361
+ const _hoisted_10 = { class: "tips" };
362
+ const _hoisted_11 = {
363
+ key: 1,
364
+ class: "nut-uploader__preview-list"
331
365
  };
332
- const _hoisted_8 = ["accept", "multiple", "name", "disabled"];
333
- const _hoisted_9 = ["accept", "multiple", "name", "disabled"];
366
+ const _hoisted_12 = ["onClick"];
367
+ const _hoisted_13 = ["accept", "multiple", "name", "disabled"];
368
+ const _hoisted_14 = ["accept", "multiple", "name", "disabled"];
334
369
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
335
370
  const _component_nut_icon = resolveComponent("nut-icon");
371
+ const _component_nut_progress = resolveComponent("nut-progress");
336
372
  return openBlock(), createElementBlock("view", {
337
373
  class: normalizeClass(_ctx.classes)
338
374
  }, [
@@ -360,57 +396,99 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
360
396
  onChange: _cache[1] || (_cache[1] = (...args) => _ctx.onChange && _ctx.onChange(...args))
361
397
  }, null, 40, _hoisted_3))
362
398
  ], 64)) : createCommentVNode("", true)
363
- ])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
364
- (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.fileList, (item, index2) => {
365
- return openBlock(), createElementBlock("view", {
366
- class: "nut-uploader__preview",
367
- key: item.uid
368
- }, [
369
- createElementVNode("view", _hoisted_4, [
370
- _ctx.isDeletable ? (openBlock(), createBlock(_component_nut_icon, {
371
- key: 0,
372
- color: "rgba(0,0,0,0.6)",
373
- onClick: ($event) => _ctx.onDelete(item, index2),
374
- class: "close",
375
- name: "circle-close"
376
- }, null, 8, ["onClick"])) : createCommentVNode("", true),
377
- item.type.includes("image") && item.url ? (openBlock(), createElementBlock("img", {
378
- key: 1,
379
- class: "nut-uploader__preview-img__c",
380
- src: item.url
381
- }, null, 8, _hoisted_5)) : createCommentVNode("", true),
382
- item.status != "success" ? (openBlock(), createElementBlock("view", _hoisted_6, toDisplayString(item.status), 1)) : createCommentVNode("", true)
383
- ])
384
- ]);
385
- }), 128)),
386
- _ctx.maximum - _ctx.fileList.length ? (openBlock(), createElementBlock("view", _hoisted_7, [
387
- createVNode(_component_nut_icon, {
388
- size: _ctx.uploadIconSize,
389
- color: "#808080",
390
- name: _ctx.uploadIcon
391
- }, null, 8, ["size", "name"]),
392
- _ctx.capture ? (openBlock(), createElementBlock("input", {
393
- key: 0,
394
- class: "nut-uploader__input",
395
- type: "file",
396
- capture: "camera",
397
- accept: _ctx.accept,
398
- multiple: _ctx.multiple,
399
- name: _ctx.name,
400
- disabled: _ctx.disabled,
401
- onChange: _cache[2] || (_cache[2] = (...args) => _ctx.onChange && _ctx.onChange(...args))
402
- }, null, 40, _hoisted_8)) : (openBlock(), createElementBlock("input", {
403
- key: 1,
404
- class: "nut-uploader__input",
405
- type: "file",
406
- accept: _ctx.accept,
407
- multiple: _ctx.multiple,
408
- name: _ctx.name,
409
- disabled: _ctx.disabled,
410
- onChange: _cache[3] || (_cache[3] = (...args) => _ctx.onChange && _ctx.onChange(...args))
411
- }, null, 40, _hoisted_9))
412
- ])) : createCommentVNode("", true)
413
- ], 64))
399
+ ])) : createCommentVNode("", true),
400
+ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.fileList, (item, index2) => {
401
+ return openBlock(), createElementBlock("view", {
402
+ class: normalizeClass(["nut-uploader__preview", [_ctx.listType]]),
403
+ key: item.uid
404
+ }, [
405
+ _ctx.listType == "picture" && !_ctx.$slots.default ? (openBlock(), createElementBlock("view", _hoisted_4, [
406
+ item.status != "success" ? (openBlock(), createElementBlock("view", _hoisted_5, [
407
+ createVNode(_component_nut_icon, {
408
+ color: "#fff",
409
+ name: item.status == "error" ? "failure" : "loading"
410
+ }, null, 8, ["name"]),
411
+ createElementVNode("view", _hoisted_6, toDisplayString(item.message), 1)
412
+ ])) : createCommentVNode("", true),
413
+ _ctx.isDeletable ? (openBlock(), createBlock(_component_nut_icon, {
414
+ key: 1,
415
+ color: "rgba(0,0,0,0.6)",
416
+ onClick: ($event) => _ctx.onDelete(item, index2),
417
+ class: "close",
418
+ name: "failure"
419
+ }, null, 8, ["onClick"])) : createCommentVNode("", true),
420
+ item.type.includes("image") && item.url ? (openBlock(), createElementBlock("img", {
421
+ key: 2,
422
+ class: "nut-uploader__preview-img__c",
423
+ onClick: ($event) => _ctx.fileItemClick(item),
424
+ src: item.url
425
+ }, null, 8, _hoisted_7)) : (openBlock(), createElementBlock("view", _hoisted_8, [
426
+ createElementVNode("view", {
427
+ onClick: ($event) => _ctx.fileItemClick(item),
428
+ class: "nut-uploader__preview-img__file__name"
429
+ }, [
430
+ createVNode(_component_nut_icon, {
431
+ color: "#808080",
432
+ name: "link"
433
+ }),
434
+ createTextVNode("\xA0" + toDisplayString(item.name), 1)
435
+ ], 8, _hoisted_9)
436
+ ])),
437
+ createElementVNode("view", _hoisted_10, toDisplayString(item.name), 1)
438
+ ])) : _ctx.listType == "list" ? (openBlock(), createElementBlock("view", _hoisted_11, [
439
+ createElementVNode("view", {
440
+ onClick: ($event) => _ctx.fileItemClick(item),
441
+ class: normalizeClass(["nut-uploader__preview-img__file__name", [item.status]])
442
+ }, [
443
+ createVNode(_component_nut_icon, { name: "link" }),
444
+ createTextVNode("\xA0" + toDisplayString(item.name), 1)
445
+ ], 10, _hoisted_12),
446
+ createVNode(_component_nut_icon, {
447
+ class: "nut-uploader__preview-img__file__del",
448
+ onClick: ($event) => _ctx.onDelete(item, index2),
449
+ color: "#808080",
450
+ name: "del"
451
+ }, null, 8, ["onClick"]),
452
+ item.status == "uploading" ? (openBlock(), createBlock(_component_nut_progress, {
453
+ key: 0,
454
+ size: "small",
455
+ percentage: item.percentage,
456
+ "stroke-color": "linear-gradient(270deg, rgba(18,126,255,1) 0%,rgba(32,147,255,1) 32.815625%,rgba(13,242,204,1) 100%)",
457
+ "show-text": false
458
+ }, null, 8, ["percentage"])) : createCommentVNode("", true)
459
+ ])) : createCommentVNode("", true)
460
+ ], 2);
461
+ }), 128)),
462
+ _ctx.listType == "picture" && !_ctx.$slots.default && _ctx.maximum - _ctx.fileList.length ? (openBlock(), createElementBlock("view", {
463
+ key: 1,
464
+ class: normalizeClass(["nut-uploader__upload", [_ctx.listType]])
465
+ }, [
466
+ createVNode(_component_nut_icon, {
467
+ size: _ctx.uploadIconSize,
468
+ color: "#808080",
469
+ name: _ctx.uploadIcon
470
+ }, null, 8, ["size", "name"]),
471
+ _ctx.capture ? (openBlock(), createElementBlock("input", {
472
+ key: 0,
473
+ class: "nut-uploader__input",
474
+ type: "file",
475
+ capture: "camera",
476
+ accept: _ctx.accept,
477
+ multiple: _ctx.multiple,
478
+ name: _ctx.name,
479
+ disabled: _ctx.disabled,
480
+ onChange: _cache[2] || (_cache[2] = (...args) => _ctx.onChange && _ctx.onChange(...args))
481
+ }, null, 40, _hoisted_13)) : (openBlock(), createElementBlock("input", {
482
+ key: 1,
483
+ class: "nut-uploader__input",
484
+ type: "file",
485
+ accept: _ctx.accept,
486
+ multiple: _ctx.multiple,
487
+ name: _ctx.name,
488
+ disabled: _ctx.disabled,
489
+ onChange: _cache[3] || (_cache[3] = (...args) => _ctx.onChange && _ctx.onChange(...args))
490
+ }, null, 40, _hoisted_14))
491
+ ], 2)) : createCommentVNode("", true)
414
492
  ], 2);
415
493
  }
416
494
  var index = /* @__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.10 Fri Nov 05 2021 19:52:49 GMT+0800 (中国标准时间)
21
+ * @nutui/nutui v3.1.11-beta.0 Sat Nov 13 2021 21:43:55 GMT+0800 (中国标准时间)
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.10 Fri Nov 05 2021 19:52:49 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui v3.1.11-beta.0 Sat Nov 13 2021 21:43:55 GMT+0800 (中国标准时间)
3
3
  * (c) 2021 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui v3.1.10 Fri Nov 05 2021 19:52:49 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui v3.1.11-beta.0 Sat Nov 13 2021 21:43:55 GMT+0800 (中国标准时间)
3
3
  * (c) 2021 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui v3.1.10 Fri Nov 05 2021 19:52:49 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui v3.1.11-beta.0 Sat Nov 13 2021 21:43:55 GMT+0800 (中国标准时间)
3
3
  * (c) 2021 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui v3.1.10 Fri Nov 05 2021 19:52:49 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui v3.1.11-beta.0 Sat Nov 13 2021 21:43:55 GMT+0800 (中国标准时间)
3
3
  * (c) 2021 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui v3.1.10 Fri Nov 05 2021 19:52:49 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui v3.1.11-beta.0 Sat Nov 13 2021 21:43:55 GMT+0800 (中国标准时间)
3
3
  * (c) 2021 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui v3.1.10 Fri Nov 05 2021 19:52:49 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui v3.1.11-beta.0 Sat Nov 13 2021 21:43:55 GMT+0800 (中国标准时间)
3
3
  * (c) 2021 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -14,6 +14,9 @@
14
14
  appearance: none;
15
15
  user-select: none;
16
16
  touch-action: manipulation;
17
+
18
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
19
+ -webkit-tap-highlight-color: transparent;
17
20
  .text {
18
21
  margin-left: 5px;
19
22
  }
@@ -85,6 +85,7 @@
85
85
  padding: 0 5px;
86
86
  font-size: 13px;
87
87
  line-height: 1;
88
+ min-width: 35px;
88
89
  }
89
90
  .nut-progress-insidetext {
90
91
  padding: 3px 5px 3px 6px;
@@ -93,6 +94,7 @@
93
94
  position: absolute;
94
95
  transition: all 0.4s;
95
96
  top: -42%;
97
+ min-width: 0px;
96
98
  }
97
99
  .nut-icon-success,
98
100
  .nut-icon-fail {
@@ -1,23 +1,51 @@
1
1
  .nut-radio {
2
2
  display: flex;
3
3
  align-items: center;
4
+ flex-shrink: 0;
5
+
6
+ &:last-child {
7
+ margin-bottom: 0 !important;
8
+ margin-right: 0 !important;
9
+ }
10
+
4
11
  &--reverse {
5
- flex-direction: row-reverse;
6
12
  .nut-radio__label {
7
13
  margin-right: 15px;
8
14
  margin-left: 0;
9
15
  }
10
16
  }
17
+
18
+ &__button {
19
+ display: inline-flex;
20
+ align-items: center;
21
+ padding: 5px 18px;
22
+ font-size: 12px;
23
+ background: #f6f7f9;
24
+ border-radius: 15px;
25
+ color: $radio-label-font-color;
26
+ box-sizing: border-box;
27
+ &--active {
28
+ background: $radio-label-button-background;
29
+ color: $radio-label-font-active-color;
30
+ border: 1px solid $radio-label-button-border-color;
31
+ }
32
+ &--disabled {
33
+ color: $radio-label-disable-color;
34
+ border: none;
35
+ }
36
+ }
37
+
11
38
  &__label {
12
39
  margin-left: 15px;
13
- font-size: 16px;
14
- color: $radio-label-color;
40
+ font-size: 14px;
41
+ color: $radio-label-font-color;
15
42
  &--disabled {
16
43
  color: $radio-label-disable-color;
17
44
  }
18
45
  }
46
+
19
47
  &__icon {
20
- color: $primary-color;
48
+ color: $radio-label-font-active-color;
21
49
  transition-duration: 0.3s;
22
50
  transition-property: color, border-color, background-color;
23
51
  }
@@ -1,2 +1,22 @@
1
1
  .nut-radiogroup {
2
+ display: inline-block;
3
+ .nut-radio {
4
+ margin-bottom: 5px;
5
+ }
6
+ &--vertical {
7
+ }
8
+ &--horizontal {
9
+ .nut-radio {
10
+ display: inline-flex;
11
+ margin-right: 10px;
12
+ &--round {
13
+ .nut-radio__label {
14
+ margin: 0 6px;
15
+ }
16
+ }
17
+ &--button {
18
+ // ...
19
+ }
20
+ }
21
+ }
2
22
  }
@@ -0,0 +1,147 @@
1
+ .nut-sku {
2
+ height: 100%;
3
+ display: flex;
4
+ flex-direction: column;
5
+ padding: 0px;
6
+ background: $white;
7
+ &-header {
8
+ height: 100px;
9
+ display: flex;
10
+ flex-shrink: 0;
11
+ margin-top: 18px;
12
+ padding: 0 18px;
13
+ > img {
14
+ width: 100px;
15
+ height: 100px;
16
+ flex-shrink: 0;
17
+ margin-right: 12px;
18
+ }
19
+ &-right {
20
+ flex: 1;
21
+ display: flex;
22
+ flex-direction: column;
23
+ justify-content: flex-end;
24
+ &-extra {
25
+ font-size: 12px;
26
+ color: $text-color;
27
+ }
28
+ }
29
+ }
30
+ &-content {
31
+ flex: 1;
32
+ overflow-y: auto;
33
+ overflow-x: hidden;
34
+ &::-webkit-scrollbar {
35
+ display: none;
36
+ }
37
+ margin-top: 24px;
38
+ padding: 0 18px;
39
+ }
40
+ &-select {
41
+ &-item {
42
+ display: flex;
43
+ flex-direction: column;
44
+ &-title {
45
+ height: 13px;
46
+ font-weight: bold;
47
+ font-size: 13px;
48
+ color: $black;
49
+ margin-bottom: 18px;
50
+ }
51
+ &-skus {
52
+ display: flex;
53
+ flex-wrap: wrap;
54
+ &-sku {
55
+ margin-right: 12px;
56
+ height: 30px;
57
+ line-height: 30px;
58
+ padding: 0 18px;
59
+ border-radius: 15px;
60
+ font-size: 11px;
61
+ color: $black;
62
+ flex-shrink: 0;
63
+ margin-bottom: 12px;
64
+ background: rgba(242, 242, 242, 1);
65
+ border: 1px solid rgba(242, 242, 242, 1);
66
+
67
+ &.active {
68
+ background: rgba(252, 237, 235, 1);
69
+ border: $sku-item-border;
70
+ color: $primary-color;
71
+ }
72
+ &.disable {
73
+ color: $text-color;
74
+ text-decoration: $sku-item-disable-line;
75
+ }
76
+ }
77
+ }
78
+ }
79
+ }
80
+ &-stepper {
81
+ display: flex;
82
+ justify-content: space-between;
83
+ margin: 10px 0 30px;
84
+ &-title {
85
+ font-weight: bold;
86
+ font-size: 13px;
87
+ color: $black;
88
+ margin-right: 12px;
89
+ }
90
+ &-limit {
91
+ flex: 1;
92
+ display: flex;
93
+ align-items: center;
94
+
95
+ font-size: 12px;
96
+ color: $text-color;
97
+ }
98
+ &-count {
99
+ display: flex;
100
+ align-items: center;
101
+ &-lowestBuy {
102
+ font-size: 12px;
103
+ color: $primary-color;
104
+ }
105
+ }
106
+ }
107
+ &-operate {
108
+ width: 100%;
109
+ &-desc {
110
+ display: block;
111
+ width: 100%;
112
+ padding: 10px 0;
113
+ text-align: center;
114
+ background: #fbf9da;
115
+ color: #de6a1c;
116
+ font-size: 12px;
117
+ }
118
+ &-btn {
119
+ height: 54px;
120
+ width: 100%;
121
+ display: flex;
122
+ justify-content: space-between;
123
+ align-items: center;
124
+ background: $white;
125
+ text-align: center;
126
+ padding: 0 18px;
127
+ box-sizing: border-box;
128
+ &-item {
129
+ width: 100%;
130
+ height: 40px;
131
+ line-height: 40px;
132
+ margin-right: 18px;
133
+ background: $sku-opetate-bg-default;
134
+ border-radius: 21px;
135
+ font-size: 15px;
136
+ color: $white;
137
+ &:last-child {
138
+ margin-right: 0;
139
+ }
140
+ }
141
+
142
+ &-buy {
143
+ background: $sku-opetate-bg-buy;
144
+ }
145
+ }
146
+ }
147
+ }