@meduza/ui-kit-2 0.1.8 → 0.1.9

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.
Files changed (137) hide show
  1. package/dist/Image/Image.types.d.ts +2 -2
  2. package/dist/MaterialNote/MaterialNote.stories.d.ts +2 -1
  3. package/dist/MaterialNote/MaterialNote.types.d.ts +2 -1
  4. package/dist/ui-kit-2.cjs.development.js +54 -53
  5. package/dist/ui-kit-2.cjs.development.js.map +1 -1
  6. package/dist/ui-kit-2.cjs.production.min.js +1 -1
  7. package/dist/ui-kit-2.cjs.production.min.js.map +1 -1
  8. package/dist/ui-kit-2.esm.js +54 -53
  9. package/dist/ui-kit-2.esm.js.map +1 -1
  10. package/dist/ui-kit.css +279 -279
  11. package/dist/utils/makeClassName.d.ts +2 -1
  12. package/dist/utils/makeStyleContext.d.ts +2 -1
  13. package/package.json +12 -4
  14. package/src/BookmarkButton/BookmarkButton.stories.tsx +1 -1
  15. package/src/BookmarkButton/index.tsx +2 -4
  16. package/src/Button/Button.stories.tsx +2 -2
  17. package/src/Button/Button.test.tsx +3 -3
  18. package/src/Button/index.tsx +3 -3
  19. package/src/CardTitle/CardTitle.stories.tsx +1 -1
  20. package/src/CardTitle/CardTitle.test.tsx +1 -1
  21. package/src/CardTitle/index.tsx +1 -2
  22. package/src/ChapterBlock/ChapterBlock.stories.tsx +1 -1
  23. package/src/ChapterBlock/ChapterBlock.test.tsx +1 -1
  24. package/src/ChapterBlock/index.tsx +1 -2
  25. package/src/Cover/Cover.stories.tsx +1 -1
  26. package/src/Cover/Cover.test.tsx +1 -1
  27. package/src/Cover/index.tsx +5 -6
  28. package/src/DocumentItemsCount/DocumentItemsCount.stories.tsx +1 -1
  29. package/src/DocumentItemsCount/DocumentItemsCount.test.tsx +1 -1
  30. package/src/DocumentItemsCount/index.tsx +0 -1
  31. package/src/DotsOnImage/DotsOnImage.stories.tsx +1 -1
  32. package/src/DotsOnImage/DotsOnImage.test.tsx +1 -0
  33. package/src/DotsOnImage/index.tsx +1 -2
  34. package/src/Dropdown/index.tsx +2 -2
  35. package/src/EmbedBlock/EmbedBlock.stories.tsx +2 -2
  36. package/src/EmbedBlock/EmbedBlock.test.tsx +1 -1
  37. package/src/EmbedBlock/EmbedBlock.tsx +3 -8
  38. package/src/EmbedBlock/EmbedGif.tsx +0 -3
  39. package/src/EmbedBlock/IframeBlock.tsx +0 -1
  40. package/src/EmbedBlock/index.tsx +0 -1
  41. package/src/GroupedBlock/GroupedBlock.stories.tsx +1 -1
  42. package/src/GroupedBlock/GroupedBlock.test.tsx +1 -1
  43. package/src/GroupedBlock/index.tsx +4 -6
  44. package/src/HalfBlock/HalfBlock.stories.tsx +1 -1
  45. package/src/HalfBlock/HalfBlock.test.tsx +1 -1
  46. package/src/HalfBlock/index.tsx +3 -5
  47. package/src/Image/Image.stories.tsx +1 -1
  48. package/src/Image/Image.test.tsx +1 -1
  49. package/src/Image/Image.types.ts +2 -2
  50. package/src/Image/RenderPicture.tsx +1 -2
  51. package/src/Image/index.tsx +1 -4
  52. package/src/ImportantLead/ImportantLead.stories.tsx +1 -1
  53. package/src/ImportantLead/ImportantLead.test.tsx +1 -1
  54. package/src/ImportantLead/index.tsx +3 -5
  55. package/src/Lazy/Lazy.stories.tsx +3 -2
  56. package/src/Lazy/Lazy.test.tsx +1 -1
  57. package/src/Lazy/index.tsx +2 -4
  58. package/src/ListBlock/ListBlock.stories.tsx +2 -2
  59. package/src/ListBlock/ListBlock.test.tsx +1 -1
  60. package/src/ListBlock/index.tsx +2 -3
  61. package/src/MaterialNote/MaterialNote.stories.tsx +4 -3
  62. package/src/MaterialNote/MaterialNote.test.tsx +1 -1
  63. package/src/MaterialNote/MaterialNote.types.ts +2 -1
  64. package/src/MaterialNote/index.tsx +3 -3
  65. package/src/MaterialTitle/MaterialTitle.stories.tsx +1 -1
  66. package/src/MaterialTitle/MaterialTitle.test.tsx +1 -1
  67. package/src/MediaCaption/MediaCaption.stories.tsx +1 -1
  68. package/src/MediaCaption/MediaCaption.test.tsx +1 -1
  69. package/src/MediaCaption/index.tsx +2 -2
  70. package/src/Meta/Meta.stories.tsx +1 -1
  71. package/src/Meta/Meta.test.tsx +1 -1
  72. package/src/Meta/MetaContainer.tsx +2 -4
  73. package/src/Meta/index.tsx +2 -3
  74. package/src/MetaItem/MetaItem.stories.tsx +2 -2
  75. package/src/MetaItem/MetaItem.test.tsx +1 -1
  76. package/src/MetaItem/index.tsx +1 -3
  77. package/src/MetaItemLive/MetaItemLive.stories.tsx +2 -2
  78. package/src/MetaItemLive/MetaItemLive.test.tsx +1 -1
  79. package/src/MetaItemLive/index.tsx +1 -3
  80. package/src/Popover/Popover.stories.tsx +1 -1
  81. package/src/Popover/Popover.test.tsx +1 -1
  82. package/src/Popover/index.tsx +1 -2
  83. package/src/QuoteBlock/QuoteBlock.stories.tsx +1 -1
  84. package/src/QuoteBlock/QuoteBlock.test.tsx +1 -1
  85. package/src/QuoteBlock/index.tsx +2 -3
  86. package/src/RawHtmlBlock/RawHtmlBlock.stories.tsx +2 -2
  87. package/src/RawHtmlBlock/RawHtmlBlock.test.tsx +1 -1
  88. package/src/RawHtmlBlock/index.tsx +0 -2
  89. package/src/RelatedBlock/RelatedBlock.stories.tsx +1 -1
  90. package/src/RelatedBlock/RelatedBlock.test.tsx +1 -1
  91. package/src/RelatedBlock/index.tsx +2 -3
  92. package/src/RenderBlocks/RenderBlocks.stories.tsx +1 -1
  93. package/src/RenderBlocks/RenderBlocks.test.tsx +1 -1
  94. package/src/RenderBlocks/index.tsx +0 -1
  95. package/src/RichTitle/RichTitle.stories.tsx +1 -1
  96. package/src/RichTitle/RichTitle.test.tsx +1 -1
  97. package/src/RichTitle/index.tsx +2 -3
  98. package/src/SimpleBlock/SimpleBlock.stories.tsx +2 -2
  99. package/src/SimpleBlock/SimpleBlock.test.tsx +1 -1
  100. package/src/SimpleBlock/index.tsx +2 -3
  101. package/src/SimpleTitle/SimpleTitle.stories.tsx +1 -1
  102. package/src/SimpleTitle/SimpleTitle.test.tsx +1 -1
  103. package/src/SimpleTitle/index.tsx +2 -2
  104. package/src/SourceBlock/SourceBlock.stories.tsx +6 -6
  105. package/src/SourceBlock/SourceBlock.test.tsx +1 -1
  106. package/src/SourceBlock/index.tsx +6 -4
  107. package/src/SourceBlock/mock.json +15 -0
  108. package/src/Spoiler/Spoiler.stories.tsx +1 -1
  109. package/src/Spoiler/Spoiler.test.tsx +1 -1
  110. package/src/Spoiler/index.tsx +4 -5
  111. package/src/SvgSymbol/SvgSymbol.stories.tsx +6 -6
  112. package/src/SvgSymbol/SvgSymbol.test.tsx +1 -1
  113. package/src/SvgSymbol/index.tsx +2 -2
  114. package/src/Switcher/Switcher.stories.tsx +4 -4
  115. package/src/Switcher/Switcher.test.tsx +1 -1
  116. package/src/Switcher/index.tsx +1 -2
  117. package/src/Table/Table.stories.tsx +1 -1
  118. package/src/Table/Table.test.tsx +1 -1
  119. package/src/Table/index.tsx +2 -2
  120. package/src/Tag/Tag.stories.tsx +1 -3
  121. package/src/Tag/Tag.test.tsx +4 -4
  122. package/src/Tag/index.tsx +2 -2
  123. package/src/Timestamp/Timestamp.stories.tsx +1 -1
  124. package/src/Timestamp/Timestamp.test.tsx +1 -1
  125. package/src/Timestamp/index.tsx +0 -2
  126. package/src/Toolbar/Toolbar.stories.tsx +0 -1
  127. package/src/Toolbar/Toolbar.test.tsx +1 -1
  128. package/src/Toolbar/index.tsx +2 -3
  129. package/src/ToolbarButton/ToolbarButton.stories.tsx +2 -2
  130. package/src/ToolbarButton/ToolbarButton.test.tsx +1 -1
  131. package/src/ToolbarButton/index.tsx +2 -3
  132. package/src/_storybook/PreviewWrapper/index.tsx +1 -1
  133. package/src/utils/DangerousHtml.tsx +5 -7
  134. package/src/utils/generateGradient.ts +1 -1
  135. package/src/utils/makeClassName.ts +3 -1
  136. package/src/utils/makeStyleContext.ts +8 -4
  137. package/src/utils/toCamel.ts +1 -1
@@ -1,9 +1,11 @@
1
1
  import React from 'react'
2
-
3
2
  import { SourceBlock } from './'
4
3
  import { PreviewWrapper } from '../_storybook/PreviewWrapper'
4
+
5
5
  import styles from './SourceBlock.stories.module.css'
6
6
 
7
+ import mock from './mock.json'
8
+
7
9
  export default {
8
10
  title: 'Main / SourceBlock',
9
11
  component: SourceBlock,
@@ -14,11 +16,9 @@ export default {
14
16
 
15
17
  const Example: React.FC = () => {
16
18
  return (
17
- <>
18
- <div className={styles.root}>
19
- <SourceBlock />
20
- </div>
21
- </>
19
+ <div className={styles.root}>
20
+ <SourceBlock block={mock} />
21
+ </div>
22
22
  )
23
23
  }
24
24
 
@@ -1,8 +1,8 @@
1
1
  import React from 'react'
2
2
  import { render } from '@testing-library/react'
3
-
4
3
  import { SourceBlock } from './'
5
4
  import { SourceBlockProps } from './SourceBlock.types'
5
+
6
6
  import styles from './SourceBlock.module.css'
7
7
 
8
8
  describe('Source Block', () => {
@@ -1,16 +1,18 @@
1
1
  import React from 'react'
2
2
  import { SourceBlockProps } from './SourceBlock.types'
3
-
4
- import makeClassName from '../utils/makeClassName'
3
+ import { makeClassName, ClassNames } from '../utils/makeClassName'
5
4
  import makeStyleContext from '../utils/makeStyleContext'
6
5
 
7
6
  import styles from './SourceBlock.module.css'
8
7
 
9
8
  export const SourceBlock: React.FC<SourceBlockProps> = ({
10
- block: { only_on: onlyOn, quote, origin, url },
9
+ block: {
10
+ only_on: onlyOn,
11
+ data: { quote, origin, url }
12
+ },
11
13
  styleContext
12
14
  }) => {
13
- let classNames: (string[] | string | boolean)[][] = [
15
+ let classNames: ClassNames = [
14
16
  [styles.root, true],
15
17
  [styles[onlyOn], true]
16
18
  ]
@@ -0,0 +1,15 @@
1
+ {
2
+ "type": "source",
3
+ "data": {
4
+ "quote": [
5
+ {
6
+ "type": "p",
7
+ "data": "«В свое время, в 1990-е, потребительская корзина позиционировалась как временная, кризисная мера. Полагали, что мы через короткое время сможем отказаться от этого подхода и перейти к определению бедности через медианные доходы граждан. Но мы прожили с этой временной мерой почти четверть века», — отмечает глава НИИ труда Дмитрий Платыгин.",
8
+ "length": 339
9
+ }
10
+ ],
11
+ "origin": "Коммерсант",
12
+ "url": "https://www.kommersant.ru/doc/4502584?from=main_1"
13
+ },
14
+ "id": "4-072f3b4143d3377d533e198d3ea1ac263959a79a114e81104ecb4ab02b3996e5"
15
+ }
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
-
3
2
  import { Spoiler } from './'
4
3
  import { PreviewWrapper } from '../_storybook/PreviewWrapper'
4
+
5
5
  import styles from './Spoiler.stories.module.css'
6
6
 
7
7
  import mock from './mock.json'
@@ -1,8 +1,8 @@
1
1
  import React from 'react'
2
2
  import { render } from '@testing-library/react'
3
-
4
3
  import { Spoiler } from './'
5
4
  import { SpoilerProps } from './Spoiler.types'
5
+
6
6
  import styles from './Spoiler.module.css'
7
7
 
8
8
  describe('Spoiler', () => {
@@ -1,10 +1,9 @@
1
1
  import React, { useState, useRef } from 'react'
2
2
  import { SpoilerProps } from './Spoiler.types'
3
-
4
- import makeClassName from '../utils/makeClassName'
3
+ import { makeClassName, ClassNames } from '../utils/makeClassName'
5
4
  import makeStyleContext from '../utils/makeStyleContext'
6
- import postMessage from '../utils/postMessage'
7
5
 
6
+ import postMessage from '../utils/postMessage'
8
7
  import { RenderBlocks } from '../RenderBlocks'
9
8
  import { Button } from '../Button'
10
9
  import { SvgSymbol } from '../SvgSymbol'
@@ -39,7 +38,7 @@ export const Spoiler: React.FC<SpoilerProps> = ({
39
38
  }
40
39
  }
41
40
 
42
- let classNames: (string[] | string | boolean)[][] = [
41
+ let classNames: ClassNames = [
43
42
  [styles.root, true],
44
43
  [styles[onlyOn], !!onlyOn],
45
44
  [styles[display], !!display && styles[display]],
@@ -57,7 +56,7 @@ export const Spoiler: React.FC<SpoilerProps> = ({
57
56
  <div ref={ref} className={makeClassName(classNames)} data-testid="spoiler">
58
57
  <div className={styles.header}>{title && <h3>{title}</h3>}</div>
59
58
  <div className={styles.body}>
60
- {blocks.map(item => (
59
+ {blocks.map((item) => (
61
60
  <RenderBlocks
62
61
  key={item.id}
63
62
  block={item}
@@ -1,10 +1,10 @@
1
1
  import React from 'react'
2
-
3
2
  import { SvgSymbol } from './'
4
3
  import { PreviewWrapper } from '../_storybook/PreviewWrapper'
5
- import styles from './SvgSymbol.stories.module.css'
6
4
  import { Icons } from './SvgSymbol.types'
7
5
 
6
+ import styles from './SvgSymbol.stories.module.css'
7
+
8
8
  export default {
9
9
  title: 'Main / SvgSymbol',
10
10
  component: SvgSymbol,
@@ -46,7 +46,7 @@ const Example: React.FC = () => {
46
46
  <div className={styles.root}>
47
47
  <h2>Кнопки соц. сетей и реакций</h2>
48
48
  <div className={styles.row}>
49
- {social.map(icon => (
49
+ {social.map((icon) => (
50
50
  <span title={icon} key={`iconName-${icon}`} className={styles.icon}>
51
51
  <SvgSymbol icon={icon} size="medium" />
52
52
  </span>
@@ -55,7 +55,7 @@ const Example: React.FC = () => {
55
55
 
56
56
  <h2>Мета</h2>
57
57
  <div className={styles.row}>
58
- {meta.map(icon => (
58
+ {meta.map((icon) => (
59
59
  <span title={icon} key={`iconName-${icon}`} className={styles.icon}>
60
60
  <SvgSymbol icon={icon} size="medium" />
61
61
  </span>
@@ -64,7 +64,7 @@ const Example: React.FC = () => {
64
64
 
65
65
  <h2>Плеер</h2>
66
66
  <div className={styles.row}>
67
- {podcast.map(icon => (
67
+ {podcast.map((icon) => (
68
68
  <span title={icon} key={`iconName-${icon}`} className={styles.icon}>
69
69
  <SvgSymbol icon={icon} size="medium" />
70
70
  </span>
@@ -73,7 +73,7 @@ const Example: React.FC = () => {
73
73
 
74
74
  <h2>Другие</h2>
75
75
  <div className={styles.row}>
76
- {other.map(icon => (
76
+ {other.map((icon) => (
77
77
  <span title={icon} key={`iconName-${icon}`} className={styles.icon}>
78
78
  <SvgSymbol icon={icon} size="medium" />
79
79
  </span>
@@ -1,8 +1,8 @@
1
1
  import React from 'react'
2
2
  import { render, RenderResult } from '@testing-library/react'
3
-
4
3
  import { SvgSymbol } from './'
5
4
  import { SvgSymbolProps } from './SvgSymbol.types'
5
+
6
6
  import styles from './SvgSymbol.module.css'
7
7
 
8
8
  describe('Svg Symbol', () => {
@@ -1,9 +1,9 @@
1
1
  import React from 'react'
2
2
  import { SvgSymbolProps } from './SvgSymbol.types'
3
- import makeClassName from '../utils/makeClassName'
3
+ import { makeClassName } from '../utils/makeClassName'
4
+ import { icons } from './icons'
4
5
 
5
6
  import styles from './SvgSymbol.module.css'
6
- import { icons } from './icons'
7
7
 
8
8
  export const SvgSymbol: React.FC<SvgSymbolProps> = ({
9
9
  icon,
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from 'react'
2
-
3
2
  import { Switcher } from './'
4
3
  import { PreviewWrapper } from '../_storybook/PreviewWrapper'
4
+
5
5
  import styles from './Switcher.stories.module.css'
6
6
 
7
7
  export default {
@@ -24,7 +24,7 @@ const Example: React.FC = () => {
24
24
  <Switcher
25
25
  enabled={enabledOne}
26
26
  styleContext="isInPanel"
27
- onChange={e => setEnabledOne(e.target.checked)}
27
+ onChange={(e) => setEnabledOne(e.target.checked)}
28
28
  >
29
29
  <span>Показывать по порядку</span>
30
30
  </Switcher>
@@ -34,7 +34,7 @@ const Example: React.FC = () => {
34
34
  <Switcher
35
35
  enabled={enabledTwo}
36
36
  styleContext="isInMenu"
37
- onChange={e => setEnabledTwo(e.target.checked)}
37
+ onChange={(e) => setEnabledTwo(e.target.checked)}
38
38
  theme="dark"
39
39
  >
40
40
  <span>Показывать по порядку</span>
@@ -45,7 +45,7 @@ const Example: React.FC = () => {
45
45
  <Switcher
46
46
  enabled={enabledThree}
47
47
  styleContext="isInLive"
48
- onChange={e => setEnabledThree(e.target.checked)}
48
+ onChange={(e) => setEnabledThree(e.target.checked)}
49
49
  childrenPosition="right"
50
50
  >
51
51
  <span>Перевернуть трансляцию</span>
@@ -1,8 +1,8 @@
1
1
  import React from 'react'
2
2
  import { render, fireEvent, RenderResult } from '@testing-library/react'
3
-
4
3
  import { Switcher } from './'
5
4
  import { SwitcherProps } from './Switcher.types'
5
+
6
6
  import styles from './Switcher.module.css'
7
7
 
8
8
  describe('Switcher', () => {
@@ -1,7 +1,6 @@
1
1
  import React from 'react'
2
2
  import { SwitcherProps } from './Switcher.types'
3
- import makeClassName from '../utils/makeClassName'
4
-
3
+ import { makeClassName } from '../utils/makeClassName'
5
4
  import styles from './Switcher.module.css'
6
5
 
7
6
  export const Switcher: React.FC<SwitcherProps> = ({
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
-
3
2
  import { Table } from './'
4
3
  import { PreviewWrapper } from '../_storybook/PreviewWrapper'
4
+
5
5
  import styles from './Table.stories.module.css'
6
6
 
7
7
  import mock from './mock.json'
@@ -1,8 +1,8 @@
1
1
  import React from 'react'
2
2
  import { render } from '@testing-library/react'
3
-
4
3
  import { Table } from './'
5
4
  import { TableProps } from './Table.types'
5
+
6
6
  import styles from './Table.module.css'
7
7
 
8
8
  describe('Table', () => {
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import { TableProps } from './Table.types'
3
3
  import makeStyleContext from '../utils/makeStyleContext'
4
- import makeClassName from '../utils/makeClassName'
4
+ import { makeClassName, ClassNames } from '../utils/makeClassName'
5
5
 
6
6
  import { MediaCaption } from '../MediaCaption'
7
7
 
@@ -28,7 +28,7 @@ export const Table: React.FC<TableProps> = ({
28
28
  '#f4f0f8': 'violet'
29
29
  }
30
30
 
31
- let classNames: (string[] | string | boolean)[][] = [
31
+ let classNames: ClassNames = [
32
32
  [styles.root, true],
33
33
  [styles[display], !!display && !!styles[display]]
34
34
  ]
@@ -1,8 +1,6 @@
1
1
  import React from 'react'
2
-
3
2
  import { Tag } from './'
4
3
  import { PreviewWrapper } from '../_storybook/PreviewWrapper'
5
-
6
4
  import { TagSizes, TagThemes } from './Tag.types'
7
5
 
8
6
  import styles from './Tag.stories.module.css'
@@ -29,7 +27,7 @@ const Example: React.FC = () => {
29
27
  return (
30
28
  <>
31
29
  <div className={styles.root}>
32
- {tags.map(tag => (
30
+ {tags.map((tag) => (
33
31
  <div key={`tagSize-${tag.theme}-${tag.size}`}>
34
32
  <Tag size={tag.size} theme={tag.theme} styleContext="rich">
35
33
  {tag.title}
@@ -1,14 +1,14 @@
1
1
  import React from 'react'
2
2
  import { render } from '@testing-library/react'
3
-
4
3
  import { Tag } from './'
5
- // import { TagProps } from './Tag.types'
4
+ import { TagProps } from './Tag.types'
5
+
6
6
  import styles from './Tag.module.css'
7
7
 
8
8
  describe('Tag', () => {
9
- // let props: TagProps
9
+ let props: TagProps
10
10
 
11
- const renderComponent = () => render(<Tag>Tag name</Tag>)
11
+ const renderComponent = () => render(<Tag {...props}>Tag name</Tag>)
12
12
 
13
13
  it('should have root style', () => {
14
14
  const { getByTestId } = renderComponent()
package/src/Tag/index.tsx CHANGED
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import { TagProps } from './Tag.types'
3
3
  import makeStyleContext from '../utils/makeStyleContext'
4
- import makeClassName from '../utils/makeClassName'
4
+ import { makeClassName, ClassNames } from '../utils/makeClassName'
5
5
 
6
6
  import styles from './Tag.module.css'
7
7
 
@@ -13,7 +13,7 @@ export const Tag: React.FC<TagProps> = ({
13
13
  correlation,
14
14
  onlyOn
15
15
  }) => {
16
- let classNames: (string[] | string | boolean)[][] = [
16
+ let classNames: ClassNames = [
17
17
  [styles.root, true],
18
18
  [styles[size], !!size && !!styles[size]],
19
19
  [styles[theme], !!theme && !!styles[theme]],
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
-
3
2
  import { Timestamp } from './'
4
3
  import { PreviewWrapper } from '../_storybook/PreviewWrapper'
4
+
5
5
  import styles from './Timestamp.stories.module.css'
6
6
 
7
7
  export default {
@@ -1,8 +1,8 @@
1
1
  import React from 'react'
2
2
  import { render } from '@testing-library/react'
3
-
4
3
  import { Timestamp } from './'
5
4
  import { TimestampProps } from './Timestamp.types'
5
+
6
6
  import styles from './Timestamp.module.css'
7
7
 
8
8
  describe('Timestamp', () => {
@@ -1,9 +1,7 @@
1
1
  import React from 'react'
2
2
  import { TimestampProps } from './Timestamp.types'
3
-
4
3
  import dayjs from 'dayjs'
5
4
  import 'dayjs/locale/ru'
6
-
7
5
  import relativeTime from 'dayjs/plugin/relativeTime'
8
6
 
9
7
  import styles from './Timestamp.module.css'
@@ -1,5 +1,4 @@
1
1
  import React, { useState } from 'react'
2
-
3
2
  import { Toolbar } from './'
4
3
  import { ToolbarButton } from '../ToolbarButton'
5
4
  import { ToolbarButtonTypes } from '../ToolbarButton/ToolbarButton.types'
@@ -1,8 +1,8 @@
1
1
  import React from 'react'
2
2
  import { render } from '@testing-library/react'
3
-
4
3
  import { Toolbar } from './'
5
4
  import { ToolbarProps } from './Toolbar.types'
5
+
6
6
  import styles from './Toolbar.module.css'
7
7
 
8
8
  describe('Toolbar', () => {
@@ -1,13 +1,12 @@
1
1
  import React, { Children } from 'react'
2
2
  import { ToolbarProps } from './Toolbar.types'
3
-
4
3
  import makeStyleContext from '../utils/makeStyleContext'
5
- import makeClassName from '../utils/makeClassName'
4
+ import { makeClassName, ClassNames } from '../utils/makeClassName'
6
5
 
7
6
  import styles from './Toolbar.module.css'
8
7
 
9
8
  export const Toolbar: React.FC<ToolbarProps> = ({ children, styleContext }) => {
10
- let classNames: (string[] | string | boolean)[][] = [[styles.root, true]]
9
+ let classNames: ClassNames = [[styles.root, true]]
11
10
 
12
11
  if (styleContext) {
13
12
  classNames = makeStyleContext(classNames, styleContext, styles)
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
-
3
2
  import { ToolbarButton } from './'
4
- import { PreviewWrapper } from '_storybook/PreviewWrapper'
3
+ import { PreviewWrapper } from '../_storybook/PreviewWrapper'
4
+
5
5
  import styles from './ToolbarButton.stories.module.css'
6
6
 
7
7
  export default {
@@ -1,8 +1,8 @@
1
1
  import React from 'react'
2
2
  import { render } from '@testing-library/react'
3
-
4
3
  import { ToolbarButton } from './'
5
4
  import { ToolbarButtonProps } from './ToolbarButton.types'
5
+
6
6
  import styles from './ToolbarButton.module.css'
7
7
 
8
8
  describe('Toolbar Button', () => {
@@ -1,8 +1,7 @@
1
1
  import React from 'react'
2
2
  import { ToolbarButtonProps } from './ToolbarButton.types'
3
-
4
3
  import { SvgSymbol } from '../SvgSymbol/'
5
- import makeClassName from '../utils/makeClassName'
4
+ import { makeClassName, ClassNames } from '../utils/makeClassName'
6
5
 
7
6
  import styles from './ToolbarButton.module.css'
8
7
 
@@ -13,7 +12,7 @@ export const ToolbarButton: React.FC<ToolbarButtonProps> = ({
13
12
  isActive,
14
13
  onClick
15
14
  }) => {
16
- const classNames: (string[] | string | boolean)[][] = [
15
+ const classNames: ClassNames = [
17
16
  [styles.root, true],
18
17
  [styles[type], !!styles[type]],
19
18
  [styles[theme], !!styles[theme] && !!theme],
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
- import makeClassName from 'utils/makeClassName'
3
2
  import styles from './PreviewWrapper.module.css'
3
+ import makeClassName from '../../utils/makeClassName'
4
4
 
5
5
  export interface PreviewWrapperProps {
6
6
  theme: 'light' | 'dark'
@@ -18,16 +18,14 @@ const DangerousHTML: React.FC<DangerousHtmlProps> = ({
18
18
  setCanRenderHtml(true)
19
19
  }, [])
20
20
 
21
- const replaceScriptElementsRecursive = useCallback(node => {
21
+ const replaceScriptElementsRecursive = useCallback((node) => {
22
22
  if (
23
23
  node.tagName === 'SCRIPT' &&
24
24
  (!node.id || node.id.indexOf('script-') !== 0)
25
25
  ) {
26
26
  const script = document.createElement('script')
27
27
 
28
- script.id = `script-${Math.random()
29
- .toString(16)
30
- .slice(2)}`
28
+ script.id = `script-${Math.random().toString(16).slice(2)}`
31
29
  script.innerHTML = node.innerHTML
32
30
 
33
31
  const attrs = node.attributes
@@ -53,7 +51,7 @@ const DangerousHTML: React.FC<DangerousHtmlProps> = ({
53
51
  const prepareAnchors = useCallback(() => {
54
52
  const anchors = Array.from(element.current.querySelectorAll('a'))
55
53
 
56
- anchors.forEach(a => {
54
+ anchors.forEach((a) => {
57
55
  a.setAttribute('target', '_blank')
58
56
  })
59
57
  }, [])
@@ -62,10 +60,10 @@ const DangerousHTML: React.FC<DangerousHtmlProps> = ({
62
60
  if (
63
61
  canRenderHtml &&
64
62
  html.indexOf('script') > -1 &&
65
- element.current.firstChild
63
+ element.current.firstElementChild
66
64
  ) {
67
65
  element.current.firstElementChild.innerHTML = html
68
- replaceScriptElementsRecursive(element.current.firstChild)
66
+ replaceScriptElementsRecursive(element.current.firstElementChild)
69
67
  prepareAnchors()
70
68
  }
71
69
  }, [
@@ -13,7 +13,7 @@ const generateGradient = (color: string): string => {
13
13
  [1, 82]
14
14
  ]
15
15
 
16
- const gradient = gradientSteps.map(i => `rgba(${color}, ${i[0]}) ${i[1]}%`)
16
+ const gradient = gradientSteps.map((i) => `rgba(${color}, ${i[0]}) ${i[1]}%`)
17
17
 
18
18
  return `linear-gradient(-180deg, ${gradient})`
19
19
  }
@@ -1,4 +1,6 @@
1
- const makeClassName = (list: (string[] | string | boolean)[][]): string => {
1
+ export type ClassNames = (string[] | string | boolean)[][]
2
+
3
+ export const makeClassName = (list: ClassNames): string => {
2
4
  return list
3
5
  .filter(([, active]) => active)
4
6
  .map(([className]) => className)
@@ -1,10 +1,14 @@
1
+ import { ClassNames } from './makeClassName'
2
+
1
3
  const makeStyleContext = (
2
- classNames: (string[] | string | boolean)[][],
4
+ classNames: ClassNames,
3
5
  styleContext: string[] | string,
4
- styles
5
- ): (string[] | string | boolean)[][] => {
6
+ styles: Record<string, string>
7
+ ): ClassNames => {
6
8
  const context = Array.isArray(styleContext)
7
- ? styleContext.filter(ctx => styles[ctx]).map(ctx => [[styles[ctx]], true])
9
+ ? styleContext
10
+ .filter((ctx) => styles[ctx])
11
+ .map((ctx) => [[styles[ctx]], true])
8
12
  : [[styles[styleContext], !!styleContext && !!styles[styleContext]]]
9
13
 
10
14
  return classNames.concat(context)
@@ -1,2 +1,2 @@
1
1
  export const toCamel = (s: string): string =>
2
- s.replace(/([_][a-z])/gi, str => str.toUpperCase().replace('_', ''))
2
+ s.replace(/([_][a-z])/gi, (str) => str.toUpperCase().replace('_', ''))