@everchron/ec-shards 0.8.7 → 0.8.10

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 (84) hide show
  1. package/dist/ec-shards.common.js +1071 -343
  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 +1071 -343
  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/color-bucket.svg +7 -0
  12. package/src/components/button-toolbar-icon/button-toolbar-icon.vue +0 -4
  13. package/src/components/dropdown/dropdown.vue +117 -0
  14. package/src/components/index.js +4 -0
  15. package/src/components/swatches-picker/swatches-picker.vue +188 -0
  16. package/src/{assets/images → stories/collection-control}/.DS_Store +0 -0
  17. package/src/stories/comment/.DS_Store +0 -0
  18. package/src/stories/data-card/.DS_Store +0 -0
  19. package/src/stories/data-list-item/.DS_Store +0 -0
  20. package/src/stories/dialog/.DS_Store +0 -0
  21. package/src/stories/dialog-header/.DS_Store +0 -0
  22. package/src/stories/directory-entry/.DS_Store +0 -0
  23. package/src/stories/document-state/.DS_Store +0 -0
  24. package/src/stories/dropdown/dropdown.stories.js +38 -0
  25. package/src/stories/dropzone/.DS_Store +0 -0
  26. package/src/stories/empty-state/.DS_Store +0 -0
  27. package/src/stories/excerpt-snippet/.DS_Store +0 -0
  28. package/src/stories/file-icon/.DS_Store +0 -0
  29. package/src/stories/file-list-item/.DS_Store +0 -0
  30. package/src/stories/flag/.DS_Store +0 -0
  31. package/src/stories/form-group/.DS_Store +0 -0
  32. package/src/stories/form-headline/.DS_Store +0 -0
  33. package/src/stories/form-set/.DS_Store +0 -0
  34. package/src/stories/formatted/.DS_Store +0 -0
  35. package/src/stories/icon/.DS_Store +0 -0
  36. package/src/stories/index-toolbar/.DS_Store +0 -0
  37. package/src/stories/info-tooltip/.DS_Store +0 -0
  38. package/src/stories/input/.DS_Store +0 -0
  39. package/src/stories/input-group/.DS_Store +0 -0
  40. package/src/stories/input-search/.DS_Store +0 -0
  41. package/src/stories/jumper-document/.DS_Store +0 -0
  42. package/src/stories/jumper-index/.DS_Store +0 -0
  43. package/src/stories/jumper-page/.DS_Store +0 -0
  44. package/src/stories/layout-data-table/.DS_Store +0 -0
  45. package/src/stories/layout-directory/.DS_Store +0 -0
  46. package/src/stories/layout-index/.DS_Store +0 -0
  47. package/src/stories/map/.DS_Store +0 -0
  48. package/src/stories/modal/.DS_Store +0 -0
  49. package/src/stories/multiselect-option/.DS_Store +0 -0
  50. package/src/stories/multiselect-search-token/.DS_Store +0 -0
  51. package/src/stories/multiselect-token/.DS_Store +0 -0
  52. package/src/stories/overlay/.DS_Store +0 -0
  53. package/src/stories/pagination/.DS_Store +0 -0
  54. package/src/stories/party-entry/.DS_Store +0 -0
  55. package/src/stories/popover-header/.DS_Store +0 -0
  56. package/src/stories/popover-list/.DS_Store +0 -0
  57. package/src/stories/popover-list-headline/.DS_Store +0 -0
  58. package/src/stories/popover-list-item/.DS_Store +0 -0
  59. package/src/stories/progress/.DS_Store +0 -0
  60. package/src/stories/quicklink/.DS_Store +0 -0
  61. package/src/stories/radiobutton/.DS_Store +0 -0
  62. package/src/stories/rating-favorability/.DS_Store +0 -0
  63. package/src/stories/rating-star-read/.DS_Store +0 -0
  64. package/src/stories/rating-star-write/.DS_Store +0 -0
  65. package/src/stories/scroll-container/.DS_Store +0 -0
  66. package/src/stories/section/.DS_Store +0 -0
  67. package/src/stories/segment/.DS_Store +0 -0
  68. package/src/stories/select/.DS_Store +0 -0
  69. package/src/stories/sequence-map-button/.DS_Store +0 -0
  70. package/src/stories/sidebar/.DS_Store +0 -0
  71. package/src/stories/sidebar-footer/.DS_Store +0 -0
  72. package/src/stories/sidebar-header/.DS_Store +0 -0
  73. package/src/stories/skeleton-loader/.DS_Store +0 -0
  74. package/src/stories/sortbutton/.DS_Store +0 -0
  75. package/src/stories/sticker/.DS_Store +0 -0
  76. package/src/stories/structured-content/.DS_Store +0 -0
  77. package/src/stories/swatches-picker/swatches-picker.stories.js +34 -0
  78. package/src/stories/switch/.DS_Store +0 -0
  79. package/src/stories/tabs/.DS_Store +0 -0
  80. package/src/stories/tag/.DS_Store +0 -0
  81. package/src/stories/toast/.DS_Store +0 -0
  82. package/src/stories/tree-list/.DS_Store +0 -0
  83. package/src/stories/tree-list-item/.DS_Store +0 -0
  84. package/src/stories/video/.DS_Store +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@everchron/ec-shards",
3
- "version": "0.8.7",
3
+ "version": "0.8.10",
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 CHANGED
Binary file
Binary file
@@ -0,0 +1,7 @@
1
+ <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M9.86283 19.7861L5.809 15.7323C4.91308 14.8364 4.91308 13.3847 5.809 12.4888L11.9125 6.38531L19.2098 13.6826L13.1063 19.7861C12.2104 20.681 10.7577 20.681 9.86283 19.7861V19.7861Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" vector-effect="non-scaling-stroke" />
3
+ <path vector-effect="non-scaling-stroke" d="M22.4566 16.9218C22.4566 16.9218 20.1632 19.4102 20.1632 20.9356C20.1632 22.1966 21.1956 23.229 22.4566 23.229C23.7176 23.229 24.75 22.1966 24.75 20.9345C24.75 19.4102 22.4566 16.9218 22.4566 16.9218V16.9218Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path vector-effect="non-scaling-stroke" d="M11.9125 6.3875L10.7317 5.185" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
5
+ <path vector-effect="non-scaling-stroke" d="M19.2142 13.6783H5.17416" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
6
+ <path vector-effect="non-scaling-stroke" d="M5.705 25.2267H15" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
7
+ </svg>
@@ -19,10 +19,6 @@
19
19
  export default {
20
20
  components: { EcsIcon },
21
21
 
22
- mounted(){
23
- console.log('subIcon', this.subIcon)
24
- },
25
-
26
22
  props: {
27
23
  icon: {
28
24
  type: String,
@@ -0,0 +1,117 @@
1
+ <template>
2
+ <div @click="handleClick" class="ecs-dropdown" :class="[sizeClass, disabled ? 'disabled' : '', inline ? 'inline' : '']">
3
+ <div class="ecs-dropdown-inner">
4
+ <slot></slot>
5
+ </div>
6
+ </div>
7
+ </template>
8
+
9
+ <script>
10
+ export default {
11
+ props: {
12
+ /** Sets the size of the dropdown component. */
13
+ size: {
14
+ type: String,
15
+ validator: v => ['sml', 'md', 'lg'].includes(v),
16
+ default: 'md'
17
+ },
18
+ /** Turns the dropdown into disabled mode. */
19
+ disabled: {
20
+ type: Boolean,
21
+ default: false
22
+ },
23
+ /** Sets the dropdown to an inline element, which means it will adjust to the width of it's content, not to parent width. */
24
+ inline: {
25
+ type: Boolean,
26
+ default: false
27
+ }
28
+ },
29
+
30
+ computed: {
31
+ sizeClass() {
32
+ if (this.size && this.size !== '')
33
+ return `ecs-dropdown-${this.size}`
34
+ return this.size
35
+ }
36
+ },
37
+
38
+ methods: {
39
+ handleClick (e) {
40
+ if(!this.disabled)
41
+ /** Emits the click event, if dropdown is not set to disabled. */
42
+ this.$emit('click', e)
43
+ }
44
+ }
45
+ }
46
+ </script>
47
+
48
+ <style lang="scss" scoped>
49
+ @import "../tokens/tokens";
50
+ @import "../mixins/svg-uri";
51
+
52
+ .ecs-dropdown{
53
+ display: flex;
54
+ align-items: center;
55
+ border: $input-border-width solid rgba($gray-8, .4);
56
+ border-radius: 4px;
57
+ position: relative;
58
+ background: #FFF;
59
+ transition: .2s;
60
+ cursor: pointer;
61
+ user-select: none;
62
+
63
+ &:hover,
64
+ &:focus{
65
+ border-color: darken(rgba($gray-8, .4), 4%);
66
+ box-shadow: 0 1px 1px rgba($gray-8, .1);
67
+
68
+ &:after{
69
+ opacity: .5;
70
+ }
71
+ }
72
+
73
+ &.inline{
74
+ display: inline-flex;
75
+ }
76
+
77
+ &.disabled{
78
+ cursor: not-allowed;
79
+ opacity: .5;
80
+ }
81
+
82
+ &:after{
83
+ width: 11px;
84
+ height: 7px;
85
+ content: "";
86
+ opacity: .4;
87
+ transition: .2s;
88
+ margin-left: 16px;
89
+ flex-shrink: 0;
90
+ background: svg-uri('<svg xmlns="http://www.w3.org/2000/svg" width="11" height="7" viewBox="0 0 11 7"><polyline fill="none" stroke="#{$gray-13}" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" points="2.081 2.033 5.603 5.052 9.145 2.016"/></svg>');
91
+ }
92
+
93
+ &-sml{
94
+ height: 24px;
95
+ padding: 0 8px;
96
+ font-size: 12px;
97
+ }
98
+
99
+ &-md{
100
+ height: 32px;
101
+ padding: 0 8px;
102
+ font-size: 14px;
103
+ }
104
+
105
+ &-lg{
106
+ height: 40px;
107
+ padding: 0 12px;
108
+ font-size: 14px;
109
+ }
110
+
111
+ &-inner{
112
+ display: flex;
113
+ align-items: center;
114
+ flex: 1;
115
+ }
116
+ }
117
+ </style>
@@ -32,6 +32,7 @@ import EcsDialog from "./dialog/dialog.vue"
32
32
  import EcsDialogHeader from "./dialog-header/dialog-header.vue"
33
33
  import EcsDirectoryEntry from "./directory-entry/directory-entry.vue"
34
34
  import EcsDocumentState from "./document-state/document-state.vue"
35
+ import EcsDropdown from "./dropdown/dropdown.vue"
35
36
  import EcsDropzone from "./dropzone/dropzone.vue"
36
37
  import EcsEmptyState from "./empty-state/empty-state.vue"
37
38
  import EcsExcerptSnippet from "./excerpt-snippet/excerpt-snippet.vue"
@@ -94,6 +95,7 @@ import EcsSkeletonLoader from "./skeleton-loader/skeleton-loader.vue"
94
95
  import EcsSortbutton from "./sortbutton/sortbutton.vue"
95
96
  import EcsSticker from "./sticker/sticker.vue"
96
97
  import EcsStructuredContent from "./structured-content/structured-content.vue"
98
+ import EcsSwatchesPicker from "./swatches-picker/swatches-picker.vue"
97
99
  import EcsSwitch from "./switch/switch.vue"
98
100
  import EcsTab from "./tab/tab.vue"
99
101
  import EcsTabs from "./tabs/tabs.vue"
@@ -142,6 +144,7 @@ const Components = {
142
144
  EcsDialogHeader,
143
145
  EcsDirectoryEntry,
144
146
  EcsDocumentState,
147
+ EcsDropdown,
145
148
  EcsDropzone,
146
149
  EcsEmptyState,
147
150
  EcsExcerptSnippet,
@@ -204,6 +207,7 @@ const Components = {
204
207
  EcsSortbutton,
205
208
  EcsSticker,
206
209
  EcsStructuredContent,
210
+ EcsSwatchesPicker,
207
211
  EcsSwitch,
208
212
  EcsTab,
209
213
  EcsTabs,
@@ -0,0 +1,188 @@
1
+
2
+ <template>
3
+ <div class="ecs-swatches" :class="sizeClass">
4
+ <div
5
+ v-for="item in swatches" :key="item.color"
6
+ @click="() => setColor(item)"
7
+ :title="item.title"
8
+ class="ecs-swatches-color"
9
+ :style="{backgroundColor: item.color, color: item.color}"
10
+ :class="selectedColor[0].color == item.color ? 'active' : ''">
11
+ </div>
12
+ </div>
13
+ </template>
14
+
15
+ <script>
16
+ export default {
17
+ props: {
18
+ /** Sets the size of the color picker elements. */
19
+ size: {
20
+ type: String,
21
+ validator: v => ['sml', 'md', 'lg', 'null', null].includes(v),
22
+ default: 'md'
23
+ },
24
+ /** Sets the selected color value. Must be a HEX value that exists in the swatches (data) list. */
25
+ selected: {
26
+ type: String,
27
+ validator: v => [
28
+ '#F9DF00',
29
+ '#F3A100',
30
+ '#B7EA80',
31
+ '#48E4C2',
32
+ '#489DFF',
33
+ '#B877F0',
34
+ '#FD78FD',
35
+ '#C59465',
36
+ '#858E9F',
37
+ '#227FD3',
38
+ '#5DAF00',
39
+ '#A4927A',
40
+ '#95989C',
41
+ '#D78B21',
42
+ 'null',
43
+ null
44
+ ].includes(v)
45
+ }
46
+ },
47
+
48
+ data () {
49
+ return {
50
+ swatches: [
51
+ { title: 'Yellow', color: '#F9DF00' },
52
+ { title: 'Orange', color: '#F3A100' },
53
+ { title: 'Lime', color: '#B7EA80' },
54
+ { title: 'Cyan', color: '#48E4C2' },
55
+ { title: 'Blue', color: '#489DFF' },
56
+ { title: 'Indigo', color: '#B877F0' },
57
+ { title: 'Pink', color: '#FD78FD' },
58
+ { title: 'Brown', color: '#C59465' },
59
+ { title: 'Grey', color: '#858E9F' },
60
+ { title: 'Dark Blue', color: '#227FD3' },
61
+ { title: 'Grass', color: '#5DAF00' },
62
+ { title: 'Brass', color: '#A4927A' },
63
+ { title: 'Silver', color: '#95989C' },
64
+ { title: 'Gold', color: '#D78B21' },
65
+ ],
66
+ selectedColor: [
67
+ { title: '', color: this.selected }
68
+ ]
69
+ }
70
+ },
71
+
72
+ computed: {
73
+ sizeClass() {
74
+ if (this.size && this.size !== '')
75
+ return `ecs-swatches-${this.size}`
76
+ return this.size
77
+ },
78
+
79
+ selectedTitleIndex() {
80
+ return this.swatches.findIndex(x => x.color === this.selected)
81
+ }
82
+ },
83
+
84
+ methods: {
85
+ setColor(item){
86
+ this.selectedColor.splice(0)
87
+ this.selectedColor.push(item)
88
+ }
89
+ },
90
+
91
+ mounted () {
92
+ if(this.selected)
93
+ this.selectedColor[0].title = this.swatches[this.selectedTitleIndex].title
94
+ this.$emit('input', this.selectedColor)
95
+ },
96
+
97
+ watch: {
98
+ selectedColor(){
99
+ /** Returns the selected color value as an array including the name and color. */
100
+ this.$emit('input', this.selectedColor)
101
+ },
102
+ }
103
+ }
104
+ </script>
105
+
106
+ <style lang="scss" scoped>
107
+ @import "../tokens/tokens";
108
+ @import "../mixins/svg-uri";
109
+
110
+ .ecs-swatches{
111
+ display: flex;
112
+ flex-wrap: wrap;
113
+
114
+ &-sml{
115
+ .ecs-swatches-color{
116
+ width: 20px;
117
+ height: 20px;
118
+ margin: 6px;
119
+ }
120
+ }
121
+
122
+ &-md{
123
+ .ecs-swatches-color{
124
+ width: 24px;
125
+ height: 24px;
126
+ margin: 8px;
127
+ }
128
+ }
129
+
130
+ &-lg{
131
+ .ecs-swatches-color{
132
+ width: 32px;
133
+ height: 32px;
134
+ margin: 8px;
135
+ }
136
+ }
137
+
138
+ &-color{
139
+ border-radius: 100%;
140
+ cursor: pointer;
141
+ transition: .2s;
142
+ position: relative;
143
+
144
+ &:before,
145
+ &:after{
146
+ content: "";
147
+ position: absolute;
148
+ opacity: 0;
149
+ transition: .4s;
150
+ }
151
+
152
+ &:before{
153
+ inset: 0;
154
+ box-shadow: 0 0 0 2px #FFF, 0 0 0 4px currentColor;
155
+ border-radius: 100%;
156
+ transform: scale(.8);
157
+ }
158
+
159
+ &:after{
160
+ left: 50%;
161
+ top: 50%;
162
+ width: 8px;
163
+ height: 8px;
164
+ margin: -4px 0 0 -4px;
165
+ transform: scale(.6) rotate(10deg);
166
+ background: svg-uri('<svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 4L3.73077 7L6.5 1" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>');
167
+ }
168
+
169
+ &:hover{
170
+ transform: scale(1.1);
171
+ }
172
+
173
+ &.active{
174
+ transform: scale(1.1);
175
+
176
+ &:before{
177
+ opacity: 1;
178
+ transform: scale(1);
179
+ }
180
+
181
+ &:after{
182
+ opacity: .5;
183
+ transform: scale(1) rotate(0deg);
184
+ }
185
+ }
186
+ }
187
+ }
188
+ </style>
Binary file
Binary file
Binary file
@@ -0,0 +1,38 @@
1
+ import EcsDropdown from '@components/dropdown/dropdown';
2
+
3
+ export default {
4
+ title: 'Action/Dropdown',
5
+ component: EcsDropdown
6
+ };
7
+
8
+ export const dropdown = () => ({
9
+ components: { EcsDropdown },
10
+ template: `<ecs-dropdown>
11
+ Dropdown
12
+ </ecs-dropdown>
13
+ `,
14
+ });
15
+
16
+ export const dropdownSizes = () => ({
17
+ components: { EcsDropdown },
18
+ template: `<div>
19
+ <ecs-dropdown size="sml" class="mb-6">
20
+ Dropdown
21
+ </ecs-dropdown>
22
+ <ecs-dropdown size="md" class="mb-6">
23
+ Dropdown
24
+ </ecs-dropdown>
25
+ <ecs-dropdown size="lg" class="mb-6">
26
+ Dropdown
27
+ </ecs-dropdown>
28
+ </div>
29
+ `,
30
+ });
31
+
32
+ export const dropdownInline = () => ({
33
+ components: { EcsDropdown },
34
+ template: `<ecs-dropdown inline>
35
+ Dropdown
36
+ </ecs-dropdown>
37
+ `,
38
+ });
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
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,34 @@
1
+ import EcsSwatchesPicker from '@components/swatches-picker/swatches-picker';
2
+
3
+ export default {
4
+ title: 'Input/Swatches Picker',
5
+ component: EcsSwatchesPicker
6
+ };
7
+
8
+ export const SwatchesPicker = () => ({
9
+ components: { EcsSwatchesPicker },
10
+ data() {
11
+ return {
12
+ selectedColor: [{ title: '', color: '#489DFF'}]
13
+ }
14
+ },
15
+ template: `<div>
16
+ <ecs-swatches-picker v-model="selectedColor" :selected="selectedColor[0].color" />
17
+ <hr style="border: none; border-bottom: 1px solid #DADEE6; margin: 20px 0">
18
+ {{ selectedColor[0].title }} {{ selectedColor[0].color }}
19
+ </div>`,
20
+ });
21
+
22
+ export const SwatchesPickerSizes = () => ({
23
+ components: { EcsSwatchesPicker },
24
+ data() {
25
+ return {
26
+ selectedColor: [{ title: '', color: '#F9DF00' }]
27
+ }
28
+ },
29
+ template: `<div>
30
+ <ecs-swatches-picker v-model="selectedColor" size="sml" selected="#F9DF00" />
31
+ <ecs-swatches-picker v-model="selectedColor" size="md" selected="#F9DF00" />
32
+ <ecs-swatches-picker v-model="selectedColor" size="lg" selected="#F9DF00" />
33
+ </div>`,
34
+ });
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file