react-bootstrap-front 3.8.0 → 3.9.4
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/CHANGELOG +18 -1
- package/dist/react-bootstrap-front.js +20 -20
- package/package.json +2 -1
- package/src/features/advanced/DropdownWrapper.js +18 -5
- package/src/features/advanced/ResponsiveModalInner.js +1 -1
- package/src/features/basic/Dropdown.js +2 -2
- package/src/features/basic/InputJson.js +0 -1
- package/src/features/draft/ColorPicker.js +2 -2
- package/src/features/draft/FontFamily.js +70 -0
- package/src/features/draft/FontFamily.scss +0 -0
- package/src/features/draft/FontSize.js +8 -4
- package/src/features/draft/Image.js +64 -0
- package/src/features/draft/Image.scss +3 -0
- package/src/features/draft/Inline.js +3 -2
- package/src/features/draft/InputHtml.js +177 -36
- package/src/features/draft/InputHtml.scss +17 -2
- package/src/features/draft/MailMerge.js +54 -0
- package/src/features/draft/MailMerge.scss +0 -0
- package/src/features/draft/index.js +3 -0
- package/src/features/draft/style.scss +4 -1
- package/src/features/filter/FilterBuilder.jsx +1 -0
- package/src/features/list/ActionButton.js +2 -2
- package/src/features/list/DefaultHeader.jsx +4 -4
- package/src/features/list/DefaultLine.jsx +5 -1
- package/src/features/list/MobileList.jsx +1 -1
- package/src/features/page/MobilePage.jsx +1 -1
- package/src/styles/mixins/container.scss +22 -1
|
@@ -3,6 +3,21 @@
|
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
.rdw-editor-toolbar {
|
|
6
|
-
padding:
|
|
7
|
-
border:
|
|
6
|
+
padding: 0px;
|
|
7
|
+
border: 0px solid theme-color('secondary-light') !important;
|
|
8
|
+
|
|
9
|
+
.advanced-dropdown-wrapper {
|
|
10
|
+
margin-left: 5px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
button {
|
|
14
|
+
height: 100%;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.rbf-mailmerge {
|
|
19
|
+
color: #105a1c;
|
|
8
20
|
}
|
|
21
|
+
.DraftEditor-root {
|
|
22
|
+
overflow: hidden;
|
|
23
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import classnames from 'classnames';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import { DropdownWrapper } from '../advanced'
|
|
5
|
+
import { DropdownMenu, DropdownMenuOption } from '../basic';
|
|
6
|
+
|
|
7
|
+
export default class MailMerge extends Component {
|
|
8
|
+
static propTypes = {
|
|
9
|
+
onChange: PropTypes.func,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
constructor(props) {
|
|
13
|
+
super(props);
|
|
14
|
+
this.state = {
|
|
15
|
+
myRef: React.createRef()
|
|
16
|
+
}
|
|
17
|
+
this.onChange = this.onChange.bind(this);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
stopPropagation = (event) => {
|
|
21
|
+
event.stopPropagation();
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
onChange = (text) => {
|
|
25
|
+
this.props.onChangeText(text);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
render() {
|
|
29
|
+
const trigger = (
|
|
30
|
+
<button
|
|
31
|
+
type="button"
|
|
32
|
+
className={classnames(this.props.className, 'btn btn-light')}
|
|
33
|
+
>
|
|
34
|
+
{this.props.icon ? this.props.icon : 'MailMerge' }
|
|
35
|
+
</button>
|
|
36
|
+
);
|
|
37
|
+
const options = this.props.options;
|
|
38
|
+
return (
|
|
39
|
+
<DropdownWrapper trigger={trigger} className="ui-inline-wrapper btn-group pl-2" align="bottom-right" myRef={this.state.myRef}>
|
|
40
|
+
<DropdownMenu>
|
|
41
|
+
{options.map((text, index) =>
|
|
42
|
+
(<DropdownMenuOption
|
|
43
|
+
className="rdw-mailmerge-option"
|
|
44
|
+
onClick={() => this.onChange(text.text_content)}
|
|
45
|
+
key={index}
|
|
46
|
+
>
|
|
47
|
+
{text.text_code}
|
|
48
|
+
</DropdownMenuOption>),
|
|
49
|
+
)}
|
|
50
|
+
</DropdownMenu>
|
|
51
|
+
</DropdownWrapper>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
File without changes
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { default as ColorPicker } from "./ColorPicker";
|
|
2
2
|
export { default as FontSize } from "./FontSize";
|
|
3
|
+
export { default as FontFamily } from "./FontFamily";
|
|
3
4
|
export { default as Inline } from "./Inline";
|
|
5
|
+
export { default as Image } from "./Image";
|
|
6
|
+
export { default as MailMerge } from "./MailMerge";
|
|
4
7
|
export { default as InputHtml } from "./InputHtml";
|
|
@@ -213,6 +213,7 @@ export default class FilterBuilder extends Component {
|
|
|
213
213
|
onChange={this.props.onChange}
|
|
214
214
|
calIcon={this.props.calIcon}
|
|
215
215
|
delIcon={this.props.delIcon}
|
|
216
|
+
allowNull={true}
|
|
216
217
|
/>
|
|
217
218
|
</div>
|
|
218
219
|
{colOper === FILTER_OPER_BETWEEN && this.props.onUpdate &&
|
|
@@ -124,7 +124,7 @@ export default class ActionButton extends Component {
|
|
|
124
124
|
if (elem) {
|
|
125
125
|
return (
|
|
126
126
|
<DropdownMenuOption
|
|
127
|
-
key={`elem-${
|
|
127
|
+
key={`elem-${elem.label}`}
|
|
128
128
|
label={elem.label}
|
|
129
129
|
onClick={ev => {
|
|
130
130
|
if (ev) {
|
|
@@ -166,7 +166,7 @@ export default class ActionButton extends Component {
|
|
|
166
166
|
{this.state.options.map(elem => {
|
|
167
167
|
return (
|
|
168
168
|
<DropdownMenuOption
|
|
169
|
-
key={`elem-${
|
|
169
|
+
key={`elem-${elem.label}`}
|
|
170
170
|
label={elem.label}
|
|
171
171
|
onClick={ev => {
|
|
172
172
|
if (ev) {
|
|
@@ -198,13 +198,13 @@ export default class DefaultHeader extends Component {
|
|
|
198
198
|
)}
|
|
199
199
|
>
|
|
200
200
|
<Row>
|
|
201
|
-
<Col size={{ xs: 10, sm:
|
|
201
|
+
<Col size={{ xs: 10, sm: 10, md: 10, lg: 14 }}>
|
|
202
202
|
<div className="pl-2" style={{ display: 'inline-block', float: 'left' }}>
|
|
203
203
|
<span style={iconstyle} className={classnames('no-selector', 'text-' + this.props.headerTextTheme)}>
|
|
204
204
|
{this.props.icon && this.props.icon}
|
|
205
205
|
</span>
|
|
206
206
|
</div>
|
|
207
|
-
<div className="pl-2" style={{ display: 'inline-block', float: 'left' }}>
|
|
207
|
+
<div className="pl-2 col-xs-none col-md-flex" style={{ display: 'inline-block', float: 'left' }}>
|
|
208
208
|
<span style={titlestyle} className={classnames('no-selector', 'text-' + this.props.headerTextTheme)}>
|
|
209
209
|
{this.props.title}
|
|
210
210
|
</span>
|
|
@@ -223,7 +223,7 @@ export default class DefaultHeader extends Component {
|
|
|
223
223
|
</div>
|
|
224
224
|
)}
|
|
225
225
|
</Col>
|
|
226
|
-
<Col size={{ xs:
|
|
226
|
+
<Col size={{ xs: 10, sm: 12, md: 12, lg: 8 }}>
|
|
227
227
|
<Highlight
|
|
228
228
|
className="w-100"
|
|
229
229
|
style={sortStyle}
|
|
@@ -234,7 +234,7 @@ export default class DefaultHeader extends Component {
|
|
|
234
234
|
{this.props.quickSearch}
|
|
235
235
|
</Highlight>
|
|
236
236
|
</Col>
|
|
237
|
-
<Col size={{ xs: 16, sm:
|
|
237
|
+
<Col size={{ xs: 16, sm: 14, md: 14, lg: 14 }} className="text-right">
|
|
238
238
|
<ul className="nav justify-content-end rbf-list-default-header-nav">
|
|
239
239
|
<li className="nav-item">
|
|
240
240
|
<Highlight
|
|
@@ -74,7 +74,11 @@ export default class DesktopListLine extends Component {
|
|
|
74
74
|
}
|
|
75
75
|
this.props.inlineActions.forEach(action => {
|
|
76
76
|
if (action.role === 'MODIFY') {
|
|
77
|
-
action.
|
|
77
|
+
if (action.param === 'object') {
|
|
78
|
+
action.onClick(this.props.item);
|
|
79
|
+
} else {
|
|
80
|
+
action.onClick(this.props.id);
|
|
81
|
+
}
|
|
78
82
|
}
|
|
79
83
|
});
|
|
80
84
|
return false;
|
|
@@ -101,7 +101,7 @@ export default class MobileList extends Component {
|
|
|
101
101
|
col.card.position = 99;
|
|
102
102
|
}
|
|
103
103
|
});
|
|
104
|
-
dispCols = dispCols.filter(col => !col.hidden);
|
|
104
|
+
//dispCols = dispCols.filter(col => !col.hidden);
|
|
105
105
|
let mobileCols = dispCols.filter(col => col.card);
|
|
106
106
|
mobileCols.sort((a, b) => {
|
|
107
107
|
if ((a.card.position && b.card.position && a.card.position > b.card.position) || !a.card.position) {
|
|
@@ -113,7 +113,7 @@ export default class MobilePage extends Component {
|
|
|
113
113
|
return (
|
|
114
114
|
<div id="page-root" className="full-page">
|
|
115
115
|
<Container size="xs" className="display-mobile">
|
|
116
|
-
<CSSTransition in={this.state.menuUserOpen} timeout={duration}>
|
|
116
|
+
<CSSTransition in={this.state.menuUserOpen && this.props.authenticated} timeout={duration}>
|
|
117
117
|
{state => (
|
|
118
118
|
<div>
|
|
119
119
|
<div className="bg-white" style={{ ...userMenuDefaultStyles, ...userMenuStyles[state] }}>
|
|
@@ -44,6 +44,26 @@
|
|
|
44
44
|
@return $not;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
@function container-col-show-not($start, $end, $breakpoints: $container-breakpoints, $prefix: 'col') {
|
|
48
|
+
$not: '';
|
|
49
|
+
$started: 0;
|
|
50
|
+
@each $breakpoint in map-keys($breakpoints) {
|
|
51
|
+
@if $breakpoint == $start {
|
|
52
|
+
$started: 1;
|
|
53
|
+
}
|
|
54
|
+
@if $breakpoint == $end {
|
|
55
|
+
$started: 2;
|
|
56
|
+
}
|
|
57
|
+
@if $started >= 1 {
|
|
58
|
+
$not: $not + ':not([class*=\'#{$prefix}-#{$breakpoint}-flex\']):not([class*=\'#{$prefix}-#{$breakpoint}-block\'])';
|
|
59
|
+
@if $started == 2 {
|
|
60
|
+
@return $not;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
@return $not;
|
|
65
|
+
}
|
|
66
|
+
|
|
47
67
|
@function container-d-none-not($start, $end, $breakpoints: $container-breakpoints, $prefix: 'd') {
|
|
48
68
|
$not: '';
|
|
49
69
|
$started: 0;
|
|
@@ -77,8 +97,9 @@
|
|
|
77
97
|
|
|
78
98
|
$infix: container-infix($breakpoint, $breakpoints);
|
|
79
99
|
$notCol: container-col-none-not($breakpoint, $current, $breakpoints);
|
|
100
|
+
$notShow: container-col-show-not($breakpoint, $current, $breakpoints);
|
|
80
101
|
$notD: container-d-none-not($breakpoint, $current, $breakpoints);
|
|
81
|
-
.col#{$infix}-none#{$notCol} {
|
|
102
|
+
.col#{$infix}-none#{$notCol}#{$notShow} {
|
|
82
103
|
display: none !important;
|
|
83
104
|
}
|
|
84
105
|
.col#{$infix}-flex {
|