diff --git a/.editorconfig b/.editorconfig index 1ed453a3..9fdc67c0 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,7 +4,7 @@ root = true end_of_line = lf insert_final_newline = true -[*.{js,json,yml}] +[{*.js, *.jsx, *.ts, *.tsx, *.json, *.yml, *.yaml}] charset = utf-8 indent_style = space indent_size = 2 diff --git a/src/components/DataTypes/createEasyType.tsx b/src/components/DataTypes/createEasyType.tsx index 37df20f7..bcdb3aa9 100644 --- a/src/components/DataTypes/createEasyType.tsx +++ b/src/components/DataTypes/createEasyType.tsx @@ -47,7 +47,7 @@ export function createEasyType ( store => store.colorspace[config.colorKey]) return ( >( (event) => { diff --git a/src/stores/typeRegistry.tsx b/src/stores/typeRegistry.tsx index d8c8a251..cbbb0400 100644 --- a/src/stores/typeRegistry.tsx +++ b/src/stores/typeRegistry.tsx @@ -205,12 +205,10 @@ export function predefined (): DataType[] { 'string', (props) => { const [showRest, setShowRest] = useState(false) - const collapseStringsAfterLength = useJsonViewerStore( - store => store.collapseStringsAfterLength) + const collapseStringsAfterLength = useJsonViewerStore(store => store.collapseStringsAfterLength) const value = showRest ? props.value - : props.value.slice(0, - collapseStringsAfterLength) + : props.value.slice(0, collapseStringsAfterLength) const hasRest = props.value.length > collapseStringsAfterLength return ( [] { cursor: hasRest ? 'pointer' : 'inherit' }} onClick={() => { - setShowRest(value => !value) + if (hasRest) { + setShowRest(value => !value) + } }} > " {value} - {showRest ? ... : <>} + {hasRest && !showRest && (...)} " ) @@ -282,7 +282,7 @@ export function predefined (): DataType[] { !isInt(value), ...createEasyType( 'float', - ({ value }) => <>{`${value}`}, + ({ value }) => <>{value}, { colorKey: 'base0B', fromString: value => parseFloat(value) @@ -296,7 +296,7 @@ export function predefined (): DataType[] { is: (value) => typeof value === 'number' && isInt(value), ...createEasyType( 'int', - ({ value }) => <>{`${value}`}, + ({ value }) => <>{value}, { colorKey: 'base0F', fromString: value => parseInt(value) diff --git a/tests/index.test.tsx b/tests/index.test.tsx index b1bb3ace..35832b5b 100644 --- a/tests/index.test.tsx +++ b/tests/index.test.tsx @@ -444,3 +444,33 @@ describe('Expand function by click on dots', () => { expect(elements[0].textContent).not.eq('...') }) }) + +describe('Show three dots after string collapsing', () => { + it('render', () => { + const Component = () => + const { container, rerender } = render() + + let elements = container.getElementsByClassName('string-value') + expect(elements.length).eq(1) + expect(elements[0].children.length).eq(1) + expect(elements[0].textContent).eq('"string..."') + fireEvent.click(elements[0].children[0]) + + rerender() + elements = container.getElementsByClassName('string-value') + expect(elements.length).eq(1) + expect(elements[0].children.length).eq(1) + expect(elements[0].textContent).eq('"string string string"') + fireEvent.click(elements[0].children[0]) + + rerender() + elements = container.getElementsByClassName('string-value') + expect(elements.length).eq(1) + expect(elements[0].children.length).eq(1) + expect(elements[0].textContent).eq('"string..."') + }) +})