@dataloop-ai/components 0.19.122 → 0.19.124

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": "@dataloop-ai/components",
3
- "version": "0.19.122",
3
+ "version": "0.19.124",
4
4
  "exports": {
5
5
  ".": "./index.ts",
6
6
  "./models": "./models.ts",
@@ -7,13 +7,24 @@
7
7
  <rows-selector
8
8
  v-if="withRowsPerPage && rowsPerPageState"
9
9
  v-model="rowsPerPageState"
10
+ class="dl-pagination--sides dl-pagination--sides--left"
10
11
  :options="rowsPerPageOptions"
11
12
  :items-name="itemsName"
12
13
  :disabled="disabled"
13
14
  />
15
+ <div
16
+ v-else-if="withLegend"
17
+ class="dl-pagination--sides dl-pagination--sides--left"
18
+ />
19
+
14
20
  <div
15
21
  v-if="rowsPerPageState"
16
22
  class="dl-pagination--navigation"
23
+ :class="
24
+ withLegend || (withRowsPerPage && rowsPerPageState)
25
+ ? ''
26
+ : 'dl-pagination--navigation--maximized'
27
+ "
17
28
  >
18
29
  <page-navigation
19
30
  :model-value="value"
@@ -45,6 +56,11 @@
45
56
  :to="rowTo"
46
57
  :total="totalItems"
47
58
  :items-name="itemsName"
59
+ class="dl-pagination--sides dl-pagination--sides--right"
60
+ />
61
+ <div
62
+ v-else-if="withRowsPerPage && rowsPerPageState"
63
+ class="dl-pagination--sides dl-pagination--sides--right"
48
64
  />
49
65
  </div>
50
66
  </div>
@@ -182,6 +198,7 @@ export default defineComponent({
182
198
 
183
199
  &--container {
184
200
  height: 100%;
201
+ width: 100%;
185
202
  display: flex;
186
203
  justify-content: space-between;
187
204
  align-items: center;
@@ -189,6 +206,16 @@ export default defineComponent({
189
206
 
190
207
  &--navigation {
191
208
  display: flex;
209
+ flex-grow: 1;
210
+ width: 60%;
211
+ justify-content: center;
212
+ &--maximized {
213
+ width: 100%;
214
+ }
215
+ }
216
+
217
+ &--sides {
218
+ width: 20%;
192
219
  }
193
220
  }
194
221
  </style>
@@ -33,7 +33,10 @@
33
33
  :disabled="disabled"
34
34
  @click="setPage(min)"
35
35
  >
36
- {{ min }}
36
+ <DlEllipsis
37
+ :text="`${min}`"
38
+ style="justify-content: center; padding: 0 5px"
39
+ />
37
40
  </button>
38
41
  <button
39
42
  v-if="ellipsesStart"
@@ -55,7 +58,10 @@
55
58
  :disabled="disabled"
56
59
  @click="setPage(page)"
57
60
  >
58
- {{ page }}
61
+ <DlEllipsis
62
+ :text="`${page}`"
63
+ style="justify-content: center; padding: 0 5px"
64
+ />
59
65
  </button>
60
66
  </template>
61
67
  <button
@@ -71,9 +77,13 @@
71
77
  class="dl-pagination--page_button"
72
78
  :class="{ 'dl-pagination--active': isActivePage(max) }"
73
79
  :disabled="disabled"
80
+ :data-tooltip="max"
74
81
  @click="setPage(max)"
75
82
  >
76
- {{ max }}
83
+ <DlEllipsis
84
+ :text="`${max}`"
85
+ style="justify-content: center; padding: 0 5px"
86
+ />
77
87
  </button>
78
88
  </div>
79
89
  <button
@@ -104,12 +114,13 @@
104
114
  <script lang="ts">
105
115
  import { defineComponent } from 'vue-demi'
106
116
  import { getColor } from '../../../../utils'
107
- import { DlIcon } from '../../../essential'
117
+ import { DlIcon, DlEllipsis } from '../../../essential'
108
118
 
109
119
  export default defineComponent({
110
120
  name: 'PageNavigation',
111
121
  components: {
112
- DlIcon
122
+ DlIcon,
123
+ DlEllipsis
113
124
  },
114
125
  model: {
115
126
  prop: 'modelValue',
@@ -173,7 +184,7 @@ export default defineComponent({
173
184
  return this.value === this.max
174
185
  },
175
186
  buttonMinWidth(): string {
176
- return `${Math.max(2, String(this.max).length)}em`
187
+ return `3em`
177
188
  },
178
189
  cssVars(): Record<string, any> {
179
190
  return {
@@ -305,8 +316,6 @@ export default defineComponent({
305
316
  line-height: 14px;
306
317
  font-weight: 400;
307
318
  white-space: nowrap;
308
- overflow: hidden;
309
- text-overflow: ellipsis;
310
319
  }
311
320
 
312
321
  &--active {
@@ -1,14 +1,21 @@
1
1
  <template>
2
2
  <div class="dl-pagination--legend">
3
3
  {{ paginationContent }}
4
+ <dl-tooltip v-if="longItemsLength">
5
+ {{ fullContent }}
6
+ </dl-tooltip>
4
7
  </div>
5
8
  </template>
6
9
 
7
10
  <script lang="ts">
8
11
  import { defineComponent } from 'vue-demi'
12
+ import { DlTooltip } from '../../../shared'
9
13
 
10
14
  export default defineComponent({
11
15
  name: 'PaginationLegend',
16
+ components: {
17
+ DlTooltip
18
+ },
12
19
  props: {
13
20
  from: {
14
21
  type: Number,
@@ -28,11 +35,43 @@ export default defineComponent({
28
35
  }
29
36
  },
30
37
  computed: {
38
+ longItemsLength(): boolean {
39
+ return String(this.total).length > 6
40
+ },
31
41
  paginationContent(): string {
32
- return (
33
- `Showing ${this.from}-${this.to}` +
34
- (this.total ? ` of ${this.total} ${this.itemsName}` : '')
35
- )
42
+ let totalItemsLength = String(this.total)
43
+ if (this.longItemsLength) {
44
+ totalItemsLength = `${totalItemsLength.slice(
45
+ 0,
46
+ 4
47
+ )}...${totalItemsLength.slice(-3)}`
48
+ }
49
+
50
+ let toDisplayString = String(this.to)
51
+ if (toDisplayString.length > 3) {
52
+ toDisplayString = `${toDisplayString.slice(
53
+ 0,
54
+ 2
55
+ )}...${toDisplayString.slice(-2)}`
56
+ }
57
+
58
+ let fromDisplayString = String(this.from)
59
+ if (fromDisplayString.length > 3) {
60
+ fromDisplayString = `${fromDisplayString.slice(
61
+ 0,
62
+ 2
63
+ )}...${fromDisplayString.slice(-2)}`
64
+ }
65
+
66
+ const header = `Showing ${fromDisplayString} - ${toDisplayString}`
67
+ const footer = this.total
68
+ ? `of ${totalItemsLength} ${this.itemsName}`
69
+ : ''
70
+
71
+ return `${header} ${footer}`
72
+ },
73
+ fullContent(): string {
74
+ return `Showing ${this.from} - ${this.to} of ${this.total} ${this.itemsName}`
36
75
  }
37
76
  }
38
77
  })
@@ -1,6 +1,13 @@
1
1
  <template>
2
- <div style="align-items: stretch">
3
- <div>
2
+ <div
3
+ style="
4
+ align-items: stretch;
5
+ justify-content: center;
6
+ width: 100%;
7
+ display: flex;
8
+ "
9
+ >
10
+ <div style="display: flex; width: 100%; justify-content: center">
4
11
  <dl-input
5
12
  v-model="rowsPerPage"
6
13
  width="100px"
@@ -27,7 +34,10 @@
27
34
  title="itemsName"
28
35
  />
29
36
  </div>
30
- <div class="row">
37
+ <div
38
+ class="row"
39
+ style="display: flex; width: 100%; justify-content: center"
40
+ >
31
41
  <dl-checkbox
32
42
  v-model="boundaryNumbers"
33
43
  label="boundaryNumbers"
@@ -57,7 +67,7 @@
57
67
  label="withRowsPerPage"
58
68
  />
59
69
  </div>
60
- <div style="width: 700px">
70
+ <div style="display: flex; width: 100%; justify-content: center">
61
71
  <dl-pagination
62
72
  v-model="page"
63
73
  :max="max"
@@ -74,7 +84,14 @@
74
84
  :with-rows-per-page="withRowsPerPage"
75
85
  />
76
86
  </div>
77
- <div>
87
+ <div
88
+ style="
89
+ display: flex;
90
+ flex-direction: column;
91
+ width: 100%;
92
+ justify-content: center;
93
+ "
94
+ >
78
95
  <h4>case 1</h4>
79
96
  <p>with exactly 30 items, 15 per row. should be exactly 2 pages</p>
80
97
  <dl-pagination
@@ -111,7 +128,7 @@ export default defineComponent({
111
128
  boundaryNumbers: true,
112
129
  boundaryLinks: true,
113
130
  directionLinks: true,
114
- total: 999,
131
+ total: 99,
115
132
  withQuickNavigation: true,
116
133
  disabled: false,
117
134
  itemsName: 'Rows',