Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
41cc526
Link blue #2980B9 change to #0F72C2
cnathe Apr 30, 2026
5cbcf91
Change usages of #777 and $gray-light to $text-color-light
cnathe May 1, 2026
0420247
7.33.2-fb-accessibilityColors.0
cnathe May 1, 2026
ff9535f
Light gray text colors and icons to use $text-color-light and $gray-d…
cnathe May 1, 2026
abd4888
Replace usages of light blue (btn-info)
cnathe May 1, 2026
6308980
Link blue #2980B9 change to #0F72C2
cnathe May 1, 2026
c7cd30f
Change orange badge color $badge-color to #D43F3A
cnathe May 1, 2026
2bce7b9
Green icon and button #5CB85C change to #5AA54A ($brand-success)
cnathe May 1, 2026
3d5b335
Blue banner, status tag, and filter pill updates to colors
cnathe May 1, 2026
a05388d
Search panel button to use btn-success instead of custom colors
cnathe May 1, 2026
36e0cb4
Update to $brand- color variables
cnathe May 1, 2026
bbf3aae
Alert/error banner color update
cnathe May 1, 2026
18970a2
7.33.2-fb-accessibilityColors.1
cnathe May 1, 2026
7b716a0
jest test updates to match changes
cnathe May 1, 2026
e4b0ad0
Revert to including $brand- variables in theme/variables.scss
cnathe May 1, 2026
ff82527
7.33.2-fb-accessibilityColors.2
cnathe May 1, 2026
d640961
add link-color to theme/variables.scss
cnathe May 1, 2026
62f0a95
7.33.2-fb-accessibilityColors.3
cnathe May 1, 2026
c92e5e2
7.33.2-fb-accessibilityColors.4
cnathe May 1, 2026
c218be4
7.33.2-fb-accessibilityColors.4
cnathe May 1, 2026
6df59c3
updates per Keegan's review and Claude review
cnathe May 1, 2026
7d0c536
7.33.2-fb-accessibilityColors.5
cnathe May 1, 2026
ba44e38
Merge remote-tracking branch 'origin/develop' into fb_accessibilityCo…
cnathe May 4, 2026
c938909
7.33.4-fb-accessibilityColors.0
cnathe May 4, 2026
baab3c2
include scss variables previously defined in each app variables.scss …
cnathe May 4, 2026
9724a18
7.33.4-fb-accessibilityColors.1
cnathe May 4, 2026
5387908
AssayPropertiesInput.tsx JS error fix for parsing input id in toggleR…
cnathe May 5, 2026
d883655
7.33.4-fb-accessibilityColors.2
cnathe May 5, 2026
c70e4db
Merge remote-tracking branch 'origin/develop' into fb_accessibilityCo…
cnathe May 5, 2026
43d225c
npm run lint-branch-fix
cnathe May 5, 2026
a5e28ea
7.34.0
cnathe May 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/components/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/components/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@labkey/components",
"version": "7.33.4",
"version": "7.34.0",
"description": "Components, models, actions, and utility functions for LabKey applications and pages",
"sideEffects": false,
"files": [
Expand Down
4 changes: 4 additions & 0 deletions packages/components/releaseNotes/components.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# @labkey/components
Components, models, actions, and utility functions for LabKey applications and pages

### version 7.34.0
*Released*: 5 May 2026
- Accessibility improvements for app pages: Colors

### version 7.33.4
*Released*: 3 May 2026
- Consolidate Dataclass data update methods - use DIB for update only
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export interface NameExpressionGenIdProps {
containerPath?: string;
dataTypeLSID?: string;
dataTypeName: string; // sampletype or dataclass name
kindName: 'SampleSet' | 'DataClass';
kindName: 'DataClass' | 'SampleSet';
rowId: number;
}

Expand Down Expand Up @@ -126,15 +126,15 @@ export const NameExpressionGenIdBanner: FC<NameExpressionGenIdProps> = props =>
<Alert bsStyle="info" className="genid-alert">
Current genId: {currentGenId}
<button
className="pull-right alert-button edit-genid-btn btn btn-info"
className="pull-right alert-button edit-genid-btn btn btn-primary"
onClick={onEditClick}
type="button"
>
Edit genId
</button>
{canReset && currentGenId > 1 && (
<button
className="pull-right alert-button reset-genid-btn btn btn-info"
className="pull-right alert-button reset-genid-btn btn btn-primary"
onClick={onResetClick}
type="button"
>
Expand All @@ -144,8 +144,8 @@ export const NameExpressionGenIdBanner: FC<NameExpressionGenIdProps> = props =>
</Alert>
{showResetDialog && (
<Modal
confirmText="Reset"
confirmClass="btn-danger"
confirmText="Reset"
onCancel={onResetCancel}
onConfirm={onResetConfirm}
title={`Are you sure you want to reset genId for ${dataTypeName}?`}
Expand All @@ -159,8 +159,8 @@ export const NameExpressionGenIdBanner: FC<NameExpressionGenIdProps> = props =>
)}
{showEditDialog && (
<Modal
confirmText="Update"
confirmClass="btn-danger"
confirmText="Update"
onCancel={onEditCancel}
onConfirm={onEditConfirm}
title={`Are you sure you want to update genId for ${dataTypeName}?`}
Expand All @@ -177,12 +177,12 @@ export const NameExpressionGenIdBanner: FC<NameExpressionGenIdProps> = props =>
aria-label="GenId value"
className="form-control update-genId-input "
min={minNewGenId}
step={1}
name="newgenidval"
onChange={(event: any) => setNewGenId(event?.target?.value)}
placeholder="Enter new genId..."
step={1}
type="number"
value={newGenId ?? minNewGenId}
placeholder="Enter new genId..."
/>
</div>
<div className="col-xs-7" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ exports[`NameExpressionGenIdBanner with existing data 1`] = `
Current genId:
124
<button
class="pull-right alert-button edit-genid-btn btn btn-info"
class="pull-right alert-button edit-genid-btn btn btn-primary"
type="button"
>
Edit genId
Expand All @@ -27,7 +27,7 @@ exports[`NameExpressionGenIdBanner without existing data, genId = 1 (0) 1`] = `
Current genId:
1
<button
class="pull-right alert-button edit-genid-btn btn btn-info"
class="pull-right alert-button edit-genid-btn btn btn-primary"
type="button"
>
Edit genId
Expand All @@ -45,13 +45,13 @@ exports[`NameExpressionGenIdBanner without existing data, genId > 1 1`] = `
Current genId:
124
<button
class="pull-right alert-button edit-genid-btn btn btn-info"
class="pull-right alert-button edit-genid-btn btn btn-primary"
type="button"
>
Edit genId
</button>
<button
class="pull-right alert-button reset-genid-btn btn btn-info"
class="pull-right alert-button reset-genid-btn btn btn-primary"
type="button"
>
Reset genId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,13 @@ export const QCStatesInput: FC<InputProps> = memo(props => (
}
label="QC States"
>
<input aria-label="QC States" checked={props.model.qcEnabled} id={FORM_IDS.QC_ENABLED} onChange={props.onChange} type="checkbox" />
<input
aria-label="QC States"
checked={props.model.qcEnabled}
id={FORM_IDS.QC_ENABLED}
onChange={props.onChange}
type="checkbox"
/>
</AssayPropertiesInput>
));
QCStatesInput.displayName = 'QCStatesInput';
Expand Down Expand Up @@ -227,7 +233,13 @@ export const AssayStatusInput: FC<InputProps> = memo(props => (
hideAdvancedProperties={props.hideAdvancedProperties}
label="Active"
>
<input aria-label="Active" checked={props.model.isActive()} id={FORM_IDS.STATUS} onChange={props.onChange} type="checkbox" />
<input
aria-label="Active"
checked={props.model.isActive()}
id={FORM_IDS.STATUS}
onChange={props.onChange}
type="checkbox"
/>
</AssayPropertiesInput>
));
AssayStatusInput.displayName = 'AssayStatusInput';
Expand Down Expand Up @@ -585,7 +597,8 @@ export class TransformScriptsInput extends React.PureComponent<TransformScriptsI

toggleRunOnCheckboxes = (e: React.ChangeEvent<HTMLInputElement>, field: string): void => {
const { model } = this.props;
const index = parseInt(e.target.id.split(FORM_IDS.PROTOCOL_TRANSFORM_SCRIPTS).pop(), 10);
const fieldId = FORM_IDS.PROTOCOL_TRANSFORM_SCRIPTS + '-' + field;
const index = parseInt(e.target.id.split(fieldId).pop(), 10);
const curr = model.protocolTransformScripts.get(index);

this.props.onChange(
Expand Down Expand Up @@ -638,7 +651,7 @@ export class TransformScriptsInput extends React.PureComponent<TransformScriptsI
<input
aria-label="Run on Import"
checked={attachment.runOnImport}
id={FORM_IDS.PROTOCOL_TRANSFORM_SCRIPTS + '-onImport' + i}
id={FORM_IDS.PROTOCOL_TRANSFORM_SCRIPTS + '-runOnImport' + i}
onChange={this.onCheckRunOnImport}
type="checkbox"
/>
Expand All @@ -650,7 +663,7 @@ export class TransformScriptsInput extends React.PureComponent<TransformScriptsI
aria-label="Run on Edit"
checked={attachment.runOnEdit}
disabled={!model.editableResults}
id={FORM_IDS.PROTOCOL_TRANSFORM_SCRIPTS + '-onEdit' + i}
id={FORM_IDS.PROTOCOL_TRANSFORM_SCRIPTS + '-runOnEdit' + i}
onChange={this.onCheckRunOnEdit}
type="checkbox"
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import { UNIQUE_ID_TYPE } from '../PropDescType';
import { SampleTypeModel } from './models';

interface Props {
model: SampleTypeModel;
isFieldsPanel: boolean;
model: SampleTypeModel;
onAddField: (fieldConfig: Partial<IDomainField>) => void;
}

Expand Down Expand Up @@ -37,7 +37,7 @@ export const UniqueIdBanner: FC<Props> = memo(({ model, isFieldsPanel, onAddFiel
return (
<Alert bsStyle="info" className="uniqueid-alert">
{ADD_NEW_UNIQUE_ID_MSG}
<button className="pull-right alert-button btn btn-info" onClick={onClick} type="button">
<button className="pull-right alert-button btn btn-primary" onClick={onClick} type="button">
Yes, Add Unique ID Field
</button>
</Alert>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const _customStyles = {
} else if (state.data?.notFound) {
backgroundColor = WARN_BG_COLOR;
} else {
backgroundColor = '#F2F9FC';
backgroundColor = '#F1F9FC';
}

return { ...styles, backgroundColor };
Expand All @@ -67,7 +67,7 @@ const _customStyles = {
} else if (state.data?.notFound) {
color = WARN_COLOR;
} else {
color = '#08C';
color = '#0B73B7';
}

return { ...styles, color };
Expand All @@ -82,8 +82,8 @@ const _customStyles = {
style.color = WARN_COLOR;
style[':hover'] = { backgroundColor: WARN_COLOR, color: WARN_BG_COLOR };
} else {
style.color = '#08C';
style[':hover'] = { backgroundColor: '#2980B9', color: '#FFF' };
style.color = '#0B73B7';
style[':hover'] = { backgroundColor: '#2679AD', color: '#FFF' };
}

return { ...styles, ...style };
Expand All @@ -103,7 +103,7 @@ const _customTheme = theme => ({
danger: '#D9534F',
primary: '#2980B9',
primary75: '#009BF9',
primary50: '#F2F9FC',
primary50: '#F1F9FC',
primary25: 'rgba(41, 128, 185, 0.1)',
},
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,14 @@ export const SearchPanelImpl: FC<SearchPanelImplProps> = memo(props => {
const hasPages = totalHits > pageSize;

const helpLink = (
<HelpLink topic={SEARCH_HELP_TOPIC} className="search-form__help-link">
<HelpLink className="search-form__help-link" topic={SEARCH_HELP_TOPIC}>
<i className="fa fa-question-circle search-form__help-icon" />
Help with search
</HelpLink>
);

return (
<Section panelClassName="test-loc-search-panel" title={title} context={helpLink}>
<Section context={helpLink} panelClassName="test-loc-search-panel" title={title}>
<div className="search-form panel-body">
<form onSubmit={onSubmit}>
<span className="input-group">
Expand All @@ -117,7 +117,7 @@ export const SearchPanelImpl: FC<SearchPanelImplProps> = memo(props => {
</span>
</form>
<button
className="margin-left success submit-button btn btn-default"
className="margin-left success submit-button btn btn-success"
onClick={onSearchClick}
type="submit"
>
Expand All @@ -126,16 +126,16 @@ export const SearchPanelImpl: FC<SearchPanelImplProps> = memo(props => {
{hasPages && (
<div className="page-buttons">
<PaginationButtons
total={totalHits}
currentPage={currentPage}
nextPage={pageForward}
perPage={pageSize}
previousPage={pageBack}
nextPage={pageForward}
total={totalHits}
/>
</div>
)}
</div>
{searchTerm && <SearchResultsPanel model={model} emptyResultDisplay={emptyTextMessage} offset={offset} />}
{searchTerm && <SearchResultsPanel emptyResultDisplay={emptyTextMessage} model={model} offset={offset} />}
</Section>
);
});
Expand Down Expand Up @@ -228,6 +228,6 @@ export const SearchPanel: FC<SearchPanelProps> = memo(props => {
[search, searchTerm, pageSize, offset]
);

return <SearchPanelImpl {...props} search={search} model={model} onPageChange={onPage} offset={offset} />;
return <SearchPanelImpl {...props} model={model} offset={offset} onPageChange={onPage} search={search} />;
});
SearchPanel.displayName = 'SearchPanel';
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ describe('TemplateDownloadButton', () => {
expect(document.querySelectorAll('span.fa-download')).toHaveLength(1);
});

const button = document.querySelector('button.btn-info');
const button = document.querySelector('button.btn');
expect(button).toHaveTextContent('Template');
await userEvent.click(button);

Expand Down Expand Up @@ -105,7 +105,7 @@ describe('TemplateDownloadButton', () => {
expect(document.querySelectorAll('span.fa-download')).toHaveLength(1);
});

const button = document.querySelector('button.btn-info');
const button = document.querySelector('button.btn');
expect(button).toHaveTextContent('Template');
await userEvent.click(button);

Expand All @@ -123,9 +123,9 @@ describe('TemplateDownloadButton', () => {
test('editor, with custom properties', () => {
const { container } = renderWithAppContext(
<TemplateDownloadButton
className="custom-styling"
onDownloadDefault={jest.fn()}
text="Test Text"
className="custom-styling"
user={TEST_USER_EDITOR}
/>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,6 @@ const TemplateDownloadButtonImpl: FC<Props> = memo(props => {

return (
<DropdownButton
bsStyle="info"
buttonClassName={buttonClassName}
buttonTitle={TITLE}
className={className}
Expand All @@ -142,7 +141,7 @@ const TemplateDownloadButtonImpl: FC<Props> = memo(props => {
{customTemplates.map(template => {
if (template.url.endsWith('(unavailable)')) {
return (
<DisableableMenuItem key={template.label} disabled disabledMessage="File not found">
<DisableableMenuItem disabled disabledMessage="File not found" key={template.label}>
{template.label}
</DisableableMenuItem>
);
Expand All @@ -167,7 +166,7 @@ export const TemplateDownloadButton: FC<Props> = memo(props => {
if (!onDownloadDefault && !defaultTemplateUrl?.length) return null;

return (
<RequiresPermission perms={[PermissionTypes.Insert, PermissionTypes.Update]} permissionCheck="any" user={user}>
<RequiresPermission permissionCheck="any" perms={[PermissionTypes.Insert, PermissionTypes.Update]} user={user}>
<TemplateDownloadButtonImpl {...props} />
</RequiresPermission>
);
Expand Down
10 changes: 5 additions & 5 deletions packages/components/src/theme/announcements.scss
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,11 @@ $editor-padding-horizontal: 15px;
}
.clickable-text {
cursor: pointer;
color: #2980B9;
color: $link-color;

&:hover {
text-decoration: underline;
color: color.adjust(#2980B9, $lightness: -15%);
color: color.adjust($link-color, $lightness: -15%);
}
}
.discussions-container__title {
Expand All @@ -85,7 +85,7 @@ $editor-padding-horizontal: 15px;
margin-bottom: 15px;
}
.thread-block-header__date {
color: #777;
color: $text-color-light;
}
.thread-block-header__menu {
color: #555555;
Expand Down Expand Up @@ -122,10 +122,10 @@ $editor-padding-horizontal: 15px;
margin: 10px 0;
}
.thread-block__toggle-reply-msg {
color: #777;
color: $text-color-light;

.fa-check-circle {
color: #5CB85C;
color: $brand-success;
}
}
.thread-editor-preview {
Expand Down
Loading
Loading