@deephaven/components 0.11.9-beta.0 → 0.11.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AutoCompleteInput.d.ts +3 -0
- package/dist/AutoCompleteInput.d.ts.map +1 -1
- package/dist/AutoCompleteInput.js +8 -4
- package/dist/AutoCompleteInput.js.map +1 -1
- package/dist/AutoResizeTextarea.d.ts +4 -1
- package/dist/AutoResizeTextarea.d.ts.map +1 -1
- package/dist/AutoResizeTextarea.js +8 -4
- package/dist/AutoResizeTextarea.js.map +1 -1
- package/dist/BasicModal.d.ts +1 -0
- package/dist/BasicModal.d.ts.map +1 -1
- package/dist/BasicModal.js +14 -7
- package/dist/BasicModal.js.map +1 -1
- package/dist/Button.d.ts +1 -1
- package/dist/ButtonGroup.d.ts +3 -0
- package/dist/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup.js +8 -4
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/CardFlip.d.ts +2 -1
- package/dist/CardFlip.d.ts.map +1 -1
- package/dist/CardFlip.js +4 -2
- package/dist/CardFlip.js.map +1 -1
- package/dist/Checkbox.d.ts +1 -0
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +8 -4
- package/dist/Checkbox.js.map +1 -1
- package/dist/Collapse.d.ts +3 -0
- package/dist/Collapse.d.ts.map +1 -1
- package/dist/Collapse.js +8 -4
- package/dist/Collapse.js.map +1 -1
- package/dist/ComboBox.d.ts +3 -0
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +10 -5
- package/dist/ComboBox.js.map +1 -1
- package/dist/CustomTimeSelect.d.ts +1 -0
- package/dist/CustomTimeSelect.d.ts.map +1 -1
- package/dist/CustomTimeSelect.js +6 -3
- package/dist/CustomTimeSelect.js.map +1 -1
- package/dist/DebouncedSearchInput.d.ts +2 -0
- package/dist/DebouncedSearchInput.d.ts.map +1 -1
- package/dist/DebouncedSearchInput.js +6 -3
- package/dist/DebouncedSearchInput.js.map +1 -1
- package/dist/DeephavenSpinner.d.ts +2 -1
- package/dist/DeephavenSpinner.d.ts.map +1 -1
- package/dist/DeephavenSpinner.js +4 -2
- package/dist/DeephavenSpinner.js.map +1 -1
- package/dist/DraggableItemList.d.ts +2 -0
- package/dist/DraggableItemList.d.ts.map +1 -1
- package/dist/DraggableItemList.js +6 -3
- package/dist/DraggableItemList.js.map +1 -1
- package/dist/HierarchicalCheckboxMenu.d.ts +1 -0
- package/dist/HierarchicalCheckboxMenu.d.ts.map +1 -1
- package/dist/HierarchicalCheckboxMenu.js +12 -6
- package/dist/HierarchicalCheckboxMenu.js.map +1 -1
- package/dist/ItemList.d.ts +2 -0
- package/dist/ItemList.d.ts.map +1 -1
- package/dist/ItemList.js +6 -3
- package/dist/ItemList.js.map +1 -1
- package/dist/ItemListItem.d.ts +2 -0
- package/dist/ItemListItem.d.ts.map +1 -1
- package/dist/ItemListItem.js +5 -2
- package/dist/ItemListItem.js.map +1 -1
- package/dist/LoadingOverlay.d.ts +2 -1
- package/dist/LoadingOverlay.d.ts.map +1 -1
- package/dist/LoadingOverlay.js +4 -2
- package/dist/LoadingOverlay.js.map +1 -1
- package/dist/LoadingSpinner.d.ts +2 -1
- package/dist/LoadingSpinner.d.ts.map +1 -1
- package/dist/LoadingSpinner.js +4 -2
- package/dist/LoadingSpinner.js.map +1 -1
- package/dist/MaskedInput.d.ts +1 -0
- package/dist/MaskedInput.d.ts.map +1 -1
- package/dist/MaskedInput.js +6 -3
- package/dist/MaskedInput.js.map +1 -1
- package/dist/Option.d.ts +2 -1
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +4 -2
- package/dist/Option.js.map +1 -1
- package/dist/RadioGroup.d.ts +1 -0
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +4 -2
- package/dist/RadioGroup.js.map +1 -1
- package/dist/SearchInput.d.ts +2 -0
- package/dist/SearchInput.d.ts.map +1 -1
- package/dist/SearchInput.js +6 -3
- package/dist/SearchInput.js.map +1 -1
- package/dist/Select.d.ts +2 -1
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +4 -2
- package/dist/Select.js.map +1 -1
- package/dist/SelectValueList.d.ts +2 -0
- package/dist/SelectValueList.d.ts.map +1 -1
- package/dist/SelectValueList.js +6 -3
- package/dist/SelectValueList.js.map +1 -1
- package/dist/SocketedButton.d.ts +1 -0
- package/dist/SocketedButton.d.ts.map +1 -1
- package/dist/SocketedButton.js +6 -3
- package/dist/SocketedButton.js.map +1 -1
- package/dist/TimeInput.d.ts +1 -0
- package/dist/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput.js +6 -3
- package/dist/TimeInput.js.map +1 -1
- package/dist/TimeSlider.d.ts +2 -1
- package/dist/TimeSlider.d.ts.map +1 -1
- package/dist/TimeSlider.js +18 -9
- package/dist/TimeSlider.js.map +1 -1
- package/dist/ToastNotification.d.ts +2 -1
- package/dist/ToastNotification.d.ts.map +1 -1
- package/dist/ToastNotification.js +4 -2
- package/dist/ToastNotification.js.map +1 -1
- package/dist/UISwitch.d.ts +3 -2
- package/dist/UISwitch.d.ts.map +1 -1
- package/dist/UISwitch.js +4 -2
- package/dist/UISwitch.js.map +1 -1
- package/dist/context-actions/ContextActions.d.ts +1 -0
- package/dist/context-actions/ContextActions.d.ts.map +1 -1
- package/dist/context-actions/ContextActions.js +5 -1
- package/dist/context-actions/ContextActions.js.map +1 -1
- package/dist/context-actions/ContextMenu.d.ts +2 -0
- package/dist/context-actions/ContextMenu.d.ts.map +1 -1
- package/dist/context-actions/ContextMenu.js +6 -3
- package/dist/context-actions/ContextMenu.js.map +1 -1
- package/dist/context-actions/ContextMenuItem.d.ts +1 -0
- package/dist/context-actions/ContextMenuItem.d.ts.map +1 -1
- package/dist/context-actions/ContextMenuItem.js +10 -5
- package/dist/context-actions/ContextMenuItem.js.map +1 -1
- package/dist/context-actions/ContextMenuRoot.d.ts +3 -1
- package/dist/context-actions/ContextMenuRoot.d.ts.map +1 -1
- package/dist/context-actions/ContextMenuRoot.js +5 -1
- package/dist/context-actions/ContextMenuRoot.js.map +1 -1
- package/dist/context-actions/GlobalContextActions.d.ts +1 -0
- package/dist/context-actions/GlobalContextActions.d.ts.map +1 -1
- package/dist/context-actions/GlobalContextActions.js +4 -2
- package/dist/context-actions/GlobalContextActions.js.map +1 -1
- package/dist/menu-actions/DropdownMenu.d.ts +2 -0
- package/dist/menu-actions/DropdownMenu.d.ts.map +1 -1
- package/dist/menu-actions/DropdownMenu.js +6 -3
- package/dist/menu-actions/DropdownMenu.js.map +1 -1
- package/dist/menu-actions/Menu.d.ts +2 -0
- package/dist/menu-actions/Menu.d.ts.map +1 -1
- package/dist/menu-actions/Menu.js +7 -2
- package/dist/menu-actions/Menu.js.map +1 -1
- package/dist/navigation/Menu.d.ts +2 -1
- package/dist/navigation/Menu.d.ts.map +1 -1
- package/dist/navigation/Menu.js +4 -2
- package/dist/navigation/Menu.js.map +1 -1
- package/dist/navigation/MenuItem.d.ts +2 -1
- package/dist/navigation/MenuItem.d.ts.map +1 -1
- package/dist/navigation/MenuItem.js +4 -2
- package/dist/navigation/MenuItem.js.map +1 -1
- package/dist/navigation/Page.d.ts +2 -1
- package/dist/navigation/Page.d.ts.map +1 -1
- package/dist/navigation/Page.js +4 -2
- package/dist/navigation/Page.js.map +1 -1
- package/dist/navigation/Stack.d.ts +2 -1
- package/dist/navigation/Stack.d.ts.map +1 -1
- package/dist/navigation/Stack.js +4 -2
- package/dist/navigation/Stack.js.map +1 -1
- package/dist/popper/Popper.d.ts +3 -0
- package/dist/popper/Popper.d.ts.map +1 -1
- package/dist/popper/Popper.js +9 -3
- package/dist/popper/Popper.js.map +1 -1
- package/dist/popper/Tooltip.d.ts +2 -0
- package/dist/popper/Tooltip.d.ts.map +1 -1
- package/dist/popper/Tooltip.js +6 -3
- package/dist/popper/Tooltip.js.map +1 -1
- package/package.json +8 -8
|
@@ -41,6 +41,7 @@ interface AutoCompleteInputProps {
|
|
|
41
41
|
spellCheck: boolean;
|
|
42
42
|
onEnter(): void;
|
|
43
43
|
noMatchText: string;
|
|
44
|
+
'data-testid'?: string;
|
|
44
45
|
}
|
|
45
46
|
interface AutoCompleteInputState {
|
|
46
47
|
title: string;
|
|
@@ -66,6 +67,7 @@ declare class AutoCompleteInput extends Component<AutoCompleteInputProps, AutoCo
|
|
|
66
67
|
spellCheck: PropTypes.Requireable<boolean>;
|
|
67
68
|
onEnter: PropTypes.Requireable<(...args: any[]) => any>;
|
|
68
69
|
noMatchText: PropTypes.Requireable<string>;
|
|
70
|
+
'data-testid': PropTypes.Requireable<string>;
|
|
69
71
|
};
|
|
70
72
|
static defaultProps: {
|
|
71
73
|
onChange(): void;
|
|
@@ -77,6 +79,7 @@ declare class AutoCompleteInput extends Component<AutoCompleteInputProps, AutoCo
|
|
|
77
79
|
spellCheck: boolean;
|
|
78
80
|
onEnter(): void;
|
|
79
81
|
noMatchText: string;
|
|
82
|
+
'data-testid': undefined;
|
|
80
83
|
};
|
|
81
84
|
static MENU_NAVIGATION_DIRECTION: typeof MENU_NAVIGATION_DIRECTION;
|
|
82
85
|
constructor(props: AutoCompleteInputProps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoCompleteInput.d.ts","sourceRoot":"","sources":["../src/AutoCompleteInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,OAAO,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,0BAA0B,CAAC;AAIlC,aAAK,yBAAyB;IAC5B,EAAE,OAAO;IACT,IAAI,SAAS;CACd;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,IAAI,IAAI,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AutoCompleteInput.d.ts","sourceRoot":"","sources":["../src/AutoCompleteInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -492,7 +492,8 @@ class AutoCompleteInput extends Component {
|
|
|
492
492
|
disabled,
|
|
493
493
|
className,
|
|
494
494
|
defaultTitle,
|
|
495
|
-
spellCheck
|
|
495
|
+
spellCheck,
|
|
496
|
+
'data-testid': dataTestId
|
|
496
497
|
} = this.props;
|
|
497
498
|
var {
|
|
498
499
|
title,
|
|
@@ -516,7 +517,8 @@ class AutoCompleteInput extends Component {
|
|
|
516
517
|
onClick: this.handleInputClick,
|
|
517
518
|
onBlur: this.handleInputBlur,
|
|
518
519
|
onKeyDown: this.handleInputKeyDown,
|
|
519
|
-
spellCheck: spellCheck
|
|
520
|
+
spellCheck: spellCheck,
|
|
521
|
+
"data-testid": dataTestId
|
|
520
522
|
}), /*#__PURE__*/React.createElement(Popper, {
|
|
521
523
|
ref: this.popper,
|
|
522
524
|
options: popperOptions,
|
|
@@ -541,7 +543,8 @@ _defineProperty(AutoCompleteInput, "propTypes", {
|
|
|
541
543
|
defaultTitle: PropTypes.string,
|
|
542
544
|
spellCheck: PropTypes.bool,
|
|
543
545
|
onEnter: PropTypes.func,
|
|
544
|
-
noMatchText: PropTypes.string
|
|
546
|
+
noMatchText: PropTypes.string,
|
|
547
|
+
'data-testid': PropTypes.string
|
|
545
548
|
});
|
|
546
549
|
|
|
547
550
|
_defineProperty(AutoCompleteInput, "defaultProps", {
|
|
@@ -558,7 +561,8 @@ _defineProperty(AutoCompleteInput, "defaultProps", {
|
|
|
558
561
|
onEnter() {// no-op
|
|
559
562
|
},
|
|
560
563
|
|
|
561
|
-
noMatchText: 'No matching items found'
|
|
564
|
+
noMatchText: 'No matching items found',
|
|
565
|
+
'data-testid': undefined
|
|
562
566
|
});
|
|
563
567
|
|
|
564
568
|
_defineProperty(AutoCompleteInput, "MENU_NAVIGATION_DIRECTION", MENU_NAVIGATION_DIRECTION);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/AutoCompleteInput.tsx"],"names":["React","Component","PropTypes","memoize","classNames","debounce","Popper","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","constructor","props","options","input","filter","option","title","toLowerCase","indexOf","popperOptions","placement","modifiers","preventOverflow","enabled","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","invalid","handleMenuKeyDown","bind","handleMenuBlur","handleInputChange","handleInputKeyDown","handleInputBlur","handelInputFocus","handleInputClick","updateInputValue","handleOptionClick","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","menuContainer","setInputWidth","current","setState","getBoundingClientRect","width","getValueAndValidate","value","isValid","result","length","processFilterChange","fireOnChange","onChange","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","resetValue","handleResize","event","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","openMenu","target","relatedTarget","Element","element","contains","window","requestAnimationFrame","show","focusInput","hide","index","children","item","scrollIntoView","behavior","block","renderMenuElement","renderOptions","noMatchText","map","renderOption","render","inputPlaceholder","disabled","className","defaultTitle","spellCheck","arrayOf","shape","string","isRequired","func","bool"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,OAAP,MAAoB,UAApB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,QAAP,MAAqB,iBAArB;SAESC,M;;AAIT,IAAMC,cAAc,GAAG,GAAvB;IAEKC,yB;;WAAAA,yB;AAAAA,EAAAA,yB;AAAAA,EAAAA,yB;GAAAA,yB,KAAAA,yB;;AAiCL,MAAMC,iBAAN,SAAgCR,SAAhC,CAGE;AAqCAS,EAAAA,WAAW,CAACC,KAAD,EAAgC;AACzC,UAAMA,KAAN;;AADyC;;AAAA;;AAAA;;AAAA;;AAAA,sDA4DhBR,OAAO,CAChC,CAACS,OAAD,EAAgCC,KAAhC,KACED,OAAO,CAACE,MAAR,EACE;AACAC,IAAAA,MAAM,IAAIA,MAAM,CAACC,KAAP,CAAaC,WAAb,GAA2BC,OAA3B,CAAmCL,KAAK,CAACI,WAAN,EAAnC,KAA2D,CAFvE,CAF8B,CA5DS;;AAGzC,QAAI;AAAEE,MAAAA;AAAF,QAAoB,KAAKR,KAA7B;AACAQ,IAAAA,aAAa;AACXC,MAAAA,SAAS,EAAE,YADA;AAEXC,MAAAA,SAAS,EAAE;AACTC,QAAAA,eAAe,EAAE;AAAEC,UAAAA,OAAO,EAAE;AAAX;AADR;AAFA,OAKRJ,aALQ,CAAb;AAQA,SAAKK,KAAL,GAAa;AACXR,MAAAA,KAAK,EAAE,EADI;AAEXS,MAAAA,eAAe,EAAE,EAFN;AAGXC,MAAAA,mBAAmB,EAAE,CAHV;AAIXC,MAAAA,UAAU,EAAE,KAJD;AAKXC,MAAAA,UAAU,EAAE,GALD;AAMXC,MAAAA,OAAO,EAAE,KANE;AAOXV,MAAAA;AAPW,KAAb;AAUA,SAAKW,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBC,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKC,cAAL,GAAsB,KAAKA,cAAL,CAAoBD,IAApB,CAAyB,IAAzB,CAAtB;AAEA,SAAKE,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBF,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKG,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBH,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKI,eAAL,GAAuB,KAAKA,eAAL,CAAqBJ,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKK,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBL,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKM,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBN,IAAtB,CAA2B,IAA3B,CAAxB;AAEA,SAAKO,gBAAL,GAAwBjC,QAAQ,CAAC,KAAKiC,gBAAN,EAAwB/B,cAAxB,CAAhC;AAEA,SAAKgC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBR,IAAvB,CAA4B,IAA5B,CAAzB;AAEA,SAAKS,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBT,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKU,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBV,IAAtB,CAA2B,IAA3B,CAAxB;AAEA,SAAKW,MAAL,gBAAc1C,KAAK,CAAC2C,SAAN,EAAd;AACA,SAAKC,WAAL,gBAAmB5C,KAAK,CAAC2C,SAAN,EAAnB;AACA,SAAKE,aAAL,gBAAqB7C,KAAK,CAAC2C,SAAN,EAArB;AACA,SAAK9B,KAAL,gBAAab,KAAK,CAAC2C,SAAN,EAAb;AACD;;AAUDG,EAAAA,aAAa,GAAS;AACpB,QAAI,KAAKF,WAAL,CAAiBG,OAArB,EAA8B;AAC5B,WAAKC,QAAL,CAAc;AACZpB,QAAAA,UAAU,EAAE,KAAKgB,WAAL,CAAiBG,OAAjB,CAAyBE,qBAAzB,GAAiDC;AADjD,OAAd;AAGD;AACF;;AAUD;AACAC,EAAAA,mBAAmB,CAACnC,KAAD,EAAqD;AACtE,QAAI,CAACA,KAAL,EAAY;AACV,WAAKgC,QAAL,CAAc;AAAEnB,QAAAA,OAAO,EAAE;AAAX,OAAd;AACA,aAAO;AAAEuB,QAAAA,KAAK,EAAEpC,KAAT;AAAgBqC,QAAAA,OAAO,EAAE;AAAzB,OAAP;AACD,KAJqE,CAMtE;;;AACA,QAAM;AAAEzC,MAAAA;AAAF,QAAc,KAAKD,KAAzB;AACA,QAAM2C,MAAM,GAAG1C,OAAO,CAACE,MAAR,CACbC,MAAM,IAAIA,MAAM,CAACC,KAAP,CAAaC,WAAb,OAA+BD,KAAK,CAACC,WAAN,EAD5B,CAAf;;AAGA,QAAIqC,MAAM,CAACC,MAAP,GAAgB,CAApB,EAAuB;AACrB,WAAKP,QAAL,CAAc;AAAEnB,QAAAA,OAAO,EAAE;AAAX,OAAd;AACA,aAAO;AAAEuB,QAAAA,KAAK,EAAEpC,KAAT;AAAgBqC,QAAAA,OAAO,EAAE;AAAzB,OAAP;AACD;;AAED,SAAKL,QAAL,CAAc;AAAEnB,MAAAA,OAAO,EAAE;AAAX,KAAd;AACA,WAAO;AAAEuB,MAAAA,KAAK,EAAEE,MAAM,CAAC,CAAD,CAAN,CAAUF,KAAnB;AAA0BC,MAAAA,OAAO,EAAE;AAAnC,KAAP;AACD,GA5HD,CA8HA;;;AACAf,EAAAA,gBAAgB,CAACtB,KAAD,EAAsB;AACpC,QAAM;AAAEW,MAAAA;AAAF,QAAiB,KAAKH,KAA5B;AACA,QAAM;AAAE4B,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAAqB,KAAKF,mBAAL,CAAyBnC,KAAzB,CAA3B;AACA,QAAIW,UAAJ,EAAgB,KAAK6B,mBAAL,CAAyBxC,KAAzB;AAChB,SAAKyC,YAAL,CAAkBL,KAAlB,EAAyBC,OAAzB;AACD;;AAEDI,EAAAA,YAAY,CAACL,KAAD,EAAsC;AAAA,QAAtBC,OAAsB,uEAAZ,IAAY;AAChD,QAAM;AAAEK,MAAAA;AAAF,QAAe,KAAK/C,KAA1B;AACA+C,IAAAA,QAAQ,CAACN,KAAD,EAAQC,OAAR,CAAR;AACD;;AAEDG,EAAAA,mBAAmB,CAAC1C,MAAD,EAAuB;AAAA;;AACxC,QAAM;AAAEF,MAAAA;AAAF,QAAc,KAAKD,KAAzB;AACA,QAAM;AAAEgB,MAAAA;AAAF,QAAiB,KAAKH,KAA5B;AACA,QAAMC,eAAe,GAAGX,MAAM,GAC1B,KAAK6C,wBAAL,CAA8B/C,OAA9B,EAAuCE,MAAvC,CAD0B,GAE1BF,OAFJ;AAGA,QAAMgD,YAAY,GAChBnC,eAAe,CAAC8B,MAAhB,KAA2B,CAA3B,IAAgC9B,eAAe,CAAC,CAAD,CAAf,CAAmBT,KAAnB,KAA6BF,MAD/D;AAEA,SAAKkC,QAAL,CAAc;AACZvB,MAAAA,eADY;AAEZC,MAAAA,mBAAmB,EAAE;AAFT,KAAd;;AAIA,QAAIkC,YAAY,IAAIjC,UAApB,EAAgC;AAC9B,WAAKkC,SAAL;AACA;AACD;;AACD,iCAAKnB,MAAL,CAAYK,OAAZ,8EAAqBe,cAArB,GAhBwC,CAgBD;AACxC;;AAEDC,EAAAA,UAAU,GAAS;AACjB,SAAKf,QAAL,CAAc;AAAEhC,MAAAA,KAAK,EAAE;AAAT,KAAd;AACA,SAAKyC,YAAL,CAAkB,EAAlB;AACD;;AAEDO,EAAAA,YAAY,GAAS;AACnB,SAAKlB,aAAL;AACD;;AAEDhB,EAAAA,iBAAiB,CAACmC,KAAD,EAAmC;AAAA;;AAClD,QAAM;AAAExC,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAA2C,KAAKF,KAAtD;AACA,QAAMT,MAAM,GAAGU,eAAe,CAACC,mBAAD,CAA9B;;AAEA,YAAQuC,KAAK,CAACC,GAAd;AACE,WAAK,OAAL;AACA,WAAK,YAAL;AACED,QAAAA,KAAK,CAACE,eAAN;AACAF,QAAAA,KAAK,CAACG,cAAN;;AACA,YAAIrD,MAAJ,EAAY;AACV,eAAKiC,QAAL,CAAc;AAAEhC,YAAAA,KAAK,EAAED,MAAM,CAACC,KAAhB;AAAuBa,YAAAA,OAAO,EAAE;AAAhC,WAAd;AACA,eAAK4B,YAAL,CAAkB1C,MAAM,CAACqC,KAAzB;AACD;;AACD,aAAKS,SAAL;AACA,oCAAKhD,KAAL,CAAWkC,OAAX,4EAAoBsB,KAApB;AACA;;AACF,WAAK,SAAL;AACEJ,QAAAA,KAAK,CAACE,eAAN;AACAF,QAAAA,KAAK,CAACG,cAAN;AACA,aAAKE,YAAL,CAAkB7D,iBAAiB,CAACD,yBAAlB,CAA4C+D,EAA9D;AACA;;AACF,WAAK,WAAL;AACEN,QAAAA,KAAK,CAACE,eAAN;AACAF,QAAAA,KAAK,CAACG,cAAN;AACA,aAAKE,YAAL,CAAkB7D,iBAAiB,CAACD,yBAAlB,CAA4CgE,IAA9D;AACA;;AACF,WAAK,KAAL;AACEP,QAAAA,KAAK,CAACE,eAAN;AACAF,QAAAA,KAAK,CAACG,cAAN;;AACA,YAAIH,KAAK,CAACQ,QAAV,EAAoB;AAClB,eAAKH,YAAL,CAAkB7D,iBAAiB,CAACD,yBAAlB,CAA4C+D,EAA9D;AACA;AACD;;AACD,aAAKD,YAAL,CAAkB7D,iBAAiB,CAACD,yBAAlB,CAA4CgE,IAA9D;AACA;;AACF,WAAK,QAAL;AACEP,QAAAA,KAAK,CAACG,cAAN;AACAH,QAAAA,KAAK,CAACE,eAAN;AACA,aAAKN,SAAL;AACA;;AACF;AACE;AArCJ;AAuCD;;AAEDS,EAAAA,YAAY,CAACI,SAAD,EAA6C;AACvD,QAAM;AAAEjD,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAA2C,KAAKF,KAAtD;AACA,QAAImD,sBAAsB,GAAGjD,mBAA7B;;AACA,QAAIgD,SAAS,KAAKjE,iBAAiB,CAACD,yBAAlB,CAA4C+D,EAA9D,EAAkE;AAChE,UAAI7C,mBAAmB,GAAG,CAA1B,EAA6B;AAC3BiD,QAAAA,sBAAsB,GACpB,CAACA,sBAAsB,GAAG,CAA1B,IAA+BlD,eAAe,CAAC8B,MADjD;AAEA,aAAKP,QAAL,CAAc;AACZtB,UAAAA,mBAAmB,EAAEiD;AADT,SAAd;AAGD,OAND,MAMO,IAAIjD,mBAAmB,KAAK,CAA5B,EAA+B;AACpCiD,QAAAA,sBAAsB,GAAGlD,eAAe,CAAC8B,MAAhB,GAAyB,CAAlD;AACA,aAAKP,QAAL,CAAc;AACZtB,UAAAA,mBAAmB,EAAEiD;AADT,SAAd;AAGD;AACF,KAbD,MAaO,IAAID,SAAS,KAAKjE,iBAAiB,CAACD,yBAAlB,CAA4CgE,IAA9D,EAAoE;AACzE,UAAI9C,mBAAmB,GAAGD,eAAe,CAAC8B,MAA1C,EAAkD;AAChDoB,QAAAA,sBAAsB,GACpB,CAACA,sBAAsB,GAAG,CAA1B,IAA+BlD,eAAe,CAAC8B,MADjD;AAEA,aAAKP,QAAL,CAAc;AACZtB,UAAAA,mBAAmB,EAAEiD;AADT,SAAd;AAGD;AACF;;AACD,SAAKC,oBAAL,CAA0BD,sBAA1B;AACD;;AAEDzC,EAAAA,kBAAkB,CAAC+B,KAAD,EAAmC;AACnD,QAAM;AAAEY,MAAAA;AAAF,QAAc,KAAKlE,KAAzB;AACA,QAAM;AAAEgB,MAAAA;AAAF,QAAiB,KAAKH,KAA5B;;AAEA,QAAIG,UAAJ,EAAgB;AACd,WAAKG,iBAAL,CAAuBmC,KAAvB;AACD,KAFD,MAEO,IAAIA,KAAK,CAACC,GAAN,KAAc,OAAlB,EAA2B;AAChCW,MAAAA,OAAO;AACR,KAFM,MAEA,IAAIZ,KAAK,CAACC,GAAN,KAAc,QAAlB,EAA4B;AACjC,WAAKH,UAAL;AACAE,MAAAA,KAAK,CAACG,cAAN;AACAH,MAAAA,KAAK,CAACE,eAAN;AACD,KAJM,MAIA,IACL,EACEF,KAAK,CAACC,GAAN,KAAc,YAAd,IACAD,KAAK,CAACC,GAAN,KAAc,WADd,IAEAD,KAAK,CAACC,GAAN,KAAc,KAFd,IAGAD,KAAK,CAACC,GAAN,KAAc,OAJhB,CADK,EAOL;AACA,WAAKY,QAAL;AACD;AACF;;AAED7C,EAAAA,iBAAiB,CAACgC,KAAD,EAAmD;AAClE,SAAKjB,QAAL,CAAc;AAAEhC,MAAAA,KAAK,EAAEiD,KAAK,CAACc,MAAN,CAAa3B;AAAtB,KAAd;AACA,SAAKd,gBAAL,CAAsB2B,KAAK,CAACc,MAAN,CAAa3B,KAAnC;AACD;;AAEDb,EAAAA,iBAAiB,CAACxB,MAAD,EAAmC;AAAA;;AAClD,SAAKiC,QAAL,CAAc;AAAEhC,MAAAA,KAAK,EAAED,MAAM,CAACC,KAAhB;AAAuBa,MAAAA,OAAO,EAAE;AAAhC,KAAd;AACA,SAAK4B,YAAL,CAAkB1C,MAAM,CAACqC,KAAzB;AACA,SAAKS,SAAL;AACA,iCAAKhD,KAAL,CAAWkC,OAAX,8EAAoBsB,KAApB;AACD;;AAEDjC,EAAAA,gBAAgB,GAAS;AACvB,QAAM;AAAET,MAAAA;AAAF,QAAiB,KAAKH,KAA5B;;AACA,QAAI,CAACG,UAAL,EAAiB;AACf,WAAKmD,QAAL;AACD;AACF;;AAEDzC,EAAAA,gBAAgB,GAAS;AACvB,QAAM;AAAEV,MAAAA;AAAF,QAAiB,KAAKH,KAA5B;;AACA,QAAI,CAACG,UAAL,EAAiB;AACf,WAAKmD,QAAL;AACD;AACF;;AAED3C,EAAAA,eAAe,CAAC8B,KAAD,EAAkD;AAAA;;AAC/D,QAAM;AAAEtC,MAAAA;AAAF,QAAiB,KAAKH,KAA5B;;AACA,QACEG,UAAU,IACVsC,KAAK,CAACe,aAAN,YAA+BC,OAD/B,6BAEA,KAAKvC,MAAL,CAAYK,OAFZ,kDAEA,sBAAqBmC,OAArB,CAA6BC,QAA7B,CAAsClB,KAAK,CAACe,aAA5C,CAHF,EAIE;AACA;AACD;;AACD,SAAKnB,SAAL,CAAe,KAAf;AACD;;AAED7B,EAAAA,cAAc,CAACiC,KAAD,EAAgD;AAAA;;AAC5D;AACA,QACEA,KAAK,CAACe,aAAN,KAAwB,KAAKnE,KAAL,CAAWkC,OAAnC,IACCkB,KAAK,CAACe,aAAN,YAA+BC,OAA/B,6BACC,KAAKvC,MAAL,CAAYK,OADb,kDACC,sBAAqBmC,OAArB,CAA6BC,QAA7B,CAAsClB,KAAK,CAACe,aAA5C,CAHJ,EAIE;AACA;AACD;;AACD,SAAKnB,SAAL,CAAe,KAAf;AACD;;AAEDrB,EAAAA,gBAAgB,GAAS;AAAA;;AACvB,iCAAK3B,KAAL,CAAWkC,OAAX,8EAAoBsB,KAApB;AACD;;AAED5B,EAAAA,gBAAgB,GAAS;AACvB,QAAM;AAAEd,MAAAA;AAAF,QAAiB,KAAKH,KAA5B;;AACA,QAAIG,UAAJ,EAAgB;AACd,WAAKqB,QAAL,CAAc;AAAErB,QAAAA,UAAU,EAAE,KAAd;AAAqBD,QAAAA,mBAAmB,EAAE;AAA1C,OAAd;AACD;AACF;;AAEDoD,EAAAA,QAAQ,GAAS;AACf,QAAM;AAAE9D,MAAAA;AAAF,QAAY,KAAKQ,KAAvB;AACA,SAAKgC,mBAAL,CAAyBxC,KAAzB;AACA,SAAK8B,aAAL;AACA,SAAKE,QAAL,CAAc;AAAErB,MAAAA,UAAU,EAAE;AAAd,KAAd,EAJe,CAMf;;AACAyD,IAAAA,MAAM,CAACC,qBAAP,CAA6B,MAAM;AAAA;;AACjC,oCAAK3C,MAAL,CAAYK,OAAZ,gFAAqBuC,IAArB;AACD,KAFD;AAGD;;AAEDzB,EAAAA,SAAS,GAA0B;AAAA;;AAAA,QAAzB0B,UAAyB,uEAAZ,IAAY;AACjC,SAAKvC,QAAL,CAAc;AAAErB,MAAAA,UAAU,EAAE,KAAd;AAAqBD,MAAAA,mBAAmB,EAAE;AAA1C,KAAd;;AACA,QAAI6D,UAAJ,EAAgB;AAAA;;AACd,mCAAK1E,KAAL,CAAWkC,OAAX,8EAAoBsB,KAApB;AACD;;AACD,kCAAK3B,MAAL,CAAYK,OAAZ,gFAAqByC,IAArB;AACD;;AAEDZ,EAAAA,oBAAoB,CAACa,KAAD,EAAsB;AACxC,QAAI,KAAK5C,aAAL,CAAmBE,OAAvB,EAAgC;AAAA;;AAC9B,oCAAKF,aAAL,CAAmBE,OAAnB,CAA2B2C,QAA3B,CAAoCC,IAApC,CAAyCF,KAAzC,iFAAiDG,cAAjD,CAAgE;AAC9DC,QAAAA,QAAQ,EAAE,QADoD;AAE9DC,QAAAA,KAAK,EAAE;AAFuD,OAAhE;AAID;AACF;;AAEDC,EAAAA,iBAAiB,GAAgB;AAC/B,QAAM;AAAEnE,MAAAA;AAAF,QAAiB,KAAKJ,KAA5B;AACA,wBACE;AACE,MAAA,SAAS,EAAEpB,UAAU,CAAC,aAAD,CADvB;AAEE,MAAA,GAAG,EAAE,KAAKyC,aAFZ;AAGE,MAAA,IAAI,EAAC,cAHP;AAIE,MAAA,SAAS,EAAE,KAAKf,iBAJlB;AAKE,MAAA,KAAK,EAAE;AAAEoB,QAAAA,KAAK,EAAEtB;AAAT,OALT;AAME,MAAA,MAAM,EAAE,KAAKI;AANf,OAQG,KAAKgE,aAAL,EARH,CADF;AAYD;;AAEDA,EAAAA,aAAa,GAAoB;AAC/B,QAAM;AAAEC,MAAAA;AAAF,QAAkB,KAAKtF,KAA7B;AACA,QAAM;AAAEK,MAAAA,KAAF;AAASS,MAAAA;AAAT,QAA6B,KAAKD,KAAxC;;AAEA,QAAIR,KAAK,IAAIS,eAAe,CAAC8B,MAAhB,KAA2B,CAAxC,EAA2C;AACzC,0BAAO;AAAK,QAAA,SAAS,EAAC;AAAf,SAA2B0C,WAA3B,CAAP;AACD;;AAED,WAAOxE,eAAe,CAACyE,GAAhB,CAAoB,CAACnF,MAAD,EAAS0E,KAAT,KACzB,KAAKU,YAAL,CAAkBpF,MAAlB,EAA0B0E,KAA1B,CADK,CAAP;AAGD;;AAEDU,EAAAA,YAAY,CAACpF,MAAD,EAA6B0E,KAA7B,EAAyD;AACnE,QAAM;AAAE/D,MAAAA;AAAF,QAA0B,KAAKF,KAArC;AACA,QAAM0C,GAAG,oBAAauB,KAAb,cAAsB1E,MAAM,CAACqC,KAA7B,CAAT;AACA,wBACE;AACE,MAAA,GAAG,EAAEc,GADP;AAEE,MAAA,IAAI,EAAC,QAFP;AAGE,MAAA,SAAS,EAAE9D,UAAU,CAAC,gBAAD,EAAmB;AACtC,2BAAmBsB,mBAAmB,KAAK+D;AADL,OAAnB,CAHvB;AAME,MAAA,OAAO,EAAE,MAAM,KAAKlD,iBAAL,CAAuBxB,MAAvB,CANjB;AAOE,MAAA,OAAO,EAAE,MAAM,KAAKiC,QAAL,CAAc;AAAEtB,QAAAA,mBAAmB,EAAE+D;AAAvB,OAAd;AAPjB,OASG1E,MAAM,CAACC,KATV,CADF;AAaD;;AAEDoF,EAAAA,MAAM,GAAgB;AACpB,QAAM;AACJxF,MAAAA,OADI;AAEJyF,MAAAA,gBAFI;AAGJC,MAAAA,QAHI;AAIJC,MAAAA,SAJI;AAKJC,MAAAA,YALI;AAMJC,MAAAA;AANI,QAOF,KAAK9F,KAPT;AAQA,QAAM;AAAEK,MAAAA,KAAF;AAASW,MAAAA,UAAT;AAAqBR,MAAAA,aAArB;AAAoCU,MAAAA;AAApC,QAAgD,KAAKL,KAA3D;AAEA,wBACE;AAAK,MAAA,SAAS,EAAC,eAAf;AAA+B,MAAA,GAAG,EAAE,KAAKoB;AAAzC,oBACE;AACE,MAAA,KAAK,EAAE5B,KAAK,IAAIwF,YADlB;AAEE,MAAA,SAAS,EAAEpG,UAAU,CAAC,cAAD,EAAiBmG,SAAjB,EAA4B,WAA5B,EAAyC;AAC5D,sBAAc1E,OAAO,IAAI,CAACF;AADkC,OAAzC,CAFvB;AAKE,MAAA,GAAG,EAAE,KAAKd,KALZ;AAME,MAAA,QAAQ,EAAE,KAAKoB,iBANjB;AAOE,MAAA,WAAW,EAAEoE,gBAAgB,IAAIzF,OAAO,CAAC,CAAD,CAAP,CAAWI,KAP9C;AAQE,MAAA,QAAQ,EAAEsF,QARZ;AASE,MAAA,OAAO,EAAE,KAAKlE,gBAThB;AAUE,MAAA,OAAO,EAAE,KAAKC,gBAVhB;AAWE,MAAA,MAAM,EAAE,KAAKF,eAXf;AAYE,MAAA,SAAS,EAAE,KAAKD,kBAZlB;AAaE,MAAA,UAAU,EAAEuE;AAbd,MADF,eAgBE,oBAAC,MAAD;AACE,MAAA,GAAG,EAAE,KAAK/D,MADZ;AAEE,MAAA,OAAO,EAAEvB,aAFX;AAGE,MAAA,SAAS,EAAEf,UAAU,CAAC,gCAAD,CAHvB;AAIE,MAAA,SAAS,EAAE,KAAKoC,gBAJlB;AAKE,MAAA,QAAQ,EAAE,KAAKC;AALjB,OAOG,KAAKsD,iBAAL,EAPH,CAhBF,CADF;AA4BD;;AAxbD;;gBAHItF,iB,eAIe;AACjBG,EAAAA,OAAO,EAAEV,SAAS,CAACwG,OAAV,CACPxG,SAAS,CAACyG,KAAV,CAAgB;AACd3F,IAAAA,KAAK,EAAEd,SAAS,CAAC0G,MAAV,CAAiBC,UADV;AAEdzD,IAAAA,KAAK,EAAElD,SAAS,CAAC0G,MAAV,CAAiBC;AAFV,GAAhB,CADO,EAKPA,UANe;AAOjB1F,EAAAA,aAAa,EAAEjB,SAAS,CAACyG,KAAV,CAAgB,EAAhB,CAPE;AAQjBjD,EAAAA,QAAQ,EAAExD,SAAS,CAAC4G,IARH;AASjBT,EAAAA,gBAAgB,EAAEnG,SAAS,CAAC0G,MATX;AAUjBN,EAAAA,QAAQ,EAAEpG,SAAS,CAAC6G,IAVH;AAWjBR,EAAAA,SAAS,EAAErG,SAAS,CAAC0G,MAXJ;AAYjBJ,EAAAA,YAAY,EAAEtG,SAAS,CAAC0G,MAZP;AAajBH,EAAAA,UAAU,EAAEvG,SAAS,CAAC6G,IAbL;AAcjBlC,EAAAA,OAAO,EAAE3E,SAAS,CAAC4G,IAdF;AAejBb,EAAAA,WAAW,EAAE/F,SAAS,CAAC0G;AAfN,C;;gBAJfnG,iB,kBAsBkB;AACpBiD,EAAAA,QAAQ,GAAS,CACf;AACD,GAHmB;;AAIpB2C,EAAAA,gBAAgB,EAAE,EAJE;AAKpBC,EAAAA,QAAQ,EAAE,KALU;AAMpBC,EAAAA,SAAS,EAAE,EANS;AAOpBC,EAAAA,YAAY,EAAE,EAPM;AAQpBrF,EAAAA,aAAa,EAAE,IARK;AASpBsF,EAAAA,UAAU,EAAE,IATQ;;AAUpB5B,EAAAA,OAAO,GAAS,CACd;AACD,GAZmB;;AAapBoB,EAAAA,WAAW,EAAE;AAbO,C;;gBAtBlBxF,iB,+BAsC+BD,yB;;AAwZrC,eAAeC,iBAAf","sourcesContent":["/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { PopperOptions } from 'popper.js';\nimport { Popper } from './popper';\n\nimport './AutoCompleteInput.scss';\n\nconst DEBOUNCE_DELAY = 100;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ninterface AutoCompleteOption {\n title: string;\n value: string;\n}\n\ninterface AutoCompleteInputProps {\n options: AutoCompleteOption[];\n popperOptions: PopperOptions;\n onChange(value: string, isValid: boolean): void;\n inputPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultTitle: string;\n spellCheck: boolean;\n onEnter(): void;\n noMatchText: string;\n}\n\ninterface AutoCompleteInputState {\n title: string;\n filteredOptions: AutoCompleteOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n invalid: boolean;\n popperOptions: PopperOptions;\n}\n\nclass AutoCompleteInput extends Component<\n AutoCompleteInputProps,\n AutoCompleteInputState\n> {\n static propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ).isRequired,\n popperOptions: PropTypes.shape({}),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultTitle: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n noMatchText: PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n disabled: false,\n className: '',\n defaultTitle: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n noMatchText: 'No matching items found',\n };\n\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n constructor(props: AutoCompleteInputProps) {\n super(props);\n\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions,\n };\n\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n\n this.popper = React.createRef();\n this.cbContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n setInputWidth(): void {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n getCachedFilteredOptions = memoize(\n (options: AutoCompleteOption[], input: string) =>\n options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title: string): { value: string; isValid: boolean } {\n if (!title) {\n this.setState({ invalid: false });\n return { value: title, isValid: false };\n }\n\n // validate\n const { options } = this.props;\n const result = options.filter(\n option => option.title.toLowerCase() === title.toLowerCase()\n );\n if (result.length < 1) {\n this.setState({ invalid: true });\n return { value: title, isValid: false };\n }\n\n this.setState({ invalid: false });\n return { value: result[0].value, isValid: true };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title: string): void {\n const { menuIsOpen } = this.state;\n const { value, isValid } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n\n fireOnChange(value: string, isValid = true): void {\n const { onChange } = this.props;\n onChange(value, isValid);\n }\n\n processFilterChange(filter: string): void {\n const { options } = this.props;\n const { menuIsOpen } = this.state;\n const filteredOptions = filter\n ? this.getCachedFilteredOptions(options, filter)\n : options;\n const perfectMatch =\n filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n this.popper.current?.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue(): void {\n this.setState({ title: '' });\n this.fireOnChange('');\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n const option = filteredOptions[keyboardOptionIndex];\n\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option) {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n }\n this.closeMenu();\n this.input.current?.focus();\n break;\n case 'ArrowUp':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n case 'ArrowDown':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n if (event.shiftKey) {\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n }\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n\n navigateMenu(direction: MENU_NAVIGATION_DIRECTION): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n let newKeyboardOptionIndex = keyboardOptionIndex;\n if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP) {\n if (keyboardOptionIndex > 0) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex - 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = filteredOptions.length - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n } else if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN) {\n if (keyboardOptionIndex < filteredOptions.length) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex + 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n }\n\n handleInputKeyDown(event: React.KeyboardEvent): void {\n const { onEnter } = this.props;\n const { menuIsOpen } = this.state;\n\n if (menuIsOpen) {\n this.handleMenuKeyDown(event);\n } else if (event.key === 'Enter') {\n onEnter();\n } else if (event.key === 'Escape') {\n this.resetValue();\n event.preventDefault();\n event.stopPropagation();\n } else if (\n !(\n event.key === 'ArrowRight' ||\n event.key === 'ArrowLeft' ||\n event.key === 'Tab' ||\n event.key === 'Shift'\n )\n ) {\n this.openMenu();\n }\n }\n\n handleInputChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ title: event.target.value });\n this.updateInputValue(event.target.value);\n }\n\n handleOptionClick(option: AutoCompleteOption): void {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n this.closeMenu();\n this.input.current?.focus();\n }\n\n handelInputFocus(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputClick(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { menuIsOpen } = this.state;\n if (\n menuIsOpen &&\n event.relatedTarget instanceof Element &&\n this.popper.current?.element.contains(event.relatedTarget)\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuBlur(event: React.FocusEvent<HTMLDivElement>): void {\n // if blur event is caused by focusing on the input or focus on options don't close menu\n if (\n event.relatedTarget === this.input.current ||\n (event.relatedTarget instanceof Element &&\n this.popper.current?.element.contains(event.relatedTarget))\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuOpened(): void {\n this.input.current?.focus();\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n }\n }\n\n openMenu(): void {\n const { title } = this.state;\n this.processFilterChange(title);\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.popper.current?.show();\n });\n }\n\n closeMenu(focusInput = true): void {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n if (focusInput) {\n this.input.current?.focus();\n }\n this.popper.current?.hide();\n }\n\n scrollOptionIntoView(index: number): void {\n if (this.menuContainer.current) {\n this.menuContainer.current.children.item(index)?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { inputWidth } = this.state;\n return (\n <div\n className={classNames('aci-options')}\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n style={{ width: inputWidth }}\n onBlur={this.handleMenuBlur}\n >\n {this.renderOptions()}\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { noMatchText } = this.props;\n const { title, filteredOptions } = this.state;\n\n if (title && filteredOptions.length === 0) {\n return <div className=\"no-match\">{noMatchText}</div>;\n }\n\n return filteredOptions.map((option, index) =>\n this.renderOption(option, index)\n );\n }\n\n renderOption(option: AutoCompleteOption, index: number): JSX.Element {\n const { keyboardOptionIndex } = this.state;\n const key = `option-${index}-${option.value}`;\n return (\n <button\n key={key}\n type=\"button\"\n className={classNames('aci-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index,\n })}\n onClick={() => this.handleOptionClick(option)}\n onFocus={() => this.setState({ keyboardOptionIndex: index })}\n >\n {option.title}\n </button>\n );\n }\n\n render(): JSX.Element {\n const {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultTitle,\n spellCheck,\n } = this.props;\n const { title, menuIsOpen, popperOptions, invalid } = this.state;\n\n return (\n <div className=\"aci-container\" ref={this.cbContainer}>\n <input\n value={title || defaultTitle}\n className={classNames('form-control', className, 'aci-input', {\n 'is-invalid': invalid && !menuIsOpen,\n })}\n ref={this.input}\n onChange={this.handleInputChange}\n placeholder={inputPlaceholder || options[0].title}\n disabled={disabled}\n onFocus={this.handelInputFocus}\n onClick={this.handleInputClick}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n spellCheck={spellCheck}\n />\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('aci-options-popper interactive')}\n onEntered={this.handleMenuOpened}\n onExited={this.handleMenuExited}\n >\n {this.renderMenuElement()}\n </Popper>\n </div>\n );\n }\n}\n\nexport default AutoCompleteInput;\n"],"file":"AutoCompleteInput.js"}
|
|
1
|
+
{"version":3,"sources":["../src/AutoCompleteInput.tsx"],"names":["React","Component","PropTypes","memoize","classNames","debounce","Popper","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","constructor","props","options","input","filter","option","title","toLowerCase","indexOf","popperOptions","placement","modifiers","preventOverflow","enabled","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","invalid","handleMenuKeyDown","bind","handleMenuBlur","handleInputChange","handleInputKeyDown","handleInputBlur","handelInputFocus","handleInputClick","updateInputValue","handleOptionClick","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","menuContainer","setInputWidth","current","setState","getBoundingClientRect","width","getValueAndValidate","value","isValid","result","length","processFilterChange","fireOnChange","onChange","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","resetValue","handleResize","event","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","openMenu","target","relatedTarget","Element","element","contains","window","requestAnimationFrame","show","focusInput","hide","index","children","item","scrollIntoView","behavior","block","renderMenuElement","renderOptions","noMatchText","map","renderOption","render","inputPlaceholder","disabled","className","defaultTitle","spellCheck","dataTestId","arrayOf","shape","string","isRequired","func","bool","undefined"],"mappings":"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","sourcesContent":["/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { PopperOptions } from 'popper.js';\nimport { Popper } from './popper';\n\nimport './AutoCompleteInput.scss';\n\nconst DEBOUNCE_DELAY = 100;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ninterface AutoCompleteOption {\n title: string;\n value: string;\n}\n\ninterface AutoCompleteInputProps {\n options: AutoCompleteOption[];\n popperOptions: PopperOptions;\n onChange(value: string, isValid: boolean): void;\n inputPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultTitle: string;\n spellCheck: boolean;\n onEnter(): void;\n noMatchText: string;\n 'data-testid'?: string;\n}\n\ninterface AutoCompleteInputState {\n title: string;\n filteredOptions: AutoCompleteOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n invalid: boolean;\n popperOptions: PopperOptions;\n}\n\nclass AutoCompleteInput extends Component<\n AutoCompleteInputProps,\n AutoCompleteInputState\n> {\n static propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ).isRequired,\n popperOptions: PropTypes.shape({}),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultTitle: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n noMatchText: PropTypes.string,\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n disabled: false,\n className: '',\n defaultTitle: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n noMatchText: 'No matching items found',\n 'data-testid': undefined,\n };\n\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n constructor(props: AutoCompleteInputProps) {\n super(props);\n\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions,\n };\n\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n\n this.popper = React.createRef();\n this.cbContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n setInputWidth(): void {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n getCachedFilteredOptions = memoize(\n (options: AutoCompleteOption[], input: string) =>\n options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title: string): { value: string; isValid: boolean } {\n if (!title) {\n this.setState({ invalid: false });\n return { value: title, isValid: false };\n }\n\n // validate\n const { options } = this.props;\n const result = options.filter(\n option => option.title.toLowerCase() === title.toLowerCase()\n );\n if (result.length < 1) {\n this.setState({ invalid: true });\n return { value: title, isValid: false };\n }\n\n this.setState({ invalid: false });\n return { value: result[0].value, isValid: true };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title: string): void {\n const { menuIsOpen } = this.state;\n const { value, isValid } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n\n fireOnChange(value: string, isValid = true): void {\n const { onChange } = this.props;\n onChange(value, isValid);\n }\n\n processFilterChange(filter: string): void {\n const { options } = this.props;\n const { menuIsOpen } = this.state;\n const filteredOptions = filter\n ? this.getCachedFilteredOptions(options, filter)\n : options;\n const perfectMatch =\n filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n this.popper.current?.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue(): void {\n this.setState({ title: '' });\n this.fireOnChange('');\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n const option = filteredOptions[keyboardOptionIndex];\n\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option) {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n }\n this.closeMenu();\n this.input.current?.focus();\n break;\n case 'ArrowUp':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n case 'ArrowDown':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n if (event.shiftKey) {\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n }\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n\n navigateMenu(direction: MENU_NAVIGATION_DIRECTION): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n let newKeyboardOptionIndex = keyboardOptionIndex;\n if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP) {\n if (keyboardOptionIndex > 0) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex - 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = filteredOptions.length - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n } else if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN) {\n if (keyboardOptionIndex < filteredOptions.length) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex + 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n }\n\n handleInputKeyDown(event: React.KeyboardEvent): void {\n const { onEnter } = this.props;\n const { menuIsOpen } = this.state;\n\n if (menuIsOpen) {\n this.handleMenuKeyDown(event);\n } else if (event.key === 'Enter') {\n onEnter();\n } else if (event.key === 'Escape') {\n this.resetValue();\n event.preventDefault();\n event.stopPropagation();\n } else if (\n !(\n event.key === 'ArrowRight' ||\n event.key === 'ArrowLeft' ||\n event.key === 'Tab' ||\n event.key === 'Shift'\n )\n ) {\n this.openMenu();\n }\n }\n\n handleInputChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ title: event.target.value });\n this.updateInputValue(event.target.value);\n }\n\n handleOptionClick(option: AutoCompleteOption): void {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n this.closeMenu();\n this.input.current?.focus();\n }\n\n handelInputFocus(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputClick(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { menuIsOpen } = this.state;\n if (\n menuIsOpen &&\n event.relatedTarget instanceof Element &&\n this.popper.current?.element.contains(event.relatedTarget)\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuBlur(event: React.FocusEvent<HTMLDivElement>): void {\n // if blur event is caused by focusing on the input or focus on options don't close menu\n if (\n event.relatedTarget === this.input.current ||\n (event.relatedTarget instanceof Element &&\n this.popper.current?.element.contains(event.relatedTarget))\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuOpened(): void {\n this.input.current?.focus();\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n }\n }\n\n openMenu(): void {\n const { title } = this.state;\n this.processFilterChange(title);\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.popper.current?.show();\n });\n }\n\n closeMenu(focusInput = true): void {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n if (focusInput) {\n this.input.current?.focus();\n }\n this.popper.current?.hide();\n }\n\n scrollOptionIntoView(index: number): void {\n if (this.menuContainer.current) {\n this.menuContainer.current.children.item(index)?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { inputWidth } = this.state;\n return (\n <div\n className={classNames('aci-options')}\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n style={{ width: inputWidth }}\n onBlur={this.handleMenuBlur}\n >\n {this.renderOptions()}\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { noMatchText } = this.props;\n const { title, filteredOptions } = this.state;\n\n if (title && filteredOptions.length === 0) {\n return <div className=\"no-match\">{noMatchText}</div>;\n }\n\n return filteredOptions.map((option, index) =>\n this.renderOption(option, index)\n );\n }\n\n renderOption(option: AutoCompleteOption, index: number): JSX.Element {\n const { keyboardOptionIndex } = this.state;\n const key = `option-${index}-${option.value}`;\n return (\n <button\n key={key}\n type=\"button\"\n className={classNames('aci-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index,\n })}\n onClick={() => this.handleOptionClick(option)}\n onFocus={() => this.setState({ keyboardOptionIndex: index })}\n >\n {option.title}\n </button>\n );\n }\n\n render(): JSX.Element {\n const {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultTitle,\n spellCheck,\n 'data-testid': dataTestId,\n } = this.props;\n const { title, menuIsOpen, popperOptions, invalid } = this.state;\n\n return (\n <div className=\"aci-container\" ref={this.cbContainer}>\n <input\n value={title || defaultTitle}\n className={classNames('form-control', className, 'aci-input', {\n 'is-invalid': invalid && !menuIsOpen,\n })}\n ref={this.input}\n onChange={this.handleInputChange}\n placeholder={inputPlaceholder || options[0].title}\n disabled={disabled}\n onFocus={this.handelInputFocus}\n onClick={this.handleInputClick}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n spellCheck={spellCheck}\n data-testid={dataTestId}\n />\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('aci-options-popper interactive')}\n onEntered={this.handleMenuOpened}\n onExited={this.handleMenuExited}\n >\n {this.renderMenuElement()}\n </Popper>\n </div>\n );\n }\n}\n\nexport default AutoCompleteInput;\n"],"file":"AutoCompleteInput.js"}
|
|
@@ -10,6 +10,7 @@ interface AutoResizeTextareaProps {
|
|
|
10
10
|
disabled?: boolean;
|
|
11
11
|
delimiter?: string;
|
|
12
12
|
id?: string;
|
|
13
|
+
'data-testid'?: string;
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
16
|
* Makes a textarea that auto resizes based on contents, its height grows with new lines.
|
|
@@ -18,7 +19,7 @@ interface AutoResizeTextareaProps {
|
|
|
18
19
|
* on focus, and implode on blur. By default, it doesn't word wrap.
|
|
19
20
|
*/
|
|
20
21
|
declare const AutoResizeTextarea: {
|
|
21
|
-
({ className, value: propsValue, onChange, spellCheck, placeholder, disabled, delimiter, id, }: AutoResizeTextareaProps): JSX.Element;
|
|
22
|
+
({ className, value: propsValue, onChange, spellCheck, placeholder, disabled, delimiter, id, "data-testid": dataTestId, }: AutoResizeTextareaProps): JSX.Element;
|
|
22
23
|
propTypes: {
|
|
23
24
|
value: PropTypes.Validator<string>;
|
|
24
25
|
onChange: PropTypes.Validator<(...args: any[]) => any>;
|
|
@@ -28,6 +29,7 @@ declare const AutoResizeTextarea: {
|
|
|
28
29
|
disabled: PropTypes.Requireable<boolean>;
|
|
29
30
|
delimiter: PropTypes.Requireable<string>;
|
|
30
31
|
id: PropTypes.Requireable<string>;
|
|
32
|
+
'data-testid': PropTypes.Requireable<string>;
|
|
31
33
|
};
|
|
32
34
|
defaultProps: {
|
|
33
35
|
className: string;
|
|
@@ -36,6 +38,7 @@ declare const AutoResizeTextarea: {
|
|
|
36
38
|
disabled: boolean;
|
|
37
39
|
spellCheck: boolean;
|
|
38
40
|
delimiter: string;
|
|
41
|
+
'data-testid': undefined;
|
|
39
42
|
};
|
|
40
43
|
};
|
|
41
44
|
export default AutoResizeTextarea;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoResizeTextarea.d.ts","sourceRoot":"","sources":["../src/AutoResizeTextarea.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC,OAAO,2BAA2B,CAAC;AAEnC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AutoResizeTextarea.d.ts","sourceRoot":"","sources":["../src/AutoResizeTextarea.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC,OAAO,2BAA2B,CAAC;AAEnC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,QAAA,MAAM,kBAAkB;+HAUrB,uBAAuB,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;CAwGvC,CAAC;AAwBF,eAAe,kBAAkB,CAAC"}
|
|
@@ -18,7 +18,8 @@ var AutoResizeTextarea = _ref => {
|
|
|
18
18
|
placeholder = '',
|
|
19
19
|
disabled = false,
|
|
20
20
|
delimiter = '',
|
|
21
|
-
id = ''
|
|
21
|
+
id = '',
|
|
22
|
+
'data-testid': dataTestId
|
|
22
23
|
} = _ref;
|
|
23
24
|
var [value, setValue] = useState(propsValue);
|
|
24
25
|
var [isPastedChange, setIsPastedChange] = useState(false);
|
|
@@ -113,7 +114,8 @@ var AutoResizeTextarea = _ref => {
|
|
|
113
114
|
onBlur: handleBlur,
|
|
114
115
|
onPaste: handlePaste,
|
|
115
116
|
spellCheck: spellCheck,
|
|
116
|
-
disabled: disabled
|
|
117
|
+
disabled: disabled,
|
|
118
|
+
"data-testid": dataTestId
|
|
117
119
|
});
|
|
118
120
|
};
|
|
119
121
|
|
|
@@ -125,7 +127,8 @@ AutoResizeTextarea.propTypes = {
|
|
|
125
127
|
spellCheck: PropTypes.bool,
|
|
126
128
|
disabled: PropTypes.bool,
|
|
127
129
|
delimiter: PropTypes.string,
|
|
128
|
-
id: PropTypes.string
|
|
130
|
+
id: PropTypes.string,
|
|
131
|
+
'data-testid': PropTypes.string
|
|
129
132
|
};
|
|
130
133
|
AutoResizeTextarea.defaultProps = {
|
|
131
134
|
className: '',
|
|
@@ -133,7 +136,8 @@ AutoResizeTextarea.defaultProps = {
|
|
|
133
136
|
placeholder: '',
|
|
134
137
|
disabled: false,
|
|
135
138
|
spellCheck: false,
|
|
136
|
-
delimiter: ''
|
|
139
|
+
delimiter: '',
|
|
140
|
+
'data-testid': undefined
|
|
137
141
|
};
|
|
138
142
|
export default AutoResizeTextarea;
|
|
139
143
|
//# sourceMappingURL=AutoResizeTextarea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/AutoResizeTextarea.tsx"],"names":["React","useState","useRef","useEffect","PropTypes","classNames","AutoResizeTextarea","className","value","propsValue","onChange","spellCheck","placeholder","disabled","delimiter","id","setValue","isPastedChange","setIsPastedChange","element","explode","input","trim","split","filter","string","join","implode","map","reCalculateLayout","current","style","height","resizedHeight","scrollHeight","offsetHeight","clientHeight","handleChange","event","newValue","target","handleFocus","scrollLeft","handleMouseDown","document","activeElement","focus","handleBlur","handlePaste","propTypes","isRequired","func","bool","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,MAA1B,EAAkCC,SAAlC,QAAmD,OAAnD;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;;;
|
|
1
|
+
{"version":3,"sources":["../src/AutoResizeTextarea.tsx"],"names":["React","useState","useRef","useEffect","PropTypes","classNames","AutoResizeTextarea","className","value","propsValue","onChange","spellCheck","placeholder","disabled","delimiter","id","dataTestId","setValue","isPastedChange","setIsPastedChange","element","explode","input","trim","split","filter","string","join","implode","map","reCalculateLayout","current","style","height","resizedHeight","scrollHeight","offsetHeight","clientHeight","handleChange","event","newValue","target","handleFocus","scrollLeft","handleMouseDown","document","activeElement","focus","handleBlur","handlePaste","propTypes","isRequired","func","bool","defaultProps","undefined"],"mappings":"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","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport './AutoResizeTextarea.scss';\n\ninterface AutoResizeTextareaProps {\n value: string;\n onChange: (val: string) => void;\n className?: string;\n spellCheck?: boolean;\n placeholder?: string;\n disabled?: boolean;\n delimiter?: string;\n id?: string;\n 'data-testid'?: string;\n}\n\n/**\n * Makes a textarea that auto resizes based on contents, its height grows with new lines.\n * If a delimeter is set, such as \" -\" or \" \", as used by jvm args or env vars\n * then the field will also \"explode\" the value by the delimiter over new lines\n * on focus, and implode on blur. By default, it doesn't word wrap.\n */\nconst AutoResizeTextarea = ({\n className = '',\n value: propsValue,\n onChange,\n spellCheck = false,\n placeholder = '',\n disabled = false,\n delimiter = '',\n id = '',\n 'data-testid': dataTestId,\n}: AutoResizeTextareaProps): JSX.Element => {\n const [value, setValue] = useState(propsValue);\n const [isPastedChange, setIsPastedChange] = useState(false);\n const element = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n // keep state value in sync with prop changes\n setValue(propsValue);\n }, [propsValue]);\n\n function explode(input: string) {\n // split by delimiter, commonly \" \" or \" -\"\n // strip empty strings (if delimiter is space, and there are multiple spaces in a row)\n // and join with new line and a trimmed delimeter (get rid of leading spaces)\n return input\n .trim()\n .split(delimiter)\n .filter(string => string) // remove empty strings\n .join(`\\n${delimiter.trim()}`);\n }\n\n function implode(input: string) {\n return input\n .split('\\n')\n .map(string => string.trim())\n .join(' ');\n }\n\n function reCalculateLayout() {\n if (!element.current) {\n return;\n }\n element.current.style.height = '0'; // shrink component to get scrollHeight\n const resizedHeight =\n element.current.scrollHeight +\n (element.current.offsetHeight - element.current.clientHeight);\n // accounts for border, padding is captured by scroll height\n if (resizedHeight > 0) element.current.style.height = `${resizedHeight}px`;\n }\n\n function handleChange(event: React.ChangeEvent<HTMLTextAreaElement>) {\n let newValue = event.target.value;\n if (isPastedChange) {\n if (delimiter) newValue = explode(newValue);\n setIsPastedChange(false);\n }\n setValue(newValue);\n onChange(newValue);\n }\n\n function handleFocus() {\n if (!element.current) {\n return;\n }\n if (delimiter) {\n setValue(explode(value));\n reCalculateLayout();\n }\n element.current.scrollLeft = 0;\n // scroll left as it can be disorienting if you click on a long line\n }\n\n // make it explode when dragging the resize handle\n // by making it trigger focus (which normally doesn't\n // trigger when just resizing).\n function handleMouseDown() {\n if (!element.current) return;\n if (document.activeElement === element.current) return;\n element.current.focus();\n }\n\n function handleBlur() {\n if (delimiter) {\n setValue(implode(value));\n onChange(implode(value));\n }\n }\n\n function handlePaste() {\n setIsPastedChange(true);\n }\n\n useEffect(() => {\n reCalculateLayout();\n }, [value]);\n\n return (\n <textarea\n ref={element}\n id={id}\n className={classNames(className, 'auto-resize-textarea form-control')}\n placeholder={placeholder}\n value={value}\n rows={1}\n onChange={handleChange}\n onFocus={handleFocus}\n onMouseDown={handleMouseDown}\n onBlur={handleBlur}\n onPaste={handlePaste}\n spellCheck={spellCheck}\n disabled={disabled}\n data-testid={dataTestId}\n />\n );\n};\n\nAutoResizeTextarea.propTypes = {\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n className: PropTypes.string,\n placeholder: PropTypes.string,\n spellCheck: PropTypes.bool,\n disabled: PropTypes.bool,\n delimiter: PropTypes.string,\n id: PropTypes.string,\n 'data-testid': PropTypes.string,\n};\n\nAutoResizeTextarea.defaultProps = {\n className: '',\n id: '',\n placeholder: '',\n disabled: false,\n spellCheck: false,\n delimiter: '',\n 'data-testid': undefined,\n};\n\nexport default AutoResizeTextarea;\n"],"file":"AutoResizeTextarea.js"}
|
package/dist/BasicModal.d.ts
CHANGED
package/dist/BasicModal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasicModal.d.ts","sourceRoot":"","sources":["../src/BasicModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"BasicModal.d.ts","sourceRoot":"","sources":["../src/BasicModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmGzC,CAAC;AA4BF,eAAe,UAAU,CAAC"}
|
package/dist/BasicModal.js
CHANGED
|
@@ -29,7 +29,8 @@ var BasicModal = props => {
|
|
|
29
29
|
cancelButtonText = 'Cancel',
|
|
30
30
|
confirmButtonText = 'Okay',
|
|
31
31
|
discardButtonText = 'Discard',
|
|
32
|
-
children
|
|
32
|
+
children,
|
|
33
|
+
'data-testid': dataTestId
|
|
33
34
|
} = props;
|
|
34
35
|
var confirmButton = useRef(null);
|
|
35
36
|
var disableModalCheckbox = useRef(null);
|
|
@@ -63,7 +64,8 @@ var BasicModal = props => {
|
|
|
63
64
|
className: "custom-control-input",
|
|
64
65
|
id: "move-confirmation-checkbox",
|
|
65
66
|
defaultChecked: false,
|
|
66
|
-
ref: disableModalCheckbox
|
|
67
|
+
ref: disableModalCheckbox,
|
|
68
|
+
"data-testid": dataTestId ? "".concat(dataTestId, "-checkbox-confirm") : undefined
|
|
67
69
|
}), /*#__PURE__*/React.createElement("label", {
|
|
68
70
|
className: "custom-control-label",
|
|
69
71
|
htmlFor: "move-confirmation-checkbox"
|
|
@@ -71,16 +73,19 @@ var BasicModal = props => {
|
|
|
71
73
|
type: "button",
|
|
72
74
|
className: "btn btn-outline-primary mr-auto",
|
|
73
75
|
"data-dismiss": "modal",
|
|
74
|
-
onClick: onDiscard
|
|
76
|
+
onClick: onDiscard,
|
|
77
|
+
"data-testid": dataTestId ? "".concat(dataTestId, "-btn-discard") : undefined
|
|
75
78
|
}, discardButtonText), onCancel && /*#__PURE__*/React.createElement("button", {
|
|
76
79
|
type: "button",
|
|
77
80
|
className: "btn btn-outline-primary",
|
|
78
81
|
"data-dismiss": "modal",
|
|
79
|
-
onClick: onCancel
|
|
82
|
+
onClick: onCancel,
|
|
83
|
+
"data-testid": dataTestId ? "".concat(dataTestId, "-btn-cancel") : undefined
|
|
80
84
|
}, cancelButtonText), /*#__PURE__*/React.createElement(ButtonGroup, null, /*#__PURE__*/React.createElement(Button, {
|
|
81
85
|
kind: "primary",
|
|
82
86
|
onClick: onConfirmClicked,
|
|
83
|
-
ref: confirmButton
|
|
87
|
+
ref: confirmButton,
|
|
88
|
+
"data-testid": dataTestId ? "".concat(dataTestId, "-btn-confirm") : undefined
|
|
84
89
|
}, confirmButtonText), children)));
|
|
85
90
|
};
|
|
86
91
|
|
|
@@ -95,7 +100,8 @@ BasicModal.propTypes = {
|
|
|
95
100
|
cancelButtonText: PropTypes.string,
|
|
96
101
|
confirmButtonText: PropTypes.string,
|
|
97
102
|
discardButtonText: PropTypes.string,
|
|
98
|
-
children: PropTypes.node
|
|
103
|
+
children: PropTypes.node,
|
|
104
|
+
'data-testid': PropTypes.string
|
|
99
105
|
};
|
|
100
106
|
BasicModal.defaultProps = {
|
|
101
107
|
children: undefined,
|
|
@@ -104,7 +110,8 @@ BasicModal.defaultProps = {
|
|
|
104
110
|
discardButtonText: 'Discard',
|
|
105
111
|
onCancel: undefined,
|
|
106
112
|
onDiscard: undefined,
|
|
107
|
-
onModalDisable: undefined
|
|
113
|
+
onModalDisable: undefined,
|
|
114
|
+
'data-testid': undefined
|
|
108
115
|
};
|
|
109
116
|
export default BasicModal;
|
|
110
117
|
//# sourceMappingURL=BasicModal.js.map
|
package/dist/BasicModal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/BasicModal.tsx"],"names":["React","useRef","useCallback","Modal","ModalBody","ModalFooter","ModalHeader","PropTypes","ButtonGroup","Button","BasicModal","props","isOpen","headerText","bodyText","onCancel","onConfirm","onDiscard","onModalDisable","cancelButtonText","confirmButtonText","discardButtonText","children","confirmButton","disableModalCheckbox","onConfirmClicked","current","checked","modalBody","focus","propTypes","bool","isRequired","string","oneOfType","func","node","defaultProps"
|
|
1
|
+
{"version":3,"sources":["../src/BasicModal.tsx"],"names":["React","useRef","useCallback","Modal","ModalBody","ModalFooter","ModalHeader","PropTypes","ButtonGroup","Button","BasicModal","props","isOpen","headerText","bodyText","onCancel","onConfirm","onDiscard","onModalDisable","cancelButtonText","confirmButtonText","discardButtonText","children","dataTestId","confirmButton","disableModalCheckbox","onConfirmClicked","current","checked","modalBody","focus","undefined","propTypes","bool","isRequired","string","oneOfType","func","node","defaultProps"],"mappings":"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","sourcesContent":["import React, { useRef, useCallback } from 'react';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\nimport PropTypes from 'prop-types';\nimport ButtonGroup from './ButtonGroup';\nimport Button from './Button';\n\ninterface BasicModalProps {\n isOpen: boolean;\n headerText: string;\n bodyText: string | (() => string);\n onCancel?: () => void;\n onConfirm: () => void;\n onDiscard?: () => void;\n onModalDisable?: () => void;\n cancelButtonText?: string;\n confirmButtonText?: string;\n discardButtonText?: string;\n children?: React.ReactNode;\n 'data-testid'?: string;\n}\n\n/**\n * A basic modal dialog with two buttons: cancel / confirm.\n *\n * @param isOpen indicates if the modal dialog is open\n * @param headerText text displayed in the modal header\n * @param bodyText text displayed in the modal body\n * @param onCancel callback for the cancel button; if not provided, button not shown\n * @param onConfirm callback for the confirm button\n * @param onDiscard callback for the discard button; if not provided, button not shown\n * @param cancelButtonText optional text for the cancel button, defaults to 'Cancel'\n * @param confirmButtonText optional text for the confirm button, defaults to 'Okay'\n * @param discardButtonText optional text for the discard button, defaults to 'Discard'\n */\nconst BasicModal: React.FC<BasicModalProps> = props => {\n const {\n isOpen,\n headerText,\n bodyText,\n onCancel,\n onConfirm,\n onDiscard,\n onModalDisable,\n cancelButtonText = 'Cancel',\n confirmButtonText = 'Okay',\n discardButtonText = 'Discard',\n children,\n 'data-testid': dataTestId,\n } = props;\n\n const confirmButton = useRef<HTMLButtonElement>(null);\n\n const disableModalCheckbox = useRef<HTMLInputElement>(null);\n\n const onConfirmClicked = useCallback(() => {\n if (disableModalCheckbox.current?.checked && onModalDisable) {\n onModalDisable();\n }\n onConfirm();\n }, [onConfirm, onModalDisable]);\n\n let modalBody = '';\n if (isOpen) {\n modalBody = typeof bodyText === 'function' ? bodyText() : bodyText;\n }\n\n return (\n <Modal\n isOpen={isOpen}\n className=\"theme-bg-light\"\n onOpened={() => {\n confirmButton.current?.focus();\n }}\n >\n <ModalHeader>{headerText}</ModalHeader>\n <ModalBody>{modalBody}</ModalBody>\n <ModalFooter>\n {onModalDisable && (\n <div className=\"custom-control custom-checkbox form-group mr-auto\">\n <input\n type=\"checkbox\"\n className=\"custom-control-input\"\n id=\"move-confirmation-checkbox\"\n defaultChecked={false}\n ref={disableModalCheckbox}\n data-testid={\n dataTestId ? `${dataTestId}-checkbox-confirm` : undefined\n }\n />\n <label\n className=\"custom-control-label\"\n htmlFor=\"move-confirmation-checkbox\"\n >\n Don't ask me again\n </label>\n </div>\n )}\n {onDiscard && (\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-auto\"\n data-dismiss=\"modal\"\n onClick={onDiscard}\n data-testid={dataTestId ? `${dataTestId}-btn-discard` : undefined}\n >\n {discardButtonText}\n </button>\n )}\n {onCancel && (\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n data-dismiss=\"modal\"\n onClick={onCancel}\n data-testid={dataTestId ? `${dataTestId}-btn-cancel` : undefined}\n >\n {cancelButtonText}\n </button>\n )}\n <ButtonGroup>\n <Button\n kind=\"primary\"\n onClick={onConfirmClicked}\n ref={confirmButton}\n data-testid={dataTestId ? `${dataTestId}-btn-confirm` : undefined}\n >\n {confirmButtonText}\n </Button>\n {children}\n </ButtonGroup>\n </ModalFooter>\n </Modal>\n );\n};\n\nBasicModal.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n headerText: PropTypes.string.isRequired,\n bodyText: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func.isRequired,\n onDiscard: PropTypes.func,\n onModalDisable: PropTypes.func,\n cancelButtonText: PropTypes.string,\n confirmButtonText: PropTypes.string,\n discardButtonText: PropTypes.string,\n children: PropTypes.node,\n 'data-testid': PropTypes.string,\n};\n\nBasicModal.defaultProps = {\n children: undefined,\n cancelButtonText: 'Cancel',\n confirmButtonText: 'Okay',\n discardButtonText: 'Discard',\n onCancel: undefined,\n onDiscard: undefined,\n onModalDisable: undefined,\n 'data-testid': undefined,\n};\n\nexport default BasicModal;\n"],"file":"BasicModal.js"}
|
package/dist/Button.d.ts
CHANGED
|
@@ -24,6 +24,6 @@ declare type IconOnlyButton = BaseButtonProps & {
|
|
|
24
24
|
icon: IconDefinition | JSX.Element;
|
|
25
25
|
children?: undefined;
|
|
26
26
|
};
|
|
27
|
-
declare const Button: React.ForwardRefExoticComponent<(Pick<ButtonWithChildren, "className" | "dir" | "form" | "slot" | "style" | "title" | "children" | "tooltip" | "onClick" | "onKeyDown" | "onBlur" | "tabIndex" | "role" | "value" | "onChange" | "disabled" | "spellCheck" | "type" | "onFocus" | "placeholder" | "id" | "onMouseDown" | "onPaste" | "key" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "hidden" | "lang" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "kind" | "icon" | "variant" | "active"
|
|
27
|
+
declare const Button: React.ForwardRefExoticComponent<(Pick<ButtonWithChildren, "className" | "data-testid" | "dir" | "form" | "slot" | "style" | "title" | "children" | "tooltip" | "onClick" | "onKeyDown" | "onBlur" | "tabIndex" | "role" | "value" | "onChange" | "disabled" | "spellCheck" | "type" | "onFocus" | "placeholder" | "id" | "onMouseDown" | "onPaste" | "key" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "hidden" | "lang" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "kind" | "icon" | "variant" | "active"> | Pick<IconOnlyButton, "className" | "data-testid" | "dir" | "form" | "slot" | "style" | "title" | "children" | "tooltip" | "onClick" | "onKeyDown" | "onBlur" | "tabIndex" | "role" | "value" | "onChange" | "disabled" | "spellCheck" | "type" | "onFocus" | "placeholder" | "id" | "onMouseDown" | "onPaste" | "key" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "hidden" | "lang" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "kind" | "icon" | "variant" | "active">) & React.RefAttributes<HTMLButtonElement>>;
|
|
28
28
|
export default Button;
|
|
29
29
|
//# sourceMappingURL=Button.d.ts.map
|
package/dist/ButtonGroup.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ interface ButtonGroupProps {
|
|
|
4
4
|
children?: React.ReactNode;
|
|
5
5
|
className?: string;
|
|
6
6
|
style?: React.CSSProperties;
|
|
7
|
+
'data-testid'?: string;
|
|
7
8
|
}
|
|
8
9
|
declare const ButtonGroup: {
|
|
9
10
|
(props: ButtonGroupProps): JSX.Element;
|
|
@@ -12,10 +13,12 @@ declare const ButtonGroup: {
|
|
|
12
13
|
children: PropTypes.Validator<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
|
|
13
14
|
className: PropTypes.Requireable<string>;
|
|
14
15
|
style: PropTypes.Requireable<object>;
|
|
16
|
+
'data-testid': PropTypes.Requireable<string>;
|
|
15
17
|
};
|
|
16
18
|
defaultProps: {
|
|
17
19
|
className: null;
|
|
18
20
|
style: {};
|
|
21
|
+
'data-testid': undefined;
|
|
19
22
|
};
|
|
20
23
|
};
|
|
21
24
|
export default ButtonGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../src/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../src/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,QAAA,MAAM,WAAW;YAAW,gBAAgB,GAAG,WAAW;;;;;;;;;;;;;CAazD,CAAC;AAiBF,eAAe,WAAW,CAAC"}
|