@itfin/components 1.3.11 → 1.3.14

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.11",
3
+ "version": "1.3.14",
4
4
  "author": "Vitalii Savchuk <esvit666@gmail.com>",
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="itf-editable-button">
3
3
  <slot></slot>
4
- <itf-button secondary icon small class="itf-editable-button__button" @click="$emit('click')">
4
+ <itf-button v-if="canEdit" secondary icon small class="itf-editable-button__button" @click="$emit('click')">
5
5
  <itf-icon name="pen" />
6
6
  </itf-button>
7
7
  </div>
@@ -35,5 +35,6 @@ export default @Component({
35
35
  }
36
36
  })
37
37
  class EditButton extends Vue {
38
+ @Prop({ type: Boolean, default: true }) canEdit;
38
39
  }
39
40
  </script>
@@ -200,6 +200,15 @@ class itfEditor extends Vue {
200
200
  minHeight: this.readonly ? 10 : 100,
201
201
  placeholder: this.$t('workflows.clickToEdit'),
202
202
 
203
+ onReady: () => {
204
+ if (!this.readonly) {
205
+ return;
206
+ }
207
+ const links = document.querySelectorAll('.codex-editor a');
208
+ for (const link of links) {
209
+ link.setAttribute('target', '_blank');
210
+ }
211
+ },
203
212
  onChange: async (api, event) => {
204
213
  if (!this.editor.save || this.readonly) {
205
214
  return;
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="512" height="512">
2
+ <path d="M5.972,22.285a1,1,0,0,1-.515-1.857C9,18.3,9,13.73,9,11a3,3,0,0,1,6,0,1,1,0,0,1-2,0,1,1,0,0,0-2,0c0,2.947,0,8.434-4.514,11.143A1,1,0,0,1,5.972,22.285Zm4.963,1.421c2.282-2.3,3.615-5.534,3.961-9.621A1,1,0,0,0,13.985,13a.983.983,0,0,0-1.081.911c-.311,3.657-1.419,6.4-3.388,8.381a1,1,0,0,0,1.419,1.41Zm5.2-.186a17.793,17.793,0,0,0,1.508-3.181,1,1,0,0,0-1.881-.678,15.854,15.854,0,0,1-1.338,2.821,1,1,0,0,0,1.711,1.038ZM18.5,17.191A31.459,31.459,0,0,0,19,11,7,7,0,0,0,6.787,6.333,1,1,0,1,0,8.276,7.667,5,5,0,0,1,17,11a29.686,29.686,0,0,1-.462,5.809,1,1,0,0,0,.79,1.172.979.979,0,0,0,.193.019A1,1,0,0,0,18.5,17.191ZM7,11a5,5,0,0,1,.069-.833A1,1,0,1,0,5.1,9.833,6.971,6.971,0,0,0,5,11c0,4.645-1.346,7-4,7a1,1,0,0,0,0,2C4.869,20,7,16.8,7,11ZM20.7,23.414A29.76,29.76,0,0,0,23,11a10.865,10.865,0,0,0-1.1-4.794,1,1,0,1,0-1.8.875A8.9,8.9,0,0,1,21,11a27.91,27.91,0,0,1-2.119,11.586,1,1,0,0,0,.5,1.324.984.984,0,0,0,.413.09A1,1,0,0,0,20.7,23.414ZM3,14V11a9.01,9.01,0,0,1,9-9,8.911,8.911,0,0,1,5.4,1.8,1,1,0,0,0,1.2-1.6A10.9,10.9,0,0,0,12,0,11.013,11.013,0,0,0,1,11v3a1,1,0,0,0,2,0Z"/>
3
+ </svg>
@@ -6,7 +6,7 @@
6
6
  :data-column="index"
7
7
  @mouseover="columnHighlight(index, 'enter')"
8
8
  @mouseout="columnHighlight(index, 'leave')"
9
- :key="index" class="itf-board-column itf-board-column__title p-2">
9
+ :key="index" :class="`itf-board-column itf-board-column__title p-2 ${columnEdit ? 'itf-board-column__move' : ''}`">
10
10
  <div accept-group="board-columns"
11
11
  class="itf-board-header-space"
12
12
  @enter="columnHighlight(index, 'enter', 'drop')"
@@ -16,6 +16,7 @@
16
16
  </div>
17
17
  <itf-edit-button
18
18
  accept-group="board-columns"
19
+ :can-edit="columnEdit"
19
20
  @enter="columnHighlight(index, 'enter')"
20
21
  @leave="columnHighlight(index, 'leave')"
21
22
  @click="$emit('update:columnSettings', column)"
@@ -42,7 +43,7 @@
42
43
  <div class="itf-board-header-dropzone"></div>
43
44
  </div>
44
45
  </div>
45
- <div class="align-items-end d-flex pb-1">
46
+ <div v-if="columnEdit" class="align-items-end d-flex pb-1">
46
47
  <slot name="add-column">
47
48
  <itf-button icon small @click="$emit('add-сolumn')">
48
49
  <itf-icon name="plus" />
@@ -98,6 +99,7 @@ class Board extends Vue {
98
99
  @Prop({ type: Function, default: (item, value) => { item.Status = value; } }) updateFunc;
99
100
  @Prop({ type: String, default: 'Name' }) columnNameKey;
100
101
  @Prop(Boolean) columnSorting;
102
+ @Prop({ type: Boolean, default: true }) columnEdit;
101
103
 
102
104
  beforeDestroy() {
103
105
  if (this.columnSorting) {
@@ -129,7 +129,6 @@
129
129
  border-radius: 0 0 var(--bs-border-radius) var(--bs-border-radius);
130
130
 
131
131
  &__title {
132
- cursor: move;
133
132
  border-radius: var(--bs-border-radius) var(--bs-border-radius) 0 0;
134
133
 
135
134
  .itf-board-column__header {
@@ -142,6 +141,10 @@
142
141
  }
143
142
  }
144
143
 
144
+ &__move {
145
+ cursor: move;
146
+ }
147
+
145
148
  &.over {
146
149
  background-color: var(--itf-board-column-hover-color);
147
150
  }
@@ -173,7 +176,7 @@
173
176
  border-bottom: 1px solid var(--itf-board-card-border-color);
174
177
  position: sticky;
175
178
  top: 0;
176
- z-index: 101;
179
+ z-index: 100;
177
180
  background-color: var(--bs-light);
178
181
  }
179
182
 
@@ -1,26 +1,17 @@
1
1
  <template>
2
2
 
3
3
  <div class="itf-slider">
4
- <button @click="$refs.slider.next()">nxet</button>
5
4
  <flicking ref="slider" :options="{ align: 'prev' }">
6
- <div class="panel">1</div>
7
- <div class="panel">2</div>
8
- <div class="panel">3</div>
5
+ <slot />
9
6
  </flicking>
10
7
  </div>
11
8
 
12
9
  </template>
13
10
  <style lang="scss" scoped>
14
11
  @import '~@egjs/vue-flicking/dist/flicking.css';
15
-
16
- .itf-slider {
17
- .panel {
18
- width: 100%;
19
- }
20
- }
21
12
  </style>
22
13
  <script>
23
- import { Component, Prop, Provide, Inject, Vue } from 'vue-property-decorator';
14
+ import { Component, Prop, Vue } from 'vue-property-decorator';
24
15
  import { Flicking } from '@egjs/vue-flicking';
25
16
 
26
17
  export default
@@ -36,5 +27,37 @@ class itfSlider extends Vue {
36
27
  mounted() {
37
28
  this.$refs.slider.disableInput();
38
29
  }
30
+
31
+ async prev() {
32
+ try {
33
+ if (this.$refs.slider.index === 0) {
34
+ await this.$refs.slider.moveTo(this.$refs.slider.panels.length - 1);
35
+ return;
36
+ }
37
+ await this.$refs.slider.prev();
38
+ } catch (e) {
39
+ // ignore FlickingError: Animation is already playing.
40
+ }
41
+ }
42
+
43
+ async next() {
44
+ try {
45
+ if (this.$refs.slider.index + 1 > this.$refs.slider.panels.length - 1) {
46
+ await this.$refs.slider.moveTo(0);
47
+ return;
48
+ }
49
+ await this.$refs.slider.next();
50
+ } catch (e) {
51
+ // ignore FlickingError: Animation is already playing.
52
+ }
53
+ }
54
+
55
+ async moveTo(index) {
56
+ try {
57
+ await this.$refs.slider.moveTo(index);
58
+ } catch (e) {
59
+ // ignore FlickingError: Animation is already playing.
60
+ }
61
+ }
39
62
  }
40
63
  </script>
@@ -0,0 +1,22 @@
1
+ <template>
2
+
3
+ <div class="panel"><slot /></div>
4
+
5
+ </template>
6
+ <style lang="scss" scoped>
7
+ .panel {
8
+ width: 100%;
9
+ }
10
+ </style>
11
+ <script>
12
+ import { Component, Vue } from 'vue-property-decorator';
13
+
14
+ export default
15
+ @Component({
16
+ name: 'itfSliderPanel',
17
+ components: {
18
+ }
19
+ })
20
+ class itfSliderPanel extends Vue {
21
+ }
22
+ </script>
@@ -1,10 +1,14 @@
1
1
  import { storiesOf } from '@storybook/vue';
2
2
  import itfSlider from './Slider.vue';
3
+ import itfSliderPanel from './SliderPanel.vue';
4
+ import itfDropdown from '../dropdown/Dropdown.vue';
3
5
 
4
6
  storiesOf('Common', module)
5
7
  .add('Slider', () => ({
6
8
  components: {
7
- itfSlider
9
+ itfSlider,
10
+ itfSliderPanel,
11
+ itfDropdown
8
12
  },
9
13
  data() {
10
14
  return {
@@ -30,20 +34,38 @@ storiesOf('Common', module)
30
34
  <h2>Usage</h2>
31
35
 
32
36
  <pre>
33
-
34
- &lt;itf-datepicker>&lt;/itf-datepicker>
35
-
36
- &lt;button @click="$showSuccess('Success')">Show success&lt;/button>
37
- &lt;button @click="$showError('Error')">Show error&lt;/button>
38
- &lt;button @click="$try(() => { throw new Error('Invalid function'); })">Try function with error&lt;/button>
39
37
  </pre>
40
38
 
41
39
  <h2>Example</h2>
42
40
 
43
- <itf-slider>
44
- <div>1</div>
45
- <div>2</div>
46
- <div>3</div>
41
+ <button @click="$refs.slider.prev()">prev</button>
42
+ <button @click="$refs.slider.next()">next</button>
43
+ <button @click="$refs.slider.moveTo(0)">move to 0</button>
44
+
45
+
46
+ <itf-slider ref="slider">
47
+ <itf-slider-panel>1</itf-slider-panel>
48
+ <itf-slider-panel>2</itf-slider-panel>
49
+ <itf-slider-panel>3</itf-slider-panel>
47
50
  </itf-slider>
51
+
52
+ <itf-dropdown autoclose="outside" :button-options="{ secondary: true }">
53
+ <template #button>
54
+ +
55
+ </template>
56
+ <itf-slider ref="slider2">
57
+ <itf-slider-panel>
58
+ <div>
59
+ <div><a class="dropdown-item" href="#">Action</a></div>
60
+ </div>
61
+ </itf-slider-panel>
62
+ <itf-slider-panel>2</itf-slider-panel>
63
+ <itf-slider-panel>3</itf-slider-panel>
64
+ </itf-slider>
65
+
66
+ <button @click="$refs.slider2.prev()">prev</button>
67
+ <button @click="$refs.slider2.next()">next</button>
68
+ <button @click="$refs.slider2.moveTo(0)">move to 0</button>
69
+ </itf-dropdown>
48
70
  </div>`,
49
71
  }));