@jobber/components 2.86.0 → 2.86.2
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/CHANGELOG.md +16 -0
- package/dist/Autocomplete/Autocomplete.d.ts +47 -47
- package/dist/Autocomplete/Menu.d.ts +9 -9
- package/dist/Autocomplete/Option.d.ts +15 -15
- package/dist/Autocomplete/index.d.ts +2 -2
- package/dist/Autocomplete/index.js +215 -211
- package/dist/Avatar/Avatar.d.ts +37 -37
- package/dist/Avatar/index.d.ts +1 -1
- package/dist/Avatar/index.js +7 -74
- package/dist/Avatar/utilities.d.ts +1 -1
- package/dist/Avatar-cfd04e86.js +82 -0
- package/dist/Banner/Banner.d.ts +19 -19
- package/dist/Banner/index.d.ts +1 -1
- package/dist/Banner/index.js +67 -65
- package/dist/Button/Button.d.ts +64 -64
- package/dist/Button/index.d.ts +1 -1
- package/dist/Button/index.js +9 -53
- package/dist/Button-5b2f1636.js +60 -0
- package/dist/ButtonDismiss/ButtonDismiss.d.ts +7 -7
- package/dist/ButtonDismiss/index.d.ts +1 -1
- package/dist/ButtonDismiss/index.js +10 -15
- package/dist/ButtonDismiss-4cde8f7c.js +15 -0
- package/dist/Card/Card.d.ts +31 -31
- package/dist/Card/CardClickable.d.ts +12 -12
- package/dist/Card/index.d.ts +1 -1
- package/dist/Card/index.js +7 -61
- package/dist/Card-368e01a3.js +68 -0
- package/dist/Checkbox/Checkbox.d.ts +52 -52
- package/dist/Checkbox/index.d.ts +1 -1
- package/dist/Checkbox/index.js +34 -32
- package/dist/Chips/Chip.d.ts +8 -8
- package/dist/Chips/ChipDismissible.d.ts +7 -7
- package/dist/Chips/ChipTypes.d.ts +59 -59
- package/dist/Chips/Chips.d.ts +2 -2
- package/dist/Chips/ChipsTypes.d.ts +82 -82
- package/dist/Chips/InternalChip.d.ts +2 -2
- package/dist/Chips/InternalChipAffix.d.ts +10 -10
- package/dist/Chips/InternalChipButton.d.ts +10 -10
- package/dist/Chips/InternalChipDismissible/InternalChipDismissible.d.ts +2 -2
- package/dist/Chips/InternalChipDismissible/InternalChipDismissibleInput.d.ts +2 -2
- package/dist/Chips/InternalChipDismissible/InternalChipDismissibleTypes.d.ts +13 -13
- package/dist/Chips/InternalChipDismissible/hooks/index.d.ts +5 -5
- package/dist/Chips/InternalChipDismissible/hooks/useInView.d.ts +5 -5
- package/dist/Chips/InternalChipDismissible/hooks/useInternalChipDismissible.d.ts +15 -15
- package/dist/Chips/InternalChipDismissible/hooks/useInternalChipDismissibleInput.d.ts +28 -28
- package/dist/Chips/InternalChipDismissible/hooks/useRepositionMenu.d.ts +16 -16
- package/dist/Chips/InternalChipDismissible/hooks/useScrollToActive.d.ts +2 -2
- package/dist/Chips/InternalChipDismissible/index.d.ts +1 -1
- package/dist/Chips/InternalChipMultiSelect.d.ts +4 -4
- package/dist/Chips/InternalChipSingleSelect.d.ts +4 -4
- package/dist/Chips/index.d.ts +3 -3
- package/dist/Chips/index.js +493 -491
- package/dist/Chips/utils/mdxUtils.d.ts +9 -9
- package/dist/ConfirmationModal/ConfirmationModal.d.ts +62 -62
- package/dist/ConfirmationModal/index.d.ts +1 -1
- package/dist/ConfirmationModal/index.js +20 -109
- package/dist/ConfirmationModal-b7ef110f.js +103 -0
- package/dist/Content/Content.d.ts +13 -13
- package/dist/Content/index.d.ts +1 -1
- package/dist/Content/index.js +5 -19
- package/dist/Content-18de5fbb.js +26 -0
- package/dist/Countdown/Countdown.d.ts +31 -31
- package/dist/Countdown/computeTimeUnit.d.ts +3 -3
- package/dist/Countdown/index.d.ts +1 -1
- package/dist/Countdown/index.js +63 -61
- package/dist/DataDump/DataDump.d.ts +20 -20
- package/dist/DataDump/index.d.ts +1 -1
- package/dist/DataDump/index.js +18 -17
- package/dist/DatePicker/DatePicker.d.ts +50 -50
- package/dist/DatePicker/DatePickerActivator.d.ts +12 -12
- package/dist/DatePicker/DatePickerCustomHeader.d.ts +2 -2
- package/dist/DatePicker/index.d.ts +1 -1
- package/dist/DatePicker/index.js +13 -97
- package/dist/DatePicker/useFocusOnSelectedDate.d.ts +5 -5
- package/dist/DatePicker-ad6f8630.js +103 -0
- package/dist/DescriptionList/DescriptionList.d.ts +10 -10
- package/dist/DescriptionList/index.d.ts +1 -1
- package/dist/DescriptionList/index.js +16 -15
- package/dist/Disclosure/Disclosure.d.ts +20 -20
- package/dist/Disclosure/index.d.ts +1 -1
- package/dist/Disclosure/index.js +32 -31
- package/dist/Divider/Divider.d.ts +16 -16
- package/dist/Divider/index.d.ts +1 -1
- package/dist/Divider/index.js +19 -17
- package/dist/Drawer/Drawer.d.ts +13 -13
- package/dist/Drawer/DrawerGrid.d.ts +6 -6
- package/dist/Drawer/index.d.ts +2 -2
- package/dist/Drawer/index.js +39 -37
- package/dist/Emphasis/Emphasis.d.ts +11 -11
- package/dist/Emphasis/index.d.ts +1 -1
- package/dist/Emphasis/index.js +7 -17
- package/dist/Emphasis-fd845639.js +21 -0
- package/dist/FeatureSwitch/FeatureSwitch.d.ts +51 -51
- package/dist/FeatureSwitch/index.d.ts +1 -1
- package/dist/FeatureSwitch/index.js +57 -55
- package/dist/Form/Form.d.ts +18 -18
- package/dist/Form/index.d.ts +1 -1
- package/dist/Form/index.js +58 -57
- package/dist/FormField/FormField.d.ts +2 -2
- package/dist/FormField/FormFieldAffix.d.ts +13 -13
- package/dist/FormField/FormFieldDescription.d.ts +6 -6
- package/dist/FormField/FormFieldPostFix.d.ts +5 -5
- package/dist/FormField/FormFieldTypes.d.ts +160 -160
- package/dist/FormField/FormFieldWrapper.d.ts +9 -9
- package/dist/FormField/index.d.ts +2 -2
- package/dist/FormField/index.js +15 -208
- package/dist/FormField-a92c7bac.js +213 -0
- package/dist/FormatDate/FormatDate.d.ts +12 -12
- package/dist/FormatDate/index.d.ts +1 -1
- package/dist/FormatDate/index.js +24 -23
- package/dist/FormatEmail/FormatEmail.d.ts +8 -8
- package/dist/FormatEmail/index.d.ts +1 -1
- package/dist/FormatEmail/index.js +12 -10
- package/dist/FormatFile/FormatFile.d.ts +30 -30
- package/dist/FormatFile/FormatFileDeleteButton.d.ts +6 -6
- package/dist/FormatFile/InternalThumbnail.d.ts +9 -9
- package/dist/FormatFile/index.d.ts +1 -1
- package/dist/FormatFile/index.js +21 -112
- package/dist/FormatFile-5391d4cf.js +112 -0
- package/dist/FormatRelativeDateTime/FormatRelativeDateTime.d.ts +11 -11
- package/dist/FormatRelativeDateTime/index.d.ts +1 -1
- package/dist/FormatRelativeDateTime/index.js +64 -63
- package/dist/FormatTime/FormatTime.d.ts +15 -15
- package/dist/FormatTime/index.d.ts +1 -1
- package/dist/FormatTime/index.js +28 -27
- package/dist/Gallery/Gallery.d.ts +2 -2
- package/dist/Gallery/GalleryTypes.d.ts +31 -31
- package/dist/Gallery/index.d.ts +1 -1
- package/dist/Gallery/index.js +82 -80
- package/dist/Heading/Heading.d.ts +14 -14
- package/dist/Heading/index.d.ts +1 -1
- package/dist/Heading/index.js +7 -53
- package/dist/Heading-56750113.js +57 -0
- package/dist/Icon/Icon.d.ts +22 -22
- package/dist/Icon/index.d.ts +1 -1
- package/dist/Icon/index.js +4 -35
- package/dist/Icon-d5ad1a6d.js +41 -0
- package/dist/InlineLabel/InlineLabel.d.ts +17 -17
- package/dist/InlineLabel/index.d.ts +1 -1
- package/dist/InlineLabel/index.js +20 -18
- package/dist/InputAvatar/InputAvatar.d.ts +22 -22
- package/dist/InputAvatar/index.d.ts +1 -1
- package/dist/InputAvatar/index.js +57 -56
- package/dist/InputDate/InputDate.d.ts +19 -19
- package/dist/InputDate/index.d.ts +1 -1
- package/dist/InputDate/index.js +34 -33
- package/dist/InputEmail/InputEmail.d.ts +5 -5
- package/dist/InputEmail/index.d.ts +1 -1
- package/dist/InputEmail/index.js +29 -28
- package/dist/InputFile/InputFile.d.ts +121 -121
- package/dist/InputFile/index.d.ts +1 -1
- package/dist/InputFile/index.js +15 -168
- package/dist/InputFile-b5cf90c3.js +174 -0
- package/dist/InputGroup/InputGroup.d.ts +11 -11
- package/dist/InputGroup/index.d.ts +1 -1
- package/dist/InputGroup/index.js +24 -22
- package/dist/InputNumber/InputNumber.d.ts +11 -11
- package/dist/InputNumber/index.d.ts +1 -1
- package/dist/InputNumber/index.js +52 -51
- package/dist/InputPassword/InputPassword.d.ts +12 -12
- package/dist/InputPassword/index.d.ts +1 -1
- package/dist/InputPassword/index.js +28 -27
- package/dist/InputText/InputText.d.ts +29 -29
- package/dist/InputText/index.d.ts +1 -1
- package/dist/InputText/index.js +15 -95
- package/dist/InputText-cb3be15c.js +91 -0
- package/dist/InputTime/InputTime.d.ts +2 -2
- package/dist/InputTime/InputTimeProps.d.ts +18 -18
- package/dist/InputTime/InputTimeSafari.d.ts +2 -2
- package/dist/InputTime/civilTimeConversions.d.ts +3 -3
- package/dist/InputTime/index.d.ts +1 -1
- package/dist/InputTime/index.js +402 -257
- package/dist/InputValidation/InputValidation.d.ts +8 -8
- package/dist/InputValidation/index.d.ts +1 -1
- package/dist/InputValidation/index.js +8 -24
- package/dist/InputValidation-24d3621a.js +28 -0
- package/dist/LightBox/LightBox.d.ts +37 -37
- package/dist/LightBox/index.d.ts +1 -1
- package/dist/LightBox/index.js +6 -34
- package/dist/LightBox-b893b656.js +42 -0
- package/dist/List/List.d.ts +11 -11
- package/dist/List/ListItem.d.ts +54 -54
- package/dist/List/index.d.ts +1 -1
- package/dist/List/index.js +76 -74
- package/dist/Markdown/Markdown.d.ts +17 -17
- package/dist/Markdown/index.d.ts +1 -1
- package/dist/Markdown/index.js +12 -64
- package/dist/Markdown-69986c49.js +68 -0
- package/dist/Menu/Menu.d.ts +46 -46
- package/dist/Menu/index.d.ts +1 -1
- package/dist/Menu/index.js +13 -128
- package/dist/Menu-6a392af6.js +134 -0
- package/dist/Modal/Modal.d.ts +22 -22
- package/dist/Modal/index.d.ts +1 -1
- package/dist/Modal/index.js +14 -127
- package/dist/Modal/useFocusTrap.d.ts +10 -10
- package/dist/Modal-aaaaf2df.js +132 -0
- package/dist/Page/Page.d.ts +59 -59
- package/dist/Page/index.d.ts +1 -1
- package/dist/Page/index.js +63 -61
- package/dist/Popover/Popover.d.ts +26 -26
- package/dist/Popover/index.d.ts +1 -1
- package/dist/Popover/index.js +49 -48
- package/dist/ProgressBar/ProgressBar.d.ts +18 -18
- package/dist/ProgressBar/index.d.ts +1 -1
- package/dist/ProgressBar/index.js +5 -22
- package/dist/ProgressBar-e9a49129.js +29 -0
- package/dist/RadioGroup/RadioGroup.d.ts +27 -27
- package/dist/RadioGroup/RadioOption.d.ts +34 -34
- package/dist/RadioGroup/index.d.ts +2 -2
- package/dist/RadioGroup/index.js +38 -37
- package/dist/RecurringSelect/CurrentRecurrenceComponent.d.ts +8 -8
- package/dist/RecurringSelect/RecurringSelect.d.ts +8 -8
- package/dist/RecurringSelect/components/DayOfMonthSelect.d.ts +8 -8
- package/dist/RecurringSelect/components/MonthlyDayOfWeekSelect.d.ts +8 -8
- package/dist/RecurringSelect/components/MonthlySelect.d.ts +8 -8
- package/dist/RecurringSelect/components/WeeklySelect.d.ts +8 -8
- package/dist/RecurringSelect/components/index.d.ts +4 -4
- package/dist/RecurringSelect/index.d.ts +2 -2
- package/dist/RecurringSelect/types.d.ts +65 -65
- package/dist/Select/Option.d.ts +17 -17
- package/dist/Select/Select.d.ts +10 -10
- package/dist/Select/index.d.ts +2 -2
- package/dist/Select/index.js +20 -19
- package/dist/Spinner/Spinner.d.ts +15 -15
- package/dist/Spinner/index.d.ts +1 -1
- package/dist/Spinner/index.js +5 -19
- package/dist/Spinner-18d3dee6.js +26 -0
- package/dist/StatusLabel/StatusLabel.d.ts +25 -25
- package/dist/StatusLabel/index.d.ts +1 -1
- package/dist/StatusLabel/index.js +21 -19
- package/dist/Switch/Switch.d.ts +14 -14
- package/dist/Switch/index.d.ts +1 -1
- package/dist/Switch/index.js +7 -53
- package/dist/Switch-d2bec677.js +60 -0
- package/dist/Table/Body.d.ts +6 -6
- package/dist/Table/Cells/Cell.d.ts +7 -7
- package/dist/Table/Cells/CellCurrency.d.ts +8 -8
- package/dist/Table/Cells/CellNumeric.d.ts +4 -4
- package/dist/Table/Footer.d.ts +6 -6
- package/dist/Table/Header.d.ts +6 -6
- package/dist/Table/Row.d.ts +6 -6
- package/dist/Table/Table.d.ts +6 -6
- package/dist/Table/index.d.ts +8 -8
- package/dist/Table/index.js +41 -39
- package/dist/Tabs/Tabs.d.ts +19 -19
- package/dist/Tabs/index.d.ts +1 -1
- package/dist/Tabs/index.js +69 -67
- package/dist/Text/Text.d.ts +9 -9
- package/dist/Text/index.d.ts +1 -1
- package/dist/Text/index.js +7 -29
- package/dist/Text-9bc093e9.js +32 -0
- package/dist/Toast/Toast.d.ts +17 -17
- package/dist/Toast/index.d.ts +1 -1
- package/dist/Toast/index.js +93 -93
- package/dist/Toast/showToast.d.ts +2 -2
- package/dist/Tooltip/Tooltip.d.ts +10 -10
- package/dist/Tooltip/index.d.ts +1 -1
- package/dist/Tooltip/index.js +11 -110
- package/dist/Tooltip/useTooltipPositioning.d.ts +18 -18
- package/dist/Tooltip-4396164d.js +116 -0
- package/dist/Typography/Typography.d.ts +38 -38
- package/dist/Typography/index.d.ts +1 -1
- package/dist/Typography/index.js +6 -57
- package/dist/Typography-7e542a72.js +64 -0
- package/dist/{chunk-17e02351.js → style-inject.es-dcee06b6.js} +0 -0
- package/dist/{chunk-b67af3cb.js → tslib.es6-5b50eb8e.js} +0 -0
- package/package.json +6 -8
- package/rollup.config.js +28 -3
package/dist/Chips/index.js
CHANGED
|
@@ -2,532 +2,534 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
|
6
|
-
|
|
7
|
-
var __chunk_1 = require('../chunk-b67af3cb.js');
|
|
8
5
|
var React = require('react');
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
require('
|
|
15
|
-
var
|
|
6
|
+
var tslib_es6 = require('../tslib.es6-5b50eb8e.js');
|
|
7
|
+
var classnames = require('classnames');
|
|
8
|
+
var styleInject_es = require('../style-inject.es-dcee06b6.js');
|
|
9
|
+
var hooks = require('@jobber/hooks');
|
|
10
|
+
var Icon = require('../Icon-d5ad1a6d.js');
|
|
11
|
+
var Avatar = require('../Avatar-cfd04e86.js');
|
|
12
|
+
var Typography = require('../Typography-7e542a72.js');
|
|
13
|
+
var Tooltip = require('../Tooltip-4396164d.js');
|
|
16
14
|
var uuid = require('uuid');
|
|
17
|
-
require('
|
|
18
|
-
var
|
|
19
|
-
require('
|
|
20
|
-
var
|
|
21
|
-
var
|
|
15
|
+
var lodash = require('lodash');
|
|
16
|
+
var reactPopper = require('react-popper');
|
|
17
|
+
var Text = require('../Text-9bc093e9.js');
|
|
18
|
+
var Button = require('../Button-5b2f1636.js');
|
|
19
|
+
var Spinner = require('../Spinner-18d3dee6.js');
|
|
20
|
+
require('@jobber/design');
|
|
22
21
|
require('color');
|
|
23
|
-
var hooks = require('@jobber/hooks');
|
|
24
22
|
require('react-dom');
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
require('framer-motion');
|
|
24
|
+
require('react-router-dom');
|
|
25
|
+
|
|
26
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
27
|
+
|
|
28
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
29
|
+
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
28
30
|
|
|
29
|
-
var css = "/**\n * Used in the wrapping chips component:\n * - InternalChipSingleSelect\n * - InternalChipMultiSelect\n */\n\n.uhcyg-a-GLRKF_7oHwvMP {\n display: -ms-flexbox;\n display: flex;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._2XfthED8eqbKIyTNoH1aWp {\n display: inline-grid;\n position: relative;\n max-width: 100%;\n box-sizing: border-box;\n padding: var(--space-small);\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-larger);\n color: var(--color-text--secondary);\n text-align: left;\n vertical-align: middle;\n background-color: var(--color-surface);\n transition: var(--timing-base) ease-in-out;\n transition-property: background-color, box-shadow, color;\n grid-template-columns: -webkit-max-content;\n grid-template-columns: max-content;\n -ms-flex-align: center;\n align-items: center;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm,\n.fl19i7ccgBu7NZkxnpvcI {\n padding: calc(var(--space-smaller) + var(--space-smallest)) var(--space-small);\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm {\n grid-template-columns: -webkit-min-content 1fr;\n grid-template-columns: min-content 1fr;\n}\n\n.fl19i7ccgBu7NZkxnpvcI {\n grid-template-columns: 1fr -webkit-min-content;\n grid-template-columns: 1fr min-content;\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm.fl19i7ccgBu7NZkxnpvcI {\n grid-template-columns: -webkit-min-content 1fr -webkit-min-content;\n grid-template-columns: min-content 1fr min-content;\n}\n\n._3Uf2El5YBbG3DmUWHBhuea,\n._35he2rVDYRU4YQko5r4adP ~ ._2XfthED8eqbKIyTNoH1aWp {\n box-shadow: var(--shadow-base);\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n/**\n * Interaction\n */\n\n._3Uf2El5YBbG3DmUWHBhuea:hover,\n._2XfthED8eqbKIyTNoH1aWp:focus {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n._2XfthED8eqbKIyTNoH1aWp:focus,\n._35he2rVDYRU4YQko5r4adP:focus ~ ._2XfthED8eqbKIyTNoH1aWp {\n box-shadow: var(--shadow-focus);\n}\n\n._35he2rVDYRU4YQko5r4adP:focus ~ ._2XfthED8eqbKIyTNoH1aWp:not(._18wCcoIrboygQTnIVm8yzS) {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n/**\n * States\n */\n\n._2XfthED8eqbKIyTNoH1aWp._18wCcoIrboygQTnIVm8yzS {\n border-color: var(--color-surface--reverse);\n color: var(--color-text--reverse);\n background-color: var(--color-surface--reverse);\n}\n\n._2XfthED8eqbKIyTNoH1aWp._1FTJ2ALrm1mVaT7HdMFFGN {\n border-color: var(--color-critical--onSurface);\n color: var(--color-critical--onSurface);\n background-color: var(--color-critical--surface);\n}\n\n._2XfthED8eqbKIyTNoH1aWp.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-disabled--secondary);\n color: var(--color-disabled);\n background-color: var(--color-disabled--secondary);\n}\n\n._18wCcoIrboygQTnIVm8yzS.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-disabled);\n color: var(--color-white);\n background-color: var(--color-disabled);\n}\n\n._1FTJ2ALrm1mVaT7HdMFFGN.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-critical);\n}\n\n/**\n * Input checkbox/radio\n *\n * Hide checkbox on UI but not screen readers and still allow focus state\n */\n\n._35he2rVDYRU4YQko5r4adP {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(100%);\n clip-path: inset(100%);\n white-space: nowrap;\n}\n\n/**\n * Button\n */\n\n._1M_ek3kiaa7OApx5rwBEc3 {\n display: -ms-flexbox;\n display: flex;\n border-radius: var(--radius-base);\n cursor: pointer;\n transition: background-color 200ms ease;\n}\n\n._1M_ek3kiaa7OApx5rwBEc3:hover,\n._1M_ek3kiaa7OApx5rwBEc3:focus {\n background-color: var(--color-surface--hover);\n}\n\n._1M_ek3kiaa7OApx5rwBEc3:focus,\n._3Uf2El5YBbG3DmUWHBhuea ._1M_ek3kiaa7OApx5rwBEc3:hover {\n box-shadow: var(--shadow-focus);\n outline: none;\n}\n\n/**\n * Override icon default colors.\n *\n * NOTE: This is a workaround since some icons have default colors that we don't\n * want to override until the component color prop overrides it.\n * DO NOT COPY!\n */\n\n._3AG5dSWeyKYD1Xfu9fN_DL > svg {\n fill: var(--color-interactive--subtle);\n}\n\n._3AG5dSWeyKYD1Xfu9fN_DL {\n display: -ms-flexbox;\n display: flex;\n}\n";
|
|
30
|
-
var styles = {"wrapper":"uhcyg-a-GLRKF_7oHwvMP","chip":"_2XfthED8eqbKIyTNoH1aWp","hasPrefix":"_4U2lNr3Kk6xnNZTk3Fxgm","hasSuffix":"fl19i7ccgBu7NZkxnpvcI","clickable":"_3Uf2El5YBbG3DmUWHBhuea","input":"_35he2rVDYRU4YQko5r4adP","active":"_18wCcoIrboygQTnIVm8yzS","invalid":"_1FTJ2ALrm1mVaT7HdMFFGN","disabled":"B1ELFzeQy9Ihy9oYcv-px","button":"_1M_ek3kiaa7OApx5rwBEc3","icon":"_3AG5dSWeyKYD1Xfu9fN_DL"};
|
|
31
|
-
|
|
31
|
+
var css$1 = "/**\n * Used in the wrapping chips component:\n * - InternalChipSingleSelect\n * - InternalChipMultiSelect\n */\n\n.uhcyg-a-GLRKF_7oHwvMP {\n display: -ms-flexbox;\n display: flex;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._2XfthED8eqbKIyTNoH1aWp {\n display: inline-grid;\n position: relative;\n max-width: 100%;\n box-sizing: border-box;\n padding: var(--space-small);\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-larger);\n color: var(--color-text--secondary);\n text-align: left;\n vertical-align: middle;\n background-color: var(--color-surface);\n transition: var(--timing-base) ease-in-out;\n transition-property: background-color, box-shadow, color;\n grid-template-columns: -webkit-max-content;\n grid-template-columns: max-content;\n -ms-flex-align: center;\n align-items: center;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm,\n.fl19i7ccgBu7NZkxnpvcI {\n padding: calc(var(--space-smaller) + var(--space-smallest)) var(--space-small);\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm {\n grid-template-columns: -webkit-min-content 1fr;\n grid-template-columns: min-content 1fr;\n}\n\n.fl19i7ccgBu7NZkxnpvcI {\n grid-template-columns: 1fr -webkit-min-content;\n grid-template-columns: 1fr min-content;\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm.fl19i7ccgBu7NZkxnpvcI {\n grid-template-columns: -webkit-min-content 1fr -webkit-min-content;\n grid-template-columns: min-content 1fr min-content;\n}\n\n._3Uf2El5YBbG3DmUWHBhuea,\n._35he2rVDYRU4YQko5r4adP ~ ._2XfthED8eqbKIyTNoH1aWp {\n box-shadow: var(--shadow-base);\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n/**\n * Interaction\n */\n\n._3Uf2El5YBbG3DmUWHBhuea:hover,\n._2XfthED8eqbKIyTNoH1aWp:focus {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n._2XfthED8eqbKIyTNoH1aWp:focus,\n._35he2rVDYRU4YQko5r4adP:focus ~ ._2XfthED8eqbKIyTNoH1aWp {\n box-shadow: var(--shadow-focus);\n}\n\n._35he2rVDYRU4YQko5r4adP:focus ~ ._2XfthED8eqbKIyTNoH1aWp:not(._18wCcoIrboygQTnIVm8yzS) {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n/**\n * States\n */\n\n._2XfthED8eqbKIyTNoH1aWp._18wCcoIrboygQTnIVm8yzS {\n border-color: var(--color-surface--reverse);\n color: var(--color-text--reverse);\n background-color: var(--color-surface--reverse);\n}\n\n._2XfthED8eqbKIyTNoH1aWp._1FTJ2ALrm1mVaT7HdMFFGN {\n border-color: var(--color-critical--onSurface);\n color: var(--color-critical--onSurface);\n background-color: var(--color-critical--surface);\n}\n\n._2XfthED8eqbKIyTNoH1aWp.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-disabled--secondary);\n color: var(--color-disabled);\n background-color: var(--color-disabled--secondary);\n}\n\n._18wCcoIrboygQTnIVm8yzS.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-disabled);\n color: var(--color-white);\n background-color: var(--color-disabled);\n}\n\n._1FTJ2ALrm1mVaT7HdMFFGN.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-critical);\n}\n\n/**\n * Input checkbox/radio\n *\n * Hide checkbox on UI but not screen readers and still allow focus state\n */\n\n._35he2rVDYRU4YQko5r4adP {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(100%);\n clip-path: inset(100%);\n white-space: nowrap;\n}\n\n/**\n * Button\n */\n\n._1M_ek3kiaa7OApx5rwBEc3 {\n display: -ms-flexbox;\n display: flex;\n border-radius: var(--radius-base);\n cursor: pointer;\n transition: background-color 200ms ease;\n}\n\n._1M_ek3kiaa7OApx5rwBEc3:hover,\n._1M_ek3kiaa7OApx5rwBEc3:focus {\n background-color: var(--color-surface--hover);\n}\n\n._1M_ek3kiaa7OApx5rwBEc3:focus,\n._3Uf2El5YBbG3DmUWHBhuea ._1M_ek3kiaa7OApx5rwBEc3:hover {\n box-shadow: var(--shadow-focus);\n outline: none;\n}\n\n/**\n * Override icon default colors.\n *\n * NOTE: This is a workaround since some icons have default colors that we don't\n * want to override until the component color prop overrides it.\n * DO NOT COPY!\n */\n\n._3AG5dSWeyKYD1Xfu9fN_DL > svg {\n fill: var(--color-interactive--subtle);\n}\n\n._3AG5dSWeyKYD1Xfu9fN_DL {\n display: -ms-flexbox;\n display: flex;\n}\n";
|
|
32
|
+
var styles$1 = {"wrapper":"uhcyg-a-GLRKF_7oHwvMP","chip":"_2XfthED8eqbKIyTNoH1aWp","hasPrefix":"_4U2lNr3Kk6xnNZTk3Fxgm","hasSuffix":"fl19i7ccgBu7NZkxnpvcI","clickable":"_3Uf2El5YBbG3DmUWHBhuea","input":"_35he2rVDYRU4YQko5r4adP","active":"_18wCcoIrboygQTnIVm8yzS","invalid":"_1FTJ2ALrm1mVaT7HdMFFGN","disabled":"B1ELFzeQy9Ihy9oYcv-px","button":"_1M_ek3kiaa7OApx5rwBEc3","icon":"_3AG5dSWeyKYD1Xfu9fN_DL"};
|
|
33
|
+
styleInject_es.styleInject(css$1);
|
|
32
34
|
|
|
33
|
-
function InternalChipButton(_a) {
|
|
34
|
-
var icon = _a.icon, invalid = _a.invalid, disabled = _a.disabled, label = _a.label, onClick = _a.onClick;
|
|
35
|
-
var buttonRef = React.useRef();
|
|
36
|
-
return (React__default.createElement("div", { ref: buttonRef, className: styles.button, tabIndex: 0, onKeyUp: handleKeyUp, onKeyDown: handleKeyDown, onClick: handleClick, role: "button", "aria-label": "Remove " + label, "aria-hidden": true, "aria-disabled": disabled, "data-testid": "remove-chip-button" },
|
|
37
|
-
React__default.createElement(
|
|
38
|
-
function handleKeyUp(event) {
|
|
39
|
-
if (document.activeElement === buttonRef.current &&
|
|
40
|
-
(event.key === " " || event.key === "Enter")) {
|
|
41
|
-
event.stopPropagation();
|
|
42
|
-
buttonRef.current.click();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function handleKeyDown(event) {
|
|
46
|
-
if (document.activeElement === buttonRef.current && event.key === " ") {
|
|
47
|
-
// Don't scroll down
|
|
48
|
-
event.preventDefault();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
function getColor() {
|
|
52
|
-
if (disabled)
|
|
53
|
-
return "disabled";
|
|
54
|
-
if (invalid)
|
|
55
|
-
return "critical";
|
|
56
|
-
return "greyBlue";
|
|
57
|
-
}
|
|
58
|
-
function handleClick(event) {
|
|
59
|
-
event.stopPropagation();
|
|
60
|
-
onClick === null || onClick === void 0 ? void 0 : onClick(event);
|
|
61
|
-
}
|
|
35
|
+
function InternalChipButton(_a) {
|
|
36
|
+
var icon = _a.icon, invalid = _a.invalid, disabled = _a.disabled, label = _a.label, onClick = _a.onClick;
|
|
37
|
+
var buttonRef = React.useRef();
|
|
38
|
+
return (React__default["default"].createElement("div", { ref: buttonRef, className: styles$1.button, tabIndex: 0, onKeyUp: handleKeyUp, onKeyDown: handleKeyDown, onClick: handleClick, role: "button", "aria-label": "Remove " + label, "aria-hidden": true, "aria-disabled": disabled, "data-testid": "remove-chip-button" },
|
|
39
|
+
React__default["default"].createElement(Icon.Icon, { name: icon, color: getColor() })));
|
|
40
|
+
function handleKeyUp(event) {
|
|
41
|
+
if (document.activeElement === buttonRef.current &&
|
|
42
|
+
(event.key === " " || event.key === "Enter")) {
|
|
43
|
+
event.stopPropagation();
|
|
44
|
+
buttonRef.current.click();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function handleKeyDown(event) {
|
|
48
|
+
if (document.activeElement === buttonRef.current && event.key === " ") {
|
|
49
|
+
// Don't scroll down
|
|
50
|
+
event.preventDefault();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function getColor() {
|
|
54
|
+
if (disabled)
|
|
55
|
+
return "disabled";
|
|
56
|
+
if (invalid)
|
|
57
|
+
return "critical";
|
|
58
|
+
return "greyBlue";
|
|
59
|
+
}
|
|
60
|
+
function handleClick(event) {
|
|
61
|
+
event.stopPropagation();
|
|
62
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(event);
|
|
63
|
+
}
|
|
62
64
|
}
|
|
63
65
|
|
|
64
|
-
function InternalChipAffix(_a) {
|
|
65
|
-
var affix = _a.affix, active = _a.active, invalid = _a.invalid, disabled = _a.disabled;
|
|
66
|
-
assertProps();
|
|
67
|
-
if ((affix === null || affix === void 0 ? void 0 : affix.type) ===
|
|
68
|
-
return React__default.createElement(
|
|
69
|
-
}
|
|
70
|
-
if ((affix === null || affix === void 0 ? void 0 : affix.type) ===
|
|
71
|
-
return renderChipIcon(affix);
|
|
72
|
-
}
|
|
73
|
-
if ((affix === null || affix === void 0 ? void 0 : affix.type) === InternalChipButton) {
|
|
74
|
-
return React__default.createElement(InternalChipButton,
|
|
75
|
-
}
|
|
76
|
-
return React__default.createElement(React__default.Fragment, null);
|
|
77
|
-
function renderChipIcon(icon) {
|
|
78
|
-
var color = getIconColor();
|
|
79
|
-
return (React__default.createElement("div", { className: styles.icon }, React__default.cloneElement(icon,
|
|
80
|
-
}
|
|
81
|
-
function getIconColor() {
|
|
82
|
-
if (disabled && !active)
|
|
83
|
-
return "disabled";
|
|
84
|
-
if (invalid && !disabled)
|
|
85
|
-
return "critical";
|
|
86
|
-
if (active)
|
|
87
|
-
return "white";
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
function assertProps() {
|
|
91
|
-
var isAvatar = (affix === null || affix === void 0 ? void 0 : affix.type) ===
|
|
92
|
-
var isIcon = (affix === null || affix === void 0 ? void 0 : affix.type) ===
|
|
93
|
-
var isChipButton = (affix === null || affix === void 0 ? void 0 : affix.type) === InternalChipButton || false;
|
|
94
|
-
hooks.useAssert(!!affix && !(isAvatar || isIcon || isChipButton), "Prefix prop only accepts \"<Avatar />\" or \"<Icon />\" component. You have \"" + (affix === null || affix === void 0 ? void 0 : affix.type) + "\".");
|
|
95
|
-
}
|
|
66
|
+
function InternalChipAffix(_a) {
|
|
67
|
+
var affix = _a.affix, active = _a.active, invalid = _a.invalid, disabled = _a.disabled;
|
|
68
|
+
assertProps();
|
|
69
|
+
if ((affix === null || affix === void 0 ? void 0 : affix.type) === Avatar.Avatar) {
|
|
70
|
+
return React__default["default"].createElement(Avatar.Avatar, tslib_es6.__assign({}, affix.props, { size: "small" }));
|
|
71
|
+
}
|
|
72
|
+
if ((affix === null || affix === void 0 ? void 0 : affix.type) === Icon.Icon) {
|
|
73
|
+
return renderChipIcon(affix);
|
|
74
|
+
}
|
|
75
|
+
if ((affix === null || affix === void 0 ? void 0 : affix.type) === InternalChipButton) {
|
|
76
|
+
return React__default["default"].createElement(InternalChipButton, tslib_es6.__assign({}, affix.props));
|
|
77
|
+
}
|
|
78
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
79
|
+
function renderChipIcon(icon) {
|
|
80
|
+
var color = getIconColor();
|
|
81
|
+
return (React__default["default"].createElement("div", { className: styles$1.icon }, React__default["default"].cloneElement(icon, tslib_es6.__assign({ size: "base" }, (color && { color: color })))));
|
|
82
|
+
}
|
|
83
|
+
function getIconColor() {
|
|
84
|
+
if (disabled && !active)
|
|
85
|
+
return "disabled";
|
|
86
|
+
if (invalid && !disabled)
|
|
87
|
+
return "critical";
|
|
88
|
+
if (active)
|
|
89
|
+
return "white";
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
function assertProps() {
|
|
93
|
+
var isAvatar = (affix === null || affix === void 0 ? void 0 : affix.type) === Avatar.Avatar || false;
|
|
94
|
+
var isIcon = (affix === null || affix === void 0 ? void 0 : affix.type) === Icon.Icon || false;
|
|
95
|
+
var isChipButton = (affix === null || affix === void 0 ? void 0 : affix.type) === InternalChipButton || false;
|
|
96
|
+
hooks.useAssert(!!affix && !(isAvatar || isIcon || isChipButton), "Prefix prop only accepts \"<Avatar />\" or \"<Icon />\" component. You have \"" + (affix === null || affix === void 0 ? void 0 : affix.type) + "\".");
|
|
97
|
+
}
|
|
96
98
|
}
|
|
97
99
|
|
|
98
|
-
function InternalChip(_a) {
|
|
99
|
-
var _b;
|
|
100
|
-
var label = _a.label, _c = _a.active, active = _c === void 0 ? false : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, _e = _a.invalid, invalid = _e === void 0 ? false : _e, prefix = _a.prefix, suffix = _a.suffix, tabIndex = _a.tabIndex, ariaLabel = _a.ariaLabel, onClick = _a.onClick, onKeyDown = _a.onKeyDown;
|
|
101
|
-
var _f =
|
|
102
|
-
var isClickable = onClick && !disabled;
|
|
103
|
-
var classNames =
|
|
104
|
-
_b[styles.clickable] = isClickable,
|
|
105
|
-
_b[styles.active] = active,
|
|
106
|
-
_b[styles.disabled] = disabled,
|
|
107
|
-
_b[styles.invalid] = invalid,
|
|
108
|
-
_b[styles.hasPrefix] = prefix,
|
|
109
|
-
_b[styles.hasSuffix] = suffix,
|
|
110
|
-
_b));
|
|
111
|
-
var affixProps = { active: active, invalid: invalid, disabled: disabled };
|
|
112
|
-
var Tag = onClick ? "button" : "div";
|
|
113
|
-
var chip = (React__default.createElement(Tag,
|
|
114
|
-
React__default.createElement(InternalChipAffix,
|
|
115
|
-
React__default.createElement(
|
|
116
|
-
React__default.createElement("span", { ref: setTruncateRef }, label)),
|
|
117
|
-
React__default.createElement(InternalChipAffix,
|
|
118
|
-
return isTruncated() ? React__default.createElement(
|
|
119
|
-
function isTruncated() {
|
|
120
|
-
var _a;
|
|
121
|
-
var truncateParentHeight = ((_a = truncateRef === null || truncateRef === void 0 ? void 0 : truncateRef.parentElement) === null || _a === void 0 ? void 0 : _a.offsetHeight) || 0;
|
|
122
|
-
var truncateChildHeight = (truncateRef === null || truncateRef === void 0 ? void 0 : truncateRef.offsetHeight) || 0;
|
|
123
|
-
return truncateChildHeight >= truncateParentHeight * 2;
|
|
124
|
-
}
|
|
100
|
+
function InternalChip(_a) {
|
|
101
|
+
var _b;
|
|
102
|
+
var label = _a.label, _c = _a.active, active = _c === void 0 ? false : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, _e = _a.invalid, invalid = _e === void 0 ? false : _e, prefix = _a.prefix, suffix = _a.suffix, tabIndex = _a.tabIndex, ariaLabel = _a.ariaLabel, onClick = _a.onClick, onKeyDown = _a.onKeyDown;
|
|
103
|
+
var _f = tslib_es6.__read(React.useState(), 2), truncateRef = _f[0], setTruncateRef = _f[1];
|
|
104
|
+
var isClickable = onClick && !disabled;
|
|
105
|
+
var classNames = classnames__default["default"](styles$1.chip, (_b = {},
|
|
106
|
+
_b[styles$1.clickable] = isClickable,
|
|
107
|
+
_b[styles$1.active] = active,
|
|
108
|
+
_b[styles$1.disabled] = disabled,
|
|
109
|
+
_b[styles$1.invalid] = invalid,
|
|
110
|
+
_b[styles$1.hasPrefix] = prefix,
|
|
111
|
+
_b[styles$1.hasSuffix] = suffix,
|
|
112
|
+
_b));
|
|
113
|
+
var affixProps = { active: active, invalid: invalid, disabled: disabled };
|
|
114
|
+
var Tag = onClick ? "button" : "div";
|
|
115
|
+
var chip = (React__default["default"].createElement(Tag, tslib_es6.__assign({ className: classNames }, (isClickable && { onClick: onClick, disabled: disabled }), { onKeyDown: onKeyDown, "data-testid": "chip-wrapper", "aria-label": ariaLabel, tabIndex: tabIndex, role: tabIndex !== undefined ? "option" : undefined }),
|
|
116
|
+
React__default["default"].createElement(InternalChipAffix, tslib_es6.__assign({ affix: prefix }, affixProps)),
|
|
117
|
+
React__default["default"].createElement(Typography.Typography, { element: "span", numberOfLines: 1, size: "base" },
|
|
118
|
+
React__default["default"].createElement("span", { ref: setTruncateRef }, label)),
|
|
119
|
+
React__default["default"].createElement(InternalChipAffix, tslib_es6.__assign({ affix: suffix }, affixProps))));
|
|
120
|
+
return isTruncated() ? React__default["default"].createElement(Tooltip.Tooltip, { message: label }, chip) : chip;
|
|
121
|
+
function isTruncated() {
|
|
122
|
+
var _a;
|
|
123
|
+
var truncateParentHeight = ((_a = truncateRef === null || truncateRef === void 0 ? void 0 : truncateRef.parentElement) === null || _a === void 0 ? void 0 : _a.offsetHeight) || 0;
|
|
124
|
+
var truncateChildHeight = (truncateRef === null || truncateRef === void 0 ? void 0 : truncateRef.offsetHeight) || 0;
|
|
125
|
+
return truncateChildHeight >= truncateParentHeight * 2;
|
|
126
|
+
}
|
|
125
127
|
}
|
|
126
128
|
|
|
127
|
-
function ChipDismissible(_a) {
|
|
128
|
-
var label = _a.label, disabled = _a.disabled, invalid = _a.invalid, prefix = _a.prefix, onClick = _a.onClick, onRequestRemove = _a.onRequestRemove;
|
|
129
|
-
return (React__default.createElement(InternalChip, { label: label, disabled: disabled, invalid: invalid, prefix: prefix, onClick: onClick, suffix: React__default.createElement(InternalChipButton, { icon: "remove", label: label, invalid: invalid, disabled: disabled, onClick: onRequestRemove }) }));
|
|
129
|
+
function ChipDismissible(_a) {
|
|
130
|
+
var label = _a.label, disabled = _a.disabled, invalid = _a.invalid, prefix = _a.prefix, onClick = _a.onClick, onRequestRemove = _a.onRequestRemove;
|
|
131
|
+
return (React__default["default"].createElement(InternalChip, { label: label, disabled: disabled, invalid: invalid, prefix: prefix, onClick: onClick, suffix: React__default["default"].createElement(InternalChipButton, { icon: "remove", label: label, invalid: invalid, disabled: disabled, onClick: onRequestRemove }) }));
|
|
130
132
|
}
|
|
131
133
|
|
|
132
|
-
function InternalChipSingleSelect(_a) {
|
|
133
|
-
var children = _a.children, selected = _a.selected, _b = _a.name, name = _b === void 0 ? uuid.v1() : _b, onChange = _a.onChange, onClick = _a.onClick;
|
|
134
|
-
return (React__default.createElement("div", { className: styles.wrapper, "data-testid": "singleselect-chips" }, React__default.Children.map(children, function (child) {
|
|
135
|
-
var isSelected = child.props.value === selected;
|
|
136
|
-
return (React__default.createElement("label", null,
|
|
137
|
-
React__default.createElement("input", { type: "radio", checked: isSelected, className: styles.input, name: name, onClick: handleClick(child.props.value), onKeyUp: handleKeyUp(isSelected, child.props.value), onChange: function () {
|
|
138
|
-
/* No op. onClick handles the change to allow deselecting. */
|
|
139
|
-
}, disabled: child.props.disabled }),
|
|
140
|
-
React__default.createElement(InternalChip,
|
|
141
|
-
})));
|
|
142
|
-
function handleKeyUp(active, value) {
|
|
143
|
-
if (!active)
|
|
144
|
-
return;
|
|
145
|
-
return function (event) {
|
|
146
|
-
if (event.key === " ") {
|
|
147
|
-
// Wait for DOM changes before applying the new change.
|
|
148
|
-
setTimeout(function () { return handleChange(value); }, 0);
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
function handleClick(value) {
|
|
153
|
-
return function (event) {
|
|
154
|
-
onClick === null || onClick === void 0 ? void 0 : onClick(event, value);
|
|
155
|
-
handleChange(value);
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
function handleChange(value) {
|
|
159
|
-
var newValue = value !== selected ? value : undefined;
|
|
160
|
-
onChange(newValue);
|
|
161
|
-
}
|
|
134
|
+
function InternalChipSingleSelect(_a) {
|
|
135
|
+
var children = _a.children, selected = _a.selected, _b = _a.name, name = _b === void 0 ? uuid.v1() : _b, onChange = _a.onChange, onClick = _a.onClick;
|
|
136
|
+
return (React__default["default"].createElement("div", { className: styles$1.wrapper, "data-testid": "singleselect-chips" }, React__default["default"].Children.map(children, function (child) {
|
|
137
|
+
var isSelected = child.props.value === selected;
|
|
138
|
+
return (React__default["default"].createElement("label", null,
|
|
139
|
+
React__default["default"].createElement("input", { type: "radio", checked: isSelected, className: styles$1.input, name: name, onClick: handleClick(child.props.value), onKeyUp: handleKeyUp(isSelected, child.props.value), onChange: function () {
|
|
140
|
+
/* No op. onClick handles the change to allow deselecting. */
|
|
141
|
+
}, disabled: child.props.disabled }),
|
|
142
|
+
React__default["default"].createElement(InternalChip, tslib_es6.__assign({}, child.props, { active: isSelected }))));
|
|
143
|
+
})));
|
|
144
|
+
function handleKeyUp(active, value) {
|
|
145
|
+
if (!active)
|
|
146
|
+
return;
|
|
147
|
+
return function (event) {
|
|
148
|
+
if (event.key === " ") {
|
|
149
|
+
// Wait for DOM changes before applying the new change.
|
|
150
|
+
setTimeout(function () { return handleChange(value); }, 0);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function handleClick(value) {
|
|
155
|
+
return function (event) {
|
|
156
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(event, value);
|
|
157
|
+
handleChange(value);
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
function handleChange(value) {
|
|
161
|
+
var newValue = value !== selected ? value : undefined;
|
|
162
|
+
onChange(newValue);
|
|
163
|
+
}
|
|
162
164
|
}
|
|
163
165
|
|
|
164
|
-
function InternalChipMultiSelect(_a) {
|
|
165
|
-
var children = _a.children, selected = _a.selected, onChange = _a.onChange, onClick = _a.onClick;
|
|
166
|
-
return (React__default.createElement("div", { className: styles.wrapper, "data-testid": "multiselect-chips" }, React__default.Children.map(children, function (chip) {
|
|
167
|
-
var isChipActive = isChipSelected(chip.props.value);
|
|
168
|
-
return (React__default.createElement("label", null,
|
|
169
|
-
React__default.createElement("input", { type: "checkbox", checked: isChipActive, className: styles.input, onClick: handleClick(chip.props.value), onChange: handleChange(chip.props.value), disabled: chip.props.disabled }),
|
|
170
|
-
React__default.createElement(InternalChip,
|
|
171
|
-
})));
|
|
172
|
-
function isChipSelected(value) {
|
|
173
|
-
return selected.includes(value);
|
|
174
|
-
}
|
|
175
|
-
function handleClick(value) {
|
|
176
|
-
return function (event) { return onClick === null || onClick === void 0 ? void 0 : onClick(event, value); };
|
|
177
|
-
}
|
|
178
|
-
function handleChange(value) {
|
|
179
|
-
return function () {
|
|
180
|
-
if (isChipSelected(value)) {
|
|
181
|
-
handleDeselect(value);
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
handleSelect(value);
|
|
185
|
-
}
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
function handleSelect(value) {
|
|
189
|
-
var newVal =
|
|
190
|
-
onChange(newVal);
|
|
191
|
-
}
|
|
192
|
-
function handleDeselect(value) {
|
|
193
|
-
var values = selected;
|
|
194
|
-
var newVal = values.filter(function (val) { return val !== value; });
|
|
195
|
-
onChange(newVal);
|
|
196
|
-
}
|
|
197
|
-
function checkmarkIcon(show) {
|
|
198
|
-
// Ideally, we should be returning a fragment `<></>` when a function
|
|
199
|
-
// returns a component / element. However, this one needs to return nothing
|
|
200
|
-
// to prevent it from randomly rendering a suffix.
|
|
201
|
-
//
|
|
202
|
-
// DO NOT COPY!
|
|
203
|
-
if (!show)
|
|
204
|
-
return;
|
|
205
|
-
return React__default.createElement(
|
|
206
|
-
}
|
|
166
|
+
function InternalChipMultiSelect(_a) {
|
|
167
|
+
var children = _a.children, selected = _a.selected, onChange = _a.onChange, onClick = _a.onClick;
|
|
168
|
+
return (React__default["default"].createElement("div", { className: styles$1.wrapper, "data-testid": "multiselect-chips" }, React__default["default"].Children.map(children, function (chip) {
|
|
169
|
+
var isChipActive = isChipSelected(chip.props.value);
|
|
170
|
+
return (React__default["default"].createElement("label", null,
|
|
171
|
+
React__default["default"].createElement("input", { type: "checkbox", checked: isChipActive, className: styles$1.input, onClick: handleClick(chip.props.value), onChange: handleChange(chip.props.value), disabled: chip.props.disabled }),
|
|
172
|
+
React__default["default"].createElement(InternalChip, tslib_es6.__assign({}, chip.props, { active: isChipActive, suffix: checkmarkIcon(isChipActive) }))));
|
|
173
|
+
})));
|
|
174
|
+
function isChipSelected(value) {
|
|
175
|
+
return selected.includes(value);
|
|
176
|
+
}
|
|
177
|
+
function handleClick(value) {
|
|
178
|
+
return function (event) { return onClick === null || onClick === void 0 ? void 0 : onClick(event, value); };
|
|
179
|
+
}
|
|
180
|
+
function handleChange(value) {
|
|
181
|
+
return function () {
|
|
182
|
+
if (isChipSelected(value)) {
|
|
183
|
+
handleDeselect(value);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
handleSelect(value);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
function handleSelect(value) {
|
|
191
|
+
var newVal = tslib_es6.__spread(selected, [value]);
|
|
192
|
+
onChange(newVal);
|
|
193
|
+
}
|
|
194
|
+
function handleDeselect(value) {
|
|
195
|
+
var values = selected;
|
|
196
|
+
var newVal = values.filter(function (val) { return val !== value; });
|
|
197
|
+
onChange(newVal);
|
|
198
|
+
}
|
|
199
|
+
function checkmarkIcon(show) {
|
|
200
|
+
// Ideally, we should be returning a fragment `<></>` when a function
|
|
201
|
+
// returns a component / element. However, this one needs to return nothing
|
|
202
|
+
// to prevent it from randomly rendering a suffix.
|
|
203
|
+
//
|
|
204
|
+
// DO NOT COPY!
|
|
205
|
+
if (!show)
|
|
206
|
+
return;
|
|
207
|
+
return React__default["default"].createElement(Icon.Icon, { name: "checkmark" });
|
|
208
|
+
}
|
|
207
209
|
}
|
|
208
210
|
|
|
209
|
-
var css
|
|
210
|
-
var styles
|
|
211
|
-
|
|
211
|
+
var css = ".UICoKaZcJNyJZu_jLSFe0 {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n box-sizing: border-box;\n border: var(--border-base) solid transparent;\n border-radius: var(--radius-base);\n transition: all var(--timing-base);\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.iYpu9Vckapbgfo7nKby6- {\n -ms-flex: 1;\n flex: 1;\n min-width: 120px;\n padding: var(--space-small) 0;\n border: none;\n border-radius: 0;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-size: var(--typography--fontSize-base);\n line-height: var(--typography--lineHeight-base);\n background: transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.iYpu9Vckapbgfo7nKby6-:focus {\n outline: none;\n}\n\n._3Y-bhobfNvAAUslopzbOoq {\n position: relative;\n z-index: var(--elevation-menu);\n width: 100%;\n}\n\n._3pV83Z-mpuL-nlud9deXib {\n max-height: 320px;\n box-shadow: var(--shadow-base);\n padding: var(--space-small) 0;\n border-radius: var(--radius-base);\n overflow-y: scroll;\n background-color: var(--color-surface);\n}\n\n.yZlvrckyLt2bbuJSDc3s_,\n._1JS35aIdiRtVwq3RLMJLlj {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n padding: var(--space-small);\n border: none;\n background-color: transparent;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n -ms-flex-align: center;\n align-items: center;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n}\n\n.yZlvrckyLt2bbuJSDc3s_:focus {\n box-shadow: var(--shadow-focus);\n}\n\n.yZlvrckyLt2bbuJSDc3s_:focus,\n._1P6NA2S4eCq-AiLRgspXJX {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n._1JS35aIdiRtVwq3RLMJLlj {\n -ms-flex-pack: center;\n justify-content: center;\n}\n";
|
|
212
|
+
var styles = {"wrapper":"UICoKaZcJNyJZu_jLSFe0","input":"iYpu9Vckapbgfo7nKby6-","menu":"_3Y-bhobfNvAAUslopzbOoq","menuList":"_3pV83Z-mpuL-nlud9deXib","menuListOption":"yZlvrckyLt2bbuJSDc3s_","loadingIndicator":"_1JS35aIdiRtVwq3RLMJLlj","activeOption":"_1P6NA2S4eCq-AiLRgspXJX"};
|
|
213
|
+
styleInject_es.styleInject(css);
|
|
212
214
|
|
|
213
|
-
function useInternalChipDismissible(_a) {
|
|
214
|
-
var children = _a.children, selected = _a.selected, onChange = _a.onChange, onClick = _a.onClick, onCustomAdd = _a.onCustomAdd;
|
|
215
|
-
var ref = React.useRef(null);
|
|
216
|
-
var chipOptions = children.map(function (chip) { return chip.props; });
|
|
217
|
-
var visibleChipOptions = chipOptions.filter(function (chip) {
|
|
218
|
-
return selected.includes(chip.value);
|
|
219
|
-
});
|
|
220
|
-
var sortedVisibleChipOptions = lodash.sortBy(visibleChipOptions, function (chip) {
|
|
221
|
-
return selected.indexOf(chip.value);
|
|
222
|
-
});
|
|
223
|
-
var availableChipOptions = chipOptions.filter(function (chip) { return !selected.includes(chip.value); });
|
|
224
|
-
var liveAnnounce = hooks.useLiveAnnounce().liveAnnounce;
|
|
225
|
-
var actions = {
|
|
226
|
-
handleChipRemove: function (value) {
|
|
227
|
-
return function () {
|
|
228
|
-
liveAnnounce(value + " Removed");
|
|
229
|
-
onChange(selected.filter(function (val) { return val !== value; }));
|
|
230
|
-
};
|
|
231
|
-
},
|
|
232
|
-
handleChipAdd: function (value) { return onChange(
|
|
233
|
-
handleCustomAdd: onCustomAdd,
|
|
234
|
-
handleChipClick: function (value) {
|
|
235
|
-
if (onClick === undefined)
|
|
236
|
-
return;
|
|
237
|
-
return function (event) { return onClick(event, value); };
|
|
238
|
-
},
|
|
239
|
-
handleWrapperKeyDown: function (event) {
|
|
240
|
-
var target = event.target;
|
|
241
|
-
var isInputAndHasValue = target instanceof HTMLInputElement && target.value;
|
|
242
|
-
if (isInputAndHasValue)
|
|
243
|
-
return;
|
|
244
|
-
var nextElementToFocus = target.nextElementSibling;
|
|
245
|
-
var prevElementToFocus = target.previousElementSibling;
|
|
246
|
-
if (event.key === "ArrowLeft" &&
|
|
247
|
-
prevElementToFocus instanceof HTMLElement) {
|
|
248
|
-
prevElementToFocus.focus();
|
|
249
|
-
}
|
|
250
|
-
if (event.key === "ArrowRight" &&
|
|
251
|
-
nextElementToFocus instanceof HTMLElement) {
|
|
252
|
-
nextElementToFocus.focus();
|
|
253
|
-
}
|
|
254
|
-
},
|
|
255
|
-
handleChipKeyDown: function (value) {
|
|
256
|
-
return function (event) {
|
|
257
|
-
if (event.key === "Backspace" || event.key === "Delete") {
|
|
258
|
-
var target = event.target;
|
|
259
|
-
if (target instanceof HTMLElement) {
|
|
260
|
-
var prevElement = target.previousElementSibling;
|
|
261
|
-
var nextElement = target.nextElementSibling;
|
|
262
|
-
if (prevElement instanceof HTMLElement) {
|
|
263
|
-
prevElement.focus();
|
|
264
|
-
}
|
|
265
|
-
else if (nextElement instanceof HTMLElement) {
|
|
266
|
-
nextElement.focus();
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
actions.handleChipRemove(value)();
|
|
270
|
-
}
|
|
271
|
-
};
|
|
272
|
-
},
|
|
273
|
-
};
|
|
274
|
-
return
|
|
275
|
-
sortedVisibleChipOptions: sortedVisibleChipOptions,
|
|
276
|
-
availableChipOptions: availableChipOptions });
|
|
215
|
+
function useInternalChipDismissible(_a) {
|
|
216
|
+
var children = _a.children, selected = _a.selected, onChange = _a.onChange, onClick = _a.onClick, onCustomAdd = _a.onCustomAdd;
|
|
217
|
+
var ref = React.useRef(null);
|
|
218
|
+
var chipOptions = children.map(function (chip) { return chip.props; });
|
|
219
|
+
var visibleChipOptions = chipOptions.filter(function (chip) {
|
|
220
|
+
return selected.includes(chip.value);
|
|
221
|
+
});
|
|
222
|
+
var sortedVisibleChipOptions = lodash.sortBy(visibleChipOptions, function (chip) {
|
|
223
|
+
return selected.indexOf(chip.value);
|
|
224
|
+
});
|
|
225
|
+
var availableChipOptions = chipOptions.filter(function (chip) { return !selected.includes(chip.value); });
|
|
226
|
+
var liveAnnounce = hooks.useLiveAnnounce().liveAnnounce;
|
|
227
|
+
var actions = {
|
|
228
|
+
handleChipRemove: function (value) {
|
|
229
|
+
return function () {
|
|
230
|
+
liveAnnounce(value + " Removed");
|
|
231
|
+
onChange(selected.filter(function (val) { return val !== value; }));
|
|
232
|
+
};
|
|
233
|
+
},
|
|
234
|
+
handleChipAdd: function (value) { return onChange(tslib_es6.__spread(selected, [value])); },
|
|
235
|
+
handleCustomAdd: onCustomAdd,
|
|
236
|
+
handleChipClick: function (value) {
|
|
237
|
+
if (onClick === undefined)
|
|
238
|
+
return;
|
|
239
|
+
return function (event) { return onClick(event, value); };
|
|
240
|
+
},
|
|
241
|
+
handleWrapperKeyDown: function (event) {
|
|
242
|
+
var target = event.target;
|
|
243
|
+
var isInputAndHasValue = target instanceof HTMLInputElement && target.value;
|
|
244
|
+
if (isInputAndHasValue)
|
|
245
|
+
return;
|
|
246
|
+
var nextElementToFocus = target.nextElementSibling;
|
|
247
|
+
var prevElementToFocus = target.previousElementSibling;
|
|
248
|
+
if (event.key === "ArrowLeft" &&
|
|
249
|
+
prevElementToFocus instanceof HTMLElement) {
|
|
250
|
+
prevElementToFocus.focus();
|
|
251
|
+
}
|
|
252
|
+
if (event.key === "ArrowRight" &&
|
|
253
|
+
nextElementToFocus instanceof HTMLElement) {
|
|
254
|
+
nextElementToFocus.focus();
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
handleChipKeyDown: function (value) {
|
|
258
|
+
return function (event) {
|
|
259
|
+
if (event.key === "Backspace" || event.key === "Delete") {
|
|
260
|
+
var target = event.target;
|
|
261
|
+
if (target instanceof HTMLElement) {
|
|
262
|
+
var prevElement = target.previousElementSibling;
|
|
263
|
+
var nextElement = target.nextElementSibling;
|
|
264
|
+
if (prevElement instanceof HTMLElement) {
|
|
265
|
+
prevElement.focus();
|
|
266
|
+
}
|
|
267
|
+
else if (nextElement instanceof HTMLElement) {
|
|
268
|
+
nextElement.focus();
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
actions.handleChipRemove(value)();
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
return tslib_es6.__assign(tslib_es6.__assign({}, actions), { ref: ref,
|
|
277
|
+
sortedVisibleChipOptions: sortedVisibleChipOptions,
|
|
278
|
+
availableChipOptions: availableChipOptions });
|
|
277
279
|
}
|
|
278
280
|
|
|
279
|
-
var menuId = uuid.v1();
|
|
280
|
-
// eslint-disable-next-line max-statements
|
|
281
|
-
function useInternalChipDismissibleInput(_a) {
|
|
282
|
-
var options = _a.options, _b = _a.isLoadingMore, isLoadingMore = _b === void 0 ? false : _b, onCustomOptionSelect = _a.onCustomOptionSelect, onOptionSelect = _a.onOptionSelect, onSearch = _a.onSearch;
|
|
283
|
-
var _c =
|
|
284
|
-
var _d =
|
|
285
|
-
var _e =
|
|
286
|
-
var _f =
|
|
287
|
-
var _g =
|
|
288
|
-
var _h =
|
|
289
|
-
var canAddCustomOption = onCustomOptionSelect !== undefined && !isLoadingMore;
|
|
290
|
-
var maxOptionIndex = allOptions.length - 1;
|
|
291
|
-
var liveAnnounce = hooks.useLiveAnnounce().liveAnnounce;
|
|
292
|
-
React.useEffect(function () {
|
|
293
|
-
setAllOptions(generateOptions(options, searchValue, canAddCustomOption));
|
|
294
|
-
}, [options]);
|
|
295
|
-
var computed = {
|
|
296
|
-
menuId: menuId,
|
|
297
|
-
inputRef: React.useRef(null),
|
|
298
|
-
activeOption: allOptions[activeIndex],
|
|
299
|
-
hasAvailableOptions: allOptions.length > 0,
|
|
300
|
-
nextOptionIndex: activeIndex < maxOptionIndex ? activeIndex + 1 : 0,
|
|
301
|
-
previousOptionIndex: activeIndex > 0 ? activeIndex - 1 : maxOptionIndex,
|
|
302
|
-
};
|
|
303
|
-
var actions = {
|
|
304
|
-
generateDescendantId: function (index) { return computed.menuId + "-" + index; },
|
|
305
|
-
handleReset: function () {
|
|
306
|
-
setActiveIndex(activeIndex === 0 ? activeIndex : activeIndex - 1);
|
|
307
|
-
setSearchValue("");
|
|
308
|
-
},
|
|
309
|
-
handleOpenMenu: function () { return setMenuOpen(true); },
|
|
310
|
-
handleCloseMenu: function () {
|
|
311
|
-
setMenuOpen(false);
|
|
312
|
-
setActiveIndex(0);
|
|
313
|
-
},
|
|
314
|
-
handleCancelBlur: function () { return setShouldCancelBlur(true); },
|
|
315
|
-
handleEnableBlur: function () { return setShouldCancelBlur(false); },
|
|
316
|
-
handleBlur: function () {
|
|
317
|
-
if (shouldCancelBlur)
|
|
318
|
-
return;
|
|
319
|
-
actions.handleReset();
|
|
320
|
-
actions.handleCloseMenu();
|
|
321
|
-
},
|
|
322
|
-
handleSearchChange: function (event) {
|
|
323
|
-
setActiveIndex(0);
|
|
324
|
-
setSearchValue(event.currentTarget.value);
|
|
325
|
-
setShouldCancelEnter(true);
|
|
326
|
-
},
|
|
327
|
-
handleSetActiveOnMouseOver: function (index) {
|
|
328
|
-
return function () { return setActiveIndex(index); };
|
|
329
|
-
},
|
|
330
|
-
handleSelectOption: function (selected) {
|
|
331
|
-
var _a;
|
|
332
|
-
if (allOptions.length === 0)
|
|
333
|
-
return;
|
|
334
|
-
var setValue = selected.custom ? onCustomOptionSelect : onOptionSelect;
|
|
335
|
-
if (setValue) {
|
|
336
|
-
setValue(selected.value);
|
|
337
|
-
liveAnnounce(selected.label + " Added");
|
|
338
|
-
actions.handleReset();
|
|
339
|
-
(_a = computed.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
340
|
-
}
|
|
341
|
-
},
|
|
342
|
-
handleKeyDown: function (event) {
|
|
343
|
-
var callbacks = {
|
|
344
|
-
Enter: function () {
|
|
345
|
-
if (shouldCancelEnter)
|
|
346
|
-
return;
|
|
347
|
-
actions.handleSelectOption(computed.activeOption);
|
|
348
|
-
},
|
|
349
|
-
Tab: function () { return actions.handleSelectOption(computed.activeOption); },
|
|
350
|
-
",": function () {
|
|
351
|
-
if (searchValue.length === 0)
|
|
352
|
-
return;
|
|
353
|
-
actions.handleSelectOption(generateCustomOptionObject(searchValue));
|
|
354
|
-
},
|
|
355
|
-
ArrowDown: function () {
|
|
356
|
-
if (isLoadingMore && activeIndex === maxOptionIndex)
|
|
357
|
-
return;
|
|
358
|
-
setActiveIndex(computed.nextOptionIndex);
|
|
359
|
-
},
|
|
360
|
-
ArrowUp: function () { return setActiveIndex(computed.previousOptionIndex); },
|
|
361
|
-
};
|
|
362
|
-
if (searchValue.length === 0) {
|
|
363
|
-
callbacks.Backspace = function () {
|
|
364
|
-
var _a;
|
|
365
|
-
// If there's no text left to delete,
|
|
366
|
-
// and delete is pressed again, focus on a chip instead.
|
|
367
|
-
var target = (_a = computed.inputRef.current) === null || _a === void 0 ? void 0 : _a.previousElementSibling;
|
|
368
|
-
if (target instanceof HTMLElement) {
|
|
369
|
-
target.focus();
|
|
370
|
-
}
|
|
371
|
-
};
|
|
372
|
-
}
|
|
373
|
-
handleKeydownEvents(callbacks, event);
|
|
374
|
-
},
|
|
375
|
-
handleDebouncedSearch: lodash.debounce(function () {
|
|
376
|
-
onSearch && onSearch(searchValue);
|
|
377
|
-
setAllOptions(generateOptions(options, searchValue, canAddCustomOption));
|
|
378
|
-
setShouldCancelEnter(false);
|
|
379
|
-
}, 300),
|
|
380
|
-
};
|
|
381
|
-
return
|
|
382
|
-
allOptions: allOptions }), computed), { menuOpen: menuOpen,
|
|
383
|
-
searchValue: searchValue,
|
|
384
|
-
shouldCancelBlur: shouldCancelBlur });
|
|
385
|
-
}
|
|
386
|
-
function generateOptions(options, searchValue, canAddCustomOption) {
|
|
387
|
-
var allOptions = options
|
|
388
|
-
.filter(function (option) {
|
|
389
|
-
return option.label.toLowerCase().match(searchValue.trim().toLowerCase());
|
|
390
|
-
})
|
|
391
|
-
.map(function (opt) { return (
|
|
392
|
-
var _a = generateCustomOption(allOptions, searchValue, canAddCustomOption), shouldAddCustomOption = _a.shouldAddCustomOption, customOption = _a.customOption;
|
|
393
|
-
shouldAddCustomOption && allOptions.push(customOption);
|
|
394
|
-
return allOptions;
|
|
395
|
-
}
|
|
396
|
-
function generateCustomOption(options, searchValue, canAddCustomOption) {
|
|
397
|
-
function shouldAddCustomOption() {
|
|
398
|
-
var isMatchingOption = options.some(function (option) { return option.label.toLowerCase() === searchValue.trim().toLowerCase(); });
|
|
399
|
-
return !!searchValue && !isMatchingOption;
|
|
400
|
-
}
|
|
401
|
-
return {
|
|
402
|
-
shouldAddCustomOption: canAddCustomOption && shouldAddCustomOption(),
|
|
403
|
-
customOption: generateCustomOptionObject(searchValue),
|
|
404
|
-
};
|
|
405
|
-
}
|
|
406
|
-
function generateCustomOptionObject(searchValue) {
|
|
407
|
-
return {
|
|
408
|
-
value: searchValue,
|
|
409
|
-
label: searchValue,
|
|
410
|
-
prefix: React__default.createElement(
|
|
411
|
-
custom: true,
|
|
412
|
-
};
|
|
413
|
-
}
|
|
414
|
-
function handleKeydownEvents(callbacks, event) {
|
|
415
|
-
if (event.shiftKey)
|
|
416
|
-
return;
|
|
417
|
-
Object.entries(callbacks).forEach(function (_a) {
|
|
418
|
-
var _b =
|
|
419
|
-
if (event.key === key) {
|
|
420
|
-
event.preventDefault();
|
|
421
|
-
callback(event);
|
|
422
|
-
}
|
|
423
|
-
});
|
|
281
|
+
var menuId = uuid.v1();
|
|
282
|
+
// eslint-disable-next-line max-statements
|
|
283
|
+
function useInternalChipDismissibleInput(_a) {
|
|
284
|
+
var options = _a.options, _b = _a.isLoadingMore, isLoadingMore = _b === void 0 ? false : _b, onCustomOptionSelect = _a.onCustomOptionSelect, onOptionSelect = _a.onOptionSelect, onSearch = _a.onSearch;
|
|
285
|
+
var _c = tslib_es6.__read(React.useState([]), 2), allOptions = _c[0], setAllOptions = _c[1];
|
|
286
|
+
var _d = tslib_es6.__read(React.useState(""), 2), searchValue = _d[0], setSearchValue = _d[1];
|
|
287
|
+
var _e = tslib_es6.__read(React.useState(false), 2), menuOpen = _e[0], setMenuOpen = _e[1];
|
|
288
|
+
var _f = tslib_es6.__read(React.useState(0), 2), activeIndex = _f[0], setActiveIndex = _f[1];
|
|
289
|
+
var _g = tslib_es6.__read(React.useState(false), 2), shouldCancelBlur = _g[0], setShouldCancelBlur = _g[1];
|
|
290
|
+
var _h = tslib_es6.__read(React.useState(false), 2), shouldCancelEnter = _h[0], setShouldCancelEnter = _h[1];
|
|
291
|
+
var canAddCustomOption = onCustomOptionSelect !== undefined && !isLoadingMore;
|
|
292
|
+
var maxOptionIndex = allOptions.length - 1;
|
|
293
|
+
var liveAnnounce = hooks.useLiveAnnounce().liveAnnounce;
|
|
294
|
+
React.useEffect(function () {
|
|
295
|
+
setAllOptions(generateOptions(options, searchValue, canAddCustomOption));
|
|
296
|
+
}, [options]);
|
|
297
|
+
var computed = {
|
|
298
|
+
menuId: menuId,
|
|
299
|
+
inputRef: React.useRef(null),
|
|
300
|
+
activeOption: allOptions[activeIndex],
|
|
301
|
+
hasAvailableOptions: allOptions.length > 0,
|
|
302
|
+
nextOptionIndex: activeIndex < maxOptionIndex ? activeIndex + 1 : 0,
|
|
303
|
+
previousOptionIndex: activeIndex > 0 ? activeIndex - 1 : maxOptionIndex,
|
|
304
|
+
};
|
|
305
|
+
var actions = {
|
|
306
|
+
generateDescendantId: function (index) { return computed.menuId + "-" + index; },
|
|
307
|
+
handleReset: function () {
|
|
308
|
+
setActiveIndex(activeIndex === 0 ? activeIndex : activeIndex - 1);
|
|
309
|
+
setSearchValue("");
|
|
310
|
+
},
|
|
311
|
+
handleOpenMenu: function () { return setMenuOpen(true); },
|
|
312
|
+
handleCloseMenu: function () {
|
|
313
|
+
setMenuOpen(false);
|
|
314
|
+
setActiveIndex(0);
|
|
315
|
+
},
|
|
316
|
+
handleCancelBlur: function () { return setShouldCancelBlur(true); },
|
|
317
|
+
handleEnableBlur: function () { return setShouldCancelBlur(false); },
|
|
318
|
+
handleBlur: function () {
|
|
319
|
+
if (shouldCancelBlur)
|
|
320
|
+
return;
|
|
321
|
+
actions.handleReset();
|
|
322
|
+
actions.handleCloseMenu();
|
|
323
|
+
},
|
|
324
|
+
handleSearchChange: function (event) {
|
|
325
|
+
setActiveIndex(0);
|
|
326
|
+
setSearchValue(event.currentTarget.value);
|
|
327
|
+
setShouldCancelEnter(true);
|
|
328
|
+
},
|
|
329
|
+
handleSetActiveOnMouseOver: function (index) {
|
|
330
|
+
return function () { return setActiveIndex(index); };
|
|
331
|
+
},
|
|
332
|
+
handleSelectOption: function (selected) {
|
|
333
|
+
var _a;
|
|
334
|
+
if (allOptions.length === 0)
|
|
335
|
+
return;
|
|
336
|
+
var setValue = selected.custom ? onCustomOptionSelect : onOptionSelect;
|
|
337
|
+
if (setValue) {
|
|
338
|
+
setValue(selected.value);
|
|
339
|
+
liveAnnounce(selected.label + " Added");
|
|
340
|
+
actions.handleReset();
|
|
341
|
+
(_a = computed.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
handleKeyDown: function (event) {
|
|
345
|
+
var callbacks = {
|
|
346
|
+
Enter: function () {
|
|
347
|
+
if (shouldCancelEnter)
|
|
348
|
+
return;
|
|
349
|
+
actions.handleSelectOption(computed.activeOption);
|
|
350
|
+
},
|
|
351
|
+
Tab: function () { return actions.handleSelectOption(computed.activeOption); },
|
|
352
|
+
",": function () {
|
|
353
|
+
if (searchValue.length === 0)
|
|
354
|
+
return;
|
|
355
|
+
actions.handleSelectOption(generateCustomOptionObject(searchValue));
|
|
356
|
+
},
|
|
357
|
+
ArrowDown: function () {
|
|
358
|
+
if (isLoadingMore && activeIndex === maxOptionIndex)
|
|
359
|
+
return;
|
|
360
|
+
setActiveIndex(computed.nextOptionIndex);
|
|
361
|
+
},
|
|
362
|
+
ArrowUp: function () { return setActiveIndex(computed.previousOptionIndex); },
|
|
363
|
+
};
|
|
364
|
+
if (searchValue.length === 0) {
|
|
365
|
+
callbacks.Backspace = function () {
|
|
366
|
+
var _a;
|
|
367
|
+
// If there's no text left to delete,
|
|
368
|
+
// and delete is pressed again, focus on a chip instead.
|
|
369
|
+
var target = (_a = computed.inputRef.current) === null || _a === void 0 ? void 0 : _a.previousElementSibling;
|
|
370
|
+
if (target instanceof HTMLElement) {
|
|
371
|
+
target.focus();
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
handleKeydownEvents(callbacks, event);
|
|
376
|
+
},
|
|
377
|
+
handleDebouncedSearch: lodash.debounce(function () {
|
|
378
|
+
onSearch && onSearch(searchValue);
|
|
379
|
+
setAllOptions(generateOptions(options, searchValue, canAddCustomOption));
|
|
380
|
+
setShouldCancelEnter(false);
|
|
381
|
+
}, 300),
|
|
382
|
+
};
|
|
383
|
+
return tslib_es6.__assign(tslib_es6.__assign(tslib_es6.__assign(tslib_es6.__assign({}, actions), { activeIndex: activeIndex,
|
|
384
|
+
allOptions: allOptions }), computed), { menuOpen: menuOpen,
|
|
385
|
+
searchValue: searchValue,
|
|
386
|
+
shouldCancelBlur: shouldCancelBlur });
|
|
387
|
+
}
|
|
388
|
+
function generateOptions(options, searchValue, canAddCustomOption) {
|
|
389
|
+
var allOptions = options
|
|
390
|
+
.filter(function (option) {
|
|
391
|
+
return option.label.toLowerCase().match(searchValue.trim().toLowerCase());
|
|
392
|
+
})
|
|
393
|
+
.map(function (opt) { return (tslib_es6.__assign(tslib_es6.__assign({}, opt), { custom: false })); });
|
|
394
|
+
var _a = generateCustomOption(allOptions, searchValue, canAddCustomOption), shouldAddCustomOption = _a.shouldAddCustomOption, customOption = _a.customOption;
|
|
395
|
+
shouldAddCustomOption && allOptions.push(customOption);
|
|
396
|
+
return allOptions;
|
|
397
|
+
}
|
|
398
|
+
function generateCustomOption(options, searchValue, canAddCustomOption) {
|
|
399
|
+
function shouldAddCustomOption() {
|
|
400
|
+
var isMatchingOption = options.some(function (option) { return option.label.toLowerCase() === searchValue.trim().toLowerCase(); });
|
|
401
|
+
return !!searchValue && !isMatchingOption;
|
|
402
|
+
}
|
|
403
|
+
return {
|
|
404
|
+
shouldAddCustomOption: canAddCustomOption && shouldAddCustomOption(),
|
|
405
|
+
customOption: generateCustomOptionObject(searchValue),
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
function generateCustomOptionObject(searchValue) {
|
|
409
|
+
return {
|
|
410
|
+
value: searchValue,
|
|
411
|
+
label: searchValue,
|
|
412
|
+
prefix: React__default["default"].createElement(Icon.Icon, { name: "add" }),
|
|
413
|
+
custom: true,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
function handleKeydownEvents(callbacks, event) {
|
|
417
|
+
if (event.shiftKey)
|
|
418
|
+
return;
|
|
419
|
+
Object.entries(callbacks).forEach(function (_a) {
|
|
420
|
+
var _b = tslib_es6.__read(_a, 2), key = _b[0], callback = _b[1];
|
|
421
|
+
if (event.key === key) {
|
|
422
|
+
event.preventDefault();
|
|
423
|
+
callback(event);
|
|
424
|
+
}
|
|
425
|
+
});
|
|
424
426
|
}
|
|
425
427
|
|
|
426
|
-
function useInView() {
|
|
427
|
-
var ref = React.useRef(null);
|
|
428
|
-
var _a =
|
|
429
|
-
if (window.IntersectionObserver) {
|
|
430
|
-
var observer_1 = new IntersectionObserver(function (entries) {
|
|
431
|
-
setIsInView(entries[0].isIntersecting);
|
|
432
|
-
});
|
|
433
|
-
React.useEffect(function () {
|
|
434
|
-
ref.current && observer_1.observe(ref.current);
|
|
435
|
-
return function () {
|
|
436
|
-
if (!ref.current)
|
|
437
|
-
return;
|
|
438
|
-
observer_1.unobserve(ref.current);
|
|
439
|
-
};
|
|
440
|
-
});
|
|
441
|
-
}
|
|
442
|
-
return { ref: ref, isInView: isInView };
|
|
428
|
+
function useInView() {
|
|
429
|
+
var ref = React.useRef(null);
|
|
430
|
+
var _a = tslib_es6.__read(React.useState(false), 2), isInView = _a[0], setIsInView = _a[1];
|
|
431
|
+
if (window.IntersectionObserver) {
|
|
432
|
+
var observer_1 = new IntersectionObserver(function (entries) {
|
|
433
|
+
setIsInView(entries[0].isIntersecting);
|
|
434
|
+
});
|
|
435
|
+
React.useEffect(function () {
|
|
436
|
+
ref.current && observer_1.observe(ref.current);
|
|
437
|
+
return function () {
|
|
438
|
+
if (!ref.current)
|
|
439
|
+
return;
|
|
440
|
+
observer_1.unobserve(ref.current);
|
|
441
|
+
};
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
return { ref: ref, isInView: isInView };
|
|
443
445
|
}
|
|
444
446
|
|
|
445
|
-
function useRepositionMenu(attachTo) {
|
|
446
|
-
var _a;
|
|
447
|
-
var _b =
|
|
448
|
-
var popper = reactPopper.usePopper(attachTo.current, positionElement, {
|
|
449
|
-
modifiers: [
|
|
450
|
-
{ name: "offset", options: { offset: [0, 8] } },
|
|
451
|
-
{ name: "flip", options: { fallbackPlacements: ["top"] } },
|
|
452
|
-
],
|
|
453
|
-
});
|
|
454
|
-
var targetWidth = (_a = attachTo.current) === null || _a === void 0 ? void 0 : _a.clientWidth;
|
|
455
|
-
return
|
|
447
|
+
function useRepositionMenu(attachTo) {
|
|
448
|
+
var _a;
|
|
449
|
+
var _b = tslib_es6.__read(React.useState(), 2), positionElement = _b[0], setPositionedElementRef = _b[1];
|
|
450
|
+
var popper = reactPopper.usePopper(attachTo.current, positionElement, {
|
|
451
|
+
modifiers: [
|
|
452
|
+
{ name: "offset", options: { offset: [0, 8] } },
|
|
453
|
+
{ name: "flip", options: { fallbackPlacements: ["top"] } },
|
|
454
|
+
],
|
|
455
|
+
});
|
|
456
|
+
var targetWidth = (_a = attachTo.current) === null || _a === void 0 ? void 0 : _a.clientWidth;
|
|
457
|
+
return tslib_es6.__assign(tslib_es6.__assign({}, popper), { setPositionedElementRef: setPositionedElementRef, targetWidth: targetWidth });
|
|
456
458
|
}
|
|
457
459
|
|
|
458
|
-
function useScrollToActive(index) {
|
|
459
|
-
var ref = React.useRef(null);
|
|
460
|
-
React.useEffect(function () {
|
|
461
|
-
var _a, _b;
|
|
462
|
-
if (!window.HTMLElement.prototype.scrollIntoView)
|
|
463
|
-
return;
|
|
464
|
-
(_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.children[index]) === null || _b === void 0 ? void 0 : _b.scrollIntoView({
|
|
465
|
-
behavior: "smooth",
|
|
466
|
-
block: "nearest",
|
|
467
|
-
inline: "start",
|
|
468
|
-
});
|
|
469
|
-
}, [index]);
|
|
470
|
-
return ref;
|
|
460
|
+
function useScrollToActive(index) {
|
|
461
|
+
var ref = React.useRef(null);
|
|
462
|
+
React.useEffect(function () {
|
|
463
|
+
var _a, _b;
|
|
464
|
+
if (!window.HTMLElement.prototype.scrollIntoView)
|
|
465
|
+
return;
|
|
466
|
+
(_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.children[index]) === null || _b === void 0 ? void 0 : _b.scrollIntoView({
|
|
467
|
+
behavior: "smooth",
|
|
468
|
+
block: "nearest",
|
|
469
|
+
inline: "start",
|
|
470
|
+
});
|
|
471
|
+
}, [index]);
|
|
472
|
+
return ref;
|
|
471
473
|
}
|
|
472
474
|
|
|
473
|
-
function InternalChipDismissibleInput(props) {
|
|
474
|
-
var _a = props.activator, activator = _a === void 0 ? React__default.createElement(
|
|
475
|
-
var _c = useInternalChipDismissibleInput(props), activeIndex = _c.activeIndex, allOptions = _c.allOptions, hasAvailableOptions = _c.hasAvailableOptions, inputRef = _c.inputRef, menuId = _c.menuId, menuOpen = _c.menuOpen, searchValue = _c.searchValue, generateDescendantId = _c.generateDescendantId, handleBlur = _c.handleBlur, handleOpenMenu = _c.handleOpenMenu, handleSearchChange = _c.handleSearchChange, handleCancelBlur = _c.handleCancelBlur, handleEnableBlur = _c.handleEnableBlur, handleSetActiveOnMouseOver = _c.handleSetActiveOnMouseOver, handleKeyDown = _c.handleKeyDown, handleSelectOption = _c.handleSelectOption, handleDebouncedSearch = _c.handleDebouncedSearch;
|
|
476
|
-
var menuRef = useScrollToActive(activeIndex);
|
|
477
|
-
var _d = useInView(), visibleChildRef = _d.ref, isInView = _d.isInView;
|
|
478
|
-
var _e = useRepositionMenu(attachTo), popperStyles = _e.styles, attributes = _e.attributes, forceUpdate = _e.forceUpdate, setPositionedElementRef = _e.setPositionedElementRef;
|
|
479
|
-
React.useEffect(function () { return forceUpdate === null || forceUpdate === void 0 ? void 0 : forceUpdate(); }, [allOptions]);
|
|
480
|
-
React.useEffect(function () {
|
|
481
|
-
handleDebouncedSearch();
|
|
482
|
-
return handleDebouncedSearch.cancel;
|
|
483
|
-
}, [searchValue]);
|
|
484
|
-
React.useEffect(function () {
|
|
485
|
-
isInView && onLoadMore && onLoadMore(searchValue);
|
|
486
|
-
}, [isInView]);
|
|
487
|
-
if (!menuOpen) {
|
|
488
|
-
return React__default.cloneElement(activator, { onClick: handleOpenMenu });
|
|
489
|
-
}
|
|
490
|
-
return (React__default.createElement(React__default.Fragment, null,
|
|
491
|
-
React__default.createElement("input", { ref: inputRef, className: styles
|
|
492
|
-
(hasAvailableOptions || isLoadingMore) && (React__default.createElement("div",
|
|
493
|
-
React__default.createElement("div", { ref: menuRef, role: "listbox", id: menuId, className: styles
|
|
494
|
-
allOptions.map(function (option, i) {
|
|
495
|
-
var _a;
|
|
496
|
-
return (React__default.createElement("button", { key: option.value, role: "option", id: generateDescendantId(i), className:
|
|
497
|
-
_a[styles
|
|
498
|
-
_a)), onClick: function () { return handleSelectOption(option); }, onMouseEnter: handleSetActiveOnMouseOver(i), onMouseDown: handleCancelBlur, onMouseUp: handleEnableBlur },
|
|
499
|
-
React__default.createElement("span", { "aria-hidden": true }, option.prefix),
|
|
500
|
-
React__default.createElement(
|
|
501
|
-
}),
|
|
502
|
-
React__default.createElement("div", { ref: visibleChildRef }),
|
|
503
|
-
isLoadingMore && (React__default.createElement("div", { className: styles
|
|
504
|
-
React__default.createElement(
|
|
475
|
+
function InternalChipDismissibleInput(props) {
|
|
476
|
+
var _a = props.activator, activator = _a === void 0 ? React__default["default"].createElement(Button.Button, { icon: "add", type: "secondary", ariaLabel: "Add" }) : _a, attachTo = props.attachTo, _b = props.isLoadingMore, isLoadingMore = _b === void 0 ? false : _b, onLoadMore = props.onLoadMore;
|
|
477
|
+
var _c = useInternalChipDismissibleInput(props), activeIndex = _c.activeIndex, allOptions = _c.allOptions, hasAvailableOptions = _c.hasAvailableOptions, inputRef = _c.inputRef, menuId = _c.menuId, menuOpen = _c.menuOpen, searchValue = _c.searchValue, generateDescendantId = _c.generateDescendantId, handleBlur = _c.handleBlur, handleOpenMenu = _c.handleOpenMenu, handleSearchChange = _c.handleSearchChange, handleCancelBlur = _c.handleCancelBlur, handleEnableBlur = _c.handleEnableBlur, handleSetActiveOnMouseOver = _c.handleSetActiveOnMouseOver, handleKeyDown = _c.handleKeyDown, handleSelectOption = _c.handleSelectOption, handleDebouncedSearch = _c.handleDebouncedSearch;
|
|
478
|
+
var menuRef = useScrollToActive(activeIndex);
|
|
479
|
+
var _d = useInView(), visibleChildRef = _d.ref, isInView = _d.isInView;
|
|
480
|
+
var _e = useRepositionMenu(attachTo), popperStyles = _e.styles, attributes = _e.attributes, forceUpdate = _e.forceUpdate, setPositionedElementRef = _e.setPositionedElementRef;
|
|
481
|
+
React.useEffect(function () { return forceUpdate === null || forceUpdate === void 0 ? void 0 : forceUpdate(); }, [allOptions]);
|
|
482
|
+
React.useEffect(function () {
|
|
483
|
+
handleDebouncedSearch();
|
|
484
|
+
return handleDebouncedSearch.cancel;
|
|
485
|
+
}, [searchValue]);
|
|
486
|
+
React.useEffect(function () {
|
|
487
|
+
isInView && onLoadMore && onLoadMore(searchValue);
|
|
488
|
+
}, [isInView]);
|
|
489
|
+
if (!menuOpen) {
|
|
490
|
+
return React__default["default"].cloneElement(activator, { onClick: handleOpenMenu });
|
|
491
|
+
}
|
|
492
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
493
|
+
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: lodash.debounce(handleBlur, 200), onFocus: handleOpenMenu, autoFocus: true }),
|
|
494
|
+
(hasAvailableOptions || isLoadingMore) && (React__default["default"].createElement("div", tslib_es6.__assign({ ref: setPositionedElementRef, className: styles.menu, style: popperStyles.popper }, attributes.popper),
|
|
495
|
+
React__default["default"].createElement("div", { ref: menuRef, role: "listbox", id: menuId, className: styles.menuList, "data-testid": "chip-menu" },
|
|
496
|
+
allOptions.map(function (option, i) {
|
|
497
|
+
var _a;
|
|
498
|
+
return (React__default["default"].createElement("button", { key: option.value, role: "option", id: generateDescendantId(i), className: classnames__default["default"](styles.menuListOption, (_a = {},
|
|
499
|
+
_a[styles.activeOption] = activeIndex === i,
|
|
500
|
+
_a)), onClick: function () { return handleSelectOption(option); }, onMouseEnter: handleSetActiveOnMouseOver(i), onMouseDown: handleCancelBlur, onMouseUp: handleEnableBlur },
|
|
501
|
+
React__default["default"].createElement("span", { "aria-hidden": true }, option.prefix),
|
|
502
|
+
React__default["default"].createElement(Text.Text, null, option.label)));
|
|
503
|
+
}),
|
|
504
|
+
React__default["default"].createElement("div", { ref: visibleChildRef }),
|
|
505
|
+
isLoadingMore && (React__default["default"].createElement("div", { className: styles.loadingIndicator },
|
|
506
|
+
React__default["default"].createElement(Spinner.Spinner, { size: "small", inline: true }))))))));
|
|
505
507
|
}
|
|
506
508
|
|
|
507
|
-
function InternalChipDismissible(props) {
|
|
508
|
-
var _a = useInternalChipDismissible(props), availableChipOptions = _a.availableChipOptions, wrapperRef = _a.ref, sortedVisibleChipOptions = _a.sortedVisibleChipOptions, handleChipAdd = _a.handleChipAdd, handleChipClick = _a.handleChipClick, handleChipKeyDown = _a.handleChipKeyDown, handleChipRemove = _a.handleChipRemove, handleCustomAdd = _a.handleCustomAdd, handleWrapperKeyDown = _a.handleWrapperKeyDown;
|
|
509
|
-
return (React__default.createElement("div", { ref: wrapperRef, className: styles
|
|
510
|
-
sortedVisibleChipOptions.map(function (chip) { return (React__default.createElement(InternalChip,
|
|
511
|
-
React__default.createElement(InternalChipDismissibleInput, { activator: props.activator, attachTo: wrapperRef, isLoadingMore: props.isLoadingMore, options: availableChipOptions, onOptionSelect: handleChipAdd, onCustomOptionSelect: handleCustomAdd, onSearch: props.onSearch, onLoadMore: props.onLoadMore })));
|
|
509
|
+
function InternalChipDismissible(props) {
|
|
510
|
+
var _a = useInternalChipDismissible(props), availableChipOptions = _a.availableChipOptions, wrapperRef = _a.ref, sortedVisibleChipOptions = _a.sortedVisibleChipOptions, handleChipAdd = _a.handleChipAdd, handleChipClick = _a.handleChipClick, handleChipKeyDown = _a.handleChipKeyDown, handleChipRemove = _a.handleChipRemove, handleCustomAdd = _a.handleCustomAdd, handleWrapperKeyDown = _a.handleWrapperKeyDown;
|
|
511
|
+
return (React__default["default"].createElement("div", { ref: wrapperRef, className: styles.wrapper, "data-testid": "dismissible-chips", onKeyDown: handleWrapperKeyDown, role: "listbox" },
|
|
512
|
+
sortedVisibleChipOptions.map(function (chip) { return (React__default["default"].createElement(InternalChip, tslib_es6.__assign({ key: chip.value }, chip, { onKeyDown: handleChipKeyDown(chip.value), onClick: handleChipClick(chip.value), ariaLabel: chip.value + ". Press delete or backspace to remove " + chip.value, tabIndex: 0, suffix: React__default["default"].createElement(InternalChipButton, { icon: "remove", invalid: chip.invalid, disabled: chip.disabled, label: chip.label, onClick: handleChipRemove(chip.value) }) }))); }),
|
|
513
|
+
React__default["default"].createElement(InternalChipDismissibleInput, { activator: props.activator, attachTo: wrapperRef, isLoadingMore: props.isLoadingMore, options: availableChipOptions, onOptionSelect: handleChipAdd, onCustomOptionSelect: handleCustomAdd, onSearch: props.onSearch, onLoadMore: props.onLoadMore })));
|
|
512
514
|
}
|
|
513
515
|
|
|
514
|
-
function Chips(props) {
|
|
515
|
-
switch (props.type) {
|
|
516
|
-
case "dismissible":
|
|
517
|
-
return React__default.createElement(InternalChipDismissible,
|
|
518
|
-
case "multiselect":
|
|
519
|
-
return React__default.createElement(InternalChipMultiSelect,
|
|
520
|
-
default:
|
|
521
|
-
return React__default.createElement(InternalChipSingleSelect,
|
|
522
|
-
}
|
|
516
|
+
function Chips(props) {
|
|
517
|
+
switch (props.type) {
|
|
518
|
+
case "dismissible":
|
|
519
|
+
return React__default["default"].createElement(InternalChipDismissible, tslib_es6.__assign({}, props));
|
|
520
|
+
case "multiselect":
|
|
521
|
+
return React__default["default"].createElement(InternalChipMultiSelect, tslib_es6.__assign({}, props));
|
|
522
|
+
default:
|
|
523
|
+
return React__default["default"].createElement(InternalChipSingleSelect, tslib_es6.__assign({}, props));
|
|
524
|
+
}
|
|
523
525
|
}
|
|
524
526
|
|
|
525
|
-
// Only need the component to pass in the data as a react children
|
|
526
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
527
|
-
function Chip(props) {
|
|
528
|
-
// Throw error when <Chip /> gets used outside of the <Chips />
|
|
529
|
-
hooks.useAssert(true, "`<Chip>` component can only be used inside `<Chips>`");
|
|
530
|
-
return React__default.createElement(React__default.Fragment, null);
|
|
527
|
+
// Only need the component to pass in the data as a react children
|
|
528
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
529
|
+
function Chip(props) {
|
|
530
|
+
// Throw error when <Chip /> gets used outside of the <Chips />
|
|
531
|
+
hooks.useAssert(true, "`<Chip>` component can only be used inside `<Chips>`");
|
|
532
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
531
533
|
}
|
|
532
534
|
|
|
533
535
|
exports.Chip = Chip;
|