@workday/canvas-kit-preview-react 8.0.0-alpha.253-next.22 → 8.0.0-alpha.428-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/color-picker/lib/ColorPicker.tsx +1 -1
- package/dist/commonjs/color-picker/lib/ColorPicker.js +25 -48
- package/dist/commonjs/color-picker/lib/parts/ColorReset.js +32 -23
- package/dist/commonjs/color-picker/lib/parts/SwatchBook.js +26 -39
- package/dist/commonjs/form-field/lib/FormField.d.ts +4 -10
- package/dist/commonjs/form-field/lib/FormField.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/FormField.js +10 -33
- package/dist/commonjs/form-field/lib/FormFieldHint.d.ts +1 -1
- package/dist/commonjs/form-field/lib/FormFieldHint.js +8 -31
- package/dist/commonjs/form-field/lib/FormFieldInput.d.ts +1 -1
- package/dist/commonjs/form-field/lib/FormFieldInput.js +6 -17
- package/dist/commonjs/form-field/lib/FormFieldLabel.d.ts +2 -8
- package/dist/commonjs/form-field/lib/FormFieldLabel.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/FormFieldLabel.js +8 -31
- package/dist/commonjs/form-field/lib/hooks/useFormFieldHint.d.ts +3 -5
- package/dist/commonjs/form-field/lib/hooks/useFormFieldHint.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/hooks/useFormFieldHint.js +4 -5
- package/dist/commonjs/form-field/lib/hooks/useFormFieldInput.d.ts +3 -5
- package/dist/commonjs/form-field/lib/hooks/useFormFieldInput.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/hooks/useFormFieldInput.js +5 -6
- package/dist/commonjs/form-field/lib/hooks/useFormFieldLabel.d.ts +3 -5
- package/dist/commonjs/form-field/lib/hooks/useFormFieldLabel.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/hooks/useFormFieldLabel.js +4 -5
- package/dist/commonjs/form-field/lib/hooks/useFormFieldModel.d.ts +2 -12
- package/dist/commonjs/form-field/lib/hooks/useFormFieldModel.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/hooks/useFormFieldModel.js +9 -19
- package/dist/commonjs/form-field/lib/hooks/useFormFieldOrientation.d.ts +4 -4
- package/dist/commonjs/form-field/lib/hooks/useFormFieldOrientation.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/hooks/useFormFieldOrientation.js +5 -5
- package/dist/commonjs/menu/lib/Menu.d.ts +16 -9
- package/dist/commonjs/menu/lib/Menu.d.ts.map +1 -1
- package/dist/commonjs/menu/lib/Menu.js +108 -132
- package/dist/commonjs/menu/lib/MenuItem.d.ts +17 -7
- package/dist/commonjs/menu/lib/MenuItem.d.ts.map +1 -1
- package/dist/commonjs/menu/lib/MenuItem.js +111 -114
- package/dist/commonjs/pill/lib/Pill.d.ts +103 -5
- package/dist/commonjs/pill/lib/Pill.d.ts.map +1 -1
- package/dist/commonjs/pill/lib/Pill.js +158 -64
- package/dist/commonjs/pill/lib/PillAvatar.js +6 -17
- package/dist/commonjs/pill/lib/PillCount.js +7 -30
- package/dist/commonjs/pill/lib/PillIcon.js +8 -31
- package/dist/commonjs/pill/lib/PillIconButton.js +13 -36
- package/dist/commonjs/pill/lib/PillLabel.js +10 -33
- package/dist/commonjs/pill/lib/usePillModel.js +8 -16
- package/dist/commonjs/segmented-control/index.d.ts +2 -0
- package/dist/commonjs/segmented-control/index.d.ts.map +1 -1
- package/dist/commonjs/segmented-control/index.js +4 -0
- package/dist/commonjs/segmented-control/lib/SegmentedControl.d.ts +267 -82
- package/dist/commonjs/segmented-control/lib/SegmentedControl.d.ts.map +1 -1
- package/dist/commonjs/segmented-control/lib/SegmentedControl.js +42 -7
- package/dist/commonjs/segmented-control/lib/SegmentedControlItem.d.ts +9 -5
- package/dist/commonjs/segmented-control/lib/SegmentedControlItem.d.ts.map +1 -1
- package/dist/commonjs/segmented-control/lib/SegmentedControlItem.js +24 -49
- package/dist/commonjs/segmented-control/lib/SegmentedControlList.d.ts +71 -2
- package/dist/commonjs/segmented-control/lib/SegmentedControlList.d.ts.map +1 -1
- package/dist/commonjs/segmented-control/lib/SegmentedControlList.js +15 -40
- package/dist/commonjs/segmented-control/lib/hooks/useSegmentedControlItem.d.ts +28 -9
- package/dist/commonjs/segmented-control/lib/hooks/useSegmentedControlItem.d.ts.map +1 -1
- package/dist/commonjs/segmented-control/lib/hooks/useSegmentedControlItem.js +8 -10
- package/dist/commonjs/segmented-control/lib/hooks/useSegmentedControlModel.d.ts +233 -83
- package/dist/commonjs/segmented-control/lib/hooks/useSegmentedControlModel.d.ts.map +1 -1
- package/dist/commonjs/segmented-control/lib/hooks/useSegmentedControlModel.js +33 -32
- package/dist/commonjs/select/lib/Select.js +147 -187
- package/dist/commonjs/select/lib/SelectBase.js +106 -101
- package/dist/commonjs/select/lib/SelectMenu.js +53 -84
- package/dist/commonjs/select/lib/SelectOption.js +33 -47
- package/dist/commonjs/select/lib/scrolling.js +6 -7
- package/dist/commonjs/select/lib/utils.js +4 -4
- package/dist/commonjs/side-panel/lib/SidePanel.d.ts +13 -26
- package/dist/commonjs/side-panel/lib/SidePanel.d.ts.map +1 -1
- package/dist/commonjs/side-panel/lib/SidePanel.js +95 -133
- package/dist/commonjs/side-panel/lib/SidePanelToggleButton.d.ts +17 -0
- package/dist/commonjs/side-panel/lib/SidePanelToggleButton.d.ts.map +1 -0
- package/dist/commonjs/side-panel/lib/SidePanelToggleButton.js +65 -0
- package/dist/commonjs/side-panel/lib/hooks.d.ts +20 -0
- package/dist/commonjs/side-panel/lib/hooks.d.ts.map +1 -1
- package/dist/commonjs/side-panel/lib/hooks.js +40 -21
- package/dist/commonjs/status-indicator/index.d.ts +2 -0
- package/dist/commonjs/status-indicator/index.d.ts.map +1 -1
- package/dist/commonjs/status-indicator/index.js +4 -0
- package/dist/commonjs/status-indicator/lib/StatusIndicator.d.ts +32 -8
- package/dist/commonjs/status-indicator/lib/StatusIndicator.d.ts.map +1 -1
- package/dist/commonjs/status-indicator/lib/StatusIndicator.js +37 -35
- package/dist/commonjs/status-indicator/lib/StatusIndicatorIcon.d.ts +10 -0
- package/dist/commonjs/status-indicator/lib/StatusIndicatorIcon.d.ts.map +1 -1
- package/dist/commonjs/status-indicator/lib/StatusIndicatorIcon.js +11 -23
- package/dist/commonjs/status-indicator/lib/StatusIndicatorLabel.js +5 -28
- package/dist/commonjs/status-indicator/lib/hooks/useStatusIndicatorModel.js +6 -15
- package/dist/commonjs/table/index.d.ts +2 -0
- package/dist/commonjs/table/index.d.ts.map +1 -0
- package/dist/commonjs/{text-area/lib/hooks → table}/index.js +1 -1
- package/dist/commonjs/table/lib/Table.d.ts +207 -0
- package/dist/commonjs/table/lib/Table.d.ts.map +1 -0
- package/dist/commonjs/table/lib/Table.js +229 -0
- package/dist/commonjs/table/lib/TableBody.d.ts +2 -0
- package/dist/commonjs/table/lib/TableBody.d.ts.map +1 -0
- package/dist/commonjs/table/lib/TableBody.js +35 -0
- package/dist/commonjs/table/lib/TableCaption.d.ts +2 -0
- package/dist/commonjs/table/lib/TableCaption.d.ts.map +1 -0
- package/dist/commonjs/table/lib/TableCaption.js +16 -0
- package/dist/commonjs/table/lib/TableCell.d.ts +2 -0
- package/dist/commonjs/table/lib/TableCell.d.ts.map +1 -0
- package/dist/commonjs/table/lib/TableCell.js +16 -0
- package/dist/commonjs/table/lib/TableFooter.d.ts +2 -0
- package/dist/commonjs/table/lib/TableFooter.d.ts.map +1 -0
- package/dist/commonjs/table/lib/TableFooter.js +15 -0
- package/dist/commonjs/table/lib/TableHead.d.ts +2 -0
- package/dist/commonjs/table/lib/TableHead.d.ts.map +1 -0
- package/dist/commonjs/table/lib/TableHead.js +23 -0
- package/dist/commonjs/table/lib/TableHeader.d.ts +2 -0
- package/dist/commonjs/table/lib/TableHeader.d.ts.map +1 -0
- package/dist/commonjs/table/lib/TableHeader.js +16 -0
- package/dist/commonjs/table/lib/TableRow.d.ts +2 -0
- package/dist/commonjs/table/lib/TableRow.d.ts.map +1 -0
- package/dist/commonjs/table/lib/TableRow.js +19 -0
- package/dist/commonjs/text-area/lib/TextArea.d.ts +2 -2
- package/dist/commonjs/text-area/lib/TextArea.d.ts.map +1 -1
- package/dist/commonjs/text-area/lib/TextArea.js +9 -33
- package/dist/commonjs/text-area/lib/TextAreaField.d.ts +1 -1
- package/dist/commonjs/text-area/lib/TextAreaField.d.ts.map +1 -1
- package/dist/commonjs/text-area/lib/TextAreaField.js +12 -36
- package/dist/commonjs/text-input/lib/TextInput.d.ts +4 -4
- package/dist/commonjs/text-input/lib/TextInput.d.ts.map +1 -1
- package/dist/commonjs/text-input/lib/TextInput.js +9 -33
- package/dist/commonjs/text-input/lib/TextInputField.d.ts +1 -1
- package/dist/commonjs/text-input/lib/TextInputField.d.ts.map +1 -1
- package/dist/commonjs/text-input/lib/TextInputField.js +13 -25
- package/dist/commonjs/text-input/lib/hooks/useTextInputField.d.ts +3 -5
- package/dist/commonjs/text-input/lib/hooks/useTextInputField.d.ts.map +1 -1
- package/dist/commonjs/text-input/lib/hooks/useTextInputField.js +3 -3
- package/dist/commonjs/text-input/lib/hooks/useTextInputModel.d.ts +1 -0
- package/dist/commonjs/text-input/lib/hooks/useTextInputModel.d.ts.map +1 -1
- package/dist/commonjs/text-input/lib/hooks/useTextInputModel.js +2 -1
- package/dist/es6/color-picker/lib/ColorPicker.js +16 -39
- package/dist/es6/color-picker/lib/parts/ColorReset.js +27 -18
- package/dist/es6/color-picker/lib/parts/SwatchBook.js +21 -34
- package/dist/es6/form-field/lib/FormField.d.ts +4 -10
- package/dist/es6/form-field/lib/FormField.d.ts.map +1 -1
- package/dist/es6/form-field/lib/FormField.js +5 -28
- package/dist/es6/form-field/lib/FormFieldHint.d.ts +1 -1
- package/dist/es6/form-field/lib/FormFieldHint.js +4 -27
- package/dist/es6/form-field/lib/FormFieldInput.d.ts +1 -1
- package/dist/es6/form-field/lib/FormFieldInput.js +3 -14
- package/dist/es6/form-field/lib/FormFieldLabel.d.ts +2 -8
- package/dist/es6/form-field/lib/FormFieldLabel.d.ts.map +1 -1
- package/dist/es6/form-field/lib/FormFieldLabel.js +5 -28
- package/dist/es6/form-field/lib/hooks/useFormFieldHint.d.ts +3 -5
- package/dist/es6/form-field/lib/hooks/useFormFieldHint.d.ts.map +1 -1
- package/dist/es6/form-field/lib/hooks/useFormFieldHint.js +2 -3
- package/dist/es6/form-field/lib/hooks/useFormFieldInput.d.ts +3 -5
- package/dist/es6/form-field/lib/hooks/useFormFieldInput.d.ts.map +1 -1
- package/dist/es6/form-field/lib/hooks/useFormFieldInput.js +3 -4
- package/dist/es6/form-field/lib/hooks/useFormFieldLabel.d.ts +3 -5
- package/dist/es6/form-field/lib/hooks/useFormFieldLabel.d.ts.map +1 -1
- package/dist/es6/form-field/lib/hooks/useFormFieldLabel.js +2 -3
- package/dist/es6/form-field/lib/hooks/useFormFieldModel.d.ts +2 -12
- package/dist/es6/form-field/lib/hooks/useFormFieldModel.d.ts.map +1 -1
- package/dist/es6/form-field/lib/hooks/useFormFieldModel.js +9 -19
- package/dist/es6/form-field/lib/hooks/useFormFieldOrientation.d.ts +4 -4
- package/dist/es6/form-field/lib/hooks/useFormFieldOrientation.d.ts.map +1 -1
- package/dist/es6/form-field/lib/hooks/useFormFieldOrientation.js +4 -4
- package/dist/es6/menu/lib/Menu.d.ts +16 -9
- package/dist/es6/menu/lib/Menu.d.ts.map +1 -1
- package/dist/es6/menu/lib/Menu.js +103 -128
- package/dist/es6/menu/lib/MenuItem.d.ts +17 -7
- package/dist/es6/menu/lib/MenuItem.d.ts.map +1 -1
- package/dist/es6/menu/lib/MenuItem.js +107 -111
- package/dist/es6/pill/lib/Pill.d.ts +103 -5
- package/dist/es6/pill/lib/Pill.d.ts.map +1 -1
- package/dist/es6/pill/lib/Pill.js +149 -55
- package/dist/es6/pill/lib/PillAvatar.js +3 -14
- package/dist/es6/pill/lib/PillCount.js +4 -27
- package/dist/es6/pill/lib/PillIcon.js +3 -26
- package/dist/es6/pill/lib/PillIconButton.js +7 -30
- package/dist/es6/pill/lib/PillLabel.js +5 -28
- package/dist/es6/pill/lib/usePillModel.js +8 -16
- package/dist/es6/segmented-control/index.d.ts +2 -0
- package/dist/es6/segmented-control/index.d.ts.map +1 -1
- package/dist/es6/segmented-control/index.js +2 -0
- package/dist/es6/segmented-control/lib/SegmentedControl.d.ts +267 -82
- package/dist/es6/segmented-control/lib/SegmentedControl.d.ts.map +1 -1
- package/dist/es6/segmented-control/lib/SegmentedControl.js +38 -3
- package/dist/es6/segmented-control/lib/SegmentedControlItem.d.ts +9 -5
- package/dist/es6/segmented-control/lib/SegmentedControlItem.d.ts.map +1 -1
- package/dist/es6/segmented-control/lib/SegmentedControlItem.js +17 -42
- package/dist/es6/segmented-control/lib/SegmentedControlList.d.ts +71 -2
- package/dist/es6/segmented-control/lib/SegmentedControlList.d.ts.map +1 -1
- package/dist/es6/segmented-control/lib/SegmentedControlList.js +9 -34
- package/dist/es6/segmented-control/lib/hooks/useSegmentedControlItem.d.ts +28 -9
- package/dist/es6/segmented-control/lib/hooks/useSegmentedControlItem.d.ts.map +1 -1
- package/dist/es6/segmented-control/lib/hooks/useSegmentedControlItem.js +5 -7
- package/dist/es6/segmented-control/lib/hooks/useSegmentedControlModel.d.ts +233 -83
- package/dist/es6/segmented-control/lib/hooks/useSegmentedControlModel.d.ts.map +1 -1
- package/dist/es6/segmented-control/lib/hooks/useSegmentedControlModel.js +31 -30
- package/dist/es6/select/lib/Select.js +144 -184
- package/dist/es6/select/lib/SelectBase.js +99 -94
- package/dist/es6/select/lib/SelectMenu.js +49 -80
- package/dist/es6/select/lib/SelectOption.js +30 -44
- package/dist/es6/select/lib/scrolling.js +6 -7
- package/dist/es6/select/lib/utils.js +4 -4
- package/dist/es6/side-panel/lib/SidePanel.d.ts +13 -26
- package/dist/es6/side-panel/lib/SidePanel.d.ts.map +1 -1
- package/dist/es6/side-panel/lib/SidePanel.js +93 -130
- package/dist/es6/side-panel/lib/SidePanelToggleButton.d.ts +17 -0
- package/dist/es6/side-panel/lib/SidePanelToggleButton.d.ts.map +1 -0
- package/dist/es6/side-panel/lib/SidePanelToggleButton.js +43 -0
- package/dist/es6/side-panel/lib/hooks.d.ts +20 -0
- package/dist/es6/side-panel/lib/hooks.d.ts.map +1 -1
- package/dist/es6/side-panel/lib/hooks.js +37 -18
- package/dist/es6/status-indicator/index.d.ts +2 -0
- package/dist/es6/status-indicator/index.d.ts.map +1 -1
- package/dist/es6/status-indicator/index.js +2 -0
- package/dist/es6/status-indicator/lib/StatusIndicator.d.ts +32 -8
- package/dist/es6/status-indicator/lib/StatusIndicator.d.ts.map +1 -1
- package/dist/es6/status-indicator/lib/StatusIndicator.js +33 -31
- package/dist/es6/status-indicator/lib/StatusIndicatorIcon.d.ts +10 -0
- package/dist/es6/status-indicator/lib/StatusIndicatorIcon.d.ts.map +1 -1
- package/dist/es6/status-indicator/lib/StatusIndicatorIcon.js +6 -18
- package/dist/es6/status-indicator/lib/StatusIndicatorLabel.js +3 -26
- package/dist/es6/status-indicator/lib/hooks/useStatusIndicatorModel.js +6 -15
- package/dist/es6/table/index.d.ts +2 -0
- package/dist/es6/table/index.d.ts.map +1 -0
- package/dist/es6/table/index.js +1 -0
- package/dist/es6/table/lib/Table.d.ts +207 -0
- package/dist/es6/table/lib/Table.d.ts.map +1 -0
- package/dist/es6/table/lib/Table.js +223 -0
- package/dist/es6/table/lib/TableBody.d.ts +2 -0
- package/dist/es6/table/lib/TableBody.d.ts.map +1 -0
- package/dist/es6/table/lib/TableBody.js +29 -0
- package/dist/es6/table/lib/TableCaption.d.ts +2 -0
- package/dist/es6/table/lib/TableCaption.d.ts.map +1 -0
- package/dist/es6/table/lib/TableCaption.js +10 -0
- package/dist/es6/table/lib/TableCell.d.ts +2 -0
- package/dist/es6/table/lib/TableCell.d.ts.map +1 -0
- package/dist/es6/table/lib/TableCell.js +10 -0
- package/dist/es6/table/lib/TableFooter.d.ts +2 -0
- package/dist/es6/table/lib/TableFooter.d.ts.map +1 -0
- package/dist/es6/table/lib/TableFooter.js +9 -0
- package/dist/es6/table/lib/TableHead.d.ts +2 -0
- package/dist/es6/table/lib/TableHead.d.ts.map +1 -0
- package/dist/es6/table/lib/TableHead.js +17 -0
- package/dist/es6/table/lib/TableHeader.d.ts +2 -0
- package/dist/es6/table/lib/TableHeader.d.ts.map +1 -0
- package/dist/es6/table/lib/TableHeader.js +10 -0
- package/dist/es6/table/lib/TableRow.d.ts +2 -0
- package/dist/es6/table/lib/TableRow.d.ts.map +1 -0
- package/dist/es6/table/lib/TableRow.js +13 -0
- package/dist/es6/text-area/lib/TextArea.d.ts +2 -2
- package/dist/es6/text-area/lib/TextArea.d.ts.map +1 -1
- package/dist/es6/text-area/lib/TextArea.js +7 -31
- package/dist/es6/text-area/lib/TextAreaField.d.ts +1 -1
- package/dist/es6/text-area/lib/TextAreaField.d.ts.map +1 -1
- package/dist/es6/text-area/lib/TextAreaField.js +9 -33
- package/dist/es6/text-input/lib/TextInput.d.ts +4 -4
- package/dist/es6/text-input/lib/TextInput.d.ts.map +1 -1
- package/dist/es6/text-input/lib/TextInput.js +7 -31
- package/dist/es6/text-input/lib/TextInputField.d.ts +1 -1
- package/dist/es6/text-input/lib/TextInputField.d.ts.map +1 -1
- package/dist/es6/text-input/lib/TextInputField.js +12 -24
- package/dist/es6/text-input/lib/hooks/useTextInputField.d.ts +3 -5
- package/dist/es6/text-input/lib/hooks/useTextInputField.d.ts.map +1 -1
- package/dist/es6/text-input/lib/hooks/useTextInputField.js +1 -1
- package/dist/es6/text-input/lib/hooks/useTextInputModel.d.ts +1 -0
- package/dist/es6/text-input/lib/hooks/useTextInputModel.d.ts.map +1 -1
- package/dist/es6/text-input/lib/hooks/useTextInputModel.js +2 -1
- package/form-field/lib/FormField.tsx +5 -10
- package/form-field/lib/FormFieldLabel.tsx +6 -11
- package/form-field/lib/hooks/useFormFieldModel.tsx +1 -3
- package/form-field/lib/hooks/useFormFieldOrientation.tsx +6 -6
- package/menu/lib/Menu.tsx +16 -9
- package/menu/lib/MenuItem.tsx +19 -8
- package/package.json +4 -5
- package/pill/lib/Pill.tsx +109 -10
- package/pill/lib/PillCount.tsx +1 -1
- package/pill/lib/PillIcon.tsx +1 -1
- package/segmented-control/index.ts +2 -0
- package/segmented-control/lib/SegmentedControl.tsx +36 -0
- package/segmented-control/lib/SegmentedControlList.tsx +1 -1
- package/segmented-control/lib/hooks/useSegmentedControlItem.tsx +1 -5
- package/side-panel/lib/SidePanel.tsx +119 -169
- package/side-panel/lib/SidePanelToggleButton.tsx +78 -0
- package/side-panel/lib/hooks.ts +20 -0
- package/status-indicator/index.ts +2 -0
- package/status-indicator/lib/StatusIndicator.tsx +32 -6
- package/status-indicator/lib/StatusIndicatorIcon.tsx +1 -1
- package/table/LICENSE +51 -0
- package/table/README.md +5 -0
- package/table/index.ts +1 -0
- package/table/lib/Table.tsx +236 -0
- package/table/lib/TableBody.tsx +35 -0
- package/table/lib/TableCaption.tsx +22 -0
- package/table/lib/TableCell.tsx +27 -0
- package/table/lib/TableFooter.tsx +14 -0
- package/table/lib/TableHead.tsx +23 -0
- package/table/lib/TableHeader.tsx +28 -0
- package/table/lib/TableRow.tsx +26 -0
- package/table/package.json +6 -0
- package/text-area/lib/TextArea.tsx +9 -6
- package/text-area/lib/TextAreaField.tsx +6 -2
- package/text-input/lib/TextInput.tsx +9 -6
- package/text-input/lib/TextInputField.tsx +9 -5
- package/text-input/lib/hooks/useTextInputModel.ts +1 -0
- package/dist/commonjs/text-area/lib/hooks/index.d.ts +0 -2
- package/dist/commonjs/text-area/lib/hooks/index.d.ts.map +0 -1
- package/dist/commonjs/text-area/lib/hooks/useTextAreaModel.d.ts +0 -28
- package/dist/commonjs/text-area/lib/hooks/useTextAreaModel.d.ts.map +0 -1
- package/dist/commonjs/text-area/lib/hooks/useTextAreaModel.js +0 -5
- package/dist/es6/text-area/lib/hooks/index.d.ts +0 -2
- package/dist/es6/text-area/lib/hooks/index.d.ts.map +0 -1
- package/dist/es6/text-area/lib/hooks/index.js +0 -1
- package/dist/es6/text-area/lib/hooks/useTextAreaModel.d.ts +0 -28
- package/dist/es6/text-area/lib/hooks/useTextAreaModel.d.ts.map +0 -1
- package/dist/es6/text-area/lib/hooks/useTextAreaModel.js +0 -2
- package/text-area/lib/hooks/index.ts +0 -1
- package/text-area/lib/hooks/useTextAreaModel.ts +0 -3
|
@@ -1,61 +1,25 @@
|
|
|
1
|
-
var __extends = (this && this.__extends) || (function () {
|
|
2
|
-
var extendStatics = function (d, b) {
|
|
3
|
-
extendStatics = Object.setPrototypeOf ||
|
|
4
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
-
return extendStatics(d, b);
|
|
7
|
-
};
|
|
8
|
-
return function (d, b) {
|
|
9
|
-
extendStatics(d, b);
|
|
10
|
-
function __() { this.constructor = d; }
|
|
11
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
|
-
};
|
|
13
|
-
})();
|
|
14
|
-
var __assign = (this && this.__assign) || function () {
|
|
15
|
-
__assign = Object.assign || function(t) {
|
|
16
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
17
|
-
s = arguments[i];
|
|
18
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
19
|
-
t[p] = s[p];
|
|
20
|
-
}
|
|
21
|
-
return t;
|
|
22
|
-
};
|
|
23
|
-
return __assign.apply(this, arguments);
|
|
24
|
-
};
|
|
25
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
26
|
-
var t = {};
|
|
27
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
28
|
-
t[p] = s[p];
|
|
29
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
30
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
31
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32
|
-
t[p[i]] = s[p[i]];
|
|
33
|
-
}
|
|
34
|
-
return t;
|
|
35
|
-
};
|
|
36
1
|
import * as React from 'react';
|
|
37
2
|
import { ErrorType, createComponent, useForkRef, generateUniqueId, } from '@workday/canvas-kit-react/common';
|
|
38
3
|
import { menuAnimationDuration } from './SelectMenu';
|
|
39
4
|
import { SelectBase } from './SelectBase';
|
|
40
5
|
import { getCorrectedIndexByValue } from './utils';
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
_this.state = {
|
|
6
|
+
class SelectContainer extends React.Component {
|
|
7
|
+
constructor(props) {
|
|
8
|
+
super(props);
|
|
9
|
+
this.state = {
|
|
46
10
|
focusedOptionIndex: 0,
|
|
47
11
|
menuVisibility: 'closed',
|
|
48
12
|
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
13
|
+
this.localButtonRef = React.createRef();
|
|
14
|
+
this.inputRef = React.createRef();
|
|
15
|
+
this.menuRef = React.createRef();
|
|
52
16
|
// For type-ahead functionality
|
|
53
|
-
|
|
54
|
-
|
|
17
|
+
this.keysSoFar = '';
|
|
18
|
+
this.clearKeysSoFarTimeout = 500;
|
|
55
19
|
// Cached values
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
20
|
+
this.normalizedOptions = [];
|
|
21
|
+
this.areOptionsDefined = () => {
|
|
22
|
+
const { options } = this.props;
|
|
59
23
|
if (!options || options.length === 0) {
|
|
60
24
|
return false;
|
|
61
25
|
}
|
|
@@ -64,15 +28,15 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
64
28
|
// Store normalized options since the options prop can take on multiple
|
|
65
29
|
// forms: an array of strings or an array of objects (sometimes with
|
|
66
30
|
// arbitrary keys)
|
|
67
|
-
|
|
68
|
-
|
|
31
|
+
this.setNormalizedOptions = () => {
|
|
32
|
+
const { options } = this.props;
|
|
69
33
|
// Abort if options weren't defined
|
|
70
|
-
if (!
|
|
34
|
+
if (!this.areOptionsDefined()) {
|
|
71
35
|
return;
|
|
72
36
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
37
|
+
this.normalizedOptions = options.map(option => {
|
|
38
|
+
let data = {};
|
|
39
|
+
let disabled, id, label, value;
|
|
76
40
|
if (typeof option === 'string') {
|
|
77
41
|
disabled = false;
|
|
78
42
|
id = generateUniqueId();
|
|
@@ -87,21 +51,19 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
87
51
|
label = option.label || option.value;
|
|
88
52
|
}
|
|
89
53
|
return {
|
|
90
|
-
data
|
|
91
|
-
disabled
|
|
92
|
-
id
|
|
93
|
-
label
|
|
94
|
-
value
|
|
54
|
+
data,
|
|
55
|
+
disabled,
|
|
56
|
+
id,
|
|
57
|
+
label,
|
|
58
|
+
value,
|
|
95
59
|
};
|
|
96
60
|
});
|
|
97
61
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
for (var i = startIndex; i < endIndex; i++) {
|
|
102
|
-
var label = _this.normalizedOptions[i].label.toLowerCase();
|
|
62
|
+
this.getIndexByStartString = (startIndex, startString, endIndex = this.normalizedOptions.length, ignoreDisabled = true) => {
|
|
63
|
+
for (let i = startIndex; i < endIndex; i++) {
|
|
64
|
+
const label = this.normalizedOptions[i].label.toLowerCase();
|
|
103
65
|
if (label.indexOf(startString.toLowerCase()) === 0) {
|
|
104
|
-
if (!ignoreDisabled || (ignoreDisabled && !
|
|
66
|
+
if (!ignoreDisabled || (ignoreDisabled && !this.normalizedOptions[i].disabled)) {
|
|
105
67
|
return i;
|
|
106
68
|
}
|
|
107
69
|
}
|
|
@@ -117,64 +79,64 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
117
79
|
// Up/Down key means "focus the first enabled option above/below the currently
|
|
118
80
|
// focused option", or pressing the Home/End key means "focus the first/last
|
|
119
81
|
// enabled option on the menu."
|
|
120
|
-
|
|
82
|
+
this.focusNextEnabledOption = (startIndex, direction) => {
|
|
121
83
|
// Ensure direction is non-zero
|
|
122
84
|
if (direction === 0) {
|
|
123
85
|
return;
|
|
124
86
|
}
|
|
125
|
-
|
|
126
|
-
|
|
87
|
+
const numOptions = this.normalizedOptions.length;
|
|
88
|
+
let currentIndex = startIndex;
|
|
127
89
|
// Check if currentIndex refers to an enabled option. If not, keep moving
|
|
128
90
|
// the index in the prescribed direction until we find an enabled option.
|
|
129
91
|
while (currentIndex >= 0 &&
|
|
130
92
|
currentIndex < numOptions &&
|
|
131
|
-
|
|
93
|
+
this.normalizedOptions[currentIndex].disabled) {
|
|
132
94
|
currentIndex += direction;
|
|
133
95
|
}
|
|
134
96
|
// Update the focused index only if currentIndex is inbounds and
|
|
135
97
|
// refers to an enabled option
|
|
136
98
|
if (currentIndex >= 0 &&
|
|
137
99
|
currentIndex < numOptions &&
|
|
138
|
-
!
|
|
139
|
-
|
|
100
|
+
!this.normalizedOptions[currentIndex].disabled) {
|
|
101
|
+
this.setState({ focusedOptionIndex: currentIndex });
|
|
140
102
|
}
|
|
141
103
|
};
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
focusedOptionIndex: getCorrectedIndexByValue(
|
|
104
|
+
this.updateStateFromValue = () => {
|
|
105
|
+
this.setState({
|
|
106
|
+
focusedOptionIndex: getCorrectedIndexByValue(this.normalizedOptions, this.props.value),
|
|
145
107
|
});
|
|
146
108
|
};
|
|
147
|
-
|
|
148
|
-
if (
|
|
149
|
-
|
|
109
|
+
this.focusButton = () => {
|
|
110
|
+
if (this.localButtonRef.current) {
|
|
111
|
+
this.localButtonRef.current.focus();
|
|
150
112
|
}
|
|
151
113
|
};
|
|
152
|
-
|
|
153
|
-
if (
|
|
154
|
-
clearTimeout(
|
|
114
|
+
this.setMenuAnimationTimeout = (callback) => {
|
|
115
|
+
if (this.menuAnimationTimer) {
|
|
116
|
+
clearTimeout(this.menuAnimationTimer);
|
|
155
117
|
}
|
|
156
|
-
|
|
118
|
+
this.menuAnimationTimer = setTimeout(callback, menuAnimationDuration);
|
|
157
119
|
};
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
120
|
+
this.openMenu = () => {
|
|
121
|
+
this.setState({ menuVisibility: 'opening' });
|
|
122
|
+
this.setMenuAnimationTimeout(() => {
|
|
123
|
+
this.setState({ menuVisibility: 'opened' });
|
|
162
124
|
});
|
|
163
125
|
};
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
126
|
+
this.closeMenu = () => {
|
|
127
|
+
this.setState({ menuVisibility: 'closing' });
|
|
128
|
+
this.setMenuAnimationTimeout(() => {
|
|
129
|
+
this.setState({
|
|
168
130
|
// Reset the focused option to the currently selected option in case
|
|
169
131
|
// the user focused a different option but chose not to select it. The
|
|
170
132
|
// next time the menu opens, focus should begin on the selected option.
|
|
171
|
-
focusedOptionIndex: getCorrectedIndexByValue(
|
|
133
|
+
focusedOptionIndex: getCorrectedIndexByValue(this.normalizedOptions, this.props.value),
|
|
172
134
|
menuVisibility: 'closed',
|
|
173
135
|
});
|
|
174
136
|
});
|
|
175
137
|
};
|
|
176
|
-
|
|
177
|
-
|
|
138
|
+
this.toggleMenu = (open) => {
|
|
139
|
+
const { menuVisibility } = this.state;
|
|
178
140
|
if (open) {
|
|
179
141
|
switch (menuVisibility) {
|
|
180
142
|
// We're opening a menu which is currently closed: set the menu state
|
|
@@ -182,14 +144,14 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
182
144
|
// from 0 opacity in the open state to the targeted 1.0 opacity in
|
|
183
145
|
// the opening state.
|
|
184
146
|
case 'closed':
|
|
185
|
-
|
|
147
|
+
this.setState({ menuVisibility: 'open' }, this.openMenu);
|
|
186
148
|
break;
|
|
187
149
|
// We're opening a menu which is in the process of closing. Since the
|
|
188
150
|
// menu isn't closed, there's no need to set the open state: kick off
|
|
189
151
|
// openMenu immediately.
|
|
190
152
|
case 'close':
|
|
191
153
|
case 'closing':
|
|
192
|
-
|
|
154
|
+
this.openMenu();
|
|
193
155
|
break;
|
|
194
156
|
// Otherwise, we're opening a menu is already opened or in the process of
|
|
195
157
|
// opening; no need to do anything further.
|
|
@@ -202,14 +164,14 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
202
164
|
// We're closing a menu which is currently opened: set the menu state to
|
|
203
165
|
// close before kicking off closeMenu.
|
|
204
166
|
case 'opened':
|
|
205
|
-
|
|
167
|
+
this.setState({ menuVisibility: 'close' }, this.closeMenu);
|
|
206
168
|
break;
|
|
207
169
|
// We're closing a menu which is in the process of opening. Since the
|
|
208
170
|
// menu isn't opened, there's no need to set the close state: kick off
|
|
209
171
|
// closeMenu immediately.
|
|
210
172
|
case 'open':
|
|
211
173
|
case 'opening':
|
|
212
|
-
|
|
174
|
+
this.closeMenu();
|
|
213
175
|
break;
|
|
214
176
|
// Otherwise, we're closing a menu which is already closed or in the process
|
|
215
177
|
// of closing; no need to do anything further.
|
|
@@ -222,28 +184,28 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
222
184
|
// In order for Select to be usable as a controlled component, we
|
|
223
185
|
// need to programmatically change the value of the SelectInput
|
|
224
186
|
// in such a way that triggers its change event
|
|
225
|
-
|
|
226
|
-
if (
|
|
227
|
-
|
|
187
|
+
this.fireChangeEvent = (value) => {
|
|
188
|
+
if (this.inputRef && this.inputRef.current) {
|
|
189
|
+
const nativeInputValue = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this.inputRef.current), 'value');
|
|
228
190
|
if (nativeInputValue && nativeInputValue.set) {
|
|
229
|
-
nativeInputValue.set.call(
|
|
191
|
+
nativeInputValue.set.call(this.inputRef.current, value);
|
|
230
192
|
}
|
|
231
|
-
|
|
193
|
+
let event;
|
|
232
194
|
if (typeof Event === 'function') {
|
|
233
195
|
// Modern browsers
|
|
234
|
-
|
|
196
|
+
event = new Event('change', { bubbles: true });
|
|
235
197
|
}
|
|
236
198
|
else {
|
|
237
199
|
// IE 11
|
|
238
|
-
|
|
239
|
-
|
|
200
|
+
event = document.createEvent('Event');
|
|
201
|
+
event.initEvent('change', true, true);
|
|
240
202
|
}
|
|
241
|
-
|
|
203
|
+
this.inputRef.current.dispatchEvent(event);
|
|
242
204
|
}
|
|
243
205
|
};
|
|
244
|
-
|
|
206
|
+
this.handleKeyboardTypeAhead = (key, numOptions) => {
|
|
245
207
|
// Abort immediately if the menu is the process of closing
|
|
246
|
-
if (
|
|
208
|
+
if (this.state.menuVisibility === 'closing') {
|
|
247
209
|
return;
|
|
248
210
|
}
|
|
249
211
|
// Set the starting point of the search to one of two locations
|
|
@@ -260,45 +222,45 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
260
222
|
// "San Francisco" as you type "san " (because "san " still matches
|
|
261
223
|
// "San Francisco") and then advances focus to "San Jose" after you
|
|
262
224
|
// type the "j" at the end.
|
|
263
|
-
|
|
264
|
-
?
|
|
265
|
-
:
|
|
225
|
+
let start = this.keysSoFar.length === 0
|
|
226
|
+
? this.state.focusedOptionIndex + 1
|
|
227
|
+
: this.state.focusedOptionIndex;
|
|
266
228
|
// If the starting point is beyond the list of options, reset it
|
|
267
229
|
// to the beginning of the list
|
|
268
230
|
start = start === numOptions ? 0 : start;
|
|
269
|
-
|
|
270
|
-
|
|
231
|
+
this.keysSoFar += key;
|
|
232
|
+
this.startClearKeysSoFarTimer();
|
|
271
233
|
// First, look for a match from start to end
|
|
272
|
-
|
|
273
|
-
matchIndex =
|
|
234
|
+
let matchIndex;
|
|
235
|
+
matchIndex = this.getIndexByStartString(start, this.keysSoFar);
|
|
274
236
|
// If a match isn't found between start and end, wrap the search
|
|
275
237
|
// around and search again from the beginning (0) to start
|
|
276
238
|
if (matchIndex === -1) {
|
|
277
|
-
matchIndex =
|
|
239
|
+
matchIndex = this.getIndexByStartString(0, this.keysSoFar, start);
|
|
278
240
|
}
|
|
279
241
|
// A match was found...
|
|
280
242
|
if (matchIndex > -1) {
|
|
281
|
-
if (
|
|
243
|
+
if (this.state.menuVisibility === 'closed') {
|
|
282
244
|
// If the menu is closed, fire the change event
|
|
283
|
-
|
|
245
|
+
this.fireChangeEvent(this.normalizedOptions[matchIndex].value);
|
|
284
246
|
}
|
|
285
247
|
else {
|
|
286
248
|
// Otherwise the menu is visible (or at least partially visible);
|
|
287
249
|
// focus the matched option
|
|
288
|
-
|
|
250
|
+
this.setState({ focusedOptionIndex: matchIndex });
|
|
289
251
|
}
|
|
290
252
|
}
|
|
291
253
|
};
|
|
292
|
-
|
|
293
|
-
if (
|
|
294
|
-
clearTimeout(
|
|
254
|
+
this.startClearKeysSoFarTimer = () => {
|
|
255
|
+
if (this.clearKeysSoFarTimer) {
|
|
256
|
+
clearTimeout(this.clearKeysSoFarTimer);
|
|
295
257
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
},
|
|
258
|
+
this.clearKeysSoFarTimer = setTimeout(() => {
|
|
259
|
+
this.keysSoFar = '';
|
|
260
|
+
}, this.clearKeysSoFarTimeout);
|
|
299
261
|
};
|
|
300
|
-
|
|
301
|
-
|
|
262
|
+
this.handleClick = (event) => {
|
|
263
|
+
const { menuVisibility } = this.state;
|
|
302
264
|
switch (menuVisibility) {
|
|
303
265
|
// If we click the button while the menu is in the process of closing,
|
|
304
266
|
// we want to toggle the menu back on. However, we also need to focus
|
|
@@ -306,48 +268,48 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
306
268
|
// callback (because the menu already exists).
|
|
307
269
|
case 'close':
|
|
308
270
|
case 'closing':
|
|
309
|
-
if (
|
|
310
|
-
|
|
271
|
+
if (this.menuRef.current) {
|
|
272
|
+
this.menuRef.current.focus();
|
|
311
273
|
}
|
|
312
|
-
|
|
274
|
+
this.toggleMenu(true);
|
|
313
275
|
break;
|
|
314
276
|
case 'closed':
|
|
315
|
-
|
|
277
|
+
this.toggleMenu(true);
|
|
316
278
|
break;
|
|
317
279
|
// Otherwise, the menu is opened or in the process of opening; toggle
|
|
318
280
|
// the menu off.
|
|
319
281
|
default:
|
|
320
|
-
|
|
282
|
+
this.toggleMenu(false);
|
|
321
283
|
break;
|
|
322
284
|
}
|
|
323
285
|
};
|
|
324
|
-
|
|
286
|
+
this.handleOptionSelection = (index) => {
|
|
325
287
|
// Abort if a disabled option was clicked (we ignore these clicks)
|
|
326
|
-
if (
|
|
288
|
+
if (this.normalizedOptions[index].disabled) {
|
|
327
289
|
return;
|
|
328
290
|
}
|
|
329
291
|
// Toggle menu off, shift focus back to the button, and fire change event
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
292
|
+
this.toggleMenu(false);
|
|
293
|
+
this.focusButton();
|
|
294
|
+
this.fireChangeEvent(this.normalizedOptions[index].value);
|
|
333
295
|
};
|
|
334
|
-
|
|
296
|
+
this.handleMenuCloseOnKeyPress = () => {
|
|
335
297
|
// Toggle menu off and shift focus back to the button
|
|
336
|
-
|
|
337
|
-
|
|
298
|
+
this.handleClose();
|
|
299
|
+
this.focusButton();
|
|
338
300
|
};
|
|
339
|
-
|
|
340
|
-
|
|
301
|
+
this.handleClose = () => {
|
|
302
|
+
this.toggleMenu(false);
|
|
341
303
|
};
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
304
|
+
this.handleKeyDown = (event) => {
|
|
305
|
+
const { options } = this.props;
|
|
306
|
+
const numOptions = options.length;
|
|
307
|
+
const { focusedOptionIndex, menuVisibility } = this.state;
|
|
308
|
+
let isShortcut = false;
|
|
347
309
|
// Check for type-ahead first
|
|
348
310
|
if (event.key.length === 1 && event.key.match(/\S/)) {
|
|
349
311
|
isShortcut = true;
|
|
350
|
-
|
|
312
|
+
this.handleKeyboardTypeAhead(event.key, numOptions);
|
|
351
313
|
}
|
|
352
314
|
else {
|
|
353
315
|
switch (event.key) {
|
|
@@ -357,25 +319,25 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
357
319
|
case 'Down': // IE/Edge specific value
|
|
358
320
|
isShortcut = true;
|
|
359
321
|
if (menuVisibility === 'closed' || menuVisibility === 'closing') {
|
|
360
|
-
|
|
322
|
+
this.toggleMenu(true);
|
|
361
323
|
}
|
|
362
324
|
else {
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
325
|
+
const direction = event.key === 'ArrowUp' || event.key === 'Up' ? -1 : 1;
|
|
326
|
+
const startIndex = focusedOptionIndex + direction;
|
|
327
|
+
this.focusNextEnabledOption(startIndex, direction);
|
|
366
328
|
}
|
|
367
329
|
break;
|
|
368
330
|
case 'Home':
|
|
369
331
|
case 'End':
|
|
370
332
|
isShortcut = true;
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
333
|
+
const direction = event.key === 'Home' ? 1 : -1;
|
|
334
|
+
const startIndex = event.key === 'Home' ? 0 : numOptions - 1;
|
|
335
|
+
this.focusNextEnabledOption(startIndex, direction);
|
|
374
336
|
break;
|
|
375
337
|
case 'Tab':
|
|
376
338
|
if (menuVisibility !== 'closed') {
|
|
377
339
|
isShortcut = true;
|
|
378
|
-
|
|
340
|
+
this.handleMenuCloseOnKeyPress();
|
|
379
341
|
}
|
|
380
342
|
break;
|
|
381
343
|
case 'Spacebar':
|
|
@@ -383,14 +345,14 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
383
345
|
isShortcut = true;
|
|
384
346
|
// If the user is in the middle of typing a string, treat
|
|
385
347
|
// space key as type-ahead rather than option selection
|
|
386
|
-
if (
|
|
387
|
-
|
|
348
|
+
if (this.keysSoFar !== '') {
|
|
349
|
+
this.handleKeyboardTypeAhead(' ', numOptions);
|
|
388
350
|
}
|
|
389
351
|
else if (menuVisibility === 'closed' || menuVisibility === 'closing') {
|
|
390
|
-
|
|
352
|
+
this.toggleMenu(true);
|
|
391
353
|
}
|
|
392
354
|
else {
|
|
393
|
-
|
|
355
|
+
this.handleOptionSelection(focusedOptionIndex);
|
|
394
356
|
}
|
|
395
357
|
break;
|
|
396
358
|
case 'Enter':
|
|
@@ -400,7 +362,7 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
400
362
|
isShortcut = false;
|
|
401
363
|
}
|
|
402
364
|
else {
|
|
403
|
-
|
|
365
|
+
this.handleOptionSelection(focusedOptionIndex);
|
|
404
366
|
}
|
|
405
367
|
break;
|
|
406
368
|
default:
|
|
@@ -421,7 +383,7 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
421
383
|
event.preventDefault();
|
|
422
384
|
}
|
|
423
385
|
};
|
|
424
|
-
|
|
386
|
+
this.setNormalizedOptions();
|
|
425
387
|
// We need a local ref (RefObject) to the Select component's underlying
|
|
426
388
|
// button to manage focus within the component and to serve as its Popper
|
|
427
389
|
// Menu's anchorElement. If the buttonRef prop (to be forwarded to the
|
|
@@ -440,14 +402,13 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
440
402
|
// or call buttonRef with the underlying button element if it was a
|
|
441
403
|
// callback ref.
|
|
442
404
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
443
|
-
|
|
444
|
-
return _this;
|
|
405
|
+
this.forwardedButtonRef = useForkRef(props.buttonRef, this.localButtonRef);
|
|
445
406
|
}
|
|
446
|
-
|
|
407
|
+
componentDidMount() {
|
|
447
408
|
this.updateStateFromValue();
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
|
|
409
|
+
}
|
|
410
|
+
componentDidUpdate(prevProps) {
|
|
411
|
+
const { options, value } = this.props;
|
|
451
412
|
if (options !== prevProps.options) {
|
|
452
413
|
this.setNormalizedOptions();
|
|
453
414
|
this.updateStateFromValue();
|
|
@@ -455,8 +416,8 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
455
416
|
if (value !== prevProps.value) {
|
|
456
417
|
this.updateStateFromValue();
|
|
457
418
|
}
|
|
458
|
-
}
|
|
459
|
-
|
|
419
|
+
}
|
|
420
|
+
componentWillUnmount() {
|
|
460
421
|
// Clear timers
|
|
461
422
|
if (this.menuAnimationTimer) {
|
|
462
423
|
clearTimeout(this.menuAnimationTimer);
|
|
@@ -464,14 +425,14 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
464
425
|
if (this.clearKeysSoFarTimer) {
|
|
465
426
|
clearTimeout(this.clearKeysSoFarTimer);
|
|
466
427
|
}
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
|
|
428
|
+
}
|
|
429
|
+
render() {
|
|
430
|
+
const { value,
|
|
470
431
|
// Strip props we don't want to pass down from elemProps
|
|
471
|
-
buttonRef
|
|
472
|
-
|
|
432
|
+
buttonRef, options, onKeyDown, ...elemProps } = this.props;
|
|
433
|
+
const { focusedOptionIndex, menuVisibility } = this.state;
|
|
473
434
|
// Don't pass in event handlers if options weren't defined
|
|
474
|
-
|
|
435
|
+
const eventHandlers = this.areOptionsDefined()
|
|
475
436
|
? {
|
|
476
437
|
onClick: this.handleClick,
|
|
477
438
|
onKeyDown: this.handleKeyDown,
|
|
@@ -479,18 +440,17 @@ var SelectContainer = /** @class */ (function (_super) {
|
|
|
479
440
|
onOptionSelection: this.handleOptionSelection,
|
|
480
441
|
}
|
|
481
442
|
: {};
|
|
482
|
-
return (React.createElement(SelectBase,
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
export var Select = createComponent('button')({
|
|
443
|
+
return (React.createElement(SelectBase, Object.assign({ forwardedButtonRef: this.forwardedButtonRef, localButtonRef: this.localButtonRef, focusedOptionIndex: focusedOptionIndex, inputRef: this.inputRef, menuRef: this.menuRef, menuVisibility: menuVisibility, options: this.normalizedOptions, value: value }, eventHandlers, elemProps)));
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
SelectContainer.ErrorType = ErrorType;
|
|
447
|
+
export const Select = createComponent('button')({
|
|
488
448
|
displayName: 'Select',
|
|
489
|
-
Component:
|
|
449
|
+
Component: (props, ref, Element) => (
|
|
490
450
|
// Select is still a class component, so we render a renamed version of it
|
|
491
451
|
// (SelectContainer) and pass it ref and Element
|
|
492
|
-
React.createElement(SelectContainer,
|
|
452
|
+
React.createElement(SelectContainer, Object.assign({ as: Element, buttonRef: ref }, props))),
|
|
493
453
|
subComponents: {
|
|
494
|
-
ErrorType
|
|
454
|
+
ErrorType,
|
|
495
455
|
},
|
|
496
456
|
});
|