ywana-core8 0.0.241 → 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/dist/index.umd.js CHANGED
@@ -1,12 +1,13 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('material-design-icons-iconfont/dist/material-design-icons.css'), require('react'), require('react-switch'), require('react-notifications'), require('react-notifications/lib/notifications.css'), require('deep-equal'), require('resumablejs')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'material-design-icons-iconfont/dist/material-design-icons.css', 'react', 'react-switch', 'react-notifications', 'react-notifications/lib/notifications.css', 'deep-equal', 'resumablejs'], factory) :
4
- (global = global || self, factory(global.ywanaCore8 = {}, null, global.react, global.reactSwitch, global.reactNotifications, null, global.deepEqual, global.resumablejs));
5
- })(this, (function (exports, materialDesignIcons_css, React, RSwitch, reactNotifications, notifications_css, equal, ResumableJS) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('material-design-icons-iconfont/dist/material-design-icons.css'), require('react'), require('react-switch'), require('moment'), require('moment-range'), require('react-notifications'), require('react-notifications/lib/notifications.css'), require('deep-equal'), require('resumablejs')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'material-design-icons-iconfont/dist/material-design-icons.css', 'react', 'react-switch', 'moment', 'moment-range', 'react-notifications', 'react-notifications/lib/notifications.css', 'deep-equal', 'resumablejs'], factory) :
4
+ (global = global || self, factory(global.ywanaCore8 = {}, null, global.react, global.reactSwitch, global.moment, global.momentRange, global.reactNotifications, null, global.deepEqual, global.resumablejs));
5
+ })(this, (function (exports, materialDesignIcons_css, React, RSwitch, moment, momentRange, reactNotifications, notifications_css, equal, ResumableJS) {
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
8
8
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
9
9
  var RSwitch__default = /*#__PURE__*/_interopDefaultLegacy(RSwitch);
10
+ var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
10
11
  var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
11
12
  var ResumableJS__default = /*#__PURE__*/_interopDefaultLegacy(ResumableJS);
12
13
 
@@ -2325,6 +2326,242 @@
2325
2326
  }));
2326
2327
  };
2327
2328
 
2329
+ var ranges = momentRange.extendMoment(moment__default["default"]);
2330
+ var DATE_RANGE = [{
2331
+ label: "Week",
2332
+ value: "week"
2333
+ }, {
2334
+ label: "Month",
2335
+ value: "month"
2336
+ }];
2337
+ /**
2338
+ * Planner
2339
+ */
2340
+
2341
+ var Planner = function Planner(_ref) {
2342
+ var title = _ref.title,
2343
+ _ref$events = _ref.events,
2344
+ events = _ref$events === void 0 ? [] : _ref$events,
2345
+ _ref$lanes = _ref.lanes,
2346
+ lanes = _ref$lanes === void 0 ? [] : _ref$lanes,
2347
+ _ref$navigation = _ref.navigation,
2348
+ navigation = _ref$navigation === void 0 ? true : _ref$navigation;
2349
+
2350
+ var _useState = React.useState("month"),
2351
+ dateRange = _useState[0],
2352
+ setDateRange = _useState[1];
2353
+
2354
+ var _useState2 = React.useState("2021-02-26"),
2355
+ from = _useState2[0],
2356
+ setFrom = _useState2[1];
2357
+
2358
+ var _useState3 = React.useState("2021-04-01"),
2359
+ to = _useState3[0],
2360
+ setTo = _useState3[1];
2361
+
2362
+ React.useEffect(function () {
2363
+ var today = moment__default["default"]();
2364
+ var from_date = today.startOf(dateRange).format("YYYY-MM-DD");
2365
+ var to_date = today.endOf(dateRange).format("YYYY-MM-DD");
2366
+ setFrom(from_date);
2367
+ setTo(to_date);
2368
+ }, [dateRange]);
2369
+
2370
+ function next() {
2371
+ var actual = moment__default["default"](from);
2372
+ var next = actual.add(1, dateRange);
2373
+ var from_date = next.startOf(dateRange).format("YYYY-MM-DD");
2374
+ var to_date = next.endOf(dateRange).format("YYYY-MM-DD");
2375
+ setFrom(from_date);
2376
+ setTo(to_date);
2377
+ }
2378
+
2379
+ function prev() {
2380
+ var actual = moment__default["default"](from);
2381
+ var next = actual.subtract(1, dateRange);
2382
+ var from_date = next.startOf(dateRange).format("YYYY-MM-DD");
2383
+ var to_date = next.endOf(dateRange).format("YYYY-MM-DD");
2384
+ setFrom(from_date);
2385
+ setTo(to_date);
2386
+ }
2387
+
2388
+ var period = React.useMemo(function () {
2389
+ var start = ranges(from, "YYYY-MM-DD");
2390
+ var end = ranges(to, "YYYY-MM-DD");
2391
+ var range = ranges.range(start, end);
2392
+ var period = Array.from(range.by("day")).map(function (m) {
2393
+ return {
2394
+ year: m.year(),
2395
+ month: m.month(),
2396
+ day: m.date(),
2397
+ moment: m
2398
+ };
2399
+ });
2400
+ return period;
2401
+ }, [from, to]);
2402
+ var label = /*#__PURE__*/React__default["default"].createElement(Text$1, {
2403
+ use: "headline6"
2404
+ }, title);
2405
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2406
+ className: "planner-box"
2407
+ }, navigation ? /*#__PURE__*/React__default["default"].createElement(Header, {
2408
+ title: label
2409
+ }, /*#__PURE__*/React__default["default"].createElement(Icon, {
2410
+ icon: "chevron_right",
2411
+ clickable: true,
2412
+ action: next
2413
+ }), /*#__PURE__*/React__default["default"].createElement(TextField, {
2414
+ id: "to",
2415
+ type: "date",
2416
+ label: "To",
2417
+ value: to,
2418
+ onChange: function onChange(id, value) {
2419
+ return setTo(value);
2420
+ }
2421
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
2422
+ className: "expand"
2423
+ }), /*#__PURE__*/React__default["default"].createElement(DropDown, {
2424
+ id: "ranges",
2425
+ label: "Date Range",
2426
+ options: DATE_RANGE,
2427
+ value: dateRange,
2428
+ onChange: function onChange(id, value) {
2429
+ return setDateRange(value);
2430
+ }
2431
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
2432
+ className: "expand"
2433
+ }), /*#__PURE__*/React__default["default"].createElement(TextField, {
2434
+ id: "from",
2435
+ type: "date",
2436
+ label: "From",
2437
+ value: from,
2438
+ onChange: function onChange(id, value) {
2439
+ return setFrom(value);
2440
+ }
2441
+ }), /*#__PURE__*/React__default["default"].createElement(Icon, {
2442
+ icon: "chevron_left",
2443
+ clickable: true,
2444
+ action: prev
2445
+ })) : null, /*#__PURE__*/React__default["default"].createElement("main", {
2446
+ className: "planner"
2447
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
2448
+ className: "column0"
2449
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
2450
+ className: "column-header"
2451
+ }), lanes.map(function (lane) {
2452
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2453
+ className: "row-header"
2454
+ }, lane.label);
2455
+ })), /*#__PURE__*/React__default["default"].createElement("div", {
2456
+ className: "rows"
2457
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
2458
+ className: "row row0"
2459
+ }, period.map(function (date, index) {
2460
+ var first = index === 0 || date.day === 1 ? "first" : "";
2461
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2462
+ className: "column-header"
2463
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
2464
+ className: "month-header " + first
2465
+ }, /*#__PURE__*/React__default["default"].createElement(Text$1, {
2466
+ use: "overline"
2467
+ }, date.moment.format("MMM"))));
2468
+ })), /*#__PURE__*/React__default["default"].createElement("div", {
2469
+ className: "row row1"
2470
+ }, period.map(function (date) {
2471
+ var isWekend = [0, 6].includes(date.moment.day());
2472
+ var weekend = isWekend ? "weekend" : "";
2473
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2474
+ className: "column-header"
2475
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
2476
+ className: "date-header " + weekend
2477
+ }, /*#__PURE__*/React__default["default"].createElement(Text$1, {
2478
+ use: "headline6"
2479
+ }, date.moment.format("DD")), "\xA0", /*#__PURE__*/React__default["default"].createElement(Text$1, {
2480
+ use: "caption"
2481
+ }, date.moment.format("ddd"))));
2482
+ })), lanes.map(function (lane) {
2483
+ return /*#__PURE__*/React__default["default"].createElement(PlannerRow, {
2484
+ lane: lane,
2485
+ events: events,
2486
+ period: period
2487
+ });
2488
+ }))));
2489
+ };
2490
+ /**
2491
+ * Planner Row
2492
+ */
2493
+
2494
+ var PlannerRow = function PlannerRow(props) {
2495
+ var lane = props.lane,
2496
+ _props$events = props.events,
2497
+ events = _props$events === void 0 ? [] : _props$events,
2498
+ period = props.period;
2499
+ var rowEvents = events.filter(function (event) {
2500
+ return event.lane === lane.id;
2501
+ });
2502
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2503
+ className: "row"
2504
+ }, period.map(function (date) {
2505
+ var slotDate = new Date(date.year, date.month, date.day);
2506
+ slotDate.setHours(0, 0, 0);
2507
+ var cellEvents = rowEvents.filter(function (event) {
2508
+ var eventDate = new Date(event.date);
2509
+ eventDate.setHours(0, 0, 0);
2510
+ return eventDate.getTime() === slotDate.getTime();
2511
+ });
2512
+ return /*#__PURE__*/React__default["default"].createElement(PlannerCell, {
2513
+ date: date,
2514
+ events: cellEvents
2515
+ });
2516
+ }));
2517
+ };
2518
+ /**
2519
+ * Planner Cell
2520
+ */
2521
+
2522
+
2523
+ var PlannerCell = function PlannerCell(_ref3) {
2524
+ var lane = _ref3.lane,
2525
+ date = _ref3.date,
2526
+ onDrop = _ref3.onDrop;
2527
+
2528
+ var _useState4 = React.useState(false),
2529
+ dragOver = _useState4[0],
2530
+ setDragOver = _useState4[1];
2531
+
2532
+ function onDragOver(event) {
2533
+ if (!dragOver) setDragOver(true);
2534
+ event.stopPropagation();
2535
+ event.preventDefault();
2536
+ }
2537
+
2538
+ function onDragLeave(event) {
2539
+ setDragOver(false);
2540
+ event.stopPropagation();
2541
+ event.preventDefault();
2542
+ }
2543
+
2544
+ function drop(event) {
2545
+ event.stopPropagation();
2546
+ event.preventDefault();
2547
+ var id = event.dataTransfer.getData("text");
2548
+ if (onDrop) onDrop({
2549
+ id: id,
2550
+ lane: lane.id,
2551
+ date: date.moment.format("YYYY-MM-DD")
2552
+ });
2553
+ }
2554
+
2555
+ var isWekend = [0, 6].includes(date.moment.day());
2556
+ var weekend = isWekend ? "weekend" : "";
2557
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2558
+ className: "cell " + weekend,
2559
+ onDragOver: onDragOver,
2560
+ onDragLeave: onDragLeave,
2561
+ onDrop: drop
2562
+ }, "c");
2563
+ };
2564
+
2328
2565
  /**
2329
2566
  * Page Context
2330
2567
  */
@@ -5542,6 +5779,7 @@
5542
5779
  exports.Page = Page;
5543
5780
  exports.PageContext = PageContext;
5544
5781
  exports.PageProvider = PageProvider;
5782
+ exports.Planner = Planner;
5545
5783
  exports.Property = Property;
5546
5784
  exports.RadioButton = RadioButton;
5547
5785
  exports.ResetPasswordBox = ResetPasswordBox;