Skip to content

Commit 51b02ae

Browse files
Fix few accessibility related issues. #6991
1 parent e207a82 commit 51b02ae

File tree

7 files changed

+30
-7
lines changed

7 files changed

+30
-7
lines changed

web/pgadmin/static/js/components/CodeMirror.jsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,10 @@ export function FindDialog({editor, show, replace, onClose, selFindVal}) {
259259
inputRef={(ele)=>{findInputRef.current = ele;}}
260260
onChange={(value)=>setFindVal(value)}
261261
onKeyPress={onFindEnter}
262+
placeholder={gettext('Find text')}
263+
controlProps={{
264+
title: gettext('Find text')
265+
}}
262266
endAdornment={
263267
<InputAdornment position="end">
264268
<PgIconButton data-test="case" title="Match case" icon={<FormatCaseIcon />} size="xs" noBorder
@@ -273,6 +277,10 @@ export function FindDialog({editor, show, replace, onClose, selFindVal}) {
273277
className={classes.marginTop}
274278
onChange={(value)=>setReplaceVal(value)}
275279
onKeyPress={onReplaceEnter}
280+
placeholder={gettext('Replace value')}
281+
controlProps={{
282+
title: gettext('Replace value')
283+
}}
276284
/>}
277285

278286
<Box display="flex" className={classes.marginTop}>
@@ -554,7 +562,7 @@ export default function CodeMirror({currEditor, name, value, options, events, re
554562
>
555563
<FindDialog editor={editor.current} show={showFind} replace={isReplace} onClose={closeFind} selFindVal={editor.current?.getSelection() && editor.current.getSelection().length > 0 ? editor.current.getSelection() : ''}/>
556564
<CopyButton editor={editor.current} show={showCopy} copyText={value}></CopyButton>
557-
<textarea ref={taRef} name={name}
565+
<textarea ref={taRef} name={name} title={gettext('SQL editor')}
558566
id={cid} aria-describedby={helpid} value={value??''} onChange={()=>{/* dummy */}}
559567
/>
560568
</div>

web/pgadmin/static/js/components/ContextMenu.jsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React from 'react';
22
import { PgMenu, PgMenuDivider, PgMenuItem, PgSubMenu } from './Menu';
33
import PropTypes from 'prop-types';
4+
import gettext from 'sources/gettext';
45

56
export default function ContextMenu({menuItems, position, onClose, label='context'}) {
67
const getPgMenuItem = (menuItem, i)=>{
@@ -42,6 +43,10 @@ export default function ContextMenu({menuItems, position, onClose, label='contex
4243
}
4344
return getPgMenuItem(menuItem, i);
4445
})}
46+
{menuItems.length == 0 && getPgMenuItem({
47+
label: gettext('No options'),
48+
isDisabled: true,
49+
}, 0)}
4550
</PgMenu>
4651
);
4752
}

web/pgadmin/static/js/components/FormComponents.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,8 @@ export const InputText = forwardRef(({
397397
...(type ? { pattern: !_.isUndefined(controlProps) && !_.isUndefined(controlProps.pattern) ? controlProps.pattern : patterns[type] } : {}),
398398
style: inputStyle || {},
399399
autoComplete: 'new-password',
400-
'data-testid': 'input-text'
400+
'data-testid': 'input-text',
401+
title: controlProps?.title,
401402
}}
402403
readOnly={Boolean(readonly)}
403404
disabled={Boolean(disabled)}
@@ -565,7 +566,7 @@ export function InputCheckbox({ cid, helpid, value, onChange, controlProps, read
565566
checked={Boolean(value)}
566567
onChange={readonly ? () => {/*This is intentional (SonarQube)*/ } : onChange}
567568
color="primary"
568-
inputProps={{ 'aria-describedby': helpid }}
569+
inputProps={{ 'aria-describedby': helpid, 'title': controlProps.label}}
569570
{...props} />
570571
}
571572
label={controlProps.label}
@@ -1265,7 +1266,7 @@ export function NotifierMessage({
12651266
<Box className={clsx(classes.container, classes[`container${type}`])} style={style} data-test="notifier-message">
12661267
{showIcon && <FormIcon type={type} className={classes[`icon${type}`]} />}
12671268
<Box className={textCenter ? classes.messageCenter : classes.message}>{HTMLReactParse(message || '')}</Box>
1268-
{closable && <IconButton className={clsx(classes.closeButton, classes[`icon${type}`])} onClick={onClose}>
1269+
{closable && <IconButton title={gettext('Close Message')} className={clsx(classes.closeButton, classes[`icon${type}`])} onClick={onClose}>
12691270
<FormIcon close={true} />
12701271
</IconButton>}
12711272
</Box>

web/pgadmin/static/js/components/PgTable.jsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ const useStyles = makeStyles((theme) => ({
185185
}));
186186

187187
const IndeterminateCheckbox = React.forwardRef(
188-
({ indeterminate, ...rest }, ref) => {
188+
({ indeterminate, label, ...rest }, ref) => {
189189
const defaultRef = React.useRef();
190190
const resolvedRef = ref || defaultRef;
191191

@@ -197,6 +197,7 @@ const IndeterminateCheckbox = React.forwardRef(
197197
<Checkbox
198198
color="primary"
199199
ref={resolvedRef} {...rest}
200+
inputProps={{'aria-label': label}}
200201
/>
201202
</>
202203
);
@@ -210,6 +211,7 @@ IndeterminateCheckbox.propTypes = {
210211
rest: PropTypes.func,
211212
getToggleAllRowsSelectedProps: PropTypes.func,
212213
row: PropTypes.object,
214+
label: PropTypes.string,
213215
};
214216

215217
const ROW_HEIGHT = 34;
@@ -405,6 +407,7 @@ export default function PgTable({ columns, data, isSelectRow, caveTable=true, sc
405407
}
406408
onChange={modifiedOnChange}
407409
checked={checked}
410+
label={gettext('Select All Rows')}
408411
/>
409412
</div>
410413
);},
@@ -414,6 +417,7 @@ export default function PgTable({ columns, data, isSelectRow, caveTable=true, sc
414417
<div className={classes.selectCell}>
415418
<IndeterminateCheckbox {...row.getToggleRowSelectedProps()}
416419
disabled={!_.isUndefined(row.original.canDrop) ? !(row.original.canDrop) : false}
420+
label={gettext('Select Row')}
417421
/>
418422
</div>
419423
),
@@ -465,7 +469,8 @@ export default function PgTable({ columns, data, isSelectRow, caveTable=true, sc
465469
{props.CustomHeader && (<Box className={classes.customHeader}> <props.CustomHeader /></Box>)}
466470
<Box marginLeft="auto">
467471
<InputText
468-
placeholder={'Search'}
472+
placeholder={gettext('Search')}
473+
controlProps={{title: gettext('Search')}}
469474
className={classes.searchInput}
470475
value={searchVal}
471476
onChange={(val) => {

web/pgadmin/templates/base.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<!DOCTYPE html>
2+
<html lang="{{ request.cookies.get('PGADMIN_LANGUAGE') or 'en' }}">
23
<head>
34
<meta charset="utf-8">
45
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

web/pgadmin/tools/schema_diff/static/js/components/InputComponent.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ export function InputComponent({ label, serverList, databaseList, schemaList, di
8383
<Grid item lg={4} md={4} sm={4} xs={4} className={classes.inputLabel}>
8484
<InputSelect
8585
options={serverList}
86+
optionsReloadBasis={serverList?.length}
8687
onChange={changeServer}
8788
value={selectedServer}
8889
controlProps={
@@ -97,6 +98,7 @@ export function InputComponent({ label, serverList, databaseList, schemaList, di
9798
<Grid item lg={3} md={3} sm={3} xs={3} className={classes.inputLabel}>
9899
<InputSelect
99100
options={databaseList}
101+
optionsReloadBasis={databaseList?.length}
100102
onChange={changeDatabase}
101103
value={selectedDatabase}
102104
controlProps={
@@ -112,6 +114,7 @@ export function InputComponent({ label, serverList, databaseList, schemaList, di
112114
<Grid item lg={3} md={3} sm={3} xs={3} className={classes.inputLabel}>
113115
<InputSelect
114116
options={schemaList}
117+
optionsReloadBasis={schemaList?.length}
115118
onChange={changeSchema}
116119
value={selectedSchema}
117120
controlProps={

web/pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
192192
height: '100%',
193193
width: '100%',
194194
resize: 'none'
195-
}}/>
195+
}} title={gettext('Scratch Pad')}/>
196196
}),
197197
]
198198
}

0 commit comments

Comments
 (0)