nntc-ui 0.0.28 → 0.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.css CHANGED
@@ -1474,8 +1474,13 @@ button[disabled] {
1474
1474
  display: flex;
1475
1475
  gap: 8px;
1476
1476
  align-items: center;
1477
+ }
1478
+ .tabs_medium .tabs_tabTitle {
1477
1479
  padding: 0 16px;
1478
1480
  }
1481
+ .tabs_small .tabs_tabTitle {
1482
+ padding: 0 12px;
1483
+ }
1479
1484
  .tabs_tabTitle.tabs_iconOnly {
1480
1485
  gap: 0;
1481
1486
  padding: 0 8px;
package/index.d.ts CHANGED
@@ -225,7 +225,16 @@ interface Props$8<T> {
225
225
  disableBorder?: boolean;
226
226
  allowDeselect?: boolean;
227
227
  showTooltips?: boolean;
228
- }
228
+ /** Использовать внешнее состояние вместо внутреннего.
229
+ * При включении компонент не управляет состоянием самостоятельно, а использует переданные value и onChange
230
+ * */
231
+ useExternalState?: boolean;
232
+ /** Текущее значение выбранной вкладки. Используется только при useExternalState=true */
233
+ value?: T;
234
+ }
235
+ /**
236
+ * Компонент вкладок с поддержкой как внутреннего, так и внешнего состояния
237
+ * */
229
238
  declare function Tabs<T>(props: UiProps<Props$8<T>>): react_jsx_runtime.JSX.Element;
230
239
 
231
240
  interface TableCell {
package/index.js CHANGED
@@ -2314,10 +2314,13 @@ function Tabs(props) {
2314
2314
  disableBorder: disableBorder2 = false,
2315
2315
  allowDeselect = false,
2316
2316
  showTooltips = false,
2317
+ useExternalState = false,
2318
+ value,
2317
2319
  classes
2318
2320
  } = props;
2319
2321
  const [isMounted, setIsMounted] = useState10(false);
2320
2322
  const [selectedTab, setSelectedTab] = useState10(defaultSelected);
2323
+ const currentValue = useExternalState ? value : selectedTab;
2321
2324
  const handleClick = (item3) => () => {
2322
2325
  if (item3.isDisabled) {
2323
2326
  return;
@@ -2326,20 +2329,28 @@ function Tabs(props) {
2326
2329
  item3.onClick();
2327
2330
  return;
2328
2331
  }
2329
- if (allowDeselect && selectedTab === item3.value) {
2330
- setSelectedTab(void 0);
2332
+ if (useExternalState) {
2333
+ if (allowDeselect && currentValue === item3.value) {
2334
+ onChange?.(void 0);
2335
+ } else {
2336
+ onChange?.(item3.value);
2337
+ }
2331
2338
  } else {
2332
- setSelectedTab(item3.value);
2339
+ if (allowDeselect && selectedTab === item3.value) {
2340
+ setSelectedTab(void 0);
2341
+ } else {
2342
+ setSelectedTab(item3.value);
2343
+ }
2333
2344
  }
2334
2345
  };
2335
2346
  useEffect5(() => {
2336
- if (isMounted) {
2347
+ if (isMounted && !useExternalState) {
2337
2348
  onChange?.(selectedTab);
2338
2349
  }
2339
2350
  if (!isMounted) {
2340
2351
  setIsMounted(true);
2341
2352
  }
2342
- }, [selectedTab]);
2353
+ }, [selectedTab, useExternalState]);
2343
2354
  return /* @__PURE__ */ jsx28(
2344
2355
  "div",
2345
2356
  {
@@ -2353,7 +2364,7 @@ function Tabs(props) {
2353
2364
  ),
2354
2365
  children: items2.map((item3) => {
2355
2366
  const isButton = !!item3.onClick;
2356
- const isSelected = !isButton && selectedTab === item3.value;
2367
+ const isSelected = !isButton && currentValue === item3.value;
2357
2368
  const tabContent = /* @__PURE__ */ jsxs15(
2358
2369
  "div",
2359
2370
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nntc-ui",
3
- "version": "0.0.28",
3
+ "version": "0.0.30",
4
4
  "author": "NNTC",
5
5
  "description": "React UI-kit for NNTC",
6
6
  "type": "module",