@itfin/components 1.2.93 → 1.2.94

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.2.93",
3
+ "version": "1.2.94",
4
4
  "author": "Vitalii Savchuk <esvit666@gmail.com>",
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -24,24 +24,23 @@
24
24
  "@popperjs/core": "^2.11.8",
25
25
  "@shopify/draggable": "^1.0.0-beta.8",
26
26
  "@vue/cli-service": "^5.0.1",
27
- "@vue/composition-api": "^1.7.1",
28
27
  "air-datepicker": "^3.3.5",
29
- "bootstrap": "^5.2.3",
30
- "core-js": "^3.7.0",
28
+ "bootstrap": "^5.3.0",
29
+ "core-js": "^3.31.1",
31
30
  "debug": "^4.2.0",
32
31
  "intersection-observer": "^0.12.2",
33
32
  "lodash": "^4.17.20",
34
33
  "luxon": "^3.3.0",
35
- "pdfjs-dist": "^2.10.377",
34
+ "pdfjs-dist": "^3.8.162",
36
35
  "tippy.js": "^6.3.2",
37
- "vue": "^2.6.12",
38
36
  "vue-imask": "^6.6.3",
39
37
  "vue-property-decorator": "^9.1.2",
40
38
  "vue-swatches": "^2.1.1",
41
39
  "vue-virtual-scroller": "^1.1.2"
42
40
  },
43
41
  "devDependencies": {
44
- "@babel/eslint-parser": "^7.19.1",
42
+ "vue": "^2.6.12",
43
+ "@babel/eslint-parser": "^7.22.9",
45
44
  "@babel/plugin-proposal-numeric-separator": "^7.18.6",
46
45
  "@babel/plugin-syntax-numeric-separator": "^7.10.4",
47
46
  "@storybook/addon-docs": "=6.3.8",
@@ -53,10 +52,10 @@
53
52
  "@vue/eslint-config-airbnb": "^7.0.0",
54
53
  "@vue/test-utils": "^1.1.1",
55
54
  "babel-eslint": "^10.1.0",
56
- "eslint": "^8.30.0",
57
- "eslint-plugin-import": "^2.22.1",
55
+ "eslint": "^8.45.0",
56
+ "eslint-plugin-import": "^2.27.5",
58
57
  "eslint-plugin-prettier": "^4.2.1",
59
- "eslint-plugin-vue": "^9.9.0",
58
+ "eslint-plugin-vue": "^9.15.1",
60
59
  "fibers": "^5.0.0",
61
60
  "marked": "^4.2.5",
62
61
  "sass": "^1.29.0",
@@ -3,6 +3,7 @@
3
3
 
4
4
  // Include remainder of required Bootstrap stylesheets
5
5
  @import "~bootstrap/scss/variables.scss";
6
+ $enable-dark-mode: false;
6
7
  @import "~bootstrap/scss/mixins.scss";
7
8
  @import "~bootstrap/scss/maps.scss";
8
9
  @import "~bootstrap/scss/utilities.scss";
@@ -31,4 +32,4 @@ $utilities: map-merge(
31
32
  ),
32
33
  )
33
34
  );
34
- //@import "~bootstrap/scss/utilities/api"; // створює дублікати класів, які вже є в bootstrap
35
+ //@import "~bootstrap/scss/utilities/api"; // створює дублікати класів, які вже є в bootstrap
@@ -50,11 +50,11 @@
50
50
 
51
51
  kbd {
52
52
  background-color: rgba(0, 0, 0, .15) !important;
53
- color: #000 !important;
53
+ color: var(--bs-body-color) !important;
54
54
  font-size: .75rem !important;
55
55
 
56
56
  [data-theme="dark"] &, .btn-primary & {
57
57
  background-color: rgba(255, 255, 255, .25) !important;
58
- color: #fff !important;
58
+ color: var(--bs-primary-color) !important
59
59
  }
60
60
  }
@@ -0,0 +1,52 @@
1
+ <template>
2
+ <itf-select
3
+ ref="input"
4
+ class="itf-inline-edit flex-grow-1"
5
+ role="button"
6
+ :placeholder="focused ? 'Search for an option...' : 'Empty'"
7
+ :tabindex="1"
8
+ :disabled="!editable"
9
+ :options="field && field.Options"
10
+ :reduce="option => option.Name"
11
+ :get-option-label="option => option.Name"
12
+ @search:focus="$emit('focus')"
13
+ @search:blur="$emit('blur')">
14
+ <template #option="{ option }">
15
+ <div>{{ option.Name }}</div>
16
+ </template>
17
+ </itf-select>
18
+ </template>
19
+ <style lang="scss">
20
+ .itf-inline-edit.itf-select .form-control {
21
+ border: 0 none;
22
+ margin: 0;
23
+ outline: 0;
24
+ resize: none;
25
+ min-height: auto;
26
+ padding: 0.1rem 0;
27
+ font-family: var(--bs-body-font-family);
28
+ font-size: var(--bs-body-font-size);
29
+ box-shadow: none !important;
30
+ background: transparent !important;
31
+ }
32
+ </style>
33
+ <script>
34
+ import {Vue, Component, Model, Watch, Prop} from 'vue-property-decorator';
35
+ import itfTextField from '../../text-field/TextField.vue';
36
+ import itfSelect from '../../select/Select.vue';
37
+
38
+ export default @Component({
39
+ name: 'itfCustomizeInlineSelect',
40
+ components: {
41
+ itfTextField,
42
+ itfSelect
43
+ }
44
+ })
45
+
46
+ class itfCustomizeInlineSelect extends Vue {
47
+ @Model('input') value;
48
+ @Prop(Boolean) focused;
49
+ @Prop(Boolean) editable;
50
+ @Prop() field;
51
+ }
52
+ </script>
@@ -1,17 +1,16 @@
1
1
  <template>
2
- <div>
3
- <component
4
- v-if="component"
5
- :is="component"
6
- :value="value"
7
- :field="field"
8
- :focused="focused"
9
- :editable="editable"
10
- @input="$emit('input', $event)"
11
- @focus="$emit('focus')"
12
- @blur="$emit('blur')"
13
- />
14
- </div>
2
+ <component
3
+ v-if="component"
4
+ class="h-100 w-100 d-flex align-items-center"
5
+ :is="component"
6
+ :value="value"
7
+ :field="field"
8
+ :focused="focused"
9
+ :editable="editable"
10
+ @input="$emit('input', $event)"
11
+ @focus="onFocus(); $emit('focus')"
12
+ @blur="onBlur(); $emit('blur')"
13
+ />
15
14
  </template>
16
15
  <script>
17
16
  import { Vue, Component, Model, Prop } from 'vue-property-decorator';
@@ -33,6 +32,16 @@ class itfPropertyInlineEdit extends Vue {
33
32
  @Prop(Boolean) focused;
34
33
  @Prop(Boolean) editable;
35
34
 
35
+ isFocused = false;
36
+
37
+ onFocus() {
38
+ this.isFocused = true;
39
+ }
40
+
41
+ onBlur() {
42
+ this.isFocused = false;
43
+ }
44
+
36
45
  get component() {
37
46
  if (!this.field) {
38
47
  return null;
@@ -1,9 +1,11 @@
1
1
  import InlineText from './Inline/Text';
2
2
  import InlineDate from './Inline/Date';
3
3
  import InlineMultiselect from './Inline/Multiselect.vue';
4
+ import InlineSelect from './Inline/Select.vue';
4
5
 
5
6
  export const INLINE_TYPES = [
6
7
  { Type: 'text', Name: 'Text', Icon: 'type_text', Component: InlineText },
7
8
  { Type: 'date', Name: 'Date', Icon: 'type_date', Component: InlineDate },
8
9
  { Type: 'multiselect', Name: 'Multiselect', Icon: 'type_multiselect', Component: InlineMultiselect },
10
+ { Type: 'select', Name: 'Select', Icon: 'type_select', Component: InlineSelect },
9
11
  ];
@@ -626,7 +626,8 @@ export default {
626
626
  default(dropdownList, component, { width, top, left }) {
627
627
  dropdownList.style.top = top
628
628
  dropdownList.style.left = left
629
- dropdownList.style.width = width
629
+ dropdownList.style.minWidth = width
630
+ dropdownList.style.width = 'max-content';
630
631
  },
631
632
  },
632
633
  /**
@@ -4,7 +4,15 @@
4
4
  <itf-table-group
5
5
  :columns="columns"
6
6
  :rows="rows"
7
- />
7
+ :add-new-rows="addNewRows"
8
+ >
9
+ <template v-for="(_, name) in $slots" #[name]="slotData">
10
+ <slot :name="name" v-bind="slotData || {}" />
11
+ </template>
12
+ <template v-for="(_, name) in $scopedSlots" #[name]="slotData">
13
+ <slot :name="name" v-bind="slotData || {}" />
14
+ </template>
15
+ </itf-table-group>
8
16
  </div>
9
17
 
10
18
  </template>
@@ -35,5 +43,6 @@ export default @Component({
35
43
  class itfTable2 extends Vue {
36
44
  @Prop({ required: true, type: Array }) columns;
37
45
  @Prop({ required: true, type: Array }) rows;
46
+ @Prop(Boolean) addNewRows;
38
47
  }
39
48
  </script>
@@ -38,11 +38,13 @@
38
38
  </div>
39
39
  </div>
40
40
  <div accept-group="items" class="hbox table-item-inner">
41
- <div v-for="(column, n) in columns" :data-column="n" :style="`width: ${column.width}px`">
42
- <div
43
- class="table-view-item-value tw-flex tw-relative tw-h-full tw-border-b tw-border-r tw-border-gray tw-bg-white dark:tw-bg-white-invert dark:tw-border-gray-invert hover:tw-bg-light dark:hover:tw-bg-gray-invert tw-items-stretch">
44
- {{ item.Name }}
45
- </div>
41
+ <div v-for="(column, n) in columns" :data-column="n" :style="`width: ${column.width}px`" class="table-view-item-value d-flex position-relative h-100 align-items-stretch px-2">
42
+ <slot :name="`column.${column.name}`" :item="item" :column="column">
43
+ <template v-if="editTypes[column.Type]">
44
+ <property-inline-edit :value="item[column.field]" :field="column" editable focused />
45
+ </template>
46
+ <div v-else v-text="item.Name" />
47
+ </slot>
46
48
  </div>
47
49
 
48
50
  <div class="table-view-item-value extra"></div>
@@ -79,6 +81,7 @@
79
81
  height: 100%;
80
82
  display: flex;
81
83
  position: relative;
84
+ line-height: 35px;
82
85
 
83
86
  &:hover {
84
87
  background-color: rgb(250 251 252 / 1);
@@ -143,23 +146,44 @@
143
146
  .vue-recycle-scroller {
144
147
  position: relative;
145
148
  }
149
+ .resize-observer {
150
+ position: absolute;
151
+ top: 0;
152
+ left: 0;
153
+ z-index: -1;
154
+ width: 100%;
155
+ height: 100%;
156
+ border: none;
157
+ background-color: transparent;
158
+ pointer-events: none;
159
+ display: block;
160
+ overflow: hidden;
161
+ opacity: 0;
162
+ }
146
163
  </style>
147
-
148
164
  <script>
149
165
  import { Vue, Component, Prop } from 'vue-property-decorator';
150
166
  import { RecycleScroller } from 'vue-virtual-scroller'
167
+ import PropertyInlineEdit from '../customize/PropertyInlineEdit.vue';
168
+ import { INLINE_TYPES } from '@/components/customize/constants';
151
169
 
152
170
  export default @Component({
153
171
  name: 'itfTableBody',
154
172
  components: {
155
- RecycleScroller
173
+ RecycleScroller,
174
+ PropertyInlineEdit
156
175
  }
157
176
  })
158
177
  class itfTableBody extends Vue {
159
178
  @Prop() columns;
160
179
  @Prop() rows;
161
180
 
181
+ editTypes = {};
182
+
162
183
  mounted() {
184
+ for (const { Type } of INLINE_TYPES) {
185
+ this.editTypes[Type] = true;
186
+ }
163
187
  }
164
188
  }
165
189
  </script>
@@ -2,11 +2,10 @@
2
2
 
3
3
  <div class="itf-table-group table-small-row">
4
4
  <!-- Тут показується лінія при драг н дропі -->
5
- <div accept-group="tablegroups" class="preline over">
5
+ <div accept-group="tablegroups" class="preline">
6
6
  <div class="line"></div>
7
7
  </div>
8
8
 
9
-
10
9
  <div data-test="table-group-wrapper" class="table-group-wrapper" :style="`--row-count: ${isShowTable ? rows.length : 0}`">
11
10
  <div class="">
12
11
  <div data-test="table-group" class="position-relative me-4">
@@ -18,11 +17,11 @@
18
17
  <a href="" class="collapse-arrow" @click.prevent="toggleGroup">
19
18
  <itf-icon :name="isShowTable ? 'chevron_down' : 'chevron_right'" />
20
19
  </a>
21
- <a href="" class="d-flex align-items-center line-overflow group-header-value" data-test="group-value-group-label-value">
20
+ <span class="d-flex align-items-center line-overflow group-header-value" data-test="group-value-group-label-value">
22
21
  <span title="To Do" class="badge text-decoration-none" style="background-color: #FFA2A2; color: #4C4E69;">To Do</span>
23
- </a>
22
+ </span>
24
23
  <div data-test="table-group-item-count" class="table-group-item-count">
25
- 16
24
+ {{rows.length}}
26
25
  </div>
27
26
  </div>
28
27
  </div>
@@ -32,25 +31,32 @@
32
31
  <!-- Сама таблиця -->
33
32
  <div v-if="isShowTable" class="table-view-body">
34
33
  <itf-table-header :columns="columns" />
35
- <itf-table-body :rows="rows" :columns="columns" />
34
+ <itf-table-body :rows="rows" :columns="columns">
35
+ <template v-for="(_, name) in $slots" #[name]="slotData">
36
+ <slot :name="name" v-bind="slotData || {}" />
37
+ </template>
38
+ <template v-for="(_, name) in $scopedSlots" #[name]="slotData">
39
+ <slot :name="name" v-bind="slotData || {}" />
40
+ </template>
41
+ </itf-table-body>
36
42
  </div>
37
43
 
38
44
  <!-- Лінія додати нову -->
39
- <div v-if="isShowTable" data-v-54c5481c="" data-v-1fb25116=""
40
- class="table-row-template tw-flex tw-items-stretch tw-h-[var(--table-small-row-size)]">
41
- <div data-v-54c5481c="" class="tw-bg-light dark:tw-bg-light-invert shadow-area"></div>
42
- <a data-v-54c5481c="" href="" data-test="table-add-new-item"
43
- class="tw-flex tw-items-center tw-flex-grow tw-rounded-b tw-border-b-1 tw-border-r-1 tw-border-gray dark:tw-border-gray-invert tw-bg-white dark:tw-bg-white-invert hover:tw-bg-gray dark:hover:tw-bg-gray-invert tw-text-blue"><span
44
- data-v-54c5481c=""
45
- class="tw-sticky tw-left-[var(--shadow-area-width)] tw-flex tw-items-center tw-gap-3 tw-px-4"><i
46
- data-v-54c5481c="" class="ic-plus"></i> <span
47
- data-v-54c5481c="">Add new row</span></span></a></div>
45
+ <div v-if="isShowTable && addNewRows" class="table-row-template d-flex align-items-stretch">
46
+ <div class="shadow-area"></div>
47
+ <a href="" data-test="table-add-new-item" class="d-flex align-items-center flex-grow-1 table-add-new-item">
48
+ <span class="d-sticky d-flex align-items-center px-2">
49
+ <itf-icon name="plus" />
50
+ <span>Add new row</span>
51
+ </span>
52
+ </a>
53
+ </div>
54
+
48
55
  <!-- Групування -->
49
- <div v-if="isShowTable" data-v-54c5481c="" data-v-1fb25116=""
50
- class="table-row-template tw-flex tw-items-stretch tw-h-[var(--table-small-row-size)] table-summary">
51
- <div data-v-54c5481c="" class="tw-bg-light dark:tw-bg-light-invert shadow-area"></div>
52
- <div data-v-54c5481c=""
53
- class="tw-flex tw-flex-row tw-items-center tw-ml-[var(--indicator-area-width)]"><span
56
+ <div v-if="showGrouping"
57
+ class="table-row-template d-flex align-items-stretch tw-h-[var(--table-small-row-size)] table-summary">
58
+ <div class="tw-bg-light dark:tw-bg-light-invert shadow-area"></div>
59
+ <div class="d-flex tw-flex-row align-items-center tw-ml-[var(--indicator-area-width)]"><span
54
60
  data-v-54c5481c="" data-column="0" class="tw-relative line-overflow"
55
61
  style="width: 400px;"><a href=""
56
62
  class="context-menu-toggle tw-w-full tw-text-gray dark:tw-text-gray-invert tw-text-sm tw-flex tw-pr-3 tw-flex tw-items-stretch tw-justify-end"
@@ -112,6 +118,13 @@
112
118
  --shadow-area-width: 45px;
113
119
  --indicator-area-width: 38px;
114
120
 
121
+ flex-direction: column;
122
+ min-width: 100%;
123
+ display: flex;
124
+ width: fit-content;
125
+ margin-top: 20px;
126
+ margin-bottom: 20px;
127
+
115
128
  .preline {
116
129
  display: flex;
117
130
  align-items: center;
@@ -140,6 +153,7 @@
140
153
  position: sticky;
141
154
  left: 0;
142
155
  background: #fff;
156
+ border-right: 1px solid rgb(238, 238, 238);
143
157
  }
144
158
  .header-wrapper:not(.collapsed *) {
145
159
  flex-grow: 1;
@@ -189,6 +203,18 @@
189
203
  left: 0;
190
204
  will-change: transform;
191
205
  }
206
+ .table-row-template {
207
+ height: var(--table-small-row-size);
208
+ }
209
+ .table-add-new-item {
210
+ border-right: 1px solid rgb(238 238 238 / 1);
211
+ border-bottom: 1px solid rgb(238 238 238 / 1);
212
+
213
+ & > span {
214
+ left: var(--shadow-area-width);
215
+ position: sticky;
216
+ }
217
+ }
192
218
  }
193
219
  </style>
194
220
  <script>
@@ -210,6 +236,8 @@ export default @Component({
210
236
  class itfTableGroup extends Vue {
211
237
  @Prop() columns;
212
238
  @Prop() rows;
239
+ @Prop(Boolean) showGrouping;
240
+ @Prop(Boolean) addNewRows;
213
241
 
214
242
  isShowTable = true;
215
243
 
@@ -11,34 +11,36 @@
11
11
  <div accept-group="tablecolumns" class="table-view-header-space">
12
12
  <div class="table-view-header-dropzone"></div>
13
13
  </div>
14
- <div group="tablecolumns" class="table-header draggable-item drag-handle" data-draggable-mirror="{&quot;yAxis&quot;:false}">
15
- <a href="" class="context-menu-toggle tw-flex-auto line-overflow">
16
- <span title="Name">
17
- <itf-icon name="type_select" :size="16" /> {{column.text}}
14
+ <div group="tablecolumns" class="table-header draggable-item drag-handle">
15
+ <span href="" class="context-menu-toggle flex-auto line-overflow">
16
+ <span :title="column.text">
17
+ <!-- <itf-icon name="type_select" :size="16" />-->
18
+ {{column.text}}
18
19
  </span>
19
- </a>
20
+ </span>
20
21
  </div>
21
- <div ref="resizeHandle" class="resize-handle"></div>
22
+ <div v-if="columnResizing" ref="resizeHandle" class="resize-handle"></div>
22
23
  </div>
23
24
 
24
- <div class="table-view-header-value">
25
- <div data-v-14c77b30="" class="attribute-creator" data-v-54c5481c="">
26
- <div data-v-fd8e8e6a="" data-test="dropdown"
27
- class="dropdown-body tw-relative tw-cursor-pointer tw-w-full"><!---->
28
- <div data-v-fd8e8e6a="" tabindex="0" data-test="dropdown-toggle">
29
- <div data-v-fd8e8e6a=""
30
- class="hbox tw-flex-auto tw-items-center tw-justify-center"><a
31
- data-v-14c77b30="" data-v-fd8e8e6a="" href=""
32
- data-test="table-header-add-column" class="tw-text-blue tw-mx-4"><span
33
- data-v-14c77b30="" data-v-fd8e8e6a="" class="ic-plus"></span>
34
- Add column
35
- </a></div>
25
+ <!--div class="table-view-header-value">
26
+ <div class="attribute-creator">
27
+ <div data-test="dropdown"
28
+ class="dropdown-body tw-relative tw-cursor-pointer tw-w-full">
29
+ <div tabindex="0" data-test="dropdown-toggle">
30
+ <div class="hbox tw-flex-auto tw-items-center tw-justify-center">
31
+ <a href="" data-test="table-header-add-column" class="tw-text-blue tw-mx-4">
32
+ <span class="ic-plus"></span>
33
+ Add column
34
+ </a>
35
+ </div>
36
36
  </div>
37
- <span data-v-b4d986ec="" data-v-fd8e8e6a="" style="display: none;"> <div
38
- data-v-b4d986ec="" class="context-modal-backdrop"></div><div
39
- data-v-b4d986ec="" class="context-modal tw-min-w-[280px]"><!----> <!---->
40
- <!----></div></span></div> <!----></div>
41
- </div>
37
+ <span style="display: none;">
38
+ <div class="context-modal-backdrop"></div>
39
+ <div class="context-modal tw-min-w-[280px]"></div>
40
+ </span>
41
+ </div>
42
+ </div>
43
+ </div-->
42
44
  </div>
43
45
  </div>
44
46
 
@@ -81,78 +81,37 @@ storiesOf('Common', module)
81
81
  },
82
82
  data() {
83
83
  return {
84
- list: Array.from({length: 30}).map((_, i) => ({
84
+ list: Array.from({length: 10}).map((_, i) => ({
85
85
  Id: i,
86
+ text: `Рахунок`,
86
87
  Name: `Item #${i}`
87
88
  })),
88
89
  columns: [{
89
- text: 'Employee',
90
- name: 'Employee',
90
+ text: 'Рахунок',
91
+ name: 'Account',
91
92
  width: 200,
92
93
  min: 250,
93
94
  max: 250
94
95
  }, {
95
- text: 'Total',
96
+ text: 'Dr',
96
97
  name: 'Total',
98
+ Type: 'select',
99
+ Options: [
100
+ { Id: 1, Name: '10.10.12.31 - test фів фівіф в вфів фвф' }
101
+ ],
97
102
  width: 200,
98
103
  min: 150,
99
104
  max: 150
100
105
  }, {
101
- text: 'FTE',
102
- name: 'FTE',
103
- width: 200,
104
- min: 100,
105
- max: 100
106
- }, {
107
- text: 'Position',
108
- name: 'Position',
109
- width: 200,
110
- min: 200,
111
- max: 200
112
- }, {
113
- text: 'Office',
114
- name: 'Office',
115
- width: 200,
116
- min: 150,
117
- max: 150
118
- }, {
119
- text: 'Internal',
120
- name: 'MinutesInternal',
121
- width: 200,
122
- min: 150,
123
- max: 150,
124
- sortable: true
125
- }, {
126
- text: 'External',
127
- name: 'MinutesExternal',
128
- width: 200,
129
- min: 150,
130
- max: 150,
131
- sortable: true
132
- }, {
133
- text: 'Compensation (Internal)',
134
- name: 'AmountInternal',
135
- width: 200,
136
- min: 200,
137
- max: 200
138
- }, {
139
- text: 'Compensation (External)',
140
- name: 'AmountExternal',
141
- width: 200,
142
- min: 150,
143
- max: 150
144
- }, {
145
- text: 'Bonus/Commission',
146
- name: 'AmountShare',
106
+ text: 'Cr',
107
+ name: 'Total',
108
+ Type: 'select',
109
+ Options: [
110
+ { Id: 1, Name: 'test' }
111
+ ],
147
112
  width: 200,
148
113
  min: 150,
149
114
  max: 150
150
- }, {
151
- text: 'Actions',
152
- name: 'Notes',
153
- width: 200,
154
- min: 80,
155
- max: 80
156
115
  }]
157
116
  }
158
117
  },
@@ -172,7 +131,14 @@ storiesOf('Common', module)
172
131
 
173
132
  <h3>Example</h3>
174
133
 
175
- <itf-table2 :columns="columns" :rows="list" />
134
+ <itf-table2 :columns="columns" :rows="list">
135
+ <template #column.Account="{ item }">
136
+ {{item.text}}
137
+ </template>
138
+ <template #column.FTE="{ item }">
139
+ {{item}}
140
+ </template>
141
+ </itf-table2>
176
142
 
177
143
  <!--itf-table
178
144
  :columns="columns"
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="itf-money-field" :class="{'currency-arrow': !currencyDisabled}">
2
+ <div class="itf-money-field" :class="{'currency-arrow': !currencyDisabled, 'currency-select': currencySelect}">
3
3
  <div :style="`--itf-money-field-padding-left: ${selectedCurrencySymbol.length * 0.6 + 1}rem`">
4
4
  <span class="itf-money-field__prepend">{{ selectedCurrencySymbol }}</span>
5
5
  <itf-text-field
@@ -27,15 +27,19 @@
27
27
 
28
28
  .itf-text-field input {
29
29
  padding-left: var(--itf-money-field-padding-left, 1.5rem);
30
- padding-right: 3rem;
31
30
 
32
31
  &.is-invalid, &.is-valid {
33
32
  padding-right: 4rem;
34
33
  }
35
34
  }
36
- &.currency-arrow {
35
+ &.currency-select {
37
36
  .itf-text-field input {
38
- padding-right: 4.5rem;
37
+ padding-right: 3rem;
38
+ }
39
+ &.currency-arrow {
40
+ .itf-text-field input {
41
+ padding-right: 4.5rem;
42
+ }
39
43
  }
40
44
  }
41
45
 
@@ -1,124 +0,0 @@
1
- // 1. Include functions first (so you can manipulate colors, SVGs, calc, etc)
2
- @import "~bootstrap/scss/functions.scss";
3
-
4
- // 2. Include any default variable overrides here
5
- $font-family-base: 'Fira Sans', sans-serif;
6
- $headings-font-family: 'Fira Sans', sans-serif;
7
- $font-family-monospace: "Fira Mono", "Courier New", monospace;
8
-
9
- $headings-font-size-base: 1rem;
10
- $h1-font-size: $headings-font-size-base * 2;
11
- $h2-font-size: $headings-font-size-base * 1.75;
12
- $h3-font-size: $headings-font-size-base * 1.5;
13
- $h4-font-size: $headings-font-size-base * 1.25;
14
- $h5-font-size: $headings-font-size-base * 1.125;
15
- $h6-font-size: $headings-font-size-base;
16
-
17
- $zindex-toaster: 1071 !default;
18
-
19
- $border-radius: .5rem;
20
- $border-radius-sm: .375rem;
21
- $border-radius-lg: .75rem;
22
-
23
- $project-tnm: #311b92;
24
- $project-fixed: #388E3C;
25
- $project-nonprofit: #D32F2F;
26
-
27
- $info: #5981c0;
28
- $success: #10834e;
29
- $warning: #cda277;
30
- $danger: #cb4839;
31
-
32
- $primary: #0B314F;
33
- $link-color: #0B314F;
34
- $input-btn-focus-width: .125rem;
35
-
36
- $input-bg: #f3f3f3;
37
- $input-border-color: rgba(#000, .08);
38
- $input-border-radius: 10px;
39
- $input-font-size: 0.875rem;
40
- $input-font-family: "Fira Mono", "Courier New", monospace;
41
-
42
- $input-focus-bg: #fff;
43
- $input-focus-border-color: #fff;
44
-
45
- $form-label-margin-bottom: .1rem;
46
- $input-focus-border: rgb(11 49 79 / 25%);
47
-
48
- $form-check-input-border: 1px solid rgba(#000, .08);
49
- $form-switch-focus-color: tint-color($primary, 50%);
50
-
51
- $modal-backdrop-bg: #999;
52
- $modal-backdrop-opacity: .25;
53
- $modal-content-border-radius: 0;
54
-
55
- $secondary: #dfe1e6;
56
-
57
- // popover
58
- $popover-border-width: 2px;
59
-
60
- // dropdown
61
-
62
- // Dark theme
63
- $dark-body-bg: #2e3136;
64
- $dark-border-color: #4a4a4a;
65
- $dark-body-color: #ddd;
66
- $dark-input-bg: #383b41;
67
-
68
- $dark-primary: #FFCC00;
69
- $dark-link-color: #ead272;
70
- $dark-secondary: #464a53;
71
- $dark-input-focus-border-color: #3d3d3d;
72
- $dark-btn-primary-color: $dark-primary;
73
- $dark-btn-secondary-color: $dark-secondary;
74
- $dark-input-box-shadow: #3d3d3d;
75
- $dark-input-focus-border: rgb(244 206 176 / 25%);
76
-
77
- $pagination-border-width: 0;
78
-
79
- // 3. Include remainder of required Bootstrap stylesheets
80
- @import "~bootstrap/scss/variables.scss";
81
- @import "~bootstrap/scss/mixins.scss";
82
- @import "~bootstrap/scss/maps.scss";
83
- @import "~bootstrap/scss/utilities.scss";
84
-
85
- $custom-colors: (
86
- "white": #fff,
87
- "black": #1e1e1e
88
- );
89
- $theme-colors: map-merge($theme-colors, $custom-colors);
90
-
91
- // Text colors
92
- $all-colors: map-merge-multiple($theme-colors, $custom-colors, $blues, $indigos, $purples, $pinks, $reds, $oranges, $yellows, $greens, $teals, $cyans);
93
- $utilities: map-merge(
94
- $utilities,
95
- (
96
- "color": map-merge(
97
- map-get($utilities, "color"),
98
- (
99
- values: map-merge(
100
- map-get(map-get($utilities, "color"), "values"),
101
- (
102
- $all-colors
103
- ),
104
- ),
105
- ),
106
- ),
107
- )
108
- );
109
- @import "~bootstrap/scss/utilities/api";
110
-
111
- // Fonts
112
- $baseFontSize: 16px;
113
- $hintFontSize: 12px;
114
-
115
- // Border radius
116
- $borderRadiusM: 4px;
117
- $borderRadiusL: 8px;
118
-
119
- // Colors
120
- $primaryColor: #0B314F;
121
- $primaryColor15: #DAE0E5;
122
- $baseText: #1e1e1e;
123
- $gray5: #F0F0F1;
124
- $gray50: #787885;