@itfin/components 1.3.72 → 1.3.74

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itfin/components",
3
- "version": "1.3.72",
3
+ "version": "1.3.74",
4
4
  "author": "Vitalii Savchuk <esvit666@gmail.com>",
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -6,16 +6,7 @@
6
6
  &.-range-from-:not(.-range-to-),
7
7
  &.-range-to-:not(.-range-from-) {
8
8
  position: relative;
9
- border: 0 none !important;
10
9
  color: #fff;
11
-
12
- &.-selected-, &.-selected-.-current- {
13
- background: var(--adp-cell-background-color-in-range);
14
-
15
- &:hover {
16
- background: var(--adp-cell-background-color-in-range-hover);
17
- }
18
- }
19
10
  }
20
11
 
21
12
  &.-range-from-:not(.-range-to-) {
@@ -28,7 +19,6 @@
28
19
  bottom: 0;
29
20
  z-index: -1;
30
21
  border-radius: var(--adp-cell-border-radius) 0 0 var(--adp-cell-border-radius);
31
- background: var(--adp-cell-background-color-selected);
32
22
  }
33
23
 
34
24
  &:before {
@@ -46,7 +36,6 @@
46
36
  bottom: 0;
47
37
  z-index: -1;
48
38
  border-radius: 0 var(--adp-cell-border-radius) var(--adp-cell-border-radius) 0;
49
- background: var(--adp-cell-background-color-selected);
50
39
  }
51
40
 
52
41
  &:before {
@@ -155,7 +144,7 @@
155
144
  --adp-day-name-color: #666;
156
145
 
157
146
  --adp-day-cell-width: 1fr;
158
- --adp-day-cell-height: 32px;
147
+ --adp-day-cell-height: 34px;
159
148
  --adp-month-cell-height: 42px;
160
149
  --adp-year-cell-height: 56px;
161
150
 
@@ -168,6 +157,7 @@
168
157
  --adp-cell-background-color-in-range: #{mix($primary, $body-bg, 20%)};
169
158
  --adp-cell-background-color-in-range-hover: #{mix($primary, $body-bg, 40%)};
170
159
  --adp-cell-border-color-in-range: var(--adp-cell-background-color-selected);
160
+ --adp-cell-compare-color: #8649e1;
171
161
 
172
162
  --adp-btn-height: 32px;
173
163
  --adp-btn-color: var(--adp-accent-color);
@@ -199,9 +189,9 @@
199
189
 
200
190
  &.-selected- {
201
191
  color: #fff;
202
- background: var(--adp-background-color-selected-other-month);
192
+ background-color: var(--adp-background-color-selected-other-month);
203
193
  &.-focus- {
204
- background: var(--adp-background-color-selected-other-month-focused);
194
+ background-color: var(--adp-background-color-selected-other-month-focused);
205
195
  }
206
196
  }
207
197
 
@@ -443,6 +433,8 @@
443
433
  align-items: center;
444
434
  justify-content: center;
445
435
  z-index: 1; // ?
436
+ margin-bottom: 1px;
437
+ margin-top: 1px;
446
438
 
447
439
  &.-focus- {
448
440
  background: var(--adp-background-color-hover);
@@ -450,6 +442,18 @@
450
442
 
451
443
  &.-current- {
452
444
  color: var(--adp-color-current-date);
445
+ position: relative;
446
+
447
+ &:after {
448
+ border-radius: 9px;
449
+ content: '';
450
+ top: 2px;
451
+ left: 2px;
452
+ right: 2px;
453
+ bottom: 2px;
454
+ border: 1px solid var(--adp-color-secondary);
455
+ position: absolute;
456
+ }
453
457
 
454
458
  &.-focus- {
455
459
  color: var(--adp-color);
@@ -501,32 +505,69 @@
501
505
  }
502
506
 
503
507
  &.-range-from- {
504
- border: 1px solid var(--adp-cell-border-color-in-range);
505
- background-color: var(--adp-cell-background-color-in-range);
508
+ background-color: var(--adp-cell-background-color-selected);
506
509
  border-radius: var(--adp-cell-border-radius) 0 0 var(--adp-cell-border-radius);
507
510
  }
508
511
  &.-range-to- {
509
- border: 1px solid var(--adp-cell-border-color-in-range);
510
- background-color: var(--adp-cell-background-color-in-range);
512
+ background-color: var(--adp-cell-background-color-selected);
511
513
  border-radius: 0 var(--adp-cell-border-radius) var(--adp-cell-border-radius) 0;
512
514
  }
513
515
 
514
516
  &.-range-to-.-range-from- {
515
517
  border-radius: var(--adp-cell-border-radius);
516
518
  }
519
+ &.-day-.-compare-range-from- {
520
+ &, &.-other-month- {
521
+ border: none;
522
+ background-color: var(--adp-cell-compare-color);//var(--adp-cell-background-color-in-range);
523
+ border-radius: var(--adp-cell-border-radius) 0 0 var(--adp-cell-border-radius);
524
+ color: #fff !important;
525
+ &:hover, &.-focus- {
526
+ background-color: var(--adp-cell-compare-color);
527
+ }
528
+ }
529
+ }
530
+ &.-day-.-compare-range-to- {
531
+ &, &.-other-month- {
532
+ border: none;
533
+ background-color: var(--adp-cell-compare-color);
534
+ border-radius: 0 var(--adp-cell-border-radius) var(--adp-cell-border-radius) 0;
535
+ color: #fff !important;
536
+ &:hover, &.-focus- {
537
+ background-color: var(--adp-cell-compare-color);
538
+ }
539
+ }
540
+ }
541
+ &.-in-compare-range- {
542
+ --space-size: 10px;
543
+ --dash-size: 17px;
544
+ background-image: repeating-linear-gradient(0deg, var(--adp-cell-compare-color), var(--adp-cell-compare-color) var(--space-size), transparent var(--space-size), transparent var(--dash-size), var(--adp-cell-compare-color) var(--dash-size)), repeating-linear-gradient(90deg, var(--adp-cell-compare-color), var(--adp-cell-compare-color) var(--space-size), transparent var(--space-size), transparent var(--dash-size), var(--adp-cell-compare-color) var(--dash-size)), repeating-linear-gradient(180deg, var(--adp-cell-compare-color), var(--adp-cell-compare-color) var(--space-size), transparent var(--space-size), transparent var(--dash-size), var(--adp-cell-compare-color) var(--dash-size)), repeating-linear-gradient(270deg, var(--adp-cell-compare-color), var(--adp-cell-compare-color) var(--space-size), transparent var(--space-size), transparent var(--dash-size), var(--adp-cell-compare-color) var(--dash-size));
545
+ background-size: 2px 100%, 100% 2px, 2px 100% , 100% 2px;
546
+ background-position: -2px 0, 0px 0, 40px 0, 0 100%;
547
+ background-repeat: no-repeat;
548
+ border-radius: 0;
549
+
550
+ &:hover, &.-focus- {
551
+ //background: var(--adp-cell-background-color-in-range-hover);
552
+ }
553
+ }
554
+
555
+ &.-compare-range-to-.-compare-range-from- {
556
+ border-radius: var(--adp-cell-border-radius);
557
+ }
558
+ &.-compare-range-to-.-in-range-, &.-compare-range-from-.-in-range-,
559
+ &.-compare-range-to-.-range-from-, &.-compare-range-to-.-range-to-,
560
+ &.-compare-range-from-.-range-from-, &.-compare-range-from-.-range-to- {
561
+ border-radius: 0;
562
+ }
517
563
 
518
564
  &.-selected- {
519
565
  color: #fff;
520
- border: none;
521
- background: var(--adp-cell-background-color-selected);
522
-
523
- &.-current- {
524
- color: #fff;
525
- background: var(--adp-cell-background-color-selected);
526
- }
566
+ border: 0;
567
+ background-color: var(--adp-cell-background-color-selected);
527
568
 
528
569
  &.-focus- {
529
- background: var(--adp-cell-background-color-selected-hover);
570
+ background-color: var(--adp-cell-background-color-selected-hover);
530
571
  }
531
572
  }
532
573
  }
@@ -816,7 +857,7 @@ $rangeThumbSize: 12px;
816
857
  &:after {
817
858
  content: '';
818
859
  background: var(--adp-background-color-hover);
819
- border-radius: var(--adp-border-radius);
860
+ border-radius: 6px;
820
861
  position: absolute;
821
862
  left: -2px;
822
863
  top: -3px;
@@ -997,7 +1038,8 @@ $rangeThumbSize: 12px;
997
1038
  .form-control input.form-control {
998
1039
  border: 0 none;
999
1040
  padding: 0;
1000
- max-width: 100px;
1041
+ max-width: 84px;
1042
+ box-shadow: none;
1001
1043
 
1002
1044
  &.placeholder-visible {
1003
1045
  max-width: none;
@@ -72,7 +72,7 @@ class itfDatePickerInline extends Vue {
72
72
  { default: localeUk },
73
73
  { default: localeDe }
74
74
  ] = await Promise.all([
75
- import('babel-loader!air-datepicker/air-datepicker.js'),
75
+ import('babel-loader!../../../packages/air-datepicker/dist/air-datepicker'),
76
76
  import('babel-loader!air-datepicker/locale/en'),
77
77
  import('babel-loader!air-datepicker/locale/uk'),
78
78
  import('babel-loader!air-datepicker/locale/de')
@@ -48,6 +48,8 @@
48
48
  <div style="display: none">
49
49
  <div ref="dropdown" class="itf-daterange-picker__dropdown">
50
50
  <itf-date-range-picker-inline
51
+ :compare="compare"
52
+ :range="range"
51
53
  :value="value"
52
54
  :start-view="startView"
53
55
  :only-calendar="onlyCalendar"
@@ -111,6 +113,8 @@ class itfDateRangePicker extends Vue {
111
113
  @Prop({ type: [String, Date], default: '' }) minDate;
112
114
  @Prop({ type: [String, Date], default: ''}) maxDate;
113
115
  @Prop(Boolean) disabled;
116
+ @Prop(Boolean) compare;
117
+ @Prop({ type: Array }) range; // for compare mode
114
118
 
115
119
  focused = false;
116
120
 
@@ -233,7 +237,7 @@ class itfDateRangePicker extends Vue {
233
237
  this.focused = true;
234
238
  }
235
239
 
236
- onBlur(e, index) {
240
+ onBlur() {
237
241
  this.focused = false;
238
242
  if (this.valueAsLuxon && this.valueAsLuxon[0] && this.valueAsLuxon[1] && this.valueAsLuxon[0] > this.valueAsLuxon[1]) {
239
243
  if ((this.minDateLuxon && (this.valueAsLuxon[0] < this.minDateLuxon || this.valueAsLuxon[1] < this.minDateLuxon)) ||
@@ -53,6 +53,8 @@ class itfDatePickerInline extends Vue {
53
53
  ];
54
54
  }
55
55
  }) daysList;
56
+ @Prop(Boolean) compare;
57
+ @Prop({ type: Array }) range; // for compare mode
56
58
 
57
59
  calendar = null;
58
60
 
@@ -60,6 +62,10 @@ class itfDatePickerInline extends Vue {
60
62
  this.createCalendar();
61
63
  }
62
64
 
65
+ compareMode(value) {
66
+ return this.calendar.compareMode(value);
67
+ }
68
+
63
69
  @Watch('minDate')
64
70
  @Watch('maxDate')
65
71
  @Watch('minView')
@@ -73,7 +79,7 @@ class itfDatePickerInline extends Vue {
73
79
  { default: localeUk },
74
80
  { default: localeDe }
75
81
  ] = await Promise.all([
76
- import('babel-loader!air-datepicker/air-datepicker.js'),
82
+ import('babel-loader!../../../packages/air-datepicker/dist/air-datepicker'),
77
83
  import('babel-loader!air-datepicker/locale/en'),
78
84
  import('babel-loader!air-datepicker/locale/uk'),
79
85
  import('babel-loader!air-datepicker/locale/de')
@@ -84,7 +90,7 @@ class itfDatePickerInline extends Vue {
84
90
  uk: localeUk,
85
91
  de: localeDe,
86
92
  };
87
- this.calendar = new AirDatepicker(this.$refs.calendar, {
93
+ const opts = {
88
94
  locale: locales[this.$i18n.locale] || locales.en,
89
95
  firstDay: 1,
90
96
  altFieldDateFormat: this.valueFormat,
@@ -93,6 +99,7 @@ class itfDatePickerInline extends Vue {
93
99
  view: this.minView,
94
100
  minView: this.minView,
95
101
  range: true,
102
+ compareRange: true,
96
103
  dynamicRange: true,
97
104
  toggleSelected: false,
98
105
  selectedDates: this.valueAsLuxon
@@ -118,10 +125,19 @@ class itfDatePickerInline extends Vue {
118
125
  classes: this.customDays[strDate].class || false,
119
126
  };
120
127
  },
121
- });
128
+ };
129
+ if (this.compare) {
130
+ opts.compareRange = true;
131
+ }
132
+
133
+ this.calendar = new AirDatepicker(this.$refs.calendar, opts);
122
134
  if (this.valueAsLuxon) {
123
135
  this.calendar.setViewDate(this.valueAsLuxon[0].toJSDate());
124
136
  }
137
+ if (this.compare) {
138
+ this.calendar.compareMode(true);
139
+ }
140
+ this.onRangeChange();
125
141
  }
126
142
 
127
143
  beforeDestroy() {
@@ -219,6 +235,17 @@ class itfDatePickerInline extends Vue {
219
235
  this.calendar.selectDate([lxDate1.toJSDate(), lxDate2.toJSDate()], { silent: true });
220
236
  }
221
237
 
238
+ @Watch('range')
239
+ onRangeChange() {
240
+ if (!this.calendar) {
241
+ return;
242
+ }
243
+ this.calendar.selectCompareRange(this.range ? [
244
+ DateTime.fromFormat(this.range[0], this.valueFormat).toJSDate(),
245
+ DateTime.fromFormat(this.range[1], this.valueFormat).toJSDate(),
246
+ ] : []);
247
+ }
248
+
222
249
  @Watch('value')
223
250
  onValueChanged() {
224
251
  if (!this.valueAsLuxon || !this.calendar) {
@@ -25,6 +25,7 @@ storiesOf('Common', module)
25
25
  '2021-10-21': { text: '🎉', class: 'test' }
26
26
  },
27
27
  dateRange: null,
28
+ compareDateRange: null,
28
29
  month: '09-2021'
29
30
  }
30
31
  },
@@ -72,7 +73,9 @@ storiesOf('Common', module)
72
73
 
73
74
  <itf-date-range-picker value-format="yyyy-MM-dd" min-date="2023-03-01" placeholder="loooooooooooooooong placeholder" v-model="dateRange"></itf-date-range-picker>
74
75
 
75
- <itf-date-range-picker-inline value-format="yyyy-MM-dd" v-model="dateRange"></itf-date-range-picker-inline>
76
+ <itf-date-range-picker-inline value-format="yyyy-MM-dd" v-model="dateRange" :range="compareDateRange"></itf-date-range-picker-inline>
77
+
78
+ <itf-date-range-picker value-format="yyyy-MM-dd" min-date="2023-03-01" v-model="compareDateRange" :range="dateRange" compare></itf-date-range-picker>
76
79
 
77
80
  <h2>Month</h2>
78
81
 
@@ -1,8 +1,4 @@
1
1
  import { storiesOf } from '@storybook/vue';
2
- import itfRule from './Rule.vue';
3
- import itfRuleGroup from './RuleGroup.vue';
4
- import itfFilterBadge from './FilterBadge.vue';
5
- import itfFilterControl from './FilterControl.vue';
6
2
 
7
3
  storiesOf('Common', module)
8
4
  .add('Filter', () => ({
@@ -10,11 +10,11 @@
10
10
  <div class="b-panel__expand_text" v-text="title"></div>
11
11
  </a>
12
12
  </div>
13
- <div v-show="!collapsed" class="b-panel-header">
13
+ <div v-show="!collapsed" class="b-panel-header p-3">
14
14
  <slot name="header">
15
15
  <div>
16
16
  <slot name="title">
17
- <div class="b-panel__title ps-2" v-text="title"></div>
17
+ <div class="b-panel__title ps-1 fw-bold h5" v-text="title"></div>
18
18
  </slot>
19
19
  </div>
20
20
  <div class="d-flex gap-1">
@@ -130,7 +130,7 @@ import itfMoneyField from '../text-field/MoneyField.vue';
130
130
  import itfTextarea from '../text-field/Textarea.vue';
131
131
  import itfHoursField from '../text-field/HoursField.vue';
132
132
  import itfSelect from '../select/Select.vue';
133
- import itfTableBody from '@itfin/components/src/components/table/TableBody.vue';
133
+ import itfTableBody from './TableBody.vue';
134
134
  // import 'vue-virtual-scroller/dist/vue-virtual-scroller.css';
135
135
 
136
136
  export default @Component({