@kwiz/fluentui 1.0.51 → 1.0.52

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,12 @@
1
1
  import { DatePickerProps } from '@fluentui/react-datepicker-compat';
2
+ import { TimePickerProps } from '@fluentui/react-timepicker-compat';
2
3
  import * as React from 'react';
3
- interface IProps extends DatePickerProps {
4
- onOK?: () => void;
5
- onCancel?: () => void;
4
+ interface IProps {
5
+ onDateChange: (newDateObject: Date) => void;
6
+ value: Date;
7
+ showTime?: boolean;
8
+ datePickerProps?: DatePickerProps;
9
+ timePickerProps?: TimePickerProps;
6
10
  }
7
11
  export declare const DatePickerEx: React.FunctionComponent<React.PropsWithChildren<IProps>>;
8
12
  export {};
@@ -1,32 +1,43 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { DatePicker } from '@fluentui/react-datepicker-compat';
3
+ import { TimePicker } from '@fluentui/react-timepicker-compat';
3
4
  import { CalendarCancelRegular } from '@fluentui/react-icons';
4
- import { isDate, isFunction, isNullOrEmptyString } from '@kwiz/common';
5
+ import { isDate } from '@kwiz/common';
5
6
  import * as React from 'react';
6
7
  import { useKWIZFluentContext } from '../helpers/context';
8
+ import { Horizontal } from './horizontal';
7
9
  export const DatePickerEx = (props) => {
8
10
  const ctx = useKWIZFluentContext();
9
- const [showClear, setShowClear] = React.useState(isDate(props.value));
10
- const reset = React.useCallback(() => {
11
- setShowClear(false);
12
- if (isFunction(props.onSelectDate))
13
- props.onSelectDate(undefined);
14
- }, [showClear]);
15
- return (_jsx(DatePicker, Object.assign({ appearance: ctx.inputAppearance, mountNode: ctx.mountNode }, props, { onSelectDate: (date) => {
16
- setShowClear(isDate(date));
17
- if (isFunction(props.onSelectDate))
18
- props.onSelectDate(date);
19
- }, onChange: (e, data) => {
20
- setShowClear(!isNullOrEmptyString(data.value));
21
- if (isFunction(props.onChange))
22
- props.onChange(e, data);
23
- }, onKeyDown: isFunction(props.onOK) || isFunction(props.onCancel)
24
- ? e => {
25
- if (isFunction(props.onOK) && e.key === "Enter")
26
- props.onOK();
27
- else if (isFunction(props.onCancel) && e.key === "Escape")
28
- props.onCancel();
29
- }
30
- : undefined, contentBefore: showClear && _jsx(CalendarCancelRegular, { title: 'Clear', onClick: () => reset() }) })));
11
+ const { showClear, dateValue, timeValue } = React.useMemo(() => {
12
+ const showClear = isDate(props.value);
13
+ const dateValue = props.value;
14
+ const timeValue = props.value;
15
+ return { showClear, dateValue, timeValue };
16
+ }, [props.value]);
17
+ function reset() {
18
+ props.onDateChange(null);
19
+ }
20
+ const changeDateHandler = React.useCallback((newDateValue) => {
21
+ const newDate = new Date(newDateValue);
22
+ // Use the old time values.
23
+ newDate.setHours(timeValue.getHours(), timeValue.getMinutes(), 0, 0);
24
+ props.onDateChange(newDate);
25
+ }, [timeValue]);
26
+ const changeTimeHandler = React.useCallback((newTimeValue) => {
27
+ // Use the old date value.
28
+ const newDate = new Date(dateValue);
29
+ newDate.setHours(newTimeValue.getHours(), newTimeValue.getMinutes(), 0, 0);
30
+ props.onDateChange(newDate);
31
+ }, [dateValue]);
32
+ const DatePickerControl = _jsx(DatePicker, Object.assign({}, (props.datePickerProps || {}), { appearance: ctx.inputAppearance, mountNode: ctx.mountNode, value: dateValue, onSelectDate: (newDate) => {
33
+ changeDateHandler(newDate);
34
+ }, contentBefore: showClear && _jsx(CalendarCancelRegular, { title: 'Clear', onClick: () => reset() }) }));
35
+ const TimePickerControl = _jsx(TimePicker, Object.assign({ appearance: ctx.inputAppearance, mountNode: ctx.mountNode }, props.timePickerProps, { value: timeValue.toLocaleTimeString("en", { hour: "2-digit", minute: "2-digit", hour12: true }), onTimeChange: (e, date) => {
36
+ const newDate = date.selectedTime;
37
+ changeTimeHandler(newDate);
38
+ } }));
39
+ return (props.showTime
40
+ ? _jsxs(Horizontal, { children: [DatePickerControl, TimePickerControl] })
41
+ : DatePickerControl);
31
42
  };
32
43
  //# sourceMappingURL=date.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/controls/date.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAO1D,MAAM,CAAC,MAAM,YAAY,GAA6D,CAAC,KAAK,EAAE,EAAE;IAC5F,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACjC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;YAAE,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACH,KAAC,UAAU,kBAAC,UAAU,EAAE,GAAG,CAAC,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,IAAM,KAAK,IAC5E,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACnB,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3B,IAAI,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;gBAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;YAClB,YAAY,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC,EACD,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC3D,CAAC,CAAC,CAAC,CAAC,EAAE;gBACF,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO;oBAAE,KAAK,CAAC,IAAI,EAAE,CAAC;qBACzD,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;oBAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChF,CAAC;YACD,CAAC,CAAC,SAAS,EAEf,aAAa,EAAE,SAAS,IAAI,KAAC,qBAAqB,IAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAI,IAC7F,CACL,CAAC;AACN,CAAC,CAAA"}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/controls/date.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kwiz/fluentui",
3
- "version": "1.0.51",
3
+ "version": "1.0.52",
4
4
  "description": "KWIZ common controls for FluentUI",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -57,6 +57,7 @@
57
57
  "typescript": "^5.3.3"
58
58
  },
59
59
  "dependencies": {
60
+ "@fluentui/react-timepicker-compat": "^0.2.42",
60
61
  "@kwiz/common": "^1.0.103",
61
62
  "esbuild": "^0.19.12",
62
63
  "get-tsconfig": "^4.7.2",
@@ -1,40 +1,81 @@
1
1
  import { DatePicker, DatePickerProps } from '@fluentui/react-datepicker-compat';
2
+ import { TimePicker, TimePickerProps } from '@fluentui/react-timepicker-compat';
3
+
2
4
  import { CalendarCancelRegular } from '@fluentui/react-icons';
3
- import { isDate, isFunction, isNullOrEmptyString } from '@kwiz/common';
5
+ import { isDate } from '@kwiz/common';
4
6
  import * as React from 'react';
5
7
  import { useKWIZFluentContext } from '../helpers/context';
8
+ import { Horizontal } from './horizontal';
6
9
 
7
-
8
- interface IProps extends DatePickerProps {
9
- onOK?: () => void;
10
- onCancel?: () => void;
10
+ interface IProps {
11
+ onDateChange: (newDateObject: Date) => void;
12
+ value: Date;
13
+ showTime?: boolean;
14
+ datePickerProps?: DatePickerProps;
15
+ timePickerProps?: TimePickerProps;
11
16
  }
12
17
  export const DatePickerEx: React.FunctionComponent<React.PropsWithChildren<IProps>> = (props) => {
13
18
  const ctx = useKWIZFluentContext();
14
- const [showClear, setShowClear] = React.useState(isDate(props.value));
15
- const reset = React.useCallback(() => {
16
- setShowClear(false);
17
- if (isFunction(props.onSelectDate)) props.onSelectDate(undefined);
18
- }, [showClear]);
19
+
20
+ const { showClear, dateValue, timeValue } = React.useMemo(() => {
21
+ const showClear = isDate(props.value);
22
+ const dateValue = props.value;
23
+ const timeValue = props.value;
24
+ return { showClear, dateValue, timeValue };
25
+ }, [props.value]);
26
+
27
+ function reset() {
28
+ props.onDateChange(null);
29
+ }
30
+
31
+ const changeDateHandler = React.useCallback((newDateValue: Date): void => {
32
+ const newDate = new Date(newDateValue);
33
+ // Use the old time values.
34
+ newDate.setHours(
35
+ timeValue.getHours(),
36
+ timeValue.getMinutes(), 0, 0
37
+ );
38
+ props.onDateChange(newDate);
39
+ }, [timeValue]);
40
+
41
+ const changeTimeHandler = React.useCallback((newTimeValue: Date): void => {
42
+ // Use the old date value.
43
+ const newDate = new Date(dateValue);
44
+ newDate.setHours(
45
+ newTimeValue.getHours(),
46
+ newTimeValue.getMinutes(), 0, 0
47
+ );
48
+ props.onDateChange(newDate);
49
+ }, [dateValue]);
50
+
51
+ const DatePickerControl = <DatePicker
52
+ {...(props.datePickerProps || {})}
53
+ appearance={ctx.inputAppearance}
54
+ mountNode={ctx.mountNode}
55
+ value={dateValue}
56
+ onSelectDate={(newDate) => {
57
+ changeDateHandler(newDate);
58
+ }}
59
+ contentBefore={showClear && <CalendarCancelRegular title='Clear' onClick={() => reset()} />}
60
+ />
61
+
62
+ const TimePickerControl = <TimePicker
63
+ appearance={ctx.inputAppearance}
64
+ mountNode={ctx.mountNode}
65
+ {...props.timePickerProps}
66
+ value={timeValue.toLocaleTimeString("en", { hour: "2-digit", minute: "2-digit", hour12: true })}
67
+ onTimeChange={(e, date) => {
68
+ const newDate = date.selectedTime;
69
+ changeTimeHandler(newDate);
70
+ }}
71
+ />
19
72
 
20
73
  return (
21
- <DatePicker appearance={ctx.inputAppearance} mountNode={ctx.mountNode} {...props}
22
- onSelectDate={(date) => {
23
- setShowClear(isDate(date));
24
- if (isFunction(props.onSelectDate)) props.onSelectDate(date);
25
- }}
26
- onChange={(e, data) => {
27
- setShowClear(!isNullOrEmptyString(data.value));
28
- if (isFunction(props.onChange)) props.onChange(e, data);
29
- }}
30
- onKeyDown={isFunction(props.onOK) || isFunction(props.onCancel)
31
- ? e => {
32
- if (isFunction(props.onOK) && e.key === "Enter") props.onOK();
33
- else if (isFunction(props.onCancel) && e.key === "Escape") props.onCancel();
34
- }
35
- : undefined
36
- }
37
- contentBefore={showClear && <CalendarCancelRegular title='Clear' onClick={() => reset()} />}
38
- />
74
+ props.showTime
75
+ ? <Horizontal>
76
+ {DatePickerControl}
77
+ {TimePickerControl}
78
+ </Horizontal>
79
+ : DatePickerControl
39
80
  );
40
81
  }