@chayns-components/ranking 5.0.0-beta.1230 → 5.0.0-beta.1232
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/ranking/Ranking.js +6 -1
- package/lib/cjs/components/ranking/Ranking.js.map +1 -1
- package/lib/cjs/components/ranking/Ranking.styles.js +7 -1
- package/lib/cjs/components/ranking/Ranking.styles.js.map +1 -1
- package/lib/cjs/components/ranking/ranking-entry/RankingEntry.js +2 -2
- package/lib/cjs/components/ranking/ranking-entry/RankingEntry.js.map +1 -1
- package/lib/cjs/types/ranking.js.map +1 -1
- package/lib/esm/components/ranking/Ranking.js +8 -3
- package/lib/esm/components/ranking/Ranking.js.map +1 -1
- package/lib/esm/components/ranking/Ranking.styles.js +6 -0
- package/lib/esm/components/ranking/Ranking.styles.js.map +1 -1
- package/lib/esm/components/ranking/ranking-entry/RankingEntry.js +3 -3
- package/lib/esm/components/ranking/ranking-entry/RankingEntry.js.map +1 -1
- package/lib/esm/types/ranking.js.map +1 -1
- package/lib/types/components/ranking/Ranking.d.ts +8 -0
- package/lib/types/components/ranking/Ranking.styles.d.ts +1 -0
- package/lib/types/types/ranking.d.ts +2 -1
- package/package.json +2 -2
|
@@ -17,8 +17,10 @@ const Ranking = ({
|
|
|
17
17
|
onFriendAdd,
|
|
18
18
|
shouldShowOnlyFriends,
|
|
19
19
|
friendPersonIds,
|
|
20
|
+
isLoadingData,
|
|
20
21
|
onSearchChange,
|
|
21
22
|
searchValue,
|
|
23
|
+
onLoadMore,
|
|
22
24
|
onFriendVisibleChange
|
|
23
25
|
}) => {
|
|
24
26
|
const content = (0, _react.useMemo)(() => entries.map(({
|
|
@@ -54,7 +56,10 @@ const Ranking = ({
|
|
|
54
56
|
size: 15,
|
|
55
57
|
onClick: onFriendVisibleChange
|
|
56
58
|
})
|
|
57
|
-
}, /*#__PURE__*/_react.default.createElement(_core.AccordionGroup, null, content)
|
|
59
|
+
}, /*#__PURE__*/_react.default.createElement(_core.AccordionGroup, null, content), typeof onLoadMore === 'function' && /*#__PURE__*/_react.default.createElement(_core.AccordionContent, null, /*#__PURE__*/_react.default.createElement(_Ranking.StyledRankingLoadMoreButton, null, /*#__PURE__*/_react.default.createElement(_core.Button, {
|
|
60
|
+
onClick: onLoadMore,
|
|
61
|
+
shouldShowWaitCursor: isLoadingData
|
|
62
|
+
}, "Mehr"))))), [content, handleSearchChange, isLoadingData, onFriendVisibleChange, onLoadMore, searchValue, shouldShowOnlyFriends, title]);
|
|
58
63
|
};
|
|
59
64
|
Ranking.displayName = 'Ranking';
|
|
60
65
|
var _default = exports.default = Ranking;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ranking.js","names":["_react","_interopRequireWildcard","require","_Ranking","_core","_RankingEntry","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Ranking","title","entries","onFriendRemove","onFriendAdd","shouldShowOnlyFriends","friendPersonIds","onSearchChange","searchValue","onFriendVisibleChange","content","useMemo","map","entryContent","rank","personId","points","name","icons","createElement","key","isFriend","includes","handleSearchChange","useCallback","event","target","value","StyledRanking","Accordion","rightElement","Icon","size","onClick","AccordionGroup","displayName","_default","exports"],"sources":["../../../../src/components/ranking/Ranking.tsx"],"sourcesContent":["import React, { ChangeEvent, FC, useCallback, useMemo } from 'react';\nimport { StyledRanking } from './Ranking.styles';\nimport { IRankingEntry } from '../../types/ranking';\nimport { Accordion, AccordionGroup, Icon } from '@chayns-components/core';\nimport RankingEntry from './ranking-entry/RankingEntry';\n\nexport type RankingProps = {\n /**\n * Array of ranking entries to be displayed in the ranking list.\n */\n entries: IRankingEntry[];\n /**\n * Array of personIds that represent the user's friends.\n */\n friendPersonIds: string[];\n /**\n * Callback function triggered when a friend is added to the friends list.\n * @param personId - The ID of the person to be added as friend\n */\n onFriendAdd?: (personId: string) => void;\n /**\n * Callback function triggered when a friend is removed from the friends list.\n * @param personId - The ID of the person to be removed from friends\n */\n onFriendRemove?: (personId: string) => void;\n /**\n * Callback function triggered when the visibility of friends is toggled.\n */\n onFriendVisibleChange?: () => void;\n /**\n * Callback function triggered when the search input value changes.\n * @param value - The current search input value\n */\n onSearchChange?: (value: string) => void;\n /**\n * The current value of the search input field.\n */\n searchValue?: string;\n /**\n * Whether only the friends of the user should be displayed (filtering and fetching the correct data is done by you).\n */\n shouldShowOnlyFriends?: boolean;\n /**\n * The title of the top Accordion.\n */\n title?: string;\n};\n\nconst Ranking: FC<RankingProps> = ({\n title = 'Rangliste',\n entries,\n onFriendRemove,\n onFriendAdd,\n shouldShowOnlyFriends,\n friendPersonIds,\n onSearchChange,\n searchValue,\n onFriendVisibleChange,\n}) => {\n const content = useMemo(\n () =>\n entries.map(({ content: entryContent, rank, personId, points, name, icons }) => (\n <RankingEntry\n key={`ranking-entry--${personId}`}\n rank={rank}\n personId={personId}\n name={name}\n icons={icons}\n points={points}\n content={entryContent}\n onFriendAdd={onFriendAdd}\n onFriendRemove={onFriendRemove}\n isFriend={friendPersonIds?.includes(personId)}\n />\n )),\n [entries, friendPersonIds, onFriendAdd, onFriendRemove],\n );\n\n const handleSearchChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (typeof onSearchChange === 'function') {\n onSearchChange(event.target.value);\n }\n },\n [onSearchChange],\n );\n\n return useMemo(\n () => (\n <StyledRanking>\n <Accordion\n title={title}\n onSearchChange={handleSearchChange}\n searchValue={searchValue}\n rightElement={\n <Icon\n icons={shouldShowOnlyFriends ? ['fas fa-star'] : ['far fa-star']}\n size={15}\n onClick={onFriendVisibleChange}\n />\n }\n >\n <AccordionGroup>{content}</AccordionGroup>\n </Accordion>\n </StyledRanking>\n ),\n [\n content,\n handleSearchChange,\n onFriendVisibleChange,\n searchValue,\n shouldShowOnlyFriends,\n title,\n ],\n );\n};\n\nRanking.displayName = 'Ranking';\n\nexport default Ranking;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAAwD,SAAAI,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAV,uBAAA,YAAAA,CAAAM,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"Ranking.js","names":["_react","_interopRequireWildcard","require","_Ranking","_core","_RankingEntry","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Ranking","title","entries","onFriendRemove","onFriendAdd","shouldShowOnlyFriends","friendPersonIds","isLoadingData","onSearchChange","searchValue","onLoadMore","onFriendVisibleChange","content","useMemo","map","entryContent","rank","personId","points","name","icons","createElement","key","isFriend","includes","handleSearchChange","useCallback","event","target","value","StyledRanking","Accordion","rightElement","Icon","size","onClick","AccordionGroup","AccordionContent","StyledRankingLoadMoreButton","Button","shouldShowWaitCursor","displayName","_default","exports"],"sources":["../../../../src/components/ranking/Ranking.tsx"],"sourcesContent":["import React, { ChangeEvent, FC, useCallback, useMemo } from 'react';\nimport { StyledRanking, StyledRankingLoadMoreButton } from './Ranking.styles';\nimport { IRankingEntry } from '../../types/ranking';\nimport { Accordion, AccordionContent, AccordionGroup, Button, Icon } from '@chayns-components/core';\nimport RankingEntry from './ranking-entry/RankingEntry';\n\nexport type RankingProps = {\n /**\n * Array of ranking entries to be displayed in the ranking list.\n */\n entries: IRankingEntry[];\n /**\n * Array of personIds that represent the user's friends.\n */\n friendPersonIds: string[];\n /**\n * Whether new data is loading.\n */\n isLoadingData?: boolean;\n /**\n * Callback function triggered when a friend is added to the friends list.\n * @param personId - The ID of the person to be added as friend\n */\n onFriendAdd?: (personId: string) => void;\n /**\n * Callback function triggered when a friend is removed from the friends list.\n * @param personId - The ID of the person to be removed from friends\n */\n onFriendRemove?: (personId: string) => void;\n /**\n * Callback function triggered when the visibility of friends is toggled.\n */\n onFriendVisibleChange?: () => void;\n /**\n * Callback function when the load more button is clicked.\n */\n onLoadMore?: () => void;\n /**\n * Callback function triggered when the search input value changes.\n * @param value - The current search input value\n */\n onSearchChange?: (value: string) => void;\n /**\n * The current value of the search input field.\n */\n searchValue?: string;\n /**\n * Whether only the friends of the user should be displayed (filtering and fetching the correct data is done by you).\n */\n shouldShowOnlyFriends?: boolean;\n /**\n * The title of the top Accordion.\n */\n title?: string;\n};\n\nconst Ranking: FC<RankingProps> = ({\n title = 'Rangliste',\n entries,\n onFriendRemove,\n onFriendAdd,\n shouldShowOnlyFriends,\n friendPersonIds,\n isLoadingData,\n onSearchChange,\n searchValue,\n onLoadMore,\n onFriendVisibleChange,\n}) => {\n const content = useMemo(\n () =>\n entries.map(({ content: entryContent, rank, personId, points, name, icons }) => (\n <RankingEntry\n key={`ranking-entry--${personId}`}\n rank={rank}\n personId={personId}\n name={name}\n icons={icons}\n points={points}\n content={entryContent}\n onFriendAdd={onFriendAdd}\n onFriendRemove={onFriendRemove}\n isFriend={friendPersonIds?.includes(personId)}\n />\n )),\n [entries, friendPersonIds, onFriendAdd, onFriendRemove],\n );\n\n const handleSearchChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (typeof onSearchChange === 'function') {\n onSearchChange(event.target.value);\n }\n },\n [onSearchChange],\n );\n\n return useMemo(\n () => (\n <StyledRanking>\n <Accordion\n title={title}\n onSearchChange={handleSearchChange}\n searchValue={searchValue}\n rightElement={\n <Icon\n icons={shouldShowOnlyFriends ? ['fas fa-star'] : ['far fa-star']}\n size={15}\n onClick={onFriendVisibleChange}\n />\n }\n >\n <AccordionGroup>{content}</AccordionGroup>\n {typeof onLoadMore === 'function' && (\n <AccordionContent>\n <StyledRankingLoadMoreButton>\n <Button onClick={onLoadMore} shouldShowWaitCursor={isLoadingData}>\n Mehr\n </Button>\n </StyledRankingLoadMoreButton>\n </AccordionContent>\n )}\n </Accordion>\n </StyledRanking>\n ),\n [\n content,\n handleSearchChange,\n isLoadingData,\n onFriendVisibleChange,\n onLoadMore,\n searchValue,\n shouldShowOnlyFriends,\n title,\n ],\n );\n};\n\nRanking.displayName = 'Ranking';\n\nexport default Ranking;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,8 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.StyledRanking = void 0;
|
|
6
|
+
exports.StyledRankingLoadMoreButton = exports.StyledRanking = void 0;
|
|
7
7
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
8
8
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
const StyledRanking = exports.StyledRanking = _styledComponents.default.div``;
|
|
10
|
+
const StyledRankingLoadMoreButton = exports.StyledRankingLoadMoreButton = _styledComponents.default.div`
|
|
11
|
+
display: flex;
|
|
12
|
+
justify-content: center;
|
|
13
|
+
|
|
14
|
+
padding-top: 12px;
|
|
15
|
+
`;
|
|
10
16
|
//# sourceMappingURL=Ranking.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ranking.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledRanking","exports","styled","div"],"sources":["../../../../src/components/ranking/Ranking.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledRanking = styled.div``;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAGE,yBAAM,CAACC,GAAG,EAAE","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Ranking.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledRanking","exports","styled","div","StyledRankingLoadMoreButton"],"sources":["../../../../src/components/ranking/Ranking.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledRanking = styled.div``;\n\nexport const StyledRankingLoadMoreButton = styled.div`\n display: flex;\n justify-content: center;\n\n padding-top: 12px;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAGE,yBAAM,CAACC,GAAG,EAAE;AAElC,MAAMC,2BAA2B,GAAAH,OAAA,CAAAG,2BAAA,GAAGF,yBAAM,CAACC,GAAG;AACrD;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -31,9 +31,9 @@ const RankingEntry = ({
|
|
|
31
31
|
rightElement
|
|
32
32
|
} = (0, _react.useMemo)(() => {
|
|
33
33
|
const titleElement = /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement("strong", null, rank, ". "), fullName);
|
|
34
|
-
const rightElements = /*#__PURE__*/_react.default.createElement(_RankingEntry.StyledRankingEntryRightElement, null, /*#__PURE__*/_react.default.createElement(_RankingEntry.StyledRankingEntryRightElementPoints, null, points), icons && /*#__PURE__*/_react.default.createElement(_core.Icon, {
|
|
34
|
+
const rightElements = /*#__PURE__*/_react.default.createElement(_RankingEntry.StyledRankingEntryRightElement, null, /*#__PURE__*/_react.default.createElement(_RankingEntry.StyledRankingEntryRightElementPoints, null, points), icons && ! /*#__PURE__*/(0, _react.isValidElement)(icons) && /*#__PURE__*/_react.default.createElement(_core.Icon, {
|
|
35
35
|
icons: icons
|
|
36
|
-
}), /*#__PURE__*/_react.default.createElement(_core.Icon, {
|
|
36
|
+
}), icons && /*#__PURE__*/(0, _react.isValidElement)(icons) && icons, /*#__PURE__*/_react.default.createElement(_core.Icon, {
|
|
37
37
|
icons: isFriend ? ['fas fa-star'] : ['far fa-star'],
|
|
38
38
|
size: 15,
|
|
39
39
|
onClick: handleIconClick
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RankingEntry.js","names":["_react","_interopRequireWildcard","require","_RankingEntry","_core","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RankingEntry","rank","name","fullName","personId","icons","points","isFriend","content","onFriendRemove","onFriendAdd","handleIconClick","useCallback","title","rightElement","useMemo","titleElement","createElement","rightElements","StyledRankingEntryRightElement","StyledRankingEntryRightElementPoints","Icon","size","onClick","entryContent","map","value","headline","id","StyledRankingEntryContentHeadline","key","StyledRankingEntryContentEntry","StyledRankingEntryContentEntryName","StyledRankingEntryContentEntryValue","StyledRankingEntry","$shouldShowLines","Accordion","AccordionContent","StyledRankingEntryContent","StyledRankingEntryElement","StyledRankingEntryElementLeft","StyledRankingEntryElementRight","displayName","_default","exports"],"sources":["../../../../../src/components/ranking/ranking-entry/RankingEntry.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo } from 'react';\nimport {\n StyledRankingEntry,\n StyledRankingEntryContent,\n StyledRankingEntryContentEntry,\n StyledRankingEntryContentEntryName,\n StyledRankingEntryContentEntryValue,\n StyledRankingEntryContentHeadline,\n StyledRankingEntryElement,\n StyledRankingEntryElementLeft,\n StyledRankingEntryElementRight,\n StyledRankingEntryRightElement,\n StyledRankingEntryRightElementPoints,\n} from './RankingEntry.styles';\nimport { Accordion, AccordionContent, Icon } from '@chayns-components/core';\nimport { IRankingEntry, RankingContentEntry, RankingContentHeadline } from '../../../types/ranking';\n\nexport type RankingEntryProps = {\n onFriendAdd?: (personId: string) => void;\n onFriendRemove?: (personId: string) => void;\n isFriend?: boolean;\n content?: IRankingEntry['content'];\n rank: IRankingEntry['rank'];\n personId: IRankingEntry['personId'];\n points: IRankingEntry['points'];\n name: IRankingEntry['name'];\n icons: IRankingEntry['icons'];\n};\n\nconst RankingEntry: FC<RankingEntryProps> = ({\n rank,\n name: fullName,\n personId,\n icons,\n points,\n isFriend,\n content,\n onFriendRemove,\n onFriendAdd,\n}) => {\n const handleIconClick = useCallback(() => {\n if (isFriend && typeof onFriendRemove === 'function') {\n onFriendRemove(personId);\n } else if (typeof onFriendAdd === 'function') {\n onFriendAdd(personId);\n }\n }, [isFriend, onFriendAdd, onFriendRemove, personId]);\n\n const { title, rightElement } = useMemo(() => {\n const titleElement = (\n <span>\n <strong>{rank}. </strong>\n {fullName}\n </span>\n );\n\n const rightElements = (\n <StyledRankingEntryRightElement>\n <StyledRankingEntryRightElementPoints>\n {points}\n </StyledRankingEntryRightElementPoints>\n {icons && <Icon icons={icons} />}\n <Icon\n icons={isFriend ? ['fas fa-star'] : ['far fa-star']}\n size={15}\n onClick={handleIconClick}\n />\n </StyledRankingEntryRightElement>\n );\n\n return { title: titleElement, rightElement: rightElements };\n }, [handleIconClick, icons, isFriend, fullName, points, rank]);\n\n const entryContent = useMemo(() => {\n if (!content) return null;\n\n return (content as (RankingContentHeadline & RankingContentEntry)[]).map(\n ({ name, value, headline, id }) => {\n if (typeof headline === 'string') {\n return (\n <StyledRankingEntryContentHeadline key={id}>\n {headline}\n </StyledRankingEntryContentHeadline>\n );\n }\n\n return (\n <StyledRankingEntryContentEntry key={id}>\n <StyledRankingEntryContentEntryName>\n {name}\n </StyledRankingEntryContentEntryName>\n <StyledRankingEntryContentEntryValue>\n {value}\n </StyledRankingEntryContentEntryValue>\n </StyledRankingEntryContentEntry>\n );\n },\n );\n }, [content]);\n\n return useMemo(\n () => (\n <StyledRankingEntry $shouldShowLines={!entryContent}>\n {entryContent ? (\n <Accordion title=\"\" titleElement={title} rightElement={rightElement}>\n <AccordionContent>\n <StyledRankingEntryContent>{entryContent}</StyledRankingEntryContent>\n </AccordionContent>\n </Accordion>\n ) : (\n <StyledRankingEntryElement>\n <StyledRankingEntryElementLeft>{title}</StyledRankingEntryElementLeft>\n <StyledRankingEntryElementRight>\n {rightElement}\n </StyledRankingEntryElementRight>\n </StyledRankingEntryElement>\n )}\n </StyledRankingEntry>\n ),\n [entryContent, rightElement, title],\n );\n};\n\nRankingEntry.displayName = 'RankingEntry';\n\nexport default RankingEntry;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAaA,IAAAE,KAAA,GAAAF,OAAA;AAA4E,SAAAD,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAe5E,MAAMkB,YAAmC,GAAGA,CAAC;EACzCC,IAAI;EACJC,IAAI,EAAEC,QAAQ;EACdC,QAAQ;EACRC,KAAK;EACLC,MAAM;EACNC,QAAQ;EACRC,OAAO;EACPC,cAAc;EACdC;AACJ,CAAC,KAAK;EACF,MAAMC,eAAe,GAAG,IAAAC,kBAAW,EAAC,MAAM;IACtC,IAAIL,QAAQ,IAAI,OAAOE,cAAc,KAAK,UAAU,EAAE;MAClDA,cAAc,CAACL,QAAQ,CAAC;IAC5B,CAAC,MAAM,IAAI,OAAOM,WAAW,KAAK,UAAU,EAAE;MAC1CA,WAAW,CAACN,QAAQ,CAAC;IACzB;EACJ,CAAC,EAAE,CAACG,QAAQ,EAAEG,WAAW,EAAED,cAAc,EAAEL,QAAQ,CAAC,CAAC;EAErD,MAAM;IAAES,KAAK;IAAEC;EAAa,CAAC,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC1C,MAAMC,YAAY,gBACdxC,MAAA,CAAAe,OAAA,CAAA0B,aAAA,4BACIzC,MAAA,CAAAe,OAAA,CAAA0B,aAAA,iBAAShB,IAAI,EAAC,IAAU,CAAC,EACxBE,QACC,CACT;IAED,MAAMe,aAAa,gBACf1C,MAAA,CAAAe,OAAA,CAAA0B,aAAA,CAACtC,aAAA,CAAAwC,8BAA8B,qBAC3B3C,MAAA,CAAAe,OAAA,CAAA0B,aAAA,CAACtC,aAAA,CAAAyC,oCAAoC,QAChCd,MACiC,CAAC,EACtCD,KAAK,iBAAI7B,MAAA,CAAAe,OAAA,CAAA0B,aAAA,CAACrC,KAAA,
|
|
1
|
+
{"version":3,"file":"RankingEntry.js","names":["_react","_interopRequireWildcard","require","_RankingEntry","_core","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RankingEntry","rank","name","fullName","personId","icons","points","isFriend","content","onFriendRemove","onFriendAdd","handleIconClick","useCallback","title","rightElement","useMemo","titleElement","createElement","rightElements","StyledRankingEntryRightElement","StyledRankingEntryRightElementPoints","isValidElement","Icon","size","onClick","entryContent","map","value","headline","id","StyledRankingEntryContentHeadline","key","StyledRankingEntryContentEntry","StyledRankingEntryContentEntryName","StyledRankingEntryContentEntryValue","StyledRankingEntry","$shouldShowLines","Accordion","AccordionContent","StyledRankingEntryContent","StyledRankingEntryElement","StyledRankingEntryElementLeft","StyledRankingEntryElementRight","displayName","_default","exports"],"sources":["../../../../../src/components/ranking/ranking-entry/RankingEntry.tsx"],"sourcesContent":["import React, { FC, isValidElement, useCallback, useMemo } from 'react';\nimport {\n StyledRankingEntry,\n StyledRankingEntryContent,\n StyledRankingEntryContentEntry,\n StyledRankingEntryContentEntryName,\n StyledRankingEntryContentEntryValue,\n StyledRankingEntryContentHeadline,\n StyledRankingEntryElement,\n StyledRankingEntryElementLeft,\n StyledRankingEntryElementRight,\n StyledRankingEntryRightElement,\n StyledRankingEntryRightElementPoints,\n} from './RankingEntry.styles';\nimport { Accordion, AccordionContent, Icon } from '@chayns-components/core';\nimport { IRankingEntry, RankingContentEntry, RankingContentHeadline } from '../../../types/ranking';\n\nexport type RankingEntryProps = {\n onFriendAdd?: (personId: string) => void;\n onFriendRemove?: (personId: string) => void;\n isFriend?: boolean;\n content?: IRankingEntry['content'];\n rank: IRankingEntry['rank'];\n personId: IRankingEntry['personId'];\n points: IRankingEntry['points'];\n name: IRankingEntry['name'];\n icons: IRankingEntry['icons'];\n};\n\nconst RankingEntry: FC<RankingEntryProps> = ({\n rank,\n name: fullName,\n personId,\n icons,\n points,\n isFriend,\n content,\n onFriendRemove,\n onFriendAdd,\n}) => {\n const handleIconClick = useCallback(() => {\n if (isFriend && typeof onFriendRemove === 'function') {\n onFriendRemove(personId);\n } else if (typeof onFriendAdd === 'function') {\n onFriendAdd(personId);\n }\n }, [isFriend, onFriendAdd, onFriendRemove, personId]);\n\n const { title, rightElement } = useMemo(() => {\n const titleElement = (\n <span>\n <strong>{rank}. </strong>\n {fullName}\n </span>\n );\n\n const rightElements = (\n <StyledRankingEntryRightElement>\n <StyledRankingEntryRightElementPoints>\n {points}\n </StyledRankingEntryRightElementPoints>\n {icons && !isValidElement(icons) && <Icon icons={icons as string[]} />}\n {icons && isValidElement(icons) && icons}\n <Icon\n icons={isFriend ? ['fas fa-star'] : ['far fa-star']}\n size={15}\n onClick={handleIconClick}\n />\n </StyledRankingEntryRightElement>\n );\n\n return { title: titleElement, rightElement: rightElements };\n }, [handleIconClick, icons, isFriend, fullName, points, rank]);\n\n const entryContent = useMemo(() => {\n if (!content) return null;\n\n return (content as (RankingContentHeadline & RankingContentEntry)[]).map(\n ({ name, value, headline, id }) => {\n if (typeof headline === 'string') {\n return (\n <StyledRankingEntryContentHeadline key={id}>\n {headline}\n </StyledRankingEntryContentHeadline>\n );\n }\n\n return (\n <StyledRankingEntryContentEntry key={id}>\n <StyledRankingEntryContentEntryName>\n {name}\n </StyledRankingEntryContentEntryName>\n <StyledRankingEntryContentEntryValue>\n {value}\n </StyledRankingEntryContentEntryValue>\n </StyledRankingEntryContentEntry>\n );\n },\n );\n }, [content]);\n\n return useMemo(\n () => (\n <StyledRankingEntry $shouldShowLines={!entryContent}>\n {entryContent ? (\n <Accordion title=\"\" titleElement={title} rightElement={rightElement}>\n <AccordionContent>\n <StyledRankingEntryContent>{entryContent}</StyledRankingEntryContent>\n </AccordionContent>\n </Accordion>\n ) : (\n <StyledRankingEntryElement>\n <StyledRankingEntryElementLeft>{title}</StyledRankingEntryElementLeft>\n <StyledRankingEntryElementRight>\n {rightElement}\n </StyledRankingEntryElementRight>\n </StyledRankingEntryElement>\n )}\n </StyledRankingEntry>\n ),\n [entryContent, rightElement, title],\n );\n};\n\nRankingEntry.displayName = 'RankingEntry';\n\nexport default RankingEntry;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranking.js","names":[],"sources":["../../../src/types/ranking.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"ranking.js","names":[],"sources":["../../../src/types/ranking.ts"],"sourcesContent":["import { ReactNode } from 'react';\n\nexport interface IRankingEntry {\n rank: number;\n name: string;\n personId: string;\n points: number;\n content?: RankingContent[];\n icons?: string[] | ReactNode;\n}\n\nexport type RankingContent = RankingContentHeadline | RankingContentEntry;\n\nexport interface RankingContentHeadline {\n headline: string;\n id: string;\n}\n\nexport interface RankingContentEntry {\n id: string;\n name: string;\n value: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useCallback, useMemo } from 'react';
|
|
2
|
-
import { StyledRanking } from './Ranking.styles';
|
|
3
|
-
import { Accordion, AccordionGroup, Icon } from '@chayns-components/core';
|
|
2
|
+
import { StyledRanking, StyledRankingLoadMoreButton } from './Ranking.styles';
|
|
3
|
+
import { Accordion, AccordionContent, AccordionGroup, Button, Icon } from '@chayns-components/core';
|
|
4
4
|
import RankingEntry from './ranking-entry/RankingEntry';
|
|
5
5
|
const Ranking = ({
|
|
6
6
|
title = 'Rangliste',
|
|
@@ -9,8 +9,10 @@ const Ranking = ({
|
|
|
9
9
|
onFriendAdd,
|
|
10
10
|
shouldShowOnlyFriends,
|
|
11
11
|
friendPersonIds,
|
|
12
|
+
isLoadingData,
|
|
12
13
|
onSearchChange,
|
|
13
14
|
searchValue,
|
|
15
|
+
onLoadMore,
|
|
14
16
|
onFriendVisibleChange
|
|
15
17
|
}) => {
|
|
16
18
|
const content = useMemo(() => entries.map(({
|
|
@@ -46,7 +48,10 @@ const Ranking = ({
|
|
|
46
48
|
size: 15,
|
|
47
49
|
onClick: onFriendVisibleChange
|
|
48
50
|
})
|
|
49
|
-
}, /*#__PURE__*/React.createElement(AccordionGroup, null, content)
|
|
51
|
+
}, /*#__PURE__*/React.createElement(AccordionGroup, null, content), typeof onLoadMore === 'function' && /*#__PURE__*/React.createElement(AccordionContent, null, /*#__PURE__*/React.createElement(StyledRankingLoadMoreButton, null, /*#__PURE__*/React.createElement(Button, {
|
|
52
|
+
onClick: onLoadMore,
|
|
53
|
+
shouldShowWaitCursor: isLoadingData
|
|
54
|
+
}, "Mehr"))))), [content, handleSearchChange, isLoadingData, onFriendVisibleChange, onLoadMore, searchValue, shouldShowOnlyFriends, title]);
|
|
50
55
|
};
|
|
51
56
|
Ranking.displayName = 'Ranking';
|
|
52
57
|
export default Ranking;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ranking.js","names":["React","useCallback","useMemo","StyledRanking","Accordion","AccordionGroup","Icon","RankingEntry","Ranking","title","entries","onFriendRemove","onFriendAdd","shouldShowOnlyFriends","friendPersonIds","onSearchChange","searchValue","onFriendVisibleChange","content","map","entryContent","rank","personId","points","name","icons","createElement","key","isFriend","includes","handleSearchChange","event","target","value","rightElement","size","onClick","displayName"],"sources":["../../../../src/components/ranking/Ranking.tsx"],"sourcesContent":["import React, { ChangeEvent, FC, useCallback, useMemo } from 'react';\nimport { StyledRanking } from './Ranking.styles';\nimport { IRankingEntry } from '../../types/ranking';\nimport { Accordion, AccordionGroup, Icon } from '@chayns-components/core';\nimport RankingEntry from './ranking-entry/RankingEntry';\n\nexport type RankingProps = {\n /**\n * Array of ranking entries to be displayed in the ranking list.\n */\n entries: IRankingEntry[];\n /**\n * Array of personIds that represent the user's friends.\n */\n friendPersonIds: string[];\n /**\n * Callback function triggered when a friend is added to the friends list.\n * @param personId - The ID of the person to be added as friend\n */\n onFriendAdd?: (personId: string) => void;\n /**\n * Callback function triggered when a friend is removed from the friends list.\n * @param personId - The ID of the person to be removed from friends\n */\n onFriendRemove?: (personId: string) => void;\n /**\n * Callback function triggered when the visibility of friends is toggled.\n */\n onFriendVisibleChange?: () => void;\n /**\n * Callback function triggered when the search input value changes.\n * @param value - The current search input value\n */\n onSearchChange?: (value: string) => void;\n /**\n * The current value of the search input field.\n */\n searchValue?: string;\n /**\n * Whether only the friends of the user should be displayed (filtering and fetching the correct data is done by you).\n */\n shouldShowOnlyFriends?: boolean;\n /**\n * The title of the top Accordion.\n */\n title?: string;\n};\n\nconst Ranking: FC<RankingProps> = ({\n title = 'Rangliste',\n entries,\n onFriendRemove,\n onFriendAdd,\n shouldShowOnlyFriends,\n friendPersonIds,\n onSearchChange,\n searchValue,\n onFriendVisibleChange,\n}) => {\n const content = useMemo(\n () =>\n entries.map(({ content: entryContent, rank, personId, points, name, icons }) => (\n <RankingEntry\n key={`ranking-entry--${personId}`}\n rank={rank}\n personId={personId}\n name={name}\n icons={icons}\n points={points}\n content={entryContent}\n onFriendAdd={onFriendAdd}\n onFriendRemove={onFriendRemove}\n isFriend={friendPersonIds?.includes(personId)}\n />\n )),\n [entries, friendPersonIds, onFriendAdd, onFriendRemove],\n );\n\n const handleSearchChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (typeof onSearchChange === 'function') {\n onSearchChange(event.target.value);\n }\n },\n [onSearchChange],\n );\n\n return useMemo(\n () => (\n <StyledRanking>\n <Accordion\n title={title}\n onSearchChange={handleSearchChange}\n searchValue={searchValue}\n rightElement={\n <Icon\n icons={shouldShowOnlyFriends ? ['fas fa-star'] : ['far fa-star']}\n size={15}\n onClick={onFriendVisibleChange}\n />\n }\n >\n <AccordionGroup>{content}</AccordionGroup>\n </Accordion>\n </StyledRanking>\n ),\n [\n content,\n handleSearchChange,\n onFriendVisibleChange,\n searchValue,\n shouldShowOnlyFriends,\n title,\n ],\n );\n};\n\nRanking.displayName = 'Ranking';\n\nexport default Ranking;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAqBC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACpE,SAASC,aAAa,QAAQ,kBAAkB;
|
|
1
|
+
{"version":3,"file":"Ranking.js","names":["React","useCallback","useMemo","StyledRanking","StyledRankingLoadMoreButton","Accordion","AccordionContent","AccordionGroup","Button","Icon","RankingEntry","Ranking","title","entries","onFriendRemove","onFriendAdd","shouldShowOnlyFriends","friendPersonIds","isLoadingData","onSearchChange","searchValue","onLoadMore","onFriendVisibleChange","content","map","entryContent","rank","personId","points","name","icons","createElement","key","isFriend","includes","handleSearchChange","event","target","value","rightElement","size","onClick","shouldShowWaitCursor","displayName"],"sources":["../../../../src/components/ranking/Ranking.tsx"],"sourcesContent":["import React, { ChangeEvent, FC, useCallback, useMemo } from 'react';\nimport { StyledRanking, StyledRankingLoadMoreButton } from './Ranking.styles';\nimport { IRankingEntry } from '../../types/ranking';\nimport { Accordion, AccordionContent, AccordionGroup, Button, Icon } from '@chayns-components/core';\nimport RankingEntry from './ranking-entry/RankingEntry';\n\nexport type RankingProps = {\n /**\n * Array of ranking entries to be displayed in the ranking list.\n */\n entries: IRankingEntry[];\n /**\n * Array of personIds that represent the user's friends.\n */\n friendPersonIds: string[];\n /**\n * Whether new data is loading.\n */\n isLoadingData?: boolean;\n /**\n * Callback function triggered when a friend is added to the friends list.\n * @param personId - The ID of the person to be added as friend\n */\n onFriendAdd?: (personId: string) => void;\n /**\n * Callback function triggered when a friend is removed from the friends list.\n * @param personId - The ID of the person to be removed from friends\n */\n onFriendRemove?: (personId: string) => void;\n /**\n * Callback function triggered when the visibility of friends is toggled.\n */\n onFriendVisibleChange?: () => void;\n /**\n * Callback function when the load more button is clicked.\n */\n onLoadMore?: () => void;\n /**\n * Callback function triggered when the search input value changes.\n * @param value - The current search input value\n */\n onSearchChange?: (value: string) => void;\n /**\n * The current value of the search input field.\n */\n searchValue?: string;\n /**\n * Whether only the friends of the user should be displayed (filtering and fetching the correct data is done by you).\n */\n shouldShowOnlyFriends?: boolean;\n /**\n * The title of the top Accordion.\n */\n title?: string;\n};\n\nconst Ranking: FC<RankingProps> = ({\n title = 'Rangliste',\n entries,\n onFriendRemove,\n onFriendAdd,\n shouldShowOnlyFriends,\n friendPersonIds,\n isLoadingData,\n onSearchChange,\n searchValue,\n onLoadMore,\n onFriendVisibleChange,\n}) => {\n const content = useMemo(\n () =>\n entries.map(({ content: entryContent, rank, personId, points, name, icons }) => (\n <RankingEntry\n key={`ranking-entry--${personId}`}\n rank={rank}\n personId={personId}\n name={name}\n icons={icons}\n points={points}\n content={entryContent}\n onFriendAdd={onFriendAdd}\n onFriendRemove={onFriendRemove}\n isFriend={friendPersonIds?.includes(personId)}\n />\n )),\n [entries, friendPersonIds, onFriendAdd, onFriendRemove],\n );\n\n const handleSearchChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (typeof onSearchChange === 'function') {\n onSearchChange(event.target.value);\n }\n },\n [onSearchChange],\n );\n\n return useMemo(\n () => (\n <StyledRanking>\n <Accordion\n title={title}\n onSearchChange={handleSearchChange}\n searchValue={searchValue}\n rightElement={\n <Icon\n icons={shouldShowOnlyFriends ? ['fas fa-star'] : ['far fa-star']}\n size={15}\n onClick={onFriendVisibleChange}\n />\n }\n >\n <AccordionGroup>{content}</AccordionGroup>\n {typeof onLoadMore === 'function' && (\n <AccordionContent>\n <StyledRankingLoadMoreButton>\n <Button onClick={onLoadMore} shouldShowWaitCursor={isLoadingData}>\n Mehr\n </Button>\n </StyledRankingLoadMoreButton>\n </AccordionContent>\n )}\n </Accordion>\n </StyledRanking>\n ),\n [\n content,\n handleSearchChange,\n isLoadingData,\n onFriendVisibleChange,\n onLoadMore,\n searchValue,\n shouldShowOnlyFriends,\n title,\n ],\n );\n};\n\nRanking.displayName = 'Ranking';\n\nexport default Ranking;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAqBC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACpE,SAASC,aAAa,EAAEC,2BAA2B,QAAQ,kBAAkB;AAE7E,SAASC,SAAS,EAAEC,gBAAgB,EAAEC,cAAc,EAAEC,MAAM,EAAEC,IAAI,QAAQ,yBAAyB;AACnG,OAAOC,YAAY,MAAM,8BAA8B;AAoDvD,MAAMC,OAAyB,GAAGA,CAAC;EAC/BC,KAAK,GAAG,WAAW;EACnBC,OAAO;EACPC,cAAc;EACdC,WAAW;EACXC,qBAAqB;EACrBC,eAAe;EACfC,aAAa;EACbC,cAAc;EACdC,WAAW;EACXC,UAAU;EACVC;AACJ,CAAC,KAAK;EACF,MAAMC,OAAO,GAAGrB,OAAO,CACnB,MACIW,OAAO,CAACW,GAAG,CAAC,CAAC;IAAED,OAAO,EAAEE,YAAY;IAAEC,IAAI;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,IAAI;IAAEC;EAAM,CAAC,kBACvE9B,KAAA,CAAA+B,aAAA,CAACrB,YAAY;IACTsB,GAAG,EAAE,kBAAkBL,QAAQ,EAAG;IAClCD,IAAI,EAAEA,IAAK;IACXC,QAAQ,EAAEA,QAAS;IACnBE,IAAI,EAAEA,IAAK;IACXC,KAAK,EAAEA,KAAM;IACbF,MAAM,EAAEA,MAAO;IACfL,OAAO,EAAEE,YAAa;IACtBV,WAAW,EAAEA,WAAY;IACzBD,cAAc,EAAEA,cAAe;IAC/BmB,QAAQ,EAAEhB,eAAe,EAAEiB,QAAQ,CAACP,QAAQ;EAAE,CACjD,CACJ,CAAC,EACN,CAACd,OAAO,EAAEI,eAAe,EAAEF,WAAW,EAAED,cAAc,CAC1D,CAAC;EAED,MAAMqB,kBAAkB,GAAGlC,WAAW,CACjCmC,KAAoC,IAAK;IACtC,IAAI,OAAOjB,cAAc,KAAK,UAAU,EAAE;MACtCA,cAAc,CAACiB,KAAK,CAACC,MAAM,CAACC,KAAK,CAAC;IACtC;EACJ,CAAC,EACD,CAACnB,cAAc,CACnB,CAAC;EAED,OAAOjB,OAAO,CACV,mBACIF,KAAA,CAAA+B,aAAA,CAAC5B,aAAa,qBACVH,KAAA,CAAA+B,aAAA,CAAC1B,SAAS;IACNO,KAAK,EAAEA,KAAM;IACbO,cAAc,EAAEgB,kBAAmB;IACnCf,WAAW,EAAEA,WAAY;IACzBmB,YAAY,eACRvC,KAAA,CAAA+B,aAAA,CAACtB,IAAI;MACDqB,KAAK,EAAEd,qBAAqB,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAE;MACjEwB,IAAI,EAAE,EAAG;MACTC,OAAO,EAAEnB;IAAsB,CAClC;EACJ,gBAEDtB,KAAA,CAAA+B,aAAA,CAACxB,cAAc,QAAEgB,OAAwB,CAAC,EACzC,OAAOF,UAAU,KAAK,UAAU,iBAC7BrB,KAAA,CAAA+B,aAAA,CAACzB,gBAAgB,qBACbN,KAAA,CAAA+B,aAAA,CAAC3B,2BAA2B,qBACxBJ,KAAA,CAAA+B,aAAA,CAACvB,MAAM;IAACiC,OAAO,EAAEpB,UAAW;IAACqB,oBAAoB,EAAExB;EAAc,GAAC,MAE1D,CACiB,CACf,CAEf,CACA,CAClB,EACD,CACIK,OAAO,EACPY,kBAAkB,EAClBjB,aAAa,EACbI,qBAAqB,EACrBD,UAAU,EACVD,WAAW,EACXJ,qBAAqB,EACrBJ,KAAK,CAEb,CAAC;AACL,CAAC;AAEDD,OAAO,CAACgC,WAAW,GAAG,SAAS;AAE/B,eAAehC,OAAO","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ranking.styles.js","names":["styled","StyledRanking","div"],"sources":["../../../../src/components/ranking/Ranking.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledRanking = styled.div``;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,aAAa,GAAGD,MAAM,CAACE,GAAG,EAAE","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Ranking.styles.js","names":["styled","StyledRanking","div","StyledRankingLoadMoreButton"],"sources":["../../../../src/components/ranking/Ranking.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledRanking = styled.div``;\n\nexport const StyledRankingLoadMoreButton = styled.div`\n display: flex;\n justify-content: center;\n\n padding-top: 12px;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,aAAa,GAAGD,MAAM,CAACE,GAAG,EAAE;AAEzC,OAAO,MAAMC,2BAA2B,GAAGH,MAAM,CAACE,GAAG;AACrD;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useCallback, useMemo } from 'react';
|
|
1
|
+
import React, { isValidElement, useCallback, useMemo } from 'react';
|
|
2
2
|
import { StyledRankingEntry, StyledRankingEntryContent, StyledRankingEntryContentEntry, StyledRankingEntryContentEntryName, StyledRankingEntryContentEntryValue, StyledRankingEntryContentHeadline, StyledRankingEntryElement, StyledRankingEntryElementLeft, StyledRankingEntryElementRight, StyledRankingEntryRightElement, StyledRankingEntryRightElementPoints } from './RankingEntry.styles';
|
|
3
3
|
import { Accordion, AccordionContent, Icon } from '@chayns-components/core';
|
|
4
4
|
const RankingEntry = ({
|
|
@@ -24,9 +24,9 @@ const RankingEntry = ({
|
|
|
24
24
|
rightElement
|
|
25
25
|
} = useMemo(() => {
|
|
26
26
|
const titleElement = /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("strong", null, rank, ". "), fullName);
|
|
27
|
-
const rightElements = /*#__PURE__*/React.createElement(StyledRankingEntryRightElement, null, /*#__PURE__*/React.createElement(StyledRankingEntryRightElementPoints, null, points), icons && /*#__PURE__*/React.createElement(Icon, {
|
|
27
|
+
const rightElements = /*#__PURE__*/React.createElement(StyledRankingEntryRightElement, null, /*#__PURE__*/React.createElement(StyledRankingEntryRightElementPoints, null, points), icons && ! /*#__PURE__*/isValidElement(icons) && /*#__PURE__*/React.createElement(Icon, {
|
|
28
28
|
icons: icons
|
|
29
|
-
}), /*#__PURE__*/React.createElement(Icon, {
|
|
29
|
+
}), icons && /*#__PURE__*/isValidElement(icons) && icons, /*#__PURE__*/React.createElement(Icon, {
|
|
30
30
|
icons: isFriend ? ['fas fa-star'] : ['far fa-star'],
|
|
31
31
|
size: 15,
|
|
32
32
|
onClick: handleIconClick
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RankingEntry.js","names":["React","useCallback","useMemo","StyledRankingEntry","StyledRankingEntryContent","StyledRankingEntryContentEntry","StyledRankingEntryContentEntryName","StyledRankingEntryContentEntryValue","StyledRankingEntryContentHeadline","StyledRankingEntryElement","StyledRankingEntryElementLeft","StyledRankingEntryElementRight","StyledRankingEntryRightElement","StyledRankingEntryRightElementPoints","Accordion","AccordionContent","Icon","RankingEntry","rank","name","fullName","personId","icons","points","isFriend","content","onFriendRemove","onFriendAdd","handleIconClick","title","rightElement","titleElement","createElement","rightElements","size","onClick","entryContent","map","value","headline","id","key","$shouldShowLines","displayName"],"sources":["../../../../../src/components/ranking/ranking-entry/RankingEntry.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo } from 'react';\nimport {\n StyledRankingEntry,\n StyledRankingEntryContent,\n StyledRankingEntryContentEntry,\n StyledRankingEntryContentEntryName,\n StyledRankingEntryContentEntryValue,\n StyledRankingEntryContentHeadline,\n StyledRankingEntryElement,\n StyledRankingEntryElementLeft,\n StyledRankingEntryElementRight,\n StyledRankingEntryRightElement,\n StyledRankingEntryRightElementPoints,\n} from './RankingEntry.styles';\nimport { Accordion, AccordionContent, Icon } from '@chayns-components/core';\nimport { IRankingEntry, RankingContentEntry, RankingContentHeadline } from '../../../types/ranking';\n\nexport type RankingEntryProps = {\n onFriendAdd?: (personId: string) => void;\n onFriendRemove?: (personId: string) => void;\n isFriend?: boolean;\n content?: IRankingEntry['content'];\n rank: IRankingEntry['rank'];\n personId: IRankingEntry['personId'];\n points: IRankingEntry['points'];\n name: IRankingEntry['name'];\n icons: IRankingEntry['icons'];\n};\n\nconst RankingEntry: FC<RankingEntryProps> = ({\n rank,\n name: fullName,\n personId,\n icons,\n points,\n isFriend,\n content,\n onFriendRemove,\n onFriendAdd,\n}) => {\n const handleIconClick = useCallback(() => {\n if (isFriend && typeof onFriendRemove === 'function') {\n onFriendRemove(personId);\n } else if (typeof onFriendAdd === 'function') {\n onFriendAdd(personId);\n }\n }, [isFriend, onFriendAdd, onFriendRemove, personId]);\n\n const { title, rightElement } = useMemo(() => {\n const titleElement = (\n <span>\n <strong>{rank}. </strong>\n {fullName}\n </span>\n );\n\n const rightElements = (\n <StyledRankingEntryRightElement>\n <StyledRankingEntryRightElementPoints>\n {points}\n </StyledRankingEntryRightElementPoints>\n {icons && <Icon icons={icons} />}\n <Icon\n icons={isFriend ? ['fas fa-star'] : ['far fa-star']}\n size={15}\n onClick={handleIconClick}\n />\n </StyledRankingEntryRightElement>\n );\n\n return { title: titleElement, rightElement: rightElements };\n }, [handleIconClick, icons, isFriend, fullName, points, rank]);\n\n const entryContent = useMemo(() => {\n if (!content) return null;\n\n return (content as (RankingContentHeadline & RankingContentEntry)[]).map(\n ({ name, value, headline, id }) => {\n if (typeof headline === 'string') {\n return (\n <StyledRankingEntryContentHeadline key={id}>\n {headline}\n </StyledRankingEntryContentHeadline>\n );\n }\n\n return (\n <StyledRankingEntryContentEntry key={id}>\n <StyledRankingEntryContentEntryName>\n {name}\n </StyledRankingEntryContentEntryName>\n <StyledRankingEntryContentEntryValue>\n {value}\n </StyledRankingEntryContentEntryValue>\n </StyledRankingEntryContentEntry>\n );\n },\n );\n }, [content]);\n\n return useMemo(\n () => (\n <StyledRankingEntry $shouldShowLines={!entryContent}>\n {entryContent ? (\n <Accordion title=\"\" titleElement={title} rightElement={rightElement}>\n <AccordionContent>\n <StyledRankingEntryContent>{entryContent}</StyledRankingEntryContent>\n </AccordionContent>\n </Accordion>\n ) : (\n <StyledRankingEntryElement>\n <StyledRankingEntryElementLeft>{title}</StyledRankingEntryElementLeft>\n <StyledRankingEntryElementRight>\n {rightElement}\n </StyledRankingEntryElementRight>\n </StyledRankingEntryElement>\n )}\n </StyledRankingEntry>\n ),\n [entryContent, rightElement, title],\n );\n};\n\nRankingEntry.displayName = 'RankingEntry';\n\nexport default RankingEntry;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAQC,WAAW,EAAEC,OAAO,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"file":"RankingEntry.js","names":["React","isValidElement","useCallback","useMemo","StyledRankingEntry","StyledRankingEntryContent","StyledRankingEntryContentEntry","StyledRankingEntryContentEntryName","StyledRankingEntryContentEntryValue","StyledRankingEntryContentHeadline","StyledRankingEntryElement","StyledRankingEntryElementLeft","StyledRankingEntryElementRight","StyledRankingEntryRightElement","StyledRankingEntryRightElementPoints","Accordion","AccordionContent","Icon","RankingEntry","rank","name","fullName","personId","icons","points","isFriend","content","onFriendRemove","onFriendAdd","handleIconClick","title","rightElement","titleElement","createElement","rightElements","size","onClick","entryContent","map","value","headline","id","key","$shouldShowLines","displayName"],"sources":["../../../../../src/components/ranking/ranking-entry/RankingEntry.tsx"],"sourcesContent":["import React, { FC, isValidElement, useCallback, useMemo } from 'react';\nimport {\n StyledRankingEntry,\n StyledRankingEntryContent,\n StyledRankingEntryContentEntry,\n StyledRankingEntryContentEntryName,\n StyledRankingEntryContentEntryValue,\n StyledRankingEntryContentHeadline,\n StyledRankingEntryElement,\n StyledRankingEntryElementLeft,\n StyledRankingEntryElementRight,\n StyledRankingEntryRightElement,\n StyledRankingEntryRightElementPoints,\n} from './RankingEntry.styles';\nimport { Accordion, AccordionContent, Icon } from '@chayns-components/core';\nimport { IRankingEntry, RankingContentEntry, RankingContentHeadline } from '../../../types/ranking';\n\nexport type RankingEntryProps = {\n onFriendAdd?: (personId: string) => void;\n onFriendRemove?: (personId: string) => void;\n isFriend?: boolean;\n content?: IRankingEntry['content'];\n rank: IRankingEntry['rank'];\n personId: IRankingEntry['personId'];\n points: IRankingEntry['points'];\n name: IRankingEntry['name'];\n icons: IRankingEntry['icons'];\n};\n\nconst RankingEntry: FC<RankingEntryProps> = ({\n rank,\n name: fullName,\n personId,\n icons,\n points,\n isFriend,\n content,\n onFriendRemove,\n onFriendAdd,\n}) => {\n const handleIconClick = useCallback(() => {\n if (isFriend && typeof onFriendRemove === 'function') {\n onFriendRemove(personId);\n } else if (typeof onFriendAdd === 'function') {\n onFriendAdd(personId);\n }\n }, [isFriend, onFriendAdd, onFriendRemove, personId]);\n\n const { title, rightElement } = useMemo(() => {\n const titleElement = (\n <span>\n <strong>{rank}. </strong>\n {fullName}\n </span>\n );\n\n const rightElements = (\n <StyledRankingEntryRightElement>\n <StyledRankingEntryRightElementPoints>\n {points}\n </StyledRankingEntryRightElementPoints>\n {icons && !isValidElement(icons) && <Icon icons={icons as string[]} />}\n {icons && isValidElement(icons) && icons}\n <Icon\n icons={isFriend ? ['fas fa-star'] : ['far fa-star']}\n size={15}\n onClick={handleIconClick}\n />\n </StyledRankingEntryRightElement>\n );\n\n return { title: titleElement, rightElement: rightElements };\n }, [handleIconClick, icons, isFriend, fullName, points, rank]);\n\n const entryContent = useMemo(() => {\n if (!content) return null;\n\n return (content as (RankingContentHeadline & RankingContentEntry)[]).map(\n ({ name, value, headline, id }) => {\n if (typeof headline === 'string') {\n return (\n <StyledRankingEntryContentHeadline key={id}>\n {headline}\n </StyledRankingEntryContentHeadline>\n );\n }\n\n return (\n <StyledRankingEntryContentEntry key={id}>\n <StyledRankingEntryContentEntryName>\n {name}\n </StyledRankingEntryContentEntryName>\n <StyledRankingEntryContentEntryValue>\n {value}\n </StyledRankingEntryContentEntryValue>\n </StyledRankingEntryContentEntry>\n );\n },\n );\n }, [content]);\n\n return useMemo(\n () => (\n <StyledRankingEntry $shouldShowLines={!entryContent}>\n {entryContent ? (\n <Accordion title=\"\" titleElement={title} rightElement={rightElement}>\n <AccordionContent>\n <StyledRankingEntryContent>{entryContent}</StyledRankingEntryContent>\n </AccordionContent>\n </Accordion>\n ) : (\n <StyledRankingEntryElement>\n <StyledRankingEntryElementLeft>{title}</StyledRankingEntryElementLeft>\n <StyledRankingEntryElementRight>\n {rightElement}\n </StyledRankingEntryElementRight>\n </StyledRankingEntryElement>\n )}\n </StyledRankingEntry>\n ),\n [entryContent, rightElement, title],\n );\n};\n\nRankingEntry.displayName = 'RankingEntry';\n\nexport default RankingEntry;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranking.js","names":[],"sources":["../../../src/types/ranking.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"ranking.js","names":[],"sources":["../../../src/types/ranking.ts"],"sourcesContent":["import { ReactNode } from 'react';\n\nexport interface IRankingEntry {\n rank: number;\n name: string;\n personId: string;\n points: number;\n content?: RankingContent[];\n icons?: string[] | ReactNode;\n}\n\nexport type RankingContent = RankingContentHeadline | RankingContentEntry;\n\nexport interface RankingContentHeadline {\n headline: string;\n id: string;\n}\n\nexport interface RankingContentEntry {\n id: string;\n name: string;\n value: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -9,6 +9,10 @@ export type RankingProps = {
|
|
|
9
9
|
* Array of personIds that represent the user's friends.
|
|
10
10
|
*/
|
|
11
11
|
friendPersonIds: string[];
|
|
12
|
+
/**
|
|
13
|
+
* Whether new data is loading.
|
|
14
|
+
*/
|
|
15
|
+
isLoadingData?: boolean;
|
|
12
16
|
/**
|
|
13
17
|
* Callback function triggered when a friend is added to the friends list.
|
|
14
18
|
* @param personId - The ID of the person to be added as friend
|
|
@@ -23,6 +27,10 @@ export type RankingProps = {
|
|
|
23
27
|
* Callback function triggered when the visibility of friends is toggled.
|
|
24
28
|
*/
|
|
25
29
|
onFriendVisibleChange?: () => void;
|
|
30
|
+
/**
|
|
31
|
+
* Callback function when the load more button is clicked.
|
|
32
|
+
*/
|
|
33
|
+
onLoadMore?: () => void;
|
|
26
34
|
/**
|
|
27
35
|
* Callback function triggered when the search input value changes.
|
|
28
36
|
* @param value - The current search input value
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
export declare const StyledRanking: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
2
|
+
export declare const StyledRankingLoadMoreButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
export interface IRankingEntry {
|
|
2
3
|
rank: number;
|
|
3
4
|
name: string;
|
|
4
5
|
personId: string;
|
|
5
6
|
points: number;
|
|
6
7
|
content?: RankingContent[];
|
|
7
|
-
icons?: string[];
|
|
8
|
+
icons?: string[] | ReactNode;
|
|
8
9
|
}
|
|
9
10
|
export type RankingContent = RankingContentHeadline | RankingContentEntry;
|
|
10
11
|
export interface RankingContentHeadline {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/ranking",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.1232",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -82,5 +82,5 @@
|
|
|
82
82
|
"publishConfig": {
|
|
83
83
|
"access": "public"
|
|
84
84
|
},
|
|
85
|
-
"gitHead": "
|
|
85
|
+
"gitHead": "827097655cfec9e3bb242f69600e9bbf8ecda706"
|
|
86
86
|
}
|