superdesk-ui-framework 3.1.12 → 3.1.14
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/_helpers.scss +17 -0
- package/app/styles/_toggle-box.scss +45 -28
- package/app/styles/form-elements/_inputs.scss +14 -0
- package/app/styles/grids/_grid-layout.scss +3 -0
- package/app-typescript/components/DatePicker.tsx +16 -0
- package/app-typescript/components/Layouts/LayoutContainer.tsx +7 -1
- package/app-typescript/components/Layouts/PageLayout.tsx +2 -1
- package/app-typescript/components/TimePickerV2.tsx +222 -0
- package/app-typescript/components/ToggleBox/CustomHeaderToggleBox.tsx +6 -1
- package/app-typescript/components/ToggleBox/SimpleToggleBox.tsx +10 -20
- package/app-typescript/components/ToggleBox/index.tsx +3 -1
- package/app-typescript/components/TreeMenu.tsx +8 -5
- package/app-typescript/components/TreeSelect/TreeSelect.tsx +13 -12
- package/app-typescript/components/TreeSelect/TreeSelectItem.tsx +11 -1
- package/app-typescript/index.ts +1 -0
- package/dist/components/TimePicker.tsx +43 -1
- package/dist/components/Togglebox.tsx +19 -4
- package/dist/components/TreeMenu.tsx +2 -0
- package/dist/components/utilities/TextUtilities.tsx +39 -0
- package/dist/design-patterns/ThreePaneLayoutPattern.tsx +1 -1
- package/dist/examples.bundle.js +2362 -2098
- package/dist/superdesk-ui.bundle.css +72 -20
- package/dist/superdesk-ui.bundle.js +1986 -1771
- package/dist/vendor.bundle.js +16 -16
- package/examples/pages/components/TimePicker.tsx +43 -1
- package/examples/pages/components/Togglebox.tsx +19 -4
- package/examples/pages/components/TreeMenu.tsx +2 -0
- package/examples/pages/components/utilities/TextUtilities.tsx +39 -0
- package/examples/pages/design-patterns/ThreePaneLayoutPattern.tsx +1 -1
- package/package.json +1 -1
- package/react/components/DatePicker.d.ts +2 -0
- package/react/components/DatePicker.js +6 -2
- package/react/components/Layouts/LayoutContainer.d.ts +1 -0
- package/react/components/Layouts/LayoutContainer.js +8 -1
- package/react/components/Layouts/PageLayout.d.ts +1 -0
- package/react/components/Layouts/PageLayout.js +1 -1
- package/react/components/TimePickerV2.d.ts +28 -0
- package/react/components/TimePickerV2.js +189 -0
- package/react/components/ToggleBox/CustomHeaderToggleBox.d.ts +1 -0
- package/react/components/ToggleBox/CustomHeaderToggleBox.js +6 -3
- package/react/components/ToggleBox/SimpleToggleBox.js +8 -6
- package/react/components/ToggleBox/index.d.ts +2 -1
- package/react/components/TreeMenu.js +7 -7
- package/react/components/TreeSelect/TreeSelect.js +9 -11
- package/react/components/TreeSelect/TreeSelectItem.d.ts +1 -0
- package/react/components/TreeSelect/TreeSelectItem.js +7 -4
- package/react/index.d.ts +1 -0
- package/react/index.js +5 -3
@@ -44,12 +44,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
44
|
exports.CustomHeaderToggleBox = void 0;
|
45
45
|
var React = __importStar(require("react"));
|
46
46
|
var classnames_1 = __importDefault(require("classnames"));
|
47
|
+
var react_id_generator_1 = __importDefault(require("react-id-generator"));
|
47
48
|
var CustomHeaderToggleBox = /** @class */ (function (_super) {
|
48
49
|
__extends(CustomHeaderToggleBox, _super);
|
49
50
|
function CustomHeaderToggleBox(props) {
|
50
51
|
var _this = this;
|
51
52
|
var _a;
|
52
53
|
_this = _super.call(this, props) || this;
|
54
|
+
_this.htmlId = (0, react_id_generator_1.default)('togglebox-');
|
53
55
|
_this.toggle = function () {
|
54
56
|
_this.setState({ isOpen: !_this.state.isOpen }, function () {
|
55
57
|
var _a, _b;
|
@@ -65,13 +67,14 @@ var CustomHeaderToggleBox = /** @class */ (function (_super) {
|
|
65
67
|
var classes = (0, classnames_1.default)('sd-shadow--z1 new-collapse-box', {
|
66
68
|
'new-collapse-box--open': this.state.isOpen,
|
67
69
|
});
|
68
|
-
|
70
|
+
var isOpen = this.state.isOpen;
|
71
|
+
return (React.createElement("div", { className: classes, "aria-expanded": isOpen, "data-test-id": 'toggle-box' },
|
69
72
|
React.createElement("div", { className: 'new-collapse-box__header' },
|
70
73
|
React.createElement("div", { className: 'new-collapse-box__header-inner' }, this.props.header),
|
71
|
-
React.createElement("button", { className: 'new-collapse-box__divider', onClick: this.toggle },
|
74
|
+
React.createElement("button", { className: 'new-collapse-box__divider', onClick: this.toggle, "aria-controls": this.htmlId },
|
72
75
|
React.createElement("span", { className: 'label label--translucent new-collapse-box__divider-label' }, this.props.toggleButtonLabel))),
|
73
76
|
React.createElement("div", { className: 'new-collapse-box__content' },
|
74
|
-
React.createElement("div", { className: 'new-collapse-box__content-inner p-2 pt-0-5' }, this.props.children))));
|
77
|
+
React.createElement("div", { id: this.htmlId, "aria-hidden": !isOpen, className: 'new-collapse-box__content-inner p-2 pt-0-5' }, this.props.children))));
|
75
78
|
};
|
76
79
|
return CustomHeaderToggleBox;
|
77
80
|
}(React.PureComponent));
|
@@ -56,7 +56,7 @@ var SimpleToggleBox = /** @class */ (function (_super) {
|
|
56
56
|
var _this = this;
|
57
57
|
var _a;
|
58
58
|
_this = _super.call(this, props) || this;
|
59
|
-
_this.htmlId = (0, react_id_generator_1.default)();
|
59
|
+
_this.htmlId = (0, react_id_generator_1.default)('togglebox-');
|
60
60
|
_this.handleKeyDown = function (event) {
|
61
61
|
if (event.key === "ArrowRight" && !_this.state.isOpen) {
|
62
62
|
_this.setState({ isOpen: true });
|
@@ -86,23 +86,25 @@ var SimpleToggleBox = /** @class */ (function (_super) {
|
|
86
86
|
SimpleToggleBox.prototype.render = function () {
|
87
87
|
var _a;
|
88
88
|
var classes = (0, classnames_1.default)('toggle-box', (_a = {
|
89
|
-
'toggle-box--margin-normal': this.props.margin === undefined
|
89
|
+
'toggle-box--margin-normal': this.props.margin === undefined,
|
90
|
+
'toggle-box--large-title': this.props.largeTitle,
|
91
|
+
'toggle-box--circle': this.props.circledChevron
|
90
92
|
},
|
91
93
|
_a["toggle-box--margin-".concat(this.props.margin)] = this.props.margin,
|
92
94
|
_a['hidden'] = !this.state.isOpen,
|
95
|
+
_a['open'] = this.state.isOpen,
|
93
96
|
_a), this.props.className);
|
94
|
-
var _b = this.props, title = _b.title,
|
97
|
+
var _b = this.props, title = _b.title, children = _b.children, badge = _b.badge;
|
95
98
|
var isOpen = this.state.isOpen;
|
96
99
|
return (React.createElement("div", { className: classes },
|
97
|
-
React.createElement("a", { className: "toggle-box__header", onClick: this.toggle, role: "button", tabIndex: 0, onKeyDown: this.handleKeyDown,
|
100
|
+
React.createElement("a", { className: "toggle-box__header", onClick: this.toggle, role: "button", tabIndex: 0, onKeyDown: this.handleKeyDown, "aria-expanded": isOpen, "aria-controls": this.htmlId },
|
98
101
|
React.createElement("div", { className: "toggle-box__chevron" },
|
99
102
|
React.createElement("i", { className: "icon-chevron-right-thin" })),
|
100
103
|
React.createElement("div", { className: "toggle-box__label" }, title),
|
101
104
|
React.createElement("div", { className: "toggle-box__line" }),
|
102
105
|
badge ? badge : null),
|
103
106
|
React.createElement("div", { className: "toggle-box__content-wraper" },
|
104
|
-
|
105
|
-
hideUsingCSS && (React.createElement("div", { className: (0, classnames_1.default)('toggle-box__content', { 'toggle-box__content--hidden': !isOpen }), "aria-describedby": "togglebox-".concat(this.htmlId) }, children)))));
|
107
|
+
React.createElement("div", { id: this.htmlId, className: "toggle-box__content", "aria-hidden": !isOpen }, children))));
|
106
108
|
};
|
107
109
|
return SimpleToggleBox;
|
108
110
|
}(React.PureComponent));
|
@@ -4,8 +4,9 @@ export interface IPropsSimple {
|
|
4
4
|
title: string;
|
5
5
|
badge?: JSX.Element;
|
6
6
|
children: React.ReactNode;
|
7
|
-
|
7
|
+
circledChevron?: boolean;
|
8
8
|
initiallyOpen?: boolean;
|
9
|
+
largeTitle?: boolean;
|
9
10
|
className?: string;
|
10
11
|
margin?: 'none' | 'small' | 'normal' | 'large';
|
11
12
|
onOpen?(): void;
|
@@ -248,11 +248,9 @@ var TreeMenu = /** @class */ (function (_super) {
|
|
248
248
|
});
|
249
249
|
}
|
250
250
|
var item = this.state.buttonTree.pop();
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
});
|
255
|
-
}
|
251
|
+
this.setState({
|
252
|
+
buttonValue: item !== null && item !== void 0 ? item : null,
|
253
|
+
});
|
256
254
|
};
|
257
255
|
TreeMenu.prototype.recursion = function (arr) {
|
258
256
|
var _this = this;
|
@@ -325,9 +323,11 @@ var TreeMenu = /** @class */ (function (_super) {
|
|
325
323
|
: this.props.getLabel(this.state.buttonValue.value)))),
|
326
324
|
this.state.searchFieldValue === '' ?
|
327
325
|
this.props.getOptions ?
|
328
|
-
React.createElement("ul", { ref: this.ref, className: "suggestion-list suggestion-list--multi-select" }, this.state.options.map(function (option, i) { return (React.createElement(TreeSelectItem_1.TreeSelectItem, { key: i, option: option, handleTree: _this.handleTree, onClick: function () {
|
326
|
+
React.createElement("ul", { ref: this.ref, className: "suggestion-list suggestion-list--multi-select", role: 'tree' }, this.state.options.map(function (option, i) { return (React.createElement(TreeSelectItem_1.TreeSelectItem, { key: i, option: option, handleTree: _this.handleTree, onClick: function () {
|
329
327
|
onSelect(option);
|
330
|
-
}, disabledItem: disabledItem(option), getBorderColor: _this.props.getBorderColor,
|
328
|
+
}, disabledItem: disabledItem(option), getBorderColor: _this.props.getBorderColor, parentCategory: _this.state.buttonValue == null
|
329
|
+
? undefined
|
330
|
+
: _this.props.getLabel(_this.state.buttonValue.value), getBackgroundColor: _this.props.getBackgroundColor, getId: _this.props.getId, optionTemplate: _this.props.optionTemplate, getLabel: _this.props.getLabel, onKeyDown: function () { return _this.setState({
|
331
331
|
buttonTarget: __spreadArray(__spreadArray([], _this.state.buttonTarget, true), [
|
332
332
|
_this.props.getId(option.value),
|
333
333
|
], false),
|
@@ -403,11 +403,9 @@ var TreeSelect = /** @class */ (function (_super) {
|
|
403
403
|
});
|
404
404
|
}
|
405
405
|
var item = this.state.buttonTree.pop();
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
});
|
410
|
-
}
|
406
|
+
this.setState({
|
407
|
+
buttonValue: item !== null && item !== void 0 ? item : null,
|
408
|
+
});
|
411
409
|
};
|
412
410
|
TreeSelect.prototype.recursion = function (arr) {
|
413
411
|
var _this = this;
|
@@ -576,7 +574,7 @@ var TreeSelect = /** @class */ (function (_super) {
|
|
576
574
|
searchFieldValue: '',
|
577
575
|
});
|
578
576
|
}
|
579
|
-
}, "data-test-id": "open-popover" },
|
577
|
+
}, "data-test-id": "open-popover", "aria-haspopup": "tree", "aria-expanded": this.state.openDropdown },
|
580
578
|
React.createElement("i", { className: "icon-plus-large" })),
|
581
579
|
React.createElement(ListWrapper, null, this.state.value.map(function (item, i) {
|
582
580
|
var Wrapper = function (_a) {
|
@@ -632,9 +630,7 @@ var TreeSelect = /** @class */ (function (_super) {
|
|
632
630
|
width: (_b = this.treeSelectRef.current) === null || _b === void 0 ? void 0 : _b.offsetWidth,
|
633
631
|
}, ref: this.dropdownRef },
|
634
632
|
React.createElement("div", { className: 'autocomplete__header' },
|
635
|
-
React.createElement("div", { className: "autocomplete__icon",
|
636
|
-
_this.backButton();
|
637
|
-
} },
|
633
|
+
React.createElement("div", { className: "autocomplete__icon" },
|
638
634
|
React.createElement(Icon_1.Icon, { name: "search", className: "search" })),
|
639
635
|
React.createElement("div", { className: 'autocomplete__filter' },
|
640
636
|
React.createElement("input", { className: "autocomplete__input", type: "text", placeholder: this.props.searchPlaceholder, ref: this.inputRef, value: this.state.searchFieldValue, onChange: function (event) {
|
@@ -676,11 +672,13 @@ var TreeSelect = /** @class */ (function (_super) {
|
|
676
672
|
React.createElement(Loader_1.Loader, { overlay: true }))
|
677
673
|
: this.state.searchFieldValue === ''
|
678
674
|
? this.props.getOptions
|
679
|
-
? React.createElement("ul", { className: "suggestion-list suggestion-list--multi-select", ref: this.ref, "data-test-id": "options" }, this.state.options.map(function (option, i) {
|
675
|
+
? React.createElement("ul", { className: "suggestion-list suggestion-list--multi-select", ref: this.ref, "data-test-id": "options", role: 'tree', "aria-multiselectable": this.props.allowMultiple }, this.state.options.map(function (option, i) {
|
680
676
|
var selectedItem = _this.state.value.some(function (obj) {
|
681
677
|
return _this.props.getId(obj) === _this.props.getId(option.value);
|
682
678
|
});
|
683
|
-
return (React.createElement(TreeSelectItem_1.TreeSelectItem, { key: i, option: option, handleTree: _this.handleTree, selectedItem: selectedItem, allowMultiple: _this.props.allowMultiple,
|
679
|
+
return (React.createElement(TreeSelectItem_1.TreeSelectItem, { key: i, option: option, handleTree: _this.handleTree, selectedItem: selectedItem, allowMultiple: _this.props.allowMultiple, parentCategory: _this.state.buttonValue == null
|
680
|
+
? undefined
|
681
|
+
: _this.props.getLabel(_this.state.buttonValue.value), getBorderColor: _this.props.getBorderColor, getBackgroundColor: _this.props.getBackgroundColor, getId: _this.props.getId, getLabel: _this.props.getLabel, optionTemplate: _this.props.optionTemplate, onKeyDown: function () { return _this.setState({
|
684
682
|
buttonTarget: __spreadArray(__spreadArray([], _this.state.buttonTarget, true), [
|
685
683
|
_this.props.getId(option.value),
|
686
684
|
], false),
|
@@ -6,6 +6,7 @@ interface IProps<T> {
|
|
6
6
|
selectedItem?: boolean;
|
7
7
|
disabledItem?: boolean;
|
8
8
|
allowMultiple?: boolean;
|
9
|
+
parentCategory?: string | undefined;
|
9
10
|
handleTree(event: React.MouseEvent<HTMLLIElement, MouseEvent>, option: ITreeNode<T>): any;
|
10
11
|
getLabel(item: T): string;
|
11
12
|
getId(item: T): string;
|
@@ -53,7 +53,10 @@ var TreeSelectItem = /** @class */ (function (_super) {
|
|
53
53
|
}
|
54
54
|
TreeSelectItem.prototype.render = function () {
|
55
55
|
var _this = this;
|
56
|
-
|
56
|
+
var ariaLabel = this.props.parentCategory !== undefined
|
57
|
+
? "".concat(this.props.getLabel(this.props.option.value), ", parent ").concat(this.props.parentCategory)
|
58
|
+
: this.props.getLabel(this.props.option.value);
|
59
|
+
return (React.createElement("li", { className: 'suggestion-item suggestion-item--multi-select', role: 'none', onClick: function (event) {
|
57
60
|
var _a, _b;
|
58
61
|
if (!_this.props.disabledItem) {
|
59
62
|
(_b = (_a = _this.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a);
|
@@ -70,7 +73,7 @@ var TreeSelectItem = /** @class */ (function (_super) {
|
|
70
73
|
if (event.key === 'Enter' && _this.props.option.children) {
|
71
74
|
(_b = (_a = _this.props).onKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a);
|
72
75
|
}
|
73
|
-
}, disabled: this.props.disabledItem, "data-test-id": "option" },
|
76
|
+
}, disabled: this.props.disabledItem, "data-test-id": "option", role: 'treeItem', "aria-selected": this.props.selectedItem === true, "aria-disabled": this.props.disabledItem === true },
|
74
77
|
(this.props.getBorderColor && !this.props.allowMultiple)
|
75
78
|
&& React.createElement("div", { className: "item-border", style: {
|
76
79
|
backgroundColor: this.props.getBorderColor(this.props.option.value),
|
@@ -81,11 +84,11 @@ var TreeSelectItem = /** @class */ (function (_super) {
|
|
81
84
|
backgroundColor: this.props.getBackgroundColor(this.props.option.value),
|
82
85
|
color: (0, Label_1.getTextColor)(this.props.getBackgroundColor(this.props.option.value)),
|
83
86
|
}
|
84
|
-
: undefined }, this.props.optionTemplate
|
87
|
+
: undefined, "aria-label": ariaLabel }, this.props.optionTemplate
|
85
88
|
? this.props.optionTemplate(this.props.option.value)
|
86
89
|
: this.props.getLabel(this.props.option.value)),
|
87
90
|
this.props.option.children
|
88
|
-
&& React.createElement("span", { className: "suggestion-item__icon" },
|
91
|
+
&& React.createElement("span", { className: "suggestion-item__icon", "aria-hidden": "true" },
|
89
92
|
React.createElement(Icon_1.Icon, { name: "chevron-right-thin" })))));
|
90
93
|
};
|
91
94
|
return TreeSelectItem;
|
package/react/index.d.ts
CHANGED
@@ -24,6 +24,7 @@ export { DatePicker } from './components/DatePicker';
|
|
24
24
|
export { DatePickerISO } from './components/DatePicker';
|
25
25
|
export { DatePickerLocaleSettings } from './components/DatePicker';
|
26
26
|
export { TimePicker } from './components/TimePicker';
|
27
|
+
export { TimePickerV2 } from './components/TimePickerV2';
|
27
28
|
export { FormLabel } from './components/FormLabel';
|
28
29
|
export { Switch } from './components/Switch';
|
29
30
|
export { SwitchGroup } from './components/SwitchGroup';
|
package/react/index.js
CHANGED
@@ -16,9 +16,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
16
16
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
17
17
|
};
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
19
|
-
exports.
|
20
|
-
exports.
|
21
|
-
exports.DragHandle = exports.DragHandleDots = exports.ResizeObserverComponent = exports.SpacerBlock = exports.Spacer = exports.WithPopover = exports.ResizablePanels = exports.MultiSelect = exports.ContentListItem = exports.TableListItem = exports.TableList = exports.TreeMenu = exports.TreeSelect = exports.BottomNav = void 0;
|
19
|
+
exports.Divider = exports.Icon = exports.Prop = exports.PropsList = exports.StrechBar = exports.SlidingToolbar = exports.SubNavDivider = exports.SubNav = exports.LeftMenu = exports.TabList = exports.Tab = exports.NavButton = exports.CheckButtonGroup = exports.CheckGroup = exports.CheckboxButton = exports.RadioButtonGroup = exports.Checkbox = exports.RadioGroup = exports.Loader = exports.ButtonGroup = exports.SwitchGroup = exports.Switch = exports.FormLabel = exports.TimePickerV2 = exports.TimePicker = exports.DatePickerISO = exports.DatePicker = exports.getDurationString = exports.DurationInput = exports.Tooltip = exports.IconLabel = exports.IconButton = exports.Rotate = exports.AvatarPlaceholder = exports.Avatar = exports.AvatarGroup = exports.AvatarContentImage = exports.AvatarContentText = exports.AvatarWrapper = exports.Alert = exports.Badge = exports.Label = exports.Popover = exports.WithPagination = exports.SelectWithTemplate = exports.Option = exports.Select = exports.Input = exports.Button = exports.HelloWorld = void 0;
|
20
|
+
exports.Time = exports.Text = exports.LoadingOverlay = exports.Spinner = exports.ListItemLoader = exports.Skeleton = exports.IllustrationButton = exports.SvgIconIllustration = exports.WithSizeObserver = exports.SearchBar = exports.CreateButton = exports.DropZone = exports.ThemeSelector = exports.IconPicker = exports.SelectGrid = exports.ToggleBox = exports.Menu = exports.toasted = exports.GridItemCheckWrapper = exports.GridItemTopActions = exports.GridItemFooterActions = exports.GridItemFooterBlock = exports.GridItemSlug = exports.GridItemText = exports.GridItemTitle = exports.GridItemTime = exports.GridItemContentBlock = exports.GridItemFooter = exports.GridItemMedia = exports.GridItemContent = exports.GridItem = exports.GridList = exports.Modal = exports.Carousel = exports.DonutChart = exports.Autocomplete = exports.EmptyState = exports.Tabs = exports.TabContent = exports.TabPanel = exports.TabLabel = exports.TagInput = exports.Tag = exports.Dropdown = exports.DropdownDivider = exports.DropdownLabel = exports.DropdownItem = exports.DropdownFirst = exports.HeadingText = exports.ContentDivider = void 0;
|
21
|
+
exports.DragHandle = exports.DragHandleDots = exports.ResizeObserverComponent = exports.SpacerBlock = exports.Spacer = exports.WithPopover = exports.ResizablePanels = exports.MultiSelect = exports.ContentListItem = exports.TableListItem = exports.TableList = exports.TreeMenu = exports.TreeSelect = exports.BottomNav = exports.Heading = void 0;
|
22
22
|
var HelloWorld_1 = require("./components/HelloWorld");
|
23
23
|
Object.defineProperty(exports, "HelloWorld", { enumerable: true, get: function () { return HelloWorld_1.HelloWorld; } });
|
24
24
|
var Button_1 = require("./components/Button");
|
@@ -70,6 +70,8 @@ var DatePicker_2 = require("./components/DatePicker");
|
|
70
70
|
Object.defineProperty(exports, "DatePickerISO", { enumerable: true, get: function () { return DatePicker_2.DatePickerISO; } });
|
71
71
|
var TimePicker_1 = require("./components/TimePicker");
|
72
72
|
Object.defineProperty(exports, "TimePicker", { enumerable: true, get: function () { return TimePicker_1.TimePicker; } });
|
73
|
+
var TimePickerV2_1 = require("./components/TimePickerV2");
|
74
|
+
Object.defineProperty(exports, "TimePickerV2", { enumerable: true, get: function () { return TimePickerV2_1.TimePickerV2; } });
|
73
75
|
var FormLabel_1 = require("./components/FormLabel");
|
74
76
|
Object.defineProperty(exports, "FormLabel", { enumerable: true, get: function () { return FormLabel_1.FormLabel; } });
|
75
77
|
var Switch_1 = require("./components/Switch");
|