@meduza/ui-kit-2 0.1.9 → 0.1.10

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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.9",
2
+ "version": "0.1.10",
3
3
  "license": "MIT",
4
4
  "description": "UIKit for Meduza",
5
5
  "repository": "https://github.com/meduza-corp/ui-kit-2.git",
@@ -39,23 +39,27 @@
39
39
  top: 50%;
40
40
  left: 50%;
41
41
 
42
- width: 340px;
43
- padding: 25px;
44
-
45
42
  transform: translate(-50%, -50%);
43
+ }
44
+
45
+ .popoverTitle {
46
+ margin-bottom: 16px;
46
47
 
47
- border: 1px solid rgba(0, 0, 0, 0.1);
48
- border-radius: 8px;
49
- background-color: #fff;
50
- box-shadow: 0px 5px 20px rgba(0, 0, 0, 0.2);
48
+ font-weight: 600;
49
+ }
51
50
 
51
+ .popoverBody {
52
52
  font-family: $secondaryFont;
53
53
  font-size: 16px;
54
54
  line-height: 22px;
55
55
  }
56
56
 
57
- .popoverTitle {
58
- font-weight: 600;
57
+ .popoverText p {
58
+ margin: 0;
59
+ }
60
+
61
+ .popoverText a:hover {
62
+ color: $gold;
59
63
  }
60
64
 
61
65
  .dismiss {
@@ -11,7 +11,7 @@ describe('Dots On Image', () => {
11
11
  const renderComponent = () => render(<DotsOnImage block={data} />)
12
12
 
13
13
  it('should have root style', () => {
14
- const { getByTestId } = renderComponent()
14
+ const { getByTestId } = renderComponent()
15
15
 
16
16
  const dotsOnImage = getByTestId('dots-on-image')
17
17
 
@@ -1,7 +1,11 @@
1
1
  import React, { useState } from 'react'
2
2
  import { PopoverData, DotsOnImageProps, SingleDot } from './DotsOnImage.types'
3
3
  import { Image } from '../Image'
4
- import { SvgSymbol } from '../SvgSymbol'
4
+ import { Popover } from '../Popover'
5
+ import { Footnote } from '../Footnote'
6
+
7
+ import viewportSize from '../utils/viewportSize'
8
+ import { MediaQuerySizes } from '../constants'
5
9
 
6
10
  import styles from './DotsOnImage.module.css'
7
11
 
@@ -62,20 +66,29 @@ export const DotsOnImage: React.FC<DotsOnImageProps> = ({
62
66
  </div>
63
67
 
64
68
  {popover.show && (
65
- <div className={styles.popover}>
66
- <button
67
- className={styles.dismiss}
68
- type="button"
69
- onClick={(): void => setPopover({ show: false })}
70
- >
71
- <SvgSymbol icon="cross" size="unset" />
72
- </button>
73
- <div className={styles.popoverTitle}>{popover.title}</div>
74
- <div
75
- className={styles.popoverBody}
76
- dangerouslySetInnerHTML={{ __html: popover.body }}
77
- />
78
- </div>
69
+ <>
70
+ {viewportSize().width >= MediaQuerySizes.LANDSCAPE_TABLET ? (
71
+ <div className={styles.popover}>
72
+ <Footnote
73
+ onClose={(): void => {
74
+ setPopover({ show: false })
75
+ }}
76
+ >
77
+ <h3>{popover.title}</h3>
78
+ <div dangerouslySetInnerHTML={{ __html: popover.body }} />
79
+ </Footnote>
80
+ </div>
81
+ ) : (
82
+ <Popover
83
+ onClose={(): void => {
84
+ setPopover({ show: false })
85
+ }}
86
+ >
87
+ <h3>{popover.title}</h3>
88
+ <div dangerouslySetInnerHTML={{ __html: popover.body }} />
89
+ </Popover>
90
+ )}
91
+ </>
79
92
  )}
80
93
  </div>
81
94
  )
@@ -3,8 +3,8 @@
3
3
  "data": {
4
4
  "dots": [
5
5
  {
6
- "title": "заг 1ой точки",
7
- "body": "<p>тест на <strong>точке</strong></p>",
6
+ "title": "Мафия и Голливуд",
7
+ "body": "<p>Но Голливуду тех лет далеко за вдохновением ходить было не нужно. Мафия в 20-е подминала под себя профсоюзы по всей стране, и Голливуд не был исключением. Один из таких профсоюзов возглавил Томас Мэлой. Когда в 1931 году уволенный киномеханик пришёл к нему жаловаться, то подручный Мэлоя застрелил его прямо в кабинете. Причём без всяких последствий для себя.</p>",
8
8
  "position": {
9
9
  "x": 43.86,
10
10
  "y": 31.03
@@ -17,8 +17,8 @@
17
17
  "id": "0-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
18
18
  },
19
19
  {
20
- "title": "2222",
21
- "body": "<p>sdsd</p>",
20
+ "title": "Аль Капоне в кино",
21
+ "body": "<p>Первые гангстерские фильмы начала 30-х своим появлением обязаны «Королю Чикаго» — Аль Капоне. Ещё при жизни он стал знаменитостью мирового масштаба: он получал письма со всех концов света, а журналисты выстраивались в очередь, чтобы задать ему пару вопросов. Отель «Готорн», из которого он привык вести дела, городские экскурсоводы называли «замком Капоне».</p>",
22
22
  "position": {
23
23
  "x": 16.05,
24
24
  "y": 18.83
@@ -183,7 +183,7 @@
183
183
  }
184
184
  }
185
185
 
186
- .mobile .figure {
186
+ .mobile:first-child .figure {
187
187
  overflow: hidden;
188
188
 
189
189
  border-radius: 8px 8px 0 0;
@@ -0,0 +1,70 @@
1
+ @import '../vars.css';
2
+
3
+ .root {
4
+ position: relative;
5
+
6
+ width: 320px;
7
+ padding: 20px;
8
+
9
+ border-radius: 8px;
10
+ background-color: #fff;
11
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 5px 20px rgba(0, 0, 0, 0.2);
12
+ }
13
+
14
+ .body {
15
+ font-family: $secondaryFont;
16
+ font-size: 16px;
17
+ line-height: 22px;
18
+ }
19
+
20
+ .body h3 {
21
+ margin: 0 0 16px;
22
+
23
+ font-size: inherit;
24
+ font-weight: 600;
25
+ line-height: inherit;
26
+ }
27
+
28
+ .body p {
29
+ margin: 0;
30
+ }
31
+
32
+ .body p + p {
33
+ margin-top: 6px;
34
+ }
35
+
36
+
37
+ .body a {
38
+ color: inherit;
39
+ box-shadow: inset 0 -1px $gold;
40
+ }
41
+
42
+ .body a:hover {
43
+ color: $gold;
44
+ }
45
+
46
+ .dismiss {
47
+ position: absolute;
48
+ top: 0;
49
+ right: 0;
50
+
51
+ margin: 0;
52
+ padding: 6px 9px 10px;
53
+
54
+ cursor: pointer;
55
+
56
+ color: #b3b3b3;
57
+ border-width: 0;
58
+ outline: none;
59
+ background-color: transparent;
60
+ }
61
+
62
+ .dismiss:hover {
63
+ color: #757575;
64
+ }
65
+
66
+ .dismiss svg {
67
+ width: 12px;
68
+ height: 12px;
69
+ }
70
+
@@ -0,0 +1,5 @@
1
+ @import '../vars.css';
2
+
3
+ .root {
4
+ display: block;
5
+ }
@@ -0,0 +1,43 @@
1
+ import React from 'react'
2
+ import { Footnote } from './'
3
+ import { PreviewWrapper } from '../_storybook/PreviewWrapper'
4
+
5
+ import styles from './Footnote.stories.module.css'
6
+
7
+ export default {
8
+ title: 'Main / Footnote',
9
+ component: Footnote,
10
+ parameters: {
11
+ themeWrapperSideBySide: true
12
+ }
13
+ }
14
+
15
+ const Example: React.FC = () => {
16
+ return (
17
+ <>
18
+ <div className={styles.root}>
19
+ <Footnote onClose={(): void => alert('Handle Close')}>
20
+ <h3>Заголовок лвлвлдфова выа вовофдывлоа</h3>
21
+ <p>
22
+ «Я видел истинного Дональда Трампа, наблюдал за ним. Это обманщик,
23
+ притворщик и задира. Настоящий паршивец! Все его слова абсурдны
24
+ и&nbsp;направлены на скандал. Рейган когда-то сказал Горбачёву:
25
+ «Мистер Горбачёв, развалите эту стену!», а&nbsp;Трамп собирается
26
+ взводить стену между Америкой и Мексикой.
27
+ </p>
28
+ </Footnote>
29
+ </div>
30
+ </>
31
+ )
32
+ }
33
+
34
+ export const Default: React.FC = () => (
35
+ <>
36
+ <PreviewWrapper theme="light">
37
+ <Example />
38
+ </PreviewWrapper>
39
+ <PreviewWrapper theme="dark">
40
+ <Example />
41
+ </PreviewWrapper>
42
+ </>
43
+ )
@@ -0,0 +1,20 @@
1
+ import React from 'react'
2
+ import { render } from '@testing-library/react'
3
+ import { Footnote } from './'
4
+ import { FootnoteProps } from './Footnote.types'
5
+
6
+ import styles from './Footnote.module.css'
7
+
8
+ describe('Footnote', () => {
9
+ let props: FootnoteProps
10
+
11
+ const renderComponent = () => render(<Footnote {...props} />)
12
+
13
+ it('should have root style', () => {
14
+ const { getByTestId } = renderComponent()
15
+
16
+ const footnote = getByTestId('footnote')
17
+
18
+ expect(footnote).toHaveClass(styles.root)
19
+ })
20
+ })
@@ -0,0 +1,5 @@
1
+ import React from 'react'
2
+ export interface FootnoteProps {
3
+ children: React.ReactNode | JSX.Element[] | JSX.Element
4
+ onClose: () => void
5
+ }
@@ -0,0 +1,26 @@
1
+ import React from 'react'
2
+ import { FootnoteProps } from './Footnote.types'
3
+ import makeClassName from '../utils/makeClassName'
4
+
5
+ import { SvgSymbol } from '../SvgSymbol'
6
+
7
+ import styles from './Footnote.module.css'
8
+
9
+ export const Footnote: React.FC<FootnoteProps> = ({ children, onClose }) => {
10
+ return (
11
+ <div
12
+ data-testid="footnote"
13
+ className={makeClassName([[styles.root, true]])}
14
+ >
15
+ <button
16
+ className={styles.dismiss}
17
+ type="button"
18
+ onClick={(): void => onClose()}
19
+ >
20
+ <SvgSymbol icon="cross" size="unset" />
21
+ </button>
22
+
23
+ <div className={styles.body}>{children}</div>
24
+ </div>
25
+ )
26
+ }
@@ -13,11 +13,14 @@
13
13
  width: 100%;
14
14
  height: 100%;
15
15
  min-height: 120px;
16
- padding: 10px 10px 0;
16
+ padding: 10px 0 0;
17
17
 
18
18
  animation: fadeOut 250ms ease both 100ms;
19
19
 
20
20
  opacity: 1;
21
+
22
+ font-size: 16px;
23
+ line-height: 22px;
21
24
  }
22
25
 
23
26
  .root.visible {
@@ -44,7 +47,7 @@
44
47
  max-width: 420px;
45
48
  min-height: 80px;
46
49
  margin: 0 auto;
47
- padding: 15px 20px 40px;
50
+ padding: 22px 20px 28px;
48
51
 
49
52
  animation: disappear 350ms ease both;
50
53
  }
@@ -97,6 +100,37 @@
97
100
  animation: appear 350ms ease both;
98
101
  }
99
102
 
103
+ .body {
104
+ font-family: $secondaryFont;
105
+ font-size: 16px;
106
+ line-height: 22px;
107
+ }
108
+
109
+ .body h3 {
110
+ margin: 0 0 5px;
111
+
112
+ font-size: inherit;
113
+ font-weight: 600;
114
+ line-height: inherit;
115
+ }
116
+
117
+ .body p {
118
+ margin: 0;
119
+ }
120
+
121
+ .body p + p {
122
+ margin-top: 6px;
123
+ }
124
+
125
+ .body a {
126
+ color: inherit;
127
+ box-shadow: inset 0 -1px $gold;
128
+ }
129
+
130
+ .body a:hover {
131
+ color: $gold;
132
+ }
133
+
100
134
  @keyframes appear {
101
135
  0% {
102
136
  transform: translateY(100%);
@@ -70,7 +70,7 @@ export const Popover: React.FC<PopoverProps> = ({ children, onClose }) => {
70
70
  height="100%"
71
71
  />
72
72
  </svg>
73
- {children}
73
+ <div className={styles.body}>{children}</div>
74
74
  </div>
75
75
  </div>
76
76
  )
@@ -32,3 +32,10 @@ span[data-body]:hover {
32
32
  background-color: #5B5B5B;
33
33
  box-shadow: inset 1px 0 #747474, inset 0 1px #747474, inset -1px 0 #747474, inset 0 -1px #747474;
34
34
  }
35
+
36
+ span[data-highlight='true'],
37
+ span[data-highlight='true']:hover {
38
+ background-color: #f4efe9;
39
+ box-shadow: inset 1px 0 #b88b58, inset 0 1px #b88b58, inset -1px 0 #b88b58,
40
+ inset 0 -1px #b88b58;
41
+ }
package/src/index.tsx CHANGED
@@ -36,4 +36,5 @@ export * from './MetaItem'
36
36
  export * from './MetaItemLive'
37
37
  export * from './DocumentItemsCount'
38
38
  export * from './ToolbarButton'
39
+ export * from './Footnote'
39
40
  // /* PLOP_INJECT_LINK */ //