@asd20/ui 3.2.963 → 3.2.965

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
@@ -5,7 +5,7 @@
5
5
  "*.scss",
6
6
  "*.vue"
7
7
  ],
8
- "version": "3.2.963",
8
+ "version": "3.2.965",
9
9
  "private": false,
10
10
  "license": "MIT",
11
11
  "repository": {
@@ -24,7 +24,7 @@
24
24
  "release": "release-it"
25
25
  },
26
26
  "peerDependencies": {
27
- "vue": "^2.6.11"
27
+ "vue": "^2.6.14"
28
28
  },
29
29
  "dependencies": {
30
30
  "axios": "^0.19.2",
@@ -38,7 +38,6 @@
38
38
  "swiper": "^5.4.5",
39
39
  "uuid": "^3.3.2",
40
40
  "v-scroll-lock": "^1.3.1",
41
- "vue-ctk-date-time-picker": "^2.1.1",
42
41
  "vue-intersect": "^1.1.6",
43
42
  "vue-lazyload": "^1.2.6",
44
43
  "vue-mq": "^1.0.1",
@@ -47,9 +46,6 @@
47
46
  "vue-promised": "^1.0.0",
48
47
  "vue-recaptcha": "^1.2.0",
49
48
  "vue-resize": "^0.4.5",
50
- "vue-tour": "^1.1.0",
51
- "vuejs-datepicker": "^1.5.4",
52
- "vuejs-timepicker": "^0.1.4",
53
49
  "vuex": "^3.0.1"
54
50
  },
55
51
  "devDependencies": {
@@ -83,10 +79,10 @@
83
79
  "jest-image-snapshot": "^2.5.0",
84
80
  "lint-staged": "^8.1.0",
85
81
  "lodash": "^4.17.15",
86
- "sass": "^1.67.0",
87
82
  "puppeteer": "^1.9.0",
88
83
  "react": "^16.8.3",
89
84
  "release-it": "^10.2.0",
85
+ "sass": "^1.67.0",
90
86
  "sass-loader": "^7.1.0",
91
87
  "storybook-addon-vue-info": "^1.4.1",
92
88
  "stylelint": "^9.10.1",
@@ -94,12 +90,13 @@
94
90
  "stylelint-config-prettier": "^5.0.0",
95
91
  "stylelint-config-standard": "^18.2.0",
96
92
  "stylelint-scss": "^3.5.4",
93
+ "vue": "2.6.14",
97
94
  "vue-class-component": "^7.0.2",
98
95
  "vue-docgen-api": "^3.26.0",
99
96
  "vue-loader": "^15.8.3",
100
97
  "vue-router": "^3.1.4",
101
98
  "vue-style-loader": "^4.1.2",
102
- "vue-template-compiler": "^2.6.11",
99
+ "vue-template-compiler": "2.6.14",
103
100
  "vuex-pathify": "^1.1.3"
104
101
  },
105
102
  "gitHooks": {},
@@ -13,21 +13,23 @@
13
13
  v-if="imageUrl && !$slots.aside"
14
14
  class="asd20-school-homepage-video-header__image"
15
15
  >
16
- <video
17
- v-if="videoUrl"
18
- ref="backgroundVideo"
19
- class="background-video"
20
- role="presentation"
21
- aria-hidden="true"
22
- autoplay
23
- loop
24
- autobuffer
25
- muted
26
- playsinline
27
- :poster="imageUrl"
28
- >
29
- <source :src="videoUrl" type="video/mp4" />
30
- </video>
16
+ <client-only>
17
+ <video
18
+ v-if="showVideo"
19
+ ref="backgroundVideo"
20
+ class="background-video"
21
+ role="presentation"
22
+ aria-hidden="true"
23
+ autoplay
24
+ loop
25
+ autobuffer
26
+ muted
27
+ playsinline
28
+ :poster="imageUrl"
29
+ >
30
+ <source :src="videoUrl" type="video/mp4" />
31
+ </video>
32
+ </client-only>
31
33
  <button
32
34
  v-if="videoUrl"
33
35
  class="video-toggle-btn"
@@ -128,6 +130,10 @@ export default {
128
130
  this.detailLink.split('/').pop()
129
131
  )
130
132
  },
133
+ showVideo() {
134
+ const isMobile = this.mq === 'xs' || this.mq === 'sm'
135
+ return !isMobile && this.videoUrl
136
+ },
131
137
  },
132
138
  methods: {
133
139
  toggleVideo() {
@@ -9,21 +9,24 @@
9
9
  <slot name="top" />
10
10
  </div>
11
11
 
12
- <video
13
- v-if="videoUrl"
14
- ref="backgroundVideo"
15
- class="background-video"
16
- role="presentation"
17
- aria-hidden="true"
18
- autoplay
19
- loop
20
- autobuffer
21
- muted
22
- playsinline
23
- :poster="imageUrl"
24
- >
25
- <source :src="videoUrl" type="video/mp4" />
26
- </video>
12
+ <client-only>
13
+ <video
14
+ v-if="showVideo"
15
+ preload="none"
16
+ ref="backgroundVideo"
17
+ class="background-video"
18
+ role="presentation"
19
+ aria-hidden="true"
20
+ autoplay
21
+ loop
22
+ autobuffer
23
+ muted
24
+ playsinline
25
+ :poster="imageUrl"
26
+ >
27
+ <source :src="videoUrl" type="video/mp4" />
28
+ </video>
29
+ </client-only>
27
30
  <button
28
31
  v-if="videoUrl"
29
32
  class="video-toggle-btn"
@@ -89,6 +92,10 @@ export default {
89
92
  this.detailLink.split('/').pop()
90
93
  )
91
94
  },
95
+ showVideo() {
96
+ const isMobile = this.mq === 'xs' || this.mq === 'sm'
97
+ return !isMobile && this.videoUrl
98
+ },
92
99
  },
93
100
  methods: {
94
101
  toggleVideo() {
@@ -88,7 +88,6 @@
88
88
  />
89
89
  <asd20-multiselect-input
90
90
  label="Categories"
91
- aria-label="Categories"
92
91
  :taggable="false"
93
92
  :value="selectedCategories"
94
93
  :items="categoryOptions"
@@ -99,7 +99,6 @@
99
99
  />
100
100
  <asd20-multiselect-input
101
101
  label="Categories"
102
- aria-label="Categories"
103
102
  :taggable="false"
104
103
  :value="selectedCategories"
105
104
  :items="categoryOptions"
@@ -1,21 +0,0 @@
1
- import { storiesOf } from '@storybook/vue'
2
- import Asd20DateInput from '.'
3
-
4
- const info = {
5
- summary: 'Asd20DateInput',
6
- }
7
- const wrapper = {
8
- components: { Asd20DateInput },
9
- data: () => ({
10
- date: '',
11
- }),
12
- }
13
-
14
- storiesOf('Molecules - Asd20DateInput', module).add(
15
- 'Default',
16
- () => ({
17
- ...wrapper,
18
- template: `<Asd20DateInput label="Date" v-model="date" />`,
19
- }),
20
- { info }
21
- )
@@ -1,160 +0,0 @@
1
- <template>
2
- <div class="asd20-date-input" :class="classes">
3
- <label v-if="label" :for="computedId">{{ label }}</label>
4
- <div class="input-wrapper">
5
- <slot name="prefix" />
6
- <Asd20Icon v-if="icon" :name="icon" :size="iconSize" />
7
-
8
- <datepicker
9
- :id="computedId"
10
- :value="today"
11
- type="date"
12
- v-bind="$attrs"
13
- v-on="listeners"
14
- @input="input"
15
- :aria-label="hideLabel ? label : ''"
16
- format="dd MMM yyyy"
17
- />
18
-
19
- <slot name="suffix" />
20
- </div>
21
- <div
22
- class="asd20-text-input__help-text"
23
- v-if="helpText"
24
- v-html="helpText"
25
- />
26
- <div
27
- class="asd20-text-input__validation-error"
28
- v-for="(v, index) in validationErrors"
29
- :key="index"
30
- v-html="v"
31
- />
32
- </div>
33
- </template>
34
-
35
- <script>
36
- import inputComponentMixin from '../../../mixins/inputComponentMixin'
37
- import Asd20Icon from '../../atoms/Asd20Icon'
38
- import Datepicker from 'vuejs-datepicker'
39
-
40
- export default {
41
- name: 'Asd20DateInput',
42
- inheritAttrs: false,
43
- mixins: [inputComponentMixin],
44
- components: { Asd20Icon, Datepicker },
45
- methods: {
46
- input(value) {
47
- this.isDirty = true
48
- this.validate(value)
49
- this.$emit('input', value)
50
- },
51
- },
52
- data: () => {
53
- return {
54
- today: new Date(),
55
- }
56
- },
57
- }
58
- </script>
59
-
60
- <style lang="scss" scoped>
61
- @import '../../../design/_mixins.scss';
62
- @import '../../../design/_variables.scss';
63
-
64
- $input-focus-color: var(--color__accent-t50);
65
-
66
- .asd20-date-input {
67
- position: relative;
68
- align-items: center;
69
- width: 100%;
70
- margin: 0 0 space(0.5) 0;
71
-
72
- label {
73
- position: relative;
74
- display: block;
75
- width: 100%;
76
- color: var(--website-card__reverse-background-color);
77
- margin-bottom: space(0.125);
78
- }
79
-
80
- input {
81
- -webkit-appearance: none !important;
82
- box-sizing: border-box;
83
- flex-grow: 1;
84
- width: inherit;
85
- height: space(1.5);
86
- margin: 0;
87
- color: var(--website-card__reverse-background-color);
88
- border: 2px solid var(--color__accent);
89
- border-radius: 0;
90
- font-size: 1rem;
91
- line-height: 1;
92
- padding: space(0.25) space(0.25);
93
- background: white;
94
- transition: background asd20-speed(1) ease;
95
- &:not(:first-child) {
96
- margin-left: space(0.5);
97
- }
98
- &:not(:last-child) {
99
- margin-right: space(0.5);
100
- }
101
-
102
- &::-webkit-search-decoration {
103
- -webkit-appearance: none !important;
104
- }
105
-
106
- &:focus {
107
- // outline: none;
108
- box-shadow: 0 0 0 5px $input-focus-color inset;
109
- }
110
-
111
- &::-webkit-input-placeholder {
112
- opacity: 1;
113
- color: var(--color__secondary-t50);
114
- font-size: space(0.75);
115
- }
116
- &::-moz-placeholder {
117
- opacity: 1;
118
- color: var(--color__primary-t50);
119
- }
120
- &:-ms-input-placeholder {
121
- opacity: 1;
122
- color: var(--color__primary-t50);
123
- }
124
- &:-moz-placeholder {
125
- opacity: 1;
126
- color: var(--color__primary-t50);
127
- }
128
- }
129
-
130
- &__help-text {
131
- color: var(--website-card__reverse-background-color);
132
- font-size: 0.75rem;
133
- margin-top: space(0.125);
134
- }
135
-
136
- &__validation-error {
137
- color: var(--color__danger-s20);
138
- font-size: 0.75rem;
139
- margin-top: space(0.125);
140
- }
141
-
142
- &--has-errors {
143
- label {
144
- color: var(--color__danger-s20);
145
- }
146
- input {
147
- border-color: var(--color__danger);
148
- &:focus {
149
- box-shadow: 0 0 0 5px var(--color__danger) inset;
150
- }
151
- }
152
- }
153
- }
154
-
155
- .input-wrapper {
156
- display: flex;
157
- width: 100%;
158
- align-items: stretch;
159
- }
160
- </style>
@@ -1,38 +0,0 @@
1
- import { storiesOf } from '@storybook/vue'
2
- import Asd20DateTimeInput from '.'
3
-
4
- const info = {
5
- summary: 'Asd20DateTimeInput',
6
- }
7
- const wrapper = {
8
- components: { Asd20DateTimeInput },
9
- data: () => ({
10
- dateTime: '',
11
- }),
12
- }
13
-
14
- storiesOf('Molecules - Asd20DateTimeInput', module)
15
- .add(
16
- 'Default',
17
- () => ({
18
- ...wrapper,
19
- template: `<Asd20DateTimeInput label="Label" v-model="dateTime" />`,
20
- }),
21
- { info }
22
- )
23
- .add(
24
- 'Time Only',
25
- () => ({
26
- ...wrapper,
27
- template: `<Asd20DateTimeInput timeOnly v-model="dateTime" hint="Select a time"/>`,
28
- }),
29
- { info }
30
- )
31
- .add(
32
- 'Date Only',
33
- () => ({
34
- ...wrapper,
35
- template: `<Asd20DateTimeInput dateOnly v-model="dateTime" />`,
36
- }),
37
- { info }
38
- )
@@ -1,193 +0,0 @@
1
- <template>
2
- <div class="asd20-time-input" :class="classes">
3
- <label v-if="label" :for="computedId">{{ label }}</label>
4
- <div class="input-wrapper">
5
- <slot name="prefix" />
6
- <Asd20Icon v-if="icon" :name="icon" :size="iconSize" />
7
-
8
- <VueCtkDateTimePicker
9
- v-bind="$attrs"
10
- :value="value"
11
- :aria-label="hideLabel ? label : ''"
12
- v-on="listeners"
13
- @input="input"
14
- color="#0e2c6c"
15
- button-color="#0e2c6c"
16
- :only-date="dateOnly"
17
- :only-time="timeOnly"
18
- :no-label="true"
19
- no-header
20
- label
21
- />
22
- <slot name="suffix" />
23
- </div>
24
- <div
25
- class="asd20-text-input__help-text"
26
- v-if="helpText"
27
- v-html="helpText"
28
- />
29
- <div
30
- class="asd20-text-input__validation-error"
31
- v-for="(v, index) in validationErrors"
32
- :key="index"
33
- v-html="v"
34
- />
35
- </div>
36
- </template>
37
-
38
- <script>
39
- import inputComponentMixin from '../../../mixins/inputComponentMixin'
40
- import VueCtkDateTimePicker from 'vue-ctk-date-time-picker'
41
- import 'vue-ctk-date-time-picker/dist/vue-ctk-date-time-picker.css'
42
- import { parse } from 'date-fns'
43
-
44
- export default {
45
- components: { VueCtkDateTimePicker },
46
- name: 'Asd20DateTimeInput',
47
- mixins: [inputComponentMixin],
48
- inheritAttrs: false,
49
- methods: {
50
- input(value) {
51
- this.isDirty = true
52
- this.validate(value)
53
- this.$emit('input', parse(value).toISOString())
54
- },
55
- },
56
- props: {
57
- timeOnly: { type: Boolean, default: false },
58
- dateOnly: { type: Boolean, default: false },
59
- hint: { type: String, default: 'Select a date and time' },
60
- },
61
- computed: {},
62
- }
63
- </script>
64
-
65
- <style lang="scss" scoped>
66
- @import '../../../design/_mixins.scss';
67
- @import '../../../design/_variables.scss';
68
- $input-focus-color: var(--color__accent-t50);
69
- .asd20-time-input {
70
- position: relative;
71
- align-items: center;
72
- width: 100%;
73
- margin: 0 0 space(0.5) 0;
74
-
75
- label {
76
- position: relative;
77
- display: block;
78
- width: 100%;
79
- color: var(--website-card__reverse-background-color);
80
- margin-bottom: space(0.125);
81
- }
82
- .field-input {
83
- border: 2px solid var(--color__accent);
84
- border-radius: 0;
85
- padding-top: 0;
86
- font-size: 1rem;
87
- }
88
- .field.has-value:not(.no-label) .field-input {
89
- padding-top: 6px;
90
- }
91
- .custom-button.round {
92
- margin-right: 5px;
93
- }
94
- .date-time-picker .datepicker {
95
- border-radius: 0;
96
- }
97
- // button.datepicker
98
- .datepicker-container .datepicker-days .datepicker-day-effect,
99
- .time-picker-column-item-effect,
100
- .custom-button .custom-button-effect {
101
- border-radius: 0;
102
- }
103
-
104
- // .datepicker-container {
105
- // width: auto;
106
- // }
107
-
108
- input {
109
- -webkit-appearance: none !important;
110
- box-sizing: border-box;
111
- flex-grow: 1;
112
- width: inherit;
113
- height: space(1.5);
114
- margin: 0;
115
- color: var(--website-card__reverse-background-color);
116
- border: 2px solid var(--color__accent);
117
- border-radius: 0;
118
- font-size: 1rem;
119
- line-height: 1;
120
- padding: space(0.25) space(0.25);
121
- background: white;
122
- transition: background asd20-speed(1) ease;
123
- &:not(:first-child) {
124
- margin-left: space(0.5);
125
- }
126
- &:not(:last-child) {
127
- margin-right: space(0.5);
128
- }
129
-
130
- &::-webkit-search-decoration {
131
- -webkit-appearance: none !important;
132
- }
133
-
134
- &:focus {
135
- // outline: none;
136
- box-shadow: 0 0 0 5px $input-focus-color inset;
137
- }
138
-
139
- &::-webkit-input-placeholder {
140
- opacity: 1;
141
- color: var(--color__secondary-t50);
142
- font-size: space(0.75);
143
- }
144
- &::-moz-placeholder {
145
- opacity: 1;
146
- color: var(--color__primary-t50);
147
- }
148
- &:-ms-input-placeholder {
149
- opacity: 1;
150
- color: var(--color__primary-t50);
151
- }
152
- &:-moz-placeholder {
153
- opacity: 1;
154
- color: var(--color__primary-t50);
155
- }
156
- }
157
-
158
- &__help-text {
159
- color: var(--website-card__reverse-background-color);
160
- font-size: 0.75rem;
161
- margin-top: space(0.125);
162
- }
163
-
164
- &__validation-error {
165
- color: var(--color__danger-s20);
166
- font-size: 0.75rem;
167
- margin-top: space(0.125);
168
- }
169
-
170
- &--has-errors {
171
- label {
172
- color: var(--color__danger-s20);
173
- }
174
- input {
175
- border-color: var(--color__danger);
176
- &:focus {
177
- box-shadow: 0 0 0 5px var(--color__danger) inset;
178
- }
179
- }
180
- }
181
- }
182
-
183
- .input-wrapper {
184
- display: flex;
185
- width: 100%;
186
- align-items: stretch;
187
- }
188
- // @media (min-width: 600px) {
189
- // .datepicker-container {
190
- // width: 260px !important;
191
- // }
192
- // }
193
- </style>
@@ -1,68 +0,0 @@
1
- import { storiesOf } from '@storybook/vue'
2
- import Asd20TourGuide from '.'
3
- import Asd20Button from '../../atoms/Asd20Button'
4
-
5
- const info = {
6
- summary: 'Asd20TourGuide',
7
- }
8
-
9
- const wrapper = {
10
- components: { Asd20TourGuide, Asd20Button },
11
- data: () => ({
12
- steps: [
13
- {
14
- target: '#step1',
15
- header: {
16
- title: 'Step 1',
17
- },
18
- content: 'Sed posuere consectetur est at lobortis.',
19
- params: {
20
- placement: 'bottom',
21
- highlight: true,
22
- },
23
- },
24
- {
25
- target: '#step2',
26
- header: {
27
- title: 'Step 2',
28
- },
29
- content:
30
- 'Maecenas sed diam eget risus varius blandit sit amet non magna.',
31
- params: {
32
- placement: 'top',
33
- highlight: true,
34
- },
35
- },
36
- {
37
- target: '#step3',
38
- header: {
39
- title: 'Step 3',
40
- },
41
- content:
42
- 'Maecenas sed diam eget risus varius blandit sit amet non magna.',
43
- params: {
44
- placement: 'top',
45
- highlight: true,
46
- },
47
- },
48
- ],
49
- }),
50
- }
51
-
52
- storiesOf('Organisms - Asd20TourGuide', module).add(
53
- 'Default',
54
- () => ({
55
- ...wrapper,
56
- template: `<div>
57
- <Asd20TourGuide name="tour" :steps="steps"></Asd20TourGuide>
58
- <Asd20Button @click.native="$tours['tour'].start()" reversed label="Start Tour" />
59
-
60
-
61
- <p style="background: #fdd; width: 100px; height: 100px; margin-left: 200px" id="step1">Target 1</p>
62
- <p style="background: #9fd; width: 300px; height: 200px; margin-left: 300px; margin-top: 400px overflow: hidden;"><button id="step2">Target 2</button></p>
63
- <p style="background: #9fd; width: 100px; height: 100px; margin-top: 800px" id="step3">Target 2</p>
64
-
65
- </div>`,
66
- }),
67
- { info }
68
- )