@algolia/satellite 1.0.0-beta.128 → 1.0.0-beta.131

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 (79) hide show
  1. package/cjs/AutoComplete/components/AutoCompleteEmptyState.d.ts +2 -0
  2. package/cjs/Avatars/UserAvatar.js +14 -9
  3. package/cjs/Banner/Banner.d.ts +6 -3
  4. package/cjs/Banner/Banner.js +1 -1
  5. package/cjs/Banners/Alert/Alert.d.ts +6 -2
  6. package/cjs/Banners/Alert/Alert.js +1 -1
  7. package/cjs/Banners/Promote/Promote.d.ts +2 -2
  8. package/cjs/Banners/Promote/Promote.js +1 -1
  9. package/cjs/DatePicker/DatePicker/DatePicker.d.ts +7 -2
  10. package/cjs/DatePicker/DatePicker/DatePicker.js +12 -1
  11. package/cjs/DatePicker/DatePicker.tailwind.js +10 -2
  12. package/cjs/DatePicker/DateRangePicker/DateRangePicker.d.ts +7 -2
  13. package/cjs/DatePicker/DateRangePicker/DateRangePicker.js +18 -2
  14. package/cjs/DatePicker/components/Calendar.d.ts +8 -2
  15. package/cjs/DatePicker/components/Calendar.js +50 -3
  16. package/cjs/DatePicker/components/NavBar.d.ts +8 -1
  17. package/cjs/DatePicker/components/NavBar.js +50 -5
  18. package/cjs/Dropdown/DropdownButton.d.ts +1 -1
  19. package/cjs/EmptyState/types.d.ts +1 -1
  20. package/cjs/Input/Input.js +1 -1
  21. package/cjs/Input/Input.tailwind.js +0 -3
  22. package/cjs/Insert/Insert.d.ts +1 -0
  23. package/cjs/KeyboardKey/KeyboardKey.d.ts +6 -0
  24. package/cjs/KeyboardKey/KeyboardKey.js +50 -0
  25. package/cjs/KeyboardKey/KeyboardKey.tailwind.d.ts +5 -0
  26. package/cjs/KeyboardKey/KeyboardKey.tailwind.js +33 -0
  27. package/cjs/KeyboardKey/index.d.ts +2 -0
  28. package/cjs/KeyboardKey/index.js +26 -0
  29. package/cjs/Modal/Modal.js +24 -4
  30. package/cjs/ProgressSpinner/ProgressSpinner.js +4 -1
  31. package/cjs/RadioGroup/RadioGroup.js +1 -1
  32. package/cjs/Tag/Tag.d.ts +7 -3
  33. package/cjs/Tag/Tag.js +13 -11
  34. package/cjs/index.d.ts +1 -0
  35. package/cjs/index.js +14 -0
  36. package/cjs/styles/tailwind.config.js +1 -1
  37. package/cjs/utilities/utilities.tailwind.d.ts +2 -0
  38. package/cjs/utilities/utilities.tailwind.js +32 -0
  39. package/esm/AutoComplete/components/AutoCompleteEmptyState.d.ts +2 -0
  40. package/esm/Avatars/UserAvatar.js +15 -10
  41. package/esm/Banner/Banner.d.ts +6 -3
  42. package/esm/Banner/Banner.js +1 -1
  43. package/esm/Banners/Alert/Alert.d.ts +6 -2
  44. package/esm/Banners/Alert/Alert.js +1 -1
  45. package/esm/Banners/Promote/Promote.d.ts +2 -2
  46. package/esm/Banners/Promote/Promote.js +1 -1
  47. package/esm/DatePicker/DatePicker/DatePicker.d.ts +7 -2
  48. package/esm/DatePicker/DatePicker/DatePicker.js +13 -2
  49. package/esm/DatePicker/DatePicker.tailwind.js +10 -2
  50. package/esm/DatePicker/DateRangePicker/DateRangePicker.d.ts +7 -2
  51. package/esm/DatePicker/DateRangePicker/DateRangePicker.js +17 -3
  52. package/esm/DatePicker/components/Calendar.d.ts +8 -2
  53. package/esm/DatePicker/components/Calendar.js +43 -3
  54. package/esm/DatePicker/components/NavBar.d.ts +8 -1
  55. package/esm/DatePicker/components/NavBar.js +41 -5
  56. package/esm/Dropdown/DropdownButton.d.ts +1 -1
  57. package/esm/EmptyState/types.d.ts +1 -1
  58. package/esm/Input/Input.js +1 -1
  59. package/esm/Input/Input.tailwind.js +0 -3
  60. package/esm/Insert/Insert.d.ts +1 -0
  61. package/esm/KeyboardKey/KeyboardKey.d.ts +6 -0
  62. package/esm/KeyboardKey/KeyboardKey.js +28 -0
  63. package/esm/KeyboardKey/KeyboardKey.tailwind.d.ts +5 -0
  64. package/esm/KeyboardKey/KeyboardKey.tailwind.js +31 -0
  65. package/esm/KeyboardKey/index.d.ts +2 -0
  66. package/esm/KeyboardKey/index.js +2 -0
  67. package/esm/Modal/Modal.js +23 -5
  68. package/esm/ProgressSpinner/ProgressSpinner.js +4 -1
  69. package/esm/RadioGroup/RadioGroup.js +1 -1
  70. package/esm/Tag/Tag.d.ts +7 -3
  71. package/esm/Tag/Tag.js +13 -11
  72. package/esm/index.d.ts +1 -0
  73. package/esm/index.js +1 -0
  74. package/esm/styles/tailwind.config.js +1 -1
  75. package/esm/utilities/utilities.tailwind.d.ts +2 -0
  76. package/esm/utilities/utilities.tailwind.js +27 -0
  77. package/package.json +12 -7
  78. package/satellite.css +47 -6
  79. package/satellite.min.css +1 -1
@@ -4,7 +4,9 @@ import { MedallionVariant } from "../../Medallion";
4
4
  export interface AutoCompleteEmptyStateProps {
5
5
  icon?: IconComponentType;
6
6
  variant?: MedallionVariant;
7
+ /** Descriptive title for state */
7
8
  title: React.ReactNode;
9
+ /** Optional description to explain why the screen is empty or define next steps */
8
10
  description?: React.ReactNode;
9
11
  }
10
12
  export declare const AutoCompleteEmptyState: ({ icon, variant, title, description, }: AutoCompleteEmptyStateProps) => JSX.Element;
@@ -21,7 +21,7 @@ var _satellitePrefixer = _interopRequireDefault(require("../styles/helpers/satel
21
21
 
22
22
  var _utils = require("./utils");
23
23
 
24
- var _templateObject, _templateObject2;
24
+ var _templateObject, _templateObject2, _templateObject3;
25
25
 
26
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
27
 
@@ -38,23 +38,28 @@ var UserAvatar = function UserAvatar(_ref) {
38
38
 
39
39
  var _useState = (0, _react.useState)(false),
40
40
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
41
- failedToLoadAvatar = _useState2[0],
42
- setFailedToLoadAvatar = _useState2[1];
41
+ imageLoaded = _useState2[0],
42
+ setImageLoaded = _useState2[1];
43
43
 
44
44
  var initials = (0, _utils.getUserInitials)(user);
45
- var hasValidAvatar = user.avatar && !failedToLoadAvatar;
45
+ (0, _react.useEffect)(function () {
46
+ return setImageLoaded(false);
47
+ }, [user.avatar]);
46
48
  return /*#__PURE__*/_react["default"].createElement("div", {
47
- className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["relative overflow-hidden flex justify-center items-center rounded-full text-white uppercase"]))), !hasValidAvatar && (0, _utils.getUserBackgroundClassName)((_user$email = user.email) !== null && _user$email !== void 0 ? _user$email : "no-email"), className),
49
+ className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["relative overflow-hidden flex justify-center items-center rounded-full text-white uppercase transition-colors"]))), imageLoaded ? (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["bg-white"]))) : (0, _utils.getUserBackgroundClassName)((_user$email = user.email) !== null && _user$email !== void 0 ? _user$email : "no-email"), className),
48
50
  style: {
49
51
  width: size,
50
52
  height: size
51
53
  }
52
- }, /*#__PURE__*/_react["default"].createElement("span", null, initials), hasValidAvatar && /*#__PURE__*/_react["default"].createElement("img", {
53
- className: (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["w-full absolute top-0 left-0"]))),
54
+ }, /*#__PURE__*/_react["default"].createElement("span", null, initials), /*#__PURE__*/_react["default"].createElement("img", {
55
+ className: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n w-full absolute top-0 left-0\n transition-opacity ", "\n "])), imageLoaded ? "opacity-100" : "opacity-0"),
54
56
  src: user.avatar,
55
- alt: "".concat(user.name || user.email, "'s avatar"),
57
+ alt: imageLoaded ? "".concat(user.name || user.email, "'s avatar") : "",
58
+ onLoad: function onLoad() {
59
+ return setImageLoaded(true);
60
+ },
56
61
  onError: function onError() {
57
- return setFailedToLoadAvatar(true);
62
+ return setImageLoaded(false);
58
63
  }
59
64
  }));
60
65
  };
@@ -14,14 +14,17 @@ export interface BannerPropsBase {
14
14
  export interface BannerPageProps extends BannerPropsBase {
15
15
  /**
16
16
  * Usage context description
17
- * @default content
17
+ * @default page
18
18
  */
19
19
  usageContext?: "page";
20
20
  }
21
21
  export interface BannerDefaultProps extends BannerPropsBase {
22
- /** Usage context description */
22
+ /**
23
+ * Usage context description
24
+ * @default content
25
+ */
23
26
  usageContext?: "inline" | "content" | "section";
24
- /** Notification title */
27
+ /** Descriptive title for the `Banner` */
25
28
  title?: React.ReactNode;
26
29
  }
27
30
  export declare type BannerProps = BannerPageProps | BannerDefaultProps;
@@ -155,7 +155,7 @@ var Banner = function Banner(props) {
155
155
  }, children)), onDismiss && /*#__PURE__*/_react["default"].createElement("span", {
156
156
  className: (0, _satellitePrefixer["default"])(_templateObject36 || (_templateObject36 = (0, _taggedTemplateLiteral2["default"])(["absolute top-2 right-2"])))
157
157
  }, /*#__PURE__*/_react["default"].createElement(_Button.IconButton, {
158
- title: "Close banner",
158
+ title: "Close",
159
159
  variant: "subtle",
160
160
  size: "small",
161
161
  icon: _reactFeather.X,
@@ -1,16 +1,20 @@
1
1
  import React, { FunctionComponent } from "react";
2
2
  import { ColorVariant, IconComponentType } from "../../types";
3
3
  export declare type AlertContextType = "page" | "section";
4
- declare type AlertColorVariant = Exclude<ColorVariant, "blue">;
4
+ export declare type AlertColorVariant = Exclude<ColorVariant, "blue">;
5
5
  export interface AlertProps {
6
6
  /** @ignore */
7
7
  className?: string;
8
8
  /** @ignore */
9
9
  style?: React.CSSProperties;
10
+ /** Descriptive title for `Alert` */
10
11
  title?: React.ReactNode;
11
12
  /** @default grey */
12
13
  variant?: AlertColorVariant;
13
- /** @default section */
14
+ /**
15
+ * Usage context description
16
+ * @default section
17
+ */
14
18
  usageContext?: AlertContextType;
15
19
  icon?: IconComponentType;
16
20
  onDismiss?(): void;
@@ -129,7 +129,7 @@ var Alert = function Alert(_ref) {
129
129
  className: (0, _satellitePrefixer["default"])(_templateObject23 || (_templateObject23 = (0, _taggedTemplateLiteral2["default"])(["absolute top-2 right-2"])))
130
130
  }, /*#__PURE__*/_react["default"].createElement(_Button.IconButton, {
131
131
  icon: _reactFeather.X,
132
- title: "Close banner",
132
+ title: "Close",
133
133
  variant: "subtle",
134
134
  size: "small",
135
135
  onClick: function onClick(evt) {
@@ -10,9 +10,9 @@ interface WidePromoteProps {
10
10
  illustration?: React.ReactNode;
11
11
  }
12
12
  export declare type PromoteProps = {
13
- /** Product context for the banner (either a string or a React component) */
13
+ /** Product context for the banner */
14
14
  context?: React.ReactNode;
15
- /** Descriptive title for banner (either a string or a React component) */
15
+ /** Descriptive title for banner */
16
16
  title: React.ReactNode;
17
17
  /** Buttons */
18
18
  actions?: React.ReactNode;
@@ -98,7 +98,7 @@ var Promote = function Promote(_ref) {
98
98
  className: (0, _satellitePrefixer["default"])(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["absolute top-2 right-2"])))
99
99
  }, /*#__PURE__*/_react["default"].createElement(_Button.IconButton, {
100
100
  icon: _reactFeather.X,
101
- title: "Close banner",
101
+ title: "Close",
102
102
  variant: "subtle",
103
103
  size: "small",
104
104
  onClick: function onClick(evt) {
@@ -16,7 +16,7 @@ interface RenderTargetParams {
16
16
  toggle: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
17
17
  isOpen: boolean;
18
18
  }
19
- export interface DatePickerProps {
19
+ export declare type DatePickerProps = {
20
20
  calendarProps?: Pick<CalendarProps, "fromMonth" | "toMonth" | "disabledDays">;
21
21
  onOpen?: DisplayProps["onClick"];
22
22
  onChange?: (value: Date | null) => void;
@@ -30,6 +30,11 @@ export interface DatePickerProps {
30
30
  initialValue?: Date | null;
31
31
  buttonSize?: DisplayProps["size"];
32
32
  modalPlacement?: ModalProps["placement"];
33
- }
33
+ } & ({
34
+ editableYear?: false;
35
+ } | {
36
+ editableYear: true;
37
+ years?: number[];
38
+ });
34
39
  declare const DatePicker: FunctionComponent<DatePickerProps>;
35
40
  export default DatePicker;
@@ -103,6 +103,17 @@ var DatePicker = function DatePicker(props) {
103
103
  }
104
104
  };
105
105
 
106
+ var yearProps = (0, _react.useMemo)(function () {
107
+ var _state$selected;
108
+
109
+ return props.editableYear ? {
110
+ editableYear: true,
111
+ initialDate: (_state$selected = state.selected) !== null && _state$selected !== void 0 ? _state$selected : undefined,
112
+ years: props.years
113
+ } : {
114
+ editableYear: false
115
+ };
116
+ }, [props]);
106
117
  return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("span", {
107
118
  ref: setTargetElement,
108
119
  className: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["inline-block"])))
@@ -134,7 +145,7 @@ var DatePicker = function DatePicker(props) {
134
145
  }, (_props$calendarProps = props === null || props === void 0 ? void 0 : props.calendarProps) !== null && _props$calendarProps !== void 0 ? _props$calendarProps : {}, {
135
146
  selectedDays: value !== null && value !== void 0 ? value : undefined,
136
147
  onDayClick: handleDayClick
137
- })), /*#__PURE__*/_react["default"].createElement(_Footer["default"], null, props.renderLeftFooter && /*#__PURE__*/_react["default"].createElement("div", null, props.renderLeftFooter({
148
+ }, yearProps)), /*#__PURE__*/_react["default"].createElement(_Footer["default"], null, props.renderLeftFooter && /*#__PURE__*/_react["default"].createElement("div", null, props.renderLeftFooter({
138
149
  state: state,
139
150
  dispatch: dispatch
140
151
  })), !props.renderRightPanel && /*#__PURE__*/_react["default"].createElement(_FooterActions["default"], {
@@ -28,8 +28,16 @@ var datePickerPlugin = function datePickerPlugin(_ref) {
28
28
  };
29
29
 
30
30
  addComponents((_addComponents = {
31
- ".DayPicker-Caption": {
32
- textAlign: "center"
31
+ ".DayPicker-Year": {
32
+ // ChevronDown svg from react-feather,
33
+ backgroundImage: 'url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>\')',
34
+ backgroundRepeat: "no-repeat",
35
+ backgroundPositionX: "100%",
36
+ backgroundPositionY: "5px",
37
+ paddingRight: "1rem"
38
+ },
39
+ ".DayPicker-Month": {
40
+ marginTop: "0rem"
33
41
  }
34
42
  }, (0, _defineProperty2["default"])(_addComponents, prefix(".date-picker, .date-range-picker"), {
35
43
  "& .DayPicker-Months": {
@@ -16,7 +16,7 @@ interface RenderTargetParams {
16
16
  toggle: () => void;
17
17
  isOpen: boolean;
18
18
  }
19
- export interface DateRangePickerProps {
19
+ export declare type DateRangePickerProps = {
20
20
  id?: string;
21
21
  range: DateRangePickerTimeRange | null;
22
22
  displayOnlyRanges?: DateRangePickerTimeRange[];
@@ -30,6 +30,11 @@ export interface DateRangePickerProps {
30
30
  renderRightPanel?: (args: RightSidePanelComponentArgs) => React.ReactNode;
31
31
  buttonSize?: DateRangePickerDisplayProps["buttonSize"];
32
32
  modalPlacement?: ModalProps["placement"];
33
- }
33
+ } & ({
34
+ editableYear?: false;
35
+ } | {
36
+ editableYear: true;
37
+ years?: number[];
38
+ });
34
39
  declare const DateRangePicker: FunctionComponent<DateRangePickerProps>;
35
40
  export default DateRangePicker;
@@ -15,6 +15,8 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
15
15
 
16
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
17
 
18
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
19
+
18
20
  var _react = _interopRequireWildcard(require("react"));
19
21
 
20
22
  var _satellitePrefixer = _interopRequireDefault(require("../../styles/helpers/satellitePrefixer"));
@@ -37,6 +39,8 @@ var _dateRangePickerTimeRange = require("./dateRangePickerTimeRange");
37
39
 
38
40
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
39
41
 
42
+ var _excluded = ["id", "range", "displayOnlyRanges", "calendarProps", "initialState", "stateReducer", "onAction", "validate", "renderTarget", "renderLeftFooter", "renderRightPanel", "buttonSize", "modalPlacement"];
43
+
40
44
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
41
45
 
42
46
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -65,7 +69,8 @@ var DateRangePicker = function DateRangePicker(_ref2) {
65
69
  renderLeftFooter = _ref2.renderLeftFooter,
66
70
  renderRightPanel = _ref2.renderRightPanel,
67
71
  buttonSize = _ref2.buttonSize,
68
- modalPlacement = _ref2.modalPlacement;
72
+ modalPlacement = _ref2.modalPlacement,
73
+ props = (0, _objectWithoutProperties2["default"])(_ref2, _excluded);
69
74
 
70
75
  var _useState = (0, _react.useState)(null),
71
76
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -173,6 +178,17 @@ var DateRangePicker = function DateRangePicker(_ref2) {
173
178
  }),
174
179
  hoveredTo: (_state$hovered = state.hovered) !== null && _state$hovered !== void 0 ? _state$hovered : undefined
175
180
  };
181
+ var yearProps = (0, _react.useMemo)(function () {
182
+ var _ref3, _displayedRange$start3;
183
+
184
+ return props.editableYear ? {
185
+ editableYear: true,
186
+ initialDate: (_ref3 = (_displayedRange$start3 = displayedRange.start) !== null && _displayedRange$start3 !== void 0 ? _displayedRange$start3 : displayedRange.end) !== null && _ref3 !== void 0 ? _ref3 : undefined,
187
+ years: props.years
188
+ } : {
189
+ editableYear: false
190
+ };
191
+ }, [props, displayedRange]);
176
192
  return /*#__PURE__*/_react["default"].createElement("div", {
177
193
  className: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["date-range-picker"])))
178
194
  }, /*#__PURE__*/_react["default"].createElement("span", {
@@ -212,7 +228,7 @@ var DateRangePicker = function DateRangePicker(_ref2) {
212
228
  onDayClick: handleDayClick,
213
229
  onDayMouseEnter: handleMouseEnter,
214
230
  onDayMouseLeave: handleMouseLeave
215
- })), /*#__PURE__*/_react["default"].createElement(_Footer["default"], null, renderLeftFooter && /*#__PURE__*/_react["default"].createElement("div", null, renderLeftFooter({
231
+ }, yearProps)), /*#__PURE__*/_react["default"].createElement(_Footer["default"], null, renderLeftFooter && /*#__PURE__*/_react["default"].createElement("div", null, renderLeftFooter({
216
232
  state: state,
217
233
  dispatch: dispatch
218
234
  })), !renderRightPanel && /*#__PURE__*/_react["default"].createElement(_FooterActions["default"], {
@@ -1,7 +1,13 @@
1
1
  import { FunctionComponent } from "react";
2
2
  import { DayPickerProps } from "react-day-picker";
3
3
  declare type ExcludedDayPickerProps = "captionElement" | "showOutsideDays" | "enableOutsideDaysClick" | "fixedWeeks" | "labels" | "navbarElement" | "onTodayButtonClick" | "pagedNavigation" | "renderDay" | "renderWeek" | "reverseMonths" | "showWeekNumbers" | "showWeekDays" | "todayButton" | "weekdayElement" | "weekdaysLong" | "weekdaysShort";
4
- export interface CalendarProps extends Omit<DayPickerProps, ExcludedDayPickerProps> {
5
- }
4
+ export declare type EditableYearProps = {
5
+ editableYear?: false;
6
+ } | {
7
+ editableYear: true;
8
+ years?: number[];
9
+ initialDate?: Date;
10
+ };
11
+ export declare type CalendarProps = Omit<DayPickerProps, ExcludedDayPickerProps> & EditableYearProps;
6
12
  declare const Calendar: FunctionComponent<CalendarProps>;
7
13
  export default Calendar;
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -11,28 +13,73 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
13
 
12
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
15
 
14
- var _react = _interopRequireDefault(require("react"));
16
+ var _react = _interopRequireWildcard(require("react"));
15
17
 
16
18
  var _reactDayPicker = _interopRequireDefault(require("react-day-picker"));
17
19
 
20
+ var _dateFns = require("date-fns");
21
+
18
22
  var _NavBar = _interopRequireDefault(require("./NavBar"));
19
23
 
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
20
28
  var excludedDayPickerPropsList = ["captionElement", "showOutsideDays", "enableOutsideDaysClick", "fixedWeeks", "labels", "navbarElement", "onTodayButtonClick", "pagedNavigation", "renderDay", "renderWeek", "reverseMonths", "showWeekNumbers", "showWeekDays", "todayButton", "weekdayElement", "weekdaysLong", "weekdaysShort"];
21
29
 
22
30
  var Calendar = function Calendar(props) {
31
+ var initialDate = (0, _react.useMemo)(function () {
32
+ return props.editableYear && props.initialDate ? props.initialDate : new Date();
33
+ }, [props]);
34
+
35
+ var _useState = (0, _react.useState)(initialDate),
36
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
37
+ month = _useState2[0],
38
+ setMonth = _useState2[1];
39
+
40
+ var years = (0, _react.useMemo)(function () {
41
+ if (!props.editableYear) return [];
42
+ if (props.years) return props.years;
43
+ return (0, _dateFns.eachYearOfInterval)({
44
+ start: (0, _dateFns.add)(initialDate, {
45
+ years: -5
46
+ }),
47
+ end: (0, _dateFns.add)(initialDate, {
48
+ years: 10
49
+ })
50
+ }).map(_dateFns.getYear);
51
+ }, [props, initialDate]);
52
+ var onYearChange = (0, _react.useCallback)(function (year) {
53
+ return setMonth((0, _dateFns.setYear)(month, year));
54
+ }, [month]);
23
55
  var curatedProps = Object.fromEntries(Object.entries(props).filter(function (_ref) {
24
56
  var _ref2 = (0, _slicedToArray2["default"])(_ref, 1),
25
57
  key = _ref2[0];
26
58
 
27
- return (// @ts-ignore
59
+ return (// @ts-expect-error
28
60
  !excludedDayPickerPropsList.includes(key)
29
61
  );
30
62
  }));
63
+ var yearsProps = (0, _react.useMemo)(function () {
64
+ return props.editableYear ? {
65
+ editableYear: true,
66
+ years: years,
67
+ onYearChange: onYearChange
68
+ } : {
69
+ editableYear: false
70
+ };
71
+ }, [onYearChange, props, years]);
31
72
  return /*#__PURE__*/_react["default"].createElement(_reactDayPicker["default"], (0, _extends2["default"])({}, curatedProps, {
73
+ month: props.editableYear ? month : undefined,
32
74
  showOutsideDays: false,
33
75
  enableOutsideDaysClick: false,
34
76
  fixedWeeks: false,
35
- navbarElement: _NavBar["default"]
77
+ navbarElement: function navbarElement(navBarProps) {
78
+ return /*#__PURE__*/_react["default"].createElement(_NavBar["default"], (0, _extends2["default"])({}, navBarProps, yearsProps));
79
+ },
80
+ captionElement: function captionElement() {
81
+ return null;
82
+ }
36
83
  }));
37
84
  };
38
85
 
@@ -1,5 +1,12 @@
1
1
  import { FunctionComponent } from "react";
2
2
  import { NavbarElementProps } from "react-day-picker";
3
- export declare type NavBarProps = NavbarElementProps;
3
+ export declare type NavBarYearProps = {
4
+ editableYear?: false;
5
+ } | {
6
+ editableYear: true;
7
+ years: number[];
8
+ onYearChange: (year: number) => void;
9
+ };
10
+ export declare type NavBarProps = NavbarElementProps & NavBarYearProps;
4
11
  declare const NavBar: FunctionComponent<NavBarProps>;
5
12
  export default NavBar;
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -9,7 +11,13 @@ exports["default"] = void 0;
9
11
 
10
12
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
13
 
12
- var _react = _interopRequireDefault(require("react"));
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
16
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
+
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
13
21
 
14
22
  var _reactFeather = require("react-feather");
15
23
 
@@ -17,15 +25,37 @@ var _satellitePrefixer = _interopRequireDefault(require("../../styles/helpers/sa
17
25
 
18
26
  var _Button = require("../../Button");
19
27
 
20
- var _templateObject;
28
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
29
+
30
+ var _excluded = ["onPreviousClick", "onNextClick", "showPreviousButton", "showNextButton", "month", "localeUtils"];
31
+
32
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
+
34
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
35
 
22
36
  var NavBar = function NavBar(_ref) {
23
37
  var onPreviousClick = _ref.onPreviousClick,
24
38
  onNextClick = _ref.onNextClick,
25
39
  showPreviousButton = _ref.showPreviousButton,
26
- showNextButton = _ref.showNextButton;
40
+ showNextButton = _ref.showNextButton,
41
+ month = _ref.month,
42
+ localeUtils = _ref.localeUtils,
43
+ props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
44
+ var years = (0, _react.useMemo)(function () {
45
+ if (!props.editableYear) return [];
46
+ var monthYear = month.getFullYear(); // year of the currently shown month
47
+
48
+ if (props.years.includes(monthYear)) return props.years;
49
+ var minYear = Math.min.apply(Math, (0, _toConsumableArray2["default"])(props.years).concat([monthYear]));
50
+ var maxYear = Math.max.apply(Math, (0, _toConsumableArray2["default"])(props.years).concat([monthYear]));
51
+ return Array.from({
52
+ length: maxYear - minYear + 1
53
+ }, function (_, i) {
54
+ return i + minYear;
55
+ });
56
+ }, [props, month]);
27
57
  return /*#__PURE__*/_react["default"].createElement("div", {
28
- className: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["w-full absolute top-3 left-0 px-5 pb-0 flex justify-between"])))
58
+ className: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["w-full top-3 left-0 pt-5 px-5 pb-2 flex justify-between"])))
29
59
  }, /*#__PURE__*/_react["default"].createElement(_Button.IconButton, {
30
60
  icon: _reactFeather.ChevronLeft,
31
61
  title: "Previous month",
@@ -33,7 +63,22 @@ var NavBar = function NavBar(_ref) {
33
63
  return onPreviousClick();
34
64
  },
35
65
  disabled: !showPreviousButton
36
- }), /*#__PURE__*/_react["default"].createElement(_Button.IconButton, {
66
+ }), /*#__PURE__*/_react["default"].createElement("div", {
67
+ className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["flex items-center text-center"]))))
68
+ }, /*#__PURE__*/_react["default"].createElement("div", {
69
+ className: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["font-medium text-md"])))
70
+ }, localeUtils.getMonths()[month.getMonth()], " ", props.editableYear ? /*#__PURE__*/_react["default"].createElement("select", {
71
+ className: (0, _classnames["default"])("DayPicker-Year", (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["pl-0.5 font-medium outline-none border-transparent border-2 rounded focus:border-nebula-600 focus:shadow-z100 appearance-none"])))),
72
+ value: month.getFullYear(),
73
+ onChange: function onChange(e) {
74
+ return props.onYearChange(parseInt(e.currentTarget.value));
75
+ }
76
+ }, years.map(function (year) {
77
+ return /*#__PURE__*/_react["default"].createElement("option", {
78
+ key: year,
79
+ value: year
80
+ }, year);
81
+ })) : month.getFullYear())), /*#__PURE__*/_react["default"].createElement(_Button.IconButton, {
37
82
  icon: _reactFeather.ChevronRight,
38
83
  title: "Next month",
39
84
  onClick: function onClick() {
@@ -2,7 +2,7 @@ import React, { FunctionComponent } from "react";
2
2
  import { ButtonProps } from "../Button";
3
3
  import { RenderTargetParams } from "./Dropdown";
4
4
  export interface DropdownButtonProps extends Omit<ButtonProps<"button">, "title" | "endIcon"> {
5
- /** Title displayed in the `Dropdown` */
5
+ /** Descriptive title for `Dropdown` */
6
6
  title: React.ReactNode;
7
7
  renderFooter?: (args: RenderTargetParams) => React.ReactNode;
8
8
  }
@@ -3,7 +3,7 @@ import { FlexGridDirection } from "../FlexGrid";
3
3
  export declare type EmptyStateUsageContexts = "result" | "feature" | "page";
4
4
  export declare type EmptyStateWidths = "medium" | "large" | "xlarge";
5
5
  export interface EmptyStatePropsAll {
6
- /** Descriptive title for the state (either a string or a React component) */
6
+ /** Descriptive title for the state */
7
7
  title: React.ReactNode;
8
8
  /** Optional description to explain why the screen is empty or define next steps */
9
9
  description?: React.ReactNode;
@@ -129,7 +129,7 @@ var Input = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, externalRef) {
129
129
  var StatusIcon = status === "invalid" ? InvalidIcon : status === "validated" ? ValidatedIcon : _react["default"].Fragment;
130
130
  var clearable = typeof clearableProp === "boolean" ? clearableProp : type === "search";
131
131
  return /*#__PURE__*/_react["default"].createElement("div", {
132
- className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n input group\n ", "\n ", "\n "])), focused && "input-focused", disabled && "input-disabled"), VARIANT_CLASSNAMES[variant], STATUS_CLASSNAMES[status], className),
132
+ className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n input no-search-input-decoration group\n ", "\n ", "\n "])), focused && "input-focused", disabled && "input-disabled"), VARIANT_CLASSNAMES[variant], STATUS_CLASSNAMES[status], className),
133
133
  style: style,
134
134
  onClick: function onClick() {
135
135
  var _inputRef$current;
@@ -39,9 +39,6 @@ var inputPlugin = function inputPlugin(_ref) {
39
39
  "-webkit-appearance": "none",
40
40
  margin: 0
41
41
  },
42
- '&[type="search"]::-webkit-search-decoration, &[type="search"]::-webkit-search-cancel-button, &[type="search"]::-webkit-search-results-button, &[type="search"]::-webkit-search-results-decoration': {
43
- "-webkit-appearance": "none"
44
- },
45
42
  "&:focus": {
46
43
  outline: "none"
47
44
  },
@@ -5,6 +5,7 @@ declare type InsertContext = {
5
5
  variant?: BadgeVariants;
6
6
  };
7
7
  export interface InsertProps {
8
+ /** Descriptive title for the `Insert` */
8
9
  title: React.ReactNode;
9
10
  contexts?: Array<string | InsertContext>;
10
11
  }
@@ -0,0 +1,6 @@
1
+ import { FC } from "react";
2
+ export interface KeyboardKeyProps {
3
+ className?: string;
4
+ value: string;
5
+ }
6
+ export declare const KeyboardKey: FC<KeyboardKeyProps>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.KeyboardKey = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _reactFeather = require("react-feather");
17
+
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
20
+ var _satellitePrefixer = _interopRequireDefault(require("../styles/helpers/satellitePrefixer"));
21
+
22
+ var _templateObject;
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ var KEY_MAPPINGS = {
29
+ up: _reactFeather.ArrowUp,
30
+ down: _reactFeather.ArrowDown,
31
+ left: _reactFeather.ArrowLeft,
32
+ right: _reactFeather.ArrowRight,
33
+ enter: _reactFeather.CornerDownLeft,
34
+ escape: "esc"
35
+ };
36
+
37
+ var KeyboardKey = function KeyboardKey(_ref) {
38
+ var className = _ref.className,
39
+ value = _ref.value;
40
+ var mappedValue = !KEY_MAPPINGS[value] ? value : typeof KEY_MAPPINGS[value] === "string" ? KEY_MAPPINGS[value] : /*#__PURE__*/(0, _react.createElement)(KEY_MAPPINGS[value], {
41
+ "aria-label": value,
42
+ width: "1em",
43
+ height: "1em"
44
+ });
45
+ return /*#__PURE__*/_react["default"].createElement("kbd", {
46
+ className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["keyboard-key "]))), className)
47
+ }, mappedValue);
48
+ };
49
+
50
+ exports.KeyboardKey = KeyboardKey;
@@ -0,0 +1,5 @@
1
+ export = keyboardKeyPlugin;
2
+ /**
3
+ * @type {import('../tailwind-types').TailwindPlugin}
4
+ */
5
+ declare const keyboardKeyPlugin: import('../tailwind-types').TailwindPlugin;