@skedulo/sked-ui 19.19.1 → 19.21.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.
@@ -6,6 +6,7 @@ interface IconButtonProps {
6
6
  icon: IconNames;
7
7
  tooltipContent: ITooltipProps['content'];
8
8
  tooltipDelay?: ITooltipProps['delayShow'];
9
+ disableTooltip?: boolean;
9
10
  }
10
11
  export declare type IIconButton = IconButtonProps & Partial<IButtonProps>;
11
12
  export declare const IconButton: React.FC<IIconButton>;
@@ -1,6 +1,7 @@
1
1
  import { RangeType } from './elements/RangePicker';
2
2
  export declare type DateDirection = 'forward' | 'backward';
3
+ export declare type DateFormat = 'MonthDayYear' | 'DayMonthYear';
3
4
  export declare const moveDate: (selected: Date, days: RangeType, direction: DateDirection) => Date;
4
5
  export declare const endOfPeriod: (selected: Date, selectedRange: RangeType) => Date;
5
- export declare const formatLongDate: (date: Date) => string;
6
- export declare const formatShortDate: (date: Date) => string;
6
+ export declare const formatLongDate: (date: Date, dateFormat?: DateFormat) => string;
7
+ export declare const formatShortDate: (date: Date, dateFormat?: DateFormat) => string;
@@ -13,7 +13,7 @@ export interface IBaseCalendarControlProps extends ValidationProps {
13
13
  */
14
14
  selected?: Date;
15
15
  }
16
- export interface ICalendarControlProps extends React.HTMLAttributes<HTMLDivElement>, IDateSelectorProps, INavigationButtonProps, IRangeProps {
16
+ export interface ICalendarControlProps extends React.HTMLAttributes<HTMLDivElement>, IBaseCalendarControlProps, IDateSelectorProps, INavigationButtonProps, IRangeProps {
17
17
  /**
18
18
  * Whenever the user clicks the `Today` button this callback is triggered
19
19
  */
@@ -23,7 +23,7 @@ export declare function useCalendarControlsContext(): ICalendarControlProps;
23
23
  declare function CalendarControls(props: ICalendarControlProps): JSX.Element;
24
24
  declare namespace CalendarControls {
25
25
  var TodayButton: React.FC<import("./elements/TodayButton").ITodayButtonProps>;
26
- var NavigationButtons: React.FC<INavigationButtonProps>;
26
+ var NavigationButtons: (props: INavigationButtonProps) => JSX.Element;
27
27
  var DateSelector: React.FC<IDateSelectorProps>;
28
28
  var RangePicker: React.FC<IRangeProps>;
29
29
  }
@@ -1,12 +1,22 @@
1
1
  import React, { HTMLAttributes } from 'react';
2
+ import { ReactDatePickerProps } from 'react-datepicker';
2
3
  import { ButtonTypes } from '../../..';
3
4
  import { IBaseCalendarControlProps } from '../CalendarControls';
5
+ import { DateFormat } from '../CalendarControls-utils';
4
6
  export declare type SelectDateHandler = (date: Date) => void;
5
7
  export interface IBaseDateSelectorProps extends IBaseCalendarControlProps {
6
8
  /**
7
9
  * Whenever the date is changed, either through direct select, clicking to or navigating, the new date is provided to this function
8
10
  */
9
11
  onDateSelect?: SelectDateHandler;
12
+ /**
13
+ * Minimum date allowed to be selected. This will also affect the month navigation
14
+ */
15
+ minDate?: ReactDatePickerProps['minDate'];
16
+ /**
17
+ * Latest date allowed to be selected. This will also affect the month navigation
18
+ */
19
+ maxDate?: ReactDatePickerProps['maxDate'];
10
20
  }
11
21
  export interface IDateSelectorProps extends IBaseDateSelectorProps, HTMLAttributes<HTMLDivElement> {
12
22
  /**
@@ -29,5 +39,9 @@ export interface IDateSelectorProps extends IBaseDateSelectorProps, HTMLAttribut
29
39
  * The type of Datepicker custom input button to be displayed. Primary | Secondary | Transparent
30
40
  */
31
41
  buttonType?: ButtonTypes;
42
+ /**
43
+ * User preferred date format
44
+ */
45
+ dateFormat?: DateFormat;
32
46
  }
33
47
  export declare const DateSelector: React.FC<IDateSelectorProps>;
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
1
  import { IBaseDateSelectorProps } from './DateSelector';
3
2
  export interface INavigationButtonProps extends IBaseDateSelectorProps {
3
+ hideTooltipIfDisabled?: boolean;
4
4
  }
5
- export declare const NavigationButtons: React.FC<INavigationButtonProps>;
5
+ export declare const NavigationButtons: (props: INavigationButtonProps) => JSX.Element;
package/dist/index.js CHANGED
@@ -14344,17 +14344,24 @@ var IconButton = function IconButton(_ref) {
14344
14344
  buttonType = _ref.buttonType,
14345
14345
  className = _ref.className,
14346
14346
  tooltipDelay = _ref.tooltipDelay,
14347
- otherProps = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_ref, ["icon", "tooltipContent", "buttonType", "className", "tooltipDelay"]);
14347
+ disableTooltip = _ref.disableTooltip,
14348
+ otherProps = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_ref, ["icon", "tooltipContent", "buttonType", "className", "tooltipDelay", "disableTooltip"]);
14349
+
14350
+ var button = react__WEBPACK_IMPORTED_MODULE_2__["createElement"](_button_Button__WEBPACK_IMPORTED_MODULE_5__["Button"], _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({
14351
+ buttonType: buttonType || 'transparent',
14352
+ className: classnames__WEBPACK_IMPORTED_MODULE_3___default()('sked-button--icon-only', className),
14353
+ icon: icon
14354
+ }, otherProps));
14355
+
14356
+ if (disableTooltip) {
14357
+ return button;
14358
+ }
14348
14359
 
14349
14360
  return react__WEBPACK_IMPORTED_MODULE_2__["createElement"](_popups_tooltip_Tooltip__WEBPACK_IMPORTED_MODULE_4__["Tooltip"], {
14350
14361
  content: tooltipContent,
14351
14362
  position: "top",
14352
14363
  delayShow: tooltipDelay
14353
- }, react__WEBPACK_IMPORTED_MODULE_2__["createElement"](_button_Button__WEBPACK_IMPORTED_MODULE_5__["Button"], _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({
14354
- buttonType: buttonType || 'transparent',
14355
- className: classnames__WEBPACK_IMPORTED_MODULE_3___default()('sked-button--icon-only', className),
14356
- icon: icon
14357
- }, otherProps)));
14364
+ }, button);
14358
14365
  };
14359
14366
 
14360
14367
  /***/ }),
@@ -14495,7 +14502,7 @@ function CalendarControls(props) {
14495
14502
  children = props.children,
14496
14503
  rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, ["selected", "onDateSelect", "onTodayClick", "onDayMouseEnter", "onMonthMouseLeave", "highlightWeek", "selectWeek", "validation", "selectedRange", "onRangeChange", "rangeOptions", "className", "children"]);
14497
14504
 
14498
- var classNames = classnames__WEBPACK_IMPORTED_MODULE_3___default()('sked-calendar-controls sk-flex sk-w-full sk-items-center', className);
14505
+ var classNames = classnames__WEBPACK_IMPORTED_MODULE_3___default()('sked-calendar-controls sk-flex sk-items-center', className);
14499
14506
  var value = react__WEBPACK_IMPORTED_MODULE_2__["useMemo"](function () {
14500
14507
  return props;
14501
14508
  }, [selected, onDateSelect, onTodayClick, onDayMouseEnter, onMonthMouseLeave, highlightWeek, selectWeek, validation, selectedRange, onRangeChange, rangeOptions, className, children]);
@@ -14560,7 +14567,11 @@ var DateSelector = function DateSelector(props) {
14560
14567
  selected = _calendarControlProps.selected,
14561
14568
  _calendarControlProps3 = _calendarControlProps.buttonType,
14562
14569
  buttonType = _calendarControlProps3 === void 0 ? 'transparent' : _calendarControlProps3,
14563
- validation = _calendarControlProps.validation;
14570
+ validation = _calendarControlProps.validation,
14571
+ _calendarControlProps4 = _calendarControlProps.dateFormat,
14572
+ dateFormat = _calendarControlProps4 === void 0 ? 'MonthDayYear' : _calendarControlProps4,
14573
+ minDate = _calendarControlProps.minDate,
14574
+ maxDate = _calendarControlProps.maxDate;
14564
14575
 
14565
14576
  var className = props.className;
14566
14577
 
@@ -14575,9 +14586,9 @@ var DateSelector = function DateSelector(props) {
14575
14586
 
14576
14587
  var startDate = selected !== null && selected !== void 0 ? selected : new Date();
14577
14588
  var endDate = Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_6__["endOfPeriod"])(selected, selectedRange);
14578
- var formattedStartDate = startDate.getFullYear() === endDate.getFullYear() ? Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_6__["formatShortDate"])(startDate) : Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_6__["formatLongDate"])(startDate);
14579
- var formattedEndDate = Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_6__["formatLongDate"])(endDate);
14580
- var formattedDate = selectedRange === 'day' ? Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_6__["formatLongDate"])(selected) : "".concat(formattedStartDate, " - ").concat(formattedEndDate);
14589
+ var formattedStartDate = startDate.getFullYear() === endDate.getFullYear() ? Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_6__["formatShortDate"])(startDate, dateFormat) : Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_6__["formatLongDate"])(startDate, dateFormat);
14590
+ var formattedEndDate = Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_6__["formatLongDate"])(endDate, dateFormat);
14591
+ var formattedDate = selectedRange === 'day' ? Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_6__["formatLongDate"])(selected, dateFormat) : "".concat(formattedStartDate, " - ").concat(formattedEndDate);
14581
14592
  var buttonClasses = className !== null && className !== void 0 ? className : 'hover:sk-bg-neutral-250 sk-text-base sk-mr-3 sk-text-neutral-850 sk-px-3 sk-py-1 sk-leading-normal sk-border-none';
14582
14593
 
14583
14594
  var onChange = function onChange(date) {
@@ -14626,7 +14637,9 @@ var DateSelector = function DateSelector(props) {
14626
14637
  selectedRange: selectedRange,
14627
14638
  onClickOutside: toggleExpanded,
14628
14639
  clearable: false,
14629
- onCalendarClose: toggleExpanded
14640
+ onCalendarClose: toggleExpanded,
14641
+ minDate: minDate,
14642
+ maxDate: maxDate
14630
14643
  });
14631
14644
  };
14632
14645
 
@@ -14675,10 +14688,12 @@ var endOfPeriod = function endOfPeriod(selected, selectedRange) {
14675
14688
  return moveDate(nextPeriod, 'day', 'backward');
14676
14689
  };
14677
14690
  var formatLongDate = function formatLongDate(date) {
14678
- return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_0__["default"])(date, 'MMM d, yyyy');
14691
+ var dateFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'MonthDayYear';
14692
+ return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_0__["default"])(date, dateFormat === 'MonthDayYear' ? 'MMM d, yyyy' : 'd MMM, yyyy');
14679
14693
  };
14680
14694
  var formatShortDate = function formatShortDate(date) {
14681
- return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_0__["default"])(date, 'MMM d');
14695
+ var dateFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'MonthDayYear';
14696
+ return Object(date_fns_format__WEBPACK_IMPORTED_MODULE_0__["default"])(date, dateFormat === 'MonthDayYear' ? 'MMM d' : 'd MMM');
14682
14697
  };
14683
14698
 
14684
14699
  /***/ }),
@@ -17438,7 +17453,11 @@ var NavigationButtons = function NavigationButtons(props) {
17438
17453
  _calendarControlProps2 = _calendarControlProps.selectedRange,
17439
17454
  selectedRange = _calendarControlProps2 === void 0 ? 'day' : _calendarControlProps2,
17440
17455
  onDateSelect = _calendarControlProps.onDateSelect,
17441
- selected = _calendarControlProps.selected;
17456
+ selected = _calendarControlProps.selected,
17457
+ minDate = _calendarControlProps.minDate,
17458
+ maxDate = _calendarControlProps.maxDate,
17459
+ _calendarControlProps3 = _calendarControlProps.hideTooltipIfDisabled,
17460
+ hideTooltipIfDisabled = _calendarControlProps3 === void 0 ? false : _calendarControlProps3;
17442
17461
 
17443
17462
  var backwardsHandler = function backwardsHandler() {
17444
17463
  return onDateSelect(Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_4__["moveDate"])(selected, selectedRange, 'backward'));
@@ -17448,6 +17467,8 @@ var NavigationButtons = function NavigationButtons(props) {
17448
17467
  return onDateSelect(Object(_CalendarControls_utils__WEBPACK_IMPORTED_MODULE_4__["moveDate"])(selected, selectedRange, 'forward'));
17449
17468
  };
17450
17469
 
17470
+ var isBackwardsDisabled = minDate && selected <= minDate;
17471
+ var isForwardsDisabled = maxDate && selected >= maxDate;
17451
17472
  var previousTooltip = Object(lodash__WEBPACK_IMPORTED_MODULE_1__["capitalize"])("Previous ".concat(_RangePicker__WEBPACK_IMPORTED_MODULE_5__["dateRangeLabel"][selectedRange]));
17452
17473
  var nextTooltip = Object(lodash__WEBPACK_IMPORTED_MODULE_1__["capitalize"])("Next ".concat(_RangePicker__WEBPACK_IMPORTED_MODULE_5__["dateRangeLabel"][selectedRange]));
17453
17474
  return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement("div", {
@@ -17457,14 +17478,18 @@ var NavigationButtons = function NavigationButtons(props) {
17457
17478
  icon: "chevronLeft",
17458
17479
  "data-sk-name": "navigate-backwards",
17459
17480
  onClick: backwardsHandler,
17481
+ disabled: isBackwardsDisabled,
17460
17482
  compact: true,
17483
+ disableTooltip: hideTooltipIfDisabled && isBackwardsDisabled,
17461
17484
  tooltipContent: previousTooltip
17462
17485
  }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(___WEBPACK_IMPORTED_MODULE_3__["IconButton"], {
17463
17486
  className: "sk-inline-flex",
17464
17487
  icon: "chevronRight",
17465
17488
  "data-sk-name": "navigate-forwards",
17466
17489
  onClick: forwardsHandler,
17490
+ disabled: isForwardsDisabled,
17467
17491
  compact: true,
17492
+ disableTooltip: hideTooltipIfDisabled && isForwardsDisabled,
17468
17493
  tooltipContent: nextTooltip
17469
17494
  }));
17470
17495
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skedulo/sked-ui",
3
- "version": "19.19.1",
3
+ "version": "19.21.0",
4
4
  "license": "UNLICENSED",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",