@cuemath/leap 2.8.34-beta-0.1 → 2.8.34-beta-0.3
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/dist/features/analytics-events/whitelist-events.js +9 -9
- package/dist/features/analytics-events/whitelist-events.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js +26 -26
- package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +86 -85
- package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
- package/dist/features/ui/inputs/searchable-input/searchable-input.js +54 -53
- package/dist/features/ui/inputs/searchable-input/searchable-input.js.map +1 -1
- package/package.json +1 -1
@@ -1,23 +1,23 @@
|
|
1
1
|
import { GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS as E } from "../circle-games/game-launcher/game-launcher-analytics-events.js";
|
2
2
|
import { WEBVIEW_ANALYTICS_WHITELIST_EVENTS as T } from "../circle-games/games/web-view/web-view-analytics-events.js";
|
3
3
|
import { LEADERBOARD_ANALYTICS_WHITELIST_EVENTS as S } from "../circle-games/leaderboard/leaderboard-analytics-events.js";
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
4
|
+
import { RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS as _ } from "../milestone/milestone-resources/resources-assign/resource-assign-analytics-events.js";
|
5
|
+
import { TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS as I } from "../milestone/milestone-tests/tests-creation/tests-creation-analytics-events.js";
|
6
|
+
import { SHEETS_ANALYTICS_WHITELIST_EVENTS as A } from "../sheets/sheets-analytics-events.js";
|
7
|
+
import { USE_AUTO_PLAY_PERMISSION_ANALYTICS_WHITELIST_EVENTS as L } from "../hooks/use-auto-play-permission/use-auto-play-permission-analytics-events.js";
|
8
|
+
import { PLATFORM_WHITELIST_EVENTS_STUDENT as N } from "./platform-events-student.js";
|
9
|
+
import { PLATFORM_WHITELIST_EVENTS_TEACHER as o } from "./platform-events-teacher.js";
|
10
10
|
const f = {
|
11
11
|
//* Global/Platform specific events
|
12
|
-
...L,
|
13
12
|
...N,
|
13
|
+
...o,
|
14
14
|
//* Feature specific events
|
15
15
|
...E,
|
16
16
|
...S,
|
17
|
-
...o,
|
18
|
-
...I,
|
19
17
|
..._,
|
20
18
|
...A,
|
19
|
+
...I,
|
20
|
+
...L,
|
21
21
|
...T
|
22
22
|
};
|
23
23
|
export {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"whitelist-events.js","sources":["../../../src/features/analytics-events/whitelist-events.ts"],"sourcesContent":["import type { PLUGIN_NAME } from '@cuemath/analytics-v2/dist/constants';\n\nimport { GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/game-launcher/game-launcher-analytics-events';\nimport { WEBVIEW_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/games/web-view/web-view-analytics-events';\nimport { LEADERBOARD_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/leaderboard/leaderboard-analytics-events';\nimport { TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS } from '../milestone/milestone-tests/tests-creation/tests-creation-analytics-events';\nimport { SHEETS_ANALYTICS_WHITELIST_EVENTS } from '../sheets/sheets-analytics-events';\nimport { USE_AUTO_PLAY_PERMISSION_ANALYTICS_WHITELIST_EVENTS } from './../hooks/use-auto-play-permission/use-auto-play-permission-analytics-events';\nimport { PLATFORM_WHITELIST_EVENTS_STUDENT } from './platform-events-student';\nimport { PLATFORM_WHITELIST_EVENTS_TEACHER } from './platform-events-teacher';\
|
1
|
+
{"version":3,"file":"whitelist-events.js","sources":["../../../src/features/analytics-events/whitelist-events.ts"],"sourcesContent":["import type { PLUGIN_NAME } from '@cuemath/analytics-v2/dist/constants';\n\nimport { GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/game-launcher/game-launcher-analytics-events';\nimport { WEBVIEW_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/games/web-view/web-view-analytics-events';\nimport { LEADERBOARD_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/leaderboard/leaderboard-analytics-events';\nimport { RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS } from '../milestone/milestone-resources/resources-assign/resource-assign-analytics-events';\nimport { TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS } from '../milestone/milestone-tests/tests-creation/tests-creation-analytics-events';\nimport { SHEETS_ANALYTICS_WHITELIST_EVENTS } from '../sheets/sheets-analytics-events';\nimport { USE_AUTO_PLAY_PERMISSION_ANALYTICS_WHITELIST_EVENTS } from './../hooks/use-auto-play-permission/use-auto-play-permission-analytics-events';\nimport { PLATFORM_WHITELIST_EVENTS_STUDENT } from './platform-events-student';\nimport { PLATFORM_WHITELIST_EVENTS_TEACHER } from './platform-events-teacher';\n\n/**\n ** Feature specific & Global/Platform specific events are imported here\n */\nconst WHITELIST_EVENTS: Record<string, PLUGIN_NAME[]> = {\n //* Global/Platform specific events\n ...PLATFORM_WHITELIST_EVENTS_STUDENT,\n ...PLATFORM_WHITELIST_EVENTS_TEACHER,\n\n //* Feature specific events\n ...GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS,\n ...LEADERBOARD_ANALYTICS_WHITELIST_EVENTS,\n ...RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS,\n ...SHEETS_ANALYTICS_WHITELIST_EVENTS,\n ...TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS,\n ...USE_AUTO_PLAY_PERMISSION_ANALYTICS_WHITELIST_EVENTS,\n ...WEBVIEW_ANALYTICS_WHITELIST_EVENTS,\n};\n\nexport { WHITELIST_EVENTS };\n"],"names":["WHITELIST_EVENTS","PLATFORM_WHITELIST_EVENTS_STUDENT","PLATFORM_WHITELIST_EVENTS_TEACHER","GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS","LEADERBOARD_ANALYTICS_WHITELIST_EVENTS","RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS","SHEETS_ANALYTICS_WHITELIST_EVENTS","TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS","USE_AUTO_PLAY_PERMISSION_ANALYTICS_WHITELIST_EVENTS","WEBVIEW_ANALYTICS_WHITELIST_EVENTS"],"mappings":";;;;;;;;;AAeA,MAAMA,IAAkD;AAAA;AAAA,EAEtD,GAAGC;AAAA,EACH,GAAGC;AAAA;AAAA,EAGH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AACL;"}
|
package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
import { jsxs as c, Fragment as C, jsx as t } from "react/jsx-runtime";
|
2
|
-
import { memo as
|
2
|
+
import { memo as N, useRef as $, useState as X, useEffect as G, Fragment as W } from "react";
|
3
3
|
import j from "../../../../assets/line-icons/icons/sheet.js";
|
4
|
-
import
|
5
|
-
import
|
4
|
+
import { useUIContext as w } from "../../../ui/context/context.js";
|
5
|
+
import R from "../../../ui/layout/flex-view.js";
|
6
|
+
import P from "../../../ui/separator/separator.js";
|
6
7
|
import g from "../../../ui/text/text.js";
|
7
8
|
import V from "./comps/filter-item/filter-item.js";
|
8
|
-
import
|
9
|
-
import { HeaderWrapper as H, FilterTabWrapper as K, ResourceCountWrapper as M, FilterListWrapper as Y } from "./resources-assign-styled.js";
|
10
|
-
import { useUIContext as J } from "../../../ui/context/context.js";
|
9
|
+
import Y from "./comps/resource-item/resource-item.js";
|
11
10
|
import { RESOURCE_ASSIGN_ANALYTICS_EVENTS as n } from "./resource-assign-analytics-events.js";
|
11
|
+
import { HeaderWrapper as H, FilterTabWrapper as K, ResourceCountWrapper as M, FilterListWrapper as J } from "./resources-assign-styled.js";
|
12
12
|
const q = [
|
13
13
|
{
|
14
14
|
id: "resource-filters",
|
@@ -25,18 +25,18 @@ const q = [
|
|
25
25
|
LEVEL2: "Advanced",
|
26
26
|
LEVEL3: "Advanced",
|
27
27
|
SUBJECTIVE: "Subjective"
|
28
|
-
}, ae =
|
28
|
+
}, ae = N((I) => {
|
29
29
|
var b, L, D;
|
30
30
|
const {
|
31
31
|
boards: i,
|
32
32
|
grades: l,
|
33
33
|
nodeTypes: s,
|
34
34
|
selectedResources: f,
|
35
|
-
onResourceDeSelection:
|
35
|
+
onResourceDeSelection: O,
|
36
36
|
onFilterUpdate: a,
|
37
|
-
onViewResource:
|
38
|
-
} = I, d =
|
39
|
-
const r =
|
37
|
+
onViewResource: v
|
38
|
+
} = I, d = $(i), E = $(l), u = $(s), { onEvent: p } = w(), [S, x] = X("resource-filters"), m = f.length, _ = (b = d.current.find((e) => e.applied)) == null ? void 0 : b.name, T = (L = E.current.find((e) => e.applied)) == null ? void 0 : L.name, A = (D = u.current.find((e) => e.applied)) == null ? void 0 : D.name, k = (e) => {
|
39
|
+
const r = _ === e;
|
40
40
|
p(
|
41
41
|
r ? n.RESOURCE_BOARD_DESELECTED : n.RESOURCE_BOARD_SELECTED,
|
42
42
|
{
|
@@ -44,7 +44,7 @@ const q = [
|
|
44
44
|
}
|
45
45
|
), a({ board: r ? "" : e });
|
46
46
|
}, y = (e) => {
|
47
|
-
const r =
|
47
|
+
const r = T === e;
|
48
48
|
p(
|
49
49
|
r ? n.RESOURCE_GRADE_DESELECTED : n.RESOURCE_GRADE_SELECTED,
|
50
50
|
{
|
@@ -52,15 +52,15 @@ const q = [
|
|
52
52
|
}
|
53
53
|
), a({ grade: r ? "" : e });
|
54
54
|
}, F = (e) => {
|
55
|
-
const r =
|
55
|
+
const r = A === e;
|
56
56
|
p(
|
57
|
-
r ? n.
|
57
|
+
r ? n.RESOURCE_NODE_TYPE_DESELECTED : n.RESOURCE_NODE_TYPE_SELECTED,
|
58
58
|
{
|
59
59
|
node_type: e
|
60
60
|
}
|
61
61
|
), a({ node_type: r ? "" : e });
|
62
62
|
};
|
63
|
-
|
63
|
+
G(() => {
|
64
64
|
d.current = i, E.current = l, u.current = s;
|
65
65
|
}, [i, l, s]);
|
66
66
|
const U = [
|
@@ -71,7 +71,7 @@ const q = [
|
|
71
71
|
label: r,
|
72
72
|
value: r
|
73
73
|
})),
|
74
|
-
value:
|
74
|
+
value: _,
|
75
75
|
onClick: k
|
76
76
|
},
|
77
77
|
{
|
@@ -81,7 +81,7 @@ const q = [
|
|
81
81
|
label: e,
|
82
82
|
value: r
|
83
83
|
})),
|
84
|
-
value:
|
84
|
+
value: T,
|
85
85
|
onClick: y
|
86
86
|
},
|
87
87
|
{
|
@@ -91,7 +91,7 @@ const q = [
|
|
91
91
|
label: z[r] || "",
|
92
92
|
value: r || ""
|
93
93
|
})),
|
94
|
-
value:
|
94
|
+
value: A,
|
95
95
|
onClick: F
|
96
96
|
}
|
97
97
|
];
|
@@ -147,7 +147,7 @@ const q = [
|
|
147
147
|
})
|
148
148
|
}
|
149
149
|
),
|
150
|
-
/* @__PURE__ */ t(
|
150
|
+
/* @__PURE__ */ t(J, { $height: "calc(100vh - 64px - 16px)", children: S === "resource-filters" ? /* @__PURE__ */ t(C, { children: U.map((e) => {
|
151
151
|
const { title: r, value: h, options: o, onClick: B } = e;
|
152
152
|
return /* @__PURE__ */ c(W, { children: [
|
153
153
|
/* @__PURE__ */ t(
|
@@ -159,20 +159,20 @@ const q = [
|
|
159
159
|
onClick: B
|
160
160
|
}
|
161
161
|
),
|
162
|
-
/* @__PURE__ */ t(
|
162
|
+
/* @__PURE__ */ t(P, { height: 1, background: "WHITE_5" })
|
163
163
|
] }, r);
|
164
164
|
}) }) : /* @__PURE__ */ c(C, { children: [
|
165
|
-
f.map((e) => /* @__PURE__ */ t(
|
166
|
-
|
165
|
+
f.map((e) => /* @__PURE__ */ t(R, { $gapX: 1, $gutterX: 1, children: /* @__PURE__ */ t(
|
166
|
+
Y,
|
167
167
|
{
|
168
168
|
resource: e,
|
169
|
-
onViewResource:
|
170
|
-
onResourceAdditionOrDeletion:
|
169
|
+
onViewResource: v,
|
170
|
+
onResourceAdditionOrDeletion: O,
|
171
171
|
selected: !0
|
172
172
|
}
|
173
173
|
) }, e.id)),
|
174
174
|
m === 0 && /* @__PURE__ */ c(
|
175
|
-
|
175
|
+
R,
|
176
176
|
{
|
177
177
|
$alignItems: "center",
|
178
178
|
$justifyContent: "center",
|
@@ -181,7 +181,7 @@ const q = [
|
|
181
181
|
$flexGap: 8,
|
182
182
|
children: [
|
183
183
|
/* @__PURE__ */ t(j, { opacity: 0.38 }),
|
184
|
-
/* @__PURE__ */ t(
|
184
|
+
/* @__PURE__ */ t(R, { $widthX: 15, children: /* @__PURE__ */ t(g, { $renderAs: "ub1-bold", $color: "BLACK_T_38", $align: "center", children: "No sheets added" }) })
|
185
185
|
]
|
186
186
|
}
|
187
187
|
)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"added-resource-and-filters.js","sources":["../../../../../src/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.tsx"],"sourcesContent":["import type { IAddedResourceAndFilters } from './resources-assign-type';\nimport type { FC } from 'react';\n\nimport { Fragment, memo, useEffect, useRef, useState } from 'react';\n\nimport SheetIcon from '../../../../assets/line-icons/icons/sheet';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport FilterItem from './comps/filter-item/filter-item';\nimport ResourceItem from './comps/resource-item/resource-item';\nimport * as Styled from './resources-assign-styled';\nimport { useUIContext } from '../../../ui/context/context';\nimport { RESOURCE_ASSIGN_ANALYTICS_EVENTS } from './resource-assign-analytics-events';\n\nconst TABS = [\n {\n id: 'resource-filters',\n label: 'Filters',\n },\n {\n id: 'resource-added',\n label: 'Added',\n },\n];\n\nconst EXTRA_PRACTICE_LABEL_MAP: Record<string, string> = {\n LEARNING: 'Learning',\n PRACTICE: 'Practice',\n ASSESSMENT: 'Assessment',\n LEVEL2: 'Advanced',\n LEVEL3: 'Advanced',\n SUBJECTIVE: 'Subjective',\n};\n\nconst AddedResourceAndFilters: FC<IAddedResourceAndFilters> = memo(props => {\n const {\n boards,\n grades,\n nodeTypes,\n selectedResources,\n onResourceDeSelection,\n onFilterUpdate,\n onViewResource,\n } = props;\n\n const boardsRef = useRef(boards);\n const gradesRef = useRef(grades);\n const nodeTypesRef = useRef(nodeTypes);\n\n const { onEvent: trackEvent } = useUIContext();\n\n const [selectedTab, setSelectedTab] = useState('resource-filters');\n\n const addedResourceCount = selectedResources.length;\n const appliedBoard = boardsRef.current.find(board => board.applied)?.name;\n const appliedGrade = gradesRef.current.find(grade => grade.applied)?.name;\n const appliedNodeType = nodeTypesRef.current.find(grade => grade.applied)?.name;\n\n const handleOnBoardChange = (updatedBoard: string) => {\n const boardSelection = appliedBoard === updatedBoard;\n\n trackEvent(\n boardSelection\n ? RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_BOARD_DESELECTED\n : RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_BOARD_SELECTED,\n {\n board: updatedBoard,\n },\n );\n onFilterUpdate({ board: boardSelection ? '' : updatedBoard });\n };\n\n const handleOnGradeChange = (updatedGrade: string) => {\n const gradeSelection = appliedGrade === updatedGrade;\n\n trackEvent(\n gradeSelection\n ? RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_GRADE_DESELECTED\n : RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_GRADE_SELECTED,\n {\n grade: updatedGrade,\n },\n );\n onFilterUpdate({ grade: gradeSelection ? '' : updatedGrade });\n };\n\n const handleOnNodeTypeChange = (updatedNodeType: string) => {\n const nodeTypeSelection = appliedNodeType === updatedNodeType;\n\n trackEvent(\n nodeTypeSelection\n ? RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_GRADE_DESELECTED\n : RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_GRADE_SELECTED,\n {\n node_type: updatedNodeType,\n },\n );\n onFilterUpdate({ node_type: nodeTypeSelection ? '' : updatedNodeType });\n };\n\n useEffect(() => {\n boardsRef.current = boards;\n gradesRef.current = grades;\n nodeTypesRef.current = nodeTypes;\n }, [boards, grades, nodeTypes]);\n\n const filterItemList = [\n {\n title: 'Curriculum',\n options: boardsRef.current.map(({ code, name }) => ({\n id: code,\n label: name,\n value: name,\n })),\n value: appliedBoard,\n onClick: handleOnBoardChange,\n },\n {\n title: 'Grade',\n options: gradesRef.current.map(({ code, name }) => ({\n id: code,\n label: code,\n value: name,\n })),\n value: appliedGrade,\n onClick: handleOnGradeChange,\n },\n {\n title: 'Type',\n options: nodeTypesRef.current.map(({ code, name }) => ({\n id: code,\n label: EXTRA_PRACTICE_LABEL_MAP[name] || '',\n value: name || '',\n })),\n value: appliedNodeType,\n onClick: handleOnNodeTypeChange,\n },\n ];\n\n return (\n <>\n <Styled.HeaderWrapper\n $heightX={4}\n $background=\"WHITE_3\"\n $flexDirection=\"row\"\n $alignItems=\"end\"\n $noBorder\n >\n {TABS.map(tab => {\n const { id, label } = tab;\n const selected = id === selectedTab;\n\n return (\n <Styled.FilterTabWrapper\n key={id}\n $flexDirection=\"row\"\n $width=\"100%\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gapX={0.5}\n $selected={selected}\n onClick={() => setSelectedTab(id)}\n $flexGap={4}\n $heightX={2.5}\n >\n <Text\n $renderAs={selected ? 'ub3-bold' : 'ub3'}\n $align=\"center\"\n $color={selected ? 'BLACK_T_87' : 'BLACK_T_38'}\n >\n {label}\n </Text>\n {addedResourceCount > 0 && id === 'resource-added' && (\n <Styled.ResourceCountWrapper\n $borderRadius={50}\n $background=\"YELLOW_4\"\n $gutter={4}\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $heightX={1.25}\n >\n <Text $renderAs=\"ac4-black\">{addedResourceCount}</Text>\n </Styled.ResourceCountWrapper>\n )}\n </Styled.FilterTabWrapper>\n );\n })}\n </Styled.HeaderWrapper>\n\n <Styled.FilterListWrapper $height=\"calc(100vh - 64px - 16px)\">\n {selectedTab === 'resource-filters' ? (\n <>\n {filterItemList.map(item => {\n const { title, value, options, onClick } = item;\n\n return (\n <Fragment key={title}>\n <FilterItem\n title={title}\n value={value ?? ''}\n options={options}\n onClick={onClick}\n />\n\n <Separator height={1} background=\"WHITE_5\" />\n </Fragment>\n );\n })}\n </>\n ) : (\n <>\n {selectedResources.map(item => (\n <FlexView $gapX={1} $gutterX={1} key={item.id}>\n <ResourceItem\n resource={item}\n onViewResource={onViewResource}\n onResourceAdditionOrDeletion={onResourceDeSelection}\n selected={true}\n />\n </FlexView>\n ))}\n\n {addedResourceCount === 0 && (\n <FlexView\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gapX={2}\n $height=\"100%\"\n $flexGap={8}\n >\n <SheetIcon opacity={0.38} />\n <FlexView $widthX={15}>\n <Text $renderAs=\"ub1-bold\" $color=\"BLACK_T_38\" $align=\"center\">\n No sheets added\n </Text>\n </FlexView>\n </FlexView>\n )}\n </>\n )}\n </Styled.FilterListWrapper>\n </>\n );\n});\n\nexport default AddedResourceAndFilters;\n"],"names":["TABS","EXTRA_PRACTICE_LABEL_MAP","AddedResourceAndFilters","memo","props","boards","grades","nodeTypes","selectedResources","onResourceDeSelection","onFilterUpdate","onViewResource","boardsRef","useRef","gradesRef","nodeTypesRef","trackEvent","useUIContext","selectedTab","setSelectedTab","useState","addedResourceCount","appliedBoard","_a","board","appliedGrade","_b","grade","appliedNodeType","_c","handleOnBoardChange","updatedBoard","boardSelection","RESOURCE_ASSIGN_ANALYTICS_EVENTS","handleOnGradeChange","updatedGrade","gradeSelection","handleOnNodeTypeChange","updatedNodeType","nodeTypeSelection","useEffect","filterItemList","code","name","jsxs","Fragment","jsx","Styled.HeaderWrapper","tab","id","label","selected","Styled.FilterTabWrapper","Text","Styled.ResourceCountWrapper","Styled.FilterListWrapper","item","title","value","options","onClick","FilterItem","Separator","FlexView","ResourceItem","SheetIcon"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"added-resource-and-filters.js","sources":["../../../../../src/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.tsx"],"sourcesContent":["import type { IAddedResourceAndFilters } from './resources-assign-type';\nimport type { FC } from 'react';\n\nimport { Fragment, memo, useEffect, useRef, useState } from 'react';\n\nimport SheetIcon from '../../../../assets/line-icons/icons/sheet';\nimport { useUIContext } from '../../../ui/context/context';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport FilterItem from './comps/filter-item/filter-item';\nimport ResourceItem from './comps/resource-item/resource-item';\nimport { RESOURCE_ASSIGN_ANALYTICS_EVENTS } from './resource-assign-analytics-events';\nimport * as Styled from './resources-assign-styled';\n\nconst TABS = [\n {\n id: 'resource-filters',\n label: 'Filters',\n },\n {\n id: 'resource-added',\n label: 'Added',\n },\n];\n\nconst EXTRA_PRACTICE_LABEL_MAP: Record<string, string> = {\n LEARNING: 'Learning',\n PRACTICE: 'Practice',\n ASSESSMENT: 'Assessment',\n LEVEL2: 'Advanced',\n LEVEL3: 'Advanced',\n SUBJECTIVE: 'Subjective',\n};\n\nconst AddedResourceAndFilters: FC<IAddedResourceAndFilters> = memo(props => {\n const {\n boards,\n grades,\n nodeTypes,\n selectedResources,\n onResourceDeSelection,\n onFilterUpdate,\n onViewResource,\n } = props;\n\n const boardsRef = useRef(boards);\n const gradesRef = useRef(grades);\n const nodeTypesRef = useRef(nodeTypes);\n\n const { onEvent: trackEvent } = useUIContext();\n\n const [selectedTab, setSelectedTab] = useState('resource-filters');\n\n const addedResourceCount = selectedResources.length;\n const appliedBoard = boardsRef.current.find(board => board.applied)?.name;\n const appliedGrade = gradesRef.current.find(grade => grade.applied)?.name;\n const appliedNodeType = nodeTypesRef.current.find(grade => grade.applied)?.name;\n\n const handleOnBoardChange = (updatedBoard: string) => {\n const boardSelection = appliedBoard === updatedBoard;\n\n trackEvent(\n boardSelection\n ? RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_BOARD_DESELECTED\n : RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_BOARD_SELECTED,\n {\n board: updatedBoard,\n },\n );\n onFilterUpdate({ board: boardSelection ? '' : updatedBoard });\n };\n\n const handleOnGradeChange = (updatedGrade: string) => {\n const gradeSelection = appliedGrade === updatedGrade;\n\n trackEvent(\n gradeSelection\n ? RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_GRADE_DESELECTED\n : RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_GRADE_SELECTED,\n {\n grade: updatedGrade,\n },\n );\n onFilterUpdate({ grade: gradeSelection ? '' : updatedGrade });\n };\n\n const handleOnNodeTypeChange = (updatedNodeType: string) => {\n const nodeTypeSelection = appliedNodeType === updatedNodeType;\n\n trackEvent(\n nodeTypeSelection\n ? RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_NODE_TYPE_DESELECTED\n : RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_NODE_TYPE_SELECTED,\n {\n node_type: updatedNodeType,\n },\n );\n onFilterUpdate({ node_type: nodeTypeSelection ? '' : updatedNodeType });\n };\n\n useEffect(() => {\n boardsRef.current = boards;\n gradesRef.current = grades;\n nodeTypesRef.current = nodeTypes;\n }, [boards, grades, nodeTypes]);\n\n const filterItemList = [\n {\n title: 'Curriculum',\n options: boardsRef.current.map(({ code, name }) => ({\n id: code,\n label: name,\n value: name,\n })),\n value: appliedBoard,\n onClick: handleOnBoardChange,\n },\n {\n title: 'Grade',\n options: gradesRef.current.map(({ code, name }) => ({\n id: code,\n label: code,\n value: name,\n })),\n value: appliedGrade,\n onClick: handleOnGradeChange,\n },\n {\n title: 'Type',\n options: nodeTypesRef.current.map(({ code, name }) => ({\n id: code,\n label: EXTRA_PRACTICE_LABEL_MAP[name] || '',\n value: name || '',\n })),\n value: appliedNodeType,\n onClick: handleOnNodeTypeChange,\n },\n ];\n\n return (\n <>\n <Styled.HeaderWrapper\n $heightX={4}\n $background=\"WHITE_3\"\n $flexDirection=\"row\"\n $alignItems=\"end\"\n $noBorder\n >\n {TABS.map(tab => {\n const { id, label } = tab;\n const selected = id === selectedTab;\n\n return (\n <Styled.FilterTabWrapper\n key={id}\n $flexDirection=\"row\"\n $width=\"100%\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gapX={0.5}\n $selected={selected}\n onClick={() => setSelectedTab(id)}\n $flexGap={4}\n $heightX={2.5}\n >\n <Text\n $renderAs={selected ? 'ub3-bold' : 'ub3'}\n $align=\"center\"\n $color={selected ? 'BLACK_T_87' : 'BLACK_T_38'}\n >\n {label}\n </Text>\n {addedResourceCount > 0 && id === 'resource-added' && (\n <Styled.ResourceCountWrapper\n $borderRadius={50}\n $background=\"YELLOW_4\"\n $gutter={4}\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $heightX={1.25}\n >\n <Text $renderAs=\"ac4-black\">{addedResourceCount}</Text>\n </Styled.ResourceCountWrapper>\n )}\n </Styled.FilterTabWrapper>\n );\n })}\n </Styled.HeaderWrapper>\n\n <Styled.FilterListWrapper $height=\"calc(100vh - 64px - 16px)\">\n {selectedTab === 'resource-filters' ? (\n <>\n {filterItemList.map(item => {\n const { title, value, options, onClick } = item;\n\n return (\n <Fragment key={title}>\n <FilterItem\n title={title}\n value={value ?? ''}\n options={options}\n onClick={onClick}\n />\n\n <Separator height={1} background=\"WHITE_5\" />\n </Fragment>\n );\n })}\n </>\n ) : (\n <>\n {selectedResources.map(item => (\n <FlexView $gapX={1} $gutterX={1} key={item.id}>\n <ResourceItem\n resource={item}\n onViewResource={onViewResource}\n onResourceAdditionOrDeletion={onResourceDeSelection}\n selected={true}\n />\n </FlexView>\n ))}\n\n {addedResourceCount === 0 && (\n <FlexView\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gapX={2}\n $height=\"100%\"\n $flexGap={8}\n >\n <SheetIcon opacity={0.38} />\n <FlexView $widthX={15}>\n <Text $renderAs=\"ub1-bold\" $color=\"BLACK_T_38\" $align=\"center\">\n No sheets added\n </Text>\n </FlexView>\n </FlexView>\n )}\n </>\n )}\n </Styled.FilterListWrapper>\n </>\n );\n});\n\nexport default AddedResourceAndFilters;\n"],"names":["TABS","EXTRA_PRACTICE_LABEL_MAP","AddedResourceAndFilters","memo","props","boards","grades","nodeTypes","selectedResources","onResourceDeSelection","onFilterUpdate","onViewResource","boardsRef","useRef","gradesRef","nodeTypesRef","trackEvent","useUIContext","selectedTab","setSelectedTab","useState","addedResourceCount","appliedBoard","_a","board","appliedGrade","_b","grade","appliedNodeType","_c","handleOnBoardChange","updatedBoard","boardSelection","RESOURCE_ASSIGN_ANALYTICS_EVENTS","handleOnGradeChange","updatedGrade","gradeSelection","handleOnNodeTypeChange","updatedNodeType","nodeTypeSelection","useEffect","filterItemList","code","name","jsxs","Fragment","jsx","Styled.HeaderWrapper","tab","id","label","selected","Styled.FilterTabWrapper","Text","Styled.ResourceCountWrapper","Styled.FilterListWrapper","item","title","value","options","onClick","FilterItem","Separator","FlexView","ResourceItem","SheetIcon"],"mappings":"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"}
|
@@ -5,9 +5,9 @@ import g from "../../../../../../assets/line-icons/icons/plus.js";
|
|
5
5
|
import h from "../../../../../ui/buttons/icon-button/icon-button.js";
|
6
6
|
import s from "../../../../../ui/layout/flex-view.js";
|
7
7
|
import x from "../../../../../ui/separator/separator.js";
|
8
|
+
import { RESOURCE_ASSIGN_ANALYTICS_EVENTS as l } from "../../resource-assign-analytics-events.js";
|
8
9
|
import { ResourceItemTitle as S, ResourceItemTags as A } from "./resource-item-styled.js";
|
9
10
|
import { getGradeTags as b, getBoardTags as y } from "./utils.js";
|
10
|
-
import { RESOURCE_ASSIGN_ANALYTICS_EVENTS as l } from "../../resource-assign-analytics-events.js";
|
11
11
|
const U = R((d) => {
|
12
12
|
const { resource: r, selected: e, onResourceAdditionOrDeletion: c, onViewResource: i } = d, { name: m, stream: p, grades: E, boards: f, node_type: u, node_id: t } = r, I = b(E), C = y(f), T = a(() => {
|
13
13
|
c(e ? "deselect" : "select", t);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resource-item.js","sources":["../../../../../../../src/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.tsx"],"sourcesContent":["import type { IResourceItem } from './resource-item-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback } from 'react';\n\nimport CrossIcon from '../../../../../../assets/line-icons/icons/cross';\nimport PlusIcon from '../../../../../../assets/line-icons/icons/plus';\nimport IconButton from '../../../../../ui/buttons/icon-button/icon-button';\nimport FlexView from '../../../../../ui/layout/flex-view';\nimport Separator from '../../../../../ui/separator/separator';\nimport * as Styled from './resource-item-styled';\nimport { getBoardTags, getGradeTags } from './utils';\
|
1
|
+
{"version":3,"file":"resource-item.js","sources":["../../../../../../../src/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.tsx"],"sourcesContent":["import type { IResourceItem } from './resource-item-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback } from 'react';\n\nimport CrossIcon from '../../../../../../assets/line-icons/icons/cross';\nimport PlusIcon from '../../../../../../assets/line-icons/icons/plus';\nimport IconButton from '../../../../../ui/buttons/icon-button/icon-button';\nimport FlexView from '../../../../../ui/layout/flex-view';\nimport Separator from '../../../../../ui/separator/separator';\nimport { RESOURCE_ASSIGN_ANALYTICS_EVENTS } from '../../resource-assign-analytics-events';\nimport * as Styled from './resource-item-styled';\nimport { getBoardTags, getGradeTags } from './utils';\n\nconst ResourceItem: FC<IResourceItem> = memo(props => {\n const { resource, selected, onResourceAdditionOrDeletion, onViewResource } = props;\n const { name, stream, grades, boards, node_type: nodeType, node_id: nodeId } = resource;\n const grade = getGradeTags(grades);\n const test = getBoardTags(boards);\n\n const handleOnClick = useCallback(() => {\n onResourceAdditionOrDeletion(selected ? 'deselect' : 'select', nodeId);\n }, [onResourceAdditionOrDeletion, nodeId, selected]);\n\n const handleOnResourceView = useCallback(() => {\n onViewResource(resource);\n }, [onViewResource, resource]);\n\n return (\n <FlexView $flexGapX={1.5}>\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n $flexGapX={2}\n >\n <FlexView $flexWrap $flexGap={4} $widthX={25.5}>\n <Styled.ResourceItemTitle $renderAs=\"ab2\" onClick={handleOnResourceView}>\n {name}\n </Styled.ResourceItemTitle>\n\n <Styled.ResourceItemTags $renderAs=\"ub3\" $color=\"BLACK_T_60\">\n {stream} {grade} {test} • {nodeType}\n </Styled.ResourceItemTags>\n </FlexView>\n\n <IconButton\n Icon={selected ? CrossIcon : PlusIcon}\n renderAs={selected ? 'tertiary' : 'secondary'}\n analyticsLabel={\n selected\n ? RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_ITEM_DESELECTED\n : RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_ITEM_SELECTED\n }\n analyticsProps={{\n node_id: nodeId,\n }}\n size=\"xsmall\"\n onClick={handleOnClick}\n />\n </FlexView>\n\n <Separator height={1} background=\"WHITE_5\" />\n </FlexView>\n );\n});\n\nexport default ResourceItem;\n"],"names":["ResourceItem","memo","props","resource","selected","onResourceAdditionOrDeletion","onViewResource","name","stream","grades","boards","nodeType","nodeId","grade","getGradeTags","test","getBoardTags","handleOnClick","useCallback","handleOnResourceView","jsxs","FlexView","jsx","Styled.ResourceItemTitle","Styled.ResourceItemTags","IconButton","CrossIcon","PlusIcon","RESOURCE_ASSIGN_ANALYTICS_EVENTS","Separator"],"mappings":";;;;;;;;;;AAcM,MAAAA,IAAkCC,EAAK,CAASC,MAAA;AACpD,QAAM,EAAE,UAAAC,GAAU,UAAAC,GAAU,8BAAAC,GAA8B,gBAAAC,MAAmBJ,GACvE,EAAE,MAAAK,GAAM,QAAAC,GAAQ,QAAAC,GAAQ,QAAAC,GAAQ,WAAWC,GAAU,SAASC,EAAW,IAAAT,GACzEU,IAAQC,EAAaL,CAAM,GAC3BM,IAAOC,EAAaN,CAAM,GAE1BO,IAAgBC,EAAY,MAAM;AACT,IAAAb,EAAAD,IAAW,aAAa,UAAUQ,CAAM;AAAA,EACpE,GAAA,CAACP,GAA8BO,GAAQR,CAAQ,CAAC,GAE7Ce,IAAuBD,EAAY,MAAM;AAC7C,IAAAZ,EAAeH,CAAQ;AAAA,EAAA,GACtB,CAACG,GAAgBH,CAAQ,CAAC;AAG3B,SAAA,gBAAAiB,EAACC,GAAS,EAAA,WAAW,KACnB,UAAA;AAAA,IAAA,gBAAAD;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,gBAAe;AAAA,QACf,aAAY;AAAA,QACZ,iBAAgB;AAAA,QAChB,WAAW;AAAA,QAEX,UAAA;AAAA,UAAA,gBAAAD,EAACC,KAAS,WAAS,IAAC,UAAU,GAAG,SAAS,MACxC,UAAA;AAAA,YAAA,gBAAAC,EAACC,GAAA,EAAyB,WAAU,OAAM,SAASJ,GAChD,UACHZ,GAAA;AAAA,8BAECiB,GAAA,EAAwB,WAAU,OAAM,QAAO,cAC7C,UAAA;AAAA,cAAAhB;AAAA,cAAO;AAAA,cAAEK;AAAA,cAAM;AAAA,cAAEE;AAAA,cAAK;AAAA,cAAIJ;AAAA,YAAA,GAC7B;AAAA,UAAA,GACF;AAAA,UAEA,gBAAAW;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,MAAMrB,IAAWsB,IAAYC;AAAA,cAC7B,UAAUvB,IAAW,aAAa;AAAA,cAClC,gBACEA,IACIwB,EAAiC,2BACjCA,EAAiC;AAAA,cAEvC,gBAAgB;AAAA,gBACd,SAAShB;AAAA,cACX;AAAA,cACA,MAAK;AAAA,cACL,SAASK;AAAA,YAAA;AAAA,UACX;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IAEC,gBAAAK,EAAAO,GAAA,EAAU,QAAQ,GAAG,YAAW,WAAU;AAAA,EAC7C,EAAA,CAAA;AAEJ,CAAC;"}
|
@@ -1,113 +1,113 @@
|
|
1
|
-
import { jsx as r, jsxs as
|
2
|
-
import { memo as Z, useState as
|
1
|
+
import { jsx as r, jsxs as A } from "react/jsx-runtime";
|
2
|
+
import { memo as Z, useState as a, useCallback as l, useEffect as w } from "react";
|
3
3
|
import { ILLUSTRATIONS as ee } from "../../../../assets/illustrations/illustrations.js";
|
4
4
|
import re from "../../../../assets/line-icons/icons/back2.js";
|
5
5
|
import se from "../../../ui/buttons/button/button.js";
|
6
|
-
import { useUIContext as
|
7
|
-
import
|
8
|
-
import
|
6
|
+
import { useUIContext as te } from "../../../ui/context/context.js";
|
7
|
+
import oe from "../../../ui/inputs/searchable-input/searchable-input.js";
|
8
|
+
import h from "../../../ui/layout/flex-view.js";
|
9
9
|
import ne from "../../../ui/loader/app-loader/app-loader.js";
|
10
10
|
import ie from "../../../ui/text/text.js";
|
11
11
|
import ce from "./added-resource-and-filters.js";
|
12
12
|
import { useGetSearchResource as ae } from "./api/get-resource.js";
|
13
13
|
import { usePostMilestoneResource as le } from "./api/goal-resource-assign.js";
|
14
14
|
import { usePostLPARResource as de } from "./api/lpar-resource-assign.js";
|
15
|
-
import me from "./resource-
|
16
|
-
import
|
15
|
+
import { RESOURCE_ASSIGN_ANALYTICS_EVENTS as me } from "./resource-assign-analytics-events.js";
|
16
|
+
import ue from "./resource-items/resource-items.js";
|
17
|
+
import { LoaderWrapper as pe, SearchContainer as ge, HeaderWrapper as he } from "./resources-assign-styled.js";
|
17
18
|
import { checkIfFiltersAreAdded as U } from "./utils.js";
|
18
|
-
import { RESOURCE_ASSIGN_ANALYTICS_EVENTS as he } from "./resource-assign-analytics-events.js";
|
19
19
|
const fe = Z((k) => {
|
20
20
|
const {
|
21
|
-
studentId:
|
22
|
-
stream:
|
23
|
-
onResourceAssign:
|
21
|
+
studentId: _,
|
22
|
+
stream: N,
|
23
|
+
onResourceAssign: I,
|
24
24
|
onError: S,
|
25
|
-
onExitResourceAssign:
|
26
|
-
onViewResource:
|
27
|
-
userMilestoneId:
|
28
|
-
programId:
|
29
|
-
} = k, { onEvent:
|
30
|
-
stream:
|
31
|
-
page:
|
25
|
+
onExitResourceAssign: v,
|
26
|
+
onViewResource: E,
|
27
|
+
userMilestoneId: d,
|
28
|
+
programId: m
|
29
|
+
} = k, { onEvent: C } = te(), [u, F] = a(1), [p, V] = a(""), [o, P] = a({
|
30
|
+
stream: N,
|
31
|
+
page: u,
|
32
32
|
per_page: 50,
|
33
|
-
user_milestone_id:
|
34
|
-
program_id:
|
35
|
-
}), [
|
33
|
+
user_milestone_id: d,
|
34
|
+
program_id: m
|
35
|
+
}), [g, y] = a([]), [i, $] = a([]), x = l(
|
36
36
|
(e) => {
|
37
|
-
e ? S(e) :
|
37
|
+
e ? S(e) : I();
|
38
38
|
},
|
39
|
-
[S,
|
39
|
+
[S, I]
|
40
40
|
), {
|
41
|
-
get:
|
42
|
-
data:
|
43
|
-
isProcessing:
|
44
|
-
isProcessingFailed:
|
45
|
-
} = ae(), { post:
|
41
|
+
get: f,
|
42
|
+
data: s,
|
43
|
+
isProcessing: O,
|
44
|
+
isProcessingFailed: j
|
45
|
+
} = ae(), { post: T, isProcessing: G } = le({
|
46
46
|
onComplete: x
|
47
|
-
}), { post: L, isProcessing:
|
47
|
+
}), { post: L, isProcessing: D } = de({
|
48
48
|
onComplete: x
|
49
49
|
}), H = (e) => {
|
50
|
-
|
51
|
-
}, b =
|
52
|
-
(e,
|
50
|
+
P((n) => ({ ...n, ...e }));
|
51
|
+
}, b = l(
|
52
|
+
(e, n) => {
|
53
53
|
if (e === "select") {
|
54
|
-
const
|
55
|
-
|
54
|
+
const t = g.find((c) => c.node_id === n);
|
55
|
+
t && $((c) => [...c, t]);
|
56
56
|
} else
|
57
57
|
$(
|
58
|
-
(
|
58
|
+
(t) => t.filter((c) => c.node_id !== n)
|
59
59
|
);
|
60
60
|
},
|
61
|
-
[
|
61
|
+
[g]
|
62
62
|
), Q = (e) => {
|
63
|
-
|
63
|
+
f("ep-dummy-id", {
|
64
64
|
...o,
|
65
65
|
page: e
|
66
|
-
}),
|
67
|
-
}, W = (
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
search_term: n
|
72
|
-
}), C((e) => ({
|
66
|
+
}), F(e);
|
67
|
+
}, W = l(() => {
|
68
|
+
C(me.RESOURCE_SEARCH_INPUT_VALUE, {
|
69
|
+
search_term: p
|
70
|
+
}), P((e) => ({
|
73
71
|
...e,
|
74
|
-
search_term:
|
72
|
+
search_term: p || ""
|
75
73
|
}));
|
76
|
-
}, [
|
77
|
-
(
|
78
|
-
},
|
79
|
-
|
74
|
+
}, [p, C]), X = (e) => {
|
75
|
+
V(e);
|
76
|
+
}, R = l(() => {
|
77
|
+
(U(o) || o.stream) && (f("ep-dummy-id", o), y([]));
|
78
|
+
}, [o, f]), z = l(() => {
|
79
|
+
d ? T(
|
80
80
|
{
|
81
81
|
node_ids: i.map((e) => e.node_id)
|
82
82
|
},
|
83
|
-
{ userMilestoneId:
|
84
|
-
) :
|
83
|
+
{ userMilestoneId: d }
|
84
|
+
) : m && L(
|
85
85
|
{
|
86
86
|
nodes: i.map(({ node_id: e }) => ({
|
87
87
|
id: e,
|
88
88
|
attempt_location: "ANY"
|
89
89
|
})),
|
90
|
-
program_id:
|
90
|
+
program_id: m
|
91
91
|
},
|
92
|
-
{ studentId:
|
92
|
+
{ studentId: _ }
|
93
93
|
);
|
94
94
|
}, [
|
95
|
-
|
96
|
-
|
95
|
+
T,
|
96
|
+
d,
|
97
97
|
i,
|
98
98
|
L,
|
99
|
-
|
100
|
-
|
99
|
+
m,
|
100
|
+
_
|
101
101
|
]);
|
102
102
|
if (w(() => {
|
103
|
-
|
104
|
-
}, [
|
105
|
-
|
106
|
-
const
|
107
|
-
return Array.from(new Map(
|
103
|
+
R();
|
104
|
+
}, [R]), w(() => {
|
105
|
+
s != null && s.results.length && y((e) => {
|
106
|
+
const n = u !== 1 ? [...e, ...s.results] : s.results;
|
107
|
+
return Array.from(new Map(n.map((t) => [t.id, t])).values());
|
108
108
|
});
|
109
|
-
}, [
|
110
|
-
return /* @__PURE__ */ r(
|
109
|
+
}, [s == null ? void 0 : s.results, u]), j)
|
110
|
+
return /* @__PURE__ */ r(h, { $height: "100%", $alignItems: "center", $justifyContent: "center", children: /* @__PURE__ */ A(h, { $flexGapX: 1.5, $alignItems: "center", $justifyContent: "center", children: [
|
111
111
|
/* @__PURE__ */ r(ie, { $renderAs: "h6", children: "Oops! Something went wrong. Please try again later." }),
|
112
112
|
/* @__PURE__ */ r(
|
113
113
|
se,
|
@@ -118,56 +118,57 @@ const fe = Z((k) => {
|
|
118
118
|
renderAs: "primary",
|
119
119
|
label: "Try again",
|
120
120
|
analyticsLabel: "resource_get_api_failed",
|
121
|
-
onClick:
|
121
|
+
onClick: R
|
122
122
|
}
|
123
123
|
)
|
124
124
|
] }) });
|
125
|
-
if (
|
125
|
+
if (O && !s && g.length === 0)
|
126
126
|
return /* @__PURE__ */ r(ne, { height: "100vh" });
|
127
|
-
const { filters: B, total_pages: M = 0 } =
|
128
|
-
return /* @__PURE__ */
|
129
|
-
|
130
|
-
/* @__PURE__ */
|
127
|
+
const { filters: B, total_pages: M = 0 } = s || {}, { boards: Y = [], grades: q = [], node_types: J = [] } = B || {}, K = U(o);
|
128
|
+
return /* @__PURE__ */ A(h, { $flexDirection: "row", $height: "100vh", children: [
|
129
|
+
O && /* @__PURE__ */ r(pe, { children: /* @__PURE__ */ r("img", { src: ee.LOADER_1, alt: "resource_loading" }) }),
|
130
|
+
/* @__PURE__ */ A(ge, { $width: "60%", children: [
|
131
131
|
/* @__PURE__ */ r(
|
132
|
-
|
132
|
+
he,
|
133
133
|
{
|
134
134
|
$heightX: 4,
|
135
135
|
$background: "WHITE_3",
|
136
136
|
$alignItems: "center",
|
137
137
|
$justifyContent: "center",
|
138
138
|
children: /* @__PURE__ */ r(
|
139
|
-
|
139
|
+
oe,
|
140
140
|
{
|
141
|
-
value:
|
142
|
-
onSearchTextChange:
|
141
|
+
value: p,
|
142
|
+
onSearchTextChange: X,
|
143
143
|
renderAs: "primary",
|
144
144
|
width: "99%",
|
145
145
|
size: "regular",
|
146
146
|
label: "Type topic name...",
|
147
|
-
onEnter:
|
148
|
-
|
147
|
+
onEnter: W,
|
148
|
+
searchOnClear: !0,
|
149
|
+
onPrefixElementClick: v,
|
149
150
|
prefixElement: /* @__PURE__ */ r(re, {})
|
150
151
|
}
|
151
152
|
)
|
152
153
|
}
|
153
154
|
),
|
154
155
|
/* @__PURE__ */ r(
|
155
|
-
|
156
|
+
ue,
|
156
157
|
{
|
157
|
-
resourceItems:
|
158
|
+
resourceItems: g,
|
158
159
|
selectedResource: i,
|
159
|
-
pageNumber:
|
160
|
+
pageNumber: u,
|
160
161
|
totalPages: M,
|
161
|
-
assigningInProgress:
|
162
|
+
assigningInProgress: G || D,
|
162
163
|
isFilterAdded: K,
|
163
164
|
onResourceAdditionOrDeletion: b,
|
164
165
|
onResourceAssign: z,
|
165
|
-
onViewResource:
|
166
|
+
onViewResource: E,
|
166
167
|
onPageNumberUpdate: Q
|
167
168
|
}
|
168
169
|
)
|
169
170
|
] }),
|
170
|
-
/* @__PURE__ */ r(
|
171
|
+
/* @__PURE__ */ r(h, { $width: "40%", children: /* @__PURE__ */ r(
|
171
172
|
ce,
|
172
173
|
{
|
173
174
|
boards: Y,
|
@@ -176,12 +177,12 @@ const fe = Z((k) => {
|
|
176
177
|
selectedResources: i,
|
177
178
|
onResourceDeSelection: b,
|
178
179
|
onFilterUpdate: H,
|
179
|
-
onViewResource:
|
180
|
+
onViewResource: E
|
180
181
|
}
|
181
182
|
) })
|
182
183
|
] });
|
183
|
-
}),
|
184
|
+
}), Ne = fe;
|
184
185
|
export {
|
185
|
-
|
186
|
+
Ne as default
|
186
187
|
};
|
187
188
|
//# sourceMappingURL=resources-assign.js.map
|
package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resources-assign.js","sources":["../../../../../src/features/milestone/milestone-resources/resources-assign/resources-assign.tsx"],"sourcesContent":["import type { IExtraPracticeQuery } from './api/get-resource';\nimport type { IResourceItemStep } from './comps/resource-item/resource-item-types';\nimport type { IEPResourceAssign, IResourceData } from './resources-assign-type';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useState } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport Back2Icon from '../../../../assets/line-icons/icons/back2';\nimport Button from '../../../ui/buttons/button/button';\nimport { useUIContext } from '../../../ui/context/context';\nimport SearchableInput from '../../../ui/inputs/searchable-input/searchable-input';\nimport FlexView from '../../../ui/layout/flex-view';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Text from '../../../ui/text/text';\nimport AddedResourceAndFilters from './added-resource-and-filters';\nimport { useGetSearchResource } from './api/get-resource';\nimport { usePostMilestoneResource } from './api/goal-resource-assign';\nimport { usePostLPARResource } from './api/lpar-resource-assign';\nimport ResourceItems from './resource-items/resource-items';\nimport * as Styled from './resources-assign-styled';\nimport { checkIfFiltersAreAdded } from './utils';\nimport { RESOURCE_ASSIGN_ANALYTICS_EVENTS } from './resource-assign-analytics-events';\n\nconst EPResourceAssign: FC<IEPResourceAssign> = memo(props => {\n const {\n studentId,\n stream,\n onResourceAssign,\n onError,\n onExitResourceAssign,\n onViewResource,\n userMilestoneId,\n programId,\n } = props;\n\n const { onEvent: trackEvent } = useUIContext();\n\n const [pageNumber, setPageNumber] = useState(1);\n const [searchValue, setSearchValue] = useState('');\n const [searchQuery, setSearchQuery] = useState<IExtraPracticeQuery>({\n stream: stream,\n page: pageNumber,\n per_page: 50,\n user_milestone_id: userMilestoneId,\n program_id: programId,\n });\n const [resourceItems, setResourceItems] = useState<IResourceData['results']>([]);\n const [selectedResourceItems, setSelectedResource] = useState<IResourceData['results']>([]);\n\n const handleOnResourceAssignComplete = useCallback(\n (errorMessage: string | null) => {\n if (errorMessage) {\n onError(errorMessage);\n } else {\n onResourceAssign();\n }\n },\n [onError, onResourceAssign],\n );\n\n const {\n get: getSearchResource,\n data: resourceSearchData,\n isProcessing,\n isProcessingFailed,\n } = useGetSearchResource();\n\n const { post: postAssignGoalResource, isProcessing: goalResourceAssignInProgress } =\n usePostMilestoneResource({\n onComplete: handleOnResourceAssignComplete,\n });\n const { post: postAssignLPARResource, isProcessing: lparResourceAssignInProgress } =\n usePostLPARResource({\n onComplete: handleOnResourceAssignComplete,\n });\n\n const handleOnSearchQueryChange = (updatedQuery: Omit<IExtraPracticeQuery, 'stream'>) => {\n setSearchQuery(prev => ({ ...prev, ...updatedQuery }));\n };\n\n const handleOnResourceAdditionOrDeletion = useCallback(\n (step: IResourceItemStep, resourceNodeId: string) => {\n if (step === 'select') {\n const resourceItem = resourceItems.find(resource => resource.node_id === resourceNodeId);\n\n if (resourceItem) {\n setSelectedResource(prev => {\n return [...prev, resourceItem];\n });\n }\n } else {\n setSelectedResource(prev =>\n prev.filter(prevResource => prevResource.node_id !== resourceNodeId),\n );\n }\n },\n [resourceItems],\n );\n\n const handleScrollPagination = (newPageNumber: number) => {\n getSearchResource('ep-dummy-id', {\n ...searchQuery,\n page: newPageNumber,\n });\n setPageNumber(newPageNumber);\n };\n\n const handleSearchTextChange = (value: string) => {\n setSearchValue(value);\n };\n\n const handleSearch = useCallback(() => {\n if (searchValue) {\n trackEvent(RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_SEARCH_INPUT_VALUE, {\n search_term: searchValue,\n });\n }\n\n setSearchQuery(prev => ({\n ...prev,\n search_term: searchValue || '',\n }));\n }, [searchValue, trackEvent]);\n\n const fetchResource = useCallback(() => {\n if (checkIfFiltersAreAdded(searchQuery) || searchQuery.stream) {\n getSearchResource('ep-dummy-id', searchQuery);\n setResourceItems([]);\n }\n }, [searchQuery, getSearchResource]);\n\n const handleOnResourceAssign = useCallback(() => {\n if (userMilestoneId) {\n postAssignGoalResource(\n {\n node_ids: selectedResourceItems.map(resource => resource.node_id),\n },\n { userMilestoneId },\n );\n } else if (programId) {\n postAssignLPARResource(\n {\n nodes: selectedResourceItems.map(({ node_id: nodeId }) => ({\n id: nodeId,\n attempt_location: 'ANY',\n })),\n program_id: programId,\n },\n { studentId },\n );\n }\n }, [\n postAssignGoalResource,\n userMilestoneId,\n selectedResourceItems,\n postAssignLPARResource,\n programId,\n studentId,\n ]);\n\n useEffect(() => {\n fetchResource();\n }, [fetchResource]);\n\n useEffect(() => {\n if (resourceSearchData) {\n setResourceItems(prev => {\n const updatedData = [...prev, ...resourceSearchData.results];\n\n return Array.from(new Map(updatedData.map(item => [item.id, item])).values());\n });\n }\n }, [resourceSearchData]);\n\n if (isProcessingFailed) {\n return (\n <FlexView $height=\"100%\" $alignItems=\"center\" $justifyContent=\"center\">\n <FlexView $flexGapX={1.5} $alignItems=\"center\" $justifyContent=\"center\">\n <Text $renderAs=\"h6\">Oops! Something went wrong. Please try again later.</Text>\n <Button\n widthX={14}\n size=\"small\"\n shape=\"square\"\n renderAs=\"primary\"\n label=\"Try again\"\n analyticsLabel=\"resource_get_api_failed\"\n onClick={fetchResource}\n />\n </FlexView>\n </FlexView>\n );\n }\n\n if (isProcessing && !resourceSearchData && resourceItems.length === 0) {\n return <AppLoader height=\"100vh\" />;\n }\n\n const { filters, total_pages: totalPages = 0 } = resourceSearchData || {};\n const { boards = [], grades = [], node_types: nodeTypes = [] } = filters || {};\n const isFilterAdded = checkIfFiltersAreAdded(searchQuery);\n\n return (\n <FlexView $flexDirection=\"row\" $height=\"100vh\">\n {isProcessing && (\n <Styled.LoaderWrapper>\n <img src={ILLUSTRATIONS.LOADER_1} alt=\"resource_loading\" />\n </Styled.LoaderWrapper>\n )}\n\n <Styled.SearchContainer $width=\"60%\">\n <Styled.HeaderWrapper\n $heightX={4}\n $background=\"WHITE_3\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n <SearchableInput\n value={searchValue}\n onSearchTextChange={handleSearchTextChange}\n renderAs=\"primary\"\n width=\"99%\"\n size=\"regular\"\n label=\"Type topic name...\"\n onEnter={handleSearch}\n onPrefixElementClick={onExitResourceAssign}\n prefixElement={<Back2Icon />}\n />\n </Styled.HeaderWrapper>\n\n <ResourceItems\n resourceItems={resourceItems}\n selectedResource={selectedResourceItems}\n pageNumber={pageNumber}\n totalPages={totalPages}\n assigningInProgress={goalResourceAssignInProgress || lparResourceAssignInProgress}\n isFilterAdded={isFilterAdded}\n onResourceAdditionOrDeletion={handleOnResourceAdditionOrDeletion}\n onResourceAssign={handleOnResourceAssign}\n onViewResource={onViewResource}\n onPageNumberUpdate={handleScrollPagination}\n />\n </Styled.SearchContainer>\n\n <FlexView $width=\"40%\">\n <AddedResourceAndFilters\n boards={boards}\n grades={grades}\n nodeTypes={nodeTypes}\n selectedResources={selectedResourceItems}\n onResourceDeSelection={handleOnResourceAdditionOrDeletion}\n onFilterUpdate={handleOnSearchQueryChange}\n onViewResource={onViewResource}\n />\n </FlexView>\n </FlexView>\n );\n});\n\nexport default EPResourceAssign;\n"],"names":["EPResourceAssign","memo","props","studentId","stream","onResourceAssign","onError","onExitResourceAssign","onViewResource","userMilestoneId","programId","trackEvent","useUIContext","pageNumber","setPageNumber","useState","searchValue","setSearchValue","searchQuery","setSearchQuery","resourceItems","setResourceItems","selectedResourceItems","setSelectedResource","handleOnResourceAssignComplete","useCallback","errorMessage","getSearchResource","resourceSearchData","isProcessing","isProcessingFailed","useGetSearchResource","postAssignGoalResource","goalResourceAssignInProgress","usePostMilestoneResource","postAssignLPARResource","lparResourceAssignInProgress","usePostLPARResource","handleOnSearchQueryChange","updatedQuery","prev","handleOnResourceAdditionOrDeletion","step","resourceNodeId","resourceItem","resource","prevResource","handleScrollPagination","newPageNumber","handleSearchTextChange","value","handleSearch","RESOURCE_ASSIGN_ANALYTICS_EVENTS","fetchResource","checkIfFiltersAreAdded","handleOnResourceAssign","nodeId","useEffect","updatedData","item","jsx","FlexView","jsxs","Text","Button","AppLoader","filters","totalPages","boards","grades","nodeTypes","isFilterAdded","Styled.LoaderWrapper","ILLUSTRATIONS","Styled.SearchContainer","Styled.HeaderWrapper","SearchableInput","Back2Icon","ResourceItems","AddedResourceAndFilters","EPResourceAssign$1"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"resources-assign.js","sources":["../../../../../src/features/milestone/milestone-resources/resources-assign/resources-assign.tsx"],"sourcesContent":["import type { IExtraPracticeQuery } from './api/get-resource';\nimport type { IResourceItemStep } from './comps/resource-item/resource-item-types';\nimport type { IEPResourceAssign, IResourceData } from './resources-assign-type';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useState } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport Back2Icon from '../../../../assets/line-icons/icons/back2';\nimport Button from '../../../ui/buttons/button/button';\nimport { useUIContext } from '../../../ui/context/context';\nimport SearchableInput from '../../../ui/inputs/searchable-input/searchable-input';\nimport FlexView from '../../../ui/layout/flex-view';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Text from '../../../ui/text/text';\nimport AddedResourceAndFilters from './added-resource-and-filters';\nimport { useGetSearchResource } from './api/get-resource';\nimport { usePostMilestoneResource } from './api/goal-resource-assign';\nimport { usePostLPARResource } from './api/lpar-resource-assign';\nimport { RESOURCE_ASSIGN_ANALYTICS_EVENTS } from './resource-assign-analytics-events';\nimport ResourceItems from './resource-items/resource-items';\nimport * as Styled from './resources-assign-styled';\nimport { checkIfFiltersAreAdded } from './utils';\n\nconst EPResourceAssign: FC<IEPResourceAssign> = memo(props => {\n const {\n studentId,\n stream,\n onResourceAssign,\n onError,\n onExitResourceAssign,\n onViewResource,\n userMilestoneId,\n programId,\n } = props;\n\n const { onEvent: trackEvent } = useUIContext();\n\n const [pageNumber, setPageNumber] = useState(1);\n const [searchValue, setSearchValue] = useState('');\n const [searchQuery, setSearchQuery] = useState<IExtraPracticeQuery>({\n stream: stream,\n page: pageNumber,\n per_page: 50,\n user_milestone_id: userMilestoneId,\n program_id: programId,\n });\n const [resourceItems, setResourceItems] = useState<IResourceData['results']>([]);\n const [selectedResourceItems, setSelectedResource] = useState<IResourceData['results']>([]);\n\n const handleOnResourceAssignComplete = useCallback(\n (errorMessage: string | null) => {\n if (errorMessage) {\n onError(errorMessage);\n } else {\n onResourceAssign();\n }\n },\n [onError, onResourceAssign],\n );\n\n const {\n get: getSearchResource,\n data: resourceSearchData,\n isProcessing,\n isProcessingFailed,\n } = useGetSearchResource();\n\n const { post: postAssignGoalResource, isProcessing: goalResourceAssignInProgress } =\n usePostMilestoneResource({\n onComplete: handleOnResourceAssignComplete,\n });\n const { post: postAssignLPARResource, isProcessing: lparResourceAssignInProgress } =\n usePostLPARResource({\n onComplete: handleOnResourceAssignComplete,\n });\n\n const handleOnSearchQueryChange = (updatedQuery: Omit<IExtraPracticeQuery, 'stream'>) => {\n setSearchQuery(prev => ({ ...prev, ...updatedQuery }));\n };\n\n const handleOnResourceAdditionOrDeletion = useCallback(\n (step: IResourceItemStep, resourceNodeId: string) => {\n if (step === 'select') {\n const resourceItem = resourceItems.find(resource => resource.node_id === resourceNodeId);\n\n if (resourceItem) {\n setSelectedResource(prev => {\n return [...prev, resourceItem];\n });\n }\n } else {\n setSelectedResource(prev =>\n prev.filter(prevResource => prevResource.node_id !== resourceNodeId),\n );\n }\n },\n [resourceItems],\n );\n\n const handleScrollPagination = (newPageNumber: number) => {\n getSearchResource('ep-dummy-id', {\n ...searchQuery,\n page: newPageNumber,\n });\n setPageNumber(newPageNumber);\n };\n\n const handleSearch = useCallback(() => {\n trackEvent(RESOURCE_ASSIGN_ANALYTICS_EVENTS.RESOURCE_SEARCH_INPUT_VALUE, {\n search_term: searchValue,\n });\n\n setSearchQuery(prev => ({\n ...prev,\n search_term: searchValue || '',\n }));\n }, [searchValue, trackEvent]);\n\n const handleSearchTextChange = (value: string) => {\n setSearchValue(value);\n };\n\n const fetchResource = useCallback(() => {\n if (checkIfFiltersAreAdded(searchQuery) || searchQuery.stream) {\n getSearchResource('ep-dummy-id', searchQuery);\n setResourceItems([]);\n }\n }, [searchQuery, getSearchResource]);\n\n const handleOnResourceAssign = useCallback(() => {\n if (userMilestoneId) {\n postAssignGoalResource(\n {\n node_ids: selectedResourceItems.map(resource => resource.node_id),\n },\n { userMilestoneId },\n );\n } else if (programId) {\n postAssignLPARResource(\n {\n nodes: selectedResourceItems.map(({ node_id: nodeId }) => ({\n id: nodeId,\n attempt_location: 'ANY',\n })),\n program_id: programId,\n },\n { studentId },\n );\n }\n }, [\n postAssignGoalResource,\n userMilestoneId,\n selectedResourceItems,\n postAssignLPARResource,\n programId,\n studentId,\n ]);\n\n useEffect(() => {\n fetchResource();\n }, [fetchResource]);\n\n useEffect(() => {\n if (resourceSearchData?.results.length) {\n setResourceItems(prev => {\n const updatedData =\n pageNumber !== 1 ? [...prev, ...resourceSearchData.results] : resourceSearchData.results;\n\n return Array.from(new Map(updatedData.map(item => [item.id, item])).values());\n });\n }\n }, [resourceSearchData?.results, pageNumber]);\n\n if (isProcessingFailed) {\n return (\n <FlexView $height=\"100%\" $alignItems=\"center\" $justifyContent=\"center\">\n <FlexView $flexGapX={1.5} $alignItems=\"center\" $justifyContent=\"center\">\n <Text $renderAs=\"h6\">Oops! Something went wrong. Please try again later.</Text>\n <Button\n widthX={14}\n size=\"small\"\n shape=\"square\"\n renderAs=\"primary\"\n label=\"Try again\"\n analyticsLabel=\"resource_get_api_failed\"\n onClick={fetchResource}\n />\n </FlexView>\n </FlexView>\n );\n }\n\n if (isProcessing && !resourceSearchData && resourceItems.length === 0) {\n return <AppLoader height=\"100vh\" />;\n }\n\n const { filters, total_pages: totalPages = 0 } = resourceSearchData || {};\n const { boards = [], grades = [], node_types: nodeTypes = [] } = filters || {};\n const isFilterAdded = checkIfFiltersAreAdded(searchQuery);\n\n return (\n <FlexView $flexDirection=\"row\" $height=\"100vh\">\n {isProcessing && (\n <Styled.LoaderWrapper>\n <img src={ILLUSTRATIONS.LOADER_1} alt=\"resource_loading\" />\n </Styled.LoaderWrapper>\n )}\n\n <Styled.SearchContainer $width=\"60%\">\n <Styled.HeaderWrapper\n $heightX={4}\n $background=\"WHITE_3\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n <SearchableInput\n value={searchValue}\n onSearchTextChange={handleSearchTextChange}\n renderAs=\"primary\"\n width=\"99%\"\n size=\"regular\"\n label=\"Type topic name...\"\n onEnter={handleSearch}\n searchOnClear\n onPrefixElementClick={onExitResourceAssign}\n prefixElement={<Back2Icon />}\n />\n </Styled.HeaderWrapper>\n\n <ResourceItems\n resourceItems={resourceItems}\n selectedResource={selectedResourceItems}\n pageNumber={pageNumber}\n totalPages={totalPages}\n assigningInProgress={goalResourceAssignInProgress || lparResourceAssignInProgress}\n isFilterAdded={isFilterAdded}\n onResourceAdditionOrDeletion={handleOnResourceAdditionOrDeletion}\n onResourceAssign={handleOnResourceAssign}\n onViewResource={onViewResource}\n onPageNumberUpdate={handleScrollPagination}\n />\n </Styled.SearchContainer>\n\n <FlexView $width=\"40%\">\n <AddedResourceAndFilters\n boards={boards}\n grades={grades}\n nodeTypes={nodeTypes}\n selectedResources={selectedResourceItems}\n onResourceDeSelection={handleOnResourceAdditionOrDeletion}\n onFilterUpdate={handleOnSearchQueryChange}\n onViewResource={onViewResource}\n />\n </FlexView>\n </FlexView>\n );\n});\n\nexport default EPResourceAssign;\n"],"names":["EPResourceAssign","memo","props","studentId","stream","onResourceAssign","onError","onExitResourceAssign","onViewResource","userMilestoneId","programId","trackEvent","useUIContext","pageNumber","setPageNumber","useState","searchValue","setSearchValue","searchQuery","setSearchQuery","resourceItems","setResourceItems","selectedResourceItems","setSelectedResource","handleOnResourceAssignComplete","useCallback","errorMessage","getSearchResource","resourceSearchData","isProcessing","isProcessingFailed","useGetSearchResource","postAssignGoalResource","goalResourceAssignInProgress","usePostMilestoneResource","postAssignLPARResource","lparResourceAssignInProgress","usePostLPARResource","handleOnSearchQueryChange","updatedQuery","prev","handleOnResourceAdditionOrDeletion","step","resourceNodeId","resourceItem","resource","prevResource","handleScrollPagination","newPageNumber","handleSearch","RESOURCE_ASSIGN_ANALYTICS_EVENTS","handleSearchTextChange","value","fetchResource","checkIfFiltersAreAdded","handleOnResourceAssign","nodeId","useEffect","updatedData","item","jsx","FlexView","jsxs","Text","Button","AppLoader","filters","totalPages","boards","grades","nodeTypes","isFilterAdded","Styled.LoaderWrapper","ILLUSTRATIONS","Styled.SearchContainer","Styled.HeaderWrapper","SearchableInput","Back2Icon","ResourceItems","AddedResourceAndFilters","EPResourceAssign$1"],"mappings":"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"}
|
@@ -1,59 +1,60 @@
|
|
1
|
-
import { jsx as r, jsxs as
|
2
|
-
import { useRef as
|
1
|
+
import { jsx as r, jsxs as I } from "react/jsx-runtime";
|
2
|
+
import { useRef as O, useCallback as i } from "react";
|
3
3
|
import v from "../../buttons/clickable/clickable.js";
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import { Input as
|
7
|
-
import { StyledPrefixElementWrapper as
|
8
|
-
const
|
4
|
+
import S from "../../layout/flex-view.js";
|
5
|
+
import z from "../base-input/base-input.js";
|
6
|
+
import { Input as A } from "../text-input/text-input-styled.js";
|
7
|
+
import { StyledPrefixElementWrapper as D, StyledCrossIcon as R } from "./searchable-input-styled.js";
|
8
|
+
const G = (m) => {
|
9
9
|
const {
|
10
|
-
renderAs:
|
10
|
+
renderAs: s,
|
11
11
|
value: d,
|
12
|
-
disabled:
|
13
|
-
label:
|
12
|
+
disabled: t,
|
13
|
+
label: o,
|
14
14
|
width: u,
|
15
15
|
widthX: f,
|
16
16
|
shape: $ = "curved",
|
17
17
|
size: c = "regular",
|
18
|
-
onSearchTextChange:
|
19
|
-
onPrefixElementClick:
|
20
|
-
onEnter:
|
21
|
-
|
18
|
+
onSearchTextChange: a,
|
19
|
+
onPrefixElementClick: l,
|
20
|
+
onEnter: e,
|
21
|
+
searchOnClear: b,
|
22
|
+
analyticsLabel: C,
|
22
23
|
analyticsProps: x,
|
23
|
-
prefixElement:
|
24
|
-
} = m,
|
25
|
-
(
|
26
|
-
|
27
|
-
},
|
28
|
-
[t]
|
29
|
-
), g = i(
|
30
|
-
(e) => {
|
31
|
-
e.key === "Enter" && (a == null || a());
|
24
|
+
prefixElement: h
|
25
|
+
} = m, p = O(null), g = i(
|
26
|
+
(n) => {
|
27
|
+
a(n.target.value);
|
32
28
|
},
|
33
29
|
[a]
|
34
|
-
), w = i(
|
35
|
-
n
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
30
|
+
), w = i(
|
31
|
+
(n) => {
|
32
|
+
n.key === "Enter" && (e == null || e());
|
33
|
+
},
|
34
|
+
[e]
|
35
|
+
), y = i(() => {
|
36
|
+
l == null || l();
|
37
|
+
}, [l]), k = i(() => {
|
38
|
+
var n;
|
39
|
+
a(""), b && (e == null || e()), (n = p.current) == null || n.focus();
|
40
|
+
}, [a, e]);
|
40
41
|
return /* @__PURE__ */ r(
|
41
42
|
v,
|
42
43
|
{
|
43
|
-
label:
|
44
|
-
analyticsLabel:
|
44
|
+
label: o ?? "searchable_input",
|
45
|
+
analyticsLabel: C,
|
45
46
|
analyticsProps: x,
|
46
|
-
disabled:
|
47
|
+
disabled: t,
|
47
48
|
children: /* @__PURE__ */ r(
|
48
|
-
|
49
|
+
z,
|
49
50
|
{
|
50
|
-
renderAs:
|
51
|
+
renderAs: s,
|
51
52
|
size: c,
|
52
53
|
shape: $,
|
53
|
-
disabled:
|
54
|
-
label:
|
55
|
-
inputElement: /* @__PURE__ */
|
56
|
-
|
54
|
+
disabled: t,
|
55
|
+
label: o,
|
56
|
+
inputElement: /* @__PURE__ */ I(
|
57
|
+
S,
|
57
58
|
{
|
58
59
|
$flexDirection: "row",
|
59
60
|
$alignItems: "center",
|
@@ -62,39 +63,39 @@ const F = (m) => {
|
|
62
63
|
$width: u,
|
63
64
|
$widthX: f,
|
64
65
|
children: [
|
65
|
-
|
66
|
-
|
66
|
+
l && h && /* @__PURE__ */ r(
|
67
|
+
D,
|
67
68
|
{
|
68
|
-
$inputRenderAs:
|
69
|
-
$disabled:
|
69
|
+
$inputRenderAs: s,
|
70
|
+
$disabled: t,
|
70
71
|
$size: c,
|
71
|
-
onClick:
|
72
|
-
children:
|
72
|
+
onClick: y,
|
73
|
+
children: h
|
73
74
|
}
|
74
75
|
),
|
75
76
|
/* @__PURE__ */ r(
|
76
|
-
|
77
|
+
A,
|
77
78
|
{
|
78
|
-
$renderAs:
|
79
|
-
placeholder:
|
80
|
-
ref:
|
79
|
+
$renderAs: s,
|
80
|
+
placeholder: o,
|
81
|
+
ref: p,
|
81
82
|
$size: c,
|
82
83
|
value: d ?? "",
|
83
|
-
disabled:
|
84
|
-
onChange:
|
85
|
-
onKeyDown:
|
84
|
+
disabled: t,
|
85
|
+
onChange: g,
|
86
|
+
onKeyDown: w
|
86
87
|
}
|
87
88
|
)
|
88
89
|
]
|
89
90
|
}
|
90
91
|
),
|
91
|
-
siblingElement: d && /* @__PURE__ */ r(
|
92
|
+
siblingElement: d && /* @__PURE__ */ r(R, { onClick: k })
|
92
93
|
}
|
93
94
|
)
|
94
95
|
}
|
95
96
|
);
|
96
97
|
};
|
97
98
|
export {
|
98
|
-
|
99
|
+
G as default
|
99
100
|
};
|
100
101
|
//# sourceMappingURL=searchable-input.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"searchable-input.js","sources":["../../../../../src/features/ui/inputs/searchable-input/searchable-input.tsx"],"sourcesContent":["import type { ISearchableInputProps } from './searchable-input-types';\nimport type { ChangeEvent } from 'react';\n\nimport { useCallback, useRef } from 'react';\n\nimport Clickable from '../../buttons/clickable/clickable';\nimport FlexView from '../../layout/flex-view';\nimport BaseInput from '../base-input/base-input';\nimport { Input } from '../text-input/text-input-styled';\nimport * as Styled from './searchable-input-styled';\n\nconst SearchableInput = <IDType extends string>(props: ISearchableInputProps<IDType>) => {\n const {\n renderAs,\n value,\n disabled,\n label,\n width,\n widthX,\n shape = 'curved',\n size = 'regular',\n onSearchTextChange,\n onPrefixElementClick,\n onEnter,\n analyticsLabel,\n analyticsProps,\n prefixElement,\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleOnChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n onSearchTextChange(e.target.value);\n },\n [onSearchTextChange],\n );\n\n const handleOnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n onEnter?.();\n }\n },\n [onEnter],\n );\n\n const handleOnPrefixElementClick = useCallback(() => {\n onPrefixElementClick?.();\n }, [onPrefixElementClick]);\n\n const handleOnClear = useCallback(() => {\n onSearchTextChange('');\n inputRef.current?.focus();\n }, [onSearchTextChange]);\n\n return (\n <Clickable\n label={label ?? 'searchable_input'}\n analyticsLabel={analyticsLabel}\n analyticsProps={analyticsProps}\n disabled={disabled}\n >\n <BaseInput\n renderAs={renderAs}\n size={size}\n shape={shape}\n disabled={disabled}\n label={label}\n inputElement={\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $height=\"100%\"\n $flexGap={12}\n $width={width}\n $widthX={widthX}\n >\n {onPrefixElementClick && prefixElement && (\n <Styled.StyledPrefixElementWrapper\n $inputRenderAs={renderAs}\n $disabled={disabled}\n $size={size}\n onClick={handleOnPrefixElementClick}\n >\n {prefixElement}\n </Styled.StyledPrefixElementWrapper>\n )}\n <Input\n $renderAs={renderAs}\n placeholder={label}\n ref={inputRef}\n $size={size}\n value={value ?? ''}\n disabled={disabled}\n onChange={handleOnChange}\n onKeyDown={handleOnKeyDown}\n />\n </FlexView>\n }\n siblingElement={value && <Styled.StyledCrossIcon onClick={handleOnClear} />}\n />\n </Clickable>\n );\n};\n\nexport default SearchableInput;\n"],"names":["SearchableInput","props","renderAs","value","disabled","label","width","widthX","shape","size","onSearchTextChange","onPrefixElementClick","onEnter","analyticsLabel","analyticsProps","prefixElement","inputRef","useRef","handleOnChange","useCallback","handleOnKeyDown","handleOnPrefixElementClick","handleOnClear","_a","jsx","Clickable","BaseInput","jsxs","FlexView","Styled.StyledPrefixElementWrapper","Input","Styled.StyledCrossIcon"],"mappings":";;;;;;;AAWM,MAAAA,IAAkB,CAAwBC,MAAyC;AACjF,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,oBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAC;AAAA,EACE,
|
1
|
+
{"version":3,"file":"searchable-input.js","sources":["../../../../../src/features/ui/inputs/searchable-input/searchable-input.tsx"],"sourcesContent":["import type { ISearchableInputProps } from './searchable-input-types';\nimport type { ChangeEvent } from 'react';\n\nimport { useCallback, useRef } from 'react';\n\nimport Clickable from '../../buttons/clickable/clickable';\nimport FlexView from '../../layout/flex-view';\nimport BaseInput from '../base-input/base-input';\nimport { Input } from '../text-input/text-input-styled';\nimport * as Styled from './searchable-input-styled';\n\nconst SearchableInput = <IDType extends string>(props: ISearchableInputProps<IDType>) => {\n const {\n renderAs,\n value,\n disabled,\n label,\n width,\n widthX,\n shape = 'curved',\n size = 'regular',\n onSearchTextChange,\n onPrefixElementClick,\n onEnter,\n searchOnClear,\n analyticsLabel,\n analyticsProps,\n prefixElement,\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleOnChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n onSearchTextChange(e.target.value);\n },\n [onSearchTextChange],\n );\n\n const handleOnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n onEnter?.();\n }\n },\n [onEnter],\n );\n\n const handleOnPrefixElementClick = useCallback(() => {\n onPrefixElementClick?.();\n }, [onPrefixElementClick]);\n\n const handleOnClear = useCallback(() => {\n onSearchTextChange('');\n\n if (searchOnClear) {\n onEnter?.();\n }\n\n inputRef.current?.focus();\n }, [onSearchTextChange, onEnter]);\n\n return (\n <Clickable\n label={label ?? 'searchable_input'}\n analyticsLabel={analyticsLabel}\n analyticsProps={analyticsProps}\n disabled={disabled}\n >\n <BaseInput\n renderAs={renderAs}\n size={size}\n shape={shape}\n disabled={disabled}\n label={label}\n inputElement={\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $height=\"100%\"\n $flexGap={12}\n $width={width}\n $widthX={widthX}\n >\n {onPrefixElementClick && prefixElement && (\n <Styled.StyledPrefixElementWrapper\n $inputRenderAs={renderAs}\n $disabled={disabled}\n $size={size}\n onClick={handleOnPrefixElementClick}\n >\n {prefixElement}\n </Styled.StyledPrefixElementWrapper>\n )}\n <Input\n $renderAs={renderAs}\n placeholder={label}\n ref={inputRef}\n $size={size}\n value={value ?? ''}\n disabled={disabled}\n onChange={handleOnChange}\n onKeyDown={handleOnKeyDown}\n />\n </FlexView>\n }\n siblingElement={value && <Styled.StyledCrossIcon onClick={handleOnClear} />}\n />\n </Clickable>\n );\n};\n\nexport default SearchableInput;\n"],"names":["SearchableInput","props","renderAs","value","disabled","label","width","widthX","shape","size","onSearchTextChange","onPrefixElementClick","onEnter","searchOnClear","analyticsLabel","analyticsProps","prefixElement","inputRef","useRef","handleOnChange","useCallback","e","handleOnKeyDown","handleOnPrefixElementClick","handleOnClear","_a","jsx","Clickable","BaseInput","jsxs","FlexView","Styled.StyledPrefixElementWrapper","Input","Styled.StyledCrossIcon"],"mappings":";;;;;;;AAWM,MAAAA,IAAkB,CAAwBC,MAAyC;AACjF,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,oBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAC;AAAA,EACE,IAAAf,GAEEgB,IAAWC,EAAyB,IAAI,GAExCC,IAAiBC;AAAA,IACrB,CAACC,MAAqC;AACjB,MAAAX,EAAAW,EAAE,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,CAACX,CAAkB;AAAA,EAAA,GAGfY,IAAkBF;AAAA,IACtB,CAACC,MAA6C;AACxC,MAAAA,EAAE,QAAQ,YACFT,KAAA,QAAAA;AAAA,IAEd;AAAA,IACA,CAACA,CAAO;AAAA,EAAA,GAGJW,IAA6BH,EAAY,MAAM;AAC5B,IAAAT,KAAA,QAAAA;AAAA,EAAA,GACtB,CAACA,CAAoB,CAAC,GAEnBa,IAAgBJ,EAAY,MAAM;;AACtC,IAAAV,EAAmB,EAAE,GAEjBG,MACQD,KAAA,QAAAA,OAGZa,IAAAR,EAAS,YAAT,QAAAQ,EAAkB;AAAA,EAAM,GACvB,CAACf,GAAoBE,CAAO,CAAC;AAG9B,SAAA,gBAAAc;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOtB,KAAS;AAAA,MAChB,gBAAAS;AAAA,MACA,gBAAAC;AAAA,MACA,UAAAX;AAAA,MAEA,UAAA,gBAAAsB;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,UAAA1B;AAAA,UACA,MAAAO;AAAA,UACA,OAAAD;AAAA,UACA,UAAAJ;AAAA,UACA,OAAAC;AAAA,UACA,cACE,gBAAAwB;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,gBAAe;AAAA,cACf,aAAY;AAAA,cACZ,SAAQ;AAAA,cACR,UAAU;AAAA,cACV,QAAQxB;AAAA,cACR,SAASC;AAAA,cAER,UAAA;AAAA,gBAAAI,KAAwBK,KACvB,gBAAAU;AAAA,kBAACK;AAAAA,kBAAA;AAAA,oBACC,gBAAgB7B;AAAA,oBAChB,WAAWE;AAAA,oBACX,OAAOK;AAAA,oBACP,SAASc;AAAA,oBAER,UAAAP;AAAA,kBAAA;AAAA,gBACH;AAAA,gBAEF,gBAAAU;AAAA,kBAACM;AAAA,kBAAA;AAAA,oBACC,WAAW9B;AAAA,oBACX,aAAaG;AAAA,oBACb,KAAKY;AAAA,oBACL,OAAOR;AAAA,oBACP,OAAON,KAAS;AAAA,oBAChB,UAAAC;AAAA,oBACA,UAAUe;AAAA,oBACV,WAAWG;AAAA,kBAAA;AAAA,gBACb;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,UAEF,gBAAgBnB,KAAS,gBAAAuB,EAACO,GAAA,EAAuB,SAAST,GAAe;AAAA,QAAA;AAAA,MAC3E;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|