@elliemae/ds-time-picker 1.61.10 → 1.61.13
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/cjs/DSTimePicker.js.map +1 -1
- package/cjs/DSTimePickerMenu.js.map +1 -1
- package/cjs/PickerPanel.js.map +1 -1
- package/cjs/TimePickerDropdown.js.map +1 -1
- package/cjs/TimePickerImpl.js.map +1 -1
- package/cjs/TimePickerMenu.js.map +1 -1
- package/cjs/moveElementOnScroll.js.map +1 -1
- package/cjs/utils.js.map +1 -1
- package/esm/DSTimePicker.js.map +1 -1
- package/esm/DSTimePickerMenu.js.map +1 -1
- package/esm/PickerPanel.js.map +1 -1
- package/esm/TimePickerDropdown.js.map +1 -1
- package/esm/TimePickerImpl.js.map +1 -1
- package/esm/TimePickerMenu.js.map +1 -1
- package/esm/moveElementOnScroll.js.map +1 -1
- package/esm/utils.js.map +1 -1
- package/package.json +7 -7
package/cjs/DSTimePicker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DSTimePicker.js","sources":["../../src/DSTimePicker.tsx"],"sourcesContent":["import React from 'react';\nimport { PropTypes, describe } from 'react-desc';\nimport Moment from 'moment';\nimport TimePickerImpl from './TimePickerImpl';\n\nconst DSTimePicker = ({\n containerProps = {},\n innerRef,\n className = '',\n disabled = false,\n value = '',\n format,\n style = {},\n onChange = () => null,\n onOpen = () => null,\n isOpen = undefined,\n clearable = false,\n hasHeader = true,\n hasHeaderDisplay = false,\n 'aria-label': ariaLabel,\n zIndex = 'auto',\n placement = 'bottom',\n disabledTimes,\n minutesInterval = 1,\n}) => (\n <TimePickerImpl\n ref={innerRef}\n aria-label={ariaLabel}\n className={className}\n clearable={clearable}\n containerProps={containerProps}\n disabled={disabled}\n format={format}\n hasHeader={hasHeader}\n hasHeaderDisplay={hasHeaderDisplay}\n isOpen={isOpen}\n onChange={onChange}\n onOpen={onOpen}\n placement={placement}\n style={style}\n value={value}\n zIndex={zIndex}\n minutesInterval={minutesInterval}\n disabledTimes={disabledTimes}\n />\n);\n\nDSTimePicker.defaultProps = {\n format: 'hh:mm:ss A',\n};\n\nconst props = {\n /** a11y label */\n 'aria-label': PropTypes.string.description('a11y label'),\n /** inject props to time picker wrapper */\n containerProps: PropTypes.object.description(\n 'inject props to time picker wrapper',\n ),\n /** Whether the time picker is disabled or not */\n disabled: PropTypes.bool.description(\n 'Whether the time picker is disabled or not',\n ),\n /** Time picker value */\n value: PropTypes.instanceOf(Moment).description('Time picker value'),\n /** Time format (hh:mm:ss, H:m:s) */\n format: PropTypes.string.description('Time format (hh:mm:ss, H:m:s)'),\n /** toggle header style */\n hasHeader: PropTypes.bool.description('toggle header style'),\n /** toggle header display */\n hasHeaderDisplay: PropTypes.bool.description('toggle header display'),\n /** Handler when time picker value changes */\n onChange: PropTypes.func.description(\n 'Handler when time picker value changes',\n ),\n /** Handler when the time picker menu opens */\n onOpen: PropTypes.func.description('Handler when the time picker menu opens'),\n /** Whether the time picker menu is opened or not */\n isOpen: PropTypes.bool.description(\n 'Whether the time picker menu is opened or not',\n ),\n /** ref for time picker input */\n innerRef: PropTypes.func.description('ref for time picker input'),\n /** Enable to clear the time picker value */\n clearable: PropTypes.bool.description(\n 'Enable to clear the time picker value',\n ),\n /** class for time picker */\n className: PropTypes.string.description('class for time picker'),\n /** style object */\n style: PropTypes.object.description('style object'),\n /** z index for menu */\n zIndex: PropTypes.number.description('z index for menu'),\n /** DSPopper placement */\n placement: PropTypes.string.description('DSPopper placement'),\n /** disabled time */\n disabledTimes: PropTypes.object.description('disabled time'),\n /** steps for the picker */\n minutesInterval: PropTypes.number.description('steps for the picker'),\n};\n\nDSTimePicker.propTypes = props;\nconst DSTimePickerWithSchema = describe(DSTimePicker);\nDSTimePickerWithSchema.propTypes = props;\n\nexport { DSTimePicker, DSTimePickerWithSchema };\nexport default DSTimePicker;\n"],"names":["DSTimePicker","containerProps","innerRef","className","disabled","value","format","style","onChange","onOpen","isOpen","undefined","clearable","hasHeader","hasHeaderDisplay","ariaLabel","zIndex","placement","disabledTimes","minutesInterval","React","defaultProps","props","PropTypes","string","description","object","bool","instanceOf","Moment","func","number","propTypes","DSTimePickerWithSchema","describe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKMA,YAAY,GAAG,SAAfA,YAAe;
|
|
1
|
+
{"version":3,"file":"DSTimePicker.js","sources":["../../src/DSTimePicker.tsx"],"sourcesContent":["import React from 'react';\nimport { PropTypes, describe } from 'react-desc';\nimport Moment from 'moment';\nimport TimePickerImpl from './TimePickerImpl';\n\nconst DSTimePicker = ({\n containerProps = {},\n innerRef,\n className = '',\n disabled = false,\n value = '',\n format,\n style = {},\n onChange = () => null,\n onOpen = () => null,\n isOpen = undefined,\n clearable = false,\n hasHeader = true,\n hasHeaderDisplay = false,\n 'aria-label': ariaLabel,\n zIndex = 'auto',\n placement = 'bottom',\n disabledTimes,\n minutesInterval = 1,\n}) => (\n <TimePickerImpl\n ref={innerRef}\n aria-label={ariaLabel}\n className={className}\n clearable={clearable}\n containerProps={containerProps}\n disabled={disabled}\n format={format}\n hasHeader={hasHeader}\n hasHeaderDisplay={hasHeaderDisplay}\n isOpen={isOpen}\n onChange={onChange}\n onOpen={onOpen}\n placement={placement}\n style={style}\n value={value}\n zIndex={zIndex}\n minutesInterval={minutesInterval}\n disabledTimes={disabledTimes}\n />\n);\n\nDSTimePicker.defaultProps = {\n format: 'hh:mm:ss A',\n};\n\nconst props = {\n /** a11y label */\n 'aria-label': PropTypes.string.description('a11y label'),\n /** inject props to time picker wrapper */\n containerProps: PropTypes.object.description(\n 'inject props to time picker wrapper',\n ),\n /** Whether the time picker is disabled or not */\n disabled: PropTypes.bool.description(\n 'Whether the time picker is disabled or not',\n ),\n /** Time picker value */\n value: PropTypes.instanceOf(Moment).description('Time picker value'),\n /** Time format (hh:mm:ss, H:m:s) */\n format: PropTypes.string.description('Time format (hh:mm:ss, H:m:s)'),\n /** toggle header style */\n hasHeader: PropTypes.bool.description('toggle header style'),\n /** toggle header display */\n hasHeaderDisplay: PropTypes.bool.description('toggle header display'),\n /** Handler when time picker value changes */\n onChange: PropTypes.func.description(\n 'Handler when time picker value changes',\n ),\n /** Handler when the time picker menu opens */\n onOpen: PropTypes.func.description('Handler when the time picker menu opens'),\n /** Whether the time picker menu is opened or not */\n isOpen: PropTypes.bool.description(\n 'Whether the time picker menu is opened or not',\n ),\n /** ref for time picker input */\n innerRef: PropTypes.func.description('ref for time picker input'),\n /** Enable to clear the time picker value */\n clearable: PropTypes.bool.description(\n 'Enable to clear the time picker value',\n ),\n /** class for time picker */\n className: PropTypes.string.description('class for time picker'),\n /** style object */\n style: PropTypes.object.description('style object'),\n /** z index for menu */\n zIndex: PropTypes.number.description('z index for menu'),\n /** DSPopper placement */\n placement: PropTypes.string.description('DSPopper placement'),\n /** disabled time */\n disabledTimes: PropTypes.object.description('disabled time'),\n /** steps for the picker */\n minutesInterval: PropTypes.number.description('steps for the picker'),\n};\n\nDSTimePicker.propTypes = props;\nconst DSTimePickerWithSchema = describe(DSTimePicker);\nDSTimePickerWithSchema.propTypes = props;\n\nexport { DSTimePicker, DSTimePickerWithSchema };\nexport default DSTimePicker;\n"],"names":["DSTimePicker","containerProps","innerRef","className","disabled","value","format","style","onChange","onOpen","isOpen","undefined","clearable","hasHeader","hasHeaderDisplay","ariaLabel","zIndex","placement","disabledTimes","minutesInterval","React","defaultProps","props","PropTypes","string","description","object","bool","instanceOf","Moment","func","number","propTypes","DSTimePickerWithSchema","describe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKMA,YAAY,GAAG,SAAfA,YAAe;EAAA,+BACnBC,cADmB;MACnBA,cADmB,oCACF,EADE;MAEnBC,QAFmB,QAEnBA,QAFmB;4BAGnBC,SAHmB;MAGnBA,SAHmB,+BAGP,EAHO;2BAInBC,QAJmB;MAInBA,QAJmB,8BAIR,KAJQ;wBAKnBC,KALmB;MAKnBA,KALmB,2BAKX,EALW;MAMnBC,MANmB,QAMnBA,MANmB;wBAOnBC,KAPmB;MAOnBA,KAPmB,2BAOX,EAPW;2BAQnBC,QARmB;MAQnBA,QARmB,8BAQR;IAAA,OAAM,IAAN;GARQ;yBASnBC,MATmB;MASnBA,MATmB,4BASV;IAAA,OAAM,IAAN;GATU;yBAUnBC,MAVmB;MAUnBA,MAVmB,4BAUVC,SAVU;4BAWnBC,SAXmB;MAWnBA,SAXmB,+BAWP,KAXO;4BAYnBC,SAZmB;MAYnBA,SAZmB,+BAYP,IAZO;mCAanBC,gBAbmB;MAanBA,gBAbmB,sCAaA,KAbA;MAcLC,SAdK,QAcnB,YAdmB;yBAenBC,MAfmB;MAenBA,MAfmB,4BAeV,MAfU;4BAgBnBC,SAhBmB;MAgBnBA,SAhBmB,+BAgBP,QAhBO;MAiBnBC,aAjBmB,QAiBnBA,aAjBmB;kCAkBnBC,eAlBmB;MAkBnBA,eAlBmB,qCAkBD,CAlBC;EAAA,oBAoBnBC,wCAAC,cAAD;IACE,GAAG,EAAElB,QADP;IAEE,cAAYa,SAFd;IAGE,SAAS,EAAEZ,SAHb;IAIE,SAAS,EAAES,SAJb;IAKE,cAAc,EAAEX,cALlB;IAME,QAAQ,EAAEG,QANZ;IAOE,MAAM,EAAEE,MAPV;IAQE,SAAS,EAAEO,SARb;IASE,gBAAgB,EAAEC,gBATpB;IAUE,MAAM,EAAEJ,MAVV;IAWE,QAAQ,EAAEF,QAXZ;IAYE,MAAM,EAAEC,MAZV;IAaE,SAAS,EAAEQ,SAbb;IAcE,KAAK,EAAEV,KAdT;IAeE,KAAK,EAAEF,KAfT;IAgBE,MAAM,EAAEW,MAhBV;IAiBE,eAAe,EAAEG,eAjBnB;IAkBE,aAAa,EAAED;IAtCE;AAAA;;AA0CrBlB,YAAY,CAACqB,YAAb,GAA4B;EAC1Bf,MAAM,EAAE;AADkB,CAA5B;AAIA,IAAMgB,KAAK,GAAG;;EAEZ,cAAcC,mBAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,YAA7B,CAFF;;;EAIZxB,cAAc,EAAEsB,mBAAS,CAACG,MAAV,CAAiBD,WAAjB,CACd,qCADc,CAJJ;;;EAQZrB,QAAQ,EAAEmB,mBAAS,CAACI,IAAV,CAAeF,WAAf,CACR,4CADQ,CARE;;;EAYZpB,KAAK,EAAEkB,mBAAS,CAACK,UAAV,CAAqBC,0BAArB,EAA6BJ,WAA7B,CAAyC,mBAAzC,CAZK;;;EAcZnB,MAAM,EAAEiB,mBAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,+BAA7B,CAdI;;;EAgBZZ,SAAS,EAAEU,mBAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,qBAA3B,CAhBC;;;EAkBZX,gBAAgB,EAAES,mBAAS,CAACI,IAAV,CAAeF,WAAf,CAA2B,uBAA3B,CAlBN;;;EAoBZjB,QAAQ,EAAEe,mBAAS,CAACO,IAAV,CAAeL,WAAf,CACR,wCADQ,CApBE;;;EAwBZhB,MAAM,EAAEc,mBAAS,CAACO,IAAV,CAAeL,WAAf,CAA2B,yCAA3B,CAxBI;;;EA0BZf,MAAM,EAAEa,mBAAS,CAACI,IAAV,CAAeF,WAAf,CACN,+CADM,CA1BI;;;EA8BZvB,QAAQ,EAAEqB,mBAAS,CAACO,IAAV,CAAeL,WAAf,CAA2B,2BAA3B,CA9BE;;;EAgCZb,SAAS,EAAEW,mBAAS,CAACI,IAAV,CAAeF,WAAf,CACT,uCADS,CAhCC;;;EAoCZtB,SAAS,EAAEoB,mBAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,uBAA7B,CApCC;;;EAsCZlB,KAAK,EAAEgB,mBAAS,CAACG,MAAV,CAAiBD,WAAjB,CAA6B,cAA7B,CAtCK;;;EAwCZT,MAAM,EAAEO,mBAAS,CAACQ,MAAV,CAAiBN,WAAjB,CAA6B,kBAA7B,CAxCI;;;EA0CZR,SAAS,EAAEM,mBAAS,CAACC,MAAV,CAAiBC,WAAjB,CAA6B,oBAA7B,CA1CC;;;EA4CZP,aAAa,EAAEK,mBAAS,CAACG,MAAV,CAAiBD,WAAjB,CAA6B,eAA7B,CA5CH;;;EA8CZN,eAAe,EAAEI,mBAAS,CAACQ,MAAV,CAAiBN,WAAjB,CAA6B,sBAA7B;AA9CL,CAAd;AAiDAzB,YAAY,CAACgC,SAAb,GAAyBV,KAAzB;IACMW,sBAAsB,GAAGC,kBAAQ,CAAClC,YAAD;AACvCiC,sBAAsB,CAACD,SAAvB,GAAmCV,KAAnC;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DSTimePickerMenu.js","sources":["../../src/DSTimePickerMenu.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport TimePickerMenu from './TimePickerMenu';\n\nconst DSTimePickerMenuWrapper = styled.div`\n display: flex;\n height: 18.6rem;\n`;\nfunction DSTimePickerMenu(props) {\n return (\n <DSTimePickerMenuWrapper>\n <TimePickerMenu {...props} />\n </DSTimePickerMenuWrapper>\n );\n}\nexport { DSTimePickerMenu };\nexport default DSTimePickerMenu;\n"],"names":["DSTimePickerMenuWrapper","styled","div","DSTimePickerMenu","props","React","TimePickerMenu"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,uBAAuB,gBAAGC,0BAAM,CAACC,GAAV;
|
|
1
|
+
{"version":3,"file":"DSTimePickerMenu.js","sources":["../../src/DSTimePickerMenu.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport TimePickerMenu from './TimePickerMenu';\n\nconst DSTimePickerMenuWrapper = styled.div`\n display: flex;\n height: 18.6rem;\n`;\nfunction DSTimePickerMenu(props) {\n return (\n <DSTimePickerMenuWrapper>\n <TimePickerMenu {...props} />\n </DSTimePickerMenuWrapper>\n );\n}\nexport { DSTimePickerMenu };\nexport default DSTimePickerMenu;\n"],"names":["DSTimePickerMenuWrapper","styled","div","DSTimePickerMenu","props","React","TimePickerMenu"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,uBAAuB,gBAAGC,0BAAM,CAACC,GAAV;EAAA;AAAA,oCAA7B;;AAIA,SAASC,gBAAT,CAA0BC,KAA1B,EAAiC;EAC/B,oBACEC,wCAAC,uBAAD,qBACEA,wCAACC,6BAAD,EAAoBF,KAApB,CADF,CADF;AAKD;;;;;"}
|
package/cjs/PickerPanel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerPanel.js","sources":["../../src/PickerPanel.tsx"],"sourcesContent":["/* eslint-disable eqeqeq */\n/* eslint-disable react/prop-types */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { findIndex } from 'lodash';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport memoizeOne from 'memoize-one';\nimport { ChevronSmallUp, ChevronSmallDown } from '@elliemae/ds-icons';\nimport DSButton from '@elliemae/ds-button';\nimport { MoveElementOnScroll } from './moveElementOnScroll';\nimport { validateIndex } from './utils';\n\nconst blockName = 'time-picker-panel';\n\nconst Container = aggregatedClasses('div')(blockName, null, ({ scrolling }) => ({ scrolling }));\nconst Wrapper = aggregatedClasses('div')(blockName, 'wrapper');\nconst PickerItemListContainer = aggregatedClasses('div')(blockName, 'item-list-container');\nconst PickerItemList = aggregatedClasses('div')(blockName, 'item-list');\nconst PickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst PickerItemContainer = aggregatedClasses('div')(blockName, 'item', ({ selected, disabled }) => ({\n selected,\n disabled,\n}));\nconst PickerSelectedOptionSelected = aggregatedClasses('div')(blockName, 'selected-container');\nconst SelectedCircle = aggregatedClasses('div')(blockName, 'selected-circle');\nconst ArrowButtonContainer = aggregatedClasses('div')(blockName, 'arrow-container');\n\nconst getOptionIndex = (options, selectedOption, valueProperty = 'value') => {\n const index = options.findIndex((option) => option[valueProperty] === selectedOption);\n return validateIndex(index, options);\n};\n\nconst arrowProps = {\n buttonType: 'text',\n fluidHeight: true,\n fluidWidth: true,\n size: 's',\n};\n\nexport default class PickerPanel extends Component {\n computeContainerTranslation = memoizeOne((index) => {\n const { options, valueProperty } = this.props;\n const { selectedOption, scrolling } = this.state;\n\n const selectedOptionIndex = index || getOptionIndex(options, selectedOption, valueProperty);\n const listYPosition = this.minYListPosition - selectedOptionIndex * this.optionHeight;\n\n if (this.scrollHandler && !scrolling) this.scrollHandler.updatePosition(listYPosition);\n\n return listYPosition;\n });\n\n constructor(props) {\n super(props);\n this.pickerListContainerRef = React.createRef();\n this.pickerListRef = React.createRef();\n this.pickerItemRef = React.createRef();\n this.selectedOptionRef = React.createRef();\n\n this.state = {\n selectedOption: props.selected,\n activeIndex: 0,\n // eslint-disable-next-line react/no-unused-state\n prevProps: {},\n };\n }\n\n componentDidMount() {\n this.computeSizes();\n const pickerListContainerEl = this.pickerListContainerRef.current;\n const pickerListEl = this.pickerListRef.current;\n\n this.scrollHandler = new MoveElementOnScroll(pickerListEl, {\n container: pickerListContainerEl,\n min: -this.minYListPosition,\n max: this.maxYListPosition,\n onUpdate: (pos, delta) => {\n const { options } = this.props;\n const index =\n options.length - -Math.floor((pos - this.maxYListPosition) / this.optionHeight) + (delta > 0 ? 1 : -1);\n this.moveTo(index, true);\n },\n onEndScroll: () => {\n this.setState({ scrolling: false });\n },\n });\n this.computeContainerTranslation();\n }\n\n componentWillUnmount() {\n this.scrollHandler.unsubscribe();\n }\n\n static getDerivedStateFromProps(nextProps, { prevProps }) {\n const { selected, valueProperty, options } = nextProps;\n if (selected !== prevProps.selected) {\n return {\n selectedOption: selected,\n activeIndex: getOptionIndex(options, selected, valueProperty),\n prevProps: nextProps,\n };\n }\n return null;\n }\n\n getOptionValue(option) {\n const { valueProperty } = this.props;\n return option[valueProperty];\n }\n\n getOptionLabel(option) {\n const { labelProperty } = this.props;\n return option[labelProperty];\n }\n\n computeSizes() {\n const { options, numberItemsOnScreen } = this.props;\n const { offsetHeight: optionHeight } = this.pickerItemRef.current;\n\n this.optionHeight = optionHeight;\n this.listHeight = this.optionHeight * numberItemsOnScreen;\n\n this.minYListPosition = this.listHeight / 2 - this.optionHeight / 2;\n this.maxYListPosition = this.optionHeight * (options.length - Math.ceil(numberItemsOnScreen / 2));\n }\n\n handleOptionSelect(optionValue, index, scrolling) {\n const { onChange } = this.props;\n this.setState(\n (state) => ({\n ...state,\n scrolling,\n selectedOption: optionValue,\n activeIndex: index,\n }),\n () => {\n onChange(optionValue, index);\n },\n );\n }\n\n // TODO: this needs a refactor from de FocusGroup\n // eslint-disable-next-line max-statements\n handleKeyDown(e) {\n const { activeIndex } = this.state;\n const { options } = this.props;\n const [firstColumn, ...restColumns] = document.getElementsByClassName('em-ds-time-picker-panel');\n const [lastColumn] = restColumns.slice(-1);\n const [prev] = document.getElementsByClassName('DayPickerNavigation_button');\n const focusedElement = document.activeElement;\n\n switch (e.key) {\n case 'Home':\n this.moveTo(0);\n break;\n case 'End':\n this.moveTo(options.length - 1);\n break;\n case 'ArrowUp':\n this.moveTo(activeIndex - 1);\n break;\n case 'ArrowDown':\n this.moveTo(activeIndex + 1);\n break;\n case 'Tab': {\n e.preventDefault();\n // If it is DateTimePicker, move focus to prev arrow element\n if (prev && focusedElement === lastColumn) {\n prev.focus();\n } else if (focusedElement === lastColumn) {\n firstColumn.focus();\n } else {\n const position = findIndex(restColumns, focusedElement);\n restColumns[position + 1].focus();\n }\n break;\n }\n default:\n break;\n }\n }\n\n moveTo(index, scrolling) {\n const { options } = this.props;\n const { selectedOption } = this.state;\n const validIndex = validateIndex(index, options);\n const option = options[validIndex];\n const optionValue = this.getOptionValue(option);\n if (selectedOption !== optionValue && option.disabled !== true) {\n this.handleOptionSelect(optionValue, validIndex, scrolling);\n }\n // TO-DO: if date disabled, add nextValidOption selection\n }\n\n handleStepMoveUp() {\n const { activeIndex } = this.state;\n const { arrowStep, options } = this.props;\n const supposedPos = activeIndex - arrowStep;\n const nextPos = supposedPos >= 0 ? supposedPos : activeIndex - 1;\n\n const nextValidOption = options.find((op) => !op.disabled);\n this.moveTo(nextPos, true, nextValidOption);\n }\n\n handleStepMoveDown() {\n const { activeIndex } = this.state;\n const { arrowStep, options } = this.props;\n const supposedPos = activeIndex + arrowStep;\n const nextPos = supposedPos <= options.length ? supposedPos : activeIndex + 1;\n this.moveTo(nextPos);\n }\n\n renderHeader = () => {\n const { header } = this.props;\n\n return <PickerHeader>{header}</PickerHeader>;\n };\n\n render() {\n const { options, hasHeader, type, time, meridiem, disabledTimes } = this.props;\n const { selectedOption, activeIndex, scrolling } = this.state;\n\n const listYPosition = this.computeContainerTranslation(activeIndex);\n\n return (\n <Wrapper>\n {hasHeader && this.renderHeader()}\n <Container classProps={{ scrolling }} onKeyDown={this.handleKeyDown} tabIndex={0}>\n <PickerSelectedOptionSelected innerRef={this.selectedOptionRef}>\n <SelectedCircle />\n </PickerSelectedOptionSelected>\n <ArrowButtonContainer>\n <DSButton\n {...arrowProps}\n aria-label=\"Chevron Up\"\n data-testid={`${type}-chevron-up`}\n disabled={activeIndex <= 0}\n icon={<ChevronSmallUp />}\n onClick={this.handleStepMoveUp}\n tabIndex={-1}\n />\n </ArrowButtonContainer>\n <PickerItemListContainer\n innerRef={this.pickerListContainerRef}\n style={{\n height: this.listHeight,\n }}\n >\n <PickerItemList\n data-testid={`${type}-list`}\n innerRef={this.pickerListRef}\n style={{\n transform: `translateY(${listYPosition}px)`,\n }}\n >\n {options.map((option, index) => {\n const value = this.getOptionValue(option);\n const label = this.getOptionLabel(option);\n let valueFormatted;\n if (meridiem === 'AM') valueFormatted = value;\n else if (meridiem === 'PM' && value === 12) valueFormatted = value;\n else if (meridiem === 'PM') valueFormatted = value + 12;\n\n let disabled = false;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (\n (type === 'hour' && valueFormatted >= from?.hour && valueFormatted < to?.hour) ||\n (type === 'minutes' && value >= from?.min && value < to?.min)\n ) {\n disabled = true;\n }\n if (type === 'minutes' && (time?.hour() > to?.hour || time?.hour() < from?.hour)) {\n disabled = false;\n }\n if (label === 'am' && from?.hour == 0 && to?.hour >= 12) {\n disabled = true;\n }\n if (label === 'pm' && to?.hour == 24) {\n disabled = true;\n }\n }\n\n option.disabled = disabled;\n\n return (\n <PickerItemContainer\n key={value}\n classProps={{\n selected: selectedOption ? value === selectedOption : index === 0,\n disabled,\n }}\n innerRef={this.pickerItemRef}\n onClick={() => {\n if (!disabled) this.handleOptionSelect(value, index);\n }}\n >\n {label}\n </PickerItemContainer>\n );\n })}\n </PickerItemList>\n </PickerItemListContainer>\n <ArrowButtonContainer>\n <DSButton\n {...arrowProps}\n aria-label=\"Chevron Down\"\n data-testid={`${type}-chevron-down`}\n disabled={activeIndex >= options.length - 1}\n icon={<ChevronSmallDown />}\n onClick={this.handleStepMoveDown}\n tabIndex={-1}\n />\n </ArrowButtonContainer>\n </Container>\n </Wrapper>\n );\n }\n}\n\nPickerPanel.defaultProps = {\n valueProperty: 'value',\n labelProperty: 'label',\n numberItemsOnScreen: 5, // this number should be impair\n options: [],\n arrowStep: 1,\n};\n"],"names":["blockName","Container","aggregatedClasses","scrolling","Wrapper","PickerItemListContainer","PickerItemList","PickerHeader","PickerItemContainer","selected","disabled","PickerSelectedOptionSelected","SelectedCircle","ArrowButtonContainer","getOptionIndex","options","selectedOption","valueProperty","index","findIndex","option","validateIndex","arrowProps","buttonType","fluidHeight","fluidWidth","size","PickerPanel","props","computeContainerTranslation","memoizeOne","state","selectedOptionIndex","listYPosition","minYListPosition","optionHeight","scrollHandler","updatePosition","renderHeader","header","React","pickerListContainerRef","createRef","pickerListRef","pickerItemRef","selectedOptionRef","activeIndex","prevProps","computeSizes","pickerListContainerEl","current","pickerListEl","MoveElementOnScroll","container","min","max","maxYListPosition","onUpdate","pos","delta","length","Math","floor","moveTo","onEndScroll","setState","unsubscribe","labelProperty","numberItemsOnScreen","offsetHeight","listHeight","ceil","optionValue","onChange","e","document","getElementsByClassName","firstColumn","restColumns","slice","lastColumn","prev","focusedElement","activeElement","key","preventDefault","focus","position","validIndex","getOptionValue","handleOptionSelect","arrowStep","supposedPos","nextPos","nextValidOption","find","op","hasHeader","type","time","meridiem","disabledTimes","handleKeyDown","DSButton","ChevronSmallUp","handleStepMoveUp","height","transform","map","value","label","getOptionLabel","valueFormatted","from","to","hour","ChevronSmallDown","handleStepMoveDown","nextProps","Component","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PickerPanel.js","sources":["../../src/PickerPanel.tsx"],"sourcesContent":["/* eslint-disable eqeqeq */\n/* eslint-disable react/prop-types */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { findIndex } from 'lodash';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport memoizeOne from 'memoize-one';\nimport { ChevronSmallUp, ChevronSmallDown } from '@elliemae/ds-icons';\nimport DSButton from '@elliemae/ds-button';\nimport { MoveElementOnScroll } from './moveElementOnScroll';\nimport { validateIndex } from './utils';\n\nconst blockName = 'time-picker-panel';\n\nconst Container = aggregatedClasses('div')(blockName, null, ({ scrolling }) => ({ scrolling }));\nconst Wrapper = aggregatedClasses('div')(blockName, 'wrapper');\nconst PickerItemListContainer = aggregatedClasses('div')(blockName, 'item-list-container');\nconst PickerItemList = aggregatedClasses('div')(blockName, 'item-list');\nconst PickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst PickerItemContainer = aggregatedClasses('div')(blockName, 'item', ({ selected, disabled }) => ({\n selected,\n disabled,\n}));\nconst PickerSelectedOptionSelected = aggregatedClasses('div')(blockName, 'selected-container');\nconst SelectedCircle = aggregatedClasses('div')(blockName, 'selected-circle');\nconst ArrowButtonContainer = aggregatedClasses('div')(blockName, 'arrow-container');\n\nconst getOptionIndex = (options, selectedOption, valueProperty = 'value') => {\n const index = options.findIndex((option) => option[valueProperty] === selectedOption);\n return validateIndex(index, options);\n};\n\nconst arrowProps = {\n buttonType: 'text',\n fluidHeight: true,\n fluidWidth: true,\n size: 's',\n};\n\nexport default class PickerPanel extends Component {\n computeContainerTranslation = memoizeOne((index) => {\n const { options, valueProperty } = this.props;\n const { selectedOption, scrolling } = this.state;\n\n const selectedOptionIndex = index || getOptionIndex(options, selectedOption, valueProperty);\n const listYPosition = this.minYListPosition - selectedOptionIndex * this.optionHeight;\n\n if (this.scrollHandler && !scrolling) this.scrollHandler.updatePosition(listYPosition);\n\n return listYPosition;\n });\n\n constructor(props) {\n super(props);\n this.pickerListContainerRef = React.createRef();\n this.pickerListRef = React.createRef();\n this.pickerItemRef = React.createRef();\n this.selectedOptionRef = React.createRef();\n\n this.state = {\n selectedOption: props.selected,\n activeIndex: 0,\n // eslint-disable-next-line react/no-unused-state\n prevProps: {},\n };\n }\n\n componentDidMount() {\n this.computeSizes();\n const pickerListContainerEl = this.pickerListContainerRef.current;\n const pickerListEl = this.pickerListRef.current;\n\n this.scrollHandler = new MoveElementOnScroll(pickerListEl, {\n container: pickerListContainerEl,\n min: -this.minYListPosition,\n max: this.maxYListPosition,\n onUpdate: (pos, delta) => {\n const { options } = this.props;\n const index =\n options.length - -Math.floor((pos - this.maxYListPosition) / this.optionHeight) + (delta > 0 ? 1 : -1);\n this.moveTo(index, true);\n },\n onEndScroll: () => {\n this.setState({ scrolling: false });\n },\n });\n this.computeContainerTranslation();\n }\n\n componentWillUnmount() {\n this.scrollHandler.unsubscribe();\n }\n\n static getDerivedStateFromProps(nextProps, { prevProps }) {\n const { selected, valueProperty, options } = nextProps;\n if (selected !== prevProps.selected) {\n return {\n selectedOption: selected,\n activeIndex: getOptionIndex(options, selected, valueProperty),\n prevProps: nextProps,\n };\n }\n return null;\n }\n\n getOptionValue(option) {\n const { valueProperty } = this.props;\n return option[valueProperty];\n }\n\n getOptionLabel(option) {\n const { labelProperty } = this.props;\n return option[labelProperty];\n }\n\n computeSizes() {\n const { options, numberItemsOnScreen } = this.props;\n const { offsetHeight: optionHeight } = this.pickerItemRef.current;\n\n this.optionHeight = optionHeight;\n this.listHeight = this.optionHeight * numberItemsOnScreen;\n\n this.minYListPosition = this.listHeight / 2 - this.optionHeight / 2;\n this.maxYListPosition = this.optionHeight * (options.length - Math.ceil(numberItemsOnScreen / 2));\n }\n\n handleOptionSelect(optionValue, index, scrolling) {\n const { onChange } = this.props;\n this.setState(\n (state) => ({\n ...state,\n scrolling,\n selectedOption: optionValue,\n activeIndex: index,\n }),\n () => {\n onChange(optionValue, index);\n },\n );\n }\n\n // TODO: this needs a refactor from de FocusGroup\n // eslint-disable-next-line max-statements\n handleKeyDown(e) {\n const { activeIndex } = this.state;\n const { options } = this.props;\n const [firstColumn, ...restColumns] = document.getElementsByClassName('em-ds-time-picker-panel');\n const [lastColumn] = restColumns.slice(-1);\n const [prev] = document.getElementsByClassName('DayPickerNavigation_button');\n const focusedElement = document.activeElement;\n\n switch (e.key) {\n case 'Home':\n this.moveTo(0);\n break;\n case 'End':\n this.moveTo(options.length - 1);\n break;\n case 'ArrowUp':\n this.moveTo(activeIndex - 1);\n break;\n case 'ArrowDown':\n this.moveTo(activeIndex + 1);\n break;\n case 'Tab': {\n e.preventDefault();\n // If it is DateTimePicker, move focus to prev arrow element\n if (prev && focusedElement === lastColumn) {\n prev.focus();\n } else if (focusedElement === lastColumn) {\n firstColumn.focus();\n } else {\n const position = findIndex(restColumns, focusedElement);\n restColumns[position + 1].focus();\n }\n break;\n }\n default:\n break;\n }\n }\n\n moveTo(index, scrolling) {\n const { options } = this.props;\n const { selectedOption } = this.state;\n const validIndex = validateIndex(index, options);\n const option = options[validIndex];\n const optionValue = this.getOptionValue(option);\n if (selectedOption !== optionValue && option.disabled !== true) {\n this.handleOptionSelect(optionValue, validIndex, scrolling);\n }\n // TO-DO: if date disabled, add nextValidOption selection\n }\n\n handleStepMoveUp() {\n const { activeIndex } = this.state;\n const { arrowStep, options } = this.props;\n const supposedPos = activeIndex - arrowStep;\n const nextPos = supposedPos >= 0 ? supposedPos : activeIndex - 1;\n\n const nextValidOption = options.find((op) => !op.disabled);\n this.moveTo(nextPos, true, nextValidOption);\n }\n\n handleStepMoveDown() {\n const { activeIndex } = this.state;\n const { arrowStep, options } = this.props;\n const supposedPos = activeIndex + arrowStep;\n const nextPos = supposedPos <= options.length ? supposedPos : activeIndex + 1;\n this.moveTo(nextPos);\n }\n\n renderHeader = () => {\n const { header } = this.props;\n\n return <PickerHeader>{header}</PickerHeader>;\n };\n\n render() {\n const { options, hasHeader, type, time, meridiem, disabledTimes } = this.props;\n const { selectedOption, activeIndex, scrolling } = this.state;\n\n const listYPosition = this.computeContainerTranslation(activeIndex);\n\n return (\n <Wrapper>\n {hasHeader && this.renderHeader()}\n <Container classProps={{ scrolling }} onKeyDown={this.handleKeyDown} tabIndex={0}>\n <PickerSelectedOptionSelected innerRef={this.selectedOptionRef}>\n <SelectedCircle />\n </PickerSelectedOptionSelected>\n <ArrowButtonContainer>\n <DSButton\n {...arrowProps}\n aria-label=\"Chevron Up\"\n data-testid={`${type}-chevron-up`}\n disabled={activeIndex <= 0}\n icon={<ChevronSmallUp />}\n onClick={this.handleStepMoveUp}\n tabIndex={-1}\n />\n </ArrowButtonContainer>\n <PickerItemListContainer\n innerRef={this.pickerListContainerRef}\n style={{\n height: this.listHeight,\n }}\n >\n <PickerItemList\n data-testid={`${type}-list`}\n innerRef={this.pickerListRef}\n style={{\n transform: `translateY(${listYPosition}px)`,\n }}\n >\n {options.map((option, index) => {\n const value = this.getOptionValue(option);\n const label = this.getOptionLabel(option);\n let valueFormatted;\n if (meridiem === 'AM') valueFormatted = value;\n else if (meridiem === 'PM' && value === 12) valueFormatted = value;\n else if (meridiem === 'PM') valueFormatted = value + 12;\n\n let disabled = false;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (\n (type === 'hour' && valueFormatted >= from?.hour && valueFormatted < to?.hour) ||\n (type === 'minutes' && value >= from?.min && value < to?.min)\n ) {\n disabled = true;\n }\n if (type === 'minutes' && (time?.hour() > to?.hour || time?.hour() < from?.hour)) {\n disabled = false;\n }\n if (label === 'am' && from?.hour == 0 && to?.hour >= 12) {\n disabled = true;\n }\n if (label === 'pm' && to?.hour == 24) {\n disabled = true;\n }\n }\n\n option.disabled = disabled;\n\n return (\n <PickerItemContainer\n key={value}\n classProps={{\n selected: selectedOption ? value === selectedOption : index === 0,\n disabled,\n }}\n innerRef={this.pickerItemRef}\n onClick={() => {\n if (!disabled) this.handleOptionSelect(value, index);\n }}\n >\n {label}\n </PickerItemContainer>\n );\n })}\n </PickerItemList>\n </PickerItemListContainer>\n <ArrowButtonContainer>\n <DSButton\n {...arrowProps}\n aria-label=\"Chevron Down\"\n data-testid={`${type}-chevron-down`}\n disabled={activeIndex >= options.length - 1}\n icon={<ChevronSmallDown />}\n onClick={this.handleStepMoveDown}\n tabIndex={-1}\n />\n </ArrowButtonContainer>\n </Container>\n </Wrapper>\n );\n }\n}\n\nPickerPanel.defaultProps = {\n valueProperty: 'value',\n labelProperty: 'label',\n numberItemsOnScreen: 5, // this number should be impair\n options: [],\n arrowStep: 1,\n};\n"],"names":["blockName","Container","aggregatedClasses","scrolling","Wrapper","PickerItemListContainer","PickerItemList","PickerHeader","PickerItemContainer","selected","disabled","PickerSelectedOptionSelected","SelectedCircle","ArrowButtonContainer","getOptionIndex","options","selectedOption","valueProperty","index","findIndex","option","validateIndex","arrowProps","buttonType","fluidHeight","fluidWidth","size","PickerPanel","props","_classCallCheck","computeContainerTranslation","memoizeOne","state","selectedOptionIndex","listYPosition","minYListPosition","optionHeight","scrollHandler","updatePosition","renderHeader","header","React","pickerListContainerRef","createRef","pickerListRef","pickerItemRef","selectedOptionRef","activeIndex","prevProps","computeSizes","pickerListContainerEl","current","pickerListEl","MoveElementOnScroll","container","min","max","maxYListPosition","onUpdate","pos","delta","length","Math","floor","moveTo","onEndScroll","setState","unsubscribe","labelProperty","numberItemsOnScreen","offsetHeight","listHeight","ceil","optionValue","onChange","e","document","getElementsByClassName","firstColumn","restColumns","slice","lastColumn","prev","focusedElement","activeElement","key","preventDefault","focus","position","validIndex","getOptionValue","handleOptionSelect","arrowStep","supposedPos","nextPos","nextValidOption","find","op","hasHeader","type","time","meridiem","disabledTimes","handleKeyDown","DSButton","ChevronSmallUp","handleStepMoveUp","height","transform","map","value","label","getOptionLabel","valueFormatted","from","to","hour","ChevronSmallDown","handleStepMoveDown","nextProps","Component","defaultProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePickerDropdown.js","sources":["../../src/TimePickerDropdown.tsx"],"sourcesContent":["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 default TimePickerDropdown;\n"],"names":["TimePickerDropdown","disabled","onClick","onOpen","isOpen","menu","zIndex","blockName","placement","React","DSPopper","preventOverflow","enabled","padding","boundariesElement","DSButton","RecentDocuments","propTypes","PropTypes","func","bool","element","string","number"],"mappings":";;;;;;;;;;;;;;;IAMMA,kBAAkB,GAAG,SAArBA,kBAAqB;
|
|
1
|
+
{"version":3,"file":"TimePickerDropdown.js","sources":["../../src/TimePickerDropdown.tsx"],"sourcesContent":["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 default TimePickerDropdown;\n"],"names":["TimePickerDropdown","disabled","onClick","onOpen","isOpen","menu","zIndex","blockName","placement","React","DSPopper","preventOverflow","enabled","padding","boundariesElement","DSButton","RecentDocuments","propTypes","PropTypes","func","bool","element","string","number"],"mappings":";;;;;;;;;;;;;;;IAMMA,kBAAkB,GAAG,SAArBA,kBAAqB;EAAA,yBAAGC,QAAH;MAAGA,QAAH,8BAAc,KAAd;MAAqBC,OAArB,QAAqBA,OAArB;MAA8BC,MAA9B,QAA8BA,MAA9B;MAAsCC,MAAtC,QAAsCA,MAAtC;MAA8CC,IAA9C,QAA8CA,IAA9C;MAAoDC,MAApD,QAAoDA,MAApD;MAA4DC,SAA5D,QAA4DA,SAA5D;MAAuEC,SAAvE,QAAuEA,SAAvE;EAAA,oBACzBC,wCAACC,4BAAD;IACE,SAAS,EAAEH,SADb;IAEE,SAAS,EAAEC,SAFb;IAGE,gBAAgB,EAAEH,IAHpB;IAIE,MAAM,EAAED,MAJV;IAKE,MAAM,EAAED,MALV;IAME,SAAS,EAAE;MACTQ,eAAe,EAAE;QACfC,OAAO,EAAE,IADM;QAEfC,OAAO,EAAE,CAFM;QAGfC,iBAAiB,EAAE;;KAVzB;IAaE,SAAS,EAAE,KAbb;IAcE,gBAAgB,eACdL,wCAACM,4BAAD;MAAU,UAAU,EAAC,WAArB;MAAiC,QAAQ,EAAEd,QAA3C;MAAqD,IAAI,eAAEQ,wCAACO,uBAAD,OAA3D;MAAgF,QAAQ,EAAC,GAAzF;MAA6F,OAAO,EAAEd;MAf1G;IAiBE,MAAM,EAAEI;IAlBe;AAAA;;AAsB3BN,kBAAkB,CAACiB,SAAnB,GAA+B;EAC7Bf,OAAO,EAAEgB,6BAAS,CAACC,IADU;EAE7BhB,MAAM,EAAEe,6BAAS,CAACC,IAFW;EAG7BlB,QAAQ,EAAEiB,6BAAS,CAACE,IAHS;EAI7BhB,MAAM,EAAEc,6BAAS,CAACE,IAJW;EAK7Bf,IAAI,EAAEa,6BAAS,CAACG,OALa;EAM7Bd,SAAS,EAAEW,6BAAS,CAACI,MANQ;EAO7Bd,SAAS,EAAEU,6BAAS,CAACI,MAPQ;EAQ7BhB,MAAM,EAAEY,6BAAS,CAACK;AARW,CAA/B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePickerImpl.js","sources":["../../src/TimePickerImpl.tsx"],"sourcesContent":["/* 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 default TimePickerImpl;\n"],"names":["blockName","TimePickerContainer","aggregatedClasses","DSInputGroup","isMenuOpened","TimePickerImpl","value","onChange","onOpen","format","disabled","hasHeader","hasHeaderDisplay","className","containerProps","placement","zIndex","disabledTimes","minutesInterval","useState","time","setTime","setIsMenuOpened","focusedColumn","setFocusedColumn","timePickerRef","useRef","useEffect","moment","isValid","undefined","window","addEventListener","handleClickOutside","removeEventListener","handleKeyDown","handleChangeFocus","event","key","menuOpenKeys","includes","document","getElementsByClassName","firstColumn","focus","handlePickerChange","newTime","handleInputChange","handleMenuOpen","isOpen","getVisibleTimePanels","memoizeOne","getVisibleTimeByFormat","timePickerBlockName","convertPropToCssClassName","visiblePanels","disabledTimeRange","from","convertTimeString","to","React","e","preventDefault","TimePickerMenu","DSInput","handleChange","restInputProps","TimeInputImpl","propTypes","PropTypes","instanceOf","Date","func","string","bool","object","number"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TimePickerImpl.js","sources":["../../src/TimePickerImpl.tsx"],"sourcesContent":["/* 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 default TimePickerImpl;\n"],"names":["blockName","TimePickerContainer","aggregatedClasses","DSInputGroup","isMenuOpened","TimePickerImpl","value","onChange","onOpen","format","disabled","hasHeader","hasHeaderDisplay","className","containerProps","placement","zIndex","disabledTimes","minutesInterval","useState","time","setTime","setIsMenuOpened","focusedColumn","setFocusedColumn","timePickerRef","useRef","useEffect","moment","isValid","undefined","window","addEventListener","handleClickOutside","removeEventListener","handleKeyDown","handleChangeFocus","event","key","menuOpenKeys","includes","document","getElementsByClassName","firstColumn","focus","handlePickerChange","newTime","handleInputChange","handleMenuOpen","isOpen","getVisibleTimePanels","memoizeOne","getVisibleTimeByFormat","timePickerBlockName","convertPropToCssClassName","visiblePanels","disabledTimeRange","from","convertTimeString","to","React","e","preventDefault","TimePickerMenu","DSInput","handleChange","restInputProps","TimeInputImpl","propTypes","PropTypes","instanceOf","Date","func","string","bool","object","number"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePickerMenu.js","sources":["../../src/TimePickerMenu.tsx"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport moment from 'moment';\nimport { range, addLeadingZeros } from '@elliemae/ds-utilities';\nimport { isAM } from './utils';\nimport PickerPanel from './PickerPanel';\n\nconst blockName = 'time-picker-menu';\n\nconst TimePickerContainer = aggregatedClasses('div')(blockName);\nconst TimePickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst TimePickerPanelContainer = aggregatedClasses('div')(blockName, 'panel-container');\n\nconst generateOption = (format) => (option) => ({\n value: option,\n label: typeof format === 'function' ? format(option) : option,\n});\n\nclass TimePickerMenu extends Component {\n constructor(props) {\n super(props);\n this.state = {\n time: moment(props.time || '', props.format) || moment(),\n };\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.time) {\n return { ...state, time: moment(props.time) };\n }\n return { ...state, time: undefined };\n }\n\n componentDidMount() {\n const { time } = this.state;\n this.setState({ time });\n }\n\n handleMinuteChange(value) {\n const { time } = this.state;\n this.updateTime(time.minute(value));\n }\n\n handleHoursChange(value) {\n const { time } = this.state;\n const { use12Hours } = this.props;\n let nextHour = value;\n if (use12Hours) {\n if (!isAM(time)) {\n nextHour = (value % 12) + 12;\n }\n }\n this.updateTime(time.hour(nextHour));\n }\n\n handleSecondsChange(value) {\n const { time } = this.state;\n this.updateTime(time.second(value));\n }\n\n handleAMPMChange(value) {\n const { time } = this.state;\n const hour = time.hour();\n const nextHour = value.toLowerCase() === 'am' ? hour % 12 : (hour % 12) + 12;\n this.updateTime(time.hour(nextHour));\n }\n\n updateTime(time) {\n const { onTimeChange } = this.props;\n onTimeChange(time);\n this.setState({ time });\n }\n\n renderHoursPanel() {\n const { time } = this.state;\n const { showHours, use12Hours, format, hasHeader, disabledTimes } = this.props;\n if (!showHours) return null;\n\n const hour = time.hour(); // in 24 format\n let selectedHour = use12Hours ? hour % 12 || 12 : hour;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (hour > from.hour && hour < to.hour) {\n if (to.hour < 24) {\n const toFormatted = to.hour % 12 || 12;\n if (selectedHour !== toFormatted) this.handleHoursChange(toFormatted);\n selectedHour = toFormatted;\n } else if (from) {\n selectedHour = (from.hour - 1) % 12 || 12;\n }\n }\n }\n\n const meridiem = hour >= 12 ? 'PM' : 'AM';\n const withLeadingZeros = format.indexOf('hh') > -1;\n const rangeHours = use12Hours ? range(1, 13) : range(24);\n const hoursOptions = rangeHours.map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"hour\"\n time={time}\n meridiem={meridiem}\n hasHeader={hasHeader}\n header=\"H\"\n onChange={this.handleHoursChange}\n options={hoursOptions}\n selected={selectedHour}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderMinutesPanel() {\n const { time } = this.state;\n const { showMinutes, format, hasHeader, disabledTimes, minutesInterval } = this.props;\n if (!showMinutes) return null;\n const withLeadingZeros = format.indexOf('mm') > -1;\n const rangeMinutes = range(0, 60, minutesInterval).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n\n let selectedMinute = time.minute();\n const selectedHour = time.hour();\n\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (selectedHour <= to.hour && selectedHour > from.hour) {\n if (to) {\n if (selectedMinute < to.min) this.handleMinuteChange(to.min);\n } else if (from) {\n if (selectedMinute > from.min) this.handleMinuteChange(from.min - 1);\n }\n } else {\n selectedMinute = time.minute();\n }\n }\n\n return (\n <PickerPanel\n type=\"minutes\"\n time={time}\n hasHeader={hasHeader}\n header=\"M\"\n onChange={this.handleMinuteChange}\n options={rangeMinutes}\n selected={selectedMinute}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderSecondsPanel() {\n const { time } = this.state;\n const { showSeconds, format, hasHeader } = this.props;\n if (!showSeconds) return null;\n const withLeadingZeros = format.indexOf('ss') > -1;\n const rangeSeconds = range(60).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"seconds\"\n hasHeader={hasHeader}\n header=\"S\"\n onChange={this.handleSecondsChange}\n options={rangeSeconds}\n selected={time.second()}\n />\n );\n }\n\n renderAMPMPanel() {\n const { time } = this.state;\n const { use12Hours, hasHeader, disabledTimes } = this.props;\n if (!use12Hours) return null;\n\n let meridiemSelected = !isAM(time) ? 'pm' : 'am';\n if (disabledTimes && disabledTimes.to && meridiemSelected === 'am') {\n meridiemSelected = disabledTimes.to.hour >= 12 ? 'pm' : 'am';\n if (meridiemSelected === 'am' && time.hour() > 12) {\n this.handleAMPMChange('am');\n }\n\n if (meridiemSelected === 'pm' && time.hour() <= 12) {\n this.handleAMPMChange('pm');\n }\n }\n\n return (\n <PickerPanel\n type=\"meridiem\"\n hasHeader={hasHeader}\n header=\"\"\n onChange={this.handleAMPMChange}\n options={[\n { value: 'am', label: 'am' },\n { value: 'pm', label: 'pm' },\n ]}\n selected={meridiemSelected}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderHeader = () => {\n const { time } = this.state;\n return <TimePickerHeader>{time.format('hh:mma')}</TimePickerHeader>;\n };\n\n render() {\n const { hasHeaderDisplay } = this.props;\n\n return (\n <TimePickerContainer>\n {hasHeaderDisplay && this.renderHeader()}\n <TimePickerPanelContainer>\n {this.renderHoursPanel()}\n {this.renderMinutesPanel()}\n {this.renderSecondsPanel()}\n {this.renderAMPMPanel()}\n </TimePickerPanelContainer>\n </TimePickerContainer>\n );\n }\n}\n\nTimePickerMenu.defaultProps = {\n time: moment(),\n hasHeader: false,\n use12Hours: true,\n showSeconds: true,\n showMinutes: true,\n showHours: true,\n disabledTimes: undefined,\n onTimeChange: () => null,\n};\n\nTimePickerMenu.propTypes = {\n /** Time value */\n time: PropTypes.instanceOf(moment),\n /** If the menu has header or not */\n hasHeader: PropTypes.bool,\n /** Whether to use the 12 hours format */\n use12Hours: PropTypes.bool,\n /** Whether show 'seconds' or not */\n showSeconds: PropTypes.bool,\n /** Whether show 'minutes' or not */\n showMinutes: PropTypes.bool,\n /** Whether show 'hours' or not */\n showHours: PropTypes.bool,\n /** Handler when time changes */\n onTimeChange: PropTypes.func,\n disabledTimes: PropTypes.object,\n};\n\nexport { TimePickerMenu };\nexport default TimePickerMenu;\n"],"names":["blockName","TimePickerContainer","aggregatedClasses","TimePickerHeader","TimePickerPanelContainer","generateOption","format","option","value","label","TimePickerMenu","props","renderHeader","time","state","React","moment","setState","updateTime","minute","use12Hours","nextHour","isAM","hour","second","toLowerCase","onTimeChange","showHours","hasHeader","disabledTimes","selectedHour","from","to","toFormatted","handleHoursChange","meridiem","withLeadingZeros","indexOf","rangeHours","range","hoursOptions","map","addLeadingZeros","showMinutes","minutesInterval","rangeMinutes","selectedMinute","min","handleMinuteChange","showSeconds","rangeSeconds","handleSecondsChange","meridiemSelected","handleAMPMChange","hasHeaderDisplay","renderHoursPanel","renderMinutesPanel","renderSecondsPanel","renderAMPMPanel","undefined","Component","defaultProps","propTypes","PropTypes","instanceOf","bool","func","object"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TimePickerMenu.js","sources":["../../src/TimePickerMenu.tsx"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport moment from 'moment';\nimport { range, addLeadingZeros } from '@elliemae/ds-utilities';\nimport { isAM } from './utils';\nimport PickerPanel from './PickerPanel';\n\nconst blockName = 'time-picker-menu';\n\nconst TimePickerContainer = aggregatedClasses('div')(blockName);\nconst TimePickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst TimePickerPanelContainer = aggregatedClasses('div')(blockName, 'panel-container');\n\nconst generateOption = (format) => (option) => ({\n value: option,\n label: typeof format === 'function' ? format(option) : option,\n});\n\nclass TimePickerMenu extends Component {\n constructor(props) {\n super(props);\n this.state = {\n time: moment(props.time || '', props.format) || moment(),\n };\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.time) {\n return { ...state, time: moment(props.time) };\n }\n return { ...state, time: undefined };\n }\n\n componentDidMount() {\n const { time } = this.state;\n this.setState({ time });\n }\n\n handleMinuteChange(value) {\n const { time } = this.state;\n this.updateTime(time.minute(value));\n }\n\n handleHoursChange(value) {\n const { time } = this.state;\n const { use12Hours } = this.props;\n let nextHour = value;\n if (use12Hours) {\n if (!isAM(time)) {\n nextHour = (value % 12) + 12;\n }\n }\n this.updateTime(time.hour(nextHour));\n }\n\n handleSecondsChange(value) {\n const { time } = this.state;\n this.updateTime(time.second(value));\n }\n\n handleAMPMChange(value) {\n const { time } = this.state;\n const hour = time.hour();\n const nextHour = value.toLowerCase() === 'am' ? hour % 12 : (hour % 12) + 12;\n this.updateTime(time.hour(nextHour));\n }\n\n updateTime(time) {\n const { onTimeChange } = this.props;\n onTimeChange(time);\n this.setState({ time });\n }\n\n renderHoursPanel() {\n const { time } = this.state;\n const { showHours, use12Hours, format, hasHeader, disabledTimes } = this.props;\n if (!showHours) return null;\n\n const hour = time.hour(); // in 24 format\n let selectedHour = use12Hours ? hour % 12 || 12 : hour;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (hour > from.hour && hour < to.hour) {\n if (to.hour < 24) {\n const toFormatted = to.hour % 12 || 12;\n if (selectedHour !== toFormatted) this.handleHoursChange(toFormatted);\n selectedHour = toFormatted;\n } else if (from) {\n selectedHour = (from.hour - 1) % 12 || 12;\n }\n }\n }\n\n const meridiem = hour >= 12 ? 'PM' : 'AM';\n const withLeadingZeros = format.indexOf('hh') > -1;\n const rangeHours = use12Hours ? range(1, 13) : range(24);\n const hoursOptions = rangeHours.map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"hour\"\n time={time}\n meridiem={meridiem}\n hasHeader={hasHeader}\n header=\"H\"\n onChange={this.handleHoursChange}\n options={hoursOptions}\n selected={selectedHour}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderMinutesPanel() {\n const { time } = this.state;\n const { showMinutes, format, hasHeader, disabledTimes, minutesInterval } = this.props;\n if (!showMinutes) return null;\n const withLeadingZeros = format.indexOf('mm') > -1;\n const rangeMinutes = range(0, 60, minutesInterval).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n\n let selectedMinute = time.minute();\n const selectedHour = time.hour();\n\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (selectedHour <= to.hour && selectedHour > from.hour) {\n if (to) {\n if (selectedMinute < to.min) this.handleMinuteChange(to.min);\n } else if (from) {\n if (selectedMinute > from.min) this.handleMinuteChange(from.min - 1);\n }\n } else {\n selectedMinute = time.minute();\n }\n }\n\n return (\n <PickerPanel\n type=\"minutes\"\n time={time}\n hasHeader={hasHeader}\n header=\"M\"\n onChange={this.handleMinuteChange}\n options={rangeMinutes}\n selected={selectedMinute}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderSecondsPanel() {\n const { time } = this.state;\n const { showSeconds, format, hasHeader } = this.props;\n if (!showSeconds) return null;\n const withLeadingZeros = format.indexOf('ss') > -1;\n const rangeSeconds = range(60).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"seconds\"\n hasHeader={hasHeader}\n header=\"S\"\n onChange={this.handleSecondsChange}\n options={rangeSeconds}\n selected={time.second()}\n />\n );\n }\n\n renderAMPMPanel() {\n const { time } = this.state;\n const { use12Hours, hasHeader, disabledTimes } = this.props;\n if (!use12Hours) return null;\n\n let meridiemSelected = !isAM(time) ? 'pm' : 'am';\n if (disabledTimes && disabledTimes.to && meridiemSelected === 'am') {\n meridiemSelected = disabledTimes.to.hour >= 12 ? 'pm' : 'am';\n if (meridiemSelected === 'am' && time.hour() > 12) {\n this.handleAMPMChange('am');\n }\n\n if (meridiemSelected === 'pm' && time.hour() <= 12) {\n this.handleAMPMChange('pm');\n }\n }\n\n return (\n <PickerPanel\n type=\"meridiem\"\n hasHeader={hasHeader}\n header=\"\"\n onChange={this.handleAMPMChange}\n options={[\n { value: 'am', label: 'am' },\n { value: 'pm', label: 'pm' },\n ]}\n selected={meridiemSelected}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderHeader = () => {\n const { time } = this.state;\n return <TimePickerHeader>{time.format('hh:mma')}</TimePickerHeader>;\n };\n\n render() {\n const { hasHeaderDisplay } = this.props;\n\n return (\n <TimePickerContainer>\n {hasHeaderDisplay && this.renderHeader()}\n <TimePickerPanelContainer>\n {this.renderHoursPanel()}\n {this.renderMinutesPanel()}\n {this.renderSecondsPanel()}\n {this.renderAMPMPanel()}\n </TimePickerPanelContainer>\n </TimePickerContainer>\n );\n }\n}\n\nTimePickerMenu.defaultProps = {\n time: moment(),\n hasHeader: false,\n use12Hours: true,\n showSeconds: true,\n showMinutes: true,\n showHours: true,\n disabledTimes: undefined,\n onTimeChange: () => null,\n};\n\nTimePickerMenu.propTypes = {\n /** Time value */\n time: PropTypes.instanceOf(moment),\n /** If the menu has header or not */\n hasHeader: PropTypes.bool,\n /** Whether to use the 12 hours format */\n use12Hours: PropTypes.bool,\n /** Whether show 'seconds' or not */\n showSeconds: PropTypes.bool,\n /** Whether show 'minutes' or not */\n showMinutes: PropTypes.bool,\n /** Whether show 'hours' or not */\n showHours: PropTypes.bool,\n /** Handler when time changes */\n onTimeChange: PropTypes.func,\n disabledTimes: PropTypes.object,\n};\n\nexport { TimePickerMenu };\nexport default TimePickerMenu;\n"],"names":["blockName","TimePickerContainer","aggregatedClasses","TimePickerHeader","TimePickerPanelContainer","generateOption","format","option","value","label","TimePickerMenu","props","_classCallCheck","renderHeader","time","state","React","moment","setState","updateTime","minute","use12Hours","nextHour","isAM","hour","second","toLowerCase","onTimeChange","showHours","hasHeader","disabledTimes","selectedHour","from","to","toFormatted","handleHoursChange","meridiem","withLeadingZeros","indexOf","rangeHours","range","hoursOptions","map","addLeadingZeros","showMinutes","minutesInterval","rangeMinutes","selectedMinute","min","handleMinuteChange","showSeconds","rangeSeconds","handleSecondsChange","meridiemSelected","handleAMPMChange","hasHeaderDisplay","renderHoursPanel","renderMinutesPanel","renderSecondsPanel","renderAMPMPanel","undefined","Component","defaultProps","propTypes","PropTypes","instanceOf","bool","func","object"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moveElementOnScroll.js","sources":["../../src/moveElementOnScroll.tsx"],"sourcesContent":["export function MoveElementOnScroll(\n element,\n {\n container,\n min = 0,\n max = element.offsetHeight,\n speed = 1,\n smooth = 2,\n onUpdate = () => null,\n onEndScroll = () => null,\n },\n) {\n let moving = false;\n let pos = min;\n let lastPos = pos;\n\n // todo: move this to utils if we finally need it\n const requestFrame = (function() {\n return (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(func) {\n window.setTimeout(func, 1000 / 50);\n }\n );\n })();\n\n function update() {\n moving = true;\n const delta = (pos - lastPos) / smooth;\n lastPos += delta;\n\n if (Math.abs(delta) > 0.7) {\n requestFrame(() => {\n onUpdate(lastPos, delta);\n update();\n });\n } else {\n onEndScroll(pos);\n moving = false;\n }\n }\n\n function scrolling(e) {\n e.preventDefault(); // disable default scrolling\n let delta = e.delta || e.wheelDelta;\n if (delta === undefined) {\n // for firefox\n delta = -e.detail;\n delta *= 10 * speed;\n }\n\n pos += -delta * speed;\n pos = Math.max(min, Math.min(pos, max)); // limit scrolling\n if (!moving) {\n update();\n }\n }\n\n container.addEventListener('mousewheel', scrolling, false);\n container.addEventListener('DOMMouseScroll', scrolling, false);\n\n return {\n unsubscribe: () => {\n container.removeEventListener('mousewheel', scrolling);\n container.removeEventListener('DOMMouseScroll', scrolling);\n },\n updatePosition: newPos => {\n pos = -newPos;\n lastPos = -pos;\n },\n };\n}\n\nexport default MoveElementOnScroll;\n"],"names":["MoveElementOnScroll","element","container","min","max","offsetHeight","speed","smooth","onUpdate","onEndScroll","moving","pos","lastPos","requestFrame","window","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","func","setTimeout","update","delta","Math","abs","scrolling","e","preventDefault","wheelDelta","undefined","detail","addEventListener","unsubscribe","removeEventListener","updatePosition","newPos"],"mappings":";;;;AAAO,SAASA,mBAAT,CACLC,OADK,QAWL;
|
|
1
|
+
{"version":3,"file":"moveElementOnScroll.js","sources":["../../src/moveElementOnScroll.tsx"],"sourcesContent":["export function MoveElementOnScroll(\n element,\n {\n container,\n min = 0,\n max = element.offsetHeight,\n speed = 1,\n smooth = 2,\n onUpdate = () => null,\n onEndScroll = () => null,\n },\n) {\n let moving = false;\n let pos = min;\n let lastPos = pos;\n\n // todo: move this to utils if we finally need it\n const requestFrame = (function() {\n return (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(func) {\n window.setTimeout(func, 1000 / 50);\n }\n );\n })();\n\n function update() {\n moving = true;\n const delta = (pos - lastPos) / smooth;\n lastPos += delta;\n\n if (Math.abs(delta) > 0.7) {\n requestFrame(() => {\n onUpdate(lastPos, delta);\n update();\n });\n } else {\n onEndScroll(pos);\n moving = false;\n }\n }\n\n function scrolling(e) {\n e.preventDefault(); // disable default scrolling\n let delta = e.delta || e.wheelDelta;\n if (delta === undefined) {\n // for firefox\n delta = -e.detail;\n delta *= 10 * speed;\n }\n\n pos += -delta * speed;\n pos = Math.max(min, Math.min(pos, max)); // limit scrolling\n if (!moving) {\n update();\n }\n }\n\n container.addEventListener('mousewheel', scrolling, false);\n container.addEventListener('DOMMouseScroll', scrolling, false);\n\n return {\n unsubscribe: () => {\n container.removeEventListener('mousewheel', scrolling);\n container.removeEventListener('DOMMouseScroll', scrolling);\n },\n updatePosition: newPos => {\n pos = -newPos;\n lastPos = -pos;\n },\n };\n}\n\nexport default MoveElementOnScroll;\n"],"names":["MoveElementOnScroll","element","container","min","max","offsetHeight","speed","smooth","onUpdate","onEndScroll","moving","pos","lastPos","requestFrame","window","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","func","setTimeout","update","delta","Math","abs","scrolling","e","preventDefault","wheelDelta","undefined","detail","addEventListener","unsubscribe","removeEventListener","updatePosition","newPos"],"mappings":";;;;AAAO,SAASA,mBAAT,CACLC,OADK,QAWL;EAAA,IAREC,SAQF,QAREA,SAQF;sBAPEC,GAOF;MAPEA,GAOF,yBAPQ,CAOR;sBANEC,GAMF;MANEA,GAMF,yBANQH,OAAO,CAACI,YAMhB;wBALEC,KAKF;MALEA,KAKF,2BALU,CAKV;yBAJEC,MAIF;MAJEA,MAIF,4BAJW,CAIX;2BAHEC,QAGF;MAHEA,QAGF,8BAHa;IAAA,OAAM,IAAN;GAGb;8BAFEC,WAEF;MAFEA,WAEF,iCAFgB;IAAA,OAAM,IAAN;GAEhB;EACA,IAAIC,MAAM,GAAG,KAAb;EACA,IAAIC,GAAG,GAAGR,GAAV;EACA,IAAIS,OAAO,GAAGD,GAAd,CAHA;;EAMA,IAAME,YAAY,GAAI,YAAW;IAC/B,OACEC,MAAM,CAACC,qBAAP,IACAD,MAAM,CAACE,2BADP,IAEAF,MAAM,CAACG,wBAFP,IAGAH,MAAM,CAACI,sBAHP,IAIAJ,MAAM,CAACK,uBAJP,IAKA,UAASC,IAAT,EAAe;MACbN,MAAM,CAACO,UAAP,CAAkBD,IAAlB,EAAwB,OAAO,EAA/B;KAPJ;GADmB,EAArB;;EAaA,SAASE,MAAT,GAAkB;IAChBZ,MAAM,GAAG,IAAT;IACA,IAAMa,KAAK,GAAG,CAACZ,GAAG,GAAGC,OAAP,IAAkBL,MAAhC;IACAK,OAAO,IAAIW,KAAX;;IAEA,IAAIC,IAAI,CAACC,GAAL,CAASF,KAAT,IAAkB,GAAtB,EAA2B;MACzBV,YAAY,CAAC,YAAM;QACjBL,QAAQ,CAACI,OAAD,EAAUW,KAAV,CAAR;QACAD,MAAM;OAFI,CAAZ;KADF,MAKO;MACLb,WAAW,CAACE,GAAD,CAAX;MACAD,MAAM,GAAG,KAAT;;;;EAIJ,SAASgB,SAAT,CAAmBC,CAAnB,EAAsB;IACpBA,CAAC,CAACC,cAAF,GADoB;;IAEpB,IAAIL,KAAK,GAAGI,CAAC,CAACJ,KAAF,IAAWI,CAAC,CAACE,UAAzB;;IACA,IAAIN,KAAK,KAAKO,SAAd,EAAyB;;MAEvBP,KAAK,GAAG,CAACI,CAAC,CAACI,MAAX;MACAR,KAAK,IAAI,KAAKjB,KAAd;;;IAGFK,GAAG,IAAI,CAACY,KAAD,GAASjB,KAAhB;IACAK,GAAG,GAAGa,IAAI,CAACpB,GAAL,CAASD,GAAT,EAAcqB,IAAI,CAACrB,GAAL,CAASQ,GAAT,EAAcP,GAAd,CAAd,CAAN,CAVoB;;IAWpB,IAAI,CAACM,MAAL,EAAa;MACXY,MAAM;;;;EAIVpB,SAAS,CAAC8B,gBAAV,CAA2B,YAA3B,EAAyCN,SAAzC,EAAoD,KAApD;EACAxB,SAAS,CAAC8B,gBAAV,CAA2B,gBAA3B,EAA6CN,SAA7C,EAAwD,KAAxD;EAEA,OAAO;IACLO,WAAW,EAAE,uBAAM;MACjB/B,SAAS,CAACgC,mBAAV,CAA8B,YAA9B,EAA4CR,SAA5C;MACAxB,SAAS,CAACgC,mBAAV,CAA8B,gBAA9B,EAAgDR,SAAhD;KAHG;IAKLS,cAAc,EAAE,wBAAAC,MAAM,EAAI;MACxBzB,GAAG,GAAG,CAACyB,MAAP;MACAxB,OAAO,GAAG,CAACD,GAAX;;GAPJ;AAUD;;;;;"}
|
package/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/utils.tsx"],"sourcesContent":["export const validateIndex = (index, options) => {\n if (index < 0) return 0;\n if (index >= options.length) return options.length - 1;\n return index;\n};\n\nexport const getOptionIndex = (\n options,\n selectedOption,\n valueProperty = 'value',\n) => {\n const index = options.findIndex(\n (option) => option[valueProperty] === selectedOption,\n );\n return validateIndex(index, options);\n};\n\nexport const isAM = (time) => time && time.hour() < 12;\n\nexport const convertTimeString = (string) => {\n if (!string) return null;\n let meridiem = 'AM';\n if (string.toUpperCase().includes('PM')) meridiem = 'PM';\n\n const arr = string.split(':');\n let hour = parseInt(arr[0], 10);\n if (meridiem === 'PM' && hour !== 12) hour += 12; // formats to 24\n if (meridiem === 'AM' && hour === 12) hour = 0;\n if (meridiem === 'PM' && hour === 12) hour = 12;\n\n const min = parseInt(arr[1], 10);\n const sec = parseInt(arr[2], 10);\n\n return {\n hour,\n min,\n sec,\n };\n};\n"],"names":["validateIndex","index","options","length","getOptionIndex","selectedOption","valueProperty","findIndex","option","isAM","time","hour","convertTimeString","string","meridiem","toUpperCase","includes","arr","split","parseInt","min","sec"],"mappings":";;;;IAAaA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAQC,OAAR,EAAoB;
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/utils.tsx"],"sourcesContent":["export const validateIndex = (index, options) => {\n if (index < 0) return 0;\n if (index >= options.length) return options.length - 1;\n return index;\n};\n\nexport const getOptionIndex = (\n options,\n selectedOption,\n valueProperty = 'value',\n) => {\n const index = options.findIndex(\n (option) => option[valueProperty] === selectedOption,\n );\n return validateIndex(index, options);\n};\n\nexport const isAM = (time) => time && time.hour() < 12;\n\nexport const convertTimeString = (string) => {\n if (!string) return null;\n let meridiem = 'AM';\n if (string.toUpperCase().includes('PM')) meridiem = 'PM';\n\n const arr = string.split(':');\n let hour = parseInt(arr[0], 10);\n if (meridiem === 'PM' && hour !== 12) hour += 12; // formats to 24\n if (meridiem === 'AM' && hour === 12) hour = 0;\n if (meridiem === 'PM' && hour === 12) hour = 12;\n\n const min = parseInt(arr[1], 10);\n const sec = parseInt(arr[2], 10);\n\n return {\n hour,\n min,\n sec,\n };\n};\n"],"names":["validateIndex","index","options","length","getOptionIndex","selectedOption","valueProperty","findIndex","option","isAM","time","hour","convertTimeString","string","meridiem","toUpperCase","includes","arr","split","parseInt","min","sec"],"mappings":";;;;IAAaA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAQC,OAAR,EAAoB;EAC/C,IAAID,KAAK,GAAG,CAAZ,EAAe,OAAO,CAAP;EACf,IAAIA,KAAK,IAAIC,OAAO,CAACC,MAArB,EAA6B,OAAOD,OAAO,CAACC,MAAR,GAAiB,CAAxB;EAC7B,OAAOF,KAAP;AACD;IAEYG,cAAc,GAAG,SAAjBA,cAAiB,CAC5BF,OAD4B,EAE5BG,cAF4B,EAIzB;EAAA,IADHC,aACG,uEADa,OACb;EACH,IAAML,KAAK,GAAGC,OAAO,CAACK,SAAR,CACZ,UAACC,MAAD;IAAA,OAAYA,MAAM,CAACF,aAAD,CAAN,KAA0BD,cAAtC;GADY,CAAd;EAGA,OAAOL,aAAa,CAACC,KAAD,EAAQC,OAAR,CAApB;AACD;IAEYO,IAAI,GAAG,SAAPA,IAAO,CAACC,IAAD;EAAA,OAAUA,IAAI,IAAIA,IAAI,CAACC,IAAL,KAAc,EAAhC;AAAA;IAEPC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,MAAD,EAAY;EAC3C,IAAI,CAACA,MAAL,EAAa,OAAO,IAAP;EACb,IAAIC,QAAQ,GAAG,IAAf;EACA,IAAID,MAAM,CAACE,WAAP,GAAqBC,QAArB,CAA8B,IAA9B,CAAJ,EAAyCF,QAAQ,GAAG,IAAX;EAEzC,IAAMG,GAAG,GAAGJ,MAAM,CAACK,KAAP,CAAa,GAAb,CAAZ;EACA,IAAIP,IAAI,GAAGQ,QAAQ,CAACF,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB;EACA,IAAIH,QAAQ,KAAK,IAAb,IAAqBH,IAAI,KAAK,EAAlC,EAAsCA,IAAI,IAAI,EAAR,CAPK;;EAQ3C,IAAIG,QAAQ,KAAK,IAAb,IAAqBH,IAAI,KAAK,EAAlC,EAAsCA,IAAI,GAAG,CAAP;EACtC,IAAIG,QAAQ,KAAK,IAAb,IAAqBH,IAAI,KAAK,EAAlC,EAAsCA,IAAI,GAAG,EAAP;EAEtC,IAAMS,GAAG,GAAGD,QAAQ,CAACF,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAApB;EACA,IAAMI,GAAG,GAAGF,QAAQ,CAACF,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAApB;EAEA,OAAO;IACLN,IAAI,EAAJA,IADK;IAELS,GAAG,EAAHA,GAFK;IAGLC,GAAG,EAAHA;GAHF;AAKD;;;;;;;"}
|
package/esm/DSTimePicker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DSTimePicker.js","sources":["../../src/DSTimePicker.tsx"],"sourcesContent":["import React from 'react';\nimport { PropTypes, describe } from 'react-desc';\nimport Moment from 'moment';\nimport TimePickerImpl from './TimePickerImpl';\n\nconst DSTimePicker = ({\n containerProps = {},\n innerRef,\n className = '',\n disabled = false,\n value = '',\n format,\n style = {},\n onChange = () => null,\n onOpen = () => null,\n isOpen = undefined,\n clearable = false,\n hasHeader = true,\n hasHeaderDisplay = false,\n 'aria-label': ariaLabel,\n zIndex = 'auto',\n placement = 'bottom',\n disabledTimes,\n minutesInterval = 1,\n}) => (\n <TimePickerImpl\n ref={innerRef}\n aria-label={ariaLabel}\n className={className}\n clearable={clearable}\n containerProps={containerProps}\n disabled={disabled}\n format={format}\n hasHeader={hasHeader}\n hasHeaderDisplay={hasHeaderDisplay}\n isOpen={isOpen}\n onChange={onChange}\n onOpen={onOpen}\n placement={placement}\n style={style}\n value={value}\n zIndex={zIndex}\n minutesInterval={minutesInterval}\n disabledTimes={disabledTimes}\n />\n);\n\nDSTimePicker.defaultProps = {\n format: 'hh:mm:ss A',\n};\n\nconst props = {\n /** a11y label */\n 'aria-label': PropTypes.string.description('a11y label'),\n /** inject props to time picker wrapper */\n containerProps: PropTypes.object.description(\n 'inject props to time picker wrapper',\n ),\n /** Whether the time picker is disabled or not */\n disabled: PropTypes.bool.description(\n 'Whether the time picker is disabled or not',\n ),\n /** Time picker value */\n value: PropTypes.instanceOf(Moment).description('Time picker value'),\n /** Time format (hh:mm:ss, H:m:s) */\n format: PropTypes.string.description('Time format (hh:mm:ss, H:m:s)'),\n /** toggle header style */\n hasHeader: PropTypes.bool.description('toggle header style'),\n /** toggle header display */\n hasHeaderDisplay: PropTypes.bool.description('toggle header display'),\n /** Handler when time picker value changes */\n onChange: PropTypes.func.description(\n 'Handler when time picker value changes',\n ),\n /** Handler when the time picker menu opens */\n onOpen: PropTypes.func.description('Handler when the time picker menu opens'),\n /** Whether the time picker menu is opened or not */\n isOpen: PropTypes.bool.description(\n 'Whether the time picker menu is opened or not',\n ),\n /** ref for time picker input */\n innerRef: PropTypes.func.description('ref for time picker input'),\n /** Enable to clear the time picker value */\n clearable: PropTypes.bool.description(\n 'Enable to clear the time picker value',\n ),\n /** class for time picker */\n className: PropTypes.string.description('class for time picker'),\n /** style object */\n style: PropTypes.object.description('style object'),\n /** z index for menu */\n zIndex: PropTypes.number.description('z index for menu'),\n /** DSPopper placement */\n placement: PropTypes.string.description('DSPopper placement'),\n /** disabled time */\n disabledTimes: PropTypes.object.description('disabled time'),\n /** steps for the picker */\n minutesInterval: PropTypes.number.description('steps for the picker'),\n};\n\nDSTimePicker.propTypes = props;\nconst DSTimePickerWithSchema = describe(DSTimePicker);\nDSTimePickerWithSchema.propTypes = props;\n\nexport { DSTimePicker, DSTimePickerWithSchema };\nexport default DSTimePicker;\n"],"names":["DSTimePicker","containerProps","innerRef","className","disabled","value","format","style","onChange","onOpen","isOpen","undefined","clearable","hasHeader","hasHeaderDisplay","ariaLabel","zIndex","placement","disabledTimes","minutesInterval","defaultProps","props","PropTypes","string","description","object","bool","instanceOf","Moment","func","number","propTypes","DSTimePickerWithSchema","describe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKMA,YAAY,GAAG,SAAfA,YAAe;
|
|
1
|
+
{"version":3,"file":"DSTimePicker.js","sources":["../../src/DSTimePicker.tsx"],"sourcesContent":["import React from 'react';\nimport { PropTypes, describe } from 'react-desc';\nimport Moment from 'moment';\nimport TimePickerImpl from './TimePickerImpl';\n\nconst DSTimePicker = ({\n containerProps = {},\n innerRef,\n className = '',\n disabled = false,\n value = '',\n format,\n style = {},\n onChange = () => null,\n onOpen = () => null,\n isOpen = undefined,\n clearable = false,\n hasHeader = true,\n hasHeaderDisplay = false,\n 'aria-label': ariaLabel,\n zIndex = 'auto',\n placement = 'bottom',\n disabledTimes,\n minutesInterval = 1,\n}) => (\n <TimePickerImpl\n ref={innerRef}\n aria-label={ariaLabel}\n className={className}\n clearable={clearable}\n containerProps={containerProps}\n disabled={disabled}\n format={format}\n hasHeader={hasHeader}\n hasHeaderDisplay={hasHeaderDisplay}\n isOpen={isOpen}\n onChange={onChange}\n onOpen={onOpen}\n placement={placement}\n style={style}\n value={value}\n zIndex={zIndex}\n minutesInterval={minutesInterval}\n disabledTimes={disabledTimes}\n />\n);\n\nDSTimePicker.defaultProps = {\n format: 'hh:mm:ss A',\n};\n\nconst props = {\n /** a11y label */\n 'aria-label': PropTypes.string.description('a11y label'),\n /** inject props to time picker wrapper */\n containerProps: PropTypes.object.description(\n 'inject props to time picker wrapper',\n ),\n /** Whether the time picker is disabled or not */\n disabled: PropTypes.bool.description(\n 'Whether the time picker is disabled or not',\n ),\n /** Time picker value */\n value: PropTypes.instanceOf(Moment).description('Time picker value'),\n /** Time format (hh:mm:ss, H:m:s) */\n format: PropTypes.string.description('Time format (hh:mm:ss, H:m:s)'),\n /** toggle header style */\n hasHeader: PropTypes.bool.description('toggle header style'),\n /** toggle header display */\n hasHeaderDisplay: PropTypes.bool.description('toggle header display'),\n /** Handler when time picker value changes */\n onChange: PropTypes.func.description(\n 'Handler when time picker value changes',\n ),\n /** Handler when the time picker menu opens */\n onOpen: PropTypes.func.description('Handler when the time picker menu opens'),\n /** Whether the time picker menu is opened or not */\n isOpen: PropTypes.bool.description(\n 'Whether the time picker menu is opened or not',\n ),\n /** ref for time picker input */\n innerRef: PropTypes.func.description('ref for time picker input'),\n /** Enable to clear the time picker value */\n clearable: PropTypes.bool.description(\n 'Enable to clear the time picker value',\n ),\n /** class for time picker */\n className: PropTypes.string.description('class for time picker'),\n /** style object */\n style: PropTypes.object.description('style object'),\n /** z index for menu */\n zIndex: PropTypes.number.description('z index for menu'),\n /** DSPopper placement */\n placement: PropTypes.string.description('DSPopper placement'),\n /** disabled time */\n disabledTimes: PropTypes.object.description('disabled time'),\n /** steps for the picker */\n minutesInterval: PropTypes.number.description('steps for the picker'),\n};\n\nDSTimePicker.propTypes = props;\nconst DSTimePickerWithSchema = describe(DSTimePicker);\nDSTimePickerWithSchema.propTypes = props;\n\nexport { DSTimePicker, DSTimePickerWithSchema };\nexport default DSTimePicker;\n"],"names":["DSTimePicker","containerProps","innerRef","className","disabled","value","format","style","onChange","onOpen","isOpen","undefined","clearable","hasHeader","hasHeaderDisplay","ariaLabel","zIndex","placement","disabledTimes","minutesInterval","defaultProps","props","PropTypes","string","description","object","bool","instanceOf","Moment","func","number","propTypes","DSTimePickerWithSchema","describe"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DSTimePickerMenu.js","sources":["../../src/DSTimePickerMenu.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport TimePickerMenu from './TimePickerMenu';\n\nconst DSTimePickerMenuWrapper = styled.div`\n display: flex;\n height: 18.6rem;\n`;\nfunction DSTimePickerMenu(props) {\n return (\n <DSTimePickerMenuWrapper>\n <TimePickerMenu {...props} />\n </DSTimePickerMenuWrapper>\n );\n}\nexport { DSTimePickerMenu };\nexport default DSTimePickerMenu;\n"],"names":["DSTimePickerMenuWrapper","styled","div","DSTimePickerMenu","props"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,uBAAuB,gBAAGC,MAAM,CAACC,GAAV;
|
|
1
|
+
{"version":3,"file":"DSTimePickerMenu.js","sources":["../../src/DSTimePickerMenu.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport TimePickerMenu from './TimePickerMenu';\n\nconst DSTimePickerMenuWrapper = styled.div`\n display: flex;\n height: 18.6rem;\n`;\nfunction DSTimePickerMenu(props) {\n return (\n <DSTimePickerMenuWrapper>\n <TimePickerMenu {...props} />\n </DSTimePickerMenuWrapper>\n );\n}\nexport { DSTimePickerMenu };\nexport default DSTimePickerMenu;\n"],"names":["DSTimePickerMenuWrapper","styled","div","DSTimePickerMenu","props"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,uBAAuB,gBAAGC,MAAM,CAACC,GAAV;EAAA;AAAA,oCAA7B;;AAIA,SAASC,gBAAT,CAA0BC,KAA1B,EAAiC;EAC/B,oBACE,oBAAC,uBAAD,qBACE,oBAAC,cAAD,EAAoBA,KAApB,CADF,CADF;AAKD;;;;"}
|
package/esm/PickerPanel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerPanel.js","sources":["../../src/PickerPanel.tsx"],"sourcesContent":["/* eslint-disable eqeqeq */\n/* eslint-disable react/prop-types */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { findIndex } from 'lodash';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport memoizeOne from 'memoize-one';\nimport { ChevronSmallUp, ChevronSmallDown } from '@elliemae/ds-icons';\nimport DSButton from '@elliemae/ds-button';\nimport { MoveElementOnScroll } from './moveElementOnScroll';\nimport { validateIndex } from './utils';\n\nconst blockName = 'time-picker-panel';\n\nconst Container = aggregatedClasses('div')(blockName, null, ({ scrolling }) => ({ scrolling }));\nconst Wrapper = aggregatedClasses('div')(blockName, 'wrapper');\nconst PickerItemListContainer = aggregatedClasses('div')(blockName, 'item-list-container');\nconst PickerItemList = aggregatedClasses('div')(blockName, 'item-list');\nconst PickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst PickerItemContainer = aggregatedClasses('div')(blockName, 'item', ({ selected, disabled }) => ({\n selected,\n disabled,\n}));\nconst PickerSelectedOptionSelected = aggregatedClasses('div')(blockName, 'selected-container');\nconst SelectedCircle = aggregatedClasses('div')(blockName, 'selected-circle');\nconst ArrowButtonContainer = aggregatedClasses('div')(blockName, 'arrow-container');\n\nconst getOptionIndex = (options, selectedOption, valueProperty = 'value') => {\n const index = options.findIndex((option) => option[valueProperty] === selectedOption);\n return validateIndex(index, options);\n};\n\nconst arrowProps = {\n buttonType: 'text',\n fluidHeight: true,\n fluidWidth: true,\n size: 's',\n};\n\nexport default class PickerPanel extends Component {\n computeContainerTranslation = memoizeOne((index) => {\n const { options, valueProperty } = this.props;\n const { selectedOption, scrolling } = this.state;\n\n const selectedOptionIndex = index || getOptionIndex(options, selectedOption, valueProperty);\n const listYPosition = this.minYListPosition - selectedOptionIndex * this.optionHeight;\n\n if (this.scrollHandler && !scrolling) this.scrollHandler.updatePosition(listYPosition);\n\n return listYPosition;\n });\n\n constructor(props) {\n super(props);\n this.pickerListContainerRef = React.createRef();\n this.pickerListRef = React.createRef();\n this.pickerItemRef = React.createRef();\n this.selectedOptionRef = React.createRef();\n\n this.state = {\n selectedOption: props.selected,\n activeIndex: 0,\n // eslint-disable-next-line react/no-unused-state\n prevProps: {},\n };\n }\n\n componentDidMount() {\n this.computeSizes();\n const pickerListContainerEl = this.pickerListContainerRef.current;\n const pickerListEl = this.pickerListRef.current;\n\n this.scrollHandler = new MoveElementOnScroll(pickerListEl, {\n container: pickerListContainerEl,\n min: -this.minYListPosition,\n max: this.maxYListPosition,\n onUpdate: (pos, delta) => {\n const { options } = this.props;\n const index =\n options.length - -Math.floor((pos - this.maxYListPosition) / this.optionHeight) + (delta > 0 ? 1 : -1);\n this.moveTo(index, true);\n },\n onEndScroll: () => {\n this.setState({ scrolling: false });\n },\n });\n this.computeContainerTranslation();\n }\n\n componentWillUnmount() {\n this.scrollHandler.unsubscribe();\n }\n\n static getDerivedStateFromProps(nextProps, { prevProps }) {\n const { selected, valueProperty, options } = nextProps;\n if (selected !== prevProps.selected) {\n return {\n selectedOption: selected,\n activeIndex: getOptionIndex(options, selected, valueProperty),\n prevProps: nextProps,\n };\n }\n return null;\n }\n\n getOptionValue(option) {\n const { valueProperty } = this.props;\n return option[valueProperty];\n }\n\n getOptionLabel(option) {\n const { labelProperty } = this.props;\n return option[labelProperty];\n }\n\n computeSizes() {\n const { options, numberItemsOnScreen } = this.props;\n const { offsetHeight: optionHeight } = this.pickerItemRef.current;\n\n this.optionHeight = optionHeight;\n this.listHeight = this.optionHeight * numberItemsOnScreen;\n\n this.minYListPosition = this.listHeight / 2 - this.optionHeight / 2;\n this.maxYListPosition = this.optionHeight * (options.length - Math.ceil(numberItemsOnScreen / 2));\n }\n\n handleOptionSelect(optionValue, index, scrolling) {\n const { onChange } = this.props;\n this.setState(\n (state) => ({\n ...state,\n scrolling,\n selectedOption: optionValue,\n activeIndex: index,\n }),\n () => {\n onChange(optionValue, index);\n },\n );\n }\n\n // TODO: this needs a refactor from de FocusGroup\n // eslint-disable-next-line max-statements\n handleKeyDown(e) {\n const { activeIndex } = this.state;\n const { options } = this.props;\n const [firstColumn, ...restColumns] = document.getElementsByClassName('em-ds-time-picker-panel');\n const [lastColumn] = restColumns.slice(-1);\n const [prev] = document.getElementsByClassName('DayPickerNavigation_button');\n const focusedElement = document.activeElement;\n\n switch (e.key) {\n case 'Home':\n this.moveTo(0);\n break;\n case 'End':\n this.moveTo(options.length - 1);\n break;\n case 'ArrowUp':\n this.moveTo(activeIndex - 1);\n break;\n case 'ArrowDown':\n this.moveTo(activeIndex + 1);\n break;\n case 'Tab': {\n e.preventDefault();\n // If it is DateTimePicker, move focus to prev arrow element\n if (prev && focusedElement === lastColumn) {\n prev.focus();\n } else if (focusedElement === lastColumn) {\n firstColumn.focus();\n } else {\n const position = findIndex(restColumns, focusedElement);\n restColumns[position + 1].focus();\n }\n break;\n }\n default:\n break;\n }\n }\n\n moveTo(index, scrolling) {\n const { options } = this.props;\n const { selectedOption } = this.state;\n const validIndex = validateIndex(index, options);\n const option = options[validIndex];\n const optionValue = this.getOptionValue(option);\n if (selectedOption !== optionValue && option.disabled !== true) {\n this.handleOptionSelect(optionValue, validIndex, scrolling);\n }\n // TO-DO: if date disabled, add nextValidOption selection\n }\n\n handleStepMoveUp() {\n const { activeIndex } = this.state;\n const { arrowStep, options } = this.props;\n const supposedPos = activeIndex - arrowStep;\n const nextPos = supposedPos >= 0 ? supposedPos : activeIndex - 1;\n\n const nextValidOption = options.find((op) => !op.disabled);\n this.moveTo(nextPos, true, nextValidOption);\n }\n\n handleStepMoveDown() {\n const { activeIndex } = this.state;\n const { arrowStep, options } = this.props;\n const supposedPos = activeIndex + arrowStep;\n const nextPos = supposedPos <= options.length ? supposedPos : activeIndex + 1;\n this.moveTo(nextPos);\n }\n\n renderHeader = () => {\n const { header } = this.props;\n\n return <PickerHeader>{header}</PickerHeader>;\n };\n\n render() {\n const { options, hasHeader, type, time, meridiem, disabledTimes } = this.props;\n const { selectedOption, activeIndex, scrolling } = this.state;\n\n const listYPosition = this.computeContainerTranslation(activeIndex);\n\n return (\n <Wrapper>\n {hasHeader && this.renderHeader()}\n <Container classProps={{ scrolling }} onKeyDown={this.handleKeyDown} tabIndex={0}>\n <PickerSelectedOptionSelected innerRef={this.selectedOptionRef}>\n <SelectedCircle />\n </PickerSelectedOptionSelected>\n <ArrowButtonContainer>\n <DSButton\n {...arrowProps}\n aria-label=\"Chevron Up\"\n data-testid={`${type}-chevron-up`}\n disabled={activeIndex <= 0}\n icon={<ChevronSmallUp />}\n onClick={this.handleStepMoveUp}\n tabIndex={-1}\n />\n </ArrowButtonContainer>\n <PickerItemListContainer\n innerRef={this.pickerListContainerRef}\n style={{\n height: this.listHeight,\n }}\n >\n <PickerItemList\n data-testid={`${type}-list`}\n innerRef={this.pickerListRef}\n style={{\n transform: `translateY(${listYPosition}px)`,\n }}\n >\n {options.map((option, index) => {\n const value = this.getOptionValue(option);\n const label = this.getOptionLabel(option);\n let valueFormatted;\n if (meridiem === 'AM') valueFormatted = value;\n else if (meridiem === 'PM' && value === 12) valueFormatted = value;\n else if (meridiem === 'PM') valueFormatted = value + 12;\n\n let disabled = false;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (\n (type === 'hour' && valueFormatted >= from?.hour && valueFormatted < to?.hour) ||\n (type === 'minutes' && value >= from?.min && value < to?.min)\n ) {\n disabled = true;\n }\n if (type === 'minutes' && (time?.hour() > to?.hour || time?.hour() < from?.hour)) {\n disabled = false;\n }\n if (label === 'am' && from?.hour == 0 && to?.hour >= 12) {\n disabled = true;\n }\n if (label === 'pm' && to?.hour == 24) {\n disabled = true;\n }\n }\n\n option.disabled = disabled;\n\n return (\n <PickerItemContainer\n key={value}\n classProps={{\n selected: selectedOption ? value === selectedOption : index === 0,\n disabled,\n }}\n innerRef={this.pickerItemRef}\n onClick={() => {\n if (!disabled) this.handleOptionSelect(value, index);\n }}\n >\n {label}\n </PickerItemContainer>\n );\n })}\n </PickerItemList>\n </PickerItemListContainer>\n <ArrowButtonContainer>\n <DSButton\n {...arrowProps}\n aria-label=\"Chevron Down\"\n data-testid={`${type}-chevron-down`}\n disabled={activeIndex >= options.length - 1}\n icon={<ChevronSmallDown />}\n onClick={this.handleStepMoveDown}\n tabIndex={-1}\n />\n </ArrowButtonContainer>\n </Container>\n </Wrapper>\n );\n }\n}\n\nPickerPanel.defaultProps = {\n valueProperty: 'value',\n labelProperty: 'label',\n numberItemsOnScreen: 5, // this number should be impair\n options: [],\n arrowStep: 1,\n};\n"],"names":["blockName","Container","aggregatedClasses","scrolling","Wrapper","PickerItemListContainer","PickerItemList","PickerHeader","PickerItemContainer","selected","disabled","PickerSelectedOptionSelected","SelectedCircle","ArrowButtonContainer","getOptionIndex","options","selectedOption","valueProperty","index","findIndex","option","validateIndex","arrowProps","buttonType","fluidHeight","fluidWidth","size","PickerPanel","props","computeContainerTranslation","memoizeOne","state","selectedOptionIndex","listYPosition","minYListPosition","optionHeight","scrollHandler","updatePosition","renderHeader","header","pickerListContainerRef","React","createRef","pickerListRef","pickerItemRef","selectedOptionRef","activeIndex","prevProps","computeSizes","pickerListContainerEl","current","pickerListEl","MoveElementOnScroll","container","min","max","maxYListPosition","onUpdate","pos","delta","length","Math","floor","moveTo","onEndScroll","setState","unsubscribe","labelProperty","numberItemsOnScreen","offsetHeight","listHeight","ceil","optionValue","onChange","e","document","getElementsByClassName","firstColumn","restColumns","slice","lastColumn","prev","focusedElement","activeElement","key","preventDefault","focus","position","validIndex","getOptionValue","handleOptionSelect","arrowStep","supposedPos","nextPos","nextValidOption","find","op","hasHeader","type","time","meridiem","disabledTimes","handleKeyDown","handleStepMoveUp","height","transform","map","value","label","getOptionLabel","valueFormatted","from","to","hour","handleStepMoveDown","nextProps","Component","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PickerPanel.js","sources":["../../src/PickerPanel.tsx"],"sourcesContent":["/* eslint-disable eqeqeq */\n/* eslint-disable react/prop-types */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { findIndex } from 'lodash';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport memoizeOne from 'memoize-one';\nimport { ChevronSmallUp, ChevronSmallDown } from '@elliemae/ds-icons';\nimport DSButton from '@elliemae/ds-button';\nimport { MoveElementOnScroll } from './moveElementOnScroll';\nimport { validateIndex } from './utils';\n\nconst blockName = 'time-picker-panel';\n\nconst Container = aggregatedClasses('div')(blockName, null, ({ scrolling }) => ({ scrolling }));\nconst Wrapper = aggregatedClasses('div')(blockName, 'wrapper');\nconst PickerItemListContainer = aggregatedClasses('div')(blockName, 'item-list-container');\nconst PickerItemList = aggregatedClasses('div')(blockName, 'item-list');\nconst PickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst PickerItemContainer = aggregatedClasses('div')(blockName, 'item', ({ selected, disabled }) => ({\n selected,\n disabled,\n}));\nconst PickerSelectedOptionSelected = aggregatedClasses('div')(blockName, 'selected-container');\nconst SelectedCircle = aggregatedClasses('div')(blockName, 'selected-circle');\nconst ArrowButtonContainer = aggregatedClasses('div')(blockName, 'arrow-container');\n\nconst getOptionIndex = (options, selectedOption, valueProperty = 'value') => {\n const index = options.findIndex((option) => option[valueProperty] === selectedOption);\n return validateIndex(index, options);\n};\n\nconst arrowProps = {\n buttonType: 'text',\n fluidHeight: true,\n fluidWidth: true,\n size: 's',\n};\n\nexport default class PickerPanel extends Component {\n computeContainerTranslation = memoizeOne((index) => {\n const { options, valueProperty } = this.props;\n const { selectedOption, scrolling } = this.state;\n\n const selectedOptionIndex = index || getOptionIndex(options, selectedOption, valueProperty);\n const listYPosition = this.minYListPosition - selectedOptionIndex * this.optionHeight;\n\n if (this.scrollHandler && !scrolling) this.scrollHandler.updatePosition(listYPosition);\n\n return listYPosition;\n });\n\n constructor(props) {\n super(props);\n this.pickerListContainerRef = React.createRef();\n this.pickerListRef = React.createRef();\n this.pickerItemRef = React.createRef();\n this.selectedOptionRef = React.createRef();\n\n this.state = {\n selectedOption: props.selected,\n activeIndex: 0,\n // eslint-disable-next-line react/no-unused-state\n prevProps: {},\n };\n }\n\n componentDidMount() {\n this.computeSizes();\n const pickerListContainerEl = this.pickerListContainerRef.current;\n const pickerListEl = this.pickerListRef.current;\n\n this.scrollHandler = new MoveElementOnScroll(pickerListEl, {\n container: pickerListContainerEl,\n min: -this.minYListPosition,\n max: this.maxYListPosition,\n onUpdate: (pos, delta) => {\n const { options } = this.props;\n const index =\n options.length - -Math.floor((pos - this.maxYListPosition) / this.optionHeight) + (delta > 0 ? 1 : -1);\n this.moveTo(index, true);\n },\n onEndScroll: () => {\n this.setState({ scrolling: false });\n },\n });\n this.computeContainerTranslation();\n }\n\n componentWillUnmount() {\n this.scrollHandler.unsubscribe();\n }\n\n static getDerivedStateFromProps(nextProps, { prevProps }) {\n const { selected, valueProperty, options } = nextProps;\n if (selected !== prevProps.selected) {\n return {\n selectedOption: selected,\n activeIndex: getOptionIndex(options, selected, valueProperty),\n prevProps: nextProps,\n };\n }\n return null;\n }\n\n getOptionValue(option) {\n const { valueProperty } = this.props;\n return option[valueProperty];\n }\n\n getOptionLabel(option) {\n const { labelProperty } = this.props;\n return option[labelProperty];\n }\n\n computeSizes() {\n const { options, numberItemsOnScreen } = this.props;\n const { offsetHeight: optionHeight } = this.pickerItemRef.current;\n\n this.optionHeight = optionHeight;\n this.listHeight = this.optionHeight * numberItemsOnScreen;\n\n this.minYListPosition = this.listHeight / 2 - this.optionHeight / 2;\n this.maxYListPosition = this.optionHeight * (options.length - Math.ceil(numberItemsOnScreen / 2));\n }\n\n handleOptionSelect(optionValue, index, scrolling) {\n const { onChange } = this.props;\n this.setState(\n (state) => ({\n ...state,\n scrolling,\n selectedOption: optionValue,\n activeIndex: index,\n }),\n () => {\n onChange(optionValue, index);\n },\n );\n }\n\n // TODO: this needs a refactor from de FocusGroup\n // eslint-disable-next-line max-statements\n handleKeyDown(e) {\n const { activeIndex } = this.state;\n const { options } = this.props;\n const [firstColumn, ...restColumns] = document.getElementsByClassName('em-ds-time-picker-panel');\n const [lastColumn] = restColumns.slice(-1);\n const [prev] = document.getElementsByClassName('DayPickerNavigation_button');\n const focusedElement = document.activeElement;\n\n switch (e.key) {\n case 'Home':\n this.moveTo(0);\n break;\n case 'End':\n this.moveTo(options.length - 1);\n break;\n case 'ArrowUp':\n this.moveTo(activeIndex - 1);\n break;\n case 'ArrowDown':\n this.moveTo(activeIndex + 1);\n break;\n case 'Tab': {\n e.preventDefault();\n // If it is DateTimePicker, move focus to prev arrow element\n if (prev && focusedElement === lastColumn) {\n prev.focus();\n } else if (focusedElement === lastColumn) {\n firstColumn.focus();\n } else {\n const position = findIndex(restColumns, focusedElement);\n restColumns[position + 1].focus();\n }\n break;\n }\n default:\n break;\n }\n }\n\n moveTo(index, scrolling) {\n const { options } = this.props;\n const { selectedOption } = this.state;\n const validIndex = validateIndex(index, options);\n const option = options[validIndex];\n const optionValue = this.getOptionValue(option);\n if (selectedOption !== optionValue && option.disabled !== true) {\n this.handleOptionSelect(optionValue, validIndex, scrolling);\n }\n // TO-DO: if date disabled, add nextValidOption selection\n }\n\n handleStepMoveUp() {\n const { activeIndex } = this.state;\n const { arrowStep, options } = this.props;\n const supposedPos = activeIndex - arrowStep;\n const nextPos = supposedPos >= 0 ? supposedPos : activeIndex - 1;\n\n const nextValidOption = options.find((op) => !op.disabled);\n this.moveTo(nextPos, true, nextValidOption);\n }\n\n handleStepMoveDown() {\n const { activeIndex } = this.state;\n const { arrowStep, options } = this.props;\n const supposedPos = activeIndex + arrowStep;\n const nextPos = supposedPos <= options.length ? supposedPos : activeIndex + 1;\n this.moveTo(nextPos);\n }\n\n renderHeader = () => {\n const { header } = this.props;\n\n return <PickerHeader>{header}</PickerHeader>;\n };\n\n render() {\n const { options, hasHeader, type, time, meridiem, disabledTimes } = this.props;\n const { selectedOption, activeIndex, scrolling } = this.state;\n\n const listYPosition = this.computeContainerTranslation(activeIndex);\n\n return (\n <Wrapper>\n {hasHeader && this.renderHeader()}\n <Container classProps={{ scrolling }} onKeyDown={this.handleKeyDown} tabIndex={0}>\n <PickerSelectedOptionSelected innerRef={this.selectedOptionRef}>\n <SelectedCircle />\n </PickerSelectedOptionSelected>\n <ArrowButtonContainer>\n <DSButton\n {...arrowProps}\n aria-label=\"Chevron Up\"\n data-testid={`${type}-chevron-up`}\n disabled={activeIndex <= 0}\n icon={<ChevronSmallUp />}\n onClick={this.handleStepMoveUp}\n tabIndex={-1}\n />\n </ArrowButtonContainer>\n <PickerItemListContainer\n innerRef={this.pickerListContainerRef}\n style={{\n height: this.listHeight,\n }}\n >\n <PickerItemList\n data-testid={`${type}-list`}\n innerRef={this.pickerListRef}\n style={{\n transform: `translateY(${listYPosition}px)`,\n }}\n >\n {options.map((option, index) => {\n const value = this.getOptionValue(option);\n const label = this.getOptionLabel(option);\n let valueFormatted;\n if (meridiem === 'AM') valueFormatted = value;\n else if (meridiem === 'PM' && value === 12) valueFormatted = value;\n else if (meridiem === 'PM') valueFormatted = value + 12;\n\n let disabled = false;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (\n (type === 'hour' && valueFormatted >= from?.hour && valueFormatted < to?.hour) ||\n (type === 'minutes' && value >= from?.min && value < to?.min)\n ) {\n disabled = true;\n }\n if (type === 'minutes' && (time?.hour() > to?.hour || time?.hour() < from?.hour)) {\n disabled = false;\n }\n if (label === 'am' && from?.hour == 0 && to?.hour >= 12) {\n disabled = true;\n }\n if (label === 'pm' && to?.hour == 24) {\n disabled = true;\n }\n }\n\n option.disabled = disabled;\n\n return (\n <PickerItemContainer\n key={value}\n classProps={{\n selected: selectedOption ? value === selectedOption : index === 0,\n disabled,\n }}\n innerRef={this.pickerItemRef}\n onClick={() => {\n if (!disabled) this.handleOptionSelect(value, index);\n }}\n >\n {label}\n </PickerItemContainer>\n );\n })}\n </PickerItemList>\n </PickerItemListContainer>\n <ArrowButtonContainer>\n <DSButton\n {...arrowProps}\n aria-label=\"Chevron Down\"\n data-testid={`${type}-chevron-down`}\n disabled={activeIndex >= options.length - 1}\n icon={<ChevronSmallDown />}\n onClick={this.handleStepMoveDown}\n tabIndex={-1}\n />\n </ArrowButtonContainer>\n </Container>\n </Wrapper>\n );\n }\n}\n\nPickerPanel.defaultProps = {\n valueProperty: 'value',\n labelProperty: 'label',\n numberItemsOnScreen: 5, // this number should be impair\n options: [],\n arrowStep: 1,\n};\n"],"names":["blockName","Container","aggregatedClasses","scrolling","Wrapper","PickerItemListContainer","PickerItemList","PickerHeader","PickerItemContainer","selected","disabled","PickerSelectedOptionSelected","SelectedCircle","ArrowButtonContainer","getOptionIndex","options","selectedOption","valueProperty","index","findIndex","option","validateIndex","arrowProps","buttonType","fluidHeight","fluidWidth","size","PickerPanel","props","computeContainerTranslation","memoizeOne","state","selectedOptionIndex","listYPosition","minYListPosition","optionHeight","scrollHandler","updatePosition","renderHeader","header","pickerListContainerRef","React","createRef","pickerListRef","pickerItemRef","selectedOptionRef","activeIndex","prevProps","computeSizes","pickerListContainerEl","current","pickerListEl","MoveElementOnScroll","container","min","max","maxYListPosition","onUpdate","pos","delta","length","Math","floor","moveTo","onEndScroll","setState","unsubscribe","labelProperty","numberItemsOnScreen","offsetHeight","listHeight","ceil","optionValue","onChange","e","document","getElementsByClassName","firstColumn","restColumns","slice","lastColumn","prev","focusedElement","activeElement","key","preventDefault","focus","position","validIndex","getOptionValue","handleOptionSelect","arrowStep","supposedPos","nextPos","nextValidOption","find","op","hasHeader","type","time","meridiem","disabledTimes","handleKeyDown","handleStepMoveUp","height","transform","map","value","label","getOptionLabel","valueFormatted","from","to","hour","handleStepMoveDown","nextProps","Component","defaultProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePickerDropdown.js","sources":["../../src/TimePickerDropdown.tsx"],"sourcesContent":["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 default TimePickerDropdown;\n"],"names":["TimePickerDropdown","disabled","onClick","onOpen","isOpen","menu","zIndex","blockName","placement","preventOverflow","enabled","padding","boundariesElement","propTypes","PropTypes","func","bool","element","string","number"],"mappings":";;;;;;IAMMA,kBAAkB,GAAG,SAArBA,kBAAqB;
|
|
1
|
+
{"version":3,"file":"TimePickerDropdown.js","sources":["../../src/TimePickerDropdown.tsx"],"sourcesContent":["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 default TimePickerDropdown;\n"],"names":["TimePickerDropdown","disabled","onClick","onOpen","isOpen","menu","zIndex","blockName","placement","preventOverflow","enabled","padding","boundariesElement","propTypes","PropTypes","func","bool","element","string","number"],"mappings":";;;;;;IAMMA,kBAAkB,GAAG,SAArBA,kBAAqB;EAAA,yBAAGC,QAAH;MAAGA,QAAH,8BAAc,KAAd;MAAqBC,OAArB,QAAqBA,OAArB;MAA8BC,MAA9B,QAA8BA,MAA9B;MAAsCC,MAAtC,QAAsCA,MAAtC;MAA8CC,IAA9C,QAA8CA,IAA9C;MAAoDC,MAApD,QAAoDA,MAApD;MAA4DC,SAA5D,QAA4DA,SAA5D;MAAuEC,SAAvE,QAAuEA,SAAvE;EAAA,oBACzB,oBAAC,QAAD;IACE,SAAS,EAAED,SADb;IAEE,SAAS,EAAEC,SAFb;IAGE,gBAAgB,EAAEH,IAHpB;IAIE,MAAM,EAAED,MAJV;IAKE,MAAM,EAAED,MALV;IAME,SAAS,EAAE;MACTM,eAAe,EAAE;QACfC,OAAO,EAAE,IADM;QAEfC,OAAO,EAAE,CAFM;QAGfC,iBAAiB,EAAE;;KAVzB;IAaE,SAAS,EAAE,KAbb;IAcE,gBAAgB,eACd,oBAAC,QAAD;MAAU,UAAU,EAAC,WAArB;MAAiC,QAAQ,EAAEX,QAA3C;MAAqD,IAAI,eAAE,oBAAC,eAAD,OAA3D;MAAgF,QAAQ,EAAC,GAAzF;MAA6F,OAAO,EAAEC;MAf1G;IAiBE,MAAM,EAAEI;IAlBe;AAAA;;AAsB3BN,kBAAkB,CAACa,SAAnB,GAA+B;EAC7BX,OAAO,EAAEY,SAAS,CAACC,IADU;EAE7BZ,MAAM,EAAEW,SAAS,CAACC,IAFW;EAG7Bd,QAAQ,EAAEa,SAAS,CAACE,IAHS;EAI7BZ,MAAM,EAAEU,SAAS,CAACE,IAJW;EAK7BX,IAAI,EAAES,SAAS,CAACG,OALa;EAM7BV,SAAS,EAAEO,SAAS,CAACI,MANQ;EAO7BV,SAAS,EAAEM,SAAS,CAACI,MAPQ;EAQ7BZ,MAAM,EAAEQ,SAAS,CAACK;AARW,CAA/B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePickerImpl.js","sources":["../../src/TimePickerImpl.tsx"],"sourcesContent":["/* 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 default TimePickerImpl;\n"],"names":["blockName","TimePickerContainer","aggregatedClasses","DSInputGroup","isMenuOpened","TimePickerImpl","value","onChange","onOpen","format","disabled","hasHeader","hasHeaderDisplay","className","containerProps","placement","zIndex","disabledTimes","minutesInterval","useState","time","setTime","setIsMenuOpened","focusedColumn","setFocusedColumn","timePickerRef","useRef","useEffect","moment","isValid","undefined","window","addEventListener","handleClickOutside","removeEventListener","handleKeyDown","handleChangeFocus","event","key","menuOpenKeys","includes","document","getElementsByClassName","firstColumn","focus","handlePickerChange","newTime","handleInputChange","handleMenuOpen","isOpen","getVisibleTimePanels","memoizeOne","getVisibleTimeByFormat","timePickerBlockName","convertPropToCssClassName","visiblePanels","disabledTimeRange","from","convertTimeString","to","e","preventDefault","handleChange","restInputProps","propTypes","PropTypes","instanceOf","Date","func","string","bool","object","number"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TimePickerImpl.js","sources":["../../src/TimePickerImpl.tsx"],"sourcesContent":["/* 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 default TimePickerImpl;\n"],"names":["blockName","TimePickerContainer","aggregatedClasses","DSInputGroup","isMenuOpened","TimePickerImpl","value","onChange","onOpen","format","disabled","hasHeader","hasHeaderDisplay","className","containerProps","placement","zIndex","disabledTimes","minutesInterval","useState","time","setTime","setIsMenuOpened","focusedColumn","setFocusedColumn","timePickerRef","useRef","useEffect","moment","isValid","undefined","window","addEventListener","handleClickOutside","removeEventListener","handleKeyDown","handleChangeFocus","event","key","menuOpenKeys","includes","document","getElementsByClassName","firstColumn","focus","handlePickerChange","newTime","handleInputChange","handleMenuOpen","isOpen","getVisibleTimePanels","memoizeOne","getVisibleTimeByFormat","timePickerBlockName","convertPropToCssClassName","visiblePanels","disabledTimeRange","from","convertTimeString","to","e","preventDefault","handleChange","restInputProps","propTypes","PropTypes","instanceOf","Date","func","string","bool","object","number"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePickerMenu.js","sources":["../../src/TimePickerMenu.tsx"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport moment from 'moment';\nimport { range, addLeadingZeros } from '@elliemae/ds-utilities';\nimport { isAM } from './utils';\nimport PickerPanel from './PickerPanel';\n\nconst blockName = 'time-picker-menu';\n\nconst TimePickerContainer = aggregatedClasses('div')(blockName);\nconst TimePickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst TimePickerPanelContainer = aggregatedClasses('div')(blockName, 'panel-container');\n\nconst generateOption = (format) => (option) => ({\n value: option,\n label: typeof format === 'function' ? format(option) : option,\n});\n\nclass TimePickerMenu extends Component {\n constructor(props) {\n super(props);\n this.state = {\n time: moment(props.time || '', props.format) || moment(),\n };\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.time) {\n return { ...state, time: moment(props.time) };\n }\n return { ...state, time: undefined };\n }\n\n componentDidMount() {\n const { time } = this.state;\n this.setState({ time });\n }\n\n handleMinuteChange(value) {\n const { time } = this.state;\n this.updateTime(time.minute(value));\n }\n\n handleHoursChange(value) {\n const { time } = this.state;\n const { use12Hours } = this.props;\n let nextHour = value;\n if (use12Hours) {\n if (!isAM(time)) {\n nextHour = (value % 12) + 12;\n }\n }\n this.updateTime(time.hour(nextHour));\n }\n\n handleSecondsChange(value) {\n const { time } = this.state;\n this.updateTime(time.second(value));\n }\n\n handleAMPMChange(value) {\n const { time } = this.state;\n const hour = time.hour();\n const nextHour = value.toLowerCase() === 'am' ? hour % 12 : (hour % 12) + 12;\n this.updateTime(time.hour(nextHour));\n }\n\n updateTime(time) {\n const { onTimeChange } = this.props;\n onTimeChange(time);\n this.setState({ time });\n }\n\n renderHoursPanel() {\n const { time } = this.state;\n const { showHours, use12Hours, format, hasHeader, disabledTimes } = this.props;\n if (!showHours) return null;\n\n const hour = time.hour(); // in 24 format\n let selectedHour = use12Hours ? hour % 12 || 12 : hour;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (hour > from.hour && hour < to.hour) {\n if (to.hour < 24) {\n const toFormatted = to.hour % 12 || 12;\n if (selectedHour !== toFormatted) this.handleHoursChange(toFormatted);\n selectedHour = toFormatted;\n } else if (from) {\n selectedHour = (from.hour - 1) % 12 || 12;\n }\n }\n }\n\n const meridiem = hour >= 12 ? 'PM' : 'AM';\n const withLeadingZeros = format.indexOf('hh') > -1;\n const rangeHours = use12Hours ? range(1, 13) : range(24);\n const hoursOptions = rangeHours.map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"hour\"\n time={time}\n meridiem={meridiem}\n hasHeader={hasHeader}\n header=\"H\"\n onChange={this.handleHoursChange}\n options={hoursOptions}\n selected={selectedHour}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderMinutesPanel() {\n const { time } = this.state;\n const { showMinutes, format, hasHeader, disabledTimes, minutesInterval } = this.props;\n if (!showMinutes) return null;\n const withLeadingZeros = format.indexOf('mm') > -1;\n const rangeMinutes = range(0, 60, minutesInterval).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n\n let selectedMinute = time.minute();\n const selectedHour = time.hour();\n\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (selectedHour <= to.hour && selectedHour > from.hour) {\n if (to) {\n if (selectedMinute < to.min) this.handleMinuteChange(to.min);\n } else if (from) {\n if (selectedMinute > from.min) this.handleMinuteChange(from.min - 1);\n }\n } else {\n selectedMinute = time.minute();\n }\n }\n\n return (\n <PickerPanel\n type=\"minutes\"\n time={time}\n hasHeader={hasHeader}\n header=\"M\"\n onChange={this.handleMinuteChange}\n options={rangeMinutes}\n selected={selectedMinute}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderSecondsPanel() {\n const { time } = this.state;\n const { showSeconds, format, hasHeader } = this.props;\n if (!showSeconds) return null;\n const withLeadingZeros = format.indexOf('ss') > -1;\n const rangeSeconds = range(60).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"seconds\"\n hasHeader={hasHeader}\n header=\"S\"\n onChange={this.handleSecondsChange}\n options={rangeSeconds}\n selected={time.second()}\n />\n );\n }\n\n renderAMPMPanel() {\n const { time } = this.state;\n const { use12Hours, hasHeader, disabledTimes } = this.props;\n if (!use12Hours) return null;\n\n let meridiemSelected = !isAM(time) ? 'pm' : 'am';\n if (disabledTimes && disabledTimes.to && meridiemSelected === 'am') {\n meridiemSelected = disabledTimes.to.hour >= 12 ? 'pm' : 'am';\n if (meridiemSelected === 'am' && time.hour() > 12) {\n this.handleAMPMChange('am');\n }\n\n if (meridiemSelected === 'pm' && time.hour() <= 12) {\n this.handleAMPMChange('pm');\n }\n }\n\n return (\n <PickerPanel\n type=\"meridiem\"\n hasHeader={hasHeader}\n header=\"\"\n onChange={this.handleAMPMChange}\n options={[\n { value: 'am', label: 'am' },\n { value: 'pm', label: 'pm' },\n ]}\n selected={meridiemSelected}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderHeader = () => {\n const { time } = this.state;\n return <TimePickerHeader>{time.format('hh:mma')}</TimePickerHeader>;\n };\n\n render() {\n const { hasHeaderDisplay } = this.props;\n\n return (\n <TimePickerContainer>\n {hasHeaderDisplay && this.renderHeader()}\n <TimePickerPanelContainer>\n {this.renderHoursPanel()}\n {this.renderMinutesPanel()}\n {this.renderSecondsPanel()}\n {this.renderAMPMPanel()}\n </TimePickerPanelContainer>\n </TimePickerContainer>\n );\n }\n}\n\nTimePickerMenu.defaultProps = {\n time: moment(),\n hasHeader: false,\n use12Hours: true,\n showSeconds: true,\n showMinutes: true,\n showHours: true,\n disabledTimes: undefined,\n onTimeChange: () => null,\n};\n\nTimePickerMenu.propTypes = {\n /** Time value */\n time: PropTypes.instanceOf(moment),\n /** If the menu has header or not */\n hasHeader: PropTypes.bool,\n /** Whether to use the 12 hours format */\n use12Hours: PropTypes.bool,\n /** Whether show 'seconds' or not */\n showSeconds: PropTypes.bool,\n /** Whether show 'minutes' or not */\n showMinutes: PropTypes.bool,\n /** Whether show 'hours' or not */\n showHours: PropTypes.bool,\n /** Handler when time changes */\n onTimeChange: PropTypes.func,\n disabledTimes: PropTypes.object,\n};\n\nexport { TimePickerMenu };\nexport default TimePickerMenu;\n"],"names":["blockName","TimePickerContainer","aggregatedClasses","TimePickerHeader","TimePickerPanelContainer","generateOption","format","option","value","label","TimePickerMenu","props","renderHeader","time","state","moment","setState","updateTime","minute","use12Hours","nextHour","isAM","hour","second","toLowerCase","onTimeChange","showHours","hasHeader","disabledTimes","selectedHour","from","to","toFormatted","handleHoursChange","meridiem","withLeadingZeros","indexOf","rangeHours","range","hoursOptions","map","addLeadingZeros","showMinutes","minutesInterval","rangeMinutes","selectedMinute","min","handleMinuteChange","showSeconds","rangeSeconds","handleSecondsChange","meridiemSelected","handleAMPMChange","hasHeaderDisplay","renderHoursPanel","renderMinutesPanel","renderSecondsPanel","renderAMPMPanel","undefined","Component","defaultProps","propTypes","PropTypes","instanceOf","bool","func","object"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TimePickerMenu.js","sources":["../../src/TimePickerMenu.tsx"],"sourcesContent":["/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport moment from 'moment';\nimport { range, addLeadingZeros } from '@elliemae/ds-utilities';\nimport { isAM } from './utils';\nimport PickerPanel from './PickerPanel';\n\nconst blockName = 'time-picker-menu';\n\nconst TimePickerContainer = aggregatedClasses('div')(blockName);\nconst TimePickerHeader = aggregatedClasses('div')(blockName, 'header');\nconst TimePickerPanelContainer = aggregatedClasses('div')(blockName, 'panel-container');\n\nconst generateOption = (format) => (option) => ({\n value: option,\n label: typeof format === 'function' ? format(option) : option,\n});\n\nclass TimePickerMenu extends Component {\n constructor(props) {\n super(props);\n this.state = {\n time: moment(props.time || '', props.format) || moment(),\n };\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.time) {\n return { ...state, time: moment(props.time) };\n }\n return { ...state, time: undefined };\n }\n\n componentDidMount() {\n const { time } = this.state;\n this.setState({ time });\n }\n\n handleMinuteChange(value) {\n const { time } = this.state;\n this.updateTime(time.minute(value));\n }\n\n handleHoursChange(value) {\n const { time } = this.state;\n const { use12Hours } = this.props;\n let nextHour = value;\n if (use12Hours) {\n if (!isAM(time)) {\n nextHour = (value % 12) + 12;\n }\n }\n this.updateTime(time.hour(nextHour));\n }\n\n handleSecondsChange(value) {\n const { time } = this.state;\n this.updateTime(time.second(value));\n }\n\n handleAMPMChange(value) {\n const { time } = this.state;\n const hour = time.hour();\n const nextHour = value.toLowerCase() === 'am' ? hour % 12 : (hour % 12) + 12;\n this.updateTime(time.hour(nextHour));\n }\n\n updateTime(time) {\n const { onTimeChange } = this.props;\n onTimeChange(time);\n this.setState({ time });\n }\n\n renderHoursPanel() {\n const { time } = this.state;\n const { showHours, use12Hours, format, hasHeader, disabledTimes } = this.props;\n if (!showHours) return null;\n\n const hour = time.hour(); // in 24 format\n let selectedHour = use12Hours ? hour % 12 || 12 : hour;\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (hour > from.hour && hour < to.hour) {\n if (to.hour < 24) {\n const toFormatted = to.hour % 12 || 12;\n if (selectedHour !== toFormatted) this.handleHoursChange(toFormatted);\n selectedHour = toFormatted;\n } else if (from) {\n selectedHour = (from.hour - 1) % 12 || 12;\n }\n }\n }\n\n const meridiem = hour >= 12 ? 'PM' : 'AM';\n const withLeadingZeros = format.indexOf('hh') > -1;\n const rangeHours = use12Hours ? range(1, 13) : range(24);\n const hoursOptions = rangeHours.map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"hour\"\n time={time}\n meridiem={meridiem}\n hasHeader={hasHeader}\n header=\"H\"\n onChange={this.handleHoursChange}\n options={hoursOptions}\n selected={selectedHour}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderMinutesPanel() {\n const { time } = this.state;\n const { showMinutes, format, hasHeader, disabledTimes, minutesInterval } = this.props;\n if (!showMinutes) return null;\n const withLeadingZeros = format.indexOf('mm') > -1;\n const rangeMinutes = range(0, 60, minutesInterval).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n\n let selectedMinute = time.minute();\n const selectedHour = time.hour();\n\n if (disabledTimes) {\n const { from, to } = disabledTimes;\n if (selectedHour <= to.hour && selectedHour > from.hour) {\n if (to) {\n if (selectedMinute < to.min) this.handleMinuteChange(to.min);\n } else if (from) {\n if (selectedMinute > from.min) this.handleMinuteChange(from.min - 1);\n }\n } else {\n selectedMinute = time.minute();\n }\n }\n\n return (\n <PickerPanel\n type=\"minutes\"\n time={time}\n hasHeader={hasHeader}\n header=\"M\"\n onChange={this.handleMinuteChange}\n options={rangeMinutes}\n selected={selectedMinute}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderSecondsPanel() {\n const { time } = this.state;\n const { showSeconds, format, hasHeader } = this.props;\n if (!showSeconds) return null;\n const withLeadingZeros = format.indexOf('ss') > -1;\n const rangeSeconds = range(60).map(generateOption(withLeadingZeros && addLeadingZeros(2)));\n return (\n <PickerPanel\n type=\"seconds\"\n hasHeader={hasHeader}\n header=\"S\"\n onChange={this.handleSecondsChange}\n options={rangeSeconds}\n selected={time.second()}\n />\n );\n }\n\n renderAMPMPanel() {\n const { time } = this.state;\n const { use12Hours, hasHeader, disabledTimes } = this.props;\n if (!use12Hours) return null;\n\n let meridiemSelected = !isAM(time) ? 'pm' : 'am';\n if (disabledTimes && disabledTimes.to && meridiemSelected === 'am') {\n meridiemSelected = disabledTimes.to.hour >= 12 ? 'pm' : 'am';\n if (meridiemSelected === 'am' && time.hour() > 12) {\n this.handleAMPMChange('am');\n }\n\n if (meridiemSelected === 'pm' && time.hour() <= 12) {\n this.handleAMPMChange('pm');\n }\n }\n\n return (\n <PickerPanel\n type=\"meridiem\"\n hasHeader={hasHeader}\n header=\"\"\n onChange={this.handleAMPMChange}\n options={[\n { value: 'am', label: 'am' },\n { value: 'pm', label: 'pm' },\n ]}\n selected={meridiemSelected}\n disabledTimes={disabledTimes}\n />\n );\n }\n\n renderHeader = () => {\n const { time } = this.state;\n return <TimePickerHeader>{time.format('hh:mma')}</TimePickerHeader>;\n };\n\n render() {\n const { hasHeaderDisplay } = this.props;\n\n return (\n <TimePickerContainer>\n {hasHeaderDisplay && this.renderHeader()}\n <TimePickerPanelContainer>\n {this.renderHoursPanel()}\n {this.renderMinutesPanel()}\n {this.renderSecondsPanel()}\n {this.renderAMPMPanel()}\n </TimePickerPanelContainer>\n </TimePickerContainer>\n );\n }\n}\n\nTimePickerMenu.defaultProps = {\n time: moment(),\n hasHeader: false,\n use12Hours: true,\n showSeconds: true,\n showMinutes: true,\n showHours: true,\n disabledTimes: undefined,\n onTimeChange: () => null,\n};\n\nTimePickerMenu.propTypes = {\n /** Time value */\n time: PropTypes.instanceOf(moment),\n /** If the menu has header or not */\n hasHeader: PropTypes.bool,\n /** Whether to use the 12 hours format */\n use12Hours: PropTypes.bool,\n /** Whether show 'seconds' or not */\n showSeconds: PropTypes.bool,\n /** Whether show 'minutes' or not */\n showMinutes: PropTypes.bool,\n /** Whether show 'hours' or not */\n showHours: PropTypes.bool,\n /** Handler when time changes */\n onTimeChange: PropTypes.func,\n disabledTimes: PropTypes.object,\n};\n\nexport { TimePickerMenu };\nexport default TimePickerMenu;\n"],"names":["blockName","TimePickerContainer","aggregatedClasses","TimePickerHeader","TimePickerPanelContainer","generateOption","format","option","value","label","TimePickerMenu","props","renderHeader","time","state","moment","setState","updateTime","minute","use12Hours","nextHour","isAM","hour","second","toLowerCase","onTimeChange","showHours","hasHeader","disabledTimes","selectedHour","from","to","toFormatted","handleHoursChange","meridiem","withLeadingZeros","indexOf","rangeHours","range","hoursOptions","map","addLeadingZeros","showMinutes","minutesInterval","rangeMinutes","selectedMinute","min","handleMinuteChange","showSeconds","rangeSeconds","handleSecondsChange","meridiemSelected","handleAMPMChange","hasHeaderDisplay","renderHoursPanel","renderMinutesPanel","renderSecondsPanel","renderAMPMPanel","undefined","Component","defaultProps","propTypes","PropTypes","instanceOf","bool","func","object"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moveElementOnScroll.js","sources":["../../src/moveElementOnScroll.tsx"],"sourcesContent":["export function MoveElementOnScroll(\n element,\n {\n container,\n min = 0,\n max = element.offsetHeight,\n speed = 1,\n smooth = 2,\n onUpdate = () => null,\n onEndScroll = () => null,\n },\n) {\n let moving = false;\n let pos = min;\n let lastPos = pos;\n\n // todo: move this to utils if we finally need it\n const requestFrame = (function() {\n return (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(func) {\n window.setTimeout(func, 1000 / 50);\n }\n );\n })();\n\n function update() {\n moving = true;\n const delta = (pos - lastPos) / smooth;\n lastPos += delta;\n\n if (Math.abs(delta) > 0.7) {\n requestFrame(() => {\n onUpdate(lastPos, delta);\n update();\n });\n } else {\n onEndScroll(pos);\n moving = false;\n }\n }\n\n function scrolling(e) {\n e.preventDefault(); // disable default scrolling\n let delta = e.delta || e.wheelDelta;\n if (delta === undefined) {\n // for firefox\n delta = -e.detail;\n delta *= 10 * speed;\n }\n\n pos += -delta * speed;\n pos = Math.max(min, Math.min(pos, max)); // limit scrolling\n if (!moving) {\n update();\n }\n }\n\n container.addEventListener('mousewheel', scrolling, false);\n container.addEventListener('DOMMouseScroll', scrolling, false);\n\n return {\n unsubscribe: () => {\n container.removeEventListener('mousewheel', scrolling);\n container.removeEventListener('DOMMouseScroll', scrolling);\n },\n updatePosition: newPos => {\n pos = -newPos;\n lastPos = -pos;\n },\n };\n}\n\nexport default MoveElementOnScroll;\n"],"names":["MoveElementOnScroll","element","container","min","max","offsetHeight","speed","smooth","onUpdate","onEndScroll","moving","pos","lastPos","requestFrame","window","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","func","setTimeout","update","delta","Math","abs","scrolling","e","preventDefault","wheelDelta","undefined","detail","addEventListener","unsubscribe","removeEventListener","updatePosition","newPos"],"mappings":"AAAO,SAASA,mBAAT,CACLC,OADK,QAWL;
|
|
1
|
+
{"version":3,"file":"moveElementOnScroll.js","sources":["../../src/moveElementOnScroll.tsx"],"sourcesContent":["export function MoveElementOnScroll(\n element,\n {\n container,\n min = 0,\n max = element.offsetHeight,\n speed = 1,\n smooth = 2,\n onUpdate = () => null,\n onEndScroll = () => null,\n },\n) {\n let moving = false;\n let pos = min;\n let lastPos = pos;\n\n // todo: move this to utils if we finally need it\n const requestFrame = (function() {\n return (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(func) {\n window.setTimeout(func, 1000 / 50);\n }\n );\n })();\n\n function update() {\n moving = true;\n const delta = (pos - lastPos) / smooth;\n lastPos += delta;\n\n if (Math.abs(delta) > 0.7) {\n requestFrame(() => {\n onUpdate(lastPos, delta);\n update();\n });\n } else {\n onEndScroll(pos);\n moving = false;\n }\n }\n\n function scrolling(e) {\n e.preventDefault(); // disable default scrolling\n let delta = e.delta || e.wheelDelta;\n if (delta === undefined) {\n // for firefox\n delta = -e.detail;\n delta *= 10 * speed;\n }\n\n pos += -delta * speed;\n pos = Math.max(min, Math.min(pos, max)); // limit scrolling\n if (!moving) {\n update();\n }\n }\n\n container.addEventListener('mousewheel', scrolling, false);\n container.addEventListener('DOMMouseScroll', scrolling, false);\n\n return {\n unsubscribe: () => {\n container.removeEventListener('mousewheel', scrolling);\n container.removeEventListener('DOMMouseScroll', scrolling);\n },\n updatePosition: newPos => {\n pos = -newPos;\n lastPos = -pos;\n },\n };\n}\n\nexport default MoveElementOnScroll;\n"],"names":["MoveElementOnScroll","element","container","min","max","offsetHeight","speed","smooth","onUpdate","onEndScroll","moving","pos","lastPos","requestFrame","window","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","func","setTimeout","update","delta","Math","abs","scrolling","e","preventDefault","wheelDelta","undefined","detail","addEventListener","unsubscribe","removeEventListener","updatePosition","newPos"],"mappings":"AAAO,SAASA,mBAAT,CACLC,OADK,QAWL;EAAA,IAREC,SAQF,QAREA,SAQF;sBAPEC,GAOF;MAPEA,GAOF,yBAPQ,CAOR;sBANEC,GAMF;MANEA,GAMF,yBANQH,OAAO,CAACI,YAMhB;wBALEC,KAKF;MALEA,KAKF,2BALU,CAKV;yBAJEC,MAIF;MAJEA,MAIF,4BAJW,CAIX;2BAHEC,QAGF;MAHEA,QAGF,8BAHa;IAAA,OAAM,IAAN;GAGb;8BAFEC,WAEF;MAFEA,WAEF,iCAFgB;IAAA,OAAM,IAAN;GAEhB;EACA,IAAIC,MAAM,GAAG,KAAb;EACA,IAAIC,GAAG,GAAGR,GAAV;EACA,IAAIS,OAAO,GAAGD,GAAd,CAHA;;EAMA,IAAME,YAAY,GAAI,YAAW;IAC/B,OACEC,MAAM,CAACC,qBAAP,IACAD,MAAM,CAACE,2BADP,IAEAF,MAAM,CAACG,wBAFP,IAGAH,MAAM,CAACI,sBAHP,IAIAJ,MAAM,CAACK,uBAJP,IAKA,UAASC,IAAT,EAAe;MACbN,MAAM,CAACO,UAAP,CAAkBD,IAAlB,EAAwB,OAAO,EAA/B;KAPJ;GADmB,EAArB;;EAaA,SAASE,MAAT,GAAkB;IAChBZ,MAAM,GAAG,IAAT;IACA,IAAMa,KAAK,GAAG,CAACZ,GAAG,GAAGC,OAAP,IAAkBL,MAAhC;IACAK,OAAO,IAAIW,KAAX;;IAEA,IAAIC,IAAI,CAACC,GAAL,CAASF,KAAT,IAAkB,GAAtB,EAA2B;MACzBV,YAAY,CAAC,YAAM;QACjBL,QAAQ,CAACI,OAAD,EAAUW,KAAV,CAAR;QACAD,MAAM;OAFI,CAAZ;KADF,MAKO;MACLb,WAAW,CAACE,GAAD,CAAX;MACAD,MAAM,GAAG,KAAT;;;;EAIJ,SAASgB,SAAT,CAAmBC,CAAnB,EAAsB;IACpBA,CAAC,CAACC,cAAF,GADoB;;IAEpB,IAAIL,KAAK,GAAGI,CAAC,CAACJ,KAAF,IAAWI,CAAC,CAACE,UAAzB;;IACA,IAAIN,KAAK,KAAKO,SAAd,EAAyB;;MAEvBP,KAAK,GAAG,CAACI,CAAC,CAACI,MAAX;MACAR,KAAK,IAAI,KAAKjB,KAAd;;;IAGFK,GAAG,IAAI,CAACY,KAAD,GAASjB,KAAhB;IACAK,GAAG,GAAGa,IAAI,CAACpB,GAAL,CAASD,GAAT,EAAcqB,IAAI,CAACrB,GAAL,CAASQ,GAAT,EAAcP,GAAd,CAAd,CAAN,CAVoB;;IAWpB,IAAI,CAACM,MAAL,EAAa;MACXY,MAAM;;;;EAIVpB,SAAS,CAAC8B,gBAAV,CAA2B,YAA3B,EAAyCN,SAAzC,EAAoD,KAApD;EACAxB,SAAS,CAAC8B,gBAAV,CAA2B,gBAA3B,EAA6CN,SAA7C,EAAwD,KAAxD;EAEA,OAAO;IACLO,WAAW,EAAE,uBAAM;MACjB/B,SAAS,CAACgC,mBAAV,CAA8B,YAA9B,EAA4CR,SAA5C;MACAxB,SAAS,CAACgC,mBAAV,CAA8B,gBAA9B,EAAgDR,SAAhD;KAHG;IAKLS,cAAc,EAAE,wBAAAC,MAAM,EAAI;MACxBzB,GAAG,GAAG,CAACyB,MAAP;MACAxB,OAAO,GAAG,CAACD,GAAX;;GAPJ;AAUD;;;;"}
|
package/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/utils.tsx"],"sourcesContent":["export const validateIndex = (index, options) => {\n if (index < 0) return 0;\n if (index >= options.length) return options.length - 1;\n return index;\n};\n\nexport const getOptionIndex = (\n options,\n selectedOption,\n valueProperty = 'value',\n) => {\n const index = options.findIndex(\n (option) => option[valueProperty] === selectedOption,\n );\n return validateIndex(index, options);\n};\n\nexport const isAM = (time) => time && time.hour() < 12;\n\nexport const convertTimeString = (string) => {\n if (!string) return null;\n let meridiem = 'AM';\n if (string.toUpperCase().includes('PM')) meridiem = 'PM';\n\n const arr = string.split(':');\n let hour = parseInt(arr[0], 10);\n if (meridiem === 'PM' && hour !== 12) hour += 12; // formats to 24\n if (meridiem === 'AM' && hour === 12) hour = 0;\n if (meridiem === 'PM' && hour === 12) hour = 12;\n\n const min = parseInt(arr[1], 10);\n const sec = parseInt(arr[2], 10);\n\n return {\n hour,\n min,\n sec,\n };\n};\n"],"names":["validateIndex","index","options","length","getOptionIndex","selectedOption","valueProperty","findIndex","option","isAM","time","hour","convertTimeString","string","meridiem","toUpperCase","includes","arr","split","parseInt","min","sec"],"mappings":"IAAaA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAQC,OAAR,EAAoB;
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/utils.tsx"],"sourcesContent":["export const validateIndex = (index, options) => {\n if (index < 0) return 0;\n if (index >= options.length) return options.length - 1;\n return index;\n};\n\nexport const getOptionIndex = (\n options,\n selectedOption,\n valueProperty = 'value',\n) => {\n const index = options.findIndex(\n (option) => option[valueProperty] === selectedOption,\n );\n return validateIndex(index, options);\n};\n\nexport const isAM = (time) => time && time.hour() < 12;\n\nexport const convertTimeString = (string) => {\n if (!string) return null;\n let meridiem = 'AM';\n if (string.toUpperCase().includes('PM')) meridiem = 'PM';\n\n const arr = string.split(':');\n let hour = parseInt(arr[0], 10);\n if (meridiem === 'PM' && hour !== 12) hour += 12; // formats to 24\n if (meridiem === 'AM' && hour === 12) hour = 0;\n if (meridiem === 'PM' && hour === 12) hour = 12;\n\n const min = parseInt(arr[1], 10);\n const sec = parseInt(arr[2], 10);\n\n return {\n hour,\n min,\n sec,\n };\n};\n"],"names":["validateIndex","index","options","length","getOptionIndex","selectedOption","valueProperty","findIndex","option","isAM","time","hour","convertTimeString","string","meridiem","toUpperCase","includes","arr","split","parseInt","min","sec"],"mappings":"IAAaA,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAQC,OAAR,EAAoB;EAC/C,IAAID,KAAK,GAAG,CAAZ,EAAe,OAAO,CAAP;EACf,IAAIA,KAAK,IAAIC,OAAO,CAACC,MAArB,EAA6B,OAAOD,OAAO,CAACC,MAAR,GAAiB,CAAxB;EAC7B,OAAOF,KAAP;AACD;IAEYG,cAAc,GAAG,SAAjBA,cAAiB,CAC5BF,OAD4B,EAE5BG,cAF4B,EAIzB;EAAA,IADHC,aACG,uEADa,OACb;EACH,IAAML,KAAK,GAAGC,OAAO,CAACK,SAAR,CACZ,UAACC,MAAD;IAAA,OAAYA,MAAM,CAACF,aAAD,CAAN,KAA0BD,cAAtC;GADY,CAAd;EAGA,OAAOL,aAAa,CAACC,KAAD,EAAQC,OAAR,CAApB;AACD;IAEYO,IAAI,GAAG,SAAPA,IAAO,CAACC,IAAD;EAAA,OAAUA,IAAI,IAAIA,IAAI,CAACC,IAAL,KAAc,EAAhC;AAAA;IAEPC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,MAAD,EAAY;EAC3C,IAAI,CAACA,MAAL,EAAa,OAAO,IAAP;EACb,IAAIC,QAAQ,GAAG,IAAf;EACA,IAAID,MAAM,CAACE,WAAP,GAAqBC,QAArB,CAA8B,IAA9B,CAAJ,EAAyCF,QAAQ,GAAG,IAAX;EAEzC,IAAMG,GAAG,GAAGJ,MAAM,CAACK,KAAP,CAAa,GAAb,CAAZ;EACA,IAAIP,IAAI,GAAGQ,QAAQ,CAACF,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB;EACA,IAAIH,QAAQ,KAAK,IAAb,IAAqBH,IAAI,KAAK,EAAlC,EAAsCA,IAAI,IAAI,EAAR,CAPK;;EAQ3C,IAAIG,QAAQ,KAAK,IAAb,IAAqBH,IAAI,KAAK,EAAlC,EAAsCA,IAAI,GAAG,CAAP;EACtC,IAAIG,QAAQ,KAAK,IAAb,IAAqBH,IAAI,KAAK,EAAlC,EAAsCA,IAAI,GAAG,EAAP;EAEtC,IAAMS,GAAG,GAAGD,QAAQ,CAACF,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAApB;EACA,IAAMI,GAAG,GAAGF,QAAQ,CAACF,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAApB;EAEA,OAAO;IACLN,IAAI,EAAJA,IADK;IAELS,GAAG,EAAHA,GAFK;IAGLC,GAAG,EAAHA;GAHF;AAKD;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-time-picker",
|
|
3
|
-
"version": "1.61.
|
|
3
|
+
"version": "1.61.13",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Ellie Mae - Dim Sum - Time Picker",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
"build": "node ../../scripts/build/build.js"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@elliemae/ds-button": "1.61.
|
|
20
|
-
"@elliemae/ds-classnames": "1.61.
|
|
21
|
-
"@elliemae/ds-form": "1.61.
|
|
22
|
-
"@elliemae/ds-icons": "1.61.
|
|
23
|
-
"@elliemae/ds-popper": "1.61.
|
|
24
|
-
"@elliemae/ds-utilities": "1.61.
|
|
19
|
+
"@elliemae/ds-button": "1.61.13",
|
|
20
|
+
"@elliemae/ds-classnames": "1.61.13",
|
|
21
|
+
"@elliemae/ds-form": "1.61.13",
|
|
22
|
+
"@elliemae/ds-icons": "1.61.13",
|
|
23
|
+
"@elliemae/ds-popper": "1.61.13",
|
|
24
|
+
"@elliemae/ds-utilities": "1.61.13",
|
|
25
25
|
"memoize-one": "~5.1.1",
|
|
26
26
|
"moment": "~2.29.1",
|
|
27
27
|
"prop-types": "~15.7.2",
|