@chayns-components/core 5.0.0-beta.979 → 5.0.0-beta.981
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/lib/cjs/components/button/Button.js +1 -0
- package/lib/cjs/components/button/Button.js.map +1 -1
- package/lib/cjs/components/button/Button.styles.js +7 -1
- package/lib/cjs/components/button/Button.styles.js.map +1 -1
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js +4 -28
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js +16 -0
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -0
- package/lib/cjs/components/page-provider/PageProvider.js +6 -12
- package/lib/cjs/components/page-provider/PageProvider.js.map +1 -1
- package/lib/cjs/components/page-provider/PageProvider.styles.js +8 -3
- package/lib/cjs/components/page-provider/PageProvider.styles.js.map +1 -1
- package/lib/cjs/components/search-box/SearchBox.js +14 -0
- package/lib/cjs/components/search-box/SearchBox.js.map +1 -1
- package/lib/cjs/components/search-box/search-box-item/SearchBoxItem.js +6 -2
- package/lib/cjs/components/search-box/search-box-item/SearchBoxItem.js.map +1 -1
- package/lib/cjs/components/truncation/Truncation.js +4 -4
- package/lib/cjs/components/truncation/Truncation.js.map +1 -1
- package/lib/cjs/utils/font.js +0 -6
- package/lib/cjs/utils/font.js.map +1 -1
- package/lib/esm/components/button/Button.js +1 -0
- package/lib/esm/components/button/Button.js.map +1 -1
- package/lib/esm/components/button/Button.styles.js +7 -1
- package/lib/esm/components/button/Button.styles.js.map +1 -1
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js +4 -28
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js +10 -0
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -0
- package/lib/esm/components/page-provider/PageProvider.js +7 -13
- package/lib/esm/components/page-provider/PageProvider.js.map +1 -1
- package/lib/esm/components/page-provider/PageProvider.styles.js +13 -8
- package/lib/esm/components/page-provider/PageProvider.styles.js.map +1 -1
- package/lib/esm/components/search-box/SearchBox.js +14 -0
- package/lib/esm/components/search-box/SearchBox.js.map +1 -1
- package/lib/esm/components/search-box/search-box-item/SearchBoxItem.js +6 -2
- package/lib/esm/components/search-box/search-box-item/SearchBoxItem.js.map +1 -1
- package/lib/esm/components/truncation/Truncation.js +4 -4
- package/lib/esm/components/truncation/Truncation.js.map +1 -1
- package/lib/esm/utils/font.js +0 -6
- package/lib/esm/utils/font.js.map +1 -1
- package/lib/types/components/accordion/Accordion.styles.d.ts +5 -5
- package/lib/types/components/accordion/accordion-body/AccordionBody.styles.d.ts +5 -5
- package/lib/types/components/accordion/accordion-head/AccordionHead.styles.d.ts +53 -53
- package/lib/types/components/amount-control/AmountControl.styles.d.ts +7 -7
- package/lib/types/components/button/Button.styles.d.ts +18 -17
- package/lib/types/components/color-scheme-provider/ColorSchemeProvider.d.ts +0 -1
- package/lib/types/components/color-scheme-provider/ColorSchemeProvider.styles.d.ts +1 -0
- package/lib/types/components/combobox/ComboBox.styles.d.ts +5 -5
- package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.styles.d.ts +5 -5
- package/lib/types/components/expandable-content/ExpandableContent.styles.d.ts +5 -5
- package/lib/types/components/file-input/FileInput.styles.d.ts +5 -5
- package/lib/types/components/filter-buttons/filter-button/FilterButton.styles.d.ts +5 -5
- package/lib/types/components/input/Input.styles.d.ts +15 -15
- package/lib/types/components/list/list-item/ListItem.styles.d.ts +5 -5
- package/lib/types/components/list/list-item/list-item-body/ListItemBody.styles.d.ts +5 -5
- package/lib/types/components/list/list-item/list-item-head/ListItemHead.styles.d.ts +20 -20
- package/lib/types/components/mention-finder/MentionFinder.styles.d.ts +5 -5
- package/lib/types/components/page-provider/PageProvider.styles.d.ts +1 -1
- package/lib/types/components/popup/popup-content-wrapper/PopupContentWrapper.styles.d.ts +5 -5
- package/lib/types/components/progress-bar/ProgressBar.styles.d.ts +5 -5
- package/lib/types/components/radio-button/RadioButton.styles.d.ts +5 -5
- package/lib/types/components/search-box/SearchBox.styles.d.ts +5 -5
- package/lib/types/components/search-box/search-box-body/SearchBoxBody.styles.d.ts +5 -5
- package/lib/types/components/search-input/SearchInput.styles.d.ts +10 -10
- package/lib/types/components/slider/Slider.styles.d.ts +16 -16
- package/lib/types/components/slider-button/SliderButton.styles.d.ts +5 -5
- package/lib/types/components/truncation/Truncation.styles.d.ts +5 -5
- package/lib/types/utils/font.d.ts +0 -3
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.styles.js","names":["motion","styled","css","StyledMotionButton","button","_ref","$shouldShowTextAsRobotoMedium","$shouldShowAsSelectButton","_ref2","$isSecondary","theme","text","buttonDesign","buttonColor","buttonBackgroundColor","_ref3","_ref4","$isDisabled","_ref5","$hasIcon","$hasChildren","StyledIconWrapper","span","StyledMotionChildrenWrapper","div","StyledMotionWaitCursorWrapper"],"sources":["../../../../src/components/button/Button.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled, { css } from 'styled-components';\nimport type { FramerMotionBugFix, WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledButtonProps = WithTheme<{\n $hasIcon: boolean;\n $hasChildren: boolean;\n $isDisabled?: boolean;\n $isSecondary?: boolean;\n $shouldShowTextAsRobotoMedium: boolean;\n $shouldShowAsSelectButton: boolean;\n}>;\n\nexport const StyledMotionButton = styled(motion.button)<StyledButtonProps>`\n ${({ $shouldShowTextAsRobotoMedium, $shouldShowAsSelectButton }) =>\n $shouldShowTextAsRobotoMedium &&\n !$shouldShowAsSelectButton &&\n css`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n `}\n\n align-items: center;\n\n ${({ $isSecondary, $shouldShowAsSelectButton, theme }: StyledButtonProps) => {\n if ($isSecondary || $shouldShowAsSelectButton) {\n return css`\n color: ${theme.text};\n `;\n }\n\n return css`\n color: ${theme.buttonDesign === '2'\n ? (theme.buttonColor ?? theme.buttonBackgroundColor ?? 'white')\n : (theme.buttonColor ?? 'white')};\n `;\n }}\n\n ${({ theme, $isSecondary, $shouldShowAsSelectButton }: StyledButtonProps) => {\n if (theme.buttonDesign === '2' && !$shouldShowAsSelectButton) {\n return css`\n border: 1px solid ${$isSecondary ? theme['202'] : theme.buttonBackgroundColor};\n box-shadow: none;\n `;\n }\n\n return css`\n border: none;\n box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.2);\n `;\n }}\n\n border-radius: 3px;\n cursor: ${({ $isDisabled }) => ($isDisabled ? 'default' : 'pointer')};\n display: inline-flex;\n line-height: 22px;\n min-height: 32px;\n position: relative;\n user-select: none;\n\n ${({ $hasIcon, $hasChildren }) => {\n if ($hasIcon) {\n if ($hasChildren) {\n return css`\n padding: 6px 12px 6px 42px;\n `;\n }\n return css`\n padding: 6px 12px 6px 18px;\n `;\n }\n return css`\n padding: 6px 12px 6px 12px;\n `;\n }}\n`;\n//\nexport const StyledIconWrapper = styled.span`\n align-items: center;\n background-color: rgba(255, 255, 255, 0.2);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n top: 0;\n width: 30px;\n`;\n\nexport const StyledMotionChildrenWrapper = styled(motion.div)<FramerMotionBugFix>`\n will-change: unset !important;\n`;\n\nexport const StyledMotionWaitCursorWrapper = styled(motion.div)<FramerMotionBugFix>`\n align-items: center;\n display: flex;\n justify-content: center;\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AACtC,OAAOC,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;
|
|
1
|
+
{"version":3,"file":"Button.styles.js","names":["motion","styled","css","StyledMotionButton","button","_ref","$shouldShowTextAsRobotoMedium","$shouldShowAsSelectButton","_ref2","$isSecondary","theme","text","buttonDesign","buttonColor","buttonBackgroundColor","_ref3","_ref4","$isDisabled","_ref5","$hasIcon","$hasChildren","$shouldShowWaitCursor","StyledIconWrapper","span","StyledMotionChildrenWrapper","div","StyledMotionWaitCursorWrapper"],"sources":["../../../../src/components/button/Button.styles.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport styled, { css } from 'styled-components';\nimport type { FramerMotionBugFix, WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledButtonProps = WithTheme<{\n $hasIcon: boolean;\n $hasChildren: boolean;\n $isDisabled?: boolean;\n $isSecondary?: boolean;\n $shouldShowTextAsRobotoMedium: boolean;\n $shouldShowAsSelectButton: boolean;\n $shouldShowWaitCursor?: boolean;\n}>;\n\nexport const StyledMotionButton = styled(motion.button)<StyledButtonProps>`\n ${({ $shouldShowTextAsRobotoMedium, $shouldShowAsSelectButton }) =>\n $shouldShowTextAsRobotoMedium &&\n !$shouldShowAsSelectButton &&\n css`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n `}\n\n align-items: center;\n\n ${({ $isSecondary, $shouldShowAsSelectButton, theme }: StyledButtonProps) => {\n if ($isSecondary || $shouldShowAsSelectButton) {\n return css`\n color: ${theme.text};\n `;\n }\n\n return css`\n color: ${theme.buttonDesign === '2'\n ? (theme.buttonColor ?? theme.buttonBackgroundColor ?? 'white')\n : (theme.buttonColor ?? 'white')};\n `;\n }}\n\n ${({ theme, $isSecondary, $shouldShowAsSelectButton }: StyledButtonProps) => {\n if (theme.buttonDesign === '2' && !$shouldShowAsSelectButton) {\n return css`\n border: 1px solid ${$isSecondary ? theme['202'] : theme.buttonBackgroundColor};\n box-shadow: none;\n `;\n }\n\n return css`\n border: none;\n box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.2);\n `;\n }}\n\n border-radius: 3px;\n cursor: ${({ $isDisabled }) => ($isDisabled ? 'default' : 'pointer')};\n display: inline-flex;\n line-height: 22px;\n min-height: 32px;\n position: relative;\n user-select: none;\n\n ${({ $hasIcon, $hasChildren, $shouldShowWaitCursor }) => {\n if ($shouldShowWaitCursor) {\n return css`\n padding: 4px 12px;\n `;\n }\n\n if ($hasIcon) {\n if ($hasChildren) {\n return css`\n padding: 6px 12px 6px 42px;\n `;\n }\n return css`\n padding: 6px 12px 6px 18px;\n `;\n }\n return css`\n padding: 6px 12px 6px 12px;\n `;\n }}\n`;\n//\nexport const StyledIconWrapper = styled.span`\n align-items: center;\n background-color: rgba(255, 255, 255, 0.2);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n top: 0;\n width: 30px;\n`;\n\nexport const StyledMotionChildrenWrapper = styled(motion.div)<FramerMotionBugFix>`\n will-change: unset !important;\n`;\n\nexport const StyledMotionWaitCursorWrapper = styled(motion.div)<FramerMotionBugFix>`\n align-items: center;\n display: flex;\n justify-content: center;\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AACtC,OAAOC,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAa/C,OAAO,MAAMC,kBAAkB,GAAGF,MAAM,CAACD,MAAM,CAACI,MAAM,CAAoB;AAC1E,MAAMC,IAAA;EAAA,IAAC;IAAEC,6BAA6B;IAAEC;EAA0B,CAAC,GAAAF,IAAA;EAAA,OAC3DC,6BAA6B,IAC7B,CAACC,yBAAyB,IAC1BL,GAAG;AACX;AACA;AACA,SAAS;AAAA;AACT;AACA;AACA;AACA,MAAMM,KAAA,IAA2E;EAAA,IAA1E;IAAEC,YAAY;IAAEF,yBAAyB;IAAEG;EAAyB,CAAC,GAAAF,KAAA;EACpE,IAAIC,YAAY,IAAIF,yBAAyB,EAAE;IAC3C,OAAOL,GAAG;AACtB,yBAAyBQ,KAAK,CAACC,IAAI;AACnC,aAAa;EACL;EAEA,OAAOT,GAAG;AAClB,qBAAqBQ,KAAK,CAACE,YAAY,KAAK,GAAG,GAC5BF,KAAK,CAACG,WAAW,IAAIH,KAAK,CAACI,qBAAqB,IAAI,OAAO,GAC3DJ,KAAK,CAACG,WAAW,IAAI,OAAQ;AAChD,SAAS;AACL,CAAC;AACL;AACA,MAAME,KAAA,IAA2E;EAAA,IAA1E;IAAEL,KAAK;IAAED,YAAY;IAAEF;EAA6C,CAAC,GAAAQ,KAAA;EACpE,IAAIL,KAAK,CAACE,YAAY,KAAK,GAAG,IAAI,CAACL,yBAAyB,EAAE;IAC1D,OAAOL,GAAG;AACtB,oCAAoCO,YAAY,GAAGC,KAAK,CAAC,KAAK,CAAC,GAAGA,KAAK,CAACI,qBAAqB;AAC7F;AACA,aAAa;EACL;EAEA,OAAOZ,GAAG;AAClB;AACA;AACA,SAAS;AACL,CAAC;AACL;AACA;AACA,cAAcc,KAAA;EAAA,IAAC;IAAEC;EAAY,CAAC,GAAAD,KAAA;EAAA,OAAMC,WAAW,GAAG,SAAS,GAAG,SAAS;AAAA,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,KAAA,IAAuD;EAAA,IAAtD;IAAEC,QAAQ;IAAEC,YAAY;IAAEC;EAAsB,CAAC,GAAAH,KAAA;EAChD,IAAIG,qBAAqB,EAAE;IACvB,OAAOnB,GAAG;AACtB;AACA,aAAa;EACL;EAEA,IAAIiB,QAAQ,EAAE;IACV,IAAIC,YAAY,EAAE;MACd,OAAOlB,GAAG;AAC1B;AACA,iBAAiB;IACL;IACA,OAAOA,GAAG;AACtB;AACA,aAAa;EACL;EACA,OAAOA,GAAG;AAClB;AACA,SAAS;AACL,CAAC;AACL,CAAC;AACD;AACA,OAAO,MAAMoB,iBAAiB,GAAGrB,MAAM,CAACsB,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,2BAA2B,GAAGvB,MAAM,CAACD,MAAM,CAACyB,GAAG,CAAqB;AACjF;AACA,CAAC;AAED,OAAO,MAAMC,6BAA6B,GAAGzB,MAAM,CAACD,MAAM,CAACyB,GAAG,CAAqB;AACnF;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ import { Helmet } from 'react-helmet';
|
|
|
5
5
|
import { createGlobalStyle, ThemeProvider } from 'styled-components';
|
|
6
6
|
import { getDesignSettings, getParagraphFormat } from '../../api/theme/get';
|
|
7
7
|
import { convertIconStyle, getFontSize, getHeadlineColorSelector } from '../../utils/font';
|
|
8
|
+
import { StyledColorSchemeProvider } from './ColorSchemeProvider.styles';
|
|
8
9
|
var ColorMode = /*#__PURE__*/function (ColorMode) {
|
|
9
10
|
ColorMode[ColorMode["Classic"] = 0] = "Classic";
|
|
10
11
|
ColorMode[ColorMode["Dark"] = 1] = "Dark";
|
|
@@ -34,7 +35,6 @@ const ColorSchemeProvider = _ref => {
|
|
|
34
35
|
theme,
|
|
35
36
|
colors
|
|
36
37
|
} = _ref;
|
|
37
|
-
const [internalColors, setInternalColors] = useState(colors ?? {});
|
|
38
38
|
const [internalTheme, setInternalTheme] = useState(theme ?? {});
|
|
39
39
|
const [internalDesignSettings, setInternalDesignSettings] = useState();
|
|
40
40
|
const [internalParagraphFormat, setInternalParagraphFormat] = useState();
|
|
@@ -63,7 +63,6 @@ const ColorSchemeProvider = _ref => {
|
|
|
63
63
|
}
|
|
64
64
|
}, [internalParagraphFormat, paragraphFormat, siteId]);
|
|
65
65
|
useEffect(() => {
|
|
66
|
-
let newColors = {};
|
|
67
66
|
let newTheme = {};
|
|
68
67
|
const availableColors = getAvailableColorList();
|
|
69
68
|
if (!colors || !theme) {
|
|
@@ -78,23 +77,14 @@ const ColorSchemeProvider = _ref => {
|
|
|
78
77
|
if (!theme) {
|
|
79
78
|
newTheme[colorName] = hexColor;
|
|
80
79
|
}
|
|
81
|
-
if (!colors) {
|
|
82
|
-
newColors[`--chayns-color--${colorName}`] = hexColor;
|
|
83
|
-
}
|
|
84
80
|
if (rgbColor) {
|
|
85
81
|
if (!theme) {
|
|
86
82
|
newTheme[`${colorName}-rgb`] = `${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}`;
|
|
87
83
|
}
|
|
88
|
-
if (!colors) {
|
|
89
|
-
newColors[`--chayns-color-rgb--${colorName}`] = `${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}`;
|
|
90
|
-
}
|
|
91
84
|
}
|
|
92
85
|
}
|
|
93
86
|
});
|
|
94
87
|
}
|
|
95
|
-
if (colors) {
|
|
96
|
-
newColors = colors;
|
|
97
|
-
}
|
|
98
88
|
if (!theme) {
|
|
99
89
|
switch (colorMode ?? internalColorMode) {
|
|
100
90
|
case ColorMode.Light:
|
|
@@ -123,19 +113,9 @@ const ColorSchemeProvider = _ref => {
|
|
|
123
113
|
}
|
|
124
114
|
if (internalParagraphFormat) {
|
|
125
115
|
const {
|
|
126
|
-
colorResult,
|
|
127
116
|
themeResult
|
|
128
117
|
} = getHeadlineColorSelector(internalParagraphFormat);
|
|
129
118
|
|
|
130
|
-
// Update chayns-colors
|
|
131
|
-
Object.keys(colorResult).forEach(key => {
|
|
132
|
-
// ToDo: Find better solution
|
|
133
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
134
|
-
// @ts-ignore
|
|
135
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
136
|
-
newColors[key] = colorResult[key];
|
|
137
|
-
});
|
|
138
|
-
|
|
139
119
|
// Update Theme
|
|
140
120
|
Object.keys(themeResult).forEach(key => {
|
|
141
121
|
// ToDo: Find better solution
|
|
@@ -150,19 +130,17 @@ const ColorSchemeProvider = _ref => {
|
|
|
150
130
|
newTheme = theme;
|
|
151
131
|
}
|
|
152
132
|
setInternalTheme(newTheme);
|
|
153
|
-
setInternalColors(newColors);
|
|
154
133
|
}, [color, colorMode, colors, internalColor, internalColorMode, internalDesignSettings, internalParagraphFormat, secondaryColor, theme]);
|
|
155
134
|
const contextValue = useMemo(() => {
|
|
156
135
|
if (internalDesignSettings && internalParagraphFormat) {
|
|
157
136
|
return {
|
|
158
137
|
paragraphFormat: internalParagraphFormat,
|
|
159
138
|
designSettings: internalDesignSettings,
|
|
160
|
-
colors: internalColors,
|
|
161
139
|
theme: internalTheme
|
|
162
140
|
};
|
|
163
141
|
}
|
|
164
142
|
return undefined;
|
|
165
|
-
}, [
|
|
143
|
+
}, [internalDesignSettings, internalParagraphFormat, internalTheme]);
|
|
166
144
|
return /*#__PURE__*/React.createElement(ThemeProvider, {
|
|
167
145
|
theme: internalTheme
|
|
168
146
|
}, /*#__PURE__*/React.createElement(ColorSchemeContext.Provider, {
|
|
@@ -170,13 +148,11 @@ const ColorSchemeProvider = _ref => {
|
|
|
170
148
|
}, /*#__PURE__*/React.createElement(Helmet, null, /*#__PURE__*/React.createElement("link", {
|
|
171
149
|
rel: "stylesheet",
|
|
172
150
|
href: "https://api.chayns-static.space/font/NotoColorEmoji/v1/font.css"
|
|
173
|
-
})), /*#__PURE__*/React.createElement(
|
|
151
|
+
})), /*#__PURE__*/React.createElement(StyledColorSchemeProvider, {
|
|
174
152
|
className: "color-scheme-provider",
|
|
175
153
|
style: {
|
|
176
|
-
...internalColors,
|
|
177
154
|
...cssVariables,
|
|
178
|
-
...style
|
|
179
|
-
color: 'var(--chayns-color--text)'
|
|
155
|
+
...style
|
|
180
156
|
}
|
|
181
157
|
}, children), /*#__PURE__*/React.createElement(GlobalStyle, null)));
|
|
182
158
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorSchemeProvider.js","names":["getAvailableColorList","getColorFromPalette","hexToRgb255","useSite","React","createContext","useContext","useEffect","useMemo","useState","Helmet","createGlobalStyle","ThemeProvider","getDesignSettings","getParagraphFormat","convertIconStyle","getFontSize","getHeadlineColorSelector","ColorMode","GlobalStyle","ColorSchemeContext","undefined","useColorScheme","ColorSchemeProvider","_ref","children","color","colorMode","cssVariables","secondaryColor","siteId","style","paragraphFormat","designSettings","theme","colors","internalColors","setInternalColors","internalTheme","setInternalTheme","internalDesignSettings","setInternalDesignSettings","internalParagraphFormat","setInternalParagraphFormat","internalColor","internalColorMode","then","result","newColors","newTheme","availableColors","forEach","colorName","hexColor","rgbColor","r","g","b","Light","Dark","Object","keys","key","iconStyle","colorResult","themeResult","fontSize","contextValue","createElement","Provider","value","rel","href","className","displayName"],"sources":["../../../../src/components/color-scheme-provider/ColorSchemeProvider.tsx"],"sourcesContent":["import { getAvailableColorList, getColorFromPalette, hexToRgb255 } from '@chayns/colors';\nimport { useSite } from 'chayns-api';\nimport React, {\n createContext,\n FC,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { Helmet } from 'react-helmet';\nimport { createGlobalStyle, ThemeProvider } from 'styled-components';\nimport { getDesignSettings, getParagraphFormat } from '../../api/theme/get';\nimport type { DesignSettings, ParagraphFormat } from '../../types/colorSchemeProvider';\nimport { convertIconStyle, getFontSize, getHeadlineColorSelector } from '../../utils/font';\n\nenum ColorMode {\n Classic,\n Dark,\n Light,\n}\n\nexport type ColorSchemeProviderProps = {\n /**\n * The content of the application or the components for which the styles should be set\n */\n children: ReactNode;\n /**\n * The hex color to be used for the children\n */\n color?: string;\n /**\n * The colors of the components\n */\n colors?: Theme;\n /**\n * The color mode to be used for the children\n */\n colorMode?: ColorMode;\n /**\n * Css variables to be added in addition to the chayns variables\n */\n cssVariables?: { [key: string]: string | number };\n /**\n * The design settings of a page.\n */\n designSettings?: DesignSettings;\n /**\n * The general format settings.\n */\n paragraphFormat?: ParagraphFormat[];\n /**\n * The secondary hex color to be used for the children\n */\n secondaryColor?: string;\n /**\n * The site id of the page for which the design settings should be fetched\n */\n siteId?: string;\n /**\n * Additional styles set on the root element\n */\n style?: { [key: string]: string | number };\n /**\n * The theme for the components\n */\n theme?: Theme;\n};\n\nexport interface Theme {\n [key: string]: string;\n}\n\nexport type WithTheme<T> = T & {\n theme: Theme;\n};\n\n// ToDo remove type after the framer-motion bug is Fixed\nexport type FramerMotionBugFix = WithTheme<unknown>;\n\nconst GlobalStyle = createGlobalStyle`\n .ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n\nexport interface ColorSchemeContextProps {\n designSettings: DesignSettings;\n paragraphFormat: ParagraphFormat[];\n colors: Theme;\n theme: Theme;\n}\n\nexport const ColorSchemeContext = createContext<ColorSchemeContextProps | undefined>(undefined);\n\nexport const useColorScheme = () => useContext(ColorSchemeContext);\n\nconst ColorSchemeProvider: FC<ColorSchemeProviderProps> = ({\n children,\n color,\n colorMode,\n cssVariables = {},\n secondaryColor,\n siteId,\n style = {},\n paragraphFormat,\n designSettings,\n theme,\n colors,\n}) => {\n const [internalColors, setInternalColors] = useState<Theme>(colors ?? {});\n const [internalTheme, setInternalTheme] = useState<Theme>(theme ?? {});\n const [internalDesignSettings, setInternalDesignSettings] = useState<DesignSettings>();\n const [internalParagraphFormat, setInternalParagraphFormat] = useState<ParagraphFormat[]>();\n\n // Empty object is used to prevent error if ColorSchemeProvider is rendered on server\n const { color: internalColor, colorMode: internalColorMode } = useSite() ?? {};\n\n useEffect(() => {\n if (designSettings) {\n setInternalDesignSettings(designSettings);\n } else if (!internalDesignSettings) {\n void getDesignSettings(siteId).then((result) => {\n setInternalDesignSettings(result);\n });\n }\n }, [designSettings, internalDesignSettings, siteId]);\n\n useEffect(() => {\n if (paragraphFormat) {\n setInternalParagraphFormat(paragraphFormat);\n } else if (!internalParagraphFormat) {\n void getParagraphFormat(siteId).then((result) => {\n setInternalParagraphFormat(result);\n });\n }\n }, [internalParagraphFormat, paragraphFormat, siteId]);\n\n useEffect(() => {\n let newColors: Theme = {};\n let newTheme: Theme = {};\n\n const availableColors = getAvailableColorList();\n\n if (!colors || !theme) {\n availableColors.forEach((colorName: string) => {\n const hexColor = getColorFromPalette(colorName, {\n color: color ?? internalColor,\n colorMode: colorMode ?? internalColorMode,\n secondaryColor,\n });\n\n if (hexColor) {\n const rgbColor = hexToRgb255(hexColor);\n\n if (!theme) {\n newTheme[colorName] = hexColor;\n }\n\n if (!colors) {\n newColors[`--chayns-color--${colorName}`] = hexColor;\n }\n\n if (rgbColor) {\n if (!theme) {\n newTheme[`${colorName}-rgb`] =\n `${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}`;\n }\n\n if (!colors) {\n newColors[`--chayns-color-rgb--${colorName}`] =\n `${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}`;\n }\n }\n }\n });\n }\n\n if (colors) {\n newColors = colors;\n }\n\n if (!theme) {\n switch (colorMode ?? internalColorMode) {\n case ColorMode.Light:\n newTheme.colorMode = 'light';\n break;\n case ColorMode.Dark:\n newTheme.colorMode = 'dark';\n break;\n default:\n newTheme.colorMode = 'classic';\n break;\n }\n\n if (internalDesignSettings) {\n Object.keys(internalDesignSettings).forEach((key) => {\n if (key === 'iconStyle') {\n newTheme[key] = convertIconStyle(internalDesignSettings.iconStyle);\n\n return;\n }\n\n // ToDo: Find better solution\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n newTheme[key] = internalDesignSettings[key];\n });\n }\n\n if (internalParagraphFormat) {\n const { colorResult, themeResult } =\n getHeadlineColorSelector(internalParagraphFormat);\n\n // Update chayns-colors\n Object.keys(colorResult).forEach((key) => {\n // ToDo: Find better solution\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n newColors[key] = colorResult[key];\n });\n\n // Update Theme\n Object.keys(themeResult).forEach((key) => {\n // ToDo: Find better solution\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n newTheme[key] = themeResult[key];\n });\n }\n\n newTheme.fontSize = getFontSize();\n } else {\n newTheme = theme;\n }\n\n setInternalTheme(newTheme);\n setInternalColors(newColors);\n }, [\n color,\n colorMode,\n colors,\n internalColor,\n internalColorMode,\n internalDesignSettings,\n internalParagraphFormat,\n secondaryColor,\n theme,\n ]);\n\n const contextValue: ColorSchemeContextProps | undefined = useMemo(() => {\n if (internalDesignSettings && internalParagraphFormat) {\n return {\n paragraphFormat: internalParagraphFormat,\n designSettings: internalDesignSettings,\n colors: internalColors,\n theme: internalTheme,\n };\n }\n\n return undefined;\n }, [internalColors, internalDesignSettings, internalParagraphFormat, internalTheme]);\n\n return (\n <ThemeProvider theme={internalTheme}>\n <ColorSchemeContext.Provider value={contextValue}>\n <Helmet>\n <link\n rel=\"stylesheet\"\n href=\"https://api.chayns-static.space/font/NotoColorEmoji/v1/font.css\"\n />\n </Helmet>\n <div\n className=\"color-scheme-provider\"\n style={{\n ...internalColors,\n ...cssVariables,\n ...style,\n color: 'var(--chayns-color--text)',\n }}\n >\n {children}\n </div>\n <GlobalStyle />\n </ColorSchemeContext.Provider>\n </ThemeProvider>\n );\n};\n\nColorSchemeProvider.displayName = 'ColorSchemeProvider';\n\nexport default ColorSchemeProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ColorSchemeProvider.js","names":["getAvailableColorList","getColorFromPalette","hexToRgb255","useSite","React","createContext","useContext","useEffect","useMemo","useState","Helmet","createGlobalStyle","ThemeProvider","getDesignSettings","getParagraphFormat","convertIconStyle","getFontSize","getHeadlineColorSelector","StyledColorSchemeProvider","ColorMode","GlobalStyle","ColorSchemeContext","undefined","useColorScheme","ColorSchemeProvider","_ref","children","color","colorMode","cssVariables","secondaryColor","siteId","style","paragraphFormat","designSettings","theme","colors","internalTheme","setInternalTheme","internalDesignSettings","setInternalDesignSettings","internalParagraphFormat","setInternalParagraphFormat","internalColor","internalColorMode","then","result","newTheme","availableColors","forEach","colorName","hexColor","rgbColor","r","g","b","Light","Dark","Object","keys","key","iconStyle","themeResult","fontSize","contextValue","createElement","Provider","value","rel","href","className","displayName"],"sources":["../../../../src/components/color-scheme-provider/ColorSchemeProvider.tsx"],"sourcesContent":["import { getAvailableColorList, getColorFromPalette, hexToRgb255 } from '@chayns/colors';\nimport { useSite } from 'chayns-api';\nimport React, {\n createContext,\n FC,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { Helmet } from 'react-helmet';\nimport { createGlobalStyle, ThemeProvider } from 'styled-components';\nimport { getDesignSettings, getParagraphFormat } from '../../api/theme/get';\nimport type { DesignSettings, ParagraphFormat } from '../../types/colorSchemeProvider';\nimport { convertIconStyle, getFontSize, getHeadlineColorSelector } from '../../utils/font';\nimport { StyledColorSchemeProvider } from './ColorSchemeProvider.styles';\n\nenum ColorMode {\n Classic,\n Dark,\n Light,\n}\n\nexport type ColorSchemeProviderProps = {\n /**\n * The content of the application or the components for which the styles should be set\n */\n children: ReactNode;\n /**\n * The hex color to be used for the children\n */\n color?: string;\n /**\n * The colors of the components\n */\n colors?: Theme;\n /**\n * The color mode to be used for the children\n */\n colorMode?: ColorMode;\n /**\n * Css variables to be added in addition to the chayns variables\n */\n cssVariables?: { [key: string]: string | number };\n /**\n * The design settings of a page.\n */\n designSettings?: DesignSettings;\n /**\n * The general format settings.\n */\n paragraphFormat?: ParagraphFormat[];\n /**\n * The secondary hex color to be used for the children\n */\n secondaryColor?: string;\n /**\n * The site id of the page for which the design settings should be fetched\n */\n siteId?: string;\n /**\n * Additional styles set on the root element\n */\n style?: { [key: string]: string | number };\n /**\n * The theme for the components\n */\n theme?: Theme;\n};\n\nexport interface Theme {\n [key: string]: string;\n}\n\nexport type WithTheme<T> = T & {\n theme: Theme;\n};\n\n// ToDo remove type after the framer-motion bug is Fixed\nexport type FramerMotionBugFix = WithTheme<unknown>;\n\nconst GlobalStyle = createGlobalStyle`\n .ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n\nexport interface ColorSchemeContextProps {\n designSettings: DesignSettings;\n paragraphFormat: ParagraphFormat[];\n theme: Theme;\n}\n\nexport const ColorSchemeContext = createContext<ColorSchemeContextProps | undefined>(undefined);\n\nexport const useColorScheme = () => useContext(ColorSchemeContext);\n\nconst ColorSchemeProvider: FC<ColorSchemeProviderProps> = ({\n children,\n color,\n colorMode,\n cssVariables = {},\n secondaryColor,\n siteId,\n style = {},\n paragraphFormat,\n designSettings,\n theme,\n colors,\n}) => {\n const [internalTheme, setInternalTheme] = useState<Theme>(theme ?? {});\n const [internalDesignSettings, setInternalDesignSettings] = useState<DesignSettings>();\n const [internalParagraphFormat, setInternalParagraphFormat] = useState<ParagraphFormat[]>();\n\n // Empty object is used to prevent error if ColorSchemeProvider is rendered on server\n const { color: internalColor, colorMode: internalColorMode } = useSite() ?? {};\n\n useEffect(() => {\n if (designSettings) {\n setInternalDesignSettings(designSettings);\n } else if (!internalDesignSettings) {\n void getDesignSettings(siteId).then((result) => {\n setInternalDesignSettings(result);\n });\n }\n }, [designSettings, internalDesignSettings, siteId]);\n\n useEffect(() => {\n if (paragraphFormat) {\n setInternalParagraphFormat(paragraphFormat);\n } else if (!internalParagraphFormat) {\n void getParagraphFormat(siteId).then((result) => {\n setInternalParagraphFormat(result);\n });\n }\n }, [internalParagraphFormat, paragraphFormat, siteId]);\n\n useEffect(() => {\n let newTheme: Theme = {};\n\n const availableColors = getAvailableColorList();\n\n if (!colors || !theme) {\n availableColors.forEach((colorName: string) => {\n const hexColor = getColorFromPalette(colorName, {\n color: color ?? internalColor,\n colorMode: colorMode ?? internalColorMode,\n secondaryColor,\n });\n\n if (hexColor) {\n const rgbColor = hexToRgb255(hexColor);\n\n if (!theme) {\n newTheme[colorName] = hexColor;\n }\n\n if (rgbColor) {\n if (!theme) {\n newTheme[`${colorName}-rgb`] =\n `${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b}`;\n }\n }\n }\n });\n }\n\n if (!theme) {\n switch (colorMode ?? internalColorMode) {\n case ColorMode.Light:\n newTheme.colorMode = 'light';\n break;\n case ColorMode.Dark:\n newTheme.colorMode = 'dark';\n break;\n default:\n newTheme.colorMode = 'classic';\n break;\n }\n\n if (internalDesignSettings) {\n Object.keys(internalDesignSettings).forEach((key) => {\n if (key === 'iconStyle') {\n newTheme[key] = convertIconStyle(internalDesignSettings.iconStyle);\n\n return;\n }\n\n // ToDo: Find better solution\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n newTheme[key] = internalDesignSettings[key];\n });\n }\n\n if (internalParagraphFormat) {\n const { themeResult } = getHeadlineColorSelector(internalParagraphFormat);\n\n // Update Theme\n Object.keys(themeResult).forEach((key) => {\n // ToDo: Find better solution\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n newTheme[key] = themeResult[key];\n });\n }\n\n newTheme.fontSize = getFontSize();\n } else {\n newTheme = theme;\n }\n\n setInternalTheme(newTheme);\n }, [\n color,\n colorMode,\n colors,\n internalColor,\n internalColorMode,\n internalDesignSettings,\n internalParagraphFormat,\n secondaryColor,\n theme,\n ]);\n\n const contextValue: ColorSchemeContextProps | undefined = useMemo(() => {\n if (internalDesignSettings && internalParagraphFormat) {\n return {\n paragraphFormat: internalParagraphFormat,\n designSettings: internalDesignSettings,\n theme: internalTheme,\n };\n }\n\n return undefined;\n }, [internalDesignSettings, internalParagraphFormat, internalTheme]);\n\n return (\n <ThemeProvider theme={internalTheme}>\n <ColorSchemeContext.Provider value={contextValue}>\n <Helmet>\n <link\n rel=\"stylesheet\"\n href=\"https://api.chayns-static.space/font/NotoColorEmoji/v1/font.css\"\n />\n </Helmet>\n <StyledColorSchemeProvider\n className=\"color-scheme-provider\"\n style={{\n ...cssVariables,\n ...style,\n }}\n >\n {children}\n </StyledColorSchemeProvider>\n <GlobalStyle />\n </ColorSchemeContext.Provider>\n </ThemeProvider>\n );\n};\n\nColorSchemeProvider.displayName = 'ColorSchemeProvider';\n\nexport default ColorSchemeProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getAvailableColorList } from '@chayns/colors';
|
|
2
|
+
import { styled } from 'styled-components';
|
|
3
|
+
export const StyledColorSchemeProvider = styled.div`
|
|
4
|
+
color: var(--chayns-color--text);
|
|
5
|
+
${props => getAvailableColorList().map(colorName => {
|
|
6
|
+
const colorNameRgb = `${colorName}-rgb`;
|
|
7
|
+
return [`--chayns-color--${colorName}: ${props.theme[colorName]};`, `--chayns-color-rgb--${colorName}: ${props.theme[colorNameRgb]};`];
|
|
8
|
+
})}
|
|
9
|
+
`;
|
|
10
|
+
//# sourceMappingURL=ColorSchemeProvider.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorSchemeProvider.styles.js","names":["getAvailableColorList","styled","StyledColorSchemeProvider","div","props","map","colorName","colorNameRgb","theme"],"sources":["../../../../src/components/color-scheme-provider/ColorSchemeProvider.styles.ts"],"sourcesContent":["import { getAvailableColorList } from '@chayns/colors';\nimport { styled } from 'styled-components';\n\nexport const StyledColorSchemeProvider = styled.div`\n color: var(--chayns-color--text);\n ${(props) =>\n getAvailableColorList().map((colorName: string) => {\n const colorNameRgb = `${colorName}-rgb`;\n return [\n `--chayns-color--${colorName}: ${props.theme[colorName]};`,\n `--chayns-color-rgb--${colorName}: ${props.theme[colorNameRgb]};`,\n ];\n })}\n`;\n"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,gBAAgB;AACtD,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,MAAMC,yBAAyB,GAAGD,MAAM,CAACE,GAAG;AACnD;AACA,MAAOC,KAAK,IACJJ,qBAAqB,CAAC,CAAC,CAACK,GAAG,CAAEC,SAAiB,IAAK;EAC/C,MAAMC,YAAY,GAAG,GAAGD,SAAS,MAAM;EACvC,OAAO,CACH,mBAAmBA,SAAS,KAAKF,KAAK,CAACI,KAAK,CAACF,SAAS,CAAC,GAAG,EAC1D,uBAAuBA,SAAS,KAAKF,KAAK,CAACI,KAAK,CAACD,YAAY,CAAC,GAAG,CACpE;AACL,CAAC,CAAC;AACV,CAAC","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { getEnvironment } from 'chayns-api';
|
|
1
2
|
import React, { useEffect, useState } from 'react';
|
|
2
3
|
import { createGlobalStyle } from 'styled-components';
|
|
3
|
-
import {
|
|
4
|
+
import { getUsableHeight } from '../../utils/pageProvider';
|
|
4
5
|
import ColorSchemeProvider from '../color-scheme-provider/ColorSchemeProvider';
|
|
5
6
|
import { StyledPageProvider } from './PageProvider.styles';
|
|
6
7
|
const GlobalStyle = createGlobalStyle`
|
|
@@ -21,26 +22,19 @@ const PageProvider = _ref => {
|
|
|
21
22
|
shouldRemovePadding,
|
|
22
23
|
shouldUseUsableHeight
|
|
23
24
|
} = _ref;
|
|
25
|
+
const {
|
|
26
|
+
runtimeEnvironment
|
|
27
|
+
} = getEnvironment();
|
|
28
|
+
const shouldUsePadding = !shouldRemovePadding && ![4, 5, 6].includes(runtimeEnvironment);
|
|
24
29
|
const [usableHeight, setUsableHeight] = useState(0);
|
|
25
|
-
const [padding, setPadding] = useState(shouldRemovePadding ? 0 : getPagePadding());
|
|
26
30
|
useEffect(() => {
|
|
27
31
|
void getUsableHeight(shouldRemovePadding).then(height => {
|
|
28
32
|
setUsableHeight(height);
|
|
29
33
|
});
|
|
30
34
|
}, [shouldRemovePadding]);
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
const handleResize = () => {
|
|
33
|
-
setPadding(shouldRemovePadding ? 0 : getPagePadding());
|
|
34
|
-
};
|
|
35
|
-
handleResize();
|
|
36
|
-
window.addEventListener('resize', handleResize);
|
|
37
|
-
return () => {
|
|
38
|
-
window.removeEventListener('resize', handleResize);
|
|
39
|
-
};
|
|
40
|
-
}, [shouldRemovePadding]);
|
|
41
35
|
return /*#__PURE__*/React.createElement(StyledPageProvider, {
|
|
42
36
|
className: "page-provider",
|
|
43
|
-
$
|
|
37
|
+
$shouldUsePadding: shouldUsePadding,
|
|
44
38
|
$usableHeight: shouldUseUsableHeight ? usableHeight : undefined
|
|
45
39
|
}, /*#__PURE__*/React.createElement(ColorSchemeProvider, {
|
|
46
40
|
color: color,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageProvider.js","names":["React","useEffect","useState","createGlobalStyle","
|
|
1
|
+
{"version":3,"file":"PageProvider.js","names":["getEnvironment","React","useEffect","useState","createGlobalStyle","getUsableHeight","ColorSchemeProvider","StyledPageProvider","GlobalStyle","PageProvider","_ref","children","color","colorMode","cssVariables","secondaryColor","siteId","style","designSettings","shouldRemovePadding","shouldUseUsableHeight","runtimeEnvironment","shouldUsePadding","includes","usableHeight","setUsableHeight","then","height","createElement","className","$shouldUsePadding","$usableHeight","undefined","displayName"],"sources":["../../../../src/components/page-provider/PageProvider.tsx"],"sourcesContent":["import { getEnvironment } from 'chayns-api';\nimport React, { FC, useEffect, useState } from 'react';\nimport { createGlobalStyle } from 'styled-components';\nimport { getUsableHeight } from '../../utils/pageProvider';\nimport ColorSchemeProvider, {\n type ColorSchemeProviderProps,\n} from '../color-scheme-provider/ColorSchemeProvider';\nimport { StyledPageProvider } from './PageProvider.styles';\n\ninterface PageProviderProps extends ColorSchemeProviderProps {\n /**\n * Whether the padding should be removed.\n */\n shouldRemovePadding?: boolean;\n /**\n * Whether the usable height should be used.\n */\n shouldUseUsableHeight?: boolean;\n}\n\nconst GlobalStyle = createGlobalStyle`\n *, *::before, *::after {\n box-sizing: border-box;\n }\n`;\n\nconst PageProvider: FC<PageProviderProps> = ({\n children,\n color,\n colorMode,\n cssVariables = {},\n secondaryColor,\n siteId,\n style = {},\n designSettings,\n shouldRemovePadding,\n shouldUseUsableHeight,\n}) => {\n const { runtimeEnvironment } = getEnvironment();\n const shouldUsePadding =\n !shouldRemovePadding && ![4, 5, 6].includes(runtimeEnvironment as number);\n const [usableHeight, setUsableHeight] = useState(0);\n\n useEffect(() => {\n void getUsableHeight(shouldRemovePadding).then((height) => {\n setUsableHeight(height);\n });\n }, [shouldRemovePadding]);\n\n return (\n <StyledPageProvider\n className=\"page-provider\"\n $shouldUsePadding={shouldUsePadding}\n $usableHeight={shouldUseUsableHeight ? usableHeight : undefined}\n >\n <ColorSchemeProvider\n color={color}\n secondaryColor={secondaryColor}\n colorMode={colorMode}\n style={shouldUseUsableHeight ? { ...style, height: '100%' } : style}\n siteId={siteId}\n designSettings={designSettings}\n cssVariables={cssVariables}\n >\n {children}\n </ColorSchemeProvider>\n <GlobalStyle />\n </StyledPageProvider>\n );\n};\nPageProvider.displayName = 'PageProvider';\n\nexport default PageProvider;\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,YAAY;AAC3C,OAAOC,KAAK,IAAQC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AACtD,SAASC,iBAAiB,QAAQ,mBAAmB;AACrD,SAASC,eAAe,QAAQ,0BAA0B;AAC1D,OAAOC,mBAAmB,MAEnB,8CAA8C;AACrD,SAASC,kBAAkB,QAAQ,uBAAuB;AAa1D,MAAMC,WAAW,GAAGJ,iBAAiB;AACrC;AACA;AACA;AACA,CAAC;AAED,MAAMK,YAAmC,GAAGC,IAAA,IAWtC;EAAA,IAXuC;IACzCC,QAAQ;IACRC,KAAK;IACLC,SAAS;IACTC,YAAY,GAAG,CAAC,CAAC;IACjBC,cAAc;IACdC,MAAM;IACNC,KAAK,GAAG,CAAC,CAAC;IACVC,cAAc;IACdC,mBAAmB;IACnBC;EACJ,CAAC,GAAAV,IAAA;EACG,MAAM;IAAEW;EAAmB,CAAC,GAAGrB,cAAc,CAAC,CAAC;EAC/C,MAAMsB,gBAAgB,GAClB,CAACH,mBAAmB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAACI,QAAQ,CAACF,kBAA4B,CAAC;EAC7E,MAAM,CAACG,YAAY,EAAEC,eAAe,CAAC,GAAGtB,QAAQ,CAAC,CAAC,CAAC;EAEnDD,SAAS,CAAC,MAAM;IACZ,KAAKG,eAAe,CAACc,mBAAmB,CAAC,CAACO,IAAI,CAAEC,MAAM,IAAK;MACvDF,eAAe,CAACE,MAAM,CAAC;IAC3B,CAAC,CAAC;EACN,CAAC,EAAE,CAACR,mBAAmB,CAAC,CAAC;EAEzB,oBACIlB,KAAA,CAAA2B,aAAA,CAACrB,kBAAkB;IACfsB,SAAS,EAAC,eAAe;IACzBC,iBAAiB,EAAER,gBAAiB;IACpCS,aAAa,EAAEX,qBAAqB,GAAGI,YAAY,GAAGQ;EAAU,gBAEhE/B,KAAA,CAAA2B,aAAA,CAACtB,mBAAmB;IAChBM,KAAK,EAAEA,KAAM;IACbG,cAAc,EAAEA,cAAe;IAC/BF,SAAS,EAAEA,SAAU;IACrBI,KAAK,EAAEG,qBAAqB,GAAG;MAAE,GAAGH,KAAK;MAAEU,MAAM,EAAE;IAAO,CAAC,GAAGV,KAAM;IACpED,MAAM,EAAEA,MAAO;IACfE,cAAc,EAAEA,cAAe;IAC/BJ,YAAY,EAAEA;EAAa,GAE1BH,QACgB,CAAC,eACtBV,KAAA,CAAA2B,aAAA,CAACpB,WAAW,MAAE,CACE,CAAC;AAE7B,CAAC;AACDC,YAAY,CAACwB,WAAW,GAAG,cAAc;AAEzC,eAAexB,YAAY","ignoreList":[]}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import styled from 'styled-components';
|
|
2
2
|
export const StyledPageProvider = styled.div`
|
|
3
|
-
|
|
4
|
-
let {
|
|
5
|
-
$padding
|
|
6
|
-
} = _ref;
|
|
7
|
-
return $padding;
|
|
8
|
-
}};
|
|
9
|
-
height: ${_ref2 => {
|
|
3
|
+
height: ${_ref => {
|
|
10
4
|
let {
|
|
11
5
|
$usableHeight
|
|
12
|
-
} =
|
|
6
|
+
} = _ref;
|
|
13
7
|
return $usableHeight ? `${$usableHeight}px` : undefined;
|
|
14
8
|
}};
|
|
15
9
|
position: relative;
|
|
10
|
+
${_ref2 => {
|
|
11
|
+
let {
|
|
12
|
+
$shouldUsePadding
|
|
13
|
+
} = _ref2;
|
|
14
|
+
return $shouldUsePadding ? `
|
|
15
|
+
padding: 15px 10px 20px;
|
|
16
|
+
@media screen and (min-width: 33.5em) {
|
|
17
|
+
padding: 35px 43px 30px;
|
|
18
|
+
}
|
|
19
|
+
` : 'padding: 0px;';
|
|
20
|
+
}}
|
|
16
21
|
|
|
17
22
|
.color-scheme-provider:first-child:not(td) {
|
|
18
23
|
& > h1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageProvider.styles.js","names":["styled","StyledPageProvider","div","_ref","$
|
|
1
|
+
{"version":3,"file":"PageProvider.styles.js","names":["styled","StyledPageProvider","div","_ref","$usableHeight","undefined","_ref2","$shouldUsePadding"],"sources":["../../../../src/components/page-provider/PageProvider.styles.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport styled from 'styled-components';\n\ntype StyledPageProviderProps = {\n $shouldUsePadding?: boolean;\n $usableHeight?: CSSProperties['height'];\n};\n\nexport const StyledPageProvider = styled.div<StyledPageProviderProps>`\n height: ${({ $usableHeight }) => ($usableHeight ? `${$usableHeight}px` : undefined)};\n position: relative;\n ${({ $shouldUsePadding }) =>\n $shouldUsePadding\n ? `\n padding: 15px 10px 20px;\n @media screen and (min-width: 33.5em) {\n padding: 35px 43px 30px;\n }\n `\n : 'padding: 0px;'}\n\n .color-scheme-provider:first-child:not(td) {\n & > h1,\n & > .h1,\n & > h2,\n & > .h2,\n & > h3,\n & > .h3,\n & > h4,\n & > .h4,\n & > h5,\n & > .h5 {\n &:first-of-type:first-child {\n margin-top: 0;\n }\n }\n }\n`;\n"],"mappings":"AACA,OAAOA,MAAM,MAAM,mBAAmB;AAOtC,OAAO,MAAMC,kBAAkB,GAAGD,MAAM,CAACE,GAA4B;AACrE,cAAcC,IAAA;EAAA,IAAC;IAAEC;EAAc,CAAC,GAAAD,IAAA;EAAA,OAAMC,aAAa,GAAG,GAAGA,aAAa,IAAI,GAAGC,SAAS;AAAA,CAAC;AACvF;AACA,MAAMC,KAAA;EAAA,IAAC;IAAEC;EAAkB,CAAC,GAAAD,KAAA;EAAA,OACpBC,iBAAiB,GACX;AACd;AACA;AACA;AACA;AACA,KAAK,GACS,eAAe;AAAA;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -150,6 +150,14 @@ const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
150
150
|
list: list.filter(item => !(newMatchingItems.length === 1 && item.text === value))
|
|
151
151
|
};
|
|
152
152
|
});
|
|
153
|
+
console.debug('SearchBox activeList', {
|
|
154
|
+
lists,
|
|
155
|
+
groups,
|
|
156
|
+
value,
|
|
157
|
+
newLists,
|
|
158
|
+
newMatchingItems,
|
|
159
|
+
filteredMatchingListItems
|
|
160
|
+
});
|
|
153
161
|
setMatchingListsItems(filteredMatchingListItems);
|
|
154
162
|
return newLists;
|
|
155
163
|
}, [groups, lists, shouldAddInputToList, value]);
|
|
@@ -572,6 +580,12 @@ const SearchBox = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
572
580
|
};
|
|
573
581
|
}, [handleKeyPress]);
|
|
574
582
|
useEffect(() => {
|
|
583
|
+
console.debug('SearchBox useEffect', {
|
|
584
|
+
newContainer,
|
|
585
|
+
isAnimating,
|
|
586
|
+
matchingListsItemsLength: matchingListsItems.length,
|
|
587
|
+
content
|
|
588
|
+
});
|
|
575
589
|
if (!newContainer) {
|
|
576
590
|
return;
|
|
577
591
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBox.js","names":["getDevice","AnimatePresence","React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","createPortal","useTheme","calculateContentHeight","searchList","Icon","Input","GroupName","SearchBoxBody","SearchBoxItem","StyledSearchBoxItemImage","StyledSearchBox","StyledSearchBoxIcon","StyledSearchBoxLeftWrapper","SearchBox","_ref","ref","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","matchingListsItems","setMatchingListsItems","selectedImage","setSelectedImage","value","setValue","isAnimating","setIsAnimating","height","setHeight","width","setWidth","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","boxRef","contentRef","inputRef","theme","browser","current","el","element","closest","Element","getBoundingClientRect","filterButtons","items","forEach","_ref2","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","_ref3","newList","searchString","undefined","filteredMatchingListItems","map","_ref4","filter","item","handleOpen","bodyHeight","handleClose","handleFilterButtonsGroupSelect","keys","handleOutsideClick","event","contains","target","document","addEventListener","window","removeEventListener","textArray","_ref5","_ref6","input","getElementById","getInputWidth","offsetWidth","ResizeObserver","observe","_ref7","selectedItem","find","_ref8","imageUrl","createElement","src","$shouldShowRoundImage","handleFocus","_ref9","_ref10","_ref11","_ref12","_ref13","toLowerCase","handleClick","rightElement","onClick","icons","color","leftElement","handleChange","filteredLists","_ref14","handleBlur","handleSelect","newItem","replace","content","_ref15","index","key","name","_ref16","handleKeyDown","e","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","textContent","attributes","nodeValue","handleKeyPress","keyCode","clear","initial","selectedGroups","coordinates","onGroupSelect","onFocus","displayName"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport { AnimatePresence } from 'framer-motion';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from 'styled-components';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState('');\n const [isAnimating, setIsAnimating] = useState(false);\n const [height, setHeight] = useState<number>(0);\n const [width, setWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const theme = useTheme();\n\n const { browser } = getDevice();\n\n useEffect(() => {\n if (boxRef.current && !container) {\n const el = boxRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n useEffect(() => {\n if (boxRef.current) {\n const { x, y } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y,\n });\n }\n }, []);\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter(\n (item) => !(newMatchingItems.length === 1 && item.text === value),\n ),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n if (boxRef.current) {\n const { x, y, height: bodyHeight } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y: y + bodyHeight,\n });\n\n setIsAnimating(true);\n }\n }, []);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This function closes the list of items\n */\n const handleOutsideClick = useCallback(\n (event: MouseEvent) => {\n if (\n boxRef.current &&\n !boxRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n handleClose();\n }\n },\n [handleClose],\n );\n\n /**\n * This hook listens for clicks\n */\n useEffect(() => {\n document.addEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n };\n }, [handleOutsideClick, boxRef, handleClose]);\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n /**\n * This hook calculates the width\n */\n useEffect(() => {\n const input = document.getElementById('search_box_input');\n\n const getInputWidth = () => {\n if (input) {\n setWidth(input.offsetWidth);\n }\n };\n\n if (input) {\n new ResizeObserver(getInputWidth).observe(input);\n }\n }, []);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId) {\n setValue('');\n }\n }, [selectedId]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter(\n (item) => !(newMatchingItems.length === 1 && item.text === value),\n ),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [activeList, handleOpen, shouldAddInputToList, shouldShowContentOnEmptyInput, value]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, isAnimating]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () => (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n isAnimating,\n matchingListsItems.length,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating && matchingListsItems.length !== 0 && (\n <SearchBoxBody\n filterButtons={filterButtons}\n selectedGroups={groups}\n width={width}\n coordinates={internalCoordinates}\n browser={browser?.name}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n browser?.name,\n newContainer,\n content,\n filterButtons,\n groups,\n height,\n internalCoordinates,\n isAnimating,\n width,\n shouldHideFilterButtons,\n matchingListsItems.length,\n ]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef}>\n <div id=\"search_box_input\">\n <Input\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {portal}\n </StyledSearchBox>\n ),\n [\n handleBlur,\n handleChange,\n handleFocus,\n leftElement,\n onKeyDown,\n placeholder,\n portal,\n rightElement,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SearchBox.js","names":["getDevice","AnimatePresence","React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","createPortal","useTheme","calculateContentHeight","searchList","Icon","Input","GroupName","SearchBoxBody","SearchBoxItem","StyledSearchBoxItemImage","StyledSearchBox","StyledSearchBoxIcon","StyledSearchBoxLeftWrapper","SearchBox","_ref","ref","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","matchingListsItems","setMatchingListsItems","selectedImage","setSelectedImage","value","setValue","isAnimating","setIsAnimating","height","setHeight","width","setWidth","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","portal","setPortal","internalCoordinates","setInternalCoordinates","x","y","newContainer","setNewContainer","boxRef","contentRef","inputRef","theme","browser","current","el","element","closest","Element","getBoundingClientRect","filterButtons","items","forEach","_ref2","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","_ref3","newList","searchString","undefined","filteredMatchingListItems","map","_ref4","filter","item","console","debug","handleOpen","bodyHeight","handleClose","handleFilterButtonsGroupSelect","keys","handleOutsideClick","event","contains","target","document","addEventListener","window","removeEventListener","textArray","_ref5","_ref6","input","getElementById","getInputWidth","offsetWidth","ResizeObserver","observe","_ref7","selectedItem","find","_ref8","imageUrl","createElement","src","$shouldShowRoundImage","handleFocus","_ref9","_ref10","_ref11","_ref12","_ref13","toLowerCase","handleClick","rightElement","onClick","icons","color","leftElement","handleChange","filteredLists","_ref14","handleBlur","handleSelect","newItem","replace","content","_ref15","index","key","name","_ref16","handleKeyDown","e","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","textContent","attributes","nodeValue","handleKeyPress","keyCode","clear","matchingListsItemsLength","initial","selectedGroups","coordinates","onGroupSelect","onFocus","displayName"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import { getDevice } from 'chayns-api';\nimport { AnimatePresence } from 'framer-motion';\nimport React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from 'styled-components';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { ContextMenuCoordinates } from '../context-menu/ContextMenu';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState('');\n const [isAnimating, setIsAnimating] = useState(false);\n const [height, setHeight] = useState<number>(0);\n const [width, setWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [portal, setPortal] = useState<ReactPortal>();\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n const [newContainer, setNewContainer] = useState<Element | null>(container ?? null);\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const theme = useTheme();\n\n const { browser } = getDevice();\n\n useEffect(() => {\n if (boxRef.current && !container) {\n const el = boxRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner') || el.closest('body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n useEffect(() => {\n if (boxRef.current) {\n const { x, y } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y,\n });\n }\n }, []);\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter(\n (item) => !(newMatchingItems.length === 1 && item.text === value),\n ),\n }));\n\n console.debug('SearchBox activeList', {\n lists,\n groups,\n value,\n newLists,\n newMatchingItems,\n filteredMatchingListItems,\n });\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n if (boxRef.current) {\n const { x, y, height: bodyHeight } = boxRef.current.getBoundingClientRect();\n\n setInternalCoordinates({\n x,\n y: y + bodyHeight,\n });\n\n setIsAnimating(true);\n }\n }, []);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This function closes the list of items\n */\n const handleOutsideClick = useCallback(\n (event: MouseEvent) => {\n if (\n boxRef.current &&\n !boxRef.current.contains(event.target as Node) &&\n contentRef.current &&\n !contentRef.current.contains(event.target as Node)\n ) {\n handleClose();\n }\n },\n [handleClose],\n );\n\n /**\n * This hook listens for clicks\n */\n useEffect(() => {\n document.addEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n window.addEventListener('blur', () => handleClose());\n };\n }, [handleOutsideClick, boxRef, handleClose]);\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n /**\n * This hook calculates the width\n */\n useEffect(() => {\n const input = document.getElementById('search_box_input');\n\n const getInputWidth = () => {\n if (input) {\n setWidth(input.offsetWidth);\n }\n };\n\n if (input) {\n new ResizeObserver(getInputWidth).observe(input);\n }\n }, []);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId) {\n setValue('');\n }\n }, [selectedId]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter(\n (item) => !(newMatchingItems.length === 1 && item.text === value),\n ),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [activeList, handleOpen, shouldAddInputToList, shouldShowContentOnEmptyInput, value]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, isAnimating]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () => (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n isAnimating,\n matchingListsItems.length,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n useEffect(() => {\n console.debug('SearchBox useEffect', {\n newContainer,\n isAnimating,\n matchingListsItemsLength: matchingListsItems.length,\n content,\n });\n\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isAnimating && matchingListsItems.length !== 0 && (\n <SearchBoxBody\n filterButtons={filterButtons}\n selectedGroups={groups}\n width={width}\n coordinates={internalCoordinates}\n browser={browser?.name}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n browser?.name,\n newContainer,\n content,\n filterButtons,\n groups,\n height,\n internalCoordinates,\n isAnimating,\n width,\n shouldHideFilterButtons,\n matchingListsItems.length,\n ]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef}>\n <div id=\"search_box_input\">\n <Input\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {portal}\n </StyledSearchBox>\n ),\n [\n handleBlur,\n handleChange,\n handleFocus,\n leftElement,\n onKeyDown,\n placeholder,\n portal,\n rightElement,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
|