@corva/ui 3.78.0-9 → 3.78.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/MCP_README.md +11 -3
  2. package/cjs-bundle/clients/api/apiCore.js +1 -1
  3. package/cjs-bundle/clients/api/apiCore.js.map +1 -1
  4. package/cjs-bundle/clients/subscriptions/socket-client.v2.js +1 -1
  5. package/cjs-bundle/clients/subscriptions/socket-client.v2.js.map +1 -1
  6. package/cjs-bundle/clients/subscriptions/subscriptions-auth-recovery.js +2 -0
  7. package/cjs-bundle/clients/subscriptions/subscriptions-auth-recovery.js.map +1 -0
  8. package/cjs-bundle/clients/subscriptions/subscriptions-client.dummy.js +1 -1
  9. package/cjs-bundle/clients/subscriptions/subscriptions-client.dummy.js.map +1 -1
  10. package/cjs-bundle/clients/subscriptions/subscriptions-client.factory.js +1 -1
  11. package/cjs-bundle/clients/subscriptions/subscriptions-client.factory.js.map +1 -1
  12. package/cjs-bundle/clients/subscriptions/subscriptions-client.js +1 -1
  13. package/cjs-bundle/clients/subscriptions/subscriptions-client.js.map +1 -1
  14. package/cjs-bundle/components/AssetsMultipleSelector/AssetsMultipleSelector.js.map +1 -1
  15. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
  16. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
  17. package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js +1 -1
  18. package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
  19. package/cjs-bundle/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js +1 -1
  20. package/cjs-bundle/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js.map +1 -1
  21. package/cjs-bundle/componentsV2/ColorPicker/ColorPicker.js +1 -1
  22. package/cjs-bundle/componentsV2/ColorPicker/ColorPicker.js.map +1 -1
  23. package/cjs-bundle/componentsV2/DatePicker/Input/Input.js +1 -1
  24. package/cjs-bundle/componentsV2/DatePicker/Input/Input.js.map +1 -1
  25. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
  26. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
  27. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
  28. package/cjs-bundle/componentsV2/DatePicker/utils.js +1 -1
  29. package/cjs-bundle/componentsV2/DatePicker/utils.js.map +1 -1
  30. package/cjs-bundle/componentsV2/Hotkey/Hotkey.js +1 -1
  31. package/cjs-bundle/componentsV2/Hotkey/Hotkey.js.map +1 -1
  32. package/cjs-bundle/componentsV2/Hotkey/icons/CapsLock.js +2 -0
  33. package/cjs-bundle/componentsV2/Hotkey/icons/CapsLock.js.map +1 -0
  34. package/cjs-bundle/componentsV2/Hotkey/icons/Command.js +1 -1
  35. package/cjs-bundle/componentsV2/Hotkey/icons/Command.js.map +1 -1
  36. package/cjs-bundle/componentsV2/Hotkey/icons/LMB.js +2 -0
  37. package/cjs-bundle/componentsV2/Hotkey/icons/LMB.js.map +1 -0
  38. package/cjs-bundle/componentsV2/Hotkey/icons/MacControl.js +2 -0
  39. package/cjs-bundle/componentsV2/Hotkey/icons/MacControl.js.map +1 -0
  40. package/cjs-bundle/componentsV2/Hotkey/icons/Option.js +1 -1
  41. package/cjs-bundle/componentsV2/Hotkey/icons/Option.js.map +1 -1
  42. package/cjs-bundle/componentsV2/Hotkey/icons/RMB.js +2 -0
  43. package/cjs-bundle/componentsV2/Hotkey/icons/RMB.js.map +1 -0
  44. package/cjs-bundle/componentsV2/Hotkey/icons/Shift.js +1 -1
  45. package/cjs-bundle/componentsV2/Hotkey/icons/Shift.js.map +1 -1
  46. package/cjs-bundle/componentsV2/RadioAndCheckboxIcons/CheckboxIcon.scss.js +1 -1
  47. package/cjs-bundle/componentsV2/RadioAndCheckboxIcons/RadioIcon.scss.js +1 -1
  48. package/cjs-bundle/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.scss.js +1 -1
  49. package/cjs-bundle/icons/customIcons/icons/Search.js.map +1 -1
  50. package/clients/api/apiCore.d.ts +2 -0
  51. package/clients/api/apiCore.d.ts.map +1 -1
  52. package/clients/api/apiCore.js +1 -1
  53. package/clients/api/apiCore.js.map +1 -1
  54. package/clients/subscriptions/__tests__/subscriptions-auth-recovery.test.d.ts +2 -0
  55. package/clients/subscriptions/__tests__/subscriptions-auth-recovery.test.d.ts.map +1 -0
  56. package/clients/subscriptions/socket-client.v2.d.ts +8 -0
  57. package/clients/subscriptions/socket-client.v2.d.ts.map +1 -1
  58. package/clients/subscriptions/socket-client.v2.js +1 -1
  59. package/clients/subscriptions/socket-client.v2.js.map +1 -1
  60. package/clients/subscriptions/subscriptions-auth-recovery.d.ts +53 -0
  61. package/clients/subscriptions/subscriptions-auth-recovery.d.ts.map +1 -0
  62. package/clients/subscriptions/subscriptions-auth-recovery.js +2 -0
  63. package/clients/subscriptions/subscriptions-auth-recovery.js.map +1 -0
  64. package/clients/subscriptions/subscriptions-client.d.ts +6 -1
  65. package/clients/subscriptions/subscriptions-client.d.ts.map +1 -1
  66. package/clients/subscriptions/subscriptions-client.dummy.d.ts +2 -1
  67. package/clients/subscriptions/subscriptions-client.dummy.d.ts.map +1 -1
  68. package/clients/subscriptions/subscriptions-client.dummy.js +1 -1
  69. package/clients/subscriptions/subscriptions-client.dummy.js.map +1 -1
  70. package/clients/subscriptions/subscriptions-client.factory.d.ts +8 -0
  71. package/clients/subscriptions/subscriptions-client.factory.d.ts.map +1 -1
  72. package/clients/subscriptions/subscriptions-client.factory.js +1 -1
  73. package/clients/subscriptions/subscriptions-client.factory.js.map +1 -1
  74. package/clients/subscriptions/subscriptions-client.js +1 -1
  75. package/clients/subscriptions/subscriptions-client.js.map +1 -1
  76. package/clients/subscriptions/types.d.ts +5 -0
  77. package/clients/subscriptions/types.d.ts.map +1 -1
  78. package/components/AssetsMultipleSelector/AssetsMultipleSelector.d.ts.map +1 -1
  79. package/components/AssetsMultipleSelector/AssetsMultipleSelector.js.map +1 -1
  80. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.d.ts.map +1 -1
  81. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
  82. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
  83. package/components/Drillstring/BHAComponentDetail/constants.d.ts +2 -2
  84. package/componentsV2/Autocomplete/Autocomplete.d.ts.map +1 -1
  85. package/componentsV2/Autocomplete/Autocomplete.js +1 -1
  86. package/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
  87. package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.d.ts.map +1 -1
  88. package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js +1 -1
  89. package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js.map +1 -1
  90. package/componentsV2/ColorPicker/ColorPicker.d.ts +3 -0
  91. package/componentsV2/ColorPicker/ColorPicker.d.ts.map +1 -1
  92. package/componentsV2/ColorPicker/ColorPicker.js +1 -1
  93. package/componentsV2/ColorPicker/ColorPicker.js.map +1 -1
  94. package/componentsV2/DatePicker/DatePickerNext.stories.d.ts.map +1 -1
  95. package/componentsV2/DatePicker/Input/Input.js +1 -1
  96. package/componentsV2/DatePicker/Input/Input.js.map +1 -1
  97. package/componentsV2/DatePicker/TimePicker/TimePicker.d.ts.map +1 -1
  98. package/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
  99. package/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
  100. package/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
  101. package/componentsV2/DatePicker/utils.js +1 -1
  102. package/componentsV2/DatePicker/utils.js.map +1 -1
  103. package/componentsV2/Hotkey/Hotkey.d.ts +4 -0
  104. package/componentsV2/Hotkey/Hotkey.d.ts.map +1 -1
  105. package/componentsV2/Hotkey/Hotkey.js +1 -1
  106. package/componentsV2/Hotkey/Hotkey.js.map +1 -1
  107. package/componentsV2/Hotkey/Hotkey.stories.d.ts +1 -0
  108. package/componentsV2/Hotkey/Hotkey.stories.d.ts.map +1 -1
  109. package/componentsV2/Hotkey/icons/CapsLock.d.ts +2 -0
  110. package/componentsV2/Hotkey/icons/CapsLock.d.ts.map +1 -0
  111. package/componentsV2/Hotkey/icons/CapsLock.js +2 -0
  112. package/componentsV2/Hotkey/icons/CapsLock.js.map +1 -0
  113. package/componentsV2/Hotkey/icons/Command.d.ts +1 -1
  114. package/componentsV2/Hotkey/icons/Command.d.ts.map +1 -1
  115. package/componentsV2/Hotkey/icons/Command.js +1 -1
  116. package/componentsV2/Hotkey/icons/Command.js.map +1 -1
  117. package/componentsV2/Hotkey/icons/LMB.d.ts +2 -0
  118. package/componentsV2/Hotkey/icons/LMB.d.ts.map +1 -0
  119. package/componentsV2/Hotkey/icons/LMB.js +2 -0
  120. package/componentsV2/Hotkey/icons/LMB.js.map +1 -0
  121. package/componentsV2/Hotkey/icons/MacControl.d.ts +2 -0
  122. package/componentsV2/Hotkey/icons/MacControl.d.ts.map +1 -0
  123. package/componentsV2/Hotkey/icons/MacControl.js +2 -0
  124. package/componentsV2/Hotkey/icons/MacControl.js.map +1 -0
  125. package/componentsV2/Hotkey/icons/Option.d.ts +1 -1
  126. package/componentsV2/Hotkey/icons/Option.d.ts.map +1 -1
  127. package/componentsV2/Hotkey/icons/Option.js +1 -1
  128. package/componentsV2/Hotkey/icons/Option.js.map +1 -1
  129. package/componentsV2/Hotkey/icons/RMB.d.ts +2 -0
  130. package/componentsV2/Hotkey/icons/RMB.d.ts.map +1 -0
  131. package/componentsV2/Hotkey/icons/RMB.js +2 -0
  132. package/componentsV2/Hotkey/icons/RMB.js.map +1 -0
  133. package/componentsV2/Hotkey/icons/Shift.d.ts +1 -1
  134. package/componentsV2/Hotkey/icons/Shift.d.ts.map +1 -1
  135. package/componentsV2/Hotkey/icons/Shift.js +1 -1
  136. package/componentsV2/Hotkey/icons/Shift.js.map +1 -1
  137. package/componentsV2/Hotkey/icons/index.d.ts +4 -0
  138. package/componentsV2/Hotkey/icons/index.d.ts.map +1 -1
  139. package/componentsV2/Hotkey/index.d.ts +1 -1
  140. package/componentsV2/Hotkey/index.d.ts.map +1 -1
  141. package/componentsV2/RadioAndCheckboxIcons/CheckboxIcon.scss.js +1 -1
  142. package/componentsV2/RadioAndCheckboxIcons/RadioIcon.scss.js +1 -1
  143. package/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.scss.js +1 -1
  144. package/icons/customIcons/icons/Search.d.ts +1 -1
  145. package/icons/customIcons/icons/Search.js.map +1 -1
  146. package/mcp-server/server.mjs +887 -11002
  147. package/package.json +1 -1
  148. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteInput.js","sources":["../../../../src/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.tsx"],"sourcesContent":["import { AutocompleteRenderInputParams } from '@material-ui/lab';\nimport { useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput, TextInputProps } from '../../TextInput';\n\nimport styles from '../Autocomplete.scss';\n\nexport type AutocompleteInputProps = Omit<AutocompleteRenderInputParams, 'size'> &\n TextInputNextProps &\n TextInputProps & {\n // This property is essentially untyped in AutocompleteRenderInputParams\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n inputProps: any;\n loading?: boolean;\n isNext?: boolean;\n };\n\nexport const AutocompleteInput = ({\n inputProps,\n disabled,\n InputProps,\n prefix,\n loading,\n status,\n isNext,\n ...rest\n}: AutocompleteInputProps) => {\n const { label, size, labelPlacement, elementsClassNames, htmlAttributes, readOnly, placeholder } =\n rest;\n const {\n onChange: muiOnChange,\n onBlur,\n onFocus: muiOnFocus,\n onMouseDown,\n ref,\n value,\n } = inputProps;\n\n const onChange = useCallback<Required<TextInputNextProps>['onChange']>(\n (value, _reason, event) => {\n muiOnChange?.(event, value);\n },\n [muiOnChange]\n );\n\n const onChangeOld = useCallback<Required<TextInputProps>['onChange']>(\n (value, event) => {\n muiOnChange?.(event, value);\n },\n [muiOnChange]\n );\n\n const onFocus = useCallback<Required<TextInputNextProps>['onFocus']>(\n event => {\n muiOnFocus(event);\n onMouseDown(event);\n\n // Clearing autoselect on focus for readonly field to cover tab navigation which selects everything by default\n if (readOnly) {\n const input = event.target as HTMLInputElement;\n input.selectionStart = input.selectionEnd;\n }\n },\n [muiOnFocus, onMouseDown, readOnly]\n );\n\n const actualPrefix = (prefix || InputProps.startAdornment) && (\n <>\n {prefix}\n {InputProps.startAdornment}\n </>\n );\n\n const ownElementsClassNames = useMemo<TextInputNextProps['elementsClassNames']>(\n () => ({\n ...elementsClassNames,\n input: classNames(styles.input, elementsClassNames?.input, readOnly && styles.readOnlyInput),\n prefix: classNames(styles.prefix, elementsClassNames?.prefix),\n suffix: classNames(styles.suffix, elementsClassNames?.suffix),\n inputContainer: classNames(styles.inputContainer, elementsClassNames?.inputContainer),\n }),\n [elementsClassNames, readOnly]\n );\n\n if (isNext) {\n return (\n <TextInputNext\n disabled={disabled}\n // InputProps.startAdornment - \"tags\" for multiselect, prefix\n prefix={actualPrefix}\n // InputProps.endAdornment - \"dropdown\" icon, close icon, loader\n suffix={InputProps.endAdornment}\n onBlur={onBlur}\n onChange={onChange}\n onFocus={onFocus}\n inputRef={ref}\n value={value}\n inputContainerRef={InputProps.ref}\n status={loading ? 'loading' : status}\n label={label}\n size={size}\n labelPlacement={labelPlacement}\n elementsClassNames={ownElementsClassNames}\n htmlAttributes={htmlAttributes}\n readOnly={readOnly}\n placeholder={placeholder}\n />\n );\n }\n\n return (\n <TextInput\n disabled={disabled}\n // InputProps.startAdornment - \"tags\" for multiselect, prefix\n prefix={actualPrefix}\n // InputProps.endAdornment - \"dropdown\" icon, close icon, loader\n suffix={InputProps.endAdornment}\n onBlur={onBlur}\n onChange={onChangeOld}\n onFocus={onFocus}\n inputRef={ref}\n value={value}\n ref={InputProps.ref}\n status={loading ? 'loading' : status}\n {...rest}\n />\n );\n};\n"],"names":["AutocompleteInput","_ref","inputProps","disabled","InputProps","prefix","loading","status","isNext","rest","_objectWithoutProperties","_excluded","label","size","labelPlacement","elementsClassNames","htmlAttributes","readOnly","placeholder","muiOnChange","onChange","onBlur","muiOnFocus","onFocus","onMouseDown","ref","value","useCallback","_reason","event","onChangeOld","input","target","selectionStart","selectionEnd","actualPrefix","startAdornment","_jsxs","_Fragment","children","ownElementsClassNames","useMemo","_objectSpread","classNames","styles","readOnlyInput","suffix","inputContainer","_jsx","TextInputNext","endAdornment","inputRef","inputContainerRef","TextInput"],"mappings":"ojCAmBaA,IAAAA,EAAoB,SASHC,GAAA,IAR5BC,IAAAA,WACAC,IAAAA,SACAC,IAAAA,WACAC,IAAAA,OACAC,IAAAA,QACAC,IAAAA,OACAC,IAAAA,OACGC,EAAIC,EAAAT,EAAAU,GAECC,EACNH,EADMG,MAAOC,EACbJ,EADaI,KAAMC,EACnBL,EADmBK,eAAgBC,EACnCN,EADmCM,mBAAoBC,EACvDP,EADuDO,eAAgBC,EACvER,EADuEQ,SAAUC,EACjFT,EADiFS,YAGvEC,EAMRjB,EANFkB,SACAC,EAKEnB,EALFmB,OACSC,EAIPpB,EAJFqB,QACAC,EAGEtB,EAHFsB,YACAC,EAEEvB,EAFFuB,IACAC,EACExB,EADFwB,MAGIN,EAAWO,GACf,SAACD,EAAOE,EAASC,GACfV,SAAAA,EAAcU,EAAOH,EACvB,GACA,CAACP,IAGGW,EAAcH,GAClB,SAACD,EAAOG,GACNV,SAAAA,EAAcU,EAAOH,EACvB,GACA,CAACP,IAGGI,EAAUI,GACd,SAAAE,GAKE,GAJAP,EAAWO,GACXL,EAAYK,GAGRZ,EAAU,CACZ,IAAMc,EAAQF,EAAMG,OACpBD,EAAME,eAAiBF,EAAMG,YAC/B,CACD,GACD,CAACZ,EAAYE,EAAaP,IAGtBkB,GAAgB9B,GAAUD,EAAWgC,iBACzCC,EAAAC,EAAA,CAAAC,SAAA,CACGlC,EACAD,EAAWgC,kBAIVI,EAAwBC,GAC5B,WAAA,OAAAC,EAAAA,EAAA,CAAA,EACK3B,GAAkB,CAAA,EAAA,CACrBgB,MAAOY,EAAWC,EAAOb,MAAOhB,eAAAA,EAAoBgB,MAAOd,GAAY2B,EAAOC,eAC9ExC,OAAQsC,EAAWC,EAAOvC,OAAQU,aAAkB,EAAlBA,EAAoBV,QACtDyC,OAAQH,EAAWC,EAAOE,OAAQ/B,aAAkB,EAAlBA,EAAoB+B,QACtDC,eAAgBJ,EAAWC,EAAOG,eAAgBhC,aAAAA,EAAAA,EAAoBgC,iBAAe,GAEvF,CAAChC,EAAoBE,IAGvB,OAAIT,EAEAwC,EAACC,EAAa,CACZ9C,SAAUA,EAEVE,OAAQ8B,EAERW,OAAQ1C,EAAW8C,aACnB7B,OAAQA,EACRD,SAAUA,EACVG,QAASA,EACT4B,SAAU1B,EACVC,MAAOA,EACP0B,kBAAmBhD,EAAWqB,IAC9BlB,OAAQD,EAAU,UAAYC,EAC9BK,MAAOA,EACPC,KAAMA,EACNC,eAAgBA,EAChBC,mBAAoByB,EACpBxB,eAAgBA,EAChBC,SAAUA,EACVC,YAAaA,IAMjB8B,EAACK,EAASX,EAAA,CACRvC,SAAUA,EAEVE,OAAQ8B,EAERW,OAAQ1C,EAAW8C,aACnB7B,OAAQA,EACRD,SAAUU,EACVP,QAASA,EACT4B,SAAU1B,EACVC,MAAOA,EACPD,IAAKrB,EAAWqB,IAChBlB,OAAQD,EAAU,UAAYC,GAC1BE,GAGV"}
1
+ {"version":3,"file":"AutocompleteInput.js","sources":["../../../../src/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.tsx"],"sourcesContent":["import { AutocompleteRenderInputParams } from '@material-ui/lab';\nimport { useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput, TextInputProps } from '../../TextInput';\n\nimport styles from '../Autocomplete.scss';\n\nexport type AutocompleteInputProps = Omit<AutocompleteRenderInputParams, 'size'> &\n TextInputNextProps &\n TextInputProps & {\n // This property is essentially untyped in AutocompleteRenderInputParams\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n inputProps: any;\n loading?: boolean;\n isNext?: boolean;\n };\n\nexport const AutocompleteInput = ({\n inputProps,\n disabled,\n InputProps,\n prefix,\n loading,\n status,\n isNext,\n ...rest\n}: AutocompleteInputProps) => {\n const {\n label,\n size,\n labelPlacement,\n elementsClassNames,\n htmlAttributes,\n readOnly,\n placeholder,\n onKeyDown,\n onKeyUp,\n } = rest;\n const {\n onChange: muiOnChange,\n onBlur,\n onFocus: muiOnFocus,\n onMouseDown,\n ref,\n value,\n id,\n } = inputProps;\n\n const onChange = useCallback<Required<TextInputNextProps>['onChange']>(\n (value, _reason, event) => {\n muiOnChange?.(event, value);\n },\n [muiOnChange]\n );\n\n const onChangeOld = useCallback<Required<TextInputProps>['onChange']>(\n (value, event) => {\n muiOnChange?.(event, value);\n },\n [muiOnChange]\n );\n\n const onFocus = useCallback<Required<TextInputNextProps>['onFocus']>(\n event => {\n muiOnFocus(event);\n onMouseDown(event);\n\n // Clearing autoselect on focus for readonly field to cover tab navigation which selects everything by default\n if (readOnly) {\n const input = event.target as HTMLInputElement;\n input.selectionStart = input.selectionEnd;\n }\n },\n [muiOnFocus, onMouseDown, readOnly]\n );\n\n const actualPrefix = (prefix || InputProps.startAdornment) && (\n <>\n {prefix}\n {InputProps.startAdornment}\n </>\n );\n\n const ownElementsClassNames = useMemo<TextInputNextProps['elementsClassNames']>(\n () => ({\n ...elementsClassNames,\n input: classNames(styles.input, elementsClassNames?.input, readOnly && styles.readOnlyInput),\n prefix: classNames(styles.prefix, elementsClassNames?.prefix),\n suffix: classNames(styles.suffix, elementsClassNames?.suffix),\n inputContainer: classNames(styles.inputContainer, elementsClassNames?.inputContainer),\n }),\n [elementsClassNames, readOnly]\n );\n\n const fieldHtmlAttributes = useMemo(() => ({ ...htmlAttributes, id }), [htmlAttributes, id]);\n\n if (isNext) {\n return (\n <TextInputNext\n disabled={disabled}\n // InputProps.startAdornment - \"tags\" for multiselect, prefix\n prefix={actualPrefix}\n // InputProps.endAdornment - \"dropdown\" icon, close icon, loader\n suffix={InputProps.endAdornment}\n onBlur={onBlur}\n onChange={onChange}\n onFocus={onFocus}\n inputRef={ref}\n value={value}\n inputContainerRef={InputProps.ref}\n status={loading ? 'loading' : status}\n label={label}\n size={size}\n labelPlacement={labelPlacement}\n elementsClassNames={ownElementsClassNames}\n htmlAttributes={fieldHtmlAttributes}\n readOnly={readOnly}\n placeholder={placeholder}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n />\n );\n }\n\n return (\n <TextInput\n disabled={disabled}\n // InputProps.startAdornment - \"tags\" for multiselect, prefix\n prefix={actualPrefix}\n // InputProps.endAdornment - \"dropdown\" icon, close icon, loader\n suffix={InputProps.endAdornment}\n onBlur={onBlur}\n onChange={onChangeOld}\n onFocus={onFocus}\n inputRef={ref}\n value={value}\n ref={InputProps.ref}\n status={loading ? 'loading' : status}\n {...rest}\n />\n );\n};\n"],"names":["AutocompleteInput","_ref","inputProps","disabled","InputProps","prefix","loading","status","isNext","rest","_objectWithoutProperties","_excluded","label","size","labelPlacement","elementsClassNames","htmlAttributes","readOnly","placeholder","onKeyDown","onKeyUp","muiOnChange","onChange","onBlur","muiOnFocus","onFocus","onMouseDown","ref","value","id","useCallback","_reason","event","onChangeOld","input","target","selectionStart","selectionEnd","actualPrefix","startAdornment","_jsxs","_Fragment","children","ownElementsClassNames","useMemo","_objectSpread","classNames","styles","readOnlyInput","suffix","inputContainer","fieldHtmlAttributes","_jsx","TextInputNext","endAdornment","inputRef","inputContainerRef","TextInput"],"mappings":"ojCAmBaA,IAAAA,EAAoB,SASHC,GAAA,IAR5BC,IAAAA,WACAC,IAAAA,SACAC,IAAAA,WACAC,IAAAA,OACAC,IAAAA,QACAC,IAAAA,OACAC,IAAAA,OACGC,EAAIC,EAAAT,EAAAU,GAGLC,EASEH,EATFG,MACAC,EAQEJ,EARFI,KACAC,EAOEL,EAPFK,eACAC,EAMEN,EANFM,mBACAC,EAKEP,EALFO,eACAC,EAIER,EAJFQ,SACAC,EAGET,EAHFS,YACAC,EAEEV,EAFFU,UACAC,EACEX,EADFW,QAGUC,EAORnB,EAPFoB,SACAC,EAMErB,EANFqB,OACSC,EAKPtB,EALFuB,QACAC,EAIExB,EAJFwB,YACAC,EAGEzB,EAHFyB,IACAC,EAEE1B,EAFF0B,MACAC,EACE3B,EADF2B,GAGIP,EAAWQ,GACf,SAACF,EAAOG,EAASC,GACfX,SAAAA,EAAcW,EAAOJ,EACvB,GACA,CAACP,IAGGY,EAAcH,GAClB,SAACF,EAAOI,GACNX,SAAAA,EAAcW,EAAOJ,EACvB,GACA,CAACP,IAGGI,EAAUK,GACd,SAAAE,GAKE,GAJAR,EAAWQ,GACXN,EAAYM,GAGRf,EAAU,CACZ,IAAMiB,EAAQF,EAAMG,OACpBD,EAAME,eAAiBF,EAAMG,YAC/B,CACD,GACD,CAACb,EAAYE,EAAaT,IAGtBqB,GAAgBjC,GAAUD,EAAWmC,iBACzCC,EAAAC,EAAA,CAAAC,SAAA,CACGrC,EACAD,EAAWmC,kBAIVI,EAAwBC,GAC5B,WAAA,OAAAC,EAAAA,EAAA,CAAA,EACK9B,GAAkB,CAAA,EAAA,CACrBmB,MAAOY,EAAWC,EAAOb,MAAOnB,eAAAA,EAAoBmB,MAAOjB,GAAY8B,EAAOC,eAC9E3C,OAAQyC,EAAWC,EAAO1C,OAAQU,aAAkB,EAAlBA,EAAoBV,QACtD4C,OAAQH,EAAWC,EAAOE,OAAQlC,aAAkB,EAAlBA,EAAoBkC,QACtDC,eAAgBJ,EAAWC,EAAOG,eAAgBnC,aAAAA,EAAAA,EAAoBmC,iBAAe,GAEvF,CAACnC,EAAoBE,IAGjBkC,EAAsBP,GAAQ,WAAA,OAAAC,EAAAA,EAAA,CAAA,EAAY7B,GAAc,CAAA,EAAA,CAAEa,GAAAA,GAAE,GAAK,CAACb,EAAgBa,IAExF,OAAIrB,EAEA4C,EAACC,EAAa,CACZlD,SAAUA,EAEVE,OAAQiC,EAERW,OAAQ7C,EAAWkD,aACnB/B,OAAQA,EACRD,SAAUA,EACVG,QAASA,EACT8B,SAAU5B,EACVC,MAAOA,EACP4B,kBAAmBpD,EAAWuB,IAC9BpB,OAAQD,EAAU,UAAYC,EAC9BK,MAAOA,EACPC,KAAMA,EACNC,eAAgBA,EAChBC,mBAAoB4B,EACpB3B,eAAgBmC,EAChBlC,SAAUA,EACVC,YAAaA,EACbE,QAASA,EACTD,UAAWA,IAMfiC,EAACK,EAASZ,EAAA,CACR1C,SAAUA,EAEVE,OAAQiC,EAERW,OAAQ7C,EAAWkD,aACnB/B,OAAQA,EACRD,SAAUW,EACVR,QAASA,EACT8B,SAAU5B,EACVC,MAAOA,EACPD,IAAKvB,EAAWuB,IAChBpB,OAAQD,EAAU,UAAYC,GAC1BE,GAGV"}
@@ -22,6 +22,9 @@ export type ColorPickerProps = {
22
22
  popoverPlacement?: PopoverProps['placement'];
23
23
  onOpen?: () => void;
24
24
  onClose?: () => void;
25
+ /**
26
+ * An escape hatch to tweak styling of internal elements
27
+ */
25
28
  elementsClassNames?: Partial<Omit<Required<TextInputNextProps>['elementsClassNames'], 'message' | 'numberStepButtons' | 'prefix' | 'suffix'> & Record<'indicator' | 'popover', string>>;
26
29
  className?: string;
27
30
  testId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAW,YAAY,EAAE,MAAM,YAAY,CAAC;AAcnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,gBAAgB,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,kBAAkB,CAAC,EAAE,OAAO,CAC1B,IAAI,CACF,QAAQ,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,EAClD,SAAS,GAAG,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CACtD,GACC,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,CAC1C,CAAC;IAEF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAUF,eAAO,MAAM,WAAW,mLAgBrB,gBAAgB,4CAwWlB,CAAC"}
1
+ {"version":3,"file":"ColorPicker.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAW,YAAY,EAAE,MAAM,YAAY,CAAC;AAcnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,gBAAgB,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAC1B,IAAI,CACF,QAAQ,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,EAClD,SAAS,GAAG,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CACtD,GACC,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,CAC1C,CAAC;IAEF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAmBF,eAAO,MAAM,WAAW,mLAgBrB,gBAAgB,4CAgXlB,CAAC"}
@@ -1,2 +1,2 @@
1
- import o from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/defineProperty";import s from"classnames";import{useMemo as i,useState as c,useRef as t,useCallback as r,useEffect as e}from"react";import{ChromePicker as a}from"react-color";import{throttle as l}from"lodash";import{v4 as m}from"uuid";import{TextInputNext as u}from"../TextInputNext/TextInputNext.js";import{Popover as p}from"../Popover/Popover.js";import{ButtonIcon as d}from"../ButtonIcon/ButtonIcon.js";import{Tooltip as j}from"../Tooltip/Tooltip.js";import{Popper as I}from"../Popper/Popper.js";import{Swatches as f}from"./Swatches/Swatches.js";import{parseColor as b,channelsToHex as h,channelsToRgba as v,defaultColor as C}from"./utils.js";import{OpacityDragTracker as y}from"./OpacityDragtracker/OpacityDragtracker.js";import{useChromePickerAccessibility as g}from"./useChromePickerAccessibility.js";import O from"./ColorPicker.scss.js";import{PaletteIcon as P,PickerIcon as k}from"../../icons/iconParkIcons.js";import"../../icons/customIcons/icons/AddMessage.js";import"../../icons/customIcons/icons/DragOne.js";import"../../icons/customIcons/icons/Attention.js";import"../../icons/customIcons/icons/Collapse.js";import"../../icons/customIcons/icons/Dashboard.js";import"../../icons/customIcons/icons/Expand.js";import"../../icons/customIcons/icons/FolderClosed.js";import"../../icons/customIcons/icons/FolderClosedFilled.js";import"../../icons/customIcons/icons/FolderOpened.js";import"../../icons/customIcons/icons/GreaterOrEqual.js";import"../../icons/customIcons/icons/LessOrEqual.js";import"../../icons/customIcons/icons/Search.js";import"../../icons/customIcons/icons/SearchOne.js";import"../../icons/customIcons/icons/Wellhub.js";import"../../icons/customIcons/icons/MultiRuler.js";import"../../icons/customIcons/icons/Checkbox.js";import"../../icons/customIcons/icons/CheckboxChecked.js";import"../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../icons/customIcons/icons/Radio.js";import"../../icons/customIcons/icons/RadioChecked.js";import"../../icons/customIcons/icons/SimulFrac.js";import"../../icons/customIcons/icons/ZipperFrac.js";import"../../icons/customIcons/icons/CautionFilled.js";import"../../icons/customIcons/icons/InfoRounded.js";import"../../icons/customIcons/icons/FlameFilled.js";import"../../icons/customIcons/icons/MoreApp.js";import"../../icons/customIcons/icons/Pad.js";import"../../icons/customIcons/icons/DrilloutUnit.js";import"../../icons/customIcons/icons/FracFleet.js";import"../../icons/customIcons/icons/Global.js";import"../../icons/customIcons/icons/Program.js";import"../../icons/customIcons/icons/Rig.js";import"../../icons/customIcons/icons/Well.js";import"../../icons/customIcons/icons/Gap.js";import"../../icons/customIcons/icons/Pin.js";import"../../icons/customIcons/icons/PinOne.js";import"../../icons/customIcons/icons/PinOneCrossed.js";import"../../icons/customIcons/icons/CloseOneFilled.js";import"../../icons/customIcons/icons/AttentionFilled.js";import"../../icons/customIcons/icons/CheckOneFilled.js";import"../../icons/customIcons/icons/Archive.js";import"../../icons/customIcons/icons/ArchiveCancel.js";import"../../icons/customIcons/icons/Unarchive.js";import"../../icons/customIcons/icons/Archived.js";import"../../icons/customIcons/icons/InterventionUnit.js";import"../../icons/customIcons/icons/CloudDelete.js";import"../../icons/customIcons/icons/Lasso.js";import"../../icons/customIcons/icons/Radius.js";import"../../icons/customIcons/icons/ErrorOps.js";import"../../icons/customIcons/icons/DataTypeOps.js";import"../../icons/customIcons/icons/FalsePositiveOps.js";import"../../icons/customIcons/icons/CalibrationOps.js";import"../../icons/customIcons/icons/CriticalOps.js";import"../../icons/customIcons/icons/Company.js";import"../../icons/customIcons/icons/ArchiveOne.js";import"../../icons/customIcons/icons/ParseBotFusion.js";import"../../icons/customIcons/icons/Connect.js";import"../../icons/customIcons/icons/PuzzleOne.js";import"../../icons/customIcons/icons/Feed.js";import"../../icons/customIcons/icons/Prompt.js";import"../../icons/customIcons/icons/Companies.js";import"../../icons/customIcons/icons/ClipboardAi.js";import"../../icons/customIcons/icons/Key.js";import"../../icons/customIcons/icons/AtSignCrossed.js";import"../../icons/customIcons/icons/MappingManual.js";import"../../icons/customIcons/icons/Mapping.js";import"../../icons/customIcons/icons/Metrics.js";import"../../icons/customIcons/icons/Drops.js";import"../../icons/customIcons/icons/ClipboardSearch.js";import"../../icons/customIcons/icons/Template.js";import"../../icons/customIcons/icons/ClipboardMetrics.js";import"../../icons/customIcons/icons/ClipboardBuilder.js";import"../../icons/customIcons/icons/UnitConversion.js";import"../../icons/customIcons/icons/NPT.js";import"../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as D,Fragment as F,jsx as N}from"react/jsx-runtime";function x(o,n){var s=Object.keys(o);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(o);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable}))),s.push.apply(s,i)}return s}function A(o){for(var s=1;s<arguments.length;s++){var i=null!=arguments[s]?arguments[s]:{};s%2?x(Object(i),!0).forEach((function(s){n(o,s,i[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(i)):x(Object(i)).forEach((function(n){Object.defineProperty(o,n,Object.getOwnPropertyDescriptor(i,n))}))}return o}var S={small:O.small,medium:O.medium,large:O.large},w=function(n){var x=n.format,w=void 0===x?"hex":x,T=n.className,E=n.label,M=n.labelPlacement,B=void 0===M?"top":M,R=n.popoverPlacement,z=void 0===R?"bottom-start":R,W=n.testId,L=n.disabled,G=n.size,K=void 0===G?"small":G,U=n.onOpen,q=n.onClose,V=n.value,H=void 0===V?C:V,Z=n.onChange,J=n.disableOpacityDrag,Q=n.enableAlpha,X=void 0!==Q&&Q,Y=n.elementsClassNames,$=void 0===Y?{}:Y,_=i((function(){return{input:s(O.input,$.input),inputContainer:s(O.inputContainer,$.inputContainer),label:s(O.label,$.label),prefix:O.prefixContainer,suffix:O.suffixContainer,numberStepButtons:O.numberStepButtons}}),[$.input,$.inputContainer,$.label]),oo=i((function(){try{var o=b(H);return A(A({},o),{},{a:X?o.a:1})}catch(o){return b(C)}}),[H,X]),no=c(!1),so=o(no,2),io=so[0],co=so[1],to=t(null),ro=t(null),eo=c(!0),ao=o(eo,2),lo=ao[0],mo=ao[1],uo=c(null),po=o(uo,2),jo=po[0],Io=po[1],fo=c(oo),bo=o(fo,2),ho=bo[0],vo=bo[1],Co=t(null),yo=i((function(){return"corva-color-picker-".concat(m())}),[]),go="".concat(yo,"-opacity-input"),Oo="".concat(yo,"-label"),Po="".concat(yo,"-opacity-label"),ko=Boolean(E),Do=r((function(){co(!0),null==U||U()}),[U]),Fo=r((function(o){o.preventDefault(),Io(null),Do()}),[Do]),No=r((function(){Io(null),Do()}),[Do]),xo=r((function(o){L||"Enter"!==o.key&&" "!==o.key&&"ArrowDown"!==o.key||(o.preventDefault(),Io("palette"),Do())}),[L,Do]),Ao=r((function(){var o,n,s=!(null===(o=Co.current)||void 0===o||!o.contains(document.activeElement));(Io(null),co(!1),null==q||q(),s)&&(null===(n=ro.current)||void 0===n||n.focus({preventScroll:!0}))}),[q]),So=r((function(o){Io(0===o.detail?"palette":null),mo(!0)}),[]),wo=r((function(o){Io(0===o.detail?"picker":null),mo(!1)}),[]),To=r((function(){return Io(null)}),[]),Eo=r((function(o){return vo(o.rgb)}),[]),Mo=r((function(o){var n="hex"===w?h(o,X):v(o,X);null==Z||Z(n)}),[w,Z,X]),Bo=r((function(o){vo(o),Mo(o)}),[Mo]),Ro=g({color:ho,enableAlpha:X,isActive:!lo,onChange:Bo}),zo=Ro.pickerRef,Wo=Ro.onKeyDown;e((function(){var o;if("picker"===jo&&!lo){var n=null===(o=zo.current)||void 0===o?void 0:o.querySelector('[data-color-picker-control="saturation"]');n&&(n.focus({preventScroll:!0}),To())}}),[To,jo,lo,zo]);var Lo=r((function(o){var n=Number(o);if(!(Number.isNaN(n)||n<0||n>100)){var s=A(A({},oo),{},{a:n/100});Mo(s)}}),[oo,Mo]),Go=r((function(o){Mo(o.rgb)}),[Mo]),Ko=r((function(o){var n=oo.a||1,s=X&&0===o.a?0:n;Mo(A(A({},o),{},{a:s}))}),[Mo,oo.a,X]),Uo=r((function(){setTimeout((function(){var o,n;co(!1),null===(o=document.activeElement)||void 0===o||null===(n=o.blur)||void 0===n||n.call(o)}),0)}),[]),qo=i((function(){return l((function(o){var n=String(Math.round(o));Lo(n)}),100)}),[Lo]);e((function(){vo(oo)}),[oo]),e((function(){io&&mo(!0)}),[io]);var Vo=String(Math.round(100*ho.a)),Ho=(null==z?void 0:z.startsWith("top"))||(null==z?void 0:z.startsWith("bottom")),Zo=(null==z?void 0:z.startsWith("left"))||(null==z?void 0:z.startsWith("right")),Jo=ko?D(F,{children:[N("label",{id:Oo,htmlFor:go,children:"string"==typeof E?N(u.Label,{children:E}):E}),N("span",{id:Po,hidden:!0,children:"Opacity"})]}):void 0,Qo=i((function(){return ko?{id:go,"aria-labelledby":"".concat(Oo," ").concat(Po)}:{id:go,"aria-label":"Opacity"}}),[ko,go,Oo,Po]);return D(F,{children:[N(u,{label:Jo,labelPlacement:B,disabled:L,size:K,rootTagName:"div",prefix:D(F,{children:[D("div",{className:O.fakeValue,children:[Vo,N("span",{className:O.fakeValuePercent,children:"%"})]}),N("div",{ref:ro,className:s(O.indicator,0===ho.a&&O.transparent,$.indicator),style:{"--corvaui-colorpicker-indicatorcolor":h(ho,!1)},onClick:L?void 0:Fo,onKeyDown:xo,role:"button","aria-label":ko?void 0:"Color picker","aria-labelledby":ko?Oo:void 0,"aria-expanded":io,"aria-disabled":L,tabIndex:L?-1:0})]}),suffix:!io&&X&&!J&&!L&&N(y,{value:Number(Vo),onDrag:qo,onDragEnd:Uo}),className:s(O.root,S[K],!X&&O.noAlpha,T),testId:W,inputContainerRef:to,value:Vo,onChange:Lo,onFocus:No,inputType:"number",inputMode:"numeric",htmlAttributes:Qo,elementsClassNames:_}),D(p,{ref:Co,anchorEl:to.current,open:io,onClose:Ao,placement:z,className:s(O.popover,Ho&&O.marginVertical,Zo&&O.marginHorizontal,0===ho.a&&O.isTransparent,$.popover),children:[lo?N(f,{onChange:Ko,value:oo,addTransparent:X,autoFocus:"palette"===jo,onAutoFocus:To}):N("div",{ref:zo,className:O.pickerContainer,onKeyDown:Wo,children:N(a,{color:ho,onChange:Eo,onChangeComplete:Go,disableAlpha:!X,className:O.picker})}),D("div",{className:O.switchButtons,children:[N(j,{title:"Palette",children:N(d,{ariaLabel:"Show color palette",size:"medium",type:lo?"secondary":"tertiary",onClick:So,children:N(P,{})})}),N(j,{title:"Pick your own",children:N(d,{ariaLabel:"Show custom color picker",size:"medium",type:lo?"tertiary":"secondary",onClick:wo,children:N(k,{})})})]})]}),io&&X&&!J&&N(I,{open:io,anchorEl:to.current,className:O.dragTrackerPopper,placement:"right",children:N(y,{onDrag:qo,onDragEnd:Uo})})]})};export{w as ColorPicker};
1
+ import o from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/defineProperty";import s from"classnames";import{useMemo as c,useState as i,useRef as t,useCallback as r,useEffect as e}from"react";import{ChromePicker as a}from"react-color";import{throttle as m}from"lodash";import{v4 as l}from"uuid";import{TextInputNext as u}from"../TextInputNext/TextInputNext.js";import{Popover as p}from"../Popover/Popover.js";import{ButtonIcon as d}from"../ButtonIcon/ButtonIcon.js";import{Tooltip as j}from"../Tooltip/Tooltip.js";import{Popper as I}from"../Popper/Popper.js";import{Swatches as f}from"./Swatches/Swatches.js";import{parseColor as h,channelsToHex as b,channelsToRgba as v,defaultColor as C}from"./utils.js";import{OpacityDragTracker as y}from"./OpacityDragtracker/OpacityDragtracker.js";import{useChromePickerAccessibility as g}from"./useChromePickerAccessibility.js";import O from"./ColorPicker.scss.js";import{PaletteIcon as P,PickerIcon as k}from"../../icons/iconParkIcons.js";import"../../icons/customIcons/icons/AddMessage.js";import"../../icons/customIcons/icons/DragOne.js";import"../../icons/customIcons/icons/Attention.js";import"../../icons/customIcons/icons/Collapse.js";import"../../icons/customIcons/icons/Dashboard.js";import"../../icons/customIcons/icons/Expand.js";import"../../icons/customIcons/icons/FolderClosed.js";import"../../icons/customIcons/icons/FolderClosedFilled.js";import"../../icons/customIcons/icons/FolderOpened.js";import"../../icons/customIcons/icons/GreaterOrEqual.js";import"../../icons/customIcons/icons/LessOrEqual.js";import"../../icons/customIcons/icons/Search.js";import"../../icons/customIcons/icons/SearchOne.js";import"../../icons/customIcons/icons/Wellhub.js";import"../../icons/customIcons/icons/MultiRuler.js";import"../../icons/customIcons/icons/Checkbox.js";import"../../icons/customIcons/icons/CheckboxChecked.js";import"../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../icons/customIcons/icons/Radio.js";import"../../icons/customIcons/icons/RadioChecked.js";import"../../icons/customIcons/icons/SimulFrac.js";import"../../icons/customIcons/icons/ZipperFrac.js";import"../../icons/customIcons/icons/CautionFilled.js";import"../../icons/customIcons/icons/InfoRounded.js";import"../../icons/customIcons/icons/FlameFilled.js";import"../../icons/customIcons/icons/MoreApp.js";import"../../icons/customIcons/icons/Pad.js";import"../../icons/customIcons/icons/DrilloutUnit.js";import"../../icons/customIcons/icons/FracFleet.js";import"../../icons/customIcons/icons/Global.js";import"../../icons/customIcons/icons/Program.js";import"../../icons/customIcons/icons/Rig.js";import"../../icons/customIcons/icons/Well.js";import"../../icons/customIcons/icons/Gap.js";import"../../icons/customIcons/icons/Pin.js";import"../../icons/customIcons/icons/PinOne.js";import"../../icons/customIcons/icons/PinOneCrossed.js";import"../../icons/customIcons/icons/CloseOneFilled.js";import"../../icons/customIcons/icons/AttentionFilled.js";import"../../icons/customIcons/icons/CheckOneFilled.js";import"../../icons/customIcons/icons/Archive.js";import"../../icons/customIcons/icons/ArchiveCancel.js";import"../../icons/customIcons/icons/Unarchive.js";import"../../icons/customIcons/icons/Archived.js";import"../../icons/customIcons/icons/InterventionUnit.js";import"../../icons/customIcons/icons/CloudDelete.js";import"../../icons/customIcons/icons/Lasso.js";import"../../icons/customIcons/icons/Radius.js";import"../../icons/customIcons/icons/ErrorOps.js";import"../../icons/customIcons/icons/DataTypeOps.js";import"../../icons/customIcons/icons/FalsePositiveOps.js";import"../../icons/customIcons/icons/CalibrationOps.js";import"../../icons/customIcons/icons/CriticalOps.js";import"../../icons/customIcons/icons/Company.js";import"../../icons/customIcons/icons/ArchiveOne.js";import"../../icons/customIcons/icons/ParseBotFusion.js";import"../../icons/customIcons/icons/Connect.js";import"../../icons/customIcons/icons/PuzzleOne.js";import"../../icons/customIcons/icons/Feed.js";import"../../icons/customIcons/icons/Prompt.js";import"../../icons/customIcons/icons/Companies.js";import"../../icons/customIcons/icons/ClipboardAi.js";import"../../icons/customIcons/icons/Key.js";import"../../icons/customIcons/icons/AtSignCrossed.js";import"../../icons/customIcons/icons/MappingManual.js";import"../../icons/customIcons/icons/Mapping.js";import"../../icons/customIcons/icons/Metrics.js";import"../../icons/customIcons/icons/Drops.js";import"../../icons/customIcons/icons/ClipboardSearch.js";import"../../icons/customIcons/icons/Template.js";import"../../icons/customIcons/icons/ClipboardMetrics.js";import"../../icons/customIcons/icons/ClipboardBuilder.js";import"../../icons/customIcons/icons/UnitConversion.js";import"../../icons/customIcons/icons/NPT.js";import"../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as D,Fragment as F,jsx as N}from"react/jsx-runtime";function x(o,n){var s=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);n&&(c=c.filter((function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable}))),s.push.apply(s,c)}return s}function A(o){for(var s=1;s<arguments.length;s++){var c=null!=arguments[s]?arguments[s]:{};s%2?x(Object(c),!0).forEach((function(s){n(o,s,c[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(c)):x(Object(c)).forEach((function(n){Object.defineProperty(o,n,Object.getOwnPropertyDescriptor(c,n))}))}return o}var S={small:O.small,medium:O.medium,large:O.large},w={inputContainer:O.inputContainer,numberStepButtons:O.numberStepButtons,prefix:O.prefixContainer,suffix:O.suffixContainer,input:O.input,label:O.label},T=function(x){var T=x.format,E=void 0===T?"hex":T,M=x.className,B=x.label,R=x.labelPlacement,z=void 0===R?"top":R,W=x.popoverPlacement,L=void 0===W?"bottom-start":W,G=x.testId,K=x.disabled,U=x.size,q=void 0===U?"small":U,V=x.onOpen,H=x.onClose,Z=x.value,J=void 0===Z?C:Z,Q=x.onChange,X=x.disableOpacityDrag,Y=x.enableAlpha,$=void 0!==Y&&Y,_=x.elementsClassNames,oo=c((function(){try{var o=h(J);return A(A({},o),{},{a:$?o.a:1})}catch(o){return h(C)}}),[J,$]),no=c((function(){return _?Object.entries(_).reduce((function(c,i){var t=o(i,2),r=t[0],e=t[1];return A(A({},c),{},n({},r,c[r]?s(c[r],e):e))}),A({},w)):w}),[_]),so=i(!1),co=o(so,2),io=co[0],to=co[1],ro=t(null),eo=t(null),ao=i(!0),mo=o(ao,2),lo=mo[0],uo=mo[1],po=i(null),jo=o(po,2),Io=jo[0],fo=jo[1],ho=i(oo),bo=o(ho,2),vo=bo[0],Co=bo[1],yo=t(null),go=c((function(){return"corva-color-picker-".concat(l())}),[]),Oo="".concat(go,"-opacity-input"),Po="".concat(go,"-label"),ko="".concat(go,"-opacity-label"),Do=Boolean(B),Fo=r((function(){to(!0),null==V||V()}),[V]),No=r((function(o){o.preventDefault(),fo(null),Fo()}),[Fo]),xo=r((function(){fo(null),Fo()}),[Fo]),Ao=r((function(o){K||"Enter"!==o.key&&" "!==o.key&&"ArrowDown"!==o.key||(o.preventDefault(),fo("palette"),Fo())}),[K,Fo]),So=r((function(){var o,n,s=!(null===(o=yo.current)||void 0===o||!o.contains(document.activeElement));(fo(null),to(!1),null==H||H(),s)&&(null===(n=eo.current)||void 0===n||n.focus({preventScroll:!0}))}),[H]),wo=r((function(o){fo(0===o.detail?"palette":null),uo(!0)}),[]),To=r((function(o){fo(0===o.detail?"picker":null),uo(!1)}),[]),Eo=r((function(){return fo(null)}),[]),Mo=r((function(o){return Co(o.rgb)}),[]),Bo=r((function(o){var n="hex"===E?b(o,$):v(o,$);null==Q||Q(n)}),[E,Q,$]),Ro=r((function(o){Co(o),Bo(o)}),[Bo]),zo=g({color:vo,enableAlpha:$,isActive:!lo,onChange:Ro}),Wo=zo.pickerRef,Lo=zo.onKeyDown;e((function(){var o;if("picker"===Io&&!lo){var n=null===(o=Wo.current)||void 0===o?void 0:o.querySelector('[data-color-picker-control="saturation"]');n&&(n.focus({preventScroll:!0}),Eo())}}),[Eo,Io,lo,Wo]);var Go=r((function(o){var n=Number(o);if(!(Number.isNaN(n)||n<0||n>100)){var s=A(A({},oo),{},{a:n/100});Bo(s)}}),[oo,Bo]),Ko=r((function(o){Bo(o.rgb)}),[Bo]),Uo=r((function(o){var n=oo.a||1,s=$&&0===o.a?0:n;Bo(A(A({},o),{},{a:s}))}),[Bo,oo.a,$]),qo=r((function(){setTimeout((function(){var o,n;to(!1),null===(o=document.activeElement)||void 0===o||null===(n=o.blur)||void 0===n||n.call(o)}),0)}),[]),Vo=c((function(){return m((function(o){var n=String(Math.round(o));Go(n)}),100)}),[Go]);e((function(){Co(oo)}),[oo]),e((function(){io&&uo(!0)}),[io]);var Ho=String(Math.round(100*vo.a)),Zo=(null==L?void 0:L.startsWith("top"))||(null==L?void 0:L.startsWith("bottom")),Jo=(null==L?void 0:L.startsWith("left"))||(null==L?void 0:L.startsWith("right")),Qo=Do?D(F,{children:[N("label",{id:Po,htmlFor:Oo,children:"string"==typeof B?N(u.Label,{children:B}):B}),N("span",{id:ko,hidden:!0,children:"Opacity"})]}):void 0,Xo=c((function(){return Do?{id:Oo,"aria-labelledby":"".concat(Po," ").concat(ko)}:{id:Oo,"aria-label":"Opacity"}}),[Do,Oo,Po,ko]);return D(F,{children:[N(u,{label:Qo,labelPlacement:z,disabled:K,size:q,rootTagName:"div",prefix:D(F,{children:[D("div",{className:O.fakeValue,children:[Ho,N("span",{className:O.fakeValuePercent,children:"%"})]}),N("div",{ref:eo,className:s(O.indicator,0===vo.a&&O.transparent,no.indicator),style:{"--corvaui-colorpicker-indicatorcolor":b(vo,!1)},onClick:K?void 0:No,onKeyDown:Ao,role:"button","aria-label":Do?void 0:"Color picker","aria-labelledby":Do?Po:void 0,"aria-expanded":io,"aria-disabled":K,tabIndex:K?-1:0})]}),suffix:!io&&$&&!X&&!K&&N(y,{value:Number(Ho),onDrag:Vo,onDragEnd:qo}),className:s(O.root,S[q],!$&&O.noAlpha,M),testId:G,inputContainerRef:ro,value:Ho,onChange:Go,onFocus:xo,inputType:"number",inputMode:"numeric",elementsClassNames:no,htmlAttributes:Xo}),D(p,{ref:yo,anchorEl:ro.current,open:io,onClose:So,placement:L,className:s(O.popover,Zo&&O.marginVertical,Jo&&O.marginHorizontal,0===vo.a&&O.isTransparent,no.popover),children:[lo?N(f,{onChange:Uo,value:oo,addTransparent:$,autoFocus:"palette"===Io,onAutoFocus:Eo}):N("div",{ref:Wo,className:O.pickerContainer,onKeyDown:Lo,children:N(a,{color:vo,onChange:Mo,onChangeComplete:Ko,disableAlpha:!$,className:O.picker})}),D("div",{className:O.switchButtons,children:[N(j,{title:"Palette",children:N(d,{ariaLabel:"Show color palette",size:"medium",type:lo?"secondary":"tertiary",onClick:wo,children:N(P,{})})}),N(j,{title:"Pick your own",children:N(d,{ariaLabel:"Show custom color picker",size:"medium",type:lo?"tertiary":"secondary",onClick:To,children:N(k,{})})})]})]}),io&&$&&!X&&N(I,{open:io,anchorEl:ro.current,className:O.dragTrackerPopper,placement:"right",children:N(y,{onDrag:Vo,onDragEnd:qo})})]})};export{T as ColorPicker};
2
2
  //# sourceMappingURL=ColorPicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.js","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n CSSProperties,\n KeyboardEventHandler,\n MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChromePicker, ColorResult } from 'react-color';\nimport { throttle } from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { TextInputNext, TextInputNextProps } from '../TextInputNext';\nimport { Popover, PopoverProps } from '../Popover';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Tooltip } from '../Tooltip';\nimport { Popper } from '../Popper';\n\nimport { Swatches } from './Swatches';\nimport { channelsToHex, channelsToRgba, ColorChannels, defaultColor, parseColor } from './utils';\nimport { OpacityDragTracker } from './OpacityDragtracker';\nimport { useChromePickerAccessibility } from './useChromePickerAccessibility';\n\nimport styles from './ColorPicker.scss';\n\nimport { PaletteIcon, PickerIcon } from '~/icons';\n\nexport type ColorPickerProps = {\n value?: string;\n onChange?: (value: string) => void;\n\n size?: TextInputNextProps['size'];\n label?: TextInputNextProps['label'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n disabled?: boolean;\n /**\n * Disables drag to change opacity functinality\n */\n disableOpacityDrag?: boolean;\n /**\n * Determines base format of the colour `rgb(RRR, GGG, BBB[, AAA])` or `#RRGGBB[AA]`\n */\n format?: 'rgb' | 'hex';\n /**\n * Allows user to control color's opacity, adds alpha channel to resulting color string\n */\n enableAlpha?: boolean;\n\n popoverPlacement?: PopoverProps['placement'];\n\n onOpen?: () => void;\n onClose?: () => void;\n\n elementsClassNames?: Partial<\n Omit<\n Required<TextInputNextProps>['elementsClassNames'],\n 'message' | 'numberStepButtons' | 'prefix' | 'suffix'\n > &\n Record<'indicator' | 'popover', string>\n >;\n\n className?: string;\n testId?: string;\n};\n\nconst SizeToClassMap: Record<Required<ColorPickerProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\ntype FocusTarget = 'palette' | 'picker';\n\nexport const ColorPicker = ({\n format = 'hex',\n className,\n label,\n labelPlacement = 'top',\n popoverPlacement = 'bottom-start',\n testId,\n disabled,\n size = 'small',\n onOpen,\n onClose,\n value = defaultColor,\n onChange,\n disableOpacityDrag,\n enableAlpha = false,\n elementsClassNames = {},\n}: ColorPickerProps) => {\n const inputElementsClassNames = useMemo<TextInputNextProps['elementsClassNames']>(\n () => ({\n input: classNames(styles.input, elementsClassNames.input),\n inputContainer: classNames(styles.inputContainer, elementsClassNames.inputContainer),\n label: classNames(styles.label, elementsClassNames.label),\n prefix: styles.prefixContainer,\n suffix: styles.suffixContainer,\n numberStepButtons: styles.numberStepButtons,\n }),\n [elementsClassNames.input, elementsClassNames.inputContainer, elementsClassNames.label]\n );\n\n const valueChannels = useMemo(() => {\n try {\n const channels = parseColor(value);\n\n return { ...channels, a: enableAlpha ? channels.a : 1 };\n } catch (_) {\n return parseColor(defaultColor);\n }\n }, [value, enableAlpha]);\n\n const [isMenuOpen, setIsOpen] = useState(false);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [isSwatches, setIsSwatches] = useState(true);\n const [focusTarget, setFocusTarget] = useState<FocusTarget | null>(null);\n const [internalValue, setInternalValue] = useState<ColorChannels>(valueChannels);\n const popoverRef = useRef<HTMLDivElement>(null);\n const accessibilityId = useMemo(() => `corva-color-picker-${uuidv4()}`, []);\n const inputId = `${accessibilityId}-opacity-input`;\n const labelId = `${accessibilityId}-label`;\n const opacityLabelId = `${accessibilityId}-opacity-label`;\n const hasLabel = Boolean(label);\n\n const openMenu = useCallback(() => {\n setIsOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const openMenuSwatch = useCallback<MouseEventHandler>(\n e => {\n e.preventDefault();\n setFocusTarget(null);\n openMenu();\n },\n [openMenu]\n );\n\n const openMenuFocus = useCallback(() => {\n setFocusTarget(null);\n openMenu();\n }, [openMenu]);\n\n const openMenuKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n event => {\n if (!disabled && (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')) {\n event.preventDefault();\n setFocusTarget('palette');\n openMenu();\n }\n },\n [disabled, openMenu]\n );\n\n const closeMenu = useCallback(() => {\n const isFocusInPopover = !!popoverRef.current?.contains(document.activeElement);\n\n setFocusTarget(null);\n setIsOpen(false);\n onClose?.();\n\n // Return focus to the trigger so keyboard flow is not lost after Escape/outside dismiss\n if (isFocusInPopover) {\n indicatorRef.current?.focus({ preventScroll: true });\n }\n }, [onClose]);\n\n const setSwatches = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'palette' : null);\n setIsSwatches(true);\n }, []);\n\n const setPicker = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'picker' : null);\n setIsSwatches(false);\n }, []);\n\n const clearFocusTarget = useCallback(() => setFocusTarget(null), []);\n\n const onInternalValueChange = useCallback(\n (color: ColorResult) => setInternalValue(color.rgb),\n []\n );\n\n const onActualChange = useCallback(\n (color: ColorChannels) => {\n const formatted =\n format === 'hex' ? channelsToHex(color, enableAlpha) : channelsToRgba(color, enableAlpha);\n onChange?.(formatted);\n },\n [format, onChange, enableAlpha]\n );\n\n const onKeyboardPickerChange = useCallback(\n (color: ColorChannels) => {\n setInternalValue(color);\n onActualChange(color);\n },\n [onActualChange]\n );\n\n const { pickerRef, onKeyDown: onPickerKeyDown } = useChromePickerAccessibility({\n color: internalValue,\n enableAlpha,\n isActive: !isSwatches,\n onChange: onKeyboardPickerChange,\n });\n\n useEffect(() => {\n if (focusTarget !== 'picker' || isSwatches) {\n return;\n }\n\n const firstControl = pickerRef.current?.querySelector<HTMLElement>(\n '[data-color-picker-control=\"saturation\"]'\n );\n\n if (firstControl) {\n firstControl.focus({ preventScroll: true });\n clearFocusTarget();\n }\n }, [clearFocusTarget, focusTarget, isSwatches, pickerRef]);\n\n const onOpacityInputChange = useCallback(\n (opacityString: string) => {\n const opacityNumber = Number(opacityString);\n\n if (Number.isNaN(opacityNumber) || opacityNumber < 0 || opacityNumber > 100) {\n return;\n }\n\n const color = { ...valueChannels, a: opacityNumber / 100 };\n onActualChange(color);\n },\n [valueChannels, onActualChange]\n );\n\n const pickerOnChange = useCallback(\n (color: ColorResult) => {\n onActualChange(color.rgb);\n },\n [onActualChange]\n );\n\n const swatchOnChange = useCallback(\n (color: ColorChannels) => {\n const nonZeroAlpha = valueChannels.a || 1;\n const alpha = enableAlpha && color.a === 0 ? 0 : nonZeroAlpha;\n onActualChange({ ...color, a: alpha });\n },\n [onActualChange, valueChannels.a, enableAlpha]\n );\n\n // Prevents focus on opacity drag end\n const onOpacityDragEnd = useCallback(() => {\n setTimeout(() => {\n setIsOpen(false);\n (document.activeElement as HTMLElement | null)?.blur?.();\n }, 0);\n }, []);\n\n const onOpacityDrag = useMemo(\n () =>\n throttle((percent: number) => {\n const newFieldValue = String(Math.round(percent));\n onOpacityInputChange(newFieldValue);\n }, 100),\n [onOpacityInputChange]\n );\n\n useEffect(() => {\n setInternalValue(valueChannels);\n }, [valueChannels]);\n\n useEffect(() => {\n if (isMenuOpen) {\n setIsSwatches(true);\n }\n }, [isMenuOpen]);\n\n const inputValue = String(Math.round(internalValue.a * 100));\n\n const hasVerticalMargin =\n popoverPlacement?.startsWith('top') || popoverPlacement?.startsWith('bottom');\n const hasHorizontalMargin =\n popoverPlacement?.startsWith('left') || popoverPlacement?.startsWith('right');\n const accessibleLabel = hasLabel ? (\n <>\n <label id={labelId} htmlFor={inputId}>\n {typeof label === 'string' ? <TextInputNext.Label>{label}</TextInputNext.Label> : label}\n </label>\n <span id={opacityLabelId} hidden>\n Opacity\n </span>\n </>\n ) : undefined;\n const inputHtmlAttributes: TextInputNextProps['htmlAttributes'] = useMemo(\n () =>\n hasLabel\n ? {\n id: inputId,\n 'aria-labelledby': `${labelId} ${opacityLabelId}`,\n }\n : {\n id: inputId,\n 'aria-label': 'Opacity',\n },\n [hasLabel, inputId, labelId, opacityLabelId]\n );\n\n return (\n <>\n <TextInputNext\n label={accessibleLabel}\n labelPlacement={labelPlacement}\n disabled={disabled}\n size={size}\n rootTagName=\"div\"\n prefix={\n <>\n <div className={styles.fakeValue}>\n {inputValue}\n <span className={styles.fakeValuePercent}>%</span>\n </div>\n\n <div\n ref={indicatorRef}\n className={classNames(\n styles.indicator,\n internalValue.a === 0 && styles.transparent,\n elementsClassNames.indicator\n )}\n style={\n {\n '--corvaui-colorpicker-indicatorcolor': channelsToHex(internalValue, false),\n } as CSSProperties\n }\n onClick={disabled ? undefined : openMenuSwatch}\n onKeyDown={openMenuKeyDown}\n role=\"button\"\n aria-label={hasLabel ? undefined : 'Color picker'}\n aria-labelledby={hasLabel ? labelId : undefined}\n aria-expanded={isMenuOpen}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n />\n </>\n }\n suffix={\n !isMenuOpen &&\n enableAlpha &&\n !disableOpacityDrag &&\n !disabled && (\n <OpacityDragTracker\n value={Number(inputValue)}\n onDrag={onOpacityDrag}\n onDragEnd={onOpacityDragEnd}\n />\n )\n }\n className={classNames(\n styles.root,\n SizeToClassMap[size],\n !enableAlpha && styles.noAlpha,\n className\n )}\n testId={testId}\n inputContainerRef={inputContainerRef}\n value={inputValue}\n onChange={onOpacityInputChange}\n onFocus={openMenuFocus}\n inputType=\"number\"\n inputMode=\"numeric\"\n htmlAttributes={inputHtmlAttributes}\n elementsClassNames={inputElementsClassNames}\n />\n\n {/* Popover backdrop is needed for ColorPicker to work better in popovers: click outside will close the ColorPicker but not the popover */}\n <Popover\n ref={popoverRef}\n anchorEl={inputContainerRef.current}\n open={isMenuOpen}\n onClose={closeMenu}\n placement={popoverPlacement}\n className={classNames(\n styles.popover,\n hasVerticalMargin && styles.marginVertical,\n hasHorizontalMargin && styles.marginHorizontal,\n internalValue.a === 0 && styles.isTransparent,\n elementsClassNames.popover\n )}\n >\n {isSwatches ? (\n <Swatches\n onChange={swatchOnChange}\n value={valueChannels}\n addTransparent={enableAlpha}\n autoFocus={focusTarget === 'palette'}\n onAutoFocus={clearFocusTarget}\n />\n ) : (\n <div ref={pickerRef} className={styles.pickerContainer} onKeyDown={onPickerKeyDown}>\n <ChromePicker\n color={internalValue}\n onChange={onInternalValueChange}\n onChangeComplete={pickerOnChange}\n disableAlpha={!enableAlpha}\n className={styles.picker}\n />\n </div>\n )}\n <div className={styles.switchButtons}>\n <Tooltip title=\"Palette\">\n <ButtonIcon\n ariaLabel=\"Show color palette\"\n size=\"medium\"\n type={isSwatches ? 'secondary' : 'tertiary'}\n onClick={setSwatches}\n >\n <PaletteIcon />\n </ButtonIcon>\n </Tooltip>\n <Tooltip title=\"Pick your own\">\n <ButtonIcon\n ariaLabel=\"Show custom color picker\"\n size=\"medium\"\n type={!isSwatches ? 'secondary' : 'tertiary'}\n onClick={setPicker}\n >\n <PickerIcon />\n </ButtonIcon>\n </Tooltip>\n </div>\n </Popover>\n\n {/* Opacity Drag Tracker should work even with popover open with a backdrop */}\n {isMenuOpen && enableAlpha && !disableOpacityDrag && (\n <Popper\n open={isMenuOpen}\n anchorEl={inputContainerRef.current}\n className={styles.dragTrackerPopper}\n placement=\"right\"\n >\n <OpacityDragTracker onDrag={onOpacityDrag} onDragEnd={onOpacityDragEnd} />\n </Popper>\n )}\n </>\n );\n};\n"],"names":["SizeToClassMap","small","styles","medium","large","ColorPicker","_ref","_ref$format","format","className","label","_ref$labelPlacement","labelPlacement","_ref$popoverPlacement","popoverPlacement","testId","disabled","_ref$size","size","onOpen","onClose","_ref$value","value","defaultColor","onChange","disableOpacityDrag","_ref$enableAlpha","enableAlpha","_ref$elementsClassNam","elementsClassNames","inputElementsClassNames","useMemo","input","classNames","inputContainer","prefix","prefixContainer","suffix","suffixContainer","numberStepButtons","valueChannels","channels","parseColor","_objectSpread","a","_","useState","_useState2","_slicedToArray","_useState","isMenuOpen","setIsOpen","inputContainerRef","useRef","indicatorRef","_useState4","_useState3","isSwatches","setIsSwatches","_useState6","_useState5","focusTarget","setFocusTarget","_useState8","_useState7","internalValue","setInternalValue","popoverRef","accessibilityId","concat","uuidv4","inputId","labelId","opacityLabelId","hasLabel","Boolean","openMenu","useCallback","openMenuSwatch","e","preventDefault","openMenuFocus","openMenuKeyDown","event","key","closeMenu","_popoverRef$current","_indicatorRef$current","isFocusInPopover","current","contains","document","activeElement","focus","preventScroll","setSwatches","detail","setPicker","clearFocusTarget","onInternalValueChange","color","rgb","onActualChange","formatted","channelsToHex","channelsToRgba","onKeyboardPickerChange","_useChromePickerAcces","useChromePickerAccessibility","isActive","pickerRef","onPickerKeyDown","onKeyDown","useEffect","_pickerRef$current","firstControl","querySelector","onOpacityInputChange","opacityString","opacityNumber","Number","isNaN","pickerOnChange","swatchOnChange","nonZeroAlpha","alpha","onOpacityDragEnd","setTimeout","_document$activeEleme","_document$activeEleme2","blur","call","onOpacityDrag","throttle","percent","newFieldValue","String","Math","round","inputValue","hasVerticalMargin","startsWith","hasHorizontalMargin","accessibleLabel","_jsxs","_Fragment","children","_jsx","id","htmlFor","TextInputNext","Label","hidden","undefined","inputHtmlAttributes","rootTagName","fakeValue","fakeValuePercent","ref","indicator","transparent","style","onClick","role","tabIndex","OpacityDragTracker","onDrag","onDragEnd","root","noAlpha","onFocus","inputType","inputMode","htmlAttributes","Popover","anchorEl","open","placement","popover","marginVertical","marginHorizontal","isTransparent","Swatches","addTransparent","autoFocus","onAutoFocus","pickerContainer","ChromePicker","onChangeComplete","disableAlpha","picker","switchButtons","Tooltip","title","ButtonIcon","ariaLabel","type","PaletteIcon","PickerIcon","Popper","dragTrackerPopper"],"mappings":"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"}
1
+ {"version":3,"file":"ColorPicker.js","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n CSSProperties,\n KeyboardEventHandler,\n MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChromePicker, ColorResult } from 'react-color';\nimport { throttle } from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { TextInputNext, TextInputNextProps } from '../TextInputNext';\nimport { Popover, PopoverProps } from '../Popover';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Tooltip } from '../Tooltip';\nimport { Popper } from '../Popper';\n\nimport { Swatches } from './Swatches';\nimport { channelsToHex, channelsToRgba, ColorChannels, defaultColor, parseColor } from './utils';\nimport { OpacityDragTracker } from './OpacityDragtracker';\nimport { useChromePickerAccessibility } from './useChromePickerAccessibility';\n\nimport styles from './ColorPicker.scss';\n\nimport { PaletteIcon, PickerIcon } from '~/icons';\n\nexport type ColorPickerProps = {\n value?: string;\n onChange?: (value: string) => void;\n\n size?: TextInputNextProps['size'];\n label?: TextInputNextProps['label'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n disabled?: boolean;\n /**\n * Disables drag to change opacity functinality\n */\n disableOpacityDrag?: boolean;\n /**\n * Determines base format of the colour `rgb(RRR, GGG, BBB[, AAA])` or `#RRGGBB[AA]`\n */\n format?: 'rgb' | 'hex';\n /**\n * Allows user to control color's opacity, adds alpha channel to resulting color string\n */\n enableAlpha?: boolean;\n\n popoverPlacement?: PopoverProps['placement'];\n\n onOpen?: () => void;\n onClose?: () => void;\n\n /**\n * An escape hatch to tweak styling of internal elements\n */\n elementsClassNames?: Partial<\n Omit<\n Required<TextInputNextProps>['elementsClassNames'],\n 'message' | 'numberStepButtons' | 'prefix' | 'suffix'\n > &\n Record<'indicator' | 'popover', string>\n >;\n\n className?: string;\n testId?: string;\n};\n\nconst SizeToClassMap: Record<Required<ColorPickerProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\nconst ownInputElementsClassNames: TextInputNextProps['elementsClassNames'] = {\n inputContainer: styles.inputContainer,\n numberStepButtons: styles.numberStepButtons,\n prefix: styles.prefixContainer,\n suffix: styles.suffixContainer,\n input: styles.input,\n label: styles.label,\n};\n\ntype FocusTarget = 'palette' | 'picker';\n\nexport const ColorPicker = ({\n format = 'hex',\n className,\n label,\n labelPlacement = 'top',\n popoverPlacement = 'bottom-start',\n testId,\n disabled,\n size = 'small',\n onOpen,\n onClose,\n value = defaultColor,\n onChange,\n disableOpacityDrag,\n enableAlpha = false,\n elementsClassNames,\n}: ColorPickerProps) => {\n const valueChannels = useMemo(() => {\n try {\n const channels = parseColor(value);\n\n return { ...channels, a: enableAlpha ? channels.a : 1 };\n } catch (_) {\n return parseColor(defaultColor);\n }\n }, [value, enableAlpha]);\n\n const realElementsClassNames = useMemo((): Required<ColorPickerProps>['elementsClassNames'] => {\n return elementsClassNames\n ? Object.entries(elementsClassNames).reduce<Required<ColorPickerProps>['elementsClassNames']>(\n (acc, pair) => {\n const [key, value] = pair as [\n keyof Required<ColorPickerProps>['elementsClassNames'],\n string\n ];\n return {\n ...acc,\n [key]: acc[key] ? classNames(acc[key], value) : value,\n };\n },\n {\n ...ownInputElementsClassNames,\n }\n )\n : ownInputElementsClassNames;\n }, [elementsClassNames]);\n\n const [isMenuOpen, setIsOpen] = useState(false);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [isSwatches, setIsSwatches] = useState(true);\n const [focusTarget, setFocusTarget] = useState<FocusTarget | null>(null);\n const [internalValue, setInternalValue] = useState<ColorChannels>(valueChannels);\n const popoverRef = useRef<HTMLDivElement>(null);\n const accessibilityId = useMemo(() => `corva-color-picker-${uuidv4()}`, []);\n const inputId = `${accessibilityId}-opacity-input`;\n const labelId = `${accessibilityId}-label`;\n const opacityLabelId = `${accessibilityId}-opacity-label`;\n const hasLabel = Boolean(label);\n\n const openMenu = useCallback(() => {\n setIsOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const openMenuSwatch = useCallback<MouseEventHandler>(\n e => {\n e.preventDefault();\n setFocusTarget(null);\n openMenu();\n },\n [openMenu]\n );\n\n const openMenuFocus = useCallback(() => {\n setFocusTarget(null);\n openMenu();\n }, [openMenu]);\n\n const openMenuKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n event => {\n if (!disabled && (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')) {\n event.preventDefault();\n setFocusTarget('palette');\n openMenu();\n }\n },\n [disabled, openMenu]\n );\n\n const closeMenu = useCallback(() => {\n const isFocusInPopover = !!popoverRef.current?.contains(document.activeElement);\n\n setFocusTarget(null);\n setIsOpen(false);\n onClose?.();\n\n // Return focus to the trigger so keyboard flow is not lost after Escape/outside dismiss\n if (isFocusInPopover) {\n indicatorRef.current?.focus({ preventScroll: true });\n }\n }, [onClose]);\n\n const setSwatches = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'palette' : null);\n setIsSwatches(true);\n }, []);\n\n const setPicker = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'picker' : null);\n setIsSwatches(false);\n }, []);\n\n const clearFocusTarget = useCallback(() => setFocusTarget(null), []);\n\n const onInternalValueChange = useCallback(\n (color: ColorResult) => setInternalValue(color.rgb),\n []\n );\n\n const onActualChange = useCallback(\n (color: ColorChannels) => {\n const formatted =\n format === 'hex' ? channelsToHex(color, enableAlpha) : channelsToRgba(color, enableAlpha);\n onChange?.(formatted);\n },\n [format, onChange, enableAlpha]\n );\n\n const onKeyboardPickerChange = useCallback(\n (color: ColorChannels) => {\n setInternalValue(color);\n onActualChange(color);\n },\n [onActualChange]\n );\n\n const { pickerRef, onKeyDown: onPickerKeyDown } = useChromePickerAccessibility({\n color: internalValue,\n enableAlpha,\n isActive: !isSwatches,\n onChange: onKeyboardPickerChange,\n });\n\n useEffect(() => {\n if (focusTarget !== 'picker' || isSwatches) {\n return;\n }\n\n const firstControl = pickerRef.current?.querySelector<HTMLElement>(\n '[data-color-picker-control=\"saturation\"]'\n );\n\n if (firstControl) {\n firstControl.focus({ preventScroll: true });\n clearFocusTarget();\n }\n }, [clearFocusTarget, focusTarget, isSwatches, pickerRef]);\n\n const onOpacityInputChange = useCallback(\n (opacityString: string) => {\n const opacityNumber = Number(opacityString);\n\n if (Number.isNaN(opacityNumber) || opacityNumber < 0 || opacityNumber > 100) {\n return;\n }\n\n const color = { ...valueChannels, a: opacityNumber / 100 };\n onActualChange(color);\n },\n [valueChannels, onActualChange]\n );\n\n const pickerOnChange = useCallback(\n (color: ColorResult) => {\n onActualChange(color.rgb);\n },\n [onActualChange]\n );\n\n const swatchOnChange = useCallback(\n (color: ColorChannels) => {\n const nonZeroAlpha = valueChannels.a || 1;\n const alpha = enableAlpha && color.a === 0 ? 0 : nonZeroAlpha;\n onActualChange({ ...color, a: alpha });\n },\n [onActualChange, valueChannels.a, enableAlpha]\n );\n\n // Prevents focus on opacity drag end\n const onOpacityDragEnd = useCallback(() => {\n setTimeout(() => {\n setIsOpen(false);\n (document.activeElement as HTMLElement | null)?.blur?.();\n }, 0);\n }, []);\n\n const onOpacityDrag = useMemo(\n () =>\n throttle((percent: number) => {\n const newFieldValue = String(Math.round(percent));\n onOpacityInputChange(newFieldValue);\n }, 100),\n [onOpacityInputChange]\n );\n\n useEffect(() => {\n setInternalValue(valueChannels);\n }, [valueChannels]);\n\n useEffect(() => {\n if (isMenuOpen) {\n setIsSwatches(true);\n }\n }, [isMenuOpen]);\n\n const inputValue = String(Math.round(internalValue.a * 100));\n\n const hasVerticalMargin =\n popoverPlacement?.startsWith('top') || popoverPlacement?.startsWith('bottom');\n const hasHorizontalMargin =\n popoverPlacement?.startsWith('left') || popoverPlacement?.startsWith('right');\n const accessibleLabel = hasLabel ? (\n <>\n <label id={labelId} htmlFor={inputId}>\n {typeof label === 'string' ? <TextInputNext.Label>{label}</TextInputNext.Label> : label}\n </label>\n <span id={opacityLabelId} hidden>\n Opacity\n </span>\n </>\n ) : undefined;\n const inputHtmlAttributes: TextInputNextProps['htmlAttributes'] = useMemo(\n () =>\n hasLabel\n ? {\n id: inputId,\n 'aria-labelledby': `${labelId} ${opacityLabelId}`,\n }\n : {\n id: inputId,\n 'aria-label': 'Opacity',\n },\n [hasLabel, inputId, labelId, opacityLabelId]\n );\n\n return (\n <>\n <TextInputNext\n label={accessibleLabel}\n labelPlacement={labelPlacement}\n disabled={disabled}\n size={size}\n rootTagName=\"div\"\n prefix={\n <>\n <div className={styles.fakeValue}>\n {inputValue}\n <span className={styles.fakeValuePercent}>%</span>\n </div>\n\n <div\n ref={indicatorRef}\n className={classNames(\n styles.indicator,\n internalValue.a === 0 && styles.transparent,\n realElementsClassNames.indicator\n )}\n style={\n {\n '--corvaui-colorpicker-indicatorcolor': channelsToHex(internalValue, false),\n } as CSSProperties\n }\n onClick={disabled ? undefined : openMenuSwatch}\n onKeyDown={openMenuKeyDown}\n role=\"button\"\n aria-label={hasLabel ? undefined : 'Color picker'}\n aria-labelledby={hasLabel ? labelId : undefined}\n aria-expanded={isMenuOpen}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n />\n </>\n }\n suffix={\n !isMenuOpen &&\n enableAlpha &&\n !disableOpacityDrag &&\n !disabled && (\n <OpacityDragTracker\n value={Number(inputValue)}\n onDrag={onOpacityDrag}\n onDragEnd={onOpacityDragEnd}\n />\n )\n }\n className={classNames(\n styles.root,\n SizeToClassMap[size],\n !enableAlpha && styles.noAlpha,\n className\n )}\n testId={testId}\n inputContainerRef={inputContainerRef}\n value={inputValue}\n onChange={onOpacityInputChange}\n onFocus={openMenuFocus}\n inputType=\"number\"\n inputMode=\"numeric\"\n elementsClassNames={realElementsClassNames}\n htmlAttributes={inputHtmlAttributes}\n />\n\n {/* Popover backdrop is needed for ColorPicker to work better in popovers: click outside will close the ColorPicker but not the popover */}\n <Popover\n ref={popoverRef}\n anchorEl={inputContainerRef.current}\n open={isMenuOpen}\n onClose={closeMenu}\n placement={popoverPlacement}\n className={classNames(\n styles.popover,\n hasVerticalMargin && styles.marginVertical,\n hasHorizontalMargin && styles.marginHorizontal,\n internalValue.a === 0 && styles.isTransparent,\n realElementsClassNames.popover\n )}\n >\n {isSwatches ? (\n <Swatches\n onChange={swatchOnChange}\n value={valueChannels}\n addTransparent={enableAlpha}\n autoFocus={focusTarget === 'palette'}\n onAutoFocus={clearFocusTarget}\n />\n ) : (\n <div ref={pickerRef} className={styles.pickerContainer} onKeyDown={onPickerKeyDown}>\n <ChromePicker\n color={internalValue}\n onChange={onInternalValueChange}\n onChangeComplete={pickerOnChange}\n disableAlpha={!enableAlpha}\n className={styles.picker}\n />\n </div>\n )}\n <div className={styles.switchButtons}>\n <Tooltip title=\"Palette\">\n <ButtonIcon\n ariaLabel=\"Show color palette\"\n size=\"medium\"\n type={isSwatches ? 'secondary' : 'tertiary'}\n onClick={setSwatches}\n >\n <PaletteIcon />\n </ButtonIcon>\n </Tooltip>\n <Tooltip title=\"Pick your own\">\n <ButtonIcon\n ariaLabel=\"Show custom color picker\"\n size=\"medium\"\n type={!isSwatches ? 'secondary' : 'tertiary'}\n onClick={setPicker}\n >\n <PickerIcon />\n </ButtonIcon>\n </Tooltip>\n </div>\n </Popover>\n\n {/* Opacity Drag Tracker should work even with popover open with a backdrop */}\n {isMenuOpen && enableAlpha && !disableOpacityDrag && (\n <Popper\n open={isMenuOpen}\n anchorEl={inputContainerRef.current}\n className={styles.dragTrackerPopper}\n placement=\"right\"\n >\n <OpacityDragTracker onDrag={onOpacityDrag} onDragEnd={onOpacityDragEnd} />\n </Popper>\n )}\n </>\n );\n};\n"],"names":["SizeToClassMap","small","styles","medium","large","ownInputElementsClassNames","inputContainer","numberStepButtons","prefix","prefixContainer","suffix","suffixContainer","input","label","ColorPicker","_ref","_ref$format","format","className","_ref$labelPlacement","labelPlacement","_ref$popoverPlacement","popoverPlacement","testId","disabled","_ref$size","size","onOpen","onClose","_ref$value","value","defaultColor","onChange","disableOpacityDrag","_ref$enableAlpha","enableAlpha","elementsClassNames","valueChannels","useMemo","channels","parseColor","_objectSpread","a","_","realElementsClassNames","Object","entries","reduce","acc","pair","_ref3","_slicedToArray","key","classNames","useState","_useState2","_useState","isMenuOpen","setIsOpen","inputContainerRef","useRef","indicatorRef","_useState4","_useState3","isSwatches","setIsSwatches","_useState6","_useState5","focusTarget","setFocusTarget","_useState8","_useState7","internalValue","setInternalValue","popoverRef","accessibilityId","concat","uuidv4","inputId","labelId","opacityLabelId","hasLabel","Boolean","openMenu","useCallback","openMenuSwatch","e","preventDefault","openMenuFocus","openMenuKeyDown","event","closeMenu","_popoverRef$current","_indicatorRef$current","isFocusInPopover","current","contains","document","activeElement","focus","preventScroll","setSwatches","detail","setPicker","clearFocusTarget","onInternalValueChange","color","rgb","onActualChange","formatted","channelsToHex","channelsToRgba","onKeyboardPickerChange","_useChromePickerAcces","useChromePickerAccessibility","isActive","pickerRef","onPickerKeyDown","onKeyDown","useEffect","_pickerRef$current","firstControl","querySelector","onOpacityInputChange","opacityString","opacityNumber","Number","isNaN","pickerOnChange","swatchOnChange","nonZeroAlpha","alpha","onOpacityDragEnd","setTimeout","_document$activeEleme","_document$activeEleme2","blur","call","onOpacityDrag","throttle","percent","newFieldValue","String","Math","round","inputValue","hasVerticalMargin","startsWith","hasHorizontalMargin","accessibleLabel","_jsxs","_Fragment","children","_jsx","id","htmlFor","TextInputNext","Label","hidden","undefined","inputHtmlAttributes","rootTagName","fakeValue","fakeValuePercent","ref","indicator","transparent","style","onClick","role","tabIndex","OpacityDragTracker","onDrag","onDragEnd","root","noAlpha","onFocus","inputType","inputMode","htmlAttributes","Popover","anchorEl","open","placement","popover","marginVertical","marginHorizontal","isTransparent","Swatches","addTransparent","autoFocus","onAutoFocus","pickerContainer","ChromePicker","onChangeComplete","disableAlpha","picker","switchButtons","Tooltip","title","ButtonIcon","ariaLabel","type","PaletteIcon","PickerIcon","Popper","dragTrackerPopper"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerNext.stories.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/DatePicker/DatePickerNext.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAyB,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,KAAK,KAAK,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC;AAEnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,CAGrB,CAAC;eAkCa,IAAI;AAEnB,eAAO,MAAM,OAAO,UAAW,KAAK,4CAcnC,CAAC;AAEF,eAAO,MAAM,KAAK,+CAUjB,CAAC;AASF,eAAO,MAAM,cAAc,+CAyB1B,CAAC;AASF,eAAO,MAAM,UAAU,+CActB,CAAC;AAmBF,eAAO,MAAM,MAAM,+CAclB,CAAC;AAMF,eAAO,MAAM,aAAa,+CAczB,CAAC;AAOF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAMF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAKF,eAAO,MAAM,cAAc,+CAkB1B,CAAC;AAOF,eAAO,MAAM,sBAAsB,+CAkBlC,CAAC"}
1
+ {"version":3,"file":"DatePickerNext.stories.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/DatePicker/DatePickerNext.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAyB,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,KAAK,KAAK,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC;AAEnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,CAGrB,CAAC;eAkCa,IAAI;AAEnB,eAAO,MAAM,OAAO,UAAW,KAAK,4CAcnC,CAAC;AAEF,eAAO,MAAM,KAAK,+CAUjB,CAAC;AASF,eAAO,MAAM,cAAc,+CAyB1B,CAAC;AASF,eAAO,MAAM,UAAU,+CActB,CAAC;AAmBF,eAAO,MAAM,MAAM,+CAsBlB,CAAC;AAMF,eAAO,MAAM,aAAa,+CAczB,CAAC;AAOF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAMF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAKF,eAAO,MAAM,cAAc,+CAkB1B,CAAC;AAOF,eAAO,MAAM,sBAAsB,+CAkBlC,CAAC"}
@@ -1,2 +1,2 @@
1
- import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/toConsumableArray";import{forwardRef as c,useState as i,useRef as t,useCallback as r,useMemo as e,useEffect as m}from"react";import u from"moment";import a from"classnames";import{TextInputNext as l}from"../../TextInputNext/TextInputNext.js";import{TextInput as p}from"../../TextInput/TextInput.js";import{autocompleteValue as j,getMinDate as I,getMaxDate as d,InputParseFormats as f,getDefaultFormat as v}from"../utils.js";import{Popper as b}from"../../Popper/Popper.js";import h from"./Input.scss.js";import{CalendarThreeIcon as O}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/PinOne.js";import"../../../icons/customIcons/icons/PinOneCrossed.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as C,Fragment as g,jsx as y}from"react/jsx-runtime";function P(o,s){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),n.push.apply(n,c)}return n}function F(s){for(var n=1;n<arguments.length;n++){var c=null!=arguments[n]?arguments[n]:{};n%2?P(Object(c),!0).forEach((function(n){o(s,n,c[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(c)):P(Object(c)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(c,o))}))}return s}var x={flip:{enabled:!1}},A=function(o,s){return o?u(o).format(s):s},D=function(o,s){return(Array.isArray(o)?o:[o]).filter((function(o){return!!o})).map((function(o){return A(o,s)})).join(" - ")},N=function(o,s,c){var i=u(o,[s].concat(n(f[c]||[])),!0);return i.isValid()?i.toDate():void 0},S={small:h.small,medium:h.medium,large:h.large},k=c((function(o,n){var c=o.value,u=o.label,f=o.open,P=o.className,k=o.testId,R=o.format,T=o.placeholder,w=o.range,E=o.readOnly,M=o.type,z=o.setValue,B=o.focusOnClear,L=o.labelPlacement,G=o.size,U=void 0===G?"small":G,V=o.elementsClassNames,q=o.isNext,W=o.isOpen,K=o.clearable,Z=o.rangeStep,H=o.setRangeStep,J=R||v(M,w),Q=D(c,J),X=i(Q),Y=s(X,2),$=Y[0],_=Y[1],oo=i(c),so=s(oo,2),no=so[0],co=so[1],io=t($),to=i(0),ro=s(to,2),eo=ro[0],mo=ro[1],uo=i(0),ao=s(uo,2),lo=ao[0],po=ao[1],jo=t(null),Io=!!w&&$===Q&&W;no!==c&&(_(Q),co(c),io.current=Q);var fo=r((function(o){if(""===o.trim())return null==z||z(void 0),_(""),void(io.current="");var s=j({type:M,range:w,value:o,prevValue:io.current});if(io.current=s,_(s),w){var n=s.split(/[-–—]/).map((function(o){return N(o.trim(),J,M)})).filter((function(o){return!!o}));if(2===n.length){var c=I(n[0],n[1]),i=d(n[0],n[1]);c&&i&&(null==z||z([c,i]))}}else{var t=N(s,J,M);t&&(null==z||z(t))}}),[J,w,z,M]),vo=r((function(o){o.target.select(),f()}),[f]),bo=r((function(){_(D(c,J)),io.current=""}),[c,J]),ho=r((function(){null==z||z(void 0),_("")}),[z]),Oo=e((function(){return F(F({},V),{},{prefix:a(null==V?void 0:V.prefix,Io&&h.prefix),input:a(null==V?void 0:V.input,Io&&h.rangeDefaultValue),inputContainer:a(null==V?void 0:V.inputContainer,h.inputContainer)})}),[Io,V]),Co=e((function(){return w?{onScroll:function(o){mo(o.currentTarget.scrollLeft)}}:void 0}),[w]);return m((function(){if(w){var o=new ResizeObserver((function(o){o.forEach((function(o){var s,n;return po((null===(s=o.borderBoxSize)||void 0===s||null===(n=s[0])||void 0===n?void 0:n.inlineSize)||0)}))}));return jo.current&&o.observe(jo.current),function(){o.disconnect()}}}),[w]),q?C(g,{children:[y(l,{value:$,inputContainerRef:n,inputRef:jo,label:u,onFocus:vo,onBlur:bo,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,clearable:K,focusOnClear:B,labelPlacement:L,size:U,elementsClassNames:Oo,htmlAttributes:Co}),y(b,{anchorEl:jo.current,open:Io,placement:"top-start",className:h.popper,modifiers:x,children:y("div",{className:a(h.rangeOverlay,S[U]),style:{width:lo},children:y("div",{style:{marginLeft:-eo},children:Array.isArray(c)&&2===c.length&&C(g,{children:[y("span",{className:a(h.rangePart,"startDate"===Z&&h.rangePartActive),onClick:function(){return H("startDate")},children:A(c[0],J)})," - ",y("span",{className:a(h.rangePart,"endDate"===Z&&h.rangePartActive),onClick:function(){return H("endDate")},children:A(c[1],J)})]})})})})]}):y(p,{value:$,ref:n,label:u,onFocus:f,onBlur:bo,forceLabelShrink:W,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,onClear:K?ho:void 0,focusOnClear:B})}));export{k as Input};
1
+ import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/toConsumableArray";import{forwardRef as c,useState as i,useRef as t,useCallback as r,useMemo as e,useEffect as m}from"react";import u from"moment";import a from"classnames";import{TextInputNext as l}from"../../TextInputNext/TextInputNext.js";import{TextInput as p}from"../../TextInput/TextInput.js";import{autocompleteValue as j,getMinDate as I,getMaxDate as d,InputParseFormats as f,getDefaultFormat as v}from"../utils.js";import{Popper as b}from"../../Popper/Popper.js";import h from"./Input.scss.js";import{CalendarThreeIcon as O}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/PinOne.js";import"../../../icons/customIcons/icons/PinOneCrossed.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as C,Fragment as g,jsx as y}from"react/jsx-runtime";function P(o,s){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),n.push.apply(n,c)}return n}function F(s){for(var n=1;n<arguments.length;n++){var c=null!=arguments[n]?arguments[n]:{};n%2?P(Object(c),!0).forEach((function(n){o(s,n,c[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(c)):P(Object(c)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(c,o))}))}return s}var x={flip:{enabled:!1}},A=function(o,s){return o?u(o).format(s):s},D=function(o,s){return(Array.isArray(o)?o:[o]).filter((function(o){return!!o})).map((function(o){return A(o,s)})).join(" - ")},N=function(o,s,c){var i=u(o,[s].concat(n(f[c]||[])),!0);return i.isValid()?i.toDate():void 0},S={small:h.small,medium:h.medium,large:h.large},k=c((function(o,n){var c=o.value,u=o.label,f=o.open,P=o.className,k=o.testId,R=o.format,T=o.placeholder,w=o.range,E=o.readOnly,M=o.type,z=o.setValue,B=o.focusOnClear,L=o.labelPlacement,G=o.size,U=void 0===G?"small":G,V=o.elementsClassNames,q=o.isNext,W=o.isOpen,K=o.clearable,Z=o.rangeStep,H=o.setRangeStep,J=R||v(M,w),Q=D(c,J),X=i(Q),Y=s(X,2),$=Y[0],_=Y[1],oo=i(c),so=s(oo,2),no=so[0],co=so[1],io=t($),to=i(0),ro=s(to,2),eo=ro[0],mo=ro[1],uo=i(0),ao=s(uo,2),lo=ao[0],po=ao[1],jo=t(null),Io=!!w&&$===Q&&W;no!==c&&(_(Q),co(c),io.current=Q);var fo=r((function(o){if(""===o.trim())return null==z||z(void 0),_(""),void(io.current="");var s=j({type:M,range:w,value:o,prevValue:io.current});if(io.current=s,_(s),w){var n=s.split(/[-–—]/).map((function(o){return N(o.trim(),J,M)})).filter((function(o){return!!o}));if(2===n.length){var c=I(n[0],n[1]),i=d(n[0],n[1]);c&&i&&(null==z||z([c,i]))}}else{var t=N(s,J,M);t&&(null==z||z(t))}}),[J,w,z,M]),vo=r((function(o){o.target.select(),f()}),[f]),bo=r((function(){_(D(c,J)),io.current=""}),[c,J]),ho=r((function(){null==z||z(void 0),_("")}),[z]),Oo=e((function(){return F(F({},V),{},{prefix:a(null==V?void 0:V.prefix,Io&&h.prefix),input:a(null==V?void 0:V.input,Io&&h.rangeDefaultValue),inputContainer:a(null==V?void 0:V.inputContainer,h.inputContainer)})}),[Io,V]),Co=e((function(){return w?{onScroll:function(o){mo(o.currentTarget.scrollLeft)}}:void 0}),[w]);return m((function(){if(w){var o=new ResizeObserver((function(o){o.forEach((function(o){var s,n;return po((null===(s=o.borderBoxSize)||void 0===s||null===(n=s[0])||void 0===n?void 0:n.inlineSize)||0)}))}));return jo.current&&o.observe(jo.current),function(){o.disconnect()}}}),[w]),q?C(g,{children:[y(l,{value:$,inputContainerRef:n,inputRef:jo,label:u,onFocus:vo,onBlur:bo,className:P,testId:k,suffix:y(O,{}),placeholder:Io?"":T,onChange:fo,readOnly:E,clearable:K,focusOnClear:B,labelPlacement:L,size:U,elementsClassNames:Oo,htmlAttributes:Co}),y(b,{anchorEl:jo.current,open:Io,placement:"top-start",className:h.popper,modifiers:x,children:y("div",{className:a(h.rangeOverlay,S[U]),style:{width:lo},children:y("div",{style:{marginLeft:-eo},children:Array.isArray(c)&&2===c.length&&C(g,{children:[y("span",{className:a(h.rangePart,"startDate"===Z&&h.rangePartActive),onClick:function(){return H("startDate")},children:A(c[0],J)})," - ",y("span",{className:a(h.rangePart,"endDate"===Z&&h.rangePartActive),onClick:function(){return H("endDate")},children:A(c[1],J)})]})})})})]}):y(p,{value:$,ref:n,label:u,onFocus:f,onBlur:bo,forceLabelShrink:W,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,onClear:K?ho:void 0,focusOnClear:B})}));export{k as Input};
2
2
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../../../src/componentsV2/DatePicker/Input/Input.tsx"],"sourcesContent":["import {\n FocusEventHandler,\n forwardRef,\n ReactNode,\n UIEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport moment from 'moment';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput } from '../../TextInput';\nimport {\n autocompleteValue,\n DatePickerChangeHandler,\n DatePickerType,\n getDefaultFormat,\n getMaxDate,\n getMinDate,\n RangeSelectionStep,\n InputParseFormats,\n} from '../utils';\nimport { Popper } from '../../Popper';\n\nimport styles from './Input.scss';\n\nimport { CalendarThreeIcon } from '~/icons';\n\nexport type InputProps = {\n value?: Date | [Date | undefined, Date | undefined];\n setValue?: (value: Date | [Date, Date] | undefined) => void;\n label?: ReactNode;\n placeholder?: string;\n open: () => void;\n type: DatePickerType;\n format?: string;\n range?: boolean;\n rangeStep?: RangeSelectionStep;\n setRangeStep: (step: RangeSelectionStep) => void;\n readOnly?: boolean;\n focusOnClear?: boolean;\n labelPlacement?: TextInputNextProps['labelPlacement'];\n size?: TextInputNextProps['size'];\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n clearable?: TextInputNextProps['clearable'];\n\n className?: string;\n testId?: string;\n\n // Remove when next becomes baseline\n isOpen: boolean;\n isNext: boolean;\n};\n\nconst rangeOverlayPopperModifiers = {\n flip: {\n enabled: false,\n },\n};\n\nconst RangeSeparator = ' - ';\n\nconst formatValuePart = (value: Date | undefined, format: string) =>\n value ? moment(value).format(format) : format;\n\nconst formatValue = (value: InputProps['value'], format: string) =>\n (Array.isArray(value) ? value : [value])\n .filter(item => !!item)\n .map(item => formatValuePart(item, format))\n .join(RangeSeparator);\n\nconst parseStringDate = (value: string, format: string, type: DatePickerType) => {\n const parsedMoment = moment(value, [format, ...(InputParseFormats[type] || [])], true);\n\n return parsedMoment.isValid() ? parsedMoment.toDate() : undefined;\n};\n\nconst SizeToOverlayClassMap: Record<Required<TextInputNextProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\nexport const Input = forwardRef<HTMLDivElement, InputProps>(\n (\n {\n value,\n label,\n open,\n className,\n testId,\n format: propsFormat,\n placeholder,\n range,\n readOnly,\n type,\n setValue,\n focusOnClear,\n labelPlacement,\n size = 'small',\n elementsClassNames: propsElementsClassNames,\n isNext,\n isOpen,\n clearable,\n rangeStep,\n setRangeStep,\n },\n ref\n ) => {\n const format = propsFormat || getDefaultFormat(type, range);\n const formattedValue = formatValue(value, format);\n const [inputValue, setInputValue] = useState(formattedValue);\n const [prevValue, setPrevValue] = useState(value);\n const prevInputValueRef = useRef(inputValue);\n const [inputScroll, setinputScroll] = useState(0);\n const [inputWidth, setInputWidth] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n const showRangeOverlay = !!range && inputValue === formattedValue && isOpen;\n\n // Value changed - reconstructing input value\n if (prevValue !== value) {\n setInputValue(formattedValue);\n setPrevValue(value);\n prevInputValueRef.current = formattedValue;\n }\n\n const onChange = useCallback(\n (typedValue: string) => {\n if (typedValue.trim() === '') {\n setValue?.(undefined);\n setInputValue('');\n prevInputValueRef.current = '';\n return;\n }\n\n const newValue = autocompleteValue({\n type,\n range,\n value: typedValue,\n prevValue: prevInputValueRef.current,\n });\n\n prevInputValueRef.current = newValue;\n\n setInputValue(newValue);\n if (range) {\n // Splitting by hyphen, or en dash, or em dash\n const dateParts = newValue\n .split(/[-–—]/)\n .map(part => parseStringDate(part.trim(), format, type))\n .filter(part => !!part);\n\n if (dateParts.length === 2) {\n const minDate = getMinDate(dateParts[0], dateParts[1]);\n const maxDate = getMaxDate(dateParts[0], dateParts[1]);\n\n if (minDate && maxDate) {\n (setValue as DatePickerChangeHandler<true>)?.([minDate, maxDate]);\n }\n }\n } else {\n const maybeDate = parseStringDate(newValue, format, type);\n\n if (maybeDate) {\n (setValue as DatePickerChangeHandler<false>)?.(maybeDate);\n }\n }\n },\n [format, range, setValue, type]\n );\n\n const onFocus = useCallback<FocusEventHandler<HTMLInputElement>>(\n e => {\n e.target.select();\n open();\n },\n [open]\n );\n\n const onBlur = useCallback(() => {\n setInputValue(formatValue(value, format));\n prevInputValueRef.current = '';\n }, [value, format]);\n\n const onClear = useCallback(() => {\n setValue?.(undefined);\n setInputValue('');\n }, [setValue]);\n\n const elementsClassNames = useMemo(\n () => ({\n ...propsElementsClassNames,\n prefix: classNames(propsElementsClassNames?.prefix, showRangeOverlay && styles.prefix),\n input: classNames(\n propsElementsClassNames?.input,\n showRangeOverlay && styles.rangeDefaultValue\n ),\n inputContainer: classNames(propsElementsClassNames?.inputContainer, styles.inputContainer),\n }),\n [showRangeOverlay, propsElementsClassNames]\n );\n\n const htmlAttributes = useMemo<{ onScroll: UIEventHandler<HTMLInputElement> } | undefined>(\n () =>\n range\n ? {\n onScroll: e => {\n setinputScroll(e.currentTarget.scrollLeft);\n },\n }\n : undefined,\n [range]\n );\n\n useEffect(() => {\n if (!range) {\n return undefined;\n }\n\n const resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => setInputWidth(entry.borderBoxSize?.[0]?.inlineSize || 0));\n });\n\n if (inputRef.current) {\n resizeObserver.observe(inputRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [range]);\n\n if (isNext) {\n return (\n <>\n <TextInputNext\n value={inputValue}\n inputContainerRef={ref}\n inputRef={inputRef}\n label={label}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={placeholder}\n onChange={onChange}\n readOnly={readOnly}\n clearable={clearable}\n focusOnClear={focusOnClear}\n labelPlacement={labelPlacement}\n size={size}\n elementsClassNames={elementsClassNames}\n htmlAttributes={htmlAttributes}\n />\n\n <Popper\n anchorEl={inputRef.current}\n open={showRangeOverlay}\n placement=\"top-start\"\n className={styles.popper}\n modifiers={rangeOverlayPopperModifiers}\n >\n <div\n className={classNames(styles.rangeOverlay, SizeToOverlayClassMap[size])}\n style={{ width: inputWidth }}\n >\n <div style={{ marginLeft: -inputScroll }}>\n {Array.isArray(value) && value.length === 2 && (\n <>\n <span\n className={classNames(\n styles.rangePart,\n\n rangeStep === 'startDate' && styles.rangePartActive\n )}\n onClick={() => setRangeStep('startDate')}\n >\n {formatValuePart(value[0], format)}\n </span>\n {RangeSeparator}\n <span\n className={classNames(\n styles.rangePart,\n rangeStep === 'endDate' && styles.rangePartActive\n )}\n onClick={() => setRangeStep('endDate')}\n >\n {formatValuePart(value[1], format)}\n </span>\n </>\n )}\n </div>\n </div>\n </Popper>\n </>\n );\n }\n\n return (\n <TextInput\n value={inputValue}\n ref={ref as never}\n label={label}\n onFocus={open}\n onBlur={onBlur}\n forceLabelShrink={isOpen}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={placeholder}\n onChange={onChange}\n readOnly={readOnly}\n onClear={clearable ? onClear : undefined}\n focusOnClear={focusOnClear}\n />\n );\n }\n);\n"],"names":["rangeOverlayPopperModifiers","flip","enabled","formatValuePart","value","format","moment","formatValue","Array","isArray","filter","item","map","join","parseStringDate","type","parsedMoment","concat","_toConsumableArray","InputParseFormats","isValid","toDate","undefined","SizeToOverlayClassMap","small","styles","medium","large","Input","forwardRef","_ref","ref","label","open","className","testId","propsFormat","placeholder","range","readOnly","setValue","focusOnClear","labelPlacement","_ref$size","size","propsElementsClassNames","elementsClassNames","isNext","isOpen","clearable","rangeStep","setRangeStep","getDefaultFormat","formattedValue","useState","_useState2","_slicedToArray","_useState","inputValue","setInputValue","_useState4","_useState3","prevValue","setPrevValue","prevInputValueRef","useRef","_useState6","_useState5","inputScroll","setinputScroll","_useState8","_useState7","inputWidth","setInputWidth","inputRef","showRangeOverlay","current","onChange","useCallback","typedValue","trim","newValue","autocompleteValue","dateParts","split","part","length","minDate","getMinDate","maxDate","getMaxDate","maybeDate","onFocus","e","target","select","onBlur","onClear","useMemo","_objectSpread","prefix","classNames","input","rangeDefaultValue","inputContainer","htmlAttributes","onScroll","currentTarget","scrollLeft","useEffect","resizeObserver","ResizeObserver","entries","forEach","entry","_entry$borderBoxSize","_entry$borderBoxSize$","borderBoxSize","inlineSize","observe","disconnect","_jsxs","_Fragment","children","_jsx","TextInputNext","inputContainerRef","suffix","CalendarThreeIcon","Popper","anchorEl","placement","popper","modifiers","rangeOverlay","style","width","marginLeft","rangePart","rangePartActive","onClick","TextInput","forceLabelShrink"],"mappings":"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"}
1
+ {"version":3,"file":"Input.js","sources":["../../../../src/componentsV2/DatePicker/Input/Input.tsx"],"sourcesContent":["import {\n FocusEventHandler,\n forwardRef,\n ReactNode,\n UIEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport moment from 'moment';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput } from '../../TextInput';\nimport {\n autocompleteValue,\n DatePickerChangeHandler,\n DatePickerType,\n getDefaultFormat,\n getMaxDate,\n getMinDate,\n RangeSelectionStep,\n InputParseFormats,\n} from '../utils';\nimport { Popper } from '../../Popper';\n\nimport styles from './Input.scss';\n\nimport { CalendarThreeIcon } from '~/icons';\n\nexport type InputProps = {\n value?: Date | [Date | undefined, Date | undefined];\n setValue?: (value: Date | [Date, Date] | undefined) => void;\n label?: ReactNode;\n placeholder?: string;\n open: () => void;\n type: DatePickerType;\n format?: string;\n range?: boolean;\n rangeStep?: RangeSelectionStep;\n setRangeStep: (step: RangeSelectionStep) => void;\n readOnly?: boolean;\n focusOnClear?: boolean;\n labelPlacement?: TextInputNextProps['labelPlacement'];\n size?: TextInputNextProps['size'];\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n clearable?: TextInputNextProps['clearable'];\n\n className?: string;\n testId?: string;\n\n // Remove when next becomes baseline\n isOpen: boolean;\n isNext: boolean;\n};\n\nconst rangeOverlayPopperModifiers = {\n flip: {\n enabled: false,\n },\n};\n\nconst RangeSeparator = ' - ';\n\nconst formatValuePart = (value: Date | undefined, format: string) =>\n value ? moment(value).format(format) : format;\n\nconst formatValue = (value: InputProps['value'], format: string) =>\n (Array.isArray(value) ? value : [value])\n .filter(item => !!item)\n .map(item => formatValuePart(item, format))\n .join(RangeSeparator);\n\nconst parseStringDate = (value: string, format: string, type: DatePickerType) => {\n const parsedMoment = moment(value, [format, ...(InputParseFormats[type] || [])], true);\n\n return parsedMoment.isValid() ? parsedMoment.toDate() : undefined;\n};\n\nconst SizeToOverlayClassMap: Record<Required<TextInputNextProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\nexport const Input = forwardRef<HTMLDivElement, InputProps>(\n (\n {\n value,\n label,\n open,\n className,\n testId,\n format: propsFormat,\n placeholder,\n range,\n readOnly,\n type,\n setValue,\n focusOnClear,\n labelPlacement,\n size = 'small',\n elementsClassNames: propsElementsClassNames,\n isNext,\n isOpen,\n clearable,\n rangeStep,\n setRangeStep,\n },\n ref\n ) => {\n const format = propsFormat || getDefaultFormat(type, range);\n const formattedValue = formatValue(value, format);\n const [inputValue, setInputValue] = useState(formattedValue);\n const [prevValue, setPrevValue] = useState(value);\n const prevInputValueRef = useRef(inputValue);\n const [inputScroll, setinputScroll] = useState(0);\n const [inputWidth, setInputWidth] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n const showRangeOverlay = !!range && inputValue === formattedValue && isOpen;\n\n // Value changed - reconstructing input value\n if (prevValue !== value) {\n setInputValue(formattedValue);\n setPrevValue(value);\n prevInputValueRef.current = formattedValue;\n }\n\n const onChange = useCallback(\n (typedValue: string) => {\n if (typedValue.trim() === '') {\n setValue?.(undefined);\n setInputValue('');\n prevInputValueRef.current = '';\n return;\n }\n\n const newValue = autocompleteValue({\n type,\n range,\n value: typedValue,\n prevValue: prevInputValueRef.current,\n });\n\n prevInputValueRef.current = newValue;\n\n setInputValue(newValue);\n if (range) {\n // Splitting by hyphen, or en dash, or em dash\n const dateParts = newValue\n .split(/[-–—]/)\n .map(part => parseStringDate(part.trim(), format, type))\n .filter(part => !!part);\n\n if (dateParts.length === 2) {\n const minDate = getMinDate(dateParts[0], dateParts[1]);\n const maxDate = getMaxDate(dateParts[0], dateParts[1]);\n\n if (minDate && maxDate) {\n (setValue as DatePickerChangeHandler<true>)?.([minDate, maxDate]);\n }\n }\n } else {\n const maybeDate = parseStringDate(newValue, format, type);\n\n if (maybeDate) {\n (setValue as DatePickerChangeHandler<false>)?.(maybeDate);\n }\n }\n },\n [format, range, setValue, type]\n );\n\n const onFocus = useCallback<FocusEventHandler<HTMLInputElement>>(\n e => {\n e.target.select();\n open();\n },\n [open]\n );\n\n const onBlur = useCallback(() => {\n setInputValue(formatValue(value, format));\n prevInputValueRef.current = '';\n }, [value, format]);\n\n const onClear = useCallback(() => {\n setValue?.(undefined);\n setInputValue('');\n }, [setValue]);\n\n const elementsClassNames = useMemo(\n () => ({\n ...propsElementsClassNames,\n prefix: classNames(propsElementsClassNames?.prefix, showRangeOverlay && styles.prefix),\n input: classNames(\n propsElementsClassNames?.input,\n showRangeOverlay && styles.rangeDefaultValue\n ),\n inputContainer: classNames(propsElementsClassNames?.inputContainer, styles.inputContainer),\n }),\n [showRangeOverlay, propsElementsClassNames]\n );\n\n const htmlAttributes = useMemo<{ onScroll: UIEventHandler<HTMLInputElement> } | undefined>(\n () =>\n range\n ? {\n onScroll: e => {\n setinputScroll(e.currentTarget.scrollLeft);\n },\n }\n : undefined,\n [range]\n );\n\n useEffect(() => {\n if (!range) {\n return undefined;\n }\n\n const resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => setInputWidth(entry.borderBoxSize?.[0]?.inlineSize || 0));\n });\n\n if (inputRef.current) {\n resizeObserver.observe(inputRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [range]);\n\n if (isNext) {\n return (\n <>\n <TextInputNext\n value={inputValue}\n inputContainerRef={ref}\n inputRef={inputRef}\n label={label}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={showRangeOverlay ? '' : placeholder}\n onChange={onChange}\n readOnly={readOnly}\n clearable={clearable}\n focusOnClear={focusOnClear}\n labelPlacement={labelPlacement}\n size={size}\n elementsClassNames={elementsClassNames}\n htmlAttributes={htmlAttributes}\n />\n\n <Popper\n anchorEl={inputRef.current}\n open={showRangeOverlay}\n placement=\"top-start\"\n className={styles.popper}\n modifiers={rangeOverlayPopperModifiers}\n >\n <div\n className={classNames(styles.rangeOverlay, SizeToOverlayClassMap[size])}\n style={{ width: inputWidth }}\n >\n <div style={{ marginLeft: -inputScroll }}>\n {Array.isArray(value) && value.length === 2 && (\n <>\n <span\n className={classNames(\n styles.rangePart,\n\n rangeStep === 'startDate' && styles.rangePartActive\n )}\n onClick={() => setRangeStep('startDate')}\n >\n {formatValuePart(value[0], format)}\n </span>\n {RangeSeparator}\n <span\n className={classNames(\n styles.rangePart,\n rangeStep === 'endDate' && styles.rangePartActive\n )}\n onClick={() => setRangeStep('endDate')}\n >\n {formatValuePart(value[1], format)}\n </span>\n </>\n )}\n </div>\n </div>\n </Popper>\n </>\n );\n }\n\n return (\n <TextInput\n value={inputValue}\n ref={ref as never}\n label={label}\n onFocus={open}\n onBlur={onBlur}\n forceLabelShrink={isOpen}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={placeholder}\n onChange={onChange}\n readOnly={readOnly}\n onClear={clearable ? onClear : undefined}\n focusOnClear={focusOnClear}\n />\n );\n }\n);\n"],"names":["rangeOverlayPopperModifiers","flip","enabled","formatValuePart","value","format","moment","formatValue","Array","isArray","filter","item","map","join","parseStringDate","type","parsedMoment","concat","_toConsumableArray","InputParseFormats","isValid","toDate","undefined","SizeToOverlayClassMap","small","styles","medium","large","Input","forwardRef","_ref","ref","label","open","className","testId","propsFormat","placeholder","range","readOnly","setValue","focusOnClear","labelPlacement","_ref$size","size","propsElementsClassNames","elementsClassNames","isNext","isOpen","clearable","rangeStep","setRangeStep","getDefaultFormat","formattedValue","useState","_useState2","_slicedToArray","_useState","inputValue","setInputValue","_useState4","_useState3","prevValue","setPrevValue","prevInputValueRef","useRef","_useState6","_useState5","inputScroll","setinputScroll","_useState8","_useState7","inputWidth","setInputWidth","inputRef","showRangeOverlay","current","onChange","useCallback","typedValue","trim","newValue","autocompleteValue","dateParts","split","part","length","minDate","getMinDate","maxDate","getMaxDate","maybeDate","onFocus","e","target","select","onBlur","onClear","useMemo","_objectSpread","prefix","classNames","input","rangeDefaultValue","inputContainer","htmlAttributes","onScroll","currentTarget","scrollLeft","useEffect","resizeObserver","ResizeObserver","entries","forEach","entry","_entry$borderBoxSize","_entry$borderBoxSize$","borderBoxSize","inlineSize","observe","disconnect","_jsxs","_Fragment","children","_jsx","TextInputNext","inputContainerRef","suffix","CalendarThreeIcon","Popper","anchorEl","placement","popper","modifiers","rangeOverlay","style","width","marginLeft","rangePart","rangePartActive","onClick","TextInput","forceLabelShrink"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/DatePicker/TimePicker/TimePicker.tsx"],"names":[],"mappings":"AAwBA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAoBF,eAAO,MAAM,UAAU,uEAQpB,eAAe,4CAwRjB,CAAC"}
1
+ {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/DatePicker/TimePicker/TimePicker.tsx"],"names":[],"mappings":"AAcA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAYF,eAAO,MAAM,UAAU,uEAQpB,eAAe,4CA0OjB,CAAC"}
@@ -1,2 +1,2 @@
1
- import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import{useRef as n,useMemo as c,useState as i,useEffect as t,useCallback as e}from"react";import r from"classnames";import m from"moment-timezone";import{padStart as u}from"lodash";import{TextInputNext as a}from"../../TextInputNext/TextInputNext.js";import{Text as l}from"../../Text/Text.js";import{ToggleButtons as p}from"../../ToggleButtons/ToggleButtons.js";import{isSameDay as d}from"../utils.js";import{Button as j}from"../../Button/Button.js";import I from"./TimePicker.scss.js";import{InfoIcon as f}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/PinOne.js";import"../../../icons/customIcons/icons/PinOneCrossed.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as h,Fragment as v,jsx as b}from"react/jsx-runtime";function g(o,s){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),n.push.apply(n,c)}return n}function O(s){for(var n=1;n<arguments.length;n++){var c=null!=arguments[n]?arguments[n]:{};n%2?g(Object(c),!0).forEach((function(n){o(s,n,c[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(c)):g(Object(c)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(c,o))}))}return s}var C=[{value:"am",label:"AM"},{value:"pm",label:"PM"}],y=function(o){return o.replace(/[^\d]/g,"").substring(0,2)},T=function(o){return Number(o)>=0&&Number(o)<=12},N=function(o){return Number(o)>=0&&Number(o)<60},P=N,F=function(o){return o.getTime()-m(o).startOf("day").toDate().getTime()},D=function(o){return void 0!==o?u(String(o),2,"0"):""},M=function(o){return"12"===o?"00":o},x=function(o){var u=o.value,g=o.onChange,x=o.minDate,A=o.maxDate,k=o.saveTime,S=o.goToToday,z=o.clear,B=!u,R=n(null),w=n(null),E=n(null),H=n(),G=c((function(){var o=u?F(u)>=432e5?"pm":"am":void 0,s="pm"===o?12:0,n=u?u.getHours()-s:void 0;return{hours:D(void 0!==n&&12===n?0:n),minutes:D(null==u?void 0:u.getMinutes()),seconds:D(null==u?void 0:u.getSeconds()),partOfDay:o}}),[u]),U=i(G.hours),q=s(U,2),L=q[0],W=q[1],K=i(G.minutes),Z=s(K,2),J=Z[0],Q=Z[1],V=i(G.seconds),X=s(V,2),Y=X[0],$=X[1];t((function(){H.current!==R.current&&W(G.hours),H.current!==w.current&&Q(G.minutes),H.current!==E.current&&$(G.seconds)}),[G.hours,G.minutes,G.seconds]);var _=c((function(){var o=d(x,u)&&m(x).format("hh:mm:ss A"),s=d(A,u)&&m(A).format("hh:mm:ss A");return o&&s?"In ".concat(o," - ").concat(s," range"):o?"Can’t be earlier than ".concat(o):s?"Can’t be later than ".concat(s):void 0}),[A,x,u]),oo=c((function(){return C.map((function(o){var s="am"===o.value&&!!x&&d(u,x)&&F(x)>=432e5,n="pm"===o.value&&!!A&&d(u,A)&&F(A)<432e5;return O(O({},o),{},{disabled:B||s||n})}))}),[B,A,x,u]),so=e((function(o,s){if(u){var n=new Date(u);if("hours"===o&&T(s)){var c="pm"===G.partOfDay?12:0;n.setHours(c+Number(s))}else if("minutes"===o&&N(s))n.setMinutes(Number(s));else if("seconds"===o&&P(s))n.setSeconds(Number(s));else if("partOfDay"===o&&("am"===s||"pm"===s)){var i=n.getHours()%12;n.setHours(("pm"===s?12:0)+i)}Math.floor(n.getTime()/1e3)!==Math.floor(u.getTime()/1e3)&&g(n)}}),[G.partOfDay,g,u]),no=e((function(o){o.target.select(),H.current=o.target}),[]),co=e((function(o){var s=y(o.target.value);if(o.target===R.current){var n=M(s),c=T(n)?D(n):G.hours;W(c),so("hours",c)}if(o.target===w.current){var i=N(s)?D(s):G.minutes;Q(i),so("minutes",i)}if(o.target===E.current){var t=P(s)?D(s):G.seconds;$(t),so("seconds",t)}H.current=void 0}),[G.hours,G.minutes,G.seconds,so]),io=e((function(o){var s,n=y(o),c=M(n);(W(n),2===n.length&&T(n))&&(so("hours",c),null===(s=w.current)||void 0===s||s.focus())}),[so]),to=e((function(o){var s,n=y(o);(Q(n),2===n.length&&N(n))&&(so("minutes",n),null===(s=E.current)||void 0===s||s.focus())}),[so]),eo=e((function(o){var s=y(o);$(s),P(s)&&so("seconds",s)}),[so]),ro=e((function(o){so("partOfDay",o)}),[so]),mo=Number(null==u?void 0:u.getTime())>Number(null==A?void 0:A.getTime())||Number(null==u?void 0:u.getTime())<Number(null==x?void 0:x.getTime()),uo=!T(L)||mo,ao=!N(J)||mo,lo=!P(Y)||mo;return h(v,{children:[h("div",{className:r(I.timePicker),children:[h(l,{className:I.header,size:14,children:[b("span",{className:r(I.headerText,B&&I.disabled),children:"Time"}),_&&h(v,{children:[b(f,{className:I.constraintIcon,size:16}),_]})]}),b(a,{placeholder:"HH",className:I.input,disabled:B,value:L,onChange:io,status:uo?"error":void 0,inputRef:R,onFocus:no,onBlur:co}),b(l,{color:"T9",size:14,children:":"}),b(a,{placeholder:"MM",className:I.input,disabled:B,value:J,onChange:to,status:ao?"error":void 0,inputRef:w,onFocus:no,onBlur:co}),b(l,{color:"T9",size:14,children:":"}),b(a,{placeholder:"SS",className:I.input,disabled:B,value:Y,onChange:eo,status:lo?"error":void 0,inputRef:E,onFocus:no,onBlur:co}),b(p,{options:oo,className:I.tabs,size:"small",value:G.partOfDay,onChange:ro})]}),h("div",{className:I.footer,children:[S&&b(j,{onClick:S,type:"tertiary",size:"small",children:"Today"}),h("div",{className:I.actions,children:[z&&b(j,{onClick:z,type:"tertiary",size:"small",disabled:!u,children:"Clear"}),b(j,{onClick:k,type:"secondary",size:"small",disabled:!u||uo||ao||lo,children:"Save"})]})]})]})};export{x as TimePicker};
1
+ import o from"@babel/runtime/helpers/slicedToArray";import{useRef as s,useMemo as n,useState as c,useEffect as i,useCallback as t}from"react";import r from"classnames";import e from"moment-timezone";import{padStart as m}from"lodash";import{TextInputNext as u}from"../../TextInputNext/TextInputNext.js";import{Text as a}from"../../Text/Text.js";import{isSameDay as l}from"../utils.js";import{Button as p}from"../../Button/Button.js";import d from"./TimePicker.scss.js";import{InfoIcon as I}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/PinOne.js";import"../../../icons/customIcons/icons/PinOneCrossed.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as j,Fragment as h,jsx as v}from"react/jsx-runtime";var f=function(o){return o.replace(/[^\d]/g,"").substring(0,2)},C=function(o){return Number(o)>=0&&Number(o)<=23},g=function(o){return Number(o)>=0&&Number(o)<60},b=g,N=function(o){return void 0!==o?m(String(o),2,"0"):""},T={input:d.inputElement},F=function(m){var F=m.value,O=m.onChange,x=m.minDate,M=m.maxDate,P=m.saveTime,k=m.goToToday,y=m.clear,z=!F,A=s(null),S=s(null),D=s(null),R=s(),H=n((function(){return{hours:N(null==F?void 0:F.getHours()),minutes:N(null==F?void 0:F.getMinutes()),seconds:N(null==F?void 0:F.getSeconds())}}),[F]),B=c(H.hours),E=o(B,2),G=E[0],U=E[1],q=c(H.minutes),L=o(q,2),W=L[0],w=L[1],K=c(H.seconds),Z=o(K,2),J=Z[0],Q=Z[1];i((function(){R.current!==A.current&&U(H.hours),R.current!==S.current&&w(H.minutes),R.current!==D.current&&Q(H.seconds)}),[H.hours,H.minutes,H.seconds]);var V=n((function(){var o=l(x,F)&&e(x).format("HH:mm:ss"),s=l(M,F)&&e(M).format("HH:mm:ss");return o&&s?"In ".concat(o," - ").concat(s," range"):o?"Can’t be earlier than ".concat(o):s?"Can’t be later than ".concat(s):void 0}),[M,x,F]),X=t((function(o,s){if(F){var n=new Date(F);"hours"===o&&C(s)?n.setHours(Number(s)):"minutes"===o&&g(s)?n.setMinutes(Number(s)):"seconds"===o&&b(s)&&n.setSeconds(Number(s)),Math.floor(n.getTime()/1e3)!==Math.floor(F.getTime()/1e3)&&O(n)}}),[O,F]),Y=t((function(o){o.target.select(),R.current=o.target}),[]),$=t((function(o){var s=f(o.target.value);if(o.target===A.current){var n=C(s)?N(s):H.hours;U(n),X("hours",n)}if(o.target===S.current){var c=g(s)?N(s):H.minutes;w(c),X("minutes",c)}if(o.target===D.current){var i=b(s)?N(s):H.seconds;Q(i),X("seconds",i)}R.current=void 0}),[H.hours,H.minutes,H.seconds,X]),_=t((function(o){var s,n=f(o);(U(n),2===n.length&&C(n))&&(X("hours",n),null===(s=S.current)||void 0===s||s.focus())}),[X]),oo=t((function(o){var s,n=f(o);(w(n),2===n.length&&g(n))&&(X("minutes",n),null===(s=D.current)||void 0===s||s.focus())}),[X]),so=t((function(o){var s=f(o);Q(s),b(s)&&X("seconds",s)}),[X]),no=Number(null==F?void 0:F.getTime())>Number(null==M?void 0:M.getTime())||Number(null==F?void 0:F.getTime())<Number(null==x?void 0:x.getTime()),co=!C(G)||no,io=!g(W)||no,to=!b(J)||no;return j(h,{children:[j("div",{className:r(d.timePicker),children:[v(a,{color:z?"T9":"T1",size:14,className:d.header,children:"Time"}),v(u,{placeholder:"HH",className:d.input,disabled:z,value:G,onChange:_,status:co?"error":void 0,inputRef:A,onFocus:Y,onBlur:$,elementsClassNames:T}),v(a,{color:"T9",size:14,children:":"}),v(u,{placeholder:"MM",className:d.input,disabled:z,value:W,onChange:oo,status:io?"error":void 0,inputRef:S,onFocus:Y,onBlur:$,elementsClassNames:T}),v(a,{color:"T9",size:14,children:":"}),v(u,{placeholder:"SS",className:d.input,disabled:z,value:J,onChange:so,status:to?"error":void 0,inputRef:D,onFocus:Y,onBlur:$,elementsClassNames:T}),V&&j(a,{className:d.constraintText,size:12,children:[v(I,{className:d.constraintIcon,size:16}),V]})]}),j("div",{className:d.footer,children:[k&&v(p,{onClick:k,type:"tertiary",size:"small",children:"Today"}),j("div",{className:d.actions,children:[y&&v(p,{onClick:y,type:"tertiary",size:"small",disabled:!F,children:"Clear"}),v(p,{onClick:P,type:"secondary",size:"small",disabled:!F||co||io||to,children:"Save"})]})]})]})};export{F as TimePicker};
2
2
  //# sourceMappingURL=TimePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.js","sources":["../../../../src/componentsV2/DatePicker/TimePicker/TimePicker.tsx"],"sourcesContent":["import { FocusEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport moment from 'moment-timezone';\nimport { padStart } from 'lodash';\n\nimport { TextInputNext } from '../../TextInputNext';\nimport { Text } from '../../Text';\nimport { ToggleButtons } from '../../ToggleButtons';\nimport { isSameDay } from '../utils';\nimport { Button } from '../../Button';\n\nimport styles from './TimePicker.scss';\n\nimport { InfoIcon } from '~/icons';\n\ntype AmPm = 'am' | 'pm';\n\nconst HalfOfDayMs = 12 * 60 * 60 * 1000;\n\nconst ToggleButtonsOptions: { value: AmPm; label: string }[] = [\n { value: 'am', label: 'AM' },\n { value: 'pm', label: 'PM' },\n];\n\nexport type TimePickerProps = {\n value?: Date;\n onChange: (date: Date) => void;\n saveTime: () => void;\n maxDate?: Date;\n minDate?: Date;\n\n goToToday?: () => void;\n clear?: () => void;\n};\n\nconst sanitize = (value: string) => value.replace(/[^\\d]/g, '').substring(0, 2);\nconst validateHours = (value?: string) => Number(value) >= 0 && Number(value) <= 12;\nconst validateMinutes = (value?: string) => Number(value) >= 0 && Number(value) < 60;\nconst validateSeconds = validateMinutes;\n\nconst getOffsetFromDayStart = (date: Date) => {\n return date.getTime() - moment(date).startOf('day').toDate().getTime();\n};\n\nconst formatTimePart = (part?: string | number) =>\n part !== undefined ? padStart(String(part), 2, '0') : '';\n\nconst getPartOfDay = (date: Date) => {\n return getOffsetFromDayStart(date) >= HalfOfDayMs ? 'pm' : 'am';\n};\n\nconst getActualHours = (sanitized: string) => (sanitized === '12' ? '00' : sanitized);\n\nexport const TimePicker = ({\n value,\n onChange,\n minDate,\n maxDate,\n saveTime,\n goToToday,\n clear,\n}: TimePickerProps) => {\n const disabled = !value;\n\n const hoursInputRef = useRef<HTMLInputElement>(null);\n const minutesInputRef = useRef<HTMLInputElement>(null);\n const secondsInputRef = useRef<HTMLInputElement>(null);\n\n const focusedInputRef = useRef<HTMLInputElement>();\n\n const timeParts = useMemo(() => {\n const partOfDay = value ? getPartOfDay(value) : undefined;\n\n const hourOffset = partOfDay === 'pm' ? 12 : 0;\n\n const hours = value ? value.getHours() - hourOffset : undefined;\n\n const hoursAmPm = hours !== undefined && hours === 12 ? 0 : hours;\n\n return {\n hours: formatTimePart(hoursAmPm),\n minutes: formatTimePart(value?.getMinutes()),\n seconds: formatTimePart(value?.getSeconds()),\n partOfDay,\n };\n }, [value]);\n\n const [hours, setHours] = useState(timeParts.hours);\n const [minutes, setMinutes] = useState(timeParts.minutes);\n const [seconds, setSeconds] = useState(timeParts.seconds);\n\n useEffect(() => {\n if (focusedInputRef.current !== hoursInputRef.current) {\n setHours(timeParts.hours);\n }\n if (focusedInputRef.current !== minutesInputRef.current) {\n setMinutes(timeParts.minutes);\n }\n if (focusedInputRef.current !== secondsInputRef.current) {\n setSeconds(timeParts.seconds);\n }\n }, [timeParts.hours, timeParts.minutes, timeParts.seconds]);\n\n const constraintText = useMemo(() => {\n const minValue = isSameDay(minDate, value) && moment(minDate).format('hh:mm:ss A');\n const maxValue = isSameDay(maxDate, value) && moment(maxDate).format('hh:mm:ss A');\n\n if (minValue && maxValue) {\n return `In ${minValue} - ${maxValue} range`;\n } else if (minValue) {\n return `Can’t be earlier than ${minValue}`;\n } else if (maxValue) {\n return `Can’t be later than ${maxValue}`;\n }\n return undefined;\n }, [maxDate, minDate, value]);\n\n const amPmOptions = useMemo(\n () =>\n ToggleButtonsOptions.map(item => {\n const isAmDisabled =\n item.value === 'am' &&\n !!minDate &&\n isSameDay(value, minDate) &&\n getOffsetFromDayStart(minDate) >= HalfOfDayMs;\n\n const isPmDisabled =\n item.value === 'pm' &&\n !!maxDate &&\n isSameDay(value, maxDate) &&\n getOffsetFromDayStart(maxDate) < HalfOfDayMs;\n\n return { ...item, disabled: disabled || isAmDisabled || isPmDisabled };\n }),\n [disabled, maxDate, minDate, value]\n );\n\n const updateValue = useCallback(\n (type: 'hours' | 'minutes' | 'seconds' | 'partOfDay', newValue: string) => {\n if (!value) {\n return;\n }\n\n const newDate = new Date(value);\n\n if (type === 'hours' && validateHours(newValue)) {\n const partOfDayOffset = timeParts.partOfDay === 'pm' ? 12 : 0;\n newDate.setHours(partOfDayOffset + Number(newValue));\n } else if (type === 'minutes' && validateMinutes(newValue)) {\n newDate.setMinutes(Number(newValue));\n } else if (type === 'seconds' && validateSeconds(newValue)) {\n newDate.setSeconds(Number(newValue));\n } else if (type === 'partOfDay' && (newValue === 'am' || newValue === 'pm')) {\n const hoursOffset = newDate.getHours() % 12;\n newDate.setHours((newValue === 'pm' ? 12 : 0) + hoursOffset);\n }\n\n if (Math.floor(newDate.getTime() / 1000) !== Math.floor(value.getTime() / 1000)) {\n onChange(newDate);\n }\n },\n [timeParts.partOfDay, onChange, value]\n );\n\n const onFieldFocus = useCallback<FocusEventHandler<HTMLInputElement>>(e => {\n e.target.select();\n focusedInputRef.current = e.target;\n }, []);\n\n const onFieldBlur = useCallback<FocusEventHandler<HTMLInputElement>>(\n e => {\n const fieldValue = sanitize(e.target.value);\n\n if (e.target === hoursInputRef.current) {\n const actualHours = getActualHours(fieldValue);\n const newHours = validateHours(actualHours) ? formatTimePart(actualHours) : timeParts.hours;\n setHours(newHours);\n updateValue('hours', newHours);\n }\n if (e.target === minutesInputRef.current) {\n const newMinutes = validateMinutes(fieldValue)\n ? formatTimePart(fieldValue)\n : timeParts.minutes;\n setMinutes(newMinutes);\n updateValue('minutes', newMinutes);\n }\n if (e.target === secondsInputRef.current) {\n const newSeconds = validateSeconds(fieldValue)\n ? formatTimePart(fieldValue)\n : timeParts.seconds;\n setSeconds(newSeconds);\n updateValue('seconds', newSeconds);\n }\n\n focusedInputRef.current = undefined;\n },\n [timeParts.hours, timeParts.minutes, timeParts.seconds, updateValue]\n );\n\n const onChangeHours = useCallback(\n (newValue: string) => {\n const sanitized = sanitize(newValue);\n const actualHours = getActualHours(sanitized);\n setHours(sanitized);\n if (sanitized.length === 2 && validateHours(sanitized)) {\n updateValue('hours', actualHours);\n minutesInputRef.current?.focus();\n }\n },\n [updateValue]\n );\n\n const onChangeMinutes = useCallback(\n (newValue: string) => {\n const sanitized = sanitize(newValue);\n setMinutes(sanitized);\n if (sanitized.length === 2 && validateMinutes(sanitized)) {\n updateValue('minutes', sanitized);\n secondsInputRef.current?.focus();\n }\n },\n [updateValue]\n );\n\n const onChangeSeconds = useCallback(\n (newValue: string) => {\n const sanitized = sanitize(newValue);\n setSeconds(sanitized);\n if (validateSeconds(sanitized)) {\n updateValue('seconds', sanitized);\n }\n },\n [updateValue]\n );\n\n const setPartOfDay = useCallback(\n (newValue: string) => {\n updateValue('partOfDay', newValue);\n },\n [updateValue]\n );\n\n const outOfBounds =\n Number(value?.getTime()) > Number(maxDate?.getTime()) ||\n Number(value?.getTime()) < Number(minDate?.getTime());\n\n const hoursInvalid = !validateHours(hours) || outOfBounds;\n const minutesInvalid = !validateMinutes(minutes) || outOfBounds;\n const secondsInvalid = !validateSeconds(seconds) || outOfBounds;\n\n return (\n <>\n <div className={classNames(styles.timePicker)}>\n <Text className={styles.header} size={14}>\n <span className={classNames(styles.headerText, disabled && styles.disabled)}>Time</span>\n {constraintText && (\n <>\n <InfoIcon className={styles.constraintIcon} size={16} />\n {constraintText}\n </>\n )}\n </Text>\n\n <TextInputNext\n placeholder=\"HH\"\n className={styles.input}\n disabled={disabled}\n value={hours}\n onChange={onChangeHours}\n status={hoursInvalid ? 'error' : undefined}\n inputRef={hoursInputRef}\n onFocus={onFieldFocus}\n onBlur={onFieldBlur}\n />\n\n <Text color=\"T9\" size={14}>\n :\n </Text>\n\n <TextInputNext\n placeholder=\"MM\"\n className={styles.input}\n disabled={disabled}\n value={minutes}\n onChange={onChangeMinutes}\n status={minutesInvalid ? 'error' : undefined}\n inputRef={minutesInputRef}\n onFocus={onFieldFocus}\n onBlur={onFieldBlur}\n />\n\n <Text color=\"T9\" size={14}>\n :\n </Text>\n\n <TextInputNext\n placeholder=\"SS\"\n className={styles.input}\n disabled={disabled}\n value={seconds}\n onChange={onChangeSeconds}\n status={secondsInvalid ? 'error' : undefined}\n inputRef={secondsInputRef}\n onFocus={onFieldFocus}\n onBlur={onFieldBlur}\n />\n\n <ToggleButtons\n options={amPmOptions}\n className={styles.tabs}\n size=\"small\"\n value={timeParts.partOfDay}\n onChange={setPartOfDay}\n />\n </div>\n <div className={styles.footer}>\n {goToToday && (\n <Button onClick={goToToday} type=\"tertiary\" size=\"small\">\n Today\n </Button>\n )}\n\n <div className={styles.actions}>\n {clear && (\n <Button onClick={clear} type=\"tertiary\" size=\"small\" disabled={!value}>\n Clear\n </Button>\n )}\n\n <Button\n onClick={saveTime}\n type=\"secondary\"\n size=\"small\"\n disabled={!value || hoursInvalid || minutesInvalid || secondsInvalid}\n >\n Save\n </Button>\n </div>\n </div>\n </>\n );\n};\n"],"names":["ToggleButtonsOptions","value","label","sanitize","replace","substring","validateHours","Number","validateMinutes","validateSeconds","getOffsetFromDayStart","date","getTime","moment","startOf","toDate","formatTimePart","part","undefined","padStart","String","getActualHours","sanitized","TimePicker","_ref","onChange","minDate","maxDate","saveTime","goToToday","clear","disabled","hoursInputRef","useRef","minutesInputRef","secondsInputRef","focusedInputRef","timeParts","useMemo","partOfDay","hourOffset","hours","getHours","minutes","getMinutes","seconds","getSeconds","_useState","useState","_useState2","_slicedToArray","setHours","_useState3","_useState4","setMinutes","_useState5","_useState6","setSeconds","useEffect","current","constraintText","minValue","isSameDay","format","maxValue","concat","amPmOptions","map","item","isAmDisabled","isPmDisabled","_objectSpread","updateValue","useCallback","type","newValue","newDate","Date","partOfDayOffset","hoursOffset","Math","floor","onFieldFocus","e","target","select","onFieldBlur","fieldValue","actualHours","newHours","newMinutes","newSeconds","onChangeHours","_minutesInputRef$curr","length","focus","onChangeMinutes","_secondsInputRef$curr","onChangeSeconds","setPartOfDay","outOfBounds","hoursInvalid","minutesInvalid","secondsInvalid","_jsxs","_Fragment","children","className","classNames","styles","timePicker","Text","header","size","_jsx","headerText","InfoIcon","constraintIcon","TextInputNext","placeholder","input","status","inputRef","onFocus","onBlur","color","ToggleButtons","options","tabs","footer","Button","onClick","actions"],"mappings":"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"}
1
+ {"version":3,"file":"TimePicker.js","sources":["../../../../src/componentsV2/DatePicker/TimePicker/TimePicker.tsx"],"sourcesContent":["import { FocusEventHandler, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport moment from 'moment-timezone';\nimport { padStart } from 'lodash';\n\nimport { TextInputNext } from '../../TextInputNext';\nimport { Text } from '../../Text';\nimport { isSameDay } from '../utils';\nimport { Button } from '../../Button';\n\nimport styles from './TimePicker.scss';\n\nimport { InfoIcon } from '~/icons';\n\nexport type TimePickerProps = {\n value?: Date;\n onChange: (date: Date) => void;\n saveTime: () => void;\n maxDate?: Date;\n minDate?: Date;\n\n goToToday?: () => void;\n clear?: () => void;\n};\n\nconst sanitize = (value: string) => value.replace(/[^\\d]/g, '').substring(0, 2);\nconst validateHours = (value?: string) => Number(value) >= 0 && Number(value) <= 23;\nconst validateMinutes = (value?: string) => Number(value) >= 0 && Number(value) < 60;\nconst validateSeconds = validateMinutes;\n\nconst formatTimePart = (part?: string | number) =>\n part !== undefined ? padStart(String(part), 2, '0') : '';\n\nconst elementsClassNames = { input: styles.inputElement };\n\nexport const TimePicker = ({\n value,\n onChange,\n minDate,\n maxDate,\n saveTime,\n goToToday,\n clear,\n}: TimePickerProps) => {\n const disabled = !value;\n\n const hoursInputRef = useRef<HTMLInputElement>(null);\n const minutesInputRef = useRef<HTMLInputElement>(null);\n const secondsInputRef = useRef<HTMLInputElement>(null);\n\n const focusedInputRef = useRef<HTMLInputElement>();\n\n const timeParts = useMemo(() => {\n return {\n hours: formatTimePart(value?.getHours()),\n minutes: formatTimePart(value?.getMinutes()),\n seconds: formatTimePart(value?.getSeconds()),\n };\n }, [value]);\n\n const [hours, setHours] = useState(timeParts.hours);\n const [minutes, setMinutes] = useState(timeParts.minutes);\n const [seconds, setSeconds] = useState(timeParts.seconds);\n\n useEffect(() => {\n if (focusedInputRef.current !== hoursInputRef.current) {\n setHours(timeParts.hours);\n }\n if (focusedInputRef.current !== minutesInputRef.current) {\n setMinutes(timeParts.minutes);\n }\n if (focusedInputRef.current !== secondsInputRef.current) {\n setSeconds(timeParts.seconds);\n }\n }, [timeParts.hours, timeParts.minutes, timeParts.seconds]);\n\n const constraintText = useMemo(() => {\n const minValue = isSameDay(minDate, value) && moment(minDate).format('HH:mm:ss');\n const maxValue = isSameDay(maxDate, value) && moment(maxDate).format('HH:mm:ss');\n\n if (minValue && maxValue) {\n return `In ${minValue} - ${maxValue} range`;\n } else if (minValue) {\n return `Can’t be earlier than ${minValue}`;\n } else if (maxValue) {\n return `Can’t be later than ${maxValue}`;\n }\n return undefined;\n }, [maxDate, minDate, value]);\n\n const updateValue = useCallback(\n (type: 'hours' | 'minutes' | 'seconds', newValue: string) => {\n if (!value) {\n return;\n }\n\n const newDate = new Date(value);\n\n if (type === 'hours' && validateHours(newValue)) {\n newDate.setHours(Number(newValue));\n } else if (type === 'minutes' && validateMinutes(newValue)) {\n newDate.setMinutes(Number(newValue));\n } else if (type === 'seconds' && validateSeconds(newValue)) {\n newDate.setSeconds(Number(newValue));\n }\n\n if (Math.floor(newDate.getTime() / 1000) !== Math.floor(value.getTime() / 1000)) {\n onChange(newDate);\n }\n },\n [onChange, value]\n );\n\n const onFieldFocus = useCallback<FocusEventHandler<HTMLInputElement>>(e => {\n e.target.select();\n focusedInputRef.current = e.target;\n }, []);\n\n const onFieldBlur = useCallback<FocusEventHandler<HTMLInputElement>>(\n e => {\n const fieldValue = sanitize(e.target.value);\n\n if (e.target === hoursInputRef.current) {\n const newHours = validateHours(fieldValue) ? formatTimePart(fieldValue) : timeParts.hours;\n setHours(newHours);\n updateValue('hours', newHours);\n }\n if (e.target === minutesInputRef.current) {\n const newMinutes = validateMinutes(fieldValue)\n ? formatTimePart(fieldValue)\n : timeParts.minutes;\n setMinutes(newMinutes);\n updateValue('minutes', newMinutes);\n }\n if (e.target === secondsInputRef.current) {\n const newSeconds = validateSeconds(fieldValue)\n ? formatTimePart(fieldValue)\n : timeParts.seconds;\n setSeconds(newSeconds);\n updateValue('seconds', newSeconds);\n }\n\n focusedInputRef.current = undefined;\n },\n [timeParts.hours, timeParts.minutes, timeParts.seconds, updateValue]\n );\n\n const onChangeHours = useCallback(\n (newValue: string) => {\n const sanitized = sanitize(newValue);\n setHours(sanitized);\n if (sanitized.length === 2 && validateHours(sanitized)) {\n updateValue('hours', sanitized);\n minutesInputRef.current?.focus();\n }\n },\n [updateValue]\n );\n\n const onChangeMinutes = useCallback(\n (newValue: string) => {\n const sanitized = sanitize(newValue);\n setMinutes(sanitized);\n if (sanitized.length === 2 && validateMinutes(sanitized)) {\n updateValue('minutes', sanitized);\n secondsInputRef.current?.focus();\n }\n },\n [updateValue]\n );\n\n const onChangeSeconds = useCallback(\n (newValue: string) => {\n const sanitized = sanitize(newValue);\n setSeconds(sanitized);\n if (validateSeconds(sanitized)) {\n updateValue('seconds', sanitized);\n }\n },\n [updateValue]\n );\n\n const outOfBounds =\n Number(value?.getTime()) > Number(maxDate?.getTime()) ||\n Number(value?.getTime()) < Number(minDate?.getTime());\n\n const hoursInvalid = !validateHours(hours) || outOfBounds;\n const minutesInvalid = !validateMinutes(minutes) || outOfBounds;\n const secondsInvalid = !validateSeconds(seconds) || outOfBounds;\n\n return (\n <>\n <div className={classNames(styles.timePicker)}>\n <Text color={disabled ? 'T9' : 'T1'} size={14} className={styles.header}>\n Time\n </Text>\n\n <TextInputNext\n placeholder=\"HH\"\n className={styles.input}\n disabled={disabled}\n value={hours}\n onChange={onChangeHours}\n status={hoursInvalid ? 'error' : undefined}\n inputRef={hoursInputRef}\n onFocus={onFieldFocus}\n onBlur={onFieldBlur}\n elementsClassNames={elementsClassNames}\n />\n\n <Text color=\"T9\" size={14}>\n :\n </Text>\n\n <TextInputNext\n placeholder=\"MM\"\n className={styles.input}\n disabled={disabled}\n value={minutes}\n onChange={onChangeMinutes}\n status={minutesInvalid ? 'error' : undefined}\n inputRef={minutesInputRef}\n onFocus={onFieldFocus}\n onBlur={onFieldBlur}\n elementsClassNames={elementsClassNames}\n />\n\n <Text color=\"T9\" size={14}>\n :\n </Text>\n\n <TextInputNext\n placeholder=\"SS\"\n className={styles.input}\n disabled={disabled}\n value={seconds}\n onChange={onChangeSeconds}\n status={secondsInvalid ? 'error' : undefined}\n inputRef={secondsInputRef}\n onFocus={onFieldFocus}\n onBlur={onFieldBlur}\n elementsClassNames={elementsClassNames}\n />\n\n {constraintText && (\n <Text className={styles.constraintText} size={12}>\n <InfoIcon className={styles.constraintIcon} size={16} />\n {constraintText}\n </Text>\n )}\n </div>\n <div className={styles.footer}>\n {goToToday && (\n <Button onClick={goToToday} type=\"tertiary\" size=\"small\">\n Today\n </Button>\n )}\n\n <div className={styles.actions}>\n {clear && (\n <Button onClick={clear} type=\"tertiary\" size=\"small\" disabled={!value}>\n Clear\n </Button>\n )}\n\n <Button\n onClick={saveTime}\n type=\"secondary\"\n size=\"small\"\n disabled={!value || hoursInvalid || minutesInvalid || secondsInvalid}\n >\n Save\n </Button>\n </div>\n </div>\n </>\n );\n};\n"],"names":["sanitize","value","replace","substring","validateHours","Number","validateMinutes","validateSeconds","formatTimePart","part","undefined","padStart","String","elementsClassNames","input","styles","inputElement","TimePicker","_ref","onChange","minDate","maxDate","saveTime","goToToday","clear","disabled","hoursInputRef","useRef","minutesInputRef","secondsInputRef","focusedInputRef","timeParts","useMemo","hours","getHours","minutes","getMinutes","seconds","getSeconds","_useState","useState","_useState2","_slicedToArray","setHours","_useState3","_useState4","setMinutes","_useState5","_useState6","setSeconds","useEffect","current","constraintText","minValue","isSameDay","moment","format","maxValue","concat","updateValue","useCallback","type","newValue","newDate","Date","Math","floor","getTime","onFieldFocus","e","target","select","onFieldBlur","fieldValue","newHours","newMinutes","newSeconds","onChangeHours","_minutesInputRef$curr","sanitized","length","focus","onChangeMinutes","_secondsInputRef$curr","onChangeSeconds","outOfBounds","hoursInvalid","minutesInvalid","secondsInvalid","_jsxs","_Fragment","children","className","classNames","timePicker","_jsx","Text","color","size","header","TextInputNext","placeholder","status","inputRef","onFocus","onBlur","InfoIcon","constraintIcon","footer","Button","onClick","actions"],"mappings":"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"}