@pyreon/elements 0.11.5 → 0.11.7
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/README.md +38 -35
- package/lib/index.d.ts +15 -15
- package/package.json +24 -24
- package/src/Element/component.tsx +14 -14
- package/src/Element/constants.ts +25 -25
- package/src/Element/index.ts +2 -2
- package/src/Element/types.ts +3 -3
- package/src/Element/utils.ts +1 -1
- package/src/List/component.tsx +7 -7
- package/src/List/index.ts +2 -2
- package/src/Overlay/component.tsx +22 -22
- package/src/Overlay/context.tsx +2 -2
- package/src/Overlay/index.ts +3 -3
- package/src/Overlay/useOverlay.tsx +97 -97
- package/src/Portal/component.tsx +6 -6
- package/src/Portal/index.ts +2 -2
- package/src/Text/component.tsx +6 -6
- package/src/Text/index.ts +2 -2
- package/src/Text/styled.ts +4 -4
- package/src/Util/component.tsx +5 -5
- package/src/Util/index.ts +2 -2
- package/src/__tests__/Content.test.tsx +46 -46
- package/src/__tests__/Element.test.ts +251 -251
- package/src/__tests__/Iterator.test.ts +142 -142
- package/src/__tests__/List.test.ts +61 -61
- package/src/__tests__/Overlay.test.ts +125 -125
- package/src/__tests__/Portal.test.ts +33 -33
- package/src/__tests__/Text.test.ts +128 -128
- package/src/__tests__/Util.test.ts +31 -31
- package/src/__tests__/Wrapper.test.tsx +60 -60
- package/src/__tests__/equalBeforeAfter.test.ts +41 -41
- package/src/__tests__/helpers.test.ts +29 -29
- package/src/__tests__/overlayContext.test.tsx +14 -14
- package/src/__tests__/responsiveProps.test.ts +116 -116
- package/src/__tests__/useOverlay.test.ts +283 -283
- package/src/__tests__/utils.test.ts +43 -43
- package/src/constants.ts +1 -1
- package/src/helpers/Content/component.tsx +5 -5
- package/src/helpers/Content/index.ts +1 -1
- package/src/helpers/Content/styled.ts +16 -16
- package/src/helpers/Content/types.ts +7 -7
- package/src/helpers/Iterator/component.tsx +28 -28
- package/src/helpers/Iterator/index.ts +2 -2
- package/src/helpers/Iterator/types.ts +3 -3
- package/src/helpers/Wrapper/component.tsx +6 -6
- package/src/helpers/Wrapper/index.ts +1 -1
- package/src/helpers/Wrapper/styled.ts +8 -8
- package/src/helpers/Wrapper/types.ts +3 -3
- package/src/helpers/Wrapper/utils.ts +1 -1
- package/src/helpers/index.ts +2 -2
- package/src/index.ts +16 -16
- package/src/types.ts +7 -7
- package/src/utils.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { VNode } from
|
|
2
|
-
import { beforeEach, describe, expect, it, vi } from
|
|
1
|
+
import type { VNode } from '@pyreon/core'
|
|
2
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
3
3
|
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
5
5
|
// Mocks
|
|
@@ -8,7 +8,7 @@ const mocks = vi.hoisted(() => ({
|
|
|
8
8
|
render: vi.fn((children: unknown) => children),
|
|
9
9
|
}))
|
|
10
10
|
|
|
11
|
-
vi.mock(
|
|
11
|
+
vi.mock('@pyreon/ui-core', async (importOriginal) => {
|
|
12
12
|
const actual = (await importOriginal()) as Record<string, unknown>
|
|
13
13
|
return {
|
|
14
14
|
...actual,
|
|
@@ -16,100 +16,100 @@ vi.mock("@pyreon/ui-core", async (importOriginal) => {
|
|
|
16
16
|
}
|
|
17
17
|
})
|
|
18
18
|
|
|
19
|
-
vi.mock(
|
|
19
|
+
vi.mock('~/utils', () => ({
|
|
20
20
|
IS_DEVELOPMENT: true,
|
|
21
21
|
}))
|
|
22
22
|
|
|
23
|
-
import Content from
|
|
24
|
-
import Styled from
|
|
23
|
+
import Content from '../helpers/Content/component'
|
|
24
|
+
import Styled from '../helpers/Content/styled'
|
|
25
25
|
|
|
26
26
|
const asVNode = (v: unknown) => v as VNode
|
|
27
27
|
|
|
28
|
-
describe(
|
|
28
|
+
describe('Content component', () => {
|
|
29
29
|
beforeEach(() => {
|
|
30
30
|
vi.clearAllMocks()
|
|
31
31
|
})
|
|
32
32
|
|
|
33
|
-
it(
|
|
34
|
-
const result = asVNode(Content({ contentType:
|
|
33
|
+
it('returns a VNode whose type is the Styled component', () => {
|
|
34
|
+
const result = asVNode(Content({ contentType: 'content' }))
|
|
35
35
|
expect(result.type).toBe(Styled)
|
|
36
36
|
})
|
|
37
37
|
|
|
38
38
|
it("passes tag as the 'as' prop to Styled", () => {
|
|
39
|
-
const result = asVNode(Content({ tag:
|
|
40
|
-
expect(result.props.as).toBe(
|
|
39
|
+
const result = asVNode(Content({ tag: 'span' }))
|
|
40
|
+
expect(result.props.as).toBe('span')
|
|
41
41
|
})
|
|
42
42
|
|
|
43
|
-
it(
|
|
44
|
-
const result = asVNode(Content({ contentType:
|
|
45
|
-
expect(result.props.$contentType).toBe(
|
|
43
|
+
it('passes contentType as $contentType prop', () => {
|
|
44
|
+
const result = asVNode(Content({ contentType: 'before' }))
|
|
45
|
+
expect(result.props.$contentType).toBe('before')
|
|
46
46
|
})
|
|
47
47
|
|
|
48
|
-
it(
|
|
48
|
+
it('passes styling props bundled as $element prop', () => {
|
|
49
49
|
const result = asVNode(
|
|
50
50
|
Content({
|
|
51
|
-
contentType:
|
|
52
|
-
parentDirection:
|
|
53
|
-
direction:
|
|
54
|
-
alignX:
|
|
55
|
-
alignY:
|
|
51
|
+
contentType: 'content',
|
|
52
|
+
parentDirection: 'inline',
|
|
53
|
+
direction: 'rows',
|
|
54
|
+
alignX: 'center',
|
|
55
|
+
alignY: 'top',
|
|
56
56
|
equalCols: true,
|
|
57
57
|
gap: 8,
|
|
58
|
-
extendCss:
|
|
58
|
+
extendCss: 'color: red;',
|
|
59
59
|
}),
|
|
60
60
|
)
|
|
61
61
|
|
|
62
62
|
expect(result.props.$element).toEqual({
|
|
63
|
-
contentType:
|
|
64
|
-
parentDirection:
|
|
65
|
-
direction:
|
|
66
|
-
alignX:
|
|
67
|
-
alignY:
|
|
63
|
+
contentType: 'content',
|
|
64
|
+
parentDirection: 'inline',
|
|
65
|
+
direction: 'rows',
|
|
66
|
+
alignX: 'center',
|
|
67
|
+
alignY: 'top',
|
|
68
68
|
equalCols: true,
|
|
69
69
|
gap: 8,
|
|
70
|
-
extraStyles:
|
|
70
|
+
extraStyles: 'color: red;',
|
|
71
71
|
})
|
|
72
72
|
})
|
|
73
73
|
|
|
74
|
-
it(
|
|
75
|
-
const result = asVNode(Content({ contentType:
|
|
76
|
-
expect(result.props[
|
|
74
|
+
it('adds data-pyr-element attribute in development mode', () => {
|
|
75
|
+
const result = asVNode(Content({ contentType: 'after' }))
|
|
76
|
+
expect(result.props['data-pyr-element']).toBe('after')
|
|
77
77
|
})
|
|
78
78
|
|
|
79
|
-
it(
|
|
80
|
-
const children =
|
|
79
|
+
it('passes children through render()', () => {
|
|
80
|
+
const children = 'Some text'
|
|
81
81
|
Content({ children })
|
|
82
82
|
expect(mocks.render).toHaveBeenCalledWith(children)
|
|
83
83
|
})
|
|
84
84
|
|
|
85
|
-
it(
|
|
86
|
-
const result = asVNode(Content({ id:
|
|
87
|
-
expect(result.props.id).toBe(
|
|
88
|
-
expect(result.props.className).toBe(
|
|
85
|
+
it('spreads remaining props to Styled', () => {
|
|
86
|
+
const result = asVNode(Content({ id: 'test-id', className: 'custom' } as any))
|
|
87
|
+
expect(result.props.id).toBe('test-id')
|
|
88
|
+
expect(result.props.className).toBe('custom')
|
|
89
89
|
})
|
|
90
90
|
|
|
91
|
-
it(
|
|
92
|
-
const result = asVNode(Content({ extendCss:
|
|
93
|
-
expect((result.props.$element as any).extraStyles).toBe(
|
|
91
|
+
it('maps extendCss to extraStyles in $element', () => {
|
|
92
|
+
const result = asVNode(Content({ extendCss: 'font-size: 14px;' }))
|
|
93
|
+
expect((result.props.$element as any).extraStyles).toBe('font-size: 14px;')
|
|
94
94
|
})
|
|
95
95
|
})
|
|
96
96
|
|
|
97
|
-
describe(
|
|
98
|
-
it(
|
|
97
|
+
describe('Content component (production mode)', () => {
|
|
98
|
+
it('does not add data-pyr-element when IS_DEVELOPMENT is false', async () => {
|
|
99
99
|
// Reset module registry so the new mock takes effect
|
|
100
100
|
vi.resetModules()
|
|
101
|
-
vi.doMock(
|
|
101
|
+
vi.doMock('../utils', () => ({
|
|
102
102
|
IS_DEVELOPMENT: false,
|
|
103
103
|
}))
|
|
104
104
|
// Re-mock @pyreon/ui-core after resetModules
|
|
105
|
-
vi.doMock(
|
|
105
|
+
vi.doMock('@pyreon/ui-core', async (importOriginal) => {
|
|
106
106
|
const actual = (await importOriginal()) as Record<string, unknown>
|
|
107
107
|
return { ...actual, render: (children: unknown) => children }
|
|
108
108
|
})
|
|
109
109
|
|
|
110
|
-
const { default: ContentProd } = await import(
|
|
111
|
-
const result = asVNode(ContentProd({ contentType:
|
|
110
|
+
const { default: ContentProd } = await import('../helpers/Content/component')
|
|
111
|
+
const result = asVNode(ContentProd({ contentType: 'before' }))
|
|
112
112
|
|
|
113
|
-
expect(result.props[
|
|
113
|
+
expect(result.props['data-pyr-element']).toBeUndefined()
|
|
114
114
|
})
|
|
115
115
|
})
|