@skedulo/sked-ui 0.0.1 → 0.0.2-react-18-preview

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 (197) hide show
  1. package/README.md +107 -0
  2. package/dist/components/IntersectionObserverWrapper/IntersectionObserverWrapper.d.ts +39 -0
  3. package/dist/components/IntersectionObserverWrapper/IntersectionObserverWrapper.stories.d.ts +1 -0
  4. package/dist/components/avatar/Avatar.d.ts +46 -0
  5. package/dist/components/avatar/Avatar.stories.d.ts +1 -0
  6. package/dist/components/avatar/AvatarDetail.d.ts +19 -0
  7. package/dist/components/avatar/AvatarGroup.d.ts +27 -0
  8. package/dist/components/avatar/Slot.d.ts +42 -0
  9. package/dist/components/avatar/__tests__/Avatar.spec.d.ts +1 -0
  10. package/dist/components/avatar/__tests__/AvatarDetail.spec.d.ts +1 -0
  11. package/dist/components/avatar/__tests__/GroupAvatars.spec.d.ts +1 -0
  12. package/dist/components/avatar/__tests__/Slot.spec.d.ts +1 -0
  13. package/dist/components/badge/Badge.d.ts +18 -0
  14. package/dist/components/badge/Badge.stories.d.ts +17 -0
  15. package/dist/components/badge/__tests__/Badge.spec.d.ts +1 -0
  16. package/dist/components/button-group/ButtonGroup.d.ts +6 -0
  17. package/dist/components/button-group/ButtonGroup.stories.d.ts +1 -0
  18. package/dist/components/button-group/__tests__/ButtonGroup.spec.d.ts +1 -0
  19. package/dist/components/buttons/Buttons.stories.d.ts +1 -0
  20. package/dist/components/buttons/button/Button.d.ts +60 -0
  21. package/dist/components/buttons/button/__tests__/Button.spec.d.ts +1 -0
  22. package/dist/components/buttons/button-dropdown/ButtonDropdown.d.ts +14 -0
  23. package/dist/components/buttons/button-dropdown/__tests__/ButtonDropdown.spec.d.ts +1 -0
  24. package/dist/components/buttons/icon-button/IconButton.d.ts +13 -0
  25. package/dist/components/buttons/icon-button/__tests__/IconButton.spec.d.ts +1 -0
  26. package/dist/components/buttons/icon-button-dropdown/IconButtonDropdown.d.ts +5 -0
  27. package/dist/components/buttons/icon-button-dropdown/__tests__/IconButtonDropdown.spec.d.ts +1 -0
  28. package/dist/components/buttons/interfaces.d.ts +10 -0
  29. package/dist/components/calendar-controls/CalendarControls-utils.d.ts +7 -0
  30. package/dist/components/calendar-controls/CalendarControls.d.ts +30 -0
  31. package/dist/components/calendar-controls/CalendarControls.stories.d.ts +1 -0
  32. package/dist/components/calendar-controls/elements/DateSelector.d.ts +47 -0
  33. package/dist/components/calendar-controls/elements/NavigationButtons.d.ts +6 -0
  34. package/dist/components/calendar-controls/elements/RangePicker.d.ts +21 -0
  35. package/dist/components/calendar-controls/elements/TodayButton.d.ts +5 -0
  36. package/dist/components/datepicker/DateTime.d.ts +55 -0
  37. package/dist/components/datepicker/DateTime.stories.d.ts +1 -0
  38. package/dist/components/datepicker/Datepicker.d.ts +125 -0
  39. package/dist/components/datepicker/Datepicker.stories.d.ts +1 -0
  40. package/dist/components/datepicker/Time.d.ts +44 -0
  41. package/dist/components/datepicker/Time.stories.d.ts +1 -0
  42. package/dist/components/datepicker/__tests__/DateTime.spec.d.ts +1 -0
  43. package/dist/components/datepicker/__tests__/Datepicker.spec.d.ts +1 -0
  44. package/dist/components/datepicker/__tests__/Time.spec.d.ts +1 -0
  45. package/dist/components/dynamic-table/DynamicTable-utils.d.ts +45 -0
  46. package/dist/components/dynamic-table/DynamicTable.d.ts +79 -0
  47. package/dist/components/dynamic-table/DynamicTable.stories.d.ts +1 -0
  48. package/dist/components/dynamic-table/__tests__/DynamicTable-renders.spec.d.ts +1 -0
  49. package/dist/components/dynamic-table/__tests__/DynamicTable-test-utils.d.ts +3 -0
  50. package/dist/components/dynamic-table/__tests__/DynamicTable-utils.spec.d.ts +1 -0
  51. package/dist/components/dynamic-table/__tests__/DynamicTable.spec.d.ts +1 -0
  52. package/dist/components/dynamic-table/__tests__/__mocks__/table-data.d.ts +16 -0
  53. package/dist/components/dynamic-table/interfaces.d.ts +52 -0
  54. package/dist/components/emptystate/EmptyState.d.ts +9 -0
  55. package/dist/components/emptystate/EmptyState.spec.d.ts +1 -0
  56. package/dist/components/emptystate/EmptyState.stories.d.ts +1 -0
  57. package/dist/components/filter-bar/FilterBar.d.ts +54 -0
  58. package/dist/components/filter-bar/FilterBar.stories.d.ts +1 -0
  59. package/dist/components/filter-bar/__tests__/FilterBar.spec.d.ts +1 -0
  60. package/dist/components/filter-bar/filter-list/FilterList.d.ts +10 -0
  61. package/dist/components/filter-bar/filter-list/FilterListWithApply.d.ts +24 -0
  62. package/dist/components/filter-bar/filter-list/FilterSearch.d.ts +21 -0
  63. package/dist/components/filter-bar/filter-list/RemoteSearch.d.ts +25 -0
  64. package/dist/components/filter-bar/filter-list/__tests__/FilterList.spec.d.ts +1 -0
  65. package/dist/components/filter-bar/filter-list/__tests__/FilterListWithApply.spec.d.ts +1 -0
  66. package/dist/components/filter-bar/filter-list/__tests__/FilterSearch.spec.d.ts +1 -0
  67. package/dist/components/filter-bar/filter-list/__tests__/RemoteSearch.spec.d.ts +1 -0
  68. package/dist/components/filter-bar/filter-pill/FilterPill.d.ts +23 -0
  69. package/dist/components/filter-bar/filter-pill/__tests__/FilterPill.spec.d.ts +1 -0
  70. package/dist/components/filter-bar/interfaces.d.ts +43 -0
  71. package/dist/components/forms/Forms.stories.d.ts +1 -0
  72. package/dist/components/forms/ReadOnly.d.ts +11 -0
  73. package/dist/components/forms/SkedFormValidation.d.ts +98 -0
  74. package/dist/components/forms/SkedFormValidation.spec.d.ts +1 -0
  75. package/dist/components/forms/__tests__/ReadOnly.spec.d.ts +1 -0
  76. package/dist/components/forms/elements/AsyncMultiSearchSelect.d.ts +3 -0
  77. package/dist/components/forms/elements/AsyncSearchSelect.d.ts +6 -0
  78. package/dist/components/forms/elements/AsyncSelectSearch.stories.d.ts +1 -0
  79. package/dist/components/forms/elements/FormElements.d.ts +54 -0
  80. package/dist/components/forms/elements/MultiSearchSelect.d.ts +3 -0
  81. package/dist/components/forms/elements/MultiSearchSelect.stories.d.ts +1 -0
  82. package/dist/components/forms/elements/NumberInput.d.ts +17 -0
  83. package/dist/components/forms/elements/PlainAsyncMultiSearchSelect.d.ts +8 -0
  84. package/dist/components/forms/elements/PlainAsyncMultiSearchSelect.stories.d.ts +1 -0
  85. package/dist/components/forms/elements/PlainMultiSearchSelect.d.ts +24 -0
  86. package/dist/components/forms/elements/PlainMultiSearchSelect.stories.d.ts +1 -0
  87. package/dist/components/forms/elements/SearchSelect.d.ts +6 -0
  88. package/dist/components/forms/elements/SearchSelect.stories.d.ts +1 -0
  89. package/dist/components/forms/elements/TextArea.d.ts +25 -0
  90. package/dist/components/forms/elements/TextArea.spec.d.ts +1 -0
  91. package/dist/components/forms/elements/__tests__/AsyncMultiSearchSelect.spec.d.ts +1 -0
  92. package/dist/components/forms/elements/__tests__/AsyncSearchSelect.spec.d.ts +1 -0
  93. package/dist/components/forms/elements/__tests__/FormElements.spec.d.ts +1 -0
  94. package/dist/components/forms/elements/__tests__/MultiSearchSelect.spec.d.ts +1 -0
  95. package/dist/components/forms/elements/__tests__/NumberInput.spec.d.ts +1 -0
  96. package/dist/components/forms/elements/__tests__/PlainAsyncMultiSearchSelect.spec.d.ts +1 -0
  97. package/dist/components/forms/elements/__tests__/PlainMultiSearchSelect.spec.d.ts +1 -0
  98. package/dist/components/forms/elements/__tests__/SearchSelect-renders.spec.d.ts +1 -0
  99. package/dist/components/forms/elements/__tests__/SearchSelect.spec.d.ts +1 -0
  100. package/dist/components/forms/elements/__tests__/__mocks__/searchData.d.ts +11 -0
  101. package/dist/components/forms/elements/interfaces.d.ts +108 -0
  102. package/dist/components/forms/elements/select-components.d.ts +38 -0
  103. package/dist/components/forms/elements/select-hooks.d.ts +38 -0
  104. package/dist/components/forms/elements/select-utils.d.ts +22 -0
  105. package/dist/components/icon/Icon.d.ts +26 -0
  106. package/dist/components/icon/Icon.spec.d.ts +1 -0
  107. package/dist/components/icon/Icon.stories.d.ts +1 -0
  108. package/dist/components/icon/iconPaths.d.ts +131 -0
  109. package/dist/components/info-card/InfoCard.d.ts +5 -0
  110. package/dist/components/info-card/InfoCard.stories.d.ts +1 -0
  111. package/dist/components/info-card/InfoCardBody.d.ts +13 -0
  112. package/dist/components/info-card/InfoCardFooter.d.ts +2 -0
  113. package/dist/components/info-card/InfoCardHeader.d.ts +11 -0
  114. package/dist/components/info-card/index.d.ts +4 -0
  115. package/dist/components/inline-banner/InlineBanner.d.ts +9 -0
  116. package/dist/components/inline-banner/InlineBanner.spec.d.ts +1 -0
  117. package/dist/components/inline-banner/InlineBanner.stories.d.ts +1 -0
  118. package/dist/components/link/Link.d.ts +5 -0
  119. package/dist/components/link/Link.spec.d.ts +1 -0
  120. package/dist/components/link/Link.stories.d.ts +17 -0
  121. package/dist/components/loader/Loading.d.ts +16 -9
  122. package/dist/components/loader/Loading.stories.d.ts +1 -0
  123. package/dist/components/loader/__tests__/Loading.spec.d.ts +1 -0
  124. package/dist/components/loader/spinner/LoadingSpinner.d.ts +21 -0
  125. package/dist/components/lozenge/CustomLozenge.d.ts +21 -0
  126. package/dist/components/lozenge/Lozenge.d.ts +22 -0
  127. package/dist/components/lozenge/Lozenge.stories.d.ts +1 -0
  128. package/dist/components/lozenge/__tests__/Lozenge.spec.d.ts +1 -0
  129. package/dist/components/menus/Menus.stories.d.ts +1 -0
  130. package/dist/components/menus/actionmenu/ActionMenu.d.ts +13 -0
  131. package/dist/components/menus/cardactionmenu/CardActionMenu.d.ts +10 -0
  132. package/dist/components/menus/index.d.ts +2 -0
  133. package/dist/components/menus/menu/Menu.d.ts +18 -0
  134. package/dist/components/modals/Modal.spec.d.ts +1 -0
  135. package/dist/components/modals/Modal.stories.d.ts +1 -0
  136. package/dist/components/modals/Modals.d.ts +35 -0
  137. package/dist/components/pagination/Pagination-utils.d.ts +1 -0
  138. package/dist/components/pagination/Pagination-utils.spec.d.ts +1 -0
  139. package/dist/components/pagination/Pagination.d.ts +3 -0
  140. package/dist/components/pagination/Pagination.spec.d.ts +1 -0
  141. package/dist/components/pagination/Pagination.stories.d.ts +1 -0
  142. package/dist/components/pagination/PaginationCount/PaginationCount.d.ts +3 -0
  143. package/dist/components/pagination/PaginationCount/PaginationCount.spec.d.ts +1 -0
  144. package/dist/components/pagination/PaginationPages/PaginationPages.d.ts +14 -0
  145. package/dist/components/pagination/PaginationPages/PaginationPages.spec.d.ts +1 -0
  146. package/dist/components/pagination/interfaces.d.ts +18 -0
  147. package/dist/components/pill/Pill.d.ts +25 -0
  148. package/dist/components/pill/Pill.spec.d.ts +1 -0
  149. package/dist/components/pill/Pill.stories.d.ts +1 -0
  150. package/dist/components/popout/PopOut.d.ts +61 -0
  151. package/dist/components/popout/PopOut.stories.d.ts +1 -0
  152. package/dist/components/popout/PopOutBase.d.ts +39 -0
  153. package/dist/components/popout/usePopOut.d.ts +9 -0
  154. package/dist/components/popups/info-window/InfoWindow.d.ts +45 -0
  155. package/dist/components/popups/info-window/InfoWindow.stories.d.ts +1 -0
  156. package/dist/components/popups/info-window/LegacyInfoWindow.d.ts +161 -0
  157. package/dist/components/popups/info-window/info-window-utils.d.ts +43 -0
  158. package/dist/components/popups/info-window/info-window-utils.spec.d.ts +1 -0
  159. package/dist/components/popups/info-window/useInfoWindowModifiers.d.ts +2 -0
  160. package/dist/components/popups/overflow-tooltip/OverflowTooltip.d.ts +31 -0
  161. package/dist/components/popups/tooltip/Tooltip.d.ts +21 -0
  162. package/dist/components/popups/tooltip/Tooltip.spec.d.ts +1 -0
  163. package/dist/components/popups/tooltip/Tooltip.stories.d.ts +1 -0
  164. package/dist/components/portal/Portal.d.ts +22 -0
  165. package/dist/components/search-box/SearchBox.d.ts +9 -0
  166. package/dist/components/search-box/SearchBox.spec.d.ts +1 -0
  167. package/dist/components/status-icon/StatusIcon.d.ts +11 -0
  168. package/dist/components/status-icon/StatusIcon.spec.d.ts +1 -0
  169. package/dist/components/status-icon/StatusIcon.stories.d.ts +1 -0
  170. package/dist/components/table/Table.d.ts +16 -0
  171. package/dist/components/table/Table.spec.d.ts +1 -0
  172. package/dist/components/table/Table.stories.d.ts +1 -0
  173. package/dist/components/tabs/Tabs/Tabs.d.ts +36 -0
  174. package/dist/components/tabs/Tabs/TabsMenuItem.d.ts +22 -0
  175. package/dist/components/tabs/Tabs/TabsRoutingUtils.d.ts +28 -0
  176. package/dist/components/tabs/Tabs/__tests__/Tabs.spec.d.ts +1 -0
  177. package/dist/components/tabs/Tabs/__tests__/TabsMenuItem.spec.d.ts +1 -0
  178. package/dist/components/tabs/Tabs/__tests__/TabsRoutingUtils.spec.d.ts +1 -0
  179. package/dist/components/tabs/Tabs/interfaces.d.ts +65 -0
  180. package/dist/components/tabs/Tabs.stories.d.ts +1 -0
  181. package/dist/components/text/MultilineContent.d.ts +6 -0
  182. package/dist/components/text/MultilineContent.spec.d.ts +1 -0
  183. package/dist/hooks/useDebounce.d.ts +1 -0
  184. package/dist/index.d.ts +59 -2
  185. package/dist/index.js +65743 -1
  186. package/dist/utils/Option.d.ts +58 -0
  187. package/dist/utils/Option.spec.d.ts +1 -0
  188. package/dist/utils/Route.d.ts +4 -0
  189. package/dist/utils/Strings.d.ts +1 -0
  190. package/dist/utils/Types.d.ts +6 -0
  191. package/dist/utils/__tests__/Route.spec.d.ts +1 -0
  192. package/dist/utils/testing-utils.d.ts +7 -0
  193. package/package.json +164 -22
  194. package/yarn.lock +17541 -1196
  195. package/dist/components/test/Test.d.ts +0 -9
  196. package/dist/components/test/test.d.ts +0 -9
  197. package/tsconfig.json +0 -22
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ export interface IDateTimeProps {
3
+ dateTime?: Date;
4
+ /**
5
+ * The date and time as it is selected by the user
6
+ */
7
+ onChange?: (value: Date) => void;
8
+ /**
9
+ * The date as it is selected by the user
10
+ */
11
+ onDateChange?: (value: Date) => void;
12
+ /**
13
+ * The time as it is selected by the user
14
+ */
15
+ onTimeChange?: (value: string) => void;
16
+ /**
17
+ * The incremental time to add for each selectable time window, by minutes
18
+ */
19
+ timeIncrement?: number;
20
+ /**
21
+ * Used for setting aria-labelledby
22
+ */
23
+ id?: string;
24
+ /**
25
+ * Is this input disabled?
26
+ */
27
+ disabled?: boolean;
28
+ /**
29
+ * The placeholder text for the input. Defaults to 'Select time'
30
+ */
31
+ timePlaceholder?: string;
32
+ /**
33
+ * The placeholder text for the input. Defaults to 'Select time'
34
+ */
35
+ datePlaceholder?: string;
36
+ /**
37
+ * The date to open the calendar to
38
+ */
39
+ openToDate?: Date;
40
+ /**
41
+ * The format of the date to display
42
+ */
43
+ dateFormat?: string;
44
+ /**
45
+ * increment-only will only allow selection of an interval
46
+ * freeform will allow valid time values that are not included in the intervals
47
+ * Defaults to increment-only
48
+ */
49
+ timeValueSelection?: 'increment-only' | 'freeform';
50
+ }
51
+ export declare const convertTimeStringTo24Hr: (value: string) => {
52
+ hours: number;
53
+ minutes: number;
54
+ };
55
+ export declare const DateTime: ({ timeIncrement, onChange, onDateChange, onTimeChange, dateTime, disabled, openToDate, dateFormat, timeValueSelection, timePlaceholder, datePlaceholder, id }: IDateTimeProps) => React.JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,125 @@
1
+ import * as React from 'react';
2
+ import { ReactDatePickerProps } from 'react-datepicker';
3
+ import { RangeType } from '../calendar-controls/elements/RangePicker';
4
+ export type LocaleType = 'AU' | 'US' | 'UK';
5
+ type CustomInputType = React.InputHTMLAttributes<HTMLInputElement> & {
6
+ onBlurCustom: (event?: React.FocusEvent<HTMLInputElement>) => void;
7
+ openCalendar: (open: boolean) => void;
8
+ onBackspace: () => void;
9
+ Component: (props: React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>) => JSX.Element;
10
+ };
11
+ export interface DatepickerProps {
12
+ /**
13
+ * The currently selected date.
14
+ */
15
+ selected: Date;
16
+ /**
17
+ * The action to take when the date changes
18
+ */
19
+ onChange: (value?: Date) => void;
20
+ /**
21
+ * The date to open the calendar to
22
+ */
23
+ openToDate?: Date;
24
+ /**
25
+ * The locale to display the date in
26
+ */
27
+ locale?: LocaleType;
28
+ /**
29
+ * Should the calendar be displayed in the expanded state
30
+ */
31
+ inline?: boolean;
32
+ /**
33
+ * Maintain a consistent height by showing five weeks regardless of the month
34
+ */
35
+ fixedHeight?: ReactDatePickerProps['fixedHeight'];
36
+ /**
37
+ * Earliest date allowed to be selected. This will also affect the month navigation
38
+ */
39
+ minDate?: ReactDatePickerProps['minDate'];
40
+ /**
41
+ * Latest date allowed to be selected. This will also affect the month navigation
42
+ */
43
+ maxDate?: ReactDatePickerProps['maxDate'];
44
+ /**
45
+ * Disable updating the date picker
46
+ */
47
+ disabled?: boolean;
48
+ /**
49
+ * Provide placeholder text for the input
50
+ */
51
+ placeholderText?: string;
52
+ /**
53
+ * The format of the date to display
54
+ */
55
+ dateFormat?: string;
56
+ /**
57
+ * Any additional styling to add to the datepicker
58
+ */
59
+ className?: string;
60
+ /**
61
+ * An Array of Date that will be highlighted
62
+ */
63
+ highlightDates?: ReactDatePickerProps['highlightDates'];
64
+ /**
65
+ * Used to filter out dates that are not selectable
66
+ */
67
+ filterDate?: ReactDatePickerProps['filterDate'];
68
+ /**
69
+ * A component that will override the default Input
70
+ */
71
+ customInput?: CustomInputType['Component'];
72
+ /**
73
+ * Select the week Sunday to Saturday based on the current selected date
74
+ */
75
+ selectWeek?: boolean;
76
+ /**
77
+ * Used for calculating weeks to highlight and formatted date
78
+ */
79
+ selectedRange?: RangeType;
80
+ /**
81
+ * Highlight the week which contains the highlightWeek Date
82
+ */
83
+ highlightWeek?: Date;
84
+ /**
85
+ * The callback that will receive the dates for the week selected
86
+ */
87
+ onWeekSelect?: (value: Date[]) => void;
88
+ /**
89
+ * Capture the date that a mouse hovers over
90
+ */
91
+ onDayMouseEnter?: (value: Date) => void;
92
+ /**
93
+ * The callback used when a mouse leaves the calendar component
94
+ */
95
+ onMonthMouseLeave?: () => void;
96
+ /**
97
+ * The captured event when someone clicks away from the datepicker
98
+ */
99
+ onClickOutside?: () => void;
100
+ /**
101
+ * The element name for vaildation
102
+ */
103
+ name?: string;
104
+ /**
105
+ * The element id for vaildation
106
+ */
107
+ id?: string;
108
+ /**
109
+ * Allow the datepicker to be cleared
110
+ */
111
+ clearable?: boolean;
112
+ /**
113
+ * onCalendarClose fuction
114
+ */
115
+ onCalendarClose?: () => void;
116
+ inputRef?: React.MutableRefObject<HTMLInputElement>;
117
+ }
118
+ export declare const CustomInput: React.ForwardRefExoticComponent<React.InputHTMLAttributes<HTMLInputElement> & {
119
+ onBlurCustom: (event?: React.FocusEvent<HTMLInputElement>) => void;
120
+ openCalendar: (open: boolean) => void;
121
+ onBackspace: () => void;
122
+ Component: (props: React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>) => JSX.Element;
123
+ } & React.RefAttributes<HTMLInputElement>>;
124
+ export declare const Datepicker: React.FC<React.PropsWithChildren<DatepickerProps>>;
125
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ /** @format */
2
+ import React from 'react';
3
+ export declare const TIME_FORMAT = "h:mma";
4
+ export declare const formatTime: (date: Date | number) => string;
5
+ export declare const readonlyTimeFormat: ({ value, suffix }: {
6
+ value: string;
7
+ suffix?: string;
8
+ }) => string;
9
+ export interface ITimeProps {
10
+ /**
11
+ * The incremental time to add for each selectable time window, by minutes
12
+ */
13
+ increment: number;
14
+ id?: string;
15
+ name?: string;
16
+ /**
17
+ * The current value of the component.
18
+ * N.B. The component will scroll to the nearest 'before' time increment of the value provided
19
+ */
20
+ value?: string;
21
+ /**
22
+ * Any suffix to add after the time input
23
+ */
24
+ suffix?: string;
25
+ /**
26
+ * Is this input disabled?
27
+ */
28
+ disabled?: boolean;
29
+ /**
30
+ * The placeholder text for the input. Defaults to 'Select time'
31
+ */
32
+ placeholder?: string;
33
+ /**
34
+ * increment-only will only allow selection of an interval
35
+ * freeform will allow valid time values that are not included in the intervals
36
+ * Defaults to increment-only
37
+ */
38
+ valueSelection?: 'increment-only' | 'freeform';
39
+ /**
40
+ * The time as it is selected by the user
41
+ */
42
+ onChange?: (value: string) => void;
43
+ }
44
+ export declare const Time: ({ value, increment, suffix, onChange, placeholder, valueSelection, ...rest }: ITimeProps) => React.JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,45 @@
1
+ import * as React from 'react';
2
+ import { CellProps, TableToggleRowsSelectedProps, Hooks, Row, UseTableCellProps } from 'react-table';
3
+ import { IDynamicTable } from './DynamicTable';
4
+ import { ControlStates, ITableWrapper, ITableHeaderCell, IDynamicTableColumn } from './interfaces';
5
+ export declare const ROW_SELECTION_ID = "sked-select-row";
6
+ export declare const isEmptyCell: (value: any, columnId: string) => boolean;
7
+ export declare function createTypedCellRenderer<T extends object>(): <K extends keyof T>(key: K, cellRenderer: (cellProps: CellProps<T, T[K]>) => React.ReactNode) => {
8
+ Cell: (cellProps: CellProps<T, T[K]>) => React.ReactNode;
9
+ accessor: K;
10
+ };
11
+ /**
12
+ * Before we render the table, if row selection has been requested, we add the selection header
13
+ * and table cells to the column config
14
+ */
15
+ export declare const getRowSelectionHook: <T extends object>(props: IDynamicTable<T>) => (hooks: Hooks<T>) => number | ((columns: import("react-table").Column<T>[], meta: import("react-table").MetaBase<T>) => import("react-table").Column<T>[])[];
16
+ export declare const getRowClickHook: <T extends object>(hooks: Hooks<T>) => number;
17
+ export declare const getSortArgs: (sortByControl: ControlStates) => {
18
+ disableSortBy: boolean;
19
+ disableSortRemove?: undefined;
20
+ disableMultiSort?: undefined;
21
+ manualSortBy?: undefined;
22
+ } | {
23
+ disableSortRemove: boolean;
24
+ disableSortBy: boolean;
25
+ disableMultiSort: boolean;
26
+ manualSortBy: boolean;
27
+ };
28
+ export declare const wrapperProps: ITableWrapper['getWrapperProps'];
29
+ export type SortIconProps<T extends object> = Pick<ITableHeaderCell<T>, 'canSort' | 'isSorted' | 'isSortedDesc' | 'getSortByToggleProps' | 'displayType'>;
30
+ export declare const SortIcon: <T extends object>({ canSort, isSorted, isSortedDesc, getSortByToggleProps, displayType }: SortIconProps<T>) => React.JSX.Element;
31
+ export declare const SelectCell: (props: Partial<TableToggleRowsSelectedProps>) => React.JSX.Element;
32
+ export declare const TableHeaderCell: <T extends object>(props: ITableHeaderCell<T>) => React.JSX.Element;
33
+ export declare const ExpandedTableCell: <T extends object>(props: UseTableCellProps<T, any> & {
34
+ children?: React.ReactNode;
35
+ }) => React.JSX.Element;
36
+ export declare const CondensedTableCell: <T extends object>(props: UseTableCellProps<T, any>) => React.JSX.Element;
37
+ export declare const DefaultRenderer: <T extends object>(instance: import("react-table").TableInstance<T> & {
38
+ column: import("react-table").ColumnInstance<T>;
39
+ row: Row<T>;
40
+ cell: import("react-table").Cell<T, any>;
41
+ value: any;
42
+ } & {
43
+ column: IDynamicTableColumn<T>;
44
+ }) => React.JSX.Element;
45
+ export declare const DefaultWrapper: (wrapperClassName?: string) => React.FC<React.PropsWithChildren<ITableWrapper>>;
@@ -0,0 +1,79 @@
1
+ import * as React from 'react';
2
+ import { Dictionary } from 'lodash';
3
+ import { SortingRule, TableOptions } from 'react-table';
4
+ import { IDynamicTableColumn, ControlStates, RowControlStates, DisplayType, ITableWrapper, UseRowClickOptions } from './interfaces';
5
+ interface IDynamicTableProps<T extends object> {
6
+ columns: IDynamicTableColumn<T>[];
7
+ /**
8
+ * By default DynamicTable will display an expanded view that will use table-layout: auto to try to fit content as best it can based on what columns have in them, adhering to column width configurations. This is standard/common table behaviour. For the condensed view, table-layout: fixed is used which will create evenly spaced columns (unless otherwise told via width parameters) to create truncated columns within the width of the container. If you have many columns in a small container, then you'll need to give widths to each column for it to overflow, otherwise it could shrink them down to nothing.
9
+ * Also note that table-fixed only listens to the width property and will ignore min-width and max-width.
10
+ * @default expanded
11
+ */
12
+ displayType?: DisplayType;
13
+ /**
14
+ * @default true
15
+ */
16
+ stickyHeader?: boolean;
17
+ /**
18
+ * Controlled expects the consumer to handle the sorting of data and will
19
+ * call onSortBy.
20
+ *
21
+ * Uncontrolled will use the built-in react-table sorting.
22
+ *
23
+ * Disabled will turn off sorting on the table.
24
+ *
25
+ * @default disabled
26
+ */
27
+ sortByControl?: ControlStates;
28
+ /**
29
+ * The function to call when the user has sorted a column and
30
+ * sortByControl is set to 'controlled'
31
+ * Must be memoized
32
+ */
33
+ onSortBy?: (props: SortingRule<T>) => void;
34
+ /**
35
+ * rowOnly will not include a checkbox to select all rows.
36
+ *
37
+ * allRows will include a select all checkbox
38
+ *
39
+ * disabled will disable row selection on the table
40
+ *
41
+ * @default disabled
42
+ */
43
+ rowSelectControl?: RowControlStates;
44
+ /**
45
+ * The function called any row selection changes.
46
+ * Must be memoized.
47
+ */
48
+ onRowSelect?: (selectedRowIds: string[], isAllRowsSelected?: boolean, selectedRowData?: Dictionary<T>) => void;
49
+ /**
50
+ * Classes to be applied to the default wrapper.
51
+ * If you need additional control over the wrapper itself,
52
+ * supply the wrapper component to TableWrapper prop
53
+ */
54
+ wrapperClassName?: string;
55
+ /**
56
+ * Override the default table wrapper with your own.
57
+ * There are certain classes that ensure the table behaves the
58
+ * way it should, specifically around overflowing. If you need
59
+ * to add classes to your wrapper component, you can pass through
60
+ * classes to getWrapperProps and it will add them in addition to
61
+ * the required classes for the table.
62
+ *
63
+ * If you choose to overwrite the classes all together by supplying your
64
+ * own className to the wrapper container, ensure you add overflow-x overlay or auto
65
+ * to your classes so that the table can accommodate many columns of specified widths.
66
+ *
67
+ * Example:
68
+ * const TableWrapper: IDynamicTable<DataModelInterface>['TableWrapper'] = ({children, getWrapperProps}) => (
69
+ * <div {...getWrapperProps('tw-flex-grow scroll')}>
70
+ * {children} // this will be the table
71
+ * <Pagination itemsPerPage={50} itemsTotal={data.length} currentPage={1} />
72
+ * </div>
73
+ * )
74
+ */
75
+ TableWrapper?: React.FC<React.PropsWithChildren<ITableWrapper>>;
76
+ }
77
+ export type IDynamicTable<T extends object> = Pick<TableOptions<T>, 'getRowId' | 'data' | 'initialState' | 'autoResetSortBy' | 'autoResetSelectedRows' | 'manualRowSelectedKey'> & UseRowClickOptions<T> & IDynamicTableProps<T>;
78
+ export declare const DynamicTable: <T extends object>(props: IDynamicTable<T>) => React.JSX.Element;
79
+ export {};
@@ -0,0 +1,3 @@
1
+ import { IDynamicTable } from '../DynamicTable';
2
+ import { DataModel } from './__mocks__/table-data';
3
+ export declare const getConfig: (overrides?: Partial<IDynamicTable<DataModel>>) => IDynamicTable<DataModel>;
@@ -0,0 +1,16 @@
1
+ export interface DataModel {
2
+ id: string;
3
+ name: string;
4
+ description: string;
5
+ account: string | null;
6
+ contact: {
7
+ name: string;
8
+ } | null;
9
+ jobType: string;
10
+ scheduled: string;
11
+ status: string;
12
+ resources: string[];
13
+ locked: boolean;
14
+ followUp?: Date;
15
+ }
16
+ export declare const tableData: DataModel[];
@@ -0,0 +1,52 @@
1
+ import { ColumnInterface, ColumnInstance, UseTableCellProps, Row, ColumnInterfaceBasedOnValue, HeaderProps, Renderer } from 'react-table';
2
+ export interface UseRowClickOptions<D extends object> {
3
+ /**
4
+ * This will add row click behaviour. Whenever a cell is clicked within a row,
5
+ * it will call this function.
6
+ */
7
+ onRowClick?: (row: Row<D>) => void;
8
+ }
9
+ declare module 'react-table' {
10
+ interface TableOptions<D extends object> extends UseSortByOptions<D>, UseRowSelectOptions<D>, UseRowClickOptions<D> {
11
+ }
12
+ interface Hooks<D extends object = {}> extends UseSortByHooks<D>, UseRowSelectHooks<D> {
13
+ }
14
+ interface TableInstance<D extends object = {}> extends UseSortByInstanceProps<D>, UseRowSelectInstanceProps<D>, UseRowClickOptions<D> {
15
+ }
16
+ interface TableState<D extends object = {}> extends UseSortByState<D>, UseRowSelectState<D> {
17
+ }
18
+ interface ColumnInterface<D extends object = {}> extends UseSortByColumnOptions<D> {
19
+ accessor: keyof D;
20
+ emptyCellText?: string;
21
+ }
22
+ interface ColumnInstance<D extends object = {}> extends UseSortByColumnProps<D>, UseRowSelectRowProps<D> {
23
+ Header?: Renderer<HeaderProps<D>> | undefined;
24
+ }
25
+ interface Row<D extends object = {}> extends UseRowSelectRowProps<D> {
26
+ }
27
+ interface Cell<D extends object = {}> extends UseRowSelectRowProps<D> {
28
+ }
29
+ }
30
+ /**
31
+ * Deliberately setting Header to string only since we want to control headers
32
+ * within DynamicTable and because we want to use it for a default message
33
+ * for empty values.
34
+ */
35
+ export interface IDynamicTableColumn<T extends object> extends Omit<ColumnInterface<T>, 'Header'>, ColumnInterfaceBasedOnValue<T> {
36
+ Header?: Renderer<HeaderProps<T>> | undefined;
37
+ }
38
+ export type ControlStates = 'controlled' | 'uncontrolled' | 'disabled';
39
+ export type RowControlStates = 'rowOnly' | 'allRows' | 'disabled';
40
+ export type DisplayType = 'expanded' | 'condensed';
41
+ export interface ITableHeaderCell<T extends object> extends ColumnInstance<T> {
42
+ sticky: boolean;
43
+ displayType: DisplayType;
44
+ }
45
+ export type ICellContentRenderer<T extends object> = Pick<IDynamicTableColumn<T>, 'Header' | 'emptyCellText' | 'id'> & Pick<UseTableCellProps<T>, 'value'>;
46
+ interface IGetWrapperProps {
47
+ className: string;
48
+ }
49
+ export interface ITableWrapper {
50
+ getWrapperProps: (additionalClasses?: string) => IGetWrapperProps;
51
+ }
52
+ export {};
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ interface IEmptyState extends React.HTMLAttributes<HTMLDivElement> {
3
+ imgSrc: string;
4
+ title: string;
5
+ message: string;
6
+ className?: string;
7
+ }
8
+ export declare const EmptyState: React.FC<React.PropsWithChildren<IEmptyState>>;
9
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,54 @@
1
+ import * as React from 'react';
2
+ import { IFilter, IAppliedFilter as AppliedFilter, IFilterItem as FilterItem, IAddedFilter } from './interfaces';
3
+ export type IAppliedFilter<T extends FilterItem> = AppliedFilter<T>;
4
+ export type IFilterItem = FilterItem;
5
+ export interface IFilterBarProps<T extends IFilterItem> {
6
+ /**
7
+ * An array of filter options. If a filter item is set to 'static' then it is permanently fixed and unable to be edited.
8
+ */
9
+ filters: IFilter<T>[];
10
+ onFilter: (filters: IFilterBarState<T>['appliedFilters']) => void;
11
+ loading?: boolean;
12
+ /**
13
+ * Apply custom styles to the content of the filter list.
14
+ */
15
+ scrollableContentClasses?: string;
16
+ }
17
+ interface IFilterBarState<T extends IFilterItem> {
18
+ appliedFilters: IAppliedFilter<T>[];
19
+ addedFilter: IAddedFilter;
20
+ editFilterId: string;
21
+ }
22
+ export declare class FilterBar<T extends IFilterItem> extends React.PureComponent<IFilterBarProps<T>, IFilterBarState<T>> {
23
+ constructor(props: IFilterBarProps<T>);
24
+ componentDidMount(): void;
25
+ /**
26
+ * When we 'add' a filter, we add a pill item to the filter bar and then list the options for it. It is not yet 'applied' until we select options.
27
+ * If we click on the add button for a filter that is already added, we want to launch an edit mode for it.
28
+ */
29
+ addFilter: (hideAddFilterDropdownList: () => void, filterToAdd: IAddedFilter) => () => void;
30
+ applyChangesToExistingFilter: (editFilterId: string, selectedItems: T[], existingFilters: IAppliedFilter<T>[]) => IAppliedFilter<T>[];
31
+ applyChangesToNewFilter: (filter: IFilter<T>, selectedItems: T[], existingFilters: IAppliedFilter<T>[]) => IAppliedFilter<T>[];
32
+ /**
33
+ * Apply a filter to the filter bar with the options we have selected.
34
+ */
35
+ applySelectedItemsToFilter: (filter: IFilter<T>, selectedFilterItems: T[]) => IAppliedFilter<T>[];
36
+ applyAndSaveFilters: (filter: IFilter<T>) => (selectedFilterItems: T[]) => void;
37
+ saveFilters: (filters: IAppliedFilter<T>[]) => void;
38
+ renderAddFilterButton: () => React.JSX.Element;
39
+ /**
40
+ * Render the add filter control button.
41
+ */
42
+ renderAddFilterControl: () => React.JSX.Element;
43
+ clearTemporaryPill: () => void;
44
+ closeTemporaryPill: () => () => void;
45
+ renderFilterItemSearch: (filter: IFilter<T>, preSelectedItems: T[], scrollableContentClasses?: string) => React.JSX.Element;
46
+ /**
47
+ * After we 'add' a filter, we want to render this 'temporary' pill in the filter bar. This temporary pill will be removed once we hit apply or exit out of the dropdown.
48
+ */
49
+ renderTemporaryPill: (filterName: string, filterId: string, preSelectedItems: T[]) => React.JSX.Element;
50
+ removeFilter: (filterId: string) => void;
51
+ editFilter: (filterId: string) => void;
52
+ render(): React.JSX.Element;
53
+ }
54
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { IFilterItem } from '../interfaces';
3
+ export interface IFilterListProps<T> {
4
+ items: T[];
5
+ itemRenderer: (item: T) => JSX.Element;
6
+ loading?: boolean;
7
+ className?: string;
8
+ scrollableContentClasses?: string;
9
+ }
10
+ export declare const FilterList: <T extends IFilterItem>({ items, itemRenderer, loading, className, scrollableContentClasses }: IFilterListProps<T>) => React.JSX.Element;
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import { IFilterListProps } from './FilterList';
3
+ import { InputType, IFilterItem } from '../interfaces';
4
+ interface IFilterListWithApplyProps<T> {
5
+ items: T[];
6
+ preSelectedItems: T[];
7
+ inputType: InputType;
8
+ applyFilter: (selectedFilterItems: T[]) => void;
9
+ loading?: boolean;
10
+ isListCollapsed?: boolean;
11
+ scrollableContentClasses?: IFilterListProps<T>['scrollableContentClasses'];
12
+ }
13
+ interface IFilterListWithApplyState<T extends IFilterItem> {
14
+ selected: T[];
15
+ }
16
+ export declare class FilterListWithApply<T extends IFilterItem> extends React.PureComponent<IFilterListWithApplyProps<T>, IFilterListWithApplyState<T>> {
17
+ constructor(props: IFilterListWithApplyProps<T>);
18
+ getSelectedItems: (item: T, checked?: boolean) => T[];
19
+ onItemChange: (item: T) => ({ target }: React.ChangeEvent<HTMLInputElement>) => void;
20
+ itemRenderer: (item: T) => React.JSX.Element;
21
+ applyFilters: () => void;
22
+ render(): React.JSX.Element;
23
+ }
24
+ export {};
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import { IFilterItem } from '../interfaces';
3
+ export interface IFilterSearchProps<T> {
4
+ items: T[];
5
+ children: React.FC<React.PropsWithChildren<{
6
+ filteredItems: T[];
7
+ }>>;
8
+ placeholder?: string;
9
+ className?: string;
10
+ }
11
+ interface IFilterSearchState<T> {
12
+ itemsWithSearchTermApplied: T[];
13
+ }
14
+ export declare class FilterSearch<T extends IFilterItem> extends React.PureComponent<IFilterSearchProps<T>, IFilterSearchState<T>> {
15
+ constructor(props: IFilterSearchProps<T>);
16
+ componentDidUpdate(prevProps: IFilterSearchProps<T>): void;
17
+ updateItemsState: (items: T[]) => void;
18
+ onFilterSearch: (value: string) => void;
19
+ render(): React.JSX.Element;
20
+ }
21
+ export {};
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+ import { IFilterItem } from '../interfaces';
3
+ export interface IRemoteSearchProps<T> {
4
+ useFetch: (searchTerm: string) => Promise<T[]>;
5
+ children: React.FC<React.PropsWithChildren<{
6
+ fetchedItems: T[];
7
+ searchTerm: string;
8
+ isFetching: boolean;
9
+ }>>;
10
+ preSelectedItems: T[];
11
+ placeholder?: string;
12
+ className?: string;
13
+ }
14
+ export interface IRemoteSearchState {
15
+ loading: boolean;
16
+ searchTerm: string;
17
+ }
18
+ export declare const DEBOUNCE_TIME = 700;
19
+ export declare class RemoteSearch<T extends IFilterItem> extends React.PureComponent<IRemoteSearchProps<T>, IRemoteSearchState> {
20
+ private _fetchedItems;
21
+ private _debouncedSearch;
22
+ constructor(props: IRemoteSearchProps<T>);
23
+ onFilterSearch: (value: string) => void;
24
+ render(): React.JSX.Element;
25
+ }