@gravity-ui/page-constructor 1.12.0 → 1.12.1-alpha.1

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 (62) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/build/cjs/blocks/CardLayout/schema.d.ts +22 -24
  3. package/build/cjs/blocks/CardLayout/schema.js +1 -6
  4. package/build/cjs/blocks/ExtendedFeatures/schema.d.ts +16 -17
  5. package/build/cjs/blocks/ExtendedFeatures/schema.js +1 -6
  6. package/build/cjs/blocks/HeaderSlider/schema.d.ts +0 -25
  7. package/build/cjs/blocks/LinkTable/schema.d.ts +29 -21
  8. package/build/cjs/blocks/LinkTable/schema.js +1 -1
  9. package/build/cjs/blocks/Media/schema.js +1 -1
  10. package/build/cjs/blocks/PromoFeaturesBlock/schema.d.ts +14 -15
  11. package/build/cjs/blocks/PromoFeaturesBlock/schema.js +1 -6
  12. package/build/cjs/blocks/Slider/Slider.d.ts +1 -6
  13. package/build/cjs/blocks/Slider/schema.d.ts +28 -49
  14. package/build/cjs/blocks/Slider/schema.js +1 -6
  15. package/build/cjs/blocks/Tabs/schema.d.ts +29 -25
  16. package/build/cjs/blocks/Tabs/schema.js +1 -4
  17. package/build/cjs/components/Author/Author.js +2 -2
  18. package/build/cjs/components/Author/__tests__/Author.test.d.ts +1 -0
  19. package/build/cjs/components/Author/__tests__/Author.test.js +49 -0
  20. package/build/cjs/components/BlockHeader/BlockHeader.css +8 -19
  21. package/build/cjs/components/BlockHeader/BlockHeader.js +4 -3
  22. package/build/cjs/grid/Grid/Grid.css +16 -16
  23. package/build/cjs/models/constructor-items/common.d.ts +1 -0
  24. package/build/cjs/navigation/components/Header/Header.css +5 -3
  25. package/build/cjs/navigation/components/Logo/Logo.css +5 -6
  26. package/build/cjs/navigation/components/NavigationItem/NavigationItem.css +1 -0
  27. package/build/cjs/schema/validators/common.d.ts +31 -0
  28. package/build/cjs/schema/validators/common.js +10 -1
  29. package/build/cjs/sub-blocks/CardWithImage/schema.js +1 -1
  30. package/build/cjs/text-transform/blocks.js +44 -54
  31. package/build/esm/blocks/CardLayout/schema.d.ts +22 -24
  32. package/build/esm/blocks/CardLayout/schema.js +2 -7
  33. package/build/esm/blocks/ExtendedFeatures/schema.d.ts +16 -17
  34. package/build/esm/blocks/ExtendedFeatures/schema.js +2 -7
  35. package/build/esm/blocks/HeaderSlider/schema.d.ts +0 -25
  36. package/build/esm/blocks/LinkTable/schema.d.ts +29 -21
  37. package/build/esm/blocks/LinkTable/schema.js +2 -2
  38. package/build/esm/blocks/Media/schema.js +1 -1
  39. package/build/esm/blocks/PromoFeaturesBlock/schema.d.ts +14 -15
  40. package/build/esm/blocks/PromoFeaturesBlock/schema.js +2 -7
  41. package/build/esm/blocks/Slider/Slider.d.ts +1 -6
  42. package/build/esm/blocks/Slider/schema.d.ts +28 -49
  43. package/build/esm/blocks/Slider/schema.js +2 -7
  44. package/build/esm/blocks/Tabs/schema.d.ts +29 -25
  45. package/build/esm/blocks/Tabs/schema.js +2 -5
  46. package/build/esm/components/Author/Author.js +2 -2
  47. package/build/esm/components/Author/__tests__/Author.test.d.ts +1 -0
  48. package/build/esm/components/Author/__tests__/Author.test.js +46 -0
  49. package/build/esm/components/BlockHeader/BlockHeader.css +8 -19
  50. package/build/esm/components/BlockHeader/BlockHeader.js +5 -4
  51. package/build/esm/grid/Grid/Grid.css +16 -16
  52. package/build/esm/models/constructor-items/common.d.ts +1 -0
  53. package/build/esm/navigation/components/Header/Header.css +5 -3
  54. package/build/esm/navigation/components/Logo/Logo.css +5 -6
  55. package/build/esm/navigation/components/NavigationItem/NavigationItem.css +1 -0
  56. package/build/esm/schema/validators/common.d.ts +31 -0
  57. package/build/esm/schema/validators/common.js +9 -0
  58. package/build/esm/sub-blocks/CardWithImage/schema.js +1 -1
  59. package/build/esm/text-transform/blocks.js +44 -54
  60. package/package.json +2 -3
  61. package/server/models/constructor-items/common.d.ts +1 -0
  62. package/server/text-transform/blocks.js +44 -54
@@ -869,3 +869,34 @@ export declare const CardBase: {
869
869
  enum: string[];
870
870
  };
871
871
  };
872
+ export declare const BlockHeaderProps: {
873
+ title: {
874
+ oneOf: ({
875
+ type: string;
876
+ additionalProperties: boolean;
877
+ required: string[];
878
+ properties: {
879
+ text: {
880
+ type: string;
881
+ contentType: string;
882
+ };
883
+ textSize: {
884
+ type: string;
885
+ enum: string[];
886
+ };
887
+ url: {
888
+ type: string;
889
+ };
890
+ resetMargin: {
891
+ type: string;
892
+ };
893
+ };
894
+ } | {
895
+ type: string;
896
+ })[];
897
+ };
898
+ description: {
899
+ type: string;
900
+ contentType: string;
901
+ };
902
+ };
@@ -444,3 +444,12 @@ export const CardBase = {
444
444
  enum: ['border', 'shadow', 'none'],
445
445
  },
446
446
  };
447
+ export const BlockHeaderProps = {
448
+ title: {
449
+ oneOf: [{ type: 'string' }, TitleProps],
450
+ },
451
+ description: {
452
+ type: 'string',
453
+ contentType: 'yfm',
454
+ },
455
+ };
@@ -1,7 +1,7 @@
1
1
  import { omit } from 'lodash';
2
2
  import { BaseProps, textSize } from '../../schema/validators/common';
3
3
  import { filteredArray } from '../../schema/validators/utils';
4
- import { ContentBase } from '../../../src/sub-blocks/Content/schema';
4
+ import { ContentBase } from '../../sub-blocks/Content/schema';
5
5
  const CardWithImageContentProps = omit(ContentBase, ['links', 'size', 'text', 'theme']);
6
6
  const CardWithImageLinks = {
7
7
  type: 'object',
@@ -35,13 +35,6 @@ function parsePromoFeatures(transformer, items) {
35
35
  return (Object.assign({ text: transformer(text) }, rest));
36
36
  });
37
37
  }
38
- function parseSlider(transformer, block) {
39
- const { title, description } = block;
40
- block.title = Object.assign(Object.assign({}, title), { text: transformer(title ? title.text : '') });
41
- if (description) {
42
- block.description = transformer(description);
43
- }
44
- }
45
38
  const parseTitle = (transformer, title) => typeof title === 'object' && 'text' in title
46
39
  ? Object.assign(Object.assign({}, title), { text: transformer(title.text) }) : title && transformer(title);
47
40
  const parseItemsTitle = (transformer, items) => items.map((_a) => {
@@ -95,6 +88,17 @@ export function yfmTransformer(lang, content) {
95
88
  export function typografTransformer(lang, content) {
96
89
  return typografToHTML(content, lang);
97
90
  }
91
+ const blockHeaderTransfomer = [
92
+ {
93
+ fields: ['title'],
94
+ transformer: typografTransformer,
95
+ parser: parseTitle,
96
+ },
97
+ {
98
+ fields: ['description'],
99
+ transformer: yfmTransformer,
100
+ },
101
+ ];
98
102
  const config = {
99
103
  [SubBlockType.Partner]: {
100
104
  fields: ['text'],
@@ -139,35 +143,35 @@ const config = {
139
143
  transformer: typografTransformer,
140
144
  },
141
145
  [BlockType.ExtendedFeaturesBlock]: [
146
+ ...blockHeaderTransfomer,
142
147
  {
143
- fields: ['title'],
148
+ fields: ['items'],
144
149
  transformer: typografTransformer,
145
- parser: parseTitle,
150
+ parser: createItemsParser(['title']),
146
151
  },
147
152
  {
148
- fields: ['description'],
153
+ fields: ['items'],
149
154
  transformer: yfmTransformer,
155
+ parser: createItemsParser(['text', 'additionalInfo']),
150
156
  },
157
+ ],
158
+ [BlockType.PromoFeaturesBlock]: [
151
159
  {
152
- fields: ['items'],
160
+ fields: ['title'],
153
161
  transformer: typografTransformer,
154
- parser: createItemsParser(['title']),
162
+ parser: parseTitle,
163
+ },
164
+ {
165
+ fields: ['description'],
166
+ transformer: yfmTransformer,
155
167
  },
156
168
  {
157
169
  fields: ['items'],
158
170
  transformer: yfmTransformer,
159
- parser: createItemsParser(['text', 'additionalInfo']),
171
+ parser: parsePromoFeatures,
160
172
  },
161
173
  ],
162
- [BlockType.PromoFeaturesBlock]: {
163
- fields: ['items'],
164
- transformer: yfmTransformer,
165
- parser: parsePromoFeatures,
166
- },
167
- [BlockType.SliderBlock]: {
168
- transformer: typografTransformer,
169
- parser: parseSlider,
170
- },
174
+ [BlockType.SliderBlock]: blockHeaderTransfomer,
171
175
  [BlockType.QuestionsBlock]: [
172
176
  {
173
177
  fields: ['title'],
@@ -204,21 +208,14 @@ const config = {
204
208
  },
205
209
  ],
206
210
  [BlockType.MediaBlock]: [
211
+ ...blockHeaderTransfomer,
207
212
  {
208
- fields: ['title'],
209
- transformer: typografTransformer,
210
- },
211
- {
212
- fields: ['description', 'title', 'additionalInfo'],
213
+ fields: ['title', 'additionalInfo'],
213
214
  transformer: yfmTransformer,
214
215
  },
215
216
  ],
216
217
  [BlockType.TabsBlock]: [
217
- {
218
- fields: ['title'],
219
- transformer: typografTransformer,
220
- parser: parseTitle,
221
- },
218
+ ...blockHeaderTransfomer,
222
219
  {
223
220
  fields: ['items'],
224
221
  transformer: yfmTransformer,
@@ -250,6 +247,11 @@ const config = {
250
247
  },
251
248
  ],
252
249
  [BlockType.SimpleBlock]: [
250
+ {
251
+ fields: ['title'],
252
+ transformer: typografTransformer,
253
+ parser: parseTitle,
254
+ },
253
255
  {
254
256
  fields: ['description'],
255
257
  transformer: yfmTransformer,
@@ -301,28 +303,7 @@ const config = {
301
303
  parser: parseTitle,
302
304
  },
303
305
  ],
304
- [BlockType.CardLayoutBlock]: [
305
- {
306
- fields: ['description'],
307
- transformer: yfmTransformer,
308
- },
309
- {
310
- fields: ['title'],
311
- transformer: typografTransformer,
312
- parser: parseTitle,
313
- },
314
- ],
315
- [BlockType.PromoFeaturesBlock]: [
316
- {
317
- fields: ['description'],
318
- transformer: typografTransformer,
319
- },
320
- {
321
- fields: ['title'],
322
- transformer: typografTransformer,
323
- parser: parseTitle,
324
- },
325
- ],
306
+ [BlockType.PromoFeaturesBlock]: blockHeaderTransfomer,
326
307
  [BlockType.InfoBlock]: [
327
308
  {
328
309
  fields: ['rightContent', 'leftContent'],
@@ -341,6 +322,15 @@ const config = {
341
322
  transformer: typografTransformer,
342
323
  },
343
324
  ],
325
+ [BlockType.CardLayoutBlock]: blockHeaderTransfomer,
326
+ [BlockType.IconsBlock]: [
327
+ {
328
+ fields: ['title'],
329
+ transformer: typografTransformer,
330
+ parser: parseTitle,
331
+ },
332
+ ],
333
+ [BlockType.LinkTableBlock]: blockHeaderTransfomer,
344
334
  };
345
335
  function addRandomOrder(block) {
346
336
  if (block) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/page-constructor",
3
- "version": "1.12.0",
3
+ "version": "1.12.1-alpha.1",
4
4
  "description": "Gravity UI Page Constructor",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -66,7 +66,7 @@
66
66
  "devDependencies": {
67
67
  "@commitlint/cli": "^17.1.2",
68
68
  "@commitlint/config-conventional": "^17.1.0",
69
- "@doc-tools/transform": "^2.12.0",
69
+ "@doc-tools/transform": "2.12.0",
70
70
  "@gravity-ui/eslint-config": "^1.0.2",
71
71
  "@gravity-ui/prettier-config": "^1.0.1",
72
72
  "@gravity-ui/stylelint-config": "^1.0.0",
@@ -103,7 +103,6 @@
103
103
  "lint-staged": "^11.2.6",
104
104
  "markdown-loader": "^6.0.0",
105
105
  "move-file-cli": "^3.0.0",
106
- "mq-polyfill": "^1.1.8",
107
106
  "npm-run-all": "^4.1.5",
108
107
  "postcss": "^8.4.16",
109
108
  "postcss-scss": "^4.0.4",
@@ -332,6 +332,7 @@ export interface AuthorProps {
332
332
  className?: string;
333
333
  authorContainerClassName?: string;
334
334
  type?: AuthorType;
335
+ dataQa?: string;
335
336
  }
336
337
  export interface BlockHeaderProps {
337
338
  title?: TitleProps | string;
@@ -52,13 +52,6 @@ function parsePromoFeatures(transformer, items) {
52
52
  return (Object.assign({ text: transformer(text) }, rest));
53
53
  });
54
54
  }
55
- function parseSlider(transformer, block) {
56
- const { title, description } = block;
57
- block.title = Object.assign(Object.assign({}, title), { text: transformer(title ? title.text : '') });
58
- if (description) {
59
- block.description = transformer(description);
60
- }
61
- }
62
55
  const parseTitle = (transformer, title) => typeof title === 'object' && 'text' in title
63
56
  ? Object.assign(Object.assign({}, title), { text: transformer(title.text) }) : title && transformer(title);
64
57
  const parseItemsTitle = (transformer, items) => items.map((_a) => {
@@ -114,6 +107,17 @@ function typografTransformer(lang, content) {
114
107
  return (0, utils_1.typografToHTML)(content, lang);
115
108
  }
116
109
  exports.typografTransformer = typografTransformer;
110
+ const blockHeaderTransfomer = [
111
+ {
112
+ fields: ['title'],
113
+ transformer: typografTransformer,
114
+ parser: parseTitle,
115
+ },
116
+ {
117
+ fields: ['description'],
118
+ transformer: yfmTransformer,
119
+ },
120
+ ];
117
121
  const config = {
118
122
  [models_1.SubBlockType.Partner]: {
119
123
  fields: ['text'],
@@ -158,35 +162,35 @@ const config = {
158
162
  transformer: typografTransformer,
159
163
  },
160
164
  [models_1.BlockType.ExtendedFeaturesBlock]: [
165
+ ...blockHeaderTransfomer,
161
166
  {
162
- fields: ['title'],
167
+ fields: ['items'],
163
168
  transformer: typografTransformer,
164
- parser: parseTitle,
169
+ parser: (0, exports.createItemsParser)(['title']),
165
170
  },
166
171
  {
167
- fields: ['description'],
172
+ fields: ['items'],
168
173
  transformer: yfmTransformer,
174
+ parser: (0, exports.createItemsParser)(['text', 'additionalInfo']),
169
175
  },
176
+ ],
177
+ [models_1.BlockType.PromoFeaturesBlock]: [
170
178
  {
171
- fields: ['items'],
179
+ fields: ['title'],
172
180
  transformer: typografTransformer,
173
- parser: (0, exports.createItemsParser)(['title']),
181
+ parser: parseTitle,
182
+ },
183
+ {
184
+ fields: ['description'],
185
+ transformer: yfmTransformer,
174
186
  },
175
187
  {
176
188
  fields: ['items'],
177
189
  transformer: yfmTransformer,
178
- parser: (0, exports.createItemsParser)(['text', 'additionalInfo']),
190
+ parser: parsePromoFeatures,
179
191
  },
180
192
  ],
181
- [models_1.BlockType.PromoFeaturesBlock]: {
182
- fields: ['items'],
183
- transformer: yfmTransformer,
184
- parser: parsePromoFeatures,
185
- },
186
- [models_1.BlockType.SliderBlock]: {
187
- transformer: typografTransformer,
188
- parser: parseSlider,
189
- },
193
+ [models_1.BlockType.SliderBlock]: blockHeaderTransfomer,
190
194
  [models_1.BlockType.QuestionsBlock]: [
191
195
  {
192
196
  fields: ['title'],
@@ -223,21 +227,14 @@ const config = {
223
227
  },
224
228
  ],
225
229
  [models_1.BlockType.MediaBlock]: [
230
+ ...blockHeaderTransfomer,
226
231
  {
227
- fields: ['title'],
228
- transformer: typografTransformer,
229
- },
230
- {
231
- fields: ['description', 'title', 'additionalInfo'],
232
+ fields: ['title', 'additionalInfo'],
232
233
  transformer: yfmTransformer,
233
234
  },
234
235
  ],
235
236
  [models_1.BlockType.TabsBlock]: [
236
- {
237
- fields: ['title'],
238
- transformer: typografTransformer,
239
- parser: parseTitle,
240
- },
237
+ ...blockHeaderTransfomer,
241
238
  {
242
239
  fields: ['items'],
243
240
  transformer: yfmTransformer,
@@ -269,6 +266,11 @@ const config = {
269
266
  },
270
267
  ],
271
268
  [models_1.BlockType.SimpleBlock]: [
269
+ {
270
+ fields: ['title'],
271
+ transformer: typografTransformer,
272
+ parser: parseTitle,
273
+ },
272
274
  {
273
275
  fields: ['description'],
274
276
  transformer: yfmTransformer,
@@ -320,28 +322,7 @@ const config = {
320
322
  parser: parseTitle,
321
323
  },
322
324
  ],
323
- [models_1.BlockType.CardLayoutBlock]: [
324
- {
325
- fields: ['description'],
326
- transformer: yfmTransformer,
327
- },
328
- {
329
- fields: ['title'],
330
- transformer: typografTransformer,
331
- parser: parseTitle,
332
- },
333
- ],
334
- [models_1.BlockType.PromoFeaturesBlock]: [
335
- {
336
- fields: ['description'],
337
- transformer: typografTransformer,
338
- },
339
- {
340
- fields: ['title'],
341
- transformer: typografTransformer,
342
- parser: parseTitle,
343
- },
344
- ],
325
+ [models_1.BlockType.PromoFeaturesBlock]: blockHeaderTransfomer,
345
326
  [models_1.BlockType.InfoBlock]: [
346
327
  {
347
328
  fields: ['rightContent', 'leftContent'],
@@ -360,6 +341,15 @@ const config = {
360
341
  transformer: typografTransformer,
361
342
  },
362
343
  ],
344
+ [models_1.BlockType.CardLayoutBlock]: blockHeaderTransfomer,
345
+ [models_1.BlockType.IconsBlock]: [
346
+ {
347
+ fields: ['title'],
348
+ transformer: typografTransformer,
349
+ parser: parseTitle,
350
+ },
351
+ ],
352
+ [models_1.BlockType.LinkTableBlock]: blockHeaderTransfomer,
363
353
  };
364
354
  function addRandomOrder(block) {
365
355
  if (block) {