@itfin/components 1.2.85 → 1.2.87
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 +4 -3
- package/src/components/customize/PropertiesEditMenu.vue +53 -0
- package/src/components/customize/PropertiesItemsMenu.vue +33 -0
- package/src/components/customize/PropertiesList.vue +179 -0
- package/src/components/customize/PropertiesPopupMenu.vue +46 -0
- package/src/components/customize/PropertyInlineEdit.vue +46 -0
- package/src/components/customize/index.stories.js +65 -0
- package/src/components/dropdown/Dropdown.vue +8 -19
- package/src/components/icon/components/type_checkbox.vue +2 -0
- package/src/components/icon/components/type_date.vue +2 -0
- package/src/components/icon/components/type_email.vue +2 -0
- package/src/components/icon/components/type_file.vue +2 -0
- package/src/components/icon/components/type_formula.vue +2 -0
- package/src/components/icon/components/type_id.vue +2 -0
- package/src/components/icon/components/type_multiselect.vue +2 -0
- package/src/components/icon/components/type_number.vue +2 -0
- package/src/components/icon/components/type_person.vue +2 -0
- package/src/components/icon/components/type_phone.vue +2 -0
- package/src/components/icon/components/type_relation.vue +2 -0
- package/src/components/icon/components/type_select.vue +2 -0
- package/src/components/icon/components/type_status.vue +2 -0
- package/src/components/icon/components/type_text.vue +2 -0
- package/src/components/icon/components/type_time.vue +2 -0
- package/src/components/icon/components/type_url.vue +2 -0
- package/src/components/icon/components/type_user.vue +2 -0
- package/src/components/icon/icons/type_checkbox.svg +1 -0
- package/src/components/icon/icons/type_date.svg +1 -0
- package/src/components/icon/icons/type_email.svg +1 -0
- package/src/components/icon/icons/type_file.svg +1 -0
- package/src/components/icon/icons/type_formula.svg +1 -0
- package/src/components/icon/icons/type_id.svg +1 -0
- package/src/components/icon/icons/type_multiselect.svg +1 -0
- package/src/components/icon/icons/type_number.svg +1 -0
- package/src/components/icon/icons/type_person.svg +1 -0
- package/src/components/icon/icons/type_phone.svg +1 -0
- package/src/components/icon/icons/type_relation.svg +1 -0
- package/src/components/icon/icons/type_select.svg +1 -0
- package/src/components/icon/icons/type_status.svg +1 -0
- package/src/components/icon/icons/type_text.svg +1 -0
- package/src/components/icon/icons/type_time.svg +1 -0
- package/src/components/icon/icons/type_url.svg +1 -0
- package/src/components/icon/icons/type_user.svg +1 -0
- package/src/components/icon/icons.js +295 -278
- package/src/components/modal/DeleteConfirmModal.vue +78 -0
- package/src/components/modal/ItemEditor.vue +217 -0
- package/src/components/modal/Modal.vue +15 -13
- package/src/components/modal/index.stories.js +15 -10
- package/src/components/popover/ConfirmPopover.vue +1 -1
- package/src/components/popover/DeleteConfirmPopover.vue +39 -0
- package/src/components/popover/IconPopover.vue +136 -0
- package/src/components/popover/SelectPopover.vue +127 -0
- package/src/components/popover/index.stories.js +26 -10
- package/src/components/sortable/AutoScroll.vue +142 -0
- package/src/components/sortable/Sortable.scss +93 -0
- package/src/components/sortable/Sortable.vue +399 -0
- package/src/components/sortable/sortable-item-list/axis.js +9 -0
- package/src/components/sortable/sortable-item-list/mocked-sortable-item-list.js +415 -0
- package/src/components/sortable/sortable-item-list/original-sortable-item-list.js +105 -0
- package/src/components/sortable/utils/event-outside.js +30 -0
- package/src/components/sortable/utils/get-relative-position.js +41 -0
- package/src/components/sortable/utils/sort-item-list.js +13 -0
- package/src/components/sortable/utils/stop-event.js +16 -0
- package/src/components/sortable/utils/vibrate.js +18 -0
- package/src/components/text-field/MoneyField.vue +112 -0
- package/src/components/text-field/index.stories.js +53 -0
- package/src/directives/tooltip.js +1 -1
- package/src/locales/en.js +28 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="itf-money-field">
|
|
3
|
+
<div :style="`--itf-money-field-padding-left: ${selectedCurrencySymbol.length * 0.6 + 1}rem`">
|
|
4
|
+
<span class="itf-money-field__prepend">{{ selectedCurrencySymbol }}</span>
|
|
5
|
+
<itf-text-field
|
|
6
|
+
:disabled="disabled"
|
|
7
|
+
:value="value"
|
|
8
|
+
type="number"
|
|
9
|
+
step="1"
|
|
10
|
+
@input="setValue"
|
|
11
|
+
/>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div v-if="currencySelect" class="itf-money-field__currency">
|
|
15
|
+
<span>{{ selectedCurrencyCode }}</span>
|
|
16
|
+
<select v-if="!disabled && !currencyDisabled" :value="currencyId" @input="onCurrencyChanged">
|
|
17
|
+
<option v-for="currency in currencies" :key="currency.Id" :value="currency.Id" :selected="currencyId === currency.Id">
|
|
18
|
+
{{ currency.Symbol }}, {{ currency.Code }} - {{ currency.Title }}
|
|
19
|
+
</option>
|
|
20
|
+
</select>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</template>
|
|
24
|
+
<style lang="scss">
|
|
25
|
+
.itf-money-field {
|
|
26
|
+
position: relative;
|
|
27
|
+
|
|
28
|
+
.itf-text-field input {
|
|
29
|
+
padding-left: var(--itf-money-field-padding-left, 1.5rem);
|
|
30
|
+
padding-right: 3rem;
|
|
31
|
+
|
|
32
|
+
&.is-invalid, &.is-valid {
|
|
33
|
+
padding-right: 4rem;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&__prepend {
|
|
38
|
+
z-index: 6;
|
|
39
|
+
position: absolute;
|
|
40
|
+
left: .75rem;
|
|
41
|
+
top: .5rem;
|
|
42
|
+
}
|
|
43
|
+
&__currency {
|
|
44
|
+
z-index: 6;
|
|
45
|
+
position: absolute;
|
|
46
|
+
right: .75rem;
|
|
47
|
+
top: .5rem;
|
|
48
|
+
.is-invalid &, .is-valid & {
|
|
49
|
+
right: 1.75rem;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
select {
|
|
53
|
+
position: absolute;
|
|
54
|
+
top: 0;
|
|
55
|
+
right: 0;
|
|
56
|
+
opacity: 0;
|
|
57
|
+
left: 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
</style>
|
|
62
|
+
<script>
|
|
63
|
+
import { Component, Emit, Model, Prop, Vue } from 'vue-property-decorator';
|
|
64
|
+
import itfTextField from './TextField';
|
|
65
|
+
import itfSelect from '../select/Select';
|
|
66
|
+
import itfLabel from '../form/Label';
|
|
67
|
+
|
|
68
|
+
export default @Component({
|
|
69
|
+
name: 'itfMoneyField',
|
|
70
|
+
components: {
|
|
71
|
+
itfLabel,
|
|
72
|
+
itfSelect,
|
|
73
|
+
itfTextField
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
class itfMoneyField extends Vue {
|
|
77
|
+
@Model('input', { default: '' }) value;
|
|
78
|
+
@Prop({ type: Object, default: null }) currency;
|
|
79
|
+
@Prop({ type: Boolean, default: false }) disabled;
|
|
80
|
+
@Prop({ type: Boolean, default: true }) currencySelect;
|
|
81
|
+
@Prop({ type: Array, default: () => ([]) }) currencies;
|
|
82
|
+
@Prop({ type: Boolean, default: false }) currencyDisabled;
|
|
83
|
+
|
|
84
|
+
onCurrencyChanged(e) {
|
|
85
|
+
const currency = this.currencies.find((c) => c.Id === parseInt(e.target.value));
|
|
86
|
+
this.$emit('update:currency', currency)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
get selectedCurrencySymbol() {
|
|
90
|
+
return this.selectedCurrency ? this.selectedCurrency.Symbol : '#';
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
get selectedCurrencyCode() {
|
|
94
|
+
return this.selectedCurrency ? this.selectedCurrency.Code : '###';
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
get currencyId() {
|
|
98
|
+
return this.selectedCurrency && this.selectedCurrency.Id;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
get selectedCurrency() {
|
|
102
|
+
if (!this.currency || !this.currencies) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
return this.currencies.find(({ Id }) => this.currency.Id === Id);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@Emit('input')
|
|
109
|
+
setValue (val) {
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
</script>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { storiesOf } from '@storybook/vue';
|
|
2
|
+
import itfMoneyField from './MoneyField.vue';
|
|
3
|
+
import itfForm from '../form/Form.vue';
|
|
4
|
+
import itfButton from '../button/Button.vue';
|
|
5
|
+
import itfIcon from '../icon/Icon.vue';
|
|
6
|
+
import itfLabel from '../form/Label.vue';
|
|
7
|
+
import itfApp from '../app/App.vue';
|
|
8
|
+
|
|
9
|
+
storiesOf('Common', module)
|
|
10
|
+
.add('Fields', () => ({
|
|
11
|
+
components: {
|
|
12
|
+
itfApp,
|
|
13
|
+
itfIcon,
|
|
14
|
+
itfForm,
|
|
15
|
+
itfButton,
|
|
16
|
+
itfLabel,
|
|
17
|
+
itfMoneyField
|
|
18
|
+
},
|
|
19
|
+
data() {
|
|
20
|
+
return {
|
|
21
|
+
value: 100,
|
|
22
|
+
currencies: [
|
|
23
|
+
{ Id: 1, Symbol: '$', Code: 'USD', Title: 'Dollar' },
|
|
24
|
+
{ Id: 2, Symbol: 'ER', Code: 'EUR', Title: 'Euroooo' },
|
|
25
|
+
{ Id: 4, Symbol: 'ERO', Code: 'EUR', Title: 'Euroooo' },
|
|
26
|
+
{ Id: 3, Symbol: ".د.ب", Code: 'AED', Title: 'Emirati Dirham' },
|
|
27
|
+
],
|
|
28
|
+
currency: null
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
methods: {
|
|
32
|
+
},
|
|
33
|
+
template: `<div>
|
|
34
|
+
<p>You need wrap whole application with this tag</p>
|
|
35
|
+
|
|
36
|
+
<h2>Usage</h2>
|
|
37
|
+
|
|
38
|
+
<pre>
|
|
39
|
+
|
|
40
|
+
</pre>
|
|
41
|
+
|
|
42
|
+
<h2>Example</h2>
|
|
43
|
+
|
|
44
|
+
<itf-app ref="app">
|
|
45
|
+
|
|
46
|
+
{{value}}
|
|
47
|
+
{{currency}}
|
|
48
|
+
|
|
49
|
+
<itf-money-field v-model="value" :currencies="currencies" :currency.sync="currency" />
|
|
50
|
+
|
|
51
|
+
</itf-app>
|
|
52
|
+
</div>`,
|
|
53
|
+
}));
|
package/src/locales/en.js
CHANGED
|
@@ -56,4 +56,32 @@ module.exports = {
|
|
|
56
56
|
addMore: 'Add more',
|
|
57
57
|
close: 'Close',
|
|
58
58
|
wholeYear: 'Whole year',
|
|
59
|
+
|
|
60
|
+
modal: {
|
|
61
|
+
delete: 'Delete',
|
|
62
|
+
cancel: 'Cancel',
|
|
63
|
+
save: 'Save',
|
|
64
|
+
itemHasBeenSuccessfullySaved: 'Changes have been successfully saved',
|
|
65
|
+
itemHasBeenSuccessfullyDeleted: 'Successfully deleted',
|
|
66
|
+
networkProblem: 'Network problem. Please check your network connection. The problem can also be observed during use VPN.',
|
|
67
|
+
pleaseFixTheErrorsBelowToProceed: 'Please fix the errors below to proceed.',
|
|
68
|
+
},
|
|
69
|
+
popover: {
|
|
70
|
+
noKeepIt: 'No, keep it',
|
|
71
|
+
yesDelete: 'Yes, delete',
|
|
72
|
+
areYouSureToDeleteThis: 'Are you sure want to delete this?',
|
|
73
|
+
confirmDelete: 'Confirm delete',
|
|
74
|
+
},
|
|
75
|
+
customize: {
|
|
76
|
+
editProperty: 'Edit property',
|
|
77
|
+
hideProperty: 'Hide property',
|
|
78
|
+
alwaysShow: 'Always show',
|
|
79
|
+
hideWhenEmpty: 'Hide when empty',
|
|
80
|
+
alwaysHide: 'Always hide',
|
|
81
|
+
duplicateProperty: 'Duplicate property',
|
|
82
|
+
deleteProperty: 'Delete property',
|
|
83
|
+
areYouSureYouWantToDeleteThisField: 'Are you sure you want to delete this property?',
|
|
84
|
+
customizePage: 'Customize page',
|
|
85
|
+
type: 'Type',
|
|
86
|
+
}
|
|
59
87
|
};
|