analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
126 lines (114 loc) • 4.95 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
var _chunkHN2HFYUOjs = require('./chunk-HN2HFYUO.js');
var _chunkTN3AYOMVjs = require('./chunk-TN3AYOMV.js');
// src/components/Accordation/Accordation.tsx
var _react = require('react');
var _CaretRight = require('@phosphor-icons/react/dist/csr/CaretRight');
var _jsxruntime = require('react/jsx-runtime');
var CardAccordation = _react.forwardRef.call(void 0,
({
trigger,
children,
className,
defaultExpanded = false,
expanded: controlledExpanded,
onToggleExpanded,
value,
disabled = false,
triggerClassName,
contentClassName,
...props
}, ref) => {
const [internalExpanded, setInternalExpanded] = _react.useState.call(void 0, defaultExpanded);
const generatedId = _react.useId.call(void 0, );
const contentId = value ? `accordion-content-${value}` : generatedId;
const headerId = value ? `accordion-header-${value}` : `${generatedId}-header`;
const isControlled = controlledExpanded !== void 0;
const isExpanded = isControlled ? controlledExpanded : internalExpanded;
_react.useEffect.call(void 0, () => {
if (isControlled) {
setInternalExpanded(controlledExpanded);
}
}, [isControlled, controlledExpanded]);
const handleToggle = () => {
if (disabled) return;
const newExpanded = !isExpanded;
if (!isControlled) {
setInternalExpanded(newExpanded);
}
_optionalChain([onToggleExpanded, 'optionalCall', _ => _(newExpanded)]);
};
const handleKeyDown = (event) => {
if (disabled) return;
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
handleToggle();
}
};
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
_chunkHN2HFYUOjs.CardBase,
{
ref,
layout: "vertical",
padding: "none",
minHeight: "none",
className: _chunkTN3AYOMVjs.cn.call(void 0, "overflow-hidden", className),
...props,
children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
"button",
{
id: headerId,
type: "button",
onClick: handleToggle,
onKeyDown: handleKeyDown,
disabled,
className: _chunkTN3AYOMVjs.cn.call(void 0,
"w-full cursor-pointer not-aria-expanded:rounded-xl aria-expanded:rounded-t-xl flex items-center justify-between gap-3 text-left transition-colors duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-950 focus-visible:ring-inset pl-2 pr-10",
disabled && "cursor-not-allowed text-text-400",
triggerClassName
),
"aria-expanded": isExpanded,
"aria-controls": contentId,
"aria-disabled": disabled,
"data-value": value,
children: [
trigger,
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_CaretRight.CaretRightIcon,
{
size: 20,
className: _chunkTN3AYOMVjs.cn.call(void 0,
"transition-transform duration-200 flex-shrink-0",
disabled ? "text-gray-400" : "text-text-700",
isExpanded ? "rotate-90" : "rotate-0"
),
"data-testid": "accordion-caret"
}
)
]
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
"section",
{
id: contentId,
"aria-labelledby": headerId,
"aria-hidden": !isExpanded,
className: _chunkTN3AYOMVjs.cn.call(void 0,
"transition-all duration-300 ease-in-out overflow-hidden",
isExpanded ? "opacity-100" : "max-h-0 opacity-0"
),
"data-testid": "accordion-content",
"data-value": value,
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkTN3AYOMVjs.cn.call(void 0, "p-4 pt-0", contentClassName), children })
}
)
]
}
);
}
);
CardAccordation.displayName = "CardAccordation";
exports.CardAccordation = CardAccordation;
//# sourceMappingURL=chunk-YBM4EYPA.js.map