@entryscape/rdforms 10.8.1 → 10.9.0

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
@@ -8,7 +8,7 @@
8
8
  "application profile",
9
9
  "linked data"
10
10
  ],
11
- "version": "10.8.1",
11
+ "version": "10.9.0",
12
12
  "main": "dist/rdforms.node.js",
13
13
  "browser": "dist/rdforms.react.js",
14
14
  "module": "main.js",
@@ -18,7 +18,7 @@
18
18
  "dependencies": {
19
19
  "@emotion/react": "^11.4.1",
20
20
  "@emotion/styled": "^11.3.0",
21
- "@entryscape/rdfjson": "^2.5.7",
21
+ "@entryscape/rdfjson": "^2.6.0",
22
22
  "@fortawesome/fontawesome-free": "^5.8.1",
23
23
  "@mui/icons-material": "^5.0.3",
24
24
  "@mui/material": "^5.0.3",
@@ -44,7 +44,7 @@
44
44
  "react-dom": "^17.0.2",
45
45
  "react-hooks-lib": "^0.1.5",
46
46
  "regenerator-runtime": "^0.13.2",
47
- "select2": "4.0.7",
47
+ "select2": "4.0.8",
48
48
  "selectize-bootstrap4-theme": "^2.0.2",
49
49
  "sizzle": "^2.3.3",
50
50
  "terser-webpack-plugin": "^1.3.0",
@@ -68,6 +68,9 @@ export default class Item {
68
68
  'preserveOrderOfChoices',
69
69
  'linkWithLabel',
70
70
  'deprecated',
71
+ 'inline',
72
+ 'truncate',
73
+ 'noTruncate'
71
74
  ];
72
75
  this._getLocalizedValue = utils.getLocalizedValue;
73
76
  }
@@ -269,4 +269,7 @@ export default class Editor extends Presenter {
269
269
  return renderingContext.multiValueSupport &&
270
270
  (item.hasStyle('horizontalCheckBoxes') || item.hasStyle('verticalCheckBoxes'));
271
271
  }
272
+ truncateAt(item, bindings) {
273
+ return -1;
274
+ }
272
275
  }
@@ -103,4 +103,21 @@ export default class Presenter extends View {
103
103
  addComponent(fieldDiv, binding) {
104
104
  renderingContext.renderPresenter(fieldDiv, binding, this.context);
105
105
  }
106
+
107
+ /**
108
+ * Truncate for presentations when:
109
+ * - not a group (repeated labels does not look nice being truncated)
110
+ * - if truncate setting is enabled on the presenter or the individual item ('truncate' and not 'noTruncate' is set)
111
+ * - if the truncate limit is exceeded
112
+ *
113
+ * @param item
114
+ * @param bindings
115
+ * @return {number}
116
+ */
117
+ truncateAt(item, bindings) {
118
+ return item.getType() !== 'group' &&
119
+ bindings && bindings.length > this.truncateLimit &&
120
+ (this.truncate || item.hasStyle('truncate')) &&
121
+ !item.hasStyle('noTruncate') ? this.truncateLimit : -1;
122
+ }
106
123
  }
package/src/view/View.js CHANGED
@@ -20,6 +20,8 @@ export default class View {
20
20
  this.compact = params.compact !== false;
21
21
  this.showDescription = params.showDescription === true;
22
22
  this.styleCls = params.styleCls || '';
23
+ this.truncateLimit = params.truncateLimit !== undefined ? params.truncateLimit : 10;
24
+ this.truncate = params.truncate !== undefined ? params.truncate : false;
23
25
  if (Array.isArray(params.filterPredicates)) {
24
26
  this.filterPredicates =
25
27
  params.filterPredicates.reduce((prev, current) => { prev[current] = true; return prev; }, {});
@@ -223,11 +225,16 @@ export default class View {
223
225
  this.context = { view: this };
224
226
  lastRow = this.addRow(lastRow, bindings[0], true);
225
227
  } else {
228
+ const truncateLimit = this.truncateAt(item, bindings);
226
229
  for (let i = 0; i < bindings.length; i++) {
227
230
  // Add row with label if first row of same item or the binding is a group.
228
231
  this.context = { view: this };
229
232
  lastRow = this.addRow(lastRow, bindings[i], i === 0 ||
230
- bindings[i] instanceof GroupBinding);
233
+ bindings[i] instanceof GroupBinding, i, truncateLimit);
234
+ }
235
+ if (truncateLimit !== -1) {
236
+ const rdformsFields = renderingContext.domQuery('.rdformsFields', lastRow);
237
+ if (rdformsFields) renderingContext.addTruncateControl(rdformsFields, this.context);
231
238
  }
232
239
  }
233
240
  } else {
@@ -250,7 +257,7 @@ export default class View {
250
257
  * @param {Boolean} includeLabel, tells if a label should be added, if undefined a label is
251
258
  * added only when the binding is a GroupBinding.
252
259
  */
253
- addRow(lastRow, binding, includeLabel) {
260
+ addRow(lastRow, binding, includeLabel, index, truncateLimit) {
254
261
  let _includeLabel = includeLabel;
255
262
  let fieldDiv;
256
263
  let newRow;
@@ -269,6 +276,12 @@ export default class View {
269
276
  newRow = this.createRowNode(lastRow, binding, item);
270
277
  const n = renderingContext.domCreate('div', newRow);
271
278
  renderingContext.domClassToggle(n, 'rdformsFields', true);
279
+ if (truncateLimit !== -1) {
280
+ renderingContext.domClassToggle(n, 'rdformsTruncated', true);
281
+ }
282
+ if (item.hasStyle('inline')) {
283
+ renderingContext.domClassToggle(n, 'rdformsInline', true);
284
+ }
272
285
  fieldDiv = renderingContext.domCreate('div', n);
273
286
  this.createEndOfRowNode(newRow, binding, item);
274
287
  } else {
@@ -277,9 +290,15 @@ export default class View {
277
290
  if (rdformsFields != null) {
278
291
  fieldDiv = renderingContext.domCreate('div', rdformsFields);
279
292
  renderingContext.domClassToggle(fieldDiv, 'rdformsRepeatedValue', true);
293
+ if (truncateLimit !== -1 && index >= truncateLimit) {
294
+ renderingContext.domClassToggle(fieldDiv, 'rdformsMaybeTruncated', true);
295
+ }
280
296
  } else { // Unless we have an non-expanded row.
281
297
  const n = renderingContext.domCreate('div', lastRow);
282
298
  renderingContext.domClassToggle(n, 'rdformsFields', true);
299
+ if (item.hasStyle('inline')) {
300
+ renderingContext.domClassToggle(n, 'rdformsInline', true);
301
+ }
283
302
  fieldDiv = renderingContext.domCreate('div', n);
284
303
  this.createEndOfRowNode(newRow, binding, item);
285
304
  }
@@ -333,6 +352,10 @@ export default class View {
333
352
  if (binding && this.filterBinding(binding)) {
334
353
  renderingContext.domClassToggle(rowNode, 'hiddenProperty', true);
335
354
  }
355
+
356
+ if (item.hasStyle('card')) {
357
+ renderingContext.domClassToggle(rowNode, 'rdformsCard', true);
358
+ }
336
359
  return rowNode;
337
360
  }
338
361
 
@@ -425,4 +448,8 @@ export default class View {
425
448
  isMultiValued(item) {
426
449
  return false;
427
450
  }
451
+
452
+ truncateAt(item, bindings) {
453
+ return -1;
454
+ }
428
455
  }
@@ -111,7 +111,8 @@
111
111
  }
112
112
 
113
113
  .rdformsEditor .cardgroupEditor>.rdformsFields>.rdformsGroup,
114
- .cardgroup>.rdformsFields>.rdformsGroup {
114
+ .cardgroup>.rdformsFields>.rdformsGroup,
115
+ .rdformsCard>.rdformsFields>.rdformsGroup {
115
116
  border-radius: 2px;
116
117
  color: rgba(0,0,0, 0.87);
117
118
  background: #fff;
@@ -21,15 +21,18 @@ renderingContext.renderEditorLabel = (rowNode, binding, item, context) => {
21
21
  const $label = jquery('<span class="rdformsLabel" tabindex="0">').text(label).appendTo($labelDiv);
22
22
  const card = item.getCardinality();
23
23
  const b = context.view.messages;
24
- if (card.min > 0) {
25
- jquery('<span class="rdformsMark rdformsMandatoryMark">').text(b.mandatoryMark)
26
- .appendTo($labelDiv);
27
- } else if (card.pref > 0) {
28
- jquery('<span class="rdformsMark rdformsRecommendedMark">').text(b.recommendedMark)
29
- .appendTo($labelDiv);
30
- } else {
31
- jquery('<span class="rdformsMark rdformsOptionalMark">').text(b.optionalMark)
32
- .appendTo($labelDiv);
24
+ // Only show mark if there is a property that allows the item to have an expression on its own
25
+ if (item.getProperty()) {
26
+ if (card.min > 0) {
27
+ jquery('<span class="rdformsMark rdformsMandatoryMark">').text(b.mandatoryMark)
28
+ .appendTo($labelDiv);
29
+ } else if (card.pref > 0) {
30
+ jquery('<span class="rdformsMark rdformsRecommendedMark">').text(b.recommendedMark)
31
+ .appendTo($labelDiv);
32
+ } else {
33
+ jquery('<span class="rdformsMark rdformsOptionalMark">').text(b.optionalMark)
34
+ .appendTo($labelDiv);
35
+ }
33
36
  }
34
37
 
35
38
  // Buttons of various sorts
@@ -39,7 +42,9 @@ renderingContext.renderEditorLabel = (rowNode, binding, item, context) => {
39
42
  (card.max === null || card.max !== card.min)) {
40
43
  // If not table or min and max are not the same, then add buttons.
41
44
  if (item.getType() === 'group') {
42
- renderingContext.addGroupButtons(rowNode, $labelDiv[0], binding, context);
45
+ if (item.getProperty()) {
46
+ renderingContext.addGroupButtons(rowNode, $labelDiv[0], binding, context);
47
+ }
43
48
  } else {
44
49
  renderingContext.addCreateChildButton(rowNode, $labelDiv[0], binding, context);
45
50
  }
@@ -42,3 +42,21 @@ renderingContext.domClassToggle = (node, classStr, addOrRemove) => {
42
42
  };
43
43
 
44
44
  renderingContext.prePresenterViewRenderer = renderingContext.preEditorViewRenderer;
45
+
46
+ renderingContext.addTruncateControl = (fieldsDiv, context) => {
47
+ const bundle = context.view.messages;
48
+ const showMore = renderingContext.domCreate('button', fieldsDiv);
49
+ renderingContext.domClassToggle(showMore, 'rdformsShowMore', true);
50
+ showMore.innerText = bundle.showMore;
51
+ showMore.onclick = () => {
52
+ renderingContext.domClassToggle(fieldsDiv, 'rdformsTruncated', false);
53
+ };
54
+
55
+ const showLess = renderingContext.domCreate('button', fieldsDiv);
56
+ renderingContext.domClassToggle(showLess, 'rdformsShowLess', true);
57
+
58
+ showLess.innerText = bundle.showLess;
59
+ showLess.onclick = () => {
60
+ renderingContext.domClassToggle(fieldsDiv, 'rdformsTruncated', true);
61
+ };
62
+ }
@@ -20,8 +20,9 @@
20
20
  margin-bottom: 0.5em;
21
21
  }
22
22
 
23
- .rdformsEditor .cardgroupEditor>.rdformsFields>.rdformsGroup
24
- .cardgroup>.rdformsFields>.rdformsGroup {
23
+ .rdformsEditor .cardgroupEditor>.rdformsFields>.rdformsGroup,
24
+ .cardgroup>.rdformsFields>.rdformsGroup,
25
+ .rdformsCard>.rdformsFields>.rdformsGroup {
25
26
  padding: 2px 5px 5px 10px;
26
27
  margin-right: -5px;
27
28
  margin-bottom: 14px;
@@ -95,7 +95,7 @@ export default (props) => {
95
95
  value.original.upgrade(props.binding, (upgradedChoice) => {
96
96
  setValue(editLocalizedChoice(upgradedChoice));
97
97
  setError(upgradedChoice.mismatch === true);
98
- });
98
+ }, props.field);
99
99
  };
100
100
 
101
101
  const ngId = useNamedGraphId(binding, props.context);
@@ -2,6 +2,7 @@ import React, { useState, useEffect, useRef } from 'react';
2
2
  import WarningIcon from '@mui/icons-material/Warning';
3
3
  import ErrorIcon from '@mui/icons-material/Error';
4
4
  import OfflineBoltIcon from '@mui/icons-material/OfflineBolt';
5
+ import Button from '@mui/material/Button';
5
6
  import renderingContext from '../renderingContext';
6
7
  import './labels';
7
8
  import './text';
@@ -223,6 +224,7 @@ renderingContext.preEditorRenderer = (fieldDiv, binding, context) => {
223
224
  if (binding.getItem().getType() !== 'group' && context.noCardinalityButtons !== true) {
224
225
  context.controlDiv = newStruct('div', fieldDiv);
225
226
  renderingContext.domClassToggle(context.controlDiv, 'rdformsFieldControl');
227
+
226
228
  // eslint-disable-next-line no-unused-vars
227
229
  const RemoveButton = renderingContext.addRemoveButton(fieldDiv, binding, context);
228
230
  context.controlDiv.appendChild(<RemoveButton key={`${binding.getHash()}_removeButton`}></RemoveButton>);
@@ -250,3 +252,27 @@ renderingContext.renderValidationMessage = (fieldDiv, type, message) => {
250
252
  };
251
253
 
252
254
  renderingContext.multiValueSupport = true;
255
+
256
+
257
+ renderingContext.addTruncateControl = (fieldsDiv, context) => {
258
+ const Component = () => {
259
+ const [truncated, setTruncated] = useState(true);
260
+ const bundle = context.view.messages;
261
+ const showLess = () => {
262
+ renderingContext.domClassToggle(fieldsDiv, 'rdformsTruncated', true);
263
+ setTruncated(true);
264
+ };
265
+
266
+ const showMore = () => {
267
+ renderingContext.domClassToggle(fieldsDiv, 'rdformsTruncated', false);
268
+ setTruncated(false);
269
+ };
270
+
271
+ return <>
272
+ {truncated ?
273
+ (<Button className="rdformsShowMore" size="small" onClick={showMore}>{bundle.showMore}</Button>) :
274
+ (<Button className="rdformsShowLess" size="small" onClick={showLess}>{bundle.showLess}</Button>)}
275
+ </>;
276
+ };
277
+ fieldsDiv.appendChild(<Component></Component>);
278
+ };
@@ -118,18 +118,23 @@ renderingContext.renderEditorLabel = (rowNode, binding, item, context) => {
118
118
  const b = context.view.messages;
119
119
  let mark;
120
120
 
121
- if (card.min > 0) {
122
- mark = <span className="rdformsMark rdformsMandatoryMark">{b.mandatoryMark}</span>;
123
- } else if (card.pref > 0) {
124
- mark = <span className="rdformsMark rdformsRecommendedMark">{b.recommendedMark}</span>;
125
- } else {
126
- mark = <span className="rdformsMark rdformsOptionalMark">{b.optionalMark}</span>;
121
+ // Only show mark if there is a property that allows the item to have an expression on its own
122
+ if (item.getProperty()) {
123
+ if (card.min > 0) {
124
+ mark = <span className="rdformsMark rdformsMandatoryMark">{b.mandatoryMark}</span>;
125
+ } else if (card.pref > 0) {
126
+ mark = <span className="rdformsMark rdformsRecommendedMark">{b.recommendedMark}</span>;
127
+ } else {
128
+ mark = <span className="rdformsMark rdformsOptionalMark">{b.optionalMark}</span>;
129
+ }
127
130
  }
128
131
  let Button;
129
132
  if (binding == null) {
130
133
  Button = renderingContext.addExpandButton(rowNode, null, item, context);
131
134
  } else if (item.getType() === 'group' && !context.view.showAsTable(item)) {
132
- Button = renderingContext.addRemoveButton(rowNode, binding, context);
135
+ if (item.getProperty()) {
136
+ Button = renderingContext.addRemoveButton(rowNode, binding, context);
137
+ }
133
138
  }
134
139
 
135
140
  const view = context.view;
@@ -160,11 +165,13 @@ const ERR = (props) => {
160
165
  const [code, setCode] = useState(binding.getCardinalityTracker().getCode());
161
166
  useEffect(() => {
162
167
  const cardTr = binding.getCardinalityTracker();
163
- const listener = cardTr.addListener(() => {
168
+ const checkAndSetCode = () => {
164
169
  const newCode = cardTr.getCode();
165
170
  renderingContext.domClassToggle(rowNode, 'rdformsError', newCode !== CODES.UNKNOWN);
166
171
  setCode(newCode);
167
- });
172
+ };
173
+ checkAndSetCode(); // We call it here to be sure, not depending on a potential callback from cardTr
174
+ const listener = cardTr.addListener(checkAndSetCode);
168
175
  return () => cardTr.removeListener(listener);
169
176
  }, []);
170
177
  if (code === CODES.UNKNOWN) {
@@ -39,7 +39,8 @@
39
39
  }
40
40
 
41
41
  .rdformsEditor .cardgroupEditor>.rdformsFields>.rdformsGroup,
42
- .cardgroup>.rdformsFields>.rdformsGroup {
42
+ .cardgroup>.rdformsFields>.rdformsGroup,
43
+ .rdformsCard>.rdformsFields>.rdformsGroup {
43
44
  padding: 6px 6px 6px 12px;
44
45
  margin-right: -5px;
45
46
  margin-bottom: 14px;
@@ -171,7 +172,8 @@ div.MuiTooltip-tooltip {
171
172
  padding-bottom: 0;
172
173
  }
173
174
  .rdformsEditor .cardgroupEditor>.rdformsFields>.rdformsGroup,
174
- .cardgroup>.rdformsFields>.rdformsGroup {
175
+ .cardgroup>.rdformsFields>.rdformsGroup,
176
+ .rdformsCard>.rdformsFields>.rdformsGroup {
175
177
  margin-bottom: 5px;
176
178
  }
177
179
 
@@ -201,7 +203,8 @@ div.MuiTooltip-tooltip {
201
203
  }
202
204
 
203
205
  .rdformsEditor .rdformsError.cardgroupEditor>.rdformsFields>.rdformsGroup,
204
- .rdformsError.cardgroup>.rdformsFields>.rdformsGroup {
206
+ .rdformsError.cardgroup>.rdformsFields>.rdformsGroup,
207
+ .rdformsError.rdformsCard>.rdformsFields>.rdformsGroup {
205
208
  margin-right: 11px;
206
209
  }
207
210
 
@@ -231,4 +234,13 @@ div.MuiTooltip-tooltip {
231
234
 
232
235
  .Mui-disabled.rdformsDatatypeOption {
233
236
  color: red;
237
+ }
238
+
239
+ .rdformsPresenter .rdformsShowLess,
240
+ .rdformsPresenter .rdformsShowMore {
241
+ margin-left: 0;
242
+ }
243
+
244
+ .rdformsPresenter .rdformsInline {
245
+ padding-left: 0em;
234
246
  }
@@ -81,16 +81,36 @@ presenters.itemtype('text').nodetype('URI').style('image').register((fieldDiv, b
81
81
  });
82
82
 
83
83
  // Presenter for text.
84
- presenters.itemtype('text').register((fieldDiv, binding, context) => {
85
- if (binding.getItem().hasStyle('multiline')) {
86
- renderingContext.domClassToggle(fieldDiv, 'rdformsMultiline', true);
84
+ /*presenters.itemtype('text').style('inline').register((fieldDiv, binding, context) => {
85
+ const language = binding.getLanguage();
86
+
87
+ // HERE
88
+ const val2binding = {};
89
+ // eslint-disable-next-line no-return-assign
90
+ parentBinding.getChildBindingsFor(item).forEach(b => (val2binding[b.getValue()] = b));
91
+
92
+
93
+ const lbl = binding.getItem().hasStyle('showValue') ? binding.getValue() : binding.getGist();
94
+ if (language) {
95
+ fieldDiv.appendChild(<span lang={language} key={binding.getHash()}>{lbl}</span>);
87
96
  } else {
88
- renderingContext.domClassToggle(fieldDiv, 'rdformsSingleline', true);
97
+ fieldDiv.appendChild(<span key={binding.getHash()}>{lbl}</span>);
89
98
  }
99
+ });*/
90
100
 
101
+ presenters.itemtype('text').register((fieldDiv, binding, context) => {
102
+ const item = binding.getItem();
91
103
  const language = binding.getLanguage();
92
- if (context.view.showLanguage && language) {
93
- fieldDiv.appendChild(<span className="rdformsLanguage" key={`lang_${binding.getHash()}`}>{language}</span>);
104
+ if (!item.hasStyle('inline')) {
105
+ if (item.hasStyle('multiline')) {
106
+ renderingContext.domClassToggle(fieldDiv, 'rdformsMultiline', true);
107
+ } else {
108
+ renderingContext.domClassToggle(fieldDiv, 'rdformsSingleline', true);
109
+ }
110
+
111
+ if (context.view.showLanguage && language) {
112
+ fieldDiv.appendChild(<span className="rdformsLanguage" key={`lang_${binding.getHash()}`}>{language}</span>);
113
+ }
94
114
  }
95
115
 
96
116
  // The text is shown as a link to the parents bindings URI if:
@@ -99,9 +119,9 @@ presenters.itemtype('text').register((fieldDiv, binding, context) => {
99
119
  // 3) The current item is first in the parents list of children.
100
120
  // 4) The parent binding corresponds to a URI
101
121
  const parentBinding = binding.getParent();
102
- if (binding.getItem().hasStyle('label')
122
+ if (item.hasStyle('label')
103
123
  && context.view.topLevel !== true
104
- && parentBinding != null && parentBinding.getItem().getChildren()[0] === binding.getItem()
124
+ && parentBinding != null && parentBinding.getItem().getChildren()[0] === item
105
125
  && parentBinding.getStatement() != null && parentBinding.getStatement().getType() === 'uri') {
106
126
  const attrs = system.attachLinkBehaviour(fieldDiv, binding, parentBinding);
107
127
  const component = attrs.component || null;
@@ -115,7 +135,7 @@ presenters.itemtype('text').register((fieldDiv, binding, context) => {
115
135
  parentBinding.getStatement().getValue()}><span>{vmap ?
116
136
  utils.getLocalizedValue(vmap).value || val : val}</span>{component}</a>);
117
137
  } else {
118
- const lbl = binding.getItem().hasStyle('showValue') ? binding.getValue() : binding.getGist();
138
+ const lbl = item.hasStyle('showValue') ? binding.getValue() : binding.getGist();
119
139
  if (language) {
120
140
  fieldDiv.appendChild(<span lang={language} key={binding.getHash()}>{lbl}</span>);
121
141
  } else {
@@ -317,6 +317,8 @@ const renderingContext = {
317
317
  },
318
318
  fillEditorTable(/* table, bindings, context */) {
319
319
  },
320
+ addTruncateControl(/* fieldsDiv */) {
321
+ }
320
322
  };
321
323
 
322
324
  system.getChoice = renderingContext.getChoice;
@@ -334,6 +336,8 @@ const groupPresenter = (fieldDiv, binding, context) => {
334
336
  showDescription: context.view.showDescription,
335
337
  defaultLanguage: context.view.defaultLanguage,
336
338
  filterTranslations: context.view.filterTranslations,
339
+ truncate: context.view.truncate,
340
+ truncateLimit: context.view.truncateLimit,
337
341
  includeLevel: context.view.includeLevel, // Copied from groupEditor, was this.includeLevel but that 'this' does not make sense here
338
342
  }, fieldDiv);
339
343
  };
@@ -351,6 +355,8 @@ const groupEditor = (fieldDiv, binding, context) => {
351
355
  topLevel: false,
352
356
  compact: context.view.compact,
353
357
  showDescription: context.view.showDescription,
358
+ truncate: context.view.truncate,
359
+ truncateLimit: context.view.truncateLimit,
354
360
  includeLevel: context.view.includeLevel,
355
361
  }, fieldDiv);
356
362
  context.view._subEditors.push(subView);
@@ -55,5 +55,7 @@
55
55
  "dependencyField": "This field depends on another field, please review the field it depends on or remove this value.",
56
56
  "wrongValueField": "This is an invalid value, please change or remove it.",
57
57
  "wrongDatatypeField": "The value has an invalid datatype, please change or remove it.",
58
- "openLinkExternally": "Open link externally"
58
+ "openLinkExternally": "Open link externally",
59
+ "showMore": "Show more",
60
+ "showLess": "Show less"
59
61
  }
@@ -739,4 +739,49 @@ a.rdformsUrl:hover {
739
739
  .rdformsDescription {
740
740
  font-style: italic;
741
741
  margin-bottom: 10px;
742
+ }
743
+
744
+ .rdformsPresenter .rdformsInline>.rdformsRepeatedValue,
745
+ .rdformsPresenter .rdformsInline>.rdformsOrigin {
746
+ border: 1px solid #E6E6E6;
747
+ padding: 4px 8px;
748
+ margin-top: initial;
749
+ margin-right: 5px;
750
+ border-radius: 4px;
751
+ margin-bottom: 5px;
752
+ display: inline-block;
753
+ }
754
+
755
+ .rdformsPresenter .rdformsShowLess,
756
+ .rdformsPresenter .rdformsShowMore {
757
+ margin-left: 1em;
758
+ margin-top: 5px;
759
+ }
760
+
761
+ .rdformsPresenter .rdformsInline>.rdformsShowLess,
762
+ .rdformsPresenter .rdformsInline>.rdformsShowMore {
763
+ margin-left: 0;
764
+ margin-top: initial;
765
+ }
766
+
767
+ .rdformsPresenter .rdformsTruncated>.rdformsMaybeTruncated {
768
+ display: none;
769
+ }
770
+
771
+ .rdformsPresenter .rdformsTruncated>.rdformsShowLess {
772
+ display: none;
773
+ }
774
+ .rdformsPresenter .rdformsShowMore {
775
+ display: none;
776
+ }
777
+ .rdformsPresenter .rdformsTruncated>.rdformsShowMore {
778
+ display: initial;
779
+ }
780
+
781
+ .rdformsPresenter .rdformsInline>.rdformsField {
782
+ margin-left: 0;
783
+ }
784
+
785
+ .rdformsPresenter .rdformsInline {
786
+ padding-left: 1em;
742
787
  }