@openmrs/esm-framework 6.3.1-pre.3182 → 6.3.1-pre.3204
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/.turbo/turbo-build.log +1 -1
- package/dist/openmrs-esm-framework.js +1 -1
- package/dist/openmrs-esm-framework.js.map +1 -1
- package/docs/interfaces/OpenmrsDateRangePickerProps.md +783 -0
- package/docs/variables/OpenmrsDateRangePicker.md +9 -0
- package/mock-jest.tsx +31 -1
- package/mock.tsx +31 -1
- package/package.json +20 -20
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[O3 Framework](../API.md) / OpenmrsDateRangePicker
|
|
2
|
+
|
|
3
|
+
# Variable: OpenmrsDateRangePicker
|
|
4
|
+
|
|
5
|
+
> `const` **OpenmrsDateRangePicker**: `ForwardRefExoticComponent`\<[`OpenmrsDateRangePickerProps`](../interfaces/OpenmrsDateRangePickerProps.md) & `RefAttributes`\<`HTMLDivElement`\>\>
|
|
6
|
+
|
|
7
|
+
Defined in: [packages/framework/esm-styleguide/src/datepicker/date-range/date-range-picker.component.tsx:70](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-styleguide/src/datepicker/date-range/date-range-picker.component.tsx#L70)
|
|
8
|
+
|
|
9
|
+
A date range picker to enter or select a date and time range. Based on React Aria, but styled to look like Carbon.
|
package/mock-jest.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
2
|
import { NEVER } from 'rxjs';
|
|
3
3
|
import type {} from '@openmrs/esm-globals';
|
|
4
4
|
import * as utils from '@openmrs/esm-utils';
|
|
@@ -110,6 +110,36 @@ export const OpenmrsDatePicker = jest.fn(({ id, labelText, value, onChange, isIn
|
|
|
110
110
|
</>
|
|
111
111
|
));
|
|
112
112
|
|
|
113
|
+
export const OpenmrsDateRangePicker = jest.fn(({ id, labelText, value = [], onChange, isInvalid, invalidText }) => {
|
|
114
|
+
const [inputValue, setInputValue] = useState(() => {
|
|
115
|
+
const [start, end] = value;
|
|
116
|
+
const formattedStart = start ? dayjs(start).format('DD/MM/YYYY') : 'dd/mm/yyyy';
|
|
117
|
+
const formattedEnd = end ? dayjs(end).format('DD/MM/YYYY') : 'dd/mm/yyyy';
|
|
118
|
+
return `${formattedStart}–${formattedEnd}`;
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
const handleChange = (e) => {
|
|
122
|
+
const raw = e.target.value;
|
|
123
|
+
setInputValue(raw);
|
|
124
|
+
|
|
125
|
+
const [startStr, endStr] = raw.split('–');
|
|
126
|
+
const start = dayjs(startStr, 'DD/MM/YYYY', true);
|
|
127
|
+
const end = dayjs(endStr, 'DD/MM/YYYY', true);
|
|
128
|
+
|
|
129
|
+
if (start.isValid() && end.isValid()) {
|
|
130
|
+
onChange?.([start.toDate(), end.toDate()]);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
return (
|
|
135
|
+
<div>
|
|
136
|
+
<label htmlFor={id}>{labelText}</label>
|
|
137
|
+
<input id={id} type="text" value={inputValue} onChange={handleChange} />
|
|
138
|
+
{isInvalid && <span>{invalidText}</span>}
|
|
139
|
+
</div>
|
|
140
|
+
);
|
|
141
|
+
});
|
|
142
|
+
|
|
113
143
|
/* esm-utils */
|
|
114
144
|
export {
|
|
115
145
|
getDefaultsFromConfigSchema,
|
package/mock.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
2
|
import { vi } from 'vitest';
|
|
3
3
|
import { NEVER } from 'rxjs';
|
|
4
4
|
import type {} from '@openmrs/esm-globals';
|
|
@@ -111,6 +111,36 @@ export const OpenmrsDatePicker = vi.fn(({ id, labelText, value, onChange, isInva
|
|
|
111
111
|
</>
|
|
112
112
|
));
|
|
113
113
|
|
|
114
|
+
export const OpenmrsDateRangePicker = vi.fn(({ id, labelText, value = [], onChange, isInvalid, invalidText }) => {
|
|
115
|
+
const [inputValue, setInputValue] = useState(() => {
|
|
116
|
+
const [start, end] = value;
|
|
117
|
+
const formattedStart = start ? dayjs(start).format('DD/MM/YYYY') : 'dd/mm/yyyy';
|
|
118
|
+
const formattedEnd = end ? dayjs(end).format('DD/MM/YYYY') : 'dd/mm/yyyy';
|
|
119
|
+
return `${formattedStart}–${formattedEnd}`;
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
const handleChange = (e) => {
|
|
123
|
+
const raw = e.target.value;
|
|
124
|
+
setInputValue(raw);
|
|
125
|
+
|
|
126
|
+
const [startStr, endStr] = raw.split('–');
|
|
127
|
+
const start = dayjs(startStr, 'DD/MM/YYYY', true);
|
|
128
|
+
const end = dayjs(endStr, 'DD/MM/YYYY', true);
|
|
129
|
+
|
|
130
|
+
if (start.isValid() && end.isValid()) {
|
|
131
|
+
onChange?.([start.toDate(), end.toDate()]);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
return (
|
|
136
|
+
<div>
|
|
137
|
+
<label htmlFor={id}>{labelText}</label>
|
|
138
|
+
<input id={id} type="text" value={inputValue} onChange={handleChange} />
|
|
139
|
+
{isInvalid && <span>{invalidText}</span>}
|
|
140
|
+
</div>
|
|
141
|
+
);
|
|
142
|
+
});
|
|
143
|
+
|
|
114
144
|
/* esm-utils */
|
|
115
145
|
export {
|
|
116
146
|
getDefaultsFromConfigSchema,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openmrs/esm-framework",
|
|
3
|
-
"version": "6.3.1-pre.
|
|
3
|
+
"version": "6.3.1-pre.3204",
|
|
4
4
|
"license": "MPL-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "dist/openmrs-esm-framework.js",
|
|
@@ -59,24 +59,24 @@
|
|
|
59
59
|
"access": "public"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@openmrs/esm-api": "6.3.1-pre.
|
|
63
|
-
"@openmrs/esm-config": "6.3.1-pre.
|
|
64
|
-
"@openmrs/esm-context": "6.3.1-pre.
|
|
65
|
-
"@openmrs/esm-dynamic-loading": "6.3.1-pre.
|
|
66
|
-
"@openmrs/esm-emr-api": "6.3.1-pre.
|
|
67
|
-
"@openmrs/esm-error-handling": "6.3.1-pre.
|
|
68
|
-
"@openmrs/esm-expression-evaluator": "6.3.1-pre.
|
|
69
|
-
"@openmrs/esm-extensions": "6.3.1-pre.
|
|
70
|
-
"@openmrs/esm-feature-flags": "6.3.1-pre.
|
|
71
|
-
"@openmrs/esm-globals": "6.3.1-pre.
|
|
72
|
-
"@openmrs/esm-navigation": "6.3.1-pre.
|
|
73
|
-
"@openmrs/esm-offline": "6.3.1-pre.
|
|
74
|
-
"@openmrs/esm-react-utils": "6.3.1-pre.
|
|
75
|
-
"@openmrs/esm-routes": "6.3.1-pre.
|
|
76
|
-
"@openmrs/esm-state": "6.3.1-pre.
|
|
77
|
-
"@openmrs/esm-styleguide": "6.3.1-pre.
|
|
78
|
-
"@openmrs/esm-translations": "6.3.1-pre.
|
|
79
|
-
"@openmrs/esm-utils": "6.3.1-pre.
|
|
62
|
+
"@openmrs/esm-api": "6.3.1-pre.3204",
|
|
63
|
+
"@openmrs/esm-config": "6.3.1-pre.3204",
|
|
64
|
+
"@openmrs/esm-context": "6.3.1-pre.3204",
|
|
65
|
+
"@openmrs/esm-dynamic-loading": "6.3.1-pre.3204",
|
|
66
|
+
"@openmrs/esm-emr-api": "6.3.1-pre.3204",
|
|
67
|
+
"@openmrs/esm-error-handling": "6.3.1-pre.3204",
|
|
68
|
+
"@openmrs/esm-expression-evaluator": "6.3.1-pre.3204",
|
|
69
|
+
"@openmrs/esm-extensions": "6.3.1-pre.3204",
|
|
70
|
+
"@openmrs/esm-feature-flags": "6.3.1-pre.3204",
|
|
71
|
+
"@openmrs/esm-globals": "6.3.1-pre.3204",
|
|
72
|
+
"@openmrs/esm-navigation": "6.3.1-pre.3204",
|
|
73
|
+
"@openmrs/esm-offline": "6.3.1-pre.3204",
|
|
74
|
+
"@openmrs/esm-react-utils": "6.3.1-pre.3204",
|
|
75
|
+
"@openmrs/esm-routes": "6.3.1-pre.3204",
|
|
76
|
+
"@openmrs/esm-state": "6.3.1-pre.3204",
|
|
77
|
+
"@openmrs/esm-styleguide": "6.3.1-pre.3204",
|
|
78
|
+
"@openmrs/esm-translations": "6.3.1-pre.3204",
|
|
79
|
+
"@openmrs/esm-utils": "6.3.1-pre.3204"
|
|
80
80
|
},
|
|
81
81
|
"peerDependencies": {
|
|
82
82
|
"dayjs": "1.x",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"sass-embedded": "^1.89.0",
|
|
99
99
|
"svgo-loader": "^4.0.0",
|
|
100
100
|
"typedoc": "^0.28.5",
|
|
101
|
-
"typedoc-plugin-file-categories": "6.3.1-pre.
|
|
101
|
+
"typedoc-plugin-file-categories": "6.3.1-pre.3204",
|
|
102
102
|
"typedoc-plugin-markdown": "^4.6.3",
|
|
103
103
|
"typedoc-plugin-no-inherit": "^1.6.1",
|
|
104
104
|
"typescript": "^5.8.3",
|