@elliemae/ds-time-picker 2.2.0 → 2.3.0-alpha.3

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 (40) hide show
  1. package/cjs/DSTimePicker.js +100 -115
  2. package/cjs/DSTimePicker.js.map +7 -0
  3. package/cjs/DSTimePickerMenu.js +46 -33
  4. package/cjs/DSTimePickerMenu.js.map +7 -0
  5. package/cjs/PickerPanel.js +151 -254
  6. package/cjs/PickerPanel.js.map +7 -0
  7. package/cjs/TimePickerDropdown.js +73 -52
  8. package/cjs/TimePickerDropdown.js.map +7 -0
  9. package/cjs/TimePickerImpl.js +146 -138
  10. package/cjs/TimePickerImpl.js.map +7 -0
  11. package/cjs/TimePickerMenu.js +138 -209
  12. package/cjs/TimePickerMenu.js.map +7 -0
  13. package/cjs/index.js +40 -17
  14. package/cjs/index.js.map +7 -0
  15. package/cjs/moveElementOnScroll.js +57 -39
  16. package/cjs/moveElementOnScroll.js.map +7 -0
  17. package/cjs/utils.js +57 -24
  18. package/cjs/utils.js.map +7 -0
  19. package/esm/DSTimePicker.js +71 -105
  20. package/esm/DSTimePicker.js.map +7 -0
  21. package/esm/DSTimePickerMenu.js +17 -22
  22. package/esm/DSTimePickerMenu.js.map +7 -0
  23. package/esm/PickerPanel.js +120 -242
  24. package/esm/PickerPanel.js.map +7 -0
  25. package/esm/TimePickerDropdown.js +44 -44
  26. package/esm/TimePickerDropdown.js.map +7 -0
  27. package/esm/TimePickerImpl.js +106 -117
  28. package/esm/TimePickerImpl.js.map +7 -0
  29. package/esm/TimePickerMenu.js +102 -191
  30. package/esm/TimePickerMenu.js.map +7 -0
  31. package/esm/index.js +11 -4
  32. package/esm/index.js.map +7 -0
  33. package/esm/moveElementOnScroll.js +28 -34
  34. package/esm/moveElementOnScroll.js.map +7 -0
  35. package/esm/utils.js +28 -17
  36. package/esm/utils.js.map +7 -0
  37. package/package.json +7 -7
  38. package/types/PickerPanel.d.ts +1 -0
  39. package/types/TimePickerDropdown.d.ts +1 -0
  40. package/types/TimePickerImpl.d.ts +1 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/TimePickerDropdown.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport PropTypes from 'prop-types';\nimport { RecentDocuments } from '@elliemae/ds-icons';\nimport { DSButton } from '@elliemae/ds-button';\nimport { DSPopper } from '@elliemae/ds-popper';\n\nconst TimePickerDropdown = ({ disabled = false, onClick, onOpen, isOpen, menu, zIndex, blockName, placement }) => (\n <DSPopper\n blockName={blockName}\n placement={placement}\n contentComponent={menu}\n isOpen={isOpen}\n onOpen={onOpen}\n modifiers={{\n preventOverflow: {\n enabled: true,\n padding: 0,\n boundariesElement: 'window',\n },\n }}\n showArrow={false}\n triggerComponent={\n <DSButton buttonType=\"secondary\" disabled={disabled} icon={<RecentDocuments />} iconSize=\"s\" onClick={onClick} />\n }\n zIndex={zIndex}\n />\n);\n\nTimePickerDropdown.propTypes = {\n onClick: PropTypes.func,\n onOpen: PropTypes.func,\n disabled: PropTypes.bool,\n isOpen: PropTypes.bool,\n menu: PropTypes.element,\n blockName: PropTypes.string,\n placement: PropTypes.string,\n zIndex: PropTypes.number,\n};\n\nexport { TimePickerDropdown };\nexport default TimePickerDropdown;\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AAEA,MAAM,qBAAqB,CAAC,EAAE,WAAW,OAAO,SAAS,QAAQ,QAAQ,MAAM,QAAQ,WAAW,gBAChG,qCAAC,UAAD;AAAA,EACE;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,IACT,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,SAAS;AAAA,MACT,mBAAmB;AAAA;AAAA;AAAA,EAGvB,WAAW;AAAA,EACX,kBACE,qCAAC,UAAD;AAAA,IAAU,YAAW;AAAA,IAAY;AAAA,IAAoB,MAAM,qCAAC,iBAAD;AAAA,IAAqB,UAAS;AAAA,IAAI;AAAA;AAAA,EAE/F;AAAA;AAIJ,mBAAmB,YAAY;AAAA,EAC7B,SAAS,UAAU;AAAA,EACnB,QAAQ,UAAU;AAAA,EAClB,UAAU,UAAU;AAAA,EACpB,QAAQ,UAAU;AAAA,EAClB,MAAM,UAAU;AAAA,EAChB,WAAW,UAAU;AAAA,EACrB,WAAW,UAAU;AAAA,EACrB,QAAQ,UAAU;AAAA;AAIpB,IAAO,6BAAQ;",
6
+ "names": []
7
+ }
@@ -1,165 +1,154 @@
1
- import 'core-js/modules/esnext.async-iterator.filter.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.filter.js';
4
- import 'core-js/modules/esnext.async-iterator.for-each.js';
5
- import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
7
- import _jsx from '@babel/runtime/helpers/esm/jsx';
8
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
9
- import 'core-js/modules/web.dom-collections.iterator.js';
10
- import { useState, useRef, useEffect } from 'react';
11
- import moment from 'moment';
12
- import memoizeOne from 'memoize-one';
13
- import { getVisibleTimeByFormat } from '@elliemae/ds-utilities';
14
- import { aggregatedClasses, convertPropToCssClassName } from '@elliemae/ds-classnames';
15
- import { DSInputGroup, DSInput, TimeInputImpl } from '@elliemae/ds-form';
16
- import { TimePickerMenu } from './TimePickerMenu.js';
17
- import TimePickerDropdown from './TimePickerDropdown.js';
18
- import { convertTimeString } from './utils.js';
19
- import { jsx } from 'react/jsx-runtime';
20
-
21
- const _excluded = ["onChange"];
22
-
23
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
24
-
25
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
26
- const blockName = 'time-picker';
27
- const TimePickerContainer = aggregatedClasses(DSInputGroup)(blockName, null, _ref => {
28
- let {
29
- isMenuOpened
30
- } = _ref;
31
- return {
32
- isMenuOpened
33
- };
34
- });
35
-
36
- const TimePickerImpl = _ref2 => {
37
- let {
38
- value,
39
- onChange,
40
- onOpen,
41
- format,
42
- disabled,
43
- hasHeader,
44
- hasHeaderDisplay,
45
- className,
46
- containerProps,
47
- placement,
48
- zIndex,
49
- disabledTimes,
50
- minutesInterval
51
- } = _ref2;
1
+ import * as React from "react";
2
+ import React2, { useState, useEffect, useRef } from "react";
3
+ import PropTypes from "prop-types";
4
+ import moment from "moment";
5
+ import memoizeOne from "memoize-one";
6
+ import { getVisibleTimeByFormat } from "@elliemae/ds-utilities";
7
+ import { aggregatedClasses, convertPropToCssClassName } from "@elliemae/ds-classnames";
8
+ import { DSInput, DSInputGroup, TimeInputImpl } from "@elliemae/ds-form";
9
+ import { TimePickerMenu } from "./TimePickerMenu";
10
+ import { TimePickerDropdown } from "./TimePickerDropdown";
11
+ import { convertTimeString } from "./utils";
12
+ const blockName = "time-picker";
13
+ const TimePickerContainer = aggregatedClasses(DSInputGroup)(blockName, null, ({ isMenuOpened }) => ({
14
+ isMenuOpened
15
+ }));
16
+ const TimePickerImpl = ({
17
+ value,
18
+ onChange,
19
+ onOpen,
20
+ format,
21
+ disabled,
22
+ hasHeader,
23
+ hasHeaderDisplay,
24
+ className,
25
+ containerProps,
26
+ placement,
27
+ zIndex,
28
+ disabledTimes,
29
+ minutesInterval
30
+ }) => {
52
31
  const [time, setTime] = useState();
53
32
  const [isMenuOpened, setIsMenuOpened] = useState(false);
54
33
  const [focusedColumn, setFocusedColumn] = useState(null);
55
34
  const timePickerRef = useRef();
56
35
  useEffect(() => {
57
- if (moment(value).isValid()) setTime(moment(value));else if (value === null) setTime(undefined);
36
+ if (moment(value).isValid())
37
+ setTime(moment(value));
38
+ else if (value === null)
39
+ setTime(void 0);
58
40
  }, [value]);
59
41
  useEffect(() => {
60
- window.addEventListener('click', handleClickOutside, false);
61
- return () => window.removeEventListener('click', handleClickOutside, false);
42
+ window.addEventListener("click", handleClickOutside, false);
43
+ return () => window.removeEventListener("click", handleClickOutside, false);
62
44
  }, []);
63
45
  useEffect(() => {
64
- window.addEventListener('keydown', handleKeyDown, false);
65
- return () => window.removeEventListener('keydown', handleKeyDown, false);
46
+ window.addEventListener("keydown", handleKeyDown, false);
47
+ return () => window.removeEventListener("keydown", handleKeyDown, false);
66
48
  }, []);
67
49
  useEffect(() => {
68
- if (isMenuOpened) handleChangeFocus();
50
+ if (isMenuOpened)
51
+ handleChangeFocus();
69
52
  }, [isMenuOpened]);
70
-
71
53
  const handleClickOutside = () => {
72
- if (isMenuOpened) setIsMenuOpened(false);
54
+ if (isMenuOpened)
55
+ setIsMenuOpened(false);
73
56
  };
74
-
75
- const handleKeyDown = event => {
76
- const {
77
- key
78
- } = event;
79
- const menuOpenKeys = ['Escape', ' ', 'Enter'];
80
- if (menuOpenKeys.includes(key)) setIsMenuOpened(false);
57
+ const handleKeyDown = (event) => {
58
+ const { key } = event;
59
+ const menuOpenKeys = ["Escape", " ", "Enter"];
60
+ if (menuOpenKeys.includes(key))
61
+ setIsMenuOpened(false);
81
62
  };
82
-
83
63
  const handleChangeFocus = () => {
84
- const [firstColumn] = document.getElementsByClassName('em-ds-time-picker-panel');
85
-
64
+ const [firstColumn] = document.getElementsByClassName("em-ds-time-picker-panel");
86
65
  if (firstColumn && !focusedColumn) {
87
66
  setFocusedColumn(firstColumn);
88
67
  firstColumn.focus();
89
68
  }
90
69
  };
91
-
92
- const handlePickerChange = newTime => {
70
+ const handlePickerChange = (newTime) => {
93
71
  setTime(moment(newTime));
94
72
  onChange(moment(newTime));
95
73
  };
96
-
97
- const handleInputChange = newTime => {
74
+ const handleInputChange = (newTime) => {
98
75
  setTime(newTime);
99
76
  onChange(newTime);
100
77
  };
101
-
102
- const handleMenuOpen = isOpen => {
78
+ const handleMenuOpen = (isOpen) => {
103
79
  onOpen(isOpen);
104
80
  setIsMenuOpened(isOpen);
105
- if (!isOpen) setFocusedColumn(null);
81
+ if (!isOpen)
82
+ setFocusedColumn(null);
106
83
  };
107
-
108
- const getVisibleTimePanels = memoizeOne(format => getVisibleTimeByFormat(format));
84
+ const getVisibleTimePanels = memoizeOne((format2) => getVisibleTimeByFormat(format2));
109
85
  const timePickerBlockName = convertPropToCssClassName(blockName);
110
86
  const visiblePanels = getVisibleTimePanels(format);
111
87
  const disabledTimeRange = disabledTimes && {
112
88
  from: convertTimeString(disabledTimes.from),
113
89
  to: convertTimeString(disabledTimes.to)
114
90
  };
115
- return /*#__PURE__*/_jsx(TimePickerContainer, {
116
- className: "".concat(className, " variant-").concat(!disabled ? 'default' : 'disabled'),
117
- containerProps: containerProps,
118
- disabled: disabled,
119
- rightAddon: /*#__PURE__*/_jsx(TimePickerDropdown, {
91
+ return /* @__PURE__ */ React2.createElement(TimePickerContainer, {
92
+ className: `${className} variant-${!disabled ? "default" : "disabled"}`,
93
+ containerProps,
94
+ disabled,
95
+ rightAddon: /* @__PURE__ */ React2.createElement(TimePickerDropdown, {
120
96
  blockName: timePickerBlockName,
121
- disabled: disabled,
97
+ disabled,
122
98
  isOpen: isMenuOpened,
123
- zIndex: zIndex,
124
- placement: placement,
99
+ zIndex,
100
+ placement,
125
101
  onOpen: handleMenuOpen,
126
- onClick: e => {
102
+ onClick: (e) => {
127
103
  e.preventDefault();
128
104
  handleMenuOpen(!isMenuOpened);
129
105
  },
130
- menu: /*#__PURE__*/jsx("div", {
131
- ref: timePickerRef,
132
- children: /*#__PURE__*/jsx(TimePickerMenu, _objectSpread({
133
- disabled: disabled,
134
- disabledTimes: disabledTimeRange,
135
- format: format,
136
- hasHeader: hasHeader,
137
- hasHeaderDisplay: hasHeaderDisplay,
138
- onTimeChange: handlePickerChange,
139
- minutesInterval: minutesInterval,
140
- time: time
141
- }, visiblePanels))
142
- })
106
+ menu: /* @__PURE__ */ React2.createElement("div", {
107
+ ref: timePickerRef
108
+ }, /* @__PURE__ */ React2.createElement(TimePickerMenu, {
109
+ disabled,
110
+ disabledTimes: disabledTimeRange,
111
+ format,
112
+ hasHeader,
113
+ hasHeaderDisplay,
114
+ onTimeChange: handlePickerChange,
115
+ minutesInterval,
116
+ time,
117
+ ...visiblePanels
118
+ }))
143
119
  })
144
- }, void 0, /*#__PURE__*/_jsx(DSInput, {
145
- customInputType: _ref3 => {
146
- let {
147
- onChange: handleChange
148
- } = _ref3,
149
- restInputProps = _objectWithoutProperties(_ref3, _excluded);
150
-
151
- return /*#__PURE__*/jsx(TimeInputImpl, _objectSpread({
152
- clearable: true,
153
- disabled: disabled,
154
- format: format,
155
- onChange: handleChange
156
- }, restInputProps));
157
- },
120
+ }, /* @__PURE__ */ React2.createElement(DSInput, {
121
+ customInputType: ({ onChange: handleChange, ...restInputProps }) => /* @__PURE__ */ React2.createElement(TimeInputImpl, {
122
+ clearable: true,
123
+ disabled,
124
+ format,
125
+ onChange: handleChange,
126
+ ...restInputProps
127
+ }),
158
128
  isShowElipsisActive: false,
159
- disabled: disabled,
129
+ disabled,
160
130
  onChange: handleInputChange,
161
131
  value: time
162
132
  }));
163
133
  };
164
-
165
- export { TimePickerImpl as default };
134
+ TimePickerImpl.propTypes = {
135
+ value: PropTypes.instanceOf(Date, moment),
136
+ onChange: PropTypes.func,
137
+ onOpen: PropTypes.func,
138
+ format: PropTypes.string,
139
+ disabled: PropTypes.bool,
140
+ hasHeader: PropTypes.bool,
141
+ hasHeaderDisplay: PropTypes.bool,
142
+ className: PropTypes.string,
143
+ containerProps: PropTypes.object,
144
+ placement: PropTypes.string,
145
+ zIndex: PropTypes.number,
146
+ disabledTimes: PropTypes.object,
147
+ minutesInterval: PropTypes.number
148
+ };
149
+ var TimePickerImpl_default = TimePickerImpl;
150
+ export {
151
+ TimePickerImpl,
152
+ TimePickerImpl_default as default
153
+ };
154
+ //# sourceMappingURL=TimePickerImpl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/TimePickerImpl.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\n/* eslint-disable no-shadow */\nimport React, { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport memoizeOne from 'memoize-one';\nimport { getVisibleTimeByFormat } from '@elliemae/ds-utilities';\nimport { aggregatedClasses, convertPropToCssClassName } from '@elliemae/ds-classnames';\nimport { DSInput, DSInputGroup, TimeInputImpl } from '@elliemae/ds-form';\nimport { TimePickerMenu } from './TimePickerMenu';\nimport { TimePickerDropdown } from './TimePickerDropdown';\nimport { convertTimeString } from './utils';\n\nconst blockName = 'time-picker';\n\nconst TimePickerContainer = aggregatedClasses(DSInputGroup)(blockName, null, ({ isMenuOpened }) => ({\n isMenuOpened,\n}));\n\nconst TimePickerImpl = ({\n value,\n onChange,\n onOpen,\n format,\n disabled,\n hasHeader,\n hasHeaderDisplay,\n className,\n containerProps,\n placement,\n zIndex,\n disabledTimes,\n minutesInterval,\n}) => {\n const [time, setTime] = useState();\n const [isMenuOpened, setIsMenuOpened] = useState(false);\n const [focusedColumn, setFocusedColumn] = useState(null);\n const timePickerRef = useRef();\n useEffect(() => {\n if (moment(value).isValid()) setTime(moment(value));\n else if (value === null) setTime(undefined);\n }, [value]);\n\n useEffect(() => {\n window.addEventListener('click', handleClickOutside, false);\n return () => window.removeEventListener('click', handleClickOutside, false);\n }, []);\n\n useEffect(() => {\n window.addEventListener('keydown', handleKeyDown, false);\n return () => window.removeEventListener('keydown', handleKeyDown, false);\n }, []);\n\n useEffect(() => {\n if (isMenuOpened) handleChangeFocus();\n }, [isMenuOpened]);\n\n const handleClickOutside = () => {\n if (isMenuOpened) setIsMenuOpened(false);\n };\n\n const handleKeyDown = (event) => {\n const { key } = event;\n const menuOpenKeys = ['Escape', ' ', 'Enter'];\n if (menuOpenKeys.includes(key)) setIsMenuOpened(false);\n };\n\n const handleChangeFocus = () => {\n const [firstColumn] = document.getElementsByClassName('em-ds-time-picker-panel');\n if (firstColumn && !focusedColumn) {\n setFocusedColumn(firstColumn);\n firstColumn.focus();\n }\n };\n\n const handlePickerChange = (newTime) => {\n setTime(moment(newTime));\n onChange(moment(newTime));\n };\n\n const handleInputChange = (newTime) => {\n setTime(newTime);\n onChange(newTime);\n };\n\n const handleMenuOpen = (isOpen) => {\n onOpen(isOpen);\n setIsMenuOpened(isOpen);\n if (!isOpen) setFocusedColumn(null);\n };\n\n const getVisibleTimePanels = memoizeOne((format) => getVisibleTimeByFormat(format));\n const timePickerBlockName = convertPropToCssClassName(blockName);\n const visiblePanels = getVisibleTimePanels(format);\n\n const disabledTimeRange = disabledTimes && {\n from: convertTimeString(disabledTimes.from),\n to: convertTimeString(disabledTimes.to),\n };\n\n return (\n <TimePickerContainer\n className={`${className} variant-${!disabled ? 'default' : 'disabled'}`}\n containerProps={containerProps}\n disabled={disabled}\n rightAddon={\n <TimePickerDropdown\n blockName={timePickerBlockName}\n disabled={disabled}\n isOpen={isMenuOpened}\n zIndex={zIndex}\n placement={placement}\n onOpen={handleMenuOpen}\n onClick={(e) => {\n e.preventDefault();\n handleMenuOpen(!isMenuOpened);\n }}\n menu={\n <div ref={timePickerRef}>\n <TimePickerMenu\n disabled={disabled}\n disabledTimes={disabledTimeRange}\n format={format}\n hasHeader={hasHeader}\n hasHeaderDisplay={hasHeaderDisplay}\n onTimeChange={handlePickerChange}\n minutesInterval={minutesInterval}\n time={time}\n {...visiblePanels}\n />\n </div>\n }\n />\n }\n >\n <DSInput\n customInputType={({ onChange: handleChange, ...restInputProps }) => (\n <TimeInputImpl clearable disabled={disabled} format={format} onChange={handleChange} {...restInputProps} />\n )}\n isShowElipsisActive={false}\n disabled={disabled}\n onChange={handleInputChange}\n value={time}\n />\n </TimePickerContainer>\n );\n};\n\nTimePickerImpl.propTypes = {\n value: PropTypes.instanceOf(Date, moment),\n onChange: PropTypes.func,\n onOpen: PropTypes.func,\n format: PropTypes.string,\n disabled: PropTypes.bool,\n hasHeader: PropTypes.bool,\n hasHeaderDisplay: PropTypes.bool,\n className: PropTypes.string,\n containerProps: PropTypes.object,\n placement: PropTypes.string,\n zIndex: PropTypes.number,\n disabledTimes: PropTypes.object,\n minutesInterval: PropTypes.number,\n};\n\nexport { TimePickerImpl };\nexport default TimePickerImpl;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }