@bethinkpl/design-system 22.0.2 → 22.0.4

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 (59) hide show
  1. package/dist/design-system.umd.js +423 -46
  2. package/dist/design-system.umd.js.map +1 -1
  3. package/dist/lib/js/components/Banner/Banner.vue.d.ts +1 -0
  4. package/dist/lib/js/components/Buttons/Button/Button.vue.d.ts +1 -0
  5. package/dist/lib/js/components/Buttons/IconButton/IconButton.vue.d.ts +1 -0
  6. package/dist/lib/js/components/Cards/Card/Card.consts.d.ts +22 -0
  7. package/dist/lib/js/components/Cards/Card/Card.vue.d.ts +36 -0
  8. package/dist/lib/js/components/Cards/CardExpandable/CardExpandable.vue.d.ts +4 -1
  9. package/dist/lib/js/components/Chip/Chip.vue.d.ts +1 -0
  10. package/dist/lib/js/components/Drawer/DrawerListItemGroup/DrawerListItemGroup.vue.d.ts +3 -4
  11. package/dist/lib/js/components/Drawer/DrawerSection/DrawerSection.vue.d.ts +3 -289
  12. package/dist/lib/js/components/Drawer/DrawerTile/DrawerTile.vue.d.ts +3 -63
  13. package/dist/lib/js/components/Form/Checkbox/Checkbox.vue.d.ts +1 -0
  14. package/dist/lib/js/components/Form/RadioButton/RadioButton.vue.d.ts +1 -0
  15. package/dist/lib/js/components/Headers/OverlayHeader/OverlayHeader.vue.d.ts +1 -0
  16. package/dist/lib/js/components/Headers/SectionHeader/SectionHeader.vue.d.ts +1 -0
  17. package/dist/lib/js/components/Icons/Icon/Icon.consts.d.ts +1 -0
  18. package/dist/lib/js/components/LoadingBar/LoadingBar.consts.d.ts +16 -0
  19. package/dist/lib/js/components/LoadingBar/LoadingBar.stories.d.ts +5 -0
  20. package/dist/lib/js/components/LoadingBar/LoadingBar.vue.d.ts +31 -0
  21. package/dist/lib/js/components/LoadingBar/index.d.ts +3 -0
  22. package/dist/lib/js/components/Modal/Modal.vue.d.ts +1 -0
  23. package/dist/lib/js/components/Modals/Modal/Modal.vue.d.ts +1 -0
  24. package/dist/lib/js/components/Outline/OutlineItem/OutlineItem.vue.d.ts +1 -0
  25. package/dist/lib/js/components/Pagination/Pagination.vue.d.ts +1 -0
  26. package/dist/lib/js/components/ProgressBar/ProgressBar.vue.d.ts +1 -0
  27. package/dist/lib/js/components/ProgressDonutChart/ProgressDonutChart.vue.d.ts +1 -0
  28. package/dist/lib/js/components/RichList/RichListItem/RichListItem.vue.d.ts +1 -0
  29. package/dist/lib/js/components/SelectionTile/SelectionTile.vue.d.ts +1 -0
  30. package/dist/lib/js/components/Statuses/AccessStatus/AccessStatus.vue.d.ts +1 -0
  31. package/dist/lib/js/components/Statuses/BlockadeStatus/BlockadeStatus.vue.d.ts +1 -0
  32. package/dist/lib/js/components/SurveyQuestions/SurveyQuestionOpenEnded/SurveyQuestionOpenEnded.vue.d.ts +1 -0
  33. package/dist/lib/js/components/SurveyQuestions/SurveyQuestionScale/SurveyQuestionScale.vue.d.ts +1 -0
  34. package/dist/lib/js/components/Switch/Switch.vue.d.ts +1 -0
  35. package/dist/lib/js/components/Tile/Tile.sb.shared.d.ts +1 -0
  36. package/dist/lib/js/components/Tile/Tile.vue.d.ts +1 -0
  37. package/dist/lib/js/components/Toggles/ToggleButton/ToggleButton.vue.d.ts +1 -0
  38. package/dist/lib/js/icons/fontawesome.d.ts +1 -0
  39. package/dist/lib/js/index.d.ts +2 -0
  40. package/docs/405.28e06a67.iframe.bundle.js +2 -0
  41. package/docs/iframe.html +1 -1
  42. package/docs/main.c3efc488.iframe.bundle.js +1 -0
  43. package/docs/project.json +1 -1
  44. package/lib/js/components/Cards/Card/Card.consts.ts +28 -0
  45. package/lib/js/components/Cards/Card/Card.spec.ts +9 -0
  46. package/lib/js/components/Cards/Card/Card.stories.ts +36 -3
  47. package/lib/js/components/Cards/Card/Card.vue +157 -3
  48. package/lib/js/components/Cards/CardExpandable/CardExpandable.vue +1 -3
  49. package/lib/js/components/LoadingBar/LoadingBar.consts.ts +20 -0
  50. package/lib/js/components/LoadingBar/LoadingBar.stories.ts +45 -0
  51. package/lib/js/components/LoadingBar/LoadingBar.vue +114 -0
  52. package/lib/js/components/LoadingBar/index.ts +4 -0
  53. package/lib/js/icons/fontawesome.ts +2 -0
  54. package/lib/js/index.ts +2 -0
  55. package/lib/styles/settings/_borders.scss +5 -0
  56. package/package.json +1 -1
  57. package/docs/3.9151d012.iframe.bundle.js +0 -2
  58. package/docs/main.6d41ae2b.iframe.bundle.js +0 -1
  59. /package/docs/{3.9151d012.iframe.bundle.js.LICENSE.txt → 405.28e06a67.iframe.bundle.js.LICENSE.txt} +0 -0
package/docs/project.json CHANGED
@@ -1 +1 @@
1
- {"generatedAt":1716793017337,"builder":{"name":"webpack5"},"hasCustomBabel":false,"hasCustomWebpack":true,"hasStaticDirs":false,"hasStorybookEslint":true,"refCount":0,"metaFramework":{"name":"vue-cli","packageName":"@vue/cli-service","version":"5.0.8"},"packageManager":{"type":"yarn","version":"1.22.22"},"storybookVersion":"6.5.13","language":"typescript","storybookPackages":{"@storybook/builder-webpack5":{"version":"6.5.13"},"@storybook/manager-webpack5":{"version":"6.5.13"},"@storybook/vue3":{"version":"6.5.13"},"eslint-plugin-storybook":{"version":"0.6.6"}},"framework":{"name":"vue3"},"addons":{"@storybook/addon-actions":{"version":"6.5.16"},"@storybook/addon-docs":{"version":"6.5.15"},"@storybook/addon-controls":{"version":"6.5.15"},"@storybook/addon-storysource":{"version":"6.5.15"},"@storybook/addon-viewport":{"version":"6.5.15"},"storybook-addon-designs":{"version":"6.3.1"}}}
1
+ {"generatedAt":1717609800966,"builder":{"name":"webpack5"},"hasCustomBabel":false,"hasCustomWebpack":true,"hasStaticDirs":false,"hasStorybookEslint":true,"refCount":0,"metaFramework":{"name":"vue-cli","packageName":"@vue/cli-service","version":"5.0.8"},"packageManager":{"type":"yarn","version":"1.22.22"},"storybookVersion":"6.5.13","language":"typescript","storybookPackages":{"@storybook/builder-webpack5":{"version":"6.5.13"},"@storybook/manager-webpack5":{"version":"6.5.13"},"@storybook/vue3":{"version":"6.5.13"},"eslint-plugin-storybook":{"version":"0.6.6"}},"framework":{"name":"vue3"},"addons":{"@storybook/addon-actions":{"version":"6.5.16"},"@storybook/addon-docs":{"version":"6.5.15"},"@storybook/addon-controls":{"version":"6.5.15"},"@storybook/addon-storysource":{"version":"6.5.15"},"@storybook/addon-viewport":{"version":"6.5.15"},"storybook-addon-designs":{"version":"6.3.1"}}}
@@ -0,0 +1,28 @@
1
+ import { Value } from '../../../utils/type.utils';
2
+
3
+ export const CARD_BORDER_COLORS = {
4
+ NEUTRAL_HEAVY: 'neutralHeavy',
5
+ NEUTRAL_STRONG: 'neutralStrong',
6
+ SUCCESS: 'success',
7
+ WARNING: 'warning',
8
+ DANGER: 'danger',
9
+ INFO: 'info',
10
+ TRANSPARENT: 'transparent',
11
+ };
12
+
13
+ export type CardBorderColors = Value<typeof CARD_BORDER_COLORS>;
14
+
15
+ export const CARD_BORDER_SIZES = {
16
+ SMALL: 'small',
17
+ MEDIUM: 'medium',
18
+ LARGE: 'large',
19
+ };
20
+
21
+ export type CardBorderSizes = Value<typeof CARD_BORDER_SIZES>;
22
+
23
+ export const CARD_BORDER_POSITIONS = {
24
+ TOP: 'top',
25
+ LEFT: 'left',
26
+ };
27
+
28
+ export type CardBorderPositions = Value<typeof CARD_BORDER_POSITIONS>;
@@ -1,6 +1,8 @@
1
1
  import { shallowMount } from '@vue/test-utils';
2
2
 
3
3
  import Card from './Card.vue';
4
+ import { CARD_BORDER_COLORS, CARD_BORDER_POSITIONS, CARD_BORDER_SIZES } from './Card.consts';
5
+ import { LOADING_BAR_COLORS } from '../../LoadingBar';
4
6
 
5
7
  describe('Card', () => {
6
8
  const createComponent = ({
@@ -14,6 +16,13 @@ describe('Card', () => {
14
16
  props: {
15
17
  headerHasPadding,
16
18
  dividerUnderHeader,
19
+ hasBorder: false,
20
+ borderSize: CARD_BORDER_SIZES.MEDIUM,
21
+ borderColor: CARD_BORDER_COLORS.NEUTRAL_HEAVY,
22
+ borderPosition: CARD_BORDER_POSITIONS.TOP,
23
+ hasLoadingBar: false,
24
+ loadingBarColor: LOADING_BAR_COLORS.NEUTRAL_HEAVY,
25
+ loadingBarTime: '0',
17
26
  },
18
27
  slots: {
19
28
  ...(headerSlot !== '' && { header: headerSlot }),
@@ -1,6 +1,8 @@
1
1
  import Card from './Card.vue';
2
2
 
3
3
  import { Args, ArgTypes, Meta, StoryFn } from '@storybook/vue3';
4
+ import { CARD_BORDER_COLORS, CARD_BORDER_POSITIONS, CARD_BORDER_SIZES } from './Card.consts';
5
+ import { LOADING_BAR_COLORS } from '../../LoadingBar';
4
6
 
5
7
  export default {
6
8
  title: 'Components/Cards/Card',
@@ -12,8 +14,16 @@ const StoryTemplate: StoryFn<typeof Card> = (args) => ({
12
14
  setup() {
13
15
  return { ...args };
14
16
  },
15
- template: `
16
- <card :header-has-padding="headerHasPadding" :divider-under-header="dividerUnderHeader">
17
+ template: `<card :header-has-padding="headerHasPadding"
18
+ :divider-under-header="dividerUnderHeader"
19
+ :has-border="hasBorder"
20
+ :border-position="borderPosition"
21
+ :border-size="borderSize"
22
+ :border-color="borderColor"
23
+ :has-loading-bar="hasLoadingBar"
24
+ :loading-bar-color="loadingBarColor"
25
+ :loading-bar-time="loadingBarTime"
26
+ >
17
27
  <template v-if="header" #header>
18
28
  <div v-html="header" />
19
29
  </template>
@@ -23,7 +33,7 @@ const StoryTemplate: StoryFn<typeof Card> = (args) => ({
23
33
  <template v-if="footer" #footer>
24
34
  <div v-html="footer" />
25
35
  </template>
26
- </card>`,
36
+ </card>`,
27
37
  });
28
38
 
29
39
  export const Interactive = StoryTemplate.bind({});
@@ -31,6 +41,13 @@ export const Interactive = StoryTemplate.bind({});
31
41
  const args = {
32
42
  headerHasPadding: false,
33
43
  dividerUnderHeader: false,
44
+ hasBorder: false,
45
+ borderPosition: CARD_BORDER_POSITIONS.TOP,
46
+ borderSize: CARD_BORDER_SIZES.LARGE,
47
+ borderColor: CARD_BORDER_COLORS.NEUTRAL_HEAVY,
48
+ hasLoadingBar: false,
49
+ loadingBarColor: LOADING_BAR_COLORS.NEUTRAL_HEAVY,
50
+ loadingBarTime: '0',
34
51
  } as Args;
35
52
 
36
53
  const argTypes = {
@@ -40,6 +57,22 @@ const argTypes = {
40
57
  defaultValue: 'content slot that supports <b>HTML markup</b>',
41
58
  },
42
59
  footer: { control: { type: 'text' }, defaultValue: 'footer slot' },
60
+ borderPosition: {
61
+ control: { type: 'select', options: Object.values(CARD_BORDER_POSITIONS) },
62
+ defaultValue: CARD_BORDER_POSITIONS.TOP,
63
+ },
64
+ borderSize: {
65
+ control: { type: 'select', options: Object.values(CARD_BORDER_SIZES) },
66
+ defaultValue: CARD_BORDER_SIZES.LARGE,
67
+ },
68
+ borderColor: {
69
+ control: { type: 'select', options: Object.values(CARD_BORDER_COLORS) },
70
+ defaultValue: CARD_BORDER_COLORS.NEUTRAL_HEAVY,
71
+ },
72
+ loadingBarColor: {
73
+ control: { type: 'select', options: Object.values(LOADING_BAR_COLORS) },
74
+ defaultValue: LOADING_BAR_COLORS.NEUTRAL_HEAVY,
75
+ },
43
76
  } as ArgTypes;
44
77
 
45
78
  Interactive.argTypes = argTypes;
@@ -1,5 +1,20 @@
1
1
  <template>
2
- <div class="ds-card">
2
+ <div
3
+ :class="{
4
+ 'ds-card': true,
5
+ [borderColorClass]: true,
6
+ [borderSizeClass]: true,
7
+ '-ds-top-border': hasTopBoarder,
8
+ '-ds-left-border': hasLeftBoarder,
9
+ }"
10
+ >
11
+ <ds-loading-bar
12
+ v-if="hasLoadingBar"
13
+ class="ds-card__loadingBar"
14
+ :time="loadingBarTime"
15
+ :color="loadingBarColor"
16
+ :size="borderSize"
17
+ />
3
18
  <div
4
19
  v-if="$slots.header"
5
20
  class="ds-card__header"
@@ -23,12 +38,85 @@
23
38
  @import '../../../../styles/settings/spacings';
24
39
  @import '../../../../styles/settings/shadows';
25
40
  @import '../../../../styles/settings/radiuses';
41
+ @import '../../../../styles/settings/borders';
26
42
  @import '../../../../styles/settings/colors/tokens';
27
43
 
28
44
  .ds-card {
45
+ $root: &;
46
+
29
47
  background-color: $color-default-background;
30
48
  border-radius: $radius-m;
31
49
  box-shadow: $shadow-s;
50
+ position: relative;
51
+ width: inherit;
52
+
53
+ &.-ds-top-border {
54
+ border-top: $border-l transparent solid;
55
+ }
56
+
57
+ &.-ds-left-border {
58
+ border-left: $border-l transparent solid;
59
+ }
60
+
61
+ &.-ds-border-size-small {
62
+ border-radius: $radius-xs;
63
+ border-width: $border-s;
64
+
65
+ #{$root}__loadingBar {
66
+ border-radius: $radius-xs $radius-xs 0 0;
67
+ top: -$border-s;
68
+ }
69
+ }
70
+
71
+ &.-ds-border-size-medium {
72
+ border-radius: $radius-s;
73
+ border-width: $border-m;
74
+
75
+ #{$root}__loadingBar {
76
+ border-radius: $radius-s $radius-s 0 0;
77
+ top: -$border-m;
78
+ }
79
+ }
80
+
81
+ &.-ds-border-size-large {
82
+ border-radius: $radius-m;
83
+ border-width: $border-l;
84
+
85
+ #{$root}__loadingBar {
86
+ border-radius: $radius-m $radius-m 0 0;
87
+ top: -$border-l;
88
+ }
89
+ }
90
+
91
+ &.-ds-border-color-neutralHeavy {
92
+ border-color: $color-neutral-border-heavy;
93
+ }
94
+
95
+ &.-ds-border-color-neutralStrong {
96
+ border-color: $color-neutral-border-strong;
97
+ }
98
+
99
+ &.-ds-border-color-success {
100
+ border-color: $color-success-border;
101
+ }
102
+
103
+ &.-ds-border-color-warning {
104
+ border-color: $color-warning-border;
105
+ }
106
+
107
+ &.-ds-border-color-danger {
108
+ border-color: $color-danger-border;
109
+ }
110
+
111
+ &.-ds-border-color-info {
112
+ border-color: $color-info-border;
113
+ }
114
+
115
+ &__loadingBar {
116
+ overflow: hidden;
117
+ position: absolute;
118
+ width: 100%;
119
+ }
32
120
 
33
121
  &__header {
34
122
  &.-ds-withPadding {
@@ -49,11 +137,21 @@
49
137
  </style>
50
138
 
51
139
  <script lang="ts">
52
- import DsDivider from '../../Divider/Divider.vue';
140
+ import { PropType } from 'vue';
53
141
 
142
+ import DsDivider from '../../Divider/Divider.vue';
143
+ import DsLoadingBar, { LOADING_BAR_COLORS, LoadingBarColors } from '../../LoadingBar';
144
+ import {
145
+ CARD_BORDER_COLORS,
146
+ CARD_BORDER_POSITIONS,
147
+ CARD_BORDER_SIZES,
148
+ CardBorderColors,
149
+ CardBorderPositions,
150
+ CardBorderSizes,
151
+ } from './Card.consts';
54
152
  export default {
55
153
  name: 'Card',
56
- components: { DsDivider },
154
+ components: { DsDivider, DsLoadingBar },
57
155
  props: {
58
156
  headerHasPadding: {
59
157
  type: Boolean,
@@ -63,6 +161,62 @@ export default {
63
161
  type: Boolean,
64
162
  default: false,
65
163
  },
164
+ hasBorder: {
165
+ type: Boolean,
166
+ default: false,
167
+ },
168
+ borderPosition: {
169
+ type: String as PropType<CardBorderPositions>,
170
+ default: CARD_BORDER_POSITIONS.TOP,
171
+ },
172
+ borderSize: {
173
+ type: String as PropType<CardBorderSizes>,
174
+ default: CARD_BORDER_SIZES.LARGE,
175
+ },
176
+ borderColor: {
177
+ type: String as PropType<CardBorderColors>,
178
+ default: CARD_BORDER_COLORS.NEUTRAL_HEAVY,
179
+ },
180
+ hasLoadingBar: {
181
+ type: Boolean,
182
+ default: false,
183
+ },
184
+ loadingBarColor: {
185
+ type: String as PropType<LoadingBarColors>,
186
+ default: LOADING_BAR_COLORS.NEUTRAL_HEAVY,
187
+ },
188
+ loadingBarTime: {
189
+ type: String,
190
+ default: '0',
191
+ },
192
+ },
193
+
194
+ computed: {
195
+ hasLeftBoarder() {
196
+ return (
197
+ this.hasBorder &&
198
+ this.borderPosition === CARD_BORDER_POSITIONS.LEFT &&
199
+ !this.hasLoadingBar
200
+ );
201
+ },
202
+ hasTopBoarder() {
203
+ return (
204
+ (this.hasBorder && this.borderPosition === CARD_BORDER_POSITIONS.TOP) ||
205
+ this.hasLoadingBar
206
+ );
207
+ },
208
+ borderColorClass() {
209
+ if (this.hasLoadingBar) {
210
+ return '-ds-border-color-transparent';
211
+ }
212
+ return `-ds-border-color-${this.borderColor}`;
213
+ },
214
+ borderSizeClass() {
215
+ if (!this.hasBorder && !this.hasLoadingBar) {
216
+ return '';
217
+ }
218
+ return `-ds-border-size-${this.borderSize}`;
219
+ },
66
220
  },
67
221
  };
68
222
  </script>
@@ -104,9 +104,7 @@ export default {
104
104
  default: false,
105
105
  },
106
106
  },
107
- // TODO fix me when touching this file
108
- // eslint-disable-next-line vue/require-emit-validator
109
- emits: ['update:isExpanded'],
107
+ emits: { 'update:isExpanded': (payload: Boolean) => true },
110
108
  data() {
111
109
  return {
112
110
  isExpandedInternal: false,
@@ -0,0 +1,20 @@
1
+ import { Value } from '../../utils/type.utils';
2
+
3
+ export const LOADING_BAR_COLORS = {
4
+ NEUTRAL_HEAVY: 'neutralHeavy',
5
+ NEUTRAL_STRONG: 'neutralStrong',
6
+ SUCCESS: 'success',
7
+ WARNING: 'warning',
8
+ DANGER: 'danger',
9
+ INFO: 'info',
10
+ };
11
+
12
+ export type LoadingBarColors = Value<typeof LOADING_BAR_COLORS>;
13
+
14
+ export const LOADING_BAR_SIZES = {
15
+ SMALL: 'small',
16
+ MEDIUM: 'medium',
17
+ LARGE: 'large',
18
+ };
19
+
20
+ export type LoadingBarSizes = Value<typeof LOADING_BAR_SIZES>;
@@ -0,0 +1,45 @@
1
+ import { Args, ArgTypes, Meta, StoryFn } from '@storybook/vue3';
2
+ import LoadingBar from './LoadingBar.vue';
3
+ import { LOADING_BAR_COLORS, LOADING_BAR_SIZES } from './LoadingBar.consts';
4
+
5
+ export default {
6
+ title: 'Components/LoadingBar',
7
+ component: LoadingBar,
8
+ } as Meta<typeof LoadingBar>;
9
+
10
+ const StoryTemplate: StoryFn<typeof LoadingBar> = (args) => ({
11
+ components: { DsLoadingBar: LoadingBar },
12
+ setup() {
13
+ return { ...args };
14
+ },
15
+ template: `<ds-loading-bar :size="size" :color="color" :time="time" />`,
16
+ });
17
+
18
+ export const Interactive = StoryTemplate.bind({});
19
+
20
+ const args = {
21
+ size: LOADING_BAR_SIZES.LARGE,
22
+ color: LOADING_BAR_COLORS.NEUTRAL_HEAVY,
23
+ time: '5',
24
+ } as Args;
25
+
26
+ const argTypes = {
27
+ size: {
28
+ control: { type: 'select', options: Object.values(LOADING_BAR_SIZES) },
29
+ defaultValue: LOADING_BAR_SIZES.LARGE,
30
+ },
31
+ color: {
32
+ control: { type: 'select', options: Object.values(LOADING_BAR_COLORS) },
33
+ defaultValue: LOADING_BAR_COLORS.NEUTRAL_HEAVY,
34
+ },
35
+ } as ArgTypes;
36
+
37
+ Interactive.argTypes = argTypes;
38
+ Interactive.args = args;
39
+
40
+ Interactive.parameters = {
41
+ design: {
42
+ type: 'figma',
43
+ url: 'https://www.figma.com/design/izQdYyiBR1GQgFkaOIfIJI/LMS---DS-Components?node-id=8375-32853',
44
+ },
45
+ };
@@ -0,0 +1,114 @@
1
+ <template>
2
+ <div class="ds-loadingBar" :class="[sizeClassName]">
3
+ <span
4
+ :class="['ds-loadingBar__loader', `-ds-border-color-${color}`]"
5
+ :style="loadingBarStyles"
6
+ />
7
+ </div>
8
+ </template>
9
+
10
+ <style scoped lang="scss">
11
+ @import '../../../styles/settings/colors/tokens';
12
+ @import '../../../styles/settings/borders';
13
+
14
+ .ds-loadingBar {
15
+ background-color: $color-neutral-background;
16
+ display: flex;
17
+
18
+ &.-ds-size-small {
19
+ height: $border-s;
20
+ }
21
+
22
+ &.-ds-size-medium {
23
+ height: $border-m;
24
+ }
25
+
26
+ &.-ds-size-large {
27
+ height: $border-l;
28
+ }
29
+
30
+ &__loader {
31
+ width: 0;
32
+
33
+ &.-ds-border-color-neutralHeavy {
34
+ background-color: $color-neutral-border-heavy;
35
+ }
36
+
37
+ &.-ds-border-color-neutralStrong {
38
+ background-color: $color-neutral-border-strong;
39
+ }
40
+
41
+ &.-ds-border-color-success {
42
+ background-color: $color-success-border;
43
+ }
44
+
45
+ &.-ds-border-color-warning {
46
+ background-color: $color-warning-border;
47
+ }
48
+
49
+ &.-ds-border-color-danger {
50
+ background-color: $color-danger-border;
51
+ }
52
+
53
+ &.-ds-border-color-info {
54
+ background-color: $color-info-border;
55
+ }
56
+ }
57
+ }
58
+ </style>
59
+
60
+ <script lang="ts">
61
+ import { PropType } from 'vue';
62
+ import {
63
+ LOADING_BAR_COLORS,
64
+ LOADING_BAR_SIZES,
65
+ LoadingBarColors,
66
+ LoadingBarSizes,
67
+ } from './LoadingBar.consts';
68
+
69
+ export default {
70
+ name: 'LoadingBar',
71
+ props: {
72
+ color: {
73
+ type: String as PropType<LoadingBarColors>,
74
+ default: LOADING_BAR_COLORS.NEUTRAL_HEAVY,
75
+ },
76
+ size: {
77
+ type: String as PropType<LoadingBarSizes>,
78
+ default: LOADING_BAR_SIZES.LARGE,
79
+ },
80
+ time: {
81
+ type: String,
82
+ required: true,
83
+ },
84
+ },
85
+ data() {
86
+ return {
87
+ intervalId: 0,
88
+ width: 0,
89
+ };
90
+ },
91
+ computed: {
92
+ sizeClassName() {
93
+ return `-ds-size-${this.size}`;
94
+ },
95
+ loadingBarStyles() {
96
+ return {
97
+ width: `${this.width}%`,
98
+ transition: `width ${this.time}s linear`,
99
+ };
100
+ },
101
+ },
102
+ mounted() {
103
+ if (this.time === '0') {
104
+ this.width = 100;
105
+ return;
106
+ }
107
+ // without postponing the width change, the transition won't work,
108
+ // and the loading bar is 100% width right away
109
+ setTimeout(() => {
110
+ this.width = 100;
111
+ }, 0);
112
+ },
113
+ };
114
+ </script>
@@ -0,0 +1,4 @@
1
+ import LoadingBar from './LoadingBar.vue';
2
+
3
+ export * from './LoadingBar.consts';
4
+ export default LoadingBar;
@@ -56,6 +56,7 @@ import { faCommentDots } from '@fortawesome/pro-regular-svg-icons/faCommentDots'
56
56
  import { faComments } from '@fortawesome/pro-regular-svg-icons/faComments';
57
57
  import { faCompress } from '@fortawesome/pro-regular-svg-icons/faCompress';
58
58
  import { faCopy } from '@fortawesome/pro-regular-svg-icons/faCopy';
59
+ import { faCreditCard } from '@fortawesome/pro-regular-svg-icons/faCreditCard';
59
60
  import { faEarthAmericas } from '@fortawesome/pro-regular-svg-icons/faEarthAmericas';
60
61
  import { faEllipsis } from '@fortawesome/pro-regular-svg-icons/faEllipsis';
61
62
  import { faEllipsisVertical } from '@fortawesome/pro-regular-svg-icons/faEllipsisVertical';
@@ -259,6 +260,7 @@ export const FONTAWESOME_ICONS = {
259
260
  FA_COMMENTS_QUESTION_CHECK: faCommentsQuestionCheck,
260
261
  FA_COMPRESS: faCompress,
261
262
  FA_COPY: faCopy,
263
+ FA_CREDIT_CARD: faCreditCard,
262
264
  FA_DOT_CIRCLE_SOLID: fasCircleDot,
263
265
  FA_EARTH_AMERICAS: faEarthAmericas,
264
266
  FA_ELLIPSIS: faEllipsis,
package/lib/js/index.ts CHANGED
@@ -69,6 +69,8 @@ export { default as SelectListSectionTitle } from './components/SelectList/Selec
69
69
  export * from './components/SelectList/SelectListItem/SelectListItem.consts';
70
70
  export { default as SelectionTile } from './components/SelectionTile';
71
71
  export * from './components/SelectionTile';
72
+ export { default as LoadingBar } from './components/LoadingBar';
73
+ export * from './components/LoadingBar';
72
74
  export { default as PopOver } from './components/PopOver';
73
75
  export * from './components/PopOver/PopOver.consts';
74
76
  export { default as Dropdown } from './components/Dropdown';
@@ -0,0 +1,5 @@
1
+ $border-xs: 1px;
2
+ $border-s: 2px;
3
+ $border-m: 4px;
4
+ $border-l: 6px;
5
+ $border-xl: 8px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bethinkpl/design-system",
3
- "version": "22.0.2",
3
+ "version": "22.0.4",
4
4
  "description": "Bethink universe design-system",
5
5
  "repository": "git@github.com:bethinkpl/design-system.git",
6
6
  "author": "nerdy@bethink.pl",