Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: shareable URLs for library components and searches [FC-0076] #76

Closed
wants to merge 1,484 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
1484 commits
Select commit Hold shift + click to select a range
6ac0a6e
fix: form group controls alignment (#423)
ihor-romaniuk Jun 18, 2024
d2ddc90
fix: Not used Number of attempts field (#473)
DmytroAlipov Jun 18, 2024
c84e322
feat: Validation for Start time and Stop time fields (#419)
vladislavkeblysh Jun 18, 2024
088a01d
feat: Add lib v2/legacy tabs in studio home (#1050)
yusuf-musleh Jun 20, 2024
3936737
feat: Include org filter when requesting LTI providers (#1114)
rijuma Jun 20, 2024
28c7b32
fix: don't accidentally bundle paragon CSS x2
bradenmacdonald Jun 20, 2024
6b6d3aa
Upgrade frontend-build to v14 (#1052)
pomegranited Jun 21, 2024
6414196
fix(deps): update dependency @edx/frontend-lib-content-components to …
renovate[bot] Jun 24, 2024
8ef804b
feat: add upload progress modal (#1113)
KristinAoki Jun 24, 2024
9317b87
Revert "feat: add upload progress modal (#1113)" (#1128)
KristinAoki Jun 24, 2024
ba8141e
Revert "feat: improve asset loading (#484)"
bszabo Jun 26, 2024
0e91373
Merge pull request #488 from openedx/revert-484-KristinAoki/improve-a…
bszabo Jun 26, 2024
8b759bc
fix(deps): update dependency @edx/frontend-lib-content-components to …
renovate[bot] Jun 26, 2024
22ea32c
feat: video upload progress modal (#1131)
KristinAoki Jun 26, 2024
a4859d2
chore: convert all 'search-modal' code to TypeScript (#1129)
bradenmacdonald Jun 27, 2024
2678234
fix: simple editor without solution not loading (#489)
KristinAoki Jun 27, 2024
eb3e6fa
fix: update mapToStateProps to match changes in TinyMceWidget (#1133)
KristinAoki Jun 27, 2024
fc3cd9a
fix: image and paste insert (#490)
KristinAoki Jul 1, 2024
cdc9af2
fix(deps): update dependency @edx/frontend-lib-content-components to …
renovate[bot] Jul 1, 2024
efd73f9
fix: progress bar display for uploads (#1135)
KristinAoki Jul 1, 2024
9f0be76
fix(deps): update dependency @edx/frontend-component-footer to v14.0.…
renovate[bot] Jul 1, 2024
292663a
Revert "fix(deps): update dependency @edx/frontend-lib-content-compon…
rayzhou-bit Jul 2, 2024
9528bfd
chore(deps): update dependency meilisearch to ^0.41.0 (#1136)
renovate[bot] Jul 8, 2024
8cf26e1
Version bump for Paragon to 22.6.1, with stricter typing (#1146)
bradenmacdonald Jul 8, 2024
83489b0
feat: Add filters/sorting for the libraries v2 tab on studio home (#1…
yusuf-musleh Jul 8, 2024
01d4b85
perf: lockfile version check workflow file updated (#1107)
huniafatima-arbi Jul 10, 2024
09822c2
chore: update browserslist DB (#443)
edx-requirements-bot Jul 10, 2024
117b4f1
chore: remove core-js and regenerator-runtime (#1032)
bradenmacdonald Jul 10, 2024
f60ddb5
feat: library home page ("bare bones") (#1076)
rpenido Jul 10, 2024
71fcf9f
fix: only show course blocks in the search modal (#1148)
rpenido Jul 10, 2024
ab9d573
chore: remove unused fontawesome dependencies (#1149)
bradenmacdonald Jul 10, 2024
b6ff623
fix: text editor opening blank with no images (#492)
KristinAoki Jul 10, 2024
a22a260
feat: remove offset when stuio header exists (#491)
khudym Jul 10, 2024
085069a
fix(deps): update dependency @edx/frontend-lib-content-components to …
renovate[bot] Jul 10, 2024
9bce0a3
fix: remove deprecated feedback link (#493)
KristinAoki Jul 10, 2024
5dee203
fix(deps): update dependency @edx/frontend-lib-content-components to …
renovate[bot] Jul 11, 2024
cc41a2f
fix: source map warning seen during build (#1150)
bradenmacdonald Jul 11, 2024
e087001
feat: create library (v2) form (#1116)
rpenido Jul 12, 2024
3d24741
feat: "Add content" sidebar on each library home page (#1065)
ChrisChV Jul 17, 2024
3a14141
chore: update browserslist DB (#1156)
edx-requirements-bot Jul 17, 2024
77135cd
feat: Library v2 components tab (#1109)
ChrisChV Jul 23, 2024
ebab15f
fix: correct typo in Alert component prop (#494)
milad-emami Jul 24, 2024
25ab1ff
feat: adds filter by tags and contentType to library home (#1141)
rpenido Jul 24, 2024
f159b2b
chore: update frontend-build (#1155)
rpenido Jul 24, 2024
0933bae
chore(deps): update actions/checkout action to v4
renovate[bot] Jul 24, 2024
1be693b
fix(deps): update dependency npm to v10.8.2
renovate[bot] Jul 24, 2024
649863d
fix(deps): update dependency @edx/frontend-lib-content-components to …
renovate[bot] Jul 25, 2024
3dfc579
feat: add conditional for new parser beta testing (#496)
KristinAoki Jul 26, 2024
6382898
chore: add ts* files to lint --fix script
rpenido Jul 26, 2024
699cbea
feat: Add cancel create library button (#1182)
yusuf-musleh Jul 26, 2024
4f88948
feat: adds sort widget to search manager and library component page …
pomegranited Jul 30, 2024
cc3bbfd
fix: package.json out of sync with package-lock.json and upgrade (#1194)
KristinAoki Jul 30, 2024
cba85ab
test: fix flaky library-authoring test (#1193)
pomegranited Jul 30, 2024
5825dd3
Merge pull request #487 from open-craft/braden/fix-extra-scss
arbrandes Aug 1, 2024
ce87037
fix: add rtl support to editor (#424)
ihor-romaniuk Aug 1, 2024
beb4813
fix: setAssetToStaticUrl regex matcher (#497)
KristinAoki Aug 1, 2024
680b5ff
refactor: convert a couple files to TS and improve typings/tests (#1181)
rpenido Aug 2, 2024
b68257e
fix: remove imports breaking build (#500)
KristinAoki Aug 2, 2024
9efb583
feat: replace ai-translations component with a plugin slot (#1186)
hajorg Aug 5, 2024
6f13164
fix(deps): update dependency @edx/frontend-lib-content-components to …
renovate[bot] Aug 5, 2024
553acd8
chore: remove unused ai-translations env vars (#1204)
BrandonHBodine Aug 6, 2024
3d82d37
Revert "fix(deps): update dependency @edx/frontend-lib-content-compon…
KristinAoki Aug 6, 2024
7379e73
feat: replace progress bar with loading spinner (#1192)
KristinAoki Aug 7, 2024
a7645af
fix: UI fixes for read-only libraries etc. (#1198)
ChrisChV Aug 8, 2024
bb88101
feat: add "copy to clipboard" feature to library authoring UI (#1197)
rpenido Aug 8, 2024
b088a8f
fix: asset name parsing in static converter (#501)
KristinAoki Aug 9, 2024
d3d5fe0
Removed unneeded files from lib-content-components
bradenmacdonald Aug 9, 2024
afa2317
feat: 'frontend-lib-content-components' into this repo
bradenmacdonald Aug 9, 2024
8285f8e
fix(deps): update dependency @edx/frontend-lib-content-components to …
renovate[bot] Aug 12, 2024
940482d
fix: add validation to problem number fields (#425)
ihor-romaniuk Aug 12, 2024
4f5346e
feat: Library info sidebar - allows lib rename+publish (#1138)
ChrisChV Aug 13, 2024
48ffa0f
fix(deps): update dependency @edx/frontend-component-footer to v14.0.…
renovate[bot] Aug 13, 2024
ea90e7e
fix(deps): update dependency @edx/frontend-lib-content-components to …
renovate[bot] Aug 13, 2024
6ff3847
fix(deps): update dependency @edx/openedx-atlas to v0.6.1 (#1123)
renovate[bot] Aug 13, 2024
de3befe
fix(deps): update dependency @edx/frontend-component-header to v5.3.4…
renovate[bot] Aug 13, 2024
7c59b4a
fix(deps): update dependency @openedx/paragon to v22.7.0 (#1180)
renovate[bot] Aug 13, 2024
95ac098
feat: Add "Paste from Clipboard" to lib v2 sidebar (#1187)
yusuf-musleh Aug 15, 2024
a9e8bd5
fix: license widget checkbox and link (#486)
khudym Aug 16, 2024
b55e5c9
fix: answer range validation in Numerical input (#482)
ihor-romaniuk Aug 16, 2024
28e1956
chore: update imports, fix lint issues
bradenmacdonald Aug 9, 2024
f90bbb2
chore: update to frontend-lib-content-components 2.6.8
bradenmacdonald Aug 17, 2024
591a02e
chore: update with master
bradenmacdonald Aug 17, 2024
155a710
chore: work around type error with <SelectableBox>
bradenmacdonald Aug 17, 2024
f370b56
fix: dropdown checkbox click area (#1215)
rpenido Aug 17, 2024
47cec6e
fix(deps): update dependency @edx/frontend-lib-content-components to …
renovate[bot] Aug 20, 2024
3089d0b
fix: discard button [FC-0062] (#1214)
navinkarkera Aug 21, 2024
8ae9dfb
feat: customize the certificate link in header (#1223)
Anas12091101 Aug 21, 2024
21c9e30
refactor: change toast component (#1211)
rpenido Aug 22, 2024
3e0f7b5
test: Add Node 20 to CI matrix (#1224)
BilalQamar95 Aug 22, 2024
259a50c
UI fixes for Sort Library Component [FC-0059] (#1222)
pomegranited Aug 24, 2024
d99a09e
fix: Library v2 info sidebar UI fixes (#1226)
ChrisChV Aug 26, 2024
83fda56
fix: remove accidental import of test code from the build
bradenmacdonald Aug 27, 2024
f36b218
fix: reset active answers for single answer problem type (#426)
ihor-romaniuk Aug 27, 2024
7d73945
chore: update with latest master
bradenmacdonald Aug 27, 2024
64ffadd
feat: Capa problem types submenu [FC-0059] (#1207)
ChrisChV Aug 28, 2024
af2b4dd
fix: remove another accidental import of test code from the build
bradenmacdonald Aug 27, 2024
48e0ec1
feat: add library component sidebar [FC-0062] (#1217)
rpenido Aug 29, 2024
1e7e3e7
build: Upgrade to Node 20 (#1209)
BilalQamar95 Aug 29, 2024
9d0898c
chore: update with master
bradenmacdonald Aug 29, 2024
735d978
refactor: Merge frontend-lib-content-components into this repository
bradenmacdonald Aug 29, 2024
c4d0001
fix: FilterItem key warning (#1246)
rpenido Sep 4, 2024
34f0bf5
fix: UX nits on Library Info Sidebar (#1253)
ChrisChV Sep 4, 2024
dcf05cd
fix: tinymce render outside of editors (#1254)
KristinAoki Sep 5, 2024
3a61e84
feat: fixed height for prerequisite course dropdown list (#1154)
khudym Sep 6, 2024
6b10fa7
feat: remove new library button if user does not have create access f…
kaustavb12 Sep 6, 2024
849471b
chore(deps): update dependency @openedx/frontend-build to v14.1.2 (#1…
renovate[bot] Sep 6, 2024
376f31e
chore: clean up dependencies (#1255)
bradenmacdonald Sep 9, 2024
f9c11f8
feat: Add type stubs for frontend-platform/i18n (#1251)
bradenmacdonald Sep 9, 2024
bbe15af
chore: update browserslist DB (#1175)
edx-requirements-bot Sep 9, 2024
513309c
fix: no validation for combined length of org, number, run (#1262)
DmytroAlipov Sep 10, 2024
6255768
test: refactor and fix flakiness of LibraryAuthoringTest (#1263)
bradenmacdonald Sep 10, 2024
9bbbf61
fix(deps): update dependency @edx/openedx-atlas to v0.6.2 (#1228)
renovate[bot] Sep 11, 2024
5672831
fix: create course button inactive after using org drop-down (#1276)
DmytroAlipov Sep 12, 2024
45c68d6
Hide "Advanced Settings" settings item [BB-9081] (#1252)
0x29a Sep 12, 2024
88a038c
chore: enable github action auto update in dependabot.yml (#1256)
edx-requirements-bot Sep 12, 2024
e2e3104
fix(deps): update dependency @edx/frontend-component-footer to v14.0.…
renovate[bot] Sep 12, 2024
4035931
fix(deps): update dependency @openedx/paragon to v22.8.1 (#1268)
renovate[bot] Sep 12, 2024
9b61037
feat: collections tab [FC-0062] (#1257)
navinkarkera Sep 12, 2024
fd48fef
feat: edit Text components within content libraries [FC-0062] (#1240)
bradenmacdonald Sep 13, 2024
a37a1b1
feat: Create collection Modal [FC-0062] (#1259)
ChrisChV Sep 14, 2024
121ced4
feat: preview components (xblocks) on library authoring pages (#1242)
rpenido Sep 14, 2024
80e3592
refactor: remove thumbnail for non-edX videos & allow removing fallba…
bra-i-am Sep 16, 2024
644f170
chore: update browserslist DB (#1283)
edx-requirements-bot Sep 16, 2024
6eed643
docs: update README based on rename (#1289)
kdmccormick Sep 16, 2024
902853d
fix: isInitialized selector depends on unitUrl for course blocks (#1288)
KristinAoki Sep 16, 2024
dd7e4d4
feat: add component sidebar manage tab [FC-0062] (#1275)
rpenido Sep 16, 2024
fb3533a
fix(deps): update dependency frontend-components-tinymce-advanced-plu…
renovate[bot] Sep 16, 2024
82a3b7c
fix: Fix content overflow in the Overwrite Files modal window (#1291)
Lunyachek Sep 17, 2024
b010909
fix: propTypes warnings in Problem Editor, refactor some code to TS (…
bradenmacdonald Sep 18, 2024
314dfa6
feat: Enable capa problem editor for components in libraries (#1290)
bradenmacdonald Sep 18, 2024
fc4b700
fix: responsiveness on library authoring sidebar (#1293)
rpenido Sep 18, 2024
053a9b1
fix: inconsistency with the select all functionality in problem capa …
ChrisChV Sep 18, 2024
9d3a05f
feat: show children count in collection card (#1298)
navinkarkera Sep 19, 2024
f3274e7
fix: Fix content overflow in the Pages & Resources modal windows (#1301)
Lunyachek Sep 19, 2024
8d49f2e
feat: display library title in browser tab (#1305)
bradenmacdonald Sep 19, 2024
4e609e0
feat: improve error message for proctored exam settings (#1300)
zacharis278 Sep 19, 2024
0d472ae
chore(deps): update dependency eslint-import-resolver-webpack to v0.1…
renovate[bot] Sep 19, 2024
b7ae82b
feat: Collections page (in libraries) (#1281)
navinkarkera Sep 20, 2024
8b50449
fix(deps): update dependency npm to v10.8.3 (#1313)
renovate[bot] Sep 23, 2024
353ef50
chore: update browserslist DB (#1312)
edx-requirements-bot Sep 23, 2024
64d718d
fix: Use soft nav when clicking a library from studio home (#1306)
bradenmacdonald Sep 24, 2024
95521d3
Cleanups for the video editor [FC-0062] (#1318)
bradenmacdonald Sep 25, 2024
5f41db8
feat: Enable the Video editor in content libraries [FC-0062] (#1319)
bradenmacdonald Sep 25, 2024
b6ec5e1
fix: remove preview overlay from library component sidebar (#1323)
rpenido Sep 25, 2024
c13ab00
chore(deps): update dependency @openedx/frontend-build to v14.1.4 (#1…
renovate[bot] Sep 25, 2024
ff67c9a
feat: add component Details sidebar [FC-0062] (#1303)
rpenido Sep 25, 2024
ccce44a
fix: library metadata times are actually displayed in local time (#1309)
bradenmacdonald Sep 26, 2024
3662fad
feat!: Remove support for the (deprecated) library authoring MFE (#1327)
bradenmacdonald Sep 26, 2024
95c1753
fix: don't revert to advanced problem editor when max_attempts is set…
bradenmacdonald Sep 26, 2024
2cd77ce
feat: Add tags to manage sidebar of library components (#1299)
ChrisChV Sep 27, 2024
c80483c
fix: Create button remains deactivated until pick a new org (#1279)
DmytroAlipov Sep 27, 2024
4d67e8b
feat: improve collection sidebar (#1320)
rpenido Sep 28, 2024
e9c10c7
chore: update browserslist DB (#1347)
edx-requirements-bot Sep 30, 2024
b71f214
feat: update ora settings to only be flexible peer grading (#1332)
KristinAoki Oct 1, 2024
b177238
fix: component preview modal overflow (#1348)
rpenido Oct 1, 2024
0349188
feat: allow full width content in library authoring [FC-0062] (#1258)
rpenido Oct 2, 2024
4d0f92e
fix: upload codecov report as a separate workflow step (#1355)
bradenmacdonald Oct 2, 2024
8c6bbb8
fix: update express (#1351)
jesperhodge Oct 3, 2024
dc6ede4
fix: use "other" component type in decide Card header background (#1359)
pomegranited Oct 3, 2024
652af9f
refactor: Improve LibraryContext, convert tests to testUtils (#1345)
bradenmacdonald Oct 4, 2024
9c1fd5a
fix: Show spinner while loading library components (#1331)
pomegranited Oct 4, 2024
b957f3b
Use block type label instead of Library block_types REST API [FC-0062…
pomegranited Oct 4, 2024
b6eeec8
build(deps): bump actions/checkout from 3 to 4 (#1371)
dependabot[bot] Oct 7, 2024
83322e2
chore: update browserslist DB (#1367)
edx-requirements-bot Oct 7, 2024
8c125df
feat: Open Editors in a Modal (library components only) [FC-0062] (#1…
bradenmacdonald Oct 8, 2024
85b5730
fix: change collection details component slots (#1363)
rpenido Oct 8, 2024
75f937e
feat: Libraries v2: Advanced Component Info & OLX Editor (#1346)
bradenmacdonald Oct 8, 2024
434fea3
feat: delete collection [FC-0062] (#1333)
navinkarkera Oct 8, 2024
3696836
feat: save discussion alert dismissal (#1245)
CefBoud Oct 9, 2024
66b14a5
docs: update the README with an easy way to run the MFE on your host …
bradenmacdonald Oct 10, 2024
7fb4600
feat: add an allowlist of for supported blocks in library [FC-0062] (…
navinkarkera Oct 15, 2024
8448760
feat: manage collections in component sidebar [FC-0062] (#1373)
navinkarkera Oct 15, 2024
1ee3229
feat: UI to manage users/permissions for the content libraries (#1362)
pomegranited Oct 15, 2024
ba8e3d4
fix: Calendar icon over datepicker modal (#1365)
Lunyachek Oct 16, 2024
a1181f3
refactor: switch Content Library XBlock preview to Studio
ormsbee Oct 15, 2024
1bdea09
fix: disable static asset mangling for v2 Content Libraries
ormsbee Oct 15, 2024
8a4d1f4
refactor!: turn on homepage course API V2 consumption by default (#1307)
mariajgrimaldi Oct 16, 2024
b81f611
feat: add library component picker (#1356)
rpenido Oct 16, 2024
4facf1c
feat: add tags to collections [FC-0062] (#1379)
ChrisChV Oct 17, 2024
40a6ee9
feat: View for comparing published version of library block to previo…
bradenmacdonald Oct 18, 2024
cfe1989
feat: Let Studio Home REST API determine if libraries v1 and/or v2 ar…
pomegranited Oct 18, 2024
a94df2f
fix: set original value for TypeaheadDropdown component
cmltaWt0 Oct 18, 2024
56e025a
refactor: lib component picker modal to only post message with block …
navinkarkera Oct 19, 2024
d49fc85
refactor: remove parentLocator and next button from lib component pic…
navinkarkera Oct 21, 2024
6ae68bd
feat: Menu option to delete a component + small fixes (#1408)
bradenmacdonald Oct 21, 2024
841aede
perf: don't load advanced info details (library components) before th…
bradenmacdonald Oct 21, 2024
675e02f
feat: "add to collection" menu item functionality (#1413)
navinkarkera Oct 22, 2024
57e7baf
fix: this repo has been renamed to frontend-app-authoring (#1419)
bradenmacdonald Oct 22, 2024
966e1c3
feat: publish single library component (#1407)
DanielVZ96 Oct 22, 2024
21cbf80
feat: Show published components on content picker (#1420)
ChrisChV Oct 22, 2024
8c8d911
fix: don't revert to advanced editor if problem contains fields like …
bradenmacdonald Oct 22, 2024
fe37d11
feat(deps): update header to 5.6.0 (#1424)
brian-smith-tcril Oct 22, 2024
11470f2
feat: library component picker now supports multi-select (#1417)
rpenido Oct 22, 2024
f67c3ff
feat: direct link to single block in library [FC-0062] (#1392)
navinkarkera Oct 23, 2024
c0c74de
feat: show confirmation dialog before discarding library changes [FC-…
navinkarkera Oct 23, 2024
a8aa495
feat: add existing content to a collection [FC-0062] (#1416)
rpenido Oct 23, 2024
e1ce3eb
fix: display image preview in libraries editor (#1403)
Ian2012 Oct 24, 2024
3d8d248
feat: arbitrary asset upload/deletion for Library Components [FC-0062…
bradenmacdonald Oct 24, 2024
774728a
fix: use absolute URL for Export Tags menu item (#1432)
pomegranited Oct 25, 2024
4d4adce
feat: Use configured DEFAULT_GRADE_DESIGNATIONS (#1227)
xitij2000 Oct 25, 2024
cff1177
fix: Library Preview Expand button covers dropdown (#1438)
ChrisChV Oct 25, 2024
ecfe27b
fix: empty state for library selection on component picker [FC-0062] …
rpenido Oct 28, 2024
28569aa
test: Remove support for Node 18 (#1247)
BilalQamar95 Oct 31, 2024
549dbaa
fix: add component to collection on paste [FC-0062] (#1450)
navinkarkera Oct 31, 2024
949e4ac
fix: enable publish button on library after component edit [FC-0062] …
rpenido Nov 1, 2024
df8a65d
feat: handle unsaved changes in text & problem editors (#1444)
navinkarkera Nov 4, 2024
fc94667
chore: update browserslist DB (#1381)
edx-requirements-bot Nov 4, 2024
d7bbd40
fix: Hide / error on Libraries v2 pages if !librariesV2Enabled (#1449)
pomegranited Nov 5, 2024
e118eb5
chore: hide transcripts in video preview for library (#1459)
navinkarkera Nov 5, 2024
f1bdc62
fix: show a more detailed error on Bad Request (#1468)
pomegranited Nov 7, 2024
d99e3f0
fix: add spacing to searchbar and simplify render conditions (#1461)
rpenido Nov 7, 2024
979c69b
feat: simplify Library Home Page (v2) (#1443)
DanielVZ96 Nov 7, 2024
f9ef00e
feat: [FC-0070] Remove backend redirects (use SPA functionality) (#1372)
PKulkoRaccoonGang Nov 8, 2024
e59f284
feat: render iframe with xblocks (#1375)
PKulkoRaccoonGang Nov 8, 2024
67faf9a
fix: infinite scroll bug on library page (#1483)
rpenido Nov 8, 2024
9b4cf87
fix: fixing broken tests
PKulkoRaccoonGang Nov 10, 2024
efd2b3d
feat: show info banner in component picker (#1498)
navinkarkera Nov 13, 2024
033acc4
fix: remove unnecessary toast notification on adding component (#1490)
navinkarkera Nov 14, 2024
cee8888
feat: enable problem bank button functionality on unit page (#1480)
navinkarkera Nov 14, 2024
32e5fa6
fix: Adjust styling when title is truncated (#1382)
pkulkark Nov 14, 2024
6ffdb01
refactor: remove pointless maintenance link message (#1503)
kdmccormick Nov 15, 2024
771c5d3
docs: minor README improvements (#1504)
regisb Nov 15, 2024
0706a09
fix: error handling (#1079)
PKulkoRaccoonGang Nov 18, 2024
ba48a27
fix: fixed Configure modal for unit page (#1452)
PKulkoRaccoonGang Nov 18, 2024
f740f57
feat: upload images to v2 library components from the TinyMCE in libr…
dcoa Nov 18, 2024
b260708
test: fix contentContainer test (#1516)
dcoa Nov 19, 2024
0365e38
fix: TinyMce aux modal issues in text editors [FC-0062] (#1500)
ChrisChV Nov 19, 2024
624f5ad
fix: Show published count component in library content picker (#1481)
ChrisChV Nov 19, 2024
66577b0
chore: bump frontend-build, remove exceptions for prefer-default-expo…
bradenmacdonald Nov 20, 2024
b5419ac
feat: [FC-0070] implement move xblock modal (#1422)
ihor-romaniuk Nov 21, 2024
bc8d59b
chore: [FC-0070] Some tests refactoring (#1518)
PKulkoRaccoonGang Nov 21, 2024
31f59d6
fix: Schedule and Details page was not loading (#1527)
dcoa Nov 22, 2024
7aa5acc
feat: preview library block changes in course unit [FC-0062] (#1506)
navinkarkera Nov 22, 2024
55fe87a
feat: show problem bank component picker on window msg [FC-0062] (#1522)
navinkarkera Nov 22, 2024
ec3f78f
feat!: remove Maintenance header link (#1526)
kdmccormick Nov 26, 2024
f86c609
fix: editor flicker after creating xblock (#1531)
rpenido Nov 26, 2024
abe68ac
refactor: Convert more Taxonomy code to TypeScript (#1532)
bradenmacdonald Nov 27, 2024
6e53e37
refactor: Convert more Taxonomy code to TypeScript (2) (#1536)
bradenmacdonald Dec 2, 2024
0771923
feat: preserve library sidebar tab while switching items (#1535)
rpenido Dec 3, 2024
e75ce15
refactor: Add TypeScript types for the Editors' Redux state (#1537)
bradenmacdonald Dec 3, 2024
a0f6f43
fix: Show published OLX in Library Content Picker [FC-0062] (#1534)
ChrisChV Dec 5, 2024
2f1263a
fix: show/hide "new library" button based on separate v1/v2 permissio…
rpenido Dec 6, 2024
0e9025a
fix: legacy library links were not working (#1548)
rpenido Dec 6, 2024
d2d7532
fix: Update error messages when adding user to library [FC-0062] (#1543)
ChrisChV Dec 6, 2024
73490a5
fix: avoid changing url when removing filters (#1530)
DanielVZ96 Dec 6, 2024
c7e2bf9
fix: find proper courses when searching (#1497)
bra-i-am Dec 9, 2024
69bbeda
refactor: split up library context (#1539)
rpenido Dec 12, 2024
b110b6b
feat: undo component delete [FC-0076] (#1556)
navinkarkera Dec 13, 2024
aa25827
fix: use generatePath in testUtils
pomegranited Dec 18, 2024
8706bf6
feat: adds sharable URLs for library components/collections
pomegranited Dec 12, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactor: Convert more Taxonomy code to TypeScript (2) (openedx#1536)
* Converts some files from .js or .mjs to .ts
* Refactors some tests to use the new initializeMocks helper
* Cleans up and improves some type definitions
  • Loading branch information
bradenmacdonald authored Dec 2, 2024
commit 6e53e37bfe20860d095ebf051656993edf2c9c02
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
import React, { useContext } from 'react';
import { IntlProvider } from '@edx/frontend-platform/i18n';
import { initializeMockApp } from '@edx/frontend-platform';
import { AppProvider } from '@edx/frontend-platform/react';
import { render } from '@testing-library/react';

import initializeStore from '../store';
import { initializeMocks, render } from '../testUtils';
import { TaxonomyContext } from './common/context';
import TaxonomyLayout from './TaxonomyLayout';
import { TaxonomyLayout } from './TaxonomyLayout';

let store;
const toastMessage = 'Hello, this is a toast!';
const alertErrorTitle = 'Error title';
const alertErrorDescription = 'Error description';
Expand All @@ -20,14 +15,14 @@ const MockChildComponent = () => {
<div data-testid="mock-content">
<button
type="button"
onClick={() => setToastMessage(toastMessage)}
onClick={() => setToastMessage!(toastMessage)}
data-testid="taxonomy-show-toast"
>
Show Toast
</button>
<button
type="button"
onClick={() => setAlertProps({ title: alertErrorTitle, description: alertErrorDescription })}
onClick={() => setAlertProps!({ title: alertErrorTitle, description: alertErrorDescription })}
data-testid="taxonomy-show-alert"
>
Show Alert
Expand All @@ -46,36 +41,20 @@ jest.mock('react-router-dom', () => ({
ScrollRestoration: jest.fn(() => <div />),
}));

const RootWrapper = () => (
<AppProvider store={store}>
<IntlProvider locale="en" messages={{}}>
<TaxonomyLayout />
</IntlProvider>
</AppProvider>
);

describe('<TaxonomyLayout />', () => {
beforeEach(async () => {
initializeMockApp({
authenticatedUser: {
userId: 3,
username: 'abc123',
administrator: true,
roles: [],
},
});
store = initializeStore();
initializeMocks();
});

it('should render page correctly', () => {
const { getByTestId } = render(<RootWrapper />);
const { getByTestId } = render(<TaxonomyLayout />);
expect(getByTestId('mock-header')).toBeInTheDocument();
expect(getByTestId('mock-content')).toBeInTheDocument();
expect(getByTestId('mock-footer')).toBeInTheDocument();
});

it('should show toast', () => {
const { getByTestId, getByText } = render(<RootWrapper />);
const { getByTestId, getByText } = render(<TaxonomyLayout />);
const button = getByTestId('taxonomy-show-toast');
button.click();
expect(getByTestId('taxonomy-toast')).toBeInTheDocument();
Expand All @@ -88,7 +67,7 @@ describe('<TaxonomyLayout />', () => {
getByText,
getByRole,
queryByTestId,
} = render(<RootWrapper />);
} = render(<TaxonomyLayout />);

const button = getByTestId('taxonomy-show-alert');
button.click();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// @ts-check
import React, { useMemo, useState } from 'react';
import { StudioFooter } from '@edx/frontend-component-footer';
import { useIntl } from '@edx/frontend-platform/i18n';
Expand All @@ -7,15 +6,15 @@ import { Toast } from '@openedx/paragon';

import AlertMessage from '../generic/alert-message';
import Header from '../header';
import { TaxonomyContext } from './common/context';
import { type AlertProps, TaxonomyContext } from './common/context';
import messages from './messages';

const TaxonomyLayout = () => {
export const TaxonomyLayout = () => {
const intl = useIntl();
// Use `setToastMessage` to show the toast.
const [toastMessage, setToastMessage] = useState(/** @type{null|string} */ (null));
const [toastMessage, setToastMessage] = useState<string | null>(null);
// Use `setToastMessage` to show the alert.
const [alertProps, setAlertProps] = useState(/** @type {null|import('./common/context').AlertProps} */ (null));
const [alertProps, setAlertProps] = useState<AlertProps | null>(null);

const context = useMemo(() => ({
toastMessage, setToastMessage, alertProps, setAlertProps,
Expand Down Expand Up @@ -51,5 +50,3 @@ const TaxonomyLayout = () => {
</TaxonomyContext.Provider>
);
};

export default TaxonomyLayout;
Original file line number Diff line number Diff line change
@@ -1,25 +1,15 @@
import React from 'react';
import { IntlProvider, injectIntl } from '@edx/frontend-platform/i18n';
import { initializeMockApp } from '@edx/frontend-platform';
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
import { AppProvider } from '@edx/frontend-platform/react';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import type MockAdapter from 'axios-mock-adapter';
import {
act,
fireEvent,
render,
initializeMocks,
render as baseRender,
waitFor,
} from '@testing-library/react';
import MockAdapter from 'axios-mock-adapter';
} from '../testUtils';

import initializeStore from '../store';
import { apiUrls } from './data/api';
import TaxonomyListPage from './TaxonomyListPage';
import { TaxonomyListPage } from './TaxonomyListPage';
import { TaxonomyContext } from './common/context';

let store;
let axiosMock;

const taxonomies = [{
id: 1,
name: 'Taxonomy',
Expand All @@ -39,81 +29,61 @@ const organizations = ['Org 1', 'Org 2'];
const context = {
toastMessage: null,
setToastMessage: jest.fn(),
alertProps: null,
setAlertProps: jest.fn(),
};
const queryClient = new QueryClient();

const RootWrapper = () => (
<AppProvider store={store}>
<IntlProvider locale="en" messages={{}}>
<QueryClientProvider client={queryClient}>
<TaxonomyContext.Provider value={context}>
<TaxonomyListPage intl={injectIntl} />
</TaxonomyContext.Provider>
</QueryClientProvider>
</IntlProvider>
</AppProvider>
);

const render = (ui: React.ReactElement) => baseRender(ui, {
extraWrapper: ({ children }) => (
<TaxonomyContext.Provider value={context}> { children } </TaxonomyContext.Provider>
),
});
let axiosMock: MockAdapter;

describe('<TaxonomyListPage />', () => {
beforeEach(async () => {
initializeMockApp({
authenticatedUser: {
userId: 3,
username: 'abc123',
administrator: true,
roles: [],
},
});
store = initializeStore();
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
const mocks = initializeMocks();
axiosMock = mocks.axiosMock;
axiosMock.onGet(organizationsListUrl).reply(200, organizations);
});

afterEach(() => {
jest.clearAllMocks();
});

it('should render page and page title correctly', () => {
const { getByText } = render(<RootWrapper />);
const { getByText } = render(<TaxonomyListPage />);
expect(getByText('Taxonomies')).toBeInTheDocument();
});

it('shows the spinner before the query is complete', async () => {
// Simulate an API request that times out:
axiosMock.onGet(listTaxonomiesUrl).reply(new Promise(() => {}));
await act(async () => {
const { getByRole } = render(<RootWrapper />);
const spinner = getByRole('status');
expect(spinner.textContent).toEqual('Loading');
});
axiosMock.onGet(listTaxonomiesUrl).reply(200, new Promise(() => {}));
const { getByRole } = render(<TaxonomyListPage />);
const spinner = getByRole('status');
expect(spinner.textContent).toEqual('Loading');
});

it('shows the data table after the query is complete', async () => {
axiosMock.onGet(listTaxonomiesUrl).reply(200, { results: taxonomies, canAddTaxonomy: false });
await act(async () => {
const { getByTestId, queryByText } = render(<RootWrapper />);
await waitFor(() => { expect(queryByText('Loading')).toEqual(null); });
expect(getByTestId('taxonomy-card-1')).toBeInTheDocument();
});
const { getByTestId, queryByText } = render(<TaxonomyListPage />);
await waitFor(() => { expect(queryByText('Loading')).toEqual(null); });
expect(getByTestId('taxonomy-card-1')).toBeInTheDocument();
});

it.each(['CSV', 'JSON'])('downloads the taxonomy template %s', async (fileFormat) => {
it.each(['csv', 'json'] as const)('downloads the taxonomy template %s', async (fileFormat) => {
axiosMock.onGet(listTaxonomiesUrl).reply(200, { results: taxonomies, canAddTaxonomy: false });
const { findByRole, queryByText } = render(<RootWrapper />);
const { findByRole, queryByText } = render(<TaxonomyListPage />);
// Wait until data has been loaded and rendered:
await waitFor(() => { expect(queryByText('Loading')).toEqual(null); });
const templateMenu = await findByRole('button', { name: 'Download template' });
fireEvent.click(templateMenu);
const templateButton = await findByRole('link', { name: `${fileFormat} template` });
const templateButton = await findByRole('link', { name: `${fileFormat.toUpperCase()} template` });
fireEvent.click(templateButton);

expect(templateButton.href).toBe(apiUrls.taxonomyTemplate(fileFormat.toLowerCase()));
expect((templateButton as HTMLAnchorElement).href).toBe(apiUrls.taxonomyTemplate(fileFormat));
});

it('disables the import taxonomy button if not permitted', async () => {
axiosMock.onGet(listTaxonomiesUrl).reply(200, { results: [], canAddTaxonomy: false });

const { queryByText, getByRole } = render(<RootWrapper />);
const { queryByText, getByRole } = render(<TaxonomyListPage />);
// Wait until data has been loaded and rendered:
await waitFor(() => { expect(queryByText('Loading')).toEqual(null); });
const importButton = getByRole('button', { name: 'Import' });
Expand All @@ -123,7 +93,7 @@ describe('<TaxonomyListPage />', () => {
it('opens the import dialog modal when the import button is clicked', async () => {
axiosMock.onGet(listTaxonomiesUrl).reply(200, { results: [], canAddTaxonomy: true });

const { getByRole, getByText } = render(<RootWrapper />);
const { getByRole, getByText } = render(<TaxonomyListPage />);
const importButton = getByRole('button', { name: 'Import' });
// Once the API response is received and rendered, the Import button should be enabled:
await waitFor(() => { expect(importButton).not.toBeDisabled(); });
Expand Down Expand Up @@ -152,7 +122,7 @@ describe('<TaxonomyListPage />', () => {
getByRole,
getAllByText,
queryByText,
} = render(<RootWrapper />);
} = render(<TaxonomyListPage />);
// Wait until data has been loaded and rendered:
await waitFor(() => { expect(queryByText('Loading')).toEqual(null); });

Expand Down Expand Up @@ -197,14 +167,19 @@ describe('<TaxonomyListPage />', () => {
results: [{ name: 'Org2 Taxonomy C', ...defaults }],
});

const { getByRole, getByText, queryByText } = render(<RootWrapper />);
const {
getByRole,
getByText,
queryByText,
findByRole,
} = render(<TaxonomyListPage />);

// Open the taxonomies org filter select menu
const taxonomiesFilterSelectMenu = await getByRole('button', { name: 'All taxonomies' });
fireEvent.click(taxonomiesFilterSelectMenu);

// Check that the 'Unassigned' option is correctly called
fireEvent.click(getByRole('link', { name: 'Unassigned' }));
fireEvent.click(await findByRole('link', { name: 'Unassigned' }));
await waitFor(() => {
expect(getByText('Unassigned Taxonomy A')).toBeInTheDocument();
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
// @ts-check
import React, { useState } from 'react';
import PropTypes from 'prop-types';
import {
Button,
CardView,
Expand Down Expand Up @@ -31,7 +29,7 @@ import { ImportTagsWizard } from './import-tags';
import messages from './messages';
import TaxonomyCard from './taxonomy-card';

const TaxonomyListHeaderButtons = ({ canAddTaxonomy }) => {
const TaxonomyListHeaderButtons = (props: { canAddTaxonomy: boolean }) => {
const intl = useIntl();

const [isImportModalOpen, importModalOpen, importModalClose] = useToggle(false);
Expand Down Expand Up @@ -80,7 +78,7 @@ const TaxonomyListHeaderButtons = ({ canAddTaxonomy }) => {
iconBefore={Add}
onClick={importModalOpen}
data-testid="taxonomy-import-button"
disabled={!canAddTaxonomy}
disabled={!props.canAddTaxonomy}
>
{intl.formatMessage(messages.importButtonLabel)}
</Button>
Expand All @@ -93,6 +91,11 @@ const OrganizationFilterSelector = ({
organizationListData,
selectedOrgFilter,
setSelectedOrgFilter,
}: {
isOrganizationListLoaded: boolean;
organizationListData?: string[];
selectedOrgFilter: string;
setSelectedOrgFilter: (org: string) => void,
}) => {
const intl = useIntl();
const isOrgSelected = (value) => (value === selectedOrgFilter ? <Check /> : null);
Expand Down Expand Up @@ -152,9 +155,9 @@ const OrganizationFilterSelector = ({
);
};

const TaxonomyListPage = () => {
export const TaxonomyListPage = () => {
const intl = useIntl();
const [selectedOrgFilter, setSelectedOrgFilter] = useState(ALL_TAXONOMIES);
const [selectedOrgFilter, setSelectedOrgFilter] = useState<string>(ALL_TAXONOMIES);

const {
data: organizationListData,
Expand Down Expand Up @@ -242,22 +245,3 @@ const TaxonomyListPage = () => {
</>
);
};

TaxonomyListHeaderButtons.propTypes = {
canAddTaxonomy: PropTypes.bool.isRequired,
};

OrganizationFilterSelector.propTypes = {
isOrganizationListLoaded: PropTypes.bool.isRequired,
organizationListData: PropTypes.arrayOf(PropTypes.string),
selectedOrgFilter: PropTypes.string.isRequired,
setSelectedOrgFilter: PropTypes.func.isRequired,
};

OrganizationFilterSelector.defaultProps = {
organizationListData: null,
};

TaxonomyListPage.propTypes = {};

export default TaxonomyListPage;
Loading