@kaizen/components 1.20.5 → 1.22.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.
Files changed (68) hide show
  1. package/dist/cjs/{SuccessIcon-562c344e.js → SuccessIcon-0162523d.js} +8 -3
  2. package/dist/cjs/SuccessIcon-0162523d.js.map +1 -0
  3. package/dist/cjs/SuccessIcon-4263d4c3.js +145 -0
  4. package/dist/cjs/SuccessIcon-4263d4c3.js.map +1 -0
  5. package/dist/cjs/dts/BrandMoment/_docs/ExampleHeaders.d.ts +4 -0
  6. package/dist/cjs/dts/Button/Button.d.ts +1 -15
  7. package/dist/cjs/dts/Button/components/GenericButton.d.ts +23 -10
  8. package/dist/cjs/dts/Button/index.d.ts +1 -0
  9. package/dist/cjs/dts/FilterBar/context/FilterBarContext.d.ts +5 -0
  10. package/dist/cjs/dts/FilterBar/context/reducer/filterBarStateReducer.d.ts +2 -0
  11. package/dist/cjs/dts/FilterBar/context/reducer/setupFilterBarState.d.ts +1 -1
  12. package/dist/cjs/dts/FilterBar/context/types.d.ts +3 -2
  13. package/dist/cjs/dts/FilterMultiSelect/FilterMultiSelect.d.ts +3 -6
  14. package/dist/cjs/dts/FilterMultiSelect/_docs/FilterBarExample/DemographicMenu.d.ts +13 -0
  15. package/dist/cjs/dts/FilterMultiSelect/_docs/FilterBarExample/DemographicValueSelect.d.ts +9 -0
  16. package/dist/cjs/dts/FilterMultiSelect/_docs/FilterBarExample/useDemographicData.d.ts +16 -0
  17. package/dist/cjs/dts/FilterMultiSelect/_docs/MockData.d.ts +10 -0
  18. package/dist/cjs/dts/FilterMultiSelect/subcomponents/ListBoxSection/ListBoxSection.d.ts +20 -5
  19. package/dist/cjs/dts/FilterMultiSelect/subcomponents/LoadMoreButton/LoadMoreButton.d.ts +1 -1
  20. package/dist/cjs/dts/FilterMultiSelect/subcomponents/SectionDivider/SectionDivider.d.ts +1 -4
  21. package/dist/cjs/dts/Workflow/subcomponents/Header/Header.d.ts +1 -1
  22. package/dist/cjs/dts/__future__/Workflow/subcomponents/Header/Header.d.ts +1 -1
  23. package/dist/cjs/future.js +1 -1
  24. package/dist/cjs/future.js.map +1 -1
  25. package/dist/cjs/index.css +14 -14
  26. package/dist/cjs/index.js +143 -112
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/esm/{SuccessIcon-30b83808.js → SuccessIcon-2a676737.js} +8 -3
  29. package/dist/esm/SuccessIcon-2a676737.js.map +1 -0
  30. package/dist/esm/SuccessIcon-a903453a.js +138 -0
  31. package/dist/esm/SuccessIcon-a903453a.js.map +1 -0
  32. package/dist/esm/dts/BrandMoment/_docs/ExampleHeaders.d.ts +4 -0
  33. package/dist/esm/dts/Button/Button.d.ts +1 -15
  34. package/dist/esm/dts/Button/components/GenericButton.d.ts +23 -10
  35. package/dist/esm/dts/Button/index.d.ts +1 -0
  36. package/dist/esm/dts/FilterBar/context/FilterBarContext.d.ts +5 -0
  37. package/dist/esm/dts/FilterBar/context/reducer/filterBarStateReducer.d.ts +2 -0
  38. package/dist/esm/dts/FilterBar/context/reducer/setupFilterBarState.d.ts +1 -1
  39. package/dist/esm/dts/FilterBar/context/types.d.ts +3 -2
  40. package/dist/esm/dts/FilterMultiSelect/FilterMultiSelect.d.ts +3 -6
  41. package/dist/esm/dts/FilterMultiSelect/_docs/FilterBarExample/DemographicMenu.d.ts +13 -0
  42. package/dist/esm/dts/FilterMultiSelect/_docs/FilterBarExample/DemographicValueSelect.d.ts +9 -0
  43. package/dist/esm/dts/FilterMultiSelect/_docs/FilterBarExample/useDemographicData.d.ts +16 -0
  44. package/dist/esm/dts/FilterMultiSelect/_docs/MockData.d.ts +10 -0
  45. package/dist/esm/dts/FilterMultiSelect/subcomponents/ListBoxSection/ListBoxSection.d.ts +20 -5
  46. package/dist/esm/dts/FilterMultiSelect/subcomponents/LoadMoreButton/LoadMoreButton.d.ts +1 -1
  47. package/dist/esm/dts/FilterMultiSelect/subcomponents/SectionDivider/SectionDivider.d.ts +1 -4
  48. package/dist/esm/dts/Workflow/subcomponents/Header/Header.d.ts +1 -1
  49. package/dist/esm/dts/__future__/Workflow/subcomponents/Header/Header.d.ts +1 -1
  50. package/dist/esm/future.js +1 -1
  51. package/dist/esm/future.js.map +1 -1
  52. package/dist/esm/index.css +15 -15
  53. package/dist/esm/index.js +143 -112
  54. package/dist/esm/index.js.map +1 -1
  55. package/dist/index.d.ts +42 -19
  56. package/dist/styles.css +1 -1
  57. package/icons/chevron-down.icon.svg +15 -2
  58. package/icons/chevron-up.icon.svg +15 -3
  59. package/icons/clear.icon.svg +15 -2
  60. package/icons/comment-bank.icon.svg +18 -0
  61. package/icons/connect-line.icon.svg +5 -0
  62. package/icons/empty.icon.svg +14 -4
  63. package/icons/insights.icon.svg +5 -0
  64. package/icons/live.icon.svg +8 -0
  65. package/icons/success.icon.svg +15 -7
  66. package/package.json +17 -18
  67. package/dist/cjs/SuccessIcon-562c344e.js.map +0 -1
  68. package/dist/esm/SuccessIcon-30b83808.js.map +0 -1
package/dist/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var SuccessIcon = require('./SuccessIcon-562c344e.js');
3
+ var SuccessIcon = require('./SuccessIcon-0162523d.js');
4
4
  var React = require('react');
5
5
  var classnames = require('classnames');
6
6
  var draftBadge = require('@kaizen/draft-badge');
@@ -9,6 +9,7 @@ var reactFocusOn = require('react-focus-on');
9
9
  var reactPopper = require('react-popper');
10
10
  var datePicker = require('@kaizen/date-picker');
11
11
  var uuid = require('uuid');
12
+ var validateDate$1 = require('@kaizen/date-picker/src/utils/validateDate');
12
13
  var formatDateAsNumeral = require('@kaizen/date-picker/src/utils/formatDateAsNumeral');
13
14
  var isDisabledDate = require('@kaizen/date-picker/src/utils/isDisabledDate');
14
15
  var isSelectingDayInCalendar = require('@kaizen/date-picker/src/utils/isSelectingDayInCalendar');
@@ -16,7 +17,6 @@ var parseDateFromNumeralFormatValue = require('@kaizen/date-picker/src/utils/par
16
17
  var parseDateFromTextFormatValue = require('@kaizen/date-picker/src/utils/parseDateFromTextFormatValue');
17
18
  var draftForm = require('@kaizen/draft-form');
18
19
  var i18nReactIntl = require('@cultureamp/i18n-react-intl');
19
- var validateDate$1 = require('@kaizen/date-picker/src/utils/validateDate');
20
20
  var draftTooltip = require('@kaizen/draft-tooltip');
21
21
  var getLocale = require('@kaizen/date-picker/src/utils/getLocale');
22
22
  var formatDateAsText = require('@kaizen/date-picker/src/utils/formatDateAsText');
@@ -30,7 +30,6 @@ var list = require('@react-stately/list');
30
30
  var button = require('@react-aria/button');
31
31
  var menu$1 = require('@react-aria/menu');
32
32
  var menu = require('@react-stately/menu');
33
- var button$1 = require('@kaizen/button');
34
33
  var loadingSkeleton = require('@kaizen/loading-skeleton');
35
34
  var focus = require('@react-aria/focus');
36
35
  var utils = require('@react-aria/utils');
@@ -323,6 +322,7 @@ var updateDependentFilters = function(state) {
323
322
  if (!isUsable) {
324
323
  state.activeFilterIds["delete"](id);
325
324
  state.values[id] = void 0;
325
+ state.hasUpdatedValues = true;
326
326
  return;
327
327
  }
328
328
  if (!state.filters[id].isRemovable || state.values[id] !== void 0) {
@@ -346,13 +346,15 @@ var updateValues = function(state, values) {
346
346
  state.activeFilterIds.add(id);
347
347
  }
348
348
  });
349
- return updateDependentFilters(SuccessIcon.__assign(SuccessIcon.__assign({}, state), { values }));
349
+ return updateDependentFilters(SuccessIcon.__assign(SuccessIcon.__assign({}, state), { hasUpdatedValues: true, values }));
350
350
  };
351
351
 
352
352
  var filterBarStateReducer = function(state, action) {
353
353
  switch (action.type) {
354
354
  case "update_values":
355
355
  return SuccessIcon.__assign({}, updateValues(state, action.values));
356
+ case "complete_update_values":
357
+ return SuccessIcon.__assign(SuccessIcon.__assign({}, state), { hasUpdatedValues: false });
356
358
  case "update_single_filter":
357
359
  return SuccessIcon.__assign(SuccessIcon.__assign({}, state), { filters: updateSingleFilter(state, action.id, action.data) });
358
360
  case "activate_filter":
@@ -361,11 +363,11 @@ var filterBarStateReducer = function(state, action) {
361
363
  case "deactivate_filter":
362
364
  state.activeFilterIds["delete"](action.id);
363
365
  state.values[action.id] = void 0;
364
- return SuccessIcon.__assign({}, updateDependentFilters(state));
366
+ return SuccessIcon.__assign(SuccessIcon.__assign({}, updateDependentFilters(state)), { hasUpdatedValues: true });
365
367
  }
366
368
  };
367
369
 
368
- var setupFilterBarState = function(filters) {
370
+ var setupFilterBarState = function(filters, values) {
369
371
  var state = filters.reduce(function(baseState, _a) {
370
372
  var id = _a.id, name = _a.name, isRemovable = _a.isRemovable, isUsableWhen = _a.isUsableWhen;
371
373
  var hasDependency = isUsableWhen !== void 0;
@@ -375,25 +377,23 @@ var setupFilterBarState = function(filters) {
375
377
  isRemovable: isRemovable !== null && isRemovable !== void 0 ? isRemovable : false,
376
378
  isUsableWhen,
377
379
  isOpen: false,
378
- // A dependent filter is set to `null` here as it
379
- // will be re-evaluated in the `update_values` dispatch action.
380
- isUsable: hasDependency ? null : true
380
+ isUsable: true
381
381
  };
382
382
  if (hasDependency) {
383
383
  baseState.dependentFilterIds.add(id);
384
384
  }
385
+ if (!isRemovable || values[id] !== void 0) {
386
+ baseState.activeFilterIds.add(id);
387
+ }
385
388
  return baseState;
386
389
  }, {
387
390
  filters: {},
388
- // These will be set by the `update_values` dispatch action.
389
391
  activeFilterIds: /* @__PURE__ */ new Set(),
390
- // To prevent an infinite loop calculating dependent filters,
391
- // `values` is set to `null` and default values will be
392
- // set by the `update_values` dispatch action.
393
- values: null,
394
- dependentFilterIds: /* @__PURE__ */ new Set()
392
+ values,
393
+ dependentFilterIds: /* @__PURE__ */ new Set(),
394
+ hasUpdatedValues: false
395
395
  });
396
- return state;
396
+ return updateDependentFilters(state);
397
397
  };
398
398
 
399
399
  var checkArraysMatch$1 = function(a1, a2) {
@@ -451,7 +451,7 @@ var FilterBarProvider = function(_a) {
451
451
  var mappedFilters = React.useMemo(function() {
452
452
  return getMappedFilters(filters);
453
453
  }, [filters]);
454
- var _b = React.useReducer(filterBarStateReducer, setupFilterBarState(filters)), state = _b[0], dispatch = _b[1];
454
+ var _b = React.useReducer(filterBarStateReducer, setupFilterBarState(filters, values)), state = _b[0], dispatch = _b[1];
455
455
  var value = {
456
456
  getFilterState: function(id) {
457
457
  return SuccessIcon.__assign(SuccessIcon.__assign({}, state.filters[id]), { isActive: state.activeFilterIds.has(id), value: values[id] });
@@ -462,6 +462,12 @@ var FilterBarProvider = function(_a) {
462
462
  toggleOpenFilter: function(id, isOpen) {
463
463
  dispatch({ type: "update_single_filter", id, data: { isOpen } });
464
464
  },
465
+ setFilterOpenState: function(id, isOpen) {
466
+ dispatch({ type: "update_single_filter", id, data: { isOpen } });
467
+ },
468
+ openFilter: function(id) {
469
+ dispatch({ type: "update_single_filter", id, data: { isOpen: true } });
470
+ },
465
471
  updateValue: function(id, newValue) {
466
472
  var _a2;
467
473
  dispatch({
@@ -487,14 +493,15 @@ var FilterBarProvider = function(_a) {
487
493
  }
488
494
  };
489
495
  React.useEffect(function() {
490
- var shouldUpdate = state.values === null || checkShouldUpdateValues(state, values);
496
+ var shouldUpdate = checkShouldUpdateValues(state, values);
491
497
  if (shouldUpdate)
492
498
  dispatch({ type: "update_values", values: SuccessIcon.__assign({}, values) });
493
499
  }, [values]);
494
500
  React.useEffect(function() {
495
- var shouldUpdate = state.values !== null && checkShouldUpdateValues(state, values);
496
- if (shouldUpdate)
501
+ if (state.hasUpdatedValues) {
497
502
  onValuesChange(SuccessIcon.__assign({}, state.values));
503
+ dispatch({ type: "complete_update_values" });
504
+ }
498
505
  }, [state]);
499
506
  var activeFilters = Array.from(state.activeFilterIds, function(id) {
500
507
  return mappedFilters[id];
@@ -509,6 +516,79 @@ var FilterBarProvider = function(_a) {
509
516
  );
510
517
  };
511
518
 
519
+ var styles$E = {"labelledMessage":"LabelledMessage-module_labelledMessage__8hqzY","labelSeparator":"LabelledMessage-module_labelSeparator__f3zFN"};
520
+
521
+ var LabelledMessage = function(_a) {
522
+ var label = _a.label, message = _a.message;
523
+ return React.createElement(
524
+ "span",
525
+ { className: styles$E.labelledMessage },
526
+ React.createElement("span", null, label),
527
+ React.createElement("span", { className: styles$E.labelSeparator }, ":"),
528
+ React.createElement("span", null, message)
529
+ );
530
+ };
531
+ LabelledMessage.displayName = "LabelledMessage";
532
+
533
+ var getNodeText = function(node) {
534
+ if (!node)
535
+ return "";
536
+ if (typeof node === "string" || typeof node === "number")
537
+ return node;
538
+ if (node instanceof Array)
539
+ return node.map(getNodeText).join("");
540
+ if (React.isValidElement(node))
541
+ return getNodeText(node.props.children);
542
+ return "";
543
+ };
544
+
545
+ var getDateValidationHandler = function(_a) {
546
+ var onValidate = _a.onValidate, setInbuiltValidationMessage = _a.setInbuiltValidationMessage, inputLabel = _a.inputLabel;
547
+ return function(validationResponse) {
548
+ if (onValidate)
549
+ return onValidate(validationResponse);
550
+ var validationMessage = validationResponse.validationMessage;
551
+ if (!validationMessage) {
552
+ setInbuiltValidationMessage(void 0);
553
+ return;
554
+ }
555
+ setInbuiltValidationMessage({
556
+ status: validationMessage.status,
557
+ message: inputLabel ? React.createElement(LabelledMessage, { label: "".concat(getNodeText(inputLabel)), message: validationMessage.message }) : validationMessage.message
558
+ });
559
+ };
560
+ };
561
+
562
+ var validateDate = function(args) {
563
+ var response = validateDate$1.validateDate(args);
564
+ var _a = response.validationResponse, status = _a.status, validationMessage = _a.validationMessage, rest = SuccessIcon.__rest(_a, ["status", "validationMessage"]);
565
+ return SuccessIcon.__assign(SuccessIcon.__assign({}, response), { validationResponse: SuccessIcon.__assign(SuccessIcon.__assign({}, rest), { validationMessage: status && validationMessage ? { status, message: validationMessage } : void 0 }) });
566
+ };
567
+
568
+ var useDateValidation = function(_a) {
569
+ var inputLabel = _a.inputLabel, disabledDays = _a.disabledDays, validationMessage = _a.validationMessage, onValidate = _a.onValidate;
570
+ var _b = React.useState(), inbuiltValidationMessage = _b[0], setInbuiltValidationMessage = _b[1];
571
+ var shouldUseInbuiltDateValidation = onValidate === void 0;
572
+ var updateValidation = getDateValidationHandler({
573
+ onValidate,
574
+ setInbuiltValidationMessage,
575
+ inputLabel
576
+ });
577
+ var validateSingleDate = function(_a2) {
578
+ var date = _a2.date, inputValue = _a2.inputValue;
579
+ return validateDate({
580
+ date,
581
+ inputValue,
582
+ disabledDays
583
+ });
584
+ };
585
+ return {
586
+ validationMessage: shouldUseInbuiltDateValidation ? inbuiltValidationMessage : validationMessage,
587
+ validateDate: validateSingleDate,
588
+ updateValidation
589
+ };
590
+ };
591
+
512
592
  var transformDateToInputValue = function(date, disabledDays, locale) {
513
593
  return date ? datePicker.formatDateAsText(date, disabledDays, locale) : "";
514
594
  };
@@ -563,20 +643,6 @@ var useDateInputHandlers = function(_a) {
563
643
  };
564
644
  };
565
645
 
566
- var styles$E = {"labelledMessage":"LabelledMessage-module_labelledMessage__8hqzY","labelSeparator":"LabelledMessage-module_labelSeparator__f3zFN"};
567
-
568
- var LabelledMessage = function(_a) {
569
- var label = _a.label, message = _a.message;
570
- return React.createElement(
571
- "span",
572
- { className: styles$E.labelledMessage },
573
- React.createElement("span", null, label),
574
- React.createElement("span", { className: styles$E.labelSeparator }, ":"),
575
- React.createElement("span", null, message)
576
- );
577
- };
578
- LabelledMessage.displayName = "LabelledMessage";
579
-
580
646
  var formatDescriptionInputFormat = function(locale) {
581
647
  var _a;
582
648
  return (_a = locale.formatLong) === null || _a === void 0 ? void 0 : _a.date({ width: "short" }).toLowerCase();
@@ -730,65 +796,6 @@ var FilterDatePicker = function(_a) {
730
796
  };
731
797
  FilterDatePicker.displayName = "FilterDatePicker";
732
798
 
733
- var getNodeText = function(node) {
734
- if (!node)
735
- return "";
736
- if (typeof node === "string" || typeof node === "number")
737
- return node;
738
- if (node instanceof Array)
739
- return node.map(getNodeText).join("");
740
- if (React.isValidElement(node))
741
- return getNodeText(node.props.children);
742
- return "";
743
- };
744
-
745
- var getDateValidationHandler = function(_a) {
746
- var onValidate = _a.onValidate, setInbuiltValidationMessage = _a.setInbuiltValidationMessage, inputLabel = _a.inputLabel;
747
- return function(validationResponse) {
748
- if (onValidate)
749
- return onValidate(validationResponse);
750
- var validationMessage = validationResponse.validationMessage;
751
- if (!validationMessage) {
752
- setInbuiltValidationMessage(void 0);
753
- return;
754
- }
755
- setInbuiltValidationMessage({
756
- status: validationMessage.status,
757
- message: inputLabel ? React.createElement(LabelledMessage, { label: "".concat(getNodeText(inputLabel)), message: validationMessage.message }) : validationMessage.message
758
- });
759
- };
760
- };
761
-
762
- var validateDate = function(args) {
763
- var response = validateDate$1.validateDate(args);
764
- var _a = response.validationResponse, status = _a.status, validationMessage = _a.validationMessage, rest = SuccessIcon.__rest(_a, ["status", "validationMessage"]);
765
- return SuccessIcon.__assign(SuccessIcon.__assign({}, response), { validationResponse: SuccessIcon.__assign(SuccessIcon.__assign({}, rest), { validationMessage: status && validationMessage ? { status, message: validationMessage } : void 0 }) });
766
- };
767
-
768
- var useDateValidation = function(_a) {
769
- var inputLabel = _a.inputLabel, disabledDays = _a.disabledDays, validationMessage = _a.validationMessage, onValidate = _a.onValidate;
770
- var _b = React.useState(), inbuiltValidationMessage = _b[0], setInbuiltValidationMessage = _b[1];
771
- var shouldUseInbuiltDateValidation = onValidate === void 0;
772
- var updateValidation = getDateValidationHandler({
773
- onValidate,
774
- setInbuiltValidationMessage,
775
- inputLabel
776
- });
777
- var validateSingleDate = function(_a2) {
778
- var date = _a2.date, inputValue = _a2.inputValue;
779
- return validateDate({
780
- date,
781
- inputValue,
782
- disabledDays
783
- });
784
- };
785
- return {
786
- validationMessage: shouldUseInbuiltDateValidation ? inbuiltValidationMessage : validationMessage,
787
- validateDate: validateSingleDate,
788
- updateValidation
789
- };
790
- };
791
-
792
799
  var ChevronDownIcon = function(props) {
793
800
  return React.createElement(
794
801
  SuccessIcon.SVG,
@@ -908,7 +915,7 @@ FilterBarButton.displayName = "FilterBar.Button";
908
915
 
909
916
  var FilterBarDatePicker = function(_a) {
910
917
  var id = _a.id, onDateChange = _a.onDateChange, _b = _a.locale, locale = _b === void 0 ? "en-AU" : _b, props = SuccessIcon.__rest(_a, ["id", "onDateChange", "locale"]);
911
- var _c = useFilterBarContext(), getFilterState = _c.getFilterState, toggleOpenFilter = _c.toggleOpenFilter, updateValue = _c.updateValue;
918
+ var _c = useFilterBarContext(), getFilterState = _c.getFilterState, setFilterOpenState = _c.setFilterOpenState, updateValue = _c.updateValue;
912
919
  if (!id)
913
920
  throw Error("Missing `id` prop in FilterBarDatePicker");
914
921
  var filterState = getFilterState(id);
@@ -918,7 +925,7 @@ var FilterBarDatePicker = function(_a) {
918
925
  updateValue(id, key);
919
926
  onDateChange === null || onDateChange === void 0 ? void 0 : onDateChange(key);
920
927
  }, isOpen: filterState.isOpen, setIsOpen: function(open) {
921
- return toggleOpenFilter(id, open);
928
+ return setFilterOpenState(id, open);
922
929
  } }));
923
930
  };
924
931
  FilterBarDatePicker.displayName = "FilterBar.DatePicker";
@@ -1275,14 +1282,14 @@ FilterDateRangePicker.displayName = "FilterDateRangePicker";
1275
1282
 
1276
1283
  var FilterBarDateRangePicker = function(_a) {
1277
1284
  var id = _a.id, onRangeChange = _a.onRangeChange, _b = _a.locale, locale = _b === void 0 ? "en-AU" : _b, props = SuccessIcon.__rest(_a, ["id", "onRangeChange", "locale"]);
1278
- var _c = useFilterBarContext(), getFilterState = _c.getFilterState, toggleOpenFilter = _c.toggleOpenFilter, updateValue = _c.updateValue;
1285
+ var _c = useFilterBarContext(), getFilterState = _c.getFilterState, setFilterOpenState = _c.setFilterOpenState, updateValue = _c.updateValue;
1279
1286
  if (!id)
1280
1287
  throw Error("Missing `id` prop in FilterBarDateRangePicker");
1281
1288
  var filterState = getFilterState(id);
1282
1289
  return React.createElement(FilterDateRangePicker, SuccessIcon.__assign({}, props, { id, label: filterState.name, renderTrigger: function(triggerProps) {
1283
1290
  return React.createElement(FilterBarButton, SuccessIcon.__assign({}, triggerProps, { id, isRemovable: filterState.isRemovable }));
1284
1291
  }, isOpen: filterState.isOpen, setIsOpen: function(open) {
1285
- return toggleOpenFilter(id, open);
1292
+ return setFilterOpenState(id, open);
1286
1293
  }, selectedRange: filterState.value, onRangeChange: function(range) {
1287
1294
  updateValue(id, range);
1288
1295
  onRangeChange === null || onRangeChange === void 0 ? void 0 : onRangeChange(range);
@@ -1351,7 +1358,7 @@ var useSelectionContext = function() {
1351
1358
  var SelectionConsumer = SelectionContext.Consumer;
1352
1359
  SelectionProvider.displayName = "SelectionProvider";
1353
1360
 
1354
- var styles$t = {"listBox":"ListBox-module_listBox__UNOzJ","overflown":"ListBox-module_overflown__ATtxj","hidden":"ListBox-module_hidden__tQP6S"};
1361
+ var styles$t = {"listBox":"ListBox-module_listBox__UNOzJ","overflown":"ListBox-module_overflown__ATtxj","hidden":"ListBox-module_hidden__tQP6S","noResultsWrapper":"ListBox-module_noResultsWrapper__iJ-x6"};
1355
1362
 
1356
1363
  var getItemsFromKeys = function(items, keys) {
1357
1364
  var itemKeys = Array.from(keys);
@@ -1399,7 +1406,7 @@ var ListBox$1 = function(_a) {
1399
1406
  return React.createElement(
1400
1407
  React.Fragment,
1401
1408
  null,
1402
- React.createElement("div", null, children(itemsState)),
1409
+ React.createElement("div", { className: styles$t.noResultsWrapper }, children(itemsState)),
1403
1410
  React.createElement("ul", { ref: listRef, className: styles$t.hidden })
1404
1411
  );
1405
1412
  }
@@ -1407,15 +1414,36 @@ var ListBox$1 = function(_a) {
1407
1414
  };
1408
1415
  ListBox$1.displayName = "FilterMultiSelect.ListBox";
1409
1416
 
1410
- var styles$s = {"listBoxSection":"ListBoxSection-module_listBoxSection__zH8wd"};
1417
+ var styles$s = {"listBoxSection":"ListBoxSection-module_listBoxSection__zH8wd","listBoxSectionHeader":"ListBoxSection-module_listBoxSectionHeader__NcTZR"};
1411
1418
 
1412
1419
  var ListBoxSection$1 = function(_a) {
1413
- var items = _a.items, sectionName = _a.sectionName, children = _a.children;
1414
- return React.createElement("div", { "aria-label": sectionName, className: styles$s.listBoxSection }, Array.from(items).map(function(node) {
1415
- return node != void 0 && children(node);
1416
- }));
1420
+ var items = _a.items, children = _a.children, sectionName = _a.sectionName, restProps = SuccessIcon.__rest(_a, ["items", "children", "sectionName"]);
1421
+ var listSectionId = React.useState(uuid.v4())[0];
1422
+ var hasSectionHeader = "sectionHeader" in restProps;
1423
+ return React.createElement(
1424
+ "li",
1425
+ { role: "presentation" },
1426
+ React.createElement(
1427
+ "ul",
1428
+ { className: styles$s.listBoxSection, "aria-label": !hasSectionHeader ? sectionName : void 0, "aria-labelledby": hasSectionHeader ? listSectionId : void 0, role: "group" },
1429
+ hasSectionHeader && React.createElement(
1430
+ "li",
1431
+ { className: styles$s.listBoxSectionHeader, id: listSectionId, role: "presentation" },
1432
+ sectionName && React.createElement(
1433
+ a11y.VisuallyHidden,
1434
+ null,
1435
+ sectionName,
1436
+ ". "
1437
+ ),
1438
+ restProps.sectionHeader
1439
+ ),
1440
+ Array.from(items).map(function(node) {
1441
+ return node != void 0 && children(node);
1442
+ })
1443
+ )
1444
+ );
1417
1445
  };
1418
- ListBoxSection$1.displayName = "FilterMultiSelect.ListBoxSection";
1446
+ ListBoxSection$1.displayName = "ListBoxSection";
1419
1447
 
1420
1448
  var styles$r = {"container":"LoadMoreButton-module_container__5VoUY"};
1421
1449
 
@@ -1423,7 +1451,7 @@ var LoadMoreButton = function(props) {
1423
1451
  return React.createElement(
1424
1452
  "div",
1425
1453
  { className: styles$r.container },
1426
- React.createElement(button$1.Button, SuccessIcon.__assign({}, props, { fullWidth: true }))
1454
+ React.createElement(Button, SuccessIcon.__assign({}, props, { fullWidth: true }))
1427
1455
  );
1428
1456
  };
1429
1457
  LoadMoreButton.displayName = "FilterMultiSelect.LoadMoreButton";
@@ -1639,9 +1667,12 @@ SearchInput.displayName = "FilterMultiSelect.SearchInput";
1639
1667
  var styles$j = {"divider":"SectionDivider-module_divider__zlsWs"};
1640
1668
 
1641
1669
  var SectionDivider$1 = function() {
1642
- return React.createElement(draftDivider.Divider, { classNameOverride: styles$j.divider, variant: "canvas" });
1670
+ return React.createElement(
1671
+ "li",
1672
+ { className: styles$j.divider, "aria-hidden": "true" },
1673
+ React.createElement(draftDivider.Divider, { variant: "canvas" })
1674
+ );
1643
1675
  };
1644
- SectionDivider$1.displayName = "FilterMultiSelect.SectionDivider";
1645
1676
 
1646
1677
  var styles$i = {"button":"SelectionControlButton-module_button__F6wec","isDisabled":"SelectionControlButton-module_isDisabled__lYOrG"};
1647
1678
 
@@ -1778,7 +1809,7 @@ var convertConsumableFormatIntoSelection = function(value) {
1778
1809
  };
1779
1810
  var FilterBarMultiSelect = function(_a) {
1780
1811
  var id = _a.id, propsItems = _a.items, children = _a.children, onSelectionChange = _a.onSelectionChange, props = SuccessIcon.__rest(_a, ["id", "items", "children", "onSelectionChange"]);
1781
- var _b = useFilterBarContext(), getFilterState = _b.getFilterState, toggleOpenFilter = _b.toggleOpenFilter, updateValue = _b.updateValue, hideFilter = _b.hideFilter;
1812
+ var _b = useFilterBarContext(), getFilterState = _b.getFilterState, setFilterOpenState = _b.setFilterOpenState, updateValue = _b.updateValue, hideFilter = _b.hideFilter;
1782
1813
  var _c = React.useState(propsItems), items = _c[0], setItems = _c[1];
1783
1814
  if (!id)
1784
1815
  throw Error("Missing `id` prop in FilterBarMultiSelect");
@@ -1813,7 +1844,7 @@ var FilterBarMultiSelect = function(_a) {
1813
1844
  items,
1814
1845
  isOpen: filterState.isOpen,
1815
1846
  onOpenChange: function(open) {
1816
- return toggleOpenFilter(id, open);
1847
+ return setFilterOpenState(id, open);
1817
1848
  },
1818
1849
  trigger: function() {
1819
1850
  var triggerProps = {
@@ -1997,7 +2028,7 @@ FilterSelect.ItemDefaultRender = ListItem;
1997
2028
 
1998
2029
  var FilterBarSelect = function(_a) {
1999
2030
  var id = _a.id, propsItems = _a.items, onSelectionChange = _a.onSelectionChange, props = SuccessIcon.__rest(_a, ["id", "items", "onSelectionChange"]);
2000
- var _b = useFilterBarContext(), getFilterState = _b.getFilterState, toggleOpenFilter = _b.toggleOpenFilter, updateValue = _b.updateValue;
2031
+ var _b = useFilterBarContext(), getFilterState = _b.getFilterState, setFilterOpenState = _b.setFilterOpenState, updateValue = _b.updateValue;
2001
2032
  var _c = React.useState(propsItems), items = _c[0], setItems = _c[1];
2002
2033
  if (!id)
2003
2034
  throw Error("Missing `id` prop in FilterBarSelect");
@@ -2023,7 +2054,7 @@ var FilterBarSelect = function(_a) {
2023
2054
  updateValue(id, key);
2024
2055
  onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(key);
2025
2056
  }, isOpen: filterState.isOpen, setIsOpen: function(open) {
2026
- return toggleOpenFilter(id, open);
2057
+ return setFilterOpenState(id, open);
2027
2058
  } }));
2028
2059
  };
2029
2060
  FilterBarSelect.displayName = "FilterBarSelect";