@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 +1 -1
- package/src/components/editable/EditButton.vue +2 -1
- package/src/components/editor/Editor.vue +9 -0
- package/src/components/icon/icons/fi_fingerprint.svg +3 -0
- package/src/components/kanban/Board.vue +4 -2
- package/src/components/kanban/styles.scss +5 -2
- package/src/components/slider/Slider.vue +34 -11
- package/src/components/slider/SliderPanel.vue +22 -0
- package/src/components/slider/index.stories.js +33 -11
package/package.json
CHANGED
|
@@ -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:
|
|
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
|
-
<
|
|
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,
|
|
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
|
-
<itf-datepicker></itf-datepicker>
|
|
35
|
-
|
|
36
|
-
<button @click="$showSuccess('Success')">Show success</button>
|
|
37
|
-
<button @click="$showError('Error')">Show error</button>
|
|
38
|
-
<button @click="$try(() => { throw new Error('Invalid function'); })">Try function with error</button>
|
|
39
37
|
</pre>
|
|
40
38
|
|
|
41
39
|
<h2>Example</h2>
|
|
42
40
|
|
|
43
|
-
<
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
}));
|