@elderbyte/ngx-starter 18.12.4 → 18.12.6

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.
Files changed (49) hide show
  1. package/esm2022/lib/common/data/data-context/indexed-entities.mjs +13 -2
  2. package/esm2022/lib/common/selection/selection-model.mjs +4 -3
  3. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +4 -2
  4. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.mjs +21 -0
  5. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.mjs +24 -0
  6. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-controller.mjs +43 -0
  7. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-form-controller.mjs +69 -0
  8. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-select-controller.mjs +117 -0
  9. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-shift-controller.mjs +44 -0
  10. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +87 -130
  11. package/esm2022/lib/components/time/elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive.mjs +41 -0
  12. package/esm2022/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.mjs +144 -0
  13. package/esm2022/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.mjs +93 -0
  14. package/esm2022/lib/components/time/elder-interval-picker/model/anchor-state.mjs +54 -0
  15. package/esm2022/lib/components/time/elder-interval-picker/model/interval-state.mjs +37 -0
  16. package/esm2022/lib/components/time/elder-interval-picker/model/smart-shift-state.mjs +10 -0
  17. package/esm2022/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.mjs +96 -0
  18. package/esm2022/lib/components/time/elder-interval-picker/util/interval-picker-util.mjs +194 -0
  19. package/esm2022/lib/components/time/elder-time.module.mjs +5 -5
  20. package/fesm2022/elderbyte-ngx-starter.mjs +789 -892
  21. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  22. package/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.d.ts +9 -0
  23. package/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.d.ts +7 -0
  24. package/lib/components/time/elder-interval-picker/controller/interval-controller.d.ts +35 -0
  25. package/lib/components/time/elder-interval-picker/controller/interval-form-controller.d.ts +12 -0
  26. package/lib/components/time/elder-interval-picker/controller/interval-select-controller.d.ts +22 -0
  27. package/lib/components/time/elder-interval-picker/controller/interval-shift-controller.d.ts +13 -0
  28. package/lib/components/time/elder-interval-picker/elder-interval-picker.component.d.ts +26 -34
  29. package/lib/components/time/elder-interval-picker/{elder-interval-picker-binding.directive.d.ts → interval-picker-binding/elder-interval-picker-binding.directive.d.ts} +3 -4
  30. package/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +37 -0
  31. package/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.d.ts +46 -0
  32. package/lib/components/time/elder-interval-picker/model/anchor-state.d.ts +20 -0
  33. package/lib/components/time/elder-interval-picker/model/interval-state.d.ts +16 -0
  34. package/lib/components/time/elder-interval-picker/model/smart-shift-state.d.ts +8 -0
  35. package/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.d.ts +30 -0
  36. package/lib/components/time/elder-interval-picker/util/interval-picker-util.d.ts +20 -0
  37. package/lib/components/time/elder-time.module.d.ts +4 -4
  38. package/package.json +1 -1
  39. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.mjs +0 -40
  40. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.mjs +0 -202
  41. package/esm2022/lib/components/time/elder-interval-picker/model/interval-picker-model-editor.mjs +0 -284
  42. package/esm2022/lib/components/time/elder-interval-picker/model/interval-picker-model.mjs +0 -445
  43. package/esm2022/lib/components/time/elder-interval-picker/model/plain-date-interval-message-renderer.mjs +0 -37
  44. package/esm2022/lib/components/time/elder-interval-picker/model/plain-temporal-duration-message-renderer.mjs +0 -25
  45. package/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +0 -55
  46. package/lib/components/time/elder-interval-picker/model/interval-picker-model-editor.d.ts +0 -77
  47. package/lib/components/time/elder-interval-picker/model/interval-picker-model.d.ts +0 -113
  48. package/lib/components/time/elder-interval-picker/model/plain-date-interval-message-renderer.d.ts +0 -7
  49. package/lib/components/time/elder-interval-picker/model/plain-temporal-duration-message-renderer.d.ts +0 -4
@@ -0,0 +1,44 @@
1
+ import { LoggerFactory } from '@elderbyte/ts-logger';
2
+ import IntervalState from '../model/interval-state';
3
+ export default class IntervalShiftController {
4
+ constructor(manager) {
5
+ this.manager = manager;
6
+ this.log = LoggerFactory.getLogger(this.constructor.name);
7
+ }
8
+ shiftDay(days) {
9
+ this.manager.setInterval(new IntervalState(this.manager.intervalValue.startDate.add({ days }), this.manager.intervalValue.endDate.add({ days }), this.manager.intervalValue.startTime, this.manager.intervalValue.endTime));
10
+ }
11
+ shiftWeek(weeks) {
12
+ this.manager.setInterval(new IntervalState(this.manager.intervalValue.startDate.add({ weeks }), this.manager.intervalValue.endDate.add({ weeks }), this.manager.intervalValue.startTime, this.manager.intervalValue.endTime));
13
+ }
14
+ shiftMonth(months) {
15
+ this.manager.setInterval(new IntervalState(this.manager.intervalValue.startDate.add({ months }), this.manager.intervalValue.endDate.add({ months }), this.manager.intervalValue.startTime, this.manager.intervalValue.endTime));
16
+ }
17
+ shiftYear(years) {
18
+ this.manager.setInterval(new IntervalState(this.manager.intervalValue.startDate.add({ years }), this.manager.intervalValue.endDate.add({ years }), this.manager.intervalValue.startTime, this.manager.intervalValue.endTime));
19
+ }
20
+ shiftMinute(minutes) {
21
+ const newInterval = new IntervalState(this.manager.intervalValue.startDate, this.manager.intervalValue.endDate, this.manager.intervalValue.startTime?.add({ minutes }), this.manager.intervalValue.endTime?.add({ minutes }));
22
+ this.manager.setInterval(newInterval);
23
+ }
24
+ shiftHour(hours) {
25
+ const newInterval = new IntervalState(this.manager.intervalValue.startDate, this.manager.intervalValue.endDate, this.manager.intervalValue.startTime?.add({ hours: hours }), this.manager.intervalValue.endTime?.add({ hours: hours }));
26
+ this.manager.setInterval(newInterval);
27
+ }
28
+ smartShift(direction = 1) {
29
+ const state = this.manager.smartShiftValue;
30
+ if (!state.duration) {
31
+ this.log.warn('Cannot smart shift without a duration!');
32
+ return;
33
+ }
34
+ const duration = state.duration;
35
+ const interval = this.manager.intervalValue;
36
+ let newStartDateTime = direction === 1
37
+ ? interval.startDateTime.add(duration)
38
+ : interval.startDateTime.subtract(duration);
39
+ let newEndDateTime = direction === 1 ? interval.endDateTime.add(duration) : interval.endDateTime.subtract(duration);
40
+ const newInterval = IntervalState.createFromDateTimes(newStartDateTime, newEndDateTime);
41
+ this.manager.setInterval(newInterval);
42
+ }
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtc2hpZnQtY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvY29udHJvbGxlci9pbnRlcnZhbC1zaGlmdC1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVwRCxPQUFPLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQTtBQUVuRCxNQUFNLENBQUMsT0FBTyxPQUFPLHVCQUF1QjtJQUcxQyxZQUFvQixPQUFtQztRQUFuQyxZQUFPLEdBQVAsT0FBTyxDQUE0QjtRQUZ0QyxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRVgsQ0FBQztJQUVwRCxRQUFRLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDdEIsSUFBSSxhQUFhLENBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FDbkMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN0QixJQUFJLGFBQWEsQ0FDZixJQUFJLENBQUMsT0FBTyxDQUFD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RCxPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUE7UUFFL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUE7UUFFM0MsSUFBSSxnQkFBZ0IsR0FDbEIsU0FBUyxLQUFLLENBQUM7WUFDYixDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMvQyxJQUFJLGNBQWMsR0FDaEIsU0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRWhHLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUV2RixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIgZnJvbSAnLi4vbWFuYWdlci9pbnRlcnZhbC1waWNrZXItc3RhdGUtbWFuYWdlcidcbmltcG9ydCBJbnRlcnZhbFN0YXRlIGZyb20gJy4uL21vZGVsL2ludGVydmFsLXN0YXRlJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnRlcnZhbFNoaWZ0Q29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFuYWdlcjogSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIpIHt9XG5cbiAgcHVibGljIHNoaWZ0RGF5KGRheXM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChcbiAgICAgIG5ldyBJbnRlcnZhbFN0YXRlKFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydERhdGUuYWRkKHsgZGF5cyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kRGF0ZS5hZGQoeyBkYXlzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydFRpbWUsXG4gICAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLmVuZFRpbWVcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwdWJsaWMgc2hpZnRXZWVrKHdlZWtzOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwoXG4gICAgICBuZXcgSW50ZXJ2YWxTdGF0ZShcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnREYXRlLmFkZCh7IHdlZWtzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmREYXRlLmFkZCh7IHdlZWtzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydFRpbWUsXG4gICAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLmVuZFRpbWVcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwdWJsaWMgc2hpZnRNb250aChtb250aHM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChcbiAgICAgIG5ldyBJbnRlcnZhbFN0YXRlKFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydERhdGUuYWRkKHsgbW9udGhzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmREYXRlLmFkZCh7IG1vbnRocyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnRUaW1lLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmRUaW1lXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgcHVibGljIHNoaWZ0WWVhcih5ZWFyczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKFxuICAgICAgbmV3IEludGVydmFsU3RhdGUoXG4gICAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLnN0YXJ0RGF0ZS5hZGQoeyB5ZWFycyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kRGF0ZS5hZGQoeyB5ZWFycyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnRUaW1lLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmRUaW1lXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgcHVibGljIHNoaWZ0TWludXRlKG1pbnV0ZXM6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5ld0ludGVydmFsID0gbmV3IEludGVydmFsU3RhdGUoXG4gICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydERhdGUsXG4gICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmREYXRlLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnRUaW1lPy5hZGQoeyBtaW51dGVzIH0pLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kVGltZT8uYWRkKHsgbWludXRlcyB9KVxuICAgIClcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwobmV3SW50ZXJ2YWwpXG4gIH1cblxuICBwdWJsaWMgc2hpZnRIb3VyKGhvdXJzOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdJbnRlcnZhbCA9IG5ldyBJbnRlcnZhbFN0YXRlKFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnREYXRlLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kRGF0ZSxcbiAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLnN0YXJ0VGltZT8uYWRkKHsgaG91cnM6IGhvdXJzIH0pLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kVGltZT8uYWRkKHsgaG91cnM6IGhvdXJzIH0pXG4gICAgKVxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChuZXdJbnRlcnZhbClcbiAgfVxuXG4gIHB1YmxpYyBzbWFydFNoaWZ0KGRpcmVjdGlvbiA9IDEpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMubWFuYWdlci5zbWFydFNoaWZ0VmFsdWVcbiAgICBpZiAoIXN0YXRlLmR1cmF0aW9uKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdDYW5ub3Qgc21hcnQgc2hpZnQgd2l0aG91dCBhIGR1cmF0aW9uIScpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkdXJhdGlvbiA9IHN0YXRlLmR1cmF0aW9uXG5cbiAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlXG5cbiAgICBsZXQgbmV3U3RhcnREYXRlVGltZSA9XG4gICAgICBkaXJlY3Rpb24gPT09IDFcbiAgICAgICAgPyBpbnRlcnZhbC5zdGFydERhdGVUaW1lLmFkZChkdXJhdGlvbilcbiAgICAgICAgOiBpbnRlcnZhbC5zdGFydERhdGVUaW1lLnN1YnRyYWN0KGR1cmF0aW9uKVxuICAgIGxldCBuZXdFbmREYXRlVGltZSA9XG4gICAgICBkaXJlY3Rpb24gPT09IDEgPyBpbnRlcnZhbC5lbmREYXRlVGltZS5hZGQoZHVyYXRpb24pIDogaW50ZXJ2YWwuZW5kRGF0ZVRpbWUuc3VidHJhY3QoZHVyYXRpb24pXG5cbiAgICBjb25zdCBuZXdJbnRlcnZhbCA9IEludGVydmFsU3RhdGUuY3JlYXRlRnJvbURhdGVUaW1lcyhuZXdTdGFydERhdGVUaW1lLCBuZXdFbmREYXRlVGltZSlcblxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChuZXdJbnRlcnZhbClcbiAgfVxufVxuIl19