@openedx/frontend-app-gradebook 2.0.0-alpha.6 → 2.0.0-alpha.7

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.
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Link } from 'react-router-dom';
3
- import { resolveRouteByRole, useIntl } from '@openedx/frontend-base';
4
- import { Button } from '@openedx/paragon';
2
+ import { getLinkProps, resolveRouteByRole, useIntl } from '@openedx/frontend-base';
3
+ import { Button, Icon, Hyperlink } from '@openedx/paragon';
4
+ import { ArrowBackIos } from '@openedx/paragon/icons';
5
5
  import { instructorDashboardUrl } from '../../data/services/lms/urls';
6
6
  import { useGradebookNavigation } from '../../data/gradebookNavigationContext';
7
7
  import useGradebookHeaderData from './hooks';
@@ -19,19 +19,16 @@ export const GradebookHeader = () => {
19
19
  const dashboardRoute = (!onBack && courseId)
20
20
  ? resolveRouteByRole(instructorDashboardRole, { courseId })
21
21
  : null;
22
- const backLinkContent = (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": "true", children: '<< ' }), formatMessage(messages.backToDashboard)] }));
22
+ const backLinkContent = (_jsxs(_Fragment, { children: [_jsx(Icon, { src: ArrowBackIos, className: "mr-1", size: "sm" }), formatMessage(messages.backToDashboard)] }));
23
23
  const renderBackLink = () => {
24
24
  var _a;
25
25
  // Host-provided handler wins over URL navigation (e.g. CCX Coach tab).
26
26
  if (onBack) {
27
27
  return (_jsx(Button, { variant: "link", className: "mb-3 p-0", onClick: onBack, children: backLinkContent }));
28
28
  }
29
- if (dashboardRoute === null || dashboardRoute === void 0 ? void 0 : dashboardRoute.isInternal) {
30
- return _jsx(Link, { to: dashboardRoute.url, className: "mb-3", children: backLinkContent });
31
- }
32
- return _jsx("a", { href: (_a = dashboardRoute === null || dashboardRoute === void 0 ? void 0 : dashboardRoute.url) !== null && _a !== void 0 ? _a : instructorDashboardUrl(courseId), className: "mb-3", children: backLinkContent });
29
+ return (_jsx(Hyperlink, Object.assign({}, getLinkProps((_a = dashboardRoute === null || dashboardRoute === void 0 ? void 0 : dashboardRoute.url) !== null && _a !== void 0 ? _a : instructorDashboardUrl(courseId)), { className: "mb-3", children: backLinkContent })));
33
30
  };
34
- return (_jsxs("div", { className: "gradebook-header", children: [renderBackLink(), _jsx("h1", { children: formatMessage(messages.gradebook) }), _jsxs("div", { className: "subtitle-row d-flex justify-content-between align-items-center", children: [_jsx("h2", { className: "text-break", children: courseId }), showBulkManagement && (_jsx(Button, { variant: "tertiary", onClick: handleToggleViewClick, children: formatMessage(toggleViewMessage) }))] }), areGradesFrozen && (_jsx("div", { className: "alert alert-warning", role: "alert", children: formatMessage(messages.frozenWarning) })), (canUserViewGradebook === false) && (_jsx("div", { className: "alert alert-warning", role: "alert", children: formatMessage(messages.unauthorizedWarning) }))] }));
31
+ return (_jsxs("div", { className: "gradebook-header mt-2", children: [renderBackLink(), _jsx("h2", { className: "text-primary-500 mb-0", children: formatMessage(messages.gradebook) }), _jsx("p", { className: "small text-break mb-3", children: courseId }), _jsx("div", { className: "subtitle-row d-flex justify-content-between align-items-center", children: showBulkManagement && (_jsx(Button, { variant: "tertiary", onClick: handleToggleViewClick, children: formatMessage(toggleViewMessage) })) }), areGradesFrozen && (_jsx("div", { className: "alert alert-warning", role: "alert", children: formatMessage(messages.frozenWarning) })), (canUserViewGradebook === false) && (_jsx("div", { className: "alert alert-warning", role: "alert", children: formatMessage(messages.unauthorizedWarning) }))] }));
35
32
  };
36
33
  export default GradebookHeader;
37
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/GradebookHeader/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,sBAAsB,MAAM,SAAS,CAAC;AAC7C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,uBAAuB,GAAG,+CAA+C,CAAC;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EACJ,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,GAClB,GAAG,sBAAsB,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAC5C,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,yEAAyE;IACzE,uCAAuC;IACvC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;QAC1C,CAAC,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC;QAC3D,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,eAAe,GAAG,CACtB,8BACE,8BAAkB,MAAM,YAAE,KAAK,GAAQ,EACtC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,IACvC,CACJ,CAAC;IACF,MAAM,cAAc,GAAG,GAAG,EAAE;;QAC1B,uEAAuE;QACvE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CACL,KAAC,MAAM,IAAC,OAAO,EAAC,MAAM,EAAC,SAAS,EAAC,UAAU,EAAC,OAAO,EAAE,MAAM,YACxD,eAAe,GACT,CACV,CAAC;QACJ,CAAC;QACD,IAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,UAAU,EAAE,CAAC;YAC/B,OAAO,KAAC,IAAI,IAAC,EAAE,EAAE,cAAc,CAAC,GAAG,EAAE,SAAS,EAAC,MAAM,YAAE,eAAe,GAAQ,CAAC;QACjF,CAAC;QACD,OAAO,YAAG,IAAI,EAAE,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,GAAG,mCAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAC,MAAM,YAAE,eAAe,GAAK,CAAC;IAClH,CAAC,CAAC;IACF,OAAO,CACL,eAAK,SAAS,EAAC,kBAAkB,aAC9B,cAAc,EAAE,EACjB,uBAAK,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAM,EAC5C,eAAK,SAAS,EAAC,gEAAgE,aAC7E,aAAI,SAAS,EAAC,YAAY,YAAE,QAAQ,GAAM,EACzC,kBAAkB,IAAI,CACrB,KAAC,MAAM,IAAC,OAAO,EAAC,UAAU,EAAC,OAAO,EAAE,qBAAqB,YACtD,aAAa,CAAC,iBAAiB,CAAC,GAC1B,CACV,IACG,EACL,eAAe,IAAI,CAClB,cAAK,SAAS,EAAC,qBAAqB,EAAC,IAAI,EAAC,OAAO,YAC9C,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,GAClC,CACP,EACA,CAAC,oBAAoB,KAAK,KAAK,CAAC,IAAI,CACnC,cAAK,SAAS,EAAC,qBAAqB,EAAC,IAAI,EAAC,OAAO,YAC9C,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GACxC,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["import { Link } from 'react-router-dom';\n\nimport { resolveRouteByRole, useIntl } from '@openedx/frontend-base';\nimport { Button } from '@openedx/paragon';\n\nimport { instructorDashboardUrl } from '@src/data/services/lms/urls';\nimport { useGradebookNavigation } from '@src/data/gradebookNavigationContext';\nimport useGradebookHeaderData from './hooks';\nimport messages from './messages';\n\nconst instructorDashboardRole = 'org.openedx.frontend.role.instructorDashboard';\n\nexport const GradebookHeader = () => {\n const { formatMessage } = useIntl();\n const {\n areGradesFrozen,\n canUserViewGradebook,\n courseId,\n handleToggleViewClick,\n showBulkManagement,\n toggleViewMessage,\n } = useGradebookHeaderData();\n const { onBack } = useGradebookNavigation();\n // Prefer the instructor dashboard route if the running site provides one,\n // so navigation stays within the SPA; otherwise fall back to a full page\n // load of the legacy LMS dashboard. Skip resolving when the host provides\n // its own onBack or the courseId isn't ready — resolveRouteByRole throws\n // \"Missing :courseId param\" otherwise.\n const dashboardRoute = (!onBack && courseId)\n ? resolveRouteByRole(instructorDashboardRole, { courseId })\n : null;\n const backLinkContent = (\n <>\n <span aria-hidden=\"true\">{'<< '}</span>\n {formatMessage(messages.backToDashboard)}\n </>\n );\n const renderBackLink = () => {\n // Host-provided handler wins over URL navigation (e.g. CCX Coach tab).\n if (onBack) {\n return (\n <Button variant=\"link\" className=\"mb-3 p-0\" onClick={onBack}>\n {backLinkContent}\n </Button>\n );\n }\n if (dashboardRoute?.isInternal) {\n return <Link to={dashboardRoute.url} className=\"mb-3\">{backLinkContent}</Link>;\n }\n return <a href={dashboardRoute?.url ?? instructorDashboardUrl(courseId)} className=\"mb-3\">{backLinkContent}</a>;\n };\n return (\n <div className=\"gradebook-header\">\n {renderBackLink()}\n <h1>{formatMessage(messages.gradebook)}</h1>\n <div className=\"subtitle-row d-flex justify-content-between align-items-center\">\n <h2 className=\"text-break\">{courseId}</h2>\n {showBulkManagement && (\n <Button variant=\"tertiary\" onClick={handleToggleViewClick}>\n {formatMessage(toggleViewMessage)}\n </Button>\n )}\n </div>\n {areGradesFrozen && (\n <div className=\"alert alert-warning\" role=\"alert\">\n {formatMessage(messages.frozenWarning)}\n </div>\n )}\n {(canUserViewGradebook === false) && (\n <div className=\"alert alert-warning\" role=\"alert\">\n {formatMessage(messages.unauthorizedWarning)}\n </div>\n )}\n </div>\n );\n};\n\nexport default GradebookHeader;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/GradebookHeader/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,sBAAsB,MAAM,SAAS,CAAC;AAC7C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,uBAAuB,GAAG,+CAA+C,CAAC;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EACJ,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,GAClB,GAAG,sBAAsB,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAC5C,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,yEAAyE;IACzE,uCAAuC;IACvC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;QAC1C,CAAC,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC;QAC3D,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,eAAe,GAAG,CACtB,8BACE,KAAC,IAAI,IAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,GAAG,EACrD,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,IACvC,CACJ,CAAC;IACF,MAAM,cAAc,GAAG,GAAG,EAAE;;QAC1B,uEAAuE;QACvE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CACL,KAAC,MAAM,IAAC,OAAO,EAAC,MAAM,EAAC,SAAS,EAAC,UAAU,EAAC,OAAO,EAAE,MAAM,YACxD,eAAe,GACT,CACV,CAAC;QACJ,CAAC;QACD,OAAO,CACL,KAAC,SAAS,oBACJ,YAAY,CAAC,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,GAAG,mCAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC,IACzE,SAAS,EAAC,MAAM,YAEf,eAAe,IACN,CACb,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,aACnC,cAAc,EAAE,EACjB,aAAI,SAAS,EAAC,uBAAuB,YAAE,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAM,EAC9E,YAAG,SAAS,EAAC,uBAAuB,YAAE,QAAQ,GAAK,EACnD,cAAK,SAAS,EAAC,gEAAgE,YAC5E,kBAAkB,IAAI,CACrB,KAAC,MAAM,IAAC,OAAO,EAAC,UAAU,EAAC,OAAO,EAAE,qBAAqB,YACtD,aAAa,CAAC,iBAAiB,CAAC,GAC1B,CACV,GACG,EACL,eAAe,IAAI,CAClB,cAAK,SAAS,EAAC,qBAAqB,EAAC,IAAI,EAAC,OAAO,YAC9C,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,GAClC,CACP,EACA,CAAC,oBAAoB,KAAK,KAAK,CAAC,IAAI,CACnC,cAAK,SAAS,EAAC,qBAAqB,EAAC,IAAI,EAAC,OAAO,YAC9C,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GACxC,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["import { getLinkProps, resolveRouteByRole, useIntl } from '@openedx/frontend-base';\nimport { Button, Icon, Hyperlink } from '@openedx/paragon';\nimport { ArrowBackIos } from '@openedx/paragon/icons';\n\nimport { instructorDashboardUrl } from '@src/data/services/lms/urls';\nimport { useGradebookNavigation } from '@src/data/gradebookNavigationContext';\nimport useGradebookHeaderData from './hooks';\nimport messages from './messages';\n\nconst instructorDashboardRole = 'org.openedx.frontend.role.instructorDashboard';\n\nexport const GradebookHeader = () => {\n const { formatMessage } = useIntl();\n const {\n areGradesFrozen,\n canUserViewGradebook,\n courseId,\n handleToggleViewClick,\n showBulkManagement,\n toggleViewMessage,\n } = useGradebookHeaderData();\n const { onBack } = useGradebookNavigation();\n // Prefer the instructor dashboard route if the running site provides one,\n // so navigation stays within the SPA; otherwise fall back to a full page\n // load of the legacy LMS dashboard. Skip resolving when the host provides\n // its own onBack or the courseId isn't ready — resolveRouteByRole throws\n // \"Missing :courseId param\" otherwise.\n const dashboardRoute = (!onBack && courseId)\n ? resolveRouteByRole(instructorDashboardRole, { courseId })\n : null;\n const backLinkContent = (\n <>\n <Icon src={ArrowBackIos} className=\"mr-1\" size=\"sm\" />\n {formatMessage(messages.backToDashboard)}\n </>\n );\n const renderBackLink = () => {\n // Host-provided handler wins over URL navigation (e.g. CCX Coach tab).\n if (onBack) {\n return (\n <Button variant=\"link\" className=\"mb-3 p-0\" onClick={onBack}>\n {backLinkContent}\n </Button>\n );\n }\n return (\n <Hyperlink\n {...getLinkProps(dashboardRoute?.url ?? instructorDashboardUrl(courseId))}\n className=\"mb-3\"\n >\n {backLinkContent}\n </Hyperlink>\n );\n };\n return (\n <div className=\"gradebook-header mt-2\">\n {renderBackLink()}\n <h2 className=\"text-primary-500 mb-0\">{formatMessage(messages.gradebook)}</h2>\n <p className=\"small text-break mb-3\">{courseId}</p>\n <div className=\"subtitle-row d-flex justify-content-between align-items-center\">\n {showBulkManagement && (\n <Button variant=\"tertiary\" onClick={handleToggleViewClick}>\n {formatMessage(toggleViewMessage)}\n </Button>\n )}\n </div>\n {areGradesFrozen && (\n <div className=\"alert alert-warning\" role=\"alert\">\n {formatMessage(messages.frozenWarning)}\n </div>\n )}\n {(canUserViewGradebook === false) && (\n <div className=\"alert alert-warning\" role=\"alert\">\n {formatMessage(messages.unauthorizedWarning)}\n </div>\n )}\n </div>\n );\n};\n\nexport default GradebookHeader;\n"]}
@@ -11,7 +11,7 @@ import messages from './messages';
11
11
  export const FilterMenuToggle = () => {
12
12
  const { toggleFilterMenu } = useGradebookUi();
13
13
  const { formatMessage } = useIntl();
14
- return (_jsxs(Button, { id: "edit-filters-btn", className: "btn-primary align-self-start", onClick: toggleFilterMenu, children: [_jsx(Icon, { src: FilterAlt, className: "mr-1" }), " ", formatMessage(messages.editFilters)] }));
14
+ return (_jsxs(Button, { id: "edit-filters-btn", className: "btn-primary align-self-start", onClick: toggleFilterMenu, size: "sm", children: [_jsx(Icon, { src: FilterAlt, className: "mr-1", size: "sm" }), " ", formatMessage(messages.editFilters)] }));
15
15
  };
16
16
  FilterMenuToggle.propTypes = {};
17
17
  export default FilterMenuToggle;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/GradesView/FilterMenuToggle/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,CAAC;IAC9C,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,OAAO,CACL,MAAC,MAAM,IACL,EAAE,EAAC,kBAAkB,EACrB,SAAS,EAAC,8BAA8B,EACxC,OAAO,EAAE,gBAAgB,aAEzB,KAAC,IAAI,IAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAC,MAAM,GAAG,OAAE,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,IACvE,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB,CAAC,SAAS,GAAG,EAAE,CAAC;AAEhC,eAAe,gBAAgB,CAAC","sourcesContent":["import { Button, Icon } from '@openedx/paragon';\nimport { useIntl } from '@openedx/frontend-base';\nimport { FilterAlt } from '@openedx/paragon/icons';\n\nimport { useGradebookUi } from '@src/data/gradebookUiContext';\n\nimport messages from './messages';\n\n/**\n * Controls for filtering the GradebookTable. Contains the \"Edit Filters\" button for opening the filter drawer\n * as well as the search box for searching by username/email.\n */\nexport const FilterMenuToggle = () => {\n const { toggleFilterMenu } = useGradebookUi();\n const { formatMessage } = useIntl();\n return (\n <Button\n id=\"edit-filters-btn\"\n className=\"btn-primary align-self-start\"\n onClick={toggleFilterMenu}\n >\n <Icon src={FilterAlt} className=\"mr-1\" /> {formatMessage(messages.editFilters)}\n </Button>\n );\n};\n\nFilterMenuToggle.propTypes = {};\n\nexport default FilterMenuToggle;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/GradesView/FilterMenuToggle/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,CAAC;IAC9C,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,OAAO,CACL,MAAC,MAAM,IACL,EAAE,EAAC,kBAAkB,EACrB,SAAS,EAAC,8BAA8B,EACxC,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAC,IAAI,aAET,KAAC,IAAI,IAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,GAAG,OAAE,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,IACjF,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB,CAAC,SAAS,GAAG,EAAE,CAAC;AAEhC,eAAe,gBAAgB,CAAC","sourcesContent":["import { Button, Icon } from '@openedx/paragon';\nimport { useIntl } from '@openedx/frontend-base';\nimport { FilterAlt } from '@openedx/paragon/icons';\n\nimport { useGradebookUi } from '@src/data/gradebookUiContext';\n\nimport messages from './messages';\n\n/**\n * Controls for filtering the GradebookTable. Contains the \"Edit Filters\" button for opening the filter drawer\n * as well as the search box for searching by username/email.\n */\nexport const FilterMenuToggle = () => {\n const { toggleFilterMenu } = useGradebookUi();\n const { formatMessage } = useIntl();\n return (\n <Button\n id=\"edit-filters-btn\"\n className=\"btn-primary align-self-start\"\n onClick={toggleFilterMenu}\n size=\"sm\"\n >\n <Icon src={FilterAlt} className=\"mr-1\" size=\"sm\" /> {formatMessage(messages.editFilters)}\n </Button>\n );\n};\n\nFilterMenuToggle.propTypes = {};\n\nexport default FilterMenuToggle;\n"]}
@@ -31,9 +31,6 @@
31
31
  .intervention-report-description {
32
32
  margin-right: 40px;
33
33
  }
34
- h4.step-message-1 {
35
- margin-top: 40px;
36
- }
37
34
  }
38
35
 
39
36
  .student-filters{
@@ -13,7 +13,7 @@ export const ScoreViewInput = () => {
13
13
  const { gradeFormat } = useGradeData();
14
14
  const { setGradeFormat } = useGradebookUi();
15
15
  const toggleFormat = (e) => setGradeFormat(e.target.value);
16
- return (_jsxs(Form.Group, { controlId: "ScoreView", children: [_jsxs(Form.Label, { children: [formatMessage(messages.scoreView), ":"] }), _jsxs(Form.Control, { as: "select", value: gradeFormat, onChange: toggleFormat, children: [_jsx("option", { value: "percent", children: formatMessage(messages.percent) }), _jsx("option", { value: "absolute", children: formatMessage(messages.absolute) })] })] }));
16
+ return (_jsxs(Form.Group, { controlId: "ScoreView", className: "d-flex align-items-center", children: [_jsxs(Form.Label, { className: "mr-2 font-weight-normal", children: [formatMessage(messages.scoreView), ":"] }), _jsxs(Form.Control, { as: "select", value: gradeFormat, onChange: toggleFormat, size: "sm", children: [_jsx("option", { value: "percent", children: formatMessage(messages.percent) }), _jsx("option", { value: "absolute", children: formatMessage(messages.absolute) })] })] }));
17
17
  };
18
18
  ScoreViewInput.propTypes = {};
19
19
  export default ScoreViewInput;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/GradesView/ScoreViewInput/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAAC;IACvC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,CACL,MAAC,IAAI,CAAC,KAAK,IAAC,SAAS,EAAC,WAAW,aAC/B,MAAC,IAAI,CAAC,KAAK,eAAE,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAe,EAC7D,MAAC,IAAI,CAAC,OAAO,IACX,EAAE,EAAC,QAAQ,EACX,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,YAAY,aAEtB,iBAAQ,KAAK,EAAC,SAAS,YAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAU,EAClE,iBAAQ,KAAK,EAAC,UAAU,YAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAU,IACvD,IACJ,CACd,CAAC;AACJ,CAAC,CAAC;AACF,cAAc,CAAC,SAAS,GAAG,EAAE,CAAC;AAE9B,eAAe,cAAc,CAAC","sourcesContent":["import { Form } from '@openedx/paragon';\nimport { useIntl } from '@openedx/frontend-base';\n\nimport { useGradebookUi } from '@src/data/gradebookUiContext';\nimport { useGradeData } from '../data/hooks';\nimport messages from './messages';\n\n/**\n * <ScoreViewInput />\n * Select control for grade format (percent vs absolute).\n */\nexport const ScoreViewInput = () => {\n const { formatMessage } = useIntl();\n const { gradeFormat } = useGradeData();\n const { setGradeFormat } = useGradebookUi();\n const toggleFormat = (e) => setGradeFormat(e.target.value);\n return (\n <Form.Group controlId=\"ScoreView\">\n <Form.Label>{formatMessage(messages.scoreView)}:</Form.Label>\n <Form.Control\n as=\"select\"\n value={gradeFormat}\n onChange={toggleFormat}\n >\n <option value=\"percent\">{formatMessage(messages.percent)}</option>\n <option value=\"absolute\">{formatMessage(messages.absolute)}</option>\n </Form.Control>\n </Form.Group>\n );\n};\nScoreViewInput.propTypes = {};\n\nexport default ScoreViewInput;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/GradesView/ScoreViewInput/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAAC;IACvC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,CACL,MAAC,IAAI,CAAC,KAAK,IAAC,SAAS,EAAC,WAAW,EAAC,SAAS,EAAC,2BAA2B,aACrE,MAAC,IAAI,CAAC,KAAK,IAAC,SAAS,EAAC,yBAAyB,aAAE,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAe,EACjG,MAAC,IAAI,CAAC,OAAO,IACX,EAAE,EAAC,QAAQ,EACX,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAC,IAAI,aAET,iBAAQ,KAAK,EAAC,SAAS,YAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAU,EAClE,iBAAQ,KAAK,EAAC,UAAU,YAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAU,IACvD,IACJ,CACd,CAAC;AACJ,CAAC,CAAC;AACF,cAAc,CAAC,SAAS,GAAG,EAAE,CAAC;AAE9B,eAAe,cAAc,CAAC","sourcesContent":["import { Form } from '@openedx/paragon';\nimport { useIntl } from '@openedx/frontend-base';\n\nimport { useGradebookUi } from '@src/data/gradebookUiContext';\nimport { useGradeData } from '../data/hooks';\nimport messages from './messages';\n\n/**\n * <ScoreViewInput />\n * Select control for grade format (percent vs absolute).\n */\nexport const ScoreViewInput = () => {\n const { formatMessage } = useIntl();\n const { gradeFormat } = useGradeData();\n const { setGradeFormat } = useGradebookUi();\n const toggleFormat = (e) => setGradeFormat(e.target.value);\n return (\n <Form.Group controlId=\"ScoreView\" className=\"d-flex align-items-center\">\n <Form.Label className=\"mr-2 font-weight-normal\">{formatMessage(messages.scoreView)}:</Form.Label>\n <Form.Control\n as=\"select\"\n value={gradeFormat}\n onChange={toggleFormat}\n size=\"sm\"\n >\n <option value=\"percent\">{formatMessage(messages.percent)}</option>\n <option value=\"absolute\">{formatMessage(messages.absolute)}</option>\n </Form.Control>\n </Form.Group>\n );\n};\nScoreViewInput.propTypes = {};\n\nexport default ScoreViewInput;\n"]}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import PropTypes from 'prop-types';
3
3
  import { useIntl } from '@openedx/frontend-base';
4
+ import { Bubble } from '@openedx/paragon';
4
5
  import { useFilters } from '../../data/filtersContext';
5
6
  import BulkManagementControls from './BulkManagementControls';
6
7
  import EditModal from './EditModal';
@@ -26,7 +27,7 @@ export const GradesView = ({ updateQueryParams }) => {
26
27
  updateQueryParams(filterNames.reduce((obj, filterName) => (Object.assign(Object.assign({}, obj), { [filterName]: false })), {}));
27
28
  fetchGrades();
28
29
  };
29
- return (_jsxs(_Fragment, { children: [_jsx(SpinnerIcon, {}), _jsx(InterventionsReport, {}), _jsx("h3", { className: "step-message-1", children: formatMessage(messages.filterStepHeading) }), _jsxs("div", { className: "d-flex justify-content-between flex-wrap", children: [_jsx(FilterMenuToggle, {}), _jsx(SearchControls, {})] }), _jsx(FilterBadges, { handleClose: handleFilterBadgeClose }), _jsx(StatusAlerts, {}), _jsx("h3", { children: formatMessage(messages.gradebookStepHeading) }), _jsxs("div", { className: "d-flex justify-content-between align-items-center mb-2", children: [_jsx(ScoreViewInput, {}), _jsx(BulkManagementControls, {})] }), _jsx(FilteredUsersLabel, {}), _jsx(GradebookTable, {}), _jsx(PageButtons, {}), _jsxs("p", { children: ["* ", formatMessage(messages.mastersHint)] }), _jsx(EditModal, {}), _jsx(ImportSuccessToast, {})] }));
30
+ return (_jsxs(_Fragment, { children: [_jsx(SpinnerIcon, {}), _jsx(InterventionsReport, {}), _jsxs("div", { className: "mb-3", children: [_jsxs("div", { className: "d-flex align-items-center mb-2", children: [_jsx(Bubble, { className: "mr-2", children: "1" }), _jsx("h3", { className: "h4 text-primary-700 my-0", children: formatMessage(messages.filterStepHeading) })] }), _jsxs("div", { className: "d-flex justify-content-between flex-wrap", children: [_jsx(FilterMenuToggle, {}), _jsx(SearchControls, {})] }), _jsx(FilterBadges, { handleClose: handleFilterBadgeClose }), _jsx(StatusAlerts, {}), _jsxs("div", { className: "d-flex align-items-center mb-2", children: [_jsx(Bubble, { className: "mr-2", children: "2" }), _jsx("h3", { className: "h4 text-primary-700 my-0", children: formatMessage(messages.gradebookStepHeading) })] }), _jsxs("div", { className: "d-flex justify-content-between align-items-center mb-2", children: [_jsx(ScoreViewInput, {}), _jsx(BulkManagementControls, {})] })] }), _jsx(FilteredUsersLabel, {}), _jsx(GradebookTable, {}), _jsx(PageButtons, {}), _jsxs("p", { children: ["* ", formatMessage(messages.mastersHint)] }), _jsx(EditModal, {}), _jsx(ImportSuccessToast, {})] }));
30
31
  };
31
32
  GradesView.propTypes = {
32
33
  updateQueryParams: PropTypes.func.isRequired,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/GradesView/index.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE;IAClD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,UAAU,EAAE,CAAC;IAC3D,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAC;IAEvC,MAAM,sBAAsB,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,EAAE;QACnD,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACjC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,iCAAM,GAAG,KAAE,CAAC,UAAU,CAAC,EAAE,KAAK,IAAG,EACtD,EAAE,CACH,CAAC,CAAC;QACH,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,CACL,8BACE,KAAC,WAAW,KAAG,EAEf,KAAC,mBAAmB,KAAG,EACvB,aAAI,SAAS,EAAC,gBAAgB,YAC3B,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GACvC,EAEL,eAAK,SAAS,EAAC,0CAA0C,aACvD,KAAC,gBAAgB,KAAG,EACpB,KAAC,cAAc,KAAG,IACd,EAEN,KAAC,YAAY,IAAC,WAAW,EAAE,sBAAsB,GAAI,EACrD,KAAC,YAAY,KAAG,EAEhB,uBAAK,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAM,EAEvD,eAAK,SAAS,EAAC,wDAAwD,aACrE,KAAC,cAAc,KAAG,EAClB,KAAC,sBAAsB,KAAG,IACtB,EAEN,KAAC,kBAAkB,KAAG,EAEtB,KAAC,cAAc,KAAG,EAElB,KAAC,WAAW,KAAG,EACf,8BAAM,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAK,EAC9C,KAAC,SAAS,KAAG,EAEb,KAAC,kBAAkB,KAAG,IACrB,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,UAAU,CAAC,SAAS,GAAG;IACrB,iBAAiB,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CAC7C,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import PropTypes from 'prop-types';\n\nimport { useIntl } from '@openedx/frontend-base';\n\nimport { useFilters } from '@src/data/filtersContext';\n\nimport BulkManagementControls from './BulkManagementControls';\nimport EditModal from './EditModal';\nimport FilterBadges from './FilterBadges';\nimport FilteredUsersLabel from './FilteredUsersLabel';\nimport FilterMenuToggle from './FilterMenuToggle';\nimport GradebookTable from './GradebookTable';\nimport ImportSuccessToast from './ImportSuccessToast';\nimport InterventionsReport from './InterventionsReport';\nimport PageButtons from './PageButtons';\nimport ScoreViewInput from './ScoreViewInput';\nimport SearchControls from './SearchControls';\nimport SpinnerIcon from './SpinnerIcon';\nimport StatusAlerts from './StatusAlerts';\n\nimport { useRefetchGrades } from './data/hooks';\nimport messages from './messages';\n\nexport const GradesView = ({ updateQueryParams }) => {\n const { formatMessage } = useIntl();\n const { resetFilters: resetContextFilters } = useFilters();\n const fetchGrades = useRefetchGrades();\n\n const handleFilterBadgeClose = (filterNames) => () => {\n resetContextFilters(filterNames);\n updateQueryParams(filterNames.reduce(\n (obj, filterName) => ({ ...obj, [filterName]: false }),\n {},\n ));\n fetchGrades();\n };\n\n return (\n <>\n <SpinnerIcon />\n\n <InterventionsReport />\n <h3 className=\"step-message-1\">\n {formatMessage(messages.filterStepHeading)}\n </h3>\n\n <div className=\"d-flex justify-content-between flex-wrap\">\n <FilterMenuToggle />\n <SearchControls />\n </div>\n\n <FilterBadges handleClose={handleFilterBadgeClose} />\n <StatusAlerts />\n\n <h3>{formatMessage(messages.gradebookStepHeading)}</h3>\n\n <div className=\"d-flex justify-content-between align-items-center mb-2\">\n <ScoreViewInput />\n <BulkManagementControls />\n </div>\n\n <FilteredUsersLabel />\n\n <GradebookTable />\n\n <PageButtons />\n <p>* {formatMessage(messages.mastersHint)}</p>\n <EditModal />\n\n <ImportSuccessToast />\n </>\n );\n};\n\nGradesView.propTypes = {\n updateQueryParams: PropTypes.func.isRequired,\n};\n\nexport default GradesView;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/GradesView/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useIntl } from '@openedx/frontend-base';\nimport { Bubble } from '@openedx/paragon';\n\nimport { useFilters } from '@src/data/filtersContext';\n\nimport BulkManagementControls from './BulkManagementControls';\nimport EditModal from './EditModal';\nimport FilterBadges from './FilterBadges';\nimport FilteredUsersLabel from './FilteredUsersLabel';\nimport FilterMenuToggle from './FilterMenuToggle';\nimport GradebookTable from './GradebookTable';\nimport ImportSuccessToast from './ImportSuccessToast';\nimport InterventionsReport from './InterventionsReport';\nimport PageButtons from './PageButtons';\nimport ScoreViewInput from './ScoreViewInput';\nimport SearchControls from './SearchControls';\nimport SpinnerIcon from './SpinnerIcon';\nimport StatusAlerts from './StatusAlerts';\nimport { useRefetchGrades } from './data/hooks';\nimport messages from './messages';\n\nexport const GradesView = ({ updateQueryParams }) => {\n const { formatMessage } = useIntl();\n const { resetFilters: resetContextFilters } = useFilters();\n const fetchGrades = useRefetchGrades();\n\n const handleFilterBadgeClose = (filterNames) => () => {\n resetContextFilters(filterNames);\n updateQueryParams(filterNames.reduce(\n (obj, filterName) => ({ ...obj, [filterName]: false }),\n {},\n ));\n fetchGrades();\n };\n\n return (\n <>\n <SpinnerIcon />\n\n <InterventionsReport />\n\n <div className=\"mb-3\">\n <div className=\"d-flex align-items-center mb-2\">\n <Bubble className=\"mr-2\">1</Bubble>\n <h3 className=\"h4 text-primary-700 my-0\">\n {formatMessage(messages.filterStepHeading)}\n </h3>\n </div>\n <div className=\"d-flex justify-content-between flex-wrap\">\n <FilterMenuToggle />\n <SearchControls />\n </div>\n\n <FilterBadges handleClose={handleFilterBadgeClose} />\n <StatusAlerts />\n\n <div className=\"d-flex align-items-center mb-2\">\n <Bubble className=\"mr-2\">2</Bubble>\n <h3 className=\"h4 text-primary-700 my-0\">\n {formatMessage(messages.gradebookStepHeading)}\n </h3>\n </div>\n\n <div className=\"d-flex justify-content-between align-items-center mb-2\">\n <ScoreViewInput />\n <BulkManagementControls />\n </div>\n </div>\n\n <FilteredUsersLabel />\n\n <GradebookTable />\n\n <PageButtons />\n <p>* {formatMessage(messages.mastersHint)}</p>\n <EditModal />\n\n <ImportSuccessToast />\n </>\n );\n};\n\nGradesView.propTypes = {\n updateQueryParams: PropTypes.func.isRequired,\n};\n\nexport default GradesView;\n"]}
@@ -1,14 +1,14 @@
1
1
  import { defineMessages } from '@openedx/frontend-base';
2
2
  const messages = defineMessages({
3
3
  filterStepHeading: {
4
- id: 'gradebook.GradesView.filterHeading',
5
- defaultMessage: 'Step 1: Filter the Grade Report',
4
+ id: 'gradebook.GradesView.filterHeadingV2',
5
+ defaultMessage: 'Filter the Grade Report',
6
6
  description: 'Filter controls container heading string',
7
7
  },
8
8
  gradebookStepHeading: {
9
- id: 'gradebook.GradesView.gradebookStepHeading',
10
- defaultMessage: 'Step 2: View or Modify Individual Grades',
11
- description: 'Alert text for invalid minimum course grade',
9
+ id: 'gradebook.GradesView.gradebookStepHeadingV2',
10
+ defaultMessage: 'View or Modify Individual Grades',
11
+ description: 'Gradebook table container heading string',
12
12
  },
13
13
  mastersHint: {
14
14
  id: 'gradebook.GradesView.mastersHint',
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/components/GradesView/messages.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,iBAAiB,EAAE;QACjB,EAAE,EAAE,oCAAoC;QACxC,cAAc,EAAE,iCAAiC;QACjD,WAAW,EAAE,0CAA0C;KACxD;IACD,oBAAoB,EAAE;QACpB,EAAE,EAAE,2CAA2C;QAC/C,cAAc,EAAE,0CAA0C;QAC1D,WAAW,EAAE,6CAA6C;KAC3D;IACD,WAAW,EAAE;QACX,EAAE,EAAE,kCAAkC;QACtC,cAAc,EAAE,mDAAmD;QACnE,WAAW,EAAE,iDAAiD;KAC/D;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n filterStepHeading: {\n id: 'gradebook.GradesView.filterHeading',\n defaultMessage: 'Step 1: Filter the Grade Report',\n description: 'Filter controls container heading string',\n },\n gradebookStepHeading: {\n id: 'gradebook.GradesView.gradebookStepHeading',\n defaultMessage: 'Step 2: View or Modify Individual Grades',\n description: 'Alert text for invalid minimum course grade',\n },\n mastersHint: {\n id: 'gradebook.GradesView.mastersHint',\n defaultMessage: \"available for learners in the Master's track only\",\n description: 'Masters feature availability hint on Grades Tab',\n },\n});\n\nexport default messages;\n"]}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/components/GradesView/messages.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,iBAAiB,EAAE;QACjB,EAAE,EAAE,sCAAsC;QAC1C,cAAc,EAAE,yBAAyB;QACzC,WAAW,EAAE,0CAA0C;KACxD;IACD,oBAAoB,EAAE;QACpB,EAAE,EAAE,6CAA6C;QACjD,cAAc,EAAE,kCAAkC;QAClD,WAAW,EAAE,0CAA0C;KACxD;IACD,WAAW,EAAE;QACX,EAAE,EAAE,kCAAkC;QACtC,cAAc,EAAE,mDAAmD;QACnE,WAAW,EAAE,iDAAiD;KAC/D;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n filterStepHeading: {\n id: 'gradebook.GradesView.filterHeadingV2',\n defaultMessage: 'Filter the Grade Report',\n description: 'Filter controls container heading string',\n },\n gradebookStepHeading: {\n id: 'gradebook.GradesView.gradebookStepHeadingV2',\n defaultMessage: 'View or Modify Individual Grades',\n description: 'Gradebook table container heading string',\n },\n mastersHint: {\n id: 'gradebook.GradesView.mastersHint',\n defaultMessage: \"available for learners in the Master's track only\",\n description: 'Masters feature availability hint on Grades Tab',\n },\n});\n\nexport default messages;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openedx/frontend-app-gradebook",
3
- "version": "2.0.0-alpha.6",
3
+ "version": "2.0.0-alpha.7",
4
4
  "author": "Open edX",
5
5
  "license": "AGPL-3.0",
6
6
  "description": "edx editable gradebook-ui to manipulate grade overrides on subsections",