@plusscommunities/pluss-core-web 1.2.7 → 1.2.11

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.cjs.js CHANGED
@@ -691,6 +691,14 @@ var isVideo = function isVideo(url) {
691
691
  return ['mov', 'mp4'].includes(extension);
692
692
  };
693
693
 
694
+ var getFirstName = function getFirstName(string) {
695
+ if (___default['default'].isEmpty(string)) {
696
+ return '';
697
+ }
698
+
699
+ return string.split(' ')[0];
700
+ };
701
+
694
702
  var isEmail = function isEmail(email) {
695
703
  if (___default['default'].isEmpty(email)) return false;
696
704
  var atpos = email.indexOf('@');
@@ -767,6 +775,14 @@ var getSiteNameFromRoles = function getSiteNameFromRoles(site, roles) {
767
775
  }));
768
776
  };
769
777
 
778
+ var getSiteSettingFromState = function getSiteSettingFromState(state, key, defaultValue) {
779
+ if (state && state.auth && state.auth.siteSettings && !___default['default'].isUndefined(state.auth.siteSettings[key])) {
780
+ return state.auth.siteSettings[key];
781
+ }
782
+
783
+ return defaultValue || null;
784
+ };
785
+
770
786
  var readJSONFromStorage = function readJSONFromStorage(storage, key, fallback) {
771
787
  var value = storage.getItem(key);
772
788
 
@@ -839,12 +855,6 @@ var setLocalStorage = function setLocalStorage(key, value, isJson) {
839
855
  // }
840
856
  // return string.charAt(0).toUpperCase() + string.slice(1);
841
857
  // };
842
- // export const getFirstName = (string) => {
843
- // if (_.isEmpty(string)) {
844
- // return '';
845
- // }
846
- // return string.split(' ')[0];
847
- // };
848
858
  // export const get300 = (url) => {
849
859
  // if (!url) {
850
860
  // return url;
@@ -1566,6 +1576,7 @@ var index$3 = /*#__PURE__*/Object.freeze({
1566
1576
  getFileName: getFileName,
1567
1577
  getThumb300: getThumb300,
1568
1578
  isVideo: isVideo,
1579
+ getFirstName: getFirstName,
1569
1580
  isEmail: isEmail,
1570
1581
  isUrl: isUrl,
1571
1582
  randomString: randomString,
@@ -1573,6 +1584,7 @@ var index$3 = /*#__PURE__*/Object.freeze({
1573
1584
  onlyAlphanumeric: onlyAlphanumeric,
1574
1585
  getSiteName: getSiteName,
1575
1586
  getSiteNameFromRoles: getSiteNameFromRoles,
1587
+ getSiteSettingFromState: getSiteSettingFromState,
1576
1588
  readJSONFromStorage: readJSONFromStorage,
1577
1589
  setLocalStorage: setLocalStorage,
1578
1590
  getTimepickerTime: getTimepickerTime,
@@ -4342,10 +4354,10 @@ var Text = /*#__PURE__*/function (_Component) {
4342
4354
  }, {
4343
4355
  key: "render",
4344
4356
  value: function render() {
4345
- return /*#__PURE__*/React__default['default'].createElement("p", {
4357
+ return /*#__PURE__*/React__default['default'].createElement("p", _extends__default['default']({}, this.props, {
4346
4358
  className: "text-".concat(this.props.type).concat(this.getClassName()),
4347
4359
  style: this.props.style
4348
- }, this.props.children);
4360
+ }), this.props.children);
4349
4361
  }
4350
4362
  }]);
4351
4363
 
@@ -4431,8 +4443,8 @@ var Comment = /*#__PURE__*/function (_Component) {
4431
4443
  }
4432
4444
 
4433
4445
  _createClass__default['default'](Comment, [{
4434
- key: "render",
4435
- value: function render() {
4446
+ key: "renderComment",
4447
+ value: function renderComment() {
4436
4448
  var comment = this.props.comment;
4437
4449
  return /*#__PURE__*/React__default['default'].createElement("div", {
4438
4450
  key: comment.Id,
@@ -4451,6 +4463,11 @@ var Comment = /*#__PURE__*/function (_Component) {
4451
4463
  className: "comment_time"
4452
4464
  }, moment__default['default'].utc(comment.Timestamp).local().format('D MMM YYYY • h:mma'))));
4453
4465
  }
4466
+ }, {
4467
+ key: "render",
4468
+ value: function render() {
4469
+ return /*#__PURE__*/React__default['default'].createElement("div", null, this.renderComment(), this.props.bottomContent);
4470
+ }
4454
4471
  }]);
4455
4472
 
4456
4473
  return Comment;
@@ -4501,6 +4518,58 @@ var CommentSection = /*#__PURE__*/function (_Component) {
4501
4518
  }, _callee);
4502
4519
  })));
4503
4520
 
4521
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getComments", function () {
4522
+ if (!_this.props.onlyParents) {
4523
+ return _this.props.comments;
4524
+ }
4525
+
4526
+ return ___default['default'].filter(_this.props.comments, function (c) {
4527
+ return !c.ParentId;
4528
+ });
4529
+ });
4530
+
4531
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "renderReplyText", function (c) {
4532
+ if (!_this.props.onOpenThread) {
4533
+ return null;
4534
+ }
4535
+
4536
+ var threadComments = ___default['default'].filter(_this.props.comments, function (innerC) {
4537
+ return innerC.ParentId === c.Id;
4538
+ });
4539
+
4540
+ if (___default['default'].isEmpty(threadComments)) {
4541
+ return /*#__PURE__*/React__default['default'].createElement("div", {
4542
+ className: "comment_reply"
4543
+ }, /*#__PURE__*/React__default['default'].createElement(Text, {
4544
+ className: "comment_reply_button",
4545
+ type: "button",
4546
+ onClick: function onClick() {
4547
+ _this.props.onOpenThread(c);
4548
+ }
4549
+ }, "Reply to ".concat(getFirstName(c.User ? c.User.displayName : 'comment'))));
4550
+ }
4551
+
4552
+ var profilePics = ___default['default'].take(___default['default'].uniqBy(threadComments, function (c) {
4553
+ return c.UserId;
4554
+ }), 3);
4555
+
4556
+ return /*#__PURE__*/React__default['default'].createElement("div", {
4557
+ className: "comment_reply comment_reply-hasReplies"
4558
+ }, profilePics.map(function (c) {
4559
+ return /*#__PURE__*/React__default['default'].createElement(ProfilePic, {
4560
+ className: "comment_reply_profilePic",
4561
+ size: 20,
4562
+ image: c.User.profilePic
4563
+ });
4564
+ }), /*#__PURE__*/React__default['default'].createElement(Text, {
4565
+ className: "comment_reply_button",
4566
+ type: "button",
4567
+ onClick: function onClick() {
4568
+ _this.props.onOpenThread(c);
4569
+ }
4570
+ }, "".concat(threadComments.length, " repl").concat(getPluralOptions(threadComments.length, 'y', 'ies'))));
4571
+ });
4572
+
4504
4573
  _this.state = {
4505
4574
  commentInput: ''
4506
4575
  };
@@ -4517,10 +4586,11 @@ var CommentSection = /*#__PURE__*/function (_Component) {
4517
4586
  className: "marginBottom-16"
4518
4587
  }, "Comments"), /*#__PURE__*/React__default['default'].createElement("div", {
4519
4588
  className: "commentSection"
4520
- }, this.props.comments.map(function (c) {
4589
+ }, this.getComments().map(function (c) {
4521
4590
  return /*#__PURE__*/React__default['default'].createElement(Comment, {
4522
4591
  key: c.Id,
4523
- comment: c
4592
+ comment: c,
4593
+ bottomContent: _this2.renderReplyText(c)
4524
4594
  });
4525
4595
  })), /*#__PURE__*/React__default['default'].createElement("div", {
4526
4596
  className: "commentReply"
@@ -9014,7 +9084,7 @@ var AudienceSelector = /*#__PURE__*/function (_Component) {
9014
9084
  Category = _this$state2.Category,
9015
9085
  Tag = _this$state2.Tag,
9016
9086
  Type = _this$state2.Type;
9017
- if (AudienceType === 'Custom') return AudienceTagList;
9087
+ if (AudienceType === 'Custom') return AudienceTagList || [];
9018
9088
  if (AudienceType === 'Category') return Category;
9019
9089
  if (AudienceType === 'UserTags') return Tag;
9020
9090
  return Type;
@@ -9074,7 +9144,8 @@ var AudienceSelector = /*#__PURE__*/function (_Component) {
9074
9144
  Type: '',
9075
9145
  Category: '',
9076
9146
  includeList: [],
9077
- excludeList: []
9147
+ excludeList: [],
9148
+ AudienceTagList: []
9078
9149
  });
9079
9150
  setTimeout(this.onChangeSelection, 50);
9080
9151
  }
@@ -10187,8 +10258,6 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
10187
10258
  });
10188
10259
 
10189
10260
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleColumn", function (key) {
10190
- var source = _this.props.source;
10191
-
10192
10261
  var columns = ___default['default'].cloneDeep(_this.state.columns);
10193
10262
 
10194
10263
  var column = columns.find(function (c) {
@@ -10204,25 +10273,132 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
10204
10273
  var selectedHeaders = columns.filter(function (c) {
10205
10274
  return c.key && c.selected;
10206
10275
  });
10207
- var selectedheaderKeys = selectedHeaders.map(function (h) {
10208
- return h.key;
10276
+
10277
+ _this.setState({
10278
+ columns: columns,
10279
+ selectedHeaders: selectedHeaders
10209
10280
  });
10210
- var selectedSource = source.map(function (i) {
10211
- return ___default['default'].pick(i, selectedheaderKeys);
10281
+ }
10282
+ });
10283
+
10284
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleStartDateFilter", function () {
10285
+ var filterDateStartVisible = _this.state.filterDateStartVisible;
10286
+
10287
+ if (filterDateStartVisible) {
10288
+ setTimeout(function () {
10289
+ return _this.setState({
10290
+ filterDateStartVisible: false
10291
+ });
10292
+ }, 200);
10293
+ } else {
10294
+ _this.setState({
10295
+ filterDateStartVisible: true
10296
+ });
10297
+ }
10298
+ });
10299
+
10300
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleEndDateFilter", function () {
10301
+ var filterDateEndVisible = _this.state.filterDateEndVisible;
10302
+
10303
+ if (filterDateEndVisible) {
10304
+ setTimeout(function () {
10305
+ return _this.setState({
10306
+ filterDateEndVisible: false
10307
+ });
10308
+ }, 200);
10309
+ } else {
10310
+ _this.setState({
10311
+ filterDateEndVisible: true
10212
10312
  });
10313
+ }
10314
+ });
10315
+
10316
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onDateFilterStartChanged", function (date) {
10317
+ var filterDateEnd = _this.state.filterDateEnd;
10318
+ var start = moment__default['default'](date);
10213
10319
 
10320
+ if (start.isSameOrBefore(filterDateEnd)) {
10214
10321
  _this.setState({
10215
- columns: columns,
10216
- selectedHeaders: selectedHeaders,
10217
- selectedSource: selectedSource
10322
+ filterDateStart: start.startOf('day'),
10323
+ filterDateStartVisible: false
10324
+ });
10325
+ }
10326
+ });
10327
+
10328
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onDateFilterEndChanged", function (date) {
10329
+ var filterDateStart = _this.state.filterDateStart;
10330
+ var end = moment__default['default'](date);
10331
+
10332
+ if (end.isSameOrAfter(filterDateStart)) {
10333
+ _this.setState({
10334
+ filterDateEnd: end.endOf('day'),
10335
+ filterDateEndVisible: false
10218
10336
  });
10219
10337
  }
10220
10338
  });
10221
10339
 
10340
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getSelectedSource", function () {
10341
+ var source = _this.props.source;
10342
+ var selectedHeaders = _this.state.selectedHeaders;
10343
+ var result = source; // apply timestamp filter
10344
+
10345
+ if (_this.props.timestampFilter) {
10346
+ var _this$state = _this.state,
10347
+ filterDateStart = _this$state.filterDateStart,
10348
+ filterDateEnd = _this$state.filterDateEnd;
10349
+ var filterKey = _this.props.timestampFilter.filterKey;
10350
+ var minDate = filterDateStart.valueOf();
10351
+ var maxDate = filterDateEnd.valueOf();
10352
+ result = ___default['default'].filter(source, function (item) {
10353
+ return item[filterKey] >= minDate && item[filterKey] <= maxDate;
10354
+ });
10355
+ } // map result to columns
10356
+
10357
+
10358
+ var selectedheaderKeys = selectedHeaders.map(function (h) {
10359
+ return h.key;
10360
+ });
10361
+ return result.map(function (i) {
10362
+ return ___default['default'].pick(i, selectedheaderKeys);
10363
+ });
10364
+ });
10365
+
10366
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "renderTimestampFilter", function () {
10367
+ if (!_this.props.timestampFilter) {
10368
+ return null;
10369
+ }
10370
+
10371
+ return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(GenericInput, {
10372
+ id: "dateStart",
10373
+ label: "Start Date",
10374
+ alwaysShowLabel: true,
10375
+ placeholder: 'Select start date',
10376
+ value: _this.state.filterDateStart.format('DD/MM/YYYY'),
10377
+ onClick: _this.onToggleStartDateFilter,
10378
+ readOnly: true
10379
+ }), _this.state.filterDateStartVisible ? /*#__PURE__*/React__default['default'].createElement(DatePicker, {
10380
+ hideTop: true,
10381
+ selectedDate: _this.state.filterDateStart,
10382
+ selectDate: _this.onDateFilterStartChanged
10383
+ }) : null, /*#__PURE__*/React__default['default'].createElement(GenericInput, {
10384
+ id: "dateEnd",
10385
+ label: "End Date",
10386
+ alwaysShowLabel: true,
10387
+ placeholder: 'Select end date',
10388
+ value: _this.state.filterDateEnd.format('DD/MM/YYYY'),
10389
+ onClick: _this.onToggleEndDateFilter,
10390
+ readOnly: true
10391
+ }), _this.state.filterDateEndVisible ? /*#__PURE__*/React__default['default'].createElement(DatePicker, {
10392
+ hideTop: true,
10393
+ selectedDate: _this.state.filterDateEnd,
10394
+ selectDate: _this.onDateFilterEndChanged
10395
+ }) : null);
10396
+ });
10397
+
10222
10398
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "renderContent", function () {
10223
- var _this$state = _this.state,
10224
- saving = _this$state.saving,
10225
- columns = _this$state.columns;
10399
+ var _this$state2 = _this.state,
10400
+ saving = _this$state2.saving,
10401
+ columns = _this$state2.columns;
10226
10402
 
10227
10403
  if (saving) {
10228
10404
  return /*#__PURE__*/React__default['default'].createElement("div", {
@@ -10257,27 +10433,35 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
10257
10433
  }));
10258
10434
  });
10259
10435
 
10260
- _this.state = {
10436
+ var state = {
10261
10437
  columns: props.columns,
10438
+ selectedHeaders: props.columns.filter(function (c) {
10439
+ return c.key && c.selected;
10440
+ }),
10262
10441
  selectedSource: [],
10263
10442
  saving: false
10264
10443
  };
10444
+
10445
+ if (props.timestampFilter) {
10446
+ state.filterDateStart = props.timestampFilter.startDate;
10447
+ state.filterDateEnd = props.timestampFilter.endDate;
10448
+ }
10449
+
10450
+ _this.state = state;
10265
10451
  return _this;
10266
10452
  }
10267
10453
 
10268
10454
  _createClass__default['default'](ExportCsvPopup, [{
10269
10455
  key: "render",
10270
10456
  value: function render() {
10271
- var _this$state2 = this.state,
10272
- selectedHeaders = _this$state2.selectedHeaders,
10273
- selectedSource = _this$state2.selectedSource;
10457
+ var selectedHeaders = this.state.selectedHeaders;
10274
10458
  var filename = this.props.filename;
10275
10459
  var buttons = [{
10276
10460
  type: 'primary',
10277
10461
  isActive: this.canSave(),
10278
10462
  text: /*#__PURE__*/React__default['default'].createElement(reactCsv.CSVLink, {
10279
10463
  headers: selectedHeaders,
10280
- data: selectedSource,
10464
+ data: this.getSelectedSource(),
10281
10465
  style: {
10282
10466
  textDecoration: 'none',
10283
10467
  color: '#fff'
@@ -10293,7 +10477,6 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
10293
10477
  }];
10294
10478
  return /*#__PURE__*/React__default['default'].createElement(Popup, {
10295
10479
  title: "Confirm Export",
10296
- subtitle: "Select which columns to include in the export",
10297
10480
  boxClasses: "flex flex-column",
10298
10481
  innerClasses: "flex flex-column fillSpace flex-1",
10299
10482
  minWidth: 500,
@@ -10303,7 +10486,9 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
10303
10486
  hasPadding: true,
10304
10487
  onClose: this.onClose,
10305
10488
  buttons: buttons
10306
- }, this.renderContent());
10489
+ }, this.renderTimestampFilter(), /*#__PURE__*/React__default['default'].createElement(Text, {
10490
+ type: "bodyLarge"
10491
+ }, "Select which columns to include in the export"), this.renderContent());
10307
10492
  }
10308
10493
  }]);
10309
10494