@contentful/field-editor-rating 1.2.0 → 1.3.1

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-editor-rating.esm.js","sources":["../src/RatingRibbon.tsx","../src/RatingEditor.tsx"],"sourcesContent":["import * as React from 'react';\n\n\nimport { IconButton } from '@contentful/f36-components';\nimport { StarIcon } from '@contentful/f36-icons';\nimport { css } from 'emotion';\n\ntype RatingRibbonProps = {\n disabled: boolean;\n stars: number;\n value: number | null | undefined;\n onSelect: (val: number) => void;\n};\n\ntype RatingRibbonState = {\n hovered: null | number;\n};\n\nexport class RatingRibbon extends React.Component<RatingRibbonProps, RatingRibbonState> {\n state = {\n hovered: null,\n };\n\n isSelected = (num: number) => {\n const hovered = this.state.hovered;\n const value = this.props.value;\n\n if (hovered !== null) {\n return num <= hovered;\n }\n if (value) {\n return num <= value;\n }\n return false;\n };\n\n onBlur = () => {\n if (!this.props.disabled) {\n this.setState({ hovered: null });\n }\n };\n\n onFocus = (num: number) => () => {\n if (!this.props.disabled) {\n this.setState({ hovered: num });\n }\n };\n\n render() {\n const items: number[] = [];\n for (let i = 1; i <= this.props.stars; i++) {\n items.push(i);\n }\n\n return (\n <>\n {items.map((num) => (\n <IconButton\n variant=\"transparent\"\n size=\"small\"\n icon={\n <StarIcon\n variant={this.isSelected(num) ? 'primary' : 'muted'}\n className={css({ width: '22px', height: '22px' })}\n />\n }\n data-selected={this.isSelected(num) ? 'true' : 'false'}\n testId=\"rating-editor-star\"\n isDisabled={this.props.disabled}\n key={num}\n onClick={() => {\n this.props.onSelect(num);\n }}\n onKeyDown={(e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n this.props.onSelect(num);\n }\n }}\n onMouseOver={this.onFocus(num)}\n onMouseLeave={this.onBlur}\n onFocus={this.onFocus(num)}\n onBlur={this.onBlur}\n aria-label={num.toString()}\n />\n ))}\n </>\n );\n }\n}\n","import * as React from 'react';\n\nimport { TextLink, Flex } from '@contentful/f36-components';\nimport { FieldAPI, ParametersAPI, FieldConnector } from '@contentful/field-editor-shared';\nimport get from 'lodash/get';\n\nimport { RatingRibbon } from './RatingRibbon';\n\n\nexport interface RatingEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n\n /**\n * sdk.field\n */\n field: FieldAPI;\n\n /**\n * sdk.parameters\n */\n parameters?: ParametersAPI & {\n instance: {\n stars?: number;\n };\n };\n}\n\nfunction isValidCount(count?: string | number): count is number {\n return typeof count === 'number' && !isNaN(count) && count > 0;\n}\n\nfunction getStarCount(count?: number | string): number {\n const defaultValue = 5;\n\n if (isValidCount(count)) {\n return Math.round(count);\n } else if (typeof count === 'string') {\n const parsed = parseInt(count, 10);\n return isValidCount(parsed) ? Math.round(parsed) : defaultValue;\n } else {\n return defaultValue;\n }\n}\n\nexport function RatingEditor(props: RatingEditorProps) {\n const { field } = props;\n\n const starsCount = getStarCount(get(props.parameters, ['instance', 'stars']));\n\n return (\n <FieldConnector<number>\n throttle={0}\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}>\n {({ disabled, value, setValue }) => {\n const clearOption = () => {\n setValue(null);\n };\n\n return (\n <Flex testId=\"rating-editor\" flexDirection=\"row\" marginTop=\"spacingS\">\n <RatingRibbon\n disabled={disabled}\n value={value}\n stars={starsCount}\n onSelect={(num) => {\n setValue(num);\n }}\n />\n {value !== undefined && !disabled && (\n <Flex marginLeft=\"spacingM\">\n <TextLink as=\"button\" testId=\"rating-editor-clear\" onClick={clearOption}>\n Clear\n </TextLink>\n </Flex>\n )}\n </Flex>\n );\n }}\n </FieldConnector>\n );\n}\n\nRatingEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["RatingRibbon","React","state","hovered","isSelected","num","value","props","onBlur","disabled","setState","onFocus","render","items","i","stars","push","map","IconButton","variant","size","icon","StarIcon","className","css","width","height","testId","isDisabled","key","onClick","onSelect","onKeyDown","e","keyCode","onMouseOver","onMouseLeave","toString","isValidCount","count","isNaN","getStarCount","defaultValue","Math","round","parsed","parseInt","RatingEditor","field","starsCount","get","parameters","FieldConnector","throttle","isInitiallyDisabled","setValue","clearOption","Flex","flexDirection","marginTop","undefined","marginLeft","TextLink","as","defaultProps"],"mappings":"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"}
package/dist/index.js DELETED
@@ -1,8 +0,0 @@
1
-
2
- 'use strict'
3
-
4
- if (process.env.NODE_ENV === 'production') {
5
- module.exports = require('./field-editor-rating.cjs.production.min.js')
6
- } else {
7
- module.exports = require('./field-editor-rating.cjs.development.js')
8
- }