@pingux/astro 2.143.0-alpha.1 → 2.143.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
5
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
6
+ var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
7
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
8
+ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
9
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
10
+ var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
11
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
12
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
13
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
14
+ _Object$defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ exports.SearchFieldBase = void 0;
18
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
19
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
20
+ var _react = _interopRequireWildcard(require("react"));
21
+ var _reactAria = require("react-aria");
22
+ var _reactStately = require("react-stately");
23
+ var _CloseIcon = _interopRequireDefault(require("@pingux/mdi-react/CloseIcon"));
24
+ var _ = require("../..");
25
+ var _hooks = require("../../hooks");
26
+ var _pendoID = require("../../utils/devUtils/constants/pendoID");
27
+ var _react2 = require("@emotion/react");
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
30
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
32
+ var displayName = 'SearchField';
33
+ var SearchFieldBase = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
34
+ var autocomplete = props.autocomplete,
35
+ hasAutoFocus = props.hasAutoFocus,
36
+ hasNoClearButton = props.hasNoClearButton,
37
+ icon = props.icon,
38
+ isExcludedFromTabOrder = props.isExcludedFromTabOrder,
39
+ label = props.label,
40
+ controlProps = props.controlProps,
41
+ iconProps = props.iconProps,
42
+ labelProps = props.labelProps;
43
+ (0, _hooks.usePropWarning)(props, 'disabled', 'isDisabled');
44
+ var searchRef = (0, _hooks.useLocalOrForwardRef)(ref);
45
+ var state = (0, _reactStately.useSearchFieldState)(props);
46
+ var _useSearchField = (0, _reactAria.useSearchField)(_objectSpread({
47
+ autoComplete: autocomplete,
48
+ autoFocus: hasAutoFocus,
49
+ excludeFromTabOrder: isExcludedFromTabOrder
50
+ }, props), state, searchRef),
51
+ raLabelProps = _useSearchField.labelProps,
52
+ raInputProps = _useSearchField.inputProps,
53
+ clearButtonProps = _useSearchField.clearButtonProps;
54
+ var _useField = (0, _hooks.useField)(_objectSpread(_objectSpread({}, props), {}, {
55
+ labelProps: _objectSpread(_objectSpread({}, labelProps), raLabelProps),
56
+ controlProps: _objectSpread(_objectSpread({}, controlProps), raInputProps)
57
+ })),
58
+ fieldContainerProps = _useField.fieldContainerProps,
59
+ fieldControlInputProps = _useField.fieldControlInputProps,
60
+ fieldControlWrapperProps = _useField.fieldControlWrapperProps,
61
+ fieldLabelProps = _useField.fieldLabelProps;
62
+ var handleKeyDownEvent = function handleKeyDownEvent(e) {
63
+ var key = e.key;
64
+ if (key === 'Enter' || key === ' ') {
65
+ state.setValue('');
66
+ }
67
+ };
68
+ return (0, _react2.jsx)(_.Box, (0, _extends2["default"])({}, (0, _pendoID.getPendoID)(displayName), fieldContainerProps), label && (0, _react2.jsx)(_.Label, fieldLabelProps), (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
69
+ variant: "forms.search.wrapper"
70
+ }, fieldControlWrapperProps), (0, _react2.jsx)(_.Input, (0, _extends2["default"])({
71
+ variant: "forms.input.search",
72
+ ref: searchRef
73
+ }, fieldControlInputProps)), icon && (0, _react2.jsx)(_.Icon, (0, _extends2["default"])({
74
+ icon: icon,
75
+ variant: "forms.search.icon",
76
+ title: {
77
+ name: 'Search Icon'
78
+ }
79
+ }, iconProps)), !hasNoClearButton && state.value !== '' && (0, _react2.jsx)(_.IconButton, (0, _extends2["default"])({
80
+ tabIndex: 0,
81
+ onKeyDown: handleKeyDownEvent,
82
+ color: "text.secondary",
83
+ variant: "searchClearButton"
84
+ }, clearButtonProps), (0, _react2.jsx)(_.Icon, {
85
+ icon: _CloseIcon["default"],
86
+ title: {
87
+ name: 'Close Icon'
88
+ }
89
+ }))));
90
+ });
91
+ exports.SearchFieldBase = SearchFieldBase;
@@ -33,11 +33,13 @@ export interface ListBoxProps extends AriaListBoxOptions<object> {
33
33
  variant?: string;
34
34
  children?: CollectionChildren<object>;
35
35
  isCondensed?: boolean;
36
+ showSelectedOption?: boolean;
36
37
  }
37
38
  export interface OptionType {
38
39
  item: ListBoxItemType;
39
40
  hasVirtualFocus?: boolean;
40
41
  isCondensed?: boolean;
42
+ showSelectedOption?: boolean;
41
43
  }
42
44
  export interface OptionWithCheckboxType extends StyleProps {
43
45
  isSelected?: boolean;
@@ -1,9 +1,10 @@
1
1
  /// <reference types="react" />
2
+ import type { CollectionChildren } from '@react-types/shared';
2
3
  import { ThemeUICSSObject } from 'theme-ui';
3
4
  import { ControlProps } from '../hooks/useField/useField';
4
5
  import { StyleProps } from './shared';
5
6
  import { HelpHintProps, IconProps, IconTypeExtended, LabelProps } from '.';
6
- export interface SearchFieldProps extends StyleProps {
7
+ export interface SearchFieldProps<T extends object> extends StyleProps {
7
8
  /**
8
9
  * @ignore
9
10
  * Identifies the currently active element when DOM focus is on a composite widget, textbox,
@@ -169,4 +170,13 @@ export interface SearchFieldProps extends StyleProps {
169
170
  labelProps?: LabelProps;
170
171
  size?: string;
171
172
  sx?: ThemeUICSSObject;
173
+ mode?: 'default' | 'autocomplete';
174
+ defaultItems?: Iterable<T>;
175
+ children?: CollectionChildren<T>;
176
+ }
177
+ export interface SearchItem extends StyleProps {
178
+ id: string;
179
+ text?: string;
180
+ name?: string;
181
+ [key: string]: unknown;
172
182
  }
@@ -8,7 +8,7 @@ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object
8
8
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
9
9
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
10
10
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
11
- var _excluded = ["defaultSelectedKeys", "disabledKeys", "hasAutoFocus", "hasFocusWrap", "hasNoEmptySelection", "hasVirtualFocus", "id", "isCondensed", "isLoading", "isFocusedOnHover", "isSelectedOnPressUp", "isVirtualized", "items", "keyboardDelegate", "label", "loadingState", "onLoadMore", "onLoadPrev", "onScroll", "onSelectionChange", "renderEmptyState", "selectedKeys", "selectionMode", "state", "aria-label", "aria-labelledby", "aria-describedby", "aria-details"];
11
+ var _excluded = ["defaultSelectedKeys", "disabledKeys", "hasAutoFocus", "hasFocusWrap", "hasNoEmptySelection", "hasVirtualFocus", "id", "isCondensed", "isLoading", "isFocusedOnHover", "isSelectedOnPressUp", "isVirtualized", "items", "keyboardDelegate", "label", "loadingState", "onLoadMore", "onLoadPrev", "onScroll", "onSelectionChange", "renderEmptyState", "selectedKeys", "selectionMode", "state", "aria-label", "aria-labelledby", "aria-describedby", "aria-details", "showSelectedOption"];
12
12
  import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
13
13
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
14
14
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -82,6 +82,7 @@ var ListBox = /*#__PURE__*/forwardRef(function (props, ref) {
82
82
  ariaLabelledby = props['aria-labelledby'],
83
83
  ariaDescribedby = props['aria-describedby'],
84
84
  ariaDetails = props['aria-details'],
85
+ showSelectedOption = props.showSelectedOption,
85
86
  others = _objectWithoutProperties(props, _excluded);
86
87
 
87
88
  // Object matching React Aria API with all options
@@ -182,7 +183,8 @@ var ListBox = /*#__PURE__*/forwardRef(function (props, ref) {
182
183
  key: item.key,
183
184
  item: item,
184
185
  hasVirtualFocus: hasVirtualFocus,
185
- isCondensed: isCondensed
186
+ isCondensed: isCondensed,
187
+ showSelectedOption: showSelectedOption
186
188
  });
187
189
  }
188
190
  if (type === collectionTypes.LOADER) {
@@ -9,7 +9,7 @@ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object
9
9
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
10
10
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
11
11
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
12
- var _excluded = ["item", "hasVirtualFocus", "isCondensed"],
12
+ var _excluded = ["item", "hasVirtualFocus", "isCondensed", "showSelectedOption"],
13
13
  _excluded2 = ["onPressStart", "onPressUp"];
14
14
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
15
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -56,6 +56,7 @@ var Option = /*#__PURE__*/forwardRef(function (props, ref) {
56
56
  var item = props.item,
57
57
  hasVirtualFocus = props.hasVirtualFocus,
58
58
  isCondensed = props.isCondensed,
59
+ showSelectedOption = props.showSelectedOption,
59
60
  others = _objectWithoutProperties(props, _excluded);
60
61
  var key = item.key,
61
62
  itemProps = item.props,
@@ -94,7 +95,7 @@ var Option = /*#__PURE__*/forwardRef(function (props, ref) {
94
95
  var _useStatusClasses = useStatusClasses(null, {
95
96
  isDisabled: isDisabled || isSeparator,
96
97
  isFocused: focused,
97
- isSelected: isSelected,
98
+ isSelected: showSelectedOption ? isSelected : false,
98
99
  isCondensed: isCondensed,
99
100
  isFocusVisible: isFocusVisible,
100
101
  isPressed: isPressed
@@ -131,12 +132,12 @@ var Option = /*#__PURE__*/forwardRef(function (props, ref) {
131
132
  mr: "xs",
132
133
  className: classNames,
133
134
  variant: "listBox.checkboxIcon"
134
- }) : isSelected && !isOnyx && ___EmotionJSX(Icon, {
135
+ }) : isSelected && !isOnyx && showSelectedOption && ___EmotionJSX(Icon, {
135
136
  icon: CircleSmallIcon,
136
137
  title: {
137
138
  name: 'Circle Small Icon'
138
139
  }
139
- }), rendered, isSelected && isOnyx && ___EmotionJSX(Icon, {
140
+ }), rendered, isSelected && isOnyx && showSelectedOption && ___EmotionJSX(Icon, {
140
141
  icon: CheckIcon,
141
142
  title: {
142
143
  name: 'Check Icon'
@@ -144,4 +145,7 @@ var Option = /*#__PURE__*/forwardRef(function (props, ref) {
144
145
  color: "green-500"
145
146
  }));
146
147
  });
148
+ Option.defaultProps = {
149
+ showSelectedOption: true
150
+ };
147
151
  export default Option;
@@ -0,0 +1,156 @@
1
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
2
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
3
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
4
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
5
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
6
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
7
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
8
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
9
+ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
10
+ import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
11
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
12
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
13
+ var _excluded = ["shouldFocusOnHover", "shouldSelectOnPressUp"];
14
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
16
+ import React, { forwardRef, useCallback, useLayoutEffect, useRef, useState } from 'react';
17
+ import { useComboBox, useFilter, useSearchField } from 'react-aria';
18
+ import { useComboBoxState, useSearchFieldState } from 'react-stately';
19
+ import CloseIcon from '@pingux/mdi-react/CloseIcon';
20
+ import { mergeProps, useResizeObserver } from '@react-aria/utils';
21
+ import { Box, Icon, IconButton, Input, Label, ScrollBox } from '../..';
22
+ import { useField, useLocalOrForwardRef, usePropWarning } from '../../hooks';
23
+ import { getPendoID } from '../../utils/devUtils/constants/pendoID';
24
+ import ListBox from '../ListBox/ListBox';
25
+ import Popover from '../Popover/Popover';
26
+ import { jsx as ___EmotionJSX } from "@emotion/react";
27
+ var displayName = 'SearchField';
28
+ export var SearchAutoComplete = /*#__PURE__*/forwardRef(function (props, ref) {
29
+ var autocomplete = props.autocomplete,
30
+ hasAutoFocus = props.hasAutoFocus,
31
+ hasNoClearButton = props.hasNoClearButton,
32
+ icon = props.icon,
33
+ isExcludedFromTabOrder = props.isExcludedFromTabOrder,
34
+ label = props.label,
35
+ controlProps = props.controlProps,
36
+ iconProps = props.iconProps,
37
+ labelProps = props.labelProps,
38
+ value = props.value,
39
+ onChange = props.onChange;
40
+ usePropWarning(props, 'disabled', 'isDisabled');
41
+ var _useFilter = useFilter({
42
+ sensitivity: 'base'
43
+ }),
44
+ contains = _useFilter.contains;
45
+ var comboBoxState = useComboBoxState(_objectSpread(_objectSpread({}, props), {}, {
46
+ inputValue: value,
47
+ defaultInputValue: props.defaultValue,
48
+ onInputChange: onChange,
49
+ defaultFilter: contains,
50
+ allowsCustomValue: true
51
+ }));
52
+ var inputRef = useLocalOrForwardRef(ref);
53
+ var outerRef = useRef(null);
54
+ var listBoxRef = useRef(null);
55
+ var popoverRef = useRef(null);
56
+ var clearButtonRef = useRef(null);
57
+ var _useComboBox = useComboBox(_objectSpread(_objectSpread({}, props), {}, {
58
+ inputRef: inputRef,
59
+ listBoxRef: listBoxRef,
60
+ popoverRef: popoverRef
61
+ }), comboBoxState),
62
+ inputProps = _useComboBox.inputProps,
63
+ listBoxProps = _useComboBox.listBoxProps,
64
+ rsLabelProps = _useComboBox.labelProps;
65
+ delete inputProps['data-testid'];
66
+ var shouldFocusOnHover = listBoxProps.shouldFocusOnHover,
67
+ shouldSelectOnPressUp = listBoxProps.shouldSelectOnPressUp,
68
+ otherListBoxProps = _objectWithoutProperties(listBoxProps, _excluded);
69
+ var searchProps = {
70
+ label: props.label,
71
+ value: comboBoxState.inputValue,
72
+ 'aria-label': props['aria-label'],
73
+ onChange: function onChange(v) {
74
+ return comboBoxState.setInputValue(v);
75
+ },
76
+ onClear: props.onClear,
77
+ onSubmit: props.onSubmit
78
+ };
79
+ var searchState = useSearchFieldState(searchProps);
80
+ var _useSearchField = useSearchField(_objectSpread({
81
+ autoComplete: autocomplete,
82
+ autoFocus: hasAutoFocus,
83
+ excludeFromTabOrder: isExcludedFromTabOrder
84
+ }, searchProps), searchState, inputRef),
85
+ raLabelProps = _useSearchField.labelProps,
86
+ raInputProps = _useSearchField.inputProps,
87
+ clearButtonProps = _useSearchField.clearButtonProps;
88
+ var _useField = useField(_objectSpread(_objectSpread({}, props), {}, {
89
+ labelProps: _objectSpread(_objectSpread(_objectSpread({}, labelProps), raLabelProps), rsLabelProps),
90
+ controlProps: _objectSpread(_objectSpread({}, controlProps), raInputProps)
91
+ })),
92
+ fieldContainerProps = _useField.fieldContainerProps,
93
+ fieldControlInputProps = _useField.fieldControlInputProps,
94
+ fieldControlWrapperProps = _useField.fieldControlWrapperProps,
95
+ fieldLabelProps = _useField.fieldLabelProps;
96
+ var handleKeyDownEvent = function handleKeyDownEvent(e) {
97
+ var key = e.key;
98
+ if (key === 'Enter' || key === ' ') {
99
+ comboBoxState.setInputValue('');
100
+ }
101
+ };
102
+
103
+ // Popover width matches the input width
104
+ var _useState = useState(0),
105
+ _useState2 = _slicedToArray(_useState, 2),
106
+ popoverWidth = _useState2[0],
107
+ setPopoverWidth = _useState2[1];
108
+ var onResize = useCallback(function () {
109
+ /* istanbul ignore next */
110
+ if (outerRef.current) {
111
+ setPopoverWidth(outerRef.current.offsetWidth);
112
+ }
113
+ }, [outerRef, setPopoverWidth]);
114
+ useResizeObserver({
115
+ ref: outerRef,
116
+ onResize: onResize
117
+ });
118
+ useLayoutEffect(onResize, [onResize]);
119
+ return ___EmotionJSX(Box, _extends({}, getPendoID(displayName), fieldContainerProps), label && ___EmotionJSX(Label, fieldLabelProps), ___EmotionJSX(Box, _extends({
120
+ variant: "forms.search.wrapper",
121
+ ref: outerRef
122
+ }, fieldControlWrapperProps), ___EmotionJSX(Input, _extends({
123
+ variant: "forms.input.search",
124
+ ref: inputRef
125
+ }, mergeProps(fieldControlInputProps, inputProps))), icon && ___EmotionJSX(Icon, _extends({
126
+ icon: icon,
127
+ variant: "forms.search.icon",
128
+ title: {
129
+ name: 'Search Icon'
130
+ }
131
+ }, iconProps)), !hasNoClearButton && searchState.value !== '' && ___EmotionJSX(IconButton, _extends({
132
+ ref: clearButtonRef
133
+ }, clearButtonProps, {
134
+ tabIndex: 0,
135
+ onKeyDown: handleKeyDownEvent,
136
+ color: "text.secondary",
137
+ variant: "searchClearButton"
138
+ }), ___EmotionJSX(Icon, {
139
+ icon: CloseIcon,
140
+ title: {
141
+ name: 'Close Icon'
142
+ }
143
+ }))), comboBoxState.isOpen && ___EmotionJSX(Popover, {
144
+ popoverRef: popoverRef,
145
+ triggerRef: outerRef,
146
+ state: comboBoxState,
147
+ isNonModal: true,
148
+ width: popoverWidth
149
+ }, ___EmotionJSX(ScrollBox, null, ___EmotionJSX(ListBox, _extends({
150
+ ref: listBoxRef,
151
+ state: comboBoxState,
152
+ isFocusedOnHover: shouldFocusOnHover,
153
+ isSelectedOnPressUp: shouldSelectOnPressUp,
154
+ showSelectedOption: false
155
+ }, otherListBoxProps)))));
156
+ });
@@ -1,87 +1,27 @@
1
- import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
2
- import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
3
- import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
4
- import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
5
- import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
6
- import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
7
- import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
8
- import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
9
1
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
10
- import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
11
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
2
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
3
+ var _excluded = ["hasNoClearButton", "mode", "icon"];
13
4
  import React, { forwardRef } from 'react';
14
- import { useSearchField } from 'react-aria';
15
- import { useSearchFieldState } from 'react-stately';
16
- import CloseIcon from '@pingux/mdi-react/CloseIcon';
17
5
  import SearchIcon from '@pingux/mdi-react/SearchIcon';
18
- import { Box, Icon, IconButton, Input, Label } from '../..';
19
- import { useField, useLocalOrForwardRef, usePropWarning } from '../../hooks';
20
- import { getPendoID } from '../../utils/devUtils/constants/pendoID';
6
+ import { SearchAutoComplete } from './SearchAutoComplete';
7
+ import { SearchFieldBase } from './SearchFieldBase';
21
8
  import { jsx as ___EmotionJSX } from "@emotion/react";
22
9
  var displayName = 'SearchField';
23
10
  var SearchField = /*#__PURE__*/forwardRef(function (props, ref) {
24
- var autocomplete = props.autocomplete,
25
- hasAutoFocus = props.hasAutoFocus,
26
- hasNoClearButton = props.hasNoClearButton,
27
- icon = props.icon,
28
- isExcludedFromTabOrder = props.isExcludedFromTabOrder,
29
- label = props.label,
30
- controlProps = props.controlProps,
31
- iconProps = props.iconProps,
32
- labelProps = props.labelProps;
33
- usePropWarning(props, 'disabled', 'isDisabled');
34
- var searchRef = useLocalOrForwardRef(ref);
35
- var state = useSearchFieldState(props);
36
- var _useSearchField = useSearchField(_objectSpread({
37
- autoComplete: autocomplete,
38
- autoFocus: hasAutoFocus,
39
- excludeFromTabOrder: isExcludedFromTabOrder
40
- }, props), state, searchRef),
41
- raLabelProps = _useSearchField.labelProps,
42
- raInputProps = _useSearchField.inputProps,
43
- clearButtonProps = _useSearchField.clearButtonProps;
44
- var _useField = useField(_objectSpread(_objectSpread({}, props), {}, {
45
- labelProps: _objectSpread(_objectSpread({}, labelProps), raLabelProps),
46
- controlProps: _objectSpread(_objectSpread({}, controlProps), raInputProps)
47
- })),
48
- fieldContainerProps = _useField.fieldContainerProps,
49
- fieldControlInputProps = _useField.fieldControlInputProps,
50
- fieldControlWrapperProps = _useField.fieldControlWrapperProps,
51
- fieldLabelProps = _useField.fieldLabelProps;
52
- var handleKeyDownEvent = function handleKeyDownEvent(e) {
53
- var key = e.key;
54
- if (key === 'Enter' || key === ' ') {
55
- state.setValue('');
56
- }
57
- };
58
- return ___EmotionJSX(Box, _extends({}, getPendoID(displayName), fieldContainerProps), label && ___EmotionJSX(Label, fieldLabelProps), ___EmotionJSX(Box, _extends({
59
- variant: "forms.search.wrapper"
60
- }, fieldControlWrapperProps), ___EmotionJSX(Input, _extends({
61
- variant: "forms.input.search",
62
- ref: searchRef
63
- }, fieldControlInputProps)), icon && ___EmotionJSX(Icon, _extends({
64
- icon: icon,
65
- variant: "forms.search.icon",
66
- size: 20,
67
- title: {
68
- name: 'Search Icon'
69
- }
70
- }, iconProps)), !hasNoClearButton && state.value !== '' && ___EmotionJSX(IconButton, _extends({
71
- tabIndex: 0,
72
- onKeyDown: handleKeyDownEvent,
73
- color: "text.secondary",
74
- variant: "searchClearButton"
75
- }, clearButtonProps), ___EmotionJSX(Icon, {
76
- icon: CloseIcon,
77
- title: {
78
- name: 'Close Icon'
79
- }
80
- }))));
11
+ var _props$hasNoClearButt = props.hasNoClearButton,
12
+ hasNoClearButton = _props$hasNoClearButt === void 0 ? false : _props$hasNoClearButt,
13
+ _props$mode = props.mode,
14
+ mode = _props$mode === void 0 ? 'default' : _props$mode,
15
+ _props$icon = props.icon,
16
+ icon = _props$icon === void 0 ? SearchIcon : _props$icon,
17
+ rest = _objectWithoutProperties(props, _excluded);
18
+ var Component = mode === 'autocomplete' ? SearchAutoComplete : SearchFieldBase;
19
+ return ___EmotionJSX(Component, _extends({
20
+ hasNoClearButton: hasNoClearButton,
21
+ icon: icon
22
+ }, rest, {
23
+ ref: ref
24
+ }));
81
25
  });
82
- SearchField.defaultProps = {
83
- hasNoClearButton: false,
84
- icon: SearchIcon
85
- };
86
26
  SearchField.displayName = displayName;
87
27
  export default SearchField;
@@ -18,7 +18,7 @@ import FilterVariantIcon from '@pingux/mdi-react/FilterVariantIcon';
18
18
  import SearchIcon from '@pingux/mdi-react/SearchIcon';
19
19
  import DocsLayout from '../../../.storybook/storybookDocsLayout';
20
20
  import { useDebounce, useGetTheme } from '../../hooks';
21
- import { Box, Icon, IconButton, SearchField, Text } from '../../index';
21
+ import { Box, Icon, IconButton, Item, SearchField, Text } from '../../index';
22
22
  import { FIGMA_LINKS } from '../../utils/designUtils/figmaLinks';
23
23
  import { ariaAttributeBaseArgTypes, ariaAttributeBaseDocSettings } from '../../utils/docUtils/ariaAttributes';
24
24
  import { inputFieldAttributeBaseArgTypes } from '../../utils/docUtils/fieldAttributes';
@@ -73,10 +73,9 @@ export var Default = function Default(args) {
73
73
  icon: SearchIcon,
74
74
  onSubmit: function onSubmit(text) {
75
75
  return alert(text);
76
- } // eslint-disable-line no-alert
76
+ }
77
77
  }));
78
78
  };
79
-
80
79
  Default.parameters = {
81
80
  design: {
82
81
  type: 'figma',
@@ -166,4 +165,43 @@ export var WithFilter = function WithFilter() {
166
165
  name: 'Filter Icon'
167
166
  }
168
167
  })));
168
+ };
169
+ export var ControlledWithPopover = function ControlledWithPopover() {
170
+ var _useState5 = useState(''),
171
+ _useState6 = _slicedToArray(_useState5, 2),
172
+ value = _useState6[0],
173
+ setValue = _useState6[1];
174
+ var items = [{
175
+ id: 'apple',
176
+ name: 'Apple'
177
+ }, {
178
+ id: 'banana',
179
+ name: 'Banana'
180
+ }, {
181
+ id: 'blueberry',
182
+ name: 'Blueberry'
183
+ }];
184
+ return ___EmotionJSX(Box, null, ___EmotionJSX(SearchField, {
185
+ mode: "autocomplete",
186
+ defaultItems: items,
187
+ value: value,
188
+ onChange: function onChange(val) {
189
+ setValue(val);
190
+ },
191
+ "aria-label": "Search Groups",
192
+ placeholder: "Search",
193
+ onSubmit: function onSubmit(text) {
194
+ return alert(text);
195
+ },
196
+ onClear: function onClear() {
197
+ setValue('');
198
+ }
199
+ }, function (item) {
200
+ return ___EmotionJSX(Item, {
201
+ key: item.id,
202
+ textValue: item.name
203
+ }, item.name);
204
+ }), ___EmotionJSX(Text, {
205
+ mt: "xs"
206
+ }, "value: ".concat(value)));
169
207
  };