amis 1.5.6-beta.5 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.husky/pre-commit +1 -1
- package/lib/Schema.d.ts +3 -2
- package/lib/Schema.js.map +1 -1
- package/lib/components/AssociatedSelection.d.ts +84 -84
- package/lib/components/AssociatedSelection.js +2 -2
- package/lib/components/AssociatedSelection.js.map +2 -2
- package/lib/components/Avatar.d.ts +135 -0
- package/lib/components/Avatar.js +120 -0
- package/lib/components/Avatar.js.map +13 -0
- package/lib/components/BaiduMapPicker.js.map +2 -2
- package/lib/components/CalendarMobile.d.ts +547 -0
- package/lib/components/CalendarMobile.js +432 -0
- package/lib/components/CalendarMobile.js.map +13 -0
- package/lib/components/Card.js +1 -1
- package/lib/components/Card.js.map +2 -2
- package/lib/components/Cascader.d.ts +123 -0
- package/lib/components/Cascader.js +487 -0
- package/lib/components/Cascader.js.map +13 -0
- package/lib/components/ChainedSelection.d.ts +84 -84
- package/lib/components/ChainedSelection.js +15 -3
- package/lib/components/ChainedSelection.js.map +2 -2
- package/lib/components/CityArea.d.ts +527 -0
- package/lib/components/CityArea.js +177 -0
- package/lib/components/CityArea.js.map +13 -0
- package/lib/components/Collapse.js +1 -1
- package/lib/components/Collapse.js.map +2 -2
- package/lib/components/ColorPicker.d.ts +84 -84
- package/lib/components/ColorPicker.js +4 -3
- package/lib/components/ColorPicker.js.map +2 -2
- package/lib/components/DatePicker.d.ts +85 -84
- package/lib/components/DatePicker.js +15 -8
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.d.ts +85 -84
- package/lib/components/DateRangePicker.js +18 -6
- package/lib/components/DateRangePicker.js.map +2 -2
- package/lib/components/GroupedSelection.d.ts +84 -84
- package/lib/components/GroupedSelection.js +14 -2
- package/lib/components/GroupedSelection.js.map +2 -2
- package/lib/components/MonthRangePicker.d.ts +85 -84
- package/lib/components/MonthRangePicker.js +16 -6
- package/lib/components/MonthRangePicker.js.map +2 -2
- package/lib/components/Overlay.d.ts +1 -1
- package/lib/components/Overlay.js.map +1 -1
- package/lib/components/Picker.d.ts +1 -0
- package/lib/components/Picker.js +16 -7
- package/lib/components/Picker.js.map +2 -2
- package/lib/components/PickerColumn.d.ts +1 -0
- package/lib/components/PickerColumn.js +21 -18
- package/lib/components/PickerColumn.js.map +2 -2
- package/lib/components/PickerContainer.d.ts +3 -0
- package/lib/components/PickerContainer.js +12 -5
- package/lib/components/PickerContainer.js.map +2 -2
- package/lib/components/PopOverContainer.d.ts +1 -0
- package/lib/components/PopOverContainer.js +5 -3
- package/lib/components/PopOverContainer.js.map +2 -2
- package/lib/components/PopUp.d.ts +1041 -28
- package/lib/components/PopUp.js +32 -8
- package/lib/components/PopUp.js.map +2 -2
- package/lib/components/Rating.d.ts +203 -73
- package/lib/components/Rating.js +147 -31
- package/lib/components/Rating.js.map +2 -2
- package/lib/components/ResultBox.d.ts +85 -84
- package/lib/components/ResultBox.js +9 -4
- package/lib/components/ResultBox.js.map +2 -2
- package/lib/components/ResultList.d.ts +9 -2
- package/lib/components/ResultList.js +22 -2
- package/lib/components/ResultList.js.map +2 -2
- package/lib/components/Select.d.ts +237 -237
- package/lib/components/Select.js +9 -6
- package/lib/components/Select.js.map +2 -2
- package/lib/components/Selection.d.ts +94 -86
- package/lib/components/Selection.js +11 -2
- package/lib/components/Selection.js.map +2 -2
- package/lib/components/Steps.js.map +2 -2
- package/lib/components/TableSelection.d.ts +85 -85
- package/lib/components/TableSelection.js +1 -9
- package/lib/components/TableSelection.js.map +2 -2
- package/lib/components/Tabs.js +31 -33
- package/lib/components/Tabs.js.map +2 -2
- package/lib/components/TabsTransfer.d.ts +87 -256
- package/lib/components/TabsTransfer.js +52 -9
- package/lib/components/TabsTransfer.js.map +2 -2
- package/lib/components/TabsTransferPicker.d.ts +1 -1
- package/lib/components/TabsTransferPicker.js +20 -18
- package/lib/components/TabsTransferPicker.js.map +2 -2
- package/lib/components/Timeline.d.ts +69 -0
- package/lib/components/Timeline.js +16 -0
- package/lib/components/Timeline.js.map +13 -0
- package/lib/components/TimelineItem.d.ts +516 -0
- package/lib/components/TimelineItem.js +41 -0
- package/lib/components/TimelineItem.js.map +13 -0
- package/lib/components/Transfer.d.ts +100 -98
- package/lib/components/Transfer.js +2 -3
- package/lib/components/Transfer.js.map +2 -2
- package/lib/components/TransferDropDown.d.ts +85 -84
- package/lib/components/TransferDropDown.js +9 -10
- package/lib/components/TransferDropDown.js.map +2 -2
- package/lib/components/TransferPicker.d.ts +1 -0
- package/lib/components/TransferPicker.js +19 -4
- package/lib/components/TransferPicker.js.map +2 -2
- package/lib/components/TreeSelection.d.ts +85 -85
- package/lib/components/TreeSelection.js +7 -1
- package/lib/components/TreeSelection.js.map +2 -2
- package/lib/components/calendar/Calendar.d.ts +19 -0
- package/lib/components/calendar/Calendar.js +71 -1
- package/lib/components/calendar/Calendar.js.map +2 -2
- package/lib/components/calendar/DaysView.d.ts +21 -0
- package/lib/components/calendar/DaysView.js +76 -17
- package/lib/components/calendar/DaysView.js.map +2 -2
- package/lib/components/calendar/MonthsView.d.ts +34 -0
- package/lib/components/calendar/MonthsView.js +68 -3
- package/lib/components/calendar/MonthsView.js.map +2 -2
- package/lib/components/calendar/QuartersView.d.ts +1 -0
- package/lib/components/calendar/QuartersView.js +2 -2
- package/lib/components/calendar/QuartersView.js.map +2 -2
- package/lib/components/calendar/TimeView.d.ts +30 -18
- package/lib/components/calendar/TimeView.js +47 -8
- package/lib/components/calendar/TimeView.js.map +2 -2
- package/lib/components/calendar/YearsView.d.ts +6 -0
- package/lib/components/calendar/YearsView.js +21 -10
- package/lib/components/calendar/YearsView.js.map +2 -2
- package/lib/components/condition-builder/Field.js +1 -4
- package/lib/components/condition-builder/Field.js.map +2 -2
- package/lib/components/condition-builder/Func.js +1 -1
- package/lib/components/condition-builder/Func.js.map +2 -2
- package/lib/components/formula/Editor.d.ts +3 -0
- package/lib/components/formula/Editor.js +3 -2
- package/lib/components/formula/Editor.js.map +2 -2
- package/lib/components/formula/FuncList.js +2 -1
- package/lib/components/formula/FuncList.js.map +2 -2
- package/lib/components/formula/Picker.js +1 -1
- package/lib/components/formula/Picker.js.map +2 -2
- package/lib/components/icons.js +4 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/components/index.d.ts +2 -1
- package/lib/components/index.js +4 -2
- package/lib/components/index.js.map +2 -2
- package/lib/components/virtual-list/SizeAndPositionManager.js.map +2 -2
- package/lib/components/virtual-list/index.js +1 -2
- package/lib/components/virtual-list/index.js.map +2 -2
- package/lib/factory.js +5 -0
- package/lib/factory.js.map +2 -2
- package/lib/icons/star.js +12 -0
- package/lib/icons/tree-down.js +7 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +2 -2
- package/lib/locale/de-DE.js +17 -2
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +17 -2
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +16 -1
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Avatar.d.ts +35 -26
- package/lib/renderers/Avatar.js +14 -19
- package/lib/renderers/Avatar.js.map +2 -2
- package/lib/renderers/CRUD.js +1 -2
- package/lib/renderers/CRUD.js.map +2 -2
- package/lib/renderers/Card.js +6 -5
- package/lib/renderers/Card.js.map +2 -2
- package/lib/renderers/Custom.js.map +2 -2
- package/lib/renderers/DropDownButton.d.ts +11 -2
- package/lib/renderers/DropDownButton.js +30 -12
- package/lib/renderers/DropDownButton.js.map +2 -2
- package/lib/renderers/Each.js +5 -2
- package/lib/renderers/Each.js.map +2 -2
- package/lib/renderers/Flex.js +1 -5
- package/lib/renderers/Flex.js.map +2 -2
- package/lib/renderers/Form/ChartRadios.js.map +2 -2
- package/lib/renderers/Form/Checkboxes.js.map +2 -2
- package/lib/renderers/Form/CityDB.js +526 -2
- package/lib/renderers/Form/CityDB.js.map +2 -2
- package/lib/renderers/Form/DiffEditor.js +2 -1
- package/lib/renderers/Form/DiffEditor.js.map +2 -2
- package/lib/renderers/Form/InputCity.d.ts +85 -84
- package/lib/renderers/Form/InputCity.js +4 -2
- package/lib/renderers/Form/InputCity.js.map +2 -2
- package/lib/renderers/Form/InputColor.d.ts +84 -84
- package/lib/renderers/Form/InputColor.js +6 -2
- package/lib/renderers/Form/InputColor.js.map +2 -2
- package/lib/renderers/Form/InputDate.js +10 -5
- package/lib/renderers/Form/InputDate.js.map +2 -2
- package/lib/renderers/Form/InputDateRange.js +6 -2
- package/lib/renderers/Form/InputDateRange.js.map +2 -2
- package/lib/renderers/Form/InputFormula.d.ts +4 -1
- package/lib/renderers/Form/InputFormula.js +2 -2
- package/lib/renderers/Form/InputFormula.js.map +2 -2
- package/lib/renderers/Form/InputImage.d.ts +1 -0
- package/lib/renderers/Form/InputImage.js +8 -4
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputMonthRange.js +1 -1
- package/lib/renderers/Form/InputMonthRange.js.map +2 -2
- package/lib/renderers/Form/InputQuarterRange.js +1 -1
- package/lib/renderers/Form/InputQuarterRange.js.map +2 -2
- package/lib/renderers/Form/InputRating.d.ts +37 -0
- package/lib/renderers/Form/InputRating.js +6 -2
- package/lib/renderers/Form/InputRating.js.map +2 -2
- package/lib/renderers/Form/InputYearRange.js +1 -1
- package/lib/renderers/Form/InputYearRange.js.map +2 -2
- package/lib/renderers/Form/Item.d.ts +10 -14
- package/lib/renderers/Form/Item.js +18 -9
- package/lib/renderers/Form/Item.js.map +2 -2
- package/lib/renderers/Form/NestedSelect.d.ts +1 -0
- package/lib/renderers/Form/NestedSelect.js +8 -4
- package/lib/renderers/Form/NestedSelect.js.map +2 -2
- package/lib/renderers/Form/Select.d.ts +2 -0
- package/lib/renderers/Form/Select.js +7 -4
- package/lib/renderers/Form/Select.js.map +2 -2
- package/lib/renderers/Form/TabsTransfer.d.ts +5 -32
- package/lib/renderers/Form/TabsTransfer.js +20 -1
- package/lib/renderers/Form/TabsTransfer.js.map +2 -2
- package/lib/renderers/Form/TabsTransferPicker.d.ts +5 -35
- package/lib/renderers/Form/TabsTransferPicker.js +21 -2
- package/lib/renderers/Form/TabsTransferPicker.js.map +2 -2
- package/lib/renderers/Form/Transfer.d.ts +15 -4
- package/lib/renderers/Form/Transfer.js +55 -18
- package/lib/renderers/Form/Transfer.js.map +2 -2
- package/lib/renderers/Form/TransferPicker.d.ts +3 -32
- package/lib/renderers/Form/TransferPicker.js +1 -1
- package/lib/renderers/Form/TransferPicker.js.map +2 -2
- package/lib/renderers/Form/TreeSelect.js +4 -4
- package/lib/renderers/Form/TreeSelect.js.map +2 -2
- package/lib/renderers/Form/index.js +2 -1
- package/lib/renderers/Form/index.js.map +2 -2
- package/lib/renderers/IFrame.js +0 -2
- package/lib/renderers/IFrame.js.map +2 -2
- package/lib/renderers/Json.js +7 -0
- package/lib/renderers/Json.js.map +2 -2
- package/lib/renderers/Nav.js +4 -1
- package/lib/renderers/Nav.js.map +2 -2
- package/lib/renderers/Remark.d.ts +4 -0
- package/lib/renderers/Remark.js +39 -7
- package/lib/renderers/Remark.js.map +2 -2
- package/lib/renderers/Steps.js +5 -5
- package/lib/renderers/Steps.js.map +2 -2
- package/lib/renderers/Table/TableRow.js +4 -1
- package/lib/renderers/Table/TableRow.js.map +2 -2
- package/lib/renderers/Table/index.js +4 -1
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/renderers/Tabs.js +1 -1
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/renderers/Timeline.d.ts +65 -0
- package/lib/renderers/Timeline.js +54 -0
- package/lib/renderers/Timeline.js.map +13 -0
- package/lib/renderers/Video.js.map +2 -2
- package/lib/schemaExtend.js +23 -9
- package/lib/schemaExtend.js.map +2 -2
- package/lib/store/combo.js.map +2 -2
- package/lib/store/formItem.js +6 -6
- package/lib/store/formItem.js.map +2 -2
- package/lib/store/table.js +1 -1
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +1018 -67
- package/lib/themes/ang.css +1018 -67
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +1053 -67
- package/lib/themes/antd.css +1053 -67
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +1058 -78
- package/lib/themes/cxd.css +1058 -78
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +1019 -67
- package/lib/themes/dark.css +1019 -67
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +1058 -78
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/RootClose.js +3 -1
- package/lib/utils/RootClose.js.map +2 -2
- package/lib/utils/helper.d.ts +1 -6
- package/lib/utils/helper.js +6 -17
- package/lib/utils/helper.js.map +2 -2
- package/package.json +12 -6
- package/schema.json +3696 -971
- package/scss/_properties.scss +21 -7
- package/scss/components/_avatar.scss +27 -9
- package/scss/components/_calendar.scss +287 -0
- package/scss/components/_card.scss +1 -1
- package/scss/components/_cascader.scss +102 -0
- package/scss/components/_city-area.scss +27 -0
- package/scss/components/_collapse-group.scss +1 -3
- package/scss/components/_dropdown.scss +39 -9
- package/scss/components/_formula.scss +30 -6
- package/scss/components/_modal.scss +18 -0
- package/scss/components/_panel.scss +45 -0
- package/scss/components/_picker-columns.scss +15 -5
- package/scss/components/_popup.scss +42 -15
- package/scss/components/_result-box.scss +31 -0
- package/scss/components/_timeline.scss +198 -0
- package/scss/components/form/_checks.scss +2 -0
- package/scss/components/form/_color.scss +2 -2
- package/scss/components/form/_date-range.scss +1 -1
- package/scss/components/form/_date.scss +46 -1
- package/scss/components/form/_form.scss +168 -0
- package/scss/components/form/_nested-select.scss +3 -0
- package/scss/components/form/_rating.scss +60 -21
- package/scss/components/form/_result-list.scss +2 -0
- package/scss/components/form/_select.scss +32 -3
- package/scss/components/form/_selection.scss +5 -4
- package/scss/components/form/_transfer.scss +3 -0
- package/scss/components/form/_tree-select.scss +1 -1
- package/scss/themes/_antd-variables.scss +42 -0
- package/scss/themes/_common.scss +3 -0
- package/scss/themes/_cxd-variables.scss +51 -2
- package/scss/themes/_dark-variables.scss +1 -0
- package/scss/themes/cxd.scss +0 -12
- package/sdk/ang-ie11.css +1278 -141
- package/sdk/ang.css +1296 -153
- package/sdk/antd-ie11.css +1278 -141
- package/sdk/antd.css +1331 -153
- package/sdk/charts.js +14 -14
- package/sdk/codemirror.js +7 -7
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +1258 -132
- package/sdk/cxd.css +1338 -168
- package/sdk/dark-ie11.css +1278 -141
- package/sdk/dark.css +1297 -153
- package/sdk/exceljs.js +1 -1
- package/sdk/locale/de-DE.js +17 -2
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +18 -18
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +1258 -132
- package/sdk/sdk.css +1338 -168
- package/sdk/sdk.js +1242 -1218
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/src/Schema.ts +3 -0
- package/src/components/AssociatedSelection.tsx +5 -1
- package/src/components/Avatar.tsx +253 -0
- package/src/components/BaiduMapPicker.tsx +19 -14
- package/src/components/CalendarMobile.tsx +563 -0
- package/src/components/Card.tsx +2 -2
- package/src/components/Cascader.tsx +564 -0
- package/src/components/ChainedSelection.tsx +16 -3
- package/src/components/CityArea.tsx +315 -0
- package/src/components/Collapse.tsx +1 -1
- package/src/components/ColorPicker.tsx +41 -40
- package/src/components/DatePicker.tsx +54 -38
- package/src/components/DateRangePicker.tsx +83 -29
- package/src/components/GroupedSelection.tsx +14 -2
- package/src/components/MonthRangePicker.tsx +76 -30
- package/src/components/Overlay.tsx +1 -1
- package/src/components/Picker.tsx +55 -35
- package/src/components/PickerColumn.tsx +43 -36
- package/src/components/PickerContainer.tsx +13 -1
- package/src/components/PopOverContainer.tsx +31 -17
- package/src/components/PopUp.tsx +84 -57
- package/src/components/Rating.tsx +235 -47
- package/src/components/ResultBox.tsx +14 -2
- package/src/components/ResultList.tsx +36 -6
- package/src/components/Select.tsx +20 -23
- package/src/components/Selection.tsx +21 -3
- package/src/components/Steps.tsx +23 -10
- package/src/components/TableSelection.tsx +1 -44
- package/src/components/Tabs.tsx +65 -54
- package/src/components/TabsTransfer.tsx +78 -9
- package/src/components/TabsTransferPicker.tsx +25 -13
- package/src/components/Timeline.tsx +31 -0
- package/src/components/TimelineItem.tsx +107 -0
- package/src/components/Transfer.tsx +11 -8
- package/src/components/TransferDropDown.tsx +20 -12
- package/src/components/TransferPicker.tsx +25 -4
- package/src/components/TreeSelection.tsx +7 -1
- package/src/components/calendar/Calendar.tsx +101 -4
- package/src/components/calendar/DaysView.tsx +165 -33
- package/src/components/calendar/MonthsView.tsx +108 -1
- package/src/components/calendar/QuartersView.tsx +3 -2
- package/src/components/calendar/TimeView.tsx +104 -41
- package/src/components/calendar/YearsView.tsx +34 -17
- package/src/components/condition-builder/Field.tsx +1 -3
- package/src/components/condition-builder/Func.tsx +1 -1
- package/src/components/formula/Editor.tsx +16 -11
- package/src/components/formula/FuncList.tsx +3 -1
- package/src/components/formula/Picker.tsx +2 -1
- package/src/components/icons.tsx +4 -0
- package/src/components/index.tsx +2 -0
- package/src/components/virtual-list/SizeAndPositionManager.ts +6 -3
- package/src/components/virtual-list/index.tsx +4 -6
- package/src/factory.tsx +6 -0
- package/src/icons/star.svg +12 -0
- package/src/icons/tree-down.svg +5 -0
- package/src/index.tsx +1 -0
- package/src/locale/de-DE.ts +17 -2
- package/src/locale/en-US.ts +17 -2
- package/src/locale/zh-CN.ts +16 -1
- package/src/renderers/Avatar.tsx +83 -74
- package/src/renderers/CRUD.tsx +1 -3
- package/src/renderers/Card.tsx +10 -6
- package/src/renderers/Custom.tsx +6 -3
- package/src/renderers/DropDownButton.tsx +69 -35
- package/src/renderers/Each.tsx +4 -4
- package/src/renderers/Flex.tsx +3 -7
- package/src/renderers/Form/ChartRadios.tsx +2 -7
- package/src/renderers/Form/Checkboxes.tsx +1 -1
- package/src/renderers/Form/CityDB.ts +526 -2
- package/src/renderers/Form/DiffEditor.tsx +2 -3
- package/src/renderers/Form/InputCity.tsx +23 -3
- package/src/renderers/Form/InputColor.tsx +21 -2
- package/src/renderers/Form/InputDate.tsx +48 -20
- package/src/renderers/Form/InputDateRange.tsx +9 -2
- package/src/renderers/Form/InputFormula.tsx +9 -4
- package/src/renderers/Form/InputImage.tsx +9 -4
- package/src/renderers/Form/InputMonthRange.tsx +0 -1
- package/src/renderers/Form/InputQuarterRange.tsx +0 -1
- package/src/renderers/Form/InputRating.tsx +66 -3
- package/src/renderers/Form/InputYearRange.tsx +0 -1
- package/src/renderers/Form/Item.tsx +29 -8
- package/src/renderers/Form/NestedSelect.tsx +32 -4
- package/src/renderers/Form/Select.tsx +15 -3
- package/src/renderers/Form/TabsTransfer.tsx +28 -38
- package/src/renderers/Form/TabsTransferPicker.tsx +28 -46
- package/src/renderers/Form/Transfer.tsx +75 -24
- package/src/renderers/Form/TransferPicker.tsx +6 -38
- package/src/renderers/Form/TreeSelect.tsx +18 -16
- package/src/renderers/Form/index.tsx +2 -1
- package/src/renderers/IFrame.tsx +0 -2
- package/src/renderers/Json.tsx +5 -0
- package/src/renderers/Nav.tsx +4 -1
- package/src/renderers/Remark.tsx +68 -18
- package/src/renderers/Steps.tsx +11 -13
- package/src/renderers/Table/TableRow.tsx +3 -1
- package/src/renderers/Table/index.tsx +7 -1
- package/src/renderers/Tabs.tsx +6 -2
- package/src/renderers/Timeline.tsx +141 -0
- package/src/renderers/Video.tsx +4 -20
- package/src/schemaExtend.ts +22 -10
- package/src/store/combo.ts +1 -3
- package/src/store/formItem.ts +2 -2
- package/src/store/table.ts +2 -1
- package/src/utils/RootClose.ts +5 -1
- package/src/utils/helper.ts +6 -16
package/lib/components/Rating.js
CHANGED
@@ -8,12 +8,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.Rating = void 0;
|
9
9
|
var tslib_1 = require("tslib");
|
10
10
|
var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
11
|
-
var classnames_1 = (0, tslib_1.__importDefault)(require("classnames"));
|
12
11
|
var theme_1 = require("../theme");
|
12
|
+
var helper_1 = require("../utils/helper");
|
13
|
+
var icons_1 = require("./icons");
|
13
14
|
var Rating = /** @class */ (function (_super) {
|
14
15
|
(0, tslib_1.__extends)(Rating, _super);
|
15
16
|
function Rating(props) {
|
16
17
|
var _this = _super.call(this, props) || this;
|
18
|
+
_this.starsNode = {};
|
17
19
|
_this.state = {
|
18
20
|
value: props.value || 0,
|
19
21
|
stars: [],
|
@@ -21,7 +23,10 @@ var Rating = /** @class */ (function (_super) {
|
|
21
23
|
halfStar: {
|
22
24
|
at: Math.floor(props.value),
|
23
25
|
hidden: props.half && props.value % 1 < 0.5
|
24
|
-
}
|
26
|
+
},
|
27
|
+
showColor: '',
|
28
|
+
showText: null,
|
29
|
+
hoverValue: null
|
25
30
|
};
|
26
31
|
_this.getRate = _this.getRate.bind(_this);
|
27
32
|
_this.getStars = _this.getStars.bind(_this);
|
@@ -29,6 +34,8 @@ var Rating = /** @class */ (function (_super) {
|
|
29
34
|
_this.mouseOver = _this.mouseOver.bind(_this);
|
30
35
|
_this.mouseLeave = _this.mouseLeave.bind(_this);
|
31
36
|
_this.handleClick = _this.handleClick.bind(_this);
|
37
|
+
_this.saveRef = _this.saveRef.bind(_this);
|
38
|
+
_this.handleStarMouseLeave = _this.handleStarMouseLeave.bind(_this);
|
32
39
|
return _this;
|
33
40
|
}
|
34
41
|
Rating.prototype.componentDidMount = function () {
|
@@ -36,6 +43,7 @@ var Rating = /** @class */ (function (_super) {
|
|
36
43
|
this.setState({
|
37
44
|
stars: this.getStars(value)
|
38
45
|
});
|
46
|
+
this.getShowColorAndText(value);
|
39
47
|
};
|
40
48
|
Rating.prototype.componentDidUpdate = function (prevProps) {
|
41
49
|
var props = this.props;
|
@@ -50,6 +58,47 @@ var Rating = /** @class */ (function (_super) {
|
|
50
58
|
});
|
51
59
|
}
|
52
60
|
};
|
61
|
+
Rating.prototype.sortKeys = function (map) {
|
62
|
+
return Object.keys(map).sort(function (a, b) { return Number(a) - Number(b); });
|
63
|
+
};
|
64
|
+
Rating.prototype.getShowColorAndText = function (value) {
|
65
|
+
var _a = this.props, colors = _a.colors, texts = _a.texts, half = _a.half;
|
66
|
+
if (!value)
|
67
|
+
return this.setState({
|
68
|
+
showText: null
|
69
|
+
});
|
70
|
+
// 对 value 取整
|
71
|
+
if (half) {
|
72
|
+
value = Math.floor(Number(value) * 2) / 2;
|
73
|
+
}
|
74
|
+
else {
|
75
|
+
value = Math.floor(value);
|
76
|
+
}
|
77
|
+
if (colors && typeof colors !== 'string') {
|
78
|
+
var keys = this.sortKeys(colors);
|
79
|
+
var showKey = keys.filter(function (item) { return Number(item) < value; }).length;
|
80
|
+
var showColor = keys[showKey] !== undefined && colors[keys[showKey]];
|
81
|
+
showColor &&
|
82
|
+
this.setState({
|
83
|
+
showColor: showColor
|
84
|
+
});
|
85
|
+
}
|
86
|
+
else if (colors && typeof colors === 'string') {
|
87
|
+
this.setState({
|
88
|
+
showColor: colors
|
89
|
+
});
|
90
|
+
}
|
91
|
+
if (texts && (0, helper_1.isObject)(texts)) {
|
92
|
+
var keys = this.sortKeys(texts);
|
93
|
+
var showKey = keys.filter(function (item) { return Number(item) < value; }).length;
|
94
|
+
var showText = keys[showKey] !== undefined &&
|
95
|
+
texts[keys[showKey]];
|
96
|
+
showText &&
|
97
|
+
this.setState({
|
98
|
+
showText: showText
|
99
|
+
});
|
100
|
+
}
|
101
|
+
};
|
53
102
|
Rating.prototype.getRate = function () {
|
54
103
|
var stars;
|
55
104
|
var value = this.state.value;
|
@@ -75,16 +124,24 @@ var Rating = /** @class */ (function (_super) {
|
|
75
124
|
}
|
76
125
|
return stars;
|
77
126
|
};
|
78
|
-
Rating.prototype.
|
127
|
+
Rating.prototype.saveRef = function (index) {
|
128
|
+
var _this = this;
|
129
|
+
return function (node) {
|
130
|
+
_this.starsNode[String(index)] = node;
|
131
|
+
};
|
132
|
+
};
|
133
|
+
Rating.prototype.mouseOver = function (event, index) {
|
79
134
|
var isClear = this.state.isClear;
|
80
135
|
if (isClear)
|
81
136
|
return;
|
82
|
-
var _a = this.props, readOnly = _a.readOnly,
|
137
|
+
var _a = this.props, readOnly = _a.readOnly, half = _a.half;
|
83
138
|
if (readOnly)
|
84
139
|
return;
|
85
|
-
var index = Number(event.target.getAttribute('data-index'));
|
86
140
|
if (half) {
|
87
|
-
var isAtHalf = this.moreThanHalf(event,
|
141
|
+
var isAtHalf = this.moreThanHalf(event, index);
|
142
|
+
var tmpValue = isAtHalf ? index + 1 : index + 0.5;
|
143
|
+
this.getShowColorAndText(tmpValue);
|
144
|
+
this.onHoverChange(tmpValue);
|
88
145
|
if (isAtHalf)
|
89
146
|
index = index + 1;
|
90
147
|
this.setState({
|
@@ -96,16 +153,27 @@ var Rating = /** @class */ (function (_super) {
|
|
96
153
|
}
|
97
154
|
else {
|
98
155
|
index = index + 1;
|
156
|
+
this.onHoverChange(index);
|
157
|
+
this.getShowColorAndText(index);
|
99
158
|
}
|
100
159
|
this.setState({
|
101
160
|
stars: this.getStars(index)
|
102
161
|
});
|
103
162
|
};
|
104
|
-
Rating.prototype.
|
105
|
-
var
|
106
|
-
var
|
107
|
-
|
108
|
-
|
163
|
+
Rating.prototype.onHoverChange = function (value) {
|
164
|
+
var onHoverChange = this.props.onHoverChange;
|
165
|
+
var hoverValue = this.state.hoverValue;
|
166
|
+
if (!hoverValue || (hoverValue && hoverValue !== value)) {
|
167
|
+
this.setState({
|
168
|
+
hoverValue: value
|
169
|
+
});
|
170
|
+
onHoverChange && onHoverChange(value);
|
171
|
+
}
|
172
|
+
};
|
173
|
+
Rating.prototype.moreThanHalf = function (event, index) {
|
174
|
+
var star = this.starsNode[index];
|
175
|
+
var leftPos = star.getBoundingClientRect().left;
|
176
|
+
return event.clientX - leftPos > star.clientWidth / 2;
|
109
177
|
};
|
110
178
|
Rating.prototype.mouseLeave = function () {
|
111
179
|
var _a = this.state, value = _a.value, isClear = _a.isClear;
|
@@ -113,7 +181,10 @@ var Rating = /** @class */ (function (_super) {
|
|
113
181
|
if (readOnly)
|
114
182
|
return;
|
115
183
|
if (isClear)
|
116
|
-
return this.setState({
|
184
|
+
return this.setState({
|
185
|
+
isClear: false,
|
186
|
+
hoverValue: null
|
187
|
+
});
|
117
188
|
if (half) {
|
118
189
|
this.setState({
|
119
190
|
halfStar: {
|
@@ -123,17 +194,36 @@ var Rating = /** @class */ (function (_super) {
|
|
123
194
|
});
|
124
195
|
}
|
125
196
|
this.setState({
|
126
|
-
stars: this.getStars()
|
197
|
+
stars: this.getStars(),
|
198
|
+
hoverValue: null
|
127
199
|
});
|
200
|
+
this.getShowColorAndText(value);
|
128
201
|
};
|
129
|
-
Rating.prototype.
|
130
|
-
var
|
202
|
+
Rating.prototype.handleStarMouseLeave = function (event, index) {
|
203
|
+
var star = this.starsNode[index];
|
204
|
+
var leftSideX = star.getBoundingClientRect().left;
|
205
|
+
var isClear = this.state.isClear;
|
206
|
+
if (isClear)
|
207
|
+
return this.setState({ isClear: false });
|
208
|
+
// leave star from left side
|
209
|
+
if (event.clientX <= leftSideX) {
|
210
|
+
this.getShowColorAndText(index);
|
211
|
+
this.setState({
|
212
|
+
stars: this.getStars(index),
|
213
|
+
halfStar: {
|
214
|
+
at: index,
|
215
|
+
hidden: true
|
216
|
+
}
|
217
|
+
});
|
218
|
+
}
|
219
|
+
};
|
220
|
+
Rating.prototype.handleClick = function (event, index) {
|
221
|
+
var _a = this.props, half = _a.half, readOnly = _a.readOnly, onChange = _a.onChange, allowClear = _a.allowClear;
|
131
222
|
if (readOnly)
|
132
223
|
return;
|
133
|
-
var index = Number(event.target.getAttribute('data-index'));
|
134
224
|
var value;
|
135
225
|
if (half) {
|
136
|
-
var isAtHalf = this.moreThanHalf(event,
|
226
|
+
var isAtHalf = this.moreThanHalf(event, index);
|
137
227
|
if (isAtHalf)
|
138
228
|
index = index + 1;
|
139
229
|
value = isAtHalf ? index : index + 0.5;
|
@@ -155,24 +245,45 @@ var Rating = /** @class */ (function (_super) {
|
|
155
245
|
stars: this.getStars(index),
|
156
246
|
isClear: isClear
|
157
247
|
});
|
248
|
+
this.getShowColorAndText(value);
|
158
249
|
onChange && onChange(value);
|
159
250
|
};
|
160
251
|
Rating.prototype.renderStars = function () {
|
161
252
|
var _this = this;
|
162
|
-
var _a = this.state, halfStar = _a.halfStar, stars = _a.stars;
|
163
|
-
var _b = this.props, char = _b.char, half = _b.half, disabled = _b.disabled, readOnly = _b.readOnly, cx = _b.classnames;
|
164
|
-
return stars.map(function (star, i) {
|
165
|
-
var
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
253
|
+
var _a = this.state, halfStar = _a.halfStar, stars = _a.stars, showColor = _a.showColor;
|
254
|
+
var _b = this.props, inactiveColor = _b.inactiveColor, char = _b.char, half = _b.half, disabled = _b.disabled, readOnly = _b.readOnly, charClassName = _b.charClassName, cx = _b.classnames;
|
255
|
+
return (react_1.default.createElement("ul", { onMouseLeave: this.mouseLeave }, stars.map(function (star, i) {
|
256
|
+
var isThisHalf = half && !halfStar.hidden && halfStar.at === i;
|
257
|
+
return (react_1.default.createElement("li", { ref: _this.saveRef(i), className: cx('Rating-star', charClassName, {
|
258
|
+
'is-half': isThisHalf,
|
259
|
+
'is-active': star.active,
|
260
|
+
'is-disabled': readOnly || disabled
|
261
|
+
}), key: i, style: {
|
262
|
+
color: star.active ? showColor : inactiveColor
|
263
|
+
}, onMouseOver: function (e) { return _this.mouseOver(e, i); }, onMouseMove: function (e) { return _this.mouseOver(e, i); }, onClick: function (e) { return _this.handleClick(e, i); }, onMouseLeave: function (e) { return _this.handleStarMouseLeave(e, i); } },
|
264
|
+
isThisHalf && (react_1.default.createElement("div", { className: cx('Rating-star-half'), style: {
|
265
|
+
color: showColor
|
266
|
+
} }, char)),
|
267
|
+
char));
|
268
|
+
})));
|
269
|
+
};
|
270
|
+
Rating.prototype.renderText = function () {
|
271
|
+
var _a;
|
272
|
+
var showText = this.state.showText;
|
273
|
+
var _b = this.props, textClassName = _b.textClassName, textPosition = _b.textPosition, cx = _b.classnames;
|
274
|
+
if (!showText)
|
275
|
+
return null;
|
276
|
+
return (react_1.default.createElement("span", { className: cx('Rating-text', textClassName, (_a = {},
|
277
|
+
_a["Rating-text--" + (textPosition === 'left' ? 'left' : 'right')] = textPosition,
|
278
|
+
_a)) }, showText));
|
172
279
|
};
|
173
280
|
Rating.prototype.render = function () {
|
174
|
-
var
|
175
|
-
return (react_1.default.createElement("div", { className: (
|
281
|
+
var _a = this.props, className = _a.className, textPosition = _a.textPosition, cx = _a.classnames;
|
282
|
+
return (react_1.default.createElement("div", { className: cx('Rating', className) }, textPosition === 'left' ? (react_1.default.createElement(react_1.default.Fragment, null,
|
283
|
+
this.renderText(),
|
284
|
+
this.renderStars())) : (react_1.default.createElement(react_1.default.Fragment, null,
|
285
|
+
this.renderStars(),
|
286
|
+
this.renderText()))));
|
176
287
|
};
|
177
288
|
Rating.defaultProps = {
|
178
289
|
containerClass: 'rating',
|
@@ -181,8 +292,13 @@ var Rating = /** @class */ (function (_super) {
|
|
181
292
|
allowClear: true,
|
182
293
|
value: 0,
|
183
294
|
count: 5,
|
184
|
-
char:
|
185
|
-
|
295
|
+
char: react_1.default.createElement(icons_1.Icon, { icon: "star", className: "icon" }),
|
296
|
+
colors: {
|
297
|
+
'2': '#abadb1',
|
298
|
+
'3': '#787b81',
|
299
|
+
'5': '#ffa900'
|
300
|
+
},
|
301
|
+
textPosition: 'right'
|
186
302
|
};
|
187
303
|
return Rating;
|
188
304
|
}(react_1.default.Component));
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/components/Rating.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";AAAA;;;;GAIG;;;;AAEH,6DAA0B;
|
9
|
+
"mappings": ";AAAA;;;;GAIG;;;;AAEH,6DAA0B;AAE1B,kCAAiD;AAEjD,0CAAyC;AACzC,iCAA6B;AA6B7B;IAA4B,uCAAiC;IAmB3D,gBAAY,KAAkB;QAA9B,YACE,kBAAM,KAAK,CAAC,SAyBb;QAvBC,KAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,KAAI,CAAC,KAAK,GAAG;YACX,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;YACvB,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE;gBACR,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC3B,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG;aAC5C;YACD,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;SACjB,CAAC;QAEF,KAAI,CAAC,OAAO,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACvC,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACzC,KAAI,CAAC,YAAY,GAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACjD,KAAI,CAAC,SAAS,GAAG,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QAC3C,KAAI,CAAC,UAAU,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QAC7C,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QAC/C,KAAI,CAAC,OAAO,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACvC,KAAI,CAAC,oBAAoB,GAAG,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;;IACnE,CAAC;IAED,kCAAiB,GAAjB;QACS,IAAA,KAAK,GAAI,IAAI,CAAC,KAAK,MAAd,CAAe;QAC3B,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,mCAAkB,GAAlB,UAAmB,SAAsB;QACvC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC;gBACZ,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;gBACjC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE;oBACR,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC3B,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG;iBAC5C;aACF,CAAC,CAAC;SACJ;IACH,CAAC;IAED,yBAAQ,GAAR,UAAS,GAAiC;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,UAAC,CAAkB,EAAE,CAAkB,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAArB,CAAqB,CAClE,CAAC;IACJ,CAAC;IAED,oCAAmB,GAAnB,UAAoB,KAAa;QACzB,IAAA,KAAwB,IAAI,CAAC,KAAK,EAAjC,MAAM,YAAA,EAAE,KAAK,WAAA,EAAE,IAAI,UAAc,CAAC;QAEzC,IAAI,CAAC,KAAK;YACR,OAAO,IAAI,CAAC,QAAQ,CAAC;gBACnB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QAEL,aAAa;QACb,IAAI,IAAI,EAAE;YACR,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SAC3C;aAAM;YACL,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC3B;QAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YACxC,IAAM,IAAI,GAAa,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,EAApB,CAAoB,CAAC,CAAC,MAAM,CAAC;YAEjE,IAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACvE,SAAS;gBACP,IAAI,CAAC,QAAQ,CAAC;oBACZ,SAAS,WAAA;iBACV,CAAC,CAAC;SACN;aAAM,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC/C,IAAI,CAAC,QAAQ,CAAC;gBACZ,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;SACJ;QAED,IAAI,KAAK,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;YAC5B,IAAM,IAAI,GAAa,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,EAApB,CAAoB,CAAC,CAAC,MAAM,CAAC;YACjE,IAAM,QAAQ,GACZ,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS;gBAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAuB,CAAC,CAAC;YAC7C,QAAQ;gBACN,IAAI,CAAC,QAAQ,CAAC;oBACZ,QAAQ,UAAA;iBACT,CAAC,CAAC;SACN;IACH,CAAC;IAED,wBAAO,GAAP;QACE,IAAI,KAAK,CAAC;QACH,IAAA,KAAK,GAAI,IAAI,CAAC,KAAK,MAAd,CAAe;QACpB,IAAA,IAAI,GAAI,IAAI,CAAC,KAAK,KAAd,CAAe;QAC1B,IAAI,IAAI,EAAE;YACR,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC3B;aAAM;YACL,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC3B;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yBAAQ,GAAR,UAAS,WAAoB;QAC3B,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;YACtC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;SAC9B;QACD,IAAI,KAAK,GAAG,EAAE,CAAC;QACR,IAAA,KAAK,GAAI,IAAI,CAAC,KAAK,MAAd,CAAe;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9B,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,CAAC,IAAI,WAAW,GAAG,CAAC;aAC7B,CAAC,CAAC;SACJ;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wBAAO,GAAP,UAAQ,KAAa;QAArB,iBAIC;QAHC,OAAO,UAAC,IAAqB;YAC3B,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QACvC,CAAC,CAAC;IACJ,CAAC;IAED,0BAAS,GAAT,UAAU,KAA6B,EAAE,KAAa;QAC7C,IAAA,OAAO,GAAI,IAAI,CAAC,KAAK,QAAd,CAAe;QAC7B,IAAI,OAAO;YAAE,OAAO;QAEd,IAAA,KAAmB,IAAI,CAAC,KAAK,EAA5B,QAAQ,cAAA,EAAE,IAAI,UAAc,CAAC;QAEpC,IAAI,QAAQ;YAAE,OAAO;QAErB,IAAI,IAAI,EAAE;YACR,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEjD,IAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;YAEpD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE7B,IAAI,QAAQ;gBAAE,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC;gBACZ,QAAQ,EAAE;oBACR,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,QAAQ;iBACjB;aACF,CAAC,CAAC;SACJ;aAAM;YACL,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACjC;QACD,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,8BAAa,GAAb,UAAc,KAAa;QAClB,IAAA,aAAa,GAAI,IAAI,CAAC,KAAK,cAAd,CAAe;QAC5B,IAAA,UAAU,GAAI,IAAI,CAAC,KAAK,WAAd,CAAe;QAEhC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,KAAK,CAAC,EAAE;YACvD,IAAI,CAAC,QAAQ,CAAC;gBACZ,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;YACH,aAAa,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;SACvC;IACH,CAAC;IAED,6BAAY,GAAZ,UAAa,KAAU,EAAE,KAAa;QACpC,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,IAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;QAElD,OAAO,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,2BAAU,GAAV;QACQ,IAAA,KAAmB,IAAI,CAAC,KAAK,EAA5B,KAAK,WAAA,EAAE,OAAO,aAAc,CAAC;QAC9B,IAAA,KAAmB,IAAI,CAAC,KAAK,EAA5B,IAAI,UAAA,EAAE,QAAQ,cAAc,CAAC;QACpC,IAAI,QAAQ;YAAE,OAAO;QACrB,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,QAAQ,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QAEL,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,QAAQ,CAAC;gBACZ,QAAQ,EAAE;oBACR,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBACrB,MAAM,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,gCAAgC;iBACzD;aACF,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,qCAAoB,GAApB,UAAqB,KAAU,EAAE,KAAa;QAC5C,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,IAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;QAC7C,IAAA,OAAO,GAAI,IAAI,CAAC,KAAK,QAAd,CAAe;QAE7B,IAAI,OAAO;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;QAEpD,4BAA4B;QAC5B,IAAI,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE;YAC9B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC;gBACZ,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC3B,QAAQ,EAAE;oBACR,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;SACJ;IACH,CAAC;IAED,4BAAW,GAAX,UAAY,KAA6B,EAAE,KAAa;QAChD,IAAA,KAAyC,IAAI,CAAC,KAAK,EAAlD,IAAI,UAAA,EAAE,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,UAAU,gBAAc,CAAC;QAC1D,IAAI,QAAQ;YAAE,OAAO;QAErB,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,EAAE;YACR,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,QAAQ;gBAAE,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YAChC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC;gBACZ,QAAQ,EAAE;oBACR,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,QAAQ;iBACjB;aACF,CAAC,CAAC;SACJ;aAAM;YACL,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;SAC3B;QAED,IAAM,OAAO,GAAG,UAAU,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACzD,IAAI,OAAO;YAAE,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK,OAAA;YACL,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC3B,OAAO,SAAA;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEhC,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,4BAAW,GAAX;QAAA,iBAkDC;QAjDO,IAAA,KAA+B,IAAI,CAAC,KAAK,EAAxC,QAAQ,cAAA,EAAE,KAAK,WAAA,EAAE,SAAS,eAAc,CAAC;QAC1C,IAAA,KAQF,IAAI,CAAC,KAAK,EAPZ,aAAa,mBAAA,EACb,IAAI,UAAA,EACJ,IAAI,UAAA,EACJ,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,aAAa,mBAAA,EACD,EAAE,gBACF,CAAC;QAEf,OAAO,CACL,sCAAI,YAAY,EAAE,IAAI,CAAC,UAAU,IAC9B,KAAK,CAAC,GAAG,CAAC,UAAC,IAAS,EAAE,CAAS;YAC9B,IAAM,UAAU,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YAEjE,OAAO,CACL,sCACE,GAAG,EAAE,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE;oBAC1C,SAAS,EAAE,UAAU;oBACrB,WAAW,EAAE,IAAI,CAAC,MAAM;oBACxB,aAAa,EAAE,QAAQ,IAAI,QAAQ;iBACpC,CAAC,EACF,GAAG,EAAE,CAAC,EACN,KAAK,EAAE;oBACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;iBAC/C,EACD,WAAW,EAAE,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAApB,CAAoB,EACtC,WAAW,EAAE,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAApB,CAAoB,EACtC,OAAO,EAAE,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAtB,CAAsB,EACpC,YAAY,EAAE,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAA/B,CAA+B;gBAEjD,UAAU,IAAI,CACb,uCACE,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,EACjC,KAAK,EAAE;wBACL,KAAK,EAAE,SAAS;qBACjB,IAEA,IAAI,CACD,CACP;gBACA,IAAI,CACF,CACN,CAAC;QACJ,CAAC,CAAC,CACC,CACN,CAAC;IACJ,CAAC;IAED,2BAAU,GAAV;;QACS,IAAA,QAAQ,GAAI,IAAI,CAAC,KAAK,SAAd,CAAe;QACxB,IAAA,KAAgD,IAAI,CAAC,KAAK,EAAzD,aAAa,mBAAA,EAAE,YAAY,kBAAA,EAAc,EAAE,gBAAc,CAAC;QAEjE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,OAAO,CACL,wCACE,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,aAAa;gBACxC,GAAC,mBAAgB,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAE,IAC3D,YAAY;oBACd,IAED,QAAQ,CACJ,CACR,CAAC;IACJ,CAAC;IAED,uBAAM,GAAN;QACQ,IAAA,KAA4C,IAAI,CAAC,KAAK,EAArD,SAAS,eAAA,EAAE,YAAY,kBAAA,EAAc,EAAE,gBAAc,CAAC;QAE7D,OAAO,CACL,uCAAK,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,IACpC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,CACzB;YACG,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE,CAClB,CACJ,CAAC,CAAC,CAAC,CACF;YACG,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,UAAU,EAAE,CACjB,CACJ,CACG,CACP,CAAC;IACJ,CAAC;IAhXM,mBAAY,GAAG;QACpB,cAAc,EAAE,QAAQ;QACxB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,8BAAC,YAAI,IAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,GAAG;QAC3C,MAAM,EAAE;YACN,GAAG,EAAE,SAAS;YACd,GAAG,EAAE,SAAS;YACd,GAAG,EAAE,SAAS;SACf;QACD,YAAY,EAAE,OAA2B;KAC1C,CAAC;IAmWJ,aAAC;CAAA,AAlXD,CAA4B,eAAK,CAAC,SAAS,GAkX1C;AAlXY,wBAAM;AAoXnB,kBAAe,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAC",
|
10
10
|
"sourcesContent": [
|
11
|
-
"/**\n * @file Rating\n * @description\n * @author fex\n */\n\nimport React from 'react';\nimport cx from 'classnames';\nimport {ClassNamesFn, themeable} from '../theme';\n\ninterface RatingProps {\n id?: string;\n key?: string | number;\n style?: React.CSSProperties;\n count: number;\n half: boolean;\n char: string;\n size: number;\n className?: string;\n onChange?: (value: any) => void;\n value: number;\n containerClass: string;\n readOnly: boolean;\n classPrefix: string;\n disabled?: boolean;\n allowClear?: boolean;\n classnames: ClassNamesFn;\n}\n\nexport class Rating extends React.Component<RatingProps, any> {\n static defaultProps = {\n containerClass: 'rating',\n readOnly: false,\n half: true,\n allowClear: true,\n value: 0,\n count: 5,\n char: '★',\n size: 24\n };\n\n constructor(props: RatingProps) {\n super(props);\n\n this.state = {\n value: props.value || 0,\n stars: [],\n isClear: false,\n halfStar: {\n at: Math.floor(props.value),\n hidden: props.half && props.value % 1 < 0.5\n }\n };\n\n this.getRate = this.getRate.bind(this);\n this.getStars = this.getStars.bind(this);\n this.moreThanHalf = this.moreThanHalf.bind(this);\n this.mouseOver = this.mouseOver.bind(this);\n this.mouseLeave = this.mouseLeave.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n componentDidMount() {\n const {value} = this.state;\n this.setState({\n stars: this.getStars(value)\n });\n }\n\n componentDidUpdate(prevProps: RatingProps) {\n const props = this.props;\n\n if (props.value !== prevProps.value) {\n this.setState({\n stars: this.getStars(props.value),\n value: props.value,\n halfStar: {\n at: Math.floor(props.value),\n hidden: props.half && props.value % 1 < 0.5\n }\n });\n }\n }\n\n getRate() {\n let stars;\n const {value} = this.state;\n const {half} = this.props;\n if (half) {\n stars = Math.floor(value);\n } else {\n stars = Math.round(value);\n }\n return stars;\n }\n\n getStars(activeCount?: number) {\n if (typeof activeCount === 'undefined') {\n activeCount = this.getRate();\n }\n let stars = [];\n const {count} = this.props;\n for (let i = 0; i < count; i++) {\n stars.push({\n active: i <= activeCount - 1\n });\n }\n return stars;\n }\n\n mouseOver(event: React.ChangeEvent<any>) {\n const {isClear} = this.state;\n if (isClear) return;\n let {readOnly, size, half} = this.props;\n if (readOnly) return;\n let index = Number(event.target.getAttribute('data-index'));\n if (half) {\n const isAtHalf = this.moreThanHalf(event, size);\n if (isAtHalf) index = index + 1;\n this.setState({\n halfStar: {\n at: index,\n hidden: isAtHalf\n }\n });\n } else {\n index = index + 1;\n }\n this.setState({\n stars: this.getStars(index)\n });\n }\n\n moreThanHalf(event: any, size: number) {\n let {target} = event;\n let mouseAt = event.clientX - target.getBoundingClientRect().left;\n mouseAt = Math.round(Math.abs(mouseAt));\n return mouseAt > size / 2;\n }\n\n mouseLeave() {\n const {value, isClear} = this.state;\n const {half, readOnly} = this.props;\n if (readOnly) return;\n if (isClear) return this.setState({isClear: false});\n if (half) {\n this.setState({\n halfStar: {\n at: Math.floor(value),\n hidden: value % 1 === 0 // check value is decimal or not\n }\n });\n }\n this.setState({\n stars: this.getStars()\n });\n }\n\n handleClick(event: React.ChangeEvent<any>) {\n const {half, readOnly, onChange, size, allowClear} = this.props;\n if (readOnly) return;\n let index = Number(event.target.getAttribute('data-index'));\n\n let value;\n if (half) {\n const isAtHalf = this.moreThanHalf(event, size);\n if (isAtHalf) index = index + 1;\n value = isAtHalf ? index : index + 0.5;\n this.setState({\n halfStar: {\n at: index,\n hidden: isAtHalf\n }\n });\n } else {\n value = index = index + 1;\n }\n\n const isClear = allowClear && value === this.state.value;\n if (isClear) value = index = 0;\n this.setState({\n value,\n stars: this.getStars(index),\n isClear\n });\n onChange && onChange(value);\n }\n\n renderStars() {\n const {halfStar, stars} = this.state;\n const {char, half, disabled, readOnly, classnames: cx} = this.props;\n return stars.map((star: any, i: number) => {\n let className = cx('Rating', {\n 'Rating-half': half && !halfStar.hidden && halfStar.at === i,\n 'is-active': star.active,\n 'is-disabled': readOnly || disabled\n });\n\n return (\n <span\n className={className}\n key={i}\n data-index={i}\n data-forhalf={char}\n onMouseOver={this.mouseOver}\n onMouseMove={this.mouseOver}\n onMouseLeave={this.mouseLeave}\n onClick={this.handleClick}\n >\n {char}\n </span>\n );\n });\n }\n\n render() {\n let {className} = this.props;\n\n return (\n <div className={cx(className ? className : '')}>{this.renderStars()}</div>\n );\n }\n}\n\nexport default themeable(Rating);\n"
|
11
|
+
"/**\n * @file Rating\n * @description\n * @author fex\n */\n\nimport React from 'react';\nimport cx from 'classnames';\nimport {ClassNamesFn, themeable} from '../theme';\n\nimport {isObject} from '../utils/helper';\nimport {Icon} from './icons';\n\nexport type textPositionType = 'left' | 'right';\n\ninterface RatingProps {\n id?: string;\n key?: string | number;\n style?: React.CSSProperties;\n count: number;\n half: boolean;\n char: string | React.ReactNode;\n className?: string;\n charClassName?: string;\n textClassName?: string;\n onChange?: (value: number) => void;\n onHoverChange?: (value: number) => void;\n value: number;\n containerClass?: string;\n readOnly: boolean;\n classPrefix: string;\n disabled?: boolean;\n allowClear?: boolean;\n inactiveColor?: string;\n colors?: string | {[propName: string]: string};\n texts?: {[propName: string]: string};\n textPosition?: textPositionType;\n classnames: ClassNamesFn;\n}\n\nexport class Rating extends React.Component<RatingProps, any> {\n static defaultProps = {\n containerClass: 'rating',\n readOnly: false,\n half: true,\n allowClear: true,\n value: 0,\n count: 5,\n char: <Icon icon=\"star\" className=\"icon\" />,\n colors: {\n '2': '#abadb1',\n '3': '#787b81',\n '5': '#ffa900'\n },\n textPosition: 'right' as textPositionType\n };\n\n starsNode: Record<string, any>;\n\n constructor(props: RatingProps) {\n super(props);\n\n this.starsNode = {};\n\n this.state = {\n value: props.value || 0,\n stars: [],\n isClear: false,\n halfStar: {\n at: Math.floor(props.value),\n hidden: props.half && props.value % 1 < 0.5\n },\n showColor: '',\n showText: null,\n hoverValue: null\n };\n\n this.getRate = this.getRate.bind(this);\n this.getStars = this.getStars.bind(this);\n this.moreThanHalf = this.moreThanHalf.bind(this);\n this.mouseOver = this.mouseOver.bind(this);\n this.mouseLeave = this.mouseLeave.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.saveRef = this.saveRef.bind(this);\n this.handleStarMouseLeave = this.handleStarMouseLeave.bind(this);\n }\n\n componentDidMount() {\n const {value} = this.state;\n this.setState({\n stars: this.getStars(value)\n });\n\n this.getShowColorAndText(value);\n }\n\n componentDidUpdate(prevProps: RatingProps) {\n const props = this.props;\n\n if (props.value !== prevProps.value) {\n this.setState({\n stars: this.getStars(props.value),\n value: props.value,\n halfStar: {\n at: Math.floor(props.value),\n hidden: props.half && props.value % 1 < 0.5\n }\n });\n }\n }\n\n sortKeys(map: {[propName: number]: string}) {\n return Object.keys(map).sort(\n (a: number | string, b: number | string) => Number(a) - Number(b)\n );\n }\n\n getShowColorAndText(value: number) {\n const {colors, texts, half} = this.props;\n\n if (!value)\n return this.setState({\n showText: null\n });\n\n // 对 value 取整\n if (half) {\n value = Math.floor(Number(value) * 2) / 2;\n } else {\n value = Math.floor(value);\n }\n\n if (colors && typeof colors !== 'string') {\n const keys: string[] = this.sortKeys(colors);\n const showKey = keys.filter(item => Number(item) < value).length;\n\n const showColor = keys[showKey] !== undefined && colors[keys[showKey]];\n showColor &&\n this.setState({\n showColor\n });\n } else if (colors && typeof colors === 'string') {\n this.setState({\n showColor: colors\n });\n }\n\n if (texts && isObject(texts)) {\n const keys: string[] = this.sortKeys(texts);\n const showKey = keys.filter(item => Number(item) < value).length;\n const showText =\n keys[showKey] !== undefined &&\n texts[keys[showKey] as keyof typeof texts];\n showText &&\n this.setState({\n showText\n });\n }\n }\n\n getRate() {\n let stars;\n const {value} = this.state;\n const {half} = this.props;\n if (half) {\n stars = Math.floor(value);\n } else {\n stars = Math.round(value);\n }\n return stars;\n }\n\n getStars(activeCount?: number) {\n if (typeof activeCount === 'undefined') {\n activeCount = this.getRate();\n }\n let stars = [];\n const {count} = this.props;\n for (let i = 0; i < count; i++) {\n stars.push({\n active: i <= activeCount - 1\n });\n }\n return stars;\n }\n\n saveRef(index: number) {\n return (node: React.ReactNode) => {\n this.starsNode[String(index)] = node;\n };\n }\n\n mouseOver(event: React.ChangeEvent<any>, index: number) {\n const {isClear} = this.state;\n if (isClear) return;\n\n const {readOnly, half} = this.props;\n\n if (readOnly) return;\n\n if (half) {\n const isAtHalf = this.moreThanHalf(event, index);\n\n const tmpValue = isAtHalf ? index + 1 : index + 0.5;\n\n this.getShowColorAndText(tmpValue);\n this.onHoverChange(tmpValue);\n\n if (isAtHalf) index = index + 1;\n this.setState({\n halfStar: {\n at: index,\n hidden: isAtHalf\n }\n });\n } else {\n index = index + 1;\n this.onHoverChange(index);\n this.getShowColorAndText(index);\n }\n this.setState({\n stars: this.getStars(index)\n });\n }\n\n onHoverChange(value: number) {\n const {onHoverChange} = this.props;\n const {hoverValue} = this.state;\n\n if (!hoverValue || (hoverValue && hoverValue !== value)) {\n this.setState({\n hoverValue: value\n });\n onHoverChange && onHoverChange(value);\n }\n }\n\n moreThanHalf(event: any, index: number) {\n const star = this.starsNode[index];\n const leftPos = star.getBoundingClientRect().left;\n\n return event.clientX - leftPos > star.clientWidth / 2;\n }\n\n mouseLeave() {\n const {value, isClear} = this.state;\n const {half, readOnly} = this.props;\n if (readOnly) return;\n if (isClear)\n return this.setState({\n isClear: false,\n hoverValue: null\n });\n\n if (half) {\n this.setState({\n halfStar: {\n at: Math.floor(value),\n hidden: value % 1 === 0 // check value is decimal or not\n }\n });\n }\n this.setState({\n stars: this.getStars(),\n hoverValue: null\n });\n this.getShowColorAndText(value);\n }\n\n handleStarMouseLeave(event: any, index: number) {\n const star = this.starsNode[index];\n const leftSideX = star.getBoundingClientRect().left;\n const {isClear} = this.state;\n\n if (isClear) return this.setState({isClear: false});\n\n // leave star from left side\n if (event.clientX <= leftSideX) {\n this.getShowColorAndText(index);\n this.setState({\n stars: this.getStars(index),\n halfStar: {\n at: index,\n hidden: true\n }\n });\n }\n }\n\n handleClick(event: React.ChangeEvent<any>, index: number) {\n const {half, readOnly, onChange, allowClear} = this.props;\n if (readOnly) return;\n\n let value;\n if (half) {\n const isAtHalf = this.moreThanHalf(event, index);\n if (isAtHalf) index = index + 1;\n value = isAtHalf ? index : index + 0.5;\n this.setState({\n halfStar: {\n at: index,\n hidden: isAtHalf\n }\n });\n } else {\n value = index = index + 1;\n }\n\n const isClear = allowClear && value === this.state.value;\n if (isClear) value = index = 0;\n this.setState({\n value,\n stars: this.getStars(index),\n isClear\n });\n\n this.getShowColorAndText(value);\n\n onChange && onChange(value);\n }\n\n renderStars() {\n const {halfStar, stars, showColor} = this.state;\n const {\n inactiveColor,\n char,\n half,\n disabled,\n readOnly,\n charClassName,\n classnames: cx\n } = this.props;\n\n return (\n <ul onMouseLeave={this.mouseLeave}>\n {stars.map((star: any, i: number) => {\n const isThisHalf = half && !halfStar.hidden && halfStar.at === i;\n\n return (\n <li\n ref={this.saveRef(i)}\n className={cx('Rating-star', charClassName, {\n 'is-half': isThisHalf,\n 'is-active': star.active,\n 'is-disabled': readOnly || disabled\n })}\n key={i}\n style={{\n color: star.active ? showColor : inactiveColor\n }}\n onMouseOver={e => this.mouseOver(e, i)}\n onMouseMove={e => this.mouseOver(e, i)}\n onClick={e => this.handleClick(e, i)}\n onMouseLeave={e => this.handleStarMouseLeave(e, i)}\n >\n {isThisHalf && (\n <div\n className={cx('Rating-star-half')}\n style={{\n color: showColor\n }}\n >\n {char}\n </div>\n )}\n {char}\n </li>\n );\n })}\n </ul>\n );\n }\n\n renderText() {\n const {showText} = this.state;\n const {textClassName, textPosition, classnames: cx} = this.props;\n\n if (!showText) return null;\n\n return (\n <span\n className={cx('Rating-text', textClassName, {\n [`Rating-text--${textPosition === 'left' ? 'left' : 'right'}`]:\n textPosition\n })}\n >\n {showText}\n </span>\n );\n }\n\n render() {\n const {className, textPosition, classnames: cx} = this.props;\n\n return (\n <div className={cx('Rating', className)}>\n {textPosition === 'left' ? (\n <>\n {this.renderText()}\n {this.renderStars()}\n </>\n ) : (\n <>\n {this.renderStars()}\n {this.renderText()}\n </>\n )}\n </div>\n );\n }\n}\n\nexport default themeable(Rating);\n"
|
12
12
|
]
|
13
13
|
}
|