@use '@lucca-front/scss/src/commons/utils/a11y';

@mixin openClosedRow {
	.indexTable-body-row,
	.indexTable-foot-row {
		&.is-closed {
			display: none;
		}
	}

	.indexTable-body-row-cellTitle-button[aria-expanded='false'] .icon-arrowChevronTop {
		transform: rotate(180deg);
	}

	// subTotal in header are not displayed when the row is open
	.indexTable-body-row:has(.indexTable-body-row-cellTitle-button[aria-expanded='true']) {
		.indexTable-body-row-subTotal {
			display: none;
		}
	}
}

@mixin focusedRow {
	.indexTable-body-row {
		// We can't use focus-within because it would show actions when focusing checkboxs
		&:has(
			.indexTable-body-row-cell-link:focus-visible,
			.indexTable-body-row-cell.mod-actions:focus-within
		) {
			--components-indexTable-cell-subAction-opacity: 1;
		}

		&:has(.indexTable-body-row-cell-link:focus-visible) {
			--components-indexTable-outline-opacity: 1;
		}
	}
}

@mixin hoveredRow {
	.indexTable-body-row:hover {
		@include hoveredCells;
	}
}

// selectable selected rows
@mixin selectableSelectedRow {
	.indexTable-body-row:has(.checkbox-input:checked, .checkboxField-input:checked) {
		@include selectedCells;
	}
}

// on selectable indexTable : no hover effect on lines when hovering the checkbox
@mixin selectableHoveredRow {
	.indexTable-body-row:hover:has(.indexTable-body-row-transparentCell:hover) {
		// cancel for all :hover css vars
		--components-indexTable-cell-shadow: var(--components-indexTable-cell-shadow-default);
		--components-indexTable-cell-inset-x: 0px;
		--components-indexTable-cell-inset-y: 0px;
		--components-indexTable-cell-subAction-opacity: 0;
	}
}

// states vars
@mixin selectedCells {
	// !important here for overriding a potential overrided non blank row background color
	--components-indexTable-cell-background-color: var(--components-indexTable-cell-background-color-selected) !important;

	// !important here if for overriding a potential selectableHoveredRow reset
	--components-indexTable-cell-shadow: var(--components-indexTable-cell-shadow-selected) !important;

	// if selected stackable row : we also change the stacks background color
	--components-indexTable-stack-svg: var(--components-indexTable-stack-svg-selected);
}

@mixin hoveredCells {
	--components-indexTable-cell-shadow: var(--components-indexTable-cell-shadow-hover);
	--components-indexTable-cell-inset-x: var(--components-indexTable-hover-offset-x);
	--components-indexTable-cell-inset-y: var(--components-indexTable-hover-offset-y);
	--components-indexTable-cell-z-index: 2;
	--components-indexTable-cell-subAction-opacity: 1;
}

@mixin rowsHidden {
	--components-indexTable-row-display: none;
}

@mixin paginationHover {
	--components-button-backgroundColor: var(--palettes-neutral-100);
	--components-button-color: var(--palettes-neutral-700);
}
