@nutui/nutui 3.1.12-beta.1 → 3.1.14

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 (131) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +139 -37
  3. package/dist/nutui.d.ts +9 -2
  4. package/dist/nutui.es.js +4830 -2950
  5. package/dist/nutui.umd.js +4910 -2953
  6. package/dist/packages/_es/ActionSheet.js +12 -13
  7. package/dist/packages/_es/Address.js +64 -77
  8. package/dist/packages/_es/Avatar.js +5 -4
  9. package/dist/packages/_es/BackTop.js +109 -72
  10. package/dist/packages/_es/Badge.js +5 -4
  11. package/dist/packages/_es/Barrage.js +57 -63
  12. package/dist/packages/_es/Button.js +6 -5
  13. package/dist/packages/_es/Calendar.js +18 -27
  14. package/dist/packages/_es/Card.js +8 -7
  15. package/dist/packages/_es/Cascader.js +547 -0
  16. package/dist/packages/_es/Cell.js +13 -5
  17. package/dist/packages/_es/CellGroup.js +14 -7
  18. package/dist/packages/_es/Checkbox.js +3 -3
  19. package/dist/packages/_es/CheckboxGroup.js +4 -9
  20. package/dist/packages/_es/CircleProgress.js +46 -142
  21. package/dist/packages/_es/Col.js +5 -4
  22. package/dist/packages/_es/Collapse.js +10 -35
  23. package/dist/packages/_es/CollapseItem.js +35 -80
  24. package/dist/packages/_es/CountDown.js +7 -10
  25. package/dist/packages/_es/CountUp.js +33 -34
  26. package/dist/packages/_es/DatePicker.js +219 -451
  27. package/dist/packages/_es/Dialog.js +98 -46
  28. package/dist/packages/_es/Divider.js +6 -5
  29. package/dist/packages/_es/Drag.js +50 -76
  30. package/dist/packages/_es/Elevator.js +53 -81
  31. package/dist/packages/_es/Empty.js +74 -0
  32. package/dist/packages/_es/FixedNav.js +9 -8
  33. package/dist/packages/_es/Form.js +23 -9
  34. package/dist/packages/_es/FormItem.js +5 -4
  35. package/dist/packages/_es/Grid.js +12 -0
  36. package/dist/packages/_es/GridItem.js +149 -0
  37. package/dist/packages/_es/Icon.js +40 -6
  38. package/dist/packages/_es/ImagePreview.js +158 -44
  39. package/dist/packages/_es/Indicator.js +66 -0
  40. package/dist/packages/_es/InfiniteLoading.js +109 -95
  41. package/dist/packages/_es/Input.js +21 -22
  42. package/dist/packages/_es/InputNumber.js +18 -24
  43. package/dist/packages/_es/Layout.js +2 -2
  44. package/dist/packages/_es/Menu.js +14 -16
  45. package/dist/packages/_es/MenuItem.js +11 -9
  46. package/dist/packages/_es/Navbar.js +7 -7
  47. package/dist/packages/_es/NoticeBar.js +31 -46
  48. package/dist/packages/_es/Notify.js +166 -30
  49. package/dist/packages/_es/NumberKeyboard.js +7 -9
  50. package/dist/packages/_es/OverLay.js +29 -22
  51. package/dist/packages/_es/Pagination.js +9 -8
  52. package/dist/packages/_es/Picker.js +447 -61
  53. package/dist/packages/_es/Popover.js +34 -161
  54. package/dist/packages/_es/Popup.js +77 -17
  55. package/dist/packages/_es/Price.js +7 -18
  56. package/dist/packages/_es/Progress.js +12 -23
  57. package/dist/packages/_es/Radio.js +3 -3
  58. package/dist/packages/_es/RadioGroup.js +2 -2
  59. package/dist/packages/_es/Range.js +31 -38
  60. package/dist/packages/_es/Rate.js +35 -17
  61. package/dist/packages/_es/Row.js +5 -4
  62. package/dist/packages/_es/SearchBar.js +5 -7
  63. package/dist/packages/_es/ShortPassword.js +59 -89
  64. package/dist/packages/_es/Signature.js +71 -70
  65. package/dist/packages/_es/Skeleton.js +138 -0
  66. package/dist/packages/_es/Sku.js +43 -53
  67. package/dist/packages/_es/Step.js +8 -10
  68. package/dist/packages/_es/Steps.js +2 -2
  69. package/dist/packages/_es/Swipe.js +28 -43
  70. package/dist/packages/_es/Swiper.js +418 -17
  71. package/dist/packages/_es/SwiperItem.js +39 -14
  72. package/dist/packages/_es/Switch.js +47 -16
  73. package/dist/packages/_es/TabPane.js +5 -4
  74. package/dist/packages/_es/Tabbar.js +5 -4
  75. package/dist/packages/_es/TabbarItem.js +9 -8
  76. package/dist/packages/_es/Table.js +191 -0
  77. package/dist/packages/_es/Tabs.js +21 -23
  78. package/dist/packages/_es/Tag.js +6 -5
  79. package/dist/packages/_es/TextArea.js +12 -16
  80. package/dist/packages/_es/TimeDetail.js +5 -7
  81. package/dist/packages/_es/TimePannel.js +5 -7
  82. package/dist/packages/_es/TimeSelect.js +7 -12
  83. package/dist/packages/_es/Toast.js +178 -46
  84. package/dist/packages/_es/Uploader.js +149 -109
  85. package/dist/packages/_es/Video.js +405 -0
  86. package/dist/packages/_es/common.js +136 -0
  87. package/dist/packages/_es/component.js +1 -1
  88. package/dist/packages/_es/index.js +7 -58
  89. package/dist/packages/_es/index2.js +58 -43
  90. package/dist/packages/_es/index3.js +28 -411
  91. package/dist/packages/_es/plugin-vue_export-helper.js +13 -0
  92. package/dist/packages/_es/pxCheck.js +1 -1
  93. package/dist/packages/_es/raf.js +1 -1
  94. package/dist/packages/_es/util.js +1 -1
  95. package/dist/packages/cascader/index.scss +81 -0
  96. package/dist/packages/cellgroup/index.scss +9 -0
  97. package/dist/packages/dialog/index.scss +17 -0
  98. package/dist/packages/drag/index.scss +4 -0
  99. package/dist/packages/empty/index.scss +33 -0
  100. package/dist/packages/fixednav/index.scss +6 -1
  101. package/dist/packages/formitem/index.scss +4 -1
  102. package/dist/packages/grid/index.scss +10 -0
  103. package/dist/packages/griditem/index.scss +92 -0
  104. package/dist/packages/icon/index.scss +2 -1
  105. package/dist/packages/indicator/index.scss +48 -0
  106. package/dist/packages/numberkeyboard/index.scss +1 -1
  107. package/dist/packages/popover/index.scss +2 -2
  108. package/dist/packages/rate/index.scss +1 -0
  109. package/dist/packages/skeleton/index.scss +57 -0
  110. package/dist/packages/table/index.scss +81 -0
  111. package/dist/packages/tabs/index.scss +16 -0
  112. package/dist/packages/textarea/index.scss +1 -0
  113. package/dist/packages/timedetail/index.scss +1 -2
  114. package/dist/packages/timeselect/index.scss +3 -0
  115. package/dist/packages/toast/index.scss +6 -0
  116. package/dist/style.css +1 -1
  117. package/dist/style.es.js +2 -1
  118. package/dist/styles/font/config.json +2 -1
  119. package/dist/styles/font/demo_index.html +26 -3
  120. package/dist/styles/font/iconfont.css +7 -3
  121. package/dist/styles/font/iconfont.js +31 -32
  122. package/dist/styles/font/iconfont.json +7 -0
  123. package/dist/styles/font/iconfont.ttf +0 -0
  124. package/dist/styles/font/iconfont.woff +0 -0
  125. package/dist/styles/font/iconfont.woff2 +0 -0
  126. package/dist/styles/themes/default.scss +40 -33
  127. package/dist/styles/variables.scss +54 -1
  128. package/package.json +2 -3
  129. package/dist/packages/_es/commonProps.js +0 -30
  130. package/dist/packages/_es/index.taro.vue_vue&type=script&lang.js +0 -44
  131. package/dist/packages/_es/use-lock-scroll.js +0 -23
@@ -5,6 +5,13 @@
5
5
  "css_prefix_text": "nut-icon-",
6
6
  "description": "nutui 3.0字体管理",
7
7
  "glyphs": [
8
+ {
9
+ "icon_id": "1388116",
10
+ "name": "loading2",
11
+ "font_class": "loading1",
12
+ "unicode": "e614",
13
+ "unicode_decimal": 58900
14
+ },
8
15
  {
9
16
  "icon_id": "21445300",
10
17
  "name": "checked",
Binary file
Binary file
Binary file
@@ -1,76 +1,83 @@
1
1
  @import '../variables.scss';
2
2
  @import '../../packages/button/index.scss';
3
+ @import '../../packages/avatar/index.scss';
4
+ @import '../../packages/icon/index.scss';
3
5
  @import '../../packages/cell/index.scss';
4
6
  @import '../../packages/cellgroup/index.scss';
5
- @import '../../packages/avatar/index.scss';
6
- @import '../../packages/layout/index.scss';
7
7
  @import '../../packages/price/index.scss';
8
+ @import '../../packages/overlay/index.scss';
8
9
  @import '../../packages/divider/index.scss';
9
- @import '../../packages/icon/index.scss';
10
+ @import '../../packages/layout/index.scss';
10
11
  @import '../../packages/col/index.scss';
11
- @import '../../packages/overlay/index.scss';
12
- @import '../../packages/row/index.scss';
13
- @import '../../packages/backtop/index.scss';
14
12
  @import '../../packages/swipe/index.scss';
13
+ @import '../../packages/imagepreview/index.scss';
14
+ @import '../../packages/row/index.scss';
15
15
  @import '../../packages/collapse/index.scss';
16
16
  @import '../../packages/actionsheet/index.scss';
17
- @import '../../packages/imagepreview/index.scss';
18
- @import '../../packages/drag/index.scss';
19
- @import '../../packages/dialog/index.scss';
17
+ @import '../../packages/backtop/index.scss';
20
18
  @import '../../packages/collapseitem/index.scss';
19
+ @import '../../packages/dialog/index.scss';
20
+ @import '../../packages/drag/index.scss';
21
21
  @import '../../packages/infiniteloading/index.scss';
22
- @import '../../packages/notify/index.scss';
23
22
  @import '../../packages/range/index.scss';
23
+ @import '../../packages/notify/index.scss';
24
+ @import '../../packages/pullrefresh/index.scss';
25
+ @import '../../packages/video/index.scss';
24
26
  @import '../../packages/popup/index.scss';
25
27
  @import '../../packages/steps/index.scss';
26
28
  @import '../../packages/swiperitem/index.scss';
27
- @import '../../packages/swiper/index.scss';
28
29
  @import '../../packages/step/index.scss';
29
30
  @import '../../packages/switch/index.scss';
31
+ @import '../../packages/swiper/index.scss';
30
32
  @import '../../packages/toast/index.scss';
31
- @import '../../packages/progress/index.scss';
33
+ @import '../../packages/noticebar/index.scss';
32
34
  @import '../../packages/circleprogress/index.scss';
33
35
  @import '../../packages/searchbar/index.scss';
34
- @import '../../packages/noticebar/index.scss';
35
- @import '../../packages/navbar/index.scss';
36
- @import '../../packages/menu/index.scss';
36
+ @import '../../packages/progress/index.scss';
37
+ @import '../../packages/empty/index.scss';
37
38
  @import '../../packages/fixednav/index.scss';
39
+ @import '../../packages/menu/index.scss';
40
+ @import '../../packages/navbar/index.scss';
38
41
  @import '../../packages/tabbar/index.scss';
42
+ @import '../../packages/menuitem/index.scss';
39
43
  @import '../../packages/tabbaritem/index.scss';
40
- @import '../../packages/pagination/index.scss';
41
- @import '../../packages/tabs/index.scss';
42
- @import '../../packages/calendar/index.scss';
43
44
  @import '../../packages/elevator/index.scss';
44
- @import '../../packages/pullrefresh/index.scss';
45
+ @import '../../packages/tabs/index.scss';
45
46
  @import '../../packages/tabpane/index.scss';
46
- @import '../../packages/video/index.scss';
47
+ @import '../../packages/grid/index.scss';
48
+ @import '../../packages/indicator/index.scss';
49
+ @import '../../packages/pagination/index.scss';
47
50
  @import '../../packages/checkboxgroup/index.scss';
51
+ @import '../../packages/griditem/index.scss';
52
+ @import '../../packages/checkbox/index.scss';
53
+ @import '../../packages/radio/index.scss';
48
54
  @import '../../packages/datepicker/index.scss';
55
+ @import '../../packages/inputnumber/index.scss';
49
56
  @import '../../packages/radiogroup/index.scss';
50
57
  @import '../../packages/rate/index.scss';
51
58
  @import '../../packages/input/index.scss';
52
- @import '../../packages/menuitem/index.scss';
53
- @import '../../packages/inputnumber/index.scss';
59
+ @import '../../packages/calendaritem/index.scss';
54
60
  @import '../../packages/shortpassword/index.scss';
55
61
  @import '../../packages/picker/index.scss';
56
- @import '../../packages/textarea/index.scss';
57
- @import '../../packages/checkbox/index.scss';
58
62
  @import '../../packages/uploader/index.scss';
59
- @import '../../packages/countup/index.scss';
63
+ @import '../../packages/textarea/index.scss';
64
+ @import '../../packages/countdown/index.scss';
60
65
  @import '../../packages/numberkeyboard/index.scss';
66
+ @import '../../packages/tag/index.scss';
61
67
  @import '../../packages/badge/index.scss';
62
- @import '../../packages/countdown/index.scss';
63
68
  @import '../../packages/popover/index.scss';
64
- @import '../../packages/tag/index.scss';
65
69
  @import '../../packages/form/index.scss';
66
- @import '../../packages/calendaritem/index.scss';
67
- @import '../../packages/radio/index.scss';
68
- @import '../../packages/address/index.scss';
70
+ @import '../../packages/cascader/index.scss';
71
+ @import '../../packages/skeleton/index.scss';
72
+ @import '../../packages/formitem/index.scss';
73
+ @import '../../packages/barrage/index.scss';
69
74
  @import '../../packages/signature/index.scss';
70
75
  @import '../../packages/timeselect/index.scss';
71
76
  @import '../../packages/timepannel/index.scss';
72
- @import '../../packages/sku/index.scss';
73
- @import '../../packages/formitem/index.scss';
74
- @import '../../packages/barrage/index.scss';
75
77
  @import '../../packages/timedetail/index.scss';
76
78
  @import '../../packages/card/index.scss';
79
+ @import '../../packages/sku/index.scss';
80
+ @import '../../packages/table/index.scss';
81
+ @import '../../packages/calendar/index.scss';
82
+ @import '../../packages/countup/index.scss';
83
+ @import '../../packages/address/index.scss';
@@ -100,6 +100,10 @@ $cell-group-title-padding: 0 10px !default;
100
100
  $cell-group-title-color: #909ca4 !default;
101
101
  $cell-group-title-font-size: $font-size-2 !default;
102
102
  $cell-group-title-line-height: 20px !default;
103
+ $cell-group-desc-padding: 0 10px !default;
104
+ $cell-group-desc-color: #909ca4 !default;
105
+ $cell-group-desc-font-size: $font-size-1 !default;
106
+ $cell-group-desc-line-height: 16px !default;
103
107
  $cell-group-background-color: $white !default;
104
108
 
105
109
  // icon
@@ -280,7 +284,7 @@ $noticeBar-left-icon-width: 16px !default;
280
284
  $noticeBar-right-icon-width: 16px !default;
281
285
 
282
286
  // TimeSelect
283
- $timeselect-title-font-size: $font-size-1 !default;
287
+ $timeselect-title-font-size: $font-size-2 !default;
284
288
  $timeselect-title-color: $title-color !default;
285
289
  $timeselect-pannel-bg-color: #f6f7f9 !default;
286
290
 
@@ -349,7 +353,10 @@ $pagination-prev-next-padding: 0 11px !default;
349
353
  // tabs
350
354
  $tabs-tab-smile-color: $primary-color !default;
351
355
  $tabs-titles-border-radius: 0 !default;
356
+ $tabs-titles-item-large-font-size: $font-size-3 !default;
352
357
  $tabs-titles-item-font-size: $font-size-2 !default;
358
+ $tabs-titles-item-small-font-size: $font-size-1 !default;
359
+
353
360
  $tabs-titles-item-color: $title-color !default;
354
361
  $tabs-titles-background-color: $help-color !default;
355
362
  $tabs-horizontal-tab-line-color: linear-gradient(90deg, #f5503a 0%, #fad1cb 100%) !default;
@@ -361,6 +368,14 @@ $tabs-vertical-titles-item-height: 40px !default;
361
368
  $tabs-vertical-titles-item-active-line-height: 14px !default;
362
369
  $tabs-vertical-titles-width: 100px !default;
363
370
 
371
+ // indicator
372
+ $indicator-color: $primary-color !default;
373
+ $indicator-dot-color: $disable-color !default;
374
+ $indicator-white: $white !default;
375
+ $indicator-size: 18px !default;
376
+ $indicator-dot-size: $indicator-size / 3 !default;
377
+ $indicator-border-size: $indicator-size + 2 !default;
378
+
364
379
  // menu
365
380
  $nut-menu-bar-line-height: 46px !default;
366
381
  $nut-menu-bar-border-bottom-color: #eaf0fb !default;
@@ -379,6 +394,28 @@ $searchbar-background: $white !default;
379
394
  $searchbar-input-background: #f7f7f7 !default;
380
395
  $searchbar-right-out-color: $black !default;
381
396
 
397
+ // empty
398
+ $empty-padding: 32px 0;
399
+ $empty-image-size: 170px;
400
+ $empty-description-margin-top: 4px;
401
+ $empty-description-color: #666666;
402
+ $empty-description-font-size: 14px;
403
+ $empty-description-line-height: 20px;
404
+ $empty-description-padding: 0 40px;
405
+
406
+ // cascader
407
+ $nut-cascader-font-size: $font-size-2;
408
+ $nut-cascader-line-height: 22px;
409
+ $nut-cascader-tabs-item-padding: 0 10px;
410
+ $nut-cascader-bar-padding: 24px 20px 17px;
411
+ $nut-cascader-bar-font-size: $font-size-4;
412
+ $nut-cascader-bar-line-height: 20px;
413
+ $nut-cascader-bar-color: $title-color;
414
+ $nut-cascader-item-padding: 10px 20px;
415
+ $nut-cascader-item-color: $title-color;
416
+ $nut-cascader-item-font-size: $font-size-2;
417
+ $nut-cascader-item-active-color: $primary-color;
418
+
382
419
  // form
383
420
  $form-item-error-line-color: $primary-color !default;
384
421
  $form-item-required-color: $primary-color !default;
@@ -399,10 +436,26 @@ $sku-opetate-bg-buy: linear-gradient(
399
436
  rgba(255, 195, 13, 1) 69%,
400
437
  rgba(255, 207, 13, 1) 100%
401
438
  );
439
+
402
440
  // card
403
441
  $card-font-size-0: $font-size-0;
404
442
  $card-font-size-1: $font-size-1;
405
443
  $card-font-size-2: $font-size-2;
406
444
  $card-font-size-3: $font-size-3;
445
+
446
+ // grid
447
+ $grid-border-color: #f5f6f7 !default;
448
+ $grid-item-content-padding: 16px 8px !default;
449
+ $grid-item-content-bg-color: $white !default;
450
+ $grid-item-text-margin: 8px !default;
451
+ $grid-item-text-color: $title-color2 !default;
452
+ $grid-item-text-font-size: $font-size-1 !default;
453
+
454
+ // table
455
+ $table-border-color: #ececec;
456
+ $table-cols-padding: 10px;
457
+ $table-tr-even-bg-color: #f3f3f3;
458
+ $table-tr-odd-bg-color: $white;
459
+
407
460
  @import './mixins/index';
408
461
  @import './animation/index';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nutui/nutui",
3
- "version": "3.1.12-beta.1",
3
+ "version": "3.1.14",
4
4
  "description": "京东风格的轻量级移动端 Vue2、Vue3 组件库(支持小程序开发)",
5
5
  "main": "dist/nutui.umd.js",
6
6
  "module": "dist/nutui.es.js",
@@ -39,7 +39,6 @@
39
39
  "dev:taro:vue": "npm run checked:taro:vue && cd src/sites/mobile-taro/vue/ && npm run dev:weapp",
40
40
  "dev:taro:h5": "npm run checked:taro:vue && cd src/sites/mobile-taro/vue/ && npm run dev:h5",
41
41
  "build:site": "npm run checked && vite build",
42
- "build:gh-pages": "npm run checked && vite build --base=/nutui/",
43
42
  "build:site:oss": "npm run checked && vite build --base=/nutui/3x/",
44
43
  "build": "npm run checked && vite build --config vite.config.build.ts && vite build --config vite.config.build.disperse.ts && npm run generate:types && npm run generate:themes && vite build --config vite.config.build.css.ts",
45
44
  "build:taro:vue": "npm run checked:taro:vue && vite build --config vite.config.build.taro.vue.ts && vite build --config vite.config.build.taro.vue.disperse.ts && npm run generate:types && npm run generate:themes && vite build --config vite.config.build.css.ts",
@@ -80,7 +79,7 @@
80
79
  "@vue/compiler-sfc": "^3.0.11",
81
80
  "@vue/eslint-config-prettier": "^6.0.0",
82
81
  "@vue/eslint-config-typescript": "^7.0.0",
83
- "@vue/test-utils": "^2.0.0-rc.6",
82
+ "@vue/test-utils": "^2.0.0-rc.17",
84
83
  "autoprefixer": "^10.3.4",
85
84
  "axios": "^0.21.0",
86
85
  "eslint": "^7.23.2",
@@ -1,30 +0,0 @@
1
- /*!
2
- * @nutui/nutui v3.1.11 Wed Nov 24 2021 14:54:38 GMT+0800 (中国标准时间)
3
- * (c) 2021 @jdf2e.
4
- * Released under the MIT License.
5
- */
6
- const commonProps = {
7
- listData: {
8
- type: Array,
9
- default: () => {
10
- return [];
11
- }
12
- },
13
- readonly: {
14
- type: Boolean,
15
- default: false
16
- },
17
- visibleItemCount: {
18
- type: [Number, String],
19
- default: 7
20
- },
21
- defaultIndex: {
22
- type: [Number, String],
23
- default: 0
24
- },
25
- itemHeight: {
26
- type: [Number, String],
27
- default: 35
28
- }
29
- };
30
- export { commonProps as c };
@@ -1,44 +0,0 @@
1
- /*!
2
- * @nutui/nutui v3.1.11 Wed Nov 24 2021 14:54:38 GMT+0800 (中国标准时间)
3
- * (c) 2021 @jdf2e.
4
- * Released under the MIT License.
5
- */
6
- import { h } from "vue";
7
- import { c as createComponent } from "./component.js";
8
- import { p as pxCheck } from "./pxCheck.js";
9
- const { componentName, create } = createComponent("icon");
10
- var _sfc_main = create({
11
- props: {
12
- name: { type: String, default: "" },
13
- size: { type: [String, Number], default: "" },
14
- classPrefix: { type: String, default: "nut-icon" },
15
- fontClassName: { type: String, default: "nutui-iconfont" },
16
- color: { type: String, default: "" },
17
- tag: { type: String, default: "i" }
18
- },
19
- emits: ["click"],
20
- setup(props, { emit, slots }) {
21
- const handleClick = (event) => {
22
- emit("click", event);
23
- };
24
- const isImage = () => {
25
- return props.name ? props.name.indexOf("/") !== -1 : false;
26
- };
27
- return () => {
28
- var _a;
29
- const _isImage = isImage();
30
- return h(_isImage ? "img" : props.tag, {
31
- class: _isImage ? `${componentName}__img` : `${props.fontClassName} ${componentName} ${props.classPrefix}-${props.name}`,
32
- style: {
33
- color: props.color,
34
- fontSize: pxCheck(props.size),
35
- width: pxCheck(props.size),
36
- height: pxCheck(props.size)
37
- },
38
- onClick: handleClick,
39
- src: _isImage ? props.name : ""
40
- }, (_a = slots.default) == null ? void 0 : _a.call(slots));
41
- };
42
- }
43
- });
44
- export { _sfc_main as _ };
@@ -1,23 +0,0 @@
1
- /*!
2
- * @nutui/nutui v3.1.11 Wed Nov 24 2021 14:54:38 GMT+0800 (中国标准时间)
3
- * (c) 2021 @jdf2e.
4
- * Released under the MIT License.
5
- */
6
- let count = 0;
7
- const CLSNAME = "nut-overflow-hidden";
8
- const useLockScroll = (isLock) => {
9
- const lock = () => {
10
- if (isLock()) {
11
- !count && document.body.classList.add(CLSNAME);
12
- count++;
13
- }
14
- };
15
- const unlock = () => {
16
- if (isLock() && count) {
17
- count--;
18
- !count && document.body.classList.remove(CLSNAME);
19
- }
20
- };
21
- return [lock, unlock];
22
- };
23
- export { useLockScroll as u };