@instructure/platform-modules 1.10.0 → 1.12.0

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.
Files changed (83) hide show
  1. package/README.md +72 -27
  2. package/dist/adapters/canvasGraphql/index.d.ts +1 -1
  3. package/dist/adapters/canvasGraphql/index.d.ts.map +1 -1
  4. package/dist/adapters/canvasGraphql/normalize.d.ts +10 -3
  5. package/dist/adapters/canvasGraphql/normalize.d.ts.map +1 -1
  6. package/dist/adapters/canvasGraphql/queries.d.ts +13 -3
  7. package/dist/adapters/canvasGraphql/queries.d.ts.map +1 -1
  8. package/dist/adapters/inMemory.d.ts +2 -0
  9. package/dist/adapters/inMemory.d.ts.map +1 -1
  10. package/dist/adapters/index.d.ts +1 -1
  11. package/dist/adapters/index.d.ts.map +1 -1
  12. package/dist/adapters/types.d.ts +27 -3
  13. package/dist/adapters/types.d.ts.map +1 -1
  14. package/dist/analytics/types.d.ts +1 -1
  15. package/dist/analytics/types.d.ts.map +1 -1
  16. package/dist/cache/keys.d.ts +3 -0
  17. package/dist/cache/keys.d.ts.map +1 -1
  18. package/dist/components/FilterSelect.d.ts +2 -2
  19. package/dist/components/FilterSelect.d.ts.map +1 -1
  20. package/dist/components/ModuleCard.d.ts +1 -3
  21. package/dist/components/ModuleCard.d.ts.map +1 -1
  22. package/dist/components/ModuleCard.stories.d.ts +3 -0
  23. package/dist/components/ModuleCard.stories.d.ts.map +1 -1
  24. package/dist/components/ModuleItemRow.d.ts +3 -0
  25. package/dist/components/ModuleItemRow.d.ts.map +1 -1
  26. package/dist/components/ModulesList.d.ts +0 -1
  27. package/dist/components/ModulesList.d.ts.map +1 -1
  28. package/dist/components/ModulesList.stories.d.ts +3 -2
  29. package/dist/components/ModulesList.stories.d.ts.map +1 -1
  30. package/dist/components/ModulesProgressBar.d.ts +3 -1
  31. package/dist/components/ModulesProgressBar.d.ts.map +1 -1
  32. package/dist/components/ModulesProgressBar.stories.d.ts +1 -0
  33. package/dist/components/ModulesProgressBar.stories.d.ts.map +1 -1
  34. package/dist/components/index.d.ts +1 -1
  35. package/dist/components/index.d.ts.map +1 -1
  36. package/dist/components/labels.d.ts +10 -0
  37. package/dist/components/labels.d.ts.map +1 -1
  38. package/dist/config/capabilities.d.ts.map +1 -1
  39. package/dist/config/filters.d.ts +3 -2
  40. package/dist/config/filters.d.ts.map +1 -1
  41. package/dist/config/schemas.d.ts +2 -2
  42. package/dist/config/schemas.d.ts.map +1 -1
  43. package/dist/config/types.d.ts +0 -2
  44. package/dist/config/types.d.ts.map +1 -1
  45. package/dist/hooks/constants.d.ts +1 -4
  46. package/dist/hooks/constants.d.ts.map +1 -1
  47. package/dist/hooks/index.d.ts +2 -3
  48. package/dist/hooks/index.d.ts.map +1 -1
  49. package/dist/hooks/pageSteps.d.ts +12 -0
  50. package/dist/hooks/pageSteps.d.ts.map +1 -0
  51. package/dist/hooks/queryOptions.d.ts +8 -5
  52. package/dist/hooks/queryOptions.d.ts.map +1 -1
  53. package/dist/hooks/useItemsMode.d.ts +2 -0
  54. package/dist/hooks/useItemsMode.d.ts.map +1 -1
  55. package/dist/hooks/useModuleItemQueries.d.ts +19 -8
  56. package/dist/hooks/useModuleItemQueries.d.ts.map +1 -1
  57. package/dist/hooks/useModules.d.ts +13 -5
  58. package/dist/hooks/useModules.d.ts.map +1 -1
  59. package/dist/hooks/useModulesPageData.d.ts +23 -11
  60. package/dist/hooks/useModulesPageData.d.ts.map +1 -1
  61. package/dist/index.d.ts +6 -6
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +2499 -2088
  64. package/dist/organize/Organize.stories.d.ts +2 -1
  65. package/dist/organize/Organize.stories.d.ts.map +1 -1
  66. package/dist/organize/OrganizeModulesModal.d.ts.map +1 -1
  67. package/dist/organize/ProposalPreview.d.ts.map +1 -1
  68. package/dist/organize/fixture.d.ts.map +1 -1
  69. package/dist/organize/types.d.ts +1 -1
  70. package/dist/types/domain.d.ts +9 -2
  71. package/dist/types/domain.d.ts.map +1 -1
  72. package/dist/types/extensions.d.ts +2 -0
  73. package/dist/types/extensions.d.ts.map +1 -1
  74. package/dist/types/filterClause.d.ts +3 -3
  75. package/dist/types/filterClause.d.ts.map +1 -1
  76. package/dist/types/index.d.ts +3 -3
  77. package/dist/types/index.d.ts.map +1 -1
  78. package/dist/types/schemas.d.ts +2 -1
  79. package/dist/types/schemas.d.ts.map +1 -1
  80. package/locales/en.json +15 -25
  81. package/package.json +3 -1
  82. package/dist/hooks/useModuleItems.d.ts +0 -25
  83. package/dist/hooks/useModuleItems.d.ts.map +0 -1
package/README.md CHANGED
@@ -22,8 +22,9 @@ packages listed under `peerDependencies` in `package.json`.
22
22
 
23
23
  ## Usage
24
24
 
25
- Build an adapter once, outside render. Wrap the page in the i18n provider. Call the hook and pass
26
- its whole result to the list.
25
+ Build an adapter once, outside render. Wrap the page in the i18n provider and call the hook *below*
26
+ it — the hook reads `timezone` off that context to resolve the `due_this_week` window it sends to
27
+ Canvas. Pass the hook's whole result to the list.
27
28
 
28
29
  ```tsx
29
30
  import {
@@ -36,13 +37,17 @@ import {
36
37
  const adapter = createCanvasGraphqlAdapter({ executeQuery })
37
38
 
38
39
  function ModulesPage({ courseId }: { courseId: string }) {
39
- const data = useModulesPageData({ courseId, adapter, view: 'student' })
40
40
  return (
41
41
  <ModulesI18nProvider translations={translations} locale={locale} timezone={timezone}>
42
- <ModulesList data={data} courseName={courseName} />
42
+ <ModulesPageBody courseId={courseId} />
43
43
  </ModulesI18nProvider>
44
44
  )
45
45
  }
46
+
47
+ function ModulesPageBody({ courseId }: { courseId: string }) {
48
+ const data = useModulesPageData({ courseId, adapter, view: 'student' })
49
+ return <ModulesList data={data} />
50
+ }
46
51
  ```
47
52
 
48
53
  Keep the adapter referentially stable. A new adapter identity on every render rebuilds every item
@@ -55,7 +60,7 @@ every key has a default. A host supplies as much or as little as it wants:
55
60
 
56
61
  ```tsx
57
62
  // Partial. Anything omitted renders the English in en.json.
58
- const translations = useMemo(() => ({ pageTitle: 'Learning Path' }), [])
63
+ const translations = useMemo(() => ({ noModulesEmptyStateTitle: 'No units available yet' }), [])
59
64
  ```
60
65
 
61
66
  The catalog is separately importable when you want to extract from it or build a
@@ -64,8 +69,8 @@ full one — `import en from '@instructure/platform-modules/locales/en.json'`.
64
69
  Resolution walks the host catalog, then `en.json`, then the key itself, taking the
65
70
  first entry that is actually a string. Three consequences worth knowing:
66
71
 
67
- - **Rebranding and translating are the same edit.** `{ pageTitle: 'Learning Path' }` is the whole
68
- of the page-title ask, which is why there is no separate `strings` config key.
72
+ - **Rebranding and translating are the same edit.** `{ noModulesEmptyStateTitle: 'No units yet' }`
73
+ is the whole of a copy change, which is why there is no separate `strings` config key.
69
74
  - **A key the catalog does not carry renders as its own text**, so a host-registered label passes
70
75
  through rather than showing a bare key.
71
76
  - **Only a string overrides.** `''` blanks a string deliberately; a `null` or a number from an
@@ -110,7 +115,7 @@ pre-formatted string — the same value is then formatted for your locale when r
110
115
  You can also give forms to a key `en.json` ships flat. The quantity a plural form would agree
111
116
  with is named `count` on every key, so this works wherever your language needs a distinction
112
117
  English does not. A second quantity in the same sentence keeps its own name and cannot drive
113
- selection — `%{loaded}` in `itemsLoadedAnnouncement` and `loadMoreItems`, `%{percent}` and
118
+ selection — `%{loaded}` in `itemsLoadedAnnouncement`, `%{percent}` and
114
119
  `%{met}` in `progressSummary`:
115
120
 
116
121
  ```tsx
@@ -121,8 +126,8 @@ selection — `%{loaded}` in `itemsLoadedAnnouncement` and `loadMoreItems`, `%{p
121
126
 
122
127
  ## Configuration
123
128
 
124
- Everything customizable is a key in one config object. Start from `baseModulesConfig` and write only
125
- what you want different.
129
+ Everything you can customize is either a key in one config object or an entry in your translation
130
+ catalog. Start from `baseModulesConfig` and write only what you want different.
126
131
 
127
132
  ```tsx
128
133
  import {
@@ -132,7 +137,7 @@ import {
132
137
  } from '@instructure/platform-modules'
133
138
 
134
139
  const modulesConfig = resolveModulesConfig(baseModulesConfig, {
135
- itemStatuses: { missing: { label: 'Overdue', order: 10 } },
140
+ itemTypes: { quiz: { label: 'Knowledge check' } },
136
141
  })
137
142
 
138
143
  ;<ModulesConfigProvider value={modulesConfig}>
@@ -140,22 +145,63 @@ const modulesConfig = resolveModulesConfig(baseModulesConfig, {
140
145
  </ModulesConfigProvider>
141
146
  ```
142
147
 
143
- Registries merge per entry — `{ ...base[key], ...override[key] }` — so naming a key the base already
144
- has changes only the fields you state, and a key it doesn't is a new entry that needs the whole
145
- thing. `formatters` and `navigation` are a shallow spread of the top level. An explicit `undefined`
146
- keeps the inherited value either way; remove an entry with `hidden: true`.
148
+ The provider is optional. Without it the package renders against `baseModulesConfig`. In tests, use
149
+ `partialModulesConfig({ … })` to pin one key without building the rest.
150
+
151
+ ### What you can change
152
+
153
+ | To change… | Use… | Story |
154
+ |---|---|---|
155
+ | Any words on the page | your translation catalog (see [Translations](#translations)) | `HostRebrand`, `PartialCatalog` |
156
+ | How module labels, dates, points, and progress read | `formatters` | `LetterLabelScheme`, `NoLabelScheme` |
157
+ | Item type labels, icons, and order | `itemTypes` | `ItemTypesCustomized` |
158
+ | The facts on an item row's meta line | `itemMeta` | `ItemMetaCustomized` |
159
+ | The filter tabs | `filters` | `FiltersCustomized` |
160
+ | Where a title links, and client-side routing | `navigation` | `ItemTitleLinksRewritten`, `ItemTitleLinksIntercepted`, `ModuleTitleLinks` |
161
+
162
+ **Words have no config key.** A rebrand and a translation are the same edit in the same place:
163
+ `{ noModulesEmptyStateTitle: 'No units yet' }` in your catalog. Strings resolve as
164
+ `translations[key] ?? en[key]`, with the package's `locales/en.json` as the floor.
165
+
166
+ `itemStatuses`, `moduleActions`, and `itemActions` are valid keys, but nothing renders them yet.
167
+
168
+ ### How overrides merge
169
+
170
+ - **Omission keeps the base's version.** A key or field you don't mention stays as the base has it.
171
+ An explicit `undefined` does the same.
172
+ - **Registries merge per entry.** `itemTypes`, `itemMeta`, and `filters` merge as
173
+ `{ ...base[key], ...override[key] }`. Name an existing key to change only the fields you state.
174
+ Name a new key to add an entry, and give it every required field.
175
+ A new `filters` entry also needs a `query` the adapter can serve, or `unfiltered: true`.
176
+ Without one it throws outside production and is hidden in production.
177
+ - **`hidden: true` is the only way to remove an entry.** `null` and omission don't remove.
178
+ - **`order` sorts entries ascending.** The base spaces its values 10, 20, 30, and so on, so use 15 to
179
+ place an entry between the first two built-ins.
180
+ - **Labels go through `t`.** A registry entry's `label` can be a key from your catalog or plain
181
+ English. Plain English renders as written.
182
+ - **`formatters` and `navigation` are shallow.** Each function you supply replaces the base's.
183
+
184
+ Resolution validates eagerly. A typo'd key or a malformed entry throws when you build the config,
185
+ not at render.
186
+
187
+ ### Where to build it
188
+
189
+ Build the config at module scope, as above. `resolveModulesConfig` runs once and the reference stays
190
+ stable. If you later fold in fetched data, such as permissions or the course's LTI tools, move the
191
+ build into a component and memoize it on that data.
192
+
193
+ ### What you can't change
147
194
 
148
- Build the config at module scope, as above. Every key is a developer decision, so `resolveModulesConfig`
149
- runs once at import and the reference is stable. If you later fold in fetched data — permissions, LTI
150
- tools, the observed student — move the build into a component and memoize it on that data.
195
+ Canvas calculates module and item status, lock state, and lock reasons before the data reaches the
196
+ package. The package only displays them, so changing how one is calculated is a Canvas change.
151
197
 
152
- The provider is optional: without it the package renders against `baseModulesConfig`. In tests, use
153
- `partialModulesConfig({ … })` to pin one surface without hand-building the rest.
198
+ Their wording is yours to change in your catalog, like any other string, for example
199
+ `moduleStatusComplete` or `itemStatusMissing` in `locales/en.json`. Their colors, icons, and
200
+ precedence are fixed.
154
201
 
155
- Resolution is eager and validated, so a typo'd key, a malformed entry, or a field on a key that is
156
- declared but not yet implemented throws at construction rather than rendering nothing.
202
+ Expand all/collapse all has no config key. To change it, ask product.
157
203
 
158
- `docs/adr/0001-customization.md` has the reasoning and the full list of mechanisms.
204
+ `docs/adr/0001-customization.md` has the reasoning.
159
205
 
160
206
  ## Adapters
161
207
 
@@ -192,14 +238,13 @@ const organizationActions: ModuleOrganizationActions = useMemo(
192
238
  />
193
239
  ```
194
240
 
195
- The package holds no URL, no polling and no job model — see
196
- `docs/adr/0018-injected-module-organization-actions.md`. Both methods take an `AbortSignal`, which
241
+ The package holds no URL, no polling and no job model. Both methods take an `AbortSignal`, which
197
242
  Cancel and Regenerate use, so honor it or the request outlives the modal. `apply` resolves `void`,
198
243
  which is your chance to invalidate before the modal closes.
199
244
 
200
245
  There is no progress callback. The modal shows an indeterminate spinner and, once the request
201
246
  outlives `ORGANIZE_SLOW_AFTER_MS`, one reassurance line, and it announces each step in the polite
202
- live region. Every host gets the same behaviour without implementing anything.
247
+ live region. Every host gets the same behavior without implementing anything.
203
248
 
204
249
  `organizationAiDisclosure` is one more optional, host-supplied prop: any `ReactNode`, drawn in the
205
250
  modal header. Pass your AI disclosure panel; the package renders it and knows nothing about its
@@ -208,7 +253,7 @@ content.
208
253
  ### The two proposal flags
209
254
 
210
255
  `setPrerequisites` and `setRequirements` are the "Module progression" checkbox pair. They default
211
- to `true` and map to `set_prerequisites` / `set_requirements` on Canvas's generate call. Canvas honours them **at generation time only**:
256
+ to `true` and map to `set_prerequisites` / `set_requirements` on Canvas's generate call. Canvas honors them **at generation time only**:
212
257
  apply writes whatever the proposal carries. Unticking a box means "propose none of these", not
213
258
  "propose them and leave them out", so forward the same pair to both `organize` and `apply` — the
214
259
  two calls have to agree about what the proposal contains.
@@ -19,5 +19,5 @@ export interface CanvasGraphqlAdapterOptions {
19
19
  }
20
20
  export declare function createCanvasGraphqlAdapter({ executeQuery, inlineItemLimit, nodeBudget, onUnsupportedItem, onUnsupportedStatus, studentId, validate, capabilities, includeEstimatedDuration, }: CanvasGraphqlAdapterOptions): ModulesDataAdapter;
21
21
  export { GET_MODULE_ITEMS, GET_MODULES, type GetModuleItemsVariables, type GetModulesVariables, } from './queries';
22
- export { buildStudentContext, deriveModuleProgress, firstSubmission, type GetModuleItemsResult, type GetModulesResult, type GraphqlCompletionRequirement, type GraphqlModuleConnection, type GraphqlModuleItemConnection, type GraphqlModuleItemContent, type GraphqlModuleItemNode, type GraphqlModuleNode, type GraphqlModuleProgression, type GraphqlModuleStatistics, type GraphqlPageInfo, type GraphqlRequirement, type GraphqlSubmission, type GraphqlSubmissionConnection, type ModuleStudentContext, normalizeItemType, normalizeModule, normalizeModuleItem, normalizeModuleItemsPage, normalizeModulesPage, normalizePageInfo, type NormalizeOptions, PartialCanvasResponseError, type PartialResponseSubject, parseDurationMinutes, type UnsupportedModuleItem, type UnsupportedModuleStatus, } from './normalize';
22
+ export { buildStudentContext, deriveModuleProgress, firstSubmission, type GetModuleItemsResult, type GetModulesResult, type GraphqlCompletionRequirement, type GraphqlModuleConnection, type GraphqlModuleItemConnection, type GraphqlModuleItemContent, type GraphqlModuleItemNode, type GraphqlModuleNode, type GraphqlModuleProgression, type GraphqlModulesPageInfo, type GraphqlModuleStatistics, type GraphqlPageInfo, type GraphqlRequirement, type GraphqlSubmission, type GraphqlSubmissionConnection, type ModuleStudentContext, normalizeItemType, normalizeModule, normalizeModuleItem, normalizeModuleItemsPage, normalizeModulesPage, normalizeModulesPageInfo, normalizePageInfo, type NormalizeOptions, PartialCanvasResponseError, type PartialResponseSubject, parseDurationMinutes, type UnsupportedModuleItem, type UnsupportedModuleStatus, } from './normalize';
23
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/canvasGraphql/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,KAAK,EAGV,kBAAkB,EAGnB,MAAM,UAAU,CAAA;AACjB,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC7B,MAAM,aAAa,CAAA;AAUpB,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,UAAU,EAC7C,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,UAAU,KAClB,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAEvE,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,YAAY,CAAA;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAA;IACzD,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC/D;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IAEjC,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC;AAgDD,wBAAgB,0BAA0B,CAAC,EACzC,YAAY,EACZ,eAAmC,EACnC,UAAqC,EACrC,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,QAAe,EACf,YAA0C,EAC1C,wBAAgC,GACjC,EAAE,2BAA2B,GAAG,kBAAkB,CAuGlD;AAED,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,GACzB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/canvasGraphql/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,KAAK,EAGV,kBAAkB,EAInB,MAAM,UAAU,CAAA;AACjB,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC7B,MAAM,aAAa,CAAA;AAWpB,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,UAAU,EAC7C,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,UAAU,KAClB,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAEvE,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,YAAY,CAAA;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAA;IACzD,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC/D;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IAEjC,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC;AA8FD,wBAAgB,0BAA0B,CAAC,EACzC,YAAY,EACZ,eAAmC,EACnC,UAAqC,EACrC,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,QAAe,EACf,YAA0C,EAC1C,wBAAgC,GACjC,EAAE,2BAA2B,GAAG,kBAAkB,CAwGlD;AAED,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,GACzB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAA"}
@@ -1,8 +1,14 @@
1
- import { CompletionRequirement, CompletionRequirementType, Module, ModuleItem, ModuleItemsPage, ModuleItemType, ModuleProgress, ModulesPage, PageInfo } from '../../types/domain';
1
+ import { CompletionRequirement, CompletionRequirementType, Module, ModuleItem, ModuleItemsPage, ModuleItemType, ModuleProgress, ModulesPage, ModulesPageInfo, PageInfo } from '../../types/domain';
2
2
  export interface GraphqlPageInfo {
3
3
  hasNextPage: boolean;
4
4
  endCursor: string | null;
5
5
  }
6
+ export interface GraphqlModulesPageInfo extends GraphqlPageInfo {
7
+ hasPreviousPage?: boolean | null;
8
+ startCursor?: string | null;
9
+ totalCount?: number | null;
10
+ totalNrOfPages?: number | null;
11
+ }
6
12
  export interface GraphqlCompletionRequirement {
7
13
  id: string | number;
8
14
  type: string;
@@ -61,7 +67,7 @@ export interface GraphqlModuleItemNode {
61
67
  }
62
68
  export interface GraphqlModuleItemConnection {
63
69
  nodes?: (GraphqlModuleItemNode | null)[] | null;
64
- pageInfo: GraphqlPageInfo;
70
+ pageInfo: GraphqlModulesPageInfo;
65
71
  }
66
72
  export interface GraphqlModuleNode {
67
73
  _id: string | number;
@@ -84,7 +90,7 @@ export interface GraphqlModuleNode {
84
90
  }
85
91
  export interface GraphqlModuleConnection {
86
92
  nodes?: (GraphqlModuleNode | null)[] | null;
87
- pageInfo: GraphqlPageInfo;
93
+ pageInfo: GraphqlModulesPageInfo;
88
94
  }
89
95
  export interface GetModulesResult {
90
96
  legacyNode?: {
@@ -122,6 +128,7 @@ export declare function normalizeItemType(content: GraphqlModuleItemContent | nu
122
128
  export declare function parseDurationMinutes(value: string | null | undefined): number | null;
123
129
  export declare function normalizeCompletionRequirementType(type: string): CompletionRequirementType;
124
130
  export declare function normalizePageInfo(pageInfo: GraphqlPageInfo | null | undefined): PageInfo;
131
+ export declare function normalizeModulesPageInfo(pageInfo: GraphqlModulesPageInfo | null | undefined): ModulesPageInfo;
125
132
  export interface ModuleStudentContext {
126
133
  locked: boolean;
127
134
  workflowState: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/adapters/canvasGraphql/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,MAAM,EACN,UAAU,EACV,eAAe,EAEf,cAAc,EACd,cAAc,EACd,WAAW,EAEX,QAAQ,EACT,MAAM,oBAAoB,CAAA;AAG3B,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;CAC5C;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,qBAAqB,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAA;CAC3D;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,eAAe,CAAC,EAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;IACtD;;;OAGG;IACH,sBAAsB,CAAC,EAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;CAC9D;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvC;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAA;IACzC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;IAC/C,QAAQ,EAAE,eAAe,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,yBAAyB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1C,aAAa,CAAC,EAAE,CAAC;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;IAC/E,sBAAsB,CAAC,EAAE,CAAC,4BAA4B,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;IACvE,WAAW,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAA;IAC7C,oBAAoB,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACrD,qBAAqB,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAA;IAC1D,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;IAC3C,QAAQ,EAAE,eAAe,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;CAC3E;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE;QACX,sBAAsB,CAAC,EAAE,CAAC,4BAA4B,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;QACvE,WAAW,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAA;QAC7C,qBAAqB,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAA;KAC3D,GAAG,IAAI,CAAA;CACT;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,YAAY,CAAA;AAM5D,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAA;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;gBAEV,OAAO,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAUvE;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,sBAAsB,CAAA;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAA;IACzD,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAA;CAChE;AAkDD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,GACnD,cAAc,GAAG,IAAI,CAQvB;AAKD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAcpF;AAWD,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,CAE1F;AAaD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,CAKxF;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAA;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC3C,oEAAoE;IACpE,2BAA2B,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;CAChE;AAQD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,GACnD,iBAAiB,GAAG,IAAI,CAK1B;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,EACxD,sBAAsB,EAAE,SAAS,qBAAqB,EAAE,GACvD,oBAAoB,GAAG,SAAS,CA6BlC;AAmDD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,iBAAiB,EACvB,sBAAsB,EAAE,SAAS,qBAAqB,EAAE,EACxD,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,OAAO,GAAE,gBAAqB,GAC7B,cAAc,GAAG,SAAS,CAsB5B;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,MAAM,EAChB,8BAA8B,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1E,OAAO,GAAE,gBAAqB,EAC9B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,UAAU,GAAG,IAAI,CAkCnB;AAwCD,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAmC/F;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC3C,OAAO,GAAE,gBAAqB,GAC7B,WAAW,CAUb;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAC/C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAUjB"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/adapters/canvasGraphql/normalize.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,14 @@
1
+ import { DueRange } from '../../components/labels';
1
2
  import { DocumentNode } from 'graphql';
2
3
  export declare const GET_MODULES: DocumentNode;
3
4
  export declare const GET_MODULE_ITEMS: DocumentNode;
4
5
  export interface GetModulesVariables {
5
6
  courseId: string;
6
- first: number;
7
+ /** Unset (with `last` set instead) for backward pagination — never both in one call. */
8
+ first?: number | null;
7
9
  after?: string | null;
10
+ before?: string | null;
11
+ last?: number | null;
8
12
  includeItems: boolean;
9
13
  itemsFirst: number;
10
14
  includeSubmissions: boolean;
@@ -15,7 +19,11 @@ export interface GetModulesVariables {
15
19
  /** The subset of Canvas's `ModuleFilterInput` this adapter compiles to. */
16
20
  export interface ModuleFilterInput {
17
21
  completionStatus?: ModuleCompletionStatus;
22
+ moduleStatus?: readonly ModuleStatusFilter[];
23
+ dueBetween?: DueRange;
18
24
  }
25
+ /** Canvas's `ModuleStatus`, the fused progression-and-missing-work status. */
26
+ export type ModuleStatusFilter = 'LOCKED' | 'MISSING' | 'MISSING_AND_INCOMPLETE' | 'INCOMPLETE' | 'COMPLETE' | 'IN_PROGRESS' | 'NOT_STARTED';
19
27
  /** Canvas's `ModuleCompletionStatus`. `INCOMPLETE` includes locked, unlocked and started. */
20
28
  export type ModuleCompletionStatus = 'COMPLETED' | 'INCOMPLETE' | 'IN_PROGRESS' | 'NOT_STARTED';
21
29
  export interface GetModuleItemsVariables {
@@ -23,7 +31,9 @@ export interface GetModuleItemsVariables {
23
31
  includeSubmissions: boolean;
24
32
  includeEstimatedDuration: boolean;
25
33
  studentId?: string | null;
26
- first: number;
27
- after?: string | null;
34
+ first: number | null;
35
+ after: string | null;
36
+ before: string | null;
37
+ last: number | null;
28
38
  }
29
39
  //# sourceMappingURL=queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/adapters/canvasGraphql/queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAuF3C,eAAO,MAAM,WAAW,EAAE,YA+DzB,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,YAkC9B,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,wBAAwB,EAAE,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAClC;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;CAC1C;AAED,6FAA6F;AAC7F,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,CAAA;AAE/F,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,wBAAwB,EAAE,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/adapters/canvasGraphql/queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAuF3C,eAAO,MAAM,WAAW,EAAE,YAqEzB,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,YAwC9B,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,wBAAwB,EAAE,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAClC;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;IACzC,YAAY,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAC5C,UAAU,CAAC,EAAE,QAAQ,CAAA;CACtB;AAED,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,SAAS,GACT,wBAAwB,GACxB,YAAY,GACZ,UAAU,GACV,aAAa,GACb,aAAa,CAAA;AAEjB,6FAA6F;AAC7F,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,CAAA;AAE/F,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,wBAAwB,EAAE,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB"}
@@ -1,4 +1,5 @@
1
1
  import { Module, ModuleItem } from '../types/domain';
2
+ import { FilterCapabilities } from '../types/filterClause';
2
3
  import { ModulesDataAdapter } from './types';
3
4
  export { INLINE_ITEM_LIMIT } from './limits';
4
5
  export interface InMemoryFixture {
@@ -21,5 +22,6 @@ export declare class InMemoryCourseMismatchError extends Error {
21
22
  readonly received: string;
22
23
  constructor(expected: string, received: string);
23
24
  }
25
+ export declare const IN_MEMORY_CAPABILITIES: FilterCapabilities;
24
26
  export declare function createInMemoryAdapter(fixture: InMemoryFixture, options?: InMemoryAdapterOptions): ModulesDataAdapter;
25
27
  //# sourceMappingURL=inMemory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inMemory.d.ts","sourceRoot":"","sources":["../../src/adapters/inMemory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAgC,MAAM,iBAAiB,CAAA;AAGvF,OAAO,KAAK,EAGV,kBAAkB,EAGnB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;CAC9C;AAED,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,CAAA;AAE5B,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,iBAAiB,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;CAC7E;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;gBAEb,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAS/C;AAmDD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE,sBAA2B,GACnC,kBAAkB,CAyFpB"}
1
+ {"version":3,"file":"inMemory.d.ts","sourceRoot":"","sources":["../../src/adapters/inMemory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EAIX,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAgB,MAAM,uBAAuB,CAAA;AAE7E,OAAO,KAAK,EAGV,kBAAkB,EAInB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;CAC9C;AAED,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,CAAA;AAE5B,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,iBAAiB,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;CAC7E;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;gBAEb,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAS/C;AAyED,eAAO,MAAM,sBAAsB,EAAE,kBAEpC,CAAA;AAsCD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE,sBAA2B,GACnC,kBAAkB,CA4FpB"}
@@ -1,3 +1,3 @@
1
- export type { ListModuleItemsArgs, ListModulesArgs, ModulesDataAdapter, SetAllModulesCollapsedArgs, SetModuleCollapsedArgs, } from './types';
1
+ export type { ListModuleItemsArgs, ListModulesArgs, ModulesDataAdapter, ModulesPageRequest, SetAllModulesCollapsedArgs, SetModuleCollapsedArgs, } from './types';
2
2
  export { createInMemoryAdapter, InMemoryCourseMismatchError, INLINE_ITEM_LIMIT, type InMemoryAdapterOptions, type InMemoryFixture, type InMemoryOperation, type InMemoryRequest, } from './inMemory';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAA"}
@@ -1,14 +1,36 @@
1
+ import { DueRange } from '../components/labels';
1
2
  import { ModuleItemsPage, ModulesPage } from '../types/domain';
2
3
  import { FilterCapabilities, FilterClause } from '../types/filterClause';
4
+ /**
5
+ * A relay cursor connection can only reach page 1, a cursor-adjacent page, or the last page.
6
+ * `last.count` is the true size of that page — the caller works it out from the total it already
7
+ * has, since the true last page can be shorter than `pageSize` and the adapter has no total to
8
+ * work it out itself.
9
+ */
10
+ export type ModulesPageRequest = {
11
+ kind: 'first';
12
+ } | {
13
+ kind: 'after';
14
+ cursor: string;
15
+ } | {
16
+ kind: 'before';
17
+ cursor: string;
18
+ } | {
19
+ kind: 'last';
20
+ count: number;
21
+ };
3
22
  /**
4
23
  * Five obligations an adapter must meet:
5
24
  *
6
25
  * 1. Return the transport's real `pageInfo`. GraphQL: `endCursor`. REST: the parsed `Link` header.
7
- * 2. Never synthesize a cursor.
26
+ * 2. Never synthesize a cursor for a real transport. (A test double encoding its own offset as a
27
+ * cursor doesn't count — that's the double's own transport, not a shortcut.)
8
28
  * 3. Abort on the supplied `AbortSignal`.
9
29
  * 4. Normalize fully. No transport detail reaches a caller.
10
30
  * 5. Honor `ListModulesArgs.filter`, or throw. Serving a clause `capabilities` does not declare
11
31
  * issues a cursor against the wrong result set, so every page after it is wrong too.
32
+ * 6. Read a `within` clause's window from `dueRange`, or throw. The clause carries a day count so
33
+ * the query key stays stable; only the caller knows the viewer's clock.
12
34
  */
13
35
  export interface ModulesDataAdapter {
14
36
  listModules(args: ListModulesArgs): Promise<ModulesPage>;
@@ -22,10 +44,12 @@ export interface ModulesDataAdapter {
22
44
  }
23
45
  export interface ListModulesArgs {
24
46
  courseId: string;
25
- cursor?: string | null;
47
+ page?: ModulesPageRequest;
26
48
  pageSize: number;
27
49
  /** Only ever a clause `capabilities` admits. Throw on anything else. */
28
50
  filter?: FilterClause;
51
+ /** Required when `filter.op` is `within`. */
52
+ dueRange?: DueRange;
29
53
  includeItems: boolean;
30
54
  inlineItemsFirst?: number;
31
55
  inlineFirst?: number;
@@ -34,7 +58,7 @@ export interface ListModulesArgs {
34
58
  export interface ListModuleItemsArgs {
35
59
  courseId: string;
36
60
  moduleId: string;
37
- cursor?: string | null;
61
+ page?: ModulesPageRequest;
38
62
  pageSize: number;
39
63
  signal?: AbortSignal;
40
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAE7E;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACxD,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IACpE,qDAAqD;IACrD,kBAAkB,CAAC,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,2FAA2F;IAC3F,sBAAsB,CAAC,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAC3C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAE7E;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnC;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACxD,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IACpE,qDAAqD;IACrD,kBAAkB,CAAC,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,2FAA2F;IAC3F,sBAAsB,CAAC,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAC3C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB"}
@@ -5,7 +5,7 @@ import { ModuleItemType } from '../types';
5
5
  * on it, plus `foundation-lms` — the white-label host has no `appContext` value of its own.
6
6
  */
7
7
  export type ModulesAnalyticsHost = 'canvas-academic' | 'canvas-career' | 'canvas-uae' | 'foundation-lms';
8
- export type ModulesAnalyticsEvent = 'module-expand' | 'module-collapse' | 'expand-all' | 'collapse-all' | 'load-more-modules' | 'load-more-items' | `item-click-${ModuleItemType}`;
8
+ export type ModulesAnalyticsEvent = 'module-expand' | 'module-collapse' | 'expand-all' | 'collapse-all' | 'paginate-modules' | 'paginate-items' | `item-click-${ModuleItemType}`;
9
9
  export interface ModulesAnalyticsPayload {
10
10
  event: ModulesAnalyticsEvent;
11
11
  host: ModulesAnalyticsHost;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,iBAAiB,GACjB,eAAe,GACf,YAAY,GACZ,gBAAgB,CAAA;AAEpB,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,iBAAiB,GACjB,YAAY,GACZ,cAAc,GACd,mBAAmB,GACnB,iBAAiB,GACjB,cAAc,cAAc,EAAE,CAAA;AAElC,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,qBAAqB,CAAA;IAC5B,IAAI,EAAE,oBAAoB,CAAA;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,iBAAiB,GACjB,eAAe,GACf,YAAY,GACZ,gBAAgB,CAAA;AAEpB,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,iBAAiB,GACjB,YAAY,GACZ,cAAc,GACd,kBAAkB,GAClB,gBAAgB,GAChB,cAAc,cAAc,EAAE,CAAA;AAElC,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,qBAAqB,CAAA;IAC5B,IAAI,EAAE,oBAAoB,CAAA;CAC3B"}
@@ -1,3 +1,4 @@
1
+ import { ModulesPageRequest } from '../adapters/types';
1
2
  import { FilterClause } from '../types/filterClause';
2
3
  export type ModulesView = 'student' | 'teacher';
3
4
  export interface ModulesListKeyOptions {
@@ -6,10 +7,12 @@ export interface ModulesListKeyOptions {
6
7
  includeItems?: boolean;
7
8
  /** The clause partitions, not the chip. Chips the server never saw share one entry. */
8
9
  filter?: FilterClause;
10
+ page?: ModulesPageRequest;
9
11
  }
10
12
  export interface ModuleItemsKeyOptions {
11
13
  view?: ModulesView;
12
14
  pageSize?: number;
15
+ page?: ModulesPageRequest;
13
16
  }
14
17
  export type ModulesAllKey = readonly ['platform-modules'];
15
18
  export type ModulesCourseKey = readonly ['platform-modules', string];
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/cache/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAA;AAE/C,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,uFAAuF;IACvF,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAA;AACzD,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;AACpE,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAA;AACjG,MAAM,MAAM,cAAc,GAAG,SAAS;IACpC,kBAAkB;IAClB,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,qBAAqB;CACtB,CAAA;AAID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAA;IAC3B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAA;IAC1C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAAA;IACpE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAAA;CACxF;AAED,eAAO,MAAM,WAAW,EAAE,iBAOzB,CAAA;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,CAAC,CAEjG;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAElE"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/cache/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAA;AAE/C,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,uFAAuF;IACvF,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAA;AACzD,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;AACpE,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAA;AACjG,MAAM,MAAM,cAAc,GAAG,SAAS;IACpC,kBAAkB;IAClB,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,qBAAqB;CACtB,CAAA;AAID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAA;IAC3B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAA;IAC1C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAAA;IACpE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAAA;CACxF;AAED,eAAO,MAAM,WAAW,EAAE,iBAOzB,CAAA;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,CAAC,CAEjG;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAElE"}
@@ -2,7 +2,7 @@ import { ReactElement } from 'react';
2
2
  export interface FilterSelectProps {
3
3
  value: string;
4
4
  onChange: (filter: string) => void;
5
- describedBy?: string;
5
+ interaction?: 'enabled' | 'disabled';
6
6
  }
7
- export declare function FilterSelect({ value, onChange, describedBy, }: FilterSelectProps): ReactElement | null;
7
+ export declare function FilterSelect({ value, onChange, interaction, }: FilterSelectProps): ReactElement | null;
8
8
  //# sourceMappingURL=FilterSelect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterSelect.d.ts","sourceRoot":"","sources":["../../src/components/FilterSelect.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAA;AAKzD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAkBD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,WAAW,GACZ,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CAqCzC"}
1
+ {"version":3,"file":"FilterSelect.d.ts","sourceRoot":"","sources":["../../src/components/FilterSelect.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAA;AAKzD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;CACrC;AAkBD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,WAAuB,GACxB,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CAqCzC"}
@@ -1,6 +1,5 @@
1
1
  import { Breakpoints } from '@instructure/platform-with-breakpoints';
2
- import { ProgressBar } from '@instructure/ui-progress/v11_7';
3
- import { ComponentProps, NamedExoticComponent } from 'react';
2
+ import { NamedExoticComponent } from 'react';
4
3
  import { ModuleItemsState } from '../hooks';
5
4
  import { Module } from '../types';
6
5
  export interface ModuleCardProps {
@@ -15,6 +14,5 @@ export interface ModuleCardProps {
15
14
  breakpoints?: Breakpoints;
16
15
  toggleRef?: (moduleId: string, element: HTMLButtonElement | null) => void;
17
16
  }
18
- export declare const progressBarTheme: ComponentProps<typeof ProgressBar>['themeOverride'];
19
17
  export declare const ModuleCard: NamedExoticComponent<ModuleCardProps>;
20
18
  //# sourceMappingURL=ModuleCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleCard.d.ts","sourceRoot":"","sources":["../../src/components/ModuleCard.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAOzE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAK5D,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,oBAAoB,EAI1B,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,UAAU,CAAA;AAmBlD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,KAAK,EAAE,IAAI,CAAA;IACX,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAA;CAC1E;AAwGD,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,CAAC,eAAe,CAQ/E,CAAA;AAoXF,eAAO,MAAM,UAAU,EAAE,oBAAoB,CAAC,eAAe,CAAwB,CAAA"}
1
+ {"version":3,"file":"ModuleCard.d.ts","sourceRoot":"","sources":["../../src/components/ModuleCard.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAczE,OAAO,EAIL,KAAK,oBAAoB,EAI1B,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,UAAU,CAAA;AAmBlD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,KAAK,EAAE,IAAI,CAAA;IACX,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAA;CAC1E;AAygBD,eAAO,MAAM,UAAU,EAAE,oBAAoB,CAAC,eAAe,CAAwB,CAAA"}
@@ -17,6 +17,7 @@ export declare const NoLabel: Story;
17
17
  export declare const ExpandedWithStatusPills: Story;
18
18
  export declare const ExpandedNonGradableItems: Story;
19
19
  export declare const ExpandedLockedModule: Story;
20
+ export declare const PaginatedItems: Story;
20
21
  export declare const ExpandedUntouchedModule: Story;
21
22
  export declare const ProgressNotStarted: Story;
22
23
  export declare const ProgressPartial: Story;
@@ -31,6 +32,8 @@ export declare const StackedStatusPill: Story;
31
32
  export declare const InlineStatusPill: Story;
32
33
  export declare const DueSoonPill: Story;
33
34
  export declare const DueSoonPillMobile: Story;
35
+ export declare const StackedItemPills: Story;
36
+ export declare const StackedMetaLine: Story;
34
37
  export declare const LongModuleName: Story;
35
38
  export declare const LetterLabelScheme: Story;
36
39
  export declare const NoLabelScheme: Story;
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleCard.stories.d.ts","sourceRoot":"","sources":["../../src/components/ModuleCard.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAO3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAe,KAAK,SAAS,EAAoB,MAAM,eAAe,CAAA;AAE7E,KAAK,mBAAmB,GAAG,cAAc,CAAC,OAAO,UAAU,CAAC,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAA;AA4BnF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAgBnC,CAAA;AAED,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAElC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAA;AAEhC,eAAO,MAAM,MAAM,EAAE,KAIpB,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAEpB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAEvB,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,KAErB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAErC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,KAWtC,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAElC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAErC,CAAA;AAmBD,eAAO,MAAM,kBAAkB,EAAE,KAEhC,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,KAEpC,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,KAEtC,CAAA;AAaD,eAAO,MAAM,uBAAuB,EAAE,KAOrC,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,KAUvC,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAgB/B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAiBzB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAO5B,CAAA;AAQD,eAAO,MAAM,iBAAiB,EAAE,KAU/B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAM3B,CAAA"}
1
+ {"version":3,"file":"ModuleCard.stories.d.ts","sourceRoot":"","sources":["../../src/components/ModuleCard.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,KAAK,cAAc,EAA+B,MAAM,OAAO,CAAA;AAOxE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAe,KAAK,SAAS,EAAoB,MAAM,eAAe,CAAA;AAE7E,KAAK,mBAAmB,GAAG,cAAc,CAAC,OAAO,UAAU,CAAC,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAA;AAgCnF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAgBnC,CAAA;AAED,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAElC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAA;AAEhC,eAAO,MAAM,MAAM,EAAE,KAIpB,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAEpB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAEvB,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,KAErB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAErC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,KAWtC,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAElC,CAAA;AAyBD,eAAO,MAAM,cAAc,EAAE,KAG5B,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAErC,CAAA;AAmBD,eAAO,MAAM,kBAAkB,EAAE,KAEhC,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,KAEpC,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,KAEtC,CAAA;AAaD,eAAO,MAAM,uBAAuB,EAAE,KAOrC,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,KAUvC,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAgB/B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAiBzB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,KAc9B,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAgB7B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAO5B,CAAA;AAQD,eAAO,MAAM,iBAAiB,EAAE,KAU/B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAM3B,CAAA"}
@@ -16,6 +16,9 @@ export interface ModuleItemRowProps {
16
16
  today: Date;
17
17
  attachedAbove?: boolean;
18
18
  attachedBelow?: boolean;
19
+ stackPill?: boolean;
20
+ moduleLabel?: string | null;
21
+ itemNumber?: number;
19
22
  }
20
23
  export declare const ModuleItemRow: NamedExoticComponent<ModuleItemRowProps>;
21
24
  //# sourceMappingURL=ModuleItemRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleItemRow.d.ts","sourceRoot":"","sources":["../../src/components/ModuleItemRow.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,aAAa,EAKlB,KAAK,oBAAoB,EAO1B,MAAM,OAAO,CAAA;AAEd,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAkB1C,eAAO,MAAM,iBAAiB,EAAE,aAQ/B,CAAA;AAED,eAAO,MAAM,+BAA+B,EAAE,aAM7C,CAAA;AAOD,wBAAgB,mBAAmB,IAAI,aAAa,CAanD;AAED,0FAA0F;AAC1F,eAAO,MAAM,SAAS;;;CAA2D,CAAA;AAIjF,eAAO,MAAM,oBAAoB,EAAE,aAElC,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,SAAS,EAAE,aAKvB,CAAA;AAmBD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,IAAI,CAAA;IACX,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AA+MD,eAAO,MAAM,aAAa,EAAE,oBAAoB,CAAC,kBAAkB,CAA2B,CAAA"}
1
+ {"version":3,"file":"ModuleItemRow.d.ts","sourceRoot":"","sources":["../../src/components/ModuleItemRow.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,aAAa,EAKlB,KAAK,oBAAoB,EAO1B,MAAM,OAAO,CAAA;AAEd,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAkB1C,eAAO,MAAM,iBAAiB,EAAE,aAQ/B,CAAA;AAED,eAAO,MAAM,+BAA+B,EAAE,aAM7C,CAAA;AAOD,wBAAgB,mBAAmB,IAAI,aAAa,CAanD;AAED,0FAA0F;AAC1F,eAAO,MAAM,SAAS;;;CAA2D,CAAA;AAwBjF,eAAO,MAAM,oBAAoB,EAAE,aAElC,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,SAAS,EAAE,aAKvB,CAAA;AA6BD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,IAAI,CAAA;IACX,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AA6RD,eAAO,MAAM,aAAa,EAAE,oBAAoB,CAAC,kBAAkB,CAA2B,CAAA"}
@@ -7,7 +7,6 @@ export interface ModulesRequestCounts {
7
7
  }
8
8
  export interface ModulesListProps {
9
9
  data: UseModulesPageDataResult;
10
- courseName?: string;
11
10
  today?: Date;
12
11
  requestCounts?: ModulesRequestCounts;
13
12
  showDiagnostics?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ModulesList.d.ts","sourceRoot":"","sources":["../../src/components/ModulesList.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,SAAS,EAOf,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAoB,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAOlE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,wBAAwB,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,aAAa,CAAC,EAAE,oBAAoB,CAAA;IACpC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAA;IAC/B,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACjC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,yBAAyB,CAAA;IAC/C,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAA;IAClC,0FAA0F;IAC1F,wBAAwB,CAAC,EAAE,SAAS,CAAA;CACrC;AAsfD,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAET,CAAA"}
1
+ {"version":3,"file":"ModulesList.d.ts","sourceRoot":"","sources":["../../src/components/ModulesList.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAoB,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAOlE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,wBAAwB,CAAA;IAC9B,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,aAAa,CAAC,EAAE,oBAAoB,CAAA;IACpC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAA;IAC/B,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACjC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,yBAAyB,CAAA;IAC/C,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAA;IAClC,0FAA0F;IAC1F,wBAAwB,CAAC,EAAE,SAAS,CAAA;CACrC;AA6fD,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAET,CAAA"}
@@ -15,8 +15,7 @@ interface ModulesListStoryProps {
15
15
  initialExpandedModuleIds: string[];
16
16
  i18n: 'none' | 'pseudo' | 'rebranded' | 'partial';
17
17
  timezone: 'none' | 'America/Denver' | 'America/Los_Angeles' | 'Australia/Sydney';
18
- courseName: string;
19
- navigation: 'none' | 'rewritten' | 'intercepted' | 'moduleLinks' | 'breadcrumb';
18
+ navigation: 'none' | 'rewritten' | 'intercepted' | 'moduleLinks';
20
19
  config: HostConfigName;
21
20
  theme: ThemeName;
22
21
  showDiagnostics: boolean;
@@ -40,10 +39,12 @@ export declare const LockReasons: Story;
40
39
  export declare const ModuleTitleLinks: Story;
41
40
  export declare const EmptyCourse: Story;
42
41
  export declare const TeacherViewNoProgress: Story;
42
+ export declare const FilterNotStarted: Story;
43
43
  export declare const FilterInProgress: Story;
44
44
  export declare const FilterComplete: Story;
45
45
  export declare const FilterDueThisWeek: Story;
46
46
  export declare const FilterMissing: Story;
47
+ export declare const FilterNoMatches: Story;
47
48
  export declare const StatusCoverage: Story;
48
49
  export declare const PseudoLocalized: Story;
49
50
  export declare const HostRebrand: Story;