@os-design/core 1.0.138 → 1.0.142

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.
@@ -17,6 +17,8 @@ var _media = require("@os-design/media");
17
17
 
18
18
  var _datePickerUtils = require("@os-design/date-picker-utils");
19
19
 
20
+ var _theming = require("@os-design/theming");
21
+
20
22
  var _Select = require("../Select");
21
23
 
22
24
  var _SelectToggle = require("../Select/SelectToggle");
@@ -29,7 +31,7 @@ var _DatePickerCalendar = _interopRequireDefault(require("./DatePickerCalendar")
29
31
 
30
32
  var _Button = _interopRequireDefault(require("../Button"));
31
33
 
32
- var _excluded = ["placeholder", "disabled", "format", "firstDayOfWeek", "locale", "value", "defaultValue", "onChange", "size"];
34
+ var _excluded = ["left", "leftHasPadding", "right", "rightHasPadding", "placeholder", "disabled", "format", "firstDayOfWeek", "locale", "value", "defaultValue", "onChange", "size"];
33
35
 
34
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
35
37
 
@@ -59,7 +61,13 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
59
61
  * The component to choose a date.
60
62
  */
61
63
  var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
62
- var placeholder = _ref.placeholder,
64
+ var left = _ref.left,
65
+ _ref$leftHasPadding = _ref.leftHasPadding,
66
+ leftHasPadding = _ref$leftHasPadding === void 0 ? false : _ref$leftHasPadding,
67
+ right = _ref.right,
68
+ _ref$rightHasPadding = _ref.rightHasPadding,
69
+ rightHasPadding = _ref$rightHasPadding === void 0 ? false : _ref$rightHasPadding,
70
+ placeholder = _ref.placeholder,
63
71
  _ref$disabled = _ref.disabled,
64
72
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
65
73
  _ref$format = _ref.format,
@@ -113,6 +121,43 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
113
121
  }
114
122
  });
115
123
 
124
+ var valueIsSpecified = (0, _react.useMemo)(function () {
125
+ return formattedValue !== undefined && formattedValue !== null;
126
+ }, [formattedValue]);
127
+ var rightValue = (0, _react.useMemo)(function () {
128
+ if (valueIsSpecified) {
129
+ return /*#__PURE__*/_react["default"].createElement("div", {
130
+ "aria-hidden": true
131
+ }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
132
+ type: "ghost",
133
+ wide: "never",
134
+ size: "small",
135
+ disabled: disabled,
136
+ onClick: function onClick(e) {
137
+ setForwardedValue(null);
138
+ e.stopPropagation();
139
+ },
140
+ onKeyDown: function onKeyDown(e) {
141
+ if (disabled) return;
142
+
143
+ if (['Enter', ' '].includes(e.key)) {
144
+ setForwardedValue(null);
145
+ if (!containerRef.current) return;
146
+ containerRef.current.focus();
147
+ e.preventDefault();
148
+ e.stopPropagation();
149
+ }
150
+ },
151
+ "aria-label": locale.clearLabel
152
+ }, /*#__PURE__*/_react["default"].createElement(_SelectToggle.ClearIcon, null)));
153
+ }
154
+
155
+ return right || /*#__PURE__*/_react["default"].createElement(_SelectToggle.IconContainer, null, opened ? /*#__PURE__*/_react["default"].createElement(_icons.Up, null) : /*#__PURE__*/_react["default"].createElement(_icons.Down, null));
156
+ }, [containerRef, disabled, locale.clearLabel, opened, right, setForwardedValue, valueIsSpecified]);
157
+ var rightHasPaddingValue = (0, _react.useMemo)(function () {
158
+ if (valueIsSpecified) return false;
159
+ return right ? rightHasPadding : true;
160
+ }, [right, rightHasPadding, valueIsSpecified]);
116
161
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Select.SelectContainer, _extends({
117
162
  opened: opened,
118
163
  disabled: disabled,
@@ -138,33 +183,31 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
138
183
  "aria-disabled": disabled
139
184
  }, rest, {
140
185
  ref: mergedContainerRef
141
- }), formattedValue !== undefined && formattedValue !== null ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_SelectToggle.Title, {
186
+ }), left && /*#__PURE__*/_react["default"].createElement(_theming.ThemeOverrider, {
187
+ overrides: function overrides(t) {
188
+ return {
189
+ buttonPaddingHorizontal: 0.8,
190
+ baseHeight: t.selectToggleListItemHeight / t.sizes.small
191
+ };
192
+ }
193
+ }, /*#__PURE__*/_react["default"].createElement(_SelectToggle.LeftAddon, {
194
+ hasPadding: leftHasPadding
195
+ }, left)), /*#__PURE__*/_react["default"].createElement(_SelectToggle.Content, {
196
+ hasLeft: !!left,
197
+ hasRight: !!right
198
+ }, valueIsSpecified ? /*#__PURE__*/_react["default"].createElement(_SelectToggle.Title, {
142
199
  disabled: disabled,
143
200
  "aria-hidden": true
144
- }, formattedValue), /*#__PURE__*/_react["default"].createElement(_SelectToggle.ClearButtonContainer, {
145
- "aria-hidden": true
146
- }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
147
- type: "ghost",
148
- wide: "never",
149
- size: "small",
150
- disabled: disabled,
151
- onClick: function onClick(e) {
152
- setForwardedValue(null);
153
- e.stopPropagation();
154
- },
155
- onKeyDown: function onKeyDown(e) {
156
- if (disabled) return;
157
-
158
- if (['Enter', ' '].includes(e.key)) {
159
- setForwardedValue(null);
160
- if (!containerRef.current) return;
161
- containerRef.current.focus();
162
- e.preventDefault();
163
- e.stopPropagation();
164
- }
165
- },
166
- "aria-label": locale.clearLabel
167
- }, /*#__PURE__*/_react["default"].createElement(_SelectToggle.ClearIcon, null)))) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_SelectToggle.Placeholder, null, placeholder), /*#__PURE__*/_react["default"].createElement(_SelectToggle.IconContainer, null, opened ? /*#__PURE__*/_react["default"].createElement(_icons.Up, null) : /*#__PURE__*/_react["default"].createElement(_icons.Down, null)))), isMinXs ? /*#__PURE__*/_react["default"].createElement(_Popover["default"], {
201
+ }, formattedValue) : /*#__PURE__*/_react["default"].createElement(_SelectToggle.Placeholder, null, placeholder)), rightValue && /*#__PURE__*/_react["default"].createElement(_theming.ThemeOverrider, {
202
+ overrides: function overrides(t) {
203
+ return {
204
+ buttonPaddingHorizontal: 0.8,
205
+ baseHeight: t.selectToggleListItemHeight / t.sizes.small
206
+ };
207
+ }
208
+ }, /*#__PURE__*/_react["default"].createElement(_SelectToggle.RightAddon, {
209
+ hasPadding: rightHasPaddingValue
210
+ }, rightValue))), isMinXs ? /*#__PURE__*/_react["default"].createElement(_Popover["default"], {
168
211
  trigger: containerRef,
169
212
  placement: "bottom-start",
170
213
  visible: opened,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DatePicker","forwardRef","ref","placeholder","disabled","format","defaultFormat","firstDayOfWeek","locale","defaultLocale","value","defaultValue","onChange","size","rest","useForwardedRef","containerRef","mergedContainerRef","useState","opened","setOpened","useForwardedState","forwardedValue","setForwardedValue","formattedValue","useMemo","Date","closeHandler","useCallback","useKeyPress","window","undefined","isMinXs","useIsMinWidth","calendar","v","e","includes","key","preventDefault","getAccessibilityDateLabel","stopPropagation","current","focus","clearLabel","displayName"],"sources":["../../../src/DatePicker/index.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState } from 'react';\nimport { WithSize } from '@os-design/styles';\nimport {\n useForwardedRef,\n useForwardedState,\n useKeyPress,\n} from '@os-design/utils';\nimport { Down, Up } from '@os-design/icons';\nimport { useIsMinWidth } from '@os-design/media';\nimport {\n defaultLocale,\n DatePickerLocale,\n defaultFormat,\n getAccessibilityDateLabel,\n} from '@os-design/date-picker-utils';\nimport { SelectContainer } from '../Select';\nimport {\n ClearButtonContainer,\n ClearIcon,\n IconContainer,\n Placeholder,\n Title,\n} from '../Select/SelectToggle';\nimport Popover from '../Popover';\nimport Modal from '../Modal';\nimport DatePickerCalendar from './DatePickerCalendar';\nimport Button from '../Button';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\nexport interface DatePickerProps extends JsxDivProps, WithSize {\n /**\n * The placeholder of the date picker.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the date picker is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * The format of the date.\n * @default undefined\n */\n format?: (date: Date) => string;\n /**\n * The first day of the week.\n * @default sunday\n */\n firstDayOfWeek?: 'sunday' | 'monday';\n /**\n * The locale of the date picker.\n * @default undefined\n */\n locale?: DatePickerLocale;\n /**\n * Selected timestamp.\n * @default undefined\n */\n value?: number | null;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: number | null;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: number | null) => void;\n}\n\n/**\n * The component to choose a date.\n */\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n placeholder,\n disabled = false,\n format = defaultFormat,\n firstDayOfWeek = 'sunday',\n locale = defaultLocale,\n value,\n defaultValue,\n onChange,\n size,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [opened, setOpened] = useState(false);\n const [forwardedValue, setForwardedValue] = useForwardedState({\n value,\n defaultValue,\n onChange,\n });\n\n const formattedValue = useMemo(() => {\n if (!forwardedValue) return forwardedValue;\n return format(new Date(forwardedValue * 1000), locale);\n }, [forwardedValue, format, locale]);\n\n const closeHandler = useCallback(() => {\n setOpened(false);\n }, []);\n\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n closeHandler\n );\n const isMinXs = useIsMinWidth('xs');\n\n const calendar = (\n <DatePickerCalendar\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n value={forwardedValue}\n onChange={(v) => {\n setForwardedValue(v);\n closeHandler();\n }}\n />\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n role='combobox'\n aria-label={\n forwardedValue !== undefined && forwardedValue !== null\n ? getAccessibilityDateLabel(\n new Date(forwardedValue * 1000),\n locale\n )\n : undefined\n }\n aria-disabled={disabled}\n {...rest}\n ref={mergedContainerRef}\n >\n {formattedValue !== undefined && formattedValue !== null ? (\n <>\n <Title disabled={disabled} aria-hidden>\n {formattedValue}\n </Title>\n <ClearButtonContainer aria-hidden>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n setForwardedValue(null);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setForwardedValue(null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </ClearButtonContainer>\n </>\n ) : (\n <>\n <Placeholder>{placeholder}</Placeholder>\n <IconContainer>{opened ? <Up /> : <Down />}</IconContainer>\n </>\n )}\n </SelectContainer>\n\n {isMinXs ? (\n <Popover\n trigger={containerRef}\n placement='bottom-start'\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendar}\n </Popover>\n ) : (\n <Modal\n title={placeholder}\n footer={null}\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendar}\n </Modal>\n )}\n </>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["DatePicker","forwardRef","ref","left","leftHasPadding","right","rightHasPadding","placeholder","disabled","format","defaultFormat","firstDayOfWeek","locale","defaultLocale","value","defaultValue","onChange","size","rest","useForwardedRef","containerRef","mergedContainerRef","useState","opened","setOpened","useForwardedState","forwardedValue","setForwardedValue","formattedValue","useMemo","Date","closeHandler","useCallback","useKeyPress","window","undefined","isMinXs","useIsMinWidth","calendar","v","valueIsSpecified","rightValue","e","stopPropagation","includes","key","current","focus","preventDefault","clearLabel","rightHasPaddingValue","getAccessibilityDateLabel","t","buttonPaddingHorizontal","baseHeight","selectToggleListItemHeight","sizes","small","displayName"],"sources":["../../../src/DatePicker/index.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo, useState } from 'react';\nimport { WithSize } from '@os-design/styles';\nimport {\n useForwardedRef,\n useForwardedState,\n useKeyPress,\n} from '@os-design/utils';\nimport { Down, Up } from '@os-design/icons';\nimport { useIsMinWidth } from '@os-design/media';\nimport {\n defaultLocale,\n DatePickerLocale,\n defaultFormat,\n getAccessibilityDateLabel,\n} from '@os-design/date-picker-utils';\nimport { ThemeOverrider } from '@os-design/theming';\nimport { SelectContainer } from '../Select';\nimport {\n Content,\n LeftAddon,\n RightAddon,\n ClearIcon,\n IconContainer,\n Placeholder,\n Title,\n} from '../Select/SelectToggle';\nimport Popover from '../Popover';\nimport Modal from '../Modal';\nimport DatePickerCalendar from './DatePickerCalendar';\nimport Button from '../Button';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\nexport interface DatePickerProps extends JsxDivProps, WithSize {\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * The placeholder of the date picker.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the date picker is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * The format of the date.\n * @default undefined\n */\n format?: (date: Date) => string;\n /**\n * The first day of the week.\n * @default sunday\n */\n firstDayOfWeek?: 'sunday' | 'monday';\n /**\n * The locale of the date picker.\n * @default undefined\n */\n locale?: DatePickerLocale;\n /**\n * Selected timestamp.\n * @default undefined\n */\n value?: number | null;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: number | null;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: number | null) => void;\n}\n\n/**\n * The component to choose a date.\n */\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n disabled = false,\n format = defaultFormat,\n firstDayOfWeek = 'sunday',\n locale = defaultLocale,\n value,\n defaultValue,\n onChange,\n size,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [opened, setOpened] = useState(false);\n const [forwardedValue, setForwardedValue] = useForwardedState({\n value,\n defaultValue,\n onChange,\n });\n\n const formattedValue = useMemo(() => {\n if (!forwardedValue) return forwardedValue;\n return format(new Date(forwardedValue * 1000), locale);\n }, [forwardedValue, format, locale]);\n\n const closeHandler = useCallback(() => {\n setOpened(false);\n }, []);\n\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n closeHandler\n );\n const isMinXs = useIsMinWidth('xs');\n\n const calendar = (\n <DatePickerCalendar\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n value={forwardedValue}\n onChange={(v) => {\n setForwardedValue(v);\n closeHandler();\n }}\n />\n );\n\n const valueIsSpecified = useMemo(\n () => formattedValue !== undefined && formattedValue !== null,\n [formattedValue]\n );\n\n const rightValue = useMemo(() => {\n if (valueIsSpecified) {\n return (\n <div aria-hidden>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n setForwardedValue(null);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setForwardedValue(null);\n if (!containerRef.current) return;\n containerRef.current.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </div>\n );\n }\n return (\n right || <IconContainer>{opened ? <Up /> : <Down />}</IconContainer>\n );\n }, [\n containerRef,\n disabled,\n locale.clearLabel,\n opened,\n right,\n setForwardedValue,\n valueIsSpecified,\n ]);\n\n const rightHasPaddingValue = useMemo(() => {\n if (valueIsSpecified) return false;\n return right ? rightHasPadding : true;\n }, [right, rightHasPadding, valueIsSpecified]);\n\n return (\n <>\n <SelectContainer\n opened={opened}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n role='combobox'\n aria-label={\n forwardedValue !== undefined && forwardedValue !== null\n ? getAccessibilityDateLabel(\n new Date(forwardedValue * 1000),\n locale\n )\n : undefined\n }\n aria-disabled={disabled}\n {...rest}\n ref={mergedContainerRef}\n >\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <Content hasLeft={!!left} hasRight={!!right}>\n {valueIsSpecified ? (\n <Title disabled={disabled} aria-hidden>\n {formattedValue}\n </Title>\n ) : (\n <Placeholder>{placeholder}</Placeholder>\n )}\n </Content>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </SelectContainer>\n\n {isMinXs ? (\n <Popover\n trigger={containerRef}\n placement='bottom-start'\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendar}\n </Popover>\n ) : (\n <Modal\n title={placeholder}\n footer={null}\n visible={opened}\n onClose={closeHandler}\n size={size}\n >\n {calendar}\n </Modal>\n )}\n </>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n"],"mappings":";;;;;;;;;AAAA;;AAEA;;AAKA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AASA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEA;AACA;AACA;AACA,IAAMA,UAAU,gBAAG,IAAAC,iBAAA,EACjB,gBAiBEC,GAjBF,EAkBK;EAAA,IAhBDC,IAgBC,QAhBDA,IAgBC;EAAA,+BAfDC,cAeC;EAAA,IAfDA,cAeC,oCAfgB,KAehB;EAAA,IAdDC,KAcC,QAdDA,KAcC;EAAA,gCAbDC,eAaC;EAAA,IAbDA,eAaC,qCAbiB,KAajB;EAAA,IAZDC,WAYC,QAZDA,WAYC;EAAA,yBAXDC,QAWC;EAAA,IAXDA,QAWC,8BAXU,KAWV;EAAA,uBAVDC,MAUC;EAAA,IAVDA,MAUC,4BAVQC,8BAUR;EAAA,+BATDC,cASC;EAAA,IATDA,cASC,oCATgB,QAShB;EAAA,uBARDC,MAQC;EAAA,IARDA,MAQC,4BARQC,8BAQR;EAAA,IAPDC,KAOC,QAPDA,KAOC;EAAA,IANDC,YAMC,QANDA,YAMC;EAAA,IALDC,QAKC,QALDA,QAKC;EAAA,IAJDC,IAIC,QAJDA,IAIC;EAAA,IAHEC,IAGF;;EACH,uBAA2C,IAAAC,sBAAA,EAAgBjB,GAAhB,CAA3C;EAAA;EAAA,IAAOkB,YAAP;EAAA,IAAqBC,kBAArB;;EACA,gBAA4B,IAAAC,eAAA,EAAS,KAAT,CAA5B;EAAA;EAAA,IAAOC,MAAP;EAAA,IAAeC,SAAf;;EACA,yBAA4C,IAAAC,wBAAA,EAAkB;IAC5DX,KAAK,EAALA,KAD4D;IAE5DC,YAAY,EAAZA,YAF4D;IAG5DC,QAAQ,EAARA;EAH4D,CAAlB,CAA5C;EAAA;EAAA,IAAOU,cAAP;EAAA,IAAuBC,iBAAvB;;EAMA,IAAMC,cAAc,GAAG,IAAAC,cAAA,EAAQ,YAAM;IACnC,IAAI,CAACH,cAAL,EAAqB,OAAOA,cAAP;IACrB,OAAOjB,MAAM,CAAC,IAAIqB,IAAJ,CAASJ,cAAc,GAAG,IAA1B,CAAD,EAAkCd,MAAlC,CAAb;EACD,CAHsB,EAGpB,CAACc,cAAD,EAAiBjB,MAAjB,EAAyBG,MAAzB,CAHoB,CAAvB;EAKA,IAAMmB,YAAY,GAAG,IAAAC,kBAAA,EAAY,YAAM;IACrCR,SAAS,CAAC,KAAD,CAAT;EACD,CAFoB,EAElB,EAFkB,CAArB;EAIA,IAAAS,kBAAA,EACG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyCC,SAD5C,EAEE,QAFF,EAGEJ,YAHF;EAKA,IAAMK,OAAO,GAAG,IAAAC,oBAAA,EAAc,IAAd,CAAhB;;EAEA,IAAMC,QAAQ,gBACZ,gCAAC,8BAAD;IACE,cAAc,EAAE3B,cADlB;IAEE,MAAM,EAAEC,MAFV;IAGE,KAAK,EAAEc,cAHT;IAIE,QAAQ,EAAE,kBAACa,CAAD,EAAO;MACfZ,iBAAiB,CAACY,CAAD,CAAjB;MACAR,YAAY;IACb;EAPH,EADF;;EAYA,IAAMS,gBAAgB,GAAG,IAAAX,cAAA,EACvB;IAAA,OAAMD,cAAc,KAAKO,SAAnB,IAAgCP,cAAc,KAAK,IAAzD;EAAA,CADuB,EAEvB,CAACA,cAAD,CAFuB,CAAzB;EAKA,IAAMa,UAAU,GAAG,IAAAZ,cAAA,EAAQ,YAAM;IAC/B,IAAIW,gBAAJ,EAAsB;MACpB,oBACE;QAAK;MAAL,gBACE,gCAAC,kBAAD;QACE,IAAI,EAAC,OADP;QAEE,IAAI,EAAC,OAFP;QAGE,IAAI,EAAC,OAHP;QAIE,QAAQ,EAAEhC,QAJZ;QAKE,OAAO,EAAE,iBAACkC,CAAD,EAAO;UACdf,iBAAiB,CAAC,IAAD,CAAjB;UACAe,CAAC,CAACC,eAAF;QACD,CARH;QASE,SAAS,EAAE,mBAACD,CAAD,EAAO;UAChB,IAAIlC,QAAJ,EAAc;;UACd,IAAI,CAAC,OAAD,EAAU,GAAV,EAAeoC,QAAf,CAAwBF,CAAC,CAACG,GAA1B,CAAJ,EAAoC;YAClClB,iBAAiB,CAAC,IAAD,CAAjB;YACA,IAAI,CAACP,YAAY,CAAC0B,OAAlB,EAA2B;YAC3B1B,YAAY,CAAC0B,OAAb,CAAqBC,KAArB;YACAL,CAAC,CAACM,cAAF;YACAN,CAAC,CAACC,eAAF;UACD;QACF,CAlBH;QAmBE,cAAY/B,MAAM,CAACqC;MAnBrB,gBAqBE,gCAAC,uBAAD,OArBF,CADF,CADF;IA2BD;;IACD,OACE5C,KAAK,iBAAI,gCAAC,2BAAD,QAAgBkB,MAAM,gBAAG,gCAAC,SAAD,OAAH,gBAAY,gCAAC,WAAD,OAAlC,CADX;EAGD,CAjCkB,EAiChB,CACDH,YADC,EAEDZ,QAFC,EAGDI,MAAM,CAACqC,UAHN,EAID1B,MAJC,EAKDlB,KALC,EAMDsB,iBANC,EAODa,gBAPC,CAjCgB,CAAnB;EA2CA,IAAMU,oBAAoB,GAAG,IAAArB,cAAA,EAAQ,YAAM;IACzC,IAAIW,gBAAJ,EAAsB,OAAO,KAAP;IACtB,OAAOnC,KAAK,GAAGC,eAAH,GAAqB,IAAjC;EACD,CAH4B,EAG1B,CAACD,KAAD,EAAQC,eAAR,EAAyBkC,gBAAzB,CAH0B,CAA7B;EAKA,oBACE,+EACE,gCAAC,uBAAD;IACE,MAAM,EAAEjB,MADV;IAEE,QAAQ,EAAEf,QAFZ;IAGE,IAAI,EAAES,IAHR;IAIE,QAAQ,EAAE,CAACT,QAAD,GAAY,CAAZ,GAAgB,CAAC,CAJ7B;IAKE,OAAO,EAAE,mBAAM;MACb,IAAIA,QAAJ,EAAc;MACdgB,SAAS,CAAC,CAACD,MAAF,CAAT;IACD,CARH;IASE,SAAS,EAAE,mBAACmB,CAAD,EAAO;MAChB,IAAIlC,QAAJ,EAAc;;MACd,IAAI,CAAC,OAAD,EAAU,GAAV,EAAeoC,QAAf,CAAwBF,CAAC,CAACG,GAA1B,CAAJ,EAAoC;QAClCrB,SAAS,CAAC,CAACD,MAAF,CAAT;QACAmB,CAAC,CAACM,cAAF;MACD;IACF,CAfH;IAgBE,WAAW,EAAE,qBAACN,CAAD;MAAA,OAAOA,CAAC,CAACM,cAAF,EAAP;IAAA,CAhBf;IAiBE,IAAI,EAAC,UAjBP;IAkBE,cACEtB,cAAc,KAAKS,SAAnB,IAAgCT,cAAc,KAAK,IAAnD,GACI,IAAAyB,0CAAA,EACE,IAAIrB,IAAJ,CAASJ,cAAc,GAAG,IAA1B,CADF,EAEEd,MAFF,CADJ,GAKIuB,SAxBR;IA0BE,iBAAe3B;EA1BjB,GA2BMU,IA3BN;IA4BE,GAAG,EAAEG;EA5BP,IA8BGlB,IAAI,iBACH,gCAAC,uBAAD;IACE,SAAS,EAAE,mBAACiD,CAAD;MAAA,OAAQ;QACjBC,uBAAuB,EAAE,GADR;QAEjBC,UAAU,EAAEF,CAAC,CAACG,0BAAF,GAA+BH,CAAC,CAACI,KAAF,CAAQC;MAFlC,CAAR;IAAA;EADb,gBAME,gCAAC,uBAAD;IAAW,UAAU,EAAErD;EAAvB,GAAwCD,IAAxC,CANF,CA/BJ,eAyCE,gCAAC,qBAAD;IAAS,OAAO,EAAE,CAAC,CAACA,IAApB;IAA0B,QAAQ,EAAE,CAAC,CAACE;EAAtC,GACGmC,gBAAgB,gBACf,gCAAC,mBAAD;IAAO,QAAQ,EAAEhC,QAAjB;IAA2B;EAA3B,GACGoB,cADH,CADe,gBAKf,gCAAC,yBAAD,QAAcrB,WAAd,CANJ,CAzCF,EAmDGkC,UAAU,iBACT,gCAAC,uBAAD;IACE,SAAS,EAAE,mBAACW,CAAD;MAAA,OAAQ;QACjBC,uBAAuB,EAAE,GADR;QAEjBC,UAAU,EAAEF,CAAC,CAACG,0BAAF,GAA+BH,CAAC,CAACI,KAAF,CAAQC;MAFlC,CAAR;IAAA;EADb,gBAME,gCAAC,wBAAD;IAAY,UAAU,EAAEP;EAAxB,GACGT,UADH,CANF,CApDJ,CADF,EAkEGL,OAAO,gBACN,gCAAC,mBAAD;IACE,OAAO,EAAEhB,YADX;IAEE,SAAS,EAAC,cAFZ;IAGE,OAAO,EAAEG,MAHX;IAIE,OAAO,EAAEQ,YAJX;IAKE,IAAI,EAAEd;EALR,GAOGqB,QAPH,CADM,gBAWN,gCAAC,iBAAD;IACE,KAAK,EAAE/B,WADT;IAEE,MAAM,EAAE,IAFV;IAGE,OAAO,EAAEgB,MAHX;IAIE,OAAO,EAAEQ,YAJX;IAKE,IAAI,EAAEd;EALR,GAOGqB,QAPH,CA7EJ,CADF;AA0FD,CAvMgB,CAAnB;AA0MAtC,UAAU,CAAC0D,WAAX,GAAyB,YAAzB;eAEe1D,U"}
@@ -5,7 +5,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = exports.Title = exports.Placeholder = exports.IconContainer = exports.ClearIcon = exports.ClearButtonContainer = void 0;
8
+ exports["default"] = exports.Title = exports.RightAddon = exports.Placeholder = exports.LeftAddon = exports.IconContainer = exports.Content = exports.Container = exports.ClearIcon = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
@@ -25,7 +25,7 @@ var _Tag = _interopRequireDefault(require("../Tag"));
25
25
 
26
26
  var _Button = _interopRequireDefault(require("../Button"));
27
27
 
28
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
28
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19;
29
29
 
30
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
31
 
@@ -35,29 +35,44 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
35
35
 
36
36
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
37
37
 
38
- var Placeholder = _styled["default"].span(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n ", ";\n"])), function (p) {
38
+ var Container = _styled["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n"])));
39
+
40
+ exports.Container = Container;
41
+
42
+ var notHasLeftStyles = function notHasLeftStyles(p) {
43
+ return !p.hasLeft && (0, _react2.css)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n padding-left: ", "em;\n "])), p.theme.inputPaddingHorizontal);
44
+ };
45
+
46
+ var notHasRightStyles = function notHasRightStyles(p) {
47
+ return !p.hasRight && (0, _react2.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n padding-right: ", "em;\n "])), p.theme.inputPaddingHorizontal);
48
+ };
49
+
50
+ var Content = (0, _styled["default"])('div', (0, _utils.omitEmotionProps)('hasLeft', 'hasRight'))(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n flex: 1;\n ", ";\n ", ";\n ", ";\n"])), notHasLeftStyles, notHasRightStyles, _styles.ellipsisStyles);
51
+ exports.Content = Content;
52
+
53
+ var Placeholder = _styled["default"].span(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n color: ", ";\n ", ";\n"])), function (p) {
39
54
  return (0, _theming.clr)(p.theme.inputColorPlaceholder);
40
55
  }, _styles.ellipsisStyles);
41
56
 
42
57
  exports.Placeholder = Placeholder;
43
58
 
44
59
  var unborderedTitleStyles = function unborderedTitleStyles(p) {
45
- return p.unbordered && (0, _react2.css)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n font-weight: 500;\n ", "\n "])), !p.disabled && "color: ".concat((0, _theming.clr)(p.theme.colorPrimary), ";"));
60
+ return p.unbordered && (0, _react2.css)(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n font-weight: 500;\n ", "\n "])), !p.disabled && "color: ".concat((0, _theming.clr)(p.theme.colorPrimary), ";"));
46
61
  };
47
62
 
48
63
  var disabledStyles = function disabledStyles(p) {
49
- return p.disabled && (0, _react2.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n color: ", ";\n "])), (0, _theming.clr)(p.theme.inputDisabledColorText));
64
+ return p.disabled && (0, _react2.css)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n color: ", ";\n "])), (0, _theming.clr)(p.theme.inputDisabledColorText));
50
65
  };
51
66
 
52
- var Title = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('disabled', 'unbordered'))(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n color: ", ";\n ", ";\n ", ";\n ", ";\n"])), function (p) {
67
+ var Title = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('disabled', 'unbordered'))(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n color: ", ";\n ", ";\n ", ";\n ", ";\n"])), function (p) {
53
68
  return (0, _theming.clr)(p.theme.colorText);
54
69
  }, unborderedTitleStyles, disabledStyles, _styles.ellipsisStyles);
55
70
  exports.Title = Title;
56
- var ListItem = (0, _styled["default"])(_Tag["default"], (0, _utils.omitEmotionProps)('disabled'))(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ", "em;\n ", ";\n"])), function (p) {
71
+ var ListItem = (0, _styled["default"])(_Tag["default"], (0, _utils.omitEmotionProps)('disabled'))(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ", "em;\n ", ";\n"])), function (p) {
57
72
  return p.theme.selectToggleListItemHeight;
58
73
  }, disabledStyles);
59
74
 
60
- var List = _styled["default"].div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ", "em\n ", "em 0;\n\n & > div {\n margin: 0 ", "em\n ", "em 0;\n }\n"])), function (p) {
75
+ var List = _styled["default"].div(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ", "em\n ", "em 0;\n\n & > div {\n margin: 0 ", "em\n ", "em 0;\n }\n"])), function (p) {
61
76
  return p.theme.selectToggleListItemGap;
62
77
  }, function (p) {
63
78
  return -p.theme.selectToggleListItemGap;
@@ -67,35 +82,52 @@ var List = _styled["default"].div(_templateObject6 || (_templateObject6 = _tagge
67
82
  return p.theme.selectToggleListItemGap;
68
83
  });
69
84
 
70
- var DeleteButton = _styled["default"].button(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n ", ";\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ", ";\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ", ";\n }\n }\n\n ", ";\n"])), _styles.resetButtonStyles, function (p) {
85
+ var DeleteButton = _styled["default"].button(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n ", ";\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ", ";\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ", ";\n }\n }\n\n ", ";\n"])), _styles.resetButtonStyles, function (p) {
71
86
  return (0, _theming.clr)(p.theme.selectToggleDeleteButtonColorIcon);
72
87
  }, function (p) {
73
88
  return (0, _theming.clr)(p.theme.selectToggleDeleteButtonColorIconHover);
74
89
  }, (0, _styles.transitionStyles)('color'));
75
90
 
76
91
  var unborderedIconContainerStyles = function unborderedIconContainerStyles(p) {
77
- return p.unbordered && (0, _react2.css)(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n padding-top: 0.2em;\n font-size: 0.8em;\n ", "\n "])), !p.disabled && "color: ".concat((0, _theming.clr)(p.theme.colorPrimary), ";"));
92
+ return p.unbordered && (0, _react2.css)(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n padding-top: 0.2em;\n font-size: 0.8em;\n ", "\n "])), !p.disabled && "color: ".concat((0, _theming.clr)(p.theme.colorPrimary), ";"));
78
93
  };
79
94
 
80
- var IconContainer = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('unbordered', 'disabled'))(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n right: ", "em;\n bottom: 0;\n\n display: flex;\n align-items: center;\n color: ", ";\n\n ", ";\n"])), function (p) {
81
- return p.theme.inputPaddingHorizontal;
82
- }, function (p) {
95
+ var IconContainer = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('unbordered', 'disabled'))(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n color: ", ";\n line-height: 1;\n ", ";\n"])), function (p) {
83
96
  return (0, _theming.clr)(p.theme.selectColorIcon);
84
97
  }, unborderedIconContainerStyles);
85
98
  exports.IconContainer = IconContainer;
86
- var ClearButtonContainer = (0, _styled["default"])(IconContainer)(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n right: 0;\n"])));
87
- exports.ClearButtonContainer = ClearButtonContainer;
88
- var ClearIcon = (0, _styled["default"])(_icons.CloseCircle)(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n transform: scale(1.2) !important;\n"])));
99
+ var ClearIcon = (0, _styled["default"])(_icons.CloseCircle)(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n transform: scale(1.2) !important;\n"])));
89
100
  exports.ClearIcon = ClearIcon;
101
+ var Addon = (0, _styled["default"])('span', (0, _utils.omitEmotionProps)('hasPadding'))(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n user-select: none;\n color: ", ";\n\n svg {\n transform: scale(1.2);\n }\n"])), function (p) {
102
+ return (0, _theming.clr)(p.theme.inputColorPlaceholder);
103
+ });
104
+ var LeftAddon = (0, _styled["default"])(Addon)(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n padding-right: ", "em;\n ", "\n"])), function (p) {
105
+ return p.theme.inputAddonPaddingHorizontal;
106
+ }, function (p) {
107
+ return p.hasPadding && (0, _react2.css)(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n padding-left: ", "em;\n "])), p.theme.inputPaddingHorizontal);
108
+ });
109
+ exports.LeftAddon = LeftAddon;
110
+ var RightAddon = (0, _styled["default"])(Addon)(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n padding-left: ", "em;\n ", "\n"])), function (p) {
111
+ return p.theme.inputAddonPaddingHorizontal;
112
+ }, function (p) {
113
+ return p.hasPadding && (0, _react2.css)(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n padding-right: ", "em;\n "])), p.theme.inputPaddingHorizontal);
114
+ });
115
+ exports.RightAddon = RightAddon;
90
116
 
91
117
  var SelectToggle = function SelectToggle(_ref) {
92
118
  var selectedItems = _ref.selectedItems,
93
119
  onDelete = _ref.onDelete,
94
120
  onClear = _ref.onClear,
95
121
  opened = _ref.opened,
96
- unbordered = _ref.unbordered,
97
122
  multiple = _ref.multiple,
123
+ left = _ref.left,
124
+ _ref$leftHasPadding = _ref.leftHasPadding,
125
+ leftHasPadding = _ref$leftHasPadding === void 0 ? false : _ref$leftHasPadding,
126
+ right = _ref.right,
127
+ _ref$rightHasPadding = _ref.rightHasPadding,
128
+ rightHasPadding = _ref$rightHasPadding === void 0 ? false : _ref$rightHasPadding,
98
129
  placeholder = _ref.placeholder,
130
+ unbordered = _ref.unbordered,
99
131
  loading = _ref.loading,
100
132
  disabled = _ref.disabled,
101
133
  clearVisible = _ref.clearVisible,
@@ -133,31 +165,62 @@ var SelectToggle = function SelectToggle(_ref) {
133
165
  unbordered: unbordered
134
166
  }, selectedItems[0].title);
135
167
  }, [selectedItems, multiple, disabled, unbordered, placeholder, locale.deleteLabel, onDelete]);
136
- var icon = (0, _react.useMemo)(function () {
168
+ var showClearButton = (0, _react.useMemo)(function () {
169
+ return clearVisible && selectedItems.length > 0;
170
+ }, [clearVisible, selectedItems.length]);
171
+ var rightValue = (0, _react.useMemo)(function () {
137
172
  if (loading) return /*#__PURE__*/_react["default"].createElement(_icons.Loading, null);
138
- return opened ? /*#__PURE__*/_react["default"].createElement(_icons.Up, null) : /*#__PURE__*/_react["default"].createElement(_icons.Down, null);
139
- }, [loading, opened]);
140
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, renderContent(), clearVisible && selectedItems.length > 0 ? /*#__PURE__*/_react["default"].createElement(ClearButtonContainer, {
141
- unbordered: unbordered,
142
- disabled: disabled
143
- }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
144
- type: "ghost",
145
- wide: "never",
146
- size: "small",
147
- disabled: disabled,
148
- onClick: function onClick(e) {
149
- onClear();
150
- e.stopPropagation();
151
- },
152
- onKeyDown: function onKeyDown(e) {
153
- if (e.key === 'Enter') onClear();
154
- e.stopPropagation();
155
- },
156
- "aria-label": locale.clearLabel
157
- }, /*#__PURE__*/_react["default"].createElement(ClearIcon, null))) : /*#__PURE__*/_react["default"].createElement(IconContainer, {
158
- unbordered: unbordered,
159
- disabled: disabled
160
- }, icon));
173
+
174
+ if (showClearButton) {
175
+ return /*#__PURE__*/_react["default"].createElement(_Button["default"], {
176
+ type: "ghost",
177
+ wide: "never",
178
+ size: "small",
179
+ disabled: disabled,
180
+ onClick: function onClick(e) {
181
+ onClear();
182
+ e.stopPropagation();
183
+ },
184
+ onKeyDown: function onKeyDown(e) {
185
+ if (e.key === 'Enter') onClear();
186
+ e.stopPropagation();
187
+ },
188
+ "aria-label": locale.clearLabel
189
+ }, /*#__PURE__*/_react["default"].createElement(ClearIcon, null));
190
+ }
191
+
192
+ return right || /*#__PURE__*/_react["default"].createElement(IconContainer, {
193
+ unbordered: unbordered,
194
+ disabled: disabled
195
+ }, opened ? /*#__PURE__*/_react["default"].createElement(_icons.Up, null) : /*#__PURE__*/_react["default"].createElement(_icons.Down, null));
196
+ }, [disabled, loading, locale.clearLabel, onClear, opened, right, showClearButton, unbordered]);
197
+ var rightHasPaddingValue = (0, _react.useMemo)(function () {
198
+ if (loading) return true;
199
+ if (showClearButton) return false;
200
+ return right ? rightHasPadding : true;
201
+ }, [loading, right, rightHasPadding, showClearButton]);
202
+ return /*#__PURE__*/_react["default"].createElement(Container, null, left && /*#__PURE__*/_react["default"].createElement(_theming.ThemeOverrider, {
203
+ overrides: function overrides(t) {
204
+ return {
205
+ buttonPaddingHorizontal: 0.8,
206
+ baseHeight: t.selectToggleListItemHeight / t.sizes.small
207
+ };
208
+ }
209
+ }, /*#__PURE__*/_react["default"].createElement(LeftAddon, {
210
+ hasPadding: leftHasPadding
211
+ }, left)), /*#__PURE__*/_react["default"].createElement(Content, {
212
+ hasLeft: !!left,
213
+ hasRight: !!right
214
+ }, renderContent()), rightValue && /*#__PURE__*/_react["default"].createElement(_theming.ThemeOverrider, {
215
+ overrides: function overrides(t) {
216
+ return {
217
+ buttonPaddingHorizontal: 0.8,
218
+ baseHeight: t.selectToggleListItemHeight / t.sizes.small
219
+ };
220
+ }
221
+ }, /*#__PURE__*/_react["default"].createElement(RightAddon, {
222
+ hasPadding: rightHasPaddingValue
223
+ }, rightValue)));
161
224
  };
162
225
 
163
226
  SelectToggle.displayName = 'SelectToggle';
@@ -1 +1 @@
1
- {"version":3,"file":"SelectToggle.js","names":["Placeholder","styled","span","p","clr","theme","inputColorPlaceholder","ellipsisStyles","unborderedTitleStyles","unbordered","css","disabled","colorPrimary","disabledStyles","inputDisabledColorText","Title","omitEmotionProps","colorText","ListItem","Tag","selectToggleListItemHeight","List","div","selectToggleListItemGap","DeleteButton","button","resetButtonStyles","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","transitionStyles","unborderedIconContainerStyles","IconContainer","inputPaddingHorizontal","selectColorIcon","ClearButtonContainer","ClearIcon","CloseCircle","SelectToggle","selectedItems","onDelete","onClear","opened","multiple","placeholder","loading","clearVisible","locale","renderContent","useCallback","length","map","title","value","e","stopPropagation","deleteLabel","undefined","icon","useMemo","key","clearLabel","displayName"],"sources":["../../../src/Select/SelectToggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { Up, Down, Loading, Close, CloseCircle } from '@os-design/icons';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport Tag from '../Tag';\nimport Button from '../Button';\nimport { SelectLocale } from './utils/defaultLocale';\n\ninterface SelectToggleProps {\n selectedItems: Array<{ title: string; value: string }>;\n onDelete: (value: string) => void;\n onClear: () => void;\n opened: boolean;\n multiple: boolean;\n placeholder?: string;\n unbordered?: boolean;\n loading?: boolean;\n disabled?: boolean;\n clearVisible?: boolean;\n locale: SelectLocale;\n}\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst unborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectToggleProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${unborderedTitleStyles};\n ${disabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ListItemProps = Pick<SelectToggleProps, 'disabled'>;\nconst ListItem = styled(Tag, omitEmotionProps('disabled'))<ListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${disabledStyles};\n`;\n\nconst List = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst unborderedIconContainerStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface IconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const IconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<IconContainerProps>`\n position: absolute;\n top: 0;\n right: ${(p) => p.theme.inputPaddingHorizontal}em;\n bottom: 0;\n\n display: flex;\n align-items: center;\n color: ${(p) => clr(p.theme.selectColorIcon)};\n\n ${unborderedIconContainerStyles};\n`;\n\nexport const ClearButtonContainer = styled(IconContainer)`\n right: 0;\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\nconst SelectToggle: React.FC<SelectToggleProps> = ({\n selectedItems,\n onDelete,\n onClear,\n opened,\n unbordered,\n multiple,\n placeholder,\n loading,\n disabled,\n clearVisible,\n locale,\n}) => {\n const renderContent = useCallback(() => {\n if (selectedItems.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n if (multiple) {\n return (\n <List>\n {selectedItems.map(({ title, value }) => (\n <ListItem\n key={value}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(value);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ListItem>\n ))}\n </List>\n );\n }\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {selectedItems[0].title}\n </Title>\n );\n }, [\n selectedItems,\n multiple,\n disabled,\n unbordered,\n placeholder,\n locale.deleteLabel,\n onDelete,\n ]);\n\n const icon = useMemo(() => {\n if (loading) return <Loading />;\n return opened ? <Up /> : <Down />;\n }, [loading, opened]);\n\n return (\n <>\n {renderContent()}\n {clearVisible && selectedItems.length > 0 ? (\n <ClearButtonContainer unbordered={unbordered} disabled={disabled}>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n onClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </ClearButtonContainer>\n ) : (\n <IconContainer unbordered={unbordered} disabled={disabled}>\n {icon}\n </IconContainer>\n )}\n </>\n );\n};\n\nSelectToggle.displayName = 'SelectToggle';\n\nexport default SelectToggle;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SelectToggle.js","names":["Container","styled","div","notHasLeftStyles","p","hasLeft","css","theme","inputPaddingHorizontal","notHasRightStyles","hasRight","Content","omitEmotionProps","ellipsisStyles","Placeholder","span","clr","inputColorPlaceholder","unborderedTitleStyles","unbordered","disabled","colorPrimary","disabledStyles","inputDisabledColorText","Title","colorText","ListItem","Tag","selectToggleListItemHeight","List","selectToggleListItemGap","DeleteButton","button","resetButtonStyles","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","transitionStyles","unborderedIconContainerStyles","IconContainer","selectColorIcon","ClearIcon","CloseCircle","Addon","LeftAddon","inputAddonPaddingHorizontal","hasPadding","RightAddon","SelectToggle","selectedItems","onDelete","onClear","opened","multiple","left","leftHasPadding","right","rightHasPadding","placeholder","loading","clearVisible","locale","renderContent","useCallback","length","map","title","value","e","stopPropagation","deleteLabel","undefined","showClearButton","useMemo","rightValue","key","clearLabel","rightHasPaddingValue","t","buttonPaddingHorizontal","baseHeight","sizes","small","displayName"],"sources":["../../../src/Select/SelectToggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { Up, Down, Loading, Close, CloseCircle } from '@os-design/icons';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport Tag from '../Tag';\nimport Button from '../Button';\nimport { SelectLocale } from './utils/defaultLocale';\n\ninterface SelectToggleProps {\n selectedItems: Array<{ title: string; value: string }>;\n onDelete: (value: string) => void;\n onClear: () => void;\n opened: boolean;\n multiple: boolean;\n left?: React.ReactNode;\n leftHasPadding?: boolean;\n right?: React.ReactNode;\n rightHasPadding?: boolean;\n placeholder?: string;\n unbordered?: boolean;\n loading?: boolean;\n disabled?: boolean;\n clearVisible?: boolean;\n locale: SelectLocale;\n}\n\nexport const Container = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n overflow: hidden;\n`;\n\nconst notHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst notHasRightStyles = (p) =>\n !p.hasRight &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface ContentProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n}\nexport const Content = styled(\n 'div',\n omitEmotionProps('hasLeft', 'hasRight')\n)<ContentProps>`\n flex: 1;\n ${notHasLeftStyles};\n ${notHasRightStyles};\n ${ellipsisStyles};\n`;\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst unborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectToggleProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${unborderedTitleStyles};\n ${disabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ListItemProps = Pick<SelectToggleProps, 'disabled'>;\nconst ListItem = styled(Tag, omitEmotionProps('disabled'))<ListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${disabledStyles};\n`;\n\nconst List = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst unborderedIconContainerStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface IconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const IconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<IconContainerProps>`\n color: ${(p) => clr(p.theme.selectColorIcon)};\n line-height: 1;\n ${unborderedIconContainerStyles};\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nexport const LeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nexport const RightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nconst SelectToggle: React.FC<SelectToggleProps> = ({\n selectedItems,\n onDelete,\n onClear,\n opened,\n multiple,\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n placeholder,\n unbordered,\n loading,\n disabled,\n clearVisible,\n locale,\n}) => {\n const renderContent = useCallback(() => {\n if (selectedItems.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n if (multiple) {\n return (\n <List>\n {selectedItems.map(({ title, value }) => (\n <ListItem\n key={value}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(value);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ListItem>\n ))}\n </List>\n );\n }\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {selectedItems[0].title}\n </Title>\n );\n }, [\n selectedItems,\n multiple,\n disabled,\n unbordered,\n placeholder,\n locale.deleteLabel,\n onDelete,\n ]);\n\n const showClearButton = useMemo(\n () => clearVisible && selectedItems.length > 0,\n [clearVisible, selectedItems.length]\n );\n\n const rightValue = useMemo(() => {\n if (loading) return <Loading />;\n if (showClearButton) {\n return (\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n onClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n );\n }\n return (\n right || (\n <IconContainer unbordered={unbordered} disabled={disabled}>\n {opened ? <Up /> : <Down />}\n </IconContainer>\n )\n );\n }, [\n disabled,\n loading,\n locale.clearLabel,\n onClear,\n opened,\n right,\n showClearButton,\n unbordered,\n ]);\n\n const rightHasPaddingValue = useMemo(() => {\n if (loading) return true;\n if (showClearButton) return false;\n return right ? rightHasPadding : true;\n }, [loading, right, rightHasPadding, showClearButton]);\n\n return (\n <Container>\n {left && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <Content hasLeft={!!left} hasRight={!!right}>\n {renderContent()}\n </Content>\n\n {rightValue && (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal: 0.8,\n baseHeight: t.selectToggleListItemHeight / t.sizes.small,\n })}\n >\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </Container>\n );\n};\n\nSelectToggle.displayName = 'SelectToggle';\n\nexport default SelectToggle;\n"],"mappings":"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"}
@@ -33,7 +33,7 @@ var _SelectList = _interopRequireDefault(require("./SelectList"));
33
33
 
34
34
  var _defaultLocale = _interopRequireDefault(require("./utils/defaultLocale"));
35
35
 
36
- var _excluded = ["options", "placeholder", "searchVisible", "searchProps", "notFoundText", "unbordered", "loading", "disabled", "clearVisible", "threshold", "visibleCount", "overscanCount", "maxSelectedItems", "locale", "value", "defaultValue", "onChange", "onLoadNext", "size", "placement"];
36
+ var _excluded = ["options", "left", "leftHasPadding", "right", "rightHasPadding", "placeholder", "searchVisible", "searchProps", "notFoundText", "unbordered", "loading", "disabled", "clearVisible", "threshold", "visibleCount", "overscanCount", "maxSelectedItems", "locale", "value", "defaultValue", "onChange", "onLoadNext", "size", "placement"];
37
37
 
38
38
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
39
39
 
@@ -65,7 +65,7 @@ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(
65
65
 
66
66
  var paddingStyles = function paddingStyles(p) {
67
67
  var paddingVertical = (p.theme.baseHeight - p.theme.selectToggleListItemHeight) / 2;
68
- return (0, _react2.css)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: calc(", "em - 1px) 3.5em\n calc(", "em - 1px) ", "em;\n "])), paddingVertical, paddingVertical, p.theme.inputPaddingHorizontal);
68
+ return (0, _react2.css)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: calc(", "em - 1px) 0;\n "])), paddingVertical);
69
69
  };
70
70
 
71
71
  var openedStyles = function openedStyles(p) {
@@ -73,7 +73,7 @@ var openedStyles = function openedStyles(p) {
73
73
  };
74
74
 
75
75
  var unborderedStyles = function unborderedStyles(p) {
76
- return p.unbordered && (0, _react2.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n border: 0;\n padding-right: 1.8em;\n box-shadow: none !important;\n ", ";\n "])), (0, _styles.transitionStyles)('background-color')(p));
76
+ return p.unbordered && (0, _react2.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n border: 0;\n box-shadow: none !important;\n ", ";\n "])), (0, _styles.transitionStyles)('background-color')(p));
77
77
  };
78
78
 
79
79
  var unborderedHoverStyles = function unborderedHoverStyles(p) {
@@ -111,6 +111,12 @@ var InputSearchContainer = _styled["default"].div(_templateObject8 || (_template
111
111
  var Select = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
112
112
  var _ref$options = _ref.options,
113
113
  options = _ref$options === void 0 ? [] : _ref$options,
114
+ left = _ref.left,
115
+ _ref$leftHasPadding = _ref.leftHasPadding,
116
+ leftHasPadding = _ref$leftHasPadding === void 0 ? false : _ref$leftHasPadding,
117
+ right = _ref.right,
118
+ _ref$rightHasPadding = _ref.rightHasPadding,
119
+ rightHasPadding = _ref$rightHasPadding === void 0 ? false : _ref$rightHasPadding,
114
120
  placeholder = _ref.placeholder,
115
121
  _ref$searchVisible = _ref.searchVisible,
116
122
  searchVisible = _ref$searchVisible === void 0 ? false : _ref$searchVisible,
@@ -249,11 +255,15 @@ var Select = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
249
255
  containerRef.current.focus();
250
256
  },
251
257
  opened: opened,
252
- unbordered: unbordered,
253
258
  multiple: maxSelectedItems !== 1,
259
+ placeholder: placeholder,
260
+ left: left,
261
+ leftHasPadding: leftHasPadding,
262
+ right: right,
263
+ rightHasPadding: rightHasPadding,
264
+ unbordered: unbordered,
254
265
  disabled: disabled,
255
266
  clearVisible: clearVisible,
256
- placeholder: placeholder,
257
267
  loading: loading,
258
268
  locale: locale
259
269
  })), /*#__PURE__*/_react["default"].createElement(SelectMenu, {