@nutui/nutui-react-taro 2.3.9 → 2.3.10

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 (59) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/esm/ActionSheet/style/style.css +1 -1
  3. package/dist/esm/Address/style/style.css +1 -1
  4. package/dist/esm/Address.js +3 -3
  5. package/dist/esm/Barrage/style/style.css +1 -1
  6. package/dist/esm/Barrage.js +4 -2
  7. package/dist/esm/Calendar/style/style.css +1 -1
  8. package/dist/esm/Cascader/style/style.css +1 -1
  9. package/dist/esm/Cascader.js +2 -2
  10. package/dist/esm/DatePicker/style/style.css +1 -1
  11. package/dist/esm/Form.js +1 -1
  12. package/dist/esm/FormItem.js +1 -1
  13. package/dist/esm/ImagePreview/style/style.css +1 -1
  14. package/dist/esm/NumberKeyboard/style/style.css +1 -1
  15. package/dist/esm/Picker/style/style.css +1 -1
  16. package/dist/esm/Popover/style/style.css +1 -1
  17. package/dist/esm/Popup/style/style.css +1 -1
  18. package/dist/esm/ShortPassword/style/style.css +1 -1
  19. package/dist/esm/ShortPassword.js +1 -1
  20. package/dist/esm/SideNavBar/style/style.css +1 -1
  21. package/dist/esm/Sticky.js +1 -1
  22. package/dist/esm/Tabs/style/style.css +1 -1
  23. package/dist/esm/Tabs.js +1 -1
  24. package/dist/esm/TimeSelect/style/style.css +1 -1
  25. package/dist/esm/Tour/style/style.css +1 -1
  26. package/dist/esm/{address.taro-B54ZOtmo.js → address.taro-zQuxQEce.js} +1 -1
  27. package/dist/esm/barrage.taro-6nbq7wtt.js +118 -0
  28. package/dist/esm/{cascader.taro-BxyK5ybo.js → cascader.taro-M2nZWxiB.js} +1 -1
  29. package/dist/esm/{formitem.taro-atY4A0pS.js → formitem.taro-PPkTQGfW.js} +39 -10
  30. package/dist/esm/nutui-react.es.js +7 -7
  31. package/dist/esm/{shortpassword.taro-bZCwIpEn.js → shortpassword.taro-ECs_E1Xn.js} +18 -5
  32. package/dist/esm/{sticky.taro-MmKUU2Wv.js → sticky.taro-p-evMNR-.js} +1 -1
  33. package/dist/esm/{tabs.taro-w8ra49Qb.js → tabs.taro-Yj7vgtSg.js} +1 -1
  34. package/dist/esm/types/src/packages/formitem/formitem.d.ts +6 -2
  35. package/dist/esm/types/src/packages/formitem/formitem.taro.d.ts +6 -2
  36. package/dist/esm/types/src/packages/shortpassword/shortpassword.d.ts +3 -2
  37. package/dist/esm/types/src/packages/shortpassword/shortpassword.taro.d.ts +3 -2
  38. package/dist/esm/types/src/packages/shortpassword/types.d.ts +4 -0
  39. package/dist/locales/base.js +1 -1
  40. package/dist/locales/en-US.js +1 -1
  41. package/dist/locales/id-ID.js +1 -1
  42. package/dist/locales/tr-TR.js +1 -1
  43. package/dist/locales/zh-CN.js +1 -1
  44. package/dist/locales/zh-TW.js +1 -1
  45. package/dist/locales/zh-UG.js +1 -1
  46. package/dist/nutui.react.es.js +141 -80
  47. package/dist/nutui.react.umd.js +141 -80
  48. package/dist/packages/barrage/barrage.scss +1 -1
  49. package/dist/packages/popup/popup.scss +1 -0
  50. package/dist/packages/tabs/tabs.scss +14 -14
  51. package/dist/style.css +1 -1
  52. package/dist/style.mjs +1 -1
  53. package/dist/types/packages/formitem/formitem.d.ts +6 -2
  54. package/dist/types/packages/formitem/formitem.taro.d.ts +14 -2
  55. package/dist/types/packages/shortpassword/shortpassword.d.ts +3 -2
  56. package/dist/types/packages/shortpassword/shortpassword.taro.d.ts +3 -2
  57. package/dist/types/packages/shortpassword/types.d.ts +4 -0
  58. package/package.json +1 -1
  59. package/dist/esm/barrage.taro-HsivAhbE.js +0 -91
@@ -8,7 +8,7 @@ var __publicField = (obj, key, value) => {
8
8
  return value;
9
9
  };
10
10
  /*!
11
- * @nutui/nutui-react-taro v2.3.9 Fri Feb 02 2024 16:15:32 GMT+0800 (China Standard Time)
11
+ * @nutui/nutui-react-taro v2.3.10 Tue Feb 06 2024 16:10:56 GMT+0800 (China Standard Time)
12
12
  * (c) 2023 @jdf2e.
13
13
  * Released under the MIT License.
14
14
  */
@@ -4050,7 +4050,7 @@ var __publicField = (obj, key, value) => {
4050
4050
  }
4051
4051
  }, []);
4052
4052
  Taro.usePageScroll((res) => {
4053
- if (Taro.getEnv() === "WEAPP") {
4053
+ if (Taro.getEnv() !== "WEB") {
4054
4054
  handleScroll(res.scrollTop);
4055
4055
  }
4056
4056
  });
@@ -5358,7 +5358,7 @@ var __publicField = (obj, key, value) => {
5358
5358
  onClick: (e2) => {
5359
5359
  tabChange(item);
5360
5360
  },
5361
- className: classNames(`${classPrefix$k}-titles-item taro`, {
5361
+ className: classNames(`${classPrefix$k}-titles-item`, {
5362
5362
  [`nut-tabs-titles-item-active`]: !item.disabled && String(item.value) === String(value),
5363
5363
  [`nut-tabs-titles-item-disabled`]: item.disabled,
5364
5364
  [`nut-tabs-titles-item-${align}`]: align
@@ -9768,6 +9768,7 @@ var __publicField = (obj, key, value) => {
9768
9768
  constructor() {
9769
9769
  // 初始化数据
9770
9770
  __publicField(this, "initialValues", {});
9771
+ __publicField(this, "updateList", []);
9771
9772
  // 存放表单中所有的数据 eg. {password: "ddd",username: "123"}
9772
9773
  __publicField(this, "store", {});
9773
9774
  // 所有的组件实例
@@ -9837,6 +9838,15 @@ var __publicField = (obj, key, value) => {
9837
9838
  }
9838
9839
  });
9839
9840
  });
9841
+ this.updateList.forEach((item) => {
9842
+ let shouldUpdate = item.condition;
9843
+ if (typeof item.condition === "function") {
9844
+ shouldUpdate = item.condition();
9845
+ }
9846
+ if (shouldUpdate) {
9847
+ item.entity.onStoreChange("update");
9848
+ }
9849
+ });
9840
9850
  });
9841
9851
  __publicField(this, "setCallback", (callback) => {
9842
9852
  this.callbacks = {
@@ -9905,6 +9915,16 @@ var __publicField = (obj, key, value) => {
9905
9915
  entity.onStoreChange("reset");
9906
9916
  });
9907
9917
  });
9918
+ // 监听事件
9919
+ __publicField(this, "registerUpdate", (field, shouldUpdate) => {
9920
+ this.updateList.push({
9921
+ entity: field,
9922
+ condition: shouldUpdate
9923
+ });
9924
+ return () => {
9925
+ this.updateList = this.updateList.filter((i2) => i2.entity !== field);
9926
+ };
9927
+ });
9908
9928
  __publicField(this, "dispatch", ({ name }) => {
9909
9929
  this.validateFields([name]);
9910
9930
  });
@@ -9916,7 +9936,8 @@ var __publicField = (obj, key, value) => {
9916
9936
  setInitialValues: this.setInitialValues,
9917
9937
  dispatch: this.dispatch,
9918
9938
  store: this.store,
9919
- fieldEntities: this.fieldEntities
9939
+ fieldEntities: this.fieldEntities,
9940
+ registerUpdate: this.registerUpdate
9920
9941
  };
9921
9942
  }
9922
9943
  });
@@ -10047,13 +10068,16 @@ var __publicField = (obj, key, value) => {
10047
10068
  label: "",
10048
10069
  rules: [{ required: false, message: "" }],
10049
10070
  errorMessageAlign: "left",
10050
- validateTrigger: "onChange"
10071
+ validateTrigger: "onChange",
10072
+ shouldUpdate: false,
10073
+ noStyle: false
10051
10074
  };
10052
10075
  class FormItem extends React.Component {
10053
10076
  constructor(props) {
10054
10077
  super(props);
10055
10078
  __publicField(this, "cancelRegister");
10056
10079
  __publicField(this, "componentRef");
10080
+ __publicField(this, "eventOff");
10057
10081
  // children添加value属性和onChange事件
10058
10082
  __publicField(this, "getControlled", (children) => {
10059
10083
  var _a;
@@ -10127,7 +10151,6 @@ var __publicField = (obj, key, value) => {
10127
10151
  }
10128
10152
  });
10129
10153
  __publicField(this, "renderLayout", (childNode) => {
10130
- var _a;
10131
10154
  const {
10132
10155
  label,
10133
10156
  name,
@@ -10153,16 +10176,13 @@ var __publicField = (obj, key, value) => {
10153
10176
  onClick: (e2) => this.props.onClick && this.props.onClick(e2, this.componentRef)
10154
10177
  },
10155
10178
  label ? /* @__PURE__ */ React.createElement("div", { className: "nut-cell-title nut-form-item-label" }, renderLabel) : null,
10156
- /* @__PURE__ */ React.createElement("div", { className: "nut-cell-value nut-form-item-body" }, /* @__PURE__ */ React.createElement("div", { className: "nut-form-item-body-slots" }, childNode), /* @__PURE__ */ React.createElement(
10179
+ /* @__PURE__ */ React.createElement("div", { className: "nut-cell-value nut-form-item-body" }, /* @__PURE__ */ React.createElement("div", { className: "nut-form-item-body-slots" }, childNode), item && item.length > 0 && /* @__PURE__ */ React.createElement(
10157
10180
  "div",
10158
10181
  {
10159
10182
  className: "nut-form-item-body-tips",
10160
- style: {
10161
- textAlign: errorMessageAlign,
10162
- display: (item == null ? void 0 : item.length) ? "initial" : "none"
10163
- }
10183
+ style: { textAlign: errorMessageAlign }
10164
10184
  },
10165
- (_a = item == null ? void 0 : item[0]) == null ? void 0 : _a.message
10185
+ item[0].message
10166
10186
  ))
10167
10187
  );
10168
10188
  });
@@ -10172,22 +10192,31 @@ var __publicField = (obj, key, value) => {
10172
10192
  };
10173
10193
  }
10174
10194
  componentDidMount() {
10175
- const { registerField } = this.context.getInternal(SECRET);
10195
+ const { registerField, registerUpdate } = this.context.getInternal(SECRET);
10176
10196
  this.cancelRegister = registerField(this);
10197
+ this.eventOff = registerUpdate(this, this.props.shouldUpdate);
10177
10198
  }
10178
10199
  componentWillUnmount() {
10179
10200
  if (this.cancelRegister) {
10180
10201
  this.cancelRegister();
10181
10202
  }
10203
+ if (this.eventOff) {
10204
+ this.eventOff();
10205
+ }
10182
10206
  }
10183
10207
  render() {
10184
10208
  const { children } = this.props;
10185
10209
  const child = Array.isArray(children) ? children[0] : children;
10186
- const returnChildNode = React.cloneElement(
10187
- child,
10188
- this.getControlled(child)
10189
- );
10190
- return /* @__PURE__ */ React.createElement(React.Fragment, { key: this.state.resetCount }, this.renderLayout(returnChildNode));
10210
+ let returnChildNode;
10211
+ if (!this.props.shouldUpdate) {
10212
+ returnChildNode = React.cloneElement(
10213
+ child,
10214
+ this.getControlled(child)
10215
+ );
10216
+ } else {
10217
+ returnChildNode = child(this.context);
10218
+ }
10219
+ return /* @__PURE__ */ React.createElement(React.Fragment, { key: this.state.resetCount }, this.props.noStyle ? returnChildNode : this.renderLayout(returnChildNode));
10191
10220
  }
10192
10221
  }
10193
10222
  __publicField(FormItem, "defaultProps", defaultProps$Y);
@@ -12039,13 +12068,13 @@ var __publicField = (obj, key, value) => {
12039
12068
  // 1~6
12040
12069
  autoFocus: false
12041
12070
  };
12042
- const ShortPassword = (props) => {
12071
+ const InternalShortPassword = (props, ref) => {
12043
12072
  const { locale } = useConfig$1();
12044
12073
  const {
12045
12074
  title,
12046
12075
  description,
12047
12076
  tips,
12048
- visible,
12077
+ visible: deleteVisible,
12049
12078
  value,
12050
12079
  error,
12051
12080
  hideFooter,
@@ -12076,6 +12105,20 @@ var __publicField = (obj, key, value) => {
12076
12105
  const format2 = (val) => {
12077
12106
  return val.slice(0, comLen);
12078
12107
  };
12108
+ const [visible, setVisible] = usePropsValue({
12109
+ value: props.visible,
12110
+ defaultValue: false,
12111
+ finalValue: false
12112
+ });
12113
+ const actions = {
12114
+ open: () => {
12115
+ setVisible(true);
12116
+ },
12117
+ close: () => {
12118
+ setVisible(false);
12119
+ }
12120
+ };
12121
+ React.useImperativeHandle(ref, () => actions);
12079
12122
  const [inputValue, setInputValue] = usePropsValue({ value, onChange });
12080
12123
  React.useEffect(() => {
12081
12124
  if (visible && autoFocus) {
@@ -12111,8 +12154,7 @@ var __publicField = (obj, key, value) => {
12111
12154
  }))), /* @__PURE__ */ React.createElement("div", { className: `${classPrefix2}-message` }, /* @__PURE__ */ React.createElement("div", { className: `${classPrefix2}-message-error` }, error), /* @__PURE__ */ React.createElement("div", { className: `${classPrefix2}-message-forget`, onClick: onTips }, tips || /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(z, { size: 11, style: { marginRight: "3px" } }), locale.shortpassword.tips))), !hideFooter && /* @__PURE__ */ React.createElement("div", { className: `${classPrefix2}-footer` }, /* @__PURE__ */ React.createElement("div", { className: `${classPrefix2}-footer-cancel`, onClick: onCancel }, locale.cancel), /* @__PURE__ */ React.createElement("div", { className: `${classPrefix2}-footer-sure`, onClick: sure }, locale.confirm)))
12112
12155
  );
12113
12156
  };
12114
- ShortPassword.defaultProps = defaultProps$N;
12115
- ShortPassword.displayName = "NutShortPassword";
12157
+ const ShortPassword = React.forwardRef(InternalShortPassword);
12116
12158
  const defaultProps$M = {
12117
12159
  ...ComponentDefaults,
12118
12160
  canvasId: "spcanvas",
@@ -18096,79 +18138,98 @@ var __publicField = (obj, key, value) => {
18096
18138
  ...defaultProps$6,
18097
18139
  ...props
18098
18140
  };
18099
- const [styleList, setStyleList] = React.useState([]);
18100
- const [baItemList, setBaItemList] = React.useState(list);
18101
- const barrageListSet = React.useRef(list);
18102
18141
  const barrageBody = React.useRef(null);
18103
18142
  const barrageContainer = React.useRef(null);
18104
- const timeId = React.useRef((/* @__PURE__ */ new Date()).getTime());
18143
+ const barrageCWidth = React.useRef(0);
18105
18144
  const timer = React.useRef(0);
18106
- const classes = classNames(
18107
- classPrefix$1,
18108
- {
18109
- [`${classPrefix$1}-body${timeId.current}`]: true
18110
- },
18111
- className
18112
- );
18145
+ const index = React.useRef(0);
18146
+ const times = React.useRef([]);
18147
+ const historyIndex = React.useRef(-1);
18148
+ const classes = classNames(classPrefix$1, className);
18113
18149
  React.useImperativeHandle(ref, () => ({
18114
18150
  add: (word) => {
18115
- barrageListSet.current = [...barrageListSet.current, word];
18116
- run();
18151
+ const _index = index.current % list.length;
18152
+ if (!loop && index.current === list.length) {
18153
+ list.splice(list.length, 0, word);
18154
+ } else {
18155
+ list.splice(_index, 0, word);
18156
+ }
18117
18157
  }
18118
18158
  }));
18159
+ const getNodeWidth = async (node, type2 = "width") => {
18160
+ if (node) {
18161
+ const refe = await getRectByTaro(node);
18162
+ return Math.ceil(type2 === "height" ? refe.height : refe.width);
18163
+ }
18164
+ return 0;
18165
+ };
18119
18166
  React.useEffect(() => {
18120
- barrageListSet.current = [...list];
18121
- run();
18167
+ const init = async () => {
18168
+ if (barrageBody.current) {
18169
+ barrageCWidth.current = await getNodeWidth(barrageBody.current);
18170
+ }
18171
+ };
18172
+ init();
18173
+ setTimeout(() => {
18174
+ var _a;
18175
+ (_a = barrageBody.current) == null ? void 0 : _a.style.setProperty(
18176
+ "--move-distance",
18177
+ `-${barrageCWidth.current}px`
18178
+ );
18179
+ index.current = 0;
18180
+ run();
18181
+ }, 300);
18122
18182
  return () => {
18123
18183
  clearInterval(timer.current);
18124
18184
  };
18125
18185
  }, [list]);
18126
18186
  const run = () => {
18127
- setBaItemList(barrageListSet.current);
18128
- barrageListSet.current.forEach((item, index) => {
18129
- getNode(index);
18130
- });
18131
- };
18132
- const getNode = (index) => {
18133
- const query = Taro.createSelectorQuery();
18134
- setTimeout(() => {
18135
- let width = 100;
18136
- query.select(`.${classPrefix$1}-body${timeId.current}`).boundingClientRect((rec) => {
18137
- width = rec.width || 300;
18138
- });
18139
- query.select(`.${classPrefix$1}-item${index}`).boundingClientRect((recs) => {
18140
- const height = recs.height;
18141
- const nodeTop = `${index % rows * (height + gapY) + 20}px`;
18142
- styleInfo(index, nodeTop, width);
18143
- }).exec();
18144
- }, 500);
18187
+ clearInterval(timer.current);
18188
+ let intervalCache = interval;
18189
+ const _index = (loop ? index.current % list.length : index.current) % rows;
18190
+ const result = times.current[_index] - rows * interval;
18191
+ if (result > 0) {
18192
+ intervalCache += result;
18193
+ }
18194
+ timer.current = window.setTimeout(() => {
18195
+ play();
18196
+ }, intervalCache);
18145
18197
  };
18146
- const styleInfo = (index, nodeTop, width) => {
18147
- const timeIndex = index - rows > 0 ? index - rows : 0;
18148
- const list2 = styleList;
18149
- const time = list2[timeIndex] ? Number(list2[timeIndex]["--time"]) : 0;
18150
- const obj = {
18151
- top: nodeTop,
18152
- "--time": `${interval * index + time}`,
18153
- animationDuration: `${duration}ms`,
18154
- animationIterationCount: `${loop ? "infinite" : 1}`,
18155
- animationDelay: `${interval * index + time}ms`,
18156
- "--move-distance": `-${width}px`
18157
- };
18158
- list2.push(obj);
18159
- setStyleList([...list2]);
18198
+ const play = async () => {
18199
+ if (!loop && index.current >= list.length) {
18200
+ return;
18201
+ }
18202
+ const _index = loop ? index.current % list.length : index.current;
18203
+ const el = document.createElement(`View`);
18204
+ let currentIndex = _index % rows;
18205
+ if (currentIndex <= historyIndex.current || historyIndex.current === 3 && currentIndex !== 0 || Math.abs(currentIndex - historyIndex.current) !== 1) {
18206
+ currentIndex = historyIndex.current + 1 >= rows ? 0 : historyIndex.current + 1;
18207
+ }
18208
+ historyIndex.current = currentIndex;
18209
+ el.innerHTML = list[_index];
18210
+ el.classList.add("barrage-item");
18211
+ barrageContainer.current.appendChild(el);
18212
+ try {
18213
+ const width = await getNodeWidth(el);
18214
+ const height = await getNodeWidth(el, "height");
18215
+ el.classList.add("move");
18216
+ const elScrollDuration = width / barrageCWidth.current * duration;
18217
+ times.current[currentIndex] = Math.ceil(elScrollDuration);
18218
+ el.style.animationDuration = `${(duration + elScrollDuration).toFixed(
18219
+ 2
18220
+ )}ms`;
18221
+ el.style.top = `${currentIndex * (height + gapY) + 20}px`;
18222
+ el.style.width = `${width}px`;
18223
+ } catch (error) {
18224
+ console.log("异常自动流转到下一个");
18225
+ }
18226
+ el.addEventListener("animationend", () => {
18227
+ barrageContainer.current.removeChild(el);
18228
+ });
18229
+ index.current++;
18230
+ run();
18160
18231
  };
18161
- return /* @__PURE__ */ React.createElement("div", { className: classes, ref: barrageBody, ...restProps }, /* @__PURE__ */ React.createElement("div", { ref: barrageContainer, className: "bContainer" }, baItemList.map((item, index) => {
18162
- return /* @__PURE__ */ React.createElement(
18163
- "div",
18164
- {
18165
- className: `barrage-item ${classPrefix$1}-item${index} move`,
18166
- style: styleList[index],
18167
- key: index
18168
- },
18169
- item.length > 8 ? `${item.substr(0, 8)}...` : item
18170
- );
18171
- })));
18232
+ return /* @__PURE__ */ React.createElement(components.View, { className: classes, ref: barrageBody, ...restProps }, /* @__PURE__ */ React.createElement(components.View, { ref: barrageContainer, className: "bContainer" }));
18172
18233
  };
18173
18234
  const Barrage = React.forwardRef(
18174
18235
  InternalBarrage
@@ -50,7 +50,7 @@
50
50
  }
51
51
 
52
52
  to {
53
- transform: translateX(var(--move-distance));
53
+ -webkit-transform: translateX(var(--move-distance));
54
54
  }
55
55
  }
56
56
  }
@@ -300,6 +300,7 @@
300
300
  animation-duration: $popup-animation-duration;
301
301
  }
302
302
 
303
+ &-default-exit-done,
303
304
  &-center-exit-done,
304
305
  &-left-exit-done,
305
306
  &-right-exit-done,
@@ -28,10 +28,16 @@
28
28
 
29
29
  &-left {
30
30
  justify-content: flex-start;
31
+ .nut-tabs-titles-item {
32
+ padding: 0 10px;
33
+ }
31
34
  }
32
35
 
33
36
  &-right {
34
37
  justify-content: flex-end;
38
+ .nut-tabs-titles-item {
39
+ padding: 0 10px;
40
+ }
35
41
  }
36
42
 
37
43
  &-scrollable {
@@ -45,19 +51,15 @@
45
51
  align-items: center;
46
52
  justify-content: center;
47
53
  flex: 1 0 auto;
48
- padding: 0 10px;
49
54
  margin: 0 $tabs-titles-gap;
55
+ height: $tabs-titles-height;
56
+ line-height: $tabs-titles-height;
50
57
  min-width: $tabs-titles-item-min-width;
51
58
  font-size: $tabs-titles-font-size;
52
59
  color: $tabs-titles-item-color;
53
60
  text-overflow: ellipsis;
54
61
  white-space: nowrap;
55
62
 
56
- &.taro {
57
- height: 44px;
58
- line-height: 44px;
59
- }
60
-
61
63
  &-left,
62
64
  &-right {
63
65
  flex: none;
@@ -120,6 +122,10 @@
120
122
  &:first-child {
121
123
  margin-left: 0;
122
124
  }
125
+
126
+ &:last-child {
127
+ margin-right: 0;
128
+ }
123
129
  }
124
130
 
125
131
  &-simple {
@@ -147,10 +153,7 @@
147
153
  &-button {
148
154
  .nut-tabs-titles-item {
149
155
  &-active {
150
- &.taro {
151
- height: 28px;
152
- }
153
-
156
+ height: 28px;
154
157
  margin: 8px 9px;
155
158
  background: $color-default-light;
156
159
  color: $color-text;
@@ -261,6 +264,7 @@
261
264
 
262
265
  .nut-tabs-titles-item {
263
266
  height: $tabs-vertical-titles-item-height;
267
+ margin: 0;
264
268
  flex: none;
265
269
 
266
270
  &-smile {
@@ -300,10 +304,6 @@
300
304
  transform: rotate(320deg);
301
305
  }
302
306
  }
303
-
304
- &:first-child {
305
- margin: 0 $tabs-titles-gap;
306
- }
307
307
  }
308
308
 
309
309
  .nut-tabs-horizontal {