linear-react-components-ui 2.2.0-beta.8 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/assets/styles/datepicker2.css +81 -11
- package/lib/hooks/useScrollEndReached/index.d.ts +1 -1
- package/lib/hooks/useScrollEndReached/index.js +14 -3
- package/lib/hooks/useScrollEndReached/index.js.map +1 -1
- package/lib/hooks/useScrollEndReached/types.d.ts +1 -0
- package/lib/inputs/select/Dropdown.js +4 -2
- package/lib/inputs/select/Dropdown.js.map +1 -1
- package/lib/inputs/select/multiple/index.js +3 -2
- package/lib/inputs/select/multiple/index.js.map +1 -1
- package/lib/inputs/select/simple/index.js +3 -2
- package/lib/inputs/select/simple/index.js.map +1 -1
- package/lib/inputs2/date/calendarbox.d.ts +23 -0
- package/lib/inputs2/date/calendarbox.js +254 -0
- package/lib/inputs2/date/calendarbox.js.map +1 -0
- package/lib/inputs2/date/datefield/base.js +691 -214
- package/lib/inputs2/date/datefield/base.js.map +1 -1
- package/lib/inputs2/date/datefield/triggers.js +4 -4
- package/lib/inputs2/date/datefield/triggers.js.map +1 -1
- package/lib/inputs2/date/datefield/types.d.ts +5 -12
- package/lib/inputs2/date/dateperiodfield/base.js +694 -809
- package/lib/inputs2/date/dateperiodfield/base.js.map +1 -1
- package/lib/inputs2/date/dateperiodfield/triggers.js +21 -9
- package/lib/inputs2/date/dateperiodfield/triggers.js.map +1 -1
- package/lib/inputs2/date/dateperiodfield/types.d.ts +13 -23
- package/lib/inputs2/date/helpers.d.ts +44 -4
- package/lib/inputs2/date/helpers.js +200 -4
- package/lib/inputs2/date/helpers.js.map +1 -1
- package/lib/inputs2/date/{base/constants.d.ts → hooks/useCalendarPosition.d.ts} +1 -1
- package/lib/inputs2/date/hooks/useCalendarPosition.js +93 -0
- package/lib/inputs2/date/hooks/useCalendarPosition.js.map +1 -0
- package/lib/inputs2/date/hooks/useDateCalendarState.d.ts +14 -0
- package/lib/inputs2/date/hooks/useDateCalendarState.js +250 -0
- package/lib/inputs2/date/hooks/useDateCalendarState.js.map +1 -0
- package/lib/inputs2/date/hooks/useDateMask.d.ts +22 -0
- package/lib/inputs2/date/hooks/useDateMask.js +143 -0
- package/lib/inputs2/date/hooks/useDateMask.js.map +1 -0
- package/lib/inputs2/date/timeselector.d.ts +17 -0
- package/lib/inputs2/date/timeselector.js +226 -0
- package/lib/inputs2/date/timeselector.js.map +1 -0
- package/lib/inputs2/date/types.d.ts +22 -1
- package/lib/inputs2/date/types.js.map +1 -1
- package/lib/inputs2/selectfield/base.js +2 -1
- package/lib/inputs2/selectfield/base.js.map +1 -1
- package/lib/inputs2/selectfield/listbox.js +3 -1
- package/lib/inputs2/selectfield/listbox.js.map +1 -1
- package/lib/node_modules/moment/dist/locale/pt-br.js +54 -0
- package/lib/node_modules/moment/dist/locale/pt-br.js.map +1 -0
- package/lib/panel/Content.js +18 -15
- package/lib/panel/Content.js.map +1 -1
- package/lib/panel/Default.d.ts +1 -1
- package/lib/panel/Default.js +60 -54
- package/lib/panel/Default.js.map +1 -1
- package/package.json +1 -1
- package/lib/inputs2/date/base/constants.js +0 -69
- package/lib/inputs2/date/base/constants.js.map +0 -1
- package/lib/inputs2/date/datefield/calendarbox.d.ts +0 -6
- package/lib/inputs2/date/datefield/calendarbox.js +0 -228
- package/lib/inputs2/date/datefield/calendarbox.js.map +0 -1
- package/lib/inputs2/date/dateperiodfield/calendarbox.d.ts +0 -6
- package/lib/inputs2/date/dateperiodfield/calendarbox.js +0 -282
- package/lib/inputs2/date/dateperiodfield/calendarbox.js.map +0 -1
|
@@ -1,10 +1,191 @@
|
|
|
1
|
-
import "../../
|
|
1
|
+
import _ from "../../_virtual/lodash.js";
|
|
2
|
+
import hooks from "../../node_modules/moment/dist/moment.js";
|
|
2
3
|
import memoize from "../../_virtual/memoize.js";
|
|
3
4
|
import { OPTIONS_ON_DENIED } from "../../permissionValidations.js";
|
|
4
5
|
import { Keys } from "./types.js";
|
|
5
|
-
|
|
6
|
+
import "../../node_modules/moment/dist/locale/pt-br.js";
|
|
7
|
+
hooks.locale("pt-br");
|
|
6
8
|
const TOKEN_ISO_FORMAT = "YYYY-MM-DD";
|
|
7
9
|
const TOKEN_PTBR_FORMAT = "DD/MM/YYYY";
|
|
10
|
+
const TOKEN_ISO_DATETIME_FORMAT = "YYYY-MM-DDTHH:mm";
|
|
11
|
+
const TOKEN_PTBR_DATETIME_FORMAT = "DD/MM/YYYY HH:mm";
|
|
12
|
+
const ACCEPTED_BOUNDARY_FORMATS = [TOKEN_ISO_FORMAT, TOKEN_ISO_DATETIME_FORMAT];
|
|
13
|
+
const ACCEPTED_VALUE_FORMATS = [...ACCEPTED_BOUNDARY_FORMATS, hooks.ISO_8601];
|
|
14
|
+
const getDateFormats = (variant) => variant === "datetime" ? {
|
|
15
|
+
isoFormat: TOKEN_ISO_DATETIME_FORMAT,
|
|
16
|
+
ptbrFormat: TOKEN_PTBR_DATETIME_FORMAT,
|
|
17
|
+
digits: 12
|
|
18
|
+
} : {
|
|
19
|
+
isoFormat: TOKEN_ISO_FORMAT,
|
|
20
|
+
ptbrFormat: TOKEN_PTBR_FORMAT,
|
|
21
|
+
digits: 8
|
|
22
|
+
};
|
|
23
|
+
const parseDateValue = (value, variant) => variant === "datetime" ? hooks(_.toString(value), ACCEPTED_VALUE_FORMATS, true) : hooks(_.toString(value), TOKEN_ISO_FORMAT);
|
|
24
|
+
const getMaskSegments = memoize((format) => {
|
|
25
|
+
const segments = [];
|
|
26
|
+
let start = 0;
|
|
27
|
+
while (start < format.length) {
|
|
28
|
+
let end = start;
|
|
29
|
+
while (end < format.length && format[end] === format[start]) end++;
|
|
30
|
+
if (/[a-z]/i.test(format[start])) segments.push({
|
|
31
|
+
start,
|
|
32
|
+
end,
|
|
33
|
+
key: format[start]
|
|
34
|
+
});
|
|
35
|
+
start = end;
|
|
36
|
+
}
|
|
37
|
+
return segments;
|
|
38
|
+
});
|
|
39
|
+
const MASK_BLOCK_RANGES = {
|
|
40
|
+
D: {
|
|
41
|
+
from: 1,
|
|
42
|
+
to: 31,
|
|
43
|
+
length: 2,
|
|
44
|
+
pad: true
|
|
45
|
+
},
|
|
46
|
+
M: {
|
|
47
|
+
from: 1,
|
|
48
|
+
to: 12,
|
|
49
|
+
length: 2,
|
|
50
|
+
pad: true
|
|
51
|
+
},
|
|
52
|
+
Y: {
|
|
53
|
+
from: 1900,
|
|
54
|
+
to: 2099,
|
|
55
|
+
length: 4,
|
|
56
|
+
pad: false
|
|
57
|
+
},
|
|
58
|
+
H: {
|
|
59
|
+
from: 0,
|
|
60
|
+
to: 23,
|
|
61
|
+
length: 2,
|
|
62
|
+
pad: true
|
|
63
|
+
},
|
|
64
|
+
m: {
|
|
65
|
+
from: 0,
|
|
66
|
+
to: 59,
|
|
67
|
+
length: 2,
|
|
68
|
+
pad: true
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const fitsBlockRange = (digits, block) => {
|
|
72
|
+
if (!digits) return true;
|
|
73
|
+
if (digits.length > block.length) return false;
|
|
74
|
+
const lowest = Number(digits.padEnd(block.length, "0"));
|
|
75
|
+
const highest = Number(digits.padEnd(block.length, "9"));
|
|
76
|
+
return highest >= block.from && lowest <= block.to;
|
|
77
|
+
};
|
|
78
|
+
const canSegmentAcceptDigits = (digits, key) => {
|
|
79
|
+
const block = MASK_BLOCK_RANGES[key];
|
|
80
|
+
if (!block) return true;
|
|
81
|
+
if (fitsBlockRange(digits, block)) return true;
|
|
82
|
+
const padDigit = String(block.from).padStart(block.length, "0")[0];
|
|
83
|
+
return block.pad && digits.length < block.length && fitsBlockRange(`${padDigit}${digits}`, block);
|
|
84
|
+
};
|
|
85
|
+
const getTimeSelection = (unmaskedValue, variant) => {
|
|
86
|
+
const digits = _.toString(unmaskedValue).replace(/\D/g, "");
|
|
87
|
+
const hasDate = _.size(digits) >= 8;
|
|
88
|
+
if (variant !== "datetime") return {
|
|
89
|
+
hour: null,
|
|
90
|
+
minute: null,
|
|
91
|
+
hasDate,
|
|
92
|
+
isComplete: hasDate
|
|
93
|
+
};
|
|
94
|
+
const hour = _.size(digits) >= 10 ? Number(digits.slice(8, 10)) : null;
|
|
95
|
+
const minute = _.size(digits) >= 12 ? Number(digits.slice(10, 12)) : null;
|
|
96
|
+
return {
|
|
97
|
+
hour,
|
|
98
|
+
minute,
|
|
99
|
+
hasDate,
|
|
100
|
+
isComplete: hasDate && !_.isNull(hour) && !_.isNull(minute)
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
const padTimeUnit = (unit) => _.padStart(String(unit), 2, "0");
|
|
104
|
+
const formatPartialDateTime = (date, hour, minute) => {
|
|
105
|
+
const datePart = date.format(TOKEN_PTBR_FORMAT);
|
|
106
|
+
if (_.isNull(hour)) return datePart;
|
|
107
|
+
if (_.isNull(minute)) return `${datePart} ${padTimeUnit(hour)}`;
|
|
108
|
+
return `${datePart} ${padTimeUnit(hour)}:${padTimeUnit(minute)}`;
|
|
109
|
+
};
|
|
110
|
+
const parseBoundary = (value) => {
|
|
111
|
+
if (!value) return void 0;
|
|
112
|
+
const boundary = hooks(value, ACCEPTED_BOUNDARY_FORMATS, true);
|
|
113
|
+
return boundary.isValid() ? boundary : void 0;
|
|
114
|
+
};
|
|
115
|
+
const clampDateToBounds = (date, min, max) => {
|
|
116
|
+
if (min && date.isBefore(min)) return min.clone();
|
|
117
|
+
if (max && date.isAfter(max)) return max.clone();
|
|
118
|
+
return date;
|
|
119
|
+
};
|
|
120
|
+
const resolveAssumedTime = (params) => {
|
|
121
|
+
const {
|
|
122
|
+
date,
|
|
123
|
+
hour,
|
|
124
|
+
minute,
|
|
125
|
+
min,
|
|
126
|
+
max
|
|
127
|
+
} = params;
|
|
128
|
+
const assumedDate = date.clone().hour(hour ?? 0).minute(minute ?? 0).second(0);
|
|
129
|
+
const fitToBoundary = (boundary) => {
|
|
130
|
+
if (_.isNull(hour)) assumedDate.hour(boundary.hour());
|
|
131
|
+
if (_.isNull(minute) && assumedDate.hour() === boundary.hour()) {
|
|
132
|
+
assumedDate.minute(boundary.minute());
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
if (min && assumedDate.isSame(min, "day") && assumedDate.isBefore(min)) fitToBoundary(min);
|
|
136
|
+
if (max && assumedDate.isSame(max, "day") && assumedDate.isAfter(max)) fitToBoundary(max);
|
|
137
|
+
return assumedDate;
|
|
138
|
+
};
|
|
139
|
+
const completePartialDateTime = (params) => {
|
|
140
|
+
const {
|
|
141
|
+
unmaskedValue,
|
|
142
|
+
variant,
|
|
143
|
+
min,
|
|
144
|
+
max
|
|
145
|
+
} = params;
|
|
146
|
+
if (variant !== "datetime") return null;
|
|
147
|
+
const {
|
|
148
|
+
hasDate,
|
|
149
|
+
isComplete,
|
|
150
|
+
hour,
|
|
151
|
+
minute
|
|
152
|
+
} = getTimeSelection(unmaskedValue, variant);
|
|
153
|
+
if (!hasDate || isComplete) return null;
|
|
154
|
+
const date = hooks(_.toString(unmaskedValue).replace(/\D/g, "").slice(0, 8), "DDMMYYYY", true);
|
|
155
|
+
if (!date.isValid()) return null;
|
|
156
|
+
return resolveAssumedTime({
|
|
157
|
+
date,
|
|
158
|
+
hour,
|
|
159
|
+
minute,
|
|
160
|
+
min,
|
|
161
|
+
max
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
const isDayOutOfBounds = (day, min, max) => {
|
|
165
|
+
if (min && day.isBefore(min, "day")) return true;
|
|
166
|
+
return Boolean(max && day.isAfter(max, "day"));
|
|
167
|
+
};
|
|
168
|
+
const getPredefinedPeriodRange = (period) => {
|
|
169
|
+
const range = (start, end) => ({
|
|
170
|
+
initialDate: start.startOf("day"),
|
|
171
|
+
finalDate: end.endOf("day")
|
|
172
|
+
});
|
|
173
|
+
switch (period) {
|
|
174
|
+
case "today":
|
|
175
|
+
return range(hooks(), hooks());
|
|
176
|
+
case "week":
|
|
177
|
+
return range(hooks().startOf("week"), hooks().endOf("week"));
|
|
178
|
+
case "lastweek":
|
|
179
|
+
return range(hooks().add(-1, "week").startOf("week"), hooks().add(-1, "week").endOf("week"));
|
|
180
|
+
case "last15":
|
|
181
|
+
return range(hooks().add(-14, "d"), hooks());
|
|
182
|
+
case "month":
|
|
183
|
+
return range(hooks().startOf("month"), hooks().endOf("month"));
|
|
184
|
+
case "lastmonth":
|
|
185
|
+
default:
|
|
186
|
+
return range(hooks().add(-1, "month").startOf("month"), hooks().add(-1, "month").endOf("month"));
|
|
187
|
+
}
|
|
188
|
+
};
|
|
8
189
|
const options = [OPTIONS_ON_DENIED.disabled, OPTIONS_ON_DENIED.unvisible, OPTIONS_ON_DENIED.readOnly, OPTIONS_ON_DENIED.hideContent];
|
|
9
190
|
const NAVIGATION_KEYS = [Keys.arrowLeft, Keys.arrowRight, Keys.arrowUp, Keys.arrowDown, Keys.pageUp, Keys.pageDown, Keys.home, Keys.end, Keys.escape, Keys.enter];
|
|
10
191
|
const PERIOD_OPTIONS_LIST = [{
|
|
@@ -42,12 +223,27 @@ const generateCalendarWeeks = memoize((monthSelected) => {
|
|
|
42
223
|
return weeks;
|
|
43
224
|
}, (monthSelected) => monthSelected.format("YYYY-MM"));
|
|
44
225
|
export {
|
|
226
|
+
ACCEPTED_BOUNDARY_FORMATS,
|
|
227
|
+
ACCEPTED_VALUE_FORMATS,
|
|
45
228
|
NAVIGATION_KEYS,
|
|
46
229
|
PERIOD_OPTIONS_LIST,
|
|
230
|
+
TOKEN_ISO_DATETIME_FORMAT,
|
|
47
231
|
TOKEN_ISO_FORMAT,
|
|
48
|
-
|
|
232
|
+
TOKEN_PTBR_DATETIME_FORMAT,
|
|
49
233
|
TOKEN_PTBR_FORMAT,
|
|
234
|
+
canSegmentAcceptDigits,
|
|
235
|
+
clampDateToBounds,
|
|
236
|
+
completePartialDateTime,
|
|
237
|
+
formatPartialDateTime,
|
|
50
238
|
generateCalendarWeeks,
|
|
51
|
-
|
|
239
|
+
getDateFormats,
|
|
240
|
+
getMaskSegments,
|
|
241
|
+
getPredefinedPeriodRange,
|
|
242
|
+
getTimeSelection,
|
|
243
|
+
isDayOutOfBounds,
|
|
244
|
+
options,
|
|
245
|
+
parseBoundary,
|
|
246
|
+
parseDateValue,
|
|
247
|
+
resolveAssumedTime
|
|
52
248
|
};
|
|
53
249
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../src/lib/inputs2/date/helpers.ts"],"sourcesContent":["import moment, { type Moment } from 'moment';\nimport memoize from 'lodash/memoize';\nimport { OPTIONS_ON_DENIED } from '../../permissionValidations';\nimport type { PeriodOptions } from './dateperiodfield/types';\nimport { Keys } from './types';\n\nexport const TOKEN_MASK = '00/00/0000';\nexport const TOKEN_ISO_FORMAT = 'YYYY-MM-DD';\nexport const TOKEN_PTBR_FORMAT = 'DD/MM/YYYY';\nexport const options = [\n OPTIONS_ON_DENIED.disabled,\n OPTIONS_ON_DENIED.unvisible,\n OPTIONS_ON_DENIED.readOnly,\n OPTIONS_ON_DENIED.hideContent,\n];\nexport const NAVIGATION_KEYS: string[] = [\n Keys.arrowLeft, Keys.arrowRight, Keys.arrowUp, Keys.arrowDown,\n Keys.pageUp, Keys.pageDown, Keys.home, Keys.end, Keys.escape,\n Keys.enter,\n];\nexport const PERIOD_OPTIONS_LIST: PeriodOptions[] = [\n { id: 'today', label: 'Hoje' },\n { id: 'week', label: 'Semana Atual' },\n { id: 'lastweek', label: 'Última Semana' },\n { id: 'last15', label: 'Últimos 15 dias' },\n { id: 'month', label: 'Mês atual' },\n { id: 'lastmonth', label: 'Último Mês' },\n];\nexport const isWithinBounds = (date: Moment, minDate?: string, maxDate?: string): boolean => {\n if (minDate) {\n const min = moment(minDate, TOKEN_ISO_FORMAT);\n if (date.isBefore(min, 'day')) return false;\n }\n if (maxDate) {\n const max = moment(maxDate, TOKEN_ISO_FORMAT);\n if (date.isAfter(max, 'day')) return false;\n }\n return true;\n};\nexport const generateCalendarWeeks = memoize((monthSelected: Moment): Moment[][] => {\n const startOfCalendar = monthSelected.clone().startOf('month').startOf('week');\n const endOfCalendar = monthSelected.clone().endOf('month').endOf('week');\n const weeks: Moment[][] = [];\n const currentWeek = startOfCalendar.clone();\n while (currentWeek.isSameOrBefore(endOfCalendar, 'day')) {\n const week: Moment[] = [];\n for (let days = 0; days < 7; days++) {\n week.push(currentWeek.clone());\n currentWeek.add(1, 'day');\n }\n weeks.push(week);\n }\n return weeks;\n}, (monthSelected: Moment) => monthSelected.format('YYYY-MM'));\n"],"names":["TOKEN_MASK","TOKEN_ISO_FORMAT","TOKEN_PTBR_FORMAT","options","OPTIONS_ON_DENIED","disabled","unvisible","readOnly","hideContent","NAVIGATION_KEYS","Keys","arrowLeft","arrowRight","arrowUp","arrowDown","pageUp","pageDown","home","end","escape","enter","PERIOD_OPTIONS_LIST","id","label","generateCalendarWeeks","memoize","monthSelected","startOfCalendar","clone","startOf","endOfCalendar","endOf","weeks","currentWeek","isSameOrBefore","week","days","push","add","format"],"mappings":";;;;AAMO,MAAMA,aAAa;AACnB,MAAMC,mBAAmB;AACzB,MAAMC,oBAAoB;AAC1B,MAAMC,UAAU,CACrBC,kBAAkBC,UAClBD,kBAAkBE,WAClBF,kBAAkBG,UAClBH,kBAAkBI,WAAW;AAExB,MAAMC,kBAA4B,CACvCC,KAAKC,WAAWD,KAAKE,YAAYF,KAAKG,SAASH,KAAKI,WACpDJ,KAAKK,QAAQL,KAAKM,UAAUN,KAAKO,MAAMP,KAAKQ,KAAKR,KAAKS,QACtDT,KAAKU,KAAK;AAEL,MAAMC,sBAAuC,CAClD;AAAA,EAAEC,IAAI;AAAA,EAASC,OAAO;AAAO,GAC7B;AAAA,EAAED,IAAI;AAAA,EAAQC,OAAO;AAAe,GACpC;AAAA,EAAED,IAAI;AAAA,EAAYC,OAAO;AAAgB,GACzC;AAAA,EAAED,IAAI;AAAA,EAAUC,OAAO;AAAkB,GACzC;AAAA,EAAED,IAAI;AAAA,EAASC,OAAO;AAAY,GAClC;AAAA,EAAED,IAAI;AAAA,EAAaC,OAAO;AAAa,CAAC;AAanC,MAAMC,wBAAwBC,QAAQ,CAACC,kBAAsC;AAClF,QAAMC,kBAAkBD,cAAcE,MAAAA,EAAQC,QAAQ,OAAO,EAAEA,QAAQ,MAAM;AAC7E,QAAMC,gBAAgBJ,cAAcE,MAAAA,EAAQG,MAAM,OAAO,EAAEA,MAAM,MAAM;AACvE,QAAMC,QAAoB,CAAA;AAC1B,QAAMC,cAAcN,gBAAgBC,MAAAA;AACpC,SAAOK,YAAYC,eAAeJ,eAAe,KAAK,GAAG;AACvD,UAAMK,OAAiB,CAAA;AACvB,aAASC,OAAO,GAAGA,OAAO,GAAGA,QAAQ;AACnCD,WAAKE,KAAKJ,YAAYL,OAAO;AAC7BK,kBAAYK,IAAI,GAAG,KAAK;AAAA,IAC1B;AACAN,UAAMK,KAAKF,IAAI;AAAA,EACjB;AACA,SAAOH;AACT,GAAG,CAACN,kBAA0BA,cAAca,OAAO,SAAS,CAAC;"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../src/lib/inputs2/date/helpers.ts"],"sourcesContent":["import _ from 'lodash';\nimport moment, { type Moment } from 'moment';\nimport memoize from 'lodash/memoize';\nimport { OPTIONS_ON_DENIED } from '../../permissionValidations';\nimport type { PeriodOptions } from './dateperiodfield/types';\nimport { Keys, type DateVariant, type TimeSelection } from './types';\n\n// Sem o import explícito o bundler não inclui o locale e o calendário cai em inglês.\nimport 'moment/dist/locale/pt-br';\n\nmoment.locale('pt-br');\n\nexport const TOKEN_ISO_FORMAT = 'YYYY-MM-DD';\nexport const TOKEN_PTBR_FORMAT = 'DD/MM/YYYY';\nexport const TOKEN_ISO_DATETIME_FORMAT = 'YYYY-MM-DDTHH:mm';\nexport const TOKEN_PTBR_DATETIME_FORMAT = 'DD/MM/YYYY HH:mm';\nexport const ACCEPTED_BOUNDARY_FORMATS = [TOKEN_ISO_FORMAT, TOKEN_ISO_DATETIME_FORMAT];\nexport const ACCEPTED_VALUE_FORMATS = [...ACCEPTED_BOUNDARY_FORMATS, moment.ISO_8601];\n\nexport const getDateFormats = (variant: DateVariant) => (variant === 'datetime'\n ? { isoFormat: TOKEN_ISO_DATETIME_FORMAT, ptbrFormat: TOKEN_PTBR_DATETIME_FORMAT, digits: 12 }\n : { isoFormat: TOKEN_ISO_FORMAT, ptbrFormat: TOKEN_PTBR_FORMAT, digits: 8 });\nexport const parseDateValue = (value: unknown, variant: DateVariant): Moment => (\n variant === 'datetime'\n ? moment(_.toString(value), ACCEPTED_VALUE_FORMATS, true)\n : moment(_.toString(value), TOKEN_ISO_FORMAT)\n);\n\nexport interface MaskSegment { start: number; end: number; key: string }\nexport const getMaskSegments = memoize((format: string): MaskSegment[] => {\n const segments: MaskSegment[] = [];\n let start = 0;\n while (start < format.length) {\n let end = start;\n while (end < format.length && format[end] === format[start]) end++;\n if (/[a-z]/i.test(format[start])) segments.push({ start, end, key: format[start] });\n start = end;\n }\n return segments;\n});\n\ninterface MaskBlockRange { from: number; to: number; length: number; pad: boolean }\nconst MASK_BLOCK_RANGES: Record<string, MaskBlockRange> = {\n D: { from: 1, to: 31, length: 2, pad: true },\n M: { from: 1, to: 12, length: 2, pad: true },\n Y: { from: 1900, to: 2099, length: 4, pad: false },\n H: { from: 0, to: 23, length: 2, pad: true },\n m: { from: 0, to: 59, length: 2, pad: true },\n};\n\nconst fitsBlockRange = (digits: string, block: MaskBlockRange): boolean => {\n if (!digits) return true;\n if (digits.length > block.length) return false;\n const lowest = Number(digits.padEnd(block.length, '0'));\n const highest = Number(digits.padEnd(block.length, '9'));\n return highest >= block.from && lowest <= block.to;\n};\n\nexport const canSegmentAcceptDigits = (digits: string, key: string): boolean => {\n const block = MASK_BLOCK_RANGES[key];\n if (!block) return true;\n if (fitsBlockRange(digits, block)) return true;\n const padDigit = String(block.from).padStart(block.length, '0')[0];\n return block.pad && digits.length < block.length\n && fitsBlockRange(`${padDigit}${digits}`, block);\n};\n\nexport const getTimeSelection = (unmaskedValue: string, variant: DateVariant): TimeSelection => {\n const digits = _.toString(unmaskedValue).replace(/\\D/g, '');\n const hasDate = _.size(digits) >= 8;\n if (variant !== 'datetime') return { hour: null, minute: null, hasDate, isComplete: hasDate };\n const hour = _.size(digits) >= 10 ? Number(digits.slice(8, 10)) : null;\n const minute = _.size(digits) >= 12 ? Number(digits.slice(10, 12)) : null;\n return { hour, minute, hasDate, isComplete: hasDate && !_.isNull(hour) && !_.isNull(minute) };\n};\n\nconst padTimeUnit = (unit: number) => _.padStart(String(unit), 2, '0');\n\nexport const formatPartialDateTime = (\n date: Moment, hour: number | null, minute: number | null,\n): string => {\n const datePart = date.format(TOKEN_PTBR_FORMAT);\n if (_.isNull(hour)) return datePart;\n if (_.isNull(minute)) return `${datePart} ${padTimeUnit(hour)}`;\n return `${datePart} ${padTimeUnit(hour)}:${padTimeUnit(minute)}`;\n};\n\nexport const parseBoundary = (value?: string): Moment | undefined => {\n if (!value) return undefined;\n const boundary = moment(value, ACCEPTED_BOUNDARY_FORMATS, true);\n return boundary.isValid() ? boundary : undefined;\n};\n\nexport const clampDateToBounds = (date: Moment, min?: Moment, max?: Moment): Moment => {\n if (min && date.isBefore(min)) return min.clone();\n if (max && date.isAfter(max)) return max.clone();\n return date;\n};\n\n// O que a pessoa não escolheu vira zero — e só o que ela não escolheu é puxado para a borda de\n// `min`/`max`. O dia e as unidades que ela mesma definiu ficam como estão, mesmo fora do intervalo.\nexport interface AssumedTimeParams {\n date: Moment;\n hour: number | null;\n minute: number | null;\n min?: Moment;\n max?: Moment;\n}\n\nexport const resolveAssumedTime = (params: AssumedTimeParams): Moment => {\n const { date, hour, minute, min, max } = params;\n const assumedDate = date.clone().hour(hour ?? 0).minute(minute ?? 0).second(0);\n const fitToBoundary = (boundary: Moment) => {\n if (_.isNull(hour)) assumedDate.hour(boundary.hour());\n if (_.isNull(minute) && assumedDate.hour() === boundary.hour()) {\n assumedDate.minute(boundary.minute());\n }\n };\n if (min && assumedDate.isSame(min, 'day') && assumedDate.isBefore(min)) fitToBoundary(min);\n if (max && assumedDate.isSame(max, 'day') && assumedDate.isAfter(max)) fitToBoundary(max);\n return assumedDate;\n};\n\n// Sair do campo com a data fechada e a hora em aberto.\nexport const completePartialDateTime = (\n params: { unmaskedValue: string, variant: DateVariant, min?: Moment, max?: Moment },\n): Moment | null => {\n const { unmaskedValue, variant, min, max } = params;\n if (variant !== 'datetime') return null;\n const { hasDate, isComplete, hour, minute } = getTimeSelection(unmaskedValue, variant);\n if (!hasDate || isComplete) return null;\n const date = moment(_.toString(unmaskedValue).replace(/\\D/g, '').slice(0, 8), 'DDMMYYYY', true);\n if (!date.isValid()) return null;\n return resolveAssumedTime({ date, hour, minute, min, max });\n};\n\nexport const isDayOutOfBounds = (day: Moment, min?: Moment, max?: Moment): boolean => {\n if (min && day.isBefore(min, 'day')) return true;\n return Boolean(max && day.isAfter(max, 'day'));\n};\n\nexport const getPredefinedPeriodRange = (period: PeriodOptions['id']) => {\n const range = (start: Moment, end: Moment) => ({\n initialDate: start.startOf('day'), finalDate: end.endOf('day'),\n });\n switch (period) {\n case 'today': return range(moment(), moment());\n case 'week': return range(moment().startOf('week'), moment().endOf('week'));\n case 'lastweek': return range(\n moment().add(-1, 'week').startOf('week'), moment().add(-1, 'week').endOf('week'),\n );\n case 'last15': return range(moment().add(-14, 'd'), moment());\n case 'month': return range(moment().startOf('month'), moment().endOf('month'));\n case 'lastmonth':\n default: return range(\n moment().add(-1, 'month').startOf('month'), moment().add(-1, 'month').endOf('month'),\n );\n }\n};\n\nexport const options = [\n OPTIONS_ON_DENIED.disabled,\n OPTIONS_ON_DENIED.unvisible,\n OPTIONS_ON_DENIED.readOnly,\n OPTIONS_ON_DENIED.hideContent,\n];\nexport const NAVIGATION_KEYS: string[] = [\n Keys.arrowLeft, Keys.arrowRight, Keys.arrowUp, Keys.arrowDown,\n Keys.pageUp, Keys.pageDown, Keys.home, Keys.end, Keys.escape,\n Keys.enter,\n];\nexport const PERIOD_OPTIONS_LIST: PeriodOptions[] = [\n { id: 'today', label: 'Hoje' },\n { id: 'week', label: 'Semana Atual' },\n { id: 'lastweek', label: 'Última Semana' },\n { id: 'last15', label: 'Últimos 15 dias' },\n { id: 'month', label: 'Mês atual' },\n { id: 'lastmonth', label: 'Último Mês' },\n];\n\nexport const generateCalendarWeeks = memoize((monthSelected: Moment): Moment[][] => {\n const startOfCalendar = monthSelected.clone().startOf('month').startOf('week');\n const endOfCalendar = monthSelected.clone().endOf('month').endOf('week');\n const weeks: Moment[][] = [];\n const currentWeek = startOfCalendar.clone();\n while (currentWeek.isSameOrBefore(endOfCalendar, 'day')) {\n const week: Moment[] = [];\n for (let days = 0; days < 7; days++) {\n week.push(currentWeek.clone());\n currentWeek.add(1, 'day');\n }\n weeks.push(week);\n }\n return weeks;\n}, (monthSelected: Moment) => monthSelected.format('YYYY-MM'));\n"],"names":["moment","locale","TOKEN_ISO_FORMAT","TOKEN_PTBR_FORMAT","TOKEN_ISO_DATETIME_FORMAT","TOKEN_PTBR_DATETIME_FORMAT","ACCEPTED_BOUNDARY_FORMATS","ACCEPTED_VALUE_FORMATS","ISO_8601","getDateFormats","variant","isoFormat","ptbrFormat","digits","parseDateValue","value","_","toString","getMaskSegments","memoize","format","segments","start","length","end","test","push","key","MASK_BLOCK_RANGES","D","from","to","pad","M","Y","H","m","fitsBlockRange","block","lowest","Number","padEnd","highest","canSegmentAcceptDigits","padDigit","String","padStart","getTimeSelection","unmaskedValue","replace","hasDate","size","hour","minute","isComplete","slice","isNull","padTimeUnit","unit","formatPartialDateTime","date","datePart","parseBoundary","undefined","boundary","isValid","clampDateToBounds","min","max","isBefore","clone","isAfter","resolveAssumedTime","params","assumedDate","second","fitToBoundary","isSame","completePartialDateTime","isDayOutOfBounds","day","Boolean","getPredefinedPeriodRange","period","range","initialDate","startOf","finalDate","endOf","add","options","OPTIONS_ON_DENIED","disabled","unvisible","readOnly","hideContent","NAVIGATION_KEYS","Keys","arrowLeft","arrowRight","arrowUp","arrowDown","pageUp","pageDown","home","escape","enter","PERIOD_OPTIONS_LIST","id","label","generateCalendarWeeks","monthSelected","startOfCalendar","endOfCalendar","weeks","currentWeek","isSameOrBefore","week","days"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { CSSProperties, RefObject } from 'react';
|
|
2
|
-
export declare const useCalendarPosition: (calendarBoxOpen: boolean, containerRef: RefObject<HTMLDivElement | null>) => {
|
|
2
|
+
export declare const useCalendarPosition: (calendarBoxOpen: boolean, containerRef: RefObject<HTMLDivElement | null>, calendarBoxRef: RefObject<HTMLDivElement | null>) => {
|
|
3
3
|
calendarBoxStyles: CSSProperties;
|
|
4
4
|
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { c as compilerRuntimeExports } from "../../../_virtual/compiler-runtime.js";
|
|
2
|
+
import { useState, useRef, useLayoutEffect } from "react";
|
|
3
|
+
const getOuterHeight = (element) => {
|
|
4
|
+
if (!element) return 0;
|
|
5
|
+
const {
|
|
6
|
+
borderTopWidth,
|
|
7
|
+
borderBottomWidth,
|
|
8
|
+
marginTop,
|
|
9
|
+
marginBottom
|
|
10
|
+
} = getComputedStyle(element);
|
|
11
|
+
const toNumber = (value) => parseFloat(value) || 0;
|
|
12
|
+
return element.scrollHeight + toNumber(borderTopWidth) + toNumber(borderBottomWidth) + toNumber(marginTop) + toNumber(marginBottom);
|
|
13
|
+
};
|
|
14
|
+
const useCalendarPosition = (calendarBoxOpen, containerRef, calendarBoxRef) => {
|
|
15
|
+
const $ = compilerRuntimeExports.c(8);
|
|
16
|
+
let t0;
|
|
17
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
18
|
+
t0 = {
|
|
19
|
+
top: 0,
|
|
20
|
+
left: 0,
|
|
21
|
+
position: "absolute"
|
|
22
|
+
};
|
|
23
|
+
$[0] = t0;
|
|
24
|
+
} else {
|
|
25
|
+
t0 = $[0];
|
|
26
|
+
}
|
|
27
|
+
const [calendarBoxStyles, setCalendarBoxStyles] = useState(t0);
|
|
28
|
+
const shouldAlignRight = useRef(false);
|
|
29
|
+
const shouldFlipAbove = useRef(false);
|
|
30
|
+
let t1;
|
|
31
|
+
let t2;
|
|
32
|
+
if ($[1] !== calendarBoxOpen || $[2] !== calendarBoxRef || $[3] !== containerRef) {
|
|
33
|
+
t1 = () => {
|
|
34
|
+
const updatePosition = (shouldReviewAlignment) => {
|
|
35
|
+
const anchor = containerRef.current?.getBoundingClientRect();
|
|
36
|
+
if (!anchor) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const measuredWidth = calendarBoxRef.current?.getBoundingClientRect().width ?? 0;
|
|
40
|
+
const boxWidth = Math.max(anchor.width, measuredWidth);
|
|
41
|
+
const boxHeight = getOuterHeight(calendarBoxRef.current);
|
|
42
|
+
if (shouldReviewAlignment) {
|
|
43
|
+
shouldAlignRight.current = anchor.left + boxWidth > window.innerWidth;
|
|
44
|
+
shouldFlipAbove.current = anchor.bottom + boxHeight > window.innerHeight && anchor.top - boxHeight >= 0;
|
|
45
|
+
}
|
|
46
|
+
const alignedLeft = shouldAlignRight.current ? Math.max(0, anchor.right - boxWidth) : anchor.left;
|
|
47
|
+
const alignedTop = shouldFlipAbove.current ? anchor.top - boxHeight : anchor.top + anchor.height;
|
|
48
|
+
setCalendarBoxStyles({
|
|
49
|
+
top: alignedTop + window.scrollY,
|
|
50
|
+
left: alignedLeft + window.scrollX,
|
|
51
|
+
width: anchor.width,
|
|
52
|
+
position: "absolute"
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
const handleScroll = () => updatePosition(false);
|
|
56
|
+
const handleResize = () => updatePosition(true);
|
|
57
|
+
if (calendarBoxOpen) {
|
|
58
|
+
updatePosition(true);
|
|
59
|
+
window.addEventListener("resize", handleResize);
|
|
60
|
+
window.addEventListener("scroll", handleScroll, true);
|
|
61
|
+
}
|
|
62
|
+
return () => {
|
|
63
|
+
window.removeEventListener("resize", handleResize);
|
|
64
|
+
window.removeEventListener("scroll", handleScroll, true);
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
t2 = [calendarBoxOpen, containerRef, calendarBoxRef];
|
|
68
|
+
$[1] = calendarBoxOpen;
|
|
69
|
+
$[2] = calendarBoxRef;
|
|
70
|
+
$[3] = containerRef;
|
|
71
|
+
$[4] = t1;
|
|
72
|
+
$[5] = t2;
|
|
73
|
+
} else {
|
|
74
|
+
t1 = $[4];
|
|
75
|
+
t2 = $[5];
|
|
76
|
+
}
|
|
77
|
+
useLayoutEffect(t1, t2);
|
|
78
|
+
let t3;
|
|
79
|
+
if ($[6] !== calendarBoxStyles) {
|
|
80
|
+
t3 = {
|
|
81
|
+
calendarBoxStyles
|
|
82
|
+
};
|
|
83
|
+
$[6] = calendarBoxStyles;
|
|
84
|
+
$[7] = t3;
|
|
85
|
+
} else {
|
|
86
|
+
t3 = $[7];
|
|
87
|
+
}
|
|
88
|
+
return t3;
|
|
89
|
+
};
|
|
90
|
+
export {
|
|
91
|
+
useCalendarPosition
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=useCalendarPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCalendarPosition.js","sources":["../../../../src/lib/inputs2/date/hooks/useCalendarPosition.ts"],"sourcesContent":["import { CSSProperties, RefObject, useLayoutEffect, useRef, useState } from 'react';\n\nconst getOuterHeight = (element: HTMLDivElement | null) => {\n if (!element) return 0;\n const { borderTopWidth, borderBottomWidth, marginTop, marginBottom } = getComputedStyle(element);\n const toNumber = (value: string) => parseFloat(value) || 0;\n return element.scrollHeight + toNumber(borderTopWidth) + toNumber(borderBottomWidth)\n + toNumber(marginTop) + toNumber(marginBottom);\n};\n\nexport const useCalendarPosition = (\n calendarBoxOpen: boolean,\n containerRef: RefObject<HTMLDivElement | null>,\n calendarBoxRef: RefObject<HTMLDivElement | null>,\n) => {\n const [calendarBoxStyles, setCalendarBoxStyles] = useState<CSSProperties>({\n top: 0,\n left: 0,\n position: 'absolute',\n });\n const shouldAlignRight = useRef(false);\n const shouldFlipAbove = useRef(false);\n\n useLayoutEffect(() => {\n const updatePosition = (shouldReviewAlignment: boolean) => {\n const anchor = containerRef.current?.getBoundingClientRect();\n if (!anchor) return;\n const measuredWidth = calendarBoxRef.current?.getBoundingClientRect().width ?? 0;\n const boxWidth = Math.max(anchor.width, measuredWidth);\n const boxHeight = getOuterHeight(calendarBoxRef.current);\n if (shouldReviewAlignment) {\n shouldAlignRight.current = anchor.left + boxWidth > window.innerWidth;\n shouldFlipAbove.current = anchor.bottom + boxHeight > window.innerHeight\n && anchor.top - boxHeight >= 0;\n }\n const alignedLeft = shouldAlignRight.current\n ? Math.max(0, anchor.right - boxWidth)\n : anchor.left;\n const alignedTop = shouldFlipAbove.current\n ? anchor.top - boxHeight\n : anchor.top + anchor.height;\n setCalendarBoxStyles({\n top: alignedTop + window.scrollY,\n left: alignedLeft + window.scrollX,\n width: anchor.width,\n position: 'absolute',\n });\n };\n\n const handleScroll = () => updatePosition(false);\n const handleResize = () => updatePosition(true);\n\n if (calendarBoxOpen) {\n updatePosition(true);\n window.addEventListener('resize', handleResize);\n window.addEventListener('scroll', handleScroll, true);\n }\n\n return () => {\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('scroll', handleScroll, true);\n };\n }, [calendarBoxOpen, containerRef, calendarBoxRef]);\n\n return { calendarBoxStyles };\n};\n"],"names":["getOuterHeight","element","borderTopWidth","borderBottomWidth","marginTop","marginBottom","getComputedStyle","toNumber","value","parseFloat","scrollHeight","useCalendarPosition","calendarBoxOpen","containerRef","calendarBoxRef","$","_c","t0","Symbol","for","top","left","position","calendarBoxStyles","setCalendarBoxStyles","useState","shouldAlignRight","useRef","shouldFlipAbove","t1","t2","updatePosition","shouldReviewAlignment","anchor","current","getBoundingClientRect","measuredWidth","width","boxWidth","Math","max","boxHeight","window","innerWidth","bottom","innerHeight","alignedLeft","right","alignedTop","height","scrollY","scrollX","handleScroll","handleResize","addEventListener","removeEventListener","useLayoutEffect","t3"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { Moment } from 'moment';
|
|
3
|
+
import { DateSharedContextProps } from '../types';
|
|
4
|
+
interface UseDateCalendarStateParams {
|
|
5
|
+
inputRef?: React.RefObject<HTMLInputElement | null>;
|
|
6
|
+
min?: Moment;
|
|
7
|
+
max?: Moment;
|
|
8
|
+
onPressEnter?: (activeDescendant: string) => void;
|
|
9
|
+
}
|
|
10
|
+
interface UseDateCalendarStateReturn extends DateSharedContextProps {
|
|
11
|
+
handleKeyDownNavigation: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const useDateCalendarState: (params?: UseDateCalendarStateParams) => UseDateCalendarStateReturn;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { c as compilerRuntimeExports } from "../../../_virtual/compiler-runtime.js";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import hooks from "../../../node_modules/moment/dist/moment.js";
|
|
4
|
+
import { Keys } from "../types.js";
|
|
5
|
+
import { TOKEN_ISO_FORMAT, NAVIGATION_KEYS } from "../helpers.js";
|
|
6
|
+
const useDateCalendarState = (t0) => {
|
|
7
|
+
const $ = compilerRuntimeExports.c(30);
|
|
8
|
+
let t1;
|
|
9
|
+
if ($[0] !== t0) {
|
|
10
|
+
t1 = t0 === void 0 ? {} : t0;
|
|
11
|
+
$[0] = t0;
|
|
12
|
+
$[1] = t1;
|
|
13
|
+
} else {
|
|
14
|
+
t1 = $[1];
|
|
15
|
+
}
|
|
16
|
+
const params = t1;
|
|
17
|
+
const {
|
|
18
|
+
inputRef,
|
|
19
|
+
min,
|
|
20
|
+
max,
|
|
21
|
+
onPressEnter
|
|
22
|
+
} = params;
|
|
23
|
+
const [calendarBoxOpen, setCalendarBoxOpen] = React.useState(false);
|
|
24
|
+
let t2;
|
|
25
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
26
|
+
t2 = hooks().format(TOKEN_ISO_FORMAT);
|
|
27
|
+
$[2] = t2;
|
|
28
|
+
} else {
|
|
29
|
+
t2 = $[2];
|
|
30
|
+
}
|
|
31
|
+
const [activeDescendant, setActiveDescendant] = React.useState(t2);
|
|
32
|
+
let t3;
|
|
33
|
+
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
34
|
+
t3 = hooks();
|
|
35
|
+
$[3] = t3;
|
|
36
|
+
} else {
|
|
37
|
+
t3 = $[3];
|
|
38
|
+
}
|
|
39
|
+
const [calendarDisplayDate, setCalendarDisplayDate] = React.useState(t3);
|
|
40
|
+
const calendarRef = React.useRef(null);
|
|
41
|
+
const dateContainerRef = React.useRef(null);
|
|
42
|
+
let t4;
|
|
43
|
+
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
44
|
+
t4 = (value) => setCalendarBoxOpen(value);
|
|
45
|
+
$[4] = t4;
|
|
46
|
+
} else {
|
|
47
|
+
t4 = $[4];
|
|
48
|
+
}
|
|
49
|
+
const handleSetCalendarBoxOpen = t4;
|
|
50
|
+
let t5;
|
|
51
|
+
if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
|
|
52
|
+
t5 = (value_0) => setActiveDescendant(value_0);
|
|
53
|
+
$[5] = t5;
|
|
54
|
+
} else {
|
|
55
|
+
t5 = $[5];
|
|
56
|
+
}
|
|
57
|
+
const handleChangeActiveDescendant = t5;
|
|
58
|
+
let t6;
|
|
59
|
+
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
60
|
+
t6 = (value_1) => setCalendarDisplayDate(value_1);
|
|
61
|
+
$[6] = t6;
|
|
62
|
+
} else {
|
|
63
|
+
t6 = $[6];
|
|
64
|
+
}
|
|
65
|
+
const handleChangeCalendarDisplayDate = t6;
|
|
66
|
+
let t7;
|
|
67
|
+
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
|
|
68
|
+
t7 = () => setCalendarDisplayDate(_temp);
|
|
69
|
+
$[7] = t7;
|
|
70
|
+
} else {
|
|
71
|
+
t7 = $[7];
|
|
72
|
+
}
|
|
73
|
+
const handleNextMonth = t7;
|
|
74
|
+
let t8;
|
|
75
|
+
if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
|
|
76
|
+
t8 = () => setCalendarDisplayDate(_temp2);
|
|
77
|
+
$[8] = t8;
|
|
78
|
+
} else {
|
|
79
|
+
t8 = $[8];
|
|
80
|
+
}
|
|
81
|
+
const handlePreviousMonth = t8;
|
|
82
|
+
let t9;
|
|
83
|
+
if ($[9] !== inputRef) {
|
|
84
|
+
t9 = () => {
|
|
85
|
+
setCalendarBoxOpen((prevState) => {
|
|
86
|
+
if (inputRef?.current !== document.activeElement) {
|
|
87
|
+
inputRef?.current?.focus?.();
|
|
88
|
+
}
|
|
89
|
+
return !prevState;
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
$[9] = inputRef;
|
|
93
|
+
$[10] = t9;
|
|
94
|
+
} else {
|
|
95
|
+
t9 = $[10];
|
|
96
|
+
}
|
|
97
|
+
const handleToggleCalendarBox = t9;
|
|
98
|
+
let t10;
|
|
99
|
+
if ($[11] !== max || $[12] !== min) {
|
|
100
|
+
t10 = (day) => {
|
|
101
|
+
if (min && day.isBefore(min, "day")) {
|
|
102
|
+
return min.clone().startOf("day");
|
|
103
|
+
}
|
|
104
|
+
if (max && day.isAfter(max, "day")) {
|
|
105
|
+
return max.clone().startOf("day");
|
|
106
|
+
}
|
|
107
|
+
return day;
|
|
108
|
+
};
|
|
109
|
+
$[11] = max;
|
|
110
|
+
$[12] = min;
|
|
111
|
+
$[13] = t10;
|
|
112
|
+
} else {
|
|
113
|
+
t10 = $[13];
|
|
114
|
+
}
|
|
115
|
+
const clampToBounds = t10;
|
|
116
|
+
let t11;
|
|
117
|
+
if ($[14] !== clampToBounds) {
|
|
118
|
+
t11 = (offset) => {
|
|
119
|
+
setCalendarDisplayDate((prevDisplayDate_1) => {
|
|
120
|
+
const daySelected = clampToBounds(prevDisplayDate_1.clone().add(offset, "day"));
|
|
121
|
+
setActiveDescendant(daySelected.format(TOKEN_ISO_FORMAT));
|
|
122
|
+
return daySelected;
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
$[14] = clampToBounds;
|
|
126
|
+
$[15] = t11;
|
|
127
|
+
} else {
|
|
128
|
+
t11 = $[15];
|
|
129
|
+
}
|
|
130
|
+
const handleNavigateWithDays = t11;
|
|
131
|
+
let t12;
|
|
132
|
+
if ($[16] !== clampToBounds) {
|
|
133
|
+
t12 = (when) => {
|
|
134
|
+
setCalendarDisplayDate((prevDisplayDate_2) => {
|
|
135
|
+
let daySelected_0 = prevDisplayDate_2;
|
|
136
|
+
if (when === "end") {
|
|
137
|
+
daySelected_0 = prevDisplayDate_2.clone().endOf("week");
|
|
138
|
+
}
|
|
139
|
+
if (when === "start") {
|
|
140
|
+
daySelected_0 = prevDisplayDate_2.clone().startOf("week");
|
|
141
|
+
}
|
|
142
|
+
daySelected_0 = clampToBounds(daySelected_0);
|
|
143
|
+
setActiveDescendant(daySelected_0.format(TOKEN_ISO_FORMAT));
|
|
144
|
+
return daySelected_0;
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
$[16] = clampToBounds;
|
|
148
|
+
$[17] = t12;
|
|
149
|
+
} else {
|
|
150
|
+
t12 = $[17];
|
|
151
|
+
}
|
|
152
|
+
const handleNavigateWithWeeks = t12;
|
|
153
|
+
let t13;
|
|
154
|
+
if ($[18] !== activeDescendant || $[19] !== calendarBoxOpen || $[20] !== handleNavigateWithDays || $[21] !== handleNavigateWithWeeks || $[22] !== onPressEnter) {
|
|
155
|
+
t13 = (event) => {
|
|
156
|
+
const isNavigationKey = Boolean(event.key) && !event.shiftKey && !event.altKey && NAVIGATION_KEYS.includes(event.key);
|
|
157
|
+
if (!calendarBoxOpen || !isNavigationKey) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
event.preventDefault();
|
|
161
|
+
bb84: switch (event.key) {
|
|
162
|
+
case Keys.arrowLeft: {
|
|
163
|
+
handleNavigateWithDays(-1);
|
|
164
|
+
break bb84;
|
|
165
|
+
}
|
|
166
|
+
case Keys.arrowRight: {
|
|
167
|
+
handleNavigateWithDays(1);
|
|
168
|
+
break bb84;
|
|
169
|
+
}
|
|
170
|
+
case Keys.arrowUp: {
|
|
171
|
+
handleNavigateWithDays(-7);
|
|
172
|
+
break bb84;
|
|
173
|
+
}
|
|
174
|
+
case Keys.arrowDown: {
|
|
175
|
+
handleNavigateWithDays(7);
|
|
176
|
+
break bb84;
|
|
177
|
+
}
|
|
178
|
+
case Keys.pageUp: {
|
|
179
|
+
handleNextMonth();
|
|
180
|
+
break bb84;
|
|
181
|
+
}
|
|
182
|
+
case Keys.pageDown: {
|
|
183
|
+
handlePreviousMonth();
|
|
184
|
+
break bb84;
|
|
185
|
+
}
|
|
186
|
+
case Keys.home: {
|
|
187
|
+
handleNavigateWithWeeks("start");
|
|
188
|
+
break bb84;
|
|
189
|
+
}
|
|
190
|
+
case Keys.end: {
|
|
191
|
+
handleNavigateWithWeeks("end");
|
|
192
|
+
break bb84;
|
|
193
|
+
}
|
|
194
|
+
case Keys.escape: {
|
|
195
|
+
setCalendarBoxOpen(false);
|
|
196
|
+
break bb84;
|
|
197
|
+
}
|
|
198
|
+
case Keys.enter: {
|
|
199
|
+
onPressEnter?.(activeDescendant);
|
|
200
|
+
break bb84;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
$[18] = activeDescendant;
|
|
205
|
+
$[19] = calendarBoxOpen;
|
|
206
|
+
$[20] = handleNavigateWithDays;
|
|
207
|
+
$[21] = handleNavigateWithWeeks;
|
|
208
|
+
$[22] = onPressEnter;
|
|
209
|
+
$[23] = t13;
|
|
210
|
+
} else {
|
|
211
|
+
t13 = $[23];
|
|
212
|
+
}
|
|
213
|
+
const handleKeyDownNavigation = t13;
|
|
214
|
+
let t14;
|
|
215
|
+
if ($[24] !== activeDescendant || $[25] !== calendarBoxOpen || $[26] !== calendarDisplayDate || $[27] !== handleKeyDownNavigation || $[28] !== handleToggleCalendarBox) {
|
|
216
|
+
t14 = {
|
|
217
|
+
calendarBoxOpen,
|
|
218
|
+
activeDescendant,
|
|
219
|
+
calendarDisplayDate,
|
|
220
|
+
calendarRef,
|
|
221
|
+
dateContainerRef,
|
|
222
|
+
handleNextMonth,
|
|
223
|
+
handlePreviousMonth,
|
|
224
|
+
handleToggleCalendarBox,
|
|
225
|
+
handleSetCalendarBoxOpen,
|
|
226
|
+
handleChangeActiveDescendant,
|
|
227
|
+
handleChangeCalendarDisplayDate,
|
|
228
|
+
handleKeyDownNavigation
|
|
229
|
+
};
|
|
230
|
+
$[24] = activeDescendant;
|
|
231
|
+
$[25] = calendarBoxOpen;
|
|
232
|
+
$[26] = calendarDisplayDate;
|
|
233
|
+
$[27] = handleKeyDownNavigation;
|
|
234
|
+
$[28] = handleToggleCalendarBox;
|
|
235
|
+
$[29] = t14;
|
|
236
|
+
} else {
|
|
237
|
+
t14 = $[29];
|
|
238
|
+
}
|
|
239
|
+
return t14;
|
|
240
|
+
};
|
|
241
|
+
function _temp(prevDisplayDate) {
|
|
242
|
+
return prevDisplayDate.clone().add(1, "month");
|
|
243
|
+
}
|
|
244
|
+
function _temp2(prevDisplayDate_0) {
|
|
245
|
+
return prevDisplayDate_0.clone().subtract(1, "month");
|
|
246
|
+
}
|
|
247
|
+
export {
|
|
248
|
+
useDateCalendarState
|
|
249
|
+
};
|
|
250
|
+
//# sourceMappingURL=useDateCalendarState.js.map
|