@everchron/ec-shards 4.1.2 → 4.3.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 (71) hide show
  1. package/dist/ec-shards.common.js +2863 -1674
  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 +2863 -1674
  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/dist/img/EU.d180ac2d.svg +1 -0
  9. package/dist/img/login-email-mfa.33936706.svg +1 -0
  10. package/dist/img/login-email.4b81db3a.svg +1 -0
  11. package/dist/img/login-sso-azure.a49f3fe4.svg +1 -0
  12. package/dist/img/login-sso-okta.55de1bbd.svg +1 -0
  13. package/package.json +4 -2
  14. package/src/assets/icons/login-key.svg +7 -0
  15. package/src/assets/images/fill-icons/login-email-mfa.svg +1 -0
  16. package/src/assets/images/fill-icons/login-email.svg +1 -0
  17. package/src/assets/images/fill-icons/login-sso-azure.svg +1 -0
  18. package/src/assets/images/fill-icons/login-sso-okta.svg +1 -0
  19. package/src/assets/images/flags/EU.svg +1 -0
  20. package/src/components/alert/alert.vue +2 -2
  21. package/src/components/breadcrumb-button/breadcrumb-button.vue +2 -2
  22. package/src/components/button/button.vue +2 -2
  23. package/src/components/button-context/button-context.vue +1 -1
  24. package/src/components/button-more/button-more.vue +1 -1
  25. package/src/components/button-table/button-table.vue +1 -1
  26. package/src/components/button-toolbar/button-toolbar.vue +4 -4
  27. package/src/components/button-toolbar-icon/button-toolbar-icon.vue +1 -1
  28. package/src/components/collection-control/collection-control.vue +1 -1
  29. package/src/components/context-menu/context-menu.vue +215 -0
  30. package/src/components/data-card/data-card.vue +1 -1
  31. package/src/components/data-grid/data-grid-cell.vue +27 -7
  32. package/src/components/data-grid/data-grid-head-cell.vue +108 -4
  33. package/src/components/data-grid/data-grid-row.vue +25 -1
  34. package/src/components/dialog/dialog.vue +24 -46
  35. package/src/components/document-state/document-state.vue +1 -1
  36. package/src/components/empty-state/empty-state.vue +1 -1
  37. package/src/components/excerpt-snippet/excerpt-snippet.vue +1 -1
  38. package/src/components/fill-icon/fill-icon.vue +59 -0
  39. package/src/components/flag/flag.vue +5 -0
  40. package/src/components/formatted/formatted.vue +4 -15
  41. package/src/components/index.js +4 -0
  42. package/src/components/info-tooltip/info-tooltip.vue +1 -1
  43. package/src/components/input/input.vue +6 -4
  44. package/src/components/input-addon/input-addon.vue +1 -1
  45. package/src/components/input-clear/input-clear.vue +1 -1
  46. package/src/components/input-search/input-search.vue +1 -1
  47. package/src/components/multiselect-option/multiselect-option.vue +1 -1
  48. package/src/components/multiselect-search-token/multiselect-search-token.vue +2 -2
  49. package/src/components/multiselect-token/multiselect-token.vue +1 -1
  50. package/src/components/overlay/overlay.vue +1 -1
  51. package/src/components/pagination/pagination.vue +138 -105
  52. package/src/components/party-entry/party-entry.vue +2 -2
  53. package/src/components/popover-header/popover-header.vue +1 -1
  54. package/src/components/segment/segment.vue +1 -1
  55. package/src/components/select/select.vue +24 -3
  56. package/src/components/separator/separator.vue +93 -0
  57. package/src/components/sequence-map-button/sequence-map-button.vue +1 -1
  58. package/src/components/tab-button/tab-button.vue +16 -5
  59. package/src/components/transcript-state/transcript-state.vue +1 -1
  60. package/src/components/tree-list-item/tree-list-item.vue +1 -1
  61. package/src/stories/Changelog.stories.mdx +36 -0
  62. package/src/stories/context-menu/context-menu.stories.js +69 -0
  63. package/src/stories/data-grid/data-grid.stories.js +12 -6
  64. package/src/stories/fill-icon/fill-icon.stories.js +24 -0
  65. package/src/stories/flag/flag.stories.js +6 -1
  66. package/src/stories/input/input.stories.js +5 -4
  67. package/src/stories/pagination/pagination.stories.js +0 -15
  68. package/src/stories/select/select.stories.js +16 -0
  69. package/src/stories/separator/.DS_Store +0 -0
  70. package/src/stories/separator/separator.stories.js +33 -0
  71. package/src/components/tiptap/tiptap.vue +0 -246
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="ecs-data-grid-row" :class="state">
2
+ <div class="ecs-data-grid-row" :class="state" ref="grid_row">
3
3
  <div v-if="state == 'droppable'" @click="handleDropzoneClick" class="ecs-data-grid-row-drop-zone" />
4
4
 
5
5
  <!-- @slot All of the row's cells go here. There should **never** be any other child component other than EcsDataGridCell be used. -->
@@ -16,6 +16,13 @@
16
16
  type: String,
17
17
  validator: v => ['default', 'selected', 'opened', 'added', 'droppable'].includes(v),
18
18
  default: 'default'
19
+ },
20
+
21
+ /** Determines if listener should be added for listed mouse event. */
22
+ mouseEvent: {
23
+ type: String,
24
+ validator: v => ['', 'click', 'contextmenu'].includes(v),
25
+ default: ''
19
26
  }
20
27
  },
21
28
 
@@ -23,7 +30,24 @@
23
30
  handleDropzoneClick(){
24
31
  /** Emitted when clicking (eg. dropping a bunch of other rows via lift & drop) the rows dropzone. */
25
32
  this.$emit('rowdrop')
33
+ },
34
+
35
+ handleRowClick(event){
36
+ /** Emitted when left or right clicking in the component. */
37
+ this.$emit("click", event)
38
+ event.preventDefault()
39
+ event.stopPropagation()
26
40
  }
41
+ },
42
+
43
+ mounted() {
44
+ if(this.mouseEvent)
45
+ this.$refs.grid_row.addEventListener(this.mouseEvent, this.handleRowClick)
46
+ },
47
+
48
+ beforeDestroy() {
49
+ if(this.mouseEvent)
50
+ this.$refs.grid_row.removeEventListener(this.mouseEvent, this.handleRowClick)
27
51
  }
28
52
  }
29
53
  </script>
@@ -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;
@@ -159,36 +167,6 @@
159
167
  }
160
168
  }
161
169
 
162
- &-user{
163
- display: flex;
164
- align-items: center;
165
- margin: 20px 0 15px 0;
166
- background: #FFF;
167
- border-radius: $border-radius-small;
168
- padding: 10px;
169
- border: 1px solid rgba($color-gray-8, .2);
170
- text-align: left;
171
-
172
- span{
173
- display: block;
174
- }
175
-
176
- .avatar{
177
- margin-right: 12px;
178
- }
179
-
180
- .title{
181
- font-size: $type-scale-4-font-size;
182
- margin-bottom: 5px;
183
- color: $color-gray-13;
184
- }
185
-
186
- .sub{
187
- font-size: $type-scale-3-font-size;
188
- color: $color-gray-8;
189
- }
190
- }
191
-
192
170
  &-footer{
193
171
  display: flex;
194
172
  justify-content: space-between;
@@ -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>
@@ -0,0 +1,59 @@
1
+ <template>
2
+ <div class="ecs-fill-icon" :class="type" :style="{ width: width+ 'px', height: height+ 'px' }" />
3
+ </template>
4
+
5
+ <script>
6
+ export default {
7
+ props: {
8
+ /** The identifier of the icon which should show up. */
9
+ type: {
10
+ type: String,
11
+ validator: v => [
12
+ 'login-email-mfa',
13
+ 'login-email',
14
+ 'login-sso-azure',
15
+ 'login-sso-okta'
16
+ ].includes(v),
17
+ required: true
18
+ },
19
+ /** The width in pixels. When only a width is passed without a height, the icon will not be resized, but the outer container. */
20
+ width: {
21
+ type: Number
22
+ },
23
+ /** The height in pixels. When only a height is passed without a width, the icon will not be resized, but the outer container. */
24
+ height:{
25
+ type: Number
26
+ }
27
+ }
28
+ }
29
+ </script>
30
+
31
+ <style lang="scss" scoped>
32
+ @import "../../tokens/build/scss/tokens.scss";
33
+ @import "../mixins/svg-uri";
34
+
35
+ .ecs-fill-icon{
36
+ width: 16px;
37
+ height: 20px;
38
+ background-size: 100% 100%;
39
+ background-repeat: no-repeat;
40
+ background-position: left center;
41
+ position: relative;
42
+ }
43
+
44
+ .login-email-mfa{
45
+ background-image: url("../../assets/images/fill-icons/login-email-mfa.svg");
46
+ }
47
+
48
+ .login-email{
49
+ background-image: url("../../assets/images/fill-icons/login-email.svg");
50
+ }
51
+
52
+ .login-sso-azure{
53
+ background-image: url("../../assets/images/fill-icons/login-sso-azure.svg");
54
+ }
55
+
56
+ .login-sso-okta{
57
+ background-image: url("../../assets/images/fill-icons/login-sso-okta.svg");
58
+ }
59
+ </style>
@@ -17,6 +17,7 @@ export default {
17
17
  'da',
18
18
  'nl',
19
19
  'en',
20
+ 'eu',
20
21
  'gb',
21
22
  'au',
22
23
  'ca',
@@ -93,6 +94,10 @@ export default {
93
94
  background-image: url("../../assets/images/flags/GB-UKM.svg");
94
95
  }
95
96
 
97
+ &.eu{
98
+ background-image: url("../../assets/images/flags/EU.svg");
99
+ }
100
+
96
101
  &.us{
97
102
  background-image: url("../../assets/images/flags/US.svg");
98
103
  }
@@ -37,11 +37,13 @@
37
37
 
38
38
  .ecs-formatted{
39
39
  font-size: $type-scale-3-font-size;
40
- line-height: 1.4em;
41
- min-height: 1.4em;
40
+ line-height: $type-scale-3-line-height;
41
+ min-height: $type-scale-3-line-height;
42
42
 
43
43
  &-sml{
44
44
  font-size: $type-scale-2-font-size;
45
+ line-height: $type-scale-2-line-height;
46
+ min-height: $type-scale-2-line-height;
45
47
  }
46
48
 
47
49
  p{
@@ -77,19 +79,6 @@
77
79
  opacity: 1;
78
80
  }
79
81
  }
80
-
81
- &[href*="//"]:not([href*="everchron.com"]):after,
82
- &[href*="//"]:not([href*="everchron.me"]):after,
83
- &[href*="//"]:not([href*="everchron.co.uk"]):after,
84
- &[href*="//"]:not([href*="everchron.com.au"]):after,
85
- &[href*="//"]:not([href*="everchron.wtf"]):after{
86
- content: "";
87
- background: svg-uri('<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8"><path fill="#858E9E" d="M7.625,3.5 C7.524,3.5 7.434,3.459 7.366,3.395 C7.364,3.393 7.361,3.393 7.359,3.391 L6.427,2.458 L4.067,4.818 C3.823,5.061 3.427,5.061 3.183,4.818 C2.939,4.574 2.939,4.178 3.183,3.934 L5.542,1.575 L4.609,0.641 C4.607,0.639 4.607,0.636 4.605,0.634 C4.541,0.566 4.5,0.476 4.5,0.375 C4.5,0.168 4.668,0 4.875,0 L7.5,0 C7.776,0 8,0.224 8,0.5 L8,3.125 C8,3.332 7.832,3.5 7.625,3.5 Z M1,2.25 L1,6.75 C1,6.888 1.112,7 1.25,7 L5.75,7 C5.888,7 6,6.888 6,6.75 L6,4 L7,5 L7,7 C7,7.553 6.553,8 6,8 L1,8 C0.448,8 0,7.553 0,7 L0,2 C0,1.448 0.448,1 1,1 L3,1 L4,2 L1.25,2 C1.112,2 1,2.112 1,2.25 Z"/></svg>');
88
- width: 8px;
89
- display: inline-block;
90
- height: 8px;
91
- margin-left: 4px;
92
- }
93
82
  }
94
83
 
95
84
  ul{
@@ -48,6 +48,7 @@ import EcsEntryLink from "./entry-link/entry-link.vue"
48
48
  import EcsExcerptSnippet from "./excerpt-snippet/excerpt-snippet.vue"
49
49
  import EcsFavicon from "./favicon/favicon.vue"
50
50
  import EcsFileIcon from "./file-icon/file-icon.vue"
51
+ import EcsFillIcon from "./fill-icon/fill-icon.vue"
51
52
  import EcsFileList from "./file-list/file-list.vue"
52
53
  import EcsFileListItem from "./file-list-item/file-list-item.vue"
53
54
  import EcsFlag from "./flag/flag.vue"
@@ -102,6 +103,7 @@ import EcsSection from "./section/section.vue"
102
103
  import EcsSegment from "./segment/segment.vue"
103
104
  import EcsSelect from "./select/select.vue"
104
105
  import EcsSelectTile from "./select-tile/select-tile.vue"
106
+ import EcsSeparator from "./separator/separator.vue"
105
107
  import EcsSequenceMap from "./sequence-map/sequence-map.vue"
106
108
  import EcsSequenceMapButton from "./sequence-map-button/sequence-map-button.vue"
107
109
  import EcsSidebar from "./sidebar/sidebar.vue"
@@ -177,6 +179,7 @@ const Components = {
177
179
  EcsExcerptSnippet,
178
180
  EcsFavicon,
179
181
  EcsFileIcon,
182
+ EcsFillIcon,
180
183
  EcsFileList,
181
184
  EcsFileListItem,
182
185
  EcsFlag,
@@ -231,6 +234,7 @@ const Components = {
231
234
  EcsSegment,
232
235
  EcsSelect,
233
236
  EcsSelectTile,
237
+ EcsSeparator,
234
238
  EcsSequenceMap,
235
239
  EcsSequenceMapButton,
236
240
  EcsSidebar,
@@ -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
 
@@ -163,13 +163,16 @@
163
163
  border: 0;
164
164
  }
165
165
 
166
- &:disabled,
167
- &[readonly] {
166
+ &:disabled{
168
167
  background-color: rgba($color-gray-6, .15);
169
168
  color: $color-gray-8;
170
169
  cursor: default;
171
170
  }
172
171
 
172
+ &[readonly] {
173
+ cursor: default;
174
+ }
175
+
173
176
  &-subtle{
174
177
  background-color: rgba($color-gray-8, .15);
175
178
  border: 1px solid rgba($color-gray-8, .2);
@@ -180,8 +183,7 @@
180
183
  box-shadow: none;
181
184
  }
182
185
 
183
- &:disabled,
184
- &[readonly] {
186
+ &:disabled{
185
187
  background-color: rgba($color-gray-8, .1);
186
188
  border: 1px solid rgba($color-gray-8, .1);
187
189
  opacity: .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>