@scaleflex/widget-common 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/CHANGELOG.md +8056 -0
  2. package/LICENSE +21 -0
  3. package/README.md +58 -0
  4. package/dist/style.css +952 -0
  5. package/dist/style.min.css +1 -0
  6. package/lib/ApprovalStatus/ApprovalStatus.styled.js +21 -0
  7. package/lib/ApprovalStatus/index.js +104 -0
  8. package/lib/AssetPreview.js +53 -0
  9. package/lib/AutoSuggest.js +166 -0
  10. package/lib/Avatar/Avatar.styled.js +25 -0
  11. package/lib/Avatar/index.js +83 -0
  12. package/lib/AvatarWithStatus/AvatarWithStatus.styled.js +12 -0
  13. package/lib/AvatarWithStatus/index.js +30 -0
  14. package/lib/BackButton.js +46 -0
  15. package/lib/BackdropOverlay.js +77 -0
  16. package/lib/BadgeButton.js +35 -0
  17. package/lib/BaseButton.js +36 -0
  18. package/lib/Button.js +29 -0
  19. package/lib/Carousel/Carousel.styled.js +19 -0
  20. package/lib/Carousel/index.js +136 -0
  21. package/lib/Checkbox.js +55 -0
  22. package/lib/CloseButton.js +46 -0
  23. package/lib/ColorPicker/ColorPicker.styled.js +29 -0
  24. package/lib/ColorPicker/index.js +117 -0
  25. package/lib/ColorPickerModal/ColorPickerModal.styled.js +17 -0
  26. package/lib/ColorPickerModal/index.js +103 -0
  27. package/lib/DatePicker/MyDatePicker.js +350 -0
  28. package/lib/DatePicker/index.js +1 -0
  29. package/lib/DatePicker/index.scss +254 -0
  30. package/lib/DropFilesWindow.js +45 -0
  31. package/lib/FilterItem/FilterItem.styled.js +42 -0
  32. package/lib/FilterItem/index.js +48 -0
  33. package/lib/FilterPopup/FilterPopup.styled.js +16 -0
  34. package/lib/FilterPopup/index.js +85 -0
  35. package/lib/FormControl.js +25 -0
  36. package/lib/FormGroup.js +18 -0
  37. package/lib/FormHelperText.js +29 -0
  38. package/lib/IconLabeledButton.js +32 -0
  39. package/lib/Image/Image.styled.js +16 -0
  40. package/lib/Image/index.js +95 -0
  41. package/lib/ImagePreview/ImagePreview.styled.js +19 -0
  42. package/lib/ImagePreview/index.js +198 -0
  43. package/lib/InputAndLabel.js +77 -0
  44. package/lib/InputGroupTime.js +6 -0
  45. package/lib/InputLabel.js +18 -0
  46. package/lib/ItemButtonOverlay/ItemButtonOverlay.styled.js +33 -0
  47. package/lib/ItemButtonOverlay/index.js +23 -0
  48. package/lib/ItemHoverTopOptions.js +58 -0
  49. package/lib/LoaderView/LoaderView.styled.js +37 -0
  50. package/lib/LoaderView/index.js +32 -0
  51. package/lib/MetaData/FilterMetadataFields.js +115 -0
  52. package/lib/MetaData/FilterMetadataFields.styled.js +16 -0
  53. package/lib/MetaData/MetaDataField.js +246 -0
  54. package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldBooleanType.js +36 -0
  55. package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldDateType.js +53 -0
  56. package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldMultiSelectType.js +71 -0
  57. package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldNumericType.js +45 -0
  58. package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldSelectType.js +69 -0
  59. package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldTagsType.js +143 -0
  60. package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldTextType.js +42 -0
  61. package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldTextareaType.js +72 -0
  62. package/lib/MetaData/MetaDataFieldTypes/MetaDataFieldTypes.styled.js +57 -0
  63. package/lib/MetaData/MetaDataFieldTypes/MetadataAttachmentsFieldType/AttachmentsAssetsMetadataAccordion.styled.js +95 -0
  64. package/lib/MetaData/MetaDataFieldTypes/MetadataAttachmentsFieldType/MetadataAttachmentsAction.js +188 -0
  65. package/lib/MetaData/MetaDataFieldTypes/MetadataAttachmentsFieldType/MetadataAttachmentsFieldType.constants.js +48 -0
  66. package/lib/MetaData/MetaDataFieldTypes/MetadataAttachmentsFieldType/MetadataAttachmentsInfo.js +93 -0
  67. package/lib/MetaData/MetaDataFieldTypes/MetadataAttachmentsFieldType/index.js +116 -0
  68. package/lib/MetaData/MetaDataFieldTypes/MetadataFieldUriType.js +71 -0
  69. package/lib/MetaData/MetaDataFieldTypes/MetadataGeoPointField/MetadataGeoPointField.styled.js +8 -0
  70. package/lib/MetaData/MetaDataFieldTypes/MetadataGeoPointField/constants.js +10 -0
  71. package/lib/MetaData/MetaDataFieldTypes/MetadataGeoPointField/index.js +135 -0
  72. package/lib/MetaData/MetaDataFieldTypes/index.js +9 -0
  73. package/lib/MetaData/MetaDataFieldTypes.hooks.js +53 -0
  74. package/lib/OverlayCard/OverlayCard.styled.js +8 -0
  75. package/lib/OverlayCard/index.js +28 -0
  76. package/lib/PoweredBy.js +12 -0
  77. package/lib/Radiobox.js +63 -0
  78. package/lib/RegionalVariantsFilters/RegionalVariantFilters.styled.js +17 -0
  79. package/lib/RegionalVariantsFilters/index.js +160 -0
  80. package/lib/SVGUrlToElement.js +73 -0
  81. package/lib/SearchGroup/SearchGroup.styled.js +93 -0
  82. package/lib/SearchGroup/index.js +293 -0
  83. package/lib/Spinner.js +40 -0
  84. package/lib/SuggestedSelectInput/SuggestedSelectInput.styled.js +57 -0
  85. package/lib/SuggestedSelectInput/index.js +238 -0
  86. package/lib/SuggestedTagsInput/SuggestedTagsInput.js +295 -0
  87. package/lib/SuggestedTagsInput/SuggestedTagsInput.styled.js +83 -0
  88. package/lib/SuggestedTagsInput/SuggestedTagsInput.utils.js +15 -0
  89. package/lib/SuggestedTagsInput/SuggestedTagsInputSkeleton.js +14 -0
  90. package/lib/Tabs.js +62 -0
  91. package/lib/ToggleButton/ToggleButton.styled.js +16 -0
  92. package/lib/ToggleButton/index.js +16 -0
  93. package/lib/Transitions/SlideTransition.js +24 -0
  94. package/lib/Transitions/TransitionWrapper.js +83 -0
  95. package/lib/Transitions/Transitions.styled.js +8 -0
  96. package/lib/Transitions/index.js +2 -0
  97. package/lib/Transitions/transitions.scss +49 -0
  98. package/lib/Typography/Typography.js +47 -0
  99. package/lib/Typography/Typography.mixin.js +46 -0
  100. package/lib/Typography/Typography.styled.js +18 -0
  101. package/lib/Typography/index.js +3 -0
  102. package/lib/Typography/types/index.js +1 -0
  103. package/lib/Typography/types/variant.js +9 -0
  104. package/lib/UploadFileFloatyLabel/UploadFileFloatyLabel.mixin.js +23 -0
  105. package/lib/UploadFileFloatyLabel/UploadFileFloatyLabel.styled.js +24 -0
  106. package/lib/UploadFileFloatyLabel/index.js +12 -0
  107. package/lib/UsersAutocomplete/Tag.js +25 -0
  108. package/lib/UsersAutocomplete/Tag.styled.js +35 -0
  109. package/lib/UsersAutocomplete/UsersAutocomplete.styled.js +94 -0
  110. package/lib/UsersAutocomplete/index.js +303 -0
  111. package/lib/VirtualGrid/VirtualGrid.styled.js +33 -0
  112. package/lib/VirtualGrid/VirtualGrid.utils.js +38 -0
  113. package/lib/VirtualGrid/VirtualGridItem.js +15 -0
  114. package/lib/VirtualGrid/index.js +248 -0
  115. package/lib/VirtualList/VirtualListItem.js +14 -0
  116. package/lib/VirtualList/index.js +105 -0
  117. package/lib/hooks/index.js +4 -0
  118. package/lib/hooks/useDebounce.js +24 -0
  119. package/lib/hooks/useInputWithLocaleNumber.js +115 -0
  120. package/lib/hooks/useIsUnMountedRef.js +12 -0
  121. package/lib/hooks/useKeyboardNavigation.js +60 -0
  122. package/lib/hooks/useUpdateEffect.js +19 -0
  123. package/lib/index.js +36 -0
  124. package/lib/style.scss +1079 -0
  125. package/package.json +32 -0
@@ -0,0 +1,103 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
7
+ import { useState, useRef } from 'react';
8
+ import { ColorPicker, Modal, ModalContent, ModalTitle } from '@scaleflex/ui/core';
9
+ import ColorPickerIcon from '@scaleflex/icons/color-picker';
10
+ import Styled from './ColorPickerModal.styled';
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ function ColorPickerModal(_ref) {
13
+ var _ref$defaultColor = _ref.defaultColor,
14
+ defaultColor = _ref$defaultColor === void 0 ? '' : _ref$defaultColor,
15
+ _ref$colors = _ref.colors,
16
+ colors = _ref$colors === void 0 ? [] : _ref$colors,
17
+ onChange = _ref.onChange,
18
+ onTmpChooseColor = _ref.onTmpChooseColor,
19
+ open = _ref.open,
20
+ onClose = _ref.onClose,
21
+ _ref$i18n = _ref.i18n,
22
+ i18n = _ref$i18n === void 0 ? function () {} : _ref$i18n,
23
+ _ref$modalTitleLabel = _ref.modalTitleLabel,
24
+ modalTitleLabel = _ref$modalTitleLabel === void 0 ? i18n('colorPickerModalTitle') : _ref$modalTitleLabel,
25
+ _ref$cancelButtonLabe = _ref.cancelButtonLabel,
26
+ cancelButtonLabel = _ref$cancelButtonLabe === void 0 ? i18n('mutualizedCancelButtonLabel') : _ref$cancelButtonLabe,
27
+ _ref$saveButtonLabel = _ref.saveButtonLabel,
28
+ saveButtonLabel = _ref$saveButtonLabel === void 0 ? i18n('mutualizedApplyButtonLabel') : _ref$saveButtonLabel,
29
+ showTransparentColor = _ref.showTransparentColor,
30
+ hidePinIcon = _ref.hidePinIcon;
31
+ var initialColor = useRef(defaultColor);
32
+ var _useState = useState(defaultColor),
33
+ _useState2 = _slicedToArray(_useState, 2),
34
+ value = _useState2[0],
35
+ setValue = _useState2[1];
36
+ var _useState3 = useState(colors),
37
+ _useState4 = _slicedToArray(_useState3, 2),
38
+ pinnedColors = _useState4[0],
39
+ setPinnedColors = _useState4[1];
40
+ if (!open) {
41
+ return null;
42
+ }
43
+ var handleSave = function handleSave() {
44
+ onChange(value);
45
+ if (typeof onClose === 'function') {
46
+ onClose();
47
+ }
48
+ };
49
+ var handleClose = function handleClose(event) {
50
+ var shouldResetColor = initialColor.current !== value && typeof onTmpChooseColor === 'function';
51
+ if (shouldResetColor) {
52
+ onChange(initialColor.current);
53
+ }
54
+ if (typeof onClose === 'function') {
55
+ onClose(event);
56
+ }
57
+ };
58
+ var onColorChange = function onColorChange(hexColor, rgbColor, colorPickerPinnedColors) {
59
+ if (typeof onTmpChooseColor === 'function') {
60
+ onTmpChooseColor(hexColor);
61
+ }
62
+ setValue(hexColor);
63
+ setPinnedColors(colorPickerPinnedColors);
64
+ };
65
+ return /*#__PURE__*/_jsxs(Modal, {
66
+ onClose: handleClose,
67
+ open: open,
68
+ fullWidth: true,
69
+ style: {
70
+ maxWidth: 350
71
+ },
72
+ children: [/*#__PURE__*/_jsx(ModalTitle, {
73
+ onClose: handleClose,
74
+ primary: modalTitleLabel,
75
+ icon: /*#__PURE__*/_jsx(ColorPickerIcon, {
76
+ size: 29
77
+ }),
78
+ iconShadow: true,
79
+ variant: "with-icon"
80
+ }), /*#__PURE__*/_jsx(ModalContent, {
81
+ children: /*#__PURE__*/_jsx(Styled.ColorPickerWrap, {
82
+ children: /*#__PURE__*/_jsx(ColorPicker, {
83
+ defaultColor: defaultColor,
84
+ pinnedColors: pinnedColors,
85
+ onChange: onColorChange,
86
+ showTransparentColor: showTransparentColor,
87
+ hidePinIcon: hidePinIcon
88
+ })
89
+ })
90
+ }), /*#__PURE__*/_jsxs(Styled.ModalActions, {
91
+ children: [/*#__PURE__*/_jsx(Styled.ModalButton, {
92
+ color: "basic",
93
+ onClick: handleClose,
94
+ children: cancelButtonLabel
95
+ }), /*#__PURE__*/_jsx(Styled.ModalButton, {
96
+ color: "primary",
97
+ onClick: handleSave,
98
+ children: saveButtonLabel
99
+ })]
100
+ })]
101
+ });
102
+ }
103
+ export default ColorPickerModal;
@@ -0,0 +1,350 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
7
+ import { useState, useEffect, useRef } from 'react';
8
+ import { InputAndLabel } from '@scaleflex/widget-common';
9
+ import getDateString from '@scaleflex/widget-utils/lib/getDateString';
10
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
+ var oneDay = 60 * 60 * 24 * 1000;
12
+ var todayTimestamp = Date.now() - Date.now() % oneDay + new Date().getTimezoneOffset() * 1000 * 60;
13
+ var MyDatePicker = function MyDatePicker(props) {
14
+ var _useState = useState(function () {
15
+ return new Date().getFullYear();
16
+ }),
17
+ _useState2 = _slicedToArray(_useState, 2),
18
+ year = _useState2[0],
19
+ setYear = _useState2[1];
20
+ var _useState3 = useState(function () {
21
+ return new Date().getMonth();
22
+ }),
23
+ _useState4 = _slicedToArray(_useState3, 2),
24
+ month = _useState4[0],
25
+ setMonth = _useState4[1];
26
+ var _useState5 = useState(function () {
27
+ return todayTimestamp;
28
+ }),
29
+ _useState6 = _slicedToArray(_useState5, 2),
30
+ selectedDay = _useState6[0],
31
+ setSelectedDay = _useState6[1];
32
+ var _useState7 = useState(false),
33
+ _useState8 = _slicedToArray(_useState7, 2),
34
+ showDatePicker = _useState8[0],
35
+ setShowDatePicker = _useState8[1];
36
+ var _useState9 = useState(0),
37
+ _useState10 = _slicedToArray(_useState9, 2),
38
+ menuHeight = _useState10[0],
39
+ setMenuHeight = _useState10[1];
40
+ var wrapper = useRef();
41
+ var inputRef = useRef();
42
+ var iconRef = useRef();
43
+ var datePickerRef = useRef();
44
+ var getDayDetails = function getDayDetails(args) {
45
+ var daysMap = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
46
+ var date = args.index - args.firstDay;
47
+ var day = args.index % 7;
48
+ var prevMonth = args.month - 1;
49
+ var prevYear = args.year;
50
+ if (prevMonth < 0) {
51
+ prevMonth = 11;
52
+ prevYear--;
53
+ }
54
+ var prevMonthNumberOfDays = getNumberOfDays(prevYear, prevMonth);
55
+ var _date = (date < 0 ? prevMonthNumberOfDays + date : date % args.numberOfDays) + 1;
56
+ var month = date < 0 ? -1 : date >= args.numberOfDays ? 1 : 0;
57
+ var timestamp = new Date(args.year, args.month, _date).getTime();
58
+ return {
59
+ date: _date,
60
+ day: day,
61
+ month: month,
62
+ timestamp: timestamp,
63
+ dayString: daysMap[day]
64
+ };
65
+ };
66
+ var getNumberOfDays = function getNumberOfDays(year, month) {
67
+ return 40 - new Date(year, month, 40).getDate();
68
+ };
69
+ var getMonthDetails = function getMonthDetails(year, month) {
70
+ var firstDay = new Date(year, month).getDay();
71
+ var numberOfDays = getNumberOfDays(year, month);
72
+ var monthArray = [];
73
+ var rows = 6;
74
+ var currentDay = null;
75
+ var index = 0;
76
+ var cols = 7;
77
+ for (var row = 0; row < rows; row++) {
78
+ for (var col = 0; col < cols; col++) {
79
+ currentDay = getDayDetails({
80
+ index: index,
81
+ numberOfDays: numberOfDays,
82
+ firstDay: firstDay,
83
+ year: year,
84
+ month: month
85
+ });
86
+ monthArray.push(currentDay);
87
+ index++;
88
+ }
89
+ }
90
+ return monthArray;
91
+ };
92
+ var _useState11 = useState(function () {
93
+ return getMonthDetails(year, month);
94
+ }),
95
+ _useState12 = _slicedToArray(_useState11, 2),
96
+ monthDetails = _useState12[0],
97
+ setMonthDetails = _useState12[1];
98
+ useEffect(function () {
99
+ setDateToInput(selectedDay);
100
+ }, []);
101
+ useEffect(function () {
102
+ getMenuHeight();
103
+ }, [showDatePicker]);
104
+ useEffect(function () {
105
+ setDateToInput(selectedDay.timestamp);
106
+ }, [selectedDay]);
107
+ useEffect(function () {
108
+ var closeDatePicker = function closeDatePicker(e) {
109
+ var _iconRef$current, _datePickerRef$curren;
110
+ if (!((_iconRef$current = iconRef.current) !== null && _iconRef$current !== void 0 && _iconRef$current.contains(e.target)) && !((_datePickerRef$curren = datePickerRef.current) !== null && _datePickerRef$curren !== void 0 && _datePickerRef$curren.contains(e.target))) {
111
+ e.preventDefault();
112
+ e.stopPropagation();
113
+ setShowDatePicker(false);
114
+ }
115
+ };
116
+ document.addEventListener('click', closeDatePicker);
117
+ return function () {
118
+ document.removeEventListener('click', closeDatePicker);
119
+ };
120
+ }, []);
121
+ var getMenuHeight = function getMenuHeight() {
122
+ var _document$querySelect, _document$querySelect2;
123
+ var height = (_document$querySelect = document.querySelector('.filerobot-common-datePicker-container')) === null || _document$querySelect === void 0 ? void 0 : (_document$querySelect2 = _document$querySelect.getBoundingClientRect()) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.height;
124
+ setMenuHeight(height);
125
+ };
126
+ var getMenuPosition = function getMenuPosition() {
127
+ return menuHeight + props.top >= props.containerHeight ? {
128
+ bottom: 45
129
+ } : {
130
+ top: 45
131
+ };
132
+ };
133
+ var showADatePicker = function showADatePicker(e) {
134
+ props.getParentPosition(e);
135
+ e.preventDefault();
136
+ e.stopPropagation();
137
+ setShowDatePicker(!showDatePicker);
138
+ };
139
+ var isCurrentDay = function isCurrentDay(day) {
140
+ return day.timestamp === todayTimestamp;
141
+ };
142
+ var isSelectedDay = function isSelectedDay(day) {
143
+ return day.timestamp === selectedDay;
144
+ };
145
+ var getDateFromDateString = function getDateFromDateString(dateValue) {
146
+ var _ref;
147
+ console.log('hey', dateValue);
148
+ var dateData = (_ref = typeof dateValue === 'string' ? dateValue === null || dateValue === void 0 ? void 0 : dateValue.split('-') : dateValue) === null || _ref === void 0 ? void 0 : _ref.map(function (d) {
149
+ return parseInt(d, 10);
150
+ });
151
+ if (!dateData || dateData.length < 3) {
152
+ return null;
153
+ }
154
+ var year = dateData[0];
155
+ var month = dateData[1];
156
+ var date = dateData[2];
157
+ return {
158
+ year: year,
159
+ month: month,
160
+ date: date
161
+ };
162
+ };
163
+ var getMonthStr = function getMonthStr(month) {
164
+ var monthMap = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
165
+ return monthMap[Math.max(Math.min(11, month), 0)] || 'Month';
166
+ };
167
+ var getDateStringFromTimestamp = function getDateStringFromTimestamp(timestamp) {
168
+ var dateObject = new Date(timestamp);
169
+ var month = dateObject.getMonth() + 1;
170
+ var date = dateObject.getDate();
171
+ return dateObject.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (date < 10 ? '0' + date : date);
172
+ };
173
+ var setDate = function setDate(dateData) {
174
+ var selectedDay = new Date(dateData.year, dateData.month - 1, dateData.date).getTime();
175
+ setSelectedDay(selectedDay);
176
+ if (props.onChange) {
177
+ props.onChange({}, getDateString('ymd', '-', selectedDay));
178
+ }
179
+ };
180
+ var updateDateFromInput = function updateDateFromInput(e) {
181
+ if (!inputRef.current.value) {
182
+ return;
183
+ }
184
+ var dateData = getDateFromDateString(inputRef.current.value);
185
+ if (dateData !== null) {
186
+ setDate(dateData);
187
+ setYear(dateData.year);
188
+ setMonth(dateData.month - 1);
189
+ setMonthDetails(getMonthDetails(dateData.year, dateData.month - 1));
190
+ }
191
+ };
192
+ var setDateToInput = function setDateToInput(timestamp) {
193
+ var dateString = getDateStringFromTimestamp(timestamp);
194
+
195
+ // if no update from external value update internally
196
+ if (inputRef && !props.onChange) {
197
+ inputRef.current.value = dateString;
198
+ }
199
+ };
200
+ var onDateClick = function onDateClick(day) {
201
+ setSelectedDay(day.timestamp);
202
+ if (props.onChange) {
203
+ props.onChange({}, getDateStringFromTimestamp(day.timestamp));
204
+ }
205
+ };
206
+ var setNewYear = function setNewYear(offset) {
207
+ var newYear = year + offset;
208
+ setYear(newYear);
209
+ setMonthDetails(getMonthDetails(newYear, month));
210
+ };
211
+ var setNewMonth = function setNewMonth(offset) {
212
+ var newYear = year;
213
+ var newMonth = month + offset;
214
+ if (month === -1) {
215
+ newMonth = 11;
216
+ newYear--;
217
+ } else if (month === 12) {
218
+ newMonth = 0;
219
+ newYear++;
220
+ }
221
+ setYear(newYear);
222
+ setMonth(newMonth);
223
+ setMonthDetails(getMonthDetails(newYear, newMonth));
224
+ };
225
+ var renderCalendar = function renderCalendar() {
226
+ var days = monthDetails.map(function (day, index) {
227
+ return /*#__PURE__*/_jsx("div", {
228
+ className: "filerobot-common-datePicker-calendar-day".concat(day.month !== 0 ? ' disabled' : '') + (isCurrentDay(day) ? ' highlight' : '') + (isSelectedDay(day) ? ' highlight-green' : ''),
229
+ children: /*#__PURE__*/_jsx("div", {
230
+ className: "filerobot-common-datePicker-calendar-day-container",
231
+ children: /*#__PURE__*/_jsx("span", {
232
+ onClick: function onClick() {
233
+ return onDateClick(day);
234
+ },
235
+ children: day.date
236
+ })
237
+ })
238
+ }, index);
239
+ });
240
+ return /*#__PURE__*/_jsxs("div", {
241
+ className: "filerobot-common-datePicker-calendar",
242
+ children: [/*#__PURE__*/_jsx("div", {
243
+ className: "filerobot-common-datePicker-calendar-head",
244
+ children: ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'].map(function (d, i) {
245
+ return /*#__PURE__*/_jsx("div", {
246
+ className: "filerobot-common-datePicker-calendar-head-name",
247
+ children: d
248
+ }, i);
249
+ })
250
+ }), /*#__PURE__*/_jsx("div", {
251
+ className: "filerobot-common-datePicker-calendar-body",
252
+ children: days
253
+ })]
254
+ });
255
+ };
256
+ var showLabel = typeof props.showLabel === 'boolean' ? props.showLabel : true;
257
+ return /*#__PURE__*/_jsx(_Fragment, {
258
+ children: /*#__PURE__*/_jsxs("div", {
259
+ className: "filerobot-common-datePicker ".concat(props.classes ? "".concat(props.classes) : ''),
260
+ style: props.isFilterOptions ? {
261
+ position: 'unset'
262
+ } : {},
263
+ ref: wrapper,
264
+ children: [/*#__PURE__*/_jsx("div", {
265
+ className: "filerobot-common-datePicker-input",
266
+ children: /*#__PURE__*/_jsx(InputAndLabel, {
267
+ item: "date",
268
+ type: "date",
269
+ value: props.value,
270
+ onChange: updateDateFromInput,
271
+ onClick: showADatePicker,
272
+ ref: inputRef,
273
+ innerRef: iconRef,
274
+ icon: props.icon,
275
+ i18n: props.i18n,
276
+ isFilterOptions: props.isFilterOptions,
277
+ showLabel: showLabel
278
+ })
279
+ }), showDatePicker ? /*#__PURE__*/_jsxs("div", {
280
+ className: "filerobot-common-datePicker-container",
281
+ style: props.isFilterOptions ? {
282
+ bottom: 99,
283
+ left: 10
284
+ } : getMenuPosition(),
285
+ ref: datePickerRef,
286
+ children: [/*#__PURE__*/_jsxs("div", {
287
+ className: "filerobot-common-datePicker-container-head",
288
+ children: [/*#__PURE__*/_jsx("div", {
289
+ className: "filerobot-common-datePicker-container-head-button",
290
+ children: /*#__PURE__*/_jsx("div", {
291
+ className: "filerobot-common-datePicker-container-head-button-inner",
292
+ onClick: function onClick() {
293
+ return setNewYear(-1);
294
+ },
295
+ children: /*#__PURE__*/_jsx("span", {
296
+ className: "mdpchbi-left-arrows"
297
+ })
298
+ })
299
+ }), /*#__PURE__*/_jsx("div", {
300
+ className: "filerobot-common-datePicker-container-head-button",
301
+ children: /*#__PURE__*/_jsx("div", {
302
+ className: "filerobot-common-datePicker-container-head-button-inner",
303
+ onClick: function onClick() {
304
+ return setNewMonth(-1);
305
+ },
306
+ children: /*#__PURE__*/_jsx("span", {
307
+ className: "mdpchbi-left-arrow"
308
+ })
309
+ })
310
+ }), /*#__PURE__*/_jsxs("div", {
311
+ className: "filerobot-common-datePicker-container-head-body",
312
+ children: [/*#__PURE__*/_jsx("div", {
313
+ className: "filerobot-common-datePicker-container-head-body-year",
314
+ children: year
315
+ }), /*#__PURE__*/_jsx("div", {
316
+ className: "filerobot-common-datePicker-container-head-body-month",
317
+ children: getMonthStr(month)
318
+ })]
319
+ }), /*#__PURE__*/_jsx("div", {
320
+ className: "filerobot-common-datePicker-container-head-button",
321
+ children: /*#__PURE__*/_jsx("div", {
322
+ className: "filerobot-common-datePicker-container-head-button-inner",
323
+ onClick: function onClick() {
324
+ return setNewMonth(1);
325
+ },
326
+ children: /*#__PURE__*/_jsx("span", {
327
+ className: "mdpchbi-right-arrow"
328
+ })
329
+ })
330
+ }), /*#__PURE__*/_jsx("div", {
331
+ className: "filerobot-common-datePicker-container-head-button",
332
+ onClick: function onClick() {
333
+ return setNewYear(1);
334
+ },
335
+ children: /*#__PURE__*/_jsx("div", {
336
+ className: "filerobot-common-datePicker-container-head-button-inner",
337
+ children: /*#__PURE__*/_jsx("span", {
338
+ className: "mdpchbi-right-arrows"
339
+ })
340
+ })
341
+ })]
342
+ }), /*#__PURE__*/_jsx("div", {
343
+ className: "filerobot-common-datePicker-container-body",
344
+ children: renderCalendar()
345
+ })]
346
+ }) : '']
347
+ })
348
+ });
349
+ };
350
+ export default MyDatePicker;
@@ -0,0 +1 @@
1
+ export { default as DatePicker } from './MyDatePicker';