@everchron/ec-shards 6.0.5 → 6.1.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 (90) hide show
  1. package/dist/ec-shards.common.js +7436 -1819
  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 +7436 -1819
  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/.DS_Store +0 -0
  10. package/src/assets/.DS_Store +0 -0
  11. package/src/assets/icons/chevron-down.svg +3 -0
  12. package/src/assets/icons/chevron-up.svg +3 -0
  13. package/src/assets/images/.DS_Store +0 -0
  14. package/src/assets/images/flags/.DS_Store +0 -0
  15. package/src/components/.DS_Store +0 -0
  16. package/src/components/data-grid/data-grid.vue +0 -1
  17. package/src/components/entry-link/entry-link.vue +8 -3
  18. package/src/components/index.js +2 -0
  19. package/src/components/multiselect-search-token/multiselect-search-token.vue +34 -2
  20. package/src/components/select-text/select-text.vue +243 -0
  21. package/src/stories/Changelog.stories.mdx +8 -0
  22. package/src/stories/collection-control/.DS_Store +0 -0
  23. package/src/stories/comment/.DS_Store +0 -0
  24. package/src/stories/data-card/.DS_Store +0 -0
  25. package/src/stories/data-list/.DS_Store +0 -0
  26. package/src/stories/dialog/.DS_Store +0 -0
  27. package/src/stories/dialog-header/.DS_Store +0 -0
  28. package/src/stories/directory-entry/.DS_Store +0 -0
  29. package/src/stories/document-state/.DS_Store +0 -0
  30. package/src/stories/dropzone/.DS_Store +0 -0
  31. package/src/stories/empty-state/.DS_Store +0 -0
  32. package/src/stories/excerpt-snippet/.DS_Store +0 -0
  33. package/src/stories/file-icon/.DS_Store +0 -0
  34. package/src/stories/file-list-item/.DS_Store +0 -0
  35. package/src/stories/flag/.DS_Store +0 -0
  36. package/src/stories/form-group/.DS_Store +0 -0
  37. package/src/stories/form-headline/.DS_Store +0 -0
  38. package/src/stories/form-set/.DS_Store +0 -0
  39. package/src/stories/formatted/.DS_Store +0 -0
  40. package/src/stories/icon/.DS_Store +0 -0
  41. package/src/stories/index-toolbar/.DS_Store +0 -0
  42. package/src/stories/info-tooltip/.DS_Store +0 -0
  43. package/src/stories/input/.DS_Store +0 -0
  44. package/src/stories/input-group/.DS_Store +0 -0
  45. package/src/stories/input-search/.DS_Store +0 -0
  46. package/src/stories/jumper-document/.DS_Store +0 -0
  47. package/src/stories/jumper-index/.DS_Store +0 -0
  48. package/src/stories/jumper-page/.DS_Store +0 -0
  49. package/src/stories/layout-data-table/.DS_Store +0 -0
  50. package/src/stories/layout-directory/.DS_Store +0 -0
  51. package/src/stories/layout-index/.DS_Store +0 -0
  52. package/src/stories/map/.DS_Store +0 -0
  53. package/src/stories/modal/.DS_Store +0 -0
  54. package/src/stories/multiselect-option/.DS_Store +0 -0
  55. package/src/stories/multiselect-search-token/.DS_Store +0 -0
  56. package/src/stories/multiselect-search-token/multiselect-search-token.stories.js +16 -0
  57. package/src/stories/multiselect-token/.DS_Store +0 -0
  58. package/src/stories/overlay/.DS_Store +0 -0
  59. package/src/stories/pagination/.DS_Store +0 -0
  60. package/src/stories/party-entry/.DS_Store +0 -0
  61. package/src/stories/popover-header/.DS_Store +0 -0
  62. package/src/stories/popover-list/.DS_Store +0 -0
  63. package/src/stories/popover-list-headline/.DS_Store +0 -0
  64. package/src/stories/popover-list-item/.DS_Store +0 -0
  65. package/src/stories/progress/.DS_Store +0 -0
  66. package/src/stories/quicklink/.DS_Store +0 -0
  67. package/src/stories/radiobutton/.DS_Store +0 -0
  68. package/src/stories/rating-favorability/.DS_Store +0 -0
  69. package/src/stories/rating-star-read/.DS_Store +0 -0
  70. package/src/stories/rating-star-write/.DS_Store +0 -0
  71. package/src/stories/scroll-container/.DS_Store +0 -0
  72. package/src/stories/section/.DS_Store +0 -0
  73. package/src/stories/segment/.DS_Store +0 -0
  74. package/src/stories/select/.DS_Store +0 -0
  75. package/src/stories/select-text/select-text.stories.js +95 -0
  76. package/src/stories/separator/.DS_Store +0 -0
  77. package/src/stories/sequence-map-button/.DS_Store +0 -0
  78. package/src/stories/sidebar/.DS_Store +0 -0
  79. package/src/stories/skeleton-loader/.DS_Store +0 -0
  80. package/src/stories/sortbutton/.DS_Store +0 -0
  81. package/src/stories/sticker/.DS_Store +0 -0
  82. package/src/stories/structured-content/.DS_Store +0 -0
  83. package/src/stories/switch/.DS_Store +0 -0
  84. package/src/stories/tabs/.DS_Store +0 -0
  85. package/src/stories/tag/.DS_Store +0 -0
  86. package/src/stories/toast/.DS_Store +0 -0
  87. package/src/stories/transcript-state/.DS_Store +0 -0
  88. package/src/stories/tree-list/.DS_Store +0 -0
  89. package/src/stories/video/.DS_Store +0 -0
  90. package/package-lock.json +0 -21148
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@everchron/ec-shards",
3
- "version": "6.0.5",
3
+ "version": "6.1.0",
4
4
  "private": false,
5
5
  "description": "Everchron Shards UI Library",
6
6
  "repository": "https://github.com/everchron/ec-shards.git",
package/src/.DS_Store ADDED
Binary file
Binary file
@@ -0,0 +1,3 @@
1
+ <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M22.5 11.0042L14.9775 18.5L7.5 11" vector-effect="non-scaling-stroke" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M22.5 18.7458L14.9775 11.25L7.49999 18.75" vector-effect="non-scaling-stroke" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
Binary file
Binary file
@@ -34,7 +34,6 @@
34
34
 
35
35
  methods: {
36
36
  tableScroll(){
37
- console.log('ts', this.$refs.dataGridScroller.scrollHeight, this.$refs.dataGridScroller.clientHeight, this.$refs.dataGridScroller.scrollTop)
38
37
  const percentScrolled = 100 * ((this.$refs.dataGridScroller.scrollTop + this.$refs.dataGridScroller.clientHeight) / this.$refs.dataGridScroller.scrollHeight)
39
38
  this.$emit('tableScroll', percentScrolled)
40
39
  }
@@ -70,9 +70,14 @@
70
70
  },
71
71
 
72
72
  methods: {
73
- handleClick(e){
74
- /** Emitted when the link itself is clicked. */
75
- this.$emit('linkClick', e)
73
+ handleClick(e) {
74
+ if (e.metaKey) {
75
+ /** Emitted when the link is clicked with Command (Mac)/Controls (Windows) key. */
76
+ this.$emit('linkClickExternal', e)
77
+ } else {
78
+ /** Emitted when the link itself is clicked. */
79
+ this.$emit('linkClick', e)
80
+ }
76
81
  },
77
82
 
78
83
  handleMoreButtonClick(e){
@@ -103,6 +103,7 @@ import EcsScrollContainer from "./scroll-container/scroll-container.vue"
103
103
  import EcsSection from "./section/section.vue"
104
104
  import EcsSegment from "./segment/segment.vue"
105
105
  import EcsSelect from "./select/select.vue"
106
+ import EcsSelectText from "./select-text/select-text.vue"
106
107
  import EcsSelectTile from "./select-tile/select-tile.vue"
107
108
  import EcsSeparator from "./separator/separator.vue"
108
109
  import EcsSequenceMap from "./sequence-map/sequence-map.vue"
@@ -236,6 +237,7 @@ const Components = {
236
237
  EcsSection,
237
238
  EcsSegment,
238
239
  EcsSelect,
240
+ EcsSelectText,
239
241
  EcsSelectTile,
240
242
  EcsSeparator,
241
243
  EcsSequenceMap,
@@ -2,7 +2,10 @@
2
2
  <div class="ecs-multiselect-search-token" :class="typeClass">
3
3
  <div v-if="icon || operator" class="symbol">
4
4
  <ecs-icon :type="icon" size="20" color="#FFF" />
5
- <div v-if="operator" class="operator">{{ operator }}</div>
5
+ <div v-if="operator && !operatorSelect" class="operator">{{ operator }}</div>
6
+ <ecs-select-text v-if="operatorSelect" @change="handleOperatorChange" size="xsml" :value="operator" class="operator-select">
7
+ <option v-for="option in operatorSelectOptions" :value="option" :key="option">{{ option }}</option>
8
+ </ecs-select-text>
6
9
  </div>
7
10
  <div class="query">
8
11
  <div v-if="descriptor" class="descriptor">{{ descriptor }}</div>
@@ -16,10 +19,12 @@
16
19
 
17
20
  <script>
18
21
  import EcsIcon from '../icon/icon'
22
+ import EcsSelectText from '../select-text/select-text'
19
23
 
20
24
  export default {
21
25
  components: {
22
- EcsIcon
26
+ EcsIcon,
27
+ EcsSelectText
23
28
  },
24
29
  props: {
25
30
  /** Sets the type of the search token: default should be used for any search query that is not a NOT query. */
@@ -32,6 +37,17 @@
32
37
  operator: {
33
38
  type: String
34
39
  },
40
+ /** Shows the operator select dropdown. When the dropdown is shown, the `operator` won't be shown. This is also the default value of the operator select dropdown.*/
41
+ operatorSelect: {
42
+ type: Boolean
43
+ },
44
+ /** The available options for an operator select, which allows the user to switch between search operators, such as and, or, not... */
45
+ operatorSelectOptions: {
46
+ type: Array,
47
+ default() {
48
+ return ['and','or','not']
49
+ }
50
+ },
35
51
  /** Allows to add a descriptor label to the token. This can be used for e.g. different date like "Document Date", "Sent Date", "Added Date", etc. */
36
52
  descriptor: {
37
53
  type: String
@@ -49,6 +65,14 @@
49
65
  return `ecs-multiselect-search-token-${this.type}`
50
66
  return this.type
51
67
  }
68
+ },
69
+
70
+ methods: {
71
+ handleOperatorChange(event) {
72
+ const newValue = event.target.value.toLowerCase();
73
+ /** Emitted when the operator type is changed via the `operatorSelect` dropdown. Returns the selected value. */
74
+ this.$emit('operatorChange', newValue);
75
+ }
52
76
  }
53
77
  }
54
78
  </script>
@@ -119,6 +143,14 @@
119
143
  font-weight: 700;
120
144
  margin: 0 3px;
121
145
  line-height: 20px;
146
+ text-transform: uppercase;
147
+ }
148
+
149
+ .operator-select{
150
+ color: #FFF;
151
+ font-weight: 700;
152
+ margin: 0 3px;
153
+ text-transform: uppercase;
122
154
  }
123
155
 
124
156
  .symbol,
@@ -0,0 +1,243 @@
1
+ <template>
2
+ <div class="ecs-form-select-text" :class="[sizeClass, typeClass, disabled ? `disabled` : null]">
3
+ <span>
4
+ {{ selectedText }}
5
+ </span>
6
+ <ecs-icon type="chevron-down" :size="chevronSize" />
7
+ <select ref="select"
8
+ @change="onChange"
9
+ @focus="$emit('focus', $event)"
10
+ @blur="$emit('blur', $event)"
11
+ v-bind="{ id, name, disabled }"
12
+ :class="alignment=='right' ? 'right' : ''"
13
+ >
14
+ <slot></slot>
15
+ </select>
16
+ </div>
17
+ </template>
18
+
19
+ <script>
20
+ import EcsIcon from '../icon/icon'
21
+
22
+ export default {
23
+ components: { EcsIcon },
24
+
25
+ props: {
26
+ /** Determines the size of the select control. */
27
+ size: {
28
+ type: String,
29
+ validator: v => ['xsml', 'sml', 'md', 'lg', 'null', null].includes(v),
30
+ default: 'md'
31
+ },
32
+ /** Disables the input. */
33
+ disabled: {
34
+ type: Boolean,
35
+ default: false
36
+ },
37
+ /** Sets the `id` attribute. */
38
+ id: String,
39
+ /** Sets the `name` attribute. */
40
+ name: String,
41
+ /** Allows to programmatically select a specific option item via it's value. */
42
+ value: String,
43
+ /** Allows to programmatically set the content alignment of the dropdown content. */
44
+ alignment: {
45
+ type: String,
46
+ default: "left"
47
+ },
48
+ /** Adds a preselected, disabled <option> to the select which can serve as a placeholder. */
49
+ placeholder: {
50
+ type: String
51
+ },
52
+ /** Allows to programmatically select a specific option item via it's value. */
53
+ value: {
54
+ type: String
55
+ }
56
+ },
57
+
58
+ data() {
59
+ return {
60
+ hasPlaceholder: false,
61
+ currentValue: this.value || '',
62
+ setValue: this.value || '',
63
+ selectedText: this.placeholder || 'Select'
64
+ }
65
+ },
66
+
67
+ computed: {
68
+ sizeClass() {
69
+ if (this.size && this.size !== '')
70
+ return `ecs-form-select-text-${this.size}`
71
+ return this.size
72
+ },
73
+
74
+ chevronSize(){
75
+ switch (this.size) {
76
+ case "xsml":
77
+ return "10px";
78
+ case "sml":
79
+ return "12px";
80
+ case "md":
81
+ return "14px";
82
+ case "lg":
83
+ return "16px";
84
+ default:
85
+ return "14px";
86
+ }
87
+ },
88
+
89
+ typeClass() {
90
+ if (this.type && this.type !== '')
91
+ return `ecs-form-select-text-${this.type}`
92
+ return this.type
93
+ }
94
+ },
95
+
96
+ mounted: function () {
97
+ if (this.placeholder && this.placeholder !== '') {
98
+ this.hasPlaceholder = true
99
+ }
100
+
101
+ this.$nextTick(() => {
102
+ const select = this.$refs.select;
103
+ const option = Array.from(select.options).find((option) => {
104
+ if (option.value && this.value) {
105
+ return option.value.toLowerCase() === this.value.toLowerCase();
106
+ }
107
+ return false;
108
+ });
109
+
110
+ if (option) {
111
+ option.selected = true
112
+ if (this.value !== this.currentValue) {
113
+ this.currentValue = this.value
114
+ }
115
+ else {
116
+ this.selectedText = option.text
117
+ }
118
+ }
119
+ })
120
+ },
121
+
122
+ methods: {
123
+ onChange(event) {
124
+ this.currentValue = event.target.value;
125
+ this.hasPlaceholder = false
126
+ this.$emit('change', event)
127
+ }
128
+ },
129
+
130
+ watch: {
131
+ value: function(newValue) {
132
+ const select = this.$refs.select;
133
+ const option = Array.from(select.options).find((option) => option.value === newValue);
134
+
135
+ if (option) {
136
+ option.selected = true
137
+ if (newValue !== this.currentValue) {
138
+ this.currentValue = newValue
139
+ this.$emit('change', { target: { value: newValue } });
140
+ }
141
+ }
142
+ },
143
+
144
+ currentValue: function(newValue) {
145
+ const select = this.$refs.select;
146
+ const option = Array.from(select.options).find((option) => option.value === this.currentValue);
147
+ this.selectedText = option.text
148
+ }
149
+ }
150
+ }
151
+ </script>
152
+
153
+ <style lang="scss" scoped>
154
+ @import "../../tokens/build/scss/tokens.scss";
155
+ @import "../mixins/svg-uri";
156
+
157
+ .ecs-form-select-text{
158
+ overflow: hidden;
159
+ position: relative;
160
+ display: inline-flex;
161
+ align-items: center;
162
+
163
+ &.disabled{
164
+ opacity: .5;
165
+ cursor: not-allowed;
166
+ }
167
+
168
+ .icon{
169
+ opacity: .5;
170
+ }
171
+
172
+ select{
173
+ border: none;
174
+ box-shadow: none;
175
+ background: transparent;
176
+ background-image: none;
177
+ -webkit-appearance: none;
178
+ appearance: none;
179
+ position: absolute;
180
+ inset: 0;
181
+ opacity: 0;
182
+ z-index: 1;
183
+
184
+ &:focus{
185
+ outline: none;
186
+ }
187
+
188
+ option[value=""][disabled] {
189
+ display: none;
190
+ }
191
+
192
+ &.right{
193
+ direction: rtl;
194
+ }
195
+ }
196
+
197
+ &-xsml{
198
+ column-gap: 2px;
199
+ padding: 3px 0;
200
+
201
+ > span{
202
+ font-size: 8px;
203
+ line-height: $type-scale-1-line-height;
204
+ }
205
+ select{
206
+ font-size: $type-scale-2-font-size;
207
+ }
208
+ }
209
+
210
+ &-sml{
211
+ column-gap: 2px;
212
+ padding: 2px 0;
213
+
214
+ > span,
215
+ select{
216
+ font-size: $type-scale-2-font-size;
217
+ line-height: $type-scale-2-line-height;
218
+ }
219
+ }
220
+
221
+ &-md{
222
+ column-gap: $spacing-5;
223
+ padding: 2px 0;
224
+
225
+ > span,
226
+ select{
227
+ font-size: $type-scale-3-font-size;
228
+ line-height: $type-scale-3-line-height;
229
+ }
230
+ }
231
+
232
+ &-lg{
233
+ column-gap: $spacing-10;
234
+ padding: $spacing-5 0;
235
+
236
+ > span,
237
+ select{
238
+ font-size: $type-scale-4-font-size;
239
+ line-height: $type-scale-4-line-height;
240
+ }
241
+ }
242
+ }
243
+ </style>
@@ -6,6 +6,14 @@ import { Meta } from '@storybook/addon-docs/blocks';
6
6
  Changelog
7
7
  </h1>
8
8
 
9
+ ## Version 6.1.0 (4 May 2023)
10
+
11
+ ### Features
12
+
13
+ - New Component: Select Text
14
+ - Added operator select dropdown to SearchToken component
15
+ - Added ClickExternal event emit to EntryLink component
16
+
9
17
  ## Version 6.0.1 (21 April 2023)
10
18
 
11
19
  ### Fixes
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -13,6 +13,22 @@ export const searchToken = () => ({
13
13
  </main>`,
14
14
  });
15
15
 
16
+ export const searchTokenReadOnlyOperator = () => ({
17
+ components: { EcsMultiselectSearchToken },
18
+ template: `<main>
19
+ <ecs-multiselect-search-token icon="person" operator="and">Amanda Clark</ecs-multiselect-search-token>
20
+ <ecs-multiselect-search-token type="not" operator="not" icon="person">Profiles</ecs-multiselect-search-token>
21
+ </main>`,
22
+ });
23
+
24
+ export const searchTokenOperatorDropdown = () => ({
25
+ components: { EcsMultiselectSearchToken },
26
+ template: `<main>
27
+ <ecs-multiselect-search-token icon="person" operator="and" operator-select>Amanda Clark</ecs-multiselect-search-token>
28
+ <ecs-multiselect-search-token type="not" operator="not" operator-select icon="person">Profiles</ecs-multiselect-search-token>
29
+ </main>`,
30
+ });
31
+
16
32
  export const searchTokenAddons = () => ({
17
33
  components: { EcsMultiselectSearchToken },
18
34
  template: `<main>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,95 @@
1
+ import EcsSelectText from '@components/select-text/select-text';
2
+
3
+ export default {
4
+ title: 'Input/Select Text',
5
+ component: EcsSelectText
6
+ };
7
+
8
+ export const selectText = () => ({
9
+ components: { EcsSelectText },
10
+ data() {
11
+ return {
12
+ value: 'guest'
13
+ }
14
+ },
15
+ methods: {
16
+ update(value) {
17
+ this.value = value;
18
+ }
19
+ },
20
+ template: `<div>
21
+ <div>
22
+ Set to: <button @click="value = 'admin'">admin</button>
23
+ <button @click="value = 'basic'">basic</button>
24
+ <button @click="value = 'guest'">guest</button>
25
+ </div>
26
+ <div>
27
+ <ecs-select-text class="mb-4" :value="value" @change="update($event.target.value)">
28
+ <option value="admin">Admin</option>
29
+ <option value="basic">Basic</option>
30
+ <option value="guest">Guest</option>
31
+ </ecs-select-text>
32
+ </div>
33
+ <div>
34
+ <ecs-select-text disabled>
35
+ <option value="admin">Admin</option>
36
+ <option value="basic">Basic</option>
37
+ <option value="guest">Guest</option>
38
+ </ecs-select-text>
39
+ </div>
40
+ </div>`,
41
+ });
42
+
43
+ export const selectSizes = () => ({
44
+ components: { EcsSelectText },
45
+ template: `<div>
46
+ <div>
47
+ <ecs-select-text size="xsml" class="mb-4">
48
+ <option value="admin">Admin</option>
49
+ <option value="basic">Basic</option>
50
+ <option value="guest">Guest</option>
51
+ </ecs-select-text>
52
+ </div>
53
+ <div>
54
+ <ecs-select-text size="sml" class="mb-4">
55
+ <option value="admin">Admin</option>
56
+ <option value="basic">Basic</option>
57
+ <option value="guest">Guest</option>
58
+ </ecs-select-text>
59
+ </div>
60
+ <div>
61
+ <ecs-select-text size="md" class="mb-4">
62
+ <option value="admin">Admin</option>
63
+ <option value="basic">Basic</option>
64
+ <option value="guest">Guest</option>
65
+ </ecs-select-text>
66
+ </div>
67
+ <div>
68
+ <ecs-select-text size="lg">
69
+ <option value="admin">Admin</option>
70
+ <option value="basic">Basic</option>
71
+ <option value="guest">Guest</option>
72
+ </ecs-select-text>
73
+ </div>
74
+ </div>`,
75
+ });
76
+
77
+ export const selectAlignment = () => ({
78
+ components: { EcsSelectText },
79
+ template: `<div>
80
+ <div>
81
+ <ecs-select-text alignment="left" placeholder="Left Aligned" class="mb-4">
82
+ <option value="admin">Admin</option>
83
+ <option value="basic">Basic</option>
84
+ <option value="guest">Guest</option>
85
+ </ecs-select-text>
86
+ </div>
87
+ <div>
88
+ <ecs-select-text alignment="right" placeholder="Right Aligned" class="mb-4">
89
+ <option value="admin">Admin</option>
90
+ <option value="basic">Basic</option>
91
+ <option value="guest">Guest</option>
92
+ </ecs-select-text>
93
+ </div>
94
+ </div>`,
95
+ });
Binary file