bianic-ui 1.9.0-beta.1 → 1.9.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.
- package/dist/cjs/index.js +289 -59
- package/dist/cjs/lib.css +1 -1
- package/dist/cjs/types/components/Forms/Dropdown/DropdownContainer.d.ts +14 -0
- package/dist/cjs/types/components/Forms/Dropdown/DropdownItem.d.ts +20 -0
- package/dist/cjs/types/components/Forms/Dropdown/Example/BasicExample.d.ts +6 -0
- package/dist/cjs/types/components/Forms/Dropdown/Example/CheckMenuExample.d.ts +6 -0
- package/dist/cjs/types/components/Forms/Dropdown/Example/CheckboxFilterExample.d.ts +6 -0
- package/dist/cjs/types/components/Forms/Dropdown/Example/NestedExample.d.ts +6 -0
- package/dist/cjs/types/components/Forms/Dropdown/Example/WithValueExample.d.ts +6 -0
- package/dist/cjs/types/components/Forms/Dropdown/config.d.ts +9 -0
- package/dist/cjs/types/components/Forms/Dropdown/index.d.ts +3 -0
- package/dist/cjs/types/components/Forms/LiveSearch/Example/LiveSearchCustomDropdown.d.ts +3 -0
- package/dist/cjs/types/components/Forms/LiveSearch/PropsInterface.d.ts +4 -0
- package/dist/cjs/types/components/Forms/LiveSearch/index.d.ts +5 -1
- package/dist/cjs/types/components/Forms/TextInput/index.d.ts +1 -0
- package/dist/cjs/types/components/Forms/index.d.ts +1 -0
- package/dist/cjs/types/components/Menu/MenuContainer.d.ts +4 -8
- package/dist/cjs/types/components/Menu/MenuItem.d.ts +2 -1
- package/dist/cjs/types/components/Progress/Bar/index.d.ts +3 -1
- package/dist/cjs/types/components/Window/index.d.ts +3 -4
- package/dist/cjs/types/components/index.d.ts +2 -1
- package/dist/cjs/types/stories/Button/Button.stories.d.ts +1 -1
- package/dist/cjs/types/stories/{Menu/MenuContainer.stories.d.ts → Form/Dropdown/BasicExample.stories.d.ts} +3 -3
- package/dist/cjs/types/stories/Form/Dropdown/DropdownContainer.stories.d.ts +41 -0
- package/dist/cjs/types/stories/Form/Dropdown/DropdownItem.stories.d.ts +26 -0
- package/dist/cjs/types/stories/Form/Dropdown/NestedExample.stories.d.ts +13 -0
- package/dist/cjs/types/stories/Form/Dropdown/SampleTest/CheckMenuExample.stories.d.ts +12 -0
- package/dist/cjs/types/stories/Form/Dropdown/SampleTest/CheckboxExample.stories.d.ts +12 -0
- package/dist/cjs/types/stories/Form/Dropdown/WithValueExample.stories.d.ts +13 -0
- package/dist/cjs/types/stories/Form/LiveSearch/Livesearch.stories.d.ts +38 -0
- package/dist/cjs/types/stories/Form/LiveSearch/LivesearchCustomDropdownExample.stories.d.ts +12 -0
- package/dist/cjs/types/stories/Form/LiveSearch/{LiveSearch.stories.d.ts → LivesearchOld.stories.d.ts} +1 -4
- package/dist/cjs/types/stories/Form/SelectInput/SelectInput.stories.d.ts +0 -1
- package/dist/cjs/types/stories/Progress/Bar/ProgressBar.stories.d.ts +2 -0
- package/dist/cjs/types/stories/Window/Window.stories.d.ts +2 -1
- package/dist/esm/index.js +288 -61
- package/dist/esm/lib.css +1 -1
- package/dist/esm/types/components/Forms/Dropdown/DropdownContainer.d.ts +14 -0
- package/dist/esm/types/components/Forms/Dropdown/DropdownItem.d.ts +20 -0
- package/dist/esm/types/components/Forms/Dropdown/Example/BasicExample.d.ts +6 -0
- package/dist/esm/types/components/Forms/Dropdown/Example/CheckMenuExample.d.ts +6 -0
- package/dist/esm/types/components/Forms/Dropdown/Example/CheckboxFilterExample.d.ts +6 -0
- package/dist/esm/types/components/Forms/Dropdown/Example/NestedExample.d.ts +6 -0
- package/dist/esm/types/components/Forms/Dropdown/Example/WithValueExample.d.ts +6 -0
- package/dist/esm/types/components/Forms/Dropdown/config.d.ts +9 -0
- package/dist/esm/types/components/Forms/Dropdown/index.d.ts +3 -0
- package/dist/esm/types/components/Forms/LiveSearch/Example/LiveSearchCustomDropdown.d.ts +3 -0
- package/dist/esm/types/components/Forms/LiveSearch/PropsInterface.d.ts +4 -0
- package/dist/esm/types/components/Forms/LiveSearch/index.d.ts +5 -1
- package/dist/esm/types/components/Forms/TextInput/index.d.ts +1 -0
- package/dist/esm/types/components/Forms/index.d.ts +1 -0
- package/dist/esm/types/components/Menu/MenuContainer.d.ts +4 -8
- package/dist/esm/types/components/Menu/MenuItem.d.ts +2 -1
- package/dist/esm/types/components/Progress/Bar/index.d.ts +3 -1
- package/dist/esm/types/components/Window/index.d.ts +3 -4
- package/dist/esm/types/components/index.d.ts +2 -1
- package/dist/esm/types/stories/Button/Button.stories.d.ts +1 -1
- package/dist/esm/types/stories/{Menu/MenuContainer.stories.d.ts → Form/Dropdown/BasicExample.stories.d.ts} +3 -3
- package/dist/esm/types/stories/Form/Dropdown/DropdownContainer.stories.d.ts +41 -0
- package/dist/esm/types/stories/Form/Dropdown/DropdownItem.stories.d.ts +26 -0
- package/dist/esm/types/stories/Form/Dropdown/NestedExample.stories.d.ts +13 -0
- package/dist/esm/types/stories/Form/Dropdown/SampleTest/CheckMenuExample.stories.d.ts +12 -0
- package/dist/esm/types/stories/Form/Dropdown/SampleTest/CheckboxExample.stories.d.ts +12 -0
- package/dist/esm/types/stories/Form/Dropdown/WithValueExample.stories.d.ts +13 -0
- package/dist/esm/types/stories/Form/LiveSearch/Livesearch.stories.d.ts +38 -0
- package/dist/esm/types/stories/Form/LiveSearch/LivesearchCustomDropdownExample.stories.d.ts +12 -0
- package/dist/esm/types/stories/Form/LiveSearch/{LiveSearch.stories.d.ts → LivesearchOld.stories.d.ts} +1 -4
- package/dist/esm/types/stories/Form/SelectInput/SelectInput.stories.d.ts +0 -1
- package/dist/esm/types/stories/Progress/Bar/ProgressBar.stories.d.ts +2 -0
- package/dist/esm/types/stories/Window/Window.stories.d.ts +2 -1
- package/dist/index.d.ts +54 -12
- package/package.json +5 -6
- package/src/style/scrollbar.css +9 -1
package/dist/cjs/index.js
CHANGED
|
@@ -90,6 +90,8 @@ function TbCircleCheckFilled (props) {
|
|
|
90
90
|
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 24 24","fill":"currentColor"},"child":[{"tag":"path","attr":{"d":"M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z"},"child":[]}]})(props);
|
|
91
91
|
}function TbAlertTriangle (props) {
|
|
92
92
|
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M12 9v4"},"child":[]},{"tag":"path","attr":{"d":"M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z"},"child":[]},{"tag":"path","attr":{"d":"M12 16h.01"},"child":[]}]})(props);
|
|
93
|
+
}function TbCalendar (props) {
|
|
94
|
+
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z"},"child":[]},{"tag":"path","attr":{"d":"M16 3v4"},"child":[]},{"tag":"path","attr":{"d":"M8 3v4"},"child":[]},{"tag":"path","attr":{"d":"M4 11h16"},"child":[]},{"tag":"path","attr":{"d":"M11 15h1"},"child":[]},{"tag":"path","attr":{"d":"M12 15v3"},"child":[]}]})(props);
|
|
93
95
|
}function TbCheck (props) {
|
|
94
96
|
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M5 12l5 5l10 -10"},"child":[]}]})(props);
|
|
95
97
|
}function TbChevronDown (props) {
|
|
@@ -412,7 +414,7 @@ var radiusConfig$1 = {
|
|
|
412
414
|
tn: 'rounded-radius-full focus-visible:rounded-radius-full',
|
|
413
415
|
},
|
|
414
416
|
};
|
|
415
|
-
var sizeConfig$
|
|
417
|
+
var sizeConfig$d = {
|
|
416
418
|
lg: 'py-[10.5px] h-[48px] flex items-center justify-center gap-[10px] text-size-md ',
|
|
417
419
|
md: 'py-[9px] h-[40px] flex items-center justify-center gap-[5px] text-size-base ',
|
|
418
420
|
sm: 'py-[6px] h-[30px] flex items-center justify-center gap-[5px] text-size-sm ',
|
|
@@ -490,10 +492,10 @@ function Button(_a) {
|
|
|
490
492
|
}
|
|
491
493
|
var sizingRules;
|
|
492
494
|
if (variant.includes('link')) {
|
|
493
|
-
sizingRules = "".concat(sizeConfig$
|
|
495
|
+
sizingRules = "".concat(sizeConfig$d[validatedSize]);
|
|
494
496
|
}
|
|
495
497
|
else {
|
|
496
|
-
sizingRules = "".concat(sizeConfig$
|
|
498
|
+
sizingRules = "".concat(sizeConfig$d[validatedSize], " ").concat(sidePaddingConfig[validatedSize]);
|
|
497
499
|
}
|
|
498
500
|
var sizeClass = label || variant === 'form-group'
|
|
499
501
|
? " ".concat(minWidthRules, " ").concat(sizingRules)
|
|
@@ -1481,15 +1483,15 @@ var colorConfig$1 = {
|
|
|
1481
1483
|
active: 'bg-bia-verdantgreen-dark-40 text-primary-white',
|
|
1482
1484
|
},
|
|
1483
1485
|
blue: {
|
|
1484
|
-
default: 'bg-bia-olympicblue hover:bg-bia-olympicblue-
|
|
1485
|
-
active: 'bg-bia-olympicblue-dark-
|
|
1486
|
+
default: 'bg-bia-olympicblue hover:bg-bia-olympicblue-light-10 active:bg-bia-olympicblue-dark-10 text-primary-white disabled:bg-bia-olympicblue-dark-20 disabled:text-primary-white/50 disabled:cursor-default',
|
|
1487
|
+
active: 'bg-bia-olympicblue-dark-10 text-primary-white',
|
|
1486
1488
|
},
|
|
1487
1489
|
};
|
|
1488
1490
|
|
|
1489
1491
|
var ButtonApp = function (_a) {
|
|
1490
1492
|
_a.icon; _a.isNotified; var _c = _a.isActive, isActive = _c === void 0 ? false : _c, disabled = _a.disabled, _d = _a.color, color = _d === void 0 ? 'green' : _d, label = _a.label, extended = _a.extended, rest = __rest(_a, ["icon", "isNotified", "isActive", "disabled", "color", "label", "extended"]);
|
|
1491
1493
|
var buttonState = isActive ? 'active' : 'default';
|
|
1492
|
-
return (React.createElement("button", __assign({ className: "button-app px-[10px] pb-[8.
|
|
1494
|
+
return (React.createElement("button", __assign({ className: "button-app flex items-center justify-center px-[10px] pb-[8.3px] pt-[8.5px] font-arial text-size-tiny ".concat(colorConfig$1[color][buttonState], " ").concat(extended), type: "button", disabled: disabled }, rest), label));
|
|
1493
1495
|
};
|
|
1494
1496
|
|
|
1495
1497
|
var textColorConfig = {
|
|
@@ -1718,46 +1720,72 @@ var TreeItem = function (_a) {
|
|
|
1718
1720
|
})))));
|
|
1719
1721
|
};
|
|
1720
1722
|
|
|
1721
|
-
function MenuContainer(
|
|
1722
|
-
var
|
|
1723
|
+
var MenuContainer = React.forwardRef(function MenuContainer(propsComp, ref) {
|
|
1724
|
+
var _a = propsComp.isTopFlat, isTopFlat = _a === void 0 ? false : _a, children = propsComp.children, _b = propsComp.open, open = _b === void 0 ? true : _b, _c = propsComp.onClose, onClose = _c === void 0 ? function () { } : _c, _d = propsComp.className, className = _d === void 0 ? '' : _d, _e = propsComp.isWithOverlay, isWithOverlay = _e === void 0 ? true : _e, _f = propsComp.zIndex, zIndex = _f === void 0 ? 0 : _f, restProps = __rest(propsComp, ["isTopFlat", "children", "open", "onClose", "className", "isWithOverlay", "zIndex"]);
|
|
1723
1725
|
var radiusClass = "rounded-b-radius-sm ".concat(!isTopFlat && 'rounded-t-radius-sm');
|
|
1724
1726
|
return (open && (React.createElement(React.Fragment, null,
|
|
1725
1727
|
isWithOverlay && (React.createElement("div", { className: "bianic-menu-overlay fixed left-0 top-0 z-0 h-screen w-screen", onClick: function () { return onClose(); } })),
|
|
1726
|
-
React.createElement("div", { className: "w-fit bg-bia-white shadow-[0px_3px_20px_0px_rgba(0,0,0,0.20)] ".concat(radiusClass, " ").concat(className)
|
|
1728
|
+
React.createElement("div", __assign({ className: "w-fit bg-bia-white shadow-[0px_3px_20px_0px_rgba(0,0,0,0.20)] ".concat(radiusClass, " ").concat(className), ref: ref, style: {
|
|
1729
|
+
zIndex: zIndex,
|
|
1730
|
+
} }, restProps), React.Children.map(children, function (child) {
|
|
1727
1731
|
return React.isValidElement(child)
|
|
1728
1732
|
? // Kirimkan handleItemClick sebagai props onClick ke setiap MenuItem
|
|
1729
|
-
React.cloneElement(child, {
|
|
1733
|
+
React.cloneElement(child, {
|
|
1734
|
+
onClose: function () { return onClose(); },
|
|
1735
|
+
zIndex: zIndex,
|
|
1736
|
+
})
|
|
1730
1737
|
: child;
|
|
1731
1738
|
})))));
|
|
1732
|
-
}
|
|
1739
|
+
});
|
|
1733
1740
|
MenuContainer.defaultProps = {
|
|
1734
1741
|
isTopFlat: false,
|
|
1735
1742
|
};
|
|
1736
1743
|
|
|
1737
1744
|
function MenuItem(_a) {
|
|
1738
|
-
var _b = _a.className, className = _b === void 0 ? '' : _b, label = _a.label, _c = _a.onClick, onClick = _c === void 0 ? function () { } : _c, _d = _a.caption, caption = _d === void 0 ? undefined : _d, _e = _a.isChecked, isChecked = _e === void 0 ? undefined : _e, _f = _a.onClose, onClose = _f === void 0 ? function () { } : _f, children = _a.children, props = __rest(_a, ["className", "label", "onClick", "caption", "isChecked", "onClose", "children"]);
|
|
1739
|
-
var
|
|
1745
|
+
var _b = _a.className, className = _b === void 0 ? '' : _b, label = _a.label, _c = _a.onClick, onClick = _c === void 0 ? function () { } : _c, _d = _a.caption, caption = _d === void 0 ? undefined : _d, _e = _a.isChecked, isChecked = _e === void 0 ? undefined : _e, _f = _a.onClose, onClose = _f === void 0 ? function () { } : _f, children = _a.children, _g = _a.zIndex, zIndex = _g === void 0 ? 0 : _g, props = __rest(_a, ["className", "label", "onClick", "caption", "isChecked", "onClose", "children", "zIndex"]);
|
|
1746
|
+
var _h = React.useState(false), isHovered = _h[0], setIsHovered = _h[1];
|
|
1747
|
+
var _j = React.useState(false), isLeft = _j[0], setIsLeft = _j[1];
|
|
1740
1748
|
var isWithChecked = isChecked !== undefined;
|
|
1741
1749
|
var leftPadding = isWithChecked ? 'pl-[5px]' : 'pl-[10px]';
|
|
1742
1750
|
var rightPadding = caption || children ? 'pr-[5px]' : 'pr-[10px]';
|
|
1743
1751
|
var itemClass = "".concat(leftPadding, " ").concat(rightPadding, " ").concat(className);
|
|
1744
|
-
|
|
1745
|
-
|
|
1752
|
+
var MenuContRef = React.useRef(null);
|
|
1753
|
+
React.useEffect(function () {
|
|
1754
|
+
var _a;
|
|
1755
|
+
if (MenuContRef.current) {
|
|
1756
|
+
// Adjust dropdown position to prevent overflow on the right.
|
|
1757
|
+
var MenuContRect = (_a = MenuContRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
1758
|
+
var RectRight = MenuContRect === null || MenuContRect === void 0 ? void 0 : MenuContRect.right;
|
|
1759
|
+
var innerWindow = window.innerWidth;
|
|
1760
|
+
if (RectRight > innerWindow)
|
|
1761
|
+
setIsLeft(true);
|
|
1762
|
+
else
|
|
1763
|
+
setIsLeft(false);
|
|
1764
|
+
}
|
|
1765
|
+
}, [isHovered]);
|
|
1766
|
+
var translateClass = isLeft
|
|
1767
|
+
? 'left-0 -translate-x-full'
|
|
1768
|
+
: 'right-0 translate-x-full';
|
|
1769
|
+
var currentZIndex = zIndex + 10;
|
|
1770
|
+
return (React.createElement("div", { className: "group/main relative cursor-pointer first:rounded-t-radius-sm first:pt-[6px] last:rounded-b-radius-sm last:pb-[6px]", onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); } },
|
|
1771
|
+
React.createElement("div", __assign({ className: "relative flex items-center py-[5px] hover:bg-bia-blue-pastel ".concat(itemClass), role: "button", tabIndex: 0, onClick: function (e) {
|
|
1746
1772
|
onClick(e);
|
|
1747
|
-
}, onKeyDown: function () { }
|
|
1773
|
+
}, onKeyDown: function () { }, style: {
|
|
1774
|
+
zIndex: isHovered ? currentZIndex : 0,
|
|
1775
|
+
} }, props),
|
|
1748
1776
|
isWithChecked && (React.createElement("div", { className: "mr-[5px] aspect-square w-[14px]" }, isChecked && React.createElement(TbCheck, { className: "text-primary-black", size: 14 }))),
|
|
1749
1777
|
React.createElement("span", { className: "whitespace-nowrap font-arial text-[11px] text-bia-black" }, label),
|
|
1750
1778
|
React.createElement("div", { className: "ml-auto flex items-center" },
|
|
1751
1779
|
children && (React.createElement(TbChevronRight, { className: "ml-[10px] text-bia-coolgrey" })),
|
|
1752
1780
|
children === undefined && caption && (React.createElement("span", { className: "ml-[30px] whitespace-nowrap text-[11px] text-bia-coolgrey" }, caption)))),
|
|
1753
|
-
children && (React.createElement(MenuContainer, { open: isHovered, onClose: onClose, className: "absolute
|
|
1781
|
+
children && (React.createElement(MenuContainer, { open: isHovered, onClose: onClose, className: "absolute top-0 bg-primary-white shadow-[0px_3px_20px_0px_rgba(0,0,0,0.20)] group-first/main:top-[6px] ".concat(translateClass), ref: MenuContRef, zIndex: currentZIndex }, children))));
|
|
1754
1782
|
}
|
|
1755
1783
|
MenuItem.defaultProps = {
|
|
1756
1784
|
className: '',
|
|
1757
1785
|
onClick: function () { },
|
|
1758
1786
|
};
|
|
1759
1787
|
|
|
1760
|
-
var sizeConfig$
|
|
1788
|
+
var sizeConfig$c = {
|
|
1761
1789
|
md: {
|
|
1762
1790
|
fieldSize: 'text-size-base p-2.5 font-[350] h-10',
|
|
1763
1791
|
iconPosition: 'right-[10px]',
|
|
@@ -1818,8 +1846,8 @@ function TextInput(_a) {
|
|
|
1818
1846
|
var _r = React.useState(false), isShow = _r[0], setIsShow = _r[1];
|
|
1819
1847
|
var _s = styleConfig[variant], fieldStyle = _s.fieldStyle, iconStyle = _s.iconStyle;
|
|
1820
1848
|
var _t = isTransparent
|
|
1821
|
-
? __assign(__assign({}, sizeConfig$
|
|
1822
|
-
" pe-[".concat(9 + sizeConfig$
|
|
1849
|
+
? __assign(__assign({}, sizeConfig$c[size]), { iconPosition: "right-0 ", fieldSize: sizeConfig$c[size].fieldSize +
|
|
1850
|
+
" pe-[".concat(9 + sizeConfig$c[size].iconSize, "px]") }) : sizeConfig$c[size], iconSize = _t.iconSize, fieldSize = _t.fieldSize, iconPosition = _t.iconPosition;
|
|
1823
1851
|
var borderStyle = isTransparent
|
|
1824
1852
|
? 'border-transparent bg-transparent' // customize border rule for transparent variant
|
|
1825
1853
|
: 'border border-bia-grey-dark-10 bg-primary-white';
|
|
@@ -1849,6 +1877,8 @@ function TextInput(_a) {
|
|
|
1849
1877
|
if (variant === 'password') {
|
|
1850
1878
|
iconElement = (React.createElement(PasswordIcon, { isShow: isShow, showHandler: setIsShow, iconSize: iconSize, disabled: disabled }));
|
|
1851
1879
|
}
|
|
1880
|
+
if (variant === 'date')
|
|
1881
|
+
iconElement = React.createElement(TbCalendar, { className: "text-bia-coolgrey", size: 18 });
|
|
1852
1882
|
var extendedInputClassName = "".concat(fieldStyle, " ").concat(fieldSize, " ").concat(bottomBorderColor, " ").concat(inputClassName, " ").concat(borderStyle);
|
|
1853
1883
|
var labelStatus = readOnly ? 'read-only:pointer-events-none' : '';
|
|
1854
1884
|
return (React.createElement("div", { className: "bianic-text-input-container bianic-fgc-container flex w-full flex-col gap-y-2 text-bia-black" },
|
|
@@ -1883,7 +1913,7 @@ TextInput.defaultProps = {
|
|
|
1883
1913
|
};
|
|
1884
1914
|
|
|
1885
1915
|
// Desc: Radio button size configuration
|
|
1886
|
-
var sizeConfig$
|
|
1916
|
+
var sizeConfig$b = {
|
|
1887
1917
|
md: {
|
|
1888
1918
|
checkSize: 'w-[22px] h-[22px]',
|
|
1889
1919
|
labelSize: 'text-size-base',
|
|
@@ -1898,7 +1928,7 @@ var sizeUnion$4 = ['md', 'sm'];
|
|
|
1898
1928
|
function Radio(_a) {
|
|
1899
1929
|
var label = _a.label, _b = _a.size, size = _b === void 0 ? 'md' : _b, id = _a.id, _c = _a.onClick, onClick = _c === void 0 ? function () { } : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, _e = _a.checked, checked = _e === void 0 ? false : _e;
|
|
1900
1930
|
var validatedSize = validUnion(size, sizeUnion$4);
|
|
1901
|
-
var _f = sizeConfig$
|
|
1931
|
+
var _f = sizeConfig$b[validatedSize], checkSize = _f.checkSize, labelSize = _f.labelSize;
|
|
1902
1932
|
return (React.createElement("div", { className: "flex items-center" },
|
|
1903
1933
|
React.createElement("div", { className: "bg-white rounded-full flex flex-shrink-0 justify-center items-center relative ".concat(checkSize) },
|
|
1904
1934
|
React.createElement("input", { id: id, "aria-labelledby": "label1", type: "radio", className: "peer checkbox box-content appearance-none focus:opacity-100 focus:ring-1 focus:ring-offset-2 checked:disabled:border-bia-blue-disabled focus:ring-bia-blue focus:outline-none rounded-full border-bia-coolgrey-light-50 checked:border-bia-blue hover:border-bia-blue-hover disabled:border-bia-grey-dark-10 border-2 absolute cursor-pointer w-full h-full", onClick: function (e) { return onClick(e); }, checked: checked, disabled: disabled }),
|
|
@@ -1914,7 +1944,7 @@ Radio.defaultProps = {
|
|
|
1914
1944
|
checked: false,
|
|
1915
1945
|
};
|
|
1916
1946
|
|
|
1917
|
-
var sizeConfig$
|
|
1947
|
+
var sizeConfig$a = {
|
|
1918
1948
|
md: {
|
|
1919
1949
|
inputClass: 'text-size-base font-[350] min-h-10',
|
|
1920
1950
|
},
|
|
@@ -1937,7 +1967,7 @@ var ResizeIcon = function (_a) {
|
|
|
1937
1967
|
function TextArea(_a) {
|
|
1938
1968
|
var descText = _a.descText, _b = _a.disabled, disabled = _b === void 0 ? false : _b, id = _a.id, _c = _a.size, size = _c === void 0 ? 'md' : _c, label = _a.label, _d = _a.placeholder, placeholder = _d === void 0 ? '' : _d, required = _a.required, rows = _a.rows, _e = _a.maxLength, maxLength = _e === void 0 ? undefined : _e, value = _a.value, _f = _a.readOnly, readOnly = _f === void 0 ? false : _f, _g = _a.autoComplete, autoComplete = _g === void 0 ? 'off' : _g, props = __rest(_a, ["descText", "disabled", "id", "size", "label", "placeholder", "required", "rows", "maxLength", "value", "readOnly", "autoComplete"]);
|
|
1939
1969
|
var inputRow = rows !== null && rows !== void 0 ? rows : 4;
|
|
1940
|
-
var inputClass = sizeConfig$
|
|
1970
|
+
var inputClass = sizeConfig$a[size].inputClass;
|
|
1941
1971
|
var remainWords = maxLength ? maxLength - (value ? value.length : 0) : 0;
|
|
1942
1972
|
return (React.createElement("div", { className: "field-group flex w-full flex-col" },
|
|
1943
1973
|
React.createElement("label", { htmlFor: id, className: "label pb-2 text-xs font-semibold read-only:pointer-events-none" },
|
|
@@ -1967,7 +1997,7 @@ TextArea.defaultProps = {
|
|
|
1967
1997
|
value: '',
|
|
1968
1998
|
};
|
|
1969
1999
|
|
|
1970
|
-
var sizeConfig$
|
|
2000
|
+
var sizeConfig$9 = {
|
|
1971
2001
|
md: {
|
|
1972
2002
|
checkClass: 'w-[22px] h-[22px]',
|
|
1973
2003
|
labelClass: 'text-size-base font-[350]',
|
|
@@ -1981,7 +2011,7 @@ var sizeConfig$8 = {
|
|
|
1981
2011
|
var sizeUnion$3 = ['md', 'sm'];
|
|
1982
2012
|
function Checkbox(_a) {
|
|
1983
2013
|
var _b = _a.disabled, disabled = _b === void 0 ? false : _b, id = _a.id, _c = _a.size, size = _c === void 0 ? 'md' : _c, label = _a.label, _d = _a.onChange, onChange = _d === void 0 ? function () { } : _d, props = __rest(_a, ["disabled", "id", "size", "label", "onChange"]);
|
|
1984
|
-
var _e = sizeConfig$
|
|
2014
|
+
var _e = sizeConfig$9[validUnion(size, sizeUnion$3)], checkClass = _e.checkClass, labelClass = _e.labelClass;
|
|
1985
2015
|
return (React.createElement("div", { className: "flex items-center" },
|
|
1986
2016
|
React.createElement("div", { className: "relative flex flex-shrink-0 items-center justify-center rounded-full bg-white ".concat(checkClass) },
|
|
1987
2017
|
React.createElement("input", __assign({ id: id, type: "checkbox", className: "checkbox peer absolute box-content h-full w-full cursor-pointer appearance-none rounded-full border-2 border-bia-coolgrey-light-50 checked:border-bia-blue hover:border-bia-blue-hover focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-bia-blue focus-visible:ring-offset-2 disabled:border-bia-coolgrey-light-50 disabled:checked:border-bia-blue-light-50", onChange: function (e) { return onChange(e); }, disabled: disabled }, props)),
|
|
@@ -1999,7 +2029,7 @@ Checkbox.defaultProps = {
|
|
|
1999
2029
|
onChange: function () { },
|
|
2000
2030
|
};
|
|
2001
2031
|
|
|
2002
|
-
var sizeConfig$
|
|
2032
|
+
var sizeConfig$8 = {
|
|
2003
2033
|
md: {
|
|
2004
2034
|
searchSize: 'text-size-base p-2.5 font-[350] h-10',
|
|
2005
2035
|
iconSize: 'right-[10px] text-[18px]',
|
|
@@ -2010,7 +2040,7 @@ var sizeConfig$7 = {
|
|
|
2010
2040
|
},
|
|
2011
2041
|
};
|
|
2012
2042
|
|
|
2013
|
-
var sizeConfig$
|
|
2043
|
+
var sizeConfig$7 = {
|
|
2014
2044
|
md: {
|
|
2015
2045
|
container: 'text-size-base font-[350] py-[3px] first:pt-[8px] last:pb-[8px]',
|
|
2016
2046
|
item: 'min-h-[34px] p-2.5',
|
|
@@ -2028,7 +2058,7 @@ function CustomDropdownItem(_a) {
|
|
|
2028
2058
|
var _f = React.useState(false), isHoveredSubMenu = _f[0], setIsHoveredSubMenu = _f[1];
|
|
2029
2059
|
var isOpenDropdown = isHovered || isHoveredSubMenu;
|
|
2030
2060
|
var selectedClass = isSelected ? 'font-semibold' : 'font-normal';
|
|
2031
|
-
var _g = sizeConfig$
|
|
2061
|
+
var _g = sizeConfig$7[size], containerClass = _g.container, item = _g.item;
|
|
2032
2062
|
var itemClass = "".concat(item, " ").concat(selectedClass, " ").concat(className);
|
|
2033
2063
|
var isExistSubDropdown = options.length !== 0;
|
|
2034
2064
|
return (React.createElement("div", { className: "relative w-full focus-visible:outline-bia-blue-light-50 ".concat(containerClass), tabIndex: 0, role: "button", onClick: function (e) { return onClick(e); }, onMouseEnter: function () { return setisHovered(true); }, onMouseLeave: function () { return setisHovered(false); }, onKeyDown: function () { } },
|
|
@@ -2055,7 +2085,7 @@ function DefaultDropdownItem(_a) {
|
|
|
2055
2085
|
var _g = React.useState(false), isHoveredSubMenu = _g[0], setIsHoveredSubMenu = _g[1];
|
|
2056
2086
|
var isOpenDropdown = isHovered || isHoveredSubMenu;
|
|
2057
2087
|
var selectedClass = isSelected ? 'font-semibold' : 'font-normal';
|
|
2058
|
-
var _h = sizeConfig$
|
|
2088
|
+
var _h = sizeConfig$7[size], containerClass = _h.container, item = _h.item;
|
|
2059
2089
|
var itemClass = "".concat(item, " ").concat(selectedClass, " ").concat(className);
|
|
2060
2090
|
var isExistSubDropdown = options.length !== 0;
|
|
2061
2091
|
return (React.createElement("div", { className: "relative w-full focus-visible:outline-bia-blue-light-50 ".concat(containerClass), tabIndex: 0, role: "button", onClick: function (e) { return onClick(e); }, onMouseEnter: function () { return setisHovered(true); }, onMouseLeave: function () { return setisHovered(false); }, onKeyDown: function () { } },
|
|
@@ -2082,7 +2112,7 @@ function SelectInput(_a) {
|
|
|
2082
2112
|
var descText = _a.descText, _b = _a.disabled, disabled = _b === void 0 ? false : _b, _c = _a.size, size = _c === void 0 ? 'md' : _c, id = _a.id, label = _a.label, options = _a.options, _d = _a.required, required = _d === void 0 ? false : _d, selected = _a.selected, setSelected = _a.setSelected, _e = _a.onClickDropdown, onClickDropdown = _e === void 0 ? function () { } : _e, props = __rest(_a, ["descText", "disabled", "size", "id", "label", "options", "required", "selected", "setSelected", "onClickDropdown"]);
|
|
2083
2113
|
var _f = React.useState(false), isOpen = _f[0], setIsOpen = _f[1];
|
|
2084
2114
|
var validatedSize = validUnion(size, sizeUnion$2);
|
|
2085
|
-
var _g = sizeConfig$
|
|
2115
|
+
var _g = sizeConfig$8[validatedSize], searchSize = _g.searchSize, iconSize = _g.iconSize;
|
|
2086
2116
|
var inputRef = React.useRef(null);
|
|
2087
2117
|
var handleOutsideClick = function (e) {
|
|
2088
2118
|
if (inputRef.current && !inputRef.current.contains(e.target)) {
|
|
@@ -2146,7 +2176,7 @@ SelectInput.defaultProps = {
|
|
|
2146
2176
|
setSelected: function () { },
|
|
2147
2177
|
};
|
|
2148
2178
|
|
|
2149
|
-
var sizeConfig$
|
|
2179
|
+
var sizeConfig$6 = {
|
|
2150
2180
|
md: {
|
|
2151
2181
|
iconClass: 'right-[10px]',
|
|
2152
2182
|
iconSize: '18',
|
|
@@ -2161,11 +2191,89 @@ var sizeConfig$5 = {
|
|
|
2161
2191
|
},
|
|
2162
2192
|
};
|
|
2163
2193
|
|
|
2164
|
-
|
|
2194
|
+
var sizeConfig$5 = {
|
|
2195
|
+
sm: 'min-w-[72px]',
|
|
2196
|
+
md: 'min-w-[96px]',
|
|
2197
|
+
};
|
|
2198
|
+
var fontConfig = {
|
|
2199
|
+
sm: 'text-[12px] font-[400]',
|
|
2200
|
+
md: 'text-[14px] font-[350]',
|
|
2201
|
+
};
|
|
2202
|
+
|
|
2203
|
+
var DropdownContainer = React.forwardRef(function DropdownContainer(propsComp, ref) {
|
|
2204
|
+
var _a = propsComp.isTopFlat, isTopFlat = _a === void 0 ? false : _a, children = propsComp.children, _b = propsComp.open, open = _b === void 0 ? true : _b, _c = propsComp.onClose, onClose = _c === void 0 ? function () { } : _c, _d = propsComp.className, className = _d === void 0 ? '' : _d, _e = propsComp.isWithOverlay, isWithOverlay = _e === void 0 ? true : _e, _f = propsComp.size, size = _f === void 0 ? 'md' : _f, _g = propsComp.onClickItem, onClickItem = _g === void 0 ? function () { } : _g, _h = propsComp.zIndex, zIndex = _h === void 0 ? 0 : _h, restProps = __rest(propsComp, ["isTopFlat", "children", "open", "onClose", "className", "isWithOverlay", "size", "onClickItem", "zIndex"]);
|
|
2205
|
+
var radiusClass = "rounded-b-radius-sm ".concat(!isTopFlat && 'rounded-t-radius-sm');
|
|
2206
|
+
var sizeClass = sizeConfig$5[size] || sizeConfig$5['md'];
|
|
2207
|
+
var containerClass = "".concat(sizeClass, " ").concat(radiusClass, " ").concat(className);
|
|
2208
|
+
var handleClickDrpdownItem = function (e, val) {
|
|
2209
|
+
onClickItem(e, val);
|
|
2210
|
+
onClose();
|
|
2211
|
+
};
|
|
2212
|
+
return (open && (React.createElement(React.Fragment, null,
|
|
2213
|
+
isWithOverlay && (React.createElement("div", { className: "bianic-dropdown-overlay fixed left-0 top-0 z-0 h-screen w-screen", onClick: function () { return onClose(); } })),
|
|
2214
|
+
React.createElement("div", __assign({ style: {
|
|
2215
|
+
zIndex: zIndex,
|
|
2216
|
+
}, ref: ref, className: "bianic-dropdown-container bg-bia-white shadow-[0px_3px_20px_0px_rgba(0,0,0,0.20)] ".concat(containerClass) }, restProps), React.Children.map(children, function (child) {
|
|
2217
|
+
return React.isValidElement(child)
|
|
2218
|
+
? // Kirimkan handleItemClick sebagai props onClick ke setiap DropdownItem
|
|
2219
|
+
React.cloneElement(child, {
|
|
2220
|
+
onClose: function () { return onClose(); },
|
|
2221
|
+
size: size,
|
|
2222
|
+
onClickItem: function (e, val) { return handleClickDrpdownItem(e, val); },
|
|
2223
|
+
zIndex: zIndex,
|
|
2224
|
+
})
|
|
2225
|
+
: child;
|
|
2226
|
+
})))));
|
|
2227
|
+
});
|
|
2228
|
+
DropdownContainer.defaultProps = {
|
|
2229
|
+
isTopFlat: false,
|
|
2230
|
+
};
|
|
2231
|
+
|
|
2232
|
+
function DropdownItem(_a) {
|
|
2233
|
+
var children = _a.children, _b = _a.className, className = _b === void 0 ? '' : _b, _c = _a.onClickItem, onClickItem = _c === void 0 ? function () { } : _c, _d = _a.onClose, onClose = _d === void 0 ? function () { } : _d, _e = _a.size, size = _e === void 0 ? 'md' : _e, _f = _a.value, value = _f === void 0 ? '' : _f, content = _a.content, _g = _a.disabled, disabled = _g === void 0 ? false : _g, _h = _a.zIndex, zIndex = _h === void 0 ? 0 : _h, props = __rest(_a, ["children", "className", "onClickItem", "onClose", "size", "value", "content", "disabled", "zIndex"]);
|
|
2234
|
+
var _j = React.useState(false), isHovered = _j[0], setIsHovered = _j[1];
|
|
2235
|
+
var _k = React.useState(false), isLeft = _k[0], setIsLeft = _k[1];
|
|
2236
|
+
var fontClass = fontConfig[size] || fontConfig['md'];
|
|
2237
|
+
var itemClass = "".concat(fontClass, " ").concat(className);
|
|
2238
|
+
var chevronSize = size === 'sm' ? 14 : 18;
|
|
2239
|
+
var DropdownContRef = React.useRef(null);
|
|
2240
|
+
React.useEffect(function () {
|
|
2241
|
+
var _a;
|
|
2242
|
+
if (DropdownContRef.current) {
|
|
2243
|
+
// Adjust dropdown position to prevent overflow on the right.
|
|
2244
|
+
var MenuContRect = (_a = DropdownContRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
2245
|
+
var RectRight = MenuContRect === null || MenuContRect === void 0 ? void 0 : MenuContRect.right;
|
|
2246
|
+
var innerWindow = window.innerWidth;
|
|
2247
|
+
if (RectRight > innerWindow)
|
|
2248
|
+
setIsLeft(true);
|
|
2249
|
+
else
|
|
2250
|
+
setIsLeft(false);
|
|
2251
|
+
}
|
|
2252
|
+
}, [isHovered]);
|
|
2253
|
+
var translateClass = isLeft
|
|
2254
|
+
? 'left-0 -translate-x-full'
|
|
2255
|
+
: 'right-0 translate-x-full';
|
|
2256
|
+
var currentZIndex = zIndex + 10;
|
|
2257
|
+
return (React.createElement("div", { className: "bianic-dropdown-item group/main relative cursor-pointer first:rounded-t-radius-sm first:pt-[6px] last:rounded-b-radius-sm last:pb-[6px]", onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); } },
|
|
2258
|
+
React.createElement("button", __assign({ className: "relative flex h-full w-full !min-w-fit items-center justify-start whitespace-nowrap px-[15px] py-[5px] text-left text-bia-black disabled:cursor-not-allowed disabled:text-bia-coolgrey-light-50 hover:[&:not(:disabled)]:bg-bia-blue-pastel ".concat(itemClass), style: {
|
|
2259
|
+
zIndex: isHovered ? currentZIndex : 0,
|
|
2260
|
+
}, onClick: function (e) {
|
|
2261
|
+
onClickItem(e, value);
|
|
2262
|
+
}, onKeyDown: function () { }, disabled: disabled, type: "button" }, props),
|
|
2263
|
+
content,
|
|
2264
|
+
React.createElement("div", { className: "ml-auto flex items-center" }, children && (React.createElement(TbChevronRight, { className: "ml-[10px] text-bia-coolgrey", size: chevronSize })))),
|
|
2265
|
+
children && (React.createElement(DropdownContainer, { className: "absolute top-0 bg-primary-white shadow-[0px_3px_20px_0px_rgba(0,0,0,0.20)] group-first/main:top-[6px] ".concat(translateClass), onClose: onClose, open: isHovered, onClickItem: function (e, value) { return onClickItem(e, value); }, size: size, ref: DropdownContRef, zIndex: currentZIndex }, children))));
|
|
2266
|
+
}
|
|
2267
|
+
DropdownItem.defaultProps = {
|
|
2268
|
+
className: '',
|
|
2269
|
+
onClickItem: function () { },
|
|
2270
|
+
};
|
|
2271
|
+
|
|
2165
2272
|
function LiveSearch(_a) {
|
|
2166
|
-
var descText = _a.descText, _b = _a.disabled, disabled = _b === void 0 ? false : _b, id = _a.id, _c = _a.size, size = _c === void 0 ? 'md' : _c, label = _a.label, placeholder = _a.placeholder, _d = _a.required, required = _d === void 0 ? false : _d, options = _a.options, setValue = _a.setValue, value = _a.value, _e = _a.readOnly, readOnly = _e === void 0 ? false : _e, _f = _a.onChangeText, onChangeText = _f === void 0 ? function () { } : _f, _g = _a.onClickDropdown, onClickDropdown = _g === void 0 ? function () { } : _g, _h = _a.autoComplete, autoComplete = _h === void 0 ? 'off' : _h;
|
|
2167
|
-
var
|
|
2168
|
-
var
|
|
2273
|
+
var descText = _a.descText, _b = _a.disabled, disabled = _b === void 0 ? false : _b, id = _a.id, _c = _a.size, size = _c === void 0 ? 'md' : _c, label = _a.label, placeholder = _a.placeholder, _d = _a.required, required = _d === void 0 ? false : _d, options = _a.options, setValue = _a.setValue, value = _a.value, _e = _a.readOnly, readOnly = _e === void 0 ? false : _e, _f = _a.onChangeText, onChangeText = _f === void 0 ? function () { } : _f, _g = _a.onClickDropdown, onClickDropdown = _g === void 0 ? function () { } : _g, _h = _a.autoComplete, autoComplete = _h === void 0 ? 'off' : _h, _j = _a.children, children = _j === void 0 ? undefined : _j, _k = _a.dropdownClassName, dropdownClassName = _k === void 0 ? '' : _k, _l = _a.dropContProps, dropContProps = _l === void 0 ? undefined : _l;
|
|
2274
|
+
var _m = React.useState(false), isOpen = _m[0], setIsOpen = _m[1];
|
|
2275
|
+
var _o = React.useState(value.label || ''), searchTerm = _o[0], setSearchTerm = _o[1];
|
|
2276
|
+
var _p = sizeConfig$6[size], iconClass = _p.iconClass, iconSize = _p.iconSize, inputClass = _p.inputClass;
|
|
2169
2277
|
var inputRef = React.useRef(null);
|
|
2170
2278
|
var handleOutsideClick = function (e) {
|
|
2171
2279
|
if (inputRef.current && !inputRef.current.contains(e.target)) {
|
|
@@ -2178,30 +2286,108 @@ function LiveSearch(_a) {
|
|
|
2178
2286
|
document.removeEventListener('mousedown', handleOutsideClick);
|
|
2179
2287
|
};
|
|
2180
2288
|
});
|
|
2289
|
+
// Synchronize internal searchTerm with external value prop
|
|
2290
|
+
React.useEffect(function () {
|
|
2291
|
+
// Only update searchTerm if the label from the value prop differs from the current searchTerm
|
|
2292
|
+
// This prevents infinite loops if searchTerm is already the same as value.label
|
|
2293
|
+
if (value.label !== searchTerm) {
|
|
2294
|
+
setSearchTerm(value.label || '');
|
|
2295
|
+
}
|
|
2296
|
+
}, [value.label, searchTerm]);
|
|
2181
2297
|
var filteredOptions = options.filter(function (item) {
|
|
2182
2298
|
return item.label.toLowerCase().includes(value.label.toLowerCase());
|
|
2183
2299
|
});
|
|
2184
|
-
|
|
2185
|
-
|
|
2300
|
+
var handleInputChange = function (e) {
|
|
2301
|
+
var newSearchTerm = e.target.value;
|
|
2302
|
+
setSearchTerm(newSearchTerm);
|
|
2303
|
+
setIsOpen(true); // Ensure dropdown opens when typing
|
|
2304
|
+
};
|
|
2305
|
+
var handleDropdownItemClick = React.useCallback(function (clickedValue) {
|
|
2306
|
+
setSearchTerm(clickedValue.label); // Set input text to the selected label
|
|
2307
|
+
setValue(clickedValue); // Update the value in the parent
|
|
2308
|
+
setIsOpen(false);
|
|
2309
|
+
}, [setValue]);
|
|
2310
|
+
// Recursive function to filter and clone DropdownItems, including nested items
|
|
2311
|
+
var processDropdownChildren = function (nodes, currentSearchTerm, includeAllIfNoSearch) {
|
|
2312
|
+
return React.Children.map(nodes, function (child) {
|
|
2313
|
+
if (!React.isValidElement(child) || child.type !== DropdownItem) {
|
|
2314
|
+
return child; // Render non-DropdownItem or other elements as is
|
|
2315
|
+
}
|
|
2316
|
+
var itemProps = child.props; // Cast to any to access props
|
|
2317
|
+
var itemValue = itemProps.value;
|
|
2318
|
+
var isDisabled = itemProps.disabled;
|
|
2319
|
+
// Filter based on searchTerm only if searchTerm is present
|
|
2320
|
+
if (currentSearchTerm &&
|
|
2321
|
+
!itemValue.toLowerCase().includes(currentSearchTerm.toLowerCase())) {
|
|
2322
|
+
return null; // Do not render if it doesn't match
|
|
2323
|
+
}
|
|
2324
|
+
// If includeAllIfNoSearch is true (when searchTerm is empty), do not filter.
|
|
2325
|
+
// If includeAllIfNoSearch is false (when searchTerm is present), filtering has been done above.
|
|
2326
|
+
// Clone its children recursively if any
|
|
2327
|
+
var clonedChildren = itemProps.children
|
|
2328
|
+
? processDropdownChildren(itemProps.children, currentSearchTerm)
|
|
2329
|
+
: null;
|
|
2330
|
+
// Clone the DropdownItem to inject the onClick prop
|
|
2331
|
+
return React.cloneElement(child, {
|
|
2332
|
+
onClick: function (e) {
|
|
2333
|
+
if (!isDisabled) {
|
|
2334
|
+
handleDropdownItemClick({
|
|
2335
|
+
id: itemValue,
|
|
2336
|
+
label: itemValue,
|
|
2337
|
+
});
|
|
2338
|
+
}
|
|
2339
|
+
if (dropContProps === null || dropContProps === void 0 ? void 0 : dropContProps.onClickItem) {
|
|
2340
|
+
dropContProps.onClickItem(e, itemValue);
|
|
2341
|
+
}
|
|
2342
|
+
},
|
|
2343
|
+
children: clonedChildren, // Ensure processed children are also cloned
|
|
2344
|
+
});
|
|
2345
|
+
});
|
|
2346
|
+
};
|
|
2347
|
+
// Determine which children to display
|
|
2348
|
+
var renderedChildren = null;
|
|
2349
|
+
var hasFilteredResults = false;
|
|
2350
|
+
if (searchTerm) {
|
|
2351
|
+
// If there's a searchTerm, filter children
|
|
2352
|
+
renderedChildren = processDropdownChildren(children, searchTerm);
|
|
2353
|
+
hasFilteredResults =
|
|
2354
|
+
React.Children.toArray(renderedChildren).filter(Boolean).length > 0;
|
|
2355
|
+
}
|
|
2356
|
+
else {
|
|
2357
|
+
// If searchTerm is empty, display all children without filtering (but with onClick injected)
|
|
2358
|
+
renderedChildren = processDropdownChildren(children, '');
|
|
2359
|
+
hasFilteredResults =
|
|
2360
|
+
React.Children.toArray(renderedChildren).filter(Boolean).length > 0; // Should always be true if there are initial children
|
|
2361
|
+
}
|
|
2362
|
+
return (React.createElement("div", { className: "bianic-livesearch field-group flex w-full flex-col gap-y-2", ref: inputRef },
|
|
2363
|
+
React.createElement("label", { htmlFor: id, className: "bianic-livesearch-label text-xs font-semibold read-only:pointer-events-none" },
|
|
2186
2364
|
label,
|
|
2187
2365
|
required && React.createElement("span", { className: "p-1 text-bia-red" }, "*")),
|
|
2188
2366
|
React.createElement("div", { className: "group relative w-full" },
|
|
2189
|
-
React.createElement("input", { className: "field peer w-full rounded border border-bia-grey-dark-10 bg-primary-white read-only:pointer-events-none read-only:border-bia-grey-disabled focus-visible:outline-none enabled:hover:rounded-b-none enabled:hover:border-b-bia-blue enabled:focus:rounded-b-none enabled:focus:border-b-bia-blue disabled:border-bia-grey-dark-10 disabled:bg-bia-grey-light-10 disabled:text-bia-coolgrey ".concat(inputClass), onClick: function () { return setIsOpen(!isOpen); }, value:
|
|
2367
|
+
React.createElement("input", { className: "bianic-livesearch-input field peer w-full rounded border border-bia-grey-dark-10 bg-primary-white read-only:pointer-events-none read-only:border-bia-grey-disabled focus-visible:outline-none enabled:hover:rounded-b-none enabled:hover:border-b-bia-blue enabled:focus:rounded-b-none enabled:focus:border-b-bia-blue disabled:border-bia-grey-dark-10 disabled:bg-bia-grey-light-10 disabled:text-bia-coolgrey ".concat(inputClass), onClick: function () { return setIsOpen(!isOpen); }, value: searchTerm, required: required, disabled: disabled, id: id, placeholder: placeholder, onChange: function (e) {
|
|
2190
2368
|
onChangeText(e);
|
|
2191
2369
|
setValue({ id: null, label: e.target.value });
|
|
2192
|
-
|
|
2193
|
-
|
|
2370
|
+
handleInputChange(e);
|
|
2371
|
+
}, type: "text", readOnly: readOnly, autoComplete: autoComplete }),
|
|
2372
|
+
React.createElement("div", { className: "absolute inset-y-0 flex items-center pl-3 group-hover:hidden ".concat(iconClass) },
|
|
2194
2373
|
React.createElement(TbZoom, { className: "text-primary-black", style: { fontSize: iconSize } })),
|
|
2195
|
-
|
|
2374
|
+
React.createElement("div", { className: "absolute inset-y-0 z-20 hidden pl-3 group-hover:block ".concat(iconClass) },
|
|
2375
|
+
React.createElement("button", { onClick: function () { return setValue({ id: null, label: '' }); }, className: "flex h-full w-full items-center" },
|
|
2376
|
+
React.createElement(TbX, { className: "text-primary-black", style: { fontSize: iconSize } }))),
|
|
2377
|
+
children === undefined && isOpen && (React.createElement("div", { className: "border-grey-100 absolute z-10 max-h-60 w-full overflow-y-auto rounded-b-md border bg-primary-white shadow-lg", onClick: onClickDropdown }, filteredOptions.map(function (option) {
|
|
2196
2378
|
var isSelected = value && value.id && option.id === value.id;
|
|
2197
|
-
return option.custom ? (React.createElement(CustomDropdownItem, { size: size, isSelected: isSelected, onClick: function () {
|
|
2379
|
+
return option.custom ? (React.createElement(CustomDropdownItem, { size: size, isSelected: isSelected, className: dropdownClassName, onClick: function () {
|
|
2198
2380
|
setValue(option);
|
|
2199
2381
|
setIsOpen(false);
|
|
2200
|
-
} }, option.custom)) : (React.createElement(DefaultDropdownItem, { label: option.label, size: size, isSelected: isSelected, onClick: function () {
|
|
2382
|
+
} }, option.custom)) : (React.createElement(DefaultDropdownItem, { label: option.label, size: size, isSelected: isSelected, className: dropdownClassName, onClick: function () {
|
|
2201
2383
|
setValue(option);
|
|
2202
2384
|
setIsOpen(false);
|
|
2203
2385
|
} }));
|
|
2204
|
-
})))
|
|
2386
|
+
}))),
|
|
2387
|
+
children && isOpen && (React.createElement(DropdownContainer, __assign({ open: isOpen, onClose: function () { return setIsOpen(false); }, size: size, isTopFlat: true, className: "bianic-livesearch-dropdown absolute z-10 mt-1 w-full overflow-hidden rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none ".concat(dropdownClassName) }, dropContProps), hasFilteredResults
|
|
2388
|
+
? renderedChildren
|
|
2389
|
+
: // If no results and searchTerm is present
|
|
2390
|
+
searchTerm.length > 0 && (React.createElement(DropdownItem, { content: React.createElement("div", { className: "px-4 py-2 text-gray-500" }, "Tidak ada hasil ditemukan.") }))))),
|
|
2205
2391
|
React.createElement("span", { className: "desc text-xs text-primary-cool" }, descText)));
|
|
2206
2392
|
}
|
|
2207
2393
|
LiveSearch.defaultProps = {
|
|
@@ -2724,35 +2910,49 @@ var SpinnerIcon = function (_a) {
|
|
|
2724
2910
|
|
|
2725
2911
|
var config = {
|
|
2726
2912
|
success: {
|
|
2727
|
-
progress: 'bg-bia-green',
|
|
2913
|
+
progress: 'bg-bia-green outline-bia-green',
|
|
2728
2914
|
statusIcon: React.createElement(TbCircleCheckFilled, { className: "text-[16px] text-bia-green" }),
|
|
2729
2915
|
},
|
|
2730
2916
|
failed: {
|
|
2731
|
-
progress: 'bg-bia-red',
|
|
2917
|
+
progress: 'bg-bia-red outline-bia-red',
|
|
2732
2918
|
statusIcon: React.createElement(TbPlaystationX, { className: "text-[16px] text-bia-red" }),
|
|
2733
2919
|
},
|
|
2734
2920
|
loading: {
|
|
2735
|
-
progress: 'bg-bia-blue',
|
|
2921
|
+
progress: 'bg-bia-blue outline-bia-blue ',
|
|
2736
2922
|
statusIcon: React.createElement(SpinnerIcon, { className: "text-[16px] text-bia-grey-dark-10" }),
|
|
2737
2923
|
},
|
|
2738
2924
|
};
|
|
2739
2925
|
|
|
2740
2926
|
function ProgressBar(_a) {
|
|
2741
|
-
var _b = _a.title, title = _b === void 0 ? '' : _b, _c = _a.percentage, percentage = _c === void 0 ? 0 : _c, caption = _a.caption, _d = _a.variant, variant = _d === void 0 ? 'loading' : _d;
|
|
2742
|
-
var
|
|
2927
|
+
var _b = _a.title, title = _b === void 0 ? '' : _b, _c = _a.percentage, percentage = _c === void 0 ? 0 : _c, caption = _a.caption, _d = _a.variant, variant = _d === void 0 ? 'loading' : _d, _e = _a.icon, icon = _e === void 0 ? true : _e, barColor = _a.barColor;
|
|
2928
|
+
var percentageVal = percentage;
|
|
2929
|
+
if (percentageVal === 0)
|
|
2930
|
+
percentageVal = 0.5;
|
|
2743
2931
|
if (percentage > 100)
|
|
2744
|
-
|
|
2745
|
-
var
|
|
2932
|
+
percentageVal = 100;
|
|
2933
|
+
var _f = config[variant], progress = _f.progress, statusIcon = _f.statusIcon;
|
|
2934
|
+
var barColorRules = barColor
|
|
2935
|
+
? "outline-bia-".concat(barColor, " bg-bia-").concat(barColor)
|
|
2936
|
+
: progress; // Use the provided barColor or fallback to the default progress color
|
|
2937
|
+
var iconElement = null;
|
|
2938
|
+
if (icon) {
|
|
2939
|
+
if (typeof icon === 'boolean') {
|
|
2940
|
+
iconElement = statusIcon; // Use the default icon based on the variant
|
|
2941
|
+
}
|
|
2942
|
+
else {
|
|
2943
|
+
iconElement = icon; // Use the provided icon
|
|
2944
|
+
}
|
|
2945
|
+
}
|
|
2746
2946
|
return (React.createElement("div", { className: "bianic-progress-bar-container flex w-[320px] flex-col rounded-radius-lg bg-bia-grey-light-80 p-[10px] " },
|
|
2747
2947
|
React.createElement("div", { className: "flex items-center justify-between text-primary-black" },
|
|
2748
2948
|
React.createElement(Text, { variant: "small-text-semibold", extended: "bianic-progress-bar-title" }, title),
|
|
2749
2949
|
React.createElement("div", { className: "flex gap-1" },
|
|
2750
|
-
React.createElement(Text, { variant: "small-text-semibold", extended: "bianic-progress-bar-
|
|
2751
|
-
|
|
2950
|
+
React.createElement(Text, { variant: "small-text-semibold", extended: "bianic-progress-bar-percentage" },
|
|
2951
|
+
percentage,
|
|
2752
2952
|
"%"),
|
|
2753
|
-
|
|
2953
|
+
iconElement)),
|
|
2754
2954
|
React.createElement("div", { className: "bianic-progress-bar mb-1 mt-2 w-full rounded-radius-lg bg-bia-white p-[3px]" },
|
|
2755
|
-
React.createElement("div", { className: "h-
|
|
2955
|
+
React.createElement("div", { className: "h-[1px] rounded-radius-lg outline outline-[1.5px] ".concat(barColorRules), style: { width: "".concat(percentageVal, "%") } })),
|
|
2756
2956
|
caption && (React.createElement(Text, { variant: "small-text-semibold", extended: "text-bia-coolgrey-dark-10" }, caption))));
|
|
2757
2957
|
}
|
|
2758
2958
|
|
|
@@ -2927,7 +3127,7 @@ var alternativeConfigs = {
|
|
|
2927
3127
|
false: 'cursor-pointer bg-bia-verdantgreen-dark-40 hover:bg-bia-verdantgreen-dark-50 text-primary-white overflow-hidden',
|
|
2928
3128
|
};
|
|
2929
3129
|
var alternativeButtonConfigs = {
|
|
2930
|
-
true: 'absolute px-[5px] opacity-0 hover:opacity-100 grid-cols-2 gap-[2px] bg-gradient-to-l from-primary-white from-50% to-primary-white/[.0] inset-y-0 right-0',
|
|
3130
|
+
true: 'absolute px-[5px] opacity-0 group-hover/container:opacity-100 grid-cols-2 gap-[2px] bg-gradient-to-l from-primary-white from-50% to-primary-white/[.0] inset-y-0 right-0',
|
|
2931
3131
|
false: ' absolute px-[5px] opacity-0 hover:opacity-100 grid-cols-2 gap-[2px] bg-gradient-to-l from-bia-verdantgreen-dark-50 from-50% to-bia-verdantgreen-dark-50/[.0] inset-y-0 right-0',
|
|
2932
3132
|
};
|
|
2933
3133
|
var actionButtonConfig = {
|
|
@@ -2956,11 +3156,11 @@ var TabMenu = function (_a) {
|
|
|
2956
3156
|
usedButtonConfig = defaultButtonConfigs[isActive];
|
|
2957
3157
|
usedActionButtonConfig = '';
|
|
2958
3158
|
}
|
|
2959
|
-
return (React.createElement("div", __assign({ className: "tab-menu flex flex-row font-arial text-size-tiny font-normal ".concat(radiusConfig[validatedRadius], " ").concat(variantConfig[validatedVariant], " ").concat(usedBaseConfig, " ").concat(rest.className) }, rest),
|
|
3159
|
+
return (React.createElement("div", __assign({ className: "tab-menu group/container flex flex-row font-arial text-size-tiny font-normal ".concat(radiusConfig[validatedRadius], " ").concat(variantConfig[validatedVariant], " ").concat(usedBaseConfig, " ").concat(rest.className) }, rest),
|
|
2960
3160
|
text,
|
|
2961
3161
|
React.createElement("div", { className: "grid ".concat(usedButtonConfig, " ") },
|
|
2962
3162
|
validatedVariant === 'alternative' && React.createElement("div", { className: "order-first" }),
|
|
2963
|
-
React.createElement("button", { className: "group order-last
|
|
3163
|
+
React.createElement("button", { className: "group order-last", onClick: onClose },
|
|
2964
3164
|
React.createElement(TbX, { className: "rounded-radius-sm ".concat(usedActionButtonConfig), size: 14 })))));
|
|
2965
3165
|
};
|
|
2966
3166
|
|
|
@@ -3262,6 +3462,33 @@ function Toaster(_a) {
|
|
|
3262
3462
|
React.createElement(TbX, { size: 14 })))));
|
|
3263
3463
|
}
|
|
3264
3464
|
|
|
3465
|
+
function Window(_a) {
|
|
3466
|
+
var _b = _a.size, size = _b === void 0 ? 'sm' : _b, title = _a.title; _a.zIndex; var onClose = _a.onClose, rest = __rest(_a, ["size", "title", "zIndex", "onClose"]);
|
|
3467
|
+
var windowSize;
|
|
3468
|
+
// sizing logic
|
|
3469
|
+
switch (size) {
|
|
3470
|
+
case 'sm':
|
|
3471
|
+
windowSize = 'w-[300px]';
|
|
3472
|
+
break;
|
|
3473
|
+
case 'md':
|
|
3474
|
+
windowSize = 'w-[540px]';
|
|
3475
|
+
break;
|
|
3476
|
+
case 'lg':
|
|
3477
|
+
windowSize = 'w-[800px]';
|
|
3478
|
+
break;
|
|
3479
|
+
case 'xl':
|
|
3480
|
+
windowSize = 'w-[1140px]';
|
|
3481
|
+
break;
|
|
3482
|
+
default:
|
|
3483
|
+
windowSize = 'w-[540px]';
|
|
3484
|
+
}
|
|
3485
|
+
return (React.createElement("div", { className: "bianic-window drag-handle flex flex-col gap-[20px] rounded-[5px] bg-white ".concat(windowSize, " shadow-[0px_3px_20px_0px_rgba(0,0,0,0.10)]") },
|
|
3486
|
+
React.createElement("div", { className: "bianic-window-header flex cursor-move justify-between px-[20px] pt-[20px]" },
|
|
3487
|
+
React.createElement("div", { className: " text-wrap text-left font-humnst777 text-[18px] font-bold leading-[21.85px] text-primary-black" }, title),
|
|
3488
|
+
React.createElement(Button, { variant: "subtle", radius: "full-rounded", iconLeft: React.createElement(TbX, null), size: "tn", onClick: function () { return onClose(); } })),
|
|
3489
|
+
React.createElement("div", { className: "bianic-window-content flex w-full flex-col items-start gap-[20px] px-[20px] pb-[20px] text-primary-black" }, rest.children)));
|
|
3490
|
+
}
|
|
3491
|
+
|
|
3265
3492
|
exports.Accordions = Accordions;
|
|
3266
3493
|
exports.Alert = Alert;
|
|
3267
3494
|
exports.Avatar = Avatar;
|
|
@@ -3297,6 +3524,8 @@ exports.Color = Color;
|
|
|
3297
3524
|
exports.ContextualButton = ContextualButton;
|
|
3298
3525
|
exports.Display = Display;
|
|
3299
3526
|
exports.Divider = Divider;
|
|
3527
|
+
exports.DropdownContainer = DropdownContainer;
|
|
3528
|
+
exports.DropdownItem = DropdownItem;
|
|
3300
3529
|
exports.FileTree = FileTree;
|
|
3301
3530
|
exports.FormGroup = FormGroup;
|
|
3302
3531
|
exports.FormGroupButton = FormGroupButton;
|
|
@@ -3330,3 +3559,4 @@ exports.TextInput = TextInput;
|
|
|
3330
3559
|
exports.Toaster = Toaster;
|
|
3331
3560
|
exports.Toggle = Toggle;
|
|
3332
3561
|
exports.Tooltip = Tooltip;
|
|
3562
|
+
exports.Window = Window;
|