Skip to content

Commit d19da2d

Browse files
committed
merge from develop
2 parents e526ab5 + 26ae988 commit d19da2d

6 files changed

Lines changed: 37 additions & 33 deletions

File tree

packages/components/package-lock.json

Lines changed: 2 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/components/package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@labkey/components",
3-
"version": "7.23.3-fb-parseComma.1",
3+
"version": "7.23.3",
44
"description": "Components, models, actions, and utility functions for LabKey applications and pages",
55
"sideEffects": false,
66
"files": [
@@ -75,8 +75,7 @@
7575
"react-select": "~5.10.2",
7676
"react-treebeard": "~3.2.4",
7777
"vis-data": "~8.0.3",
78-
"vis-network": "~10.0.2",
79-
"papaparse": "5.5.3"
78+
"vis-network": "~10.0.2"
8079
},
8180
"devDependencies": {
8281
"@labkey/build": "9.0.0",

packages/components/releaseNotes/components.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# @labkey/components
22
Components, models, actions, and utility functions for LabKey applications and pages
33

4+
### version 7.23.3
5+
*Released*: 19 March 2026
6+
- GitHub Issue 942: Add error for duplicate values for MVTC fields
7+
- GitHub Issue 961: Clicking the "Allow multiple selections" label doesn't toggle the checkbox
8+
- GitHub Issue 932: No help text for disabled Multi-Value checkbox in designer
9+
410
### version 7.23.2
511
*Released*: 18 March 2026
612
- Merge from release26.3-SNAPSHOT to develop

packages/components/src/internal/OverlayTrigger.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ interface Props extends PropsWithChildren {
126126
className?: string;
127127
delay?: number;
128128
id?: string;
129+
noShow?: boolean;
129130
overlay: ReactElement<OverlayComponent>; // See note in doc string below
130131
style?: CSSProperties;
131132
triggerType?: TriggerType;
@@ -155,6 +156,7 @@ export const OverlayTrigger: FC<Props> = ({
155156
overlay,
156157
triggerType = 'hover',
157158
style,
159+
noShow,
158160
}) => {
159161
const id_ = useMemo(() => id ?? generateId(), [id]);
160162
const { onMouseEnter, onMouseLeave, onClick, portalEl, show, targetRef } = useOverlayTriggerState(
@@ -167,6 +169,8 @@ export const OverlayTrigger: FC<Props> = ({
167169
const className_ = classNames('overlay-trigger', className);
168170
const clonedContent = cloneElement(overlay, { targetRef });
169171

172+
if (noShow) return children;
173+
170174
return (
171175
<div
172176
className={className_}

packages/components/src/internal/components/domainproperties/TextChoiceOptions.test.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,6 @@ describe('TextChoiceOptions', () => {
126126
const multiCheckbox = document.querySelector('input.domain-text-choice-multi') as HTMLInputElement;
127127
expect(multiCheckbox).toBeInTheDocument();
128128
expect(multiCheckbox).toBeDisabled();
129-
const labelSpan = screen.getByText('Allow multiple selections');
130-
expect(labelSpan.getAttribute('title')).toBe('Multiple values are currently used by at least one data row.');
131129
});
132130

133131
test('multi-choice checkbox not present', () => {

packages/components/src/internal/components/domainproperties/TextChoiceOptions.tsx

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import { getTextChoiceInUseValues, TextChoiceInUseValues } from './actions';
2727
import { createFormInputId } from './utils';
2828
import { isFieldFullyLocked } from './propertiesUtil';
2929
import { MULTI_CHOICE_TYPE, TEXT_CHOICE_TYPE } from './PropDescType';
30+
import { Popover } from '../../Popover';
31+
import { OverlayTrigger } from '../../OverlayTrigger';
3032

3133
const MIN_VALUES_FOR_SEARCH_COUNT = 2;
3234
const HELP_TIP_BODY = <p>The set of values to be used as drop-down options to restrict data entry into this field.</p>;
@@ -100,6 +102,7 @@ export const TextChoiceOptionsImpl: FC<ImplProps> = memo(props => {
100102
const [showAddValuesModal, setShowAddValuesModal] = useState<boolean>();
101103
const [search, setSearch] = useState<string>('');
102104
const fieldTypeId = createFormInputId(DOMAIN_FIELD_TYPE, domainIndex, index);
105+
const mvPopOverId = useMemo(() => createFormInputId('mv-in-use-popover', domainIndex, index), [domainIndex, index]);
103106
const isMultiChoiceField = field.dataType.name === MULTI_CHOICE_TYPE.name;
104107

105108
// keep a map from the updated values for the in-use field values to their original values
@@ -280,25 +283,26 @@ export const TextChoiceOptionsImpl: FC<ImplProps> = memo(props => {
280283
title={`Add Values (max ${maxValueCount})`}
281284
/>
282285
{allowMultiChoice && (
283-
<>
284-
<input
285-
checked={field.dataType.name === 'multiChoice'}
286-
className="domain-text-choice-multi"
287-
disabled={isFieldFullyLocked(field.lockType) || hasMultiValueInUse}
288-
id={createFormInputId(DOMAIN_FIELD_TEXTCHOICE_MULTI, domainIndex, index)}
289-
onChange={onAllowMultiChange}
290-
type="checkbox"
291-
/>
292-
<span
293-
title={
294-
hasMultiValueInUse
295-
? 'Multiple values are currently used by at least one data row.'
296-
: ''
297-
}
298-
>
299-
Allow multiple selections
300-
</span>
301-
</>
286+
<OverlayTrigger
287+
noShow={!hasMultiValueInUse}
288+
overlay={
289+
<Popover id={mvPopOverId} placement="top">
290+
Multiple values are currently used by at least one data row.
291+
</Popover>
292+
}
293+
>
294+
<label className="label-weight-normal" id={mvPopOverId}>
295+
<input
296+
checked={field.dataType.name === 'multiChoice'}
297+
className="domain-text-choice-multi"
298+
disabled={isFieldFullyLocked(field.lockType) || hasMultiValueInUse}
299+
id={createFormInputId(DOMAIN_FIELD_TEXTCHOICE_MULTI, domainIndex, index)}
300+
onChange={onAllowMultiChange}
301+
type="checkbox"
302+
/>
303+
<span>Allow multiple selections</span>
304+
</label>
305+
</OverlayTrigger>
302306
)}
303307
</div>
304308
<div className="col-xs-6 col-lg-4">

0 commit comments

Comments
 (0)