@jobber/components 4.45.0 → 4.45.1-visual-upd.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.
Files changed (123) hide show
  1. package/Chip.d.ts +1 -0
  2. package/Chip.js +17 -0
  3. package/dist/Autocomplete/index.js +7 -7
  4. package/dist/Banner/index.js +3 -3
  5. package/dist/Button/index.js +2 -2
  6. package/dist/{Button-d89f2271.js → Button-db6114a6.js} +1 -1
  7. package/dist/ButtonDismiss/index.js +3 -3
  8. package/dist/{ButtonDismiss-250840a4.js → ButtonDismiss-1ccb84ec.js} +1 -1
  9. package/dist/Card/index.js +5 -5
  10. package/dist/{Card-69304e99.js → Card-116af709.js} +3 -3
  11. package/dist/Checkbox/index.js +3 -3
  12. package/dist/{Checkbox-eac63b7f.js → Checkbox-bc4bc968.js} +1 -1
  13. package/dist/Chip/Chip.d.ts +8 -0
  14. package/dist/Chip/components/ChipDismissible/ChipDismissible.d.ts +3 -0
  15. package/dist/Chip/components/ChipPrefix/Chip.Prefix.d.ts +2 -0
  16. package/dist/Chip/components/ChipSelectable/ChipSelectable.d.ts +3 -0
  17. package/dist/Chip/components/ChipSuffix/Chip.Suffix.d.ts +6 -0
  18. package/dist/Chip/hooks/index.d.ts +1 -0
  19. package/dist/Chip/hooks/useChildComponent.d.ts +8 -0
  20. package/dist/Chip/index.d.ts +3 -0
  21. package/dist/Chip/index.js +85 -0
  22. package/dist/{Chip-4d8e6370.js → Chip-b603ceaf.js} +5 -5
  23. package/dist/Chips/index.js +5 -5
  24. package/dist/Combobox/Combobox.d.ts +6 -0
  25. package/dist/Combobox/ComboboxProvider.d.ts +2 -0
  26. package/dist/Combobox/components/ComboboxContent/ComboboxContent.d.ts +17 -6
  27. package/dist/Combobox/components/ComboboxContent/ComboboxList.d.ts +9 -8
  28. package/dist/Combobox/hooks/useComboboxContent.d.ts +7 -3
  29. package/dist/Combobox/index.js +64 -30
  30. package/dist/ConfirmationModal/index.js +9 -9
  31. package/dist/{ConfirmationModal-92f07027.js → ConfirmationModal-285c3cbe.js} +2 -2
  32. package/dist/DataDump/index.js +6 -6
  33. package/dist/DataList/DataList.d.ts +1 -1
  34. package/dist/DataList/DataList.types.d.ts +29 -6
  35. package/dist/DataList/DataList.utils.d.ts +1 -1
  36. package/dist/DataList/components/DataListAction/DataListAction.d.ts +2 -3
  37. package/dist/DataList/components/DataListActions/DataListActions.d.ts +3 -0
  38. package/dist/DataList/components/DataListActions/index.d.ts +1 -0
  39. package/dist/DataList/components/DataListHeader/DataListHeader.d.ts +2 -0
  40. package/dist/DataList/components/DataListHeader/index.d.ts +1 -0
  41. package/dist/DataList/components/DataListItem/DataListItem.d.ts +2 -2
  42. package/dist/DataList/components/DataListItemActions/DataListItemActions.d.ts +1 -5
  43. package/dist/DataList/components/DataListItemActions/index.d.ts +0 -1
  44. package/dist/DataList/components/DataListItemActionsOverflow/DataListItemActionsOverflow.d.ts +7 -0
  45. package/dist/DataList/components/DataListItemActionsOverflow/index.d.ts +1 -0
  46. package/dist/DataList/components/DataListItems/DataListItems.d.ts +7 -0
  47. package/dist/DataList/components/DataListItems/index.d.ts +1 -0
  48. package/dist/DataList/components/DataListLayout/DataListLayout.d.ts +2 -2
  49. package/dist/DataList/components/DataListLoadingState/DataListLoadingState.d.ts +2 -9
  50. package/dist/DataList/components/DataListSearch/DataListSearch.d.ts +1 -1
  51. package/dist/DataList/context/DataListContext/DataListContext.d.ts +3 -3
  52. package/dist/DataList/hooks/useActiveLayout.d.ts +4 -0
  53. package/dist/DataList/index.js +396 -365
  54. package/dist/DataTable/index.js +6 -6
  55. package/dist/DatePicker/index.js +3 -3
  56. package/dist/{DatePicker-39d2dc8b.js → DatePicker-49213434.js} +2 -2
  57. package/dist/DescriptionList/index.js +1 -1
  58. package/dist/Disclosure/index.js +1 -1
  59. package/dist/Drawer/index.js +4 -4
  60. package/dist/Emphasis/index.js +2 -2
  61. package/dist/{Emphasis-cc3456ac.js → Emphasis-e10dde65.js} +1 -1
  62. package/dist/FeatureSwitch/index.js +7 -7
  63. package/dist/FormField/index.js +5 -5
  64. package/dist/{FormField-bef41ec9.js → FormField-fa9254dc.js} +3 -3
  65. package/dist/FormatFile/index.js +10 -10
  66. package/dist/{FormatFile-a470c0f2.js → FormatFile-6423c3b5.js} +4 -4
  67. package/dist/Gallery/index.js +11 -11
  68. package/dist/Heading/index.js +2 -2
  69. package/dist/{Heading-4562900a.js → Heading-4cde9989.js} +1 -1
  70. package/dist/InlineLabel/index.js +2 -2
  71. package/dist/{InlineLabel-3d461632.js → InlineLabel-a24706c4.js} +1 -1
  72. package/dist/InputAvatar/index.js +3 -3
  73. package/dist/InputDate/index.js +6 -6
  74. package/dist/InputEmail/index.js +5 -5
  75. package/dist/InputFile/index.js +3 -3
  76. package/dist/{InputFile-d327dee3.js → InputFile-25c3369b.js} +2 -2
  77. package/dist/InputNumber/index.js +6 -6
  78. package/dist/{InputNumber-5640fb55.js → InputNumber-ea9fcee1.js} +1 -1
  79. package/dist/InputPassword/index.js +5 -5
  80. package/dist/InputPhoneNumber/index.js +5 -5
  81. package/dist/InputText/index.js +6 -6
  82. package/dist/{InputText-5ac5cfe0.js → InputText-ab237501.js} +1 -1
  83. package/dist/InputTime/index.js +5 -5
  84. package/dist/InputValidation/index.js +3 -3
  85. package/dist/{InputValidation-4e809bdd.js → InputValidation-377d6c62.js} +1 -1
  86. package/dist/LightBox/index.js +4 -4
  87. package/dist/{LightBox-02ca409e.js → LightBox-93ef99b9.js} +2 -2
  88. package/dist/List/index.js +5 -5
  89. package/dist/Markdown/index.js +5 -5
  90. package/dist/{Markdown-b37cf9ec.js → Markdown-d53b01bf.js} +3 -3
  91. package/dist/Menu/index.js +3 -3
  92. package/dist/{Menu-cec53b50.js → Menu-2e64307a.js} +2 -2
  93. package/dist/Modal/index.js +5 -5
  94. package/dist/{Modal-dcdc0032.js → Modal-c17cc105.js} +3 -3
  95. package/dist/MultiSelect/index.js +3 -3
  96. package/dist/{Option-9f4a65da.js → Option-07a24acd.js} +1 -1
  97. package/dist/Page/index.js +7 -7
  98. package/dist/Popover/index.js +4 -4
  99. package/dist/{Popover-d401fb54.js → Popover-7c966790.js} +1 -1
  100. package/dist/RadioGroup/index.js +3 -3
  101. package/dist/{RadioGroup-46833fac.js → RadioGroup-9bdd8a59.js} +1 -1
  102. package/dist/RecurringSelect/index.js +8 -8
  103. package/dist/Select/index.js +6 -6
  104. package/dist/StatusLabel/index.js +2 -2
  105. package/dist/Switch/index.js +2 -2
  106. package/dist/{Switch-165f01e3.js → Switch-cc9b645c.js} +1 -1
  107. package/dist/Tabs/index.js +1 -1
  108. package/dist/Text/index.js +2 -2
  109. package/dist/{Text-59bde58c.js → Text-54334431.js} +1 -1
  110. package/dist/Toast/index.js +2 -2
  111. package/dist/Tooltip/index.js +1 -3
  112. package/dist/{Tooltip-59dbab5b.js → Tooltip-3f9048ce.js} +5 -6
  113. package/dist/Typography/index.js +1 -1
  114. package/dist/{Typography-9bff9c91.js → Typography-83915c54.js} +2 -2
  115. package/package.json +5 -5
  116. package/rollup.config.js +2 -5
  117. package/dist/DataList/components/DataListItemActions/DataListItemActionsOverflow.d.ts +0 -7
  118. package/dist/DataList/components/DataListLayoutInternal/DataListHeader.d.ts +0 -11
  119. package/dist/DataList/components/DataListLayoutInternal/DataListItems.d.ts +0 -10
  120. package/dist/DataList/components/DataListLayoutInternal/DataListLayoutInternal.d.ts +0 -10
  121. package/dist/DataList/components/DataListLayoutInternal/index.d.ts +0 -3
  122. package/dist/DataList/hooks/useLayoutMediaQueries.d.ts +0 -1
  123. /package/dist/DataList/components/{DataListLayoutInternal → DataListHeader}/DataListHeaderCheckbox.d.ts +0 -0
package/Chip.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./dist/Chip";
package/Chip.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+
7
+ var Chip = require("./dist/Chip");
8
+
9
+ Object.keys(Chip).forEach(function(key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ Object.defineProperty(exports, key, {
12
+ enumerable: true,
13
+ get: function get() {
14
+ return Chip[key];
15
+ },
16
+ });
17
+ });
@@ -10,18 +10,18 @@ var classnames = require('classnames');
10
10
  var useEventListener = require('@use-it/event-listener');
11
11
  var ReactDOM = require('react-dom');
12
12
  var reactPopper = require('react-popper');
13
- var Text = require('../Text-59bde58c.js');
13
+ var Text = require('../Text-54334431.js');
14
14
  var Icon = require('../Icon-405a216c.js');
15
- var Heading = require('../Heading-4562900a.js');
16
- var InputText = require('../InputText-5ac5cfe0.js');
17
- require('../Typography-9bff9c91.js');
15
+ var Heading = require('../Heading-4cde9989.js');
16
+ var InputText = require('../InputText-ab237501.js');
17
+ require('../Typography-83915c54.js');
18
18
  require('@jobber/design');
19
- require('../FormField-bef41ec9.js');
19
+ require('../FormField-fa9254dc.js');
20
20
  require('uuid');
21
21
  require('react-hook-form');
22
- require('../Button-d89f2271.js');
22
+ require('../Button-db6114a6.js');
23
23
  require('react-router-dom');
24
- require('../InputValidation-4e809bdd.js');
24
+ require('../InputValidation-377d6c62.js');
25
25
  require('framer-motion');
26
26
  require('../Spinner-9d8fc7ff.js');
27
27
 
@@ -7,10 +7,10 @@ var classnames = require('classnames');
7
7
  var jobberHooks = require('@jobber/hooks/useResizeObserver');
8
8
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
9
9
  var Icon = require('../Icon-405a216c.js');
10
- var Text = require('../Text-59bde58c.js');
11
- var Button = require('../Button-d89f2271.js');
10
+ var Text = require('../Text-54334431.js');
11
+ var Button = require('../Button-db6114a6.js');
12
12
  require('@jobber/design');
13
- require('../Typography-9bff9c91.js');
13
+ require('../Typography-83915c54.js');
14
14
  require('react-router-dom');
15
15
 
16
16
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -2,14 +2,14 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Button = require('../Button-d89f2271.js');
5
+ var Button = require('../Button-db6114a6.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('react-router-dom');
9
9
  require('../style-inject.es-9d2f5f4e.js');
10
10
  require('../Icon-405a216c.js');
11
11
  require('@jobber/design');
12
- require('../Typography-9bff9c91.js');
12
+ require('../Typography-83915c54.js');
13
13
 
14
14
 
15
15
 
@@ -5,7 +5,7 @@ var classnames = require('classnames');
5
5
  var reactRouterDom = require('react-router-dom');
6
6
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
7
7
  var Icon = require('./Icon-405a216c.js');
8
- var Typography = require('./Typography-9bff9c91.js');
8
+ var Typography = require('./Typography-83915c54.js');
9
9
 
10
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
11
 
@@ -2,15 +2,15 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var ButtonDismiss = require('../ButtonDismiss-250840a4.js');
5
+ var ButtonDismiss = require('../ButtonDismiss-1ccb84ec.js');
6
6
  require('react');
7
- require('../Button-d89f2271.js');
7
+ require('../Button-db6114a6.js');
8
8
  require('classnames');
9
9
  require('react-router-dom');
10
10
  require('../style-inject.es-9d2f5f4e.js');
11
11
  require('../Icon-405a216c.js');
12
12
  require('@jobber/design');
13
- require('../Typography-9bff9c91.js');
13
+ require('../Typography-83915c54.js');
14
14
 
15
15
 
16
16
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var Button = require('./Button-d89f2271.js');
4
+ var Button = require('./Button-db6114a6.js');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
@@ -2,17 +2,17 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Card = require('../Card-69304e99.js');
5
+ var Card = require('../Card-116af709.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('../style-inject.es-9d2f5f4e.js');
9
- require('../Heading-4562900a.js');
10
- require('../Typography-9bff9c91.js');
11
- require('../Button-d89f2271.js');
9
+ require('../Heading-4cde9989.js');
10
+ require('../Typography-83915c54.js');
11
+ require('../Button-db6114a6.js');
12
12
  require('react-router-dom');
13
13
  require('../Icon-405a216c.js');
14
14
  require('@jobber/design');
15
- require('../Menu-cec53b50.js');
15
+ require('../Menu-2e64307a.js');
16
16
  require('uuid');
17
17
  require('framer-motion');
18
18
  require('@jobber/hooks/useOnKeyDown');
@@ -3,9 +3,9 @@
3
3
  var React = require('react');
4
4
  var classnames = require('classnames');
5
5
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
6
- var Heading = require('./Heading-4562900a.js');
7
- var Button = require('./Button-d89f2271.js');
8
- var Menu = require('./Menu-cec53b50.js');
6
+ var Heading = require('./Heading-4cde9989.js');
7
+ var Button = require('./Button-db6114a6.js');
8
+ var Menu = require('./Menu-2e64307a.js');
9
9
 
10
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
11
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Checkbox = require('../Checkbox-eac63b7f.js');
5
+ var Checkbox = require('../Checkbox-bc4bc968.js');
6
6
  require('../tslib.es6-5b8768b7.js');
7
7
  require('react');
8
8
  require('uuid');
@@ -11,8 +11,8 @@ require('react-hook-form');
11
11
  require('../style-inject.es-9d2f5f4e.js');
12
12
  require('../Icon-405a216c.js');
13
13
  require('@jobber/design');
14
- require('../Text-59bde58c.js');
15
- require('../Typography-9bff9c91.js');
14
+ require('../Text-54334431.js');
15
+ require('../Typography-83915c54.js');
16
16
 
17
17
 
18
18
 
@@ -7,7 +7,7 @@ var classnames = require('classnames');
7
7
  var reactHookForm = require('react-hook-form');
8
8
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
9
9
  var Icon = require('./Icon-405a216c.js');
10
- var Text = require('./Text-59bde58c.js');
10
+ var Text = require('./Text-54334431.js');
11
11
 
12
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
13
 
@@ -0,0 +1,8 @@
1
+ import { ChipPrefix } from "./components/ChipPrefix/Chip.Prefix";
2
+ import { ChipSuffix } from "./components/ChipSuffix/Chip.Suffix";
3
+ import { ChipProps } from "./Chip.types";
4
+ export declare const Chip: {
5
+ ({ ariaLabel, disabled, heading, invalid, label, value, onClick, onKeyDown, children, role, tabIndex, variation, }: ChipProps): JSX.Element;
6
+ Prefix: typeof ChipPrefix;
7
+ Suffix: typeof ChipSuffix;
8
+ };
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { ChipProps } from "../../Chip.types";
3
+ export declare function ChipDismissible(props: ChipProps): JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { PropsWithChildren } from "react";
2
+ export declare function ChipPrefix({ children }: PropsWithChildren): JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { ChipSelectableProps } from "../../Chip.types";
3
+ export declare function ChipSelectable({ selected, ...rest }: ChipSelectableProps): JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { PropsWithChildren } from "react";
2
+ export declare function ChipSuffix({ children, className }: ChipSuffixProps): JSX.Element;
3
+ export interface ChipSuffixProps extends PropsWithChildren {
4
+ readonly className?: string;
5
+ }
6
+ export declare const allowedSuffixIcons: string[];
@@ -0,0 +1 @@
1
+ export * from "./useChildComponent";
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from "react";
2
+ /**
3
+ * Returns the first React Child that receives `true` from isCorrectComponent
4
+ * @param children React Children
5
+ * @param isCorrectComponent a function that accepts a JSX Element and returns a boolean.
6
+ * @returns The first child component that returns true on isCorrectComponent
7
+ */
8
+ export declare function useChildComponent(children: ReactNode | undefined, isCorrectComponent: (toCheck: JSX.Element) => boolean): JSX.Element | undefined;
@@ -0,0 +1,3 @@
1
+ export * from "./Chip";
2
+ export * from "./components/ChipSelectable/ChipSelectable";
3
+ export * from "./components/ChipDismissible/ChipDismissible";
@@ -0,0 +1,85 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var classnames = require('classnames');
7
+ var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
8
+ var Avatar = require('../Avatar-1aa30ee1.js');
9
+ var Icon = require('../Icon-405a216c.js');
10
+ var Typography = require('../Typography-83915c54.js');
11
+ var tslib_es6 = require('../tslib.es6-5b8768b7.js');
12
+ require('color');
13
+ require('@jobber/design');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
19
+
20
+ var css_248z = ".af7U8MvcbHE- {\n --chip-height: 40px;\n --chip-radius: 20px;\n --chip-disabled--bg: var(--color-grey--lighter);\n --chip-bar-color: var(--color-greyBlue--light);\n --chip-base-bg: var(--color-greyBlue--lightest);\n --chip-base--hover: var(--color-greyBlue--lighter);\n display: -ms-flexbox;\n display: flex;\n position: relative;\n height: 40px;\n height: var(--chip-height);\n padding: calc(16px / 2) 16px;\n padding: var(--space-small) var(--base-unit);\n border: calc(16px / 16) solid transparent;\n border: var(--border-base) solid transparent;\n border-radius: 20px;\n border-radius: var(--chip-radius);\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n text-align: left;\n cursor: pointer;\n transition: all var(--ease-both) 100ms;\n transition: all var(--ease-both) var(--timing-quick);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.af7U8MvcbHE-:focus {\n box-shadow: 0px 0px calc(16px / 4) calc(16px / 8)\n rgb(231, 213, 87);\n box-shadow: var(--shadow-focus);\n}\n\n.af7U8MvcbHE- .e905AYK4SCc- {\n margin-left: calc(-1 * (16px / 2));\n margin-left: calc(-1 * calc(16px / 2));\n margin-left: calc(-1 * var(--space-small));\n margin-right: calc(16px / 2);\n margin-right: var(--space-small);\n}\n\n.af7U8MvcbHE- .ySADfZ0FckM- {\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n margin-right: calc(-1 * (16px / 2));\n margin-right: calc(-1 * calc(16px / 2));\n margin-right: calc(-1 * var(--space-small));\n}\n\n.af7U8MvcbHE- .e905AYK4SCc-,\n.af7U8MvcbHE- .ySADfZ0FckM- {\n display: -ms-flexbox;\n display: flex;\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: calc(16px * 1.5);\n height: var(--space-large);\n -ms-flex-negative: 0;\n flex-shrink: 0;\n border-radius: 100%;\n border-radius: var(--radius-circle);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.af7U8MvcbHE- .ySADfZ0FckM-:hover,\n.af7U8MvcbHE- .e905AYK4SCc-:hover {\n background-color: rgb(181, 181, 181);\n background-color: var(--color-disabled);\n}\n\n.af7U8MvcbHE- .e905AYK4SCc-.usdkmQ9Sxbk-,\n.af7U8MvcbHE- .ySADfZ0FckM-.usdkmQ9Sxbk- {\n display: none;\n}\n\n.af7U8MvcbHE- .dg1-Izy1eQA- {\n width: calc(16px / 16);\n width: var(--space-minuscule);\n height: 16px;\n height: var(--base-unit);\n margin: 0 calc(16px / 2);\n margin: 0 var(--space-small);\n background-color: var(--chip-bar-color);\n}\n\n.af7U8MvcbHE- .-lz0EYLTDgg- {\n border-radius: 100%;\n border-radius: var(--radius-circle);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.wSI5L-5rODg- {\n border: calc(16px / 16) solid transparent;\n border: var(--border-base) solid transparent;\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n background-color: var(--chip-base-bg);\n}\n\n.wSI5L-5rODg-:hover,\n.wSI5L-5rODg-:focus {\n background-color: var(--chip-base--hover);\n}\n\n.SmUxkzpIC84-,\n.SmUxkzpIC84-:hover,\n.SmUxkzpIC84-:focus,\n.Mux23dmZSuw-.SmUxkzpIC84-,\n.Mux23dmZSuw-.SmUxkzpIC84-:hover,\n.Mux23dmZSuw-.SmUxkzpIC84-:focus {\n border: calc(16px / 16) solid rgb(201, 66, 33);\n border: var(--border-base) solid var(--color-critical);\n background-color: rgb(255, 226, 219);\n background-color: var(--color-critical--surface);\n}\n\n.Mux23dmZSuw- {\n border: calc(16px / 16) solid rgb(225, 225, 225);\n border: var(--border-base) solid var(--color-disabled--secondary);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.Mux23dmZSuw-:hover {\n border: calc(16px / 16) solid var(--chip-base-bg);\n border: var(--border-base) solid var(--chip-base-bg);\n background-color: var(--chip-base-bg);\n}\n\n.MbRItb9vKhc-,\n.MbRItb9vKhc-:hover,\n.MbRItb9vKhc-:focus {\n border: calc(16px / 16) solid var(--chip-disabled--bg);\n border: var(--border-base) solid var(--chip-disabled--bg);\n color: rgb(181, 181, 181);\n color: var(--color-disabled);\n background-color: var(--chip-disabled--bg);\n cursor: auto;\n}\n\n.MbRItb9vKhc- .dg1-Izy1eQA- {\n background-color: rgb(181, 181, 181);\n background-color: var(--color-disabled);\n}\n\n.af7U8MvcbHE-.MbRItb9vKhc- .ySADfZ0FckM- {\n background-color: rgb(181, 181, 181);\n background-color: var(--color-disabled);\n}\n";
21
+ var styles = {"chip":"af7U8MvcbHE-","prefix":"e905AYK4SCc-","suffix":"ySADfZ0FckM-","empty":"usdkmQ9Sxbk-","chipBar":"dg1-Izy1eQA-","selected":"-lz0EYLTDgg-","base":"wSI5L-5rODg-","invalid":"SmUxkzpIC84-","subtle":"Mux23dmZSuw-","disabled":"MbRItb9vKhc-"};
22
+ styleInject_es.styleInject(css_248z);
23
+
24
+ /**
25
+ * Returns the first React Child that receives `true` from isCorrectComponent
26
+ * @param children React Children
27
+ * @param isCorrectComponent a function that accepts a JSX Element and returns a boolean.
28
+ * @returns The first child component that returns true on isCorrectComponent
29
+ */
30
+ function useChildComponent(children, isCorrectComponent) {
31
+ return React.useMemo(() => {
32
+ return React__default["default"].Children.toArray(children).find(d => React.isValidElement(d) && isCorrectComponent(d));
33
+ }, [children]);
34
+ }
35
+
36
+ function ChipPrefix({ children }) {
37
+ const singleChild = useChildComponent(children, d => d.type === Avatar.Avatar || d.type === Icon.Icon);
38
+ return (React__default["default"].createElement("span", { className: classnames__default["default"](styles.prefix, !singleChild && styles.empty) }, singleChild));
39
+ }
40
+
41
+ function ChipSuffix({ children, className }) {
42
+ var _a;
43
+ let singleChild = useChildComponent(children, d => d.type === Icon.Icon);
44
+ if (!allowedSuffixIcons.includes((_a = singleChild === null || singleChild === void 0 ? void 0 : singleChild.props) === null || _a === void 0 ? void 0 : _a.name)) {
45
+ singleChild = undefined;
46
+ }
47
+ return (React__default["default"].createElement("span", { className: classnames__default["default"](styles.suffix, className, !singleChild && styles.empty) }, singleChild));
48
+ }
49
+ const allowedSuffixIcons = ["cross", "add", "checkmark"];
50
+
51
+ const Chip = ({ ariaLabel, disabled, heading, invalid, label, value, onClick, onKeyDown, children, role = "button", tabIndex = 0, variation = "base", }) => {
52
+ const classes = classnames__default["default"](styles.chip, {
53
+ [styles.invalid]: invalid,
54
+ [styles.base]: variation === "base",
55
+ [styles.subtle]: variation === "subtle",
56
+ [styles.disabled]: disabled,
57
+ });
58
+ const prefix = useChildComponent(children, d => d.type === Chip.Prefix);
59
+ const suffix = useChildComponent(children, d => d.type === Chip.Suffix);
60
+ return (React__default["default"].createElement("button", { className: classes, onClick: (ev) => onClick && onClick(value, ev), tabIndex: tabIndex, onKeyDown: onKeyDown, "aria-label": ariaLabel || label, disabled: disabled, role: role, type: "button" },
61
+ prefix,
62
+ React__default["default"].createElement(Typography.Typography, { size: "base", fontWeight: "medium" }, heading),
63
+ heading && React__default["default"].createElement("span", { className: styles.chipBar }),
64
+ React__default["default"].createElement(Typography.Typography, { size: "base" }, label),
65
+ suffix));
66
+ };
67
+ Chip.Prefix = ChipPrefix;
68
+ Chip.Suffix = ChipSuffix;
69
+
70
+ function ChipSelectable(_a) {
71
+ var { selected } = _a, rest = tslib_es6.__rest(_a, ["selected"]);
72
+ return (React__default["default"].createElement(Chip, Object.assign({}, rest),
73
+ React__default["default"].createElement(Chip.Suffix, { className: selected ? styles.selected : "" },
74
+ React__default["default"].createElement(Icon.Icon, { name: selected ? "checkmark" : "add", size: "small", color: selected ? "green" : "blue" }))));
75
+ }
76
+
77
+ function ChipDismissible(props) {
78
+ return (React__default["default"].createElement(Chip, Object.assign({}, props),
79
+ React__default["default"].createElement(Chip.Suffix, null,
80
+ React__default["default"].createElement(Icon.Icon, { name: "cross", size: "small", color: "blue" }))));
81
+ }
82
+
83
+ exports.Chip = Chip;
84
+ exports.ChipDismissible = ChipDismissible;
85
+ exports.ChipSelectable = ChipSelectable;
@@ -7,14 +7,14 @@ var classnames = require('classnames');
7
7
  var useAssert = require('@jobber/hooks/useAssert');
8
8
  var Icon = require('./Icon-405a216c.js');
9
9
  var Avatar = require('./Avatar-1aa30ee1.js');
10
- var Typography = require('./Typography-9bff9c91.js');
11
- var Tooltip = require('./Tooltip-59dbab5b.js');
10
+ var Typography = require('./Typography-83915c54.js');
11
+ var Tooltip = require('./Tooltip-3f9048ce.js');
12
12
  var sortBy = require('lodash/sortBy');
13
13
  var useLiveAnnounce = require('@jobber/hooks/useLiveAnnounce');
14
14
  var debounce = require('lodash/debounce');
15
15
  var reactPopper = require('react-popper');
16
- var Text = require('./Text-59bde58c.js');
17
- var Button = require('./Button-d89f2271.js');
16
+ var Text = require('./Text-54334431.js');
17
+ var Button = require('./Button-db6114a6.js');
18
18
  var Spinner = require('./Spinner-9d8fc7ff.js');
19
19
 
20
20
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -472,7 +472,7 @@ function InternalChipDismissibleInput(props) {
472
472
  React__default["default"].createElement("input", { ref: inputRef, className: styles.input, type: "text", role: "combobox", "aria-label": "Press up and down arrow to cycle through the options or type to narrow down the results", "aria-autocomplete": "list", "aria-owns": menuId, "aria-expanded": hasAvailableOptions, "aria-activedescendant": generateDescendantId(activeIndex), value: searchValue, onChange: handleSearchChange, onKeyDown: handleKeyDown, onBlur: debounce__default["default"](handleBlur, 200), onFocus: handleOpenMenu, autoFocus: true }),
473
473
  (hasAvailableOptions || isLoadingMore) && (React__default["default"].createElement("div", Object.assign({ ref: setPositionedElementRef, className: styles.menu, style: popperStyles.popper }, attributes.popper),
474
474
  React__default["default"].createElement("div", { ref: menuRef, role: "listbox", id: menuId, className: styles.menuList, "data-testid": "chip-menu" },
475
- allOptions.map((option, i) => (React__default["default"].createElement("button", { key: option.value, role: "option", id: generateDescendantId(i), className: classnames__default["default"](styles.menuListOption, {
475
+ allOptions.map((option, i) => (React__default["default"].createElement("button", { key: option.value, role: "option", type: "button", id: generateDescendantId(i), className: classnames__default["default"](styles.menuListOption, {
476
476
  [styles.activeOption]: activeIndex === i,
477
477
  }), onClick: () => handleSelectOption(option), onMouseEnter: handleSetActiveOnMouseOver(i), onMouseDown: handleCancelBlur, onMouseUp: handleEnableBlur },
478
478
  React__default["default"].createElement("span", { "aria-hidden": true }, option.prefix),
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var Chip = require('../Chip-4d8e6370.js');
6
+ var Chip = require('../Chip-b603ceaf.js');
7
7
  require('uuid');
8
8
  require('../style-inject.es-9d2f5f4e.js');
9
9
  require('classnames');
@@ -12,16 +12,16 @@ require('../Icon-405a216c.js');
12
12
  require('@jobber/design');
13
13
  require('../Avatar-1aa30ee1.js');
14
14
  require('color');
15
- require('../Typography-9bff9c91.js');
16
- require('../Tooltip-59dbab5b.js');
15
+ require('../Typography-83915c54.js');
16
+ require('../Tooltip-3f9048ce.js');
17
17
  require('react-dom');
18
18
  require('framer-motion');
19
19
  require('react-popper');
20
- require('../Text-59bde58c.js');
21
20
  require('lodash/sortBy');
22
21
  require('@jobber/hooks/useLiveAnnounce');
23
22
  require('lodash/debounce');
24
- require('../Button-d89f2271.js');
23
+ require('../Text-54334431.js');
24
+ require('../Button-db6114a6.js');
25
25
  require('react-router-dom');
26
26
  require('../Spinner-9d8fc7ff.js');
27
27
 
@@ -4,6 +4,12 @@ import { ComboboxAction } from "./components/ComboboxAction";
4
4
  import { ComboboxTriggerButton, ComboboxTriggerChip } from "./components/ComboboxTrigger";
5
5
  export interface ComboboxProps {
6
6
  readonly children: ReactElement | ReactElement[];
7
+ /**
8
+ * When `true`, `Combobox` will allow for multiple selections
9
+ *
10
+ * @default false
11
+ */
12
+ readonly multiSelect?: boolean;
7
13
  }
8
14
  export declare const COMBOBOX_TRIGGER_COUNT_ERROR_MESSAGE = "Combobox can only have one Trigger element";
9
15
  export declare const COMBOBOX_REQUIRED_CHILDREN_ERROR_MESSAGE = "Combobox must have a Trigger and Combobox.Content element";
@@ -1,10 +1,12 @@
1
1
  import React, { RefObject } from "react";
2
2
  export declare const ComboboxContext: React.Context<{
3
+ multiselect: boolean;
3
4
  open: boolean;
4
5
  setOpen: (open: boolean) => void;
5
6
  wrapperRef: RefObject<HTMLDivElement>;
6
7
  }>;
7
8
  export interface ComboboxProviderProps {
8
9
  readonly children: React.ReactNode;
10
+ readonly multiselect?: boolean;
9
11
  }
10
12
  export declare function ComboboxContextProvider(props: ComboboxProviderProps): JSX.Element;
@@ -1,14 +1,24 @@
1
1
  import { ReactElement } from "react";
2
+ import { XOR } from "ts-xor";
2
3
  import { ComboboxOption } from "../../Combobox.types";
3
- interface ComboboxContentProps {
4
+ interface ComboboxCloseProps {
4
5
  /**
5
- * List of selectable options to display.
6
+ * Callback function invoked upon the selection of an option. Provides the selected option(s) as an argument.
6
7
  */
7
- readonly options: ComboboxOption[];
8
+ readonly onSelect: (selection: ComboboxOption[]) => void;
9
+ }
10
+ interface ComoboboxSelectProps {
11
+ /**
12
+ *
13
+ * Callback function invoked upon the Combobox menu closing. Provides the selected option(s) as an argument.
14
+ */
15
+ readonly onClose: (selection: ComboboxOption[]) => void;
16
+ }
17
+ interface ComboboxContentBaseProps {
8
18
  /**
9
- * Callback function invoked upon the selection of an option. Provides the selected option as an argument.
19
+ * List of selectable options to display.
10
20
  */
11
- readonly onSelect: (selection: ComboboxOption) => void;
21
+ readonly options: ComboboxOption[];
12
22
  /**
13
23
  * Optional action button(s) to display at the bottom of the list.
14
24
  */
@@ -22,12 +32,13 @@ interface ComboboxContentProps {
22
32
  * @default ""
23
33
  * @type string
24
34
  */
25
- readonly selected: ComboboxOption | null;
35
+ readonly selected: ComboboxOption[];
26
36
  /**
27
37
  * The encapsulating noun for the content of the combobox. Used
28
38
  * in the empty state, and search placeholder. Should be pluralized.
29
39
  */
30
40
  readonly subjectNoun?: string;
31
41
  }
42
+ type ComboboxContentProps = ComboboxContentBaseProps & XOR<ComboboxCloseProps, ComoboboxSelectProps>;
32
43
  export declare function ComboboxContent(props: ComboboxContentProps): JSX.Element;
33
44
  export {};
@@ -1,14 +1,15 @@
1
1
  import React, { SetStateAction } from "react";
2
2
  import { ComboboxOption } from "../../Combobox.types";
3
3
  interface ComboboxListProps {
4
- options: ComboboxOption[];
5
- showEmptyState: boolean;
6
- selected: ComboboxOption | null;
7
- optionsListRef: React.RefObject<HTMLUListElement>;
8
- setSelectedElement: React.Dispatch<SetStateAction<HTMLElement | null>>;
9
- selectionHandler: (option: ComboboxOption) => void;
10
- searchValue: string;
11
- subjectNoun?: string;
4
+ readonly options: ComboboxOption[];
5
+ readonly showEmptyState: boolean;
6
+ readonly selected: ComboboxOption[];
7
+ readonly optionsListRef: React.RefObject<HTMLUListElement>;
8
+ readonly setFirstSelectedElement: React.Dispatch<SetStateAction<HTMLElement | null>>;
9
+ readonly selectionHandler: (option: ComboboxOption) => void;
10
+ readonly searchValue: string;
11
+ readonly multiselect: boolean;
12
+ readonly subjectNoun?: string;
12
13
  }
13
14
  export declare function ComboboxList(props: ComboboxListProps): JSX.Element;
14
15
  export {};
@@ -1,9 +1,13 @@
1
1
  /// <reference types="react" />
2
2
  import { ComboboxOption } from "../Combobox.types";
3
- export declare function useComboboxContent(options: ComboboxOption[], open: boolean): {
3
+ interface useComboboxContent {
4
4
  searchValue: string;
5
5
  setSearchValue: React.Dispatch<React.SetStateAction<string>>;
6
- setSelectedElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>;
6
+ setFirstSelectedElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>;
7
7
  filteredOptions: ComboboxOption[];
8
8
  optionsListRef: React.RefObject<HTMLUListElement>;
9
- };
9
+ selectedOptions: ComboboxOption[];
10
+ setInternalSelected: (selected: ComboboxOption[]) => void;
11
+ }
12
+ export declare function useComboboxContent(options: ComboboxOption[], open: boolean, selected: ComboboxOption[], onClose: ((selection: ComboboxOption[]) => void) | undefined): useComboboxContent;
13
+ export {};