@heymantle/litho 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +90 -0
- package/dist/cjs/components/ActionList.js +267 -0
- package/dist/cjs/components/AnnouncementBar.js +73 -0
- package/dist/cjs/components/AppProvider.js +245 -0
- package/dist/cjs/components/Autocomplete.js +351 -0
- package/dist/cjs/components/Badge.js +234 -0
- package/dist/cjs/components/Banner.js +264 -0
- package/dist/cjs/components/Box.js +247 -0
- package/dist/cjs/components/Button.js +1018 -0
- package/dist/cjs/components/ButtonGroup.js +196 -0
- package/dist/cjs/components/Card.js +593 -0
- package/dist/cjs/components/Checkbox.js +175 -0
- package/dist/cjs/components/ChoiceList.js +160 -0
- package/dist/cjs/components/Collapsible.js +42 -0
- package/dist/cjs/components/ColorField.js +159 -0
- package/dist/cjs/components/ContextualSaveBar.js +53 -0
- package/dist/cjs/components/DatePicker.js +547 -0
- package/dist/cjs/components/Divider.js +50 -0
- package/dist/cjs/components/DropZone.js +547 -0
- package/dist/cjs/components/EmptyState.js +111 -0
- package/dist/cjs/components/Filters.js +874 -0
- package/dist/cjs/components/FooterHelp.js +48 -0
- package/dist/cjs/components/Form.js +44 -0
- package/dist/cjs/components/Frame.js +386 -0
- package/dist/cjs/components/FrameSaveBar.js +239 -0
- package/dist/cjs/components/Grid.js +151 -0
- package/dist/cjs/components/HorizontalStack.js +180 -0
- package/dist/cjs/components/Icon.js +346 -0
- package/dist/cjs/components/Image.js +191 -0
- package/dist/cjs/components/InlineError.js +57 -0
- package/dist/cjs/components/Label.js +78 -0
- package/dist/cjs/components/Layout.js +228 -0
- package/dist/cjs/components/LayoutSection.js +133 -0
- package/dist/cjs/components/Link.js +128 -0
- package/dist/cjs/components/List.js +69 -0
- package/dist/cjs/components/Listbox.js +211 -0
- package/dist/cjs/components/Loading.js +103 -0
- package/dist/cjs/components/Modal.js +449 -0
- package/dist/cjs/components/Navigation.js +331 -0
- package/dist/cjs/components/Page.js +529 -0
- package/dist/cjs/components/Pagination.js +109 -0
- package/dist/cjs/components/Pane.js +128 -0
- package/dist/cjs/components/Popover.js +365 -0
- package/dist/cjs/components/PopoverManager.js +34 -0
- package/dist/cjs/components/ProgressBar.js +124 -0
- package/dist/cjs/components/RadioButton.js +172 -0
- package/dist/cjs/components/RadioButtonCard.js +193 -0
- package/dist/cjs/components/RangeSlider.js +235 -0
- package/dist/cjs/components/ResourceList.js +105 -0
- package/dist/cjs/components/Select.js +300 -0
- package/dist/cjs/components/SkeletonText.js +130 -0
- package/dist/cjs/components/Spinner.js +72 -0
- package/dist/cjs/components/Table.js +1184 -0
- package/dist/cjs/components/Tabs.js +421 -0
- package/dist/cjs/components/Tag.js +165 -0
- package/dist/cjs/components/Text.js +274 -0
- package/dist/cjs/components/TextField.js +584 -0
- package/dist/cjs/components/Thumbnail.js +73 -0
- package/dist/cjs/components/TimePicker.js +23 -0
- package/dist/cjs/components/Tip.js +220 -0
- package/dist/cjs/components/Tooltip.js +431 -0
- package/dist/cjs/components/TopBar.js +210 -0
- package/dist/cjs/components/VerticalStack.js +161 -0
- package/dist/cjs/index.js +308 -0
- package/dist/cjs/styles/Table.js +591 -0
- package/dist/cjs/utilities/dates.js +339 -0
- package/dist/cjs/utilities/useIndexResourceState.js +175 -0
- package/dist/cjs/utilities/useMounted.js +67 -0
- package/dist/cjs/utilities/useTableScrollState.js +142 -0
- package/dist/esm/components/ActionList.js +216 -0
- package/dist/esm/components/AnnouncementBar.js +63 -0
- package/dist/esm/components/AppProvider.js +185 -0
- package/dist/esm/components/Autocomplete.js +300 -0
- package/dist/esm/components/Badge.js +225 -0
- package/dist/esm/components/Banner.js +254 -0
- package/dist/esm/components/Box.js +238 -0
- package/dist/esm/components/Button.js +967 -0
- package/dist/esm/components/ButtonGroup.js +137 -0
- package/dist/esm/components/Card.js +537 -0
- package/dist/esm/components/Checkbox.js +165 -0
- package/dist/esm/components/ChoiceList.js +145 -0
- package/dist/esm/components/Collapsible.js +32 -0
- package/dist/esm/components/ColorField.js +149 -0
- package/dist/esm/components/ContextualSaveBar.js +43 -0
- package/dist/esm/components/DatePicker.js +532 -0
- package/dist/esm/components/Divider.js +41 -0
- package/dist/esm/components/DropZone.js +537 -0
- package/dist/esm/components/EmptyState.js +101 -0
- package/dist/esm/components/Filters.js +823 -0
- package/dist/esm/components/FooterHelp.js +38 -0
- package/dist/esm/components/Form.js +35 -0
- package/dist/esm/components/Frame.js +376 -0
- package/dist/esm/components/FrameSaveBar.js +229 -0
- package/dist/esm/components/Grid.js +142 -0
- package/dist/esm/components/HorizontalStack.js +171 -0
- package/dist/esm/components/Icon.js +296 -0
- package/dist/esm/components/Image.js +141 -0
- package/dist/esm/components/InlineError.js +43 -0
- package/dist/esm/components/Label.js +63 -0
- package/dist/esm/components/Layout.js +164 -0
- package/dist/esm/components/LayoutSection.js +82 -0
- package/dist/esm/components/Link.js +119 -0
- package/dist/esm/components/List.js +61 -0
- package/dist/esm/components/Listbox.js +201 -0
- package/dist/esm/components/Loading.js +93 -0
- package/dist/esm/components/Modal.js +390 -0
- package/dist/esm/components/Navigation.js +321 -0
- package/dist/esm/components/Page.js +473 -0
- package/dist/esm/components/Pagination.js +99 -0
- package/dist/esm/components/Pane.js +118 -0
- package/dist/esm/components/Popover.js +350 -0
- package/dist/esm/components/PopoverManager.js +24 -0
- package/dist/esm/components/ProgressBar.js +114 -0
- package/dist/esm/components/RadioButton.js +157 -0
- package/dist/esm/components/RadioButtonCard.js +178 -0
- package/dist/esm/components/RangeSlider.js +225 -0
- package/dist/esm/components/ResourceList.js +95 -0
- package/dist/esm/components/Select.js +285 -0
- package/dist/esm/components/SkeletonText.js +120 -0
- package/dist/esm/components/Spinner.js +63 -0
- package/dist/esm/components/Table.js +1129 -0
- package/dist/esm/components/Tabs.js +366 -0
- package/dist/esm/components/Tag.js +151 -0
- package/dist/esm/components/Text.js +265 -0
- package/dist/esm/components/TextField.js +533 -0
- package/dist/esm/components/Thumbnail.js +63 -0
- package/dist/esm/components/TimePicker.js +13 -0
- package/dist/esm/components/Tip.js +169 -0
- package/dist/esm/components/Tooltip.js +380 -0
- package/dist/esm/components/TopBar.js +200 -0
- package/dist/esm/components/VerticalStack.js +152 -0
- package/dist/esm/index.js +61 -0
- package/dist/esm/styles/Table.js +581 -0
- package/dist/esm/utilities/dates.js +289 -0
- package/dist/esm/utilities/useIndexResourceState.js +158 -0
- package/dist/esm/utilities/useMounted.js +57 -0
- package/dist/esm/utilities/useTableScrollState.js +132 -0
- package/index.css +1137 -0
- package/package.json +53 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
function _array_like_to_array(arr, len) {
|
|
2
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
+
return arr2;
|
|
5
|
+
}
|
|
6
|
+
function _array_with_holes(arr) {
|
|
7
|
+
if (Array.isArray(arr)) return arr;
|
|
8
|
+
}
|
|
9
|
+
function _iterable_to_array_limit(arr, i) {
|
|
10
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
11
|
+
if (_i == null) return;
|
|
12
|
+
var _arr = [];
|
|
13
|
+
var _n = true;
|
|
14
|
+
var _d = false;
|
|
15
|
+
var _s, _e;
|
|
16
|
+
try {
|
|
17
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
18
|
+
_arr.push(_s.value);
|
|
19
|
+
if (i && _arr.length === i) break;
|
|
20
|
+
}
|
|
21
|
+
} catch (err) {
|
|
22
|
+
_d = true;
|
|
23
|
+
_e = err;
|
|
24
|
+
} finally{
|
|
25
|
+
try {
|
|
26
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
27
|
+
} finally{
|
|
28
|
+
if (_d) throw _e;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return _arr;
|
|
32
|
+
}
|
|
33
|
+
function _non_iterable_rest() {
|
|
34
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
35
|
+
}
|
|
36
|
+
function _sliced_to_array(arr, i) {
|
|
37
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
38
|
+
}
|
|
39
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
40
|
+
if (!o) return;
|
|
41
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
42
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
43
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
44
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
45
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
46
|
+
}
|
|
47
|
+
import { arEG, enGB, enUS } from "date-fns/locale";
|
|
48
|
+
import dayjs from "dayjs";
|
|
49
|
+
import quarterOfYear from "dayjs/plugin/quarterOfYear.js";
|
|
50
|
+
dayjs.extend(quarterOfYear);
|
|
51
|
+
export var isValidDate = function(date) {
|
|
52
|
+
return date && !isNaN(date.getTime());
|
|
53
|
+
};
|
|
54
|
+
export var DAY_FORMAT = "MMM D YYYY";
|
|
55
|
+
export var DAY_TIME_FORMAT = "MMM D YYYY, h:mm A";
|
|
56
|
+
export var TIME_FORMAT = "HH:mm";
|
|
57
|
+
export var NOW = new Date();
|
|
58
|
+
export var NOW_TODAY = dayjs(NOW).format(DAY_FORMAT);
|
|
59
|
+
export var DATE_LOCALES = {
|
|
60
|
+
enUS: enUS,
|
|
61
|
+
enGB: enGB,
|
|
62
|
+
arEG: arEG
|
|
63
|
+
};
|
|
64
|
+
export var DATE_LOCALE_MAP = Object.entries({
|
|
65
|
+
enUS: [
|
|
66
|
+
"en-US",
|
|
67
|
+
"us",
|
|
68
|
+
"america"
|
|
69
|
+
],
|
|
70
|
+
enGB: [
|
|
71
|
+
"en-GB",
|
|
72
|
+
"gb",
|
|
73
|
+
"uk"
|
|
74
|
+
],
|
|
75
|
+
arEG: [
|
|
76
|
+
"ar-EG",
|
|
77
|
+
"egypt"
|
|
78
|
+
]
|
|
79
|
+
}).reduce(function(map, param) {
|
|
80
|
+
var _param = _sliced_to_array(param, 2), localeKey = _param[0], keys = _param[1];
|
|
81
|
+
var locale = DATE_LOCALES[localeKey];
|
|
82
|
+
keys.forEach(function(key) {
|
|
83
|
+
map[key] = locale;
|
|
84
|
+
});
|
|
85
|
+
return map;
|
|
86
|
+
}, {});
|
|
87
|
+
export var HOURLY_RANGE_PRESETS = [
|
|
88
|
+
{
|
|
89
|
+
id: "last_30_minutes",
|
|
90
|
+
label: "Last 30 minutes",
|
|
91
|
+
value: {
|
|
92
|
+
start: dayjs().startOf("minute").subtract(29, "minutes").toDate(),
|
|
93
|
+
end: dayjs().endOf("minute").toDate()
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
id: "last_60_minutes",
|
|
98
|
+
label: "Last 60 minutes",
|
|
99
|
+
value: {
|
|
100
|
+
start: dayjs().startOf("minute").subtract(59, "minutes").toDate(),
|
|
101
|
+
end: dayjs().endOf("minute").toDate()
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
];
|
|
105
|
+
export var RANGE_PRESETS = [
|
|
106
|
+
{
|
|
107
|
+
id: "today",
|
|
108
|
+
label: "Today",
|
|
109
|
+
value: {
|
|
110
|
+
start: dayjs().startOf("day").toDate(),
|
|
111
|
+
end: dayjs().endOf("day").toDate()
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: "yesterday",
|
|
116
|
+
label: "Yesterday",
|
|
117
|
+
value: {
|
|
118
|
+
start: dayjs().subtract(1, "day").startOf("day").toDate(),
|
|
119
|
+
end: dayjs().subtract(1, "day").endOf("day").toDate()
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
id: "last_12_hours",
|
|
124
|
+
label: "Last 12 hours",
|
|
125
|
+
value: {
|
|
126
|
+
start: dayjs().subtract(11, "hours").startOf("hour").toDate(),
|
|
127
|
+
end: dayjs().endOf("hour").toDate()
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
id: "last_24_hours",
|
|
132
|
+
hideCalendar: true,
|
|
133
|
+
label: "Last 24 hours",
|
|
134
|
+
value: {
|
|
135
|
+
start: dayjs().subtract(23, "hours").startOf("hour").toDate(),
|
|
136
|
+
end: dayjs().endOf("hour").toDate()
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: "last_7_days",
|
|
141
|
+
label: "Last 7 days",
|
|
142
|
+
value: {
|
|
143
|
+
start: dayjs().subtract(6, "day").startOf("day").toDate(),
|
|
144
|
+
end: dayjs().endOf("day").toDate()
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
id: "last_14_days",
|
|
149
|
+
label: "Last 14 days",
|
|
150
|
+
value: {
|
|
151
|
+
start: dayjs().subtract(13, "day").startOf("day").toDate(),
|
|
152
|
+
end: dayjs().endOf("day").toDate()
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
id: "last_30_days",
|
|
157
|
+
label: "Last 30 days",
|
|
158
|
+
value: {
|
|
159
|
+
start: dayjs().subtract(29, "day").startOf("day").toDate(),
|
|
160
|
+
end: dayjs().endOf("day").toDate()
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
id: "last_90_days",
|
|
165
|
+
label: "Last 90 days",
|
|
166
|
+
value: {
|
|
167
|
+
start: dayjs().subtract(89, "day").startOf("day").toDate(),
|
|
168
|
+
end: dayjs().endOf("day").toDate()
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
id: "last_month",
|
|
173
|
+
label: "Last month",
|
|
174
|
+
value: {
|
|
175
|
+
start: dayjs().subtract(1, "month").startOf("month").toDate(),
|
|
176
|
+
end: dayjs().subtract(1, "month").endOf("month").toDate()
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
id: "last_12_months",
|
|
181
|
+
label: "Last 12 months",
|
|
182
|
+
value: {
|
|
183
|
+
start: dayjs().subtract(11, "month").startOf("month").toDate(),
|
|
184
|
+
end: dayjs().endOf("day").toDate()
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
id: "last_24_months",
|
|
189
|
+
label: "Last 24 months",
|
|
190
|
+
value: {
|
|
191
|
+
start: dayjs().subtract(23, "month").startOf("month").toDate(),
|
|
192
|
+
end: dayjs().endOf("day").toDate()
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
id: "month_to_date",
|
|
197
|
+
label: "Month to date",
|
|
198
|
+
value: {
|
|
199
|
+
start: dayjs().startOf("month").toDate(),
|
|
200
|
+
end: dayjs().endOf("day").toDate()
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
id: "quarter_to_date",
|
|
205
|
+
label: "Quarter to date",
|
|
206
|
+
value: {
|
|
207
|
+
start: dayjs().startOf("quarter").toDate(),
|
|
208
|
+
end: dayjs().endOf("day").toDate()
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
id: "year_to_date",
|
|
213
|
+
label: "Year to date",
|
|
214
|
+
value: {
|
|
215
|
+
start: dayjs().startOf("year").toDate(),
|
|
216
|
+
end: dayjs().endOf("day").toDate()
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
id: "all_time",
|
|
221
|
+
label: "All time",
|
|
222
|
+
value: {
|
|
223
|
+
start: dayjs("2018-01-01").toDate(),
|
|
224
|
+
end: dayjs().endOf("day").toDate()
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
];
|
|
228
|
+
export var MONTHS = [
|
|
229
|
+
{
|
|
230
|
+
value: 0,
|
|
231
|
+
name: "January",
|
|
232
|
+
shortName: "Jan"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
value: 1,
|
|
236
|
+
name: "February",
|
|
237
|
+
shortName: "Feb"
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
value: 2,
|
|
241
|
+
name: "March",
|
|
242
|
+
shortName: "Mar"
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
value: 3,
|
|
246
|
+
name: "April",
|
|
247
|
+
shortName: "Apr"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
value: 4,
|
|
251
|
+
name: "May",
|
|
252
|
+
shortName: "May"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
value: 5,
|
|
256
|
+
name: "June",
|
|
257
|
+
shortName: "Jun"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
value: 6,
|
|
261
|
+
name: "July",
|
|
262
|
+
shortName: "Jul"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
value: 7,
|
|
266
|
+
name: "August",
|
|
267
|
+
shortName: "Aug"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
value: 8,
|
|
271
|
+
name: "September",
|
|
272
|
+
shortName: "Sep"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
value: 9,
|
|
276
|
+
name: "October",
|
|
277
|
+
shortName: "Oct"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
value: 10,
|
|
281
|
+
name: "November",
|
|
282
|
+
shortName: "Nov"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
value: 11,
|
|
286
|
+
name: "December",
|
|
287
|
+
shortName: "Dec"
|
|
288
|
+
}
|
|
289
|
+
];
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
function _array_like_to_array(arr, len) {
|
|
3
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
4
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
5
|
+
return arr2;
|
|
6
|
+
}
|
|
7
|
+
function _array_with_holes(arr) {
|
|
8
|
+
if (Array.isArray(arr)) return arr;
|
|
9
|
+
}
|
|
10
|
+
function _array_without_holes(arr) {
|
|
11
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
12
|
+
}
|
|
13
|
+
function _iterable_to_array(iter) {
|
|
14
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
15
|
+
}
|
|
16
|
+
function _iterable_to_array_limit(arr, i) {
|
|
17
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
18
|
+
if (_i == null) return;
|
|
19
|
+
var _arr = [];
|
|
20
|
+
var _n = true;
|
|
21
|
+
var _d = false;
|
|
22
|
+
var _s, _e;
|
|
23
|
+
try {
|
|
24
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
25
|
+
_arr.push(_s.value);
|
|
26
|
+
if (i && _arr.length === i) break;
|
|
27
|
+
}
|
|
28
|
+
} catch (err) {
|
|
29
|
+
_d = true;
|
|
30
|
+
_e = err;
|
|
31
|
+
} finally{
|
|
32
|
+
try {
|
|
33
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
34
|
+
} finally{
|
|
35
|
+
if (_d) throw _e;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return _arr;
|
|
39
|
+
}
|
|
40
|
+
function _non_iterable_rest() {
|
|
41
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
42
|
+
}
|
|
43
|
+
function _non_iterable_spread() {
|
|
44
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
45
|
+
}
|
|
46
|
+
function _sliced_to_array(arr, i) {
|
|
47
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
48
|
+
}
|
|
49
|
+
function _to_consumable_array(arr) {
|
|
50
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
51
|
+
}
|
|
52
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
53
|
+
if (!o) return;
|
|
54
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
55
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
56
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
57
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
58
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
59
|
+
}
|
|
60
|
+
import { useState, useCallback } from "react";
|
|
61
|
+
var SelectionType = {
|
|
62
|
+
All: "all",
|
|
63
|
+
Page: "page",
|
|
64
|
+
Multi: "multi",
|
|
65
|
+
Single: "single",
|
|
66
|
+
Some: "some",
|
|
67
|
+
None: "none"
|
|
68
|
+
};
|
|
69
|
+
var defaultResourceIDResolver = function(resource) {
|
|
70
|
+
if ("id" in resource) {
|
|
71
|
+
return resource.id;
|
|
72
|
+
}
|
|
73
|
+
throw new Error("Your resource does not directly contain an `id`. Pass a `resourceIDResolver` to `useIndexResourceState`");
|
|
74
|
+
};
|
|
75
|
+
var useIndexResourceState = function(resources) {
|
|
76
|
+
var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, tmp = _ref.selectedResources, initSelectedResources = tmp === void 0 ? [] : tmp, tmp1 = _ref.allResourcesSelected, initAllResourcesSelected = tmp1 === void 0 ? false : tmp1, _ref_resourceIDResolver = _ref.resourceIDResolver, resourceIDResolver = _ref_resourceIDResolver === void 0 ? defaultResourceIDResolver : _ref_resourceIDResolver, _ref_resourceFilter = _ref.resourceFilter, resourceFilter = _ref_resourceFilter === void 0 ? undefined : _ref_resourceFilter;
|
|
77
|
+
var _useState = _sliced_to_array(useState(initSelectedResources), 2), selectedResources = _useState[0], setSelectedResources = _useState[1];
|
|
78
|
+
var _useState1 = _sliced_to_array(useState(initAllResourcesSelected), 2), allResourcesSelected = _useState1[0], setAllResourcesSelected = _useState1[1];
|
|
79
|
+
var handleSelectionChange = useCallback(function(selectionType, isSelecting, selection) {
|
|
80
|
+
if (selectionType === SelectionType.All) {
|
|
81
|
+
setAllResourcesSelected(isSelecting);
|
|
82
|
+
} else if (allResourcesSelected) {
|
|
83
|
+
setAllResourcesSelected(false);
|
|
84
|
+
}
|
|
85
|
+
switch(selectionType){
|
|
86
|
+
case SelectionType.None:
|
|
87
|
+
setSelectedResources([]);
|
|
88
|
+
break;
|
|
89
|
+
case SelectionType.Single:
|
|
90
|
+
setSelectedResources(function(newSelectedResources) {
|
|
91
|
+
return isSelecting ? _to_consumable_array(newSelectedResources).concat([
|
|
92
|
+
selection
|
|
93
|
+
]) : newSelectedResources.filter(function(id) {
|
|
94
|
+
return id !== selection;
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
break;
|
|
98
|
+
case SelectionType.All:
|
|
99
|
+
if (resourceFilter) {
|
|
100
|
+
var filteredResources = resources.filter(resourceFilter);
|
|
101
|
+
setSelectedResources(isSelecting && selectedResources.length < filteredResources.length ? filteredResources.map(resourceIDResolver) : []);
|
|
102
|
+
} else {
|
|
103
|
+
setSelectedResources(isSelecting ? resources.map(resourceIDResolver) : []);
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
case SelectionType.Page:
|
|
107
|
+
setSelectedResources(resources.map(resourceIDResolver));
|
|
108
|
+
break;
|
|
109
|
+
case SelectionType.Multi:
|
|
110
|
+
if (!selection) break;
|
|
111
|
+
setSelectedResources(function(newSelectedResources) {
|
|
112
|
+
var ids = [];
|
|
113
|
+
var filteredResources = resourceFilter ? resources.filter(resourceFilter) : resources;
|
|
114
|
+
for(var i = selection[0]; i <= selection[1]; i++){
|
|
115
|
+
if (filteredResources.includes(resources[i])) {
|
|
116
|
+
var id = resourceIDResolver(resources[i]);
|
|
117
|
+
if (isSelecting && !newSelectedResources.includes(id) || !isSelecting && newSelectedResources.includes(id)) {
|
|
118
|
+
ids.push(id);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return isSelecting ? _to_consumable_array(newSelectedResources).concat(_to_consumable_array(ids)) : newSelectedResources.filter(function(id) {
|
|
123
|
+
return !ids.includes(id);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}, [
|
|
129
|
+
allResourcesSelected,
|
|
130
|
+
resourceFilter,
|
|
131
|
+
selectedResources.length,
|
|
132
|
+
resources,
|
|
133
|
+
resourceIDResolver
|
|
134
|
+
]);
|
|
135
|
+
var clearSelection = useCallback(function() {
|
|
136
|
+
setSelectedResources([]);
|
|
137
|
+
setAllResourcesSelected(false);
|
|
138
|
+
}, []);
|
|
139
|
+
var removeSelectedResources = useCallback(function(removeResources) {
|
|
140
|
+
var newSelectedResources = selectedResources.filter(function(resource) {
|
|
141
|
+
return !removeResources.includes(resource);
|
|
142
|
+
});
|
|
143
|
+
setSelectedResources(newSelectedResources);
|
|
144
|
+
if (newSelectedResources.length === 0) {
|
|
145
|
+
setAllResourcesSelected(false);
|
|
146
|
+
}
|
|
147
|
+
}, [
|
|
148
|
+
selectedResources
|
|
149
|
+
]);
|
|
150
|
+
return {
|
|
151
|
+
selectedResources: selectedResources,
|
|
152
|
+
allResourcesSelected: allResourcesSelected,
|
|
153
|
+
handleSelectionChange: handleSelectionChange,
|
|
154
|
+
clearSelection: clearSelection,
|
|
155
|
+
removeSelectedResources: removeSelectedResources
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
export { SelectionType, useIndexResourceState };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
function _array_like_to_array(arr, len) {
|
|
2
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
+
return arr2;
|
|
5
|
+
}
|
|
6
|
+
function _array_with_holes(arr) {
|
|
7
|
+
if (Array.isArray(arr)) return arr;
|
|
8
|
+
}
|
|
9
|
+
function _iterable_to_array_limit(arr, i) {
|
|
10
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
11
|
+
if (_i == null) return;
|
|
12
|
+
var _arr = [];
|
|
13
|
+
var _n = true;
|
|
14
|
+
var _d = false;
|
|
15
|
+
var _s, _e;
|
|
16
|
+
try {
|
|
17
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
18
|
+
_arr.push(_s.value);
|
|
19
|
+
if (i && _arr.length === i) break;
|
|
20
|
+
}
|
|
21
|
+
} catch (err) {
|
|
22
|
+
_d = true;
|
|
23
|
+
_e = err;
|
|
24
|
+
} finally{
|
|
25
|
+
try {
|
|
26
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
27
|
+
} finally{
|
|
28
|
+
if (_d) throw _e;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return _arr;
|
|
32
|
+
}
|
|
33
|
+
function _non_iterable_rest() {
|
|
34
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
35
|
+
}
|
|
36
|
+
function _sliced_to_array(arr, i) {
|
|
37
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
38
|
+
}
|
|
39
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
40
|
+
if (!o) return;
|
|
41
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
42
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
43
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
44
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
45
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
46
|
+
}
|
|
47
|
+
import { useState, useEffect } from "react";
|
|
48
|
+
export var useMounted = function() {
|
|
49
|
+
var _useState = _sliced_to_array(useState(), 2), mounted = _useState[0], setMounted = _useState[1];
|
|
50
|
+
// effects run only client-side
|
|
51
|
+
// so we can detect when the component is hydrated/mounted
|
|
52
|
+
// @see https://react.dev/reference/react/useEffect
|
|
53
|
+
useEffect(function() {
|
|
54
|
+
setMounted(true);
|
|
55
|
+
}, []);
|
|
56
|
+
return mounted;
|
|
57
|
+
};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { useDebouncedCallback } from "use-debounce";
|
|
3
|
+
/**
|
|
4
|
+
* A custom hook to manage table scroll state and column widths.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} params - Parameters for the hook.
|
|
7
|
+
* @param {boolean} params.loading - Indicates if data is loading.
|
|
8
|
+
* @param {React.RefObject<HTMLDivElement>} params.containerRef - Reference to the container element.
|
|
9
|
+
* @param {React.RefObject<HTMLDivElement>} params.tableContainerRef - Reference to the table container element.
|
|
10
|
+
* @param {Function} params.setCanScrollLeft - Function to set the scrollable state on the left.
|
|
11
|
+
* @param {Function} params.setCanScrollRight - Function to set the scrollable state on the right.
|
|
12
|
+
* @param {Function} params.setColumnWidths - Function to set the column widths.
|
|
13
|
+
* @param {Function} params.setRowHeights - Function to set the row heights.
|
|
14
|
+
* @param {Function} params.setIsHeaderSticky - Function to set the sticky state of the header.
|
|
15
|
+
* @param {boolean} params.insideModal - Indicates if the table exists in a modal.
|
|
16
|
+
* @param {any} params.children - Table children elements (triggers recalculations).
|
|
17
|
+
*/ var useTableScrollState = function(param) {
|
|
18
|
+
var loading = param.loading, idRef = param.idRef, containerRef = param.containerRef, tableContainerRef = param.tableContainerRef, setCanScrollLeft = param.setCanScrollLeft, setCanScrollRight = param.setCanScrollRight, setColumnWidths = param.setColumnWidths, setRowHeights = param.setRowHeights, setIsHeaderSticky = param.setIsHeaderSticky, stickyHeader = param.stickyHeader, children = param.children, showHoverStates = param.showHoverStates, insideModal = param.insideModal, itemCount = param.itemCount;
|
|
19
|
+
var columnWidthsRef = useRef([]);
|
|
20
|
+
var rowHeightsRef = useRef([]);
|
|
21
|
+
var styleSheetRef = useRef(null);
|
|
22
|
+
var root = document.documentElement;
|
|
23
|
+
var cssValue = getComputedStyle(root).getPropertyValue('--litho-table-header-sticky-at').trim();
|
|
24
|
+
var becomeStickyAt = parseInt(cssValue || 56, 10);
|
|
25
|
+
useEffect(function() {
|
|
26
|
+
if (!styleSheetRef.current) {
|
|
27
|
+
var styleElement = document.createElement("style");
|
|
28
|
+
document.head.appendChild(styleElement);
|
|
29
|
+
styleSheetRef.current = styleElement.sheet;
|
|
30
|
+
}
|
|
31
|
+
}, []);
|
|
32
|
+
useEffect(function() {
|
|
33
|
+
if (!tableContainerRef.current || !showHoverStates) return;
|
|
34
|
+
var container = containerRef.current;
|
|
35
|
+
var rows = container.querySelectorAll("tr[data-position]");
|
|
36
|
+
var handleMouseEnter = function(e) {
|
|
37
|
+
var interactive = e.currentTarget.getAttribute("data-interactive") === "true";
|
|
38
|
+
if (!interactive) return;
|
|
39
|
+
var tbody = e.currentTarget.closest("tbody");
|
|
40
|
+
if (!tbody) return;
|
|
41
|
+
var rows = Array.from(tbody.children).filter(function(row) {
|
|
42
|
+
return row.tagName === "TR";
|
|
43
|
+
});
|
|
44
|
+
var rowIndex = rows.indexOf(e.currentTarget) + 1;
|
|
45
|
+
if (styleSheetRef.current) {
|
|
46
|
+
while(styleSheetRef.current.cssRules.length){
|
|
47
|
+
styleSheetRef.current.deleteRule(0);
|
|
48
|
+
}
|
|
49
|
+
styleSheetRef.current.insertRule('[data-id="'.concat(idRef.current, '"] tbody tr:nth-child(').concat(rowIndex, ") { background-color: var(--color-surface-higher); }"), 0);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
var handleMouseLeave = function() {
|
|
53
|
+
if (styleSheetRef.current) {
|
|
54
|
+
while(styleSheetRef.current.cssRules.length){
|
|
55
|
+
styleSheetRef.current.deleteRule(0);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
rows.forEach(function(row) {
|
|
60
|
+
row.addEventListener("mouseenter", handleMouseEnter);
|
|
61
|
+
row.addEventListener("mouseleave", handleMouseLeave);
|
|
62
|
+
});
|
|
63
|
+
return function() {
|
|
64
|
+
rows.forEach(function(row) {
|
|
65
|
+
row.removeEventListener("mouseenter", handleMouseEnter);
|
|
66
|
+
row.removeEventListener("mouseleave", handleMouseLeave);
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
}, [
|
|
70
|
+
loading,
|
|
71
|
+
containerRef,
|
|
72
|
+
tableContainerRef,
|
|
73
|
+
itemCount
|
|
74
|
+
]);
|
|
75
|
+
var updateScrollState = useCallback(function() {
|
|
76
|
+
if (!tableContainerRef.current) return;
|
|
77
|
+
var container = tableContainerRef.current;
|
|
78
|
+
requestAnimationFrame(function() {
|
|
79
|
+
var scrollLeft = container.scrollLeft, clientWidth = container.clientWidth, scrollWidth = container.scrollWidth;
|
|
80
|
+
setCanScrollLeft(scrollLeft > 0);
|
|
81
|
+
setCanScrollRight(scrollLeft + clientWidth + 4 < scrollWidth);
|
|
82
|
+
var firstRowCells = container.querySelectorAll("tbody > tr:first-child td");
|
|
83
|
+
var rowCells = container.querySelectorAll("tbody > tr");
|
|
84
|
+
columnWidthsRef.current = Array.from(firstRowCells).map(function(td) {
|
|
85
|
+
return td.offsetWidth;
|
|
86
|
+
});
|
|
87
|
+
rowHeightsRef.current = Array.from(rowCells).map(function(tr) {
|
|
88
|
+
return tr.getBoundingClientRect().height;
|
|
89
|
+
});
|
|
90
|
+
setColumnWidths(columnWidthsRef.current);
|
|
91
|
+
setRowHeights(rowHeightsRef.current);
|
|
92
|
+
});
|
|
93
|
+
}, [
|
|
94
|
+
tableContainerRef,
|
|
95
|
+
setCanScrollLeft,
|
|
96
|
+
setCanScrollRight,
|
|
97
|
+
setColumnWidths,
|
|
98
|
+
setRowHeights
|
|
99
|
+
]);
|
|
100
|
+
var checkIfTableIsOutOfView = useCallback(function() {
|
|
101
|
+
if (!tableContainerRef.current || insideModal) return;
|
|
102
|
+
var rect = tableContainerRef.current.getBoundingClientRect();
|
|
103
|
+
var isOutOfView = rect.bottom <= becomeStickyAt + 36 || rect.top >= window.innerHeight;
|
|
104
|
+
setIsHeaderSticky(stickyHeader && !isOutOfView && rect.top <= becomeStickyAt);
|
|
105
|
+
}, [
|
|
106
|
+
tableContainerRef,
|
|
107
|
+
setIsHeaderSticky
|
|
108
|
+
]);
|
|
109
|
+
var debouncedUpdateScrollState = useDebouncedCallback(updateScrollState, 30);
|
|
110
|
+
useEffect(function() {
|
|
111
|
+
if (!tableContainerRef.current) return;
|
|
112
|
+
var container = tableContainerRef.current;
|
|
113
|
+
container.addEventListener("scroll", debouncedUpdateScrollState);
|
|
114
|
+
window.addEventListener("resize", debouncedUpdateScrollState);
|
|
115
|
+
window.addEventListener("scroll", checkIfTableIsOutOfView);
|
|
116
|
+
updateScrollState();
|
|
117
|
+
return function() {
|
|
118
|
+
container.removeEventListener("scroll", debouncedUpdateScrollState);
|
|
119
|
+
window.removeEventListener("resize", debouncedUpdateScrollState);
|
|
120
|
+
window.removeEventListener("scroll", checkIfTableIsOutOfView);
|
|
121
|
+
};
|
|
122
|
+
}, [
|
|
123
|
+
debouncedUpdateScrollState,
|
|
124
|
+
updateScrollState,
|
|
125
|
+
children,
|
|
126
|
+
loading,
|
|
127
|
+
tableContainerRef.current,
|
|
128
|
+
becomeStickyAt
|
|
129
|
+
]);
|
|
130
|
+
return updateScrollState;
|
|
131
|
+
};
|
|
132
|
+
export default useTableScrollState;
|