@everchron/ec-shards 3.1.4 → 3.2.0

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.
Files changed (41) hide show
  1. package/dist/ec-shards.common.js +1587 -1592
  2. package/dist/ec-shards.common.js.map +1 -1
  3. package/dist/ec-shards.css +1 -1
  4. package/dist/ec-shards.umd.js +1587 -1592
  5. package/dist/ec-shards.umd.js.map +1 -1
  6. package/dist/ec-shards.umd.min.js +2 -2
  7. package/dist/ec-shards.umd.min.js.map +1 -1
  8. package/package.json +1 -1
  9. package/src/components/alert/alert.vue +2 -2
  10. package/src/components/breadcrumb-button/breadcrumb-button.vue +2 -2
  11. package/src/components/button/button.vue +2 -2
  12. package/src/components/button-context/button-context.vue +1 -1
  13. package/src/components/button-more/button-more.vue +1 -1
  14. package/src/components/button-table/button-table.vue +1 -1
  15. package/src/components/button-toolbar/button-toolbar.vue +4 -4
  16. package/src/components/button-toolbar-icon/button-toolbar-icon.vue +1 -1
  17. package/src/components/collection-control/collection-control.vue +1 -1
  18. package/src/components/data-card/data-card.vue +1 -1
  19. package/src/components/dialog/dialog.vue +24 -16
  20. package/src/components/document-state/document-state.vue +1 -1
  21. package/src/components/empty-state/empty-state.vue +1 -1
  22. package/src/components/excerpt-snippet/excerpt-snippet.vue +1 -1
  23. package/src/components/info-tooltip/info-tooltip.vue +1 -1
  24. package/src/components/input-addon/input-addon.vue +1 -1
  25. package/src/components/input-clear/input-clear.vue +1 -1
  26. package/src/components/input-search/input-search.vue +1 -1
  27. package/src/components/multiselect-option/multiselect-option.vue +1 -1
  28. package/src/components/multiselect-search-token/multiselect-search-token.vue +2 -2
  29. package/src/components/multiselect-token/multiselect-token.vue +1 -1
  30. package/src/components/overlay/overlay.vue +1 -1
  31. package/src/components/pagination/pagination.vue +138 -105
  32. package/src/components/party-entry/party-entry.vue +2 -2
  33. package/src/components/popover-header/popover-header.vue +1 -1
  34. package/src/components/segment/segment.vue +1 -1
  35. package/src/components/sequence-map-button/sequence-map-button.vue +1 -1
  36. package/src/components/tab-button/tab-button.vue +16 -5
  37. package/src/components/transcript-state/transcript-state.vue +1 -1
  38. package/src/components/tree-list-item/tree-list-item.vue +1 -1
  39. package/src/stories/Changelog.stories.mdx +19 -0
  40. package/src/stories/pagination/pagination.stories.js +0 -15
  41. package/src/components/tiptap/tiptap.vue +0 -246
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@everchron/ec-shards",
3
- "version": "3.1.4",
3
+ "version": "3.2.0",
4
4
  "private": false,
5
5
  "description": "Everchron Shards UI Library",
6
6
  "repository": "https://github.com/everchron/ec-shards.git",
@@ -1,11 +1,11 @@
1
1
  <template>
2
2
  <div v-if="show" class="ecs-alert" :class="[typeClass, dismissable ? 'ecs-alert-dismissable' : '', inset ? 'ecs-alert-inset' : '']">
3
3
  <button v-if="dismissable" @click="dismiss" class="close">
4
- <ecs-icon type="close" width="20" height="20" />
4
+ <ecs-icon type="close" size="20" />
5
5
  </button>
6
6
  <div class="ecs-alert-inner">
7
7
  <h4 v-if="headline" class="ecs-alert-headline">
8
- <ecs-icon v-if="icon" :type="icon" width="20" height="20" />
8
+ <ecs-icon v-if="icon" :type="icon" size="20" />
9
9
  {{ headline }}
10
10
  </h4>
11
11
  <div v-if="$slots.default" class="ecs-alert-content">
@@ -7,8 +7,8 @@
7
7
  typeClass
8
8
  ]"
9
9
  >
10
- <ecs-icon v-if="icon" :type="icon" width="20" height="20" />
11
- <ecs-icon v-if="type == 'more'" type="more" width="20" height="20" />
10
+ <ecs-icon v-if="icon" :type="icon" size="20" />
11
+ <ecs-icon v-if="type == 'more'" type="more" size="20" />
12
12
  <span v-if="type != 'more'">
13
13
  <slot></slot>
14
14
  </span>
@@ -13,7 +13,7 @@
13
13
  @mouseover="$emit('mouseover', $event)"
14
14
  @mouseleave="$emit('mouseleave', $event)">
15
15
 
16
- <ecs-icon v-if="icon || loading" :type="iconType" :width="iconSize" :height="iconSize" />
16
+ <ecs-icon v-if="icon || loading" :type="iconType" :size="iconSize" />
17
17
  <slot></slot>
18
18
  </a>
19
19
 
@@ -31,7 +31,7 @@
31
31
  @mouseover="$emit('mouseover', $event)"
32
32
  @mouseleave="$emit('mouseleave', $event)">
33
33
 
34
- <ecs-icon v-if="icon || loading" :type="iconType" :width="iconSize" :height="iconSize" />
34
+ <ecs-icon v-if="icon || loading" :type="iconType" :size="iconSize" />
35
35
  <slot></slot>
36
36
  </button>
37
37
 
@@ -5,7 +5,7 @@
5
5
  :style="selectedColorText"
6
6
  @click="$emit('click', $event)">
7
7
 
8
- <ecs-icon v-if="icon || loading" :type="iconType" width="20" height="20" />
8
+ <ecs-icon v-if="icon || loading" :type="iconType" size="20" />
9
9
  <div v-if="selectedColor" class="ecs-context-button-color" :style="selectedColorBackground" />
10
10
  <slot></slot>
11
11
  </button>
@@ -5,7 +5,7 @@
5
5
  ]"
6
6
  @click="$emit('click', $event)">
7
7
 
8
- <ecs-icon v-if="type == 'ellipsis'" type="more" width="20" height="20" color="#FFF" />
8
+ <ecs-icon v-if="type == 'ellipsis'" type="more" size="20" color="#FFF" />
9
9
  <slot></slot>
10
10
  </button>
11
11
  </template>
@@ -15,7 +15,7 @@
15
15
  @mouseover="$emit('mouseover', $event)"
16
16
  @mouseleave="$emit('mouseleave', $event)">
17
17
 
18
- <ecs-icon v-if="icon || loading" :type="iconType" :width="iconSize" :height="iconSize" />
18
+ <ecs-icon v-if="icon || loading" :type="iconType" :size="iconSize" />
19
19
  <div v-if="label != null" class="button-label">{{ label }}</div>
20
20
  <div v-if="chevron" class="chevron" :class="active ? 'expand' : ''" />
21
21
  </button>
@@ -9,10 +9,10 @@
9
9
  dropdownClass]"
10
10
  @click="$emit('click', $event)">
11
11
 
12
- <ecs-icon v-if="(icon && iconPosition == 'left') || (loading && iconPosition == 'left')" :width="iconSize" :height="iconSize" :color="iconTint" :type="iconType" :spinning="loading" />
12
+ <ecs-icon v-if="(icon && iconPosition == 'left') || (loading && iconPosition == 'left')" :size="iconSize" :color="iconTint" :type="iconType" :spinning="loading" />
13
13
  <slot></slot>
14
14
  <span class="badge" v-if="badge" :style="{ background: badgeColor }"></span>
15
- <ecs-icon v-if="(icon && iconPosition == 'right') || (loading && iconPosition == 'right')" :width="iconSize" :height="iconSize" :color="iconTint" :type="iconType" :spinning="loading" />
15
+ <ecs-icon v-if="(icon && iconPosition == 'right') || (loading && iconPosition == 'right')" :size="iconSize" :color="iconTint" :type="iconType" :spinning="loading" />
16
16
  </a>
17
17
 
18
18
  <button v-else class="ecs-toolbar-button"
@@ -25,10 +25,10 @@
25
25
  dropdownClass]"
26
26
  @click="$emit('click', $event)">
27
27
 
28
- <ecs-icon v-if="(icon && iconPosition == 'left') || (loading && iconPosition == 'left')" :width="iconSize" :height="iconSize" :color="iconTint" :type="iconType" :spinning="loading" />
28
+ <ecs-icon v-if="(icon && iconPosition == 'left') || (loading && iconPosition == 'left')" :size="iconSize" :color="iconTint" :type="iconType" :spinning="loading" />
29
29
  <slot></slot>
30
30
  <span class="badge" v-if="badge" :style="{ background: badgeColor }"></span>
31
- <ecs-icon v-if="(icon && iconPosition == 'right') || (loading && iconPosition == 'right')" :width="iconSize" :height="iconSize" :color="iconTint" :type="iconType" :spinning="loading" />
31
+ <ecs-icon v-if="(icon && iconPosition == 'right') || (loading && iconPosition == 'right')" :size="iconSize" :color="iconTint" :type="iconType" :spinning="loading" />
32
32
  </button>
33
33
  </template>
34
34
 
@@ -8,7 +8,7 @@
8
8
  <ecs-icon :type="icon" />
9
9
  <span v-if="hasBadge" class="badge" />
10
10
  <div class="sub-icon">
11
- <ecs-icon v-if="subIcon" :type="subIcon" width="14" height="14" />
11
+ <ecs-icon v-if="subIcon" :type="subIcon" size="14" />
12
12
  </div>
13
13
  </button>
14
14
  </template>
@@ -8,7 +8,7 @@
8
8
  isVisible || nonInteractive ? '' : 'collapsed',
9
9
  nonInteractive ? '' : 'interactive',
10
10
  ]">
11
- <ecs-icon v-if="icon" :type="icon" color="#858E9E" :width="iconSize" :height="iconSize" />
11
+ <ecs-icon v-if="icon" :type="icon" color="#858E9E" :size="iconSize" />
12
12
  <div class="description" v-if="label">{{ label }}</div>
13
13
  <div class="collection"
14
14
  @mouseover="toggleTooltip"
@@ -15,7 +15,7 @@
15
15
  <slot name="control"></slot>
16
16
  </div>
17
17
 
18
- <ecs-icon v-if="icon" :type="icon" :color="iconColor" :spinning="spinning" width="26" height="26" />
18
+ <ecs-icon v-if="icon" :type="icon" :color="iconColor" :spinning="spinning" size="26" />
19
19
  <ecs-skeleton-loader v-if="icon && loading" type="rect" :width="26" :height="26" />
20
20
 
21
21
  <div class="ecs-data-card-inner">
@@ -1,14 +1,14 @@
1
1
  <template>
2
- <dialog ref="dialog" :class="[large ? 'ecs-dialog-large' : '']" class="ecs-dialog">
3
- <div class="ecs-dialog-body">
4
- <slot></slot>
5
- </div>
6
-
7
- <div v-if="$slots.actions" class="ecs-dialog-footer" :class="[stackedFooter ? 'ecs-dialog-footer-stacked' : '']">
8
- <!-- @slot Slot for the dialog footer buttons. Should only contain EcsButtonDialog components. -->
9
- <slot name="actions"></slot>
10
- </div>
11
- </dialog>
2
+ <dialog v-if="lazyLoad" ref="dialog" :class="[large ? 'ecs-dialog-large' : '']" class="ecs-dialog">
3
+ <div class="ecs-dialog-body">
4
+ <slot></slot>
5
+ </div>
6
+
7
+ <div v-if="$slots.actions" class="ecs-dialog-footer" :class="[stackedFooter ? 'ecs-dialog-footer-stacked' : '']">
8
+ <!-- @slot Slot for the dialog footer buttons. Should only contain EcsButtonDialog components. -->
9
+ <slot name="actions"></slot>
10
+ </div>
11
+ </dialog>
12
12
  </template>
13
13
 
14
14
  <script>
@@ -33,7 +33,8 @@
33
33
 
34
34
  data () {
35
35
  return {
36
- isShown: this.show
36
+ isShown: this.show,
37
+ lazyLoad: false
37
38
  }
38
39
  },
39
40
 
@@ -49,10 +50,17 @@
49
50
  show(){
50
51
  this.isShown = this.show
51
52
 
52
- if(this.isShown)
53
- this.$refs.dialog.showModal()
54
- else
53
+ if(this.isShown){
54
+ this.lazyLoad = true
55
+ this.$nextTick(() => {
56
+ this.$refs.dialog.showModal()
57
+ })
58
+ } else {
55
59
  this.$refs.dialog.close()
60
+ this.$nextTick(() => {
61
+ this.lazyLoad = false
62
+ })
63
+ }
56
64
  }
57
65
  },
58
66
 
@@ -80,8 +88,8 @@
80
88
  display: flex;
81
89
  flex-direction: column;
82
90
  margin: auto;
83
- margin-bottom: auto;
84
- margin-top: auto;
91
+ margin-bottom: auto !important;
92
+ margin-top: auto !important;
85
93
  border: none;
86
94
  padding: 0;
87
95
  overflow: visible;
@@ -5,7 +5,7 @@
5
5
  <div v-if="instantView" class="instant" />
6
6
  <div v-else class="no-instant" />
7
7
  <span v-if="loading" class="loading">
8
- <ecs-icon type="loading" width="18px" height="18px" color="#202127" />
8
+ <ecs-icon type="loading" size="18" color="#202127" />
9
9
  </span>
10
10
  </div>
11
11
  </template>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="ecs-empty-state">
3
- <ecs-icon v-if="type!='loading'" :type="type" :color="iconColor" :width="iconSize" :height="iconSize" />
3
+ <ecs-icon v-if="type!='loading'" :type="type" :color="iconColor" :size="iconSize" />
4
4
  <div v-else class="ecs-empty-state-loading" />
5
5
  <div v-if="type!='loading'" class="ecs-empty-state-message" :class="size">
6
6
  <slot></slot>
@@ -3,7 +3,7 @@
3
3
  <div class="ecs-excerpt-title">
4
4
  <div class="ecs-excerpt-title-headline">
5
5
  <ecs-skeleton-loader v-if="icon && loading" type="rect" :width="20" :height="20" />
6
- <ecs-icon v-if="icon && !loading" :type="icon" width="20" height="20" />
6
+ <ecs-icon v-if="icon && !loading" :type="icon" size="20" />
7
7
  <ecs-skeleton-loader v-if="loading" type="single" :width="20" />
8
8
  <span v-else>{{ headline }}</span>
9
9
  </div>
@@ -2,7 +2,7 @@
2
2
  <i class="ecs-info-tooltip"
3
3
  @click="handleClick"
4
4
  >
5
- <ecs-icon :type="icon" width="20" height="20" />
5
+ <ecs-icon :type="icon" size="20" />
6
6
  </i>
7
7
  </template>
8
8
 
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <span class="ecs-input-group-addon" :class="[iconClass, button ? `has-button` : '',]">
3
3
  <slot></slot>
4
- <ecs-icon v-if="icon" :type="icon" width="80%" height="80%" />
4
+ <ecs-icon v-if="icon" :type="icon" size="80%" />
5
5
  </span>
6
6
  </template>
7
7
 
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="ecs-input-clear">
3
3
  <button @click="$emit('click', $event)" :title="tooltip" class="ecs-input-clear-button" />
4
- <ecs-icon v-if="loading" type="loading" width="32" height="32" spinning color="#AEB1B9" />
4
+ <ecs-icon v-if="loading" type="loading" size="32" spinning color="#AEB1B9" />
5
5
  </div>
6
6
  </template>
7
7
 
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="ecs-search-group" :class="groupSizeClass">
3
- <ecs-icon type="search" color="#B9BCC2" :width="iconSize" :height="iconSize" />
3
+ <ecs-icon type="search" color="#B9BCC2" :size="iconSize" />
4
4
  <input ref="input"
5
5
  :name="name"
6
6
  :disabled="disabled"
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="ecs-multiselect-option" :class="typeClass">
3
- <ecs-icon v-if="icon" :type="icon" width="20" height="20" />
3
+ <ecs-icon v-if="icon" :type="icon" size="20" />
4
4
  <slot></slot>
5
5
  </div>
6
6
  </template>
@@ -1,14 +1,14 @@
1
1
  <template>
2
2
  <div class="ecs-multiselect-search-token" :class="typeClass">
3
3
  <div v-if="icon || operator" class="symbol">
4
- <ecs-icon :type="icon" width="20" height="20" color="#FFF" />
4
+ <ecs-icon :type="icon" size="20" color="#FFF" />
5
5
  <div v-if="operator" class="operator">{{ operator }}</div>
6
6
  </div>
7
7
  <div class="query">
8
8
  <div v-if="descriptor" class="descriptor">{{ descriptor }}</div>
9
9
  <slot></slot>
10
10
  <button @click="$emit('remove', $event)" class="remove" title="Remove">
11
- <ecs-icon type="close" width="14" height="14" color="#FFF" />
11
+ <ecs-icon type="close" size="14" color="#FFF" />
12
12
  </button>
13
13
  </div>
14
14
  </div>
@@ -2,7 +2,7 @@
2
2
  <div class="ecs-multiselect-token">
3
3
  <slot></slot>
4
4
  <button @click="$emit('remove', $event)" class="remove">
5
- <ecs-icon type="close" width="14" height="14" color="#FFF" />
5
+ <ecs-icon type="close" size="14" color="#FFF" />
6
6
  </button>
7
7
  </div>
8
8
  </template>
@@ -3,7 +3,7 @@
3
3
  <div v-if="isShown" class="ecs-overlay" :style="{ top: offsetTop + 'px', height: 'calc(100vh - '+ offsetTop +'px' }">
4
4
  <div class="ecs-overlay-header">
5
5
  <div class="ecs-overlay-titles">
6
- <ecs-icon v-if="icon" :type="icon" width="40" height="40" color="#B9BCC2" />
6
+ <ecs-icon v-if="icon" :type="icon" size="40" color="#B9BCC2" />
7
7
  <div>
8
8
  <span class="title"><span v-if="headerTitleEmphasized" class="emphasized">{{ headerTitleEmphasized }}</span> {{ headerTitle }}</span>
9
9
  <span v-if="headerTitleSubline" class="subline">{{ headerTitleSubline }}</span>
@@ -1,62 +1,66 @@
1
1
  <template>
2
2
  <div class="ecs-pagination" :class="[ floating ? 'ecs-pagination-floating' : '' ]">
3
- <ecs-flex-row :gap="8" class="ecs-pagination-nav" :style="{minWidth: tabsSpacing - 4 + 'px'}">
4
- <template v-if="type == 'paginated'">
5
- <ecs-flex-row>
6
- <ecs-button @click="$emit('firstPage', $event)" :disabled="loading || currentPage === 1" icon="chevron-double-left" icon-only type="secondary" title="First Page" data-test="pagination-first-button" />
7
- <ecs-button @click="$emit('prevPage', $event)" :disabled="loading || currentPage === 1" icon="chevron-left" icon-only type="secondary" title="Previous Page" data-test="pagination-previous-button" />
8
- </ecs-flex-row>
9
- <ecs-flex-row :gap="4">
10
- <span>Page</span>
11
- <ecs-select @change="$emit('updatePage', $event.target.value)" :disabled="!totalPages" size="sml">
12
- <option v-for="n in totalPages" :key="n" :value="n" :selected="n === currentPage">{{ n }}</option>
13
- </ecs-select>
14
- <span v-if="totalPages" class="total">of {{ totalPages }}</span>
15
- </ecs-flex-row>
16
- <ecs-flex-row>
17
- <ecs-button @click="$emit('nextPage', $event)" :disabled="loading || currentPage === totalPages" icon="chevron-right" icon-only type="secondary" title="Next Page" data-test="pagination-next-button" />
18
- <ecs-button @click="$emit('lastPage', $event)" :disabled="loading || currentPage === totalPages" icon="chevron-double-right" icon-only type="secondary" title="Last Page" data-test="pagination-last-button" />
19
- </ecs-flex-row>
20
- </template>
21
- <transition name="fade">
22
- <ecs-flex-row v-if="loading" :gap="4" :class="$slots.tabs && type =='paginated' ? 'push-right' : ''">
23
- <div v-if="!$slots.tabs && type =='paginated'" class="separator" />
24
- <ecs-icon type="loading" spinning size="24" color="#858E9E" />
25
- </ecs-flex-row>
26
- </transition>
27
- </ecs-flex-row>
28
-
29
- <div class="ecs-pagination-tabs">
3
+ <div class="ecs-pagination-nav">
4
+ <ecs-button-toolbar-group>
5
+ <ecs-button-toolbar
6
+ @click="$emit('prevPage', $event)"
7
+ :disabled="loading || currentPage === 1"
8
+ icon="back"
9
+ data-test="pagination-previous-button">
10
+ Previous Page
11
+ </ecs-button-toolbar>
12
+ <ecs-button-toolbar
13
+ @click="$emit('nextPage', $event)"
14
+ :disabled="loading || currentPage === totalPages"
15
+ icon="next"
16
+ icon-position="right"
17
+ data-test="pagination-next-button">
18
+ Next Page
19
+ </ecs-button-toolbar>
20
+ </ecs-button-toolbar-group>
21
+
22
+ <div class="ecs-pagination-dropdown">
23
+ <span>Page</span>
24
+ <div @click="toggleDropdown" class="ecs-pagination-dropdown-button" :class="[dropdownShown ? 'active' : '', totalPages ? '' : 'disabled']">
25
+ <template v-if="currentPage">{{ currentPage }}</template>
26
+ <template v-else>-</template>
27
+
28
+ <transition name="dropdown">
29
+ <div v-if="dropdownShown && totalPages" class="ecs-pagination-select scrollbar scrollbar-sml">
30
+ <ecs-popover-list>
31
+ <ecs-popover-list-item
32
+ @click="$emit('update:page', n), hideDropdown"
33
+ v-for="n in totalPages"
34
+ :key="n"
35
+ :selected="n === currentPage">
36
+ {{ n }}
37
+ </ecs-popover-list-item>
38
+ </ecs-popover-list>
39
+ </div>
40
+ </transition>
41
+ </div>
42
+ <span v-if="totalPages" class="total">of {{ totalPages }}</span>
43
+ </div>
44
+ </div>
45
+ <div>
30
46
  <!-- @slot Slot for a sheet tab bar. -->
31
47
  <slot name="tabs"></slot>
32
48
  </div>
33
-
34
- <ecs-flex-row v-if="showItemsPerPage && type == 'paginated'" :gap="4" class="ecs-pagination-items">
35
- <span>Items per page</span>
36
- <ecs-select @change="$emit('itemsPerPage', $event.target.value)" :disabled="loading" size="sml">
37
- <option v-for="n in itemsPerPage" :key="n" :value="n" :selected="n === itemsPerPageSelected">{{ n }}</option>
38
- </ecs-select>
39
- </ecs-flex-row>
40
-
41
- <ecs-flex-row v-if="$slots.controls" :gap="4" class="ecs-pagination-controls">
42
- <!-- @slot Slot for a additional controls, such as a settings button. -->
43
- <slot name="controls"></slot>
44
- </ecs-flex-row>
45
49
  </div>
46
50
  </template>
47
51
 
48
52
  <script>
49
- import EcsButton from '../button/button'
50
- import EcsSelect from '../select/select'
51
- import EcsFlexRow from '../flex/flex-row'
52
- import EcsIcon from '../icon/icon'
53
+ import EcsButtonToolbarGroup from '../button-toolbar-group/button-toolbar-group'
54
+ import EcsButtonToolbar from '../button-toolbar/button-toolbar'
55
+ import EcsPopoverList from '../popover-list/popover-list'
56
+ import EcsPopoverListItem from '../popover-list-item/popover-list-item'
53
57
 
54
58
  export default {
55
59
  components: {
56
- EcsButton,
57
- EcsSelect,
58
- EcsFlexRow,
59
- EcsIcon
60
+ EcsButtonToolbarGroup,
61
+ EcsButtonToolbar,
62
+ EcsPopoverList,
63
+ EcsPopoverListItem
60
64
  },
61
65
 
62
66
  props: {
@@ -65,12 +69,6 @@
65
69
  type: Boolean,
66
70
  default: false
67
71
  },
68
- /** Determines which elements are visible in the pagination component. */
69
- type: {
70
- type: String,
71
- validator: v => ['paginated', 'infinite'].includes(v),
72
- default: 'paginated'
73
- },
74
72
  /** Briefly disables all controls while ongoing navigation. */
75
73
  loading: {
76
74
  type: Boolean,
@@ -83,28 +81,23 @@
83
81
  /** The total pages of the index. */
84
82
  totalPages: {
85
83
  type: Number,
84
+ }
85
+ },
86
+
87
+ data() {
88
+ return {
89
+ dropdownShown: false
90
+ }
91
+ },
92
+
93
+ methods: {
94
+ toggleDropdown(){
95
+ if(this.totalPages)
96
+ this.dropdownShown = !this.dropdownShown
86
97
  },
87
- /** The width of the area left to the tab area in pixels. This is used to align the tab bar with a column in the table. Not needed when tabs aren't in use. */
88
- tabsSpacing: {
89
- type: Number,
90
- default: 400
91
- },
92
- /** Determines if the selector for items per page should be shown. */
93
- showItemsPerPage: {
94
- type: Boolean,
95
- default: true
96
- },
97
- /** The options to be show as selectable in the items per page dropdown. Requires an array with Numbers. Default: `[25, 50, 100]` */
98
- itemsPerPage: {
99
- type: Array,
100
- default() {
101
- return [25, 50, 100]
102
- }
103
- },
104
- /** The selected option in the items per page dropdown. */
105
- itemsPerPageSelected: {
106
- type: Number,
107
- default: 100
98
+
99
+ hideDropdown(){
100
+ this.dropdownShown = false
108
101
  }
109
102
  }
110
103
  }
@@ -123,9 +116,6 @@
123
116
  box-shadow: 0 -1px 0 $color-gray-4;
124
117
  position: relative;
125
118
  z-index: 2;
126
- font-size: $type-scale-2-font-size;
127
- line-height: $type-scale-2-line-height;
128
- color: $color-gray-15;
129
119
 
130
120
  &-floating{
131
121
  border-radius: $border-radius-small;
@@ -133,51 +123,94 @@
133
123
  }
134
124
 
135
125
  &-nav{
126
+ display: flex;
127
+ align-items: center;
136
128
  height: 40px;
129
+ margin-right: 24px;
130
+ }
137
131
 
138
- .ecs-form-select{
139
- width: 52px;
140
- }
132
+ .ecs-toolbar-button-group{
133
+ margin-right: 32px;
141
134
  }
142
135
 
143
- &-tabs{
144
- flex: 1;
136
+ .ecs-toolbar-button-icon{
137
+ font-size: $type-scale-2-font-size;
145
138
  }
146
139
 
147
- &-items{
148
- padding-right: $spacing-5;
149
-
150
- .ecs-form-select{
151
- width: 52px;
140
+ &-dropdown{
141
+ display: flex;
142
+ align-items: center;
143
+ font-size: $type-scale-2-font-size;
144
+ color: $color-gray-9;
145
+
146
+ .total{
147
+ color: $color-gray-15;
152
148
  }
153
- }
154
149
 
155
- &-controls{
156
- margin-left: $spacing-10;
157
- }
150
+ &-button{
151
+ background: #FFF;
152
+ display: flex;
153
+ align-items: center;
154
+ border: 1px solid $color-gray-3;
155
+ padding: 0 8px;
156
+ height: 32px;
157
+ transition: .2s;
158
+ border-radius: $border-radius-small;
159
+ margin: 0 6px;
160
+ cursor: pointer;
161
+ position: relative;
162
+ color: $color-gray-15;
163
+
164
+ &:after{
165
+ content: "";
166
+ background: svg-uri('<svg xmlns="http://www.w3.org/2000/svg" width="8" height="5" viewBox="0 0 8 5"><polyline fill="none" stroke="#858E9E" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" points="0 0 3 3 6 0" transform="translate(1 .8)"/></svg>');
167
+ width: 8px;
168
+ height: 5px;
169
+ margin-left: 6px;
170
+ }
158
171
 
159
- .separator{
160
- width: 1px;
161
- background: $color-gray-4;
162
- height: $spacing-20;
163
- }
172
+ &:hover{
173
+ border: 1px solid $color-gray-4;
174
+ box-shadow: 0 1px 1px rgba($color-gray-4, .25);
175
+ }
176
+
177
+ &.active{
178
+ border: 1px solid $color-gray-5;
179
+ box-shadow: 0 1px 0 rgba($color-gray-2, .1) inset;
180
+ background: rgba($color-gray-5, .1);
181
+ }
164
182
 
165
- .ecs-spinner{
166
- margin-left: $spacing-5;
183
+ &.disabled{
184
+ border: 1px solid $color-gray-3;
185
+ box-shadow: none;
186
+ cursor: not-allowed;
187
+ color: $color-gray-7;
188
+ }
189
+ }
167
190
  }
168
191
 
169
- .push-right{
170
- margin-left: auto;
171
- padding-right: $spacing-10;
192
+ &-select{
193
+ position: absolute;
194
+ left: 0;
195
+ right: auto;
196
+ bottom: 34px;
197
+ z-index: 1000;
198
+ background-color: #fff;
199
+ box-shadow: 0 0 0 1px rgba($color-gray-15, .08), 0 1px 3px 0 rgba($color-gray-15, 0.15);
200
+ border-radius: $border-radius-small;
201
+ max-height: 30vh;
202
+ overflow: auto;
172
203
  }
173
204
  }
174
205
 
175
- .fade-enter-active, .fade-leave-active {
176
- transition: all .15s;
206
+ .dropdown-enter-active,
207
+ .dropdown-leave-active {
208
+ transition: all .3s;
177
209
  }
178
210
 
179
- .fade-enter, .fade-leave-to {
211
+ .dropdown-enter,
212
+ .dropdown-leave-to {
180
213
  opacity: 0;
181
- transform: scale(.2);
214
+ transform: translateY(10px);
182
215
  }
183
216
  </style>