superdesk-ui-framework 4.0.67 → 4.0.68
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/app/styles/_buttons.scss +8 -0
- package/app/styles/_time.scss +97 -12
- package/app/styles/form-elements/_inputs.scss +16 -29
- package/app/styles/primereact/_pr-datepicker.scss +10 -0
- package/app-typescript/components/DatePicker.tsx +1 -0
- package/app-typescript/components/DateTimePicker.tsx +11 -6
- package/app-typescript/components/TimePicker.tsx +60 -26
- package/app-typescript/components/TimePickerPopover.tsx +29 -12
- package/dist/components/DatePicker.tsx +1 -1
- package/dist/components/DateTimePicker.tsx +0 -2
- package/dist/components/TimePicker.tsx +22 -0
- package/dist/examples.bundle.js +1040 -999
- package/dist/superdesk-ui.bundle.css +93 -17
- package/dist/superdesk-ui.bundle.js +1004 -978
- package/dist/vendor.bundle.js +2 -2
- package/package.json +1 -1
- package/react/components/DatePicker.js +1 -1
- package/react/components/DateTimePicker.js +5 -4
- package/react/components/TimePicker.d.ts +1 -1
- package/react/components/TimePicker.js +35 -12
- package/react/components/TimePickerPopover.js +14 -12
package/dist/vendor.bundle.js
CHANGED
@@ -17303,7 +17303,7 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_13__;
|
|
17303
17303
|
}
|
17304
17304
|
}.call(this));
|
17305
17305
|
|
17306
|
-
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(55), __webpack_require__(
|
17306
|
+
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(55), __webpack_require__(73)(module)))
|
17307
17307
|
|
17308
17308
|
/***/ }),
|
17309
17309
|
|
@@ -17335,7 +17335,7 @@ module.exports = g;
|
|
17335
17335
|
|
17336
17336
|
/***/ }),
|
17337
17337
|
|
17338
|
-
/***/
|
17338
|
+
/***/ 73:
|
17339
17339
|
/***/ (function(module, exports) {
|
17340
17340
|
|
17341
17341
|
module.exports = function(module) {
|
package/package.json
CHANGED
@@ -215,7 +215,7 @@ var DatePicker = /** @class */ (function (_super) {
|
|
215
215
|
// updating internal state so a user can continue typing and enter a valid value
|
216
216
|
_this.setState({ value: event.value, valid: false });
|
217
217
|
}
|
218
|
-
}, locale: locale, dateFormat: this.props.dateFormat.replace('YYYY', 'yy').replace('MM', 'mm').replace('DD', 'dd'), showIcon: true, icon: "icon-calendar", headerTemplate: function () {
|
218
|
+
}, locale: locale, placeholder: this.props.dateFormat.replace('YYYY', 'yyyy').replace('MM', 'mm').replace('DD', 'dd'), dateFormat: this.props.dateFormat.replace('YYYY', 'yy').replace('MM', 'mm').replace('DD', 'dd'), showIcon: true, icon: "icon-calendar", headerTemplate: function () {
|
219
219
|
return _this.props.headerButtonBar == null ? null : (React.createElement("div", { className: "datepicker-header-toolbar" }, _this.props.headerButtonBar.map(function (_a, i) {
|
220
220
|
var label = _a.label, days = _a.days;
|
221
221
|
return (React.createElement("button", { key: i, className: "btn btn--small", onClick: function () {
|
@@ -68,11 +68,11 @@ var DatePicker_1 = require("../components/DatePicker");
|
|
68
68
|
var common_1 = require("@sourcefabric/common");
|
69
69
|
var lodash_1 = require("lodash");
|
70
70
|
var TimePicker_1 = require("./TimePicker");
|
71
|
-
var IconButton_1 = require("./IconButton");
|
72
71
|
var Form_1 = require("./Form");
|
73
72
|
var react_id_generator_1 = __importDefault(require("react-id-generator"));
|
74
73
|
var date_fns_1 = require("date-fns");
|
75
74
|
var helpers_1 = require("../helpers");
|
75
|
+
var Button_1 = require("./Button");
|
76
76
|
var DateTimePicker = /** @class */ (function (_super) {
|
77
77
|
__extends(DateTimePicker, _super);
|
78
78
|
function DateTimePicker() {
|
@@ -169,12 +169,13 @@ var DateTimePicker = /** @class */ (function (_super) {
|
|
169
169
|
}
|
170
170
|
})();
|
171
171
|
return (React.createElement(Form_1.InputWrapper, { label: this.props.label, error: this.props.error, invalid: this.props.error != null, required: this.props.required, disabled: this.props.disabled, info: this.props.info, inlineLabel: this.props.inlineLabel, labelHidden: this.props.labelHidden, htmlId: this.htmlId, tabindex: this.props.tabindex, fullWidth: this.props.fullWidth, inputWrapper: this.props.inputWrapper, "data-test-id": this.props['data-test-id'], ref: this.props.ref },
|
172
|
-
React.createElement(common_1.Spacer, { h: true, gap: "8", alignItems: "
|
172
|
+
React.createElement(common_1.Spacer, { h: true, gap: "8", alignItems: "center", noWrap: true },
|
173
173
|
React.createElement("div", { style: { flexGrow: 1 } },
|
174
174
|
React.createElement(DatePicker_1.DatePicker, { disabled: this.props.disabled, preview: this.props.preview, required: this.props.required, hideClearButton: true, value: dateValue, onChange: this.handleDateChange, dateFormat: this.props.dateFormat, inlineLabel: true, labelHidden: true, fullWidth: this.props.fullWidth, "data-test-id": "date-input" })),
|
175
|
-
React.createElement("div", { style: { flexGrow:
|
175
|
+
React.createElement("div", { style: { flexGrow: 0, color: 'var(--color-text-muted)' } }, "@"),
|
176
|
+
React.createElement("div", { className: "time-picker--date-time", style: { flexGrow: 1 } },
|
176
177
|
React.createElement(TimePicker_1.TimePicker, { disabled: this.props.disabled || (timeRequiresDate && dateValue == null), preview: this.props.preview, value: timeValue, onChange: this.handleTimeChange, inlineLabel: true, labelHidden: true, allowSeconds: this.props.allowSeconds, fullWidth: this.props.fullWidth, required: this.props.required, headerTemplate: this.props.timeHeaderTemplate, footerTemplate: this.props.timeFooterTemplate, "data-test-id": "time-input" })),
|
177
|
-
this.props.preview !== true && (React.createElement(
|
178
|
+
this.props.preview !== true && (React.createElement(Button_1.Button, { icon: "remove-sign", text: "Clear", tooltip: "Clear", onClick: this.handleClear, type: "default", style: "hollow", iconOnly: true, disabled: this.props.disabled })))));
|
178
179
|
};
|
179
180
|
return DateTimePicker;
|
180
181
|
}(React.PureComponent));
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
2
2
|
import { IInputWrapper } from './Form/InputWrapper';
|
3
3
|
interface IProps extends IInputWrapper {
|
4
4
|
value: string | null;
|
5
|
-
onChange(valueNext: string): void;
|
5
|
+
onChange(valueNext: string | null): void;
|
6
6
|
allowSeconds?: boolean;
|
7
7
|
headerTemplate?: React.ReactNode;
|
8
8
|
footerTemplate?: React.ReactNode;
|
@@ -54,9 +54,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
54
|
exports.TimePicker = void 0;
|
55
55
|
var React = __importStar(require("react"));
|
56
56
|
var react_id_generator_1 = __importDefault(require("react-id-generator"));
|
57
|
+
var classnames_1 = __importDefault(require("classnames"));
|
57
58
|
var Form_1 = require("./Form");
|
58
59
|
var TimePickerPopover_1 = require("./TimePickerPopover");
|
59
60
|
var ShowPopup_1 = require("./ShowPopup");
|
61
|
+
var Icon_1 = require("./Icon");
|
62
|
+
var IconButton_1 = require("./IconButton");
|
60
63
|
var TimePicker = /** @class */ (function (_super) {
|
61
64
|
__extends(TimePicker, _super);
|
62
65
|
function TimePicker(props) {
|
@@ -75,7 +78,7 @@ var TimePicker = /** @class */ (function (_super) {
|
|
75
78
|
return (React.createElement("div", null,
|
76
79
|
React.createElement("span", null, this.props.value)));
|
77
80
|
}
|
78
|
-
return (React.createElement(Form_1.InputWrapper, { label: this.props.label, error: this.props.error, invalid: this.props.error != null, required: this.props.required, disabled: this.props.disabled, info: this.props.info, inlineLabel: this.props.inlineLabel, labelHidden: this.props.labelHidden, htmlId: this.htmlId, tabindex: this.props.tabindex },
|
81
|
+
return (React.createElement(Form_1.InputWrapper, { label: this.props.label, error: this.props.error, invalid: this.props.error != null, required: this.props.required, disabled: this.props.disabled, info: this.props.info, inlineLabel: this.props.inlineLabel, labelHidden: this.props.labelHidden, htmlId: this.htmlId, tabindex: this.props.tabindex, inputWrapper: this.props.inputWrapper },
|
79
82
|
this.state.popupOpen && (React.createElement(ShowPopup_1.PopupPositioner, { getReferenceElement: function () { return _this.timeInputRef.current; }, placement: "bottom-start", onClose: function () {
|
80
83
|
_this.setState({
|
81
84
|
popupOpen: false,
|
@@ -86,17 +89,37 @@ var TimePicker = /** @class */ (function (_super) {
|
|
86
89
|
popupOpen: false,
|
87
90
|
});
|
88
91
|
}, allowSeconds: this.props.allowSeconds, headerTemplate: this.props.headerTemplate, footerTemplate: this.props.footerTemplate }))),
|
89
|
-
React.createElement("
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
92
|
+
React.createElement("div", { className: "time-picker__input" },
|
93
|
+
React.createElement("input", { style: {
|
94
|
+
cursor: 'pointer',
|
95
|
+
}, ref: this.timeInputRef, value: (_a = this.props.value) !== null && _a !== void 0 ? _a : '', type: "time", onClick: function (e) {
|
96
|
+
// don't show default popup
|
97
|
+
e.preventDefault();
|
98
|
+
_this.setState({
|
99
|
+
popupOpen: true,
|
100
|
+
});
|
101
|
+
}, onKeyDown: function (event) {
|
102
|
+
// don't show default popup
|
103
|
+
event.preventDefault();
|
104
|
+
if (event.key === ' ') {
|
105
|
+
_this.setState({
|
106
|
+
popupOpen: !_this.state.popupOpen,
|
107
|
+
});
|
108
|
+
}
|
109
|
+
else if ((event.key === 'Enter' || event.key === 'Escape') && _this.state.popupOpen) {
|
110
|
+
_this.setState({
|
111
|
+
popupOpen: false,
|
112
|
+
});
|
113
|
+
}
|
114
|
+
}, className: (0, classnames_1.default)('sd-input__input', {
|
115
|
+
'sd-input__input--has-value': this.props.value != null,
|
116
|
+
}), id: this.htmlId, "aria-labelledby": this.htmlId + 'label', step: this.props.allowSeconds ? 1 : undefined, required: this.props.required, disabled: this.props.disabled, onChange: function (event) {
|
117
|
+
_this.props.onChange(event.target.value);
|
118
|
+
}, "data-test-id": this.props['data-test-id'] }),
|
119
|
+
React.createElement("div", { className: "time-picker__icon-wrapper" },
|
120
|
+
React.createElement(Icon_1.Icon, { name: "time" }),
|
121
|
+
React.createElement("div", { className: "clear-time-picker" },
|
122
|
+
React.createElement(IconButton_1.IconButton, { icon: "remove-sign", size: "small", ariaValue: "Clear", toolTipFlow: "left", onClick: function () { return _this.props.onChange(null); } }))))));
|
100
123
|
};
|
101
124
|
return TimePicker;
|
102
125
|
}(React.PureComponent));
|
@@ -64,7 +64,7 @@ var TimeValueHolder = /** @class */ (function (_super) {
|
|
64
64
|
}
|
65
65
|
TimeValueHolder.prototype.scrollToValue = function () {
|
66
66
|
var _a;
|
67
|
-
(_a = this.spanEl.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView();
|
67
|
+
(_a = this.spanEl.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ block: 'start', behavior: 'smooth' });
|
68
68
|
};
|
69
69
|
TimeValueHolder.prototype.render = function () {
|
70
70
|
var _a;
|
@@ -152,18 +152,22 @@ var TimePickerPopover = /** @class */ (function (_super) {
|
|
152
152
|
overflowY: 'auto',
|
153
153
|
scrollbarWidth: 'none',
|
154
154
|
marginTop: 'var(--gap-1)',
|
155
|
+
scrollBehavior: 'smooth',
|
155
156
|
};
|
156
|
-
return (React.createElement("div", { className: "sd-shadow--z2 radius-md", onBlur: this.props.closePopup
|
157
|
+
return (React.createElement("div", { className: "sd-shadow--z2 radius-md", onBlur: this.props.closePopup, onKeyDown: function (event) {
|
158
|
+
if (event.key === 'Enter' || event.key === 'Escape') {
|
159
|
+
event.preventDefault();
|
160
|
+
_this.props.closePopup();
|
161
|
+
}
|
162
|
+
}, tabIndex: 0 },
|
157
163
|
React.createElement(common_1.Spacer, { v: true, gap: "0", style: {
|
158
|
-
|
159
|
-
|
160
|
-
backgroundColor: 'var(--color-
|
164
|
+
minWidth: 200,
|
165
|
+
maxWidth: 'max-content',
|
166
|
+
backgroundColor: 'var(--color-dropdown-menu-Bg)',
|
161
167
|
borderRadius: 'var(--b-radius--small)',
|
162
168
|
} },
|
163
|
-
this.props.headerTemplate && (React.createElement(
|
164
|
-
|
165
|
-
React.createElement(ContentDivider_1.ContentDivider, { border: true, type: "solid", orientation: "horizontal", margin: "none" }))),
|
166
|
-
React.createElement(common_1.Spacer, { h: true, gap: "4", noWrap: true, justifyContent: "center", alignItems: "start" },
|
169
|
+
this.props.headerTemplate && (React.createElement("div", { className: "px-1-5 py-1", style: { borderBottom: '1px solid var(--color-line-x-light)' } }, this.props.headerTemplate)),
|
170
|
+
React.createElement(common_1.Spacer, { h: true, gap: "4", noWrap: true, justifyContent: "center", alignItems: "start", style: { paddingInline: 'var(--gap-1)' } },
|
167
171
|
React.createElement(common_1.Spacer, { v: true, gap: "4", style: styleForColumnOfUnit, alignItems: "center", noWrap: true }, (0, time_1.getOptionsForTimeUnit)('hours', this.is12HourFormat).map(function (hour) {
|
168
172
|
var isActiveHour = hour === parseUnitOfTime('hours', _this.props.value, _this.is12HourFormat);
|
169
173
|
return (React.createElement(TimeValueHolder, { key: hour, ref: isActiveHour ? _this.inputRefs[0] : undefined, onClick: function () {
|
@@ -216,9 +220,7 @@ var TimePickerPopover = /** @class */ (function (_super) {
|
|
216
220
|
value: 'PM',
|
217
221
|
},
|
218
222
|
], value: parseInt(((_a = this.props.value) !== null && _a !== void 0 ? _a : '').split(':')[0], 10) < 12 ? 'AM' : 'PM' })))),
|
219
|
-
this.props.footerTemplate && (React.createElement(
|
220
|
-
React.createElement(ContentDivider_1.ContentDivider, { border: true, type: "solid", orientation: "horizontal", margin: "none" }),
|
221
|
-
this.props.footerTemplate)))));
|
223
|
+
this.props.footerTemplate && (React.createElement("div", { className: "px-1-5 py-1", style: { borderTop: '1px solid var(--color-line-x-light)' } }, this.props.footerTemplate)))));
|
222
224
|
};
|
223
225
|
return TimePickerPopover;
|
224
226
|
}(React.PureComponent));
|