diff --git a/VDS/Components/Table/Table.swift b/VDS/Components/Table/Table.swift index 21fe00a4..9413b74f 100644 --- a/VDS/Components/Table/Table.swift +++ b/VDS/Components/Table/Table.swift @@ -27,7 +27,6 @@ open class Table: View { $0.allowsSelection = false $0.showsVerticalScrollIndicator = false $0.showsHorizontalScrollIndicator = false - $0.isAccessibilityElement = true $0.backgroundColor = .clear } @@ -148,6 +147,7 @@ extension Table: UICollectionViewDelegate, UICollectionViewDataSource, TableColl var edgePadding = UIEdgeInsets(top: padding.verticalValue(), left: 0, bottom: padding.verticalValue(), right: padding.horizontalValue()) edgePadding.left = (indexPath.row == 0 && !striped) ? VDSLayout.space1X : padding.horizontalValue() cell.updateCell(content: currentItem, surface: surface, striped: shouldStrip, padding: edgePadding, isHeader: isHeader) + setAccessibilityForCell(cell: cell, content: currentItem, path: indexPath) return cell } @@ -162,4 +162,38 @@ extension Table: UICollectionViewDelegate, UICollectionViewDataSource, TableColl func collectionView(_ collectionView: UICollectionView, widthForItemAt indexPath: IndexPath) -> CGFloat { return columnWidths?[indexPath.row] ?? 0.0 } + + //-------------------------------------------------- + // MARK: - Accessibility + //-------------------------------------------------- + + /// To set the accessibility label for the each cell based on the criteria. Table name along with total no of column & row information should be passed in the first cell's accessibility label. + private func setAccessibilityForCell(cell: TableCellItem, content: TableItemModel, path: IndexPath) { + + var accLabel = content.component?.accessibilityLabel ?? "Empty" + + ///Set the type of header label + if path.section == 0 { + accLabel.append(", Column Header") + } else if path.row == 0 { + ///As per design team, inspite of column 0 may not look like a header, it should be read as header. + accLabel.append(", Row Header") + } + + ///Set the Row/Column number for each cell + if path.row == 0 { + accLabel.append(", Row \(path.section + 1), Column \(path.row + 1)") + } else { + accLabel.append(", Column \(path.row + 1)") + } + + ///Set the Row header accessibilityLabel at the end of the non-header cells accessibilityLabel + if path.section != 0, + path.row != 0, + let columnHeaderAccLabel = tableHeader.first?.columns[path.row].component?.accessibilityLabel { + accLabel.append(", \(columnHeaderAccLabel)") + } + + cell.accessibilityLabel = accLabel + } } diff --git a/VDS/Components/Table/TableCellItem.swift b/VDS/Components/Table/TableCellItem.swift index 0c87fb35..d98c12fc 100644 --- a/VDS/Components/Table/TableCellItem.swift +++ b/VDS/Components/Table/TableCellItem.swift @@ -45,6 +45,7 @@ final class TableCellItem: UICollectionViewCell { private func setupCell() { contentView.backgroundColor = .clear + isAccessibilityElement = true addSubview(containerView) containerView.pinToSuperView() diff --git a/VDS/SupportingFiles/ReleaseNotes.txt b/VDS/SupportingFiles/ReleaseNotes.txt index 192e7e44..c35d3eb7 100644 --- a/VDS/SupportingFiles/ReleaseNotes.txt +++ b/VDS/SupportingFiles/ReleaseNotes.txt @@ -1,3 +1,7 @@ +1.0.75 +---------------- +- CXTDT-578885 - Table - Setting appropriate accessiblity label for each cell. + 1.0.74 ---------------- - CXTDT-591307 - DatePicker - Accessibility - #1 & #2