@genesislcap/pbc-reporting-ui 15.19.0 → 15.19.1
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.
- package/dist/custom-elements.json +4247 -5382
- package/dist/dts/react.d.ts +44 -44
- package/dist/react.cjs +65 -65
- package/dist/react.mjs +57 -57
- package/package.json +22 -23
- package/.env +0 -3
- package/api-extractor.json +0 -4
- package/dist/dts/new/main/edit-config/col-filters/col-filters-grid.helpers.test.d.ts +0 -2
- package/dist/dts/new/main/edit-config/col-filters/col-filters-grid.helpers.test.d.ts.map +0 -1
- package/dist/dts/new/main/edit-config/col-rename-alias/col-rename-alias-grid.helpers.test.d.ts +0 -2
- package/dist/dts/new/main/edit-config/col-rename-alias/col-rename-alias-grid.helpers.test.d.ts.map +0 -1
- package/dist/dts/new/main/edit-config/data-transforms-derived-fields/data-transforms.helpers.test.d.ts +0 -2
- package/dist/dts/new/main/edit-config/data-transforms-derived-fields/data-transforms.helpers.test.d.ts.map +0 -1
- package/dist/dts/new/main/edit-config/datasource-config/datasources-config-container.helpers.test.d.ts +0 -2
- package/dist/dts/new/main/edit-config/datasource-config/datasources-config-container.helpers.test.d.ts.map +0 -1
- package/dist/dts/new/main/edit-config/row-filters/row-filters.helpers.test.d.ts +0 -2
- package/dist/dts/new/main/edit-config/row-filters/row-filters.helpers.test.d.ts.map +0 -1
- package/dist/dts/new/main/edit-config/shared/datasource-data-base-component.test.d.ts +0 -5
- package/dist/dts/new/main/edit-config/shared/datasource-data-base-component.test.d.ts.map +0 -1
- package/dist/dts/new/utils/alias-generator.test.d.ts +0 -2
- package/dist/dts/new/utils/alias-generator.test.d.ts.map +0 -1
- package/dist/dts/new/utils/endpoint.test.d.ts +0 -2
- package/dist/dts/new/utils/endpoint.test.d.ts.map +0 -1
- package/dist/dts/new/utils/transformers.test.d.ts +0 -2
- package/dist/dts/new/utils/transformers.test.d.ts.map +0 -1
- package/dist/dts/new/utils/validators.test.d.ts +0 -2
- package/dist/dts/new/utils/validators.test.d.ts.map +0 -1
- package/dist/dts/old/main/main.test.d.ts +0 -2
- package/dist/dts/old/main/main.test.d.ts.map +0 -1
- package/dist/dts/old/utils/filterObjectArray.test.d.ts +0 -2
- package/dist/dts/old/utils/filterObjectArray.test.d.ts.map +0 -1
- package/dist/esm/new/main/edit-config/col-filters/col-filters-grid.helpers.test.js +0 -200
- package/dist/esm/new/main/edit-config/col-rename-alias/col-rename-alias-grid.helpers.test.js +0 -152
- package/dist/esm/new/main/edit-config/data-transforms-derived-fields/data-transforms.helpers.test.js +0 -629
- package/dist/esm/new/main/edit-config/datasource-config/datasources-config-container.helpers.test.js +0 -268
- package/dist/esm/new/main/edit-config/row-filters/row-filters.helpers.test.js +0 -1
- package/dist/esm/new/main/edit-config/shared/datasource-data-base-component.test.js +0 -426
- package/dist/esm/new/utils/alias-generator.test.js +0 -36
- package/dist/esm/new/utils/endpoint.test.js +0 -162
- package/dist/esm/new/utils/transformers.test.js +0 -469
- package/dist/esm/new/utils/validators.test.js +0 -139
- package/dist/esm/old/main/main.test.js +0 -5
- package/dist/esm/old/utils/filterObjectArray.test.js +0 -46
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/globals.d.ts +0 -7
- package/src/index.federated.ts +0 -1
- package/src/index.ts +0 -8
- package/src/new/components/clone-report-config-modal/clone-report-config-modal.styles.ts +0 -47
- package/src/new/components/clone-report-config-modal/clone-report-config-modal.template.ts +0 -55
- package/src/new/components/clone-report-config-modal/clone-report-config-modal.ts +0 -173
- package/src/new/components/components.ts +0 -118
- package/src/new/components/renderers/data-transform-renderer.ts +0 -111
- package/src/new/components/reporting-configurations/reporting-configurations.styles.ts +0 -42
- package/src/new/components/reporting-configurations/reporting-configurations.template.ts +0 -59
- package/src/new/components/reporting-configurations/reporting-configurations.ts +0 -366
- package/src/new/components/shared/file-template-picker.template.ts +0 -45
- package/src/new/lib/redux-store/README.md +0 -55
- package/src/new/lib/redux-store/index.ts +0 -2
- package/src/new/lib/redux-store/state-utils.ts +0 -1
- package/src/new/lib/redux-store/store.ts +0 -135
- package/src/new/main/edit-config/base-config/base-config.styles.ts +0 -26
- package/src/new/main/edit-config/base-config/base-config.template.ts +0 -71
- package/src/new/main/edit-config/base-config/base-config.ts +0 -116
- package/src/new/main/edit-config/col-filters/col-filters-grid.helpers.test.ts +0 -232
- package/src/new/main/edit-config/col-filters/col-filters-grid.helpers.ts +0 -35
- package/src/new/main/edit-config/col-filters/col-filters-grid.styles.ts +0 -22
- package/src/new/main/edit-config/col-filters/col-filters-grid.ts +0 -150
- package/src/new/main/edit-config/col-filters/col-filters-grid.types.ts +0 -7
- package/src/new/main/edit-config/col-filters/col-filters-tutorial.ts +0 -25
- package/src/new/main/edit-config/col-filters/col-fitlers-grid.template.ts +0 -15
- package/src/new/main/edit-config/col-rename-alias/col-rename-alias-grid.helpers.test.ts +0 -187
- package/src/new/main/edit-config/col-rename-alias/col-rename-alias-grid.helpers.ts +0 -89
- package/src/new/main/edit-config/col-rename-alias/col-rename-alias-grid.styles.ts +0 -22
- package/src/new/main/edit-config/col-rename-alias/col-rename-alias-grid.template.ts +0 -14
- package/src/new/main/edit-config/col-rename-alias/col-rename-alias-grid.ts +0 -119
- package/src/new/main/edit-config/col-rename-alias/col-rename-alias-grid.types.ts +0 -10
- package/src/new/main/edit-config/col-rename-alias/col-rename-alias-tutorial.ts +0 -33
- package/src/new/main/edit-config/config-journey-orchestrator.styles.ts +0 -120
- package/src/new/main/edit-config/config-journey-orchestrator.template.ts +0 -149
- package/src/new/main/edit-config/config-journey-orchestrator.ts +0 -92
- package/src/new/main/edit-config/data-transforms-derived-fields/data-transforms-tutorial.ts +0 -127
- package/src/new/main/edit-config/data-transforms-derived-fields/data-transforms.helpers.test.ts +0 -799
- package/src/new/main/edit-config/data-transforms-derived-fields/data-transforms.helpers.ts +0 -371
- package/src/new/main/edit-config/data-transforms-derived-fields/data-transforms.styles.ts +0 -22
- package/src/new/main/edit-config/data-transforms-derived-fields/data-transforms.template.ts +0 -21
- package/src/new/main/edit-config/data-transforms-derived-fields/data-transforms.ts +0 -162
- package/src/new/main/edit-config/data-transforms-derived-fields/data-transforms.types.ts +0 -211
- package/src/new/main/edit-config/data-transforms-derived-fields/date-format-modal/date-format-modal.styles.ts +0 -79
- package/src/new/main/edit-config/data-transforms-derived-fields/date-format-modal/date-format-modal.template.ts +0 -217
- package/src/new/main/edit-config/data-transforms-derived-fields/date-format-modal/date-format-modal.ts +0 -280
- package/src/new/main/edit-config/data-transforms-derived-fields/date-format-modal/index.ts +0 -1
- package/src/new/main/edit-config/data-transforms-derived-fields/format-warning.ts +0 -43
- package/src/new/main/edit-config/data-transforms-derived-fields/number-format-modal/index.ts +0 -1
- package/src/new/main/edit-config/data-transforms-derived-fields/number-format-modal/number-format-modal.styles.ts +0 -68
- package/src/new/main/edit-config/data-transforms-derived-fields/number-format-modal/number-format-modal.template.ts +0 -93
- package/src/new/main/edit-config/data-transforms-derived-fields/number-format-modal/number-format-modal.ts +0 -152
- package/src/new/main/edit-config/datasource-config/datasource-config-container.styles.ts +0 -22
- package/src/new/main/edit-config/datasource-config/datasource-config-item.styles.ts +0 -76
- package/src/new/main/edit-config/datasource-config/datasource-config-item.template.ts +0 -141
- package/src/new/main/edit-config/datasource-config/datasource-config-item.ts +0 -212
- package/src/new/main/edit-config/datasource-config/datasources-config-container.helpers.test.ts +0 -341
- package/src/new/main/edit-config/datasource-config/datasources-config-container.helpers.ts +0 -99
- package/src/new/main/edit-config/datasource-config/datasources-config-container.template.ts +0 -68
- package/src/new/main/edit-config/datasource-config/datasources-config-container.ts +0 -55
- package/src/new/main/edit-config/datasource-config/types.ts +0 -6
- package/src/new/main/edit-config/outputs-config/outputs-config.style.ts +0 -11
- package/src/new/main/edit-config/outputs-config/outputs-config.template.ts +0 -66
- package/src/new/main/edit-config/outputs-config/outputs-config.ts +0 -66
- package/src/new/main/edit-config/row-filters/row-filters-tutorial.styles.ts +0 -16
- package/src/new/main/edit-config/row-filters/row-filters-tutorial.template.ts +0 -229
- package/src/new/main/edit-config/row-filters/row-filters-tutorial.ts +0 -15
- package/src/new/main/edit-config/row-filters/row-filters.helpers.test.ts +0 -2
- package/src/new/main/edit-config/row-filters/row-filters.helpers.ts +0 -53
- package/src/new/main/edit-config/row-filters/row-filters.styles.ts +0 -23
- package/src/new/main/edit-config/row-filters/row-filters.template.ts +0 -15
- package/src/new/main/edit-config/row-filters/row-filters.ts +0 -58
- package/src/new/main/edit-config/row-filters/row-filters.types.ts +0 -14
- package/src/new/main/edit-config/scheduling/scheduling.styles.ts +0 -59
- package/src/new/main/edit-config/scheduling/scheduling.template.ts +0 -80
- package/src/new/main/edit-config/scheduling/scheduling.ts +0 -101
- package/src/new/main/edit-config/shared/datasource-data-base-component.helpers.ts.ts +0 -250
- package/src/new/main/edit-config/shared/datasource-data-base-component.test.ts +0 -568
- package/src/new/main/edit-config/shared/datasource-data-base-component.ts +0 -65
- package/src/new/main/edit-config/shared/datasource-data-base-component.types.ts +0 -55
- package/src/new/main/edit-config/shared/index.ts +0 -3
- package/src/new/main/edit-config/tabbed-datasource-container/index.ts +0 -2
- package/src/new/main/edit-config/tabbed-datasource-container/tabbed-datasource-container.styles.ts +0 -12
- package/src/new/main/edit-config/tabbed-datasource-container/tabbed-datasource-container.template.ts +0 -29
- package/src/new/main/edit-config/tabbed-datasource-container/tabbed-datasource-container.ts +0 -69
- package/src/new/main/edit-config/tabbed-datasource-container/tabbed-datasource-container.types.ts +0 -7
- package/src/new/main/generated-reports/generated-reports.styles.ts +0 -15
- package/src/new/main/generated-reports/generated-reports.template.ts +0 -29
- package/src/new/main/generated-reports/generated-reports.ts +0 -270
- package/src/new/main/index.ts +0 -3
- package/src/new/main/main.styles.ts +0 -31
- package/src/new/main/main.template.ts +0 -92
- package/src/new/main/main.ts +0 -117
- package/src/new/main/report-destinations/report-destinations.template.ts +0 -39
- package/src/new/main/report-destinations/report-destinations.ts +0 -63
- package/src/new/store/index.ts +0 -3
- package/src/new/store/slices/base-config.ts +0 -50
- package/src/new/store/slices/datasources-config.ts +0 -297
- package/src/new/store/slices/index.ts +0 -3
- package/src/new/store/slices/types.ts +0 -90
- package/src/new/store/store.ts +0 -36
- package/src/new/store/types.ts +0 -10
- package/src/new/styles/constraints.styles.ts +0 -32
- package/src/new/styles/forms.styles.ts +0 -38
- package/src/new/styles/index.ts +0 -3
- package/src/new/styles/misc.styles.ts +0 -25
- package/src/new/types/display.ts +0 -4
- package/src/new/types/index.ts +0 -4
- package/src/new/types/misc.ts +0 -73
- package/src/new/types/redux.ts +0 -73
- package/src/new/types/rights.ts +0 -28
- package/src/new/utils/alias-generator.test.ts +0 -44
- package/src/new/utils/alias-generator.ts +0 -18
- package/src/new/utils/date-filter-params.ts +0 -28
- package/src/new/utils/endpoint.test.ts +0 -193
- package/src/new/utils/endpoint.ts +0 -62
- package/src/new/utils/event-map.ts +0 -11
- package/src/new/utils/format-utils.ts +0 -22
- package/src/new/utils/formatters.ts +0 -36
- package/src/new/utils/index.ts +0 -10
- package/src/new/utils/notifications.ts +0 -9
- package/src/new/utils/renderer.ts +0 -38
- package/src/new/utils/rights.ts +0 -66
- package/src/new/utils/sorter.ts +0 -19
- package/src/new/utils/tooltip.ts +0 -94
- package/src/new/utils/transformers.test.ts +0 -549
- package/src/new/utils/transformers.ts +0 -174
- package/src/new/utils/validators.test.ts +0 -165
- package/src/new/utils/validators.ts +0 -81
- package/src/old/assets/images/index.ts +0 -69
- package/src/old/components/create-edit/create-edit.styles.ts +0 -16
- package/src/old/components/create-edit/create-edit.template.ts +0 -15
- package/src/old/components/create-edit/create-edit.ts +0 -70
- package/src/old/components/create-edit/index.ts +0 -3
- package/src/old/components/list/columns.ts +0 -175
- package/src/old/components/list/index.ts +0 -3
- package/src/old/components/list/list.styles.ts +0 -9
- package/src/old/components/list/list.template.ts +0 -40
- package/src/old/components/list/list.ts +0 -109
- package/src/old/components/preview/columns.ts +0 -58
- package/src/old/components/preview/index.ts +0 -3
- package/src/old/components/preview/preview.styles.ts +0 -22
- package/src/old/components/preview/preview.template.ts +0 -33
- package/src/old/components/preview/preview.ts +0 -143
- package/src/old/components/rapid-components.ts +0 -64
- package/src/old/components/renderers/custom-header-component.ts +0 -92
- package/src/old/components/renderers/filter-value-renderer.ts +0 -237
- package/src/old/components/renderers/row-select.renderer.ts +0 -148
- package/src/old/components/select-fields/columns.ts +0 -83
- package/src/old/components/select-fields/data.ts +0 -218
- package/src/old/components/select-fields/index.ts +0 -3
- package/src/old/components/select-fields/select-fields.styles.ts +0 -22
- package/src/old/components/select-fields/select-fields.template.ts +0 -58
- package/src/old/components/select-fields/select-fields.ts +0 -218
- package/src/old/components/select-filters/columns.ts +0 -78
- package/src/old/components/select-filters/index.ts +0 -3
- package/src/old/components/select-filters/select-filters.styles.ts +0 -21
- package/src/old/components/select-filters/select-filters.template.ts +0 -58
- package/src/old/components/select-filters/select-filters.ts +0 -255
- package/src/old/components/wizard/debug.ts +0 -35
- package/src/old/components/wizard/index.ts +0 -2
- package/src/old/components/wizard/steps/filters.ts +0 -13
- package/src/old/components/wizard/steps/index.ts +0 -4
- package/src/old/components/wizard/steps/name.ts +0 -72
- package/src/old/components/wizard/steps/run.ts +0 -14
- package/src/old/components/wizard/steps/select.ts +0 -14
- package/src/old/components/wizard/wizard.styles.ts +0 -198
- package/src/old/components/wizard/wizard.template.ts +0 -147
- package/src/old/components/wizard/wizard.ts +0 -398
- package/src/old/components/wizard/wizard.types.ts +0 -43
- package/src/old/components/zero-components.ts +0 -61
- package/src/old/config/config.ts +0 -59
- package/src/old/config/configure.ts +0 -66
- package/src/old/config/index.ts +0 -2
- package/src/old/config/templates.ts +0 -59
- package/src/old/constants/grid-config.ts +0 -19
- package/src/old/layouts/default.ts +0 -30
- package/src/old/layouts/index.ts +0 -2
- package/src/old/layouts/two-pane-horizontal.ts +0 -81
- package/src/old/main/index.ts +0 -3
- package/src/old/main/main.styles.ts +0 -69
- package/src/old/main/main.template.ts +0 -127
- package/src/old/main/main.test.ts +0 -7
- package/src/old/main/main.ts +0 -250
- package/src/old/main/types.ts +0 -29
- package/src/old/styles/colors.ts +0 -16
- package/src/old/styles/helpers.ts +0 -181
- package/src/old/styles/index.ts +0 -4
- package/src/old/styles/normalize.ts +0 -14
- package/src/old/styles/styles.ts +0 -24
- package/src/old/tags/index.ts +0 -1
- package/src/old/tags/tags.ts +0 -79
- package/src/old/tsconfig.json +0 -10
- package/src/old/utils/filterObjectArray.test.ts +0 -110
- package/src/old/utils/filterObjectArray.ts +0 -23
- package/src/old/utils/getFiltersByType.ts +0 -92
- package/src/old/utils/getSelectedFields.ts +0 -16
- package/src/old/utils/index.ts +0 -4
- package/src/old/utils/logger.ts +0 -3
- package/src/sandbox.ts +0 -51
- package/src/tsconfig.base.json +0 -24
- package/src/typings.d.ts +0 -1
- package/tsconfig.json +0 -9
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { IHeaderComp, IHeaderParams } from '@ag-grid-community/core';
|
|
2
|
-
import { checkboxTag } from '../../tags'; // Ensure this is your custom checkbox tag or use a regular HTML input tag
|
|
3
|
-
|
|
4
|
-
export class CustomHeaderCheckboxComponent implements IHeaderComp {
|
|
5
|
-
private eCheckbox: HTMLElement;
|
|
6
|
-
private params!: IHeaderParams;
|
|
7
|
-
private indeterminateIndicator: HTMLElement | null = null;
|
|
8
|
-
|
|
9
|
-
constructor() {
|
|
10
|
-
this.eCheckbox = document.createElement(checkboxTag); // Create custom checkbox
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
refresh(params: IHeaderParams): boolean {
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
init(params: IHeaderParams): void {
|
|
18
|
-
this.params = params;
|
|
19
|
-
|
|
20
|
-
this.eCheckbox.setAttribute('aria-label', 'Select all rows');
|
|
21
|
-
this.eCheckbox.setAttribute('role', 'checkbox');
|
|
22
|
-
this.eCheckbox.setAttribute('tabindex', '0');
|
|
23
|
-
|
|
24
|
-
this.indeterminateIndicator =
|
|
25
|
-
this.eCheckbox.shadowRoot?.querySelector('[part="indeterminate-indicator"]') || null;
|
|
26
|
-
|
|
27
|
-
this.eCheckbox.addEventListener('click', this.onCheckboxClick);
|
|
28
|
-
this.eCheckbox.addEventListener('keydown', this.onKeyDown);
|
|
29
|
-
|
|
30
|
-
this.params.api.addEventListener('selectionChanged', this.updateCheckboxState);
|
|
31
|
-
this.updateCheckboxState(); // Initial state update
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
private onKeyDown = (event: KeyboardEvent) => {
|
|
35
|
-
// Spacebar triggers checkbox toggle
|
|
36
|
-
if (event.key === ' ' || event.key === 'Spacebar') {
|
|
37
|
-
event.preventDefault();
|
|
38
|
-
this.onCheckboxClick();
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
private onCheckboxClick = () => {
|
|
43
|
-
const isChecked = this.eCheckbox.classList.contains('checked');
|
|
44
|
-
this.params.api.forEachNode((node) => node.setSelected(!isChecked));
|
|
45
|
-
this.updateCheckboxState();
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
private updateCheckboxState = () => {
|
|
49
|
-
const selectedNodes = this.params.api.getSelectedNodes();
|
|
50
|
-
const displayedRowCount = this.params.api.getDisplayedRowCount();
|
|
51
|
-
|
|
52
|
-
// Remove all state classes first
|
|
53
|
-
this.eCheckbox.classList.remove('checked', 'unchecked', 'indeterminate');
|
|
54
|
-
this.eCheckbox.removeAttribute('aria-checked');
|
|
55
|
-
|
|
56
|
-
if (selectedNodes.length === displayedRowCount && displayedRowCount > 0) {
|
|
57
|
-
this.setCheckboxState('checked', true);
|
|
58
|
-
} else if (selectedNodes.length === 0) {
|
|
59
|
-
this.setCheckboxState('unchecked', false);
|
|
60
|
-
} else {
|
|
61
|
-
this.setCheckboxState('indeterminate', false);
|
|
62
|
-
this.updateIndeterminateIndicator();
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
private setCheckboxState(state: string, isChecked: boolean) {
|
|
67
|
-
this.eCheckbox.classList.add(state);
|
|
68
|
-
this.eCheckbox.setAttribute(
|
|
69
|
-
'aria-checked',
|
|
70
|
-
state === 'checked' ? 'true' : state === 'unchecked' ? 'false' : 'mixed',
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
private updateIndeterminateIndicator() {
|
|
75
|
-
if (!this.indeterminateIndicator) {
|
|
76
|
-
this.indeterminateIndicator = this.eCheckbox.shadowRoot?.querySelector(
|
|
77
|
-
'[part="indeterminate-indicator"]',
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
this.indeterminateIndicator.style.backgroundColor = 'var(--accent-fill-rest)';
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
getGui(): HTMLElement {
|
|
84
|
-
return this.eCheckbox; // Return the custom checkbox element
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
destroy(): void {
|
|
88
|
-
this.params.api.removeEventListener('selectionChanged', this.updateCheckboxState);
|
|
89
|
-
this.eCheckbox.removeEventListener('click', this.onCheckboxClick);
|
|
90
|
-
this.eCheckbox.removeEventListener('keydown', this.onKeyDown);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
import { ICellRendererComp, ICellRendererParams } from '@ag-grid-community/core';
|
|
2
|
-
import { css, html, observable, FoundationElement, ref } from '@genesislcap/web-core';
|
|
3
|
-
import { getFilterTypeByFieldType } from '../../utils/getFiltersByType';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Custom params interface for the filter value renderer
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
export interface FilterValueRendererParams {
|
|
10
|
-
onChange?: (value: any, params: ICellRendererParams) => void;
|
|
11
|
-
accessor?: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const ISO_DATETIME_LENGTH = 16;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* The AG Filter Value Renderer element.
|
|
18
|
-
* Provides type-aware input fields for filter values (text, number, date, datetime)
|
|
19
|
-
* @public
|
|
20
|
-
* @tagname %%prefix%%-filter-value-renderer
|
|
21
|
-
*/
|
|
22
|
-
export class FilterValueRenderer extends FoundationElement implements ICellRendererComp {
|
|
23
|
-
@observable
|
|
24
|
-
public params: ICellRendererParams & FilterValueRendererParams;
|
|
25
|
-
|
|
26
|
-
value: any = '';
|
|
27
|
-
inputElement: HTMLInputElement;
|
|
28
|
-
|
|
29
|
-
@observable
|
|
30
|
-
inputType: 'text' | 'number' | 'date' | 'datetime-local' = 'text';
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Initialize the renderer with cell parameters
|
|
34
|
-
*/
|
|
35
|
-
public init(params: ICellRendererParams & FilterValueRendererParams) {
|
|
36
|
-
if (!params) return;
|
|
37
|
-
|
|
38
|
-
this.params = params;
|
|
39
|
-
|
|
40
|
-
// Get value using accessor or direct value
|
|
41
|
-
const accessor = params.accessor;
|
|
42
|
-
let value = params.value;
|
|
43
|
-
|
|
44
|
-
if (accessor && params.data) {
|
|
45
|
-
const keys = accessor.split('.');
|
|
46
|
-
let current = params.data;
|
|
47
|
-
for (const key of keys) {
|
|
48
|
-
current = current?.[key];
|
|
49
|
-
}
|
|
50
|
-
value = current;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Determine input type based on field type
|
|
54
|
-
const fieldType = params.data?.type;
|
|
55
|
-
const filterType = getFilterTypeByFieldType(fieldType);
|
|
56
|
-
|
|
57
|
-
switch (filterType) {
|
|
58
|
-
case 'number':
|
|
59
|
-
this.inputType = 'number';
|
|
60
|
-
this.value = value ?? '';
|
|
61
|
-
break;
|
|
62
|
-
|
|
63
|
-
case 'date':
|
|
64
|
-
this.inputType = 'date';
|
|
65
|
-
// Convert epoch timestamp or Date object to ISO date string (YYYY-MM-DD)
|
|
66
|
-
if (value) {
|
|
67
|
-
if (typeof value === 'number') {
|
|
68
|
-
// Handle epoch timestamp
|
|
69
|
-
const date = new Date(value);
|
|
70
|
-
this.value = date.toISOString().split('T')[0];
|
|
71
|
-
} else if (typeof value === 'string') {
|
|
72
|
-
// Handle ISO string or other date formats
|
|
73
|
-
const date = new Date(value);
|
|
74
|
-
if (!isNaN(date.getTime())) {
|
|
75
|
-
this.value = date.toISOString().split('T')[0];
|
|
76
|
-
} else {
|
|
77
|
-
this.value = value;
|
|
78
|
-
}
|
|
79
|
-
} else if (value instanceof Date) {
|
|
80
|
-
this.value = value.toISOString().split('T')[0];
|
|
81
|
-
} else {
|
|
82
|
-
this.value = value;
|
|
83
|
-
}
|
|
84
|
-
} else {
|
|
85
|
-
this.value = '';
|
|
86
|
-
}
|
|
87
|
-
break;
|
|
88
|
-
|
|
89
|
-
case 'datetime':
|
|
90
|
-
this.inputType = 'datetime-local';
|
|
91
|
-
// Convert epoch timestamp or Date object to ISO datetime string (YYYY-MM-DDTHH:mm)
|
|
92
|
-
if (value) {
|
|
93
|
-
if (typeof value === 'number') {
|
|
94
|
-
// Handle epoch timestamp
|
|
95
|
-
const date = new Date(value);
|
|
96
|
-
this.value = date.toISOString().slice(0, ISO_DATETIME_LENGTH); // YYYY-MM-DDTHH:mm
|
|
97
|
-
} else if (typeof value === 'string') {
|
|
98
|
-
// Handle ISO string or other date formats
|
|
99
|
-
const date = new Date(value);
|
|
100
|
-
if (!isNaN(date.getTime())) {
|
|
101
|
-
this.value = date.toISOString().slice(0, ISO_DATETIME_LENGTH); // YYYY-MM-DDTHH:mm
|
|
102
|
-
} else {
|
|
103
|
-
this.value = value;
|
|
104
|
-
}
|
|
105
|
-
} else if (value instanceof Date) {
|
|
106
|
-
this.value = value.toISOString().slice(0, ISO_DATETIME_LENGTH); // YYYY-MM-DDTHH:mm
|
|
107
|
-
} else {
|
|
108
|
-
this.value = value;
|
|
109
|
-
}
|
|
110
|
-
} else {
|
|
111
|
-
this.value = '';
|
|
112
|
-
}
|
|
113
|
-
break;
|
|
114
|
-
|
|
115
|
-
case 'text':
|
|
116
|
-
default:
|
|
117
|
-
this.inputType = 'text';
|
|
118
|
-
this.value = value ?? '';
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Set input value directly after element is ready
|
|
123
|
-
if (this.inputElement) {
|
|
124
|
-
this.inputElement.value = this.value;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Handle input blur events - only update when user leaves the field
|
|
130
|
-
* This prevents focus loss during typing
|
|
131
|
-
*/
|
|
132
|
-
public handleChange(event: Event) {
|
|
133
|
-
const input = event.target as HTMLInputElement;
|
|
134
|
-
const newValue = input.value;
|
|
135
|
-
|
|
136
|
-
// Store value internally (not as observable to avoid re-render)
|
|
137
|
-
this.value = newValue;
|
|
138
|
-
|
|
139
|
-
// Call onChange callback if provided
|
|
140
|
-
if (this.params.onChange) {
|
|
141
|
-
this.params.onChange(newValue, this.params);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Get the DOM element for the cell
|
|
147
|
-
*/
|
|
148
|
-
public getGui(): HTMLElement {
|
|
149
|
-
return this;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Cleanup when renderer is destroyed
|
|
154
|
-
*/
|
|
155
|
-
public destroy() {
|
|
156
|
-
// No cleanup needed
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Refresh the cell with new data
|
|
161
|
-
*/
|
|
162
|
-
public refresh(params: ICellRendererParams): boolean {
|
|
163
|
-
// Return false to indicate we don't support refresh
|
|
164
|
-
// AG Grid will destroy and recreate the cell renderer instead
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* The AG Filter Value Renderer Styles.
|
|
171
|
-
* @public
|
|
172
|
-
*/
|
|
173
|
-
export const agFilterValueRendererStyles = css`
|
|
174
|
-
:host {
|
|
175
|
-
align-items: center;
|
|
176
|
-
display: flex;
|
|
177
|
-
height: 100%;
|
|
178
|
-
width: 100%;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
.filter-input {
|
|
182
|
-
width: 100%;
|
|
183
|
-
height: 100%;
|
|
184
|
-
padding: 0 8px;
|
|
185
|
-
border: none;
|
|
186
|
-
background: transparent;
|
|
187
|
-
font-family: inherit;
|
|
188
|
-
font-size: inherit;
|
|
189
|
-
color: inherit;
|
|
190
|
-
outline: none;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
.filter-input:focus {
|
|
194
|
-
outline: none;
|
|
195
|
-
background: var(--ag-input-focus-background-color, var(--neutral-fill-input-rest));
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
.filter-input[type='date'],
|
|
199
|
-
.filter-input[type='datetime-local'] {
|
|
200
|
-
padding: 0 4px;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
.filter-input[type='number'] {
|
|
204
|
-
text-align: right;
|
|
205
|
-
}
|
|
206
|
-
`;
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Get the template for the Filter Value Renderer
|
|
210
|
-
* @returns A template for the filter value input
|
|
211
|
-
* @public
|
|
212
|
-
*/
|
|
213
|
-
export const getAgFilterValueRendererTemplate = () => {
|
|
214
|
-
return html<FilterValueRenderer>`
|
|
215
|
-
<input
|
|
216
|
-
${ref('inputElement')}
|
|
217
|
-
class="filter-input"
|
|
218
|
-
type="${(x) => x.inputType ?? 'text'}"
|
|
219
|
-
value="${(x) => x.value ?? ''}"
|
|
220
|
-
@blur="${(x, c) => x.handleChange(c.event)}"
|
|
221
|
-
placeholder="Enter value..."
|
|
222
|
-
/>
|
|
223
|
-
`;
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* A function that returns a Foundation Filter Value Renderer registration for configuring the component with a DesignSystem.
|
|
228
|
-
*
|
|
229
|
-
* @public
|
|
230
|
-
* @remarks
|
|
231
|
-
* HTML Element: \<foundation-filter-value-renderer\>
|
|
232
|
-
*/
|
|
233
|
-
export const foundationAgFilterValueRenderer = FilterValueRenderer.compose({
|
|
234
|
-
baseName: 'grid-pro-filter-value-renderer',
|
|
235
|
-
styles: agFilterValueRendererStyles,
|
|
236
|
-
template: getAgFilterValueRendererTemplate(),
|
|
237
|
-
});
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { ICellRendererComp, ICellRendererParams } from '@ag-grid-community/core';
|
|
2
|
-
import { BooleanRendererParams, EDITED_COLUMN_FIELD } from '@genesislcap/foundation-zero-grid-pro';
|
|
3
|
-
import { css, html, observable, FoundationElement } from '@genesislcap/web-core';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* The AG Row Select Renderer element.
|
|
7
|
-
* @public
|
|
8
|
-
* @tagname %%prefix%%-row-select-renderer
|
|
9
|
-
*/
|
|
10
|
-
export class RowSelectRenderer extends FoundationElement implements ICellRendererComp {
|
|
11
|
-
@observable
|
|
12
|
-
public params: ICellRendererParams & BooleanRendererParams;
|
|
13
|
-
|
|
14
|
-
@observable
|
|
15
|
-
checked: boolean;
|
|
16
|
-
|
|
17
|
-
public isDisabled(data): boolean {
|
|
18
|
-
if (typeof this.params?.isDisabled === 'function') {
|
|
19
|
-
try {
|
|
20
|
-
return this.params.isDisabled(data);
|
|
21
|
-
} catch (error) {
|
|
22
|
-
// logger.error('Error executing grid action cell renderer isDisabled callback:', error);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
public init(params: ICellRendererParams) {
|
|
29
|
-
if (!params) return;
|
|
30
|
-
this.params = params;
|
|
31
|
-
this.checked = !!params.value;
|
|
32
|
-
const { ariaLabelField } = params.context;
|
|
33
|
-
this.ariaLabel = `Select row for ${params.data[ariaLabelField]}. Press Space to toggle selection.`;
|
|
34
|
-
this.params.api.addEventListener('selectionChanged', this.onSelectionChanged.bind(this));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
public onSelectionChanged() {
|
|
38
|
-
if (this.params && this.params.node) {
|
|
39
|
-
this.checked = this.params.node.isSelected() ?? false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
public changeHandler(e) {
|
|
44
|
-
this.checked = e.target.checked;
|
|
45
|
-
this.params.node.setSelected(this.checked);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
public getGui(): HTMLElement {
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
public destroy() {
|
|
53
|
-
if (this.params && this.params.api) {
|
|
54
|
-
// oxlint-disable-next-line unicorn/no-invalid-remove-event-listener -- symmetric to addEventListener(.bind)
|
|
55
|
-
this.params.api.removeEventListener('selectionChanged', this.onSelectionChanged.bind(this));
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
public refresh(params: ICellRendererParams) {
|
|
60
|
-
this.checked = params.value;
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
getValue() {
|
|
65
|
-
return this.checked;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
isCancelBeforeStart() {
|
|
69
|
-
return !!this.params.data[EDITED_COLUMN_FIELD];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* The AG Boolean Renderer Styles.
|
|
75
|
-
* @public
|
|
76
|
-
*/
|
|
77
|
-
export const agRowSelectRendererStyles = css`
|
|
78
|
-
:host {
|
|
79
|
-
align-items: center;
|
|
80
|
-
display: flex;
|
|
81
|
-
height: 100%;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.custom-checkbox {
|
|
85
|
-
width: calc((var(--base-height-multiplier) - 1) * 2px);
|
|
86
|
-
height: calc((var(--base-height-multiplier) - 1) * 2px);
|
|
87
|
-
background: var(--ag-background-color);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.custom-checkbox:focus {
|
|
91
|
-
outline: none;
|
|
92
|
-
box-shadow: var(--ag-input-focus-box-shadow);
|
|
93
|
-
border-radius: 2px;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.custom-checkbox::part(control) {
|
|
97
|
-
width: calc((var(--base-height-multiplier) - 1) * 2px);
|
|
98
|
-
height: calc((var(--base-height-multiplier) - 1) * 2px);
|
|
99
|
-
background: var(--ag-background-color);
|
|
100
|
-
border-radius: 2px;
|
|
101
|
-
border: calc(var(--stroke-width) * 2px) solid var(--ag-checkbox-unchecked-color);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
.custom-checkbox[aria-checked='true'],
|
|
105
|
-
.custom-checkbox[aria-checked='true']::part(control) {
|
|
106
|
-
background: var(--ag-checkbox-checked-color);
|
|
107
|
-
border: none;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
.custom-checkbox[aria-checked='true']::part(checked-indicator) {
|
|
111
|
-
fill: var(--foreground-on-accent-rest);
|
|
112
|
-
box-shadow: none;
|
|
113
|
-
border-radius: 0;
|
|
114
|
-
}
|
|
115
|
-
`;
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Get a Design System prefixed Checkbox template.
|
|
119
|
-
* @param designSystem - The design system prefix to use. Defaults to 'foundation'.
|
|
120
|
-
* @returns A Checkbox component template prefixed with the correct design system.
|
|
121
|
-
* @public
|
|
122
|
-
*/
|
|
123
|
-
export const getAgRowSelectRendererTemplate = (designSystem = 'rapid') => {
|
|
124
|
-
const checkboxComponent = `${designSystem}-checkbox`;
|
|
125
|
-
return html<RowSelectRenderer>`
|
|
126
|
-
<${checkboxComponent}
|
|
127
|
-
role="checkbox"
|
|
128
|
-
class="custom-checkbox"
|
|
129
|
-
@change=${(x, c) => x.changeHandler(c.event)}
|
|
130
|
-
:checked=${(x) => x.checked}
|
|
131
|
-
:disabled=${(x) => x.isDisabled(x.params.data)}
|
|
132
|
-
aria-label=${(x) => x.ariaLabel}
|
|
133
|
-
></${checkboxComponent}>
|
|
134
|
-
`;
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* A function that returns a Foundation Row Select Renderer registration for configuring the component with a DesignSystem.
|
|
139
|
-
*
|
|
140
|
-
* @public
|
|
141
|
-
* @remarks
|
|
142
|
-
* HTML Element: \<foundation-row-select-renderer\>
|
|
143
|
-
*/
|
|
144
|
-
export const foundationAgRowSelectRenderer = RowSelectRenderer.compose({
|
|
145
|
-
baseName: 'grid-pro-row-select-renderer',
|
|
146
|
-
styles: agRowSelectRendererStyles,
|
|
147
|
-
template: getAgRowSelectRendererTemplate(),
|
|
148
|
-
});
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import type { GridOptions } from '@ag-grid-community/core';
|
|
2
|
-
import { defaultRowConfig } from '../../constants/grid-config';
|
|
3
|
-
import { RowSelectRenderer } from '../renderers/row-select.renderer';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Field selection grid config
|
|
7
|
-
*/
|
|
8
|
-
export const FIELD_SELECT_CONFIG = {
|
|
9
|
-
colDefs: [
|
|
10
|
-
{
|
|
11
|
-
cellRenderer: 'row-select',
|
|
12
|
-
checkboxSelection: false,
|
|
13
|
-
filter: false,
|
|
14
|
-
headerCheckboxSelection: true,
|
|
15
|
-
suppressMenu: true,
|
|
16
|
-
suppressSorting: true,
|
|
17
|
-
width: 60,
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
field: 'name',
|
|
21
|
-
headerName: 'Field Name',
|
|
22
|
-
},
|
|
23
|
-
],
|
|
24
|
-
gridOptions: {
|
|
25
|
-
...defaultRowConfig,
|
|
26
|
-
components: {
|
|
27
|
-
'row-select': RowSelectRenderer,
|
|
28
|
-
},
|
|
29
|
-
defaultColDef: {
|
|
30
|
-
filter: false,
|
|
31
|
-
floatingFilter: false,
|
|
32
|
-
sortable: false,
|
|
33
|
-
sort: 'asc',
|
|
34
|
-
suppressMenu: false,
|
|
35
|
-
resizable: false,
|
|
36
|
-
},
|
|
37
|
-
context: {
|
|
38
|
-
ariaLabelField: 'name',
|
|
39
|
-
},
|
|
40
|
-
rowSelection: 'multiple',
|
|
41
|
-
suppressRowClickSelection: true,
|
|
42
|
-
} as GridOptions,
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Selected fields config
|
|
47
|
-
*/
|
|
48
|
-
export const SELECTED_FIELDS_CONFIG = {
|
|
49
|
-
colDefs: [
|
|
50
|
-
{
|
|
51
|
-
cellRenderer: 'row-select',
|
|
52
|
-
checkboxSelection: false,
|
|
53
|
-
filter: false,
|
|
54
|
-
headerCheckboxSelection: true,
|
|
55
|
-
suppressMenu: true,
|
|
56
|
-
suppressSorting: true,
|
|
57
|
-
width: 60,
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
field: 'name',
|
|
61
|
-
headerName: 'Column name',
|
|
62
|
-
},
|
|
63
|
-
],
|
|
64
|
-
gridOptions: {
|
|
65
|
-
...defaultRowConfig,
|
|
66
|
-
components: {
|
|
67
|
-
'row-select': RowSelectRenderer,
|
|
68
|
-
},
|
|
69
|
-
defaultColDef: {
|
|
70
|
-
filter: false,
|
|
71
|
-
floatingFilter: false,
|
|
72
|
-
sortable: false,
|
|
73
|
-
suppressMenu: false,
|
|
74
|
-
resizable: false,
|
|
75
|
-
},
|
|
76
|
-
context: {
|
|
77
|
-
ariaLabelField: 'name',
|
|
78
|
-
},
|
|
79
|
-
animateRows: true,
|
|
80
|
-
debug: true,
|
|
81
|
-
rowDragManaged: true,
|
|
82
|
-
},
|
|
83
|
-
};
|