Skip to content

Commit a2f2145

Browse files
authored
feat: invert logic for showing dots (#122)
1 parent bb5827b commit a2f2145

File tree

4 files changed

+40
-10
lines changed

4 files changed

+40
-10
lines changed

.editorconfig

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ root = true
44
end_of_line = lf
55
insert_final_newline = true
66

7-
[*.{js,json,yml}]
7+
[{*.js, *.jsx, *.ts, *.tsx, *.json, *.yml, *.yaml}]
88
charset = utf-8
99
indent_style = space
1010
indent_size = 2

src/components/DataTypes/createEasyType.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export function createEasyType<Value> (
4747
store => store.colorspace[config.colorKey])
4848
return (
4949
<InputBase
50-
value={`${value}`}
50+
value={value}
5151
onChange={
5252
useCallback<React.ChangeEventHandler<HTMLTextAreaElement | HTMLInputElement>>(
5353
(event) => {

src/stores/typeRegistry.tsx

+8-8
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,10 @@ export function predefined (): DataType<any>[] {
205205
'string',
206206
(props) => {
207207
const [showRest, setShowRest] = useState(false)
208-
const collapseStringsAfterLength = useJsonViewerStore(
209-
store => store.collapseStringsAfterLength)
208+
const collapseStringsAfterLength = useJsonViewerStore(store => store.collapseStringsAfterLength)
210209
const value = showRest
211210
? props.value
212-
: props.value.slice(0,
213-
collapseStringsAfterLength)
211+
: props.value.slice(0, collapseStringsAfterLength)
214212
const hasRest = props.value.length > collapseStringsAfterLength
215213
return (
216214
<Box
@@ -220,12 +218,14 @@ export function predefined (): DataType<any>[] {
220218
cursor: hasRest ? 'pointer' : 'inherit'
221219
}}
222220
onClick={() => {
223-
setShowRest(value => !value)
221+
if (hasRest) {
222+
setShowRest(value => !value)
223+
}
224224
}}
225225
>
226226
&quot;
227227
{value}
228-
{showRest ? <span>...</span> : <></>}
228+
{hasRest && !showRest && (<Box component='span'>...</Box>)}
229229
&quot;
230230
</Box>
231231
)
@@ -282,7 +282,7 @@ export function predefined (): DataType<any>[] {
282282
!isInt(value),
283283
...createEasyType(
284284
'float',
285-
({ value }) => <>{`${value}`}</>,
285+
({ value }) => <>{value}</>,
286286
{
287287
colorKey: 'base0B',
288288
fromString: value => parseFloat(value)
@@ -296,7 +296,7 @@ export function predefined (): DataType<any>[] {
296296
is: (value) => typeof value === 'number' && isInt(value),
297297
...createEasyType(
298298
'int',
299-
({ value }) => <>{`${value}`}</>,
299+
({ value }) => <>{value}</>,
300300
{
301301
colorKey: 'base0F',
302302
fromString: value => parseInt(value)

tests/index.test.tsx

+30
Original file line numberDiff line numberDiff line change
@@ -444,3 +444,33 @@ describe('Expand function by click on dots', () => {
444444
expect(elements[0].textContent).not.eq('...')
445445
})
446446
})
447+
448+
describe('Show three dots after string collapsing', () => {
449+
it('render', () => {
450+
const Component = () => <JsonViewer
451+
rootName={false}
452+
value={'string string string'}
453+
collapseStringsAfterLength={6}
454+
/>
455+
const { container, rerender } = render(<Component />)
456+
457+
let elements = container.getElementsByClassName('string-value')
458+
expect(elements.length).eq(1)
459+
expect(elements[0].children.length).eq(1)
460+
expect(elements[0].textContent).eq('"string..."')
461+
fireEvent.click(elements[0].children[0])
462+
463+
rerender(<Component />)
464+
elements = container.getElementsByClassName('string-value')
465+
expect(elements.length).eq(1)
466+
expect(elements[0].children.length).eq(1)
467+
expect(elements[0].textContent).eq('"string string string"')
468+
fireEvent.click(elements[0].children[0])
469+
470+
rerender(<Component />)
471+
elements = container.getElementsByClassName('string-value')
472+
expect(elements.length).eq(1)
473+
expect(elements[0].children.length).eq(1)
474+
expect(elements[0].textContent).eq('"string..."')
475+
})
476+
})

0 commit comments

Comments
 (0)