@policystudio/policy-studio-ui-vue 1.1.90-beta.10 → 1.1.90-beta.17

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 (132) hide show
  1. package/.eslintrc.js +2 -1
  2. package/.github/workflows/deploy-storybook.yml +4 -4
  3. package/.nvmrc +1 -0
  4. package/dist/css/psui_styles_output.css +6986 -0
  5. package/package.json +9 -23
  6. package/src/assets/scss/components/PsDataTable.scss +1 -1
  7. package/src/components/accordion/PsAccordionItem.vue +75 -75
  8. package/src/components/badges-and-tags/PsBadgeWithIcon.vue +31 -34
  9. package/src/components/badges-and-tags/PsCardInfos.vue +40 -41
  10. package/src/components/badges-and-tags/PsChartLegend.vue +47 -51
  11. package/src/components/badges-and-tags/PsClimateZoneBadge.vue +14 -19
  12. package/src/components/badges-and-tags/PsCostEffectBar.vue +24 -56
  13. package/src/components/badges-and-tags/PsDateCardInfo.vue +17 -18
  14. package/src/components/badges-and-tags/PsHighlightRippleDot.vue +3 -2
  15. package/src/components/badges-and-tags/PsMiniTag.vue +39 -41
  16. package/src/components/badges-and-tags/PsProgressBar.vue +72 -68
  17. package/src/components/badges-and-tags/PsTagScope.vue +17 -22
  18. package/src/components/badges-and-tags/PsTestimonialCard.vue +20 -26
  19. package/src/components/buttons/PsButton.vue +61 -62
  20. package/src/components/chips/PsChips.vue +98 -101
  21. package/src/components/controls/PsCheckbox.vue +84 -84
  22. package/src/components/controls/PsCheckboxSimple.vue +95 -95
  23. package/src/components/controls/PsDraggable.vue +53 -55
  24. package/src/components/controls/PsInlineSelector.vue +99 -99
  25. package/src/components/controls/PsRadioButton.vue +59 -58
  26. package/src/components/controls/PsRadioButtonSimple.vue +79 -75
  27. package/src/components/controls/PsSlider.vue +185 -176
  28. package/src/components/controls/PsSwitch.vue +51 -52
  29. package/src/components/controls/PsToggle.vue +53 -50
  30. package/src/components/data-graphics/PsBarChart.vue +19 -21
  31. package/src/components/datatable/PsDataTable.vue +56 -60
  32. package/src/components/datatable/PsDataTableItem.vue +14 -28
  33. package/src/components/forms/PsDropdown.vue +164 -162
  34. package/src/components/forms/PsDropdownList.vue +132 -129
  35. package/src/components/forms/PsInput.vue +155 -153
  36. package/src/components/forms/PsInputSelect.vue +91 -92
  37. package/src/components/forms/PsInputTextArea.vue +71 -71
  38. package/src/components/navigations/PsBreadcrumb.vue +26 -34
  39. package/src/components/notifications/PsDialog.vue +57 -56
  40. package/src/components/notifications/PsSimpleAlert.vue +28 -29
  41. package/src/components/notifications/PsToast.vue +40 -39
  42. package/src/components/table-results/PsTableResults.vue +452 -458
  43. package/src/components/table-results/PsTableResultsBody.vue +66 -67
  44. package/src/components/table-results/PsTableResultsHead.vue +62 -56
  45. package/src/components/table-results/PsTableResultsHeadComparison.vue +62 -56
  46. package/src/components/table-results/PsTableResultsHeadFlexible.vue +63 -56
  47. package/src/components/table-results/PsTableResultsRow.vue +55 -56
  48. package/src/components/tabs/PsTabHeader.vue +106 -100
  49. package/src/components/tooltip/PsDialogTooltip.vue +96 -101
  50. package/src/components/tooltip/PsRichTooltip.vue +42 -45
  51. package/src/components/tooltip/PsTooltip.vue +111 -116
  52. package/src/components/ui/PsDotLoader.vue +1 -5
  53. package/src/components/ui/PsIcon.vue +126 -129
  54. package/src/index.ts +56 -66
  55. package/src/tsconfig.json +12 -0
  56. package/src/{shims-vue.d.ts → types/index.d.ts} +0 -5
  57. package/src/util/{GeneralFunctions.ts → GeneralFunctions.js} +3 -5
  58. package/src/util/directives.ts +24 -0
  59. package/src/util/eventBus.js +10 -0
  60. package/src/util/{imageLoader.ts → imageLoader.js} +9 -8
  61. package/tailwind.config.js +1 -1
  62. package/tsconfig.json +16 -18
  63. package/.storybook/PolicyStudio.ts +0 -11
  64. package/.storybook/eventBus.ts +0 -26
  65. package/.storybook/main.ts +0 -21
  66. package/.storybook/manager.ts +0 -7
  67. package/.storybook/preview.ts +0 -17
  68. package/dist/css/psui_styles.css +0 -4647
  69. package/postcss.config.js +0 -8
  70. package/src/assets/images/multifamily-units.svg +0 -10
  71. package/src/assets/images/policy-studio.svg +0 -15
  72. package/src/components/playground/PsScrollBar.vue +0 -320
  73. package/src/contents/ComparisonData.ts +0 -378
  74. package/src/contents/FlexibleData.ts +0 -502
  75. package/src/contents/ResultsData.ts +0 -531
  76. package/src/stories/Accordion.stories.ts +0 -59
  77. package/src/stories/BadgeWithIcon.stories.ts +0 -31
  78. package/src/stories/BarChart.stories.ts +0 -17
  79. package/src/stories/Breadcrumb.stories.ts +0 -22
  80. package/src/stories/Button.stories.ts +0 -48
  81. package/src/stories/Button.vue +0 -59
  82. package/src/stories/CardInfos.stories.ts +0 -15
  83. package/src/stories/ChartLegend.stories.ts +0 -15
  84. package/src/stories/Checkbox.stories.ts +0 -45
  85. package/src/stories/CheckboxSimple.stories.ts +0 -49
  86. package/src/stories/Chips.stories.ts +0 -33
  87. package/src/stories/ClimateZoneBadge.stories.ts +0 -28
  88. package/src/stories/Colors.mdx +0 -70
  89. package/src/stories/CostEffectBar.stories.ts +0 -26
  90. package/src/stories/Datatable.stories.ts +0 -53
  91. package/src/stories/DateCardInfo.stories.ts +0 -20
  92. package/src/stories/Dialog.stories.ts +0 -131
  93. package/src/stories/Draggable.stories.ts +0 -32
  94. package/src/stories/Dropdown.stories.ts +0 -89
  95. package/src/stories/DropdownList.stories.ts +0 -213
  96. package/src/stories/ElevationSystem.mdx +0 -41
  97. package/src/stories/Header.stories.ts +0 -42
  98. package/src/stories/Header.vue +0 -77
  99. package/src/stories/HighlightRippleDot.stories.ts +0 -16
  100. package/src/stories/Icon.stories.ts +0 -22
  101. package/src/stories/InlineSelector.stories.ts +0 -18
  102. package/src/stories/Input.stories.ts +0 -244
  103. package/src/stories/InputSelect.stories.ts +0 -31
  104. package/src/stories/InputTextArea.stories.ts +0 -25
  105. package/src/stories/Introduction.mdx +0 -211
  106. package/src/stories/MiniTag.stories.ts +0 -59
  107. package/src/stories/Playground.stories.ts +0 -16
  108. package/src/stories/ProgressBar.stories.ts +0 -24
  109. package/src/stories/RadioButton.stories.ts +0 -41
  110. package/src/stories/RadioButtonSimple.stories.ts +0 -43
  111. package/src/stories/SimpleAlert.stories.ts +0 -22
  112. package/src/stories/Slider.stories.ts +0 -79
  113. package/src/stories/Switch.stories.ts +0 -39
  114. package/src/stories/TabHeader.stories.ts +0 -56
  115. package/src/stories/TableResults.stories.ts +0 -728
  116. package/src/stories/TagScope.stories.ts +0 -17
  117. package/src/stories/TestimonialCard.stories.ts +0 -27
  118. package/src/stories/Toast.stories.ts +0 -52
  119. package/src/stories/Toggle.stories.ts +0 -48
  120. package/src/stories/Tooltip.stories.ts +0 -114
  121. package/src/stories/Typography.mdx +0 -212
  122. package/src/stories/assets/code-brackets.svg +0 -1
  123. package/src/stories/assets/colors.svg +0 -1
  124. package/src/stories/assets/comments.svg +0 -1
  125. package/src/stories/assets/direction.svg +0 -1
  126. package/src/stories/assets/flow.svg +0 -1
  127. package/src/stories/assets/plugin.svg +0 -1
  128. package/src/stories/assets/repo.svg +0 -1
  129. package/src/stories/assets/stackalt.svg +0 -1
  130. package/src/stories/button.css +0 -30
  131. package/src/stories/header.css +0 -32
  132. package/webpack.config.js +0 -36
@@ -2,7 +2,6 @@
2
2
  <div class="psui-el-cost-effect-bar">
3
3
  <div>
4
4
  <span :style="breakEvenPosition" />
5
-
6
5
  <PsProgressBar
7
6
  :value="value"
8
7
  :percentage-color="percentageColor"
@@ -12,68 +11,37 @@
12
11
  </div>
13
12
  </template>
14
13
 
15
- <script>
14
+ <script setup>
16
15
  import PsProgressBar from './PsProgressBar.vue'
17
- export default {
18
- name: 'PsCostEffectBar',
19
- components: {
20
- PsProgressBar,
21
- },
16
+ import { defineProps, computed } from 'vue'
22
17
 
23
- props: {
24
- /**
25
- * It sets the value of the progress bar within costeffectbar.
26
- */
27
- value: {
28
- type: Number,
29
- required: true,
30
- default: 0,
31
- },
32
- /**
33
- * It sets the threshold of being effective or not effective within costeffectbar.
34
- */
35
- breakEven: {
36
- type: Number,
37
- required: true,
38
- default: 0,
39
- },
18
+ const props = defineProps({
19
+ value: {
20
+ type: Number,
21
+ required: true,
22
+ default: 0,
40
23
  },
41
- data() {
42
- return {
43
- errors: [],
44
- }
24
+ /**
25
+ * It sets the threshold of being effective or not effective within costeffectbar.
26
+ */
27
+ breakEven: {
28
+ type: Number,
29
+ required: true,
30
+ default: 0,
45
31
  },
32
+ })
46
33
 
47
- computed: {
48
- valueBar() {
49
- if (this.value > 100) return 100
50
- else if (this.value < 0) return 0
51
- else return this.value
52
- },
53
-
54
- breakEvenPosition() {
55
- return `left: ${this.breakEven >= 98 ? 98 : this.breakEven}px`
56
- },
34
+ const breakEvenPosition = computed(() => {
35
+ return `left: ${props.breakEven >= 98 ? 98 : props.breakEven}px`
36
+ })
57
37
 
58
- getIsBreakEven() {
59
- if (this.breakEven < 0) return 0
60
- else if (this.breakEven > 100) return 100
61
- else return this.breakEven
62
- },
38
+ const percentageColor = computed(() => {
39
+ return props.value >= props.breakEven ? 'psui-bg-blue-60' : 'psui-bg-red-20'
40
+ })
63
41
 
64
- percentageColor() {
65
- return this.value >= this.breakEven
66
- ? 'psui-bg-blue-60'
67
- : 'psui-bg-red-20'
68
- },
69
-
70
- bgColor() {
71
- return this.value >= this.breakEven
72
- ? 'psui-bg-blue-20'
73
- : 'psui-bg-red-10'
74
- },
75
- },
76
- }
42
+ const bgColor = computed(() => {
43
+ return props.value >= props.breakEven ? 'psui-bg-blue-20' : 'psui-bg-red-10'
44
+ })
77
45
  </script>
78
46
 
79
47
  <style>
@@ -9,23 +9,22 @@
9
9
  </div>
10
10
  </template>
11
11
 
12
- <script>
13
- export default {
14
- name: 'PsDateCardInfo',
15
- props: {
16
- date: {
17
- type: [Date, String],
18
- default: new Date(),
19
- }
12
+ <script setup>
13
+ import { defineProps, computed } from 'vue'
14
+
15
+ const props = defineProps({
16
+ date: {
17
+ type: [Date, String],
18
+ default: new Date(),
20
19
  },
21
- computed: {
22
- getMonthAndDayFromDate() {
23
- const options = { month: 'short', day: '2-digit' }
24
- return (new Date(this.date))?.toLocaleString('default', options).replace('.', '')
25
- },
26
- getYearFromDate() {
27
- return (new Date(this.date))?.toLocaleString('default', { year: 'numeric' })
28
- }
29
- }
30
- }
20
+ })
21
+
22
+ const getMonthAndDayFromDate = computed(() => {
23
+ const options = { month: 'short', day: '2-digit' }
24
+ return new Date(props.date)?.toLocaleString('default', options).replace('.', '')
25
+ })
26
+
27
+ const getYearFromDate = computed(() => {
28
+ return new Date(props.date)?.toLocaleString('default', { year: 'numeric' })
29
+ })
31
30
  </script>
@@ -10,5 +10,6 @@ export default {
10
10
  }
11
11
  </script>
12
12
 
13
- <style> /* Please, use the file src/assets/scss/components/PsHighlightRippleDot.scss */</style>
14
-
13
+ <style>
14
+ /* Please, use the file src/assets/scss/components/PsHighlightRippleDot.scss */
15
+ </style>
@@ -1,51 +1,49 @@
1
1
  <template>
2
- <div
3
- class="psui-el-mini-tag"
4
- :class="getComponentClass"
5
- @click="$emit('click', $event.target)"
2
+ <div
3
+ class="psui-el-mini-tag"
4
+ :class="getComponentClass"
5
+ @click="emit('click', $event.target)"
6
6
  >
7
7
  <span>{{ message }}</span>
8
8
  </div>
9
9
  </template>
10
10
 
11
- <script>
12
- export const typeOptions = [
13
- 'info',
14
- 'success',
15
- 'warning',
16
- 'error',
17
- 'default',
18
- 'solid-info',
19
- 'solid-success',
20
- 'solid-warning',
21
- 'solid-error',
22
- 'solid-default'
23
- ]
24
- export default {
25
- name: 'PsMiniTag',
26
- props: {
27
- /**
28
- * It sets the layout of the the minitag. eg: info, success, warning, error and default.
29
- */
30
- layout: {
31
- type: String,
32
- default: 'info',
33
- validator: (value) => typeOptions.indexOf(value) !== -1,
34
- },
35
- /**
36
- * It sets the message that will show up within the minitag when component is rendered.
37
- */
38
- message: {
39
- type: String,
40
- },
11
+ <script setup>
12
+ import { defineProps, computed, defineEmits } from 'vue'
13
+
14
+ const emit = defineEmits(['click'])
15
+
16
+ const props = defineProps({
17
+ layout: {
18
+ type: String,
19
+ default: 'info',
20
+ validator: (value) => [
21
+ 'info',
22
+ 'success',
23
+ 'warning',
24
+ 'error',
25
+ 'default',
26
+ 'solid-info',
27
+ 'solid-success',
28
+ 'solid-warning',
29
+ 'solid-error',
30
+ 'solid-default'
31
+ ].indexOf(value) !== -1,
41
32
  },
42
- computed: {
43
- getComponentClass() {
44
- return `psui-el-mini-tag-layout-${this.layout}`
45
- },
33
+ /**
34
+ * It sets the message that will show up within the minitag when component is rendered.
35
+ */
36
+ message: {
37
+ type: String,
38
+ default: '',
46
39
  },
47
- }
48
- </script>
40
+ })
49
41
 
50
- <style> /* Please, use the file src/assets/scss/components/PsMiniTag.scss */ </style>
42
+ const getComponentClass = computed(() => {
43
+ return `psui-el-mini-tag-layout-${props.layout}`
44
+ })
45
+ </script>
51
46
 
47
+ <style>
48
+ /* Please, use the file src/assets/scss/components/PsMiniTag.scss */
49
+ </style>
@@ -1,13 +1,13 @@
1
- <template>
1
+ <template>
2
2
  <div
3
3
  class="psui-el-progress-bar"
4
- :style="{width: `${width}px`}"
5
- :class="{ 'is-breakeven' : getIsBreakEven }"
4
+ :style="{ width: `${width}px` }"
5
+ :class="{ 'is-breakeven': getIsBreakEven }"
6
6
  >
7
7
  <div class="psui-el-progress-bar-bg" />
8
8
  <div
9
- class="psui-el-progress-bar-value"
10
- :class="[getBg, {'rounded-tr-full rounded-br-full': getProgressWidth === '100%'}]"
9
+ class="psui-el-progress-bar-value"
10
+ :class="[getBg, { 'rounded-tr-full rounded-br-full': getProgressWidth === '100%' }]"
11
11
  :style="{ width: getProgressWidth }"
12
12
  />
13
13
  <div
@@ -17,69 +17,73 @@
17
17
  </div>
18
18
  </template>
19
19
 
20
- <script>
21
- export default {
22
- name: 'PsProgressBar',
23
- props: {
24
- width: {
25
- type: [String, Number],
26
- default: 100
27
- },
28
- min: {
29
- type: Number,
30
- default: 0
31
- },
32
- max: {
33
- type: Number,
34
- default: 5
35
- },
36
- breakEven: {
37
- type: Number,
38
- default: 1
39
- },
40
- forceBreakEven: {
41
- type: Boolean,
42
- default: false
43
- },
44
- value: {
45
- type: [String, Number],
46
- default: null
47
- },
48
- positiveBg: {
49
- type: String,
50
- default: 'psui-bg-blue-60'
51
- },
52
- negativeBg: {
53
- type: String,
54
- default: 'psui-bg-red-20'
55
- }
20
+ <script setup>
21
+ import { defineProps, computed } from 'vue'
22
+
23
+ const props = defineProps({
24
+ width: {
25
+ type: [String, Number],
26
+ default: 100,
56
27
  },
57
- computed: {
58
- getVolume(){
59
- return (this.max - this.min)
60
- },
61
- getProgress() {
62
- if(this.value == 9876543210) return 100
63
- const progress = (100 / this.getVolume) * this.value
64
- return progress > 100 ? 100 : progress
65
- },
66
- getProgressWidth() {
67
- return `${this.getProgress}%`
68
- },
69
- getIsBreakEven() {
70
- if ( this.forceBreakEven ) return true
71
- return this.value >= this.breakEven ? true : false
72
- },
73
- getBreakEvenLeft() {
74
- return `${(100 / this.getVolume) * this.breakEven}%`
75
- },
76
- getBg() {
77
- if ( this.forceBreakEven ) return this.positiveBg
78
- return this.getIsBreakEven ? this.positiveBg : this.negativeBg
79
- }
80
- }
81
- }
82
- </script>
28
+ min: {
29
+ type: Number,
30
+ default: 0,
31
+ },
32
+ max: {
33
+ type: Number,
34
+ default: 5,
35
+ },
36
+ breakEven: {
37
+ type: Number,
38
+ default: 1,
39
+ },
40
+ forceBreakEven: {
41
+ type: Boolean,
42
+ default: false,
43
+ },
44
+ value: {
45
+ type: [String, Number],
46
+ default: null,
47
+ },
48
+ positiveBg: {
49
+ type: String,
50
+ default: 'psui-bg-blue-60',
51
+ },
52
+ negativeBg: {
53
+ type: String,
54
+ default: 'psui-bg-red-20',
55
+ },
56
+ })
57
+
58
+ const getVolume = computed(() => {
59
+ return props.max - props.min
60
+ })
61
+
62
+ const getProgress = computed(() => {
63
+ if (props.value == 9876543210) return 100
64
+ const progress = (100 / getVolume.value) * props.value
65
+ return progress > 100 ? 100 : progress
66
+ })
67
+
68
+ const getProgressWidth = computed(() => {
69
+ return `${getProgress.value}%`
70
+ })
83
71
 
84
- <style> /* Please, use the file src/assets/scss/components/PsProgressBar.scss */ </style>
72
+ const getIsBreakEven = computed(() => {
73
+ if (props.forceBreakEven) return true
74
+ return props.value >= props.breakEven ? true : false
75
+ })
76
+
77
+ const getBreakEvenLeft = computed(() => {
78
+ return `${(100 / getVolume.value) * props.breakEven}%`
79
+ })
80
+
81
+ const getBg = computed(() => {
82
+ if (props.forceBreakEven) return props.positiveBg
83
+ return getIsBreakEven.value ? props.positiveBg : props.negativeBg
84
+ })
85
+ </script>
85
86
 
87
+ <style>
88
+ /* Please, use the file src/assets/scss/components/PsProgressBar.scss */
89
+ </style>
@@ -1,31 +1,26 @@
1
1
  <template>
2
- <div
3
- class="psui-el-tag-scope"
2
+ <div
3
+ class="psui-el-tag-scope"
4
4
  :class="getComponentClass"
5
5
  >
6
6
  <span class="psui-el-tag-scope-icon">{{ getComponentIcon }}</span>
7
7
  </div>
8
8
  </template>
9
9
 
10
- <script>
11
- export default {
12
- name: 'PsTagScope',
13
- props: {
14
- included: {
15
- type: Boolean,
16
- default: true
17
- },
18
- },
19
- computed: {
20
- getComponentClass() {
21
- return `psui-el-tag-scope-${this.included}`
22
- },
23
- getComponentIcon() {
24
- return this.included ? 'check' : 'remove'
25
- }
26
- },
27
- }
28
- </script>
10
+ <script setup>
11
+ import { defineProps, computed } from 'vue'
12
+
13
+ const props = defineProps({})
29
14
 
30
- <style> /* Please, use the file src/assets/scss/components/PsTagScope.scss */ </style>
15
+ const getComponentClass = computed(() => {
16
+ return `psui-el-tag-scope-${props.included}`
17
+ })
18
+
19
+ const getComponentIcon = computed(() => {
20
+ return props.included ? 'check' : 'remove'
21
+ })
22
+ </script>
31
23
 
24
+ <style>
25
+ /* Please, use the file src/assets/scss/components/PsTagScope.scss */
26
+ </style>
@@ -19,32 +19,26 @@
19
19
  </div>
20
20
  </template>
21
21
 
22
- <script>
22
+ <script setup>
23
+ import { defineProps } from 'vue'
23
24
  import PsIcon from '../ui/PsIcon.vue'
24
25
 
25
- export default {
26
- name: 'PsTestimonialCard',
27
- components:{
28
- PsIcon
29
- },
30
- props:{
31
- description:{
32
- type: String,
33
- default: '',
34
- },
35
- user:{
36
- type: String,
37
- default: '',
38
- },
39
- position:{
40
- type: String,
41
- default: '',
42
- },
43
- jurisdiction:{
44
- type: String,
45
- default: '',
46
- },
47
- }
48
- }
26
+ defineProps({
27
+ description: {
28
+ type: String,
29
+ default: '',
30
+ },
31
+ user: {
32
+ type: String,
33
+ default: '',
34
+ },
35
+ position: {
36
+ type: String,
37
+ default: '',
38
+ },
39
+ jurisdiction: {
40
+ type: String,
41
+ default: '',
42
+ },
43
+ })
49
44
  </script>
50
-
@@ -1,13 +1,13 @@
1
1
  <template>
2
2
  <button
3
- @click="onClick()"
3
+ @click="onClick()"
4
4
  @mouseenter="onMouseEnter"
5
- @mouseleave="onMouseLeave"
6
- class="psui-el-button"
7
- :class="[getComponentClass, {'hover': isHover}, {'disabled': disabled || loading }]"
5
+ @mouseleave="onMouseLeave"
6
+ class="psui-el-button"
7
+ :class="[getComponentClass, { hover: isHover }, { disabled: disabled || loading }]"
8
8
  >
9
9
  <svg
10
- v-if="loading"
10
+ v-if="loading"
11
11
  class="psui-animate-spin psui-mr-3 psui-h-5 psui-w-5 psui-text-black"
12
12
  :class="`${iconPosition == 'left' ? 'psui-mr-3' : 'psui-ml-3 psui--mr-1'}`"
13
13
  xmlns="http://www.w3.org/2000/svg"
@@ -37,74 +37,73 @@
37
37
  </button>
38
38
  </template>
39
39
 
40
- <script setup lang="ts">
41
- import { PropType, computed, ref } from 'vue'
40
+ <script setup>
41
+ import { computed, ref, defineEmits } from 'vue'
42
42
 
43
- const isHover = ref(false)
43
+ const isHover = ref(false)
44
44
 
45
- const emit = defineEmits(['click'])
45
+ const emit = defineEmits(['click'])
46
46
 
47
- const props = defineProps({
48
- label: {
49
- type: String,
50
- default: ''
51
- },
52
- layout:{
53
- type: String as PropType<'solid' | 'outline' | 'ghost' | 'onlytext' | 'caution'>,
54
- default: 'solid',
55
- validator: (value:string) => ['solid','outline','ghost','onlytext','caution'].includes(value)
56
- },
57
- icon: {
58
- type: String,
59
- default: ''
60
- },
61
- iconPosition: {
62
- type: String,
63
- default: 'left',
64
- validator: (value:string) => ['left','right'].includes(value)
65
- },
66
- size: {
67
- type: String,
68
- default: 'big',
69
- validator: (value:string) => ['small','medium','big'].includes(value)
70
- },
71
- disabled: {
72
- type: Boolean,
73
- default: false
74
- },
75
- loading: {
76
- type: Boolean,
77
- default: false
78
- },
79
- iconClass:{
80
- type: String,
81
- default: ''
82
- }
83
- })
47
+ const props = defineProps({
48
+ label: {
49
+ type: String,
50
+ default: '',
51
+ },
52
+ layout: {
53
+ type: String,
54
+ default: 'solid',
55
+ validator: (value) => ['solid', 'outline', 'ghost', 'onlytext', 'caution'].includes(value),
56
+ },
57
+ icon: {
58
+ type: String,
59
+ default: '',
60
+ },
61
+ iconPosition: {
62
+ type: String,
63
+ default: 'left',
64
+ validator: (value) => ['left', 'right'].includes(value),
65
+ },
66
+ size: {
67
+ type: String,
68
+ default: 'big',
69
+ validator: (value) => ['small', 'medium', 'big'].includes(value),
70
+ },
71
+ disabled: {
72
+ type: Boolean,
73
+ default: false,
74
+ },
75
+ loading: {
76
+ type: Boolean,
77
+ default: false,
78
+ },
79
+ iconClass: {
80
+ type: String,
81
+ default: '',
82
+ },
83
+ })
84
84
 
85
- const getComponentClass = computed(()=>{
86
- if(props.icon){
85
+ const getComponentClass = computed(() => {
86
+ if (props.icon) {
87
87
  return `layout-${props.layout} size-${props.size} icon-${props.iconPosition}`
88
88
  } else {
89
- return `layout-${props.layout} size-${props.size}`
89
+ return `layout-${props.layout} size-${props.size}`
90
90
  }
91
- })
91
+ })
92
92
 
93
- const onClick = () => {
93
+ const onClick = () => {
94
94
  if (props.disabled) return
95
- emit('click')
96
- }
97
- const onMouseEnter = () => {
98
- if(!props.disabled){
95
+ emit('click')
96
+ }
97
+
98
+ const onMouseEnter = () => {
99
+ if (!props.disabled) {
99
100
  isHover.value = true
100
101
  }
101
- }
102
+ }
102
103
 
103
- const onMouseLeave = () => {
104
- if(!props.disabled){
105
- isHover.value = false
106
- }
104
+ const onMouseLeave = () => {
105
+ if (!props.disabled) {
106
+ isHover.value = false
107
107
  }
108
-
108
+ }
109
109
  </script>
110
-