@ltht-react/table 2.0.62 → 2.0.64

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 (50) hide show
  1. package/README.md +15 -15
  2. package/lib/atoms/questionnaire-withdrawn-table-cell.d.ts +6 -0
  3. package/lib/atoms/questionnaire-withdrawn-table-cell.js +19 -0
  4. package/lib/atoms/questionnaire-withdrawn-table-cell.js.map +1 -0
  5. package/lib/index.d.ts +6 -0
  6. package/lib/index.js +13 -0
  7. package/lib/index.js.map +1 -0
  8. package/lib/molecules/table-cell.d.ts +16 -0
  9. package/lib/molecules/table-cell.js +99 -0
  10. package/lib/molecules/table-cell.js.map +1 -0
  11. package/lib/molecules/table-component.d.ts +20 -0
  12. package/lib/molecules/table-component.js +68 -0
  13. package/lib/molecules/table-component.js.map +1 -0
  14. package/lib/molecules/table-methods.d.ts +11 -0
  15. package/lib/molecules/table-methods.js +198 -0
  16. package/lib/molecules/table-methods.js.map +1 -0
  17. package/lib/molecules/table-styled-components.d.ts +80 -0
  18. package/lib/molecules/table-styled-components.js +103 -0
  19. package/lib/molecules/table-styled-components.js.map +1 -0
  20. package/lib/molecules/table.d.ts +42 -0
  21. package/lib/molecules/table.js +91 -0
  22. package/lib/molecules/table.js.map +1 -0
  23. package/lib/molecules/useDimensionRef.d.ts +5 -0
  24. package/lib/molecules/useDimensionRef.js +31 -0
  25. package/lib/molecules/useDimensionRef.js.map +1 -0
  26. package/lib/molecules/useScrollRef.d.ts +8 -0
  27. package/lib/molecules/useScrollRef.js +28 -0
  28. package/lib/molecules/useScrollRef.js.map +1 -0
  29. package/lib/organisms/generic-table.d.ts +8 -0
  30. package/lib/organisms/generic-table.js +36 -0
  31. package/lib/organisms/generic-table.js.map +1 -0
  32. package/lib/organisms/questionnaire-table-methods.d.ts +9 -0
  33. package/lib/organisms/questionnaire-table-methods.js +236 -0
  34. package/lib/organisms/questionnaire-table-methods.js.map +1 -0
  35. package/lib/organisms/questionnaire-table.d.ts +11 -0
  36. package/lib/organisms/questionnaire-table.js +44 -0
  37. package/lib/organisms/questionnaire-table.js.map +1 -0
  38. package/package.json +8 -8
  39. package/src/atoms/questionnaire-withdrawn-table-cell.tsx +15 -15
  40. package/src/index.tsx +7 -7
  41. package/src/molecules/table-cell.tsx +93 -93
  42. package/src/molecules/table-component.tsx +146 -146
  43. package/src/molecules/table-methods.tsx +234 -234
  44. package/src/molecules/table-styled-components.tsx +233 -233
  45. package/src/molecules/table.tsx +161 -161
  46. package/src/molecules/useDimensionRef.tsx +37 -37
  47. package/src/molecules/useScrollRef.tsx +36 -36
  48. package/src/organisms/generic-table.tsx +33 -33
  49. package/src/organisms/questionnaire-table-methods.tsx +334 -334
  50. package/src/organisms/questionnaire-table.tsx +55 -55
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
21
+ };
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ var jsx_runtime_1 = require("react/jsx-runtime");
27
+ var types_1 = require("@ltht-react/types");
28
+ var utils_1 = require("@ltht-react/utils");
29
+ var styles_1 = require("@ltht-react/styles");
30
+ var questionnaire_withdrawn_table_cell_1 = __importDefault(require("../atoms/questionnaire-withdrawn-table-cell"));
31
+ var withdrawnWrapper = function (text) { return (0, jsx_runtime_1.jsx)(questionnaire_withdrawn_table_cell_1.default, { text: text }); };
32
+ var mapQuestionnaireDefinitionAndResponsesToTableData = function (definition, questionnaireResponses, axis, adminActions) {
33
+ var definitionItems = (0, utils_1.EnsureMaybeArray)((0, utils_1.EnsureMaybe)(definition.item, []));
34
+ if (definitionItems.length === 0) {
35
+ return undefined;
36
+ }
37
+ if (axis === 'y') {
38
+ return mapQuestionnaireObjectsToVerticalTableData(definitionItems, questionnaireResponses, adminActions);
39
+ }
40
+ return mapQuestionnaireObjectsToHorizontalTableData(definitionItems, questionnaireResponses, adminActions);
41
+ };
42
+ var mapQuestionnaireObjectsToHorizontalTableData = function (definitionItems, records, adminActions) {
43
+ var tableData = {
44
+ headers: __spreadArray([
45
+ {
46
+ id: 'date',
47
+ type: 'accessor',
48
+ cellProps: { text: 'Record Date' },
49
+ }
50
+ ], recursivelyMapQuestionnaireItemsIntoHeaders(definitionItems), true),
51
+ rows: mapQuestionnaireResponsesIntoDataEntities(records, adminActions),
52
+ };
53
+ if (adminActions) {
54
+ tableData.headers.splice(1, 0, {
55
+ id: 'adminactions',
56
+ type: 'accessor',
57
+ cellProps: { text: 'Actions' },
58
+ });
59
+ }
60
+ return tableData;
61
+ };
62
+ var recursivelyMapQuestionnaireItemsIntoHeaders = function (questionnaireItems) {
63
+ return questionnaireItems.map(function (questionnaireItem) {
64
+ var _a, _b, _c;
65
+ var subItems = (0, utils_1.EnsureMaybeArray)((_a = questionnaireItem.item) !== null && _a !== void 0 ? _a : []);
66
+ return {
67
+ id: (_b = questionnaireItem === null || questionnaireItem === void 0 ? void 0 : questionnaireItem.linkId) !== null && _b !== void 0 ? _b : '',
68
+ type: subItems.length > 0 ? 'group' : 'accessor',
69
+ cellProps: { text: (_c = questionnaireItem === null || questionnaireItem === void 0 ? void 0 : questionnaireItem.text) !== null && _c !== void 0 ? _c : '' },
70
+ subHeaders: recursivelyMapQuestionnaireItemsIntoHeaders(subItems),
71
+ };
72
+ });
73
+ };
74
+ var mapQuestionnaireResponsesIntoDataEntities = function (records, adminActions) {
75
+ return records
76
+ .filter(function (record) { return !!record.item; })
77
+ .map(function (record) {
78
+ var _a;
79
+ var dataEntity = {};
80
+ dataEntity.date = {
81
+ customComponentOverride: record.status === types_1.QuestionnaireResponseStatus.EnteredInError
82
+ ? withdrawnWrapper((0, utils_1.partialDateTimeText)(record.authored))
83
+ : undefined,
84
+ text: (0, utils_1.partialDateTimeText)(record.authored),
85
+ };
86
+ if (adminActions) {
87
+ var adminActionsForThisDataEntity = adminActions.find(function (actionForForm) { return actionForForm.questionnaire === record.id; });
88
+ if (adminActionsForThisDataEntity) {
89
+ dataEntity.adminactions = {
90
+ adminActions: adminActionsForThisDataEntity.adminActions,
91
+ parentStyle: { zIndex: (0, styles_1.getZIndex)(styles_1.TableDataWithPopUp) },
92
+ };
93
+ }
94
+ }
95
+ (_a = record.item) === null || _a === void 0 ? void 0 : _a.filter(function (item) { return (item === null || item === void 0 ? void 0 : item.linkId) && (item === null || item === void 0 ? void 0 : item.answer); }).forEach(function (item) {
96
+ var _a;
97
+ var linkId = (0, utils_1.EnsureMaybe)(item === null || item === void 0 ? void 0 : item.linkId);
98
+ var answer = (0, utils_1.EnsureMaybe)((_a = item === null || item === void 0 ? void 0 : item.answer) === null || _a === void 0 ? void 0 : _a.find(function (answer) { return !!answer; }));
99
+ dataEntity[linkId] = createCellPropsForAnswer(answer, false, record.status === types_1.QuestionnaireResponseStatus.EnteredInError);
100
+ if (answer.item) {
101
+ dataEntity = recursivelyMapResponseItemsOntoData((0, utils_1.EnsureMaybeArray)(answer.item), dataEntity, record.status);
102
+ }
103
+ });
104
+ return dataEntity;
105
+ });
106
+ };
107
+ var recursivelyMapResponseItemsOntoData = function (items, dataEntity, status) {
108
+ var updatedDataEntity = __assign({}, dataEntity);
109
+ items.forEach(function (item) {
110
+ var firstAnswer = item.answer ? item.answer[0] : undefined;
111
+ if (item.linkId && firstAnswer) {
112
+ var props = createCellPropsForAnswer(firstAnswer, false, status === types_1.QuestionnaireResponseStatus.EnteredInError);
113
+ updatedDataEntity[item.linkId] = {
114
+ customComponentOverride: props.customComponentOverride,
115
+ text: props.text,
116
+ };
117
+ if (firstAnswer.item) {
118
+ updatedDataEntity = recursivelyMapResponseItemsOntoData((0, utils_1.EnsureMaybeArray)(firstAnswer.item), updatedDataEntity, status);
119
+ }
120
+ }
121
+ });
122
+ return updatedDataEntity;
123
+ };
124
+ var mapQuestionnaireObjectsToVerticalTableData = function (definitionItems, records, adminActions) { return ({
125
+ headers: __spreadArray([
126
+ {
127
+ id: 'property',
128
+ type: 'accessor',
129
+ cellProps: { text: '' },
130
+ }
131
+ ], records.map(function (record) {
132
+ var _a, _b, _c;
133
+ return ({
134
+ id: (_a = record === null || record === void 0 ? void 0 : record.id) !== null && _a !== void 0 ? _a : '',
135
+ type: 'accessor',
136
+ cellProps: {
137
+ customComponentOverride: record.status === types_1.QuestionnaireResponseStatus.EnteredInError
138
+ ? withdrawnWrapper((_b = (0, utils_1.partialDateTimeText)(record.authored)) !== null && _b !== void 0 ? _b : '')
139
+ : undefined,
140
+ text: (_c = (0, utils_1.partialDateTimeText)(record.authored)) !== null && _c !== void 0 ? _c : '',
141
+ },
142
+ });
143
+ }), true),
144
+ rows: buildVerticalCellRows(definitionItems, records, adminActions),
145
+ }); };
146
+ var buildVerticalCellRows = function (definitionItems, records, adminActions) {
147
+ var dataEntities = definitionItems.map(function (item) {
148
+ var dataEntity = {};
149
+ dataEntity = buildVerticalCellRowsRecursive((0, utils_1.EnsureMaybeArray)([item]), records, dataEntity);
150
+ return dataEntity;
151
+ });
152
+ if (adminActions) {
153
+ var actionsDataEntity_1 = {};
154
+ actionsDataEntity_1.property = { text: 'Actions' };
155
+ records.forEach(function (record) {
156
+ var adminActionsForThisDataEntity = adminActions.find(function (actionForForm) { return actionForForm.questionnaire === record.id; });
157
+ if (adminActionsForThisDataEntity) {
158
+ actionsDataEntity_1[record.id] = {
159
+ adminActions: adminActionsForThisDataEntity.adminActions,
160
+ parentStyle: { zIndex: (0, styles_1.getZIndex)(styles_1.TableDataWithPopUp) },
161
+ };
162
+ }
163
+ });
164
+ return [actionsDataEntity_1].concat(dataEntities);
165
+ }
166
+ return dataEntities;
167
+ };
168
+ var buildVerticalCellRowsRecursive = function (definitionItems, records, dataEntity) {
169
+ var updatedDataEntity = __assign({}, dataEntity);
170
+ definitionItems.forEach(function (definitionItem) {
171
+ var _a;
172
+ updatedDataEntity.property = { text: (_a = definitionItem.text) !== null && _a !== void 0 ? _a : '' };
173
+ if (definitionItem.linkId) {
174
+ records.forEach(function (record) {
175
+ var _a;
176
+ updatedDataEntity = getRecordItemByLinkId((0, utils_1.EnsureMaybeArray)((_a = record.item) !== null && _a !== void 0 ? _a : []), (0, utils_1.EnsureMaybe)(definitionItem.linkId), updatedDataEntity, record.id, record.status);
177
+ });
178
+ }
179
+ if (definitionItem.item && definitionItem.item.length > 0) {
180
+ updatedDataEntity.subRows = buildVerticalCellRows((0, utils_1.EnsureMaybeArray)(definitionItem.item), records);
181
+ }
182
+ });
183
+ return updatedDataEntity;
184
+ };
185
+ var getRecordItemByLinkId = function (recordItems, linkId, dataEntity, recordId, status) {
186
+ var updatedDataEntity = __assign({}, dataEntity);
187
+ recordItems.forEach(function (recordItem) {
188
+ var recordItemAnswer = recordItem.answer && recordItem.answer.length > 0 ? (0, utils_1.EnsureMaybe)(recordItem.answer[0]) : undefined;
189
+ if (recordItemAnswer) {
190
+ if ((recordItem === null || recordItem === void 0 ? void 0 : recordItem.linkId) && (recordItem === null || recordItem === void 0 ? void 0 : recordItem.linkId) === linkId) {
191
+ updatedDataEntity[recordId] = createCellPropsForAnswer(recordItemAnswer, true, status === types_1.QuestionnaireResponseStatus.EnteredInError);
192
+ }
193
+ if (recordItemAnswer.item && recordItemAnswer.item.length > 0) {
194
+ updatedDataEntity = getRecordItemByLinkId((0, utils_1.EnsureMaybeArray)(recordItemAnswer.item), linkId, updatedDataEntity, recordId, status);
195
+ }
196
+ }
197
+ });
198
+ return updatedDataEntity;
199
+ };
200
+ var createCellPropsForAnswer = function (answer, shouldRenderCheckbox, isEnteredInError) {
201
+ if (answer.valueString) {
202
+ if (shouldRenderCheckbox && answer.valueString === 'CHECKBOX') {
203
+ return {
204
+ iconProps: { type: 'checkbox', size: 'medium' },
205
+ };
206
+ }
207
+ return {
208
+ customComponentOverride: isEnteredInError ? withdrawnWrapper(answer.valueString) : undefined,
209
+ text: answer.valueString,
210
+ };
211
+ }
212
+ if (answer.valueBoolean != null) {
213
+ var parsedBoolean = answer.valueBoolean ? 'Yes' : 'No';
214
+ return {
215
+ customComponentOverride: isEnteredInError ? withdrawnWrapper(parsedBoolean) : undefined,
216
+ text: parsedBoolean,
217
+ };
218
+ }
219
+ if (answer.valueInteger != null) {
220
+ return {
221
+ customComponentOverride: isEnteredInError ? withdrawnWrapper(answer.valueInteger.toString()) : undefined,
222
+ text: answer.valueInteger.toString(),
223
+ };
224
+ }
225
+ if (answer.valueDecimal != null) {
226
+ return {
227
+ customComponentOverride: isEnteredInError ? withdrawnWrapper(answer.valueDecimal.toString()) : undefined,
228
+ text: answer.valueDecimal.toString(),
229
+ };
230
+ }
231
+ return {
232
+ text: '',
233
+ };
234
+ };
235
+ exports.default = mapQuestionnaireDefinitionAndResponsesToTableData;
236
+ //# sourceMappingURL=questionnaire-table-methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questionnaire-table-methods.js","sourceRoot":"","sources":["../../src/organisms/questionnaire-table-methods.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { QuestionnaireResponse, Questionnaire } from '@ltht-react/types';
2
+ import { FC } from 'react';
3
+ import { IPaginationProps, ITableDimensionProps, ITableConfig } from '../molecules/table';
4
+ import { AdminActionsForQuestionnaire } from './questionnaire-table-methods';
5
+ declare const QuestionnaireTable: FC<IProps>;
6
+ interface IProps extends ITableConfig, IPaginationProps, ITableDimensionProps {
7
+ definition: Questionnaire;
8
+ records: QuestionnaireResponse[];
9
+ adminActions?: AdminActionsForQuestionnaire[];
10
+ }
11
+ export default QuestionnaireTable;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ var jsx_runtime_1 = require("react/jsx-runtime");
29
+ var react_1 = require("react");
30
+ var icon_1 = __importDefault(require("@ltht-react/icon"));
31
+ var table_1 = __importDefault(require("../molecules/table"));
32
+ var questionnaire_table_methods_1 = __importDefault(require("./questionnaire-table-methods"));
33
+ var QuestionnaireTable = function (_a) {
34
+ var definition = _a.definition, records = _a.records, _b = _a.headerAxis, headerAxis = _b === void 0 ? 'y' : _b, _c = _a.staticColumns, staticColumns = _c === void 0 ? 0 : _c, adminActions = _a.adminActions, _d = _a.pageSize, pageSize = _d === void 0 ? 10 : _d, _e = _a.currentPage, currentPage = _e === void 0 ? 1 : _e, _f = _a.keepPreviousData, keepPreviousData = _f === void 0 ? true : _f, props = __rest(_a, ["definition", "records", "headerAxis", "staticColumns", "adminActions", "pageSize", "currentPage", "keepPreviousData"]);
35
+ var tableData = (0, react_1.useMemo)(function () { return (0, questionnaire_table_methods_1.default)(definition, records, headerAxis, adminActions); }, [headerAxis, definition, records, adminActions]);
36
+ // TODO: Replace this fragment with a properly styled error component.
37
+ // Maybe this could be a re-usable atom?
38
+ if (!tableData) {
39
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(icon_1.default, { type: "exclamation", size: "large", color: "red" }), (0, jsx_runtime_1.jsx)("div", { children: "An error occurred whilst loading this table." })] }));
40
+ }
41
+ return ((0, jsx_runtime_1.jsx)(table_1.default, __assign({ tableData: tableData, staticColumns: staticColumns, headerAxis: headerAxis, pageSize: pageSize, currentPage: currentPage, keepPreviousData: keepPreviousData }, props)));
42
+ };
43
+ exports.default = QuestionnaireTable;
44
+ //# sourceMappingURL=questionnaire-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questionnaire-table.js","sourceRoot":"","sources":["../../src/organisms/questionnaire-table.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+BAAmC;AACnC,0DAAmC;AACnC,6DAAgG;AAChG,8FAEsC;AAEtC,IAAM,kBAAkB,GAAe,UAAC,EAUvC;IATC,IAAA,UAAU,gBAAA,EACV,OAAO,aAAA,EACP,kBAAgB,EAAhB,UAAU,mBAAG,GAAG,KAAA,EAChB,qBAAiB,EAAjB,aAAa,mBAAG,CAAC,KAAA,EACjB,YAAY,kBAAA,EACZ,gBAAa,EAAb,QAAQ,mBAAG,EAAE,KAAA,EACb,mBAAe,EAAf,WAAW,mBAAG,CAAC,KAAA,EACf,wBAAuB,EAAvB,gBAAgB,mBAAG,IAAI,KAAA,EACpB,KAAK,cAT8B,uHAUvC,CADS;IAER,IAAM,SAAS,GAAG,IAAA,eAAO,EACvB,cAAM,OAAA,IAAA,qCAAiD,EAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,EAAhG,CAAgG,EACtG,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,CAChD,CAAA;IAED,sEAAsE;IACtE,wCAAwC;IACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CACL,6DACE,uBAAC,cAAI,IAAC,IAAI,EAAC,aAAa,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,GAAG,EACpD,2FAAuD,IACtD,CACJ,CAAA;IACH,CAAC;IAED,OAAO,CACL,uBAAC,eAAK,aACJ,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,IAC9B,KAAK,EACT,CACH,CAAA;AACH,CAAC,CAAA;AAQD,kBAAe,kBAAkB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ltht-react/table",
3
- "version": "2.0.62",
3
+ "version": "2.0.64",
4
4
  "description": "ltht-react Table component.",
5
5
  "author": "LTHT",
6
6
  "homepage": "",
@@ -28,15 +28,15 @@
28
28
  "dependencies": {
29
29
  "@emotion/react": "^11.0.0",
30
30
  "@emotion/styled": "^11.0.0",
31
- "@ltht-react/button": "^2.0.62",
32
- "@ltht-react/icon": "^2.0.62",
33
- "@ltht-react/menu": "^2.0.62",
34
- "@ltht-react/styles": "^2.0.62",
35
- "@ltht-react/types": "^2.0.62",
36
- "@ltht-react/utils": "^2.0.62",
31
+ "@ltht-react/button": "^2.0.64",
32
+ "@ltht-react/icon": "^2.0.64",
33
+ "@ltht-react/menu": "^2.0.64",
34
+ "@ltht-react/styles": "^2.0.64",
35
+ "@ltht-react/types": "^2.0.64",
36
+ "@ltht-react/utils": "^2.0.64",
37
37
  "@tanstack/react-table": "^8.10.7",
38
38
  "react": "^18.2.0",
39
39
  "react-uuid": "^2.0.0"
40
40
  },
41
- "gitHead": "9b18b5726598e1643a8ee1f105773dea28bb1664"
41
+ "gitHead": "0cba014a75df54769f93f6dfa1a2c69a77296a4a"
42
42
  }
@@ -1,15 +1,15 @@
1
- import { FC } from 'react'
2
- import styled from '@emotion/styled'
3
-
4
- const StyledText = styled.div`
5
- text-decoration: line-through;
6
- color: gray;
7
- `
8
-
9
- const QuestionnaireWithdrawnTableCell: FC<WithdrawnCellProps> = ({ text }) => <StyledText>{text ?? ''}</StyledText>
10
-
11
- export interface WithdrawnCellProps {
12
- text?: string
13
- }
14
-
15
- export default QuestionnaireWithdrawnTableCell
1
+ import { FC } from 'react'
2
+ import styled from '@emotion/styled'
3
+
4
+ const StyledText = styled.div`
5
+ text-decoration: line-through;
6
+ color: gray;
7
+ `
8
+
9
+ const QuestionnaireWithdrawnTableCell: FC<WithdrawnCellProps> = ({ text }) => <StyledText>{text ?? ''}</StyledText>
10
+
11
+ export interface WithdrawnCellProps {
12
+ text?: string
13
+ }
14
+
15
+ export default QuestionnaireWithdrawnTableCell
package/src/index.tsx CHANGED
@@ -1,7 +1,7 @@
1
- import Table, { Header, DataEntity, TableData, CellProps } from './molecules/table'
2
- import GenericTable from './organisms/generic-table'
3
- import QuestionnaireTable from './organisms/questionnaire-table'
4
- import { AdminActionsForQuestionnaire } from './organisms/questionnaire-table-methods'
5
-
6
- export default Table
7
- export { Header, TableData, DataEntity, CellProps, GenericTable, QuestionnaireTable, AdminActionsForQuestionnaire }
1
+ import Table, { Header, DataEntity, TableData, CellProps } from './molecules/table'
2
+ import GenericTable from './organisms/generic-table'
3
+ import QuestionnaireTable from './organisms/questionnaire-table'
4
+ import { AdminActionsForQuestionnaire } from './organisms/questionnaire-table-methods'
5
+
6
+ export default Table
7
+ export { Header, TableData, DataEntity, CellProps, GenericTable, QuestionnaireTable, AdminActionsForQuestionnaire }
@@ -1,93 +1,93 @@
1
- import { FC } from 'react'
2
- import { Button } from '@ltht-react/button'
3
- import styled from '@emotion/styled'
4
- import Icon, { IconButton, IconProps } from '@ltht-react/icon'
5
- import ActionMenu, { ActionMenuOption } from '@ltht-react/menu'
6
- import { PopUp, getZIndex, BTN_COLOURS } from '@ltht-react/styles'
7
- import { Axis } from '@ltht-react/types'
8
-
9
- const StyledIconText = styled.span`
10
- margin-left: 0.4rem;
11
- `
12
-
13
- // TODO: This component is still a WIP and will be re-factored soon!
14
- // May be best to split it out into different components, the important part is unifying Type used by React-Table so the mapping can be simplified
15
- // It will need to facilitate the Actions list capability Jonny Dyson has requested
16
- // Betters ways of handling the customComponentOverride will be considered too
17
- const TableCell: FC<CellProps> = ({
18
- adminActions,
19
- isButton = false,
20
- text,
21
- iconProps,
22
- headerAxis = 'x',
23
- clickHandler,
24
- customComponentOverride,
25
- }) => {
26
- if (customComponentOverride) {
27
- return customComponentOverride
28
- }
29
-
30
- if (adminActions) {
31
- if (adminActions.length === 0) {
32
- return <></>
33
- }
34
- return (
35
- <ActionMenu
36
- actions={adminActions}
37
- menuButtonOptions={{
38
- type: 'button',
39
- text: '',
40
- buttonProps: {
41
- styling: {
42
- buttonStyle: 'standard',
43
- padding: headerAxis === 'x' ? '0.3rem 0.5rem' : '0.15rem 0.3rem',
44
- },
45
- icon: (
46
- <Icon {...{ type: headerAxis === 'x' ? 'ellipsis-vertical' : 'ellipsis-horizontal', size: 'medium' }} />
47
- ),
48
- iconPlacement: 'center',
49
- color: `${BTN_COLOURS.DANGER.VALUE}`,
50
- },
51
- }}
52
- popupStyle={{ zIndex: getZIndex(PopUp) }}
53
- popupPlacement={headerAxis === 'x' ? 'bottom-start' : 'right-start'}
54
- />
55
- )
56
- }
57
-
58
- if (isButton) {
59
- return <Button value={text} icon={iconProps && <Icon {...iconProps} />} onClick={clickHandler} />
60
- }
61
-
62
- if (clickHandler && iconProps) {
63
- return <IconButton iconProps={iconProps} text={text} onClick={clickHandler} />
64
- }
65
-
66
- if (iconProps) {
67
- return (
68
- <>
69
- <Icon {...iconProps} />
70
- {text && <StyledIconText>{text}</StyledIconText>}
71
- </>
72
- )
73
- }
74
-
75
- if (text) {
76
- return <div>{text ?? ''}</div>
77
- }
78
-
79
- return <></>
80
- }
81
-
82
- export interface CellProps {
83
- adminActions?: ActionMenuOption[]
84
- isButton?: boolean
85
- text?: string
86
- iconProps?: IconProps
87
- clickHandler?: React.MouseEventHandler<HTMLButtonElement>
88
- customComponentOverride?: JSX.Element
89
- parentStyle?: React.CSSProperties
90
- headerAxis?: Axis
91
- }
92
-
93
- export default TableCell
1
+ import { FC } from 'react'
2
+ import { Button } from '@ltht-react/button'
3
+ import styled from '@emotion/styled'
4
+ import Icon, { IconButton, IconProps } from '@ltht-react/icon'
5
+ import ActionMenu, { ActionMenuOption } from '@ltht-react/menu'
6
+ import { PopUp, getZIndex, BTN_COLOURS } from '@ltht-react/styles'
7
+ import { Axis } from '@ltht-react/types'
8
+
9
+ const StyledIconText = styled.span`
10
+ margin-left: 0.4rem;
11
+ `
12
+
13
+ // TODO: This component is still a WIP and will be re-factored soon!
14
+ // May be best to split it out into different components, the important part is unifying Type used by React-Table so the mapping can be simplified
15
+ // It will need to facilitate the Actions list capability Jonny Dyson has requested
16
+ // Betters ways of handling the customComponentOverride will be considered too
17
+ const TableCell: FC<CellProps> = ({
18
+ adminActions,
19
+ isButton = false,
20
+ text,
21
+ iconProps,
22
+ headerAxis = 'x',
23
+ clickHandler,
24
+ customComponentOverride,
25
+ }) => {
26
+ if (customComponentOverride) {
27
+ return customComponentOverride
28
+ }
29
+
30
+ if (adminActions) {
31
+ if (adminActions.length === 0) {
32
+ return <></>
33
+ }
34
+ return (
35
+ <ActionMenu
36
+ actions={adminActions}
37
+ menuButtonOptions={{
38
+ type: 'button',
39
+ text: '',
40
+ buttonProps: {
41
+ styling: {
42
+ buttonStyle: 'standard',
43
+ padding: headerAxis === 'x' ? '0.3rem 0.5rem' : '0.15rem 0.3rem',
44
+ },
45
+ icon: (
46
+ <Icon {...{ type: headerAxis === 'x' ? 'ellipsis-vertical' : 'ellipsis-horizontal', size: 'medium' }} />
47
+ ),
48
+ iconPlacement: 'center',
49
+ color: `${BTN_COLOURS.DANGER.VALUE}`,
50
+ },
51
+ }}
52
+ popupStyle={{ zIndex: getZIndex(PopUp) }}
53
+ popupPlacement={headerAxis === 'x' ? 'bottom-start' : 'right-start'}
54
+ />
55
+ )
56
+ }
57
+
58
+ if (isButton) {
59
+ return <Button value={text} icon={iconProps && <Icon {...iconProps} />} onClick={clickHandler} />
60
+ }
61
+
62
+ if (clickHandler && iconProps) {
63
+ return <IconButton iconProps={iconProps} text={text} onClick={clickHandler} />
64
+ }
65
+
66
+ if (iconProps) {
67
+ return (
68
+ <>
69
+ <Icon {...iconProps} />
70
+ {text && <StyledIconText>{text}</StyledIconText>}
71
+ </>
72
+ )
73
+ }
74
+
75
+ if (text) {
76
+ return <div>{text ?? ''}</div>
77
+ }
78
+
79
+ return <></>
80
+ }
81
+
82
+ export interface CellProps {
83
+ adminActions?: ActionMenuOption[]
84
+ isButton?: boolean
85
+ text?: string
86
+ iconProps?: IconProps
87
+ clickHandler?: React.MouseEventHandler<HTMLButtonElement>
88
+ customComponentOverride?: JSX.Element
89
+ parentStyle?: React.CSSProperties
90
+ headerAxis?: Axis
91
+ }
92
+
93
+ export default TableCell