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 +5 -0
- package/index.d.ts +10 -1
- package/index.js +17 -6
- package/package.json +1 -1
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 (
|
|
2330
|
-
|
|
2332
|
+
if (useExternalState) {
|
|
2333
|
+
if (allowDeselect && currentValue === item3.value) {
|
|
2334
|
+
onChange?.(void 0);
|
|
2335
|
+
} else {
|
|
2336
|
+
onChange?.(item3.value);
|
|
2337
|
+
}
|
|
2331
2338
|
} else {
|
|
2332
|
-
|
|
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 &&
|
|
2367
|
+
const isSelected = !isButton && currentValue === item3.value;
|
|
2357
2368
|
const tabContent = /* @__PURE__ */ jsxs15(
|
|
2358
2369
|
"div",
|
|
2359
2370
|
{
|