@dreamcommerce/aurora 3.1.51 → 3.1.52-2

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 (104) hide show
  1. package/build/cjs/packages/aurora/src/components/calendar/styled_day_picker/styled_day_picker.js +1 -1
  2. package/build/cjs/packages/aurora/src/components/color_picker/components/pure_color_picker.js +0 -1
  3. package/build/cjs/packages/aurora/src/components/color_picker/components/pure_color_picker.js.map +1 -1
  4. package/build/cjs/packages/aurora/src/components/date_and_time_picker/date_time_picker.js +16 -27
  5. package/build/cjs/packages/aurora/src/components/date_and_time_picker/date_time_picker.js.map +1 -1
  6. package/build/cjs/packages/aurora/src/components/date_picker/components/date_picker_input.js +43 -11
  7. package/build/cjs/packages/aurora/src/components/date_picker/components/date_picker_input.js.map +1 -1
  8. package/build/cjs/packages/aurora/src/components/date_picker/date_picker.js +93 -13
  9. package/build/cjs/packages/aurora/src/components/date_picker/date_picker.js.map +1 -1
  10. package/build/cjs/packages/aurora/src/components/date_picker/date_picker_utils.js +203 -4
  11. package/build/cjs/packages/aurora/src/components/date_picker/date_picker_utils.js.map +1 -1
  12. package/build/cjs/packages/aurora/src/components/input_mask/hooks/hooks.js +196 -0
  13. package/build/cjs/packages/aurora/src/components/input_mask/hooks/hooks.js.map +1 -0
  14. package/build/cjs/packages/aurora/src/components/input_mask/input-mask-constants.js +14 -0
  15. package/build/cjs/packages/aurora/src/components/input_mask/input-mask-constants.js.map +1 -0
  16. package/build/cjs/packages/aurora/src/components/input_mask/input_mask.js +360 -0
  17. package/build/cjs/packages/aurora/src/components/input_mask/input_mask.js.map +1 -0
  18. package/build/cjs/packages/aurora/src/components/input_mask/utils/defer.js +16 -0
  19. package/build/cjs/packages/aurora/src/components/input_mask/utils/defer.js.map +1 -0
  20. package/build/cjs/packages/aurora/src/components/input_mask/utils/helpers.js +50 -0
  21. package/build/cjs/packages/aurora/src/components/input_mask/utils/helpers.js.map +1 -0
  22. package/build/cjs/packages/aurora/src/components/input_mask/utils/input.js +33 -0
  23. package/build/cjs/packages/aurora/src/components/input_mask/utils/input.js.map +1 -0
  24. package/build/cjs/packages/aurora/src/components/input_mask/utils/mask.js +371 -0
  25. package/build/cjs/packages/aurora/src/components/input_mask/utils/mask.js.map +1 -0
  26. package/build/cjs/packages/aurora/src/components/input_mask/utils/parse-mask.js +94 -0
  27. package/build/cjs/packages/aurora/src/components/input_mask/utils/parse-mask.js.map +1 -0
  28. package/build/cjs/packages/aurora/src/components/input_mask/utils/validate-props.js +37 -0
  29. package/build/cjs/packages/aurora/src/components/input_mask/utils/validate-props.js.map +1 -0
  30. package/build/cjs/packages/aurora/src/components/time_picker/components/time_picker_input.js +30 -10
  31. package/build/cjs/packages/aurora/src/components/time_picker/components/time_picker_input.js.map +1 -1
  32. package/build/cjs/packages/aurora/src/components/time_picker/time_picker.js +85 -50
  33. package/build/cjs/packages/aurora/src/components/time_picker/time_picker.js.map +1 -1
  34. package/build/cjs/packages/aurora/src/components/time_picker/time_picker_utils.js +62 -1
  35. package/build/cjs/packages/aurora/src/components/time_picker/time_picker_utils.js.map +1 -1
  36. package/build/cjs/packages/aurora/src/index.js +2 -0
  37. package/build/cjs/packages/aurora/src/index.js.map +1 -1
  38. package/build/cjs/packages/aurora/src/translations/en.json.js +5 -1
  39. package/build/cjs/packages/aurora/src/translations/en.json.js.map +1 -1
  40. package/build/cjs/packages/aurora/src/translations/pl.json.js +5 -1
  41. package/build/cjs/packages/aurora/src/translations/pl.json.js.map +1 -1
  42. package/build/esm/packages/aurora/src/components/calendar/styled_day_picker/styled_day_picker.js +1 -1
  43. package/build/esm/packages/aurora/src/components/color_picker/components/pure_color_picker.js +0 -1
  44. package/build/esm/packages/aurora/src/components/color_picker/components/pure_color_picker.js.map +1 -1
  45. package/build/esm/packages/aurora/src/components/date_and_time_picker/date_time_picker.js +16 -27
  46. package/build/esm/packages/aurora/src/components/date_and_time_picker/date_time_picker.js.map +1 -1
  47. package/build/esm/packages/aurora/src/components/date_picker/components/date_picker_input.d.ts +4 -1
  48. package/build/esm/packages/aurora/src/components/date_picker/components/date_picker_input.js +43 -11
  49. package/build/esm/packages/aurora/src/components/date_picker/components/date_picker_input.js.map +1 -1
  50. package/build/esm/packages/aurora/src/components/date_picker/date_picker.d.ts +1 -1
  51. package/build/esm/packages/aurora/src/components/date_picker/date_picker.js +94 -14
  52. package/build/esm/packages/aurora/src/components/date_picker/date_picker.js.map +1 -1
  53. package/build/esm/packages/aurora/src/components/date_picker/date_picker_types.d.ts +1 -1
  54. package/build/esm/packages/aurora/src/components/date_picker/date_picker_utils.d.ts +19 -2
  55. package/build/esm/packages/aurora/src/components/date_picker/date_picker_utils.js +203 -4
  56. package/build/esm/packages/aurora/src/components/date_picker/date_picker_utils.js.map +1 -1
  57. package/build/esm/packages/aurora/src/components/input_mask/hooks/hooks.d.ts +10 -0
  58. package/build/esm/packages/aurora/src/components/input_mask/hooks/hooks.js +190 -0
  59. package/build/esm/packages/aurora/src/components/input_mask/hooks/hooks.js.map +1 -0
  60. package/build/esm/packages/aurora/src/components/input_mask/input-mask-constants.d.ts +6 -0
  61. package/build/esm/packages/aurora/src/components/input_mask/input-mask-constants.js +9 -0
  62. package/build/esm/packages/aurora/src/components/input_mask/input-mask-constants.js.map +1 -0
  63. package/build/esm/packages/aurora/src/components/input_mask/input_mask.d.ts +4 -0
  64. package/build/esm/packages/aurora/src/components/input_mask/input_mask.js +352 -0
  65. package/build/esm/packages/aurora/src/components/input_mask/input_mask.js.map +1 -0
  66. package/build/esm/packages/aurora/src/components/input_mask/input_mask_types.d.ts +39 -0
  67. package/build/esm/packages/aurora/src/components/input_mask/input_mask_types.js +2 -0
  68. package/build/esm/packages/aurora/src/components/input_mask/input_mask_types.js.map +1 -0
  69. package/build/esm/packages/aurora/src/components/input_mask/utils/defer.d.ts +2 -0
  70. package/build/esm/packages/aurora/src/components/input_mask/utils/defer.js +11 -0
  71. package/build/esm/packages/aurora/src/components/input_mask/utils/defer.js.map +1 -0
  72. package/build/esm/packages/aurora/src/components/input_mask/utils/helpers.d.ts +7 -0
  73. package/build/esm/packages/aurora/src/components/input_mask/utils/helpers.js +40 -0
  74. package/build/esm/packages/aurora/src/components/input_mask/utils/helpers.js.map +1 -0
  75. package/build/esm/packages/aurora/src/components/input_mask/utils/input.d.ts +9 -0
  76. package/build/esm/packages/aurora/src/components/input_mask/utils/input.js +29 -0
  77. package/build/esm/packages/aurora/src/components/input_mask/utils/input.js.map +1 -0
  78. package/build/esm/packages/aurora/src/components/input_mask/utils/mask.d.ts +63 -0
  79. package/build/esm/packages/aurora/src/components/input_mask/utils/mask.js +367 -0
  80. package/build/esm/packages/aurora/src/components/input_mask/utils/mask.js.map +1 -0
  81. package/build/esm/packages/aurora/src/components/input_mask/utils/parse-mask.d.ts +7 -0
  82. package/build/esm/packages/aurora/src/components/input_mask/utils/parse-mask.js +90 -0
  83. package/build/esm/packages/aurora/src/components/input_mask/utils/parse-mask.js.map +1 -0
  84. package/build/esm/packages/aurora/src/components/input_mask/utils/validate-props.d.ts +4 -0
  85. package/build/esm/packages/aurora/src/components/input_mask/utils/validate-props.js +31 -0
  86. package/build/esm/packages/aurora/src/components/input_mask/utils/validate-props.js.map +1 -0
  87. package/build/esm/packages/aurora/src/components/time_picker/components/time_picker_input.d.ts +2 -1
  88. package/build/esm/packages/aurora/src/components/time_picker/components/time_picker_input.js +30 -10
  89. package/build/esm/packages/aurora/src/components/time_picker/components/time_picker_input.js.map +1 -1
  90. package/build/esm/packages/aurora/src/components/time_picker/time_picker.js +87 -52
  91. package/build/esm/packages/aurora/src/components/time_picker/time_picker.js.map +1 -1
  92. package/build/esm/packages/aurora/src/components/time_picker/time_picker_utils.d.ts +11 -0
  93. package/build/esm/packages/aurora/src/components/time_picker/time_picker_utils.js +62 -1
  94. package/build/esm/packages/aurora/src/components/time_picker/time_picker_utils.js.map +1 -1
  95. package/build/esm/packages/aurora/src/index.d.ts +2 -0
  96. package/build/esm/packages/aurora/src/index.js +1 -0
  97. package/build/esm/packages/aurora/src/index.js.map +1 -1
  98. package/build/esm/packages/aurora/src/translations/en.json +5 -1
  99. package/build/esm/packages/aurora/src/translations/en.json.js +5 -1
  100. package/build/esm/packages/aurora/src/translations/en.json.js.map +1 -1
  101. package/build/esm/packages/aurora/src/translations/pl.json +5 -1
  102. package/build/esm/packages/aurora/src/translations/pl.json.js +5 -1
  103. package/build/esm/packages/aurora/src/translations/pl.json.js.map +1 -1
  104. package/package.json +1 -1
@@ -1,13 +1,13 @@
1
1
  import React__default, { useState, useMemo } from 'react';
2
- import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, objectSpread2 as _objectSpread2 } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
3
- import { cn } from '../../utilities/cn.js';
2
+ import { useTranslation } from '../../../../../external/react-i18next/dist/es/useTranslation.js';
3
+ import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, typeof as _typeof, toConsumableArray as _toConsumableArray, objectSpread2 as _objectSpread2 } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
4
+ import { ErrorList } from '../error_list/error_list.js';
4
5
  import { Popover } from '../popover/popover.js';
5
- import { PopoverTrigger } from '../popover/components/popover_trigger.js';
6
+ import { DatePickerUtils } from './date_picker_utils.js';
6
7
  import { DatePickerInput } from './components/date_picker_input.js';
7
8
  import { DatePickerContent } from './components/date_picker_content.js';
8
- import { DatePickerUtils } from './date_picker_utils.js';
9
9
 
10
- var _excluded = ["id", "mode", "placeholder", "disabled", "errors", "value", "onChange", "disabledDays"];
10
+ var _excluded = ["id", "mode", "placeholder", "disabled", "errors", "value", "onChange", "disabledDays", "startMonth", "endMonth"];
11
11
  var DatePicker = function DatePicker(_ref) {
12
12
  var id = _ref.id,
13
13
  _ref$mode = _ref.mode,
@@ -18,42 +18,122 @@ var DatePicker = function DatePicker(_ref) {
18
18
  value = _ref.value,
19
19
  onChange = _ref.onChange,
20
20
  disabledDays = _ref.disabledDays,
21
+ startMonth = _ref.startMonth,
22
+ endMonth = _ref.endMonth,
21
23
  dayPickerProps = _objectWithoutProperties(_ref, _excluded);
24
+ var _useTranslation = useTranslation(),
25
+ _useTranslation2 = _slicedToArray(_useTranslation, 1),
26
+ t = _useTranslation2[0];
22
27
  var _useState = useState(false),
23
28
  _useState2 = _slicedToArray(_useState, 2),
24
29
  open = _useState2[0],
25
30
  setOpen = _useState2[1];
31
+ var _useState3 = useState(''),
32
+ _useState4 = _slicedToArray(_useState3, 2),
33
+ inputValue = _useState4[0],
34
+ setInputValue = _useState4[1];
35
+ var _useState5 = useState(undefined),
36
+ _useState6 = _slicedToArray(_useState5, 2),
37
+ internalValidationErrors = _useState6[0],
38
+ setInternalValidationErrors = _useState6[1];
26
39
  var selectedDates = useMemo(function () {
27
40
  return value;
28
41
  }, [value]);
29
42
  var displayValue = useMemo(function () {
30
- if (!selectedDates) return '';
43
+ if (!selectedDates) return inputValue;
31
44
  return DatePickerUtils.inputFormatValue(selectedDates, mode);
45
+ }, [selectedDates, mode, inputValue]);
46
+ var defaultMonth = useMemo(function () {
47
+ if (!selectedDates) return undefined;
48
+ if (mode === 'single' && selectedDates instanceof Date) {
49
+ return selectedDates;
50
+ }
51
+ if (mode === 'range' && selectedDates && _typeof(selectedDates) === 'object' && 'from' in selectedDates) {
52
+ return selectedDates.from;
53
+ }
54
+ return undefined;
32
55
  }, [selectedDates, mode]);
56
+ var inputErrors = useMemo(function () {
57
+ if (internalValidationErrors && errors) {
58
+ return Array.isArray(errors) ? [].concat(_toConsumableArray(errors), [internalValidationErrors]) : [errors, internalValidationErrors];
59
+ }
60
+ if (internalValidationErrors) return internalValidationErrors;
61
+ return errors;
62
+ }, [internalValidationErrors, errors]);
33
63
  var handleDateSelect = function handleDateSelect(selected) {
34
64
  onChange === null || onChange === void 0 ? void 0 : onChange(selected);
65
+ setInputValue('');
66
+ setInternalValidationErrors(undefined);
35
67
  if (mode === 'single' && selected) {
36
68
  setOpen(false);
37
69
  }
38
70
  };
39
- return /*#__PURE__*/React__default.createElement(Popover, {
71
+ var handleInputChange = function handleInputChange(event) {
72
+ var typedValue = event.target.value;
73
+ setInputValue(typedValue);
74
+ if (typedValue.includes('_') || !typedValue) {
75
+ setInternalValidationErrors(undefined);
76
+ onChange === null || onChange === void 0 ? void 0 : onChange(undefined);
77
+ return;
78
+ }
79
+ if (mode === 'single') {
80
+ var parsedDate = DatePickerUtils.parseStringToDate(typedValue);
81
+ if (!parsedDate) {
82
+ setInternalValidationErrors(t("This date isn't available. Choose another one."));
83
+ onChange === null || onChange === void 0 ? void 0 : onChange(undefined);
84
+ return;
85
+ }
86
+ var isInRange = DatePickerUtils.isDateInRange(parsedDate, startMonth, endMonth);
87
+ var isDisabled = DatePickerUtils.isDateDisabled(parsedDate, disabledDays);
88
+ if (!isInRange) {
89
+ var formattedStart = startMonth ? DatePickerUtils.formatDate(startMonth) : '';
90
+ var lastDayOfEndMonth = endMonth ? new Date(endMonth.getFullYear(), endMonth.getMonth() + 1, 0) : null;
91
+ var formattedEnd = lastDayOfEndMonth ? DatePickerUtils.formatDate(lastDayOfEndMonth) : '';
92
+ var rangeMessage = t('Choose a date between {{start}}–{{end}}', {
93
+ start: formattedStart,
94
+ end: formattedEnd
95
+ });
96
+ setInternalValidationErrors(rangeMessage);
97
+ onChange === null || onChange === void 0 ? void 0 : onChange(undefined);
98
+ } else if (isDisabled) {
99
+ setInternalValidationErrors(t("This date isn't available. Choose another one."));
100
+ onChange === null || onChange === void 0 ? void 0 : onChange(undefined);
101
+ } else {
102
+ setInternalValidationErrors(undefined);
103
+ onChange === null || onChange === void 0 ? void 0 : onChange(parsedDate);
104
+ }
105
+ }
106
+ if (mode === 'range') {
107
+ var parsedRange = DatePickerUtils.parseStringToDateRange(typedValue);
108
+ if (parsedRange) {
109
+ onChange === null || onChange === void 0 ? void 0 : onChange(parsedRange);
110
+ } else {
111
+ onChange === null || onChange === void 0 ? void 0 : onChange(undefined);
112
+ }
113
+ }
114
+ };
115
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Popover, {
40
116
  open: open,
41
117
  onOpenChange: setOpen
42
- }, /*#__PURE__*/React__default.createElement(PopoverTrigger, {
43
- className: cn('aurora-w-full', disabled && 'aurora-cursor-not-allowed'),
44
- disabled: disabled
45
118
  }, /*#__PURE__*/React__default.createElement(DatePickerInput, {
46
119
  id: id,
120
+ mode: mode,
47
121
  value: displayValue,
48
122
  placeholder: placeholder,
49
123
  disabled: disabled,
50
- errors: errors
51
- })), /*#__PURE__*/React__default.createElement(DatePickerContent, _objectSpread2({
124
+ errors: inputErrors,
125
+ onChange: handleInputChange
126
+ }), /*#__PURE__*/React__default.createElement(DatePickerContent, _objectSpread2({
52
127
  mode: mode,
53
128
  selected: selectedDates,
54
129
  onSelect: handleDateSelect,
55
- disabled: disabledDays
56
- }, dayPickerProps)));
130
+ disabled: disabledDays,
131
+ defaultMonth: defaultMonth,
132
+ startMonth: startMonth,
133
+ endMonth: endMonth
134
+ }, dayPickerProps))), internalValidationErrors ? /*#__PURE__*/React__default.createElement(ErrorList, {
135
+ errors: internalValidationErrors
136
+ }) : null);
57
137
  };
58
138
 
59
139
  export { DatePicker };
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA,+BAA+B,iEAAqE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,5 +1,5 @@
1
1
  import type { DateRange, DayPickerProps } from 'react-day-picker';
2
- export declare type DatePickerCalendarValue = Date | Date[] | DateRange | undefined;
2
+ export declare type DatePickerCalendarValue = Date | DateRange | undefined;
3
3
  export interface DatePickerProps extends Omit<DayPickerProps, 'selected' | 'onSelect' | 'disabled'> {
4
4
  id: string;
5
5
  placeholder?: string;
@@ -1,7 +1,24 @@
1
- import { type Mode } from 'react-day-picker';
1
+ import { DateRange, type Mode, type DayPickerProps } from 'react-day-picker';
2
2
  import type { DatePickerCalendarValue } from './date_picker_types';
3
+ import type { InputState } from '../input_mask/input_mask_types';
4
+ declare type ValidationResult = {
5
+ valid: boolean;
6
+ keepFirst: boolean;
7
+ };
3
8
  export declare class DatePickerUtils {
4
9
  private static readonly formatter;
5
- private static formatDate;
10
+ static formatDate: (date: Date) => string;
6
11
  static inputFormatValue: (selected: DatePickerCalendarValue, mode: Mode) => string;
12
+ static parseStringToDate: (dateString: string) => Date | null;
13
+ static parseStringToDateRange: (rangeString: string) => DateRange | null;
14
+ private static replaceCharWithPlaceholder;
15
+ private static validateTwoDigitValue;
16
+ static validateDayAtPosition: (value: string, dayStartPos: number) => ValidationResult;
17
+ static validateMonthAtPosition: (value: string, monthStartPos: number) => ValidationResult;
18
+ static validateYearAtPosition: (value: string, yearStartPos: number) => ValidationResult;
19
+ private static handleInvalidInput;
20
+ static validateDateMask: (nextState: InputState, currentState?: InputState, mode?: Mode) => InputState;
21
+ static isDateInRange: (date: Date, startMonth?: Date, endMonth?: Date) => boolean;
22
+ static isDateDisabled: (date: Date, disabledDays?: DayPickerProps['disabled']) => boolean;
7
23
  }
24
+ export {};
@@ -2,6 +2,21 @@ import { createClass as _createClass, classCallCheck as _classCallCheck, defineP
2
2
  import 'react-day-picker';
3
3
 
4
4
  var _DatePickerUtils;
5
+ var MASK_POSITIONS = {
6
+ SINGLE: {
7
+ DAY: 0,
8
+ MONTH: 3,
9
+ YEAR: 6
10
+ },
11
+ RANGE: {
12
+ DAY_START: 0,
13
+ MONTH_START: 3,
14
+ YEAR_START: 6,
15
+ DAY_END: 13,
16
+ MONTH_END: 16,
17
+ YEAR_END: 19
18
+ }
19
+ };
5
20
  var DatePickerUtils = /*#__PURE__*/_createClass(function DatePickerUtils() {
6
21
  _classCallCheck(this, DatePickerUtils);
7
22
  });
@@ -19,10 +34,6 @@ _defineProperty(DatePickerUtils, "inputFormatValue", function (selected, mode) {
19
34
  if (mode === 'single') {
20
35
  return _DatePickerUtils.formatDate(selected);
21
36
  }
22
- if (mode === 'multiple') {
23
- var dates = selected;
24
- return dates.length > 0 ? dates.map(_DatePickerUtils.formatDate).join(', ') : '';
25
- }
26
37
  if (mode === 'range') {
27
38
  var range = selected;
28
39
  if (range.from && range.to) {
@@ -34,6 +45,194 @@ _defineProperty(DatePickerUtils, "inputFormatValue", function (selected, mode) {
34
45
  }
35
46
  return '';
36
47
  });
48
+ _defineProperty(DatePickerUtils, "parseStringToDate", function (dateString) {
49
+ if (!dateString || dateString.includes('_')) {
50
+ return null;
51
+ }
52
+ var parts = dateString.split('.');
53
+ if (parts.length !== 3) {
54
+ return null;
55
+ }
56
+ var day = parseInt(parts[0], 10);
57
+ var month = parseInt(parts[1], 10);
58
+ var year = parseInt(parts[2], 10);
59
+ if (isNaN(day) || isNaN(month) || isNaN(year)) {
60
+ return null;
61
+ }
62
+ if (month < 1 || month > 12 || day < 1 || day > 31 || year < 1000) {
63
+ return null;
64
+ }
65
+ var date = new Date(year, month - 1, day);
66
+ if (date.getDate() !== day || date.getMonth() !== month - 1 || date.getFullYear() !== year) {
67
+ return null;
68
+ }
69
+ return date;
70
+ });
71
+ _defineProperty(DatePickerUtils, "parseStringToDateRange", function (rangeString) {
72
+ if (!rangeString || rangeString.includes('_')) {
73
+ return null;
74
+ }
75
+ var parts = rangeString.split(' - ');
76
+ if (parts.length !== 2) {
77
+ return null;
78
+ }
79
+ var fromDate = _DatePickerUtils.parseStringToDate(parts[0].trim());
80
+ var toDate = _DatePickerUtils.parseStringToDate(parts[1].trim());
81
+ if (!fromDate || !toDate) {
82
+ return null;
83
+ }
84
+ if (fromDate > toDate) {
85
+ return null;
86
+ }
87
+ return {
88
+ from: fromDate,
89
+ to: toDate
90
+ };
91
+ });
92
+ _defineProperty(DatePickerUtils, "replaceCharWithPlaceholder", function (value, position) {
93
+ return value.substring(0, position) + '_' + value.substring(position + 1);
94
+ });
95
+ _defineProperty(DatePickerUtils, "validateTwoDigitValue", function (value, startPos, firstDigit, maxSecondDigit) {
96
+ if (value.length < startPos + 2) return {
97
+ valid: true,
98
+ keepFirst: false
99
+ };
100
+ var first = value[startPos];
101
+ var second = value[startPos + 1];
102
+ if (second === '_') return {
103
+ valid: true,
104
+ keepFirst: false
105
+ };
106
+ if (first === '0' && second === '0') {
107
+ return {
108
+ valid: false,
109
+ keepFirst: false
110
+ };
111
+ }
112
+ if (first === firstDigit && parseInt(second) > maxSecondDigit) {
113
+ return {
114
+ valid: false,
115
+ keepFirst: true
116
+ };
117
+ }
118
+ return {
119
+ valid: true,
120
+ keepFirst: false
121
+ };
122
+ });
123
+ _defineProperty(DatePickerUtils, "validateDayAtPosition", function (value, dayStartPos) {
124
+ return _DatePickerUtils.validateTwoDigitValue(value, dayStartPos, '3', 1);
125
+ });
126
+ _defineProperty(DatePickerUtils, "validateMonthAtPosition", function (value, monthStartPos) {
127
+ return _DatePickerUtils.validateTwoDigitValue(value, monthStartPos, '1', 2);
128
+ });
129
+ _defineProperty(DatePickerUtils, "validateYearAtPosition", function (value, yearStartPos) {
130
+ if (value.length < yearStartPos + 2) return {
131
+ valid: true,
132
+ keepFirst: false
133
+ };
134
+ var first = value[yearStartPos];
135
+ var second = value[yearStartPos + 1];
136
+ if (second === '_') return {
137
+ valid: true,
138
+ keepFirst: false
139
+ };
140
+ if (first === '1' && second !== '9') {
141
+ return {
142
+ valid: false,
143
+ keepFirst: true
144
+ };
145
+ }
146
+ if (first === '2' && second !== '0') {
147
+ return {
148
+ valid: false,
149
+ keepFirst: true
150
+ };
151
+ }
152
+ return {
153
+ valid: true,
154
+ keepFirst: false
155
+ };
156
+ });
157
+ _defineProperty(DatePickerUtils, "handleInvalidInput", function (validation, value, currentValue, position, currentSelection, fallbackSelection) {
158
+ if (validation.keepFirst) {
159
+ var newValue = _DatePickerUtils.replaceCharWithPlaceholder(value, position + 1);
160
+ return {
161
+ value: newValue,
162
+ selection: {
163
+ start: position + 1,
164
+ end: position + 1
165
+ }
166
+ };
167
+ }
168
+ return {
169
+ value: currentValue,
170
+ selection: currentSelection || fallbackSelection || {
171
+ start: null,
172
+ end: null
173
+ }
174
+ };
175
+ });
176
+ _defineProperty(DatePickerUtils, "validateDateMask", function (nextState, currentState) {
177
+ var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'single';
178
+ var value = nextState.value,
179
+ selection = nextState.selection;
180
+ var currentValue = (currentState === null || currentState === void 0 ? void 0 : currentState.value) || '';
181
+ var dayValidation = _DatePickerUtils.validateDayAtPosition(value, MASK_POSITIONS.SINGLE.DAY);
182
+ if (!dayValidation.valid) {
183
+ return _DatePickerUtils.handleInvalidInput(dayValidation, value, currentValue, MASK_POSITIONS.SINGLE.DAY, currentState === null || currentState === void 0 ? void 0 : currentState.selection, selection);
184
+ }
185
+ var monthValidation = _DatePickerUtils.validateMonthAtPosition(value, MASK_POSITIONS.SINGLE.MONTH);
186
+ if (!monthValidation.valid) {
187
+ return _DatePickerUtils.handleInvalidInput(monthValidation, value, currentValue, MASK_POSITIONS.SINGLE.MONTH, currentState === null || currentState === void 0 ? void 0 : currentState.selection, selection);
188
+ }
189
+ var yearValidation = _DatePickerUtils.validateYearAtPosition(value, MASK_POSITIONS.SINGLE.YEAR);
190
+ if (!yearValidation.valid) {
191
+ return _DatePickerUtils.handleInvalidInput(yearValidation, value, currentValue, MASK_POSITIONS.SINGLE.YEAR, currentState === null || currentState === void 0 ? void 0 : currentState.selection, selection);
192
+ }
193
+ if (mode === 'range') {
194
+ var dayValidation2 = _DatePickerUtils.validateDayAtPosition(value, MASK_POSITIONS.RANGE.DAY_END);
195
+ if (!dayValidation2.valid) {
196
+ return _DatePickerUtils.handleInvalidInput(dayValidation2, value, currentValue, MASK_POSITIONS.RANGE.DAY_END, currentState === null || currentState === void 0 ? void 0 : currentState.selection, selection);
197
+ }
198
+ var monthValidation2 = _DatePickerUtils.validateMonthAtPosition(value, MASK_POSITIONS.RANGE.MONTH_END);
199
+ if (!monthValidation2.valid) {
200
+ return _DatePickerUtils.handleInvalidInput(monthValidation2, value, currentValue, MASK_POSITIONS.RANGE.MONTH_END, currentState === null || currentState === void 0 ? void 0 : currentState.selection, selection);
201
+ }
202
+ var yearValidation2 = _DatePickerUtils.validateYearAtPosition(value, MASK_POSITIONS.RANGE.YEAR_END);
203
+ if (!yearValidation2.valid) {
204
+ return _DatePickerUtils.handleInvalidInput(yearValidation2, value, currentValue, MASK_POSITIONS.RANGE.YEAR_END, currentState === null || currentState === void 0 ? void 0 : currentState.selection, selection);
205
+ }
206
+ }
207
+ return nextState;
208
+ });
209
+ _defineProperty(DatePickerUtils, "isDateInRange", function (date, startMonth, endMonth) {
210
+ if (!startMonth && !endMonth) return true;
211
+ if (startMonth) {
212
+ var minDate = new Date(startMonth.getFullYear(), startMonth.getMonth(), 1);
213
+ if (date < minDate) return false;
214
+ }
215
+ if (endMonth) {
216
+ var maxDate = new Date(endMonth.getFullYear(), endMonth.getMonth() + 1, 0);
217
+ if (date > maxDate) return false;
218
+ }
219
+ return true;
220
+ });
221
+ _defineProperty(DatePickerUtils, "isDateDisabled", function (date, disabledDays) {
222
+ if (!disabledDays) return false;
223
+ if (Array.isArray(disabledDays)) {
224
+ return disabledDays.some(function (disabledDate) {
225
+ if (disabledDate instanceof Date) {
226
+ return disabledDate.getFullYear() === date.getFullYear() && disabledDate.getMonth() === date.getMonth() && disabledDate.getDate() === date.getDate();
227
+ }
228
+ return false;
229
+ });
230
+ }
231
+ if (typeof disabledDays === 'function') {
232
+ return disabledDays(date);
233
+ }
234
+ return false;
235
+ });
37
236
 
38
237
  export { DatePickerUtils };
39
238
  //# sourceMappingURL=date_picker_utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { InputState } from '../input_mask_types';
3
+ export declare function useInputElement(inputRef: React.RefObject<HTMLElement | null>): () => HTMLInputElement | null;
4
+ export declare function useInputState(initialValue: string, isMasked: boolean): {
5
+ inputRef: import("react").MutableRefObject<HTMLElement | null>;
6
+ getInputState: () => InputState;
7
+ getLastInputState: () => InputState;
8
+ setInputState: ({ value, selection }: InputState) => void;
9
+ };
10
+ export declare function usePrevious<T>(value: T): T | undefined;
@@ -0,0 +1,190 @@
1
+ import { useCallback, useRef, useEffect, useLayoutEffect } from 'react';
2
+ import { slicedToArray as _slicedToArray } from '../../../../../../_virtual/_rollupPluginBabelHelpers.js';
3
+ import { cancelDefer, defer } from '../utils/defer.js';
4
+ import InputUtils from '../utils/input.js';
5
+ import { isDOMElement } from '../utils/helpers.js';
6
+
7
+ function useInputElement(inputRef) {
8
+ return useCallback(function () {
9
+ var input = inputRef.current;
10
+ var isDOMNode = typeof window !== 'undefined' && isDOMElement(input);
11
+ // workaround for react-test-renderer
12
+ // https://github.com/sanniassin/react-input-mask/issues/147
13
+ if (!input || !isDOMNode) {
14
+ return null;
15
+ }
16
+ if (input.nodeName !== 'INPUT') {
17
+ input = input.querySelector('input');
18
+ }
19
+ if (!input) {
20
+ throw new Error("inputComponent doesn't contain input node");
21
+ }
22
+ return input;
23
+ }, [inputRef]);
24
+ }
25
+ function useDeferLoop(callback) {
26
+ var deferIdRef = useRef(null);
27
+ var runLoop = useCallback(function () {
28
+ // If there are simulated focus events, runLoop could be
29
+ // called multiple times without blur or re-render
30
+ if (deferIdRef.current !== null) {
31
+ return;
32
+ }
33
+ function loop() {
34
+ callback();
35
+ deferIdRef.current = defer(loop);
36
+ }
37
+ loop();
38
+ }, [callback]);
39
+ var stopLoop = useCallback(function () {
40
+ if (deferIdRef.current !== null) {
41
+ cancelDefer(deferIdRef.current);
42
+ deferIdRef.current = null;
43
+ }
44
+ }, []);
45
+ useEffect(function () {
46
+ if (deferIdRef.current) {
47
+ stopLoop();
48
+ runLoop();
49
+ }
50
+ }, [runLoop, stopLoop]);
51
+ useEffect(function () {
52
+ return function () {
53
+ if (deferIdRef.current !== null) {
54
+ cancelDefer(deferIdRef.current);
55
+ }
56
+ };
57
+ }, []);
58
+ return [runLoop, stopLoop];
59
+ }
60
+ function useSelection(inputRef, isMasked) {
61
+ var inputUtilsRef = useRef(new InputUtils());
62
+ var inputUtils = inputUtilsRef.current;
63
+ var selectionRef = useRef({
64
+ start: null,
65
+ end: null
66
+ });
67
+ var getInputElement = useInputElement(inputRef);
68
+ var getSelection = useCallback(function () {
69
+ var input = getInputElement();
70
+ if (!input) {
71
+ return {
72
+ start: null,
73
+ end: null
74
+ };
75
+ }
76
+ return inputUtils.getInputSelection(input);
77
+ }, [getInputElement]);
78
+ var getLastSelection = useCallback(function () {
79
+ return selectionRef.current;
80
+ }, []);
81
+ var setSelection = useCallback(function (selection) {
82
+ var _selection$start, _selection$end;
83
+ var input = getInputElement();
84
+ // Don't change selection on unfocused input
85
+ // because Safari sets focus on selection change (#154)
86
+ if (!input || !inputUtils.isInputFocused(input)) {
87
+ return;
88
+ }
89
+ inputUtils.setInputSelection(input, (_selection$start = selection.start) !== null && _selection$start !== void 0 ? _selection$start : 0, (_selection$end = selection.end) !== null && _selection$end !== void 0 ? _selection$end : undefined);
90
+ // Use actual selection in case the requested one was out of range
91
+ selectionRef.current = getSelection();
92
+ }, [getInputElement, getSelection]);
93
+ var selectionLoop = useCallback(function () {
94
+ selectionRef.current = getSelection();
95
+ }, [getSelection]);
96
+ var _useDeferLoop = useDeferLoop(selectionLoop),
97
+ _useDeferLoop2 = _slicedToArray(_useDeferLoop, 2),
98
+ runSelectionLoop = _useDeferLoop2[0],
99
+ stopSelectionLoop = _useDeferLoop2[1];
100
+ useLayoutEffect(function () {
101
+ if (!isMasked) {
102
+ return;
103
+ }
104
+ var input = getInputElement();
105
+ if (!input) return;
106
+ input.addEventListener('focus', runSelectionLoop);
107
+ input.addEventListener('blur', stopSelectionLoop);
108
+ if (inputUtils.isInputFocused(input)) {
109
+ runSelectionLoop();
110
+ }
111
+ return function () {
112
+ input.removeEventListener('focus', runSelectionLoop);
113
+ input.removeEventListener('blur', stopSelectionLoop);
114
+ stopSelectionLoop();
115
+ };
116
+ }, [isMasked, getInputElement, runSelectionLoop, stopSelectionLoop]);
117
+ return {
118
+ getSelection: getSelection,
119
+ getLastSelection: getLastSelection,
120
+ setSelection: setSelection
121
+ };
122
+ }
123
+ function useValue(inputRef, initialValue) {
124
+ var getInputElement = useInputElement(inputRef);
125
+ var valueRef = useRef(initialValue);
126
+ var getValue = useCallback(function () {
127
+ var input = getInputElement();
128
+ return (input === null || input === void 0 ? void 0 : input.value) || '';
129
+ }, [getInputElement]);
130
+ var getLastValue = useCallback(function () {
131
+ return valueRef.current;
132
+ }, []);
133
+ var setValue = useCallback(function (newValue) {
134
+ valueRef.current = newValue;
135
+ var input = getInputElement();
136
+ if (input) {
137
+ input.value = newValue;
138
+ }
139
+ }, [getInputElement]);
140
+ return {
141
+ getValue: getValue,
142
+ getLastValue: getLastValue,
143
+ setValue: setValue
144
+ };
145
+ }
146
+ function useInputState(initialValue, isMasked) {
147
+ var inputRef = useRef(null);
148
+ var _useSelection = useSelection(inputRef, isMasked),
149
+ getSelection = _useSelection.getSelection,
150
+ getLastSelection = _useSelection.getLastSelection,
151
+ setSelection = _useSelection.setSelection;
152
+ var _useValue = useValue(inputRef, initialValue),
153
+ getValue = _useValue.getValue,
154
+ getLastValue = _useValue.getLastValue,
155
+ setValue = _useValue.setValue;
156
+ function getLastInputState() {
157
+ return {
158
+ value: getLastValue(),
159
+ selection: getLastSelection()
160
+ };
161
+ }
162
+ function getInputState() {
163
+ return {
164
+ value: getValue(),
165
+ selection: getSelection()
166
+ };
167
+ }
168
+ function setInputState(_ref) {
169
+ var value = _ref.value,
170
+ selection = _ref.selection;
171
+ setValue(value);
172
+ setSelection(selection);
173
+ }
174
+ return {
175
+ inputRef: inputRef,
176
+ getInputState: getInputState,
177
+ getLastInputState: getLastInputState,
178
+ setInputState: setInputState
179
+ };
180
+ }
181
+ function usePrevious(value) {
182
+ var ref = useRef();
183
+ useEffect(function () {
184
+ ref.current = value;
185
+ });
186
+ return ref.current;
187
+ }
188
+
189
+ export { useInputElement, useInputState, usePrevious };
190
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,6 @@
1
+ export declare const CONTROLLED_PROPS: string[];
2
+ export declare const defaultFormatChars: {
3
+ '9': RegExp;
4
+ a: RegExp;
5
+ '*': RegExp;
6
+ };
@@ -0,0 +1,9 @@
1
+ var CONTROLLED_PROPS = ['disabled', 'onBlur', 'onChange', 'onFocus', 'onMouseDown', 'readOnly', 'value'];
2
+ var defaultFormatChars = {
3
+ '9': /[0-9]/,
4
+ a: /[A-Za-z]/,
5
+ '*': /[A-Za-z0-9]/
6
+ };
7
+
8
+ export { CONTROLLED_PROPS, defaultFormatChars };
9
+ //# sourceMappingURL=input-mask-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { InputMaskProps } from './input_mask_types';
3
+ declare const InputMask: React.ForwardRefExoticComponent<Omit<InputMaskProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
4
+ export { InputMask };