@tumaet/prompt-ui-components 1.1.5 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { CheckCircle, Download, XCircle } from 'lucide-react';
3
- import { downloadParticipations } from '../utils/downloadParticipations';
3
+ import { DEFAULT_EXPORT_FILENAME, downloadParticipations } from '../utils/downloadParticipations';
4
+ function resolveCsvFilename(filename) {
5
+ const sanitized = (filename ?? '').replace(/[\\/:*?"<>|]/g, '').trim() || DEFAULT_EXPORT_FILENAME;
6
+ return sanitized.toLowerCase().endsWith('.csv') ? sanitized : `${sanitized}.csv`;
7
+ }
4
8
  export function getParticipantActions(actions, extraActions, exportDeps, extraColumns = []) {
5
9
  return [
6
10
  {
@@ -28,7 +32,17 @@ export function getParticipantActions(actions, extraActions, exportDeps, extraCo
28
32
  {
29
33
  label: 'Export CSV',
30
34
  icon: _jsx(Download, { className: 'h-4 w-4' }),
31
- onAction: (rows) => {
35
+ confirm: {
36
+ title: 'Export CSV',
37
+ description: (c) => `Export ${c} participants as CSV.`,
38
+ confirmLabel: 'Export',
39
+ input: {
40
+ label: 'Filename',
41
+ placeholder: DEFAULT_EXPORT_FILENAME,
42
+ defaultValue: DEFAULT_EXPORT_FILENAME,
43
+ },
44
+ },
45
+ onAction: (rows, filename) => {
32
46
  const originalRows = rows.map((r) => ({
33
47
  coursePhaseID: r.coursePhaseID,
34
48
  courseParticipationID: r.courseParticipationID,
@@ -38,7 +52,7 @@ export function getParticipantActions(actions, extraActions, exportDeps, extraCo
38
52
  prevData: r.prevData ?? {},
39
53
  student: r.student,
40
54
  }));
41
- downloadParticipations(originalRows, exportDeps.prevDataKeys ?? [], exportDeps.restrictedDataKeys ?? [], exportDeps.studentReadableDataKeys ?? [], extraColumns);
55
+ downloadParticipations(originalRows, exportDeps.prevDataKeys ?? [], exportDeps.restrictedDataKeys ?? [], exportDeps.studentReadableDataKeys ?? [], extraColumns, resolveCsvFilename(filename));
42
56
  },
43
57
  },
44
58
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"participationActions.js","sourceRoot":"","sources":["../../../../../src/components/pages/CoursePhaseParticipationsTable/table/participationActions.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AASxE,MAAM,UAAU,qBAAqB,CACnC,OAGC,EACD,YAAyC,EACzC,UAAsB,EACtB,eAA8C,EAAE;IAEhD,OAAO;QACL;YACE,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,GAAG;YACzC,OAAO,EAAE;gBACP,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,0BAA0B;gBACvD,YAAY,EAAE,YAAY;aAC3B;YACD,QAAQ,EAAE,OAAO,CAAC,SAAS;SAC5B;QACD;YACE,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,KAAC,OAAO,IAAC,SAAS,EAAC,SAAS,GAAG;YACrC,OAAO,EAAE;gBACP,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,0BAA0B;gBACvD,YAAY,EAAE,YAAY;gBAC1B,OAAO,EAAE,aAAa;aACvB;YACD,QAAQ,EAAE,OAAO,CAAC,SAAS;SAC5B;QACD,GAAG,YAAY;QACf;YACE,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG;YACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACpC,aAAa,EAAE,CAAC,CAAC,aAAa;oBAC9B,qBAAqB,EAAE,CAAC,CAAC,qBAAqB;oBAC9C,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,cAAc,EAAE,CAAC,CAAC,cAAc;oBAChC,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,IAAI,EAAE;oBAChD,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;oBAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC,CAAC,CAAA;gBAEH,sBAAsB,CACpB,YAAY,EACZ,UAAU,CAAC,YAAY,IAAI,EAAE,EAC7B,UAAU,CAAC,kBAAkB,IAAI,EAAE,EACnC,UAAU,CAAC,uBAAuB,IAAI,EAAE,EACxC,YAAY,CACb,CAAA;YACH,CAAC;SACF;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"participationActions.js","sourceRoot":"","sources":["../../../../../src/components/pages/CoursePhaseParticipationsTable/table/participationActions.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AASjG,SAAS,kBAAkB,CAAC,QAAiB;IAC3C,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,uBAAuB,CAAA;IACjG,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,MAAM,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAGC,EACD,YAAyC,EACzC,UAAsB,EACtB,eAA8C,EAAE;IAEhD,OAAO;QACL;YACE,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,GAAG;YACzC,OAAO,EAAE;gBACP,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,0BAA0B;gBACvD,YAAY,EAAE,YAAY;aAC3B;YACD,QAAQ,EAAE,OAAO,CAAC,SAAS;SAC5B;QACD;YACE,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,KAAC,OAAO,IAAC,SAAS,EAAC,SAAS,GAAG;YACrC,OAAO,EAAE;gBACP,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,0BAA0B;gBACvD,YAAY,EAAE,YAAY;gBAC1B,OAAO,EAAE,aAAa;aACvB;YACD,QAAQ,EAAE,OAAO,CAAC,SAAS;SAC5B;QACD,GAAG,YAAY;QACf;YACE,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG;YACtC,OAAO,EAAE;gBACP,KAAK,EAAE,YAAY;gBACnB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,uBAAuB;gBACtD,YAAY,EAAE,QAAQ;gBACtB,KAAK,EAAE;oBACL,KAAK,EAAE,UAAU;oBACjB,WAAW,EAAE,uBAAuB;oBACpC,YAAY,EAAE,uBAAuB;iBACtC;aACF;YACD,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;gBAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACpC,aAAa,EAAE,CAAC,CAAC,aAAa;oBAC9B,qBAAqB,EAAE,CAAC,CAAC,qBAAqB;oBAC9C,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,cAAc,EAAE,CAAC,CAAC,cAAc;oBAChC,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,IAAI,EAAE;oBAChD,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;oBAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC,CAAC,CAAA;gBAEH,sBAAsB,CACpB,YAAY,EACZ,UAAU,CAAC,YAAY,IAAI,EAAE,EAC7B,UAAU,CAAC,kBAAkB,IAAI,EAAE,EACnC,UAAU,CAAC,uBAAuB,IAAI,EAAE,EACxC,YAAY,EACZ,kBAAkB,CAAC,QAAQ,CAAC,CAC7B,CAAA;YACH,CAAC;SACF;KACF,CAAA;AACH,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { saveAs } from 'file-saver';
2
- export const downloadParticipations = (data, prevDataKeys, restrictedDataKeys, studentReadableDataKeys, extraColumns = [], filename = 'participation-export.csv') => {
2
+ export const DEFAULT_EXPORT_FILENAME = 'participation-export';
3
+ export const downloadParticipations = (data, prevDataKeys, restrictedDataKeys, studentReadableDataKeys, extraColumns = [], filename = `${DEFAULT_EXPORT_FILENAME}.csv`) => {
3
4
  if (!data || data.length === 0) {
4
5
  console.error('No data available to download.');
5
6
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"downloadParticipations.js","sourceRoot":"","sources":["../../../../../src/components/pages/CoursePhaseParticipationsTable/utils/downloadParticipations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"downloadParticipations.js","sourceRoot":"","sources":["../../../../../src/components/pages/CoursePhaseParticipationsTable/utils/downloadParticipations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAAsB,CAAA;AAE7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAA2C,EAC3C,YAAsB,EACtB,kBAA4B,EAC5B,uBAAiC,EACjC,eAA8C,EAAE,EAChD,QAAQ,GAAG,GAAG,uBAAuB,MAAM,EAC3C,EAAE;IACF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC/C,OAAM;IACR,CAAC;IAED,MAAM,gBAAgB,GAA2B;QAC/C,SAAS,EAAE,YAAY;QACvB,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,OAAO;QACd,mBAAmB,EAAE,sBAAsB;QAC3C,eAAe,EAAE,kBAAkB;QACnC,oBAAoB,EAAE,wBAAwB;QAC9C,qBAAqB,EAAE,yBAAyB;QAChD,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,aAAa;KAC1B,CAAA;IAED,MAAM,WAAW,GAAG;QAClB,WAAW;QACX,UAAU;QACV,OAAO;QACP,qBAAqB;QACrB,iBAAiB;QACjB,sBAAsB;QACtB,uBAAuB;QACvB,QAAQ;QACR,YAAY;QACZ,GAAG,YAAY;QACf,GAAG,kBAAkB;QACrB,GAAG,uBAAuB;KAC3B,CAAA;IAED,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1D,MAAM,UAAU,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC,CAAA;IAEpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAuC,CAAA;QAEzE,OAAO,UAAU;aACd,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YAC9C,CAAC;iBAAM,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAA;YAC7C,CAAC;iBAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YACnD,CAAC;iBAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YACzD,CAAC;iBAAM,IAAI,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YAC9D,CAAC;iBAAM,IAAI,MAAM,KAAK,uBAAuB,EAAE,CAAC;gBAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAA;YACxD,CAAC;iBAAM,CAAC;gBACN,MAAM,mBAAmB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;gBAC7E,IAAI,mBAAmB,EAAE,CAAC;oBACxB,MAAM,aAAa,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CACtD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,KAAK,GAAG,CAAC,qBAAqB,CACnE,CAAA;oBACD,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,IAAI,EAAE,CAAC,CAAA;gBACzD,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACnD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CACnD,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAA;IACxE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AACxB,CAAC,CAAA"}
@@ -1,11 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '../../../../components/ui';
2
+ import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Input, Label, } from '../../../../components/ui';
3
+ import { useState } from 'react';
3
4
  export function ActionDialog({ action, selectedRows, onClose, onConfirm, }) {
5
+ const input = action.confirm?.input;
6
+ const [inputValue, setInputValue] = useState(input?.defaultValue ?? '');
4
7
  const description = typeof action?.confirm?.description === 'function'
5
8
  ? action.confirm.description(selectedRows.length)
6
9
  : (action?.confirm?.description ?? '');
7
- return (_jsx(Dialog, { open: true, onOpenChange: onClose, children: _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: action.confirm?.title }), _jsx(DialogDescription, { children: description })] }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: 'outline', onClick: onClose, children: "Cancel" }), _jsx(Button, { variant: action.confirm?.variant ?? 'default', onClick: async () => {
8
- await onConfirm();
9
- }, children: action.confirm?.confirmLabel ?? 'Confirm' })] })] }) }));
10
+ return (_jsx(Dialog, { open: true, onOpenChange: onClose, children: _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: action.confirm?.title }), _jsx(DialogDescription, { children: description })] }), _jsxs("form", { className: 'space-y-4', onSubmit: async (event) => {
11
+ event.preventDefault();
12
+ await onConfirm(input ? inputValue : undefined);
13
+ }, children: [input && (_jsxs("div", { className: 'grid gap-2', children: [_jsx(Label, { htmlFor: 'action-dialog-input', children: input.label }), _jsx(Input, { id: 'action-dialog-input', value: inputValue, placeholder: input.placeholder, onChange: (event) => setInputValue(event.target.value) })] })), _jsxs(DialogFooter, { children: [_jsx(Button, { type: 'button', variant: 'outline', onClick: onClose, children: "Cancel" }), _jsx(Button, { type: 'submit', variant: action.confirm?.variant ?? 'default', children: action.confirm?.confirmLabel ?? 'Confirm' })] })] })] }) }));
10
14
  }
11
15
  //# sourceMappingURL=ActionDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionDialog.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTable/actions/ActionDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAA;AAWxB,MAAM,UAAU,YAAY,CAAmB,EAC7C,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,GACY;IACrB,MAAM,WAAW,GACf,OAAO,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,UAAU;QAChD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;QACjD,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC,CAAA;IAC1C,OAAO,CACL,KAAC,MAAM,IAAC,IAAI,QAAC,YAAY,EAAE,OAAO,YAChC,MAAC,aAAa,eACZ,MAAC,YAAY,eACX,KAAC,WAAW,cAAE,MAAM,CAAC,OAAO,EAAE,KAAK,GAAe,EAClD,KAAC,iBAAiB,cAAE,WAAW,GAAqB,IACvC,EAEf,MAAC,YAAY,eACX,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,OAAO,uBAEjC,EACT,KAAC,MAAM,IACL,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,SAAS,EAC7C,OAAO,EAAE,KAAK,IAAI,EAAE;gCAClB,MAAM,SAAS,EAAE,CAAA;4BACnB,CAAC,YAEA,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,GACnC,IACI,IACD,GACT,CACV,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"ActionDialog.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTable/actions/ActionDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,KAAK,EACL,KAAK,GACN,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAgB,QAAQ,EAAE,MAAM,OAAO,CAAA;AAU9C,MAAM,UAAU,YAAY,CAAmB,EAC7C,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,GACY;IACrB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,CAAA;IACnC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC,CAAA;IAEvE,MAAM,WAAW,GACf,OAAO,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,UAAU;QAChD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;QACjD,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC,CAAA;IAC1C,OAAO,CACL,KAAC,MAAM,IAAC,IAAI,QAAC,YAAY,EAAE,OAAO,YAChC,MAAC,aAAa,eACZ,MAAC,YAAY,eACX,KAAC,WAAW,cAAE,MAAM,CAAC,OAAO,EAAE,KAAK,GAAe,EAClD,KAAC,iBAAiB,cAAE,WAAW,GAAqB,IACvC,EAEf,gBACE,SAAS,EAAC,WAAW,EACrB,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;wBACxB,KAAK,CAAC,cAAc,EAAE,CAAA;wBACtB,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;oBACjD,CAAC,aAEA,KAAK,IAAI,CACR,eAAK,SAAS,EAAC,YAAY,aACzB,KAAC,KAAK,IAAC,OAAO,EAAC,qBAAqB,YAAE,KAAK,CAAC,KAAK,GAAS,EAC1D,KAAC,KAAK,IACJ,EAAE,EAAC,qBAAqB,EACxB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GACtD,IACE,CACP,EAED,MAAC,YAAY,eACX,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,OAAO,uBAE/C,EACT,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,SAAS,YAChE,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,GACnC,IACI,IACV,IACO,GACT,CACV,CAAA;AACH,CAAC"}
@@ -12,11 +12,11 @@ export function ActionsMenu({ selectedRows, triggerComponent, actions, onFinish,
12
12
  setMenuOpen(false);
13
13
  onFinish?.();
14
14
  };
15
- const executeAction = async (action) => {
15
+ const executeAction = async (action, inputValue) => {
16
16
  const rowsToAffect = [...selectedRows];
17
17
  try {
18
18
  setIsExecuting(true);
19
- await action.onAction(rowsToAffect);
19
+ await action.onAction(rowsToAffect, inputValue);
20
20
  }
21
21
  finally {
22
22
  setIsExecuting(false);
@@ -30,12 +30,12 @@ export function ActionsMenu({ selectedRows, triggerComponent, actions, onFinish,
30
30
  }
31
31
  await executeAction(action);
32
32
  };
33
- const clickDialogConfirm = async () => {
33
+ const clickDialogConfirm = async (inputValue) => {
34
34
  if (!openActionConfirmation)
35
35
  return;
36
36
  const action = openActionConfirmation;
37
37
  setOpenActionConfirmation(null);
38
- await executeAction(action);
38
+ await executeAction(action, inputValue);
39
39
  };
40
40
  return (_jsxs(_Fragment, { children: [_jsxs(DropdownMenu, { open: menuOpen && !isExecuting, onOpenChange: (open) => {
41
41
  if (!isExecuting) {
@@ -1 +1 @@
1
- {"version":3,"file":"ActionsMenu.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTable/actions/ActionsMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionsMenu.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTable/actions/ActionsMenu.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import { CoursePhaseParticipationWithStudent } from '@tumaet/prompt-shared-state';
2
2
  import { ExtraParticipantColumn } from '../table/participationRow';
3
+ export declare const DEFAULT_EXPORT_FILENAME = "participation-export";
3
4
  export declare const downloadParticipations: (data: CoursePhaseParticipationWithStudent[], prevDataKeys: string[], restrictedDataKeys: string[], studentReadableDataKeys: string[], extraColumns?: ExtraParticipantColumn<any>[], filename?: string) => void;
@@ -17,12 +17,17 @@ export interface WithId {
17
17
  export interface RowAction<Type extends WithId> {
18
18
  label: string;
19
19
  icon?: React.ReactNode;
20
- onAction: (rows: Type[]) => void | Promise<void>;
20
+ onAction: (rows: Type[], inputValue?: string) => void | Promise<void>;
21
21
  confirm?: {
22
22
  title?: string;
23
23
  description: string | ((count: number) => string);
24
24
  confirmLabel?: string;
25
25
  variant?: 'default' | 'destructive';
26
+ input?: {
27
+ label: string;
28
+ placeholder?: string;
29
+ defaultValue?: string;
30
+ };
26
31
  };
27
32
  disabled?: (rows: Type[]) => boolean;
28
33
  hide?: (rows: Type[]) => boolean;
@@ -3,7 +3,7 @@ import { RowAction, WithId } from '../PromptTableTypes';
3
3
  interface ActionDialogProps<T extends WithId> {
4
4
  action: RowAction<T>;
5
5
  selectedRows: T[];
6
- onConfirm: () => Promise<void> | void;
6
+ onConfirm: (inputValue?: string) => Promise<void> | void;
7
7
  onClose: () => void;
8
8
  }
9
9
  export declare function ActionDialog<T extends WithId>({ action, selectedRows, onClose, onConfirm, }: ActionDialogProps<T>): ReactElement;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tumaet/prompt-ui-components",
3
- "version": "1.1.5",
3
+ "version": "1.1.6",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/prompt-edu/prompt-lib.git"
@@ -80,12 +80,12 @@
80
80
  "js-sha256": "^0.11.1",
81
81
  "lowlight": "^3.3.0",
82
82
  "lucide-react": "^1.22.0",
83
- "postcss": "^8.5.15",
83
+ "postcss": "^8.5.16",
84
84
  "postcss-preset-env": "^11.3.2",
85
85
  "react-day-picker": "8.10.2",
86
86
  "react-hook-form": "^7.80.0",
87
87
  "react-medium-image-zoom": "^5.4.8",
88
- "recharts": "^3.9.0",
88
+ "recharts": "^3.9.1",
89
89
  "sonner": "^2.0.7",
90
90
  "tailwind-merge": "^3.6.0",
91
91
  "tsc-alias": "^1.8.17",
@@ -119,6 +119,6 @@
119
119
  "react-router-dom": "^7.14.2"
120
120
  },
121
121
  "resolutions": {
122
- "tar": "^7.5.16"
122
+ "tar": "^7.5.19"
123
123
  }
124
124
  }