@clickview/lite 0.75.0-rc.2 → 0.75.0-rc.4

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 (193) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{119-lite-a1f592f602.chunk.css → 1243-lite-13eda8f6a0.chunk.css} +2 -4
  3. package/dist/css/{7230-lite-36ff6e6d53.chunk.css → 1867-lite-8baa8af02b.chunk.css} +3 -5
  4. package/dist/css/{5241-lite-baab687563.chunk.css → 4203-lite-9ffab89741.chunk.css} +3 -5
  5. package/dist/css/{8364-lite-99938dea56.chunk.css → 5193-lite-d434056013.chunk.css} +1 -0
  6. package/dist/css/{7339-lite-05c396fed3.chunk.css → 6756-lite-839687d3d7.chunk.css} +1 -0
  7. package/dist/css/{9527-lite-1d2221b6a8.chunk.css → 7103-lite-fef3024f61.chunk.css} +2 -4
  8. package/dist/css/{8856-lite-827b34aed7.chunk.css → 8856-lite-c114ab5c89.chunk.css} +1 -1
  9. package/dist/languages/en.json +1 -1
  10. package/dist/scripts/104-0c03791b45-lite.chunk.js +2 -0
  11. package/dist/scripts/104-0c03791b45-lite.chunk.js.map +1 -0
  12. package/dist/scripts/1074-4f6b136f9a-lite.chunk.js +2 -0
  13. package/dist/scripts/1074-4f6b136f9a-lite.chunk.js.map +1 -0
  14. package/dist/scripts/1087-861be5211f-lite.chunk.js +2 -0
  15. package/dist/scripts/1087-861be5211f-lite.chunk.js.map +1 -0
  16. package/dist/scripts/1192-d409863a3c-lite.chunk.js +2 -0
  17. package/dist/scripts/1192-d409863a3c-lite.chunk.js.map +1 -0
  18. package/dist/scripts/1199-d2fcbb547e-lite.chunk.js +2 -0
  19. package/dist/scripts/1199-d2fcbb547e-lite.chunk.js.map +1 -0
  20. package/dist/scripts/121-1b744469ee-lite.chunk.js +2 -0
  21. package/dist/scripts/121-1b744469ee-lite.chunk.js.map +1 -0
  22. package/dist/scripts/{1221-502395e693-lite.chunk.js → 1221-1109d5379d-lite.chunk.js} +3 -3
  23. package/dist/scripts/1221-1109d5379d-lite.chunk.js.map +1 -0
  24. package/dist/scripts/1243-ede924125c-lite.chunk.js +2 -0
  25. package/dist/scripts/1243-ede924125c-lite.chunk.js.map +1 -0
  26. package/dist/scripts/147-44ee7e9a78-lite.chunk.js +2 -0
  27. package/dist/scripts/147-44ee7e9a78-lite.chunk.js.map +1 -0
  28. package/dist/scripts/1491-ab92a040e5-lite.chunk.js +2 -0
  29. package/dist/scripts/1491-ab92a040e5-lite.chunk.js.map +1 -0
  30. package/dist/scripts/{1610-7f58bb25a9-lite.chunk.js → 1610-bb6eff2ff1-lite.chunk.js} +2 -2
  31. package/dist/scripts/1610-bb6eff2ff1-lite.chunk.js.map +1 -0
  32. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js → 1867-3b447a1b85-lite.chunk.js} +2 -2
  33. package/dist/scripts/{7230-71f8d6d1bd-lite.chunk.js.map → 1867-3b447a1b85-lite.chunk.js.map} +1 -1
  34. package/dist/scripts/{218-297de74688-lite.chunk.js → 218-f6cc4a3b6a-lite.chunk.js} +2 -2
  35. package/dist/scripts/218-f6cc4a3b6a-lite.chunk.js.map +1 -0
  36. package/dist/scripts/2258-ed7383502f-lite.chunk.js +3 -0
  37. package/dist/scripts/2258-ed7383502f-lite.chunk.js.map +1 -0
  38. package/dist/scripts/{2968-c4c0114915-lite.chunk.js → 2968-13e56eeff8-lite.chunk.js} +1 -1
  39. package/dist/scripts/2968-13e56eeff8-lite.chunk.js.map +1 -0
  40. package/dist/scripts/3268-2736356687-lite.chunk.js +2 -0
  41. package/dist/scripts/{3268-faca1bf46e-lite.chunk.js.map → 3268-2736356687-lite.chunk.js.map} +1 -1
  42. package/dist/scripts/3597-eaae787997-lite.chunk.js +3 -0
  43. package/dist/scripts/3597-eaae787997-lite.chunk.js.map +1 -0
  44. package/dist/scripts/3836-425334ab13-lite.chunk.js +2 -0
  45. package/dist/scripts/{3836-f2a0c9f713-lite.chunk.js.map → 3836-425334ab13-lite.chunk.js.map} +1 -1
  46. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js +2 -0
  47. package/dist/scripts/3837-e4c5bb738b-lite.chunk.js.map +1 -0
  48. package/dist/scripts/4185-7178e5a716-lite.chunk.js +2 -0
  49. package/dist/scripts/4185-7178e5a716-lite.chunk.js.map +1 -0
  50. package/dist/scripts/4203-ee50e89841-lite.chunk.js +3 -0
  51. package/dist/scripts/4203-ee50e89841-lite.chunk.js.map +1 -0
  52. package/dist/scripts/4598-bcd3f6f8a7-lite.chunk.js +2 -0
  53. package/dist/scripts/{4598-2b1daca7ae-lite.chunk.js.map → 4598-bcd3f6f8a7-lite.chunk.js.map} +1 -1
  54. package/dist/scripts/{4722-d96da2a258-lite.chunk.js → 4722-9eb591621a-lite.chunk.js} +3 -3
  55. package/dist/scripts/4722-9eb591621a-lite.chunk.js.map +1 -0
  56. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js +2 -0
  57. package/dist/scripts/4948-f21dad2ca1-lite.chunk.js.map +1 -0
  58. package/dist/scripts/{5153-079b4125ae-lite.chunk.js → 5153-cf62a95421-lite.chunk.js} +3 -3
  59. package/dist/scripts/5153-cf62a95421-lite.chunk.js.map +1 -0
  60. package/dist/scripts/6137-bc8b193237-lite.chunk.js +2 -0
  61. package/dist/scripts/6137-bc8b193237-lite.chunk.js.map +1 -0
  62. package/dist/scripts/6756-cfd00009e4-lite.chunk.js +3 -0
  63. package/dist/scripts/6756-cfd00009e4-lite.chunk.js.map +1 -0
  64. package/dist/scripts/6790-36ce6dda04-lite.chunk.js +2 -0
  65. package/dist/scripts/6790-36ce6dda04-lite.chunk.js.map +1 -0
  66. package/dist/scripts/705-10a85bae7a-lite.chunk.js +2 -0
  67. package/dist/scripts/705-10a85bae7a-lite.chunk.js.map +1 -0
  68. package/dist/scripts/7103-14bd3771d2-lite.chunk.js +2 -0
  69. package/dist/scripts/7103-14bd3771d2-lite.chunk.js.map +1 -0
  70. package/dist/scripts/7148-d966512e45-lite.chunk.js +2 -0
  71. package/dist/scripts/7148-d966512e45-lite.chunk.js.map +1 -0
  72. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js +2 -0
  73. package/dist/scripts/7205-12a6b2ac55-lite.chunk.js.map +1 -0
  74. package/dist/scripts/7438-38f60d3e8e-lite.chunk.js +2 -0
  75. package/dist/scripts/7438-38f60d3e8e-lite.chunk.js.map +1 -0
  76. package/dist/scripts/7480-e0749592fc-lite.chunk.js +2 -0
  77. package/dist/scripts/7480-e0749592fc-lite.chunk.js.map +1 -0
  78. package/dist/scripts/8010-e9163f5bee-lite.chunk.js +2 -0
  79. package/dist/scripts/8010-e9163f5bee-lite.chunk.js.map +1 -0
  80. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js +3 -0
  81. package/dist/scripts/8410-1f1fd5ccf0-lite.chunk.js.map +1 -0
  82. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js +2 -0
  83. package/dist/scripts/8705-ecd20ef6cb-lite.chunk.js.map +1 -0
  84. package/dist/scripts/8856-4da691f96f-lite.chunk.js +2 -0
  85. package/dist/scripts/8856-4da691f96f-lite.chunk.js.map +1 -0
  86. package/dist/scripts/9003-fc8e674468-lite.chunk.js +2 -0
  87. package/dist/scripts/9003-fc8e674468-lite.chunk.js.map +1 -0
  88. package/dist/scripts/9042-add0f1c2e2-lite.chunk.js +2 -0
  89. package/dist/scripts/9042-add0f1c2e2-lite.chunk.js.map +1 -0
  90. package/dist/scripts/9103-4eec16d73b-lite.chunk.js +2 -0
  91. package/dist/scripts/9103-4eec16d73b-lite.chunk.js.map +1 -0
  92. package/dist/scripts/9134-a6a5fc92cf-lite.chunk.js +2 -0
  93. package/dist/scripts/9134-a6a5fc92cf-lite.chunk.js.map +1 -0
  94. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js +2 -0
  95. package/dist/scripts/9266-f0ad8d5cb3-lite.chunk.js.map +1 -0
  96. package/dist/scripts/9620-3746c84350-lite.chunk.js +3 -0
  97. package/dist/scripts/9620-3746c84350-lite.chunk.js.map +1 -0
  98. package/dist/scripts/9740-9d50d31b72-lite.chunk.js +2 -0
  99. package/dist/scripts/9740-9d50d31b72-lite.chunk.js.map +1 -0
  100. package/dist/scripts/{bundle-95a6fc2722.min.js → bundle-fc60888464.min.js} +3 -3
  101. package/dist/scripts/{bundle-95a6fc2722.min.js.map → bundle-fc60888464.min.js.map} +1 -1
  102. package/package.json +1 -1
  103. package/dist/scripts/104-b62a8447f0-lite.chunk.js +0 -2
  104. package/dist/scripts/104-b62a8447f0-lite.chunk.js.map +0 -1
  105. package/dist/scripts/107-989ac2dc47-lite.chunk.js +0 -2
  106. package/dist/scripts/107-989ac2dc47-lite.chunk.js.map +0 -1
  107. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js +0 -2
  108. package/dist/scripts/119-e3a8bd94dd-lite.chunk.js.map +0 -1
  109. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js +0 -2
  110. package/dist/scripts/1199-a2ac2338d0-lite.chunk.js.map +0 -1
  111. package/dist/scripts/121-bf7a153eb8-lite.chunk.js +0 -2
  112. package/dist/scripts/121-bf7a153eb8-lite.chunk.js.map +0 -1
  113. package/dist/scripts/1221-502395e693-lite.chunk.js.map +0 -1
  114. package/dist/scripts/1400-43b37bfa8d-lite.chunk.js +0 -2
  115. package/dist/scripts/1400-43b37bfa8d-lite.chunk.js.map +0 -1
  116. package/dist/scripts/1610-7f58bb25a9-lite.chunk.js.map +0 -1
  117. package/dist/scripts/218-297de74688-lite.chunk.js.map +0 -1
  118. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js +0 -3
  119. package/dist/scripts/2258-4d0639c9fe-lite.chunk.js.map +0 -1
  120. package/dist/scripts/2968-c4c0114915-lite.chunk.js.map +0 -1
  121. package/dist/scripts/3268-faca1bf46e-lite.chunk.js +0 -2
  122. package/dist/scripts/3836-f2a0c9f713-lite.chunk.js +0 -2
  123. package/dist/scripts/3837-fe321e8deb-lite.chunk.js +0 -2
  124. package/dist/scripts/3837-fe321e8deb-lite.chunk.js.map +0 -1
  125. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js +0 -2
  126. package/dist/scripts/4025-306e0fbdd5-lite.chunk.js.map +0 -1
  127. package/dist/scripts/4164-5d3af57b67-lite.chunk.js +0 -2
  128. package/dist/scripts/4164-5d3af57b67-lite.chunk.js.map +0 -1
  129. package/dist/scripts/4185-e8e40dab72-lite.chunk.js +0 -2
  130. package/dist/scripts/4185-e8e40dab72-lite.chunk.js.map +0 -1
  131. package/dist/scripts/4562-545f04c53f-lite.chunk.js +0 -2
  132. package/dist/scripts/4562-545f04c53f-lite.chunk.js.map +0 -1
  133. package/dist/scripts/4598-2b1daca7ae-lite.chunk.js +0 -2
  134. package/dist/scripts/4722-d96da2a258-lite.chunk.js.map +0 -1
  135. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js +0 -2
  136. package/dist/scripts/4948-66ba60c8e3-lite.chunk.js.map +0 -1
  137. package/dist/scripts/5153-079b4125ae-lite.chunk.js.map +0 -1
  138. package/dist/scripts/5241-163f5ac64c-lite.chunk.js +0 -3
  139. package/dist/scripts/5241-163f5ac64c-lite.chunk.js.map +0 -1
  140. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js +0 -2
  141. package/dist/scripts/5349-bc0fcb4083-lite.chunk.js.map +0 -1
  142. package/dist/scripts/6135-a878a9cff0-lite.chunk.js +0 -3
  143. package/dist/scripts/6135-a878a9cff0-lite.chunk.js.map +0 -1
  144. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js +0 -2
  145. package/dist/scripts/6509-23fdb20a4b-lite.chunk.js.map +0 -1
  146. package/dist/scripts/6790-5086b72662-lite.chunk.js +0 -2
  147. package/dist/scripts/6790-5086b72662-lite.chunk.js.map +0 -1
  148. package/dist/scripts/7148-432ab72091-lite.chunk.js +0 -2
  149. package/dist/scripts/7148-432ab72091-lite.chunk.js.map +0 -1
  150. package/dist/scripts/7205-2428f775a5-lite.chunk.js +0 -2
  151. package/dist/scripts/7205-2428f775a5-lite.chunk.js.map +0 -1
  152. package/dist/scripts/7339-5793c921bb-lite.chunk.js +0 -3
  153. package/dist/scripts/7339-5793c921bb-lite.chunk.js.map +0 -1
  154. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js +0 -2
  155. package/dist/scripts/7438-a5f96e58fc-lite.chunk.js.map +0 -1
  156. package/dist/scripts/7926-6b040931aa-lite.chunk.js +0 -2
  157. package/dist/scripts/7926-6b040931aa-lite.chunk.js.map +0 -1
  158. package/dist/scripts/8536-f75009dd87-lite.chunk.js +0 -2
  159. package/dist/scripts/8536-f75009dd87-lite.chunk.js.map +0 -1
  160. package/dist/scripts/8687-549a2d9278-lite.chunk.js +0 -3
  161. package/dist/scripts/8687-549a2d9278-lite.chunk.js.map +0 -1
  162. package/dist/scripts/8856-df102acdff-lite.chunk.js +0 -2
  163. package/dist/scripts/8856-df102acdff-lite.chunk.js.map +0 -1
  164. package/dist/scripts/9134-42dc2390ce-lite.chunk.js +0 -2
  165. package/dist/scripts/9134-42dc2390ce-lite.chunk.js.map +0 -1
  166. package/dist/scripts/9266-c5d6705147-lite.chunk.js +0 -2
  167. package/dist/scripts/9266-c5d6705147-lite.chunk.js.map +0 -1
  168. package/dist/scripts/9284-402a14d41c-lite.chunk.js +0 -2
  169. package/dist/scripts/9284-402a14d41c-lite.chunk.js.map +0 -1
  170. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js +0 -2
  171. package/dist/scripts/9470-11c8c2ca71-lite.chunk.js.map +0 -1
  172. package/dist/scripts/9527-111c8586a7-lite.chunk.js +0 -2
  173. package/dist/scripts/9527-111c8586a7-lite.chunk.js.map +0 -1
  174. package/dist/scripts/9528-2b478f4ca8-lite.chunk.js +0 -3
  175. package/dist/scripts/9528-2b478f4ca8-lite.chunk.js.map +0 -1
  176. package/dist/scripts/9591-230bcf0935-lite.chunk.js +0 -2
  177. package/dist/scripts/9591-230bcf0935-lite.chunk.js.map +0 -1
  178. /package/dist/css/{8687-lite-6787cc731a.chunk.css → 3597-lite-6787cc731a.chunk.css} +0 -0
  179. /package/dist/css/{5349-lite-829df3b4e7.chunk.css → 6137-lite-829df3b4e7.chunk.css} +0 -0
  180. /package/dist/css/{9470-lite-edb2d29928.chunk.css → 8010-lite-edb2d29928.chunk.css} +0 -0
  181. /package/dist/css/{6135-lite-41bdd1c5a3.chunk.css → 8410-lite-41bdd1c5a3.chunk.css} +0 -0
  182. /package/dist/css/{121-lite-1337d9acf0.chunk.css → 9042-lite-1337d9acf0.chunk.css} +0 -0
  183. /package/dist/css/{9528-lite-6787cc731a.chunk.css → 9620-lite-6787cc731a.chunk.css} +0 -0
  184. /package/dist/scripts/{1221-502395e693-lite.chunk.js.LICENSE.txt → 1221-1109d5379d-lite.chunk.js.LICENSE.txt} +0 -0
  185. /package/dist/scripts/{2258-4d0639c9fe-lite.chunk.js.LICENSE.txt → 2258-ed7383502f-lite.chunk.js.LICENSE.txt} +0 -0
  186. /package/dist/scripts/{4722-d96da2a258-lite.chunk.js.LICENSE.txt → 3597-eaae787997-lite.chunk.js.LICENSE.txt} +0 -0
  187. /package/dist/scripts/{5153-079b4125ae-lite.chunk.js.LICENSE.txt → 4203-ee50e89841-lite.chunk.js.LICENSE.txt} +0 -0
  188. /package/dist/scripts/{5241-163f5ac64c-lite.chunk.js.LICENSE.txt → 4722-9eb591621a-lite.chunk.js.LICENSE.txt} +0 -0
  189. /package/dist/scripts/{6135-a878a9cff0-lite.chunk.js.LICENSE.txt → 5153-cf62a95421-lite.chunk.js.LICENSE.txt} +0 -0
  190. /package/dist/scripts/{7339-5793c921bb-lite.chunk.js.LICENSE.txt → 6756-cfd00009e4-lite.chunk.js.LICENSE.txt} +0 -0
  191. /package/dist/scripts/{8687-549a2d9278-lite.chunk.js.LICENSE.txt → 8410-1f1fd5ccf0-lite.chunk.js.LICENSE.txt} +0 -0
  192. /package/dist/scripts/{9528-2b478f4ca8-lite.chunk.js.LICENSE.txt → 9620-3746c84350-lite.chunk.js.LICENSE.txt} +0 -0
  193. /package/dist/scripts/{bundle-95a6fc2722.min.js.LICENSE.txt → bundle-fc60888464.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/9266-f0ad8d5cb3-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file:///app/packages/libs/shared/src/constants/DragOverlayStyles.ts","file:///app/packages/libs/shared/src/components/table/TableUtils.ts","file:///app/packages/libs/shared/src/components/table/table.scss","file:///app/packages/libs/shared/src/components/table/Table.tsx","file:///app/packages/libs/shared/src/components/tags/PartialTagItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/tag-widget-item/TagWidgetItem.tsx","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useBulkCheckboxManager.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/partial-user-audit-log.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/PartialAuditLogTable.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/PartialUserAuditLog.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/user-audit-log-table.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/UserAuditLogTableUtils.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/UserAuditLogTable.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/empty-state/UserAuditLogEmptyState.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/user-audit-log.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/UserAuditLog.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/audit-log/UserAuditLogView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts"],"sourcesContent":["import * as React from 'react';\n\nimport styles from './search-filters.scss';\n\ninterface PartialSearchFiltersProps {\n count?: number;\n}\n\nexport function PartialSearchFilters({ count = 6 }: PartialSearchFiltersProps): JSX.Element {\n return (\n <div className='d-flex'>\n <div className='d-flex ps-1'>\n {Array(count).fill(null).map((item, index) => (\n <div key={index} className={`${styles.partialButton} partial-loading-background mx-1`} />\n ))}\n </div>\n </div>\n );\n}","export const DragOverlayStyles = { opacity: '0.8', cursor: 'grabbing' };","import React from 'react';\nimport { PluginHook, useBlockLayout, useFilters, useFlexLayout, useGlobalFilter, useRowSelect, useSortBy } from 'react-table';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface PluginOptions {\n allowFiltering?: boolean;\n allowGlobalFiltering?: boolean;\n layout?: 'flex' | 'block';\n}\n\nexport function getPlugins<T extends HashObject>(props: PluginOptions): PluginHook<T>[] {\n let plugins: PluginHook<T>[] = [\n useSortBy,\n useRowSelect,\n props.layout === 'flex' ? useFlexLayout : useBlockLayout\n ];\n\n if (props.allowFiltering)\n plugins = [\n ...plugins,\n useFilters\n ];\n\n if (props.allowGlobalFiltering)\n plugins = [\n ...plugins,\n useGlobalFilter\n ];\n\n return plugins;\n}\n\nexport function getSelectedRowIds(ids: string[]): Record<string, boolean> {\n const idHash: Record<string, boolean> = {};\n\n ids.forEach(id => idHash[id] = true);\n\n return idHash;\n}\n\ninterface TableScrollState {\n canScrollLeft: boolean;\n canScrollRight: boolean;\n}\n\nfunction calculateScrollState(ref: React.MutableRefObject<HTMLDivElement>): TableScrollState {\n const canScrollLeft = ref.current?.scrollLeft > 0;\n const canScrollRight = (ref.current?.scrollLeft + 1) < ref.current?.scrollWidth - ref.current?.clientWidth;\n\n return { canScrollLeft, canScrollRight };\n}\n\ninterface UseTableScroll {\n ref: (el: HTMLDivElement) => void;\n scrollState: TableScrollState;\n scroll: (scrollBy: number) => void;\n}\n\nexport function useTableScroll(): UseTableScroll {\n const elRef = React.useRef<HTMLDivElement>(null);\n const [ scrollState, setScrollState ] = React.useState<TableScrollState>(calculateScrollState(elRef));\n\n function onScroll(): void {\n setScrollState(calculateScrollState(elRef));\n }\n\n function scroll(scrollBy: number): void {\n elRef.current?.scrollBy({ left: scrollBy, top: 0, behavior: 'smooth' });\n }\n\n const throttledOnScroll = FunctionHelper.throttle(onScroll, 200);\n\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (elRef.current) {\n elRef.current?.removeEventListener('scroll', throttledOnScroll);\n }\n\n if (el) {\n setScrollState(calculateScrollState(elRef));\n el.addEventListener('scroll', throttledOnScroll);\n }\n\n elRef.current = el;\n }, []);\n\n React.useEffect(() => {\n if (elRef?.current) {\n setScrollState(calculateScrollState(elRef));\n }\n }, [elRef]);\n\n return { ref, scrollState, scroll };\n}","// extracted by mini-css-extract-plugin\nexport default {\"sortIndicator\":\"gFhu0\",\"scrollContainer\":\"sWUp9\",\"scrollbarTrack\":\"Vn2qM\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport {\n Cell,\n Column as BaseColumn,\n HeaderGroup,\n HeaderProps as BaseHeaderProps,\n IdType,\n Row,\n SortingRule,\n TableOptions,\n TableRowProps,\n useTable } from 'react-table';\nimport { DragEndEvent } from '@dnd-kit/core';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { PropsWithSortableItemProps, SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { DragOverlayStyles } from 'libs/shared/constants/DragOverlayStyles';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getPlugins, getSelectedRowIds, useTableScroll } from './TableUtils';\n\nimport styles from './table.scss';\n\nexport interface TableTheme {\n table?: string;\n header?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string | ((row: Row<any>) => string);\n selectedRow?: string;\n cell?: string | ((row?: Row<any>, cell?: Cell<any, any>) => string);\n sortIndicator?: string;\n}\n\nexport type HeaderProps<T extends HashObject> = BaseHeaderProps<T> & {\n renderSortIndicator: () => void;\n}\n\nexport type Column<T extends HashObject> = BaseColumn<T> & {\n hideSortIndicator?: boolean;\n}\n\ninterface SortIndicatorProps<T extends HashObject> {\n column: HeaderGroup<T>;\n theme?: TableTheme;\n}\n\nfunction SortIndicator<T extends HashObject>(props: SortIndicatorProps<T>): JSX.Element {\n if (!props.column.canSort)\n return <></>;\n\n return (\n <span\n className={\n `${styles.sortIndicator}\n ${!props.column.isSorted ? 'text-secondary' : ''}\n ${props.theme?.sortIndicator ?? ''}`\n }\n >\n <SvgContainer\n svgName={(props.column.isSortedDesc || !props.column.isSorted)\n ? cvSvgLibrary.ArrowRight\n : cvSvgLibrary.ArrowLeft\n }\n size={SvgContainerSize.Small}\n />\n </span>\n );\n}\n\ninterface BaseTableProps<T extends HashObject> {\n /**\n * Must be memoized.\n */\n data: T[];\n\n /**\n * Must be memoized.\n * \n * For documentation on Column Options, see https://react-table.tanstack.com/docs/api/useTable#column-options\n */\n columns: Column<T>[];\n\n theme?: TableTheme;\n\n onSelectRow?: (row: Row<T>) => void;\n\n onSelectCell?: (cell: Cell<T>) => void;\n\n onRowMouseOver?: (row: Row<T>) => void;\n\n onRowMouseLeave?: (row: Row<T>) => void;\n\n allowSelectMultipleRows?: boolean;\n\n initialSelectedRowIds?: string[];\n\n getRowId?: (row: T) => string;\n\n getRowAppLink?: (row: Row<T>) => Core.AppLink;\n\n enableSort?: boolean;\n\n manualSort?: boolean;\n\n onSort?: (sortingRule: SortingRule<T>[]) => void;\n \n // Opt-in to utilise react-table's useFilter hook.\n allowFiltering?: boolean;\n\n // Opt-in to utilise react-table's useGlobalFilter hook.\n allowGlobalFiltering?: boolean;\n\n // Use either a flex layout or a block layout. Default is flex.\n layout?: 'flex' | 'block';\n\n // Used by useGlobalFilter hook, needs to be enabled by prop above.\n globalFilter?: string;\n\n // Set initial state of hidden columns in react-table.\n hiddenColumns?: IdType<T>[];\n\n // Determine whether hidden columns should be preserved on a table update event.\n autoResetHiddenColumns?: boolean;\n\n // Determine whether sort order state should be preserved on a table update event.\n autoResetSortBy?: boolean;\n\n // Determine whether rows are sortable by drag and drop\n enableSortableRows?: boolean;\n\n onSortingRowsEnd?: (event: DragEndEvent) => void;\n\n // Set initial state of sorting in react-table\n initialSortBy?: SortingRule<T>[];\n\n emptyState?: JSX.Element;\n}\n \ntype SortableRowProps = PropsWithSortableItemProps<TableRowProps>;\n\nfunction BaseTable<T extends HashObject>(props: BaseTableProps<T>): JSX.Element {\n const tableOptions: TableOptions<T> = {\n columns: props.columns,\n data: props.data,\n disableSortBy: !props.enableSort,\n manualSortBy: props.manualSort,\n autoResetHiddenColumns: props.autoResetHiddenColumns,\n autoResetSortBy: props.autoResetSortBy,\n initialState: {\n sortBy: props.initialSortBy || []\n }\n };\n\n if (props.initialSelectedRowIds)\n tableOptions.initialState = { selectedRowIds: getSelectedRowIds(props.initialSelectedRowIds) };\n\n if (props.getRowId)\n tableOptions.getRowId = props.getRowId;\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n toggleAllRowsSelected,\n setGlobalFilter,\n setHiddenColumns,\n state: { sortBy }\n } = useTable<T>(tableOptions, ...getPlugins<T>({ ...props }));\n\n function getTableRowsClass(row: Row<T>) {\n let className = FunctionHelper.isFunction(props.theme?.row)\n ? props.theme.row(row)\n : props.theme?.row ?? '';\n\n if (row.isSelected && props.theme?.selectedRow)\n className += ` ${props.theme?.selectedRow}`;\n\n if (props.onSelectRow)\n className += ' cursor-pointer';\n\n if (props.enableSortableRows)\n className += ' cursor-grab';\n\n return className;\n }\n\n function renderTableRows() {\n if (!rows.length && props.emptyState)\n return props.emptyState;\n \n return rows.map(row => {\n prepareRow(row);\n \n const className = getTableRowsClass(row);\n const rowAppLink = !!props.getRowAppLink && props.getRowAppLink(row);\n\n function onClickRow(): void {\n if (!props.onSelectRow)\n return;\n\n if (!props.allowSelectMultipleRows)\n toggleAllRowsSelected(false);\n \n props.onSelectRow(row);\n row.toggleRowSelected(true);\n }\n\n function getSortableProps(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any) {\n if ('dragAttributes' in props && 'dragListeners' in props) {\n return {\n ...props.dragAttributes,\n ...props.dragListeners,\n 'aria-roledescription': 'Sortable row',\n ref\n };\n }\n\n return {};\n }\n\n function renderRow(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any): JSX.Element {\n const sortableProps = getSortableProps(props, ref);\n\n if (rowAppLink) {\n return (\n <div\n role='row'\n key={row.id}\n >\n <AppLink\n {...props}\n {...sortableProps}\n className={className}\n appLink={rowAppLink}\n >\n {renderCells(row)}\n </AppLink>\n </div>\n );\n }\n\n return (\n <div\n {...props}\n {...sortableProps}\n key={row.id}\n role='row'\n className={className}\n onClick={onClickRow}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n const rowProps = row.getRowProps();\n\n if (props.enableSortableRows) {\n return (\n <SortableItemWrapper\n id={row.original.id}\n key={row.id}\n childProps={rowProps}\n childComponent={React.forwardRef(\n (props: SortableRowProps, ref: React.LegacyRef<HTMLDivElement>) => (renderRow(props, ref))\n )}\n />\n );\n }\n\n return renderRow(rowProps);\n });\n }\n\n function getDragOverlayClassName(theme: TableTheme): string {\n let className = 'g-0 ';\n\n if (theme)\n className += theme.row;\n\n return className;\n }\n\n function getDragOverlay(id: string) {\n const rowIndex = rows.findIndex(item => item.original.id === id);\n const row = rows[rowIndex];\n \n return (\n <div\n {...props}\n className={getDragOverlayClassName(props.theme)}\n style={DragOverlayStyles}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n function getCellClassName(row: Row<T>, cell: Cell<T>): string {\n let cellClassName = '';\n\n if (typeof props.theme?.cell === 'function')\n cellClassName = props.theme.cell(row, cell);\n\n if (typeof props.theme?.cell === 'string')\n cellClassName = props.theme.cell;\n\n if (props.onSelectCell)\n cellClassName += ' cursor-pointer';\n\n return cellClassName;\n }\n\n function renderCells(row: Row<T>): JSX.Element[] {\n return row.cells.map(cell => {\n const cellClassName = getCellClassName(row, cell);\n\n function onClickCell(): void {\n props.onSelectCell && props.onSelectCell(cell);\n }\n\n return (\n <div key={cell.column.id} {...cell.getCellProps()} className={cellClassName} onClick={onClickCell} >\n {cell.render('Cell')}\n </div>\n );\n });\n }\n\n React.useEffect(() => {\n if (!props.onSort)\n return;\n\n props.onSort(sortBy);\n }, [sortBy]);\n\n React.useEffect(() => {\n if (!props.globalFilter)\n return;\n\n setGlobalFilter(props.globalFilter);\n }, [props.globalFilter]);\n\n React.useEffect(() => {\n if (!props.hiddenColumns)\n return;\n\n setHiddenColumns(props.hiddenColumns);\n }, [props.hiddenColumns && props.hiddenColumns.length]);\n\n return (\n <div {...getTableProps()} className={props.theme?.table ?? ''}>\n <div className={props.theme?.header ?? ''}>\n {headerGroups.map(headerGroup => (\n <div {...headerGroup.getHeaderGroupProps()} className={props.theme?.headerRow ?? ''}>\n {headerGroup.headers.map(column => (\n <div {...column.getHeaderProps(column.getSortByToggleProps())} className={props.theme?.headerCell ?? ''}>\n {column.render('Header', { renderSortIndicator: () => <SortIndicator column={column} theme={props.theme} /> })}\n {!(column as Column<T>).hideSortIndicator &&\n <SortIndicator column={column} theme={props.theme} />\n }\n </div>\n ))}\n </div>\n ))}\n </div>\n <div {...getTableBodyProps()} className={props.theme?.body ?? ''}>\n { props.enableSortableRows ? (\n <SortableContainerWrapper\n ids={rows.map(row => row.original.id)}\n getDragOverlay={getDragOverlay}\n onSortEnd={props.onSortingRowsEnd}\n >\n {renderTableRows()}\n </SortableContainerWrapper>\n ) : (\n renderTableRows()\n )}\n </div>\n </div>\n );\n}\n\ninterface TableProps<T extends HashObject> extends BaseTableProps<T> {\n enableSlider?: boolean;\n scrollIncrement?: number;\n scrollContainerClassName?: string;\n scrollable?: boolean;\n initialSortBy?: SortingRule<T>[];\n}\n\nTable.defaultProps = {\n scrollIncrement: 250,\n scrollable: false,\n layout: 'flex'\n};\n\nexport function Table<T extends HashObject>(props: TableProps<T>): JSX.Element {\n const { enableSlider, scrollIncrement, scrollable, ...tableProps } = props;\n\n const { ref, scrollState, scroll } = useTableScroll();\n\n if (scrollable) {\n return (\n <Scrollbars\n renderTrackHorizontal={() => <div className={styles.scrollbarTrack} />}\n autoHeightMax={10000}\n autoHeight\n >\n <BaseTable {...tableProps} />\n </Scrollbars>\n );\n }\n\n if (!enableSlider)\n return <BaseTable {...tableProps} />;\n\n function onClickScroll(direction: 'left' | 'right'): void {\n scroll(scrollIncrement * (direction === 'right' ? 1 : -1));\n }\n\n return (\n <div className='mx-n4 overflow-x-hidden overflow-y-hidden'>\n <div className='px-4'>\n <div className='position-relative'>\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => onClickScroll('left')}\n hide={!scrollState.canScrollLeft}\n />\n <div className={`${styles.scrollContainer} ${props.scrollContainerClassName}`} ref={ref}>\n <BaseTable {...tableProps } />\n </div>\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => onClickScroll('right')}\n hide={!scrollState.canScrollRight}\n />\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport styles from './tags.scss';\n\ninterface PartialTagItemProps {\n tagClass?: string;\n}\n\nexport const PartialTagItem = React.memo(function({ tagClass = '' }: PartialTagItemProps): JSX.Element {\n const classNames = `partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ${tagClass} ${styles.partialTag}`;\n\n return (\n <div className='mt-1'>\n <span className={classNames}>&nbsp;</span>\n </div>\n );\n});","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { FilterOption } from 'libs/shared/apps/search/interfaces';\nimport { TagItem } from 'libs/shared/components/tags/TagItem';\nimport { BaseObject, Tag } from 'libs/shared/interfaces';\n\nexport interface TagWidgetItemProps {\n appLink: Core.AppLink;\n data: Tag;\n selectedItems?: BaseObject[];\n onClick?: (data: Tag | FilterOption) => void;\n}\n\nexport function TagWidgetItem(props: TagWidgetItemProps): JSX.Element {\n const isSelected = props.selectedItems.find(selection => selection.id === props.data.id);\n\n const colorClass = isSelected ? `bg-gray-900 text-white` : 'bg-light';\n\n return (\n <TagItem\n tag={props.data}\n appLink={props.appLink}\n tagClass={`no-decoration ${colorClass} lh-1`}\n onClick={() => props.onClick(props.data)}\n />\n );\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { usePrevious } from 'libs/shared/hooks/usePrevious';\n\ntype CheckboxItemsState = Map<string, boolean>;\n\nexport interface BulkCheckboxManager {\n onToggleBulk: () => void;\n onToggleItem: (id: string) => void;\n getSelected: () => string[];\n isChecked: (item: string | number | HashObject<string>) => boolean;\n bulkChecked: boolean;\n deselectAll: () => void;\n hasSomeSelections: () => boolean;\n setSelected: (ids: string[]) => void;\n getSelectedCount: () => number;\n reset: () => void;\n getMap: () => Map<string, boolean>;\n}\n\nexport interface BulkCheckboxManagerOptions {\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\n persistNamespace?: string;\n preselectedIds?: string[];\n initialState?: CheckboxItemsState;\n}\n\n/**\n * @param collection - The collection you are keeping track of with checkboxes\n * @param options - See interface above\n */\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\n const { idField = 'id', persistNamespace } = options;\n\n const initial = options.initialState ? options.initialState : new Map<string, boolean>();\n\n const items = React.useRef<CheckboxItemsState>(initial);\n \n const forceUpdate = useForceUpdate();\n\n const prevCollection = usePrevious(collection);\n const prevNamespace = usePrevious(persistNamespace);\n\n /**\n * This hook will clear the state of this hook when a user navigates between pages\n * if a persistNamespace was not provided\n */\n React.useEffect(() => {\n /**\n * If we're being passed initial state, we don't want to clear the state\n */\n if (options.initialState)\n return;\n\n /**\n * If we've been given a persist namespace, we don't want to clear our\n * selections while the namespace stays the same\n */\n if (persistNamespace && prevNamespace === persistNamespace)\n return;\n\n /**\n * Don't reinitialize if the ids of the new and old collection\n * are identical\n */\n const prevIds = prevCollection?.map(i => i[idField]).join();\n const ids = collection?.map(i => i[idField]).join();\n\n if (prevIds === ids)\n return;\n\n reset();\n }, [ prevCollection, prevNamespace, collection, options.initialState ]);\n\n React.useEffect(() => {\n if (!options.preselectedIds?.length)\n return;\n\n setSelected(options.preselectedIds);\n }, []);\n\n function reset(): void {\n items.current.clear();\n forceUpdate();\n }\n\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\n function onToggleBulk(): void {\n const setValue = !isBulkChecked();\n\n collection.forEach(item => {\n if (setValue)\n items.current.set(item[idField].toString(), true);\n else\n items.current.delete(item[idField].toString());\n });\n\n forceUpdate();\n }\n\n // Toggles a single item\n function onToggleItem(id: string): void {\n const nextItemState = !items.current.get(id.toString());\n\n if (nextItemState)\n items.current.set(id.toString(), nextItemState);\n else\n items.current.delete(id.toString());\n \n forceUpdate();\n }\n\n // Returns the state of the item passed in\n function isChecked(item: string | number | HashObject<string>): boolean {\n if (typeof item === 'number')\n item = item.toString();\n else if (typeof item !== 'string')\n item = item[idField].toString();\n\n return items.current.get(item);\n }\n\n function getSelected(): string[] {\n return Array.from(items.current.keys());\n }\n\n function deselectAll(): void {\n if (!collection?.length) return;\n\n collection.forEach(item => {\n items.current.delete(item[idField].toString());\n });\n forceUpdate();\n }\n\n // Returns true if at least 1 item is checked\n function hasSomeSelections(): boolean {\n if (!collection?.length)\n return false;\n\n return !!collection.find(item => isChecked(item));\n }\n\n function isBulkChecked(): boolean {\n if (!collection?.length)\n return false;\n\n return collection.every(isChecked);\n }\n\n function setSelected(ids: string[]): void {\n ids.forEach(id => {\n items.current.set(id, true);\n });\n forceUpdate();\n }\n\n function getSelectedCount(): number {\n return items.current.size;\n }\n\n function getMap(): Map<string, boolean> {\n return items.current;\n }\n\n return {\n onToggleBulk,\n onToggleItem,\n getSelected,\n isChecked,\n bulkChecked: isBulkChecked(),\n deselectAll,\n hasSomeSelections,\n setSelected,\n getSelectedCount,\n reset,\n getMap\n };\n};","// extracted by mini-css-extract-plugin\nexport default {\"partialHeading\":\"rfiJl\",\"partialJobCount\":\"h8k_u\",\"partialCheckbox\":\"HkuOS\",\"partialExportButton\":\"Iul7S\",\"row\":\"mwigG\",\"checkboxColumn\":\"Z5jLG\",\"actionColumn\":\"rLxYh\",\"usersColumn\":\"QZzab\",\"dateColumn\":\"Wf_Jp\",\"performedByColumn\":\"Ubtmj\",\"seeMoreColumn\":\"XdP6u\",\"heading\":\"kRMMH\",\"action\":\"DvDvW\",\"users\":\"goKpg\",\"date\":\"ejYGb\",\"performedBy\":\"NhjyL\"};","import React from 'react';\n\nimport styles from './partial-user-audit-log.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`d-flex striped-row rounded py-3 ${styles.row}`}>\n <div className={`${styles.checkboxColumn} d-flex justify-content-center`}>\n <div className={`partial-loading-background ${styles.partialCheckbox} ms-0`} />\n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.action}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.users}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.date}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.performedBy}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nfunction PartialHeader(): JSX.Element {\n return (\n <div className='d-flex py-2 mb-1'>\n <div className={`${styles.checkboxColumn}`}>\n &nbsp;\n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nexport function PartialAuditLogTable(): JSX.Element {\n return (\n <>\n <div className='mb-3 mt-n1'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { PartialSearchFilters } from 'libs/shared/apps/search/components/search-filters/PartialSearchFilters';\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\n\nimport { PartialAuditLogTable } from './PartialAuditLogTable';\n\nimport styles from './partial-user-audit-log.scss';\n\nexport function PartialUserAuditLog(): JSX.Element {\n return (\n <>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <PartialBreadcrumbs />\n\n <div className={`partial-loading-background ${styles.partialJobCount}`} />\n </div>\n </div>\n\n <div className='d-flex align-items-center pb-2'>\n <div className={`partial-loading-background ${styles.partialCheckbox}`} />\n\n <div className='ms-4 ps-3'>\n <PartialSearchFilters count={3} />\n </div>\n\n <div className={`ms-auto partial-loading-background ${styles.partialExportButton}`} />\n </div>\n\n <PartialAuditLogTable />\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { FilterOption, SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.userAuditLogFilters';\n\nfunction getSortOptions(): FilterOption[] {\n return [{\n id: 'newest',\n name: LanguageService.getPhrase(namespace, 'newest'),\n default: true\n },\n {\n id: 'oldest',\n name: LanguageService.getPhrase(namespace, 'oldest')\n }];\n}\n\nexport interface UserAuditLogQueryParams {\n cursor: string;\n userType: UserGroup | UserGroup[];\n bulkActionType: BatchJobType | BatchJobType[];\n sort: 'newest' | 'oldest';\n}\n\ninterface UserAuditLogFiltersProps {\n queryParams: UserAuditLogQueryParams;\n appLinks: UserManagerAppLinks;\n}\n\nexport function UserAuditLogFilters(props: UserAuditLogFiltersProps): JSX.Element {\n const filters: SearchFilter<any>[] = [\n Filters.SortBy(getSortOptions()),\n Filters.BulkActionType(),\n Filters.UserType()\n ];\n\n return (\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={filters}\n appLink={props.appLinks.auditLog}\n analyticsOptions={{\n entity: EntityType.BatchJob,\n location: LocationContext.UserAuditLog\n }}\n hideHeading\n hideDivider\n constantIndices={[]}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"seeMore\":\"uymuO\"};","import React from 'react';\nimport { CellProps, Column } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BatchJob } from 'libs/shared/interfaces';\n\nimport styles from './user-audit-log-table.scss';\n\nconst namespace = 'userManager.userAuditLogTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UserAuditLogTableData {\n id: string;\n checked: boolean;\n actionType: string;\n userType: string;\n date: string;\n performedBy: {\n name: string;\n submittedByClickView: boolean;\n };\n}\n\nexport function getColumns(\n summaryAppLink: Core.AppLink,\n onToggleCheckbox: (id: string) => void\n): Column<UserAuditLogTableData>[] {\n const columns: Column<UserAuditLogTableData>[] = [\n {\n Header: '',\n id: 'checkboxes',\n accessor: (data: UserAuditLogTableData) => ({ id: data.id, checked: data.checked }),\n Cell: (cell: CellProps<UserAuditLogTableData, { id: string; checked: boolean; }>) => (\n <div className='text-center mx-auto'>\n <Checkbox\n id={cell.value.id}\n checked={cell.value.checked}\n onChange={() => onToggleCheckbox(cell.value.id)}\n />\n </div>\n ),\n width: 10\n },\n {\n Header: getPhrase('action'),\n accessor: 'actionType',\n id: 'actionType',\n Cell: ({ value }) => (\n <div className='w-100'>\n {value}\n </div>\n ),\n width: 20\n },\n {\n Header: getPhrase('users'),\n accessor: 'userType',\n id: 'userType',\n Cell: ({ value }) => {\n const getValue = () => {\n switch (value) {\n case UserGroup.Learner:\n return getPhrase('students');\n case UserGroup.Staff:\n return getPhrase('staff');\n case UserGroup.Unknown:\n default:\n return getPhrase('unknown');\n }\n };\n\n return (\n <div className='w-100'>\n {getValue()}\n </div>\n );\n },\n width: 10\n },\n {\n Header: getPhrase('date'),\n accessor: 'date',\n id: 'date',\n Cell: ({ value }) => (\n <div className='w-100'>\n {value}\n </div>\n ),\n width: 20\n },\n {\n Header: getPhrase('performedBy'),\n accessor: 'performedBy',\n id: 'performedBy',\n Cell: (cell: CellProps<any, { name: string; submittedByClickView: boolean; }>) => (\n <div className='w-100 d-flex align-items-center'>\n {cell.value.submittedByClickView && (\n <SvgContainer2 className='me-1' size={SvgContainerSize.Small}>\n <ClickViewAvatar />\n </SvgContainer2>\n )}\n {cell.value.name}\n </div>\n ),\n width: 20\n },\n {\n Header: '',\n accessor: 'id',\n id: 'seeMore',\n Cell: ({ value }) => (\n <div className='w-100 d-flex justify-content-end'>\n <AppLink\n className={`info-link text-end me-3 ms-auto ${styles.seeMore}`}\n appLink={{\n ...summaryAppLink,\n args: summaryAppLink.args?.length ? [ ...summaryAppLink.args, value ] : [value]\n }}\n >\n <Text namespace={namespace} phrase='seeMore' />\n </AppLink>\n </div>\n ),\n width: 30\n }\n ];\n\n return columns;\n}\n\nexport function useGetData(jobs: BatchJob[], isChecked: (id: string) => boolean): UserAuditLogTableData[] {\n return jobs.map(job => {\n const formattedDate = DateHelper.format(job.dateCreated, 'DD/MM/YYYY, hh:mmA');\n\n return {\n id: job.id,\n checked: isChecked(job.id),\n actionType: BulkUserActionsHelper.mapJobTypeToName(job.type),\n userType: BulkUserActionsHelper.mapDataTypeToUserType(job.dataType),\n date: formattedDate,\n performedBy: {\n name: job.submitterName,\n submittedByClickView: job.submittedByClickView\n }\n };\n });\n}","import React from 'react';\n\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\n\nimport { getColumns, useGetData } from './UserAuditLogTableUtils';\n\nconst TABLE_THEME: TableTheme = {\n table: 'striped-list no-full-width pb-3',\n header: 'fw-semibold pb-1',\n headerCell: 'px-2 py-1',\n row: 'striped-row rounded audit-log-row',\n cell: 'd-flex align-items-center py-3 px-2'\n};\n\ninterface UserAuditLogTableProps {\n jobs: BatchJobCollection;\n appLinks: UserManagerAppLinks;\n onToggleCheckbox: (id: string) => void;\n isChecked: (id: string) => boolean;\n}\n\nexport function UserAuditLogTable(props: UserAuditLogTableProps): JSX.Element {\n const data = useGetData(props.jobs.data, props.isChecked);\n\n return (\n <Table\n columns={getColumns(props.appLinks.bulkActionSummary, props.onToggleCheckbox)}\n data={data}\n theme={TABLE_THEME}\n />\n );\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.auditLogEmptyState';\n\ninterface UserAuditLogEmptyStateProps {\n imageUrl: string;\n}\n\nexport function UserAuditLogEmptyState(props: UserAuditLogEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bulkCheckbox\":\"NMw5T\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { UserAuditLogFilters, UserAuditLogQueryParams } from './components/audit-log-filters/UserAuditLogFilters';\nimport { UserAuditLogTable } from './components/audit-log-table/UserAuditLogTable';\nimport { UserAuditLogEmptyState } from './empty-state/UserAuditLogEmptyState';\n\nimport styles from './user-audit-log.scss';\n\nconst namespace = 'userManager.auditLog';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UserAuditLogProps {\n jobs: BatchJobCollection;\n appLinks: UserManagerAppLinks;\n queryParams: UserAuditLogQueryParams;\n onClickExport: (ids: string[]) => Promise<void>;\n emptyStateImageUrl: string;\n}\n\nexport function UserAuditLog(props: UserAuditLogProps): JSX.Element {\n const referrer: UserGroup = LocalStorageHelper.get(UserManagerConstants.AUDIT_LOG_REFERRER_KEY);\n\n const [ showExportSpinner, setShowExportSpinner ] = React.useState(false);\n\n const CheckboxHelper = useBulkCheckboxManager(props.jobs.data);\n const alerts = useAlerts();\n\n function onClickExport(): void {\n if (showExportSpinner)\n return;\n\n setShowExportSpinner(true);\n\n const selectedIds = CheckboxHelper.getSelected();\n\n props.onClickExport(selectedIds)\n .then(() => alerts.success(getPhrase('exportSuccess')))\n .catch(() => alerts.error(getPhrase('exportError')))\n .finally(() => setShowExportSpinner(false));\n }\n\n return (\n <>\n <h1 className='h2'><Text namespace={namespace} phrase='heading' /></h1>\n\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <Breadcrumbs\n breadcrumbs={[\n { name: getPhrase('settingsBreadcrumb'), appLink: props.appLinks.settings },\n { name: getPhrase(referrer === UserGroup.Learner ? 'studentManager' : 'staffManager'), appLink: props.appLinks.userManager },\n { name: getPhrase('heading'), active: true }\n ]}\n />\n\n <p className='mb-0 fw-semibold'>\n <Text\n namespace={namespace}\n phrase='totalJobs'\n options={{ showing: props.jobs.data.length, smartCount: props.jobs.count }}\n />\n </p>\n </div>\n </div>\n\n <div className='d-flex align-items-center pb-2'>\n <Checkbox\n className={styles.bulkCheckbox}\n id='bulk-audit-log-checkbox'\n checked={CheckboxHelper.bulkChecked}\n onChange={CheckboxHelper.onToggleBulk}\n indeterminate={CheckboxHelper.hasSomeSelections()}\n />\n\n <div className='ms-4 ps-1'>\n <UserAuditLogFilters queryParams={props.queryParams} appLinks={props.appLinks} />\n </div>\n\n <SpinnerButton\n variant='dark'\n className='ms-auto'\n onClick={onClickExport}\n disabled={!CheckboxHelper.hasSomeSelections() || showExportSpinner}\n showSpinner={showExportSpinner}\n >\n <Text namespace={namespace} phrase='export' />\n </SpinnerButton>\n </div>\n\n {props.jobs.data?.length ? (\n <UserAuditLogTable\n jobs={props.jobs}\n appLinks={props.appLinks}\n onToggleCheckbox={CheckboxHelper.onToggleItem}\n isChecked={CheckboxHelper.isChecked}\n />\n ) : (\n <UserAuditLogEmptyState imageUrl={props.emptyStateImageUrl} />\n )}\n\n {!!props.jobs.pagination?.cursors && (\n <Pagination\n className='p-0 text-end pb-3'\n cursors={props.jobs.pagination.cursors}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n />\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { PartialUserAuditLog } from 'libs/shared/apps/user-manager/components/audit-log/partial-loading/PartialUserAuditLog';\nimport { UserAuditLog } from 'libs/shared/apps/user-manager/components/audit-log/UserAuditLog';\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespace = 'userManager.userAuditLogView';\n\ninterface UserAuditLogViewProps {\n queryParams: UserAuditLogQueryParams;\n}\n\nexport function UserAuditLogView(props: UserAuditLogViewProps): JSX.Element {\n const referrer: UserGroup = LocalStorageHelper.get(UserManagerConstants.AUDIT_LOG_REFERRER_KEY);\n\n const jobs = Flight.useBasicFetch<BatchJobCollection>(JobRequests.getJobs(props.queryParams));\n \n useHandleObjectError(jobs);\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const appLinks = getUserManagerAppLinks(referrer);\n\n function onClickExport(jobIds: string[]): Promise<void> {\n return fetchAsync<void>(JobRequests.sendJobReports(jobIds));\n }\n\n if (!jobs.hasCompleted)\n return <div className='px-3'><PartialUserAuditLog /></div>;\n\n return (\n <div className='px-3'>\n <UserAuditLog\n jobs={jobs.data}\n appLinks={appLinks}\n queryParams={props.queryParams}\n onClickExport={onClickExport}\n emptyStateImageUrl={ImageUrls.EmptyStates.Search.RESULTS}\n />\n </div>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};"],"names":["PartialSearchFilters","count","className","Array","fill","map","item","index","key","DragOverlayStyles","opacity","cursor","calculateScrollState","ref","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","props","column","canSort","isSorted","theme","sortIndicator","SvgContainer","svgName","isSortedDesc","size","S","BaseTable","ids","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialState","sortBy","initialSortBy","initialSelectedRowIds","selectedRowIds","forEach","id","getRowId","useTable","plugins","useSortBy","useRowSelect","layout","useFlexLayout","useBlockLayout","allowFiltering","useFilters","allowGlobalFiltering","useGlobalFilter","getPlugins","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","toggleAllRowsSelected","setGlobalFilter","setHiddenColumns","state","renderTableRows","length","emptyState","row","FunctionHelper","isSelected","selectedRow","onSelectRow","enableSortableRows","getTableRowsClass","rowAppLink","getRowAppLink","onClickRow","allowSelectMultipleRows","toggleRowSelected","renderRow","sortableProps","dragAttributes","dragListeners","getSortableProps","role","AppLink","appLink","renderCells","onClick","rowProps","getRowProps","SortableItemWrapper","original","childProps","childComponent","cells","cell","cellClassName","onSelectCell","getCellClassName","getCellProps","render","onSort","globalFilter","hiddenColumns","table","header","headerGroup","getHeaderGroupProps","headerRow","headers","getHeaderProps","getSortByToggleProps","headerCell","renderSortIndicator","hideSortIndicator","body","SortableContainerWrapper","getDragOverlay","rowIndex","findIndex","style","onSortEnd","onSortingRowsEnd","Table","enableSlider","scrollIncrement","scrollable","tableProps","elRef","scrollState","setScrollState","throttledOnScroll","el","removeEventListener","addEventListener","scroll","scrollBy","left","top","behavior","useTableScroll","renderTrackHorizontal","autoHeightMax","autoHeight","onClickScroll","direction","WidgetButton","W","hide","scrollContainerClassName","defaultProps","PartialTagItem","tagClass","classNames","TagWidgetItem","colorClass","selectedItems","find","selection","tag","generateCacheKey","flightObjs","obj","statusCode","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","isArray","useEffect","useBulkCheckboxManager","collection","options","idField","persistNamespace","initial","Map","items","forceUpdate","prevCollection","prevNamespace","reset","clear","isChecked","toString","get","isBulkChecked","every","setSelected","set","i","preselectedIds","onToggleBulk","setValue","onToggleItem","nextItemState","getSelected","from","keys","bulkChecked","deselectAll","hasSomeSelections","getSelectedCount","getMap","PartialRow","PartialHeader","PartialAuditLogTable","PartialUserAuditLog","namespace","UserAuditLogFilters","filters","name","LanguageService","default","SearchFilters","queryParams","mainFilters","appLinks","auditLog","analyticsOptions","entity","location","hideHeading","hideDivider","constantIndices","getPhrase","TABLE_THEME","UserAuditLogTable","jobs","summaryAppLink","onToggleCheckbox","job","formattedDate","DateHelper","dateCreated","checked","actionType","BulkUserActionsHelper","type","userType","dataType","date","performedBy","submitterName","submittedByClickView","bulkActionSummary","Header","accessor","Cell","Checkbox","value","onChange","width","UserGroup","getValue","SvgContainer2","ClickViewAvatar","args","Text","phrase","UserAuditLogEmptyState","EmptyState","src","imageUrl","UserAuditLog","referrer","LocalStorageHelper","UserManagerConstants","showExportSpinner","setShowExportSpinner","CheckboxHelper","alerts","Breadcrumbs","breadcrumbs","settings","userManager","active","showing","smartCount","indeterminate","SpinnerButton","variant","selectedIds","onClickExport","then","success","error","disabled","showSpinner","emptyStateImageUrl","pagination","cursors","Pagination","ContextService","buttonVariant","UserAuditLogView","JobRequests","useSetPageMetadata","title","fetchAsync","hasCompleted","jobIds","ImageUrls","createJob","url","getJobs","params","bulkActionTypes","userTypes","sort","order","bulkActionType","getJob","getJobProgress","invalidationKeys","getJobResults","status","getYearGroupRolloverStatus","customerId","sendJobReports","getJobSummary"],"sourceRoot":""}
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 9620-3746c84350-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9620],{27368:(t,e,r)=>{r.r(e),r.d(e,{AutomaticAccessView:()=>I});var n=r(32735),o=r(98269),i=r(92802),a=r(23481),c=r(20354),u=r(14617),s=r(24833);function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function f(t){return n.createElement(u._,{view:s.C.AutomaticAccess,options:["none","allowed"],errors:t.errors,appLinks:t.appLinks,classname:t.classname,onSelectValue:function(e){return t.formikProps.setFieldValue("automaticAccess.selectedOption",e)},addDomainField:function(){return t.formikProps.setFieldValue("automaticAccess.domains",[].concat(function(t){if(Array.isArray(t))return l(t)}(e=t.formikProps.values.automaticAccess.domains)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||function(t,e){if(t){if("string"==typeof t)return l(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(t,e):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[{domain:""}]));var e},onChangeDomain:function(e,r){return t.formikProps.setFieldValue("automaticAccess.domains[".concat(r,"]"),e)},removeDomainField:function(e){var r=t.formikProps.values.automaticAccess.domains;r.length>1?(t.formikProps.setFieldValue("automaticAccess.domains",r.filter((function(t,r){return r!==e}))),t.formikProps.setFieldError("automaticAccess.domains",void 0)):(t.formikProps.setFieldValue("automaticAccess.domains[0]",{domain:""}),t.formikProps.setFieldError("automaticAccess.domains[0]",void 0))},setFieldError:function(e,r){return t.formikProps.setFieldError(e,r)},selectedOption:t.formikProps.values.automaticAccess.selectedOption,domains:t.formikProps.values.automaticAccess.domains})}var h=r(61807),p=r(82644),m=r(83345),d=r(23371),y=r(16714),v=r(31949),g=r(69883),b=r(79612),w=r(93802),E=r(5458),A=r(81803),k=r(68598),L=r(71966),x=r(96268);function S(t){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},S(t)}function O(){O=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var i=e&&e.prototype instanceof v?e:v,a=Object.create(i.prototype),c=new I(n||[]);return o(a,"_invoke",{value:P(t,r,c)}),a}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var h="suspendedStart",p="suspendedYield",m="executing",d="completed",y={};function v(){}function g(){}function b(){}var w={};s(w,a,(function(){return this}));var E=Object.getPrototypeOf,A=E&&E(E(N([])));A&&A!==r&&n.call(A,a)&&(w=A);var k=b.prototype=v.prototype=Object.create(w);function L(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function r(o,i,a,c){var u=f(t[o],t,i);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"==S(l)&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){s.value=t,a(s)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function P(e,r,n){var o=h;return function(i,a){if(o===m)throw Error("Generator is already running");if(o===d){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=F(c,n);if(u){if(u===y)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===h)throw o=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=m;var s=f(e,r,n);if("normal"===s.type){if(o=n.done?d:p,s.arg===y)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=d,n.method="throw",n.arg=s.arg)}}}function F(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,F(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var i=f(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function _(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(_,this),this.reset(!0)}function N(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(S(e)+" is not iterable")}return g.prototype=b,o(k,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:g,configurable:!0}),g.displayName=s(b,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===g||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,s(t,u,"GeneratorFunction")),t.prototype=Object.create(k),t},e.awrap=function(t){return{__await:t}},L(x.prototype),s(x.prototype,c,(function(){return this})),e.AsyncIterator=x,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new x(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},L(k),s(k,u,"Generator"),s(k,a,(function(){return this})),s(k,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=N,I.prototype={constructor:I,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(j),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(u&&s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,y):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:N(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y}},e}function P(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var F=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function c(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,c)}u((n=n.apply(t,e||[])).next())}))},_="settings.automaticAccess",j=a.T.encloseNamespace(_);function I(){(0,x.W)(),(0,b.M)({title:j("pageTitle")});var t,e,r=c.a.useBasicFetch(v.N.currentUser()),a=r.data.customerId,u=c.a.useBasicFetch(r.data.customerId&&L.B.domains(a)),s=c.a.useGetFetchAsync(),l=(0,g.Z)(),S=(t=n.useState([]),e=2,function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return P(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?P(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),I=S[0],N=S[1];if(!u.hasCompleted)return n.createElement(n.Fragment,null);var T={requestingAccess:w.y.getInitialJoinRequests(u.data),teacherInvites:!1,automaticAccess:w.y.getInitialAccessBehaviour(u.data)};return n.createElement(A.d,{heading:j("heading"),breadcrumbs:[j("breadcrumb")],requiredPermissions:y.C.ManageUsers},n.createElement(h.L,{active:"automatic-access",appLinks:k.W}),n.createElement("p",null,n.createElement(m.x,{namespace:_,phrase:"description"})),n.createElement(p.n,{initialValues:T,onSubmit:function(t,e){var r;return F(this,void 0,void 0,O().mark((function n(){var o;return O().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=w.y.formatRequestData(u.data,t.automaticAccess,d.W.AutoJoin),n.prev=1,n.next=4,s(L.B.updateDomains(a,o));case 4:l.success(j("success")),n.next=11;break;case 7:n.prev=7,n.t0=n.catch(1),(null===(r=n.t0.responseJSON)||void 0===r?void 0:r.problems)&&N(n.t0.responseJSON.problems),l.error(j("error"));case 11:return n.prev=11,e(),n.finish(11);case 14:case"end":return n.stop()}}),n,null,[[1,7,11,14]])})))},validate:function(t){return(0,E.T)({values:t,alerts:l,setShowPopup:function(){}})},validateOnChange:!1,validateOnBlur:!1},(function(t){return n.createElement(i.l0,null,n.createElement(f,{formikProps:t,errors:I,appLinks:k.W}),n.createElement(o.Z,{variant:"dark",disabled:!t.dirty,onClick:function(){return t.submitForm()}},"Save changes"))})))}}}]);
3
+ //# sourceMappingURL=9620-3746c84350-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/9620-3746c84350-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/domain-settings/domain-forms/AutomaticAccessForm.tsx","file:///app/packages/projects/lite/src/apps/settings/views/automatic-access/AutomaticAccessView.tsx"],"sourcesContent":["import React from 'react';\nimport { FormikProps } from 'formik';\n\nimport { DomainSettingsForm } from 'libs/shared/apps/domain-settings/domain-settings-form/DomainSettingsForm';\nimport { AccessSettingsGroup } from 'libs/shared/enums/AccessSettingsGroup';\nimport { AccessSettingAppLinks } from 'libs/shared/interfaces/domains/AccessSettingAppLinks';\nimport { DomainSettingsModelV2 } from 'libs/shared/interfaces/domains/ApprovedDomain';\nimport { ApprovedDomainErrorResponse } from 'libs/shared/interfaces/domains/ApprovedDomainErrorResponse';\n\ntype AutomaticAccessFormProps = {\n formikProps: FormikProps<DomainSettingsModelV2>;\n errors: ApprovedDomainErrorResponse[];\n appLinks?: AccessSettingAppLinks;\n classname?: string;\n};\n\nexport function AutomaticAccessForm(props: AutomaticAccessFormProps) {\n return (\n <DomainSettingsForm\n view={AccessSettingsGroup.AutomaticAccess}\n options={[ 'none', 'allowed' ]}\n errors={props.errors}\n appLinks={props.appLinks}\n classname={props.classname}\n onSelectValue={value =>\n props.formikProps.setFieldValue('automaticAccess.selectedOption', value)\n }\n addDomainField={() =>\n props.formikProps.setFieldValue('automaticAccess.domains', [\n ...props.formikProps.values.automaticAccess.domains,\n { domain: '' }\n ])\n }\n onChangeDomain={(domain, index) =>\n props.formikProps.setFieldValue(\n `automaticAccess.domains[${index}]`,\n domain\n )\n }\n removeDomainField={index => {\n const domains = props.formikProps.values.automaticAccess.domains;\n if (domains.length > 1) {\n props.formikProps.setFieldValue(\n 'automaticAccess.domains',\n domains.filter((_, i) => i !== index)\n );\n props.formikProps.setFieldError('automaticAccess.domains', undefined);\n } else {\n props.formikProps.setFieldValue(\n `automaticAccess.domains[0]`,\n { domain: '' }\n );\n props.formikProps.setFieldError(`automaticAccess.domains[0]`, undefined);\n }\n }}\n setFieldError={(error, code) =>\n props.formikProps.setFieldError(error, code)\n }\n selectedOption={props.formikProps.values.automaticAccess.selectedOption}\n domains={props.formikProps.values.automaticAccess.domains}\n />\n );\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AutomaticAccessForm } from 'libs/shared/apps/domain-settings/domain-forms/AutomaticAccessForm';\nimport { DomainSettingsTabs } from 'libs/shared/apps/domain-settings/domain-settings-tabs/DomainSettingsTabs';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { AccessType } from 'libs/shared/enums/AccessType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { ApprovedDomain, DomainSettingsModelV2 } from 'libs/shared/interfaces/domains/ApprovedDomain';\nimport { ApprovedDomainErrorResponse } from 'libs/shared/interfaces/domains/ApprovedDomainErrorResponse';\nimport { DomainSettingsFormHelper } from 'libs/shared/utils/DomainSettingsFormHelper';\nimport { DomainValidation } from 'libs/shared/utils/validation/DomainSettingsValidationSchema';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { AccessSettingsAppLinks } from 'apps/settings/constants/AccessSettingsAppLinks';\nimport { DomainRequests } from 'apps/settings/flight-requests/DomainRequests';\nimport { useDomainSettingsSwitch } from 'apps/settings/hooks/useDomainSettingsSwitch';\n\nconst namespace = 'settings.automaticAccess';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AutomaticAccessView() {\n useDomainSettingsSwitch();\n\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { customerId } = currentUser.data;\n const domains = Flight.useBasicFetch<ApprovedDomain[]>(\n currentUser.data.customerId && DomainRequests.domains(customerId)\n );\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n const [ errors, setErrors ] = React.useState<ApprovedDomainErrorResponse[]>([]);\n\n async function onSaveChanges(\n values: DomainSettingsModelV2,\n onDone: (options?: FormSubmissionOptions<DomainSettingsModelV2>) => void\n ) {\n const formattedRequestData = DomainSettingsFormHelper.formatRequestData(\n domains.data,\n values.automaticAccess,\n AccessType.AutoJoin\n );\n \n try {\n await fetchAsync<any[]>(DomainRequests.updateDomains(customerId, formattedRequestData));\n alerts.success(getPhrase('success'));\n } catch (error) {\n if (error.responseJSON?.problems) {\n setErrors(error.responseJSON.problems);\n }\n alerts.error(getPhrase('error'));\n } finally {\n onDone();\n }\n }\n\n if (!domains.hasCompleted) {\n return <></>;\n }\n\n const initialValues = {\n requestingAccess: DomainSettingsFormHelper.getInitialJoinRequests(domains.data),\n teacherInvites: false,\n automaticAccess: DomainSettingsFormHelper.getInitialAccessBehaviour(domains.data)\n };\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n requiredPermissions={PermissionName.ManageUsers}\n >\n <DomainSettingsTabs active='automatic-access' appLinks={AccessSettingsAppLinks}/>\n \n <p>\n <Text namespace={namespace} phrase='description' />\n </p>\n\n <FormWrapper\n initialValues={initialValues}\n onSubmit={onSaveChanges}\n validate={values => DomainValidation({ values, alerts, setShowPopup: () => {} })}\n validateOnChange={false}\n validateOnBlur={false}\n >\n {formikProps => (\n <Form>\n <AutomaticAccessForm\n formikProps={formikProps}\n errors={errors}\n appLinks={AccessSettingsAppLinks}\n />\n <Button\n variant='dark'\n disabled={!formikProps.dirty}\n onClick={() => formikProps.submitForm()}\n >\n Save changes\n </Button>\n </Form>\n )}\n </FormWrapper>\n </SettingsLayout>\n );\n}\n"],"names":["AutomaticAccessForm","props","DomainSettingsForm","view","AccessSettingsGroup","options","errors","appLinks","classname","onSelectValue","value","formikProps","setFieldValue","addDomainField","values","automaticAccess","domains","domain","onChangeDomain","index","removeDomainField","length","filter","_","i","setFieldError","undefined","error","code","selectedOption","namespace","getPhrase","LanguageService","AutomaticAccessView","useDomainSettingsSwitch","useSetPageMetadata","title","currentUser","UserRequests","customerId","data","DomainRequests","fetchAsync","alerts","setErrors","hasCompleted","initialValues","requestingAccess","DomainSettingsFormHelper","teacherInvites","SettingsLayout","heading","breadcrumbs","requiredPermissions","PermissionName","DomainSettingsTabs","active","AccessSettingsAppLinks","Text","phrase","FormWrapper","onSubmit","onDone","formattedRequestData","AccessType","success","responseJSON","problems","validate","setShowPopup","validateOnChange","validateOnBlur","Button","variant","disabled","dirty","onClick","submitForm"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9740],{34055:(e,t,r)=>{r.d(t,{W:()=>b});var n=r(32735),o=r(92869),a=r(81886),l=r(31453),i=r(1048),c=r(49985),u=r(65858),s=r(83914),d=r(28329),m=r(43132),f=r(75795),v=r(35223);const y={searchSvg:"NXv7I",searchInput:"ntGKR"};function g(e){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(e)}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function b(e){var t,r,b,h=f.O.getCurrentRoute().appLink.params,S=(r=n.useState(null!==(t=null==h?void 0:h[e.queryParamName])&&void 0!==t?t:""),b=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a,l,i=[],c=!0,u=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=a.call(r)).done)&&(i.push(n.value),i.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(u)throw o}}return i}}(r,b)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}(r,b)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),w=S[0],E=S[1];n.useEffect((function(){var t,r,n;h&&(h[e.queryParamName]?E(null!==(r=null===(t=h[e.queryParamName])||void 0===t?void 0:t.trim())&&void 0!==r?r:""):w.length&&!(null===(n=h[e.queryParamName])||void 0===n?void 0:n.length)&&E(""))}),[e.id]),n.useEffect((function(){(null==h?void 0:h[e.queryParamName])&&(null==h?void 0:h[e.queryParamName])!==w&&E(null==h?void 0:h[e.queryParamName])}),[null==h?void 0:h[e.queryParamName]]);var j=(0,d.N)(w,e.debounceTime);n.useEffect((function(){!function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(t!==h[e.queryParamName]&&(t||h[e.queryParamName])){var r=i.t.omit(h,[e.queryParamName,"cursor"]),n=Object.assign(function(e,t,r){return(t=function(e){var t=function(e){if("object"!=g(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=g(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==g(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}({},e.queryParamName,t.trim()?t.trimLeft():""),r);n[e.queryParamName]||(delete n[e.queryParamName],delete n.cursor),o.t.preventScrollTop(),e.analyticsOptions&&c.k.logUserAction({query:t,indices:e.searchIndices},c.k.mergeOptions(e.analyticsOptions,{actionType:u.Vw.InstantSearch,workflowPhase:u.eu.Complete})),a.Q.C$.trigger(Object.assign(Object.assign({},e.searchAppLink),{params:n}))}}(j)}),[j]);var O=(0,m.s)({query:w,indices:e.searchIndices,analyticsOptions:e.analyticsOptions,shouldLog:!!e.analyticsOptions}).log;return n.createElement("div",{className:"position-relative w-100"},n.createElement("input",{name:e.name,type:"text",className:(0,l.A)("form-control pe-2 w-100 border-dark ".concat(y.searchInput),"lg"===e.size&&"form-control-lg",e.className),id:e.id,autoComplete:"off",placeholder:e.placeholder,"aria-label":"Search",onChange:function(e){E(e.target.value)},onBlur:function(e){var t;return O(null!==(t=e.target.value)&&void 0!==t?t:"")},value:w}),n.createElement(s.x,{svgName:v.vn.Search,className:"".concat(y.searchSvg," svg-container cursor-pointer text-dark")}))}b.defaultProps={debounceTime:300,queryParamName:"query"}},28469:(e,t,r)=>{r.d(t,{P:()=>a});var n=r(32735),o=r(23481).T.encloseNamespace("rostering.alert");function a(e){var t="classroom"===e.type?o("classroom"):o("hasRostering");return n.createElement("div",{className:"alert text-info bg-light-blue px-2 rounded-3 fw-semibold py-2 d-flex flex-wrap"},t," ")}},6748:(e,t,r)=>{r.d(t,{i:()=>j});var n=r(32735),o=r(42648),a=r(35509),l=r(91967),i=r(15611),c=r(17808),u=r(1287),s=r(83914),d=r(90281),m={opacity:"0.8",cursor:"grabbing"},f=r(35223);function v(e){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||y(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,t){if(e){if("string"==typeof e)return g(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?g(e,t):void 0}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function p(e){var t,r,n,o;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(r=e.current)||void 0===r?void 0:r.scrollLeft)+1<(null===(n=e.current)||void 0===n?void 0:n.scrollWidth)-(null===(o=e.current)||void 0===o?void 0:o.clientWidth)}}const b={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var S=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r};function w(e){var t,r;return e.column.canSort?n.createElement("span",{className:"".concat(b.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(r=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==r?r:"")},n.createElement(s.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:s.S.Small})):n.createElement(n.Fragment,null)}function E(e){var t,r,o,s,d,f,y,g,p={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(p.initialState={selectedRowIds:(y=e.initialSelectedRowIds,g={},y.forEach((function(e){return g[e]=!0})),g)}),e.getRowId&&(p.getRowId=e.getRowId);var b,S=a.useTable.apply(void 0,[p].concat((b=function(e){var t=[a.useSortBy,a.useRowSelect,"flex"===e.layout?a.useFlexLayout:a.useBlockLayout];return e.allowFiltering&&(t=[].concat(v(t),[a.useFilters])),e.allowGlobalFiltering&&(t=[].concat(v(t),[a.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return h(e)}(b)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(b)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(e,t):void 0}}(b)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))),E=S.getTableProps,j=S.getTableBodyProps,O=S.headerGroups,C=S.rows,P=S.prepareRow,N=S.toggleAllRowsSelected,R=S.setGlobalFilter,k=S.setHiddenColumns,I=S.state.sortBy;function A(){return!C.length&&e.emptyState?e.emptyState:C.map((function(t){P(t);var r=function(t){var r,n,o,a,i,c=l.q.isFunction(null===(r=e.theme)||void 0===r?void 0:r.row)?e.theme.row(t):null!==(o=null===(n=e.theme)||void 0===n?void 0:n.row)&&void 0!==o?o:"";return t.isSelected&&(null===(a=e.theme)||void 0===a?void 0:a.selectedRow)&&(c+=" ".concat(null===(i=e.theme)||void 0===i?void 0:i.selectedRow)),e.onSelectRow&&(c+=" cursor-pointer"),e.enableSortableRows&&(c+=" cursor-grab"),c}(t),o=!!e.getRowAppLink&&e.getRowAppLink(t);function a(){e.onSelectRow&&(e.allowSelectMultipleRows||N(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function c(e,l){var c=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,l);return o?n.createElement("div",{role:"row",key:t.id},n.createElement(i.F,Object.assign({},e,c,{className:r,appLink:o}),q(t))):n.createElement("div",Object.assign({},e,c,{key:t.id,role:"row",className:r,onClick:a}),q(t))}var s=t.getRowProps();return e.enableSortableRows?n.createElement(u.W,{id:t.original.id,key:t.id,childProps:s,childComponent:n.forwardRef((function(e,t){return c(e,t)}))}):c(s)}))}function q(t){return t.cells.map((function(r){var o=function(t,r){var n,o,a="";return"function"==typeof(null===(n=e.theme)||void 0===n?void 0:n.cell)&&(a=e.theme.cell(t,r)),"string"==typeof(null===(o=e.theme)||void 0===o?void 0:o.cell)&&(a=e.theme.cell),e.onSelectCell&&(a+=" cursor-pointer"),a}(t,r);return n.createElement("div",Object.assign({key:r.column.id},r.getCellProps(),{className:o,onClick:function(){e.onSelectCell&&e.onSelectCell(r)}}),r.render("Cell"))}))}return n.useEffect((function(){e.onSort&&e.onSort(I)}),[I]),n.useEffect((function(){e.globalFilter&&R(e.globalFilter)}),[e.globalFilter]),n.useEffect((function(){e.hiddenColumns&&k(e.hiddenColumns)}),[e.hiddenColumns&&e.hiddenColumns.length]),n.createElement("div",Object.assign({},E(),{className:null!==(r=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==r?r:""}),n.createElement("div",{className:null!==(s=null===(o=e.theme)||void 0===o?void 0:o.header)&&void 0!==s?s:""},O.map((function(t){var r,o;return n.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(o=null===(r=e.theme)||void 0===r?void 0:r.headerRow)&&void 0!==o?o:""}),t.headers.map((function(t){var r,o;return n.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(o=null===(r=e.theme)||void 0===r?void 0:r.headerCell)&&void 0!==o?o:""}),t.render("Header",{renderSortIndicator:function(){return n.createElement(w,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&n.createElement(w,{column:t,theme:e.theme}))})))}))),n.createElement("div",Object.assign({},j(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?n.createElement(c.Q,{ids:C.map((function(e){return e.original.id})),getDragOverlay:function(t){var r,o,a=C.findIndex((function(e){return e.original.id===t})),l=C[a];return n.createElement("div",Object.assign({},e,{className:(r=e.theme,o="g-0 ",r&&(o+=r.row),o),style:m}),q(l))},onSortEnd:e.onSortingRowsEnd},A()):A()))}function j(e){var t=e.enableSlider,r=e.scrollIncrement,a=e.scrollable,i=S(e,["enableSlider","scrollIncrement","scrollable"]),c=function(){var e,t,r=n.useRef(null),o=(e=n.useState(p(r)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a,l,i=[],c=!0,u=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=a.call(r)).done)&&(i.push(n.value),i.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(u)throw o}}return i}}(e,t)||y(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=o[0],i=o[1],c=l.q.throttle((function(){i(p(r))}),200),u=n.useCallback((function(e){var t;r.current&&(null===(t=r.current)||void 0===t||t.removeEventListener("scroll",c)),e&&(i(p(r)),e.addEventListener("scroll",c)),r.current=e}),[]);return n.useEffect((function(){(null==r?void 0:r.current)&&i(p(r))}),[r]),{ref:u,scrollState:a,scroll:function(e){var t;null===(t=r.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),u=c.ref,s=c.scrollState,m=c.scroll;if(a)return n.createElement(o.$B,{renderTrackHorizontal:function(){return n.createElement("div",{className:b.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},n.createElement(E,Object.assign({},i)));if(!t)return n.createElement(E,Object.assign({},i));function f(e){m(r*("right"===e?1:-1))}return n.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},n.createElement("div",{className:"px-4"},n.createElement("div",{className:"position-relative"},n.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!s.canScrollLeft}),n.createElement("div",{className:"".concat(b.scrollContainer," ").concat(e.scrollContainerClassName),ref:u},n.createElement(E,Object.assign({},i))),n.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!s.canScrollRight}))))}j.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},58739:(e,t,r)=>{var n;r.d(t,{K:()=>n}),function(e){e[e.Submitted=0]="Submitted",e[e.Queued=1]="Queued",e[e.Pending=2]="Pending",e[e.InProgress=3]="InProgress",e[e.Completed=4]="Completed",e[e.CompletedWithError=5]="CompletedWithError",e[e.Failed=6]="Failed"}(n||(n={}))},44538:(e,t,r)=>{r.d(t,{K:()=>i});var n=r(99940),o=r(97395),a=r(58739),l=r(38389),i={getRostering:function(){return{url:"{gateway}/v1/users/me/rostering",key:"rostering"}},getSyncList:function(e){var t={};if(e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.jobStatus){var r=[];e.jobStatus.includes("completed")&&r.push.apply(r,[a.K.Completed,a.K.CompletedWithError]),e.jobStatus.includes("failed")&&r.push(a.K.Failed),e.jobStatus.includes("inProgress")&&r.push.apply(r,[a.K.Submitted,a.K.Queued,a.K.Pending,a.K.InProgress]),t.status=r}return t.type=l.m.Rostering,{url:o._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"rostering:sync:".concat(e.cursor,":").concat(e.sort,":").concat(e.jobStatus)}},createJob:function(e,t,r){return{url:"{gateway}/v1/batch/jobs",key:"rostering:sync",type:n.k.POST,invalidationKeys:["rostering:sync"],data:e,success:t,error:r}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}},getSyncScheduleSettings:function(e){return{url:"{gateway}/v1/rostering/".concat(e,"/schedule"),key:"sync-settings:".concat(e)}},updateScheduleSetting:function(e,t,r,o,a){return{type:n.k.PUT,url:"{gateway}/v1/rostering/".concat(t,"/schedule"),key:"update:sync-settings:".concat(e.customerId,":").concat(t),invalidationKeys:["sync-settings:".concat(t)],data:e,success:r,error:o,always:a}}}},91286:(e,t,r)=>{r.d(t,{v:()=>l});var n=r(32735),o=r(94644);function a(e){return e.map((function(e){return e.statusCode})).join(":")}function l(e,t,r){var l=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){l.forEach((function(e){(0,o.r)(e.statusCode,t,r)}))}),[a(l),t,r])}}}]);
2
+ //# sourceMappingURL=9740-9d50d31b72-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/9740-9d50d31b72-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/search/components/scoped-search-bar/scoped-search-bar.scss","file:///app/packages/libs/shared/src/apps/search/components/scoped-search-bar/ScopedSearchBar.tsx","file:///app/packages/libs/shared/src/components/rostering/rostering-alert/RosteringAlert.tsx","file:///app/packages/libs/shared/src/constants/DragOverlayStyles.ts","file:///app/packages/libs/shared/src/components/table/TableUtils.ts","file:///app/packages/libs/shared/src/components/table/table.scss","file:///app/packages/libs/shared/src/components/table/Table.tsx","file:///app/packages/libs/shared/src/enums/BatchJobStatus.ts","file:///app/packages/libs/shared/src/flight-requests/RosteringRequests.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"searchSvg\":\"NXv7I\",\"searchInput\":\"ntGKR\"};","import React from 'react';\n\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SearchIndices } from 'libs/shared/apps/search/interfaces';\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useDebounce } from 'libs/shared/hooks/UseDebounce';\nimport { useSearchEventLogger } from 'libs/shared/hooks/UseSearchEventLogger';\nimport { ContextService } from 'libs/shared/services/ContextService';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './scoped-search-bar.scss';\n\ninterface ScopedSearchBarProps {\n id: string;\n searchAppLink: Core.AppLink;\n searchIndices: SearchIndices[];\n analyticsOptions?: AnalyticsOptions;\n name?: string;\n placeholder?: string;\n className?: string;\n queryParamName?: string;\n debounceTime?: number;\n size?: FormSize;\n}\n\nScopedSearchBar.defaultProps = {\n debounceTime: 300,\n queryParamName: 'query'\n};\n\nexport function ScopedSearchBar(props: ScopedSearchBarProps): JSX.Element {\n const currentQueryParams = ContextService.getCurrentRoute().appLink.params as HashObject;\n\n const [ searchQuery, setSearchQuery ] = React.useState(currentQueryParams?.[props.queryParamName] ?? '');\n\n /**\n * Update the value in the search bar to match an existing query param on first load\n */\n React.useEffect(() => {\n if (!currentQueryParams)\n return;\n\n if (currentQueryParams[props.queryParamName]) {\n setSearchQuery(currentQueryParams[props.queryParamName]?.trim() ?? '');\n return;\n }\n\n if (searchQuery.length && !currentQueryParams[props.queryParamName]?.length)\n setSearchQuery('');\n }, [props.id]);\n\n React.useEffect(() => {\n if (currentQueryParams?.[props.queryParamName] && currentQueryParams?.[props.queryParamName] !== searchQuery) {\n setSearchQuery(currentQueryParams?.[props.queryParamName]);\n }\n }, [currentQueryParams?.[props.queryParamName]]);\n\n const debouncedQuery = useDebounce(searchQuery, props.debounceTime);\n\n React.useEffect(() => {\n search(debouncedQuery);\n }, [debouncedQuery]);\n\n function onChange(event: React.ChangeEvent<HTMLInputElement>): void {\n setSearchQuery(event.target.value);\n }\n\n function search(query: string = ''): void {\n if (query === currentQueryParams[props.queryParamName] || (!query && !currentQueryParams[props.queryParamName]))\n return;\n\n const currentFilters = ObjectHelper.omit(currentQueryParams, [ props.queryParamName, 'cursor' ]);\n\n const nextParams = {\n [props.queryParamName]: query.trim() ? query.trimLeft() : '',\n ...currentFilters\n };\n\n if (!nextParams[props.queryParamName]) {\n delete nextParams[props.queryParamName];\n delete nextParams.cursor;\n }\n\n ScrollHelper.preventScrollTop();\n\n if (props.analyticsOptions) {\n AnalyticsHelper.logUserAction({\n query,\n indices: props.searchIndices\n }, AnalyticsHelper.mergeOptions(props.analyticsOptions, {\n actionType: UserAction.InstantSearch,\n workflowPhase: WorkflowPhase.Complete\n }));\n }\n\n Core.AppLinkHelper.trigger({\n ...props.searchAppLink,\n params: nextParams\n });\n }\n\n const { log } = useSearchEventLogger({\n query: searchQuery,\n indices: props.searchIndices,\n analyticsOptions: props.analyticsOptions,\n shouldLog: !!props.analyticsOptions\n });\n\n return (\n <div className='position-relative w-100'>\n <input\n name={props.name}\n type='text'\n className={classNames(\n `form-control pe-2 w-100 border-dark ${styles.searchInput}`,\n props.size === 'lg' && 'form-control-lg',\n props.className\n )}\n id={props.id}\n autoComplete='off'\n placeholder={props.placeholder}\n aria-label='Search'\n onChange={onChange}\n onBlur={e => log(e.target.value ?? '')}\n value={searchQuery}\n />\n <SvgContainer\n svgName={cvSvgLibrary.Search}\n className={`${styles.searchSvg} svg-container cursor-pointer text-dark`}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'rostering.alert';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RosteringAlertProps {\n type?: 'classroom' | 'general';\n}\n\nexport function RosteringAlert(props: RosteringAlertProps) {\n const text = props.type === 'classroom' ? getPhrase('classroom') : getPhrase('hasRostering');\n\n return (\n <div className='alert text-info bg-light-blue px-2 rounded-3 fw-semibold py-2 d-flex flex-wrap'>\n {text}&nbsp;\n {/* todo add it back when KB article link is ready */}\n {/* <ExternalLink\n className='text-info text-underline'\n href={''}\n newTab\n >\n {LanguageService.getPhrase(namespace, 'learnMore')}\n </ExternalLink> */}\n </div>\n );\n}","export const DragOverlayStyles = { opacity: '0.8', cursor: 'grabbing' };","import React from 'react';\nimport { PluginHook, useBlockLayout, useFilters, useFlexLayout, useGlobalFilter, useRowSelect, useSortBy } from 'react-table';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface PluginOptions {\n allowFiltering?: boolean;\n allowGlobalFiltering?: boolean;\n layout?: 'flex' | 'block';\n}\n\nexport function getPlugins<T extends HashObject>(props: PluginOptions): PluginHook<T>[] {\n let plugins: PluginHook<T>[] = [\n useSortBy,\n useRowSelect,\n props.layout === 'flex' ? useFlexLayout : useBlockLayout\n ];\n\n if (props.allowFiltering)\n plugins = [\n ...plugins,\n useFilters\n ];\n\n if (props.allowGlobalFiltering)\n plugins = [\n ...plugins,\n useGlobalFilter\n ];\n\n return plugins;\n}\n\nexport function getSelectedRowIds(ids: string[]): Record<string, boolean> {\n const idHash: Record<string, boolean> = {};\n\n ids.forEach(id => idHash[id] = true);\n\n return idHash;\n}\n\ninterface TableScrollState {\n canScrollLeft: boolean;\n canScrollRight: boolean;\n}\n\nfunction calculateScrollState(ref: React.MutableRefObject<HTMLDivElement>): TableScrollState {\n const canScrollLeft = ref.current?.scrollLeft > 0;\n const canScrollRight = (ref.current?.scrollLeft + 1) < ref.current?.scrollWidth - ref.current?.clientWidth;\n\n return { canScrollLeft, canScrollRight };\n}\n\ninterface UseTableScroll {\n ref: (el: HTMLDivElement) => void;\n scrollState: TableScrollState;\n scroll: (scrollBy: number) => void;\n}\n\nexport function useTableScroll(): UseTableScroll {\n const elRef = React.useRef<HTMLDivElement>(null);\n const [ scrollState, setScrollState ] = React.useState<TableScrollState>(calculateScrollState(elRef));\n\n function onScroll(): void {\n setScrollState(calculateScrollState(elRef));\n }\n\n function scroll(scrollBy: number): void {\n elRef.current?.scrollBy({ left: scrollBy, top: 0, behavior: 'smooth' });\n }\n\n const throttledOnScroll = FunctionHelper.throttle(onScroll, 200);\n\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (elRef.current) {\n elRef.current?.removeEventListener('scroll', throttledOnScroll);\n }\n\n if (el) {\n setScrollState(calculateScrollState(elRef));\n el.addEventListener('scroll', throttledOnScroll);\n }\n\n elRef.current = el;\n }, []);\n\n React.useEffect(() => {\n if (elRef?.current) {\n setScrollState(calculateScrollState(elRef));\n }\n }, [elRef]);\n\n return { ref, scrollState, scroll };\n}","// extracted by mini-css-extract-plugin\nexport default {\"sortIndicator\":\"gFhu0\",\"scrollContainer\":\"sWUp9\",\"scrollbarTrack\":\"Vn2qM\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport {\n Cell,\n Column as BaseColumn,\n HeaderGroup,\n HeaderProps as BaseHeaderProps,\n IdType,\n Row,\n SortingRule,\n TableOptions,\n TableRowProps,\n useTable } from 'react-table';\nimport { DragEndEvent } from '@dnd-kit/core';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { PropsWithSortableItemProps, SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { DragOverlayStyles } from 'libs/shared/constants/DragOverlayStyles';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getPlugins, getSelectedRowIds, useTableScroll } from './TableUtils';\n\nimport styles from './table.scss';\n\nexport interface TableTheme {\n table?: string;\n header?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string | ((row: Row<any>) => string);\n selectedRow?: string;\n cell?: string | ((row?: Row<any>, cell?: Cell<any, any>) => string);\n sortIndicator?: string;\n}\n\nexport type HeaderProps<T extends HashObject> = BaseHeaderProps<T> & {\n renderSortIndicator: () => void;\n}\n\nexport type Column<T extends HashObject> = BaseColumn<T> & {\n hideSortIndicator?: boolean;\n}\n\ninterface SortIndicatorProps<T extends HashObject> {\n column: HeaderGroup<T>;\n theme?: TableTheme;\n}\n\nfunction SortIndicator<T extends HashObject>(props: SortIndicatorProps<T>): JSX.Element {\n if (!props.column.canSort)\n return <></>;\n\n return (\n <span\n className={\n `${styles.sortIndicator}\n ${!props.column.isSorted ? 'text-secondary' : ''}\n ${props.theme?.sortIndicator ?? ''}`\n }\n >\n <SvgContainer\n svgName={(props.column.isSortedDesc || !props.column.isSorted)\n ? cvSvgLibrary.ArrowRight\n : cvSvgLibrary.ArrowLeft\n }\n size={SvgContainerSize.Small}\n />\n </span>\n );\n}\n\ninterface BaseTableProps<T extends HashObject> {\n /**\n * Must be memoized.\n */\n data: T[];\n\n /**\n * Must be memoized.\n * \n * For documentation on Column Options, see https://react-table.tanstack.com/docs/api/useTable#column-options\n */\n columns: Column<T>[];\n\n theme?: TableTheme;\n\n onSelectRow?: (row: Row<T>) => void;\n\n onSelectCell?: (cell: Cell<T>) => void;\n\n onRowMouseOver?: (row: Row<T>) => void;\n\n onRowMouseLeave?: (row: Row<T>) => void;\n\n allowSelectMultipleRows?: boolean;\n\n initialSelectedRowIds?: string[];\n\n getRowId?: (row: T) => string;\n\n getRowAppLink?: (row: Row<T>) => Core.AppLink;\n\n enableSort?: boolean;\n\n manualSort?: boolean;\n\n onSort?: (sortingRule: SortingRule<T>[]) => void;\n \n // Opt-in to utilise react-table's useFilter hook.\n allowFiltering?: boolean;\n\n // Opt-in to utilise react-table's useGlobalFilter hook.\n allowGlobalFiltering?: boolean;\n\n // Use either a flex layout or a block layout. Default is flex.\n layout?: 'flex' | 'block';\n\n // Used by useGlobalFilter hook, needs to be enabled by prop above.\n globalFilter?: string;\n\n // Set initial state of hidden columns in react-table.\n hiddenColumns?: IdType<T>[];\n\n // Determine whether hidden columns should be preserved on a table update event.\n autoResetHiddenColumns?: boolean;\n\n // Determine whether sort order state should be preserved on a table update event.\n autoResetSortBy?: boolean;\n\n // Determine whether rows are sortable by drag and drop\n enableSortableRows?: boolean;\n\n onSortingRowsEnd?: (event: DragEndEvent) => void;\n\n // Set initial state of sorting in react-table\n initialSortBy?: SortingRule<T>[];\n\n emptyState?: JSX.Element;\n}\n \ntype SortableRowProps = PropsWithSortableItemProps<TableRowProps>;\n\nfunction BaseTable<T extends HashObject>(props: BaseTableProps<T>): JSX.Element {\n const tableOptions: TableOptions<T> = {\n columns: props.columns,\n data: props.data,\n disableSortBy: !props.enableSort,\n manualSortBy: props.manualSort,\n autoResetHiddenColumns: props.autoResetHiddenColumns,\n autoResetSortBy: props.autoResetSortBy,\n initialState: {\n sortBy: props.initialSortBy || []\n }\n };\n\n if (props.initialSelectedRowIds)\n tableOptions.initialState = { selectedRowIds: getSelectedRowIds(props.initialSelectedRowIds) };\n\n if (props.getRowId)\n tableOptions.getRowId = props.getRowId;\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n toggleAllRowsSelected,\n setGlobalFilter,\n setHiddenColumns,\n state: { sortBy }\n } = useTable<T>(tableOptions, ...getPlugins<T>({ ...props }));\n\n function getTableRowsClass(row: Row<T>) {\n let className = FunctionHelper.isFunction(props.theme?.row)\n ? props.theme.row(row)\n : props.theme?.row ?? '';\n\n if (row.isSelected && props.theme?.selectedRow)\n className += ` ${props.theme?.selectedRow}`;\n\n if (props.onSelectRow)\n className += ' cursor-pointer';\n\n if (props.enableSortableRows)\n className += ' cursor-grab';\n\n return className;\n }\n\n function renderTableRows() {\n if (!rows.length && props.emptyState)\n return props.emptyState;\n \n return rows.map(row => {\n prepareRow(row);\n \n const className = getTableRowsClass(row);\n const rowAppLink = !!props.getRowAppLink && props.getRowAppLink(row);\n\n function onClickRow(): void {\n if (!props.onSelectRow)\n return;\n\n if (!props.allowSelectMultipleRows)\n toggleAllRowsSelected(false);\n \n props.onSelectRow(row);\n row.toggleRowSelected(true);\n }\n\n function getSortableProps(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any) {\n if ('dragAttributes' in props && 'dragListeners' in props) {\n return {\n ...props.dragAttributes,\n ...props.dragListeners,\n 'aria-roledescription': 'Sortable row',\n ref\n };\n }\n\n return {};\n }\n\n function renderRow(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any): JSX.Element {\n const sortableProps = getSortableProps(props, ref);\n\n if (rowAppLink) {\n return (\n <div\n role='row'\n key={row.id}\n >\n <AppLink\n {...props}\n {...sortableProps}\n className={className}\n appLink={rowAppLink}\n >\n {renderCells(row)}\n </AppLink>\n </div>\n );\n }\n\n return (\n <div\n {...props}\n {...sortableProps}\n key={row.id}\n role='row'\n className={className}\n onClick={onClickRow}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n const rowProps = row.getRowProps();\n\n if (props.enableSortableRows) {\n return (\n <SortableItemWrapper\n id={row.original.id}\n key={row.id}\n childProps={rowProps}\n childComponent={React.forwardRef(\n (props: SortableRowProps, ref: React.LegacyRef<HTMLDivElement>) => (renderRow(props, ref))\n )}\n />\n );\n }\n\n return renderRow(rowProps);\n });\n }\n\n function getDragOverlayClassName(theme: TableTheme): string {\n let className = 'g-0 ';\n\n if (theme)\n className += theme.row;\n\n return className;\n }\n\n function getDragOverlay(id: string) {\n const rowIndex = rows.findIndex(item => item.original.id === id);\n const row = rows[rowIndex];\n \n return (\n <div\n {...props}\n className={getDragOverlayClassName(props.theme)}\n style={DragOverlayStyles}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n function getCellClassName(row: Row<T>, cell: Cell<T>): string {\n let cellClassName = '';\n\n if (typeof props.theme?.cell === 'function')\n cellClassName = props.theme.cell(row, cell);\n\n if (typeof props.theme?.cell === 'string')\n cellClassName = props.theme.cell;\n\n if (props.onSelectCell)\n cellClassName += ' cursor-pointer';\n\n return cellClassName;\n }\n\n function renderCells(row: Row<T>): JSX.Element[] {\n return row.cells.map(cell => {\n const cellClassName = getCellClassName(row, cell);\n\n function onClickCell(): void {\n props.onSelectCell && props.onSelectCell(cell);\n }\n\n return (\n <div key={cell.column.id} {...cell.getCellProps()} className={cellClassName} onClick={onClickCell} >\n {cell.render('Cell')}\n </div>\n );\n });\n }\n\n React.useEffect(() => {\n if (!props.onSort)\n return;\n\n props.onSort(sortBy);\n }, [sortBy]);\n\n React.useEffect(() => {\n if (!props.globalFilter)\n return;\n\n setGlobalFilter(props.globalFilter);\n }, [props.globalFilter]);\n\n React.useEffect(() => {\n if (!props.hiddenColumns)\n return;\n\n setHiddenColumns(props.hiddenColumns);\n }, [props.hiddenColumns && props.hiddenColumns.length]);\n\n return (\n <div {...getTableProps()} className={props.theme?.table ?? ''}>\n <div className={props.theme?.header ?? ''}>\n {headerGroups.map(headerGroup => (\n <div {...headerGroup.getHeaderGroupProps()} className={props.theme?.headerRow ?? ''}>\n {headerGroup.headers.map(column => (\n <div {...column.getHeaderProps(column.getSortByToggleProps())} className={props.theme?.headerCell ?? ''}>\n {column.render('Header', { renderSortIndicator: () => <SortIndicator column={column} theme={props.theme} /> })}\n {!(column as Column<T>).hideSortIndicator &&\n <SortIndicator column={column} theme={props.theme} />\n }\n </div>\n ))}\n </div>\n ))}\n </div>\n <div {...getTableBodyProps()} className={props.theme?.body ?? ''}>\n { props.enableSortableRows ? (\n <SortableContainerWrapper\n ids={rows.map(row => row.original.id)}\n getDragOverlay={getDragOverlay}\n onSortEnd={props.onSortingRowsEnd}\n >\n {renderTableRows()}\n </SortableContainerWrapper>\n ) : (\n renderTableRows()\n )}\n </div>\n </div>\n );\n}\n\ninterface TableProps<T extends HashObject> extends BaseTableProps<T> {\n enableSlider?: boolean;\n scrollIncrement?: number;\n scrollContainerClassName?: string;\n scrollable?: boolean;\n initialSortBy?: SortingRule<T>[];\n}\n\nTable.defaultProps = {\n scrollIncrement: 250,\n scrollable: false,\n layout: 'flex'\n};\n\nexport function Table<T extends HashObject>(props: TableProps<T>): JSX.Element {\n const { enableSlider, scrollIncrement, scrollable, ...tableProps } = props;\n\n const { ref, scrollState, scroll } = useTableScroll();\n\n if (scrollable) {\n return (\n <Scrollbars\n renderTrackHorizontal={() => <div className={styles.scrollbarTrack} />}\n autoHeightMax={10000}\n autoHeight\n >\n <BaseTable {...tableProps} />\n </Scrollbars>\n );\n }\n\n if (!enableSlider)\n return <BaseTable {...tableProps} />;\n\n function onClickScroll(direction: 'left' | 'right'): void {\n scroll(scrollIncrement * (direction === 'right' ? 1 : -1));\n }\n\n return (\n <div className='mx-n4 overflow-x-hidden overflow-y-hidden'>\n <div className='px-4'>\n <div className='position-relative'>\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => onClickScroll('left')}\n hide={!scrollState.canScrollLeft}\n />\n <div className={`${styles.scrollContainer} ${props.scrollContainerClassName}`} ref={ref}>\n <BaseTable {...tableProps } />\n </div>\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => onClickScroll('right')}\n hide={!scrollState.canScrollRight}\n />\n </div>\n </div>\n </div>\n );\n}","export enum BatchJobStatus {\n Submitted = 0,\n Queued = 1,\n Pending = 2,\n InProgress = 3,\n Completed = 4,\n CompletedWithError = 5,\n Failed = 6\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { BatchJob, ScheduleSettingRequest } from 'libs/shared/interfaces';\nimport { CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const RosteringRequests = {\n getRostering(): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/rostering`,\n key: `rostering`\n };\n },\n\n getSyncList(queryParams: BulkJobsQueryParams): Flight.Request {\n const params: HashObject = {};\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.jobStatus) {\n const statuses = [];\n if (queryParams.jobStatus.includes('completed')) {\n statuses.push(...[ BatchJobStatus.Completed, BatchJobStatus.CompletedWithError ]);\n }\n if (queryParams.jobStatus.includes('failed')) {\n statuses.push(BatchJobStatus.Failed);\n }\n if (queryParams.jobStatus.includes('inProgress')) {\n statuses.push(...[\n BatchJobStatus.Submitted,\n BatchJobStatus.Queued,\n BatchJobStatus.Pending,\n BatchJobStatus.InProgress ]);\n }\n params.status = statuses;\n }\n\n params.type = BatchJobType.Rostering;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `rostering:sync:${queryParams.cursor}:${queryParams.sort}:${queryParams.jobStatus}`\n };\n },\n\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'rostering:sync',\n type: HttpVerbs.POST,\n invalidationKeys: ['rostering:sync'],\n data,\n success,\n error\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n },\n\n getSyncScheduleSettings(integrationId: string): Flight.SimulatedRequest {\n return {\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `sync-settings:${integrationId}`\n };\n },\n\n updateScheduleSetting(\n data: ScheduleSettingRequest,\n integrationId: string,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n type: HttpVerbs.PUT,\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `update:sync-settings:${data.customerId}:${integrationId}`,\n invalidationKeys: [`sync-settings:${integrationId}`],\n data,\n success,\n error,\n always\n };\n }\n};","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}"],"names":["ScopedSearchBar","props","currentQueryParams","ContextService","appLink","params","queryParamName","searchQuery","setSearchQuery","trim","length","id","debouncedQuery","debounceTime","query","currentFilters","ObjectHelper","nextParams","trimLeft","cursor","ScrollHelper","analyticsOptions","AnalyticsHelper","indices","searchIndices","actionType","workflowPhase","searchAppLink","search","log","shouldLog","className","name","type","size","autoComplete","placeholder","onChange","event","target","value","onBlur","e","SvgContainer","svgName","defaultProps","getPhrase","RosteringAlert","text","DragOverlayStyles","opacity","calculateScrollState","ref","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","column","canSort","isSorted","theme","sortIndicator","isSortedDesc","S","BaseTable","ids","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialState","sortBy","initialSortBy","initialSelectedRowIds","selectedRowIds","forEach","getRowId","useTable","plugins","useSortBy","useRowSelect","layout","useFlexLayout","useBlockLayout","allowFiltering","useFilters","allowGlobalFiltering","useGlobalFilter","getPlugins","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","toggleAllRowsSelected","setGlobalFilter","setHiddenColumns","state","renderTableRows","emptyState","map","row","FunctionHelper","isSelected","selectedRow","onSelectRow","enableSortableRows","getTableRowsClass","rowAppLink","getRowAppLink","onClickRow","allowSelectMultipleRows","toggleRowSelected","renderRow","sortableProps","dragAttributes","dragListeners","getSortableProps","role","key","AppLink","renderCells","onClick","rowProps","getRowProps","SortableItemWrapper","original","childProps","childComponent","cells","cell","cellClassName","onSelectCell","getCellClassName","getCellProps","render","onSort","globalFilter","hiddenColumns","table","header","headerGroup","getHeaderGroupProps","headerRow","headers","getHeaderProps","getSortByToggleProps","headerCell","renderSortIndicator","hideSortIndicator","body","SortableContainerWrapper","getDragOverlay","rowIndex","findIndex","item","style","onSortEnd","onSortingRowsEnd","Table","enableSlider","scrollIncrement","scrollable","tableProps","elRef","scrollState","setScrollState","throttledOnScroll","el","removeEventListener","addEventListener","scroll","scrollBy","left","top","behavior","useTableScroll","renderTrackHorizontal","autoHeightMax","autoHeight","onClickScroll","direction","WidgetButton","W","hide","scrollContainerClassName","BatchJobStatus","RosteringRequests","getRostering","url","getSyncList","queryParams","sort","order","jobStatus","statuses","includes","push","status","createJob","success","error","invalidationKeys","getJobSummary","getSyncScheduleSettings","integrationId","updateScheduleSetting","always","customerId","generateCacheKey","flightObjs","obj","statusCode","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect"],"sourceRoot":""}