@reltio/components 1.4.1699 → 1.4.1700

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 (39) hide show
  1. package/cjs/components/DropDownSelector/styles.d.ts +1 -1
  2. package/cjs/components/MetadataTypesSelector/styles.d.ts +1 -1
  3. package/cjs/components/Popper/Popper.d.ts +1 -1
  4. package/cjs/components/ProfileBandNavigation/ProfileBandNavigationWidget.d.ts +1 -1
  5. package/cjs/components/attributes/editMode/SimpleAttributeEditor/utils.js +1 -1
  6. package/cjs/components/attributes/inline/SimpleAttributeEditor/styles.d.ts +1 -1
  7. package/cjs/components/editors/DateEditor/DateEditor.d.ts +2 -2
  8. package/cjs/components/editors/DateEditor/DateEditor.js +13 -35
  9. package/cjs/components/editors/DateRangeEditor/styles.d.ts +1 -1
  10. package/cjs/components/editors/TimestampEditor/TimestampEditor.d.ts +2 -2
  11. package/cjs/components/editors/TimestampEditor/TimestampEditor.js +14 -61
  12. package/cjs/components/editors/TimestampEditor/styles.d.ts +1 -1
  13. package/cjs/components/editors/TimestampEditor/styles.js +7 -17
  14. package/cjs/components/editors/constants.d.ts +1 -0
  15. package/cjs/components/editors/constants.js +3 -2
  16. package/cjs/components/editors/useDateEditor/helpers.d.ts +6 -0
  17. package/cjs/components/editors/useDateEditor/helpers.js +34 -0
  18. package/cjs/components/editors/useDateEditor/useDateEditor.d.ts +17 -0
  19. package/cjs/components/editors/useDateEditor/useDateEditor.js +62 -0
  20. package/esm/components/DropDownSelector/styles.d.ts +1 -1
  21. package/esm/components/MetadataTypesSelector/styles.d.ts +1 -1
  22. package/esm/components/Popper/Popper.d.ts +1 -1
  23. package/esm/components/ProfileBandNavigation/ProfileBandNavigationWidget.d.ts +1 -1
  24. package/esm/components/attributes/editMode/SimpleAttributeEditor/utils.js +1 -1
  25. package/esm/components/attributes/inline/SimpleAttributeEditor/styles.d.ts +1 -1
  26. package/esm/components/editors/DateEditor/DateEditor.d.ts +2 -2
  27. package/esm/components/editors/DateEditor/DateEditor.js +15 -37
  28. package/esm/components/editors/DateRangeEditor/styles.d.ts +1 -1
  29. package/esm/components/editors/TimestampEditor/TimestampEditor.d.ts +2 -2
  30. package/esm/components/editors/TimestampEditor/TimestampEditor.js +16 -40
  31. package/esm/components/editors/TimestampEditor/styles.d.ts +1 -1
  32. package/esm/components/editors/TimestampEditor/styles.js +7 -17
  33. package/esm/components/editors/constants.d.ts +1 -0
  34. package/esm/components/editors/constants.js +2 -1
  35. package/esm/components/editors/useDateEditor/helpers.d.ts +6 -0
  36. package/esm/components/editors/useDateEditor/helpers.js +24 -0
  37. package/esm/components/editors/useDateEditor/useDateEditor.d.ts +17 -0
  38. package/esm/components/editors/useDateEditor/useDateEditor.js +55 -0
  39. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- export const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"filledInputUnderline" | "inputLabel" | "control" | "formControl" | "valueContainer" | "dropdownIndicator" | "filledInputRoot">;
1
+ export const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"filledInputUnderline" | "control" | "formControl" | "valueContainer" | "dropdownIndicator" | "inputLabel" | "filledInputRoot">;
2
2
  export namespace customStyles {
3
3
  function menu(baseStyles: any): any;
4
4
  function menuList(baseStyles: any): any;
@@ -1 +1 @@
1
- export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"icon" | "input" | "root" | "inputLabel" | "inputRoot" | "inputText" | "emptyInput" | "disabledInput" | "disabledPointer" | "disabledUnderline" | "popup-opened-icon">;
1
+ export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"icon" | "input" | "root" | "inputRoot" | "inputLabel" | "inputText" | "emptyInput" | "disabledInput" | "disabledPointer" | "disabledUnderline" | "popup-opened-icon">;
@@ -13,5 +13,5 @@ declare const Popper: React.ForwardRefExoticComponent<Pick<Omit<import("@mui/bas
13
13
  anchorEl?: HTMLElement | null;
14
14
  excludeAnchorFromBackdrop?: boolean;
15
15
  onClose?: () => void;
16
- }, "id" | "hidden" | "open" | "title" | "key" | "children" | "defaultValue" | "prefix" | "results" | "slot" | "style" | "color" | "translate" | "container" | "transition" | "className" | "sx" | "lang" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "security" | "unselectable" | "inputMode" | "is" | "components" | "componentsProps" | "slotProps" | "slots" | "onClose" | "component" | "disablePortal" | "keepMounted" | "anchorEl" | "placement" | "modifiers" | "popperOptions" | "popperRef" | "modal" | "excludeAnchorFromBackdrop"> & React.RefAttributes<HTMLDivElement>>;
16
+ }, "id" | "hidden" | "open" | "title" | "key" | "children" | "defaultValue" | "prefix" | "results" | "slot" | "style" | "color" | "translate" | "container" | "transition" | "className" | "sx" | "lang" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "security" | "unselectable" | "inputMode" | "is" | "components" | "componentsProps" | "slotProps" | "slots" | "onClose" | "anchorEl" | "disablePortal" | "keepMounted" | "modifiers" | "placement" | "popperOptions" | "popperRef" | "component" | "modal" | "excludeAnchorFromBackdrop"> & React.RefAttributes<HTMLDivElement>>;
17
17
  export default Popper;
@@ -17,7 +17,7 @@ declare const LinkWithTooltip: React.ForwardRefExoticComponent<import("prop-type
17
17
  variant?: import("@mui/types").OverridableStringUnion<"inherit" | import("@mui/material").TypographyVariant, import("@mui/material").TypographyPropsVariantOverrides>;
18
18
  } & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "key" | keyof React.AnchorHTMLAttributes<HTMLAnchorElement>> & {
19
19
  ref?: React.Ref<HTMLAnchorElement>;
20
- }, "m" | "id" | "type" | "hidden" | "visibility" | "title" | "key" | "children" | "defaultValue" | "prefix" | "order" | "width" | "minHeight" | "maxHeight" | "height" | "flex" | "minWidth" | "maxWidth" | "top" | "right" | "left" | "position" | "referrerPolicy" | "results" | "p" | "slot" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxShadow" | "boxSizing" | "color" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "letterSpacing" | "lineHeight" | "marginBottom" | "marginLeft" | "marginRight" | "marginTop" | "paddingBottom" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "translate" | "whiteSpace" | "zIndex" | "border" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "overflow" | "padding" | "underline" | keyof import("@mui/material/OverridableComponent").CommonProps | "sx" | "lang" | "media" | "target" | "role" | "tabIndex" | "href" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "security" | "unselectable" | "inputMode" | "is" | "hrefLang" | "rel" | "download" | "ping" | "align" | "variant" | "bgcolor" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping" | "TypographyClasses"> & {
20
+ }, "m" | "id" | "type" | "hidden" | "visibility" | "title" | "key" | "children" | "defaultValue" | "prefix" | "order" | "width" | "minHeight" | "maxHeight" | "height" | "flex" | "minWidth" | "maxWidth" | "top" | "right" | "left" | "position" | "referrerPolicy" | "results" | "p" | "slot" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxShadow" | "boxSizing" | "color" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "letterSpacing" | "lineHeight" | "marginBottom" | "marginLeft" | "marginRight" | "marginTop" | "paddingBottom" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "translate" | "whiteSpace" | "zIndex" | "border" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "overflow" | "padding" | "underline" | keyof import("@mui/material/OverridableComponent").CommonProps | "sx" | "lang" | "media" | "target" | "role" | "tabIndex" | "href" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "security" | "unselectable" | "inputMode" | "is" | "hrefLang" | "rel" | "download" | "ping" | "align" | "variant" | "bgcolor" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "noWrap" | "gutterBottom" | "paragraph" | "variantMapping" | "TypographyClasses"> & {
21
21
  component: string;
22
22
  }>;
23
23
  type Props = {
@@ -44,7 +44,7 @@ var editorValueToAttributeValue = function (attributeType, editorValue) {
44
44
  case mdm_sdk_1.DataTypes.TYPE_DATE:
45
45
  return (editorValue && (0, moment_1.default)(editorValue).format('YYYY-MM-DD')) || '';
46
46
  case mdm_sdk_1.DataTypes.TYPE_TIMESTAMP: {
47
- return (editorValue && (0, moment_1.default)(editorValue).format()) || '';
47
+ return (editorValue && (0, moment_1.default)(editorValue).utc().format()) || '';
48
48
  }
49
49
  case mdm_sdk_1.DataTypes.TYPE_ACTIVENESS_DATE:
50
50
  case mdm_sdk_1.DataTypes.TYPE_LOCAL_DATE:
@@ -2,5 +2,5 @@ type StylesProps = {
2
2
  color: string;
3
3
  containerWidth: number;
4
4
  };
5
- export declare const useStyles: (props: StylesProps) => import("@mui/styles").ClassNameMap<"input" | "textField" | "paper" | "inputMultiline" | "booleanEditor" | "timestampEditor" | "popoverRoot">;
5
+ export declare const useStyles: (props: StylesProps) => import("@mui/styles").ClassNameMap<"input" | "inputMultiline" | "textField" | "paper" | "booleanEditor" | "timestampEditor" | "popoverRoot">;
6
6
  export {};
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import { Moment } from 'moment';
3
3
  import { DatePickerProps } from '@mui/x-date-pickers/DatePicker';
4
- type DateEditorProps = Omit<DatePickerProps<Moment>, 'value' | 'minDate' | 'maxDate' | 'onChange'> & {
4
+ type Props = Omit<DatePickerProps<Moment>, 'value' | 'minDate' | 'maxDate' | 'onChange'> & {
5
5
  minDate?: Date | number;
6
6
  maxDate?: Date | number;
7
7
  value?: Date | number;
8
8
  onChange: (value: Date) => void;
9
9
  isCrossedOut?: boolean;
10
10
  };
11
- declare const DateEditor: ({ value, minDate, maxDate, format, label, onChange, slotProps, isCrossedOut, ...otherProps }: DateEditorProps) => JSX.Element;
11
+ declare const DateEditor: ({ minDate, maxDate, value: valueProp, format, label, onChange, slotProps, isCrossedOut, ...otherProps }: Props) => JSX.Element;
12
12
  export default DateEditor;
@@ -49,59 +49,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
49
49
  };
50
50
  Object.defineProperty(exports, "__esModule", { value: true });
51
51
  var react_1 = __importStar(require("react"));
52
- var ui_i18n_1 = __importDefault(require("ui-i18n"));
52
+ var moment_1 = __importDefault(require("moment"));
53
53
  var classnames_1 = __importDefault(require("classnames"));
54
54
  var ramda_1 = require("ramda");
55
- var moment_1 = __importDefault(require("moment"));
56
55
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
57
56
  var DatePicker_1 = require("@mui/x-date-pickers/DatePicker");
58
- var constants_1 = require("../constants");
57
+ var useDateEditor_1 = require("../useDateEditor/useDateEditor");
59
58
  var styles_1 = require("./styles");
60
59
  var DateEditor = function (_a) {
61
60
  var _b;
62
- var value = _a.value, _c = _a.minDate, minDate = _c === void 0 ? constants_1.DEFAULT_MIN_DATE : _c, _d = _a.maxDate, maxDate = _d === void 0 ? constants_1.DEFAULT_MAX_DATE : _d, format = _a.format, label = _a.label, onChange = _a.onChange, slotProps = _a.slotProps, isCrossedOut = _a.isCrossedOut, otherProps = __rest(_a, ["value", "minDate", "maxDate", "format", "label", "onChange", "slotProps", "isCrossedOut"]);
61
+ var minDate = _a.minDate, maxDate = _a.maxDate, valueProp = _a.value, format = _a.format, label = _a.label, onChange = _a.onChange, slotProps = _a.slotProps, isCrossedOut = _a.isCrossedOut, otherProps = __rest(_a, ["minDate", "maxDate", "value", "format", "label", "onChange", "slotProps", "isCrossedOut"]);
63
62
  var styles = (0, styles_1.useStyles)();
64
- var _e = react_1.default.useState(null), error = _e[0], setError = _e[1];
65
- var errorMessage = (0, react_1.useMemo)(function () {
66
- switch (error) {
67
- case 'maxDate':
68
- return ui_i18n_1.default.text('Date should not be after maximal date');
69
- case 'minDate':
70
- return ui_i18n_1.default.text('Date should not be before minimal date');
71
- case 'invalidDate':
72
- return ui_i18n_1.default.text('Invalid Date Format');
73
- default:
74
- return '';
75
- }
76
- }, [error]);
77
- var editorValue = (0, ramda_1.isNil)(value) ? null : (0, moment_1.default)(value);
78
- var editorMinDate = (0, ramda_1.isNil)(minDate) ? null : (0, moment_1.default)(minDate);
79
- var editorMaxDate = (0, ramda_1.isNil)(maxDate) ? null : (0, moment_1.default)(maxDate);
80
- var dateFormat = format || moment_1.default.localeData().longDateFormat('L');
81
- // TODO: Fix types for InputProps/InputLabelProps in slotProps.textField
82
- var editorSlotProps = (0, ramda_1.mergeDeepLeft)(slotProps, {
63
+ var value = (0, react_1.useMemo)(function () { return ((0, ramda_1.isNil)(valueProp) ? null : mdm_sdk_1.utils.dates.clearDateTime(valueProp)); }, [valueProp]);
64
+ var _c = (0, useDateEditor_1.useDateEditor)({ minDate: minDate, maxDate: maxDate, value: value, onChange: onChange }), errorMessage = _c.errorMessage, editorValue = _c.editorValue, editorMaxDate = _c.editorMaxDate, editorMinDate = _c.editorMinDate, onError = _c.onError, handleChange = _c.onChange;
65
+ var basicSlotProps = {
83
66
  textField: {
84
67
  size: 'small',
85
68
  variant: 'filled',
86
69
  helperText: errorMessage,
70
+ error: Boolean(errorMessage),
87
71
  InputProps: {
88
72
  classes: {
89
73
  root: (0, classnames_1.default)(styles.inputRoot, (_b = {}, _b[styles.isCrossedOut] = isCrossedOut, _b))
90
74
  },
91
75
  disableUnderline: (0, ramda_1.isNil)(editorValue)
92
76
  },
93
- InputLabelProps: {
94
- shrink: !(0, ramda_1.isNil)(label)
95
- }
77
+ InputLabelProps: { shrink: !(0, ramda_1.isNil)(label) }
96
78
  },
97
- popper: {
98
- placement: 'bottom-start'
99
- },
100
- inputAdornment: {
101
- position: 'end',
102
- className: styles.adornedEnd
103
- }
104
- });
105
- return (react_1.default.createElement(DatePicker_1.DatePicker, __assign({ format: dateFormat, slotProps: editorSlotProps, views: ['year', 'month', 'day'], label: label, value: editorValue, minDate: editorMinDate, maxDate: editorMaxDate, onError: function (newError) { return setError(newError); }, onChange: (0, mdm_sdk_1.debounce)((0, ramda_1.when)((0, ramda_1.both)(mdm_sdk_1.utils.dates.isValidMomentDateOrNull, mdm_sdk_1.utils.dates.isDateInRange(minDate, maxDate)), (0, ramda_1.pipe)(mdm_sdk_1.utils.dates.momentToDate, mdm_sdk_1.utils.dates.clearDateTime, onChange)), 0) }, otherProps)));
79
+ popper: { placement: 'bottom-start' },
80
+ inputAdornment: { position: 'end', className: styles.adornedEnd }
81
+ };
82
+ var editorSlotProps = (0, ramda_1.mergeDeepLeft)(slotProps, basicSlotProps);
83
+ return (react_1.default.createElement(DatePicker_1.DatePicker, __assign({ format: format || moment_1.default.localeData().longDateFormat('L'), slotProps: editorSlotProps, views: ['year', 'month', 'day'], label: label, value: editorValue, minDate: editorMinDate, maxDate: editorMaxDate, onError: onError, onChange: handleChange }, otherProps)));
106
84
  };
107
85
  exports.default = DateEditor;
@@ -1 +1 @@
1
- export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"underline" | "uppercase" | "inputLabel" | "adornedEnd" | "inputRoot" | "dropdownIndicator">;
1
+ export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"underline" | "uppercase" | "adornedEnd" | "inputRoot" | "dropdownIndicator" | "inputLabel">;
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import { Moment } from 'moment';
3
3
  import { DateTimePickerProps } from '@mui/x-date-pickers/DateTimePicker';
4
- type TimestampEditorProps = Omit<DateTimePickerProps<Moment>, 'value' | 'minDate' | 'maxDate' | 'onChange'> & {
4
+ type Props = Omit<DateTimePickerProps<Moment>, 'value' | 'minDate' | 'maxDate' | 'onChange'> & {
5
5
  minDate?: Date | number;
6
6
  maxDate?: Date | number;
7
7
  value?: Date | number;
8
8
  onChange: (value: Date) => void;
9
9
  isCrossedOut?: boolean;
10
10
  };
11
- declare const TimestampEditor: ({ value, minDate, maxDate, label, slotProps, onChange, format, isCrossedOut, ...otherProps }: TimestampEditorProps) => JSX.Element;
11
+ declare const TimestampEditor: ({ minDate, maxDate, value, label, slotProps, onChange, format, isCrossedOut, ...otherProps }: Props) => JSX.Element;
12
12
  export default TimestampEditor;
@@ -10,29 +10,6 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || function (mod) {
30
- if (mod && mod.__esModule) return mod;
31
- var result = {};
32
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
- __setModuleDefault(result, mod);
34
- return result;
35
- };
36
13
  var __rest = (this && this.__rest) || function (s, e) {
37
14
  var t = {};
38
15
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -48,65 +25,41 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
48
25
  return (mod && mod.__esModule) ? mod : { "default": mod };
49
26
  };
50
27
  Object.defineProperty(exports, "__esModule", { value: true });
51
- var react_1 = __importStar(require("react"));
52
- var ui_i18n_1 = __importDefault(require("ui-i18n"));
28
+ var react_1 = __importDefault(require("react"));
53
29
  var classnames_1 = __importDefault(require("classnames"));
54
30
  var ramda_1 = require("ramda");
55
- var moment_1 = __importDefault(require("moment"));
56
31
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
57
- var DateTimePicker_1 = require("@mui/x-date-pickers/DateTimePicker");
58
32
  var timeViewRenderers_1 = require("@mui/x-date-pickers/timeViewRenderers");
59
- var constants_1 = require("../constants");
33
+ var DateTimePicker_1 = require("@mui/x-date-pickers/DateTimePicker");
34
+ var useDateEditor_1 = require("../useDateEditor/useDateEditor");
60
35
  var styles_1 = require("./styles");
61
36
  var TimestampEditor = function (_a) {
62
37
  var _b;
63
- var value = _a.value, _c = _a.minDate, minDate = _c === void 0 ? constants_1.DEFAULT_MIN_DATE : _c, _d = _a.maxDate, maxDate = _d === void 0 ? constants_1.DEFAULT_MAX_DATE : _d, label = _a.label, slotProps = _a.slotProps, onChange = _a.onChange, format = _a.format, isCrossedOut = _a.isCrossedOut, otherProps = __rest(_a, ["value", "minDate", "maxDate", "label", "slotProps", "onChange", "format", "isCrossedOut"]);
38
+ var minDate = _a.minDate, maxDate = _a.maxDate, value = _a.value, label = _a.label, slotProps = _a.slotProps, onChange = _a.onChange, format = _a.format, isCrossedOut = _a.isCrossedOut, otherProps = __rest(_a, ["minDate", "maxDate", "value", "label", "slotProps", "onChange", "format", "isCrossedOut"]);
64
39
  var styles = (0, styles_1.useStyles)();
65
- var _e = react_1.default.useState(null), error = _e[0], setError = _e[1];
66
- var errorMessage = (0, react_1.useMemo)(function () {
67
- switch (error) {
68
- case 'maxDate':
69
- return ui_i18n_1.default.text('Date should not be after maximal date');
70
- case 'minDate':
71
- return ui_i18n_1.default.text('Date should not be before minimal date');
72
- case 'invalidDate':
73
- return ui_i18n_1.default.text('Invalid Date Format');
74
- default:
75
- return '';
76
- }
77
- }, [error]);
78
- var editorValue = (0, ramda_1.isNil)(value) ? null : (0, moment_1.default)(value);
79
- var editorMinDate = (0, ramda_1.isNil)(minDate) ? null : (0, moment_1.default)(minDate);
80
- var editorMaxDate = (0, ramda_1.isNil)(maxDate) ? null : (0, moment_1.default)(maxDate);
81
- var timestampFormat = format || (0, mdm_sdk_1.getLocaleFormat)();
82
- // TODO: Fix types for InputProps/InputLabelProps in slotProps.textField
83
- var editorSlotProps = (0, ramda_1.mergeDeepLeft)(slotProps, {
40
+ var _c = (0, useDateEditor_1.useDateEditor)({ minDate: minDate, maxDate: maxDate, value: value, onChange: onChange }), errorMessage = _c.errorMessage, editorValue = _c.editorValue, editorMaxDate = _c.editorMaxDate, editorMinDate = _c.editorMinDate, onError = _c.onError, handleChange = _c.onChange;
41
+ var basicSlotProps = {
84
42
  textField: {
85
43
  size: 'small',
86
44
  variant: 'filled',
87
45
  helperText: errorMessage,
46
+ error: Boolean(errorMessage),
88
47
  InputProps: {
89
48
  classes: {
90
49
  root: (0, classnames_1.default)(styles.inputRoot, (_b = {}, _b[styles.isCrossedOut] = isCrossedOut, _b))
91
50
  },
92
51
  disableUnderline: (0, ramda_1.isNil)(editorValue)
93
52
  },
94
- InputLabelProps: {
95
- shrink: !(0, ramda_1.isNil)(label)
96
- }
53
+ InputLabelProps: { shrink: !(0, ramda_1.isNil)(label) }
97
54
  },
98
- popper: {
99
- placement: 'bottom-start'
100
- },
101
- inputAdornment: {
102
- position: 'end',
103
- className: styles.adornedEnd
104
- }
105
- });
106
- return (react_1.default.createElement(DateTimePicker_1.DateTimePicker, __assign({ format: timestampFormat, slotProps: editorSlotProps, views: ['year', 'month', 'day', 'hours', 'minutes', 'seconds'], viewRenderers: {
55
+ popper: { placement: 'bottom-start' },
56
+ inputAdornment: { position: 'end', className: styles.adornedEnd }
57
+ };
58
+ var editorSlotProps = (0, ramda_1.mergeDeepLeft)(slotProps, basicSlotProps);
59
+ return (react_1.default.createElement(DateTimePicker_1.DateTimePicker, __assign({ format: format || (0, mdm_sdk_1.getLocaleFormat)(), slotProps: editorSlotProps, views: ['year', 'month', 'day', 'hours', 'minutes', 'seconds'], viewRenderers: {
107
60
  hours: timeViewRenderers_1.renderTimeViewClock,
108
61
  minutes: timeViewRenderers_1.renderTimeViewClock,
109
62
  seconds: timeViewRenderers_1.renderTimeViewClock
110
- }, label: label, value: editorValue, minDate: editorMinDate, maxDate: editorMaxDate, onError: function (newError) { return setError(newError); }, onChange: (0, ramda_1.when)((0, ramda_1.both)(mdm_sdk_1.utils.dates.isValidMomentDateOrNull, mdm_sdk_1.utils.dates.isDateInRange(minDate, maxDate)), (0, ramda_1.pipe)(mdm_sdk_1.utils.dates.momentToDate, onChange)) }, otherProps)));
63
+ }, label: label, value: editorValue, minDate: editorMinDate, maxDate: editorMaxDate, onError: onError, onChange: handleChange }, otherProps)));
111
64
  };
112
65
  exports.default = TimestampEditor;
@@ -1 +1 @@
1
- export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"underline" | "iconButtonRoot" | "inputLabel" | "adornedEnd" | "inputRoot" | "isCrossedOut">;
1
+ export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"adornedEnd" | "inputRoot" | "isCrossedOut">;
@@ -2,30 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useStyles = void 0;
4
4
  var styles_1 = require("@mui/styles");
5
- exports.useStyles = (0, styles_1.makeStyles)(function (theme) { return ({
6
- iconButtonRoot: {
7
- padding: 8
8
- },
9
- underline: {
10
- '&:after': {
11
- transform: 'scaleX(1)'
12
- }
13
- },
14
- inputLabel: {
15
- color: theme.palette.primary.main
16
- },
5
+ exports.useStyles = (0, styles_1.makeStyles)({
17
6
  adornedEnd: {
18
7
  paddingRight: 4
19
8
  },
20
9
  inputRoot: {
21
- '& > input': {
22
- textTransform: 'uppercase'
23
- },
24
10
  fontSize: '14px',
25
11
  letterSpacing: 0,
26
- lineHeight: '16px'
12
+ lineHeight: '16px',
13
+ overflow: 'hidden',
14
+ '& > input': {
15
+ textTransform: 'uppercase'
16
+ }
27
17
  },
28
18
  isCrossedOut: {
29
19
  textDecoration: 'line-through'
30
20
  }
31
- }); });
21
+ });
@@ -1,6 +1,7 @@
1
1
  import { TextFieldProps } from '@mui/material/TextField';
2
2
  export declare const DEFAULT_MIN_DATE: Date;
3
3
  export declare const DEFAULT_MAX_DATE: Date;
4
+ export declare const DEFAULT_MAX_DATE_IN_POPUP: Date;
4
5
  export declare const commonTextFieldProps: TextFieldProps;
5
6
  export declare const useInputStyles: (props?: any) => import("@mui/styles").ClassNameMap<"filledInputUnderline" | "marginDense">;
6
7
  export declare const useSelectStyles: (props?: any) => import("@mui/styles").ClassNameMap<"icon" | "root">;
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useSelectStyles = exports.useInputStyles = exports.commonTextFieldProps = exports.DEFAULT_MAX_DATE = exports.DEFAULT_MIN_DATE = void 0;
3
+ exports.useSelectStyles = exports.useInputStyles = exports.commonTextFieldProps = exports.DEFAULT_MAX_DATE_IN_POPUP = exports.DEFAULT_MAX_DATE = exports.DEFAULT_MIN_DATE = void 0;
4
4
  var styles_1 = require("@mui/styles");
5
5
  exports.DEFAULT_MIN_DATE = new Date('1900-01-01');
6
- exports.DEFAULT_MAX_DATE = new Date('2099-12-31');
6
+ exports.DEFAULT_MAX_DATE = new Date('9999-12-31');
7
+ exports.DEFAULT_MAX_DATE_IN_POPUP = new Date('2099-12-31');
7
8
  exports.commonTextFieldProps = {
8
9
  variant: 'filled',
9
10
  size: 'small',
@@ -0,0 +1,6 @@
1
+ import moment from 'moment';
2
+ import { DateValidationError } from '@mui/x-date-pickers';
3
+ export declare const getErrorMessage: (error: DateValidationError) => string;
4
+ export declare const isDateRangeError: (error: DateValidationError) => boolean;
5
+ export declare const getEditorMaxDate: (maxDate: Date | number) => moment.Moment;
6
+ export declare const getEditorMinDate: (minDate: Date | number) => moment.Moment;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getEditorMinDate = exports.getEditorMaxDate = exports.isDateRangeError = exports.getErrorMessage = void 0;
7
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
8
+ var moment_1 = __importDefault(require("moment"));
9
+ var constants_1 = require("../constants");
10
+ var getErrorMessage = function (error) {
11
+ switch (error) {
12
+ case 'maxDate':
13
+ return ui_i18n_1.default.text('Date should not be after maximal date');
14
+ case 'minDate':
15
+ return ui_i18n_1.default.text('Date should not be before minimal date');
16
+ case 'invalidDate':
17
+ return ui_i18n_1.default.text('Invalid Date Format');
18
+ default:
19
+ return '';
20
+ }
21
+ };
22
+ exports.getErrorMessage = getErrorMessage;
23
+ var isDateRangeError = function (error) { return ['minDate', 'maxDate'].includes(error); };
24
+ exports.isDateRangeError = isDateRangeError;
25
+ var getEditorMaxDate = function (maxDate) {
26
+ var date = (0, moment_1.default)(maxDate).isAfter(constants_1.DEFAULT_MAX_DATE_IN_POPUP) ? constants_1.DEFAULT_MAX_DATE_IN_POPUP : maxDate;
27
+ return (0, moment_1.default)(date);
28
+ };
29
+ exports.getEditorMaxDate = getEditorMaxDate;
30
+ var getEditorMinDate = function (minDate) {
31
+ var date = (0, moment_1.default)(minDate).isBefore(constants_1.DEFAULT_MIN_DATE) ? constants_1.DEFAULT_MIN_DATE : minDate;
32
+ return (0, moment_1.default)(date);
33
+ };
34
+ exports.getEditorMinDate = getEditorMinDate;
@@ -0,0 +1,17 @@
1
+ import moment from 'moment';
2
+ import { DateValidationError } from '@mui/x-date-pickers';
3
+ type Props = {
4
+ minDate: Date | number;
5
+ maxDate: Date | number;
6
+ value: Date | number;
7
+ onChange: (value: Date | number) => void;
8
+ };
9
+ export declare const useDateEditor: ({ minDate: minDateProp, maxDate: maxDateProp, value, onChange }: Props) => {
10
+ errorMessage: string;
11
+ editorValue: moment.Moment;
12
+ editorMinDate: moment.Moment;
13
+ editorMaxDate: moment.Moment;
14
+ onChange: (...args: any[]) => void;
15
+ onError: (error: DateValidationError) => void;
16
+ };
17
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useDateEditor = void 0;
7
+ var react_1 = require("react");
8
+ var moment_1 = __importDefault(require("moment"));
9
+ var ramda_1 = require("ramda");
10
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
11
+ var helpers_1 = require("./helpers");
12
+ var constants_1 = require("../constants");
13
+ var _a = mdm_sdk_1.utils.dates, isValidMomentDateOrNull = _a.isValidMomentDateOrNull, isDateInRange = _a.isDateInRange, momentToDate = _a.momentToDate;
14
+ var useDateEditor = function (_a) {
15
+ var minDateProp = _a.minDate, maxDateProp = _a.maxDate, value = _a.value, onChange = _a.onChange;
16
+ var _b = (0, react_1.useState)(null), error = _b[0], setError = _b[1];
17
+ var _c = (0, react_1.useState)(null), editorValue = _c[0], setEditorValue = _c[1];
18
+ var minDate = (0, react_1.useMemo)(function () { return mdm_sdk_1.utils.dates.clearDateTime((0, ramda_1.isNil)(minDateProp) ? constants_1.DEFAULT_MIN_DATE : minDateProp); }, [minDateProp]);
19
+ var maxDate = (0, react_1.useMemo)(function () { return mdm_sdk_1.utils.dates.clearDateTime((0, ramda_1.isNil)(maxDateProp) ? constants_1.DEFAULT_MAX_DATE : maxDateProp); }, [maxDateProp]);
20
+ var momentValue = (0, react_1.useMemo)(function () { return ((0, ramda_1.isNil)(value) ? null : (0, moment_1.default)(value)); }, [value]);
21
+ var editorMinDate = (0, react_1.useMemo)(function () { return (0, helpers_1.getEditorMinDate)(minDate); }, [minDate]);
22
+ var editorMaxDate = (0, react_1.useMemo)(function () { return (0, helpers_1.getEditorMaxDate)(maxDate); }, [maxDate]);
23
+ var errorMessage = (0, react_1.useMemo)(function () { return (0, helpers_1.getErrorMessage)(error); }, [error]);
24
+ var handleError = (0, react_1.useCallback)(function (error) {
25
+ if (!(0, helpers_1.isDateRangeError)(error))
26
+ setError(error);
27
+ }, []);
28
+ var handleChange = (0, react_1.useCallback)(function (value) {
29
+ setEditorValue(value);
30
+ if (isValidMomentDateOrNull(value) && isDateInRange(minDate, maxDate)(value)) {
31
+ onChange(momentToDate(value));
32
+ }
33
+ }, [minDate, maxDate, onChange]);
34
+ var debouncedHandleChange = (0, react_1.useCallback)((0, mdm_sdk_1.debounce)(handleChange, 0), [handleChange]);
35
+ (0, react_1.useEffect)(function () {
36
+ setEditorValue(function (prevEditorValue) {
37
+ var datesAreTheSame = (0, moment_1.default)(prevEditorValue).isSame(momentValue);
38
+ var datesAreInvalid = !isValidMomentDateOrNull(momentValue) && !isValidMomentDateOrNull(prevEditorValue);
39
+ return datesAreTheSame || datesAreInvalid ? prevEditorValue : momentValue;
40
+ });
41
+ }, [momentValue]);
42
+ (0, react_1.useEffect)(function () {
43
+ if (editorValue === null || editorValue === void 0 ? void 0 : editorValue.isAfter(maxDate)) {
44
+ setError('maxDate');
45
+ }
46
+ else if (editorValue === null || editorValue === void 0 ? void 0 : editorValue.isBefore(minDate)) {
47
+ setError('minDate');
48
+ }
49
+ else {
50
+ setError(function (prevError) { return ((0, helpers_1.isDateRangeError)(prevError) ? null : prevError); });
51
+ }
52
+ }, [editorValue, maxDate, minDate]);
53
+ return {
54
+ errorMessage: errorMessage,
55
+ editorValue: editorValue,
56
+ editorMinDate: editorMinDate,
57
+ editorMaxDate: editorMaxDate,
58
+ onChange: debouncedHandleChange,
59
+ onError: handleError
60
+ };
61
+ };
62
+ exports.useDateEditor = useDateEditor;
@@ -1,4 +1,4 @@
1
- export const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"filledInputUnderline" | "inputLabel" | "control" | "formControl" | "valueContainer" | "dropdownIndicator" | "filledInputRoot">;
1
+ export const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"filledInputUnderline" | "control" | "formControl" | "valueContainer" | "dropdownIndicator" | "inputLabel" | "filledInputRoot">;
2
2
  export namespace customStyles {
3
3
  function menu(baseStyles: any): any;
4
4
  function menuList(baseStyles: any): any;
@@ -1 +1 @@
1
- export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"icon" | "input" | "root" | "inputLabel" | "inputRoot" | "inputText" | "emptyInput" | "disabledInput" | "disabledPointer" | "disabledUnderline" | "popup-opened-icon">;
1
+ export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"icon" | "input" | "root" | "inputRoot" | "inputLabel" | "inputText" | "emptyInput" | "disabledInput" | "disabledPointer" | "disabledUnderline" | "popup-opened-icon">;
@@ -13,5 +13,5 @@ declare const Popper: React.ForwardRefExoticComponent<Pick<Omit<import("@mui/bas
13
13
  anchorEl?: HTMLElement | null;
14
14
  excludeAnchorFromBackdrop?: boolean;
15
15
  onClose?: () => void;
16
- }, "id" | "hidden" | "open" | "title" | "key" | "children" | "defaultValue" | "prefix" | "results" | "slot" | "style" | "color" | "translate" | "container" | "transition" | "className" | "sx" | "lang" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "security" | "unselectable" | "inputMode" | "is" | "components" | "componentsProps" | "slotProps" | "slots" | "onClose" | "component" | "disablePortal" | "keepMounted" | "anchorEl" | "placement" | "modifiers" | "popperOptions" | "popperRef" | "modal" | "excludeAnchorFromBackdrop"> & React.RefAttributes<HTMLDivElement>>;
16
+ }, "id" | "hidden" | "open" | "title" | "key" | "children" | "defaultValue" | "prefix" | "results" | "slot" | "style" | "color" | "translate" | "container" | "transition" | "className" | "sx" | "lang" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "security" | "unselectable" | "inputMode" | "is" | "components" | "componentsProps" | "slotProps" | "slots" | "onClose" | "anchorEl" | "disablePortal" | "keepMounted" | "modifiers" | "placement" | "popperOptions" | "popperRef" | "component" | "modal" | "excludeAnchorFromBackdrop"> & React.RefAttributes<HTMLDivElement>>;
17
17
  export default Popper;
@@ -17,7 +17,7 @@ declare const LinkWithTooltip: React.ForwardRefExoticComponent<import("prop-type
17
17
  variant?: import("@mui/types").OverridableStringUnion<"inherit" | import("@mui/material").TypographyVariant, import("@mui/material").TypographyPropsVariantOverrides>;
18
18
  } & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "key" | keyof React.AnchorHTMLAttributes<HTMLAnchorElement>> & {
19
19
  ref?: React.Ref<HTMLAnchorElement>;
20
- }, "m" | "id" | "type" | "hidden" | "visibility" | "title" | "key" | "children" | "defaultValue" | "prefix" | "order" | "width" | "minHeight" | "maxHeight" | "height" | "flex" | "minWidth" | "maxWidth" | "top" | "right" | "left" | "position" | "referrerPolicy" | "results" | "p" | "slot" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxShadow" | "boxSizing" | "color" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "letterSpacing" | "lineHeight" | "marginBottom" | "marginLeft" | "marginRight" | "marginTop" | "paddingBottom" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "translate" | "whiteSpace" | "zIndex" | "border" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "overflow" | "padding" | "underline" | keyof import("@mui/material/OverridableComponent").CommonProps | "sx" | "lang" | "media" | "target" | "role" | "tabIndex" | "href" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "security" | "unselectable" | "inputMode" | "is" | "hrefLang" | "rel" | "download" | "ping" | "align" | "variant" | "bgcolor" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping" | "TypographyClasses"> & {
20
+ }, "m" | "id" | "type" | "hidden" | "visibility" | "title" | "key" | "children" | "defaultValue" | "prefix" | "order" | "width" | "minHeight" | "maxHeight" | "height" | "flex" | "minWidth" | "maxWidth" | "top" | "right" | "left" | "position" | "referrerPolicy" | "results" | "p" | "slot" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxShadow" | "boxSizing" | "color" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "justifyContent" | "justifyItems" | "justifySelf" | "letterSpacing" | "lineHeight" | "marginBottom" | "marginLeft" | "marginRight" | "marginTop" | "paddingBottom" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "translate" | "whiteSpace" | "zIndex" | "border" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "overflow" | "padding" | "underline" | keyof import("@mui/material/OverridableComponent").CommonProps | "sx" | "lang" | "media" | "target" | "role" | "tabIndex" | "href" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "security" | "unselectable" | "inputMode" | "is" | "hrefLang" | "rel" | "download" | "ping" | "align" | "variant" | "bgcolor" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "noWrap" | "gutterBottom" | "paragraph" | "variantMapping" | "TypographyClasses"> & {
21
21
  component: string;
22
22
  }>;
23
23
  type Props = {
@@ -37,7 +37,7 @@ var editorValueToAttributeValue = function (attributeType, editorValue) {
37
37
  case DataTypes.TYPE_DATE:
38
38
  return (editorValue && moment(editorValue).format('YYYY-MM-DD')) || '';
39
39
  case DataTypes.TYPE_TIMESTAMP: {
40
- return (editorValue && moment(editorValue).format()) || '';
40
+ return (editorValue && moment(editorValue).utc().format()) || '';
41
41
  }
42
42
  case DataTypes.TYPE_ACTIVENESS_DATE:
43
43
  case DataTypes.TYPE_LOCAL_DATE:
@@ -2,5 +2,5 @@ type StylesProps = {
2
2
  color: string;
3
3
  containerWidth: number;
4
4
  };
5
- export declare const useStyles: (props: StylesProps) => import("@mui/styles").ClassNameMap<"input" | "textField" | "paper" | "inputMultiline" | "booleanEditor" | "timestampEditor" | "popoverRoot">;
5
+ export declare const useStyles: (props: StylesProps) => import("@mui/styles").ClassNameMap<"input" | "inputMultiline" | "textField" | "paper" | "booleanEditor" | "timestampEditor" | "popoverRoot">;
6
6
  export {};
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import { Moment } from 'moment';
3
3
  import { DatePickerProps } from '@mui/x-date-pickers/DatePicker';
4
- type DateEditorProps = Omit<DatePickerProps<Moment>, 'value' | 'minDate' | 'maxDate' | 'onChange'> & {
4
+ type Props = Omit<DatePickerProps<Moment>, 'value' | 'minDate' | 'maxDate' | 'onChange'> & {
5
5
  minDate?: Date | number;
6
6
  maxDate?: Date | number;
7
7
  value?: Date | number;
8
8
  onChange: (value: Date) => void;
9
9
  isCrossedOut?: boolean;
10
10
  };
11
- declare const DateEditor: ({ value, minDate, maxDate, format, label, onChange, slotProps, isCrossedOut, ...otherProps }: DateEditorProps) => JSX.Element;
11
+ declare const DateEditor: ({ minDate, maxDate, value: valueProp, format, label, onChange, slotProps, isCrossedOut, ...otherProps }: Props) => JSX.Element;
12
12
  export default DateEditor;
@@ -21,59 +21,37 @@ var __rest = (this && this.__rest) || function (s, e) {
21
21
  return t;
22
22
  };
23
23
  import React, { useMemo } from 'react';
24
- import i18n from 'ui-i18n';
25
- import classnames from 'classnames';
26
- import { mergeDeepLeft, isNil, pipe, when, both } from 'ramda';
27
24
  import moment from 'moment';
28
- import { debounce, utils } from '@reltio/mdm-sdk';
25
+ import classnames from 'classnames';
26
+ import { mergeDeepLeft, isNil } from 'ramda';
27
+ import { utils } from '@reltio/mdm-sdk';
29
28
  import { DatePicker } from '@mui/x-date-pickers/DatePicker';
30
- import { DEFAULT_MAX_DATE, DEFAULT_MIN_DATE } from '../constants';
29
+ import { useDateEditor } from '../useDateEditor/useDateEditor';
31
30
  import { useStyles } from './styles';
32
31
  var DateEditor = function (_a) {
33
32
  var _b;
34
- var value = _a.value, _c = _a.minDate, minDate = _c === void 0 ? DEFAULT_MIN_DATE : _c, _d = _a.maxDate, maxDate = _d === void 0 ? DEFAULT_MAX_DATE : _d, format = _a.format, label = _a.label, onChange = _a.onChange, slotProps = _a.slotProps, isCrossedOut = _a.isCrossedOut, otherProps = __rest(_a, ["value", "minDate", "maxDate", "format", "label", "onChange", "slotProps", "isCrossedOut"]);
33
+ var minDate = _a.minDate, maxDate = _a.maxDate, valueProp = _a.value, format = _a.format, label = _a.label, onChange = _a.onChange, slotProps = _a.slotProps, isCrossedOut = _a.isCrossedOut, otherProps = __rest(_a, ["minDate", "maxDate", "value", "format", "label", "onChange", "slotProps", "isCrossedOut"]);
35
34
  var styles = useStyles();
36
- var _e = React.useState(null), error = _e[0], setError = _e[1];
37
- var errorMessage = useMemo(function () {
38
- switch (error) {
39
- case 'maxDate':
40
- return i18n.text('Date should not be after maximal date');
41
- case 'minDate':
42
- return i18n.text('Date should not be before minimal date');
43
- case 'invalidDate':
44
- return i18n.text('Invalid Date Format');
45
- default:
46
- return '';
47
- }
48
- }, [error]);
49
- var editorValue = isNil(value) ? null : moment(value);
50
- var editorMinDate = isNil(minDate) ? null : moment(minDate);
51
- var editorMaxDate = isNil(maxDate) ? null : moment(maxDate);
52
- var dateFormat = format || moment.localeData().longDateFormat('L');
53
- // TODO: Fix types for InputProps/InputLabelProps in slotProps.textField
54
- var editorSlotProps = mergeDeepLeft(slotProps, {
35
+ var value = useMemo(function () { return (isNil(valueProp) ? null : utils.dates.clearDateTime(valueProp)); }, [valueProp]);
36
+ var _c = useDateEditor({ minDate: minDate, maxDate: maxDate, value: value, onChange: onChange }), errorMessage = _c.errorMessage, editorValue = _c.editorValue, editorMaxDate = _c.editorMaxDate, editorMinDate = _c.editorMinDate, onError = _c.onError, handleChange = _c.onChange;
37
+ var basicSlotProps = {
55
38
  textField: {
56
39
  size: 'small',
57
40
  variant: 'filled',
58
41
  helperText: errorMessage,
42
+ error: Boolean(errorMessage),
59
43
  InputProps: {
60
44
  classes: {
61
45
  root: classnames(styles.inputRoot, (_b = {}, _b[styles.isCrossedOut] = isCrossedOut, _b))
62
46
  },
63
47
  disableUnderline: isNil(editorValue)
64
48
  },
65
- InputLabelProps: {
66
- shrink: !isNil(label)
67
- }
49
+ InputLabelProps: { shrink: !isNil(label) }
68
50
  },
69
- popper: {
70
- placement: 'bottom-start'
71
- },
72
- inputAdornment: {
73
- position: 'end',
74
- className: styles.adornedEnd
75
- }
76
- });
77
- return (React.createElement(DatePicker, __assign({ format: dateFormat, slotProps: editorSlotProps, views: ['year', 'month', 'day'], label: label, value: editorValue, minDate: editorMinDate, maxDate: editorMaxDate, onError: function (newError) { return setError(newError); }, onChange: debounce(when(both(utils.dates.isValidMomentDateOrNull, utils.dates.isDateInRange(minDate, maxDate)), pipe(utils.dates.momentToDate, utils.dates.clearDateTime, onChange)), 0) }, otherProps)));
51
+ popper: { placement: 'bottom-start' },
52
+ inputAdornment: { position: 'end', className: styles.adornedEnd }
53
+ };
54
+ var editorSlotProps = mergeDeepLeft(slotProps, basicSlotProps);
55
+ return (React.createElement(DatePicker, __assign({ format: format || moment.localeData().longDateFormat('L'), slotProps: editorSlotProps, views: ['year', 'month', 'day'], label: label, value: editorValue, minDate: editorMinDate, maxDate: editorMaxDate, onError: onError, onChange: handleChange }, otherProps)));
78
56
  };
79
57
  export default DateEditor;
@@ -1 +1 @@
1
- export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"underline" | "uppercase" | "inputLabel" | "adornedEnd" | "inputRoot" | "dropdownIndicator">;
1
+ export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"underline" | "uppercase" | "adornedEnd" | "inputRoot" | "dropdownIndicator" | "inputLabel">;
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import { Moment } from 'moment';
3
3
  import { DateTimePickerProps } from '@mui/x-date-pickers/DateTimePicker';
4
- type TimestampEditorProps = Omit<DateTimePickerProps<Moment>, 'value' | 'minDate' | 'maxDate' | 'onChange'> & {
4
+ type Props = Omit<DateTimePickerProps<Moment>, 'value' | 'minDate' | 'maxDate' | 'onChange'> & {
5
5
  minDate?: Date | number;
6
6
  maxDate?: Date | number;
7
7
  value?: Date | number;
8
8
  onChange: (value: Date) => void;
9
9
  isCrossedOut?: boolean;
10
10
  };
11
- declare const TimestampEditor: ({ value, minDate, maxDate, label, slotProps, onChange, format, isCrossedOut, ...otherProps }: TimestampEditorProps) => JSX.Element;
11
+ declare const TimestampEditor: ({ minDate, maxDate, value, label, slotProps, onChange, format, isCrossedOut, ...otherProps }: Props) => JSX.Element;
12
12
  export default TimestampEditor;
@@ -20,65 +20,41 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
- import React, { useMemo } from 'react';
24
- import i18n from 'ui-i18n';
23
+ import React from 'react';
25
24
  import classnames from 'classnames';
26
- import { mergeDeepLeft, isNil, pipe, when, both } from 'ramda';
27
- import moment from 'moment';
28
- import { getLocaleFormat, utils } from '@reltio/mdm-sdk';
29
- import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';
25
+ import { isNil, mergeDeepLeft } from 'ramda';
26
+ import { getLocaleFormat } from '@reltio/mdm-sdk';
30
27
  import { renderTimeViewClock } from '@mui/x-date-pickers/timeViewRenderers';
31
- import { DEFAULT_MAX_DATE, DEFAULT_MIN_DATE } from '../constants';
28
+ import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';
29
+ import { useDateEditor } from '../useDateEditor/useDateEditor';
32
30
  import { useStyles } from './styles';
33
31
  var TimestampEditor = function (_a) {
34
32
  var _b;
35
- var value = _a.value, _c = _a.minDate, minDate = _c === void 0 ? DEFAULT_MIN_DATE : _c, _d = _a.maxDate, maxDate = _d === void 0 ? DEFAULT_MAX_DATE : _d, label = _a.label, slotProps = _a.slotProps, onChange = _a.onChange, format = _a.format, isCrossedOut = _a.isCrossedOut, otherProps = __rest(_a, ["value", "minDate", "maxDate", "label", "slotProps", "onChange", "format", "isCrossedOut"]);
33
+ var minDate = _a.minDate, maxDate = _a.maxDate, value = _a.value, label = _a.label, slotProps = _a.slotProps, onChange = _a.onChange, format = _a.format, isCrossedOut = _a.isCrossedOut, otherProps = __rest(_a, ["minDate", "maxDate", "value", "label", "slotProps", "onChange", "format", "isCrossedOut"]);
36
34
  var styles = useStyles();
37
- var _e = React.useState(null), error = _e[0], setError = _e[1];
38
- var errorMessage = useMemo(function () {
39
- switch (error) {
40
- case 'maxDate':
41
- return i18n.text('Date should not be after maximal date');
42
- case 'minDate':
43
- return i18n.text('Date should not be before minimal date');
44
- case 'invalidDate':
45
- return i18n.text('Invalid Date Format');
46
- default:
47
- return '';
48
- }
49
- }, [error]);
50
- var editorValue = isNil(value) ? null : moment(value);
51
- var editorMinDate = isNil(minDate) ? null : moment(minDate);
52
- var editorMaxDate = isNil(maxDate) ? null : moment(maxDate);
53
- var timestampFormat = format || getLocaleFormat();
54
- // TODO: Fix types for InputProps/InputLabelProps in slotProps.textField
55
- var editorSlotProps = mergeDeepLeft(slotProps, {
35
+ var _c = useDateEditor({ minDate: minDate, maxDate: maxDate, value: value, onChange: onChange }), errorMessage = _c.errorMessage, editorValue = _c.editorValue, editorMaxDate = _c.editorMaxDate, editorMinDate = _c.editorMinDate, onError = _c.onError, handleChange = _c.onChange;
36
+ var basicSlotProps = {
56
37
  textField: {
57
38
  size: 'small',
58
39
  variant: 'filled',
59
40
  helperText: errorMessage,
41
+ error: Boolean(errorMessage),
60
42
  InputProps: {
61
43
  classes: {
62
44
  root: classnames(styles.inputRoot, (_b = {}, _b[styles.isCrossedOut] = isCrossedOut, _b))
63
45
  },
64
46
  disableUnderline: isNil(editorValue)
65
47
  },
66
- InputLabelProps: {
67
- shrink: !isNil(label)
68
- }
48
+ InputLabelProps: { shrink: !isNil(label) }
69
49
  },
70
- popper: {
71
- placement: 'bottom-start'
72
- },
73
- inputAdornment: {
74
- position: 'end',
75
- className: styles.adornedEnd
76
- }
77
- });
78
- return (React.createElement(DateTimePicker, __assign({ format: timestampFormat, slotProps: editorSlotProps, views: ['year', 'month', 'day', 'hours', 'minutes', 'seconds'], viewRenderers: {
50
+ popper: { placement: 'bottom-start' },
51
+ inputAdornment: { position: 'end', className: styles.adornedEnd }
52
+ };
53
+ var editorSlotProps = mergeDeepLeft(slotProps, basicSlotProps);
54
+ return (React.createElement(DateTimePicker, __assign({ format: format || getLocaleFormat(), slotProps: editorSlotProps, views: ['year', 'month', 'day', 'hours', 'minutes', 'seconds'], viewRenderers: {
79
55
  hours: renderTimeViewClock,
80
56
  minutes: renderTimeViewClock,
81
57
  seconds: renderTimeViewClock
82
- }, label: label, value: editorValue, minDate: editorMinDate, maxDate: editorMaxDate, onError: function (newError) { return setError(newError); }, onChange: when(both(utils.dates.isValidMomentDateOrNull, utils.dates.isDateInRange(minDate, maxDate)), pipe(utils.dates.momentToDate, onChange)) }, otherProps)));
58
+ }, label: label, value: editorValue, minDate: editorMinDate, maxDate: editorMaxDate, onError: onError, onChange: handleChange }, otherProps)));
83
59
  };
84
60
  export default TimestampEditor;
@@ -1 +1 @@
1
- export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"underline" | "iconButtonRoot" | "inputLabel" | "adornedEnd" | "inputRoot" | "isCrossedOut">;
1
+ export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"adornedEnd" | "inputRoot" | "isCrossedOut">;
@@ -1,28 +1,18 @@
1
1
  import { makeStyles } from '@mui/styles';
2
- export var useStyles = makeStyles(function (theme) { return ({
3
- iconButtonRoot: {
4
- padding: 8
5
- },
6
- underline: {
7
- '&:after': {
8
- transform: 'scaleX(1)'
9
- }
10
- },
11
- inputLabel: {
12
- color: theme.palette.primary.main
13
- },
2
+ export var useStyles = makeStyles({
14
3
  adornedEnd: {
15
4
  paddingRight: 4
16
5
  },
17
6
  inputRoot: {
18
- '& > input': {
19
- textTransform: 'uppercase'
20
- },
21
7
  fontSize: '14px',
22
8
  letterSpacing: 0,
23
- lineHeight: '16px'
9
+ lineHeight: '16px',
10
+ overflow: 'hidden',
11
+ '& > input': {
12
+ textTransform: 'uppercase'
13
+ }
24
14
  },
25
15
  isCrossedOut: {
26
16
  textDecoration: 'line-through'
27
17
  }
28
- }); });
18
+ });
@@ -1,6 +1,7 @@
1
1
  import { TextFieldProps } from '@mui/material/TextField';
2
2
  export declare const DEFAULT_MIN_DATE: Date;
3
3
  export declare const DEFAULT_MAX_DATE: Date;
4
+ export declare const DEFAULT_MAX_DATE_IN_POPUP: Date;
4
5
  export declare const commonTextFieldProps: TextFieldProps;
5
6
  export declare const useInputStyles: (props?: any) => import("@mui/styles").ClassNameMap<"filledInputUnderline" | "marginDense">;
6
7
  export declare const useSelectStyles: (props?: any) => import("@mui/styles").ClassNameMap<"icon" | "root">;
@@ -1,6 +1,7 @@
1
1
  import { makeStyles } from '@mui/styles';
2
2
  export var DEFAULT_MIN_DATE = new Date('1900-01-01');
3
- export var DEFAULT_MAX_DATE = new Date('2099-12-31');
3
+ export var DEFAULT_MAX_DATE = new Date('9999-12-31');
4
+ export var DEFAULT_MAX_DATE_IN_POPUP = new Date('2099-12-31');
4
5
  export var commonTextFieldProps = {
5
6
  variant: 'filled',
6
7
  size: 'small',
@@ -0,0 +1,6 @@
1
+ import moment from 'moment';
2
+ import { DateValidationError } from '@mui/x-date-pickers';
3
+ export declare const getErrorMessage: (error: DateValidationError) => string;
4
+ export declare const isDateRangeError: (error: DateValidationError) => boolean;
5
+ export declare const getEditorMaxDate: (maxDate: Date | number) => moment.Moment;
6
+ export declare const getEditorMinDate: (minDate: Date | number) => moment.Moment;
@@ -0,0 +1,24 @@
1
+ import i18n from 'ui-i18n';
2
+ import moment from 'moment';
3
+ import { DEFAULT_MAX_DATE_IN_POPUP, DEFAULT_MIN_DATE } from '../constants';
4
+ export var getErrorMessage = function (error) {
5
+ switch (error) {
6
+ case 'maxDate':
7
+ return i18n.text('Date should not be after maximal date');
8
+ case 'minDate':
9
+ return i18n.text('Date should not be before minimal date');
10
+ case 'invalidDate':
11
+ return i18n.text('Invalid Date Format');
12
+ default:
13
+ return '';
14
+ }
15
+ };
16
+ export var isDateRangeError = function (error) { return ['minDate', 'maxDate'].includes(error); };
17
+ export var getEditorMaxDate = function (maxDate) {
18
+ var date = moment(maxDate).isAfter(DEFAULT_MAX_DATE_IN_POPUP) ? DEFAULT_MAX_DATE_IN_POPUP : maxDate;
19
+ return moment(date);
20
+ };
21
+ export var getEditorMinDate = function (minDate) {
22
+ var date = moment(minDate).isBefore(DEFAULT_MIN_DATE) ? DEFAULT_MIN_DATE : minDate;
23
+ return moment(date);
24
+ };
@@ -0,0 +1,17 @@
1
+ import moment from 'moment';
2
+ import { DateValidationError } from '@mui/x-date-pickers';
3
+ type Props = {
4
+ minDate: Date | number;
5
+ maxDate: Date | number;
6
+ value: Date | number;
7
+ onChange: (value: Date | number) => void;
8
+ };
9
+ export declare const useDateEditor: ({ minDate: minDateProp, maxDate: maxDateProp, value, onChange }: Props) => {
10
+ errorMessage: string;
11
+ editorValue: moment.Moment;
12
+ editorMinDate: moment.Moment;
13
+ editorMaxDate: moment.Moment;
14
+ onChange: (...args: any[]) => void;
15
+ onError: (error: DateValidationError) => void;
16
+ };
17
+ export {};
@@ -0,0 +1,55 @@
1
+ import { useState, useCallback, useEffect, useMemo } from 'react';
2
+ import moment from 'moment';
3
+ import { isNil } from 'ramda';
4
+ import { utils, debounce } from '@reltio/mdm-sdk';
5
+ import { getEditorMaxDate, getEditorMinDate, getErrorMessage, isDateRangeError } from './helpers';
6
+ import { DEFAULT_MAX_DATE, DEFAULT_MIN_DATE } from '../constants';
7
+ var _a = utils.dates, isValidMomentDateOrNull = _a.isValidMomentDateOrNull, isDateInRange = _a.isDateInRange, momentToDate = _a.momentToDate;
8
+ export var useDateEditor = function (_a) {
9
+ var minDateProp = _a.minDate, maxDateProp = _a.maxDate, value = _a.value, onChange = _a.onChange;
10
+ var _b = useState(null), error = _b[0], setError = _b[1];
11
+ var _c = useState(null), editorValue = _c[0], setEditorValue = _c[1];
12
+ var minDate = useMemo(function () { return utils.dates.clearDateTime(isNil(minDateProp) ? DEFAULT_MIN_DATE : minDateProp); }, [minDateProp]);
13
+ var maxDate = useMemo(function () { return utils.dates.clearDateTime(isNil(maxDateProp) ? DEFAULT_MAX_DATE : maxDateProp); }, [maxDateProp]);
14
+ var momentValue = useMemo(function () { return (isNil(value) ? null : moment(value)); }, [value]);
15
+ var editorMinDate = useMemo(function () { return getEditorMinDate(minDate); }, [minDate]);
16
+ var editorMaxDate = useMemo(function () { return getEditorMaxDate(maxDate); }, [maxDate]);
17
+ var errorMessage = useMemo(function () { return getErrorMessage(error); }, [error]);
18
+ var handleError = useCallback(function (error) {
19
+ if (!isDateRangeError(error))
20
+ setError(error);
21
+ }, []);
22
+ var handleChange = useCallback(function (value) {
23
+ setEditorValue(value);
24
+ if (isValidMomentDateOrNull(value) && isDateInRange(minDate, maxDate)(value)) {
25
+ onChange(momentToDate(value));
26
+ }
27
+ }, [minDate, maxDate, onChange]);
28
+ var debouncedHandleChange = useCallback(debounce(handleChange, 0), [handleChange]);
29
+ useEffect(function () {
30
+ setEditorValue(function (prevEditorValue) {
31
+ var datesAreTheSame = moment(prevEditorValue).isSame(momentValue);
32
+ var datesAreInvalid = !isValidMomentDateOrNull(momentValue) && !isValidMomentDateOrNull(prevEditorValue);
33
+ return datesAreTheSame || datesAreInvalid ? prevEditorValue : momentValue;
34
+ });
35
+ }, [momentValue]);
36
+ useEffect(function () {
37
+ if (editorValue === null || editorValue === void 0 ? void 0 : editorValue.isAfter(maxDate)) {
38
+ setError('maxDate');
39
+ }
40
+ else if (editorValue === null || editorValue === void 0 ? void 0 : editorValue.isBefore(minDate)) {
41
+ setError('minDate');
42
+ }
43
+ else {
44
+ setError(function (prevError) { return (isDateRangeError(prevError) ? null : prevError); });
45
+ }
46
+ }, [editorValue, maxDate, minDate]);
47
+ return {
48
+ errorMessage: errorMessage,
49
+ editorValue: editorValue,
50
+ editorMinDate: editorMinDate,
51
+ editorMaxDate: editorMaxDate,
52
+ onChange: debouncedHandleChange,
53
+ onError: handleError
54
+ };
55
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.1699",
3
+ "version": "1.4.1700",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
@@ -8,7 +8,7 @@
8
8
  "@date-io/moment": "^1.3.5",
9
9
  "@fluentui/react-context-selector": "^9.1.26",
10
10
  "@react-google-maps/api": "2.7.0",
11
- "@reltio/mdm-sdk": "^1.4.1699",
11
+ "@reltio/mdm-sdk": "^1.4.1700",
12
12
  "classnames": "^2.2.5",
13
13
  "d3-cloud": "^1.2.5",
14
14
  "d3-geo": "^2.0.1",