@codecademy/gamut 72.2.3-alpha.83b0a8.0 → 72.2.3-alpha.8ab930.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent-tools/skills/gamut-forms/SKILL.md +0 -16
- package/dist/ConnectedForm/ConnectedFormGroup.js +2 -2
- package/dist/Form/SelectDropdown/SelectDropdown.js +101 -49
- package/dist/Form/SelectDropdown/elements/constants.d.ts +8 -0
- package/dist/Form/SelectDropdown/elements/constants.js +9 -1
- package/dist/Form/SelectDropdown/elements/containers.d.ts +2 -6
- package/dist/Form/SelectDropdown/elements/containers.js +1 -17
- package/dist/Form/SelectDropdown/elements/controls.d.ts +15 -1
- package/dist/Form/SelectDropdown/elements/controls.js +91 -2
- package/dist/Form/SelectDropdown/elements/index.d.ts +1 -2
- package/dist/Form/SelectDropdown/elements/index.js +1 -2
- package/dist/Form/SelectDropdown/elements/options.d.ts +0 -1
- package/dist/Form/SelectDropdown/elements/options.js +2 -5
- package/dist/Form/SelectDropdown/{core/styles.js → styles.js} +12 -30
- package/dist/Form/SelectDropdown/types/component-props.d.ts +6 -54
- package/dist/Form/SelectDropdown/types/internal.d.ts +4 -4
- package/dist/Form/SelectDropdown/types/styles.d.ts +1 -5
- package/dist/Form/SelectDropdown/{core/utils.d.ts → utils.d.ts} +2 -12
- package/dist/Form/SelectDropdown/{core/utils.js → utils.js} +2 -24
- package/dist/Form/styles/index.d.ts +1 -1
- package/dist/Form/styles/index.js +1 -1
- package/dist/Menu/MenuItem.d.ts +2 -0
- package/dist/Menu/MenuItem.js +2 -0
- package/dist/Menu/elements.d.ts +1 -0
- package/dist/Menu/elements.js +7 -5
- package/dist/Tag/index.js +1 -1
- package/dist/Tip/ToolTip/index.d.ts +5 -0
- package/dist/Tip/shared/FloatingTip.js +15 -0
- package/dist/Tip/shared/InlineTip.js +23 -2
- package/dist/Tip/shared/elements.d.ts +1 -1
- package/dist/Tip/shared/elements.js +16 -7
- package/dist/Tip/shared/types.d.ts +2 -1
- package/package.json +6 -6
- package/agent-tools/skills/gamut-select-dropdown/SKILL.md +0 -236
- package/dist/Form/SelectDropdown/core/accessibility.d.ts +0 -3
- package/dist/Form/SelectDropdown/core/accessibility.js +0 -12
- package/dist/Form/SelectDropdown/core/constants.d.ts +0 -13
- package/dist/Form/SelectDropdown/core/constants.js +0 -14
- package/dist/Form/SelectDropdown/hooks/useSelectHandlers.d.ts +0 -22
- package/dist/Form/SelectDropdown/hooks/useSelectHandlers.js +0 -62
- package/dist/Form/SelectDropdown/hooks/useSelectOptions.d.ts +0 -14
- package/dist/Form/SelectDropdown/hooks/useSelectOptions.js +0 -39
- /package/dist/Form/SelectDropdown/{core/styles.d.ts → styles.d.ts} +0 -0
|
@@ -30,30 +30,39 @@ const inlineTipStates = states({
|
|
|
30
30
|
width: 'inherit'
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
|
+
const toolTipWrapperStates = states({
|
|
34
|
+
dismissed: {
|
|
35
|
+
'&:hover > [data-tooltip-body], &:has(:focus-visible) > [data-tooltip-body]': {
|
|
36
|
+
opacity: 0,
|
|
37
|
+
visibility: 'hidden',
|
|
38
|
+
transition: 'none'
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
33
42
|
export const FloatingTipTextWrapper = /*#__PURE__*/_styled(FlexBox, {
|
|
34
43
|
target: "eh9y8s85",
|
|
35
44
|
label: "FloatingTipTextWrapper"
|
|
36
45
|
})(css({
|
|
37
46
|
flexDirection: 'column',
|
|
38
47
|
overflowWrap: 'break-word'
|
|
39
|
-
}), floatingTipTextStates, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
48
|
+
}), floatingTipTextStates, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4Q3NDIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywgc3RhdGVzLCB0aW1pbmcgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgU3R5bGVQcm9wcyB9IGZyb20gJ0Bjb2RlY2FkZW15L3ZhcmlhbmNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHsgQm94LCBGbGV4Qm94IH0gZnJvbSAnLi4vLi4vQm94JztcbmltcG9ydCB7IFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL0J1dHRvbkJhc2UvQnV0dG9uQmFzZSc7XG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnLi4vLi4vUG9wb3Zlcic7XG5pbXBvcnQge1xuICBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHMsXG4gIG5hcnJvd1dpZHRoLFxuICB0b29sVGlwQm9keUNzcyxcbiAgdG9vbHRpcENlbnRlcmVkUGFkZGluZyxcbiAgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zLFxufSBmcm9tICcuL3N0eWxlcy9zdHlsZXMnO1xuXG5jb25zdCB0aXBXcmFwcGVyU3R5bGVzID0ge1xuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBmbG9hdGluZ1RpcFRleHRTdGF0ZXMgPSBzdGF0ZXMoe1xuICBpc0hvdmVyVHlwZTogeyBhbGlnbkl0ZW1zOiAnZmxleFN0YXJ0JyB9LFxuICAvKlxuICAgKiBTdWJ0cmFjdCAyeCBwYWRkaW5nIHRvIGFjY291bnQgZm9yIHRoZSBwYWRkaW5nIHdpdGhpblxuICAgKiB0aGUgdG9vbHRpcCBzaW5jZSB0aGlzIGlzIHRoZSBpbm5lciB0ZXh0IHdyYXBwZXJcbiAgICovXG4gIG5hcnJvdzogeyB3aWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxufSk7XG5cbmNvbnN0IGlubGluZVRpcFN0YXRlcyA9IHN0YXRlcyh7XG4gIGluaGVyaXREaW1zOiB7IGhlaWdodDogJ2luaGVyaXQnLCB3aWR0aDogJ2luaGVyaXQnIH0sXG59KTtcblxuY29uc3QgdG9vbFRpcFdyYXBwZXJTdGF0ZXMgPSBzdGF0ZXMoe1xuICBkaXNtaXNzZWQ6IHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgdHJhbnNpdGlvbjogJ25vbmUnLFxuICAgICAgfSxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRmxvYXRpbmdUaXBUZXh0V3JhcHBlciA9IHN0eWxlZChGbGV4Qm94KTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgZmxvYXRpbmdUaXBUZXh0U3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgfSksXG4gIGZsb2F0aW5nVGlwVGV4dFN0YXRlc1xuKTtcblxuZXhwb3J0IGNvbnN0IFRvb2xUaXBXcmFwcGVyID0gc3R5bGVkLmRpdjxcbiAgU3R5bGVQcm9wczx0eXBlb2YgaW5saW5lVGlwU3RhdGVzPiAmIFN0eWxlUHJvcHM8dHlwZW9mIHRvb2xUaXBXcmFwcGVyU3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke3RpbWluZy5mYXN0fSAke3RpbWluZy5iYXNlfWAsXG4gICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgIH0sXG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSksXG4gIGlubGluZVRpcFN0YXRlcyxcbiAgdG9vbFRpcFdyYXBwZXJTdGF0ZXNcbik7XG5cbmV4cG9ydCBjb25zdCBJbmZvVGlwV3JhcHBlciA9IHN0eWxlZC5kaXYoXG4gIGNzcyh7XG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSlcbik7XG5cbmVudW0gVGFyZ2V0U2VsZWN0b3JzIHtcbiAgT1VUTElORSA9ICcmOmJlZm9yZScsXG4gIE9VVExJTkVfRk9DVVNfVklTSUJMRSA9ICcmOmZvY3VzLXZpc2libGU6YmVmb3JlJyxcbn1cblxuZXhwb3J0IGNvbnN0IFRhcmdldENvbnRhaW5lciA9IHN0eWxlZChCb3gpKFxuICBjc3Moe1xuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIFtTZWxlY3RvcnMuRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICB9LFxuICAgIFtUYXJnZXRTZWxlY3RvcnMuT1VUTElORV06IHtcbiAgICAgIGNvbnRlbnQ6IFwiJydcIixcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgaW5zZXQ6IC0yLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbWQnLFxuICAgICAgYm9yZGVyOiAyLFxuICAgICAgYm9yZGVyQ29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICB6SW5kZXg6IDAsXG4gICAgfSxcbiAgICBbVGFyZ2V0U2VsZWN0b3JzLk9VVExJTkVfRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IGlubGluZVRpcEJvZHlTdGF0ZXMgPSBzdGF0ZXMoe1xuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgVGlwQm9keSA9IHN0eWxlZChCb3gpPFxuICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHM+ICZcbiAgICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUaXBCb2R5U3RhdGVzPlxuPihjc3MoeyAuLi50b29sVGlwQm9keUNzcyB9KSwgaW5saW5lVG9vbFRpcEJvZHlBbGlnbm1lbnRzLCBpbmxpbmVUaXBCb2R5U3RhdGVzKTtcblxuZXhwb3J0IGNvbnN0IEZsb2F0aW5nVGlwQm9keSA9IHN0eWxlZChQb3BvdmVyKTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zPlxuPih0b29sVGlwV2lkdGhSZXN0cmljdGlvbnMpO1xuIl19 */");
|
|
40
49
|
export const ToolTipWrapper = /*#__PURE__*/_styled("div", {
|
|
41
50
|
target: "eh9y8s84",
|
|
42
51
|
label: "ToolTipWrapper"
|
|
43
52
|
})(css({
|
|
44
|
-
'&:hover >
|
|
53
|
+
'&:hover > [data-tooltip-body], &:has(:focus-visible) > [data-tooltip-body]': {
|
|
45
54
|
opacity: 1,
|
|
46
55
|
transition: `opacity ${timing.fast} ${timing.base}`,
|
|
47
56
|
visibility: 'visible'
|
|
48
57
|
},
|
|
49
58
|
...tipWrapperStyles
|
|
50
|
-
}), inlineTipStates, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
59
|
+
}), inlineTipStates, toolTipWrapperStates, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3RDhCIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywgc3RhdGVzLCB0aW1pbmcgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgU3R5bGVQcm9wcyB9IGZyb20gJ0Bjb2RlY2FkZW15L3ZhcmlhbmNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHsgQm94LCBGbGV4Qm94IH0gZnJvbSAnLi4vLi4vQm94JztcbmltcG9ydCB7IFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL0J1dHRvbkJhc2UvQnV0dG9uQmFzZSc7XG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnLi4vLi4vUG9wb3Zlcic7XG5pbXBvcnQge1xuICBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHMsXG4gIG5hcnJvd1dpZHRoLFxuICB0b29sVGlwQm9keUNzcyxcbiAgdG9vbHRpcENlbnRlcmVkUGFkZGluZyxcbiAgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zLFxufSBmcm9tICcuL3N0eWxlcy9zdHlsZXMnO1xuXG5jb25zdCB0aXBXcmFwcGVyU3R5bGVzID0ge1xuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBmbG9hdGluZ1RpcFRleHRTdGF0ZXMgPSBzdGF0ZXMoe1xuICBpc0hvdmVyVHlwZTogeyBhbGlnbkl0ZW1zOiAnZmxleFN0YXJ0JyB9LFxuICAvKlxuICAgKiBTdWJ0cmFjdCAyeCBwYWRkaW5nIHRvIGFjY291bnQgZm9yIHRoZSBwYWRkaW5nIHdpdGhpblxuICAgKiB0aGUgdG9vbHRpcCBzaW5jZSB0aGlzIGlzIHRoZSBpbm5lciB0ZXh0IHdyYXBwZXJcbiAgICovXG4gIG5hcnJvdzogeyB3aWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxufSk7XG5cbmNvbnN0IGlubGluZVRpcFN0YXRlcyA9IHN0YXRlcyh7XG4gIGluaGVyaXREaW1zOiB7IGhlaWdodDogJ2luaGVyaXQnLCB3aWR0aDogJ2luaGVyaXQnIH0sXG59KTtcblxuY29uc3QgdG9vbFRpcFdyYXBwZXJTdGF0ZXMgPSBzdGF0ZXMoe1xuICBkaXNtaXNzZWQ6IHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgdHJhbnNpdGlvbjogJ25vbmUnLFxuICAgICAgfSxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRmxvYXRpbmdUaXBUZXh0V3JhcHBlciA9IHN0eWxlZChGbGV4Qm94KTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgZmxvYXRpbmdUaXBUZXh0U3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgfSksXG4gIGZsb2F0aW5nVGlwVGV4dFN0YXRlc1xuKTtcblxuZXhwb3J0IGNvbnN0IFRvb2xUaXBXcmFwcGVyID0gc3R5bGVkLmRpdjxcbiAgU3R5bGVQcm9wczx0eXBlb2YgaW5saW5lVGlwU3RhdGVzPiAmIFN0eWxlUHJvcHM8dHlwZW9mIHRvb2xUaXBXcmFwcGVyU3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke3RpbWluZy5mYXN0fSAke3RpbWluZy5iYXNlfWAsXG4gICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgIH0sXG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSksXG4gIGlubGluZVRpcFN0YXRlcyxcbiAgdG9vbFRpcFdyYXBwZXJTdGF0ZXNcbik7XG5cbmV4cG9ydCBjb25zdCBJbmZvVGlwV3JhcHBlciA9IHN0eWxlZC5kaXYoXG4gIGNzcyh7XG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSlcbik7XG5cbmVudW0gVGFyZ2V0U2VsZWN0b3JzIHtcbiAgT1VUTElORSA9ICcmOmJlZm9yZScsXG4gIE9VVExJTkVfRk9DVVNfVklTSUJMRSA9ICcmOmZvY3VzLXZpc2libGU6YmVmb3JlJyxcbn1cblxuZXhwb3J0IGNvbnN0IFRhcmdldENvbnRhaW5lciA9IHN0eWxlZChCb3gpKFxuICBjc3Moe1xuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIFtTZWxlY3RvcnMuRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICB9LFxuICAgIFtUYXJnZXRTZWxlY3RvcnMuT1VUTElORV06IHtcbiAgICAgIGNvbnRlbnQ6IFwiJydcIixcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgaW5zZXQ6IC0yLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbWQnLFxuICAgICAgYm9yZGVyOiAyLFxuICAgICAgYm9yZGVyQ29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICB6SW5kZXg6IDAsXG4gICAgfSxcbiAgICBbVGFyZ2V0U2VsZWN0b3JzLk9VVExJTkVfRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IGlubGluZVRpcEJvZHlTdGF0ZXMgPSBzdGF0ZXMoe1xuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgVGlwQm9keSA9IHN0eWxlZChCb3gpPFxuICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHM+ICZcbiAgICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUaXBCb2R5U3RhdGVzPlxuPihjc3MoeyAuLi50b29sVGlwQm9keUNzcyB9KSwgaW5saW5lVG9vbFRpcEJvZHlBbGlnbm1lbnRzLCBpbmxpbmVUaXBCb2R5U3RhdGVzKTtcblxuZXhwb3J0IGNvbnN0IEZsb2F0aW5nVGlwQm9keSA9IHN0eWxlZChQb3BvdmVyKTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zPlxuPih0b29sVGlwV2lkdGhSZXN0cmljdGlvbnMpO1xuIl19 */");
|
|
51
60
|
export const InfoTipWrapper = /*#__PURE__*/_styled("div", {
|
|
52
61
|
target: "eh9y8s83",
|
|
53
62
|
label: "InfoTipWrapper"
|
|
54
63
|
})(css({
|
|
55
64
|
...tipWrapperStyles
|
|
56
|
-
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
65
|
+
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3RThCIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywgc3RhdGVzLCB0aW1pbmcgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgU3R5bGVQcm9wcyB9IGZyb20gJ0Bjb2RlY2FkZW15L3ZhcmlhbmNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHsgQm94LCBGbGV4Qm94IH0gZnJvbSAnLi4vLi4vQm94JztcbmltcG9ydCB7IFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL0J1dHRvbkJhc2UvQnV0dG9uQmFzZSc7XG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnLi4vLi4vUG9wb3Zlcic7XG5pbXBvcnQge1xuICBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHMsXG4gIG5hcnJvd1dpZHRoLFxuICB0b29sVGlwQm9keUNzcyxcbiAgdG9vbHRpcENlbnRlcmVkUGFkZGluZyxcbiAgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zLFxufSBmcm9tICcuL3N0eWxlcy9zdHlsZXMnO1xuXG5jb25zdCB0aXBXcmFwcGVyU3R5bGVzID0ge1xuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBmbG9hdGluZ1RpcFRleHRTdGF0ZXMgPSBzdGF0ZXMoe1xuICBpc0hvdmVyVHlwZTogeyBhbGlnbkl0ZW1zOiAnZmxleFN0YXJ0JyB9LFxuICAvKlxuICAgKiBTdWJ0cmFjdCAyeCBwYWRkaW5nIHRvIGFjY291bnQgZm9yIHRoZSBwYWRkaW5nIHdpdGhpblxuICAgKiB0aGUgdG9vbHRpcCBzaW5jZSB0aGlzIGlzIHRoZSBpbm5lciB0ZXh0IHdyYXBwZXJcbiAgICovXG4gIG5hcnJvdzogeyB3aWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxufSk7XG5cbmNvbnN0IGlubGluZVRpcFN0YXRlcyA9IHN0YXRlcyh7XG4gIGluaGVyaXREaW1zOiB7IGhlaWdodDogJ2luaGVyaXQnLCB3aWR0aDogJ2luaGVyaXQnIH0sXG59KTtcblxuY29uc3QgdG9vbFRpcFdyYXBwZXJTdGF0ZXMgPSBzdGF0ZXMoe1xuICBkaXNtaXNzZWQ6IHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgdHJhbnNpdGlvbjogJ25vbmUnLFxuICAgICAgfSxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRmxvYXRpbmdUaXBUZXh0V3JhcHBlciA9IHN0eWxlZChGbGV4Qm94KTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgZmxvYXRpbmdUaXBUZXh0U3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgfSksXG4gIGZsb2F0aW5nVGlwVGV4dFN0YXRlc1xuKTtcblxuZXhwb3J0IGNvbnN0IFRvb2xUaXBXcmFwcGVyID0gc3R5bGVkLmRpdjxcbiAgU3R5bGVQcm9wczx0eXBlb2YgaW5saW5lVGlwU3RhdGVzPiAmIFN0eWxlUHJvcHM8dHlwZW9mIHRvb2xUaXBXcmFwcGVyU3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke3RpbWluZy5mYXN0fSAke3RpbWluZy5iYXNlfWAsXG4gICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgIH0sXG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSksXG4gIGlubGluZVRpcFN0YXRlcyxcbiAgdG9vbFRpcFdyYXBwZXJTdGF0ZXNcbik7XG5cbmV4cG9ydCBjb25zdCBJbmZvVGlwV3JhcHBlciA9IHN0eWxlZC5kaXYoXG4gIGNzcyh7XG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSlcbik7XG5cbmVudW0gVGFyZ2V0U2VsZWN0b3JzIHtcbiAgT1VUTElORSA9ICcmOmJlZm9yZScsXG4gIE9VVExJTkVfRk9DVVNfVklTSUJMRSA9ICcmOmZvY3VzLXZpc2libGU6YmVmb3JlJyxcbn1cblxuZXhwb3J0IGNvbnN0IFRhcmdldENvbnRhaW5lciA9IHN0eWxlZChCb3gpKFxuICBjc3Moe1xuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIFtTZWxlY3RvcnMuRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICB9LFxuICAgIFtUYXJnZXRTZWxlY3RvcnMuT1VUTElORV06IHtcbiAgICAgIGNvbnRlbnQ6IFwiJydcIixcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgaW5zZXQ6IC0yLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbWQnLFxuICAgICAgYm9yZGVyOiAyLFxuICAgICAgYm9yZGVyQ29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICB6SW5kZXg6IDAsXG4gICAgfSxcbiAgICBbVGFyZ2V0U2VsZWN0b3JzLk9VVExJTkVfRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IGlubGluZVRpcEJvZHlTdGF0ZXMgPSBzdGF0ZXMoe1xuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgVGlwQm9keSA9IHN0eWxlZChCb3gpPFxuICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHM+ICZcbiAgICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUaXBCb2R5U3RhdGVzPlxuPihjc3MoeyAuLi50b29sVGlwQm9keUNzcyB9KSwgaW5saW5lVG9vbFRpcEJvZHlBbGlnbm1lbnRzLCBpbmxpbmVUaXBCb2R5U3RhdGVzKTtcblxuZXhwb3J0IGNvbnN0IEZsb2F0aW5nVGlwQm9keSA9IHN0eWxlZChQb3BvdmVyKTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zPlxuPih0b29sVGlwV2lkdGhSZXN0cmljdGlvbnMpO1xuIl19 */");
|
|
57
66
|
var TargetSelectors = /*#__PURE__*/function (TargetSelectors) {
|
|
58
67
|
TargetSelectors["OUTLINE"] = "&:before";
|
|
59
68
|
TargetSelectors["OUTLINE_FOCUS_VISIBLE"] = "&:focus-visible:before";
|
|
@@ -83,7 +92,7 @@ export const TargetContainer = /*#__PURE__*/_styled(Box, {
|
|
|
83
92
|
[TargetSelectors.OUTLINE_FOCUS_VISIBLE]: {
|
|
84
93
|
opacity: 1
|
|
85
94
|
}
|
|
86
|
-
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
95
|
+
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtRitCIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywgc3RhdGVzLCB0aW1pbmcgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgU3R5bGVQcm9wcyB9IGZyb20gJ0Bjb2RlY2FkZW15L3ZhcmlhbmNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHsgQm94LCBGbGV4Qm94IH0gZnJvbSAnLi4vLi4vQm94JztcbmltcG9ydCB7IFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL0J1dHRvbkJhc2UvQnV0dG9uQmFzZSc7XG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnLi4vLi4vUG9wb3Zlcic7XG5pbXBvcnQge1xuICBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHMsXG4gIG5hcnJvd1dpZHRoLFxuICB0b29sVGlwQm9keUNzcyxcbiAgdG9vbHRpcENlbnRlcmVkUGFkZGluZyxcbiAgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zLFxufSBmcm9tICcuL3N0eWxlcy9zdHlsZXMnO1xuXG5jb25zdCB0aXBXcmFwcGVyU3R5bGVzID0ge1xuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBmbG9hdGluZ1RpcFRleHRTdGF0ZXMgPSBzdGF0ZXMoe1xuICBpc0hvdmVyVHlwZTogeyBhbGlnbkl0ZW1zOiAnZmxleFN0YXJ0JyB9LFxuICAvKlxuICAgKiBTdWJ0cmFjdCAyeCBwYWRkaW5nIHRvIGFjY291bnQgZm9yIHRoZSBwYWRkaW5nIHdpdGhpblxuICAgKiB0aGUgdG9vbHRpcCBzaW5jZSB0aGlzIGlzIHRoZSBpbm5lciB0ZXh0IHdyYXBwZXJcbiAgICovXG4gIG5hcnJvdzogeyB3aWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxufSk7XG5cbmNvbnN0IGlubGluZVRpcFN0YXRlcyA9IHN0YXRlcyh7XG4gIGluaGVyaXREaW1zOiB7IGhlaWdodDogJ2luaGVyaXQnLCB3aWR0aDogJ2luaGVyaXQnIH0sXG59KTtcblxuY29uc3QgdG9vbFRpcFdyYXBwZXJTdGF0ZXMgPSBzdGF0ZXMoe1xuICBkaXNtaXNzZWQ6IHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgdHJhbnNpdGlvbjogJ25vbmUnLFxuICAgICAgfSxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRmxvYXRpbmdUaXBUZXh0V3JhcHBlciA9IHN0eWxlZChGbGV4Qm94KTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgZmxvYXRpbmdUaXBUZXh0U3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgfSksXG4gIGZsb2F0aW5nVGlwVGV4dFN0YXRlc1xuKTtcblxuZXhwb3J0IGNvbnN0IFRvb2xUaXBXcmFwcGVyID0gc3R5bGVkLmRpdjxcbiAgU3R5bGVQcm9wczx0eXBlb2YgaW5saW5lVGlwU3RhdGVzPiAmIFN0eWxlUHJvcHM8dHlwZW9mIHRvb2xUaXBXcmFwcGVyU3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke3RpbWluZy5mYXN0fSAke3RpbWluZy5iYXNlfWAsXG4gICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgIH0sXG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSksXG4gIGlubGluZVRpcFN0YXRlcyxcbiAgdG9vbFRpcFdyYXBwZXJTdGF0ZXNcbik7XG5cbmV4cG9ydCBjb25zdCBJbmZvVGlwV3JhcHBlciA9IHN0eWxlZC5kaXYoXG4gIGNzcyh7XG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSlcbik7XG5cbmVudW0gVGFyZ2V0U2VsZWN0b3JzIHtcbiAgT1VUTElORSA9ICcmOmJlZm9yZScsXG4gIE9VVExJTkVfRk9DVVNfVklTSUJMRSA9ICcmOmZvY3VzLXZpc2libGU6YmVmb3JlJyxcbn1cblxuZXhwb3J0IGNvbnN0IFRhcmdldENvbnRhaW5lciA9IHN0eWxlZChCb3gpKFxuICBjc3Moe1xuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIFtTZWxlY3RvcnMuRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICB9LFxuICAgIFtUYXJnZXRTZWxlY3RvcnMuT1VUTElORV06IHtcbiAgICAgIGNvbnRlbnQ6IFwiJydcIixcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgaW5zZXQ6IC0yLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbWQnLFxuICAgICAgYm9yZGVyOiAyLFxuICAgICAgYm9yZGVyQ29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICB6SW5kZXg6IDAsXG4gICAgfSxcbiAgICBbVGFyZ2V0U2VsZWN0b3JzLk9VVExJTkVfRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IGlubGluZVRpcEJvZHlTdGF0ZXMgPSBzdGF0ZXMoe1xuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgVGlwQm9keSA9IHN0eWxlZChCb3gpPFxuICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHM+ICZcbiAgICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUaXBCb2R5U3RhdGVzPlxuPihjc3MoeyAuLi50b29sVGlwQm9keUNzcyB9KSwgaW5saW5lVG9vbFRpcEJvZHlBbGlnbm1lbnRzLCBpbmxpbmVUaXBCb2R5U3RhdGVzKTtcblxuZXhwb3J0IGNvbnN0IEZsb2F0aW5nVGlwQm9keSA9IHN0eWxlZChQb3BvdmVyKTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zPlxuPih0b29sVGlwV2lkdGhSZXN0cmljdGlvbnMpO1xuIl19 */");
|
|
87
96
|
const inlineTipBodyStates = states({
|
|
88
97
|
horizNarrow: {
|
|
89
98
|
maxWidth: narrowWidth
|
|
@@ -94,8 +103,8 @@ export const TipBody = /*#__PURE__*/_styled(Box, {
|
|
|
94
103
|
label: "TipBody"
|
|
95
104
|
})(css({
|
|
96
105
|
...toolTipBodyCss
|
|
97
|
-
}), inlineToolTipBodyAlignments, inlineTipBodyStates, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
106
|
+
}), inlineToolTipBodyAlignments, inlineTipBodyStates, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnSHVCIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywgc3RhdGVzLCB0aW1pbmcgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgU3R5bGVQcm9wcyB9IGZyb20gJ0Bjb2RlY2FkZW15L3ZhcmlhbmNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHsgQm94LCBGbGV4Qm94IH0gZnJvbSAnLi4vLi4vQm94JztcbmltcG9ydCB7IFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL0J1dHRvbkJhc2UvQnV0dG9uQmFzZSc7XG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnLi4vLi4vUG9wb3Zlcic7XG5pbXBvcnQge1xuICBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHMsXG4gIG5hcnJvd1dpZHRoLFxuICB0b29sVGlwQm9keUNzcyxcbiAgdG9vbHRpcENlbnRlcmVkUGFkZGluZyxcbiAgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zLFxufSBmcm9tICcuL3N0eWxlcy9zdHlsZXMnO1xuXG5jb25zdCB0aXBXcmFwcGVyU3R5bGVzID0ge1xuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBmbG9hdGluZ1RpcFRleHRTdGF0ZXMgPSBzdGF0ZXMoe1xuICBpc0hvdmVyVHlwZTogeyBhbGlnbkl0ZW1zOiAnZmxleFN0YXJ0JyB9LFxuICAvKlxuICAgKiBTdWJ0cmFjdCAyeCBwYWRkaW5nIHRvIGFjY291bnQgZm9yIHRoZSBwYWRkaW5nIHdpdGhpblxuICAgKiB0aGUgdG9vbHRpcCBzaW5jZSB0aGlzIGlzIHRoZSBpbm5lciB0ZXh0IHdyYXBwZXJcbiAgICovXG4gIG5hcnJvdzogeyB3aWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxufSk7XG5cbmNvbnN0IGlubGluZVRpcFN0YXRlcyA9IHN0YXRlcyh7XG4gIGluaGVyaXREaW1zOiB7IGhlaWdodDogJ2luaGVyaXQnLCB3aWR0aDogJ2luaGVyaXQnIH0sXG59KTtcblxuY29uc3QgdG9vbFRpcFdyYXBwZXJTdGF0ZXMgPSBzdGF0ZXMoe1xuICBkaXNtaXNzZWQ6IHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgdHJhbnNpdGlvbjogJ25vbmUnLFxuICAgICAgfSxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRmxvYXRpbmdUaXBUZXh0V3JhcHBlciA9IHN0eWxlZChGbGV4Qm94KTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgZmxvYXRpbmdUaXBUZXh0U3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgfSksXG4gIGZsb2F0aW5nVGlwVGV4dFN0YXRlc1xuKTtcblxuZXhwb3J0IGNvbnN0IFRvb2xUaXBXcmFwcGVyID0gc3R5bGVkLmRpdjxcbiAgU3R5bGVQcm9wczx0eXBlb2YgaW5saW5lVGlwU3RhdGVzPiAmIFN0eWxlUHJvcHM8dHlwZW9mIHRvb2xUaXBXcmFwcGVyU3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke3RpbWluZy5mYXN0fSAke3RpbWluZy5iYXNlfWAsXG4gICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgIH0sXG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSksXG4gIGlubGluZVRpcFN0YXRlcyxcbiAgdG9vbFRpcFdyYXBwZXJTdGF0ZXNcbik7XG5cbmV4cG9ydCBjb25zdCBJbmZvVGlwV3JhcHBlciA9IHN0eWxlZC5kaXYoXG4gIGNzcyh7XG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSlcbik7XG5cbmVudW0gVGFyZ2V0U2VsZWN0b3JzIHtcbiAgT1VUTElORSA9ICcmOmJlZm9yZScsXG4gIE9VVExJTkVfRk9DVVNfVklTSUJMRSA9ICcmOmZvY3VzLXZpc2libGU6YmVmb3JlJyxcbn1cblxuZXhwb3J0IGNvbnN0IFRhcmdldENvbnRhaW5lciA9IHN0eWxlZChCb3gpKFxuICBjc3Moe1xuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIFtTZWxlY3RvcnMuRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICB9LFxuICAgIFtUYXJnZXRTZWxlY3RvcnMuT1VUTElORV06IHtcbiAgICAgIGNvbnRlbnQ6IFwiJydcIixcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgaW5zZXQ6IC0yLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbWQnLFxuICAgICAgYm9yZGVyOiAyLFxuICAgICAgYm9yZGVyQ29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICB6SW5kZXg6IDAsXG4gICAgfSxcbiAgICBbVGFyZ2V0U2VsZWN0b3JzLk9VVExJTkVfRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IGlubGluZVRpcEJvZHlTdGF0ZXMgPSBzdGF0ZXMoe1xuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgVGlwQm9keSA9IHN0eWxlZChCb3gpPFxuICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHM+ICZcbiAgICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUaXBCb2R5U3RhdGVzPlxuPihjc3MoeyAuLi50b29sVGlwQm9keUNzcyB9KSwgaW5saW5lVG9vbFRpcEJvZHlBbGlnbm1lbnRzLCBpbmxpbmVUaXBCb2R5U3RhdGVzKTtcblxuZXhwb3J0IGNvbnN0IEZsb2F0aW5nVGlwQm9keSA9IHN0eWxlZChQb3BvdmVyKTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zPlxuPih0b29sVGlwV2lkdGhSZXN0cmljdGlvbnMpO1xuIl19 */");
|
|
98
107
|
export const FloatingTipBody = /*#__PURE__*/_styled(Popover, {
|
|
99
108
|
target: "eh9y8s80",
|
|
100
109
|
label: "FloatingTipBody"
|
|
101
|
-
})(toolTipWidthRestrictions, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
110
|
+
})(toolTipWidthRestrictions, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxSCtCIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9UaXAvc2hhcmVkL2VsZW1lbnRzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywgc3RhdGVzLCB0aW1pbmcgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgU3R5bGVQcm9wcyB9IGZyb20gJ0Bjb2RlY2FkZW15L3ZhcmlhbmNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHsgQm94LCBGbGV4Qm94IH0gZnJvbSAnLi4vLi4vQm94JztcbmltcG9ydCB7IFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL0J1dHRvbkJhc2UvQnV0dG9uQmFzZSc7XG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnLi4vLi4vUG9wb3Zlcic7XG5pbXBvcnQge1xuICBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHMsXG4gIG5hcnJvd1dpZHRoLFxuICB0b29sVGlwQm9keUNzcyxcbiAgdG9vbHRpcENlbnRlcmVkUGFkZGluZyxcbiAgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zLFxufSBmcm9tICcuL3N0eWxlcy9zdHlsZXMnO1xuXG5jb25zdCB0aXBXcmFwcGVyU3R5bGVzID0ge1xuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBmbG9hdGluZ1RpcFRleHRTdGF0ZXMgPSBzdGF0ZXMoe1xuICBpc0hvdmVyVHlwZTogeyBhbGlnbkl0ZW1zOiAnZmxleFN0YXJ0JyB9LFxuICAvKlxuICAgKiBTdWJ0cmFjdCAyeCBwYWRkaW5nIHRvIGFjY291bnQgZm9yIHRoZSBwYWRkaW5nIHdpdGhpblxuICAgKiB0aGUgdG9vbHRpcCBzaW5jZSB0aGlzIGlzIHRoZSBpbm5lciB0ZXh0IHdyYXBwZXJcbiAgICovXG4gIG5hcnJvdzogeyB3aWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggLSB0b29sdGlwQ2VudGVyZWRQYWRkaW5nICogMiB9LFxufSk7XG5cbmNvbnN0IGlubGluZVRpcFN0YXRlcyA9IHN0YXRlcyh7XG4gIGluaGVyaXREaW1zOiB7IGhlaWdodDogJ2luaGVyaXQnLCB3aWR0aDogJ2luaGVyaXQnIH0sXG59KTtcblxuY29uc3QgdG9vbFRpcFdyYXBwZXJTdGF0ZXMgPSBzdGF0ZXMoe1xuICBkaXNtaXNzZWQ6IHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgdHJhbnNpdGlvbjogJ25vbmUnLFxuICAgICAgfSxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRmxvYXRpbmdUaXBUZXh0V3JhcHBlciA9IHN0eWxlZChGbGV4Qm94KTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgZmxvYXRpbmdUaXBUZXh0U3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgfSksXG4gIGZsb2F0aW5nVGlwVGV4dFN0YXRlc1xuKTtcblxuZXhwb3J0IGNvbnN0IFRvb2xUaXBXcmFwcGVyID0gc3R5bGVkLmRpdjxcbiAgU3R5bGVQcm9wczx0eXBlb2YgaW5saW5lVGlwU3RhdGVzPiAmIFN0eWxlUHJvcHM8dHlwZW9mIHRvb2xUaXBXcmFwcGVyU3RhdGVzPlxuPihcbiAgY3NzKHtcbiAgICAnJjpob3ZlciA+IFtkYXRhLXRvb2x0aXAtYm9keV0sICY6aGFzKDpmb2N1cy12aXNpYmxlKSA+IFtkYXRhLXRvb2x0aXAtYm9keV0nOlxuICAgICAge1xuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke3RpbWluZy5mYXN0fSAke3RpbWluZy5iYXNlfWAsXG4gICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgIH0sXG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSksXG4gIGlubGluZVRpcFN0YXRlcyxcbiAgdG9vbFRpcFdyYXBwZXJTdGF0ZXNcbik7XG5cbmV4cG9ydCBjb25zdCBJbmZvVGlwV3JhcHBlciA9IHN0eWxlZC5kaXYoXG4gIGNzcyh7XG4gICAgLi4udGlwV3JhcHBlclN0eWxlcyxcbiAgfSlcbik7XG5cbmVudW0gVGFyZ2V0U2VsZWN0b3JzIHtcbiAgT1VUTElORSA9ICcmOmJlZm9yZScsXG4gIE9VVExJTkVfRk9DVVNfVklTSUJMRSA9ICcmOmZvY3VzLXZpc2libGU6YmVmb3JlJyxcbn1cblxuZXhwb3J0IGNvbnN0IFRhcmdldENvbnRhaW5lciA9IHN0eWxlZChCb3gpKFxuICBjc3Moe1xuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIFtTZWxlY3RvcnMuRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICB9LFxuICAgIFtUYXJnZXRTZWxlY3RvcnMuT1VUTElORV06IHtcbiAgICAgIGNvbnRlbnQ6IFwiJydcIixcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgaW5zZXQ6IC0yLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbWQnLFxuICAgICAgYm9yZGVyOiAyLFxuICAgICAgYm9yZGVyQ29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICB6SW5kZXg6IDAsXG4gICAgfSxcbiAgICBbVGFyZ2V0U2VsZWN0b3JzLk9VVExJTkVfRk9DVVNfVklTSUJMRV06IHtcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IGlubGluZVRpcEJvZHlTdGF0ZXMgPSBzdGF0ZXMoe1xuICBob3Jpek5hcnJvdzogeyBtYXhXaWR0aDogbmFycm93V2lkdGggfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgVGlwQm9keSA9IHN0eWxlZChCb3gpPFxuICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUb29sVGlwQm9keUFsaWdubWVudHM+ICZcbiAgICBTdHlsZVByb3BzPHR5cGVvZiBpbmxpbmVUaXBCb2R5U3RhdGVzPlxuPihjc3MoeyAuLi50b29sVGlwQm9keUNzcyB9KSwgaW5saW5lVG9vbFRpcEJvZHlBbGlnbm1lbnRzLCBpbmxpbmVUaXBCb2R5U3RhdGVzKTtcblxuZXhwb3J0IGNvbnN0IEZsb2F0aW5nVGlwQm9keSA9IHN0eWxlZChQb3BvdmVyKTxcbiAgU3R5bGVQcm9wczx0eXBlb2YgdG9vbFRpcFdpZHRoUmVzdHJpY3Rpb25zPlxuPih0b29sVGlwV2lkdGhSZXN0cmljdGlvbnMpO1xuIl19 */");
|
|
@@ -46,7 +46,8 @@ export type TipPlacementComponentProps = Omit<TipNewBaseProps, 'placement' | 'em
|
|
|
46
46
|
escapeKeyPressHandler?: (event: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
47
47
|
id?: string;
|
|
48
48
|
isTipHidden?: boolean;
|
|
49
|
-
contentRef?: React.
|
|
49
|
+
contentRef?: React.RefObject<HTMLDivElement> | ((node: HTMLDivElement | null) => void);
|
|
50
|
+
closeOnClick?: boolean;
|
|
50
51
|
type: 'info' | 'tool' | 'preview';
|
|
51
52
|
wrapperRef?: React.Ref<HTMLDivElement | null>;
|
|
52
53
|
zIndex?: number;
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codecademy/gamut",
|
|
3
3
|
"description": "Styleguide & Component library for Codecademy",
|
|
4
|
-
"version": "72.2.3-alpha.
|
|
4
|
+
"version": "72.2.3-alpha.8ab930.0",
|
|
5
5
|
"author": "Codecademy Engineering <dev@codecademy.com>",
|
|
6
6
|
"bin": "./bin/gamut.mjs",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@codecademy/gamut-icons": "9.57.10-alpha.
|
|
9
|
-
"@codecademy/gamut-illustrations": "0.58.16-alpha.
|
|
10
|
-
"@codecademy/gamut-patterns": "0.10.35-alpha.
|
|
11
|
-
"@codecademy/gamut-styles": "20.0.3-alpha.
|
|
12
|
-
"@codecademy/variance": "0.26.2-alpha.
|
|
8
|
+
"@codecademy/gamut-icons": "9.57.10-alpha.8ab930.0",
|
|
9
|
+
"@codecademy/gamut-illustrations": "0.58.16-alpha.8ab930.0",
|
|
10
|
+
"@codecademy/gamut-patterns": "0.10.35-alpha.8ab930.0",
|
|
11
|
+
"@codecademy/gamut-styles": "20.0.3-alpha.8ab930.0",
|
|
12
|
+
"@codecademy/variance": "0.26.2-alpha.8ab930.0",
|
|
13
13
|
"@formatjs/intl-locale": "5.3.1",
|
|
14
14
|
"@react-aria/interactions": "3.25.0",
|
|
15
15
|
"@types/marked": "^4.0.8",
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gamut-select-dropdown
|
|
3
|
-
description: Use when implementing or auditing SelectDropdown — single/multi modes, controlled vs uncontrolled value, creatable options, FormGroup wiring, and onChange contract. Pair with gamut-forms for error live regions, ConnectedForm, and field-level validation.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Gamut SelectDropdown
|
|
7
|
-
|
|
8
|
-
Styled dropdown built on react-select.
|
|
9
|
-
|
|
10
|
-
Source: `@codecademy/gamut` — [SelectDropdown.tsx](https://github.com/Codecademy/gamut/blob/main/packages/gamut/src/Form/SelectDropdown/SelectDropdown.tsx)
|
|
11
|
-
|
|
12
|
-
See also: [`gamut-forms`](../gamut-forms/SKILL.md) — FormGroup wiring, error regions, and validation UX.
|
|
13
|
-
|
|
14
|
-
Storybook: [Atoms / FormInputs / SelectDropdown](https://gamut.codecademy.com/?path=/docs-atoms-forminputs-selectdropdown--docs)
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## When to use SelectDropdown vs Select
|
|
19
|
-
|
|
20
|
-
Use `Select` for standard single-select forms with minimal bundle cost. Use `SelectDropdown` when designs specify the styled dropdown menu, search, multi-select tags, creatable options, icons, groups, or abbreviations. SelectDropdown has a larger JavaScript dependency (react-select).
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Options
|
|
25
|
-
|
|
26
|
-
`options` accepts plain strings or option objects. `value` is always a string and references an option's `value`.
|
|
27
|
-
|
|
28
|
-
| Field | Required | Notes |
|
|
29
|
-
| -------------- | -------- | -------------------------------------------------------------------- |
|
|
30
|
-
| `label` | yes | Display text |
|
|
31
|
-
| `value` | yes | Unique string; what `value` / `string[]` reference |
|
|
32
|
-
| `disabled` | no | Option cannot be selected |
|
|
33
|
-
| `subtitle` | no | Secondary text below the label |
|
|
34
|
-
| `rightLabel` | no | Text on the right side of the option |
|
|
35
|
-
| `icon` | no | A `@codecademy/gamut-icons` component |
|
|
36
|
-
| `abbreviation` | no | Short text shown in the input while the full label shows in the menu |
|
|
37
|
-
|
|
38
|
-
Grouped options: `{ label, options: [...], divider? }` (extends react-select `GroupBase`; `divider` draws a rule above the group).
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Controlled vs uncontrolled
|
|
43
|
-
|
|
44
|
-
SelectDropdown does **not** accept `defaultValue`.
|
|
45
|
-
|
|
46
|
-
| Mode | Uncontrolled | Controlled |
|
|
47
|
-
| ---------------- | -------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|
48
|
-
| Single | Not supported | `value` (string) + update in `onChange` |
|
|
49
|
-
| Multi | Omit `value` or pass non-array (`undefined`, `''`) | `value: string[]` + update in `onChange` |
|
|
50
|
-
| Creatable single | Not supported | Same as single; `onCreateOption` appends to `options` |
|
|
51
|
-
| Creatable multi | Omit `value`; `onCreateOption` for options | `value: string[]`; update in `onChange` on every change including `create-option` |
|
|
52
|
-
|
|
53
|
-
Single-select selection is derived from the `value` prop only — internal state is not kept. Multi-select without `value: string[]` keeps selection in internal `multiValues`.
|
|
54
|
-
|
|
55
|
-
**Controlled creatable multi pitfall:** Updating `options` alone without syncing `value` in `onChange` clears selection when options re-render.
|
|
56
|
-
|
|
57
|
-
### When to use uncontrolled (multi only)
|
|
58
|
-
|
|
59
|
-
Uncontrolled multi is appropriate when:
|
|
60
|
-
|
|
61
|
-
- No other part of the UI needs to react to the current selection (no live summary, no dependent field, no enabled/disabled button).
|
|
62
|
-
- You only need the value at form submission — via `FormData`, a submit handler reading the DOM, or react-hook-form's `getValues`.
|
|
63
|
-
- Simplicity is the priority; omitting `value` means one less piece of state to manage.
|
|
64
|
-
|
|
65
|
-
```tsx
|
|
66
|
-
// Good fit: a "tags" field where only the submitted array matters
|
|
67
|
-
<SelectDropdown
|
|
68
|
-
multiple
|
|
69
|
-
name="tags"
|
|
70
|
-
options={tagOptions}
|
|
71
|
-
onCreateOption={(v) => setTagOptions((prev) => [...prev, v])}
|
|
72
|
-
/>
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### When to use controlled
|
|
76
|
-
|
|
77
|
-
Use controlled when:
|
|
78
|
-
|
|
79
|
-
- Another part of the UI must reflect the current selection in real time (summary text, a filtered list, an enable/disable condition).
|
|
80
|
-
- You need to pre-populate from an API response, reset on cancel, or sync with a form library like react-hook-form.
|
|
81
|
-
- You are using single-select (the only supported mode for single).
|
|
82
|
-
|
|
83
|
-
```tsx
|
|
84
|
-
// Good fit: pre-populate from API, clear on cancel, show live summary
|
|
85
|
-
const [selected, setSelected] = useState<string[]>(initialValues);
|
|
86
|
-
|
|
87
|
-
<SelectDropdown
|
|
88
|
-
multiple
|
|
89
|
-
name="languages"
|
|
90
|
-
options={languageOptions}
|
|
91
|
-
value={selected}
|
|
92
|
-
onChange={(opts) => setSelected(opts.map((o) => o.value))}
|
|
93
|
-
/>
|
|
94
|
-
<p>Selected: {selected.join(', ') || 'none'}</p>
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## onChange contract
|
|
100
|
-
|
|
101
|
-
`onChange` receives option object(s), not `event.target.value`:
|
|
102
|
-
|
|
103
|
-
```tsx
|
|
104
|
-
// Single
|
|
105
|
-
onChange={(option) => setValue(option.value)}
|
|
106
|
-
|
|
107
|
-
// Multi
|
|
108
|
-
onChange={(selected) => setValue(selected.map((o) => o.value))}
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
Second argument is react-select `ActionMeta`. For creatable creates: `meta.action === 'create-option'`. Do **not** pass `onCreateOption` to react-select directly — Gamut invokes it from `changeHandler` while still forwarding `create-option` to consumer `onChange`.
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## Creatable
|
|
116
|
-
|
|
117
|
-
- `isCreatable` forces `isSearchable: true` (TypeScript enforces this).
|
|
118
|
-
- `onCreateOption(inputValue)` — convenience hook to append to `options`.
|
|
119
|
-
- `onChange(selected, meta)` — use `meta.action === 'create-option'` to sync controlled `value` and `options` together.
|
|
120
|
-
- `isValidNewOption` — return `false` to hide the Add row.
|
|
121
|
-
- `validationMessage` — replaces menu "No options" text; mirror in `FormGroup` `error` for field-level feedback.
|
|
122
|
-
|
|
123
|
-
**Validation after blur:** react-select clears input on blur before `onBlur` fires, so the value is gone by the time you'd validate it. Store the last typed value in a ref and re-validate from it on `input-blur`:
|
|
124
|
-
|
|
125
|
-
```tsx
|
|
126
|
-
const lastInput = useRef('');
|
|
127
|
-
|
|
128
|
-
<SelectDropdown
|
|
129
|
-
isCreatable
|
|
130
|
-
onInputChange={(value, { action }) => {
|
|
131
|
-
if (action === 'input-change') lastInput.current = value;
|
|
132
|
-
if (action === 'input-blur') validate(lastInput.current);
|
|
133
|
-
}}
|
|
134
|
-
/>;
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## FormGroup wiring
|
|
140
|
-
|
|
141
|
-
- `FormGroup` `htmlFor` must match control `id` (not `name`). Alternatively, pass `htmlFor` directly on SelectDropdown and it becomes `id` downstream.
|
|
142
|
-
- Pass `name` on SelectDropdown (required for forms).
|
|
143
|
-
- Pass `aria-label` (required for forms); it must match the FormGroupLabel `htmlFor`.
|
|
144
|
-
- Pass `error` boolean when FormGroup has an error.
|
|
145
|
-
- Generic FormGroup live-region behavior: see [`gamut-forms`](../gamut-forms/SKILL.md).
|
|
146
|
-
|
|
147
|
-
```tsx
|
|
148
|
-
<FormGroup htmlFor="country" isSoloField label="Country" error={errors.country}>
|
|
149
|
-
<SelectDropdown
|
|
150
|
-
id="country"
|
|
151
|
-
name="country"
|
|
152
|
-
aria-label="country"
|
|
153
|
-
options={options}
|
|
154
|
-
value={value}
|
|
155
|
-
error={Boolean(errors.country)}
|
|
156
|
-
onChange={(option) => setValue(option.value)}
|
|
157
|
-
/>
|
|
158
|
-
</FormGroup>
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## Styling & layout props
|
|
164
|
-
|
|
165
|
-
| Prop | Type | Default | Notes |
|
|
166
|
-
| ------------------- | ------------------------ | -------- | --------------------------------------------------------- |
|
|
167
|
-
| `size` | `'small' \| 'medium'` | `medium` | Control height/density |
|
|
168
|
-
| `shownOptionsLimit` | `1`–`6` | `6` | Visible options before the menu scrolls |
|
|
169
|
-
| `inputWidth` | `string \| number` | — | Width of the input independent of the menu |
|
|
170
|
-
| `dropdownWidth` | `string \| number` | — | Width of the menu independent of the input |
|
|
171
|
-
| `menuAlignment` | `'left' \| 'right'` | `left` | Menu edge alignment |
|
|
172
|
-
| `zIndex` | `number` | auto | Menu z-index |
|
|
173
|
-
| `inputProps` | `{ hidden?, combobox? }` | — | `data-*` / `aria-*` only, forwarded to the input elements |
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## Examples
|
|
178
|
-
|
|
179
|
-
### Single (controlled)
|
|
180
|
-
|
|
181
|
-
```tsx
|
|
182
|
-
const [value, setValue] = useState('us');
|
|
183
|
-
|
|
184
|
-
<SelectDropdown
|
|
185
|
-
name="country"
|
|
186
|
-
options={options}
|
|
187
|
-
value={value}
|
|
188
|
-
onChange={(option) => setValue(option.value)}
|
|
189
|
-
/>;
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### Multi (uncontrolled)
|
|
193
|
-
|
|
194
|
-
```tsx
|
|
195
|
-
<SelectDropdown
|
|
196
|
-
multiple
|
|
197
|
-
name="tags"
|
|
198
|
-
options={options}
|
|
199
|
-
onChange={(selected) => console.log(selected)}
|
|
200
|
-
/>
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### Creatable multi (uncontrolled)
|
|
204
|
-
|
|
205
|
-
```tsx
|
|
206
|
-
const [options, setOptions] = useState(['Apple', 'Banana']);
|
|
207
|
-
|
|
208
|
-
<SelectDropdown
|
|
209
|
-
isCreatable
|
|
210
|
-
multiple
|
|
211
|
-
name="fruits"
|
|
212
|
-
options={options}
|
|
213
|
-
onCreateOption={(v) => setOptions((prev) => [...prev, v])}
|
|
214
|
-
/>;
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
### Creatable multi (controlled)
|
|
218
|
-
|
|
219
|
-
```tsx
|
|
220
|
-
const [options, setOptions] = useState(['Apple', 'Banana']);
|
|
221
|
-
const [value, setValue] = useState<string[]>([]);
|
|
222
|
-
|
|
223
|
-
<SelectDropdown
|
|
224
|
-
isCreatable
|
|
225
|
-
multiple
|
|
226
|
-
name="fruits"
|
|
227
|
-
options={options}
|
|
228
|
-
value={value}
|
|
229
|
-
onChange={(selected, meta) => {
|
|
230
|
-
setValue(selected.map((o) => o.value));
|
|
231
|
-
if (meta.action === 'create-option' && meta.option) {
|
|
232
|
-
setOptions((prev) => [...prev, meta.option.value]);
|
|
233
|
-
}
|
|
234
|
-
}}
|
|
235
|
-
/>;
|
|
236
|
-
```
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export const onFocus = ({
|
|
2
|
-
focused: {
|
|
3
|
-
label,
|
|
4
|
-
subtitle,
|
|
5
|
-
rightLabel,
|
|
6
|
-
disabled
|
|
7
|
-
}
|
|
8
|
-
}) => {
|
|
9
|
-
const formattedSubtitle = `, ${subtitle}`;
|
|
10
|
-
const formattedRightLabel = `, ${rightLabel}`;
|
|
11
|
-
return `You are currently focused on option ${label}${subtitle ? formattedSubtitle : ''} ${rightLabel ? formattedRightLabel : ''}${disabled ? ', disabled' : ''}`;
|
|
12
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export declare const defaultComponents: {
|
|
2
|
-
DropdownIndicator: (props: import("../types").SizedIndicatorProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
-
IndicatorSeparator: () => null;
|
|
4
|
-
ClearIndicator: (props: import("../types").SizedIndicatorProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
SelectContainer: ({ children, ...rest }: import("../types").CustomSelectComponentProps<(<Option_18, IsMulti_18 extends boolean, Group_18 extends import("react-select").GroupBase<Option_18>>(props: import("react-select").ContainerProps<Option_18, IsMulti_18, Group_18>) => import("@emotion/react").jsx.JSX.Element)>) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
ValueContainer: ({ ...rest }: import("../types").CustomSelectComponentProps<(<Option_20, IsMulti_20 extends boolean, Group_20 extends import("react-select").GroupBase<Option_20>>(props: import("react-select").ValueContainerProps<Option_20, IsMulti_20, Group_20>) => import("@emotion/react").jsx.JSX.Element)>) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
MultiValue: (props: import("react-select").MultiValueProps<import("..").ExtendedOption, true, import("react-select").GroupBase<import("..").ExtendedOption>>) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
MultiValueRemove: (props: import("react-select").MultiValueRemoveProps<import("..").ExtendedOption, true, import("react-select").GroupBase<import("..").ExtendedOption>>) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
Option: ({ children, ...rest }: import("../types").CustomSelectComponentProps<(<Option_16, IsMulti_16 extends boolean, Group_16 extends import("react-select").GroupBase<Option_16>>(props: import("react-select").OptionProps<Option_16, IsMulti_16, Group_16>) => import("@emotion/react").jsx.JSX.Element)>) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
-
SingleValue: (props: import("react-select").SingleValueProps<import("..").ExtendedOption, false>) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
Input: ({ ...rest }: import("../types").CustomSelectComponentProps<(<Option_7, IsMulti_7 extends boolean, Group_7 extends import("react-select").GroupBase<Option_7>>(props: import("react-select").InputProps<Option_7, IsMulti_7, Group_7>) => import("@emotion/react").jsx.JSX.Element)>) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
-
};
|
|
13
|
-
export declare const ON_CHANGE_ACTION: "select-option";
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { AbbreviatedSingleValue, CustomContainer, CustomInput, CustomValueContainer, DropdownButton, IconOption, MultiValueRemoveButton, MultiValueWithColorMode, RemoveAllButton } from '../elements';
|
|
2
|
-
export const defaultComponents = {
|
|
3
|
-
DropdownIndicator: DropdownButton,
|
|
4
|
-
IndicatorSeparator: () => null,
|
|
5
|
-
ClearIndicator: RemoveAllButton,
|
|
6
|
-
SelectContainer: CustomContainer,
|
|
7
|
-
ValueContainer: CustomValueContainer,
|
|
8
|
-
MultiValue: MultiValueWithColorMode,
|
|
9
|
-
MultiValueRemove: MultiValueRemoveButton,
|
|
10
|
-
Option: IconOption,
|
|
11
|
-
SingleValue: AbbreviatedSingleValue,
|
|
12
|
-
Input: CustomInput
|
|
13
|
-
};
|
|
14
|
-
export const ON_CHANGE_ACTION = 'select-option';
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { KeyboardEvent } from 'react';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { ActionMeta, Options as OptionsType } from 'react-select';
|
|
4
|
-
import { SelectOptionBase } from '../../utils';
|
|
5
|
-
import { MultiSelectDropdownProps, OptionStrict, SelectDropdownGroup, SelectDropdownProps, SingleSelectDropdownProps } from '../types';
|
|
6
|
-
interface UseSelectHandlersArgs {
|
|
7
|
-
onChange?: SingleSelectDropdownProps['onChange'] | MultiSelectDropdownProps['onChange'];
|
|
8
|
-
multiple?: boolean;
|
|
9
|
-
onCreateOption?: (inputValue: string) => void;
|
|
10
|
-
selectOptions: SelectOptionBase[] | SelectDropdownGroup[];
|
|
11
|
-
value?: SelectDropdownProps['value'];
|
|
12
|
-
currentFocusedValue: unknown;
|
|
13
|
-
removeAllButtonRef: React.MutableRefObject<HTMLDivElement | null>;
|
|
14
|
-
}
|
|
15
|
-
interface UseSelectHandlersReturn {
|
|
16
|
-
activated: boolean;
|
|
17
|
-
multiValues: OptionStrict[] | false;
|
|
18
|
-
changeHandler: (optionEvent: OptionStrict | OptionsType<OptionStrict>, actionMeta: ActionMeta<OptionStrict>) => void;
|
|
19
|
-
keyPressHandler: (e: KeyboardEvent<HTMLDivElement>) => void;
|
|
20
|
-
}
|
|
21
|
-
export declare const useSelectHandlers: ({ onChange, multiple, onCreateOption, selectOptions, value, currentFocusedValue, removeAllButtonRef, }: UseSelectHandlersArgs) => UseSelectHandlersReturn;
|
|
22
|
-
export {};
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
-
import { ON_CHANGE_ACTION } from '../core/constants';
|
|
3
|
-
import { filterValueFromOptions, getCreatedOptionValue, isMultipleSelectProps, isOptionsGrouped, isSingleSelectProps, removeValueFromSelectedOptions } from '../core/utils';
|
|
4
|
-
export const useSelectHandlers = ({
|
|
5
|
-
onChange,
|
|
6
|
-
multiple,
|
|
7
|
-
onCreateOption,
|
|
8
|
-
selectOptions,
|
|
9
|
-
value,
|
|
10
|
-
currentFocusedValue,
|
|
11
|
-
removeAllButtonRef
|
|
12
|
-
}) => {
|
|
13
|
-
const [activated, setActivated] = useState(false);
|
|
14
|
-
const [multiValues, setMultiValues] = useState(multiple ? filterValueFromOptions(selectOptions, value, isOptionsGrouped(selectOptions)) : false);
|
|
15
|
-
|
|
16
|
-
// Sync multi-select value from props when controlled (`value` is a string[]).
|
|
17
|
-
// Uncontrolled multi (`value` undefined or '') keeps selection in local state.
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
if (!multiple || !Array.isArray(value)) return;
|
|
20
|
-
const newMultiValues = filterValueFromOptions(selectOptions, value, isOptionsGrouped(selectOptions));
|
|
21
|
-
if (newMultiValues !== multiValues) setMultiValues(newMultiValues);
|
|
22
|
-
|
|
23
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
24
|
-
}, [selectOptions, value, multiple]);
|
|
25
|
-
const changeHandler = useCallback((optionEvent, actionMeta) => {
|
|
26
|
-
setActivated(true);
|
|
27
|
-
if (actionMeta.action === 'create-option') {
|
|
28
|
-
const createdValue = getCreatedOptionValue(optionEvent, actionMeta, multiple);
|
|
29
|
-
if (createdValue) onCreateOption?.(createdValue);
|
|
30
|
-
}
|
|
31
|
-
const onChangeProps = {
|
|
32
|
-
onChange,
|
|
33
|
-
multiple
|
|
34
|
-
};
|
|
35
|
-
const forwardedMeta = actionMeta.action === 'create-option' ? actionMeta : {
|
|
36
|
-
action: ON_CHANGE_ACTION,
|
|
37
|
-
option: isMultipleSelectProps(onChangeProps) ? undefined : optionEvent
|
|
38
|
-
};
|
|
39
|
-
if (isSingleSelectProps(onChangeProps)) {
|
|
40
|
-
onChangeProps.onChange?.(optionEvent, forwardedMeta);
|
|
41
|
-
}
|
|
42
|
-
if (isMultipleSelectProps(onChangeProps)) {
|
|
43
|
-
setMultiValues(optionEvent);
|
|
44
|
-
onChangeProps.onChange?.(optionEvent, forwardedMeta);
|
|
45
|
-
}
|
|
46
|
-
}, [onChange, multiple, onCreateOption]);
|
|
47
|
-
const keyPressHandler = e => {
|
|
48
|
-
if (multiple && e.key === 'Enter' && currentFocusedValue && multiValues) {
|
|
49
|
-
const newMultiValues = removeValueFromSelectedOptions(multiValues, currentFocusedValue);
|
|
50
|
-
if (newMultiValues !== multiValues) setMultiValues(newMultiValues);
|
|
51
|
-
}
|
|
52
|
-
if (removeAllButtonRef.current !== null && e.key === 'ArrowRight' && multiValues && currentFocusedValue === multiValues[multiValues.length - 1].value) {
|
|
53
|
-
removeAllButtonRef.current.focus();
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
return {
|
|
57
|
-
activated,
|
|
58
|
-
multiValues,
|
|
59
|
-
changeHandler,
|
|
60
|
-
keyPressHandler
|
|
61
|
-
};
|
|
62
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { SelectOptionBase } from '../../utils';
|
|
2
|
-
import { SelectDropdownGroup, SelectDropdownOptions, SelectDropdownSizes } from '../types';
|
|
3
|
-
interface UseSelectOptionsArgs {
|
|
4
|
-
options?: SelectDropdownOptions | SelectDropdownGroup[];
|
|
5
|
-
id?: string;
|
|
6
|
-
size?: SelectDropdownSizes['size'];
|
|
7
|
-
value?: string | string[];
|
|
8
|
-
}
|
|
9
|
-
interface UseSelectOptionsReturn {
|
|
10
|
-
selectOptions: SelectOptionBase[] | SelectDropdownGroup[];
|
|
11
|
-
parsedValue: SelectOptionBase | undefined;
|
|
12
|
-
}
|
|
13
|
-
export declare const useSelectOptions: ({ options, id, size, value, }: UseSelectOptionsArgs) => UseSelectOptionsReturn;
|
|
14
|
-
export {};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { useMemo } from 'react';
|
|
2
|
-
import { parseOptions } from '../../utils';
|
|
3
|
-
import { isOptionsGrouped } from '../core/utils';
|
|
4
|
-
export const useSelectOptions = ({
|
|
5
|
-
options,
|
|
6
|
-
id,
|
|
7
|
-
size,
|
|
8
|
-
value
|
|
9
|
-
}) => {
|
|
10
|
-
const selectOptions = useMemo(() => {
|
|
11
|
-
if (!options || Array.isArray(options) && !options.length || typeof options === 'object' && !Array.isArray(options) && Object.keys(options).length === 0) {
|
|
12
|
-
return [];
|
|
13
|
-
}
|
|
14
|
-
if (isOptionsGrouped(options)) {
|
|
15
|
-
return options;
|
|
16
|
-
}
|
|
17
|
-
return parseOptions({
|
|
18
|
-
options,
|
|
19
|
-
id,
|
|
20
|
-
size
|
|
21
|
-
});
|
|
22
|
-
}, [options, id, size]);
|
|
23
|
-
const parsedValue = useMemo(() => {
|
|
24
|
-
if (isOptionsGrouped(selectOptions)) {
|
|
25
|
-
for (const group of selectOptions) {
|
|
26
|
-
if (group.options) {
|
|
27
|
-
const foundOption = group.options.find(option => option.value === value);
|
|
28
|
-
if (foundOption) return foundOption;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
return selectOptions.find(option => option.value === value);
|
|
34
|
-
}, [selectOptions, value]);
|
|
35
|
-
return {
|
|
36
|
-
selectOptions,
|
|
37
|
-
parsedValue
|
|
38
|
-
};
|
|
39
|
-
};
|
|
File without changes
|