@ebay/ui-core-react 7.4.0-alpha.7 → 7.4.0-alpha.8

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 (118) hide show
  1. package/array.polyfill.flat-DyxysTxZ.js +21 -0
  2. package/badge-CR5t7-2L.js +8 -0
  3. package/button-B4bZIgwB.js +83 -0
  4. package/calendar-D-DWjrMU.js +333 -0
  5. package/common/component-utils/forwardRef/index.js +10 -1
  6. package/common/component-utils/index.js +9 -1
  7. package/common/component-utils/utils/index.js +25 -1
  8. package/common/event-utils/index.js +113 -1
  9. package/common/floating-label-utils/hooks/index.js +106 -1
  10. package/common/notice-utils/notice-cta/index.js +5 -1
  11. package/common/random-id/index.js +13 -1
  12. package/common/tooltip-utils/constants/index.js +97 -1
  13. package/common/tooltip-utils/index.js +11 -1
  14. package/debounce-v8bWAUnY.js +9 -0
  15. package/dialog-previous-button-EC_Y6KaT.js +370 -0
  16. package/drawer-DBDktEBZ.js +69 -0
  17. package/ebay-alert-dialog/index.js +26 -1
  18. package/ebay-badge/index.js +4 -1
  19. package/ebay-breadcrumbs/index.js +47 -1
  20. package/ebay-button/index.js +5 -1
  21. package/ebay-calendar/index.js +4 -1
  22. package/ebay-carousel/index.js +345 -1
  23. package/ebay-checkbox/index.js +52 -1
  24. package/ebay-confirm-dialog/index.js +28 -1
  25. package/ebay-cta-button/index.js +22 -1
  26. package/ebay-date-textbox/index.js +140 -1
  27. package/ebay-dialog-base/components/animation/index.js +92 -1
  28. package/ebay-dialog-base/components/dialog-footer/index.js +4 -1
  29. package/ebay-dialog-base/components/dialog-header/index.js +4 -1
  30. package/ebay-dialog-base/index.js +13 -1
  31. package/ebay-drawer-dialog/index.js +4 -1
  32. package/ebay-eek/index.js +54 -1
  33. package/ebay-fake-menu/index.js +10 -1
  34. package/ebay-fake-menu/menu-item/index.js +49 -1
  35. package/ebay-fake-menu-button/index.js +7 -1
  36. package/ebay-fake-menu-button/menu-button/index.js +12 -1
  37. package/ebay-fake-tabs/index.js +30 -1
  38. package/ebay-field/index.js +21 -1
  39. package/ebay-fullscreen-dialog/index.js +10 -1
  40. package/ebay-icon/index.js +4 -1
  41. package/ebay-icon-button/index.js +4 -1
  42. package/ebay-infotip/index.js +76 -1
  43. package/ebay-inline-notice/index.js +36 -1
  44. package/ebay-lightbox-dialog/index.js +12 -1
  45. package/ebay-listbox/index.js +6 -1
  46. package/ebay-listbox-button/index.js +151 -1
  47. package/ebay-menu/index.js +9 -1
  48. package/ebay-menu-button/index.js +113 -1
  49. package/ebay-notice-base/index.js +7 -1
  50. package/ebay-page-notice/index.js +50 -1
  51. package/ebay-pagination/index.js +244 -1
  52. package/ebay-panel-dialog/index.js +12 -1
  53. package/ebay-progress-bar/index.js +6 -1
  54. package/ebay-progress-spinner/index.js +4 -1
  55. package/ebay-progress-stepper/index.js +72 -1
  56. package/ebay-radio/index.js +4 -1
  57. package/ebay-radio/radio/index.js +48 -1
  58. package/ebay-section-notice/index.js +69 -1
  59. package/ebay-section-title/index.js +38 -1
  60. package/ebay-segmented-buttons/index.js +46 -1
  61. package/ebay-select/index.js +98 -1
  62. package/ebay-signal/index.js +9 -1
  63. package/ebay-snackbar-dialog/index.js +81 -1
  64. package/ebay-split-button/index.js +22 -1
  65. package/ebay-star-rating/index.js +9 -1
  66. package/ebay-star-rating-select/index.js +55 -1
  67. package/ebay-svg/index.js +5189 -1
  68. package/ebay-switch/index.js +27 -1
  69. package/ebay-tabs/index.js +88 -1
  70. package/ebay-textbox/index.js +10 -1
  71. package/ebay-toast-dialog/index.js +9 -1
  72. package/ebay-tooltip/index.js +64 -1
  73. package/ebay-tourtip/index.js +54 -1
  74. package/ebay-video/index.js +229 -1
  75. package/events/index.js +18 -1
  76. package/icon-B17Di3YL.js +56 -0
  77. package/icon-button-BQWoMgX1.js +31 -0
  78. package/index-BXizW4ue.js +89 -0
  79. package/index-DcH7Tjjd.js +272 -0
  80. package/label-C0AS4fnO.js +19 -0
  81. package/listbox-DGbY99kq.js +674 -0
  82. package/menu-Bsy48CE1.js +163 -0
  83. package/menu-button-CKGsgg6G.js +89 -0
  84. package/menu-fCOy6wBS.js +29 -0
  85. package/notice-content-BTXVxttv.js +8 -0
  86. package/notice-content-BhUeK1pd.js +3 -0
  87. package/notice-footer-CIQ8SM6N.js +10 -0
  88. package/package.json +1 -1
  89. package/progress-spinner-DOFKRtuu.js +20 -0
  90. package/range-C5qzyhg4.js +3 -0
  91. package/textbox-J291yCpJ.js +136 -0
  92. package/use-roving-index-CEM_UsCH.js +58 -0
  93. package/use-tooltip-7JxcZHJn.js +92 -0
  94. package/utils/index.js +13 -1
  95. package/array.polyfill.flat-5BAolFdk.js +0 -1
  96. package/badge-CoHKfiPt.js +0 -1
  97. package/button-DGuEBUDJ.js +0 -1
  98. package/calendar-lAu6VfAb.js +0 -1
  99. package/debounce-BQsYxxOL.js +0 -1
  100. package/dialog-previous-button-5cTKpmJ-.js +0 -1
  101. package/drawer-xTtCoO3F.js +0 -1
  102. package/icon-TuxfQndO.js +0 -1
  103. package/icon-button-Cwaj-eT9.js +0 -1
  104. package/index-D3xZmuzJ.js +0 -1
  105. package/index-Dkz0UnlJ.js +0 -1
  106. package/label-CnrpYJ-g.js +0 -1
  107. package/listbox-Br0AMj3v.js +0 -1
  108. package/menu-CV-INYLM.js +0 -1
  109. package/menu-_LzP6yje.js +0 -1
  110. package/menu-button-BZ66jxvI.js +0 -1
  111. package/notice-content-9iF4T8uB.js +0 -1
  112. package/notice-content-C0ZStfuX.js +0 -1
  113. package/notice-footer-Cw1DMzoB.js +0 -1
  114. package/progress-spinner-U2qOANON.js +0 -1
  115. package/range-DOsPN0h5.js +0 -1
  116. package/textbox-dUhinDwj.js +0 -1
  117. package/use-roving-index-DoAVBgsp.js +0 -1
  118. package/use-tooltip-CL3_zAeg.js +0 -1
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ if (!Array.prototype.flat) {
3
+ Object.defineProperty(Array.prototype, "flat", {
4
+ configurable: true,
5
+ writable: true,
6
+ value: function(d) {
7
+ const depthArg = typeof d === "undefined" ? 1 : Number(d) || 0;
8
+ const result = [];
9
+ const forEach = result.forEach;
10
+ const flatDeep = (arr, depth) => forEach.call(arr, (val) => {
11
+ if (depth > 0 && Array.isArray(val)) {
12
+ flatDeep(val, depth - 1);
13
+ } else {
14
+ result.push(val);
15
+ }
16
+ });
17
+ flatDeep(this, depthArg);
18
+ return result;
19
+ }
20
+ });
21
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ const React = require("react");
3
+ const classNames = require("classnames");
4
+ const EbayBadge = ({ number, type = "img", className, ...rest }) => {
5
+ const parsed = Math.round(parseInt(String(number), 10));
6
+ return parsed <= 0 ? null : React.createElement("span", { ...rest, className: classNames("badge", className), role: type === "img" ? "img" : void 0, "aria-hidden": type !== "img" }, parsed > 99 ? "99+" : parsed);
7
+ };
8
+ exports.EbayBadge = EbayBadge;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ const React = require("react");
3
+ const classNames$1 = require("classnames");
4
+ const common_componentUtils_forwardRef = require("./common/component-utils/forwardRef/index.js");
5
+ require("./array.polyfill.flat-DyxysTxZ.js");
6
+ const icon = require("./icon-B17Di3YL.js");
7
+ const progressSpinner = require("./progress-spinner-DOFKRtuu.js");
8
+ const classNames = {
9
+ cta: "cta-",
10
+ fake: "fake-",
11
+ expand: "expand-",
12
+ default: ""
13
+ };
14
+ const EbayButtonCell = ({ type = "default", children, ...rest }) => React.createElement(
15
+ "span",
16
+ { className: `${classNames[type]}btn__cell`, ...rest },
17
+ React.createElement(React.Fragment, null, children)
18
+ );
19
+ const EbayButtonLoading = () => React.createElement(
20
+ EbayButtonCell,
21
+ null,
22
+ React.createElement(progressSpinner.EbayProgressSpinner, null)
23
+ );
24
+ const EbayButtonText = ({ className, children }) => React.createElement("span", { className: classNames$1(className, "btn__text") }, children);
25
+ const EbayButtonExpand = ({ children }) => children ? React.createElement(
26
+ EbayButtonCell,
27
+ null,
28
+ React.createElement(EbayButtonText, null, children),
29
+ React.createElement(icon.EbayIcon, { name: "chevronDown12" })
30
+ ) : React.createElement(icon.EbayIcon, { name: "chevronDown12" });
31
+ const EbayButton = ({ priority = "secondary", variant = "standard", size = "regular", bodyState, split, transparent = false, fluid = false, disabled, partiallyDisabled, children, onKeyDown = () => {
32
+ }, onEscape = () => {
33
+ }, truncate = false, href, className: extraClasses, forwardedRef, borderless, fixedHeight, ...rest }) => {
34
+ const classPrefix = href ? "fake-btn" : "btn";
35
+ const priorityStyles = {
36
+ primary: `${classPrefix}--primary`,
37
+ secondary: `${classPrefix}--secondary`,
38
+ tertiary: `${classPrefix}--tertiary`,
39
+ none: ""
40
+ };
41
+ const sizeStyles = {
42
+ large: `${classPrefix}--large`,
43
+ small: `${classPrefix}--small`,
44
+ regular: "",
45
+ default: ""
46
+ };
47
+ const splitStyles = {
48
+ start: `${classPrefix}--split-start`,
49
+ end: `${classPrefix}--split-end`
50
+ };
51
+ const isDestructive = variant === "destructive";
52
+ const isForm = variant === "form";
53
+ const isLoading = bodyState === "loading";
54
+ const isExpand = bodyState === "expand";
55
+ const isSlim = isForm && (isIconOnly(children) || isExpand && !children);
56
+ const className = classNames$1(classPrefix, extraClasses, priorityStyles[isForm || borderless ? "none" : priority], sizeStyles[size], splitStyles[split], isDestructive && `${classPrefix}--destructive`, isForm && `${classPrefix}--form`, isSlim && `${classPrefix}--slim`, transparent && `${classPrefix}--transparent`, fluid && `${classPrefix}--fluid`, truncate && `${classPrefix}--truncated`, borderless && `${classPrefix}--borderless`, fixedHeight && (sizeStyles[size] ? `${sizeStyles[size]}-${fixedHeight}` : `${classPrefix}--fixed-height`));
57
+ const keyDownHandler = (e) => {
58
+ onKeyDown(e);
59
+ if (e.key === "Escape" || e.key === "Esc") {
60
+ onEscape(e);
61
+ }
62
+ };
63
+ const bodyContent = getBodyContent(children, { isLoading, isExpand });
64
+ const ariaLive = isLoading ? `polite` : null;
65
+ return href ? React.createElement("a", { className, href: disabled ? void 0 : href, ref: forwardedRef, onKeyDown: keyDownHandler, "aria-live": ariaLive, ...rest }, bodyContent) : React.createElement("button", { disabled, "aria-disabled": partiallyDisabled, "aria-live": ariaLive, className, ref: forwardedRef, onKeyDown: keyDownHandler, ...rest }, bodyContent);
66
+ };
67
+ function getBodyContent(children, { isLoading, isExpand }) {
68
+ switch (true) {
69
+ case isLoading:
70
+ return React.createElement(EbayButtonLoading, null);
71
+ case isExpand:
72
+ return React.createElement(EbayButtonExpand, null, children);
73
+ default:
74
+ return children;
75
+ }
76
+ }
77
+ function isIconOnly(children) {
78
+ const childrenArray = React.Children.toArray(children);
79
+ return childrenArray.length === 1 && childrenArray[0].type === icon.EbayIcon;
80
+ }
81
+ const EbayButton$1 = common_componentUtils_forwardRef.withForwardRef(EbayButton);
82
+ exports.EbayButton = EbayButton$1;
83
+ exports.EbayButtonCell = EbayButtonCell;
@@ -0,0 +1,333 @@
1
+ "use strict";
2
+ const React = require("react");
3
+ const iconButton = require("./icon-button-BQWoMgX1.js");
4
+ const classNames = require("classnames");
5
+ function findFirstDayOfWeek(localeName) {
6
+ const locale = new Intl.Locale(localeName);
7
+ if (locale.weekInfo) {
8
+ return locale.weekInfo.firstDay;
9
+ }
10
+ return 0;
11
+ }
12
+ function getWeekdayInfo(localeName) {
13
+ const firstDayOfWeek = findFirstDayOfWeek(localeName);
14
+ const weekdayLabelFormatter = new Intl.DateTimeFormat(localeName, {
15
+ weekday: "short"
16
+ });
17
+ const weekday = new Date(2022, 9, 2 + firstDayOfWeek);
18
+ const weekdayLabels = [...Array(7)].map(() => {
19
+ const dayLabel = weekdayLabelFormatter.format(weekday);
20
+ weekday.setDate(weekday.getDate() + 1);
21
+ return dayLabel;
22
+ });
23
+ return {
24
+ firstDayOfWeek,
25
+ weekdayLabels
26
+ };
27
+ }
28
+ function dateArgToISO(arg) {
29
+ if (!arg)
30
+ return void 0;
31
+ if (/^\d\d\d\d-\d\d-\d\d$/g.test(arg))
32
+ return arg;
33
+ return toISO(new Date(arg));
34
+ }
35
+ function toISO(date) {
36
+ if (isNaN(date.getTime()))
37
+ return;
38
+ return date.toISOString().slice(0, 10);
39
+ }
40
+ function fromISO(iso) {
41
+ return new Date(iso);
42
+ }
43
+ function offsetISO(iso, days) {
44
+ const date = fromISO(iso);
45
+ date.setUTCDate(date.getUTCDate() + days);
46
+ return toISO(date);
47
+ }
48
+ function localeOverride(locale) {
49
+ return locale || navigator.language;
50
+ }
51
+ const DAY_UPDATE_KEYMAP = {
52
+ ArrowRight: 1,
53
+ ArrowLeft: -1,
54
+ ArrowDown: 7,
55
+ ArrowUp: -7
56
+ };
57
+ const EbayCalendar = ({ selected, numMonths = 1, navigable, interactive, range, locale, disableBefore, disableAfter, disableWeekdays, disableList, a11ySelectedText = "selected", a11yRangeStartText = "start of range", a11yInRangeText = "in range", a11yRangeEndText = "end of range", a11ySeparator = "-", a11yTodayText = "today", a11yDisabledText = "inactive", getA11yShowMonthText = (monthTitle) => `Show ${monthTitle}`, linkBuilder, onMonthChange = () => {
58
+ }, onFocus = () => {
59
+ }, onSelect = () => {
60
+ } }) => {
61
+ const todayISO = toISO(/* @__PURE__ */ new Date());
62
+ const { firstDayOfWeek, weekdayLabels } = getWeekdayInfo(localeOverride(locale));
63
+ const containerRef = React.useRef(null);
64
+ const [offset, setOffset] = React.useState(0);
65
+ const [focusISO, setFocusISO] = React.useState(null);
66
+ const [tabIndexISO, setTabIndexISO] = React.useState(todayISO);
67
+ const baseISO = React.useRef(todayISO);
68
+ const getMonthDate = (monthOffset) => {
69
+ const baseDate = fromISO(baseISO.current);
70
+ const date = new Date(Date.UTC(baseDate.getUTCFullYear(), baseDate.getUTCMonth() + monthOffset));
71
+ return date;
72
+ };
73
+ const getFirstVisibleISO = () => toISO(getMonthDate(offset));
74
+ const getLastVisibleISO = () => {
75
+ const baseDate = fromISO(baseISO.current);
76
+ return toISO(new Date(Date.UTC(baseDate.getUTCFullYear(), baseDate.getUTCMonth() + offset + (numMonths || 1), 0)));
77
+ };
78
+ React.useEffect(() => {
79
+ if (selected) {
80
+ const selectedISOs = Array.isArray(selected) ? selected : [selected];
81
+ const currFirstISO = getFirstVisibleISO();
82
+ const currLastISO = getLastVisibleISO();
83
+ const selectedTimeInView = selectedISOs.find((iso) => iso >= currFirstISO && iso <= currLastISO);
84
+ if (selectedTimeInView === void 0) {
85
+ baseISO.current = selectedISOs[0];
86
+ setOffset(0);
87
+ }
88
+ }
89
+ }, [selected]);
90
+ const calculateRangeDisplay = () => {
91
+ if (selected && range) {
92
+ let iso1;
93
+ let iso2;
94
+ if (Array.isArray(selected)) {
95
+ [iso1, iso2] = selected;
96
+ } else if (focusISO) {
97
+ iso1 = selected;
98
+ iso2 = focusISO;
99
+ }
100
+ if (iso1 && iso2) {
101
+ const [start, end] = [iso1, iso2].sort();
102
+ return {
103
+ rangeStart: start,
104
+ rangeEnd: end
105
+ };
106
+ }
107
+ }
108
+ return {
109
+ rangeStart: null,
110
+ rangeEnd: null
111
+ };
112
+ };
113
+ const monthTitle = (date) => {
114
+ const formatter = new Intl.DateTimeFormat(localeOverride(locale), {
115
+ month: "long",
116
+ year: "numeric"
117
+ });
118
+ return formatter.format(new Date(date.getUTCFullYear(), date.getUTCMonth()));
119
+ };
120
+ const isDayDisabled = (iso) => disableBefore && iso < disableBefore || disableAfter && iso > disableAfter || disableWeekdays && disableWeekdays.includes(fromISO(iso).getUTCDay()) || disableList && disableList.includes(iso);
121
+ const getFirstActiveISO = () => {
122
+ let iso = getFirstVisibleISO();
123
+ const lastVisible = getLastVisibleISO();
124
+ while (iso <= lastVisible && isDayDisabled(iso)) {
125
+ iso = offsetISO(iso, 1);
126
+ }
127
+ return iso > lastVisible ? null : iso;
128
+ };
129
+ const getLastActiveISO = () => {
130
+ let iso = getLastVisibleISO();
131
+ const firstVisible = getFirstVisibleISO();
132
+ while (iso >= firstVisible && isDayDisabled(iso)) {
133
+ iso = offsetISO(iso, -1);
134
+ }
135
+ return iso < firstVisible ? null : iso;
136
+ };
137
+ const setTabindexAndFocus = (iso) => {
138
+ setTabIndexISO(iso);
139
+ setTimeout(() => {
140
+ var _a;
141
+ const elementToFocus = (_a = containerRef.current) == null ? void 0 : _a.querySelector(`[data-iso="${iso}"]`);
142
+ elementToFocus == null ? void 0 : elementToFocus.focus();
143
+ });
144
+ };
145
+ const prevMonth = (focus) => {
146
+ if (disableBefore && getFirstVisibleISO() <= disableBefore) {
147
+ return false;
148
+ }
149
+ setOffset((currentOffset) => currentOffset - 1);
150
+ let newTabIndexISO = tabIndexISO;
151
+ const lastActiveISO = getLastActiveISO();
152
+ if (lastActiveISO && lastActiveISO < tabIndexISO) {
153
+ newTabIndexISO = lastActiveISO;
154
+ setTabIndexISO(lastActiveISO);
155
+ }
156
+ if (focus) {
157
+ setTabindexAndFocus(newTabIndexISO);
158
+ }
159
+ onMonthChange({
160
+ iso: toISO(getMonthDate(offset))
161
+ });
162
+ return true;
163
+ };
164
+ const nextMonth = (focus) => {
165
+ if (disableAfter && getLastVisibleISO() >= disableAfter) {
166
+ return false;
167
+ }
168
+ setOffset((currentOffset) => currentOffset + 1);
169
+ let newTabIndexISO = tabIndexISO;
170
+ const firstActiveISO = getFirstActiveISO();
171
+ if (firstActiveISO && firstActiveISO > tabIndexISO) {
172
+ newTabIndexISO = firstActiveISO;
173
+ setTabIndexISO(firstActiveISO);
174
+ }
175
+ if (focus) {
176
+ setTabindexAndFocus(newTabIndexISO);
177
+ }
178
+ onMonthChange({
179
+ iso: toISO(getMonthDate(offset + (numMonths || 1)))
180
+ });
181
+ };
182
+ const onKeyDown = (event) => {
183
+ const dayChange = DAY_UPDATE_KEYMAP[event.key];
184
+ if (dayChange) {
185
+ event.preventDefault();
186
+ let tries = 7;
187
+ let iso = tabIndexISO;
188
+ do {
189
+ iso = offsetISO(iso, dayChange);
190
+ } while (tries-- > 0 && isDayDisabled(iso));
191
+ if (tries > 0) {
192
+ const firstVisible = getFirstVisibleISO();
193
+ const lastVisible = getLastVisibleISO();
194
+ if (iso < firstVisible) {
195
+ if (navigable) {
196
+ prevMonth();
197
+ } else {
198
+ iso = firstVisible;
199
+ }
200
+ } else if (iso > lastVisible) {
201
+ if (navigable) {
202
+ nextMonth();
203
+ } else {
204
+ iso = lastVisible;
205
+ }
206
+ }
207
+ setTabindexAndFocus(iso);
208
+ }
209
+ } else {
210
+ switch (event.key) {
211
+ case "PageUp":
212
+ prevMonth(true);
213
+ break;
214
+ case "PageDown":
215
+ nextMonth(true);
216
+ break;
217
+ case "Home":
218
+ setTabindexAndFocus(getFirstActiveISO());
219
+ break;
220
+ case "End":
221
+ setTabindexAndFocus(getLastActiveISO());
222
+ break;
223
+ }
224
+ }
225
+ };
226
+ const onDaySelect = (event, iso) => {
227
+ onSelect(event, { iso });
228
+ };
229
+ const onDayFocus = (event, day) => {
230
+ setFocusISO(day);
231
+ setTabIndexISO(day);
232
+ onFocus(event, { iso: day });
233
+ };
234
+ const onDayBlur = () => {
235
+ setFocusISO(null);
236
+ };
237
+ const { rangeStart, rangeEnd } = calculateRangeDisplay();
238
+ const isDayInRange = (iso) => {
239
+ if (!rangeStart || !rangeEnd) {
240
+ return false;
241
+ }
242
+ if (iso < rangeStart || iso > rangeEnd) {
243
+ return false;
244
+ }
245
+ return true;
246
+ };
247
+ const monthDates = [...Array(numMonths)].map((_, i) => getMonthDate(offset + i));
248
+ return React.createElement(
249
+ "div",
250
+ { className: "calendar", ref: containerRef },
251
+ navigable && React.createElement(
252
+ "div",
253
+ { className: "calendar__header" },
254
+ React.createElement(
255
+ "div",
256
+ { className: "calendar__header--inner" },
257
+ React.createElement(iconButton.EbayIconButton, { transparent: true, size: "small", icon: "chevronLeft24", disabled: disableBefore && getFirstVisibleISO() <= disableBefore, "aria-label": getA11yShowMonthText(monthTitle(getMonthDate(offset - 1))), onClick: () => prevMonth() }),
258
+ monthDates.map((monthDate, i) => React.createElement("h3", { key: i }, monthTitle(monthDate))),
259
+ React.createElement(iconButton.EbayIconButton, { transparent: true, size: "small", icon: "chevronRight24", disabled: disableAfter && getLastVisibleISO() >= disableAfter, "aria-label": getA11yShowMonthText(monthTitle(getMonthDate(offset + numMonths))), onClick: () => nextMonth() })
260
+ )
261
+ ),
262
+ React.createElement("div", { className: "calendar__body" }, monthDates.map((monthDate, i) => {
263
+ const numBlankDays = (monthDate.getUTCDay() - firstDayOfWeek + 7) % 7;
264
+ const year = monthDate.getUTCFullYear();
265
+ const month = monthDate.getUTCMonth();
266
+ const daysInMont = new Date(year, month + 1, 0).getDate();
267
+ const calendarRows = [...Array(Math.ceil((numBlankDays + daysInMont) / 7))];
268
+ return React.createElement(
269
+ "div",
270
+ { key: i, className: "calendar__month" },
271
+ React.createElement(
272
+ "table",
273
+ { onKeyDown },
274
+ React.createElement("caption", null, monthTitle(monthDate)),
275
+ React.createElement(
276
+ "thead",
277
+ null,
278
+ React.createElement("tr", null, weekdayLabels.map((dayName) => React.createElement("th", { key: dayName, scope: "col" }, dayName)))
279
+ ),
280
+ React.createElement("tbody", null, calendarRows.map((_, row) => {
281
+ let startDate = row * 7 - numBlankDays + 1;
282
+ let endDate = startDate + 6;
283
+ const columns = [];
284
+ if (row === 0 && numBlankDays !== 0) {
285
+ startDate = 1;
286
+ columns.push(React.createElement("td", { key: "pre-column", colSpan: numBlankDays }));
287
+ } else if (endDate > daysInMont) {
288
+ endDate = daysInMont;
289
+ }
290
+ for (let day = startDate; day <= endDate; day++) {
291
+ const dayISO = toISO(new Date(Date.UTC(year, month, day)));
292
+ const isToday = dayISO === todayISO;
293
+ const isSelected = Array.isArray(selected) ? selected.some((iso) => iso === dayISO) : selected === dayISO;
294
+ const isRangeStart = dayISO === rangeStart;
295
+ const isInRange = isDayInRange(dayISO);
296
+ const isRangeEnd = dayISO === rangeEnd;
297
+ const isDisabled = isDayDisabled(dayISO);
298
+ const a11yTexts = [
299
+ "",
300
+ isSelected && a11ySelectedText,
301
+ isRangeStart && a11yRangeStartText,
302
+ !isRangeStart && !isRangeEnd && isInRange && a11yInRangeText,
303
+ isRangeEnd && a11yRangeEndText,
304
+ !interactive && isToday && a11yTodayText,
305
+ !interactive && isDisabled && a11yDisabledText
306
+ ].filter((value) => typeof value !== "boolean" || value !== false);
307
+ const link = !interactive && !isDisabled && linkBuilder && linkBuilder(dayISO);
308
+ const NonInteractiveTag = link ? "a" : "span";
309
+ columns.push(React.createElement("td", { key: day, className: classNames({
310
+ "calendar__cell--selected": isSelected,
311
+ "calendar__range--start": isRangeStart,
312
+ "calendar__range": isInRange,
313
+ "calendar__range--end": isRangeEnd
314
+ }) }, interactive ? React.createElement("button", { disabled: isDisabled, "aria-label": a11yTexts.length > 1 ? `${day}${a11yTexts.join(a11ySeparator)}` : void 0, tabIndex: tabIndexISO !== dayISO ? -1 : void 0, "aria-current": isToday ? "date" : void 0, "aria-pressed": isSelected ? "true" : void 0, onClick: (event) => onDaySelect(event, dayISO), onFocus: (event) => onDayFocus(event, dayISO), onMouseOver: (event) => onDayFocus(event, dayISO), onMouseOut: (event) => onDayBlur(), onBlur: () => onDayBlur(), "data-iso": dayISO }, day) : React.createElement(
315
+ NonInteractiveTag,
316
+ { className: classNames({
317
+ "calendar__cell--disabled": isDisabled,
318
+ "calendar__cell--current": isToday
319
+ }), href: link },
320
+ day,
321
+ a11yTexts.length > 1 && React.createElement("span", { className: "clipped" }, a11yTexts.join(a11ySeparator))
322
+ )));
323
+ }
324
+ return React.createElement("tr", { key: row }, columns);
325
+ }))
326
+ )
327
+ );
328
+ }))
329
+ );
330
+ };
331
+ exports.EbayCalendar = EbayCalendar;
332
+ exports.dateArgToISO = dateArgToISO;
333
+ exports.toISO = toISO;
@@ -1 +1,10 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react"),d=e=>e.displayName||e.name||"Component",i=e=>{const r=a.forwardRef((t,o)=>a.createElement(e,{...t,forwardedRef:o}));return r.displayName=d(e),r};exports.withForwardRef=i;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const getDisplayName = (Component) => Component.displayName || Component.name || "Component";
5
+ const withForwardRef = (Component) => {
6
+ const ForwardRef = React.forwardRef((props, ref) => React.createElement(Component, { ...props, forwardedRef: ref }));
7
+ ForwardRef.displayName = getDisplayName(Component);
8
+ return ForwardRef;
9
+ };
10
+ exports.withForwardRef = withForwardRef;
@@ -1 +1,9 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./forwardRef/index.js"),e=require("./utils/index.js");exports.withForwardRef=o.withForwardRef;exports.excludeComponent=e.excludeComponent;exports.filterBy=e.filterBy;exports.filterByType=e.filterByType;exports.findComponent=e.findComponent;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const common_componentUtils_forwardRef = require("./forwardRef/index.js");
4
+ const common_componentUtils_utils = require("./utils/index.js");
5
+ exports.withForwardRef = common_componentUtils_forwardRef.withForwardRef;
6
+ exports.excludeComponent = common_componentUtils_utils.excludeComponent;
7
+ exports.filterBy = common_componentUtils_utils.filterBy;
8
+ exports.filterByType = common_componentUtils_utils.filterByType;
9
+ exports.findComponent = common_componentUtils_utils.findComponent;
@@ -1 +1,25 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react");require("../../../array.polyfill.flat-5BAolFdk.js");function i(e=[],t){return l.Children.toArray(e).find(({type:n})=>n===t)||null}function s(e=[],t){return l.Children.toArray(e).filter(({type:n})=>n!==t)}function u(e=[],t){const r=l.Children.toArray(e),n=[t].flat();return r.filter(({type:o})=>n.includes(o))}function c(e=[],t){return l.Children.toArray(e).filter(t)}exports.excludeComponent=s;exports.filterBy=c;exports.filterByType=u;exports.findComponent=i;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ require("../../../array.polyfill.flat-DyxysTxZ.js");
5
+ function findComponent(nodes = [], componentType) {
6
+ const elements = React.Children.toArray(nodes);
7
+ return elements.find(({ type }) => type === componentType) || null;
8
+ }
9
+ function excludeComponent(nodes = [], componentType) {
10
+ const elements = React.Children.toArray(nodes);
11
+ return elements.filter(({ type }) => type !== componentType);
12
+ }
13
+ function filterByType(nodes = [], componentType) {
14
+ const elements = React.Children.toArray(nodes);
15
+ const types = [componentType].flat();
16
+ return elements.filter(({ type }) => types.includes(type));
17
+ }
18
+ function filterBy(nodes = [], predicate) {
19
+ const elements = React.Children.toArray(nodes);
20
+ return elements.filter(predicate);
21
+ }
22
+ exports.excludeComponent = excludeComponent;
23
+ exports.filterBy = filterBy;
24
+ exports.filterByType = filterByType;
25
+ exports.findComponent = findComponent;
@@ -1 +1,113 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function r(n,e,t=()=>{}){n.includes(e.key)&&t()}function w(n,e,t=()=>{}){n.includes(e.key)||t()}function a(n,e){n.key==="Enter"&&e()}function s(n,e){d(n.key)&&e()}function d(n){return[" ","Enter"].includes(n)}function f(n,e){r(["Esc","Escape"],n,e)}function c(n,e){r(["Up","ArrowUp","Down","ArrowDown"],n,e)}function l(n,e){r(["Left","ArrowLeft","Right","ArrowRight"],n,e)}function u(n,e){w(["Esc","Left","Up","Right","Down","Tab","Enter","Shift","Control","Alt","CapsLock","Escape","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Meta"],n,e)}function h(n,e){e&&n.preventDefault()}const i=[];function y(n,e){i.length===0&&window.addEventListener("resize",o),i.push(e)}function E(n,e){i.length===1&&window.removeEventListener("resize",o),i.splice(i.indexOf(e),1)}function o(n){window.removeEventListener("resize",o);const e=()=>{i.length&&(i.forEach(t=>t(n)),window.addEventListener("resize",o))};window.requestAnimationFrame?window.requestAnimationFrame(e):window.setTimeout(e,16)}function p(n=()=>{},e){return t=>{if(n(t),!t.defaultPrevented)return e(t)}}exports.addEventListener=y;exports.handleActionKeydown=s;exports.handleEnterKeydown=a;exports.handleEscapeKeydown=f;exports.handleLeftRightArrowsKeydown=l;exports.handleResize=o;exports.handleTextInput=u;exports.handleUpDownArrowsKeydown=c;exports.isActionKey=d;exports.preventDefaultIfHijax=h;exports.removeEventListener=E;exports.wrapEvent=p;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function handleKeydown(keyList, e, callback = () => {
4
+ }) {
5
+ if (keyList.includes(e.key)) {
6
+ callback();
7
+ }
8
+ }
9
+ function handleNotKeydown(keyList, e, callback = () => {
10
+ }) {
11
+ if (!keyList.includes(e.key)) {
12
+ callback();
13
+ }
14
+ }
15
+ function handleEnterKeydown(e, callback) {
16
+ if (e.key === "Enter") {
17
+ callback();
18
+ }
19
+ }
20
+ function handleActionKeydown(e, callback) {
21
+ if (isActionKey(e.key)) {
22
+ callback();
23
+ }
24
+ }
25
+ function isActionKey(key) {
26
+ return [" ", "Enter"].includes(key);
27
+ }
28
+ function handleEscapeKeydown(e, callback) {
29
+ handleKeydown(["Esc", "Escape"], e, callback);
30
+ }
31
+ function handleUpDownArrowsKeydown(e, callback) {
32
+ handleKeydown(["Up", "ArrowUp", "Down", "ArrowDown"], e, callback);
33
+ }
34
+ function handleLeftRightArrowsKeydown(e, callback) {
35
+ handleKeydown(["Left", "ArrowLeft", "Right", "ArrowRight"], e, callback);
36
+ }
37
+ function handleTextInput(e, callback) {
38
+ const keyList = [
39
+ // Edge
40
+ "Esc",
41
+ "Left",
42
+ "Up",
43
+ "Right",
44
+ "Down",
45
+ // Browsers
46
+ "Tab",
47
+ "Enter",
48
+ "Shift",
49
+ "Control",
50
+ "Alt",
51
+ "CapsLock",
52
+ "Escape",
53
+ "ArrowLeft",
54
+ "ArrowUp",
55
+ "ArrowRight",
56
+ "ArrowDown",
57
+ "Meta"
58
+ ];
59
+ handleNotKeydown(keyList, e, callback);
60
+ }
61
+ function preventDefaultIfHijax(e, hijax) {
62
+ if (hijax) {
63
+ e.preventDefault();
64
+ }
65
+ }
66
+ const handlers = [];
67
+ function addEventListener(_, handler) {
68
+ if (handlers.length === 0) {
69
+ window.addEventListener("resize", handleResize);
70
+ }
71
+ handlers.push(handler);
72
+ }
73
+ function removeEventListener(_, handler) {
74
+ if (handlers.length === 1) {
75
+ window.removeEventListener("resize", handleResize);
76
+ }
77
+ handlers.splice(handlers.indexOf(handler), 1);
78
+ }
79
+ function handleResize(e) {
80
+ window.removeEventListener("resize", handleResize);
81
+ const callback = () => {
82
+ if (handlers.length) {
83
+ handlers.forEach((handler) => handler(e));
84
+ window.addEventListener("resize", handleResize);
85
+ }
86
+ };
87
+ if (window.requestAnimationFrame) {
88
+ window.requestAnimationFrame(callback);
89
+ } else {
90
+ window.setTimeout(callback, 16);
91
+ }
92
+ }
93
+ function wrapEvent(parentEventHandler = () => {
94
+ }, localEventHandler) {
95
+ return (e) => {
96
+ parentEventHandler(e);
97
+ if (!e.defaultPrevented) {
98
+ return localEventHandler(e);
99
+ }
100
+ };
101
+ }
102
+ exports.addEventListener = addEventListener;
103
+ exports.handleActionKeydown = handleActionKeydown;
104
+ exports.handleEnterKeydown = handleEnterKeydown;
105
+ exports.handleEscapeKeydown = handleEscapeKeydown;
106
+ exports.handleLeftRightArrowsKeydown = handleLeftRightArrowsKeydown;
107
+ exports.handleResize = handleResize;
108
+ exports.handleTextInput = handleTextInput;
109
+ exports.handleUpDownArrowsKeydown = handleUpDownArrowsKeydown;
110
+ exports.isActionKey = isActionKey;
111
+ exports.preventDefaultIfHijax = preventDefaultIfHijax;
112
+ exports.removeEventListener = removeEventListener;
113
+ exports.wrapEvent = wrapEvent;