@react-spectrum/autocomplete 3.0.0-alpha.1 → 3.0.0-alpha.10

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.
@@ -19,8 +19,8 @@ import {ComboBoxState, useComboBoxState} from '@react-stately/combobox';
19
19
  import {DismissButton} from '@react-aria/overlays';
20
20
  import {Field} from '@react-spectrum/label';
21
21
  import {FocusableRef, ValidationState} from '@react-types/shared';
22
- import {FocusRing, FocusScope} from '@react-aria/focus';
23
22
  import {focusSafely} from '@react-aria/focus';
23
+ import {FocusScope, useFocusRing} from '@react-aria/focus';
24
24
  // @ts-ignore
25
25
  import intlMessages from '../intl/*.json';
26
26
  import {ListBoxBase, useListBoxLayout} from '@react-spectrum/listbox';
@@ -38,7 +38,7 @@ import textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.
38
38
  import {Tray} from '@react-spectrum/overlays';
39
39
  import {useButton} from '@react-aria/button';
40
40
  import {useDialog} from '@react-aria/dialog';
41
- import {useFilter, useMessageFormatter} from '@react-aria/i18n';
41
+ import {useFilter, useLocalizedStringFormatter} from '@react-aria/i18n';
42
42
  import {useFocusableRef} from '@react-spectrum/utils';
43
43
  import {useLabel} from '@react-aria/label';
44
44
  import {useOverlayTrigger} from '@react-aria/overlays';
@@ -70,7 +70,7 @@ export const MobileSearchAutocomplete = React.forwardRef(function MobileSearchAu
70
70
  selectedKey: undefined,
71
71
  defaultSelectedKey: undefined
72
72
  });
73
-
73
+
74
74
  let buttonRef = useRef<HTMLElement>();
75
75
  let domRef = useFocusableRef(ref, buttonRef);
76
76
  let {triggerProps, overlayProps} = useOverlayTrigger({type: 'listbox'}, state, buttonRef);
@@ -99,7 +99,7 @@ export const MobileSearchAutocomplete = React.forwardRef(function MobileSearchAu
99
99
  ref={domRef}
100
100
  includeNecessityIndicatorInAccessibilityName>
101
101
  <SearchAutocompleteButton
102
- {...mergeProps(triggerProps, fieldProps, {autoFocus: props.autoFocus})}
102
+ {...mergeProps(triggerProps, fieldProps, {autoFocus: props.autoFocus, icon: props.icon})}
103
103
  ref={buttonRef}
104
104
  isQuiet={isQuiet}
105
105
  isDisabled={isDisabled}
@@ -124,6 +124,7 @@ export const MobileSearchAutocomplete = React.forwardRef(function MobileSearchAu
124
124
  });
125
125
 
126
126
  interface SearchAutocompleteButtonProps extends AriaButtonProps {
127
+ icon?: ReactElement,
127
128
  isQuiet?: boolean,
128
129
  isDisabled?: boolean,
129
130
  isReadOnly?: boolean,
@@ -137,7 +138,12 @@ interface SearchAutocompleteButtonProps extends AriaButtonProps {
137
138
  }
138
139
 
139
140
  const SearchAutocompleteButton = React.forwardRef(function SearchAutocompleteButton(props: SearchAutocompleteButtonProps, ref: RefObject<HTMLElement>) {
141
+ let searchIcon = (
142
+ <Magnifier data-testid="searchicon" />
143
+ );
144
+
140
145
  let {
146
+ icon = searchIcon,
141
147
  isQuiet,
142
148
  isDisabled,
143
149
  isReadOnly,
@@ -149,24 +155,22 @@ const SearchAutocompleteButton = React.forwardRef(function SearchAutocompleteBut
149
155
  style,
150
156
  className
151
157
  } = props;
152
- let formatMessage = useMessageFormatter(intlMessages);
158
+ let stringFormatter = useLocalizedStringFormatter(intlMessages);
153
159
  let valueId = useId();
154
160
  let invalidId = useId();
155
161
  let validationIcon = validationState === 'invalid'
156
- ? <AlertMedium id={invalidId} aria-label={formatMessage('invalid')} />
162
+ ? <AlertMedium id={invalidId} aria-label={stringFormatter.format('invalid')} />
157
163
  : <CheckmarkMedium />;
158
164
 
159
- let searchIcon = (
160
- <Magnifier data-testid="searchicon" />
161
- );
162
-
163
- let icon = React.cloneElement(searchIcon, {
164
- UNSAFE_className: classNames(
165
- textfieldStyles,
166
- 'spectrum-Textfield-icon'
167
- ),
168
- size: 'S'
169
- });
165
+ if (icon) {
166
+ icon = React.cloneElement(icon, {
167
+ UNSAFE_className: classNames(
168
+ textfieldStyles,
169
+ 'spectrum-Textfield-icon'
170
+ ),
171
+ size: 'S'
172
+ });
173
+ }
170
174
 
171
175
  let clearButton = (
172
176
  <ClearButton
@@ -175,7 +179,7 @@ const SearchAutocompleteButton = React.forwardRef(function SearchAutocompleteBut
175
179
  props.onPress(e);
176
180
  }}
177
181
  preventFocus
178
- aria-label={formatMessage('clear')}
182
+ aria-label={stringFormatter.format('clear')}
179
183
  excludeFromTabOrder
180
184
  UNSAFE_className={
181
185
  classNames(
@@ -199,6 +203,7 @@ const SearchAutocompleteButton = React.forwardRef(function SearchAutocompleteBut
199
203
  });
200
204
 
201
205
  let {hoverProps, isHovered} = useHover({});
206
+ let {isFocused, isFocusVisible, focusProps} = useFocusRing();
202
207
  let {buttonProps} = useButton({
203
208
  ...props,
204
209
  'aria-labelledby': [
@@ -211,88 +216,88 @@ const SearchAutocompleteButton = React.forwardRef(function SearchAutocompleteBut
211
216
  }, ref);
212
217
 
213
218
  return (
214
- <FocusRing
215
- focusClass={classNames(styles, 'is-focused')}
216
- focusRingClass={classNames(styles, 'focus-ring')}>
219
+ <div
220
+ {...mergeProps(hoverProps, focusProps, buttonProps)}
221
+ aria-haspopup="dialog"
222
+ ref={ref as RefObject<HTMLDivElement>}
223
+ style={{...style, outline: 'none'}}
224
+ className={
225
+ classNames(
226
+ styles,
227
+ 'spectrum-InputGroup',
228
+ {
229
+ 'spectrum-InputGroup--quiet': isQuiet,
230
+ 'is-disabled': isDisabled,
231
+ 'spectrum-InputGroup--invalid': validationState === 'invalid',
232
+ 'is-hovered': isHovered,
233
+ 'is-focused': isFocused,
234
+ 'focus-ring': isFocusVisible
235
+ },
236
+ classNames(
237
+ searchAutocompleteStyles,
238
+ 'mobile-searchautocomplete'
239
+ ),
240
+ className
241
+ )
242
+ }>
217
243
  <div
218
- {...mergeProps(hoverProps, buttonProps)}
219
- aria-haspopup="dialog"
220
- ref={ref as RefObject<HTMLDivElement>}
221
- style={{...style, outline: 'none'}}
222
244
  className={
223
245
  classNames(
224
- styles,
225
- 'spectrum-InputGroup',
246
+ textfieldStyles,
247
+ 'spectrum-Textfield',
226
248
  {
227
- 'spectrum-InputGroup--quiet': isQuiet,
228
- 'is-disabled': isDisabled,
229
- 'spectrum-InputGroup--invalid': validationState === 'invalid',
230
- 'is-hovered': isHovered
249
+ 'spectrum-Textfield--invalid': validationState === 'invalid',
250
+ 'spectrum-Textfield--valid': validationState === 'valid',
251
+ 'spectrum-Textfield--quiet': isQuiet
231
252
  },
232
253
  classNames(
233
- searchAutocompleteStyles,
234
- 'mobile-searchautocomplete'
235
- ),
236
- className
254
+ searchStyles,
255
+ 'spectrum-Search',
256
+ {
257
+ 'is-disabled': isDisabled,
258
+ 'is-quiet': isQuiet,
259
+ 'spectrum-Search--invalid': validationState === 'invalid',
260
+ 'spectrum-Search--valid': validationState === 'valid'
261
+ }
262
+ )
237
263
  )
238
264
  }>
239
265
  <div
240
266
  className={
241
267
  classNames(
242
268
  textfieldStyles,
243
- 'spectrum-Textfield',
269
+ 'spectrum-Textfield-input',
244
270
  {
245
- 'spectrum-Textfield--invalid': validationState === 'invalid',
246
- 'spectrum-Textfield--valid': validationState === 'valid',
247
- 'spectrum-Textfield--quiet': isQuiet
271
+ 'spectrum-Textfield-inputIcon': !!icon,
272
+ 'is-hovered': isHovered,
273
+ 'is-placeholder': isPlaceholder,
274
+ 'is-disabled': isDisabled,
275
+ 'is-quiet': isQuiet,
276
+ 'is-focused': isFocused,
277
+ 'focus-ring': isFocusVisible
248
278
  },
249
279
  classNames(
250
280
  searchStyles,
251
- 'spectrum-Search',
252
- {
253
- 'is-disabled': isDisabled,
254
- 'is-quiet': isQuiet,
255
- 'spectrum-Search--invalid': validationState === 'invalid',
256
- 'spectrum-Search--valid': validationState === 'valid'
257
- }
281
+ 'spectrum-Search-input'
258
282
  )
259
283
  )
260
284
  }>
261
- <div
285
+ {icon}
286
+ <span
287
+ id={valueId}
262
288
  className={
263
289
  classNames(
264
- textfieldStyles,
265
- 'spectrum-Textfield-input',
266
- 'spectrum-Textfield-inputIcon',
267
- {
268
- 'is-hovered': isHovered,
269
- 'is-placeholder': isPlaceholder,
270
- 'is-disabled': isDisabled,
271
- 'is-quiet': isQuiet
272
- },
273
- classNames(
274
- searchStyles,
275
- 'spectrum-Search-input'
276
- )
290
+ searchAutocompleteStyles,
291
+ 'mobile-value'
277
292
  )
278
293
  }>
279
- {icon}
280
- <span
281
- id={valueId}
282
- className={
283
- classNames(
284
- searchAutocompleteStyles,
285
- 'mobile-value'
286
- )
287
- }>
288
- {children}
289
- </span>
290
- </div>
291
- {validationState ? validation : null}
292
- {(inputValue !== '' || validationState != null) && !isReadOnly && clearButton}
294
+ {children}
295
+ </span>
293
296
  </div>
297
+ {validationState ? validation : null}
298
+ {(inputValue !== '' || validationState != null) && !isReadOnly && clearButton}
294
299
  </div>
295
- </FocusRing>
300
+ </div>
296
301
  );
297
302
  });
298
303
 
@@ -304,9 +309,14 @@ interface SearchAutocompleteTrayProps extends SpectrumSearchAutocompleteProps<un
304
309
  }
305
310
 
306
311
  function SearchAutocompleteTray(props: SearchAutocompleteTrayProps) {
312
+ let searchIcon = (
313
+ <Magnifier data-testid="searchicon" />
314
+ );
315
+
307
316
  let {
308
317
  // completionMode = 'suggest',
309
318
  state,
319
+ icon = searchIcon,
310
320
  isDisabled,
311
321
  validationState,
312
322
  label,
@@ -323,7 +333,7 @@ function SearchAutocompleteTray(props: SearchAutocompleteTrayProps) {
323
333
  let popoverRef = useRef<HTMLDivElement>();
324
334
  let listBoxRef = useRef<HTMLDivElement>();
325
335
  let layout = useListBoxLayout(state);
326
- let formatMessage = useMessageFormatter(intlMessages);
336
+ let stringFormatter = useLocalizedStringFormatter(intlMessages);
327
337
 
328
338
  let {inputProps, listBoxProps, labelProps, clearButtonProps} = useSearchAutocomplete(
329
339
  {
@@ -366,7 +376,7 @@ function SearchAutocompleteTray(props: SearchAutocompleteTrayProps) {
366
376
  <ClearButton
367
377
  {...clearButtonProps}
368
378
  preventFocus
369
- aria-label={formatMessage('clear')}
379
+ aria-label={stringFormatter.format('clear')}
370
380
  excludeFromTabOrder
371
381
  UNSAFE_className={
372
382
  classNames(
@@ -379,7 +389,7 @@ function SearchAutocompleteTray(props: SearchAutocompleteTrayProps) {
379
389
 
380
390
  let loadingCircle = (
381
391
  <ProgressCircle
382
- aria-label={formatMessage('loading')}
392
+ aria-label={stringFormatter.format('loading')}
383
393
  size="S"
384
394
  isIndeterminate
385
395
  UNSAFE_className={classNames(
@@ -450,17 +460,15 @@ function SearchAutocompleteTray(props: SearchAutocompleteTrayProps) {
450
460
  }
451
461
  };
452
462
 
453
- let searchIcon = (
454
- <Magnifier data-testid="searchicon" />
455
- );
456
-
457
- let icon = React.cloneElement(searchIcon, {
458
- UNSAFE_className: classNames(
459
- textfieldStyles,
460
- 'spectrum-Textfield-icon'
461
- ),
462
- size: 'S'
463
- });
463
+ if (icon) {
464
+ icon = React.cloneElement(icon, {
465
+ UNSAFE_className: classNames(
466
+ textfieldStyles,
467
+ 'spectrum-Textfield-icon'
468
+ ),
469
+ size: 'S'
470
+ });
471
+ }
464
472
 
465
473
  return (
466
474
  <FocusScope restoreFocus contain>
@@ -527,7 +535,7 @@ function SearchAutocompleteTray(props: SearchAutocompleteTrayProps) {
527
535
  shouldUseVirtualFocus
528
536
  renderEmptyState={() => loadingState !== 'loading' && (
529
537
  <span className={classNames(searchAutocompleteStyles, 'no-results')}>
530
- {formatMessage('noResults')}
538
+ {stringFormatter.format('noResults')}
531
539
  </span>
532
540
  )}
533
541
  UNSAFE_className={
@@ -24,21 +24,26 @@ import {MobileSearchAutocomplete} from './MobileSearchAutocomplete';
24
24
  import {Placement} from '@react-types/overlays';
25
25
  import {Popover} from '@react-spectrum/overlays';
26
26
  import {ProgressCircle} from '@react-spectrum/progress';
27
- import React, {forwardRef, InputHTMLAttributes, RefObject, useCallback, useEffect, useLayoutEffect, useRef, useState} from 'react';
27
+ import React, {forwardRef, InputHTMLAttributes, RefObject, useCallback, useEffect, useRef, useState} from 'react';
28
28
  import searchStyles from '@adobe/spectrum-css-temp/components/search/vars.css';
29
29
  import {SpectrumSearchAutocompleteProps} from '@react-types/autocomplete';
30
30
  import styles from '@adobe/spectrum-css-temp/components/inputgroup/vars.css';
31
31
  import {TextFieldBase} from '@react-spectrum/textfield';
32
32
  import textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.css';
33
33
  import {useComboBoxState} from '@react-stately/combobox';
34
- import {useFilter, useMessageFormatter} from '@react-aria/i18n';
34
+ import {useFilter, useLocalizedStringFormatter} from '@react-aria/i18n';
35
35
  import {useHover} from '@react-aria/interactions';
36
+ import {useLayoutEffect} from '@react-aria/utils';
36
37
  import {useProvider, useProviderProps} from '@react-spectrum/provider';
37
38
  import {useSearchAutocomplete} from '@react-aria/autocomplete';
38
39
 
39
40
  function SearchAutocomplete<T extends object>(props: SpectrumSearchAutocompleteProps<T>, ref: FocusableRef<HTMLElement>) {
40
41
  props = useProviderProps(props);
41
42
 
43
+ if (props.placeholder) {
44
+ console.warn('Placeholders are deprecated due to accessibility issues. Please use help text instead.');
45
+ }
46
+
42
47
  let isMobile = useIsMobileDevice();
43
48
  if (isMobile) {
44
49
  // menuTrigger=focus/manual don't apply to mobile searchwithin
@@ -61,7 +66,7 @@ const SearchAutocompleteBase = React.forwardRef(function SearchAutocompleteBase<
61
66
  onSubmit = () => {}
62
67
  } = props;
63
68
 
64
- let formatMessage = useMessageFormatter(intlMessages);
69
+ let stringFormatter = useLocalizedStringFormatter(intlMessages);
65
70
  let isAsync = loadingState != null;
66
71
  let popoverRef = useRef<DOMRefValue<HTMLDivElement>>();
67
72
  let unwrappedPopoverRef = useUnwrapDOMRef(popoverRef);
@@ -82,7 +87,7 @@ const SearchAutocompleteBase = React.forwardRef(function SearchAutocompleteBase<
82
87
  }
83
88
  );
84
89
  let layout = useListBoxLayout(state);
85
-
90
+
86
91
  let {inputProps, listBoxProps, labelProps, clearButtonProps} = useSearchAutocomplete(
87
92
  {
88
93
  ...props,
@@ -174,7 +179,7 @@ const SearchAutocompleteBase = React.forwardRef(function SearchAutocompleteBase<
174
179
  onLoadMore={onLoadMore}
175
180
  renderEmptyState={() => isAsync && (
176
181
  <span>
177
- {formatMessage('noResults')}
182
+ {stringFormatter.format('noResults')}
178
183
  </span>
179
184
  )} />
180
185
  <DismissButton onDismiss={() => state.close()} />
@@ -193,7 +198,12 @@ interface SearchAutocompleteInputProps extends SpectrumSearchAutocompleteProps<u
193
198
  }
194
199
 
195
200
  const SearchAutocompleteInput = React.forwardRef(function SearchAutocompleteInput(props: SearchAutocompleteInputProps, ref: RefObject<HTMLElement>) {
201
+ let searchIcon = (
202
+ <Magnifier data-testid="searchicon" />
203
+ );
204
+
196
205
  let {
206
+ icon = searchIcon,
197
207
  isQuiet,
198
208
  isDisabled,
199
209
  isReadOnly,
@@ -209,13 +219,13 @@ const SearchAutocompleteInput = React.forwardRef(function SearchAutocompleteInpu
209
219
  clearButtonProps
210
220
  } = props;
211
221
  let {hoverProps, isHovered} = useHover({});
212
- let formatMessage = useMessageFormatter(intlMessages);
222
+ let stringFormatter = useLocalizedStringFormatter(intlMessages);
213
223
  let timeout = useRef(null);
214
224
  let [showLoading, setShowLoading] = useState(false);
215
225
 
216
226
  let loadingCircle = (
217
227
  <ProgressCircle
218
- aria-label={formatMessage('loading')}
228
+ aria-label={stringFormatter.format('loading')}
219
229
  size="S"
220
230
  isIndeterminate
221
231
  UNSAFE_className={classNames(
@@ -228,10 +238,6 @@ const SearchAutocompleteInput = React.forwardRef(function SearchAutocompleteInpu
228
238
  )} />
229
239
  );
230
240
 
231
- let searchIcon = (
232
- <Magnifier data-testid="searchicon" />
233
- );
234
-
235
241
  let clearButton = (
236
242
  <ClearButton
237
243
  {...clearButtonProps}
@@ -319,7 +325,7 @@ const SearchAutocompleteInput = React.forwardRef(function SearchAutocompleteInpu
319
325
  validationState={validationState}
320
326
  isLoading={showLoading && (isOpen || menuTrigger === 'manual' || loadingState === 'loading')}
321
327
  loadingIndicator={loadingState != null && loadingCircle}
322
- icon={searchIcon}
328
+ icon={icon}
323
329
  wrapperChildren={(inputValue !== '' && !isReadOnly) && clearButton} />
324
330
  </div>
325
331
  </FocusRing>
package/src/index.ts CHANGED
@@ -9,8 +9,7 @@
9
9
  * OF ANY KIND, either express or implied. See the License for the specific language
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
-
13
12
  /// <reference types="css-module-types" />
14
-
15
- export * from './SearchAutocomplete';
13
+ export {SearchAutocomplete} from './SearchAutocomplete';
16
14
  export {Item, Section} from '@react-stately/collections';
15
+ export type {SpectrumSearchAutocompleteProps} from '@react-types/autocomplete';
package/dist/main.css.map DELETED
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["./packages/@react-spectrum/autocomplete/src/searchautocomplete.css","./node_modules/@adobe/spectrum-css-temp/components/search/index.css","./node_modules/@adobe/spectrum-css-temp/components/inputgroup/index.css","./node_modules/@adobe/spectrum-css-temp/components/inputgroup/skin.css","./node_modules/@adobe/spectrum-css-temp/components/textfield/index.css","./node_modules/@adobe/spectrum-css-temp/components/textfield/skin.css"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n.no-results {\n display: block;\n /*\n Renamed from padding-y to padding-height to fix docs issue where fallback var replaced this value\n (due to old spectrum-css postcss-custom-properties-custom-mapping plugin).\n */\n padding-top: var(--spectrum-selectlist-option-padding-height);\n padding-inline-start: var(--spectrum-selectlist-option-padding);\n font-size: var(--spectrum-selectlist-option-text-size);\n font-weight: var(--spectrum-selectlist-option-text-font-weight);\n font-style: italic;\n}\n\n.mobile-searchautocomplete {\n outline: none;\n}\n\n.mobile-input {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.mobile-value {\n vertical-align: middle;\n}\n\n.tray-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n outline: none;\n}\n\n.tray-textfield {\n margin: var(--spectrum-global-dimension-size-150);\n margin-bottom: var(--spectrum-global-dimension-size-50);\n flex-shrink: 0;\n width: initial !important;\n\n &.has-label {\n margin-top: var(--spectrum-global-dimension-size-50);\n }\n\n .tray-textfield-input {\n padding-inline-start: var(--spectrum-textfield-padding-x);\n }\n}\n\n.tray-listbox {\n width: 100%;\n flex: 1;\n}\n","/*\nCopyright 2019 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\n@import '../commons/index.css';\n\n/* override DNA variables to use ones that change in large scale instead of staying static */\n:root {\n --spectrum-search-padding-left: var(--spectrum-global-dimension-size-450);\n --spectrum-search-padding-right: var(--spectrum-global-dimension-size-350);\n --spectrum-search-quiet-padding-left: var(--spectrum-global-dimension-size-300);\n --spectrum-search-quiet-padding-right: var(--spectrum-global-dimension-size-350);\n}\n\n.spectrum-Search {\n display: inline-block;\n position: relative;\n\n .spectrum-ClearButton {\n position: absolute;\n inset-inline-end: 0;\n top: 0;\n }\n\n &.is-quiet .spectrum-Search-input {\n padding-inline-start: var(--spectrum-search-quiet-padding-left);\n padding-inline-end: var(--spectrum-search-quiet-padding-right);\n }\n\n &.spectrum-Search--invalid .spectrum-ClearButton {\n inset-inline-end: calc(var(--spectrum-icon-alert-medium-width) + var(--spectrum-textfield-padding-x));\n }\n\n &.spectrum-Search--valid .spectrum-ClearButton {\n inset-inline-end: calc(var(--spectrum-icon-checkmark-medium-width) + var(--spectrum-textfield-padding-x) / 2 + var(--spectrum-global-dimension-size-150));\n }\n\n /* Flip clear button and circle loader position so circle loader is to the left of the clear button */\n &.spectrum-Search--loadable .spectrum-ClearButton {\n inset-inline-end: 0\n }\n\n /* Flip clear button and circle loader position so circle loader is to the left of the clear button */\n &.spectrum-Search--loadable .spectrum-Search-circleLoader {\n inset-inline-end: calc(var(--spectrum-icon-checkmark-medium-width) + var(--spectrum-textfield-padding-x) / 2 + var(--spectrum-global-dimension-size-150));\n }\n\n /* Move validation icons so that they sit to the left of the clear button (for async loading combobox tray, same position as loading indicator) */\n &.spectrum-Search--loadable .spectrum-Search-validationIcon {\n inset-inline-end: calc(var(--spectrum-icon-checkmark-medium-width) + var(--spectrum-textfield-padding-x) / 2 + var(--spectrum-global-dimension-size-150));\n padding-inline-end: 0;\n }\n}\n\n.spectrum-Search-input {\n display: block;\n\n /* Correct the odd appearance of input[type=\"search\"] in Chrome and Safari.*/\n /* This gets overridden by .spectrum-Textfield */\n -webkit-appearance: none;\n\n /* Correct the outline for input[type=\"search\"] style in Safari. */\n outline-offset: -2px;\n\n text-indent: 0;\n\n /* Don't let long strings overlap the close icon */\n padding-inline-end: var(--spectrum-search-padding-right);\n\n /* Remove the inner padding and cancel buttons for input[type=\"search\"] in Chrome and Safari on macOS. */\n &::-webkit-search-cancel-button,\n &::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n .spectrum-Textfield.spectrum-Search--invalid & {\n padding-inline-end: calc(var(--spectrum-search-padding-right) + var(--spectrum-textfield-padding-x) + var(--spectrum-icon-alert-medium-width) + var(--spectrum-textfield-icon-margin-left));\n }\n\n .spectrum-Textfield.spectrum-Search--valid & {\n padding-inline-end: calc(var(--spectrum-search-padding-right) + var(--spectrum-textfield-padding-x) + var(--spectrum-icon-checkmark-medium-width) + var(--spectrum-textfield-icon-margin-left));\n }\n\n .spectrum-Textfield.spectrum-Search--loadable & {\n padding-inline-end: calc(var(--spectrum-search-padding-right) + var(--spectrum-textfield-padding-x) + var(--spectrum-icon-checkmark-medium-width) + var(--spectrum-textfield-icon-margin-left));\n }\n}\n\n","/*\nCopyright 2019 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\n@import '../commons/index.css';\n\n:root {\n /* Todo: move to DNA */\n --spectrum-combobox-quiet-fieldbutton-border-radius: 0;\n --spectrum-combobox-quiet-fieldbutton-padding-right: 0;\n --spectrum-combobox-quiet-fieldbutton-padding-left: var(--spectrum-global-dimension-size-130);\n --spectrum-combobox-validation-icon-right: var(--spectrum-global-dimension-size-100);\n --spectrum-datepicker-input-width: calc(var(--spectrum-global-dimension-size-1600) - 2 * var(--spectrum-padding));\n --spectrum-datepicker-datetime-input-width: calc(var(--spectrum-datepicker-input-width) + var(--spectrum-global-dimension-size-700) - var(--spectrum-global-dimension-static-font-size-100) / 2);\n --spectrum-datepicker-range-dash-margin-left: calc(-0.5 * var(--spectrum-global-dimension-static-font-size-100));\n --spectrum-datepicker-range-dash-padding-top: 0;\n --spectrum-datepicker-range-dash-line-height: calc(var(--spectrum-textfield-height) - var(--spectrum-global-dimension-size-100));\n\n --spectrum-combobox-button-width: var(--spectrum-global-dimension-size-400);\n}\n\n.spectrum-InputGroup {\n position: relative;\n display: inline-flex;\n flex-direction: row;\n flex-wrap: nowrap;\n min-width: calc(2.5 * var(--spectrum-dropdown-height));\n border-radius: var(--spectrum-border-radius);\n\n .spectrum-FieldButton {\n padding: 0;\n inline-size: var(--spectrum-combobox-button-width);\n border-start-start-radius: var(--spectrum-combobox-fieldbutton-border-top-left-radius);\n border-end-start-radius: var(--spectrum-combobox-fieldbutton-border-bottom-left-radius);\n border-width: 1px;\n flex-shrink: 0;\n }\n\n /* Quiet or invalid inputgroup field button should always have a border width. */\n &.is-disabled:not(.spectrum-InputGroup--invalid):not(.spectrum-InputGroup--quiet) {\n .spectrum-FieldButton {\n border-width: 0;\n }\n }\n\n .spectrum-InputGroup-field {\n .spectrum-InputGroup-input-validationIcon {\n padding-inline-end: 0;\n inset-inline-end: var(--spectrum-combobox-validation-icon-right);\n }\n\n .spectrum-InputGroup-input-circleLoader {\n padding-inline-end: 0;\n inset-inline-end: var(--spectrum-combobox-validation-icon-right);\n }\n }\n}\n\n.spectrum-InputGroup-field {\n flex: 1 1 auto;\n}\n\n.spectrum-InputGroup-input {\n border-start-end-radius: var(--spectrum-combobox-textfield-border-top-right-radius);\n border-end-end-radius: var(--spectrum-combobox-textfield-border-bottom-right-radius);\n border-inline-end-style: none;\n}\n\n.spectrum-InputGroup--quiet {\n border-radius: var(--spectrum-combobox-quiet-fieldbutton-border-radius);\n min-width: calc(2 * var(--spectrum-dropdown-height));\n\n .spectrum-FieldButton {\n inline-size: auto;\n position: relative;\n\n padding-inline-start: var(--spectrum-combobox-quiet-fieldbutton-padding-left);\n padding-inline-end: var(--spectrum-combobox-quiet-fieldbutton-padding-right);\n border-width: 0;\n border-bottom: var(--spectrum-textfield-quiet-affixed-border-size) solid;\n border-radius: var(--spectrum-combobox-quiet-fieldbutton-border-radius);\n\n /* More hitarea */\n &:after {\n content: '';\n position: absolute;\n block-size: 100%;\n inline-size: 10px;\n inset-inline-end: -10px;\n }\n }\n\n .spectrum-InputGroup-icon {\n inset-inline-end: 0;\n }\n\n &.is-disabled {\n .spectrum-FieldButton {\n border-bottom-width: 1px;\n }\n }\n\n .spectrum-InputGroup-field {\n .spectrum-InputGroup-input-validationIcon {\n padding-inline-end: 0;\n inset-inline-end: 0;\n }\n\n .spectrum-InputGroup-input-circleLoader {\n padding-inline-end: 0;\n inset-inline-end: var(--spectrum-global-dimension-size-10);\n }\n }\n}\n\n.spectrum-InputGroup-popover--quiet {\n /* Define this var so it can be read from JS */\n --spectrum-dropdown-quiet-offset: calc(var(--spectrum-dropdown-quiet-popover-offset-x) + var(--spectrum-popover-border-size));\n margin-inline-end: calc(var(--spectrum-dropdown-quiet-offset) * -1);\n}\n\n.spectrum-Datepicker--range {\n border-radius: var(--spectrum-border-radius);\n /* Input Group */\n &.spectrum-InputGroup--quiet {\n border-radius: var(--spectrum-combobox-quiet-fieldbutton-border-radius);\n .spectrum-FieldButton {\n border-radius: var(--spectrum-combobox-quiet-fieldbutton-border-radius);\n }\n }\n /* Datetime Range */\n &.spectrum-Datepicker--datetimeRange {\n /* Inputs */\n .spectrum-InputGroup-field {\n width: var(--spectrum-datepicker-datetime-input-width);\n min-width: var(--spectrum-datepicker-datetime-input-width);\n }\n }\n /* Inputs */\n .spectrum-InputGroup-field {\n width: var(--spectrum-datepicker-input-width);\n min-width: var(--spectrum-datepicker-input-width);\n flex: initial;\n }\n .spectrum-Datepicker-startField {\n .spectrum-InputGroup-field {\n border-inline-end: 0;\n padding-inline-end: var(--spectrum-padding);\n }\n\n svg {\n display: none;\n }\n }\n .spectrum-Datepicker-endField {\n .spectrum-InputGroup-input {\n flex: 1;\n border-inline-start: 0;\n border-radius: 0;\n padding-inline-start: var(--spectrum-padding);\n }\n }\n /* Em dash */\n .spectrum-Datepicker--rangeDash {\n line-height: var(--spectrum-datepicker-range-dash-line-height);\n padding-top: var(--spectrum-datepicker-range-dash-padding-top);\n flex: initial;\n width: 0;\n z-index: 1;\n &:before {\n content: '–';\n display: inline-block;\n margin: 0 var(--spectrum-datepicker-range-dash-margin-left);\n overflow: hidden;\n text-align: center;\n vertical-align: middle;\n width: var(--spectrum-global-dimension-static-font-size-100);\n }\n }\n /* Focus ring */\n &.is-focused {\n .spectrum-Datepicker-focusRing {\n position: absolute;\n border-radius: var(--spectrum-border-radius);\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n pointer-events: none;\n }\n }\n &.spectrum-InputGroup--quiet {\n &.is-focused {\n .spectrum-Datepicker-focusRing {\n border-radius: var(--spectrum-combobox-quiet-fieldbutton-border-radius);\n top: auto;\n }\n }\n .spectrum-Datepicker--rangeDash {\n &:before {\n margin-inline-start: var(--spectrum-datepicker-range-dash-margin-left);\n }\n }\n }\n}\n","/*\nCopyright 2019 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\n.spectrum-InputGroup {\n &.is-focused {\n &:not(.spectrum-InputGroup--invalid):not(.is-disabled) {\n .spectrum-InputGroup-input {\n border-color: var(--spectrum-textfield-border-color-key-focus);\n }\n\n .spectrum-FieldButton {\n border-color: var(--spectrum-textfield-border-color-key-focus);\n }\n }\n }\n\n &:hover {\n &:not(.spectrum-InputGroup--invalid):not(.is-focused):not(.is-disabled) {\n .spectrum-InputGroup-input {\n border-color: var(--spectrum-textfield-border-color-hover);\n }\n\n .spectrum-FieldButton {\n border-color: var(--spectrum-textfield-border-color-hover);\n }\n }\n }\n}\n\n.spectrum-InputGroup.is-focused {\n .spectrum-FieldButton,\n .spectrum-InputGroup-input {\n border-color: var(--spectrum-dropdown-border-color-key-focus);\n }\n\n &.spectrum-InputGroup--invalid {\n .spectrum-FieldButton,\n .spectrum-InputGroup-input {\n border-color: var(--spectrum-dropdown-border-color-error);\n }\n }\n}\n\n/* Only add the 2px ring for keyboard focus */\n.spectrum-InputGroup:focus-ring:not(.spectrum-InputGroup--quiet) {\n .spectrum-FieldButton {\n z-index: 1;\n }\n\n .spectrum-FieldButton,\n .spectrum-InputGroup-input {\n box-shadow: 0 0 0 1px var(--spectrum-dropdown-border-color-key-focus);\n }\n\n &.spectrum-InputGroup--invalid {\n .spectrum-FieldButton,\n .spectrum-InputGroup-input {\n box-shadow: 0 0 0 1px var(--spectrum-dropdown-border-color-error);\n }\n }\n}\n\n.spectrum-InputGroup--quiet {\n /*\n specifically for readonly inputgroups that aren't disabled since the button will have the disabled class\n but we don't want the border color to be the disabled quiet one\n */\n &:not(.is-disabled) {\n .spectrum-FieldButton {\n &:disabled,\n &:disabled:hover {\n border-color: var(--spectrum-textfield-quiet-border-color);\n }\n }\n }\n\n .spectrum-FieldButton {\n &,\n &:hover,\n &:focus,\n &:active,\n &.is-selected,\n &.spectrum-FieldButton--invalid {\n border-color: var(--spectrum-textfield-quiet-border-color);\n }\n\n &:disabled,\n &:disabled:hover {\n border-color: var(--spectrum-textfield-quiet-border-color-disabled);\n }\n }\n\n &:hover:not(.spectrum-InputGroup--invalid):not(.is-focused):not(.is-disabled) {\n .spectrum-FieldButton {\n border-color: var(--spectrum-textfield-quiet-border-color-hover);\n }\n }\n\n &.spectrum-InputGroup {\n &.spectrum-InputGroup--invalid {\n .spectrum-FieldButton,\n .spectrum-InputGroup-input {\n border-color: var(--spectrum-textfield-border-color-error);\n }\n }\n\n &.is-focused {\n .spectrum-FieldButton {\n border-color: var(--spectrum-textfield-quiet-border-color-key-focus);\n }\n\n &.spectrum-InputGroup--invalid {\n .spectrum-FieldButton {\n border-color: var(--spectrum-textfield-border-color-error);\n }\n }\n }\n\n &:focus-ring {\n .spectrum-InputGroup-input {\n box-shadow: 0 1px 0 var(--spectrum-textfield-quiet-border-color-key-focus);\n }\n\n .spectrum-FieldButton {\n box-shadow: 0 1px 0 var(--spectrum-textfield-quiet-border-color-key-focus);\n border-color: var(--spectrum-textfield-quiet-border-color-key-focus);\n }\n\n &.spectrum-InputGroup--invalid {\n .spectrum-InputGroup-input {\n box-shadow: 0 1px 0 var(--spectrum-textfield-border-color-error);\n }\n\n .spectrum-FieldButton {\n box-shadow: 0 1px 0 var(--spectrum-textfield-border-color-error);\n }\n }\n }\n }\n}\n\n.spectrum-Datepicker--range {\n &:focus-ring {\n .spectrum-InputGroup-input {\n box-shadow: none !important;\n }\n }\n\n &.is-disabled {\n .spectrum-Datepicker--rangeDash {\n color: var(--spectrum-textfield-text-color-disabled);\n }\n }\n\n /* Focus ring: When one of the inputs or the button has keyboard focus, render the focus ring border around the entire input group by styling an adjacent descendant element. */\n &:focus-ring {\n box-shadow: 0 0 0 1px var(--spectrum-dropdown-border-color-key-focus);\n\n &.spectrum-InputGroup--invalid {\n box-shadow: 0 0 0 1px var(--spectrum-dropdown-border-color-error);\n\n .spectrum-FieldButton {\n box-shadow: 0 0 0 1px var(--spectrum-dropdown-border-color-error);\n }\n }\n }\n\n &.spectrum-InputGroup--invalid {\n .spectrum-InputGroup-input {\n border-color: var(--spectrum-dropdown-border-color-error) !important;\n }\n\n /* Focus ring: When one of the inputs or the button has keyboard focus, render the focus ring border around the entire input group by styling an adjacent descendant element. */\n &:focus-ring {\n .spectrum-FieldButton {\n border-color: var(--spectrum-dropdown-border-color-error);\n box-shadow: 0 0 0 1px var(--spectrum-dropdown-border-color-error);\n }\n }\n .spectrum-FieldButton {\n border-color: var(--spectrum-dropdown-border-color-error);\n &.spectrum-FieldButton--invalid {\n &:focus-ring {\n border-color: var(--spectrum-dropdown-border-color-error);\n box-shadow: 0 0 0 1px var(--spectrum-dropdown-border-color-error);\n }\n }\n }\n }\n &.spectrum-InputGroup--quiet {\n &.is-focused {\n box-shadow: 0 1px 0 0 var(--spectrum-dropdown-border-color-key-focus);\n\n &.spectrum-InputGroup--invalid {\n .spectrum-FieldButton {\n box-shadow: none;\n border-color: var(--spectrum-dropdown-border-color-error);\n &.spectrum-FieldButton--invalid {\n &:focus-ring {\n box-shadow: 0 2px 0 0 var(--spectrum-dropdown-border-color-error);\n }\n }\n }\n &:focus-ring {\n box-shadow: 0 0 0 1px var(--spectrum-dropdown-border-color-error);\n }\n }\n }\n }\n}\n","/*\nCopyright 2019 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\n@import '../commons/index.css';\n\n:root {\n --spectrum-textfield-padding-top: 3px;\n --spectrum-textfield-padding-bottom: 5px;\n\n /* Todo fix in DNA */\n --spectrum-textfield-quiet-border-radius: 0;\n\n --spectrum-textfield-quiet-invalid-background-position: 100% 50%;\n\n --spectrum-textfield-multiline-height: auto;\n --spectrum-textfield-multiline-min-height: var(--spectrum-global-dimension-size-700);\n\n --spectrum-textfield-multiline-padding-x: var(--spectrum-textfield-padding-x);\n --spectrum-textfield-multiline-padding-top: var(--spectrum-textfield-padding-top);\n --spectrum-textfield-multiline-padding-bottom: var(--spectrum-textfield-padding-bottom);\n\n /* Todo: DNA uses incorrect font family \"Adobe Clean\" */;\n --spectrum-textfield-text-font-family-fixed: var(--spectrum-font-family-base);\n}\n\n.spectrum-Textfield {\n display: inline-flex;\n position: relative;\n min-width: var(--spectrum-textfield-min-width);\n width: var(--spectrum-component-single-line-width);\n\n &:not(.spectrum-Textfield--quiet).spectrum-Textfield--multiline .spectrum-Textfield-input:not(:disabled) {\n resize: vertical;\n }\n\n &.spectrum-Textfield--quiet.spectrum-Textfield--multiline .spectrum-Textfield-input {\n height: var(--spectrum-textfield-height);\n min-height: var(--spectrum-textfield-height);\n overflow-x: hidden;\n }\n}\n\n.spectrum-Textfield-input {\n /* box */\n box-sizing: border-box;\n border: var(--spectrum-textfield-border-size) solid;\n border-radius: var(--spectrum-textfield-border-radius);\n\n /* Apply padding by default to center text, giving consistency between input and textfield */\n padding: var(--spectrum-textfield-padding-top) var(--spectrum-textfield-padding-x) var(--spectrum-textfield-padding-bottom) calc(var(--spectrum-textfield-padding-x) - 1px);\n /* Use padding instead of text-indent because text-indent does not left align the text in Edge browser */\n text-indent: 0;\n\n inline-size: 100%;\n height: var(--spectrum-textfield-height);\n\n vertical-align: top; /* used to align them correctly in forms. */\n\n /* Remove the margin for input in Firefox and Safari. */\n margin: 0;\n\n /* Show the overflow for input in Edge. */\n overflow: visible;\n\n /* Change the input font styles in all browsers */\n font-family: var(--spectrum-textfield-text-font-family-fixed);\n font-size: var(--spectrum-textfield-text-size);\n line-height: var(--spectrum-textfield-text-line-height);\n text-overflow: ellipsis;\n\n transition: border-color var(--spectrum-global-animation-duration-100) ease-in-out,\n box-shadow var(--spectrum-global-animation-duration-100) ease-in-out;\n\n outline: none;\n\n -webkit-appearance: none;\n /*\n Removes the native spin buttons in Firefox; -moz-appearance: none results in spinners.\n This has to come after -webkit-appearance or it gets overridden (#214)\n Details: http://stackoverflow.com/questions/23372903/hide-spinner-in-input-number-firefox-29\n\n Sets the opacity to 1 as normalize.css sets an opacity to placeholders\n Details: https://github.com/csstools/normalize.css/blob/master/normalize.css#L297\n */\n -moz-appearance: textfield;\n\n &::placeholder,\n &.is-placeholder {\n font-weight: var(--spectrum-textfield-placeholder-text-font-weight);\n font-style: var(--spectrum-textfield-placeholder-text-font-style);\n font-synthesis: none;\n transition: color var(--spectrum-global-animation-duration-100) ease-in-out;\n opacity: 1;\n }\n\n /* added to work with Edge, note, it needs double ::\n * not single : which is what autoprefixer will add\n */\n &::-ms-input-placeholder {\n font-weight: var(--spectrum-textfield-placeholder-text-font-weight);\n font-style: var(--spectrum-textfield-placeholder-text-font-style);\n transition: color var(--spectrum-global-animation-duration-100) ease-in-out;\n opacity: 1;\n }\n\n /* placeholder gets clipped for synthetic italics, we rely on font-synthesis once\n * chrome supports it https://bugs.chromium.org/p/chromium/issues/detail?id=509989\n */\n &:lang(ja), &:lang(zh), &:lang(ko), &:lang(ar), &:lang(he) {\n &::placeholder,\n &.is-placeholder {\n font-style: normal;\n }\n &::-ms-input-placeholder { /* added to work with Edge, same as above */\n font-style: normal;\n }\n }\n\n &:hover {\n &::placeholder {\n font-weight: var(--spectrum-textfield-placeholder-text-font-weight);\n }\n }\n\n &:disabled {\n /* Disable the resize functionality when disabled */\n resize: none;\n\n /* The opacity must be set to 1 */\n opacity: 1;\n &::placeholder,\n &.is-placeholder {\n font-weight: var(--spectrum-textfield-placeholder-text-font-weight);\n }\n }\n\n /* Remove the native clear button in IE */\n /* http://stackoverflow.com/questions/14007655/remove-ie10s-clear-field-x-button-on-certain-inputs */\n &::-ms-clear {\n width: 0;\n height: 0;\n }\n\n /* removes the native spin buttons */\n /* http://stackoverflow.com/questions/23372903/hide-spinner-in-input-number-firefox-29 */\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n /* removes the red border that appears in Firefox */\n &:-moz-ui-invalid {\n box-shadow: none;\n }\n\n .spectrum-Textfield--multiline & {\n height: var(--spectrum-textfield-multiline-height);\n min-height: var(--spectrum-textfield-multiline-min-height);\n padding: var(--spectrum-textfield-multiline-padding-top) var(--spectrum-textfield-multiline-padding-x) var(--spectrum-textfield-multiline-padding-bottom) calc(var(--spectrum-textfield-multiline-padding-x) - 1px);\n\n /* Remove the default vertical scrollbar for textarea in IE. */\n overflow: auto;\n }\n\n .spectrum-Textfield--quiet & {\n border-radius: var(--spectrum-textfield-quiet-border-radius);\n border-width: 0 0 var(--spectrum-textfield-quiet-border-size) 0;\n\n /* removes the side padding to align the text properly */\n padding-inline-start: var(--spectrum-textfield-quiet-padding-x);\n padding-inline-end: var(--spectrum-textfield-quiet-padding-x);\n\n /* Treat all quiet inputs and textareas the same */\n resize: none;\n overflow-y: hidden;\n }\n\n .spectrum-Textfield--valid & {\n padding-inline-end: calc(var(--spectrum-textfield-padding-x) + var(--spectrum-icon-checkmark-medium-width) + var(--spectrum-textfield-icon-margin-left));\n }\n\n .spectrum-Textfield--invalid & {\n padding-inline-end: calc(var(--spectrum-textfield-padding-x) + var(--spectrum-icon-alert-medium-width) + var(--spectrum-textfield-icon-margin-left));\n }\n\n .spectrum-Textfield--loadable & {\n padding-inline-end: calc(var(--spectrum-textfield-padding-x) + var(--spectrum-icon-alert-medium-width) + var(--spectrum-textfield-icon-margin-left));\n }\n}\n\n.spectrum-Textfield-validationIcon {\n /* TODO: Confirm if this is ok for the validation icon sizing\n Note that the sizes are a bit different when compared with old background icons(more noticable for checkmark)\n */\n position: absolute;\n padding-inline-end: calc(var(--spectrum-textfield-padding-x, var(--spectrum-global-dimension-size-150)) / 2);\n pointer-events: all;\n transition: color var(--spectrum-global-animation-duration-100) ease-in-out;\n\n .spectrum-Textfield--quiet & {\n padding-inline-end: 0;\n }\n}\n\n.spectrum-Textfield--invalid .spectrum-Textfield-validationIcon {\n width: var(--spectrum-icon-alert-medium-width);\n height: var(--spectrum-icon-alert-medium-height);\n top: calc(calc(var(--spectrum-textfield-icon-frame) / 2) - calc(var(--spectrum-icon-alert-medium-height) / 2));\n inset-inline-end: calc(calc(var(--spectrum-textfield-icon-frame) / 2) - calc(var(--spectrum-icon-alert-medium-width) / 2));\n}\n.spectrum-Textfield--valid .spectrum-Textfield-validationIcon {\n width: var(--spectrum-icon-checkmark-medium-width);\n height: var(--spectrum-icon-checkmark-medium-height);\n top: calc(calc(var(--spectrum-textfield-icon-frame) / 2) - calc(var(--spectrum-icon-checkmark-medium-height) / 2));\n inset-inline-end: var(--spectrum-global-dimension-size-150);\n}\n\n/* styles the left icon for textfield, assumes usage of workflow icon sizing (18px by 18px) */\n.spectrum-Textfield-icon {\n display: block;\n position: absolute;\n height: var(--spectrum-icon-info-medium-height);\n width: var(--spectrum-icon-info-medium-width);\n /* This has a named variable in a future update of spectrum-css. */\n inset-inline-start: var(--spectrum-global-dimension-size-150);\n top: var(--spectrum-global-dimension-size-85);\n transition: fill var(--spectrum-global-animation-duration-100) ease-in-out;\n}\n\n/* styles the textfield properly if the left icon is provided */\n.spectrum-Textfield-inputIcon {\n /* Use padding instead of text-indent so long strings don't overlap the icon */\n /* These values have real names in a spectrum-css update, when we update, use those. */\n padding-inline-start: calc(\n var(--spectrum-global-dimension-size-150) +\n var(--spectrum-global-dimension-size-225) +\n var(--spectrum-global-dimension-size-65)\n );\n\n .spectrum-Textfield--quiet & {\n padding-inline-start: calc(var(--spectrum-global-dimension-size-100) + var(--spectrum-icon-info-medium-width));\n\n /* Since quiet button has no left padding, push the icon all the way to the left */\n & ~ .spectrum-Textfield-icon {\n inset-inline-start: 0;\n }\n }\n\n &.spectrum-Textfield--multiline {\n height: var(--spectrum-textfield-height);\n min-height: var(--spectrum-textfield-height);\n }\n}\n\n\n/* same positioning as invalid icon */\n.spectrum-Textfield--loadable .spectrum-Textfield-circleLoader {\n position: absolute;\n top: calc(calc(var(--spectrum-textfield-icon-frame) / 2) - calc(var(--spectrum-loader-circle-small-width) / 2));\n /* can't use padding right since it breaks the circle loader so add here */\n inset-inline-end: calc(calc(calc(var(--spectrum-textfield-icon-frame) / 2) - calc(var(--spectrum-icon-alert-medium-width) / 2)) + calc(var(--spectrum-textfield-padding-x, var(--spectrum-global-dimension-size-150)) / 2));\n\n .spectrum-Textfield--quiet& {\n padding-inline-end: 0;\n }\n}\n","/*\nCopyright 2019 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\n.spectrum-Textfield-input {\n background-color: var(--spectrum-textfield-background-color);\n border-color: var(--spectrum-textfield-border-color);\n color: var(--spectrum-textfield-text-color);\n\n &::placeholder,\n &.is-placeholder {\n color: var(--spectrum-textfield-placeholder-text-color);\n }\n\n &:hover {\n border-color: var(--spectrum-textfield-border-color-hover);\n box-shadow: none;\n\n &::placeholder,\n &.is-placeholder {\n color: var(--spectrum-textfield-placeholder-text-color-hover);\n }\n\n & ~ .spectrum-Textfield-icon {\n fill: var(--spectrum-textfield-icon-color-hover);\n }\n }\n\n &:active {\n background-color: var(--spectrum-textfield-background-color-down);\n border-color: var(--spectrum-textfield-border-color-down);\n color: var(--spectrum-textfield-text-color-down);\n\n &::placeholder,\n &.is-placeholder {\n color: var(--spectrum-textfield-placeholder-text-color-down);\n }\n\n & ~ .spectrum-Textfield-icon {\n fill: var(--spectrum-textfield-icon-color-down);\n }\n }\n\n &:focus,\n &.is-focused {\n border-color: var(--spectrum-textfield-border-color-down);\n }\n\n &:focus-ring {\n &:not(:active) {\n border-color: var(--spectrum-textfield-border-color-key-focus);\n box-shadow: 0 0 0 1px var(--spectrum-textfield-border-color-key-focus);\n }\n }\n\n &[disabled],\n &.is-disabled {\n background-color: var(--spectrum-textfield-background-color-disabled);\n border-color: var(--spectrum-textfield-border-color-disabled);\n color: var(--spectrum-textfield-text-color-disabled);\n\n /* For safari mobile browser */\n -webkit-text-fill-color: var(--spectrum-textfield-text-color-disabled);\n\n &::placeholder,\n &.is-placeholder {\n color: var(--spectrum-textfield-placeholder-text-color-disabled);\n }\n\n & ~ .spectrum-Textfield-icon {\n fill: var(--spectrum-textfield-icon-color-disabled);\n }\n }\n\n &.spectrum-Textfield--invalid {\n border-color: var(--spectrum-textfield-border-color-error);\n\n &:hover {\n border-color: var(--spectrum-textfield-border-color-error-hover);\n }\n\n &:active {\n border-color: var(--spectrum-textfield-border-color-error-down);\n }\n\n &:focus-ring { /* might break things due to pre-defined focus-ring */\n &:not(:active) {\n border-color: var(--spectrum-textfield-border-color-error);\n box-shadow: 0 0 0 1px var(--spectrum-textfield-border-color-error);\n }\n }\n }\n\n .spectrum-Textfield--quiet & {\n background-color: var(--spectrum-textfield-quiet-background-color);\n border-color: var(--spectrum-textfield-quiet-border-color);\n\n &:hover {\n border-color: var(--spectrum-textfield-quiet-border-color-hover);\n }\n\n &:active {\n border-color: var(--spectrum-textfield-quiet-border-color-down);\n }\n\n &:focus,\n &.is-focused {\n border-color: var(--spectrum-textfield-quiet-border-color-key-focus);\n }\n\n &:focus-ring {\n &:not(:active) {\n border-color: var(--spectrum-textfield-border-color-key-focus);\n box-shadow: 0 1px 0 var(--spectrum-textfield-border-color-key-focus);\n }\n }\n\n &:disabled,\n &.is-disabled {\n background-color: var(--spectrum-textfield-quiet-background-color-disabled);\n border-color: var(--spectrum-textfield-quiet-border-color-disabled);\n }\n }\n\n .spectrum-Textfield.spectrum-Textfield--invalid & {\n border-color: var(--spectrum-textfield-border-color-error);\n\n &:focus-ring { /* might break things due to pre-defined focus-ring */\n &:not(:active) {\n border-color: var(--spectrum-textfield-border-color-error);\n box-shadow: 0 0 0 1px var(--spectrum-textfield-border-color-error);\n }\n }\n }\n\n .spectrum-Textfield--quiet.spectrum-Textfield--invalid & {\n &:focus-ring { /* might break things due to pre-defined focus-ring */\n &:not(:active) {\n box-shadow: 0 1px 0 var(--spectrum-textfield-border-color-error);\n }\n }\n }\n\n}\n\n.spectrum-Textfield-icon {\n fill: var(--spectrum-textfield-icon-color);\n}\n\n.spectrum-Textfield-validationIcon {\n .spectrum-Textfield--valid & {\n fill: var(--spectrum-alert-success-icon-color);\n }\n\n .spectrum-Textfield--invalid & {\n fill: var(--spectrum-alert-error-icon-color);\n }\n}\n"],"names":[],"version":3,"file":"main.css.map"}