ywana-core8 0.0.238 → 0.0.242
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/__reactpreview__/Wrapper.tsx +16 -7
- package/dist/index.cjs +319 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +364 -3
- package/dist/index.css.map +1 -1
- package/dist/index.modern.js +318 -7
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +321 -9
- package/dist/index.umd.js.map +1 -1
- package/package.json +3 -1
- package/src/html/header.css +2 -1
- package/src/html/index.js +1 -1
- package/src/html/textarea.css +158 -0
- package/src/html/textfield.css +7 -2
- package/src/html/textfield.js +57 -3
- package/src/html/textfield.test.js +21 -0
- package/src/site/page.css +1 -0
- package/src/site/site.css +1 -0
- package/src/widgets/index.js +2 -1
- package/src/widgets/kanban/Kanban.test.js +18 -0
- package/src/widgets/planner/Planner.css +179 -0
- package/src/widgets/planner/Planner.js +208 -0
- package/src/widgets/planner/Planner.test.js +25 -0
@@ -1,14 +1,23 @@
|
|
1
1
|
import React from "react";
|
2
2
|
|
3
3
|
// You can import global CSS files here.
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
|
4
|
+
import "../src/css/html.css";
|
5
|
+
import "../src/css/theme.css";
|
6
|
+
import "material-design-icons-iconfont/dist/material-design-icons.css";
|
8
7
|
|
9
8
|
// No-op wrapper.
|
10
9
|
export const Wrapper: React.FC = ({ children }) => {
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
return (
|
11
|
+
<div
|
12
|
+
style={{
|
13
|
+
width: "100vw",
|
14
|
+
height: "100vh",
|
15
|
+
padding: "2rem",
|
16
|
+
display: "flex",
|
17
|
+
flexDirection: "column",
|
18
|
+
}}
|
19
|
+
>
|
20
|
+
{children}
|
21
|
+
</div>
|
22
|
+
);
|
14
23
|
};
|
package/dist/index.cjs
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require('material-design-icons-iconfont/dist/material-design-icons.css');
|
2
2
|
var React = require('react');
|
3
3
|
var RSwitch = require('react-switch');
|
4
|
+
var moment = require('moment');
|
5
|
+
var momentRange = require('moment-range');
|
4
6
|
var reactNotifications = require('react-notifications');
|
5
7
|
require('react-notifications/lib/notifications.css');
|
6
8
|
var equal = require('deep-equal');
|
@@ -10,6 +12,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
10
12
|
|
11
13
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
12
14
|
var RSwitch__default = /*#__PURE__*/_interopDefaultLegacy(RSwitch);
|
15
|
+
var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
|
13
16
|
var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
|
14
17
|
var ResumableJS__default = /*#__PURE__*/_interopDefaultLegacy(ResumableJS);
|
15
18
|
|
@@ -885,7 +888,7 @@ var TextField = function TextField(props) {
|
|
885
888
|
}
|
886
889
|
|
887
890
|
function focus() {
|
888
|
-
if (site) {
|
891
|
+
if (site && site.changeFocus) {
|
889
892
|
site.changeFocus({
|
890
893
|
lose: function lose() {// DO NOTHING
|
891
894
|
}
|
@@ -899,7 +902,7 @@ var TextField = function TextField(props) {
|
|
899
902
|
|
900
903
|
var borderStyle = outlined ? "textfield-outlined" : "textfield";
|
901
904
|
var labelStyle = label ? "" : "no-label";
|
902
|
-
var style = labelStyle + " " + borderStyle;
|
905
|
+
var style = labelStyle + " " + borderStyle + " textfield-" + type;
|
903
906
|
var labelTxt = /*#__PURE__*/React__default["default"].createElement(Text$1, null, label);
|
904
907
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
905
908
|
className: "" + style,
|
@@ -923,6 +926,79 @@ var TextField = function TextField(props) {
|
|
923
926
|
className: "bar"
|
924
927
|
}), label ? /*#__PURE__*/React__default["default"].createElement("label", null, labelTxt) : null);
|
925
928
|
};
|
929
|
+
/**
|
930
|
+
* Text Area
|
931
|
+
*/
|
932
|
+
|
933
|
+
var TextArea = function TextArea(props) {
|
934
|
+
var site = React.useContext(SiteContext);
|
935
|
+
var id = props.id,
|
936
|
+
_props$type2 = props.type,
|
937
|
+
type = _props$type2 === void 0 ? 'text' : _props$type2,
|
938
|
+
label = props.label,
|
939
|
+
placeholder = props.placeholder,
|
940
|
+
value = props.value,
|
941
|
+
_props$readOnly2 = props.readOnly,
|
942
|
+
readOnly = _props$readOnly2 === void 0 ? false : _props$readOnly2,
|
943
|
+
_props$canClear2 = props.canClear,
|
944
|
+
canClear = _props$canClear2 === void 0 ? true : _props$canClear2,
|
945
|
+
onChange = props.onChange,
|
946
|
+
onEnter = props.onEnter,
|
947
|
+
onClick = props.onClick;
|
948
|
+
|
949
|
+
function onKeyPress(event) {
|
950
|
+
var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
|
951
|
+
|
952
|
+
if (key == 13) {
|
953
|
+
if (onEnter) onEnter();
|
954
|
+
}
|
955
|
+
}
|
956
|
+
|
957
|
+
function change(event) {
|
958
|
+
event.stopPropagation();
|
959
|
+
event.preventDefault();
|
960
|
+
var value = event.target.value;
|
961
|
+
console.log(value);
|
962
|
+
if (onChange) onChange(id, value);
|
963
|
+
}
|
964
|
+
|
965
|
+
function focus() {
|
966
|
+
if (site && site.changeFocus) {
|
967
|
+
site.changeFocus({
|
968
|
+
lose: function lose() {// DO NOTHING
|
969
|
+
}
|
970
|
+
});
|
971
|
+
}
|
972
|
+
}
|
973
|
+
|
974
|
+
function clear() {
|
975
|
+
if (onChange) onChange(id, "");
|
976
|
+
}
|
977
|
+
|
978
|
+
var labelStyle = label ? "" : "no-label";
|
979
|
+
var style = "textarea " + labelStyle + " textarea-" + type;
|
980
|
+
var labelTxt = /*#__PURE__*/React__default["default"].createElement(Text$1, null, label);
|
981
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
982
|
+
className: "" + style,
|
983
|
+
onClick: onClick
|
984
|
+
}, /*#__PURE__*/React__default["default"].createElement("textarea", {
|
985
|
+
id: id,
|
986
|
+
placeholder: placeholder,
|
987
|
+
value: value,
|
988
|
+
required: true,
|
989
|
+
onChange: change,
|
990
|
+
onKeyDown: onKeyPress,
|
991
|
+
onFocus: focus,
|
992
|
+
readOnly: readOnly
|
993
|
+
}), !readOnly && canClear && value && value.length > 0 ? /*#__PURE__*/React__default["default"].createElement(Icon, {
|
994
|
+
icon: "close",
|
995
|
+
clickable: true,
|
996
|
+
size: "small",
|
997
|
+
action: clear
|
998
|
+
}) : null, /*#__PURE__*/React__default["default"].createElement("span", {
|
999
|
+
className: "bar"
|
1000
|
+
}), label ? /*#__PURE__*/React__default["default"].createElement("label", null, labelTxt) : null);
|
1001
|
+
};
|
926
1002
|
/**
|
927
1003
|
* Dropdown
|
928
1004
|
*/
|
@@ -936,8 +1012,8 @@ var DropDown = function DropDown(props) {
|
|
936
1012
|
onChange = props.onChange,
|
937
1013
|
_props$canFilter = props.canFilter,
|
938
1014
|
canFilter = _props$canFilter === void 0 ? false : _props$canFilter,
|
939
|
-
_props$
|
940
|
-
readOnly = _props$
|
1015
|
+
_props$readOnly3 = props.readOnly,
|
1016
|
+
readOnly = _props$readOnly3 === void 0 ? false : _props$readOnly3;
|
941
1017
|
|
942
1018
|
var _useState = React.useState(false),
|
943
1019
|
open = _useState[0],
|
@@ -968,7 +1044,7 @@ var DropDown = function DropDown(props) {
|
|
968
1044
|
}
|
969
1045
|
|
970
1046
|
function toggle() {
|
971
|
-
if (site) {
|
1047
|
+
if (site && site.changeFocus) {
|
972
1048
|
site.changeFocus({
|
973
1049
|
lose: function lose() {
|
974
1050
|
setOpen(false);
|
@@ -2255,6 +2331,242 @@ var WaitScreen = function WaitScreen() {
|
|
2255
2331
|
}));
|
2256
2332
|
};
|
2257
2333
|
|
2334
|
+
var ranges = momentRange.extendMoment(moment__default["default"]);
|
2335
|
+
var DATE_RANGE = [{
|
2336
|
+
label: "Week",
|
2337
|
+
value: "week"
|
2338
|
+
}, {
|
2339
|
+
label: "Month",
|
2340
|
+
value: "month"
|
2341
|
+
}];
|
2342
|
+
/**
|
2343
|
+
* Planner
|
2344
|
+
*/
|
2345
|
+
|
2346
|
+
var Planner = function Planner(_ref) {
|
2347
|
+
var title = _ref.title,
|
2348
|
+
_ref$events = _ref.events,
|
2349
|
+
events = _ref$events === void 0 ? [] : _ref$events,
|
2350
|
+
_ref$lanes = _ref.lanes,
|
2351
|
+
lanes = _ref$lanes === void 0 ? [] : _ref$lanes,
|
2352
|
+
_ref$navigation = _ref.navigation,
|
2353
|
+
navigation = _ref$navigation === void 0 ? true : _ref$navigation;
|
2354
|
+
|
2355
|
+
var _useState = React.useState("month"),
|
2356
|
+
dateRange = _useState[0],
|
2357
|
+
setDateRange = _useState[1];
|
2358
|
+
|
2359
|
+
var _useState2 = React.useState("2021-02-26"),
|
2360
|
+
from = _useState2[0],
|
2361
|
+
setFrom = _useState2[1];
|
2362
|
+
|
2363
|
+
var _useState3 = React.useState("2021-04-01"),
|
2364
|
+
to = _useState3[0],
|
2365
|
+
setTo = _useState3[1];
|
2366
|
+
|
2367
|
+
React.useEffect(function () {
|
2368
|
+
var today = moment__default["default"]();
|
2369
|
+
var from_date = today.startOf(dateRange).format("YYYY-MM-DD");
|
2370
|
+
var to_date = today.endOf(dateRange).format("YYYY-MM-DD");
|
2371
|
+
setFrom(from_date);
|
2372
|
+
setTo(to_date);
|
2373
|
+
}, [dateRange]);
|
2374
|
+
|
2375
|
+
function next() {
|
2376
|
+
var actual = moment__default["default"](from);
|
2377
|
+
var next = actual.add(1, dateRange);
|
2378
|
+
var from_date = next.startOf(dateRange).format("YYYY-MM-DD");
|
2379
|
+
var to_date = next.endOf(dateRange).format("YYYY-MM-DD");
|
2380
|
+
setFrom(from_date);
|
2381
|
+
setTo(to_date);
|
2382
|
+
}
|
2383
|
+
|
2384
|
+
function prev() {
|
2385
|
+
var actual = moment__default["default"](from);
|
2386
|
+
var next = actual.subtract(1, dateRange);
|
2387
|
+
var from_date = next.startOf(dateRange).format("YYYY-MM-DD");
|
2388
|
+
var to_date = next.endOf(dateRange).format("YYYY-MM-DD");
|
2389
|
+
setFrom(from_date);
|
2390
|
+
setTo(to_date);
|
2391
|
+
}
|
2392
|
+
|
2393
|
+
var period = React.useMemo(function () {
|
2394
|
+
var start = ranges(from, "YYYY-MM-DD");
|
2395
|
+
var end = ranges(to, "YYYY-MM-DD");
|
2396
|
+
var range = ranges.range(start, end);
|
2397
|
+
var period = Array.from(range.by("day")).map(function (m) {
|
2398
|
+
return {
|
2399
|
+
year: m.year(),
|
2400
|
+
month: m.month(),
|
2401
|
+
day: m.date(),
|
2402
|
+
moment: m
|
2403
|
+
};
|
2404
|
+
});
|
2405
|
+
return period;
|
2406
|
+
}, [from, to]);
|
2407
|
+
var label = /*#__PURE__*/React__default["default"].createElement(Text$1, {
|
2408
|
+
use: "headline6"
|
2409
|
+
}, title);
|
2410
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
2411
|
+
className: "planner-box"
|
2412
|
+
}, navigation ? /*#__PURE__*/React__default["default"].createElement(Header, {
|
2413
|
+
title: label
|
2414
|
+
}, /*#__PURE__*/React__default["default"].createElement(Icon, {
|
2415
|
+
icon: "chevron_right",
|
2416
|
+
clickable: true,
|
2417
|
+
action: next
|
2418
|
+
}), /*#__PURE__*/React__default["default"].createElement(TextField, {
|
2419
|
+
id: "to",
|
2420
|
+
type: "date",
|
2421
|
+
label: "To",
|
2422
|
+
value: to,
|
2423
|
+
onChange: function onChange(id, value) {
|
2424
|
+
return setTo(value);
|
2425
|
+
}
|
2426
|
+
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
2427
|
+
className: "expand"
|
2428
|
+
}), /*#__PURE__*/React__default["default"].createElement(DropDown, {
|
2429
|
+
id: "ranges",
|
2430
|
+
label: "Date Range",
|
2431
|
+
options: DATE_RANGE,
|
2432
|
+
value: dateRange,
|
2433
|
+
onChange: function onChange(id, value) {
|
2434
|
+
return setDateRange(value);
|
2435
|
+
}
|
2436
|
+
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
2437
|
+
className: "expand"
|
2438
|
+
}), /*#__PURE__*/React__default["default"].createElement(TextField, {
|
2439
|
+
id: "from",
|
2440
|
+
type: "date",
|
2441
|
+
label: "From",
|
2442
|
+
value: from,
|
2443
|
+
onChange: function onChange(id, value) {
|
2444
|
+
return setFrom(value);
|
2445
|
+
}
|
2446
|
+
}), /*#__PURE__*/React__default["default"].createElement(Icon, {
|
2447
|
+
icon: "chevron_left",
|
2448
|
+
clickable: true,
|
2449
|
+
action: prev
|
2450
|
+
})) : null, /*#__PURE__*/React__default["default"].createElement("main", {
|
2451
|
+
className: "planner"
|
2452
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
2453
|
+
className: "column0"
|
2454
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
2455
|
+
className: "column-header"
|
2456
|
+
}), lanes.map(function (lane) {
|
2457
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
2458
|
+
className: "row-header"
|
2459
|
+
}, lane.label);
|
2460
|
+
})), /*#__PURE__*/React__default["default"].createElement("div", {
|
2461
|
+
className: "rows"
|
2462
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
2463
|
+
className: "row row0"
|
2464
|
+
}, period.map(function (date, index) {
|
2465
|
+
var first = index === 0 || date.day === 1 ? "first" : "";
|
2466
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
2467
|
+
className: "column-header"
|
2468
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
2469
|
+
className: "month-header " + first
|
2470
|
+
}, /*#__PURE__*/React__default["default"].createElement(Text$1, {
|
2471
|
+
use: "overline"
|
2472
|
+
}, date.moment.format("MMM"))));
|
2473
|
+
})), /*#__PURE__*/React__default["default"].createElement("div", {
|
2474
|
+
className: "row row1"
|
2475
|
+
}, period.map(function (date) {
|
2476
|
+
var isWekend = [0, 6].includes(date.moment.day());
|
2477
|
+
var weekend = isWekend ? "weekend" : "";
|
2478
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
2479
|
+
className: "column-header"
|
2480
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
2481
|
+
className: "date-header " + weekend
|
2482
|
+
}, /*#__PURE__*/React__default["default"].createElement(Text$1, {
|
2483
|
+
use: "headline6"
|
2484
|
+
}, date.moment.format("DD")), "\xA0", /*#__PURE__*/React__default["default"].createElement(Text$1, {
|
2485
|
+
use: "caption"
|
2486
|
+
}, date.moment.format("ddd"))));
|
2487
|
+
})), lanes.map(function (lane) {
|
2488
|
+
return /*#__PURE__*/React__default["default"].createElement(PlannerRow, {
|
2489
|
+
lane: lane,
|
2490
|
+
events: events,
|
2491
|
+
period: period
|
2492
|
+
});
|
2493
|
+
}))));
|
2494
|
+
};
|
2495
|
+
/**
|
2496
|
+
* Planner Row
|
2497
|
+
*/
|
2498
|
+
|
2499
|
+
var PlannerRow = function PlannerRow(props) {
|
2500
|
+
var lane = props.lane,
|
2501
|
+
_props$events = props.events,
|
2502
|
+
events = _props$events === void 0 ? [] : _props$events,
|
2503
|
+
period = props.period;
|
2504
|
+
var rowEvents = events.filter(function (event) {
|
2505
|
+
return event.lane === lane.id;
|
2506
|
+
});
|
2507
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
2508
|
+
className: "row"
|
2509
|
+
}, period.map(function (date) {
|
2510
|
+
var slotDate = new Date(date.year, date.month, date.day);
|
2511
|
+
slotDate.setHours(0, 0, 0);
|
2512
|
+
var cellEvents = rowEvents.filter(function (event) {
|
2513
|
+
var eventDate = new Date(event.date);
|
2514
|
+
eventDate.setHours(0, 0, 0);
|
2515
|
+
return eventDate.getTime() === slotDate.getTime();
|
2516
|
+
});
|
2517
|
+
return /*#__PURE__*/React__default["default"].createElement(PlannerCell, {
|
2518
|
+
date: date,
|
2519
|
+
events: cellEvents
|
2520
|
+
});
|
2521
|
+
}));
|
2522
|
+
};
|
2523
|
+
/**
|
2524
|
+
* Planner Cell
|
2525
|
+
*/
|
2526
|
+
|
2527
|
+
|
2528
|
+
var PlannerCell = function PlannerCell(_ref3) {
|
2529
|
+
var lane = _ref3.lane,
|
2530
|
+
date = _ref3.date,
|
2531
|
+
onDrop = _ref3.onDrop;
|
2532
|
+
|
2533
|
+
var _useState4 = React.useState(false),
|
2534
|
+
dragOver = _useState4[0],
|
2535
|
+
setDragOver = _useState4[1];
|
2536
|
+
|
2537
|
+
function onDragOver(event) {
|
2538
|
+
if (!dragOver) setDragOver(true);
|
2539
|
+
event.stopPropagation();
|
2540
|
+
event.preventDefault();
|
2541
|
+
}
|
2542
|
+
|
2543
|
+
function onDragLeave(event) {
|
2544
|
+
setDragOver(false);
|
2545
|
+
event.stopPropagation();
|
2546
|
+
event.preventDefault();
|
2547
|
+
}
|
2548
|
+
|
2549
|
+
function drop(event) {
|
2550
|
+
event.stopPropagation();
|
2551
|
+
event.preventDefault();
|
2552
|
+
var id = event.dataTransfer.getData("text");
|
2553
|
+
if (onDrop) onDrop({
|
2554
|
+
id: id,
|
2555
|
+
lane: lane.id,
|
2556
|
+
date: date.moment.format("YYYY-MM-DD")
|
2557
|
+
});
|
2558
|
+
}
|
2559
|
+
|
2560
|
+
var isWekend = [0, 6].includes(date.moment.day());
|
2561
|
+
var weekend = isWekend ? "weekend" : "";
|
2562
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
2563
|
+
className: "cell " + weekend,
|
2564
|
+
onDragOver: onDragOver,
|
2565
|
+
onDragLeave: onDragLeave,
|
2566
|
+
onDrop: drop
|
2567
|
+
}, "c");
|
2568
|
+
};
|
2569
|
+
|
2258
2570
|
/**
|
2259
2571
|
* Page Context
|
2260
2572
|
*/
|
@@ -5472,6 +5784,7 @@ exports.MenuSeparator = MenuSeparator;
|
|
5472
5784
|
exports.Page = Page;
|
5473
5785
|
exports.PageContext = PageContext;
|
5474
5786
|
exports.PageProvider = PageProvider;
|
5787
|
+
exports.Planner = Planner;
|
5475
5788
|
exports.Property = Property;
|
5476
5789
|
exports.RadioButton = RadioButton;
|
5477
5790
|
exports.ResetPasswordBox = ResetPasswordBox;
|
@@ -5488,6 +5801,7 @@ exports.TabbedContentEditor = TabbedContentEditor;
|
|
5488
5801
|
exports.TablePage = TablePage;
|
5489
5802
|
exports.Tabs = Tabs;
|
5490
5803
|
exports.Text = Text$1;
|
5804
|
+
exports.TextArea = TextArea;
|
5491
5805
|
exports.TextField = TextField;
|
5492
5806
|
exports.Thumbnail = Thumbnail;
|
5493
5807
|
exports.TokenField = TokenField;
|