@clickview/lite 0.0.22-dev.1 → 0.0.22-rc.1
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/css/0.chunk.css.map +1 -0
- package/dist/css/1.chunk.css +156 -0
- package/dist/css/1.chunk.css.map +1 -0
- package/dist/css/11.chunk.css +7 -0
- package/dist/css/11.chunk.css.map +1 -0
- package/dist/css/12.chunk.css +3 -1
- package/dist/css/12.chunk.css.map +1 -0
- package/dist/css/13.chunk.css.map +1 -0
- package/dist/css/14.chunk.css.map +1 -0
- package/dist/css/15.chunk.css +3 -1
- package/dist/css/15.chunk.css.map +1 -0
- package/dist/css/16.chunk.css +2 -2
- package/dist/css/16.chunk.css.map +1 -0
- package/dist/css/17.chunk.css.map +1 -0
- package/dist/css/18.chunk.css.map +1 -0
- package/dist/css/2.chunk.css.map +1 -0
- package/dist/css/20.chunk.css.map +1 -0
- package/dist/css/21.chunk.css.map +1 -0
- package/dist/css/22.chunk.css.map +1 -0
- package/dist/css/23.chunk.css.map +1 -0
- package/dist/css/24.chunk.css.map +1 -0
- package/dist/css/25.chunk.css.map +1 -0
- package/dist/css/26.chunk.css +2 -2
- package/dist/css/26.chunk.css.map +1 -0
- package/dist/css/27.chunk.css +2 -2
- package/dist/css/27.chunk.css.map +1 -0
- package/dist/css/28.chunk.css.map +1 -0
- package/dist/css/29.chunk.css.map +1 -0
- package/dist/css/3.chunk.css +4 -2
- package/dist/css/30.chunk.css +30 -2
- package/dist/css/30.chunk.css.map +1 -0
- package/dist/css/31.chunk.css +4 -0
- package/dist/css/31.chunk.css.map +1 -0
- package/dist/css/32.chunk.css.map +1 -0
- package/dist/css/33.chunk.css +8 -0
- package/dist/css/33.chunk.css.map +1 -0
- package/dist/css/34.chunk.css +6 -0
- package/dist/css/34.chunk.css.map +1 -0
- package/dist/css/35.chunk.css.map +1 -0
- package/dist/css/37.chunk.css +7 -0
- package/dist/css/37.chunk.css.map +1 -0
- package/dist/css/38.chunk.css +6 -0
- package/dist/css/38.chunk.css.map +1 -0
- package/dist/css/39.chunk.css +38 -2
- package/dist/css/39.chunk.css.map +1 -0
- package/dist/css/4.chunk.css +1 -1
- package/dist/css/41.chunk.css +4 -0
- package/dist/css/43.chunk.css +38 -0
- package/dist/css/43.chunk.css.map +1 -0
- package/dist/css/5.chunk.css +2 -8
- package/dist/css/5.chunk.css.map +1 -0
- package/dist/css/52.chunk.css +9 -0
- package/dist/css/52.chunk.css.map +1 -0
- package/dist/css/6.chunk.css +8 -2
- package/dist/css/6.chunk.css.map +1 -0
- package/dist/css/7.chunk.css +94 -0
- package/dist/css/7.chunk.css.map +1 -0
- package/dist/css/lite-app.css +2 -2
- package/dist/css/lite-app.css.map +1 -0
- package/dist/en.json +1 -1
- package/dist/libs/analytics/src/utils/VideoDataFormatHelper.d.ts +42 -0
- package/dist/libs/shared/src/apps/content-updates/interfaces/ClassificationVideosGrouping.d.ts +3 -2
- package/dist/libs/shared/src/apps/content-updates/interfaces/index.d.ts +0 -1
- package/dist/libs/shared/src/apps/notifications/utils/NotificationsHelper.d.ts +1 -1
- package/dist/libs/shared/src/apps/playlists/components/empty-state/EmptyVideoList.d.ts +3 -0
- package/dist/libs/shared/src/apps/playlists/components/playlist-list/PlaylistItem.d.ts +8 -3
- package/dist/libs/shared/src/apps/playlists/components/playlist-list/PlaylistList.d.ts +9 -3
- package/dist/libs/shared/src/apps/playlists/components/playlist-list/PlaylistOwnerAvatar.d.ts +9 -0
- package/dist/{projects/lite → libs/shared}/src/apps/playlists/components/sort-select/PlaylistSortSelect.d.ts +2 -2
- package/dist/libs/shared/src/apps/playlists/enums/PlaylistSortType.d.ts +4 -2
- package/dist/libs/shared/src/apps/playlists/enums/PlaylistType.d.ts +5 -0
- package/dist/libs/shared/src/apps/playlists/interfaces/identifiers/PlaylistCollectionIdentifier.d.ts +4 -1
- package/dist/libs/shared/src/apps/playlists/utils/PlaylistSortHelper.d.ts +0 -1
- package/dist/libs/shared/src/apps/subjects/components/preferences/index.d.ts +1 -1
- package/dist/libs/shared/src/apps/subjects/components/preferences/nav/PreferencesNav.d.ts +12 -0
- package/dist/libs/shared/src/apps/subjects/components/preferences/preference-item/PreferenceItem.d.ts +1 -0
- package/dist/libs/shared/src/apps/subjects/components/preferences/preference-item/PreferenceItemStatus.d.ts +1 -0
- package/dist/libs/shared/src/apps/subjects/components/preferences/subject-preference-grid/SubjectPreferenceGrid.d.ts +2 -1
- package/dist/libs/shared/src/apps/subjects/components/preferences/subject-preference-item/SubjectPreferenceItem.d.ts +1 -0
- package/dist/libs/shared/src/apps/subjects/interfaces/ClassificationPreference.d.ts +0 -1
- package/dist/libs/shared/src/components/actions/ActionButton.d.ts +4 -0
- package/dist/libs/shared/src/components/actions/Actions.d.ts +4 -0
- package/dist/libs/shared/src/components/app-link/AppLink.d.ts +4 -0
- package/dist/libs/shared/src/components/avatar/Avatar.d.ts +8 -0
- package/dist/libs/shared/src/components/clickview-avatar/ClickViewAvatar.d.ts +2 -0
- package/dist/libs/shared/src/components/forms/form-buttons/FormButtons.d.ts +3 -0
- package/dist/libs/shared/src/components/icon-button/IconButton.d.ts +4 -0
- package/dist/libs/shared/src/components/svg-container/SvgContainer.d.ts +2 -1
- package/dist/libs/shared/src/components/svgs/clickview-logo/ClickViewLogo.d.ts +1 -0
- package/dist/libs/shared/src/components/toggle-switch/ToggleSwitch.d.ts +1 -0
- package/dist/libs/shared/src/components/widgets/fixed-widget/FixedWidget.d.ts +4 -0
- package/dist/libs/shared/src/constants/WithStatements.d.ts +5 -0
- package/dist/libs/shared/src/enums/SettingName.d.ts +2 -1
- package/dist/libs/shared/src/flight-requests/PlaylistRequests.d.ts +3 -3
- package/dist/libs/shared/src/flight-requests/PreferenceRequests.d.ts +2 -2
- package/dist/libs/shared/src/flight-requests/UserRequests.d.ts +1 -0
- package/dist/libs/shared/src/images/svg/ImportedSvgs.d.ts +4 -1
- package/dist/libs/shared/src/images/svg/objects/index.d.ts +4 -1
- package/dist/libs/shared/src/interfaces/models/Avatar.d.ts +3 -0
- package/dist/libs/shared/src/interfaces/models/Customer.d.ts +1 -0
- package/dist/libs/shared/src/interfaces/models/Playlist.d.ts +1 -0
- package/dist/libs/shared/src/interfaces/models/Presentation.d.ts +2 -2
- package/dist/libs/shared/src/interfaces/models/User.d.ts +2 -1
- package/dist/libs/shared/src/interfaces/models/index.d.ts +2 -0
- package/dist/libs/shared/src/utils/UserHelper.d.ts +3 -0
- package/dist/projects/lite/src/app.d.ts +2 -1
- package/dist/projects/lite/src/apps/playlists/components/playlist-header/PlaylistHeader.d.ts +1 -1
- package/dist/projects/lite/src/apps/playlists/views/playlists/PlaylistsView.d.ts +0 -1
- package/dist/projects/lite/src/apps/search/utils/FilterHelper.d.ts +1 -1
- package/dist/projects/lite/src/apps/user-manager/interfaces/mocks/MockStudent.d.ts +0 -1
- package/dist/projects/lite/src/shared/components/user-options/UserOptions.d.ts +1 -0
- package/dist/scripts/0-50522b3859.chunk.js +1 -0
- package/dist/scripts/0-a394f6ba51.chunk.js +1 -0
- package/dist/scripts/0.chunk.js +346 -0
- package/dist/scripts/0.chunk.js.map +1 -0
- package/dist/scripts/1-5f19a96e0e.chunk.js +17 -0
- package/dist/scripts/1.chunk.js +656 -0
- package/dist/scripts/1.chunk.js.map +1 -0
- package/dist/scripts/10.chunk.js +607 -0
- package/dist/scripts/10.chunk.js.map +1 -0
- package/dist/scripts/11.chunk.js +380 -0
- package/dist/scripts/11.chunk.js.map +1 -0
- package/dist/scripts/12-30c98e5929.chunk.js +1 -0
- package/dist/scripts/12-b43caafe9d.chunk.js +1 -0
- package/dist/scripts/12.chunk.js +434 -0
- package/dist/scripts/12.chunk.js.map +1 -0
- package/dist/scripts/{13-55a4846990.chunk.js → 13-2f23193421.chunk.js} +1 -1
- package/dist/scripts/13-6981d3de8f.chunk.js +1 -0
- package/dist/scripts/13.chunk.js +1287 -0
- package/dist/scripts/13.chunk.js.map +1 -0
- package/dist/scripts/14-6e492c7088.chunk.js +1 -0
- package/dist/scripts/14-d110a60532.chunk.js +1 -0
- package/dist/scripts/14.chunk.js +739 -0
- package/dist/scripts/14.chunk.js.map +1 -0
- package/dist/scripts/15-00a639e1e2.chunk.js +1 -0
- package/dist/scripts/15-4b21593cdc.chunk.js +1 -0
- package/dist/scripts/15.chunk.js +808 -0
- package/dist/scripts/15.chunk.js.map +1 -0
- package/dist/scripts/16-8c55fc37a5.chunk.js +1 -0
- package/dist/scripts/16-fc5fb342de.chunk.js +1 -0
- package/dist/scripts/16.chunk.js +482 -0
- package/dist/scripts/16.chunk.js.map +1 -0
- package/dist/scripts/{17-955a29c4e0.chunk.js → 17-3c1d005bed.chunk.js} +1 -1
- package/dist/scripts/17-c95e61dec6.chunk.js +1 -0
- package/dist/scripts/17.chunk.js +766 -0
- package/dist/scripts/17.chunk.js.map +1 -0
- package/dist/scripts/{18-e6136d62c6.chunk.js → 18-0546a616e0.chunk.js} +1 -1
- package/dist/scripts/18-2366e66947.chunk.js +1 -0
- package/dist/scripts/18.chunk.js +647 -0
- package/dist/scripts/18.chunk.js.map +1 -0
- package/dist/scripts/{19-880910202d.chunk.js → 19-6166dd7d95.chunk.js} +1 -1
- package/dist/scripts/19-67e91b254a.chunk.js +1 -0
- package/dist/scripts/19.chunk.js +212 -0
- package/dist/scripts/19.chunk.js.map +1 -0
- package/dist/scripts/2-7c9b489c8f.chunk.js +1 -0
- package/dist/scripts/2-b9b8ae6df7.chunk.js +1 -0
- package/dist/scripts/2.chunk.js +859 -0
- package/dist/scripts/2.chunk.js.map +1 -0
- package/dist/scripts/{20-44be150b5d.chunk.js → 20-3084a104f8.chunk.js} +1 -1
- package/dist/scripts/20-6d9f7aa2a4.chunk.js +1 -0
- package/dist/scripts/20.chunk.js +1694 -0
- package/dist/scripts/20.chunk.js.map +1 -0
- package/dist/scripts/{21-0ed98b49d9.chunk.js → 21-2baf62770b.chunk.js} +1 -1
- package/dist/scripts/21-5949049d34.chunk.js +1 -0
- package/dist/scripts/21.chunk.js +1348 -0
- package/dist/scripts/21.chunk.js.map +1 -0
- package/dist/scripts/{22-0af19d7662.chunk.js → 22-4610dd4c22.chunk.js} +1 -1
- package/dist/scripts/22-d4db8ae24f.chunk.js +1 -0
- package/dist/scripts/22.chunk.js +1109 -0
- package/dist/scripts/22.chunk.js.map +1 -0
- package/dist/scripts/{23-864af936a5.chunk.js → 23-274e435f65.chunk.js} +1 -1
- package/dist/scripts/23-e8c0570d4f.chunk.js +1 -0
- package/dist/scripts/23.chunk.js +1144 -0
- package/dist/scripts/23.chunk.js.map +1 -0
- package/dist/scripts/{24-4d8f7bcedd.chunk.js → 24-9a76b40556.chunk.js} +1 -1
- package/dist/scripts/24-9c745baf04.chunk.js +1 -0
- package/dist/scripts/24.chunk.js +841 -0
- package/dist/scripts/24.chunk.js.map +1 -0
- package/dist/scripts/{25-8ace9850cd.chunk.js → 25-339ceebd38.chunk.js} +1 -1
- package/dist/scripts/25-fc58f37bb7.chunk.js +1 -0
- package/dist/scripts/25.chunk.js +956 -0
- package/dist/scripts/25.chunk.js.map +1 -0
- package/dist/scripts/26-50b8765208.chunk.js +1 -0
- package/dist/scripts/26-8779aa5972.chunk.js +1 -0
- package/dist/scripts/26.chunk.js +655 -0
- package/dist/scripts/26.chunk.js.map +1 -0
- package/dist/scripts/27-2e0582e3c5.chunk.js +1 -0
- package/dist/scripts/27-6d0e2b1308.chunk.js +1 -0
- package/dist/scripts/27.chunk.js +615 -0
- package/dist/scripts/27.chunk.js.map +1 -0
- package/dist/scripts/{28-fbaeae6ce9.chunk.js → 28-1546a0f0e2.chunk.js} +1 -1
- package/dist/scripts/28-604cc4e821.chunk.js +1 -0
- package/dist/scripts/28.chunk.js +622 -0
- package/dist/scripts/28.chunk.js.map +1 -0
- package/dist/scripts/{29-5cc304ffac.chunk.js → 29-77f2322249.chunk.js} +1 -1
- package/dist/scripts/29-e48cfa43c6.chunk.js +1 -0
- package/dist/scripts/29.chunk.js +721 -0
- package/dist/scripts/29.chunk.js.map +1 -0
- package/dist/scripts/3-b2e5a75e22.chunk.js +7 -0
- package/dist/scripts/3-fd65b2bb74.chunk.js +7 -0
- package/dist/scripts/3.chunk.js +18851 -0
- package/dist/scripts/3.chunk.js.map +1 -0
- package/dist/scripts/{31-b251e1cc9f.chunk.js → 30-926ab83f2b.chunk.js} +1 -1
- package/dist/scripts/30-f11047c1dd.chunk.js +1 -0
- package/dist/scripts/30.chunk.js +468 -0
- package/dist/scripts/30.chunk.js.map +1 -0
- package/dist/scripts/31-0d1e7212f8.chunk.js +1 -0
- package/dist/scripts/31-b437762b2e.chunk.js +1 -0
- package/dist/scripts/31.chunk.js +441 -0
- package/dist/scripts/31.chunk.js.map +1 -0
- package/dist/scripts/{32-89eee7291c.chunk.js → 32-8be947e35c.chunk.js} +1 -1
- package/dist/scripts/32-abadeccf08.chunk.js +1 -0
- package/dist/scripts/32.chunk.js +424 -0
- package/dist/scripts/32.chunk.js.map +1 -0
- package/dist/scripts/{33-fc331f7e45.chunk.js → 33-4acb319295.chunk.js} +1 -1
- package/dist/scripts/33-f65a2fba85.chunk.js +1 -0
- package/dist/scripts/33.chunk.js +638 -0
- package/dist/scripts/33.chunk.js.map +1 -0
- package/dist/scripts/{34-7abcf2c85d.chunk.js → 34-891e281505.chunk.js} +1 -1
- package/dist/scripts/34-9329d51dc2.chunk.js +1 -0
- package/dist/scripts/34.chunk.js +509 -0
- package/dist/scripts/34.chunk.js.map +1 -0
- package/dist/scripts/35-1536100df2.chunk.js +1 -0
- package/dist/scripts/35-9c9e7af68d.chunk.js +1 -0
- package/dist/scripts/35.chunk.js +957 -0
- package/dist/scripts/35.chunk.js.map +1 -0
- package/dist/scripts/{36-4487d884c4.chunk.js → 36-3f65f197f1.chunk.js} +1 -1
- package/dist/scripts/36-88f23c1af6.chunk.js +1 -0
- package/dist/scripts/36.chunk.js +938 -0
- package/dist/scripts/36.chunk.js.map +1 -0
- package/dist/scripts/{37-3756ebfbf8.chunk.js → 37-a833585532.chunk.js} +1 -1
- package/dist/scripts/37-cac99df2ec.chunk.js +1 -0
- package/dist/scripts/37.chunk.js +416 -0
- package/dist/scripts/37.chunk.js.map +1 -0
- package/dist/scripts/38-cd29a5bb33.chunk.js +1 -0
- package/dist/scripts/38-e8e6b09b5d.chunk.js +1 -0
- package/dist/scripts/38.chunk.js +482 -0
- package/dist/scripts/38.chunk.js.map +1 -0
- package/dist/scripts/39-41ed17d1f8.chunk.js +1 -0
- package/dist/scripts/39-549a0389b7.chunk.js +1 -0
- package/dist/scripts/39.chunk.js +245 -0
- package/dist/scripts/39.chunk.js.map +1 -0
- package/dist/scripts/4-0b79336993.chunk.js +1 -0
- package/dist/scripts/4-b611ebe99d.chunk.js +1 -0
- package/dist/scripts/4.chunk.js +403 -0
- package/dist/scripts/4.chunk.js.map +1 -0
- package/dist/scripts/40-9e01cffd38.chunk.js +1 -0
- package/dist/scripts/40-b754c5bf16.chunk.js +1 -0
- package/dist/scripts/40.chunk.js +337 -0
- package/dist/scripts/40.chunk.js.map +1 -0
- package/dist/scripts/{39-40fb064bfa.chunk.js → 41-3c305d8a8a.chunk.js} +1 -1
- package/dist/scripts/41-a5c400ad15.chunk.js +1 -0
- package/dist/scripts/41.chunk.js +350 -0
- package/dist/scripts/41.chunk.js.map +1 -0
- package/dist/scripts/{40-06a34b9e0e.chunk.js → 42-0079f90e3f.chunk.js} +1 -1
- package/dist/scripts/42-1854788acf.chunk.js +1 -0
- package/dist/scripts/42.chunk.js +381 -0
- package/dist/scripts/42.chunk.js.map +1 -0
- package/dist/scripts/{41-37fb45611f.chunk.js → 43-3d24bccf11.chunk.js} +1 -1
- package/dist/scripts/43-6f8279fdc6.chunk.js +1 -0
- package/dist/scripts/43.chunk.js +345 -0
- package/dist/scripts/43.chunk.js.map +1 -0
- package/dist/scripts/{42-2e0a141dd0.chunk.js → 44-067cac7c5c.chunk.js} +1 -1
- package/dist/scripts/44-273c2a48ec.chunk.js +1 -0
- package/dist/scripts/44.chunk.js +404 -0
- package/dist/scripts/44.chunk.js.map +1 -0
- package/dist/scripts/{43-3b21cd4021.chunk.js → 45-be8c19698d.chunk.js} +1 -1
- package/dist/scripts/45-d417ea05ac.chunk.js +1 -0
- package/dist/scripts/45.chunk.js +221 -0
- package/dist/scripts/45.chunk.js.map +1 -0
- package/dist/scripts/{46-92ef9358e1.chunk.js → 46-c94f8ad682.chunk.js} +1 -1
- package/dist/scripts/46-f1a37a04d3.chunk.js +1 -0
- package/dist/scripts/46.chunk.js +230 -0
- package/dist/scripts/46.chunk.js.map +1 -0
- package/dist/scripts/{47-73308b0e36.chunk.js → 47-7ff74e9140.chunk.js} +1 -1
- package/dist/scripts/47-c64b41de11.chunk.js +1 -0
- package/dist/scripts/47.chunk.js +409 -0
- package/dist/scripts/47.chunk.js.map +1 -0
- package/dist/scripts/{48-4e1c2af176.chunk.js → 48-277e2c2a38.chunk.js} +1 -1
- package/dist/scripts/48-4f33f35994.chunk.js +1 -0
- package/dist/scripts/48.chunk.js +272 -0
- package/dist/scripts/48.chunk.js.map +1 -0
- package/dist/scripts/{49-6860509ec9.chunk.js → 49-0a0303fc9b.chunk.js} +1 -1
- package/dist/scripts/49-9a37819019.chunk.js +1 -0
- package/dist/scripts/49.chunk.js +267 -0
- package/dist/scripts/49.chunk.js.map +1 -0
- package/dist/scripts/5-3b52becb23.chunk.js +1 -0
- package/dist/scripts/5-926010c03d.chunk.js +1 -0
- package/dist/scripts/5.chunk.js +1088 -0
- package/dist/scripts/5.chunk.js.map +1 -0
- package/dist/scripts/{50-ce92cdc08d.chunk.js → 50-30bb15a353.chunk.js} +1 -1
- package/dist/scripts/50-c5e8376786.chunk.js +1 -0
- package/dist/scripts/50.chunk.js +225 -0
- package/dist/scripts/50.chunk.js.map +1 -0
- package/dist/scripts/{51-f7ca510503.chunk.js → 51-020d240398.chunk.js} +1 -1
- package/dist/scripts/51-9bbad0bfb6.chunk.js +1 -0
- package/dist/scripts/51.chunk.js +318 -0
- package/dist/scripts/51.chunk.js.map +1 -0
- package/dist/scripts/{52-f1cd5fb0bf.chunk.js → 52-46cde58ace.chunk.js} +1 -1
- package/dist/scripts/52-fbaa41eb77.chunk.js +1 -0
- package/dist/scripts/52.chunk.js +64 -0
- package/dist/scripts/52.chunk.js.map +1 -0
- package/dist/scripts/{53-048ecda135.chunk.js → 53-527e7f7403.chunk.js} +1 -1
- package/dist/scripts/53-8faa05dc7b.chunk.js +1 -0
- package/dist/scripts/53.chunk.js +108 -0
- package/dist/scripts/53.chunk.js.map +1 -0
- package/dist/scripts/{54-65486573ee.chunk.js → 54-1d0763934e.chunk.js} +1 -1
- package/dist/scripts/54-3f6d4400a5.chunk.js +1 -0
- package/dist/scripts/54.chunk.js +110 -0
- package/dist/scripts/54.chunk.js.map +1 -0
- package/dist/scripts/{55-294432b05b.chunk.js → 55-6c166a980c.chunk.js} +1 -1
- package/dist/scripts/55-b7831607fd.chunk.js +1 -0
- package/dist/scripts/55.chunk.js +162 -0
- package/dist/scripts/55.chunk.js.map +1 -0
- package/dist/scripts/{56-386250e4ec.chunk.js → 56-5dc77fbbed.chunk.js} +1 -1
- package/dist/scripts/56-966257962b.chunk.js +1 -0
- package/dist/scripts/56.chunk.js +145 -0
- package/dist/scripts/56.chunk.js.map +1 -0
- package/dist/scripts/{57-b59de63c5a.chunk.js → 57-6f61e67fbb.chunk.js} +1 -1
- package/dist/scripts/57-7716124eee.chunk.js +1 -0
- package/dist/scripts/57.chunk.js +139 -0
- package/dist/scripts/57.chunk.js.map +1 -0
- package/dist/scripts/{58-5b7bee48c2.chunk.js → 58-0da9b42725.chunk.js} +1 -1
- package/dist/scripts/58-cbff52ace0.chunk.js +1 -0
- package/dist/scripts/58.chunk.js +142 -0
- package/dist/scripts/58.chunk.js.map +1 -0
- package/dist/scripts/{59-00659eeeca.chunk.js → 59-023ba91f45.chunk.js} +1 -1
- package/dist/scripts/59-39caa8ff7e.chunk.js +1 -0
- package/dist/scripts/59.chunk.js +173 -0
- package/dist/scripts/59.chunk.js.map +1 -0
- package/dist/scripts/{5-8cac703d8e.chunk.js → 6-081f3686a7.chunk.js} +1 -1
- package/dist/scripts/6-19163a3d76.chunk.js +1 -0
- package/dist/scripts/6.chunk.js +406 -0
- package/dist/scripts/6.chunk.js.map +1 -0
- package/dist/scripts/{60-d2c07fa4ea.chunk.js → 60-1b7fe463bf.chunk.js} +1 -1
- package/dist/scripts/60-6b95f83bfc.chunk.js +1 -0
- package/dist/scripts/60.chunk.js +160 -0
- package/dist/scripts/60.chunk.js.map +1 -0
- package/dist/scripts/{61-89b6e187bd.chunk.js → 61-e45710e150.chunk.js} +1 -1
- package/dist/scripts/61.chunk.js +98 -0
- package/dist/scripts/61.chunk.js.map +1 -0
- package/dist/scripts/62.chunk.js +48 -0
- package/dist/scripts/62.chunk.js.map +1 -0
- package/dist/scripts/63.chunk.js +32 -0
- package/dist/scripts/63.chunk.js.map +1 -0
- package/dist/scripts/64.chunk.js +29 -0
- package/dist/scripts/64.chunk.js.map +1 -0
- package/dist/scripts/65.chunk.js +27 -0
- package/dist/scripts/65.chunk.js.map +1 -0
- package/dist/scripts/66.chunk.js +65 -0
- package/dist/scripts/66.chunk.js.map +1 -0
- package/dist/scripts/67.chunk.js +67 -0
- package/dist/scripts/67.chunk.js.map +1 -0
- package/dist/scripts/68.chunk.js +104 -0
- package/dist/scripts/68.chunk.js.map +1 -0
- package/dist/scripts/69.chunk.js +102 -0
- package/dist/scripts/69.chunk.js.map +1 -0
- package/dist/scripts/7-49ae7b6074.chunk.js +1 -0
- package/dist/scripts/7-65ca87564a.chunk.js +1 -0
- package/dist/scripts/7.chunk.js +2614 -0
- package/dist/scripts/7.chunk.js.map +1 -0
- package/dist/scripts/70.chunk.js +1001 -0
- package/dist/scripts/70.chunk.js.map +1 -0
- package/dist/scripts/71.chunk.js +36 -0
- package/dist/scripts/71.chunk.js.map +1 -0
- package/dist/scripts/{8-d64d1cc3c2.chunk.js → 8-23f94941b7.chunk.js} +1 -1
- package/dist/scripts/8-cf6e1f3b76.chunk.js +1 -0
- package/dist/scripts/8.chunk.js +24 -0
- package/dist/scripts/8.chunk.js.map +1 -0
- package/dist/scripts/{9-45dbfb578e.chunk.js → 9-11c21b9609.chunk.js} +1 -1
- package/dist/scripts/9-593ef0b4f8.chunk.js +1 -0
- package/dist/scripts/9.chunk.js +327 -0
- package/dist/scripts/9.chunk.js.map +1 -0
- package/dist/scripts/bundle-2e43bd8225.min.js +8 -0
- package/dist/scripts/bundle-b9ea7224b0.min.js +8 -0
- package/dist/scripts/bundle.js +44515 -0
- package/dist/scripts/bundle.js.map +1 -0
- package/dist/scripts/bundles.json +2 -2
- package/dist/scripts/polyfills-69bebbe22a.min.js +1 -0
- package/dist/scripts/polyfills-bbe21b4875.min.js +1 -0
- package/dist/scripts/polyfills.js +15254 -0
- package/dist/scripts/polyfills.js.map +1 -0
- package/package.json +3 -3
- package/dist/libs/shared/src/apps/content-updates/interfaces/VideoClassificationMapping.d.ts +0 -5
- package/dist/libs/shared/src/apps/subjects/components/preferences/progress/PreferenceProgress.d.ts +0 -12
- package/dist/projects/lite/src/apps/playlists/interfaces/PlaylistCollectionIdentifier.d.ts +0 -5
- package/dist/projects/lite/src/shared/components/avatar/Avatar.d.ts +0 -6
- package/dist/scripts/0-06e6d224db.chunk.js +0 -1
- package/dist/scripts/1-887b4b1b62.chunk.js +0 -17
- package/dist/scripts/12-c3a787026a.chunk.js +0 -1
- package/dist/scripts/14-388f94a450.chunk.js +0 -1
- package/dist/scripts/15-77df8b5af3.chunk.js +0 -1
- package/dist/scripts/16-0ffeb64f54.chunk.js +0 -1
- package/dist/scripts/2-fd038171b4.chunk.js +0 -1
- package/dist/scripts/26-cdbba9cd45.chunk.js +0 -1
- package/dist/scripts/27-e37f663d43.chunk.js +0 -1
- package/dist/scripts/3-80777701d5.chunk.js +0 -7
- package/dist/scripts/30-eacfd37725.chunk.js +0 -1
- package/dist/scripts/35-6c3ad9d973.chunk.js +0 -1
- package/dist/scripts/38-dc36b72523.chunk.js +0 -1
- package/dist/scripts/4-921a74ad8c.chunk.js +0 -1
- package/dist/scripts/44-a689986917.chunk.js +0 -1
- package/dist/scripts/45-929a705c77.chunk.js +0 -1
- package/dist/scripts/6-176dc103e5.chunk.js +0 -1
- package/dist/scripts/7-26644d5b55.chunk.js +0 -1
- package/dist/scripts/bundle-697354e29e.min.js +0 -8
- package/dist/scripts/polyfills-b6dc96dd56.min.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["file://C:/ClickView Projects/clickview/packages/libs/shared/src/components/forms/form-checkbox/Checkbox.tsx","file://C:/ClickView Projects/clickview/packages/libs/shared/src/components/toggle-switch/ToggleSwitch.tsx","file://C:/ClickView Projects/clickview/packages/libs/shared/src/components/widgets/items/playlist-widget-item/PlaylistWidgetItem.tsx","webpack://@clickview/lite/C:/ClickView Projects/clickview/packages/libs/shared/src/components/widgets/items/playlist-widget-item/playlist-widget-item.scss?8828","file://C:/ClickView Projects/clickview/packages/libs/shared/src/components/widgets/items/series-widget-item/SeriesWidgetItem.tsx","webpack://@clickview/lite/C:/ClickView Projects/clickview/packages/libs/shared/src/components/widgets/items/series-widget-item/series-widget-item.scss?1d8d","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/filter-actions/FilterActions.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/filter-button/FilterButton.tsx","webpack://@clickview/lite/./src/apps/search/components/filter-button/filter-button.scss?38d7","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/filter-types/checkbox-filter/CheckboxFilter.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/filter-types/dropdown-filter/DropdownFilter.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/filter-types/index.ts","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/filter-types/more-filters/MoreFilters.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/filter-types/radio-filter/RadioFilter.tsx","webpack://@clickview/lite/./src/apps/search/components/filter-types/radio-filter/radio-filter.scss?b169","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/filter-types/radio-filter/year-level/YearLevelRadioFilter.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/filter-types/switch-filter/SwitchFilter.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/index.ts","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/reset-button/ResetButton.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/components/search-filters/SearchFilters.tsx","webpack://@clickview/lite/./src/apps/search/components/search-filters/search-filters.scss?49f3","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/reducers/FilterReducer.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/reducers/index.ts","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/utils/FilterHelper.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/utils/SearchHelper.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/search/utils/index.ts","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/user-manager/components/bulk-upload-file-select/BulkUploadFileSelect.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/user-manager/components/edit-student-details/EditStudentDetails.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/user-manager/components/edit-teacher-details/EditTeacherDetails.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/user-manager/components/index.ts","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/user-manager/components/user-details-form/UserDetailsForm.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/user-manager/components/year-level-select/YearLevelSelect.tsx","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/user-manager/enums/index.ts","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/user-manager/enums/mocks/MockUserType.ts","file://C:/ClickView Projects/clickview/packages/projects/lite/src/apps/user-manager/validation/user-validation/UserValidationSchema.ts","file://C:/ClickView Projects/clickview/packages/projects/lite/src/shared/hooks/useBulkCheckboxManager.tsx"],"names":[],"mappings":"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","file":"scripts/7.chunk.js","sourcesContent":["import * as React from 'react';\r\n\r\ninterface CheckboxProps {\r\n id: string;\r\n checked: boolean;\r\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n label?: string;\r\n name?: string;\r\n className?: string;\r\n}\r\n\r\nCheckbox.defaultProps = {\r\n checked: false,\r\n label: '',\r\n className: ''\r\n};\r\n\r\n/**\r\n * Use this checkbox outside of Formik contexts\r\n */\r\nexport function Checkbox(props: CheckboxProps): JSX.Element {\r\n return (\r\n <div className={`custom-control custom-checkbox ${props.className}`}>\r\n <input\r\n type='checkbox'\r\n className='custom-control-input'\r\n id={props.id}\r\n name={props.name}\r\n checked={props.checked}\r\n onChange={props.onChange}\r\n />\r\n <label className='custom-control-label cursor-pointer' htmlFor={props.id}>{props.label}</label>\r\n </div>\r\n );\r\n}","import React from 'react';\r\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\r\n\r\ninterface ToggleSwitchProps {\r\n onClick: (...args: any) => any;\r\n on: boolean;\r\n disabled?: boolean;\r\n\r\n // Using this goes against proper a11y practices, but it's been added for situations where it looks better\r\n hideOutline?: boolean;\r\n}\r\n\r\nexport function ToggleSwitch(props: ToggleSwitchProps): JSX.Element {\r\n function onClick(...args: any): void {\r\n if (props.disabled)\r\n return;\r\n\r\n props.onClick(...args);\r\n }\r\n\r\n const bootstrapClasses = 'd-inline-block float-right align-top custom-toggle toggle-option';\r\n const onClass = (props.on && !props.disabled) ? 'on' : '';\r\n const disabledClass = props.disabled ? 'disabled' : '';\r\n const outlineClass = props.hideOutline ? 'outline-none' : '';\r\n\r\n return (\r\n <DivButton\r\n onClick={onClick}\r\n className={`${bootstrapClasses} ${onClass} ${disabledClass} ${outlineClass}`}\r\n >\r\n <span className='handle' />\r\n </DivButton>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { Playlist, PresentationAudience, WidgetContext } from 'libs/shared/interfaces';\r\nimport { PlaylistItem } from 'libs/shared/apps/playlists/components/playlist-list/PlaylistItem';\r\n\r\nimport styles from './playlist-widget-item.scss';\r\n\r\nexport interface PlaylistWidgetItemProps {\r\n data: Playlist;\r\n appLink: Core.AppLink;\r\n presentationAudiences: PresentationAudience[];\r\n context: WidgetContext;\r\n}\r\n\r\nexport function PlaylistWidgetItem(props : PlaylistWidgetItemProps): JSX.Element {\r\n const { context, ...otherProps } = props;\r\n\r\n return (\r\n <div className={`position-relative p-1 flex-shrink-0 ${styles.width}`}>\r\n <PlaylistItem {...otherProps} />\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"width\":\"cv--width--wNWEd\"};","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\n\r\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\r\nimport { Series, PresentationAudience } from 'libs/shared/interfaces';\r\nimport { AudienceHelper } from 'libs/shared/utils/AudienceHelper';\r\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\r\nimport { BaseThumbnail, AspectRatio } from 'libs/shared/components/thumbnails/base/BaseThumbnail';\r\nimport { ThumbnailFallback, ThumbnailFallbackType } from 'libs/shared/components/thumbnails/base/ThumbnailFallback';\r\nimport { ThumbnailSize } from 'libs/shared/enums/ThumbnailSize';\r\nimport { AudienceLabel } from 'libs/shared/components/audience-label/AudienceLabel';\r\nimport { BadgeType, Badge } from 'libs/shared/components/badges/Badge';\r\n\r\nimport styles from './series-widget-item.scss';\r\n\r\nexport interface SeriesWidgetItemProps {\r\n data: Series;\r\n appLink: Core.AppLink;\r\n audiences: PresentationAudience[];\r\n preloadImage?: boolean;\r\n}\r\n\r\nexport function SeriesWidgetItem(props : SeriesWidgetItemProps): JSX.Element {\r\n const { data: series, appLink, preloadImage } = props;\r\n\r\n const seriesAppLink: Core.AppLink = {\r\n ...appLink,\r\n args: [ series.id, TextHelper.slugify(series.name) ]\r\n };\r\n\r\n /**\r\n * Subject audiences currently take render precedence over rating.\r\n * \r\n * This means that until we properly add productionCompanies to series, we\r\n * should expect only CV series to have a subject audience. Any TV series\r\n * from the Exchange should only have a rating. \r\n */\r\n\r\n let audiences = series && series.subjectPresentationAudiences &&\r\n series.subjectPresentationAudiences.data || [];\r\n\r\n const filteredAudiences = AudienceHelper.getSortedPresentationAudiences(audiences, props.audiences);\r\n const mergedAudience = AudienceHelper.getMergedPresentationAudienceString(filteredAudiences);\r\n\r\n const [ hoverRef, isHovering ] = useHoverIntent<HTMLDivElement>(styles.hoverActive);\r\n\r\n return (\r\n <AppLink\r\n key={series.id}\r\n appLink={seriesAppLink}\r\n className={`position-relative p-1 flex-shrink-0 ${styles.width}`}\r\n >\r\n <div ref={hoverRef}>\r\n {isHovering &&\r\n <div className={`p-3 text-white text-center ${styles.mask}`}>\r\n <h3 className='h4'>{series.name}</h3>\r\n <p>{series.description}</p>\r\n </div>\r\n }\r\n <BaseThumbnail\r\n data={series.tallPoster}\r\n aspectRatio={AspectRatio.NineBySixteen}\r\n preload={preloadImage}\r\n size={ThumbnailSize.Large}>\r\n <ThumbnailFallback type={ThumbnailFallbackType.Series} />\r\n <div className={`position-absolute text-white ${styles.labelContainer}`}>\r\n {!!audiences && audiences.length\r\n ? <AudienceLabel audience={ mergedAudience } border='white' />\r\n : <Badge type={BadgeType.Rating} data={series.rating} />\r\n }\r\n </div>\r\n </BaseThumbnail>\r\n </div>\r\n </AppLink>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialLoadingHeading\":\"cv--partialLoadingHeading--1RLPq\",\"partialLoading\":\"cv--partialLoading--oArG4\",\"labelContainer\":\"cv--labelContainer--QLCgm\",\"hoverActive\":\"cv--hoverActive--3Aleb\",\"mask\":\"cv--mask--2M2Zz\",\"width\":\"cv--width--TQg2K\"};","import * as React from 'react';\r\nimport * as ReactIntersectionObserver from 'react-intersection-observer';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { ContextService } from 'libs/shared/services/ContextService';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\r\n\r\nimport { FilterContext, FilterPayloadType } from 'apps/search/reducers';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\nimport { WorkflowPhase, UserAction, FilterDescriptor } from 'libs/analytics/interfaces';\r\n\r\nconst namespace = 'search.filterActions';\r\n\r\nconst triggerAppLink = (stateChange: FilterPayloadType) => {\r\n const currentQueryParams = Core.LocationUtils.GetQuery();\r\n\r\n const currentAppLink = ContextService.getCurrentRoute().appLink;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: currentAppLink.application,\r\n action: currentAppLink.action,\r\n params: FilterHelper.buildQueryParams(currentQueryParams, stateChange)\r\n });\r\n};\r\n\r\ntype FilterActionsProps = FilterPayloadType & PropsWithAnalyticsOptions<{\r\n className?: string;\r\n}>;\r\n\r\nFilterActions.defaultProps = {\r\n active: false,\r\n className: ''\r\n};\r\n\r\nexport function FilterActions(props: FilterActionsProps): JSX.Element {\r\n const { dispatch } = React.useContext(FilterContext);\r\n\r\n const [ triggerOnClose, setTriggerOnClose ] = React.useState(false);\r\n let [ ref, inView ] = ReactIntersectionObserver.useInView();\r\n\r\n React.useEffect(() => {\r\n if (inView) {\r\n setTriggerOnClose(true);\r\n return;\r\n }\r\n\r\n if (!inView && triggerOnClose) {\r\n setTriggerOnClose(false);\r\n applyFilter(false);\r\n }\r\n }, [inView]);\r\n\r\n function applyFilter(applyClicked: boolean): void {\r\n // The default value should not be set as a query param\r\n const isDefaultValue = props.selection?.length === 1 && ArrayHelper.first(props.selection)?.default;\r\n\r\n AnalyticsHelper.logUserAction({\r\n type: props.filter.name,\r\n selection: (props.selection && !isDefaultValue) ? props.selection : [],\r\n isActive: props.active && !isDefaultValue,\r\n applyClicked\r\n }, AnalyticsHelper.mergeOptions(props.analyticsOptions, {\r\n workflowPhase: WorkflowPhase.Complete,\r\n actionType: UserAction.Filter\r\n }));\r\n\r\n const payload: FilterPayloadType = {\r\n filter: props.filter,\r\n active: props.active && !isDefaultValue,\r\n selection: (props.selection && !isDefaultValue) ? props.selection : []\r\n };\r\n\r\n dispatch({ type: 'apply', payload });\r\n triggerAppLink(payload);\r\n }\r\n\r\n function onClickReset(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n\r\n AnalyticsHelper.logUserAction({\r\n type: props.filter.name\r\n }, AnalyticsHelper.mergeOptions(props.analyticsOptions, {\r\n workflowPhase: WorkflowPhase.Complete,\r\n actionType: UserAction.Filter,\r\n descriptor: FilterDescriptor.Reset\r\n }));\r\n\r\n const payload: FilterPayloadType = {\r\n filter: props.filter,\r\n active: false,\r\n selection: null\r\n };\r\n\r\n dispatch({ type: 'reset', payload });\r\n triggerAppLink(payload);\r\n }\r\n\r\n function onClickApply(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n\r\n applyFilter(true);\r\n }\r\n\r\n return (\r\n <div ref={ref} className={`d-flex justify-content-between ${props.className}`}>\r\n <DivButton className='text-muted hover-text-underline cursor-pointer' onClick={onClickReset}>\r\n <Text namespace={namespace} phrase='reset' />\r\n </DivButton>\r\n\r\n <DivButton className='info-link' onClick={onClickApply}>\r\n <Text namespace={namespace} phrase='apply' />\r\n </DivButton>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { SearchFilter, MoreFilters } from 'apps/search/interfaces';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nimport styles from './filter-button.scss';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype FilterButtonProps = PropsWithAnalyticsOptions<{\r\n filter: SearchFilter | MoreFilters;\r\n}>;\r\n\r\nexport function FilterButton(props: FilterButtonProps): JSX.Element {\r\n const [ label, setLabel ] = React.useState(props.filter.name);\r\n\r\n const FilterComponent = props.filter.customComponent\r\n ? props.filter.customComponent\r\n : FilterHelper.mapTypeToComponent(props.filter.type);\r\n\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n React.useEffect(() => {\r\n setLabel(FilterHelper.getLabel(props.filter, filterState));\r\n }, [ props.filter, filterState.selection ]);\r\n\r\n const baseClass = `${styles.filterButton} mx-1 btn`;\r\n const colorClass = filterState.active ? 'btn-info' : 'btn-light';\r\n const caretClass = props.filter.type !== 'dropdown' ? styles.hideCaret : '';\r\n\r\n return (\r\n <Dropdown>\r\n <Dropdown.Toggle id={props.filter.id} className={`${baseClass} ${colorClass} ${caretClass}`}>\r\n {label}\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu onClick={(e: React.MouseEvent) => e.stopPropagation()}>\r\n <div className={`${styles.filterItem} mx-1 ${props.filter.type !== 'dropdown' ? 'px-2 py-1' : ''}`}>\r\n <FilterComponent analyticsOptions={props.analyticsOptions} filter={props.filter} />\r\n </div>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterButton\":\"cv--filterButton--2LJ1G\",\"hideCaret\":\"cv--hideCaret--2OStB\",\"filterItem\":\"cv--filterItem--13K5j\"};","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\r\n\r\nimport { useBulkCheckboxManager } from 'shared/hooks/useBulkCheckboxManager';\r\n\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nimport { FilterActions } from '../../filter-actions/FilterActions';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype CheckboxFilterProps = PropsWithAnalyticsOptions<{\r\n filter: SearchFilter;\r\n}>;\r\n\r\nexport function CheckboxFilter(props: CheckboxFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const { onToggleItem, isChecked, getSelected } = useBulkCheckboxManager(props.filter.options, {\r\n preselectedIds: filterState.selection?.map(s => s.id) || []\r\n });\r\n\r\n const selections = getSelected().map(optionName => props.filter.options.find(o => o.id === optionName));\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n\r\n <Form className='mb-3'>\r\n {props.filter.options.map(option => {\r\n return (\r\n <Checkbox\r\n key={option.id}\r\n label={option.name}\r\n name={option.id}\r\n id={option.id}\r\n onChange={() => onToggleItem(option.id)}\r\n checked={isChecked(option.id)}\r\n className='my-1'\r\n />\r\n );\r\n })}\r\n </Form>\r\n\r\n <FilterActions\r\n active={!!selections.length}\r\n filter={props.filter}\r\n selection={selections}\r\n analyticsOptions={props.analyticsOptions}\r\n />\r\n </>\r\n );\r\n}","import React from 'react';\r\n\r\nimport { Dropdown } from 'react-bootstrap';\r\n\r\nimport { SearchFilter, FilterOption } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from '../../filter-actions/FilterActions';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype DropdownFilterProps = PropsWithAnalyticsOptions<{\r\n filter: SearchFilter;\r\n}>;\r\n\r\nexport function DropdownFilter(props: DropdownFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(filterState.selection);\r\n\r\n return (\r\n <>\r\n {props.filter.options.map(option => (\r\n <Dropdown.Item\r\n key={option.id}\r\n onClick={() => setCurrentSelection([option])}\r\n >\r\n {option.name}\r\n </Dropdown.Item>\r\n ))}\r\n\r\n <FilterActions\r\n active={!!currentSelection}\r\n filter={props.filter}\r\n selection={currentSelection}\r\n className='pt-1 px-2'\r\n analyticsOptions={props.analyticsOptions}\r\n />\r\n </>\r\n );\r\n}","export * from './checkbox-filter/CheckboxFilter';\r\nexport * from './more-filters/MoreFilters';\r\nexport * from './switch-filter/SwitchFilter';\r\nexport * from './dropdown-filter/DropdownFilter';\r\nexport * from './radio-filter/RadioFilter';\r\nexport * from './radio-filter/year-level/YearLevelRadioFilter';","import * as React from 'react';\r\n\r\ninterface MoreFiltersProps {}\r\n\r\nexport function MoreFilters(props: MoreFiltersProps): JSX.Element {\r\n return (\r\n <></>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nimport { SearchFilter } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from 'apps/search/components';\r\n\r\nimport styles from './radio-filter.scss';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype RadioFilterProps = PropsWithAnalyticsOptions<{\r\n filter: SearchFilter;\r\n}>;\r\n\r\nexport function RadioFilter(props: RadioFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(filterState.selection);\r\n React.useEffect(() => setCurrentSelection(filterState.selection), [filterState.selection]);\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n\r\n <Form className='mb-3'>\r\n {props.filter.options.map(option => {\r\n const isSelected = currentSelection?.length && option.id === ArrayHelper.first(currentSelection).id;\r\n\r\n return (\r\n <Form.Check\r\n key={option.id}\r\n custom\r\n type='radio'\r\n label={option.name}\r\n name={option.id}\r\n id={option.id}\r\n value={option.id}\r\n onChange={() => setCurrentSelection([option])}\r\n checked={isSelected}\r\n className={styles.radioFilter}\r\n />\r\n );\r\n })}\r\n </Form>\r\n\r\n <FilterActions\r\n active={!!currentSelection?.length}\r\n filter={props.filter}\r\n selection={currentSelection}\r\n analyticsOptions={props.analyticsOptions}\r\n />\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"radioFilter\":\"cv--radioFilter--3srm_\"};","import * as React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\n\r\nimport { SearchFilter, FilterOption } from 'apps/search/interfaces';\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { FilterActions } from 'apps/search/components';\r\n\r\nimport { YearLevelSelect } from 'apps/user-manager/components';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype YearLevelRadioFilterProps = PropsWithAnalyticsOptions<{\r\n filter: SearchFilter;\r\n}>;\r\n\r\nexport function YearLevelRadioFilter(props: YearLevelRadioFilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ currentSelection, setCurrentSelection ] = React.useState(filterState.selection);\r\n\r\n React.useEffect(() => setCurrentSelection(filterState.selection), [filterState.selection]);\r\n\r\n function onSelect(yearLevel: FilterOption): void {\r\n setCurrentSelection([yearLevel]);\r\n }\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n\r\n <Form className='mb-3'>\r\n <YearLevelSelect\r\n yearLevels={props.filter.options}\r\n onSelect={onSelect}\r\n selected={ArrayHelper.first(currentSelection)}\r\n />\r\n </Form>\r\n\r\n <FilterActions\r\n active={!!currentSelection?.length}\r\n filter={props.filter}\r\n selection={currentSelection}\r\n analyticsOptions={props.analyticsOptions}\r\n />\r\n </>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\r\n\r\nimport { FilterProps } from 'apps/search/interfaces';\r\nimport { FilterActions } from 'apps/search/components';\r\nimport { FilterContext } from 'apps/search/reducers';\r\n\r\nexport function SwitchFilter(props: FilterProps): JSX.Element {\r\n const { state } = React.useContext(FilterContext);\r\n const filterState = state[props.filter.id];\r\n\r\n const [ active, setActive ] = React.useState<boolean>(filterState.active);\r\n\r\n return (\r\n <>\r\n <h3 className='h6 mb-2'>{props.filter.name}</h3>\r\n <p className='d-inline-block w-75 mr-auto'>{props.filter.description}</p>\r\n\r\n <ToggleSwitch onClick={() => setActive(!active)} on={active} />\r\n\r\n <FilterActions active={active} filter={props.filter} analyticsOptions={props.analyticsOptions} />\r\n </>\r\n );\r\n}","export * from './search-filters/SearchFilters';\r\nexport * from './search-filters/PartialSearchFilters';\r\nexport * from './filter-button/FilterButton';\r\nexport * from './filter-actions/FilterActions';\r\nexport * from './reset-button/ResetButton';\r\nexport * from './filter-types';","import * as React from 'react';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { ContextService } from 'libs/shared/services/ContextService';\r\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\n\r\nimport { FilterContext } from 'apps/search/reducers';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { UserAction, FilterDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype ResetButtonProps = PropsWithAnalyticsOptions<{\r\n currentQueryParam: string;\r\n}>;\r\n\r\nexport function ResetButton(props: ResetButtonProps): JSX.Element {\r\n const { dispatch } = React.useContext(FilterContext);\r\n\r\n const onClickReset = () => {\r\n const currentAppLink = ContextService.getCurrentRoute().appLink;\r\n\r\n const nextAppLink: Core.AppLink = {\r\n application: currentAppLink.application,\r\n action: currentAppLink.action\r\n };\r\n\r\n AnalyticsHelper.logUserAction({\r\n type: 'All',\r\n active: false\r\n }, AnalyticsHelper.mergeOptions(props.analyticsOptions, {\r\n actionType: UserAction.Filter,\r\n descriptor: FilterDescriptor.Reset,\r\n workflowPhase: WorkflowPhase.Complete\r\n }));\r\n\r\n if (props.currentQueryParam)\r\n nextAppLink.params = { query: props.currentQueryParam };\r\n\r\n Core.AppLinkHelper.trigger(nextAppLink);\r\n\r\n dispatch({\r\n type: 'trigger-reset',\r\n payload: {}\r\n });\r\n };\r\n\r\n return (\r\n <DivButton\r\n onClick={onClickReset}\r\n className='hover-text-underline cursor-pointer d-flex align-items-center ml-2'\r\n >\r\n <Text namespace='search.resetButton' phrase='reset' />\r\n </DivButton>\r\n );\r\n}","import * as React from 'react';\r\nimport styles from './search-filters.scss';\r\n\r\ninterface PartialSearchFiltersProps {\r\n count?: number;\r\n hideHeading?: boolean;\r\n}\r\n\r\nexport function PartialSearchFilters({ count = 6, hideHeading }: PartialSearchFiltersProps): JSX.Element {\r\n return (\r\n <div className='d-flex'>\r\n {!hideHeading && (\r\n <div className={`\r\n ${styles.partialFilterHeading}\r\n partial-loading-background\r\n d-inline-block\r\n pr-2\r\n border-right\r\n d-flex\r\n align-items-center\r\n my-auto\r\n `} />\r\n )}\r\n\r\n <div className='d-flex pl-1'>\r\n {Array(count).fill(null).map((item, index) => (\r\n <div key={index} className={`${styles.partialButton} partial-loading-background mx-1`} />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\r\n\r\nimport { FilterButton, ResetButton } from 'apps/search/components';\r\nimport { FilterHelper } from 'apps/search/utils';\r\nimport { FilterReducer, FilterContext } from 'apps/search/reducers';\r\nimport { SearchFilter, MoreFilters } from 'apps/search/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\nimport { PropsWithAnalyticsOptions } from 'libs/shared/interfaces';\r\n\r\ntype SearchFiltersProps = PropsWithAnalyticsOptions<{\r\n queryParams: HashObject;\r\n mainFilters: SearchFilter[];\r\n moreFilters?: MoreFilters;\r\n hideHeading?: boolean;\r\n}>;\r\n\r\nexport function SearchFilters(props: SearchFiltersProps): JSX.Element {\r\n const { queryParams, mainFilters, moreFilters, hideHeading } = props;\r\n\r\n const initialState = React.useMemo(() => {\r\n return FilterHelper.deriveInitialStateFromQuery(queryParams, mainFilters, moreFilters);\r\n }, [queryParams]);\r\n\r\n const [ state, dispatch ] = React.useReducer(FilterReducer, initialState);\r\n\r\n React.useEffect(() => {\r\n if (!state.bulkReset)\r\n return;\r\n\r\n dispatch({\r\n type: 'bulk-reset',\r\n payload: FilterHelper.deriveInitialStateFromQuery({}, mainFilters, moreFilters) as any\r\n });\r\n }, [state]);\r\n\r\n return (\r\n <FilterContext.Provider value={{ state, dispatch }}>\r\n <LanguageNamespaceContext.Provider value='search.searchFilters'>\r\n <section className='d-flex'>\r\n {!hideHeading && (\r\n <h2 className='h5 mb-0 d-inline-block pr-2 border-right d-flex align-items-center'><Text phrase='heading' /></h2>\r\n )}\r\n\r\n <div className='d-flex'>\r\n {mainFilters.map(f => <FilterButton key={f.id} filter={f} analyticsOptions={props.analyticsOptions} />)}\r\n\r\n {moreFilters && (\r\n <FilterButton key={moreFilters.id} filter={moreFilters} analyticsOptions={props.analyticsOptions} />\r\n )}\r\n\r\n {FilterHelper.hasActiveFilters(queryParams) &&\r\n <ResetButton currentQueryParam={queryParams.query} analyticsOptions={props.analyticsOptions} />\r\n }\r\n </div>\r\n </section>\r\n </LanguageNamespaceContext.Provider>\r\n </FilterContext.Provider>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"partialFilterHeading\":\"cv--partialFilterHeading--2zHGT\",\"partialButton\":\"cv--partialButton--3Gy7Y\"};","import { createContext } from 'react';\r\n\r\nimport { ReducerActions } from 'libs/common/react/interfaces';\r\nimport { SearchFilter, FilterIds, FilterOption } from 'apps/search/interfaces';\r\n\r\nexport type FilterState = {\r\n active: boolean;\r\n selection?: FilterOption[];\r\n};\r\n\r\ntype FilterStateHashFilters = {\r\n [key in FilterIds]: FilterState\r\n};\r\n\r\nexport type FilterStateHash = FilterStateHashFilters & {\r\n bulkReset?: boolean;\r\n};\r\n\r\nexport type FilterActionType = 'apply' | 'reset' | 'bulk-reset' | 'trigger-reset';\r\n\r\nexport interface FilterPayloadType {\r\n filter: SearchFilter;\r\n active: boolean;\r\n selection?: FilterOption[];\r\n}\r\n\r\n/**\r\n * Context\r\n */\r\ninterface FilterContextType {\r\n state: FilterStateHash;\r\n dispatch: React.Dispatch<ReducerActions<FilterActionType>>;\r\n}\r\n\r\nexport const FilterContext = createContext<FilterContextType>(null);\r\n\r\n/**\r\n * Reducer - root level keys should match the filter object's corresponding \"id\" field\r\n */\r\nexport function FilterReducer(\r\n state: FilterStateHash,\r\n action: ReducerActions<FilterActionType, FilterPayloadType>\r\n): FilterStateHash {\r\n switch (action.type) {\r\n case 'apply':\r\n return {\r\n ...state,\r\n [action.payload.filter.id]: {\r\n active: action.payload.active,\r\n selection: action.payload.selection\r\n }\r\n };\r\n\r\n case 'reset':\r\n return {\r\n ...state,\r\n [action.payload.filter.id]: {\r\n active: action.payload.active,\r\n selection: action.payload.selection\r\n }\r\n };\r\n\r\n case 'trigger-reset':\r\n return {\r\n ...state,\r\n bulkReset: true\r\n };\r\n\r\n case 'bulk-reset':\r\n return {\r\n ...state,\r\n ...action.payload,\r\n bulkReset: false\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}","export * from './FilterReducer';","import * as React from 'react';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\r\n\r\nimport { SearchFilter, MoreFilters, FilterType, FilterProps, FilterOption, FilterIds } from 'apps/search/interfaces';\r\nimport { FilterStateHash, FilterPayloadType, FilterState } from 'apps/search/reducers';\r\nimport { SwitchFilter, RadioFilter, CheckboxFilter, DropdownFilter, YearLevelRadioFilter, MoreFilters as MoreFiltersComponent } from 'apps/search/components/filter-types';\r\nimport { MockYearLevel, MockClassroom } from 'apps/user-manager/interfaces';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('search.utils');\r\n\r\ninterface WithStatementObject {\r\n sortKey?: string;\r\n sortValue?: string;\r\n assocs?: string[];\r\n}\r\n\r\ntype FiltersDictionary = {\r\n [key: string]: (options?: any) => SearchFilter;\r\n};\r\n\r\nexport const Filters: FiltersDictionary = {\r\n SortByName: (options: FilterOption[]) => ({\r\n id: 'sortName',\r\n name: getPhrase('firstNameAToZ'),\r\n type: 'dropdown',\r\n options\r\n }),\r\n YearLevel: (options: FilterOption[]) => ({\r\n id: 'yearLevel', // \"name\" should match the state keys in `FilterReducer`\r\n name: getPhrase('yearLevel'),\r\n type: 'radio',\r\n customComponent: YearLevelRadioFilter,\r\n options\r\n }),\r\n ObjectType: (options: FilterOption[]) => ({\r\n id: 'objectType',\r\n name: getPhrase('objectTypes'),\r\n type: 'radio',\r\n options\r\n }),\r\n Ratings: (options: FilterOption[]) => ({\r\n id: 'ratings',\r\n name: getPhrase('ratings'),\r\n type: 'rating',\r\n options\r\n }),\r\n Interactives: () => ({\r\n id: 'interactives',\r\n name: getPhrase('interactives'),\r\n type: 'switch',\r\n description: getPhrase('interactivesDescription')\r\n }),\r\n Clips: () => ({\r\n id: 'clips',\r\n name: getPhrase('clips'),\r\n type: 'switch',\r\n description: getPhrase('clipsDescription')\r\n }),\r\n Classroom: (options: FilterOption[]) => ({\r\n id: 'classroom',\r\n name: getPhrase('classroom'),\r\n type: 'checkbox',\r\n options\r\n })\r\n};\r\n\r\nexport const FilterHelper = {\r\n getMoreFilters(): MoreFilters {\r\n return {\r\n id: 'moreFilters',\r\n name: getPhrase('moreFilters'),\r\n type: 'more-filters',\r\n filters: []\r\n };\r\n },\r\n\r\n mapTypeToComponent(type: FilterType): (props: FilterProps) => JSX.Element {\r\n switch (type) {\r\n case 'switch':\r\n return (props: any) => <SwitchFilter key={props.id} {...props} />;\r\n case 'checkbox':\r\n return (props: any) => <CheckboxFilter key={props.id} {...props} />;\r\n case 'radio':\r\n return (props: any) => <RadioFilter key={props.id} {...props} />;\r\n case 'rating':\r\n return (props: any) => <SwitchFilter key={props.id} {...props} />;\r\n case 'dropdown':\r\n return (props: any) => <DropdownFilter key={props.id} {...props} />;\r\n case 'more-filters':\r\n return (props: any) => <MoreFiltersComponent key={props.id} {...props} />;\r\n }\r\n },\r\n\r\n deriveInitialStateFromQuery(\r\n queryParams: HashObject = {},\r\n mainFilters: SearchFilter[] = null,\r\n moreFilters: MoreFilters = null\r\n ): FilterStateHash {\r\n const initialStates: FilterStateHash = {\r\n sortName: {\r\n active: !!queryParams.sortName,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'sortName')\r\n },\r\n\r\n objectType: {\r\n active: !!queryParams.objectType,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'objectType')\r\n },\r\n\r\n ratings: {\r\n active: !!queryParams.ratings,\r\n selection: queryParams.ratings || null\r\n },\r\n\r\n interactives: {\r\n active: queryParams.interactives\r\n },\r\n\r\n clips: {\r\n active: queryParams.clips\r\n },\r\n\r\n yearLevel: {\r\n active: !!queryParams.yearLevel,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'yearLevel')\r\n },\r\n\r\n classroom: {\r\n active: !!queryParams.classroom,\r\n selection: getFilterSelectionsFromQueryParams(queryParams, mainFilters, 'classroom')\r\n },\r\n\r\n moreFilters: {\r\n active: false // TODO: figure this shit out eventually\r\n }\r\n };\r\n\r\n const derivedState = mainFilters.reduce<FilterStateHash>((state: FilterStateHash, filter) => {\r\n state[filter.id] = initialStates[filter.id];\r\n return state;\r\n }, {} as FilterStateHash);\r\n\r\n if (moreFilters)\r\n derivedState.moreFilters = initialStates.moreFilters;\r\n\r\n return derivedState;\r\n },\r\n\r\n hasActiveFilters(queryParams: HashObject): boolean {\r\n const paramKeys = Object.keys(queryParams);\r\n\r\n if (!paramKeys.length)\r\n return false;\r\n\r\n const activeFilters = paramKeys.filter(q => {\r\n // 'query', 'cursor', and 'page' don't count as filters\r\n if (q === 'query' || q === 'cursor' || q === 'page')\r\n return false;\r\n\r\n // Filters that can have multiple selections (e.g. checkbox types) do not count as active if they are empty\r\n if (Array.isArray(queryParams[q]) && !queryParams[q].length)\r\n return false;\r\n\r\n return true;\r\n });\r\n\r\n return !!activeFilters.length;\r\n },\r\n\r\n getLabel(filter: SearchFilter, filterState: FilterState): string {\r\n if (!filterState.selection?.length)\r\n return filter.name;\r\n\r\n if (filter.type === 'dropdown')\r\n return ArrayHelper.first(filterState.selection).name;\r\n\r\n if (filter.type === 'radio') {\r\n const selection = ArrayHelper.first(filterState.selection);\r\n if (!selection || selection.default)\r\n return filter.name;\r\n\r\n return selection.name;\r\n }\r\n\r\n if (filter.type === 'checkbox')\r\n return `${filter.name} - ${filterState.selection.length}`;\r\n },\r\n\r\n buildQueryParams(queryParams: HashObject, state: FilterPayloadType): HashObject {\r\n const { id: param, type } = state.filter;\r\n\r\n const updatedParams = { ...queryParams };\r\n\r\n switch (type) {\r\n case 'switch':\r\n updatedParams[param] = state.active ? 'true' : '';\r\n break;\r\n\r\n case 'radio':\r\n case 'dropdown':\r\n updatedParams[param] = getRadioParamValue(state.selection);\r\n break;\r\n\r\n case 'checkbox':\r\n updatedParams[param] = state.active ? state.selection.map(option => option.id) : [];\r\n }\r\n\r\n if (!updatedParams[param]) // If the param is empty, delete it\r\n delete updatedParams[param];\r\n\r\n return updatedParams;\r\n },\r\n\r\n /**\r\n * This returns an object of all of the query params our search requests will pass to the backend endpoint.\r\n * This usually consists of:\r\n * q = the query string e.g. 'shakespeare'\r\n * filter = the filter string e.g. '{interactives:true,classroom:classroom-2-a,classroom:classroom-2-b}'\r\n * query = the with statement e.g. '{orderbydesc:name}series,season,interactives,resources,subtitles'\r\n * cursor = the cursor e.g. 's-sf3r9o32f-0vd'\r\n */\r\n getBackendQueryParams(queryParams: HashObject): HashObject {\r\n const q = queryParams.query;\r\n const query = getWithStatement(queryParams);\r\n const filter = getFilterString(queryParams);\r\n\r\n const backendQueryParams: HashObject = {};\r\n\r\n if (q)\r\n backendQueryParams.q = q;\r\n\r\n if (query)\r\n backendQueryParams.query = query;\r\n\r\n if (filter)\r\n backendQueryParams.filter = `{${filter}}`;\r\n\r\n if (queryParams.cursor)\r\n backendQueryParams.cursor = queryParams.cursor;\r\n\r\n return backendQueryParams;\r\n },\r\n\r\n /**\r\n * This functions purpose is to convert a with statement string into an object that is easy to use\r\n * in mock backends for sorting/filtering mock data. It doesn't need to be efficient, as it should\r\n * never ever be used in production\r\n */\r\n convertWithStatementToObject(withStatement: string): WithStatementObject {\r\n if (!withStatement)\r\n return {};\r\n\r\n // Remove any angle brackets with commas, which we use in `.split` just below\r\n withStatement = withStatement.replace('{', ',').replace('}', ',');\r\n\r\n const withStatements = withStatement.split(',');\r\n\r\n let sortingStatement: string = '';\r\n let assocStatements: string[] = [];\r\n\r\n withStatements.forEach(statement => {\r\n if (statement.includes(':'))\r\n sortingStatement = statement;\r\n else\r\n assocStatements.push(statement);\r\n });\r\n\r\n const [ sortKey, sortValue ] = sortingStatement.split(':');\r\n\r\n return {\r\n assocs: assocStatements,\r\n sortKey,\r\n sortValue\r\n };\r\n },\r\n\r\n // This is used for filtering data in mock flight requests. It shouldn't be used in production code\r\n revertFilterString(filterString: string): HashObject {\r\n if (!filterString)\r\n return {};\r\n\r\n // Remove \"{\" and \"}\" from both ends\r\n filterString = filterString.slice(1, -1);\r\n\r\n // Get an array of all of our filter values:\r\n // E.g. [ 'yearLevel:year-2', 'classroom:classroom-2-a', 'classroom-2-b', 'classroom-2-c' ]\r\n const filterValues = filterString.split(',');\r\n\r\n const keyValueFilterStrings: string[] = [];\r\n\r\n let currentFilterKey = '';\r\n filterValues.forEach(filterStr => {\r\n // Here we're building an array that looks like `filterValues`, but where every value has its key attached\r\n // E.g. [ 'yearLevel:year-2', 'classroom:classroom-2-a', 'classroom:classroom-2-b', 'classroom:classroom-2-c' ]\r\n\r\n if (filterStr.includes(':')) {\r\n currentFilterKey = filterStr.split(':')[0];\r\n keyValueFilterStrings.push(filterStr);\r\n return;\r\n }\r\n\r\n const fullFilterString = `${currentFilterKey}:${filterStr}`;\r\n keyValueFilterStrings.push(fullFilterString);\r\n });\r\n\r\n // Convert the array into an object.\r\n // E.g. { yearLevel: 'year-2', classroom: [ 'classroom-2-a', 'classroom-2-b', 'classroom-2-c' ] }\r\n return keyValueFilterStrings.reduce((filterObj: HashObject, filterStr) => {\r\n const [ key, value ] = filterStr.split(':');\r\n\r\n if (filterObj[key] && !Array.isArray(filterObj[key])) {\r\n const temp = filterObj[key];\r\n filterObj[key] = [temp];\r\n }\r\n\r\n if (Array.isArray(filterObj[key]))\r\n filterObj[key].push(value);\r\n else\r\n filterObj[key] = value;\r\n\r\n return filterObj;\r\n }, {});\r\n },\r\n\r\n /**\r\n * Helpers below this comment return hard coded filter options for a particular filter.\r\n * If you are adding a new filter with hard coded options, add a new function here.\r\n */\r\n getObjectTypeOptions(): FilterOption[] {\r\n return [\r\n {\r\n id: 'allTypes',\r\n name: getPhrase('allTypes'),\r\n default: true\r\n },\r\n {\r\n id: 'topics',\r\n name: getPhrase('topics')\r\n },\r\n {\r\n id: 'playlists',\r\n name: getPhrase('playlists')\r\n },\r\n {\r\n id: 'series',\r\n name: getPhrase('series')\r\n },\r\n {\r\n id: 'videos',\r\n name: getPhrase('videos')\r\n }\r\n ];\r\n },\r\n\r\n getNameSortOptions(): FilterOption[] {\r\n return [\r\n {\r\n id: 'first-name-atoz',\r\n name: getPhrase('firstNameAToZ'),\r\n default: true\r\n },\r\n {\r\n id: 'first-name-ztoa',\r\n name: getPhrase('firstNameZToA')\r\n },\r\n {\r\n id: 'surname-atoz',\r\n name: getPhrase('surnameAToZ')\r\n },\r\n {\r\n id: 'surname-ztoa',\r\n name: getPhrase('surnameZToA')\r\n }\r\n ];\r\n },\r\n\r\n getYearLevelOptions(yearLevels: MockYearLevel[]): FilterOption[] {\r\n if (!yearLevels?.length)\r\n return [];\r\n\r\n return yearLevels.map(level => ({\r\n id: level.name.toLowerCase().replace(' ', '-'),\r\n name: level.name\r\n }));\r\n },\r\n\r\n getClassroomOptions(classrooms: MockClassroom[]): FilterOption[] {\r\n if (!classrooms?.length)\r\n return [];\r\n\r\n return classrooms.map(classroom => ({\r\n id: classroom.name.toLowerCase().replace(' ', '-'),\r\n name: classroom.name\r\n }));\r\n }\r\n};\r\n\r\n// This allows us to determine which filters should be applied based on the query params set on first load\r\nfunction getFilterSelectionsFromQueryParams(\r\n queryParams: HashObject,\r\n filters: SearchFilter[],\r\n filterName: FilterIds\r\n): FilterOption[] {\r\n const filter = filters.find(f => f.id === filterName);\r\n\r\n if (!filter)\r\n return [];\r\n\r\n if (!queryParams[filterName])\r\n return filter.options.filter(option => option.default);\r\n\r\n let selections = queryParams[filterName];\r\n if (!Array.isArray(selections))\r\n selections = [selections];\r\n\r\n return filter.options.filter(option => selections.includes(option.id));\r\n}\r\n\r\nfunction getRadioParamValue(selection: FilterOption[]): string {\r\n if (!selection?.length)\r\n return '';\r\n\r\n return ArrayHelper.first(selection).id;\r\n}\r\n\r\n/**\r\n * This is massively under developed, and only does what it's needed for at this time.\r\n * Please update if you need extra functionality\r\n */\r\nfunction getWithStatement(queryParams: HashObject): string {\r\n let withStatement = '';\r\n\r\n if (queryParams['sortName']) {\r\n switch (queryParams['sortName']) {\r\n case 'first-name-atoz':\r\n withStatement += '{orderby:name}';\r\n break;\r\n\r\n case 'first-name-ztoa':\r\n withStatement += '{orderbydesc:name}';\r\n break;\r\n\r\n case 'surname-atoz':\r\n withStatement += '{orderby:surname}';\r\n break;\r\n\r\n case 'surname-ztoa':\r\n withStatement += '{orderbydesc:surname}';\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return withStatement;\r\n}\r\n\r\n/**\r\n * Private functions\r\n */\r\n\r\nfunction getFilterString(queryParams: HashObject): string {\r\n // Add any potential query params here that are not supposed to be in the filter string\r\n const omitKeys = [ 'query', 'sortName', 'cursor', 'page' ];\r\n\r\n const filterQueryParams = ObjectHelper.omit(queryParams, omitKeys);\r\n\r\n const filterStrings = Object.keys(filterQueryParams).map(filter => {\r\n return `${filter}:${filterQueryParams[filter]}`;\r\n });\r\n\r\n return filterStrings.join(',');\r\n}","import * as React from 'react';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\r\n\r\nimport { Video, Series, Playlist, PresentationAudience } from 'libs/shared/interfaces';\r\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\r\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\r\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget/FixedWidget';\r\nimport { PlaylistWidgetItem } from 'libs/shared/components/widgets/items/playlist-widget-item/PlaylistWidgetItem';\r\nimport { SeriesWidgetItem } from 'libs/shared/components/widgets/items/series-widget-item/SeriesWidgetItem';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { Actions } from 'shared/constants/LiteActions';\r\nimport { SearchResults, MainSearchResults, OtherSearchResultSet, OtherSearchResults } from 'apps/search/interfaces';\r\n\r\nconst Capacities = {\r\n MainResults: {\r\n SUBJECTS: 10,\r\n PLAYLISTS: 5,\r\n SERIES: 4\r\n },\r\n\r\n OtherResults: {\r\n VIDEOS: 6,\r\n PLAYLISTS: 10,\r\n SERIES: 10\r\n }\r\n};\r\n\r\nexport const SearchHelper = {\r\n /**\r\n * These are the results that appear at the very top of the page\r\n */\r\n filterMainResults(results: SearchResults): MainSearchResults {\r\n const { MainResults } = Capacities;\r\n\r\n const subjects = ArrayHelper.firstFew(results.subjects, MainResults.SUBJECTS);\r\n const firstVideo = ArrayHelper.first(results.videos);\r\n const playlists = ArrayHelper.firstFew(results.playlists, MainResults.PLAYLISTS);\r\n const series = ArrayHelper.firstFew(results.series, MainResults.SERIES);\r\n\r\n return {\r\n subjects,\r\n firstVideo,\r\n playlists,\r\n series,\r\n otherResults: { // All excess results are displayed in a different format defined below\r\n videos: ArrayHelper.lastFew(results.videos, results.videos.length - 1),\r\n playlists: ArrayHelper.lastFew(results.playlists, results.playlists.length - MainResults.PLAYLISTS),\r\n series: ArrayHelper.lastFew(results.series, results.series.length - MainResults.SERIES)\r\n }\r\n };\r\n },\r\n\r\n structureOtherResults(results: OtherSearchResults): OtherSearchResultSet[] {\r\n const { OtherResults } = Capacities;\r\n\r\n const videoSets = ArrayHelper.chunk<Video>(results.videos, OtherResults.VIDEOS);\r\n const playlistSets = ArrayHelper.chunk<Playlist>(results.playlists, OtherResults.PLAYLISTS);\r\n const seriesSets = ArrayHelper.chunk<Series>(results.series, OtherResults.SERIES);\r\n\r\n return SearchHelper.buildResultStructure(videoSets, playlistSets, seriesSets);\r\n },\r\n\r\n // For every 6 videos, there should be either a row of playlists or a row of series (alternating)\r\n buildResultStructure(\r\n videoSets: Video[][],\r\n playlistSets: Playlist[][],\r\n seriesSets: Series[][]\r\n ): OtherSearchResultSet[] {\r\n const structure: OtherSearchResultSet[] = [];\r\n\r\n // Clone each set as we need to use a mutable structure, but don't want to mutate the inputs directly\r\n const videosClone = [...videoSets];\r\n const playlistsClone = [...playlistSets];\r\n const seriesClone = [...seriesSets];\r\n\r\n // We set the iterations here instead of in the for-loop args because `videoSets` gets mutated\r\n const iterations = videoSets.length;\r\n for (let index = 0; index < iterations; index++) {\r\n const nextVideoSet = videosClone.shift();\r\n\r\n // After every video set will come a set of playlists or series\r\n const seriesOrPlaylistSet = SearchHelper.getSeriesOrPlaylistSet(playlistsClone, seriesClone, index);\r\n\r\n nextVideoSet && structure.push({ type: 'video', data: nextVideoSet });\r\n seriesOrPlaylistSet && structure.push(seriesOrPlaylistSet);\r\n }\r\n\r\n // In edge cases where there may be more playlists or series result sets than video sets, add them to the end\r\n if (playlistsClone.length) {\r\n playlistsClone.forEach(data => structure.push({ type: 'playlist', data }));\r\n }\r\n\r\n if (seriesClone.length) {\r\n seriesClone.forEach(data => structure.push({ type: 'series', data }));\r\n }\r\n\r\n // Remove any empty sets\r\n return structure.filter(set => set.data && !!set.data.length);\r\n },\r\n\r\n /**\r\n * Determines whether or not a playlist or series set should be added to the results structure next.\r\n */\r\n getSeriesOrPlaylistSet(playlists: Playlist[][], series: Series[][], videoSetIndex: number): OtherSearchResultSet {\r\n const isOdd = videoSetIndex % 2 === 0; // If odd, add a series set. If even, add a playlist set.\r\n\r\n if ((isOdd && series.length) || !playlists.length)\r\n return { type: 'series', data: series.shift() };\r\n\r\n if ((!isOdd && playlists.length) || !series.length)\r\n return { type: 'playlist', data: playlists.shift() };\r\n\r\n // We will only reach this point once we have run out of series and playlist results\r\n return null;\r\n },\r\n\r\n getResultSetComponent(\r\n set: OtherSearchResultSet,\r\n audiences: PresentationAudience[],\r\n setFavourite?: (videoId: string, shouldFavourite: boolean, onError?: () => void) => void\r\n ): JSX.Element {\r\n switch (set.type) {\r\n case 'video':\r\n return (\r\n <div className='pb-3'>\r\n <VideoList\r\n videos={set.data as Video[]}\r\n getVideoAppLink={SearchHelper.getVideoAppLink}\r\n getSeriesAppLink={SearchHelper.getSeriesAppLink}\r\n setFavourite={setFavourite}\r\n />\r\n </div>\r\n );\r\n\r\n case 'playlist':\r\n return (\r\n <div className='mx-n1'>\r\n <FixedWidget\r\n name={LanguageService.getPhrase('search.searchResults', 'relatedPlaylists')}\r\n collection={set.data as Playlist[]}\r\n childAppLink={SearchHelper.getPlaylistAppLink()}\r\n childComponent={(childProps: any) => (\r\n <PlaylistWidgetItem\r\n {...childProps}\r\n presentationAudiences={audiences}\r\n />\r\n )}\r\n contents={WidgetContents.Playlists}\r\n />\r\n </div>\r\n );\r\n\r\n case 'series':\r\n return (\r\n <div className='mx-n1'>\r\n <FixedWidget\r\n name={LanguageService.getPhrase('search.searchResults', 'relatedSeries')}\r\n collection={set.data}\r\n childAppLink={SearchHelper.getSeriesAppLink()}\r\n childComponent={(childProps: any) => (\r\n <SeriesWidgetItem\r\n {...childProps}\r\n audiences={audiences}\r\n />\r\n )}\r\n contents={WidgetContents.Series}\r\n />\r\n </div>\r\n );\r\n }\r\n },\r\n\r\n getVideoAppLink(video: Video): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: 'play:video', // TODO: Change to constant\r\n args: [video.id]\r\n };\r\n },\r\n\r\n getSeriesAppLink(series?: Series): Core.AppLink {\r\n return {\r\n application: AppChannels.DEFAULT,\r\n action: Actions.Default.SERIES,\r\n args: series ? [ series.id, TextHelper.slugify(series.name) ] : []\r\n };\r\n },\r\n\r\n getPlaylistAppLink(playlist?: Playlist): Core.AppLink {\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLIST,\r\n args: playlist ? [ playlist.id, TextHelper.slugify(playlist.name) ] : []\r\n };\r\n },\r\n};","export * from './FilterHelper';\r\nexport * from './SearchHelper';","import React from 'react';\r\nimport { parse, ParseResult } from 'papaparse';\r\n\r\nimport { useViewModel } from 'libs/common/react/hooks/useViewModel';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\r\n\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\nimport { Core } from 'libs/common/core';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\r\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\r\n\r\nimport { MockYearLevel, MockUserRole } from 'apps/user-manager/interfaces';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\nconst namespace = 'userManager.bulkUploadFileSelect';\r\n\r\ninterface BulkUploadFileSelectProps {\r\n action: string;\r\n userType: MockUserType;\r\n userRoles?: MockUserRole[];\r\n yearLevels?: MockYearLevel[];\r\n}\r\n\r\nexport function BulkUploadFileSelect(props: BulkUploadFileSelectProps): React.ReactElement {\r\n const ref = React.useRef(null);\r\n const useRef = React.useCallback(node => {\r\n if (!node)\r\n return;\r\n\r\n ref.current = node;\r\n }, []);\r\n\r\n const viewModelKey = props.userType === MockUserType.Student\r\n ? ViewModelKeys.BULK_STUDENT_UPLOAD\r\n : ViewModelKeys.BULK_TEACHER_UPLOAD;\r\n\r\n const [ , setUsers ] = useViewModel(viewModelKey);\r\n\r\n const alerts = useAlerts();\r\n\r\n const buildStudent = (r: HashObject, index: number): HashObject => {\r\n const yearLevel = props.yearLevels.find(y => y.name === r[2]);\r\n\r\n return {\r\n lookupId: index.toString(),\r\n name: r[0],\r\n surname: r[1],\r\n yearLevel,\r\n email: r[3]\r\n };\r\n };\r\n\r\n const buildTeacher = (r: HashObject, index: number): HashObject => {\r\n const userRole = props.userRoles.find(y => y.name === r[2]);\r\n\r\n // TODO: Change to actually work\r\n return {\r\n lookupId: index.toString(),\r\n name: r[0],\r\n surname: r[1],\r\n userRole,\r\n email: r[3]\r\n };\r\n };\r\n\r\n const onClick = (e: React.MouseEvent) => {\r\n ref.current.value = null;\r\n ref.current.click(null);\r\n };\r\n\r\n const onChange = (file: File) => {\r\n parse(file, {\r\n complete: (result: ParseResult) => {\r\n const data = result.data;\r\n\r\n if (!data.length || data.length === 1) {\r\n alerts.warning(LanguageService.getPhrase(namespace, 'emptyCsvWarning'));\r\n return;\r\n }\r\n\r\n data.shift();\r\n\r\n setUsers(data.map(props.userType === MockUserType.Student ? buildStudent : buildTeacher));\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.USER_MANAGER,\r\n action: props.action\r\n });\r\n }\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n <IconButton\r\n svgName={cvSvgLibrary.Upload}\r\n className='btn btn-outline-dark'\r\n onClick={onClick}\r\n >\r\n <Text namespace={namespace} phrase='button' />\r\n </IconButton>\r\n\r\n <input\r\n type='file'\r\n autoComplete='off'\r\n className='file-select d-none'\r\n accept='text/csv'\r\n ref={useRef}\r\n onChange={e => onChange(e.target.files[0])}\r\n />\r\n </>\r\n );\r\n}","import React from 'react';\r\nimport { FormikErrors, FormikTouched } from 'formik';\r\n\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\n\r\nimport { EditUserRequest, MockYearLevel, MockStudent } from 'apps/user-manager/interfaces';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\nimport { getStudentValidationSchema } from 'apps/user-manager/validation/user-validation/UserValidationSchema';\r\nimport { UserDetailsForm } from 'apps/user-manager/components/user-details-form/UserDetailsForm';\r\n\r\nexport interface EditStudentDetailsProps {\r\n user?: MockStudent;\r\n saveUser: (data: EditUserRequest) => void;\r\n onClickCancel: () => void;\r\n yearLevels: MockYearLevel[];\r\n initialErrors?: FormikErrors<EditUserRequest>;\r\n hasNext?: boolean;\r\n}\r\n\r\nexport function EditStudentDetails(props: EditStudentDetailsProps): React.ReactElement {\r\n const { user, saveUser, onClickCancel, yearLevels, hasNext = false, initialErrors = {} } = props;\r\n\r\n const initialValues: EditUserRequest = {\r\n id: user?.id,\r\n name: user?.name,\r\n email: user?.email,\r\n surname: user?.surname,\r\n yearLevel: {\r\n id: user?.yearLevel?.id,\r\n name: user?.yearLevel?.name\r\n }\r\n };\r\n\r\n const initialTouched: FormikTouched<EditUserRequest> = {};\r\n Object.keys(initialErrors).forEach((err: keyof EditUserRequest) => {\r\n initialTouched[err] = true;\r\n });\r\n\r\n const StudentValidationSchema = getStudentValidationSchema(yearLevels);\r\n\r\n return (\r\n <FormWrapper<EditUserRequest>\r\n initialValues={initialValues}\r\n initialErrors={initialErrors}\r\n initialTouched={initialTouched}\r\n validationSchema={StudentValidationSchema}\r\n onSubmit={saveUser}\r\n >\r\n <UserDetailsForm\r\n onClickCancel={onClickCancel}\r\n yearLevels={yearLevels}\r\n userType={MockUserType.Student}\r\n hasNext={hasNext}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import React from 'react';\r\nimport { FormikErrors, FormikTouched } from 'formik';\r\n\r\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { EditUserRequest, MockUserRole, MockTeacher } from 'apps/user-manager/interfaces';\r\nimport { getTeacherValidationSchema } from 'apps/user-manager/validation/user-validation/UserValidationSchema';\r\nimport { UserDetailsForm } from 'apps/user-manager/components/user-details-form/UserDetailsForm';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\nexport interface EditTeacherDetailsProps {\r\n user?: MockTeacher;\r\n saveUser: (data: EditUserRequest) => void;\r\n onClickCancel: () => void;\r\n userRoles: MockUserRole[];\r\n initialErrors?: FormikErrors<EditUserRequest>;\r\n hasNext?: boolean;\r\n}\r\n\r\nexport function EditTeacherDetails(props: EditTeacherDetailsProps): React.ReactElement {\r\n const { user, saveUser, onClickCancel, userRoles, hasNext = false, initialErrors = {} } = props;\r\n\r\n const initialValues: EditUserRequest = {\r\n id: user?.id,\r\n name: user?.name,\r\n email: user?.email,\r\n surname: user?.surname,\r\n userRole: {\r\n id: user?.userRole?.id,\r\n name: user?.userRole?.name\r\n }\r\n };\r\n\r\n const initialTouched: FormikTouched<EditUserRequest> = {};\r\n Object.keys(initialErrors).forEach((err: keyof EditUserRequest) => {\r\n initialTouched[err] = true;\r\n });\r\n\r\n const TeacherValidationSchema = getTeacherValidationSchema(userRoles);\r\n\r\n return (\r\n <FormWrapper<EditUserRequest>\r\n initialValues={initialValues}\r\n initialErrors={initialErrors}\r\n initialTouched={initialTouched}\r\n validationSchema={TeacherValidationSchema}\r\n onSubmit={saveUser}\r\n >\r\n <UserDetailsForm\r\n onClickCancel={onClickCancel}\r\n userRoles={userRoles}\r\n userType={MockUserType.Teacher}\r\n hasNext={hasNext}\r\n />\r\n </FormWrapper>\r\n );\r\n}","export * from './user-details-form/UserDetailsForm';\r\nexport * from './year-level-select/YearLevelSelect';\r\nexport * from './edit-student-details/EditStudentDetails';\r\nexport * from './edit-teacher-details/EditTeacherDetails';\r\nexport * from './bulk-upload-file-select/BulkUploadFileSelect';","import * as React from 'react';\r\nimport { Form } from 'formik';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\r\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\r\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\r\nimport { EditUserRequest, MockYearLevel, MockUserRole } from 'apps/user-manager/interfaces';\r\nimport { YearLevelSelect } from 'apps/user-manager/components/year-level-select/YearLevelSelect';\r\nimport { MockUserType } from 'apps/user-manager/enums';\r\n\r\n/**\r\n * This file uses 3 *.lang.json files.\r\n * - One for generic values\r\n * - One for student specific values\r\n * - One for teacher specific values\r\n */\r\nconst namespace = 'userManager.userDetailsForm';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\ninterface UserDetailsFormProps {\r\n onClickCancel: () => void;\r\n yearLevels?: MockYearLevel[];\r\n userRoles?: MockUserRole[];\r\n userType: MockUserType;\r\n hasNext?: boolean;\r\n}\r\n\r\nexport function UserDetailsForm(props: UserDetailsFormProps): React.ReactElement {\r\n const { onClickCancel, yearLevels, userRoles, userType } = props;\r\n\r\n const formikProps = useFormikContextWrapper<EditUserRequest>();\r\n\r\n const getTreeSelectClassName = (field: keyof EditUserRequest) => FormHelper.getCustomFormControlClassName(\r\n formikProps.errors,\r\n formikProps.touched,\r\n field,\r\n 'revert-form-control h-auto'\r\n );\r\n\r\n const getTypePhrase = LanguageService.encloseNamespace(\r\n userType === MockUserType.Teacher ? 'userManager.teacherDetailsForm' : 'userManager.studentDetailsForm'\r\n );\r\n\r\n return (\r\n <Form>\r\n <FormField\r\n label={getPhrase('firstName')}\r\n type='text'\r\n name='name'\r\n id='name'\r\n placeholder={getTypePhrase('firstNamePlaceholder')}\r\n autoFocus\r\n value={formikProps.values.name}\r\n />\r\n <FormField\r\n label={getPhrase('lastName')}\r\n type='text'\r\n name='surname'\r\n id='surname'\r\n placeholder={getTypePhrase('lastNamePlaceholder')}\r\n value={formikProps.values.surname}\r\n />\r\n {yearLevels &&\r\n <FormField\r\n name='yearLevel'\r\n label={getPhrase('yearLevel')}\r\n >\r\n {() => (\r\n <div className={getTreeSelectClassName('yearLevel')}>\r\n <YearLevelSelect\r\n yearLevels={yearLevels}\r\n selected={formikProps.values.yearLevel}\r\n onSelect={(yearLevel: MockYearLevel) => formikProps.setFieldValue('yearLevel', yearLevel)}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n }\r\n {userRoles &&\r\n <FormField\r\n label={getPhrase('userRole')}\r\n name='userRole'\r\n as='select'\r\n onChange={(e: any) => {\r\n const roleObj = props.userRoles.find(r => r.id === e.target.value);\r\n formikProps.setFieldValue('userRole', roleObj);\r\n }}\r\n value={formikProps.values.userRole.id}\r\n >\r\n {userRoles.map(r => <option key={r.id} value={r.id}>{r.name}</option>)}\r\n </FormField>\r\n }\r\n <FormField\r\n label={getPhrase('emailAddress')}\r\n type='text'\r\n name='email'\r\n id='email'\r\n placeholder={getTypePhrase('emailAddressPlaceholder')}\r\n value={formikProps.values.email}\r\n />\r\n <div className='btn-container d-flex justify-content-end'>\r\n <button type='button' className={`btn btn-link mr-2`} onClick={onClickCancel}>\r\n <Text namespace={namespace} phrase='cancel' />\r\n </button>\r\n <FormButtons isNew={false} hasNext={props.hasNext} />\r\n </div>\r\n </Form>\r\n );\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { MockYearLevel } from 'apps/user-manager/interfaces';\r\n\r\ninterface YearLevelProps {\r\n yearLevel: MockYearLevel;\r\n selected: boolean;\r\n onSelect: (yearLevel: MockYearLevel) => void;\r\n}\r\n\r\nfunction YearLevel(props: YearLevelProps): React.ReactElement {\r\n const { yearLevel, selected, onSelect } = props;\r\n\r\n const className = selected ? 'badge-info' : 'badge-light';\r\n\r\n return (\r\n <span\r\n className={`badge-pill d-inline-block mr-1 mb-1 cursor-pointer ${className}`}\r\n role='radio'\r\n aria-checked={selected}\r\n onClick={() => onSelect(yearLevel)}\r\n >\r\n {yearLevel.name}\r\n </span>\r\n );\r\n}\r\n\r\ninterface YearLevelSelectProps {\r\n yearLevels: MockYearLevel[];\r\n onSelect: (yearLevel: MockYearLevel) => void;\r\n selected?: MockYearLevel;\r\n}\r\n\r\nexport function YearLevelSelect(props: YearLevelSelectProps): React.ReactElement {\r\n const { yearLevels, selected, onSelect } = props;\r\n\r\n return (\r\n <div role='radiogroup'>\r\n {yearLevels.map(y =>\r\n <YearLevel\r\n key={y.id}\r\n yearLevel={y}\r\n selected={y.id.toString() === selected?.id?.toString()}\r\n onSelect={onSelect}\r\n />\r\n )}\r\n </div>\r\n );\r\n}","export * from './mocks/MockUserType';","export enum MockUserType {\r\n Student = 'student',\r\n Teacher = 'teacher'\r\n}","import { object, string } from 'yup';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { MockYearLevel, MockUserRole } from 'apps/user-manager/interfaces';\r\n\r\nconst getPhrase = LanguageService.encloseNamespace('userManager.userValidation');\r\n\r\nconst UserValidationSchema = object().shape({\r\n name: string()\r\n .max(255, () => getPhrase('nameExceeds'))\r\n .required(() => getPhrase('nameRequired'))\r\n .default(''),\r\n surname: string()\r\n .max(255, () => getPhrase('surnameExceeds'))\r\n .required(() => getPhrase('surnameRequired'))\r\n .default(''),\r\n email: string()\r\n .max(255, () => getPhrase('emailExceeds'))\r\n .required(() => getPhrase('emailRequired'))\r\n .email(() => getPhrase('emailValid'))\r\n .default('')\r\n});\r\n\r\nexport const getTeacherValidationSchema = (userRoles: MockUserRole[]) => UserValidationSchema.shape({\r\n userRole: object().shape({\r\n name: string()\r\n .required(() => getPhrase('userRoleRequired'))\r\n .oneOf(userRoles.map(r => r.name), () => getPhrase('userRoleInvalid'))\r\n .default('')\r\n })\r\n});\r\n\r\nexport const getStudentValidationSchema = (yearLevels: MockYearLevel[]) => UserValidationSchema.shape({\r\n yearLevel: object().shape({\r\n name: string()\r\n .required(() => getPhrase('yearLevelRequired'))\r\n .oneOf(yearLevels.map(y => y.name), () => getPhrase('yearLevelInvalid'))\r\n .default('')\r\n })\r\n});","import React from 'react';\r\n\r\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\r\ninterface CheckboxItemsState {\r\n [id: string]: boolean;\r\n}\r\n\r\ninterface BulkCheckboxManagerOptions {\r\n preselectedIds?: string[]; // An array of ids of objects whose checkboxes are checked by default\r\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\r\n}\r\n\r\n/**\r\n * @param collection - The collection you are keeping track of with checkboxes\r\n * @param options - See interface above\r\n */\r\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\r\n const [ bulkChecked, setBulkChecked ] = React.useState(false);\r\n const [ items, setItems ] = React.useState<CheckboxItemsState>({});\r\n\r\n const { idField = 'id' } = options;\r\n\r\n React.useEffect(() => {\r\n if (!collection?.length)\r\n return;\r\n\r\n const newItemState = collection.reduce<CheckboxItemsState>((stateObj: CheckboxItemsState, item: HashObject) => {\r\n let checkboxState = false;\r\n\r\n if (options?.preselectedIds?.includes(item[idField]))\r\n checkboxState = true;\r\n\r\n const id = item[idField];\r\n stateObj[id] = checkboxState;\r\n\r\n return stateObj;\r\n }, {});\r\n\r\n setItems(newItemState);\r\n }, [collection]);\r\n\r\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\r\n function onToggleBulk(): void {\r\n const nextState = !bulkChecked;\r\n\r\n setBulkChecked(nextState);\r\n\r\n const newItemsState = collection.reduce<CheckboxItemsState>((stateObj: CheckboxItemsState, item: HashObject) => {\r\n stateObj[item[idField]] = nextState;\r\n return stateObj;\r\n }, {});\r\n\r\n setItems(newItemsState);\r\n }\r\n\r\n // Toggles a single item\r\n function onToggleItem(id: string): void {\r\n const nextItemState = !items[id];\r\n\r\n const nextState = {\r\n ...items,\r\n [id]: nextItemState\r\n };\r\n setItems(nextState);\r\n\r\n /**\r\n * Keep the bulk checkbox in sync with all of the other checkboxes\r\n */\r\n const totalItemsSelected = Object.keys(nextState).filter(i => nextState[i]).length;\r\n if (totalItemsSelected === collection.length) {\r\n setBulkChecked(true);\r\n return;\r\n }\r\n\r\n if (!nextItemState && bulkChecked)\r\n setBulkChecked(false);\r\n }\r\n\r\n // Returns the state of the item passed in\r\n function isChecked(item: string | HashObject<string>): boolean {\r\n if (bulkChecked)\r\n return true;\r\n\r\n if (typeof item !== 'string')\r\n item = item[idField];\r\n\r\n return items[item];\r\n }\r\n\r\n function getSelected(): string[] {\r\n if (bulkChecked)\r\n return Object.keys(items);\r\n\r\n return Object.keys(items).filter(item => items[item]);\r\n }\r\n\r\n return { onToggleBulk, onToggleItem, getSelected, isChecked, bulkChecked };\r\n};"],"sourceRoot":""}
|