@policystudio/policy-studio-ui-vue 1.1.90-beta.12 → 1.1.90-beta.18

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 (231) 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/dist/index.d.ts +50 -0
  6. package/dist/index.js +53 -63
  7. package/dist/index.js.map +1 -1
  8. package/dist/util/GeneralFunctions.d.ts +3 -0
  9. package/dist/util/GeneralFunctions.js.map +1 -1
  10. package/dist/util/directives.d.ts +1 -0
  11. package/dist/util/directives.js +22 -0
  12. package/dist/util/directives.js.map +1 -0
  13. package/dist/util/eventBus.d.ts +7 -0
  14. package/dist/util/eventBus.js +8 -0
  15. package/dist/util/eventBus.js.map +1 -0
  16. package/dist/util/imageLoader.d.ts +6 -0
  17. package/dist/util/imageLoader.js.map +1 -1
  18. package/package.json +9 -23
  19. package/src/assets/scss/components/PsDataTable.scss +1 -1
  20. package/src/components/accordion/PsAccordionItem.vue +75 -75
  21. package/src/components/badges-and-tags/PsBadgeWithIcon.vue +31 -34
  22. package/src/components/badges-and-tags/PsCardInfos.vue +40 -41
  23. package/src/components/badges-and-tags/PsChartLegend.vue +47 -51
  24. package/src/components/badges-and-tags/PsClimateZoneBadge.vue +14 -19
  25. package/src/components/badges-and-tags/PsCostEffectBar.vue +24 -56
  26. package/src/components/badges-and-tags/PsDateCardInfo.vue +17 -18
  27. package/src/components/badges-and-tags/PsHighlightRippleDot.vue +3 -2
  28. package/src/components/badges-and-tags/PsMiniTag.vue +39 -41
  29. package/src/components/badges-and-tags/PsProgressBar.vue +72 -68
  30. package/src/components/badges-and-tags/PsTagScope.vue +17 -22
  31. package/src/components/badges-and-tags/PsTestimonialCard.vue +20 -26
  32. package/src/components/buttons/PsButton.vue +61 -62
  33. package/src/components/chips/PsChips.vue +98 -101
  34. package/src/components/controls/PsCheckbox.vue +84 -84
  35. package/src/components/controls/PsCheckboxSimple.vue +95 -95
  36. package/src/components/controls/PsDraggable.vue +53 -55
  37. package/src/components/controls/PsInlineSelector.vue +99 -99
  38. package/src/components/controls/PsRadioButton.vue +59 -58
  39. package/src/components/controls/PsRadioButtonSimple.vue +79 -75
  40. package/src/components/controls/PsSlider.vue +185 -176
  41. package/src/components/controls/PsSwitch.vue +51 -52
  42. package/src/components/controls/PsToggle.vue +53 -50
  43. package/src/components/data-graphics/PsBarChart.vue +19 -21
  44. package/src/components/datatable/PsDataTable.vue +56 -60
  45. package/src/components/datatable/PsDataTableItem.vue +14 -28
  46. package/src/components/forms/PsDropdown.vue +164 -162
  47. package/src/components/forms/PsDropdownList.vue +132 -129
  48. package/src/components/forms/PsInput.vue +155 -153
  49. package/src/components/forms/PsInputSelect.vue +91 -92
  50. package/src/components/forms/PsInputTextArea.vue +71 -71
  51. package/src/components/navigations/PsBreadcrumb.vue +26 -34
  52. package/src/components/notifications/PsDialog.vue +57 -56
  53. package/src/components/notifications/PsSimpleAlert.vue +28 -29
  54. package/src/components/notifications/PsToast.vue +40 -39
  55. package/src/components/table-results/PsTableResults.vue +452 -458
  56. package/src/components/table-results/PsTableResultsBody.vue +66 -67
  57. package/src/components/table-results/PsTableResultsHead.vue +62 -56
  58. package/src/components/table-results/PsTableResultsHeadComparison.vue +62 -56
  59. package/src/components/table-results/PsTableResultsHeadFlexible.vue +63 -56
  60. package/src/components/table-results/PsTableResultsRow.vue +55 -56
  61. package/src/components/tabs/PsTabHeader.vue +106 -100
  62. package/src/components/tooltip/PsDialogTooltip.vue +96 -101
  63. package/src/components/tooltip/PsRichTooltip.vue +42 -45
  64. package/src/components/tooltip/PsTooltip.vue +111 -116
  65. package/src/components/ui/PsDotLoader.vue +1 -5
  66. package/src/components/ui/PsIcon.vue +126 -129
  67. package/src/index.ts +57 -71
  68. package/src/tsconfig.json +12 -0
  69. package/src/{shims-vue.d.ts → types/index.d.ts} +0 -5
  70. package/src/util/{GeneralFunctions.ts → GeneralFunctions.js} +0 -3
  71. package/src/util/directives.ts +24 -0
  72. package/src/util/eventBus.js +10 -0
  73. package/src/util/{imageLoader.ts → imageLoader.js} +7 -8
  74. package/tailwind.config.js +1 -1
  75. package/tsconfig.json +15 -17
  76. package/.storybook/PolicyStudio.ts +0 -11
  77. package/.storybook/eventBus.ts +0 -26
  78. package/.storybook/main.ts +0 -21
  79. package/.storybook/manager.ts +0 -7
  80. package/.storybook/preview.ts +0 -17
  81. package/dist/contents/ComparisonData.js +0 -376
  82. package/dist/contents/ComparisonData.js.map +0 -1
  83. package/dist/contents/FlexibleData.js +0 -501
  84. package/dist/contents/FlexibleData.js.map +0 -1
  85. package/dist/contents/ResultsData.js +0 -530
  86. package/dist/contents/ResultsData.js.map +0 -1
  87. package/dist/css/psui_styles.css +0 -4647
  88. package/dist/stories/Accordion.stories.js +0 -56
  89. package/dist/stories/Accordion.stories.js.map +0 -1
  90. package/dist/stories/BadgeWithIcon.stories.js +0 -28
  91. package/dist/stories/BadgeWithIcon.stories.js.map +0 -1
  92. package/dist/stories/BarChart.stories.js +0 -16
  93. package/dist/stories/BarChart.stories.js.map +0 -1
  94. package/dist/stories/Breadcrumb.stories.js +0 -21
  95. package/dist/stories/Breadcrumb.stories.js.map +0 -1
  96. package/dist/stories/Button.stories.js +0 -44
  97. package/dist/stories/Button.stories.js.map +0 -1
  98. package/dist/stories/CardInfos.stories.js +0 -13
  99. package/dist/stories/CardInfos.stories.js.map +0 -1
  100. package/dist/stories/ChartLegend.stories.js +0 -13
  101. package/dist/stories/ChartLegend.stories.js.map +0 -1
  102. package/dist/stories/Checkbox.stories.js +0 -44
  103. package/dist/stories/Checkbox.stories.js.map +0 -1
  104. package/dist/stories/CheckboxSimple.stories.js +0 -48
  105. package/dist/stories/CheckboxSimple.stories.js.map +0 -1
  106. package/dist/stories/Chips.stories.js +0 -27
  107. package/dist/stories/Chips.stories.js.map +0 -1
  108. package/dist/stories/ClimateZoneBadge.stories.js +0 -15
  109. package/dist/stories/ClimateZoneBadge.stories.js.map +0 -1
  110. package/dist/stories/CostEffectBar.stories.js +0 -21
  111. package/dist/stories/CostEffectBar.stories.js.map +0 -1
  112. package/dist/stories/Datatable.stories.js +0 -45
  113. package/dist/stories/Datatable.stories.js.map +0 -1
  114. package/dist/stories/DateCardInfo.stories.js +0 -18
  115. package/dist/stories/DateCardInfo.stories.js.map +0 -1
  116. package/dist/stories/Dialog.stories.js +0 -127
  117. package/dist/stories/Dialog.stories.js.map +0 -1
  118. package/dist/stories/Draggable.stories.js +0 -20
  119. package/dist/stories/Draggable.stories.js.map +0 -1
  120. package/dist/stories/Dropdown.stories.js +0 -98
  121. package/dist/stories/Dropdown.stories.js.map +0 -1
  122. package/dist/stories/DropdownList.stories.js +0 -208
  123. package/dist/stories/DropdownList.stories.js.map +0 -1
  124. package/dist/stories/Header.stories.js +0 -39
  125. package/dist/stories/Header.stories.js.map +0 -1
  126. package/dist/stories/HighlightRippleDot.stories.js +0 -13
  127. package/dist/stories/HighlightRippleDot.stories.js.map +0 -1
  128. package/dist/stories/Icon.stories.js +0 -19
  129. package/dist/stories/Icon.stories.js.map +0 -1
  130. package/dist/stories/InlineSelector.stories.js +0 -16
  131. package/dist/stories/InlineSelector.stories.js.map +0 -1
  132. package/dist/stories/Input.stories.js +0 -235
  133. package/dist/stories/Input.stories.js.map +0 -1
  134. package/dist/stories/InputSelect.stories.js +0 -28
  135. package/dist/stories/InputSelect.stories.js.map +0 -1
  136. package/dist/stories/InputTextArea.stories.js +0 -23
  137. package/dist/stories/InputTextArea.stories.js.map +0 -1
  138. package/dist/stories/MiniTag.stories.js +0 -44
  139. package/dist/stories/MiniTag.stories.js.map +0 -1
  140. package/dist/stories/Playground.stories.js +0 -14
  141. package/dist/stories/Playground.stories.js.map +0 -1
  142. package/dist/stories/ProgressBar.stories.js +0 -21
  143. package/dist/stories/ProgressBar.stories.js.map +0 -1
  144. package/dist/stories/RadioButton.stories.js +0 -36
  145. package/dist/stories/RadioButton.stories.js.map +0 -1
  146. package/dist/stories/RadioButtonSimple.stories.js +0 -40
  147. package/dist/stories/RadioButtonSimple.stories.js.map +0 -1
  148. package/dist/stories/SimpleAlert.stories.js +0 -19
  149. package/dist/stories/SimpleAlert.stories.js.map +0 -1
  150. package/dist/stories/Slider.stories.js +0 -70
  151. package/dist/stories/Slider.stories.js.map +0 -1
  152. package/dist/stories/Switch.stories.js +0 -35
  153. package/dist/stories/Switch.stories.js.map +0 -1
  154. package/dist/stories/TabHeader.stories.js +0 -48
  155. package/dist/stories/TabHeader.stories.js.map +0 -1
  156. package/dist/stories/TableResults.stories.js +0 -717
  157. package/dist/stories/TableResults.stories.js.map +0 -1
  158. package/dist/stories/TagScope.stories.js +0 -16
  159. package/dist/stories/TagScope.stories.js.map +0 -1
  160. package/dist/stories/TestimonialCard.stories.js +0 -24
  161. package/dist/stories/TestimonialCard.stories.js.map +0 -1
  162. package/dist/stories/Toast.stories.js +0 -51
  163. package/dist/stories/Toast.stories.js.map +0 -1
  164. package/dist/stories/Toggle.stories.js +0 -42
  165. package/dist/stories/Toggle.stories.js.map +0 -1
  166. package/dist/stories/Tooltip.stories.js +0 -108
  167. package/dist/stories/Tooltip.stories.js.map +0 -1
  168. package/postcss.config.js +0 -8
  169. package/src/assets/images/multifamily-units.svg +0 -10
  170. package/src/assets/images/policy-studio.svg +0 -15
  171. package/src/components/playground/PsScrollBar.vue +0 -320
  172. package/src/contents/ComparisonData.ts +0 -378
  173. package/src/contents/FlexibleData.ts +0 -502
  174. package/src/contents/ResultsData.ts +0 -531
  175. package/src/stories/Accordion.stories.ts +0 -59
  176. package/src/stories/BadgeWithIcon.stories.ts +0 -31
  177. package/src/stories/BarChart.stories.ts +0 -17
  178. package/src/stories/Breadcrumb.stories.ts +0 -22
  179. package/src/stories/Button.stories.ts +0 -48
  180. package/src/stories/Button.vue +0 -59
  181. package/src/stories/CardInfos.stories.ts +0 -15
  182. package/src/stories/ChartLegend.stories.ts +0 -15
  183. package/src/stories/Checkbox.stories.ts +0 -45
  184. package/src/stories/CheckboxSimple.stories.ts +0 -49
  185. package/src/stories/Chips.stories.ts +0 -33
  186. package/src/stories/ClimateZoneBadge.stories.ts +0 -18
  187. package/src/stories/Colors.mdx +0 -70
  188. package/src/stories/CostEffectBar.stories.ts +0 -24
  189. package/src/stories/Datatable.stories.ts +0 -53
  190. package/src/stories/DateCardInfo.stories.ts +0 -20
  191. package/src/stories/Dialog.stories.ts +0 -131
  192. package/src/stories/Draggable.stories.ts +0 -23
  193. package/src/stories/Dropdown.stories.ts +0 -100
  194. package/src/stories/DropdownList.stories.ts +0 -213
  195. package/src/stories/ElevationSystem.mdx +0 -41
  196. package/src/stories/Header.stories.ts +0 -42
  197. package/src/stories/Header.vue +0 -77
  198. package/src/stories/HighlightRippleDot.stories.ts +0 -16
  199. package/src/stories/Icon.stories.ts +0 -23
  200. package/src/stories/InlineSelector.stories.ts +0 -18
  201. package/src/stories/Input.stories.ts +0 -243
  202. package/src/stories/InputSelect.stories.ts +0 -31
  203. package/src/stories/InputTextArea.stories.ts +0 -25
  204. package/src/stories/Introduction.mdx +0 -211
  205. package/src/stories/MiniTag.stories.ts +0 -59
  206. package/src/stories/Playground.stories.ts +0 -16
  207. package/src/stories/ProgressBar.stories.ts +0 -24
  208. package/src/stories/RadioButton.stories.ts +0 -40
  209. package/src/stories/RadioButtonSimple.stories.ts +0 -43
  210. package/src/stories/SimpleAlert.stories.ts +0 -22
  211. package/src/stories/Slider.stories.ts +0 -79
  212. package/src/stories/Switch.stories.ts +0 -39
  213. package/src/stories/TabHeader.stories.ts +0 -57
  214. package/src/stories/TableResults.stories.ts +0 -728
  215. package/src/stories/TagScope.stories.ts +0 -17
  216. package/src/stories/TestimonialCard.stories.ts +0 -27
  217. package/src/stories/Toast.stories.ts +0 -52
  218. package/src/stories/Toggle.stories.ts +0 -48
  219. package/src/stories/Tooltip.stories.ts +0 -114
  220. package/src/stories/Typography.mdx +0 -212
  221. package/src/stories/assets/code-brackets.svg +0 -1
  222. package/src/stories/assets/colors.svg +0 -1
  223. package/src/stories/assets/comments.svg +0 -1
  224. package/src/stories/assets/direction.svg +0 -1
  225. package/src/stories/assets/flow.svg +0 -1
  226. package/src/stories/assets/plugin.svg +0 -1
  227. package/src/stories/assets/repo.svg +0 -1
  228. package/src/stories/assets/stackalt.svg +0 -1
  229. package/src/stories/button.css +0 -30
  230. package/src/stories/header.css +0 -32
  231. package/webpack.config.js +0 -36
@@ -1,12 +1,12 @@
1
1
  <template>
2
- <div
2
+ <div
3
3
  class="psui-el-inline-selector"
4
- @keydown.up="$emit('keydown-up', $event)"
5
- @keydown.down="$emit('keydown-down', $event)"
6
- @keydown.enter="$emit('keydown-enter', $event)"
7
- @keydown.tab="$emit('keydown-tab',$event)"
8
- @keydown.esc="$emit('keydown-esc',$event)"
9
- @mouseleave="$emit('mouse-leave',$event)"
4
+ @keydown.up="emit('keydown-up', $event)"
5
+ @keydown.down="emit('keydown-down', $event)"
6
+ @keydown.enter="emit('keydown-enter', $event)"
7
+ @keydown.tab="emit('keydown-tab', $event)"
8
+ @keydown.esc="emit('keydown-esc', $event)"
9
+ @mouseleave="emit('mouse-leave', $event)"
10
10
  >
11
11
  <div class="psui-el-inline-selector-input-wrapper">
12
12
  <span> {{ search ? search : placeholder }} </span>
@@ -14,9 +14,9 @@
14
14
  ref="input"
15
15
  :label="label"
16
16
  :placeholder="placeholder"
17
- @input="$emit('input', $event)"
18
- @focus="$emit('focus', $event)"
19
- @blur="$emit('blur', $event)"
17
+ @input="emit('input', $event)"
18
+ @focus="emit('focus', $event)"
19
+ @blur="emit('blur', $event)"
20
20
  autocomplete="chrome-off"
21
21
  autocorrect="off"
22
22
  autocapitalize="off"
@@ -31,9 +31,9 @@
31
31
  leave-class="opacity-100 scale-100"
32
32
  leave-to-class="opacity-0 scale-95"
33
33
  >
34
- <div
34
+ <div
35
35
  v-if="search"
36
- role="menu"
36
+ role="menu"
37
37
  aria-orientation="vertical"
38
38
  class="psui-el-inline-selector-dropdown-wrapper"
39
39
  >
@@ -49,8 +49,8 @@
49
49
  v-for="(jurisdiction, index) in jurisdictions"
50
50
  :key="`dropdown-jurisdiction-${jurisdiction.id}`"
51
51
  :id="`jurisdiction-list-item-${index}`"
52
- @click="$emit('click', $event)"
53
- @mouseover="('mouse-over', $event)"
52
+ @click="emit('click', $event)"
53
+ @mouseover="'mouse-over', $event"
54
54
  >
55
55
  <span>
56
56
  <h3>{{ jurisdiction.title }}</h3>
@@ -64,89 +64,89 @@
64
64
  </div>
65
65
  </template>
66
66
 
67
- <script>
68
- export default {
69
- name: 'PsInlineSelector',
70
- props: {
71
- /**
72
- * It sets the default width of the inline selector.
73
- */
74
- width: {
75
- default: 244
76
- },
77
- /**
78
- * It sets if it should receive focus or not when componented is mounted.
79
- */
80
- focusOnMount: {
81
- default: false
82
- },
83
- /**
84
- * It sets if the component should be scrollable.
85
- */
86
- shouldScroll: {
87
- default: false
88
- },
89
- /**
90
- * It sets the label of the component.
91
- */
92
- label: {
93
- type: String,
94
- default: 'Type a City or County'
95
- },
96
- selectOnlyFirstClimateZone: {
97
- type: Boolean,
98
- default: false
99
- },
100
- /**
101
- * It sets the jurisdiction selected.
102
- */
103
- jurisdictionSelected: {
104
- type: [ Object, Boolean ]
105
- },
106
- /**
107
- * It gets and set the data that was written.
108
- */
109
- search: {
110
- type: String,
111
- default: '',
112
- required: true
113
- },
114
- /**
115
- * It provides all the jurisdictions.
116
- */
117
- jurisdictions: {
118
- type: Array,
119
- default: () => [],
120
- required: true
121
- },
122
- /**
123
- * It is a helper for checking if fetching data was successful.
124
- */
125
- requestFetched: {
126
- type: Boolean,
127
- },
128
- showDropDown:{
129
- type: Boolean,
130
- default: true,
131
- },
132
- currentSelected:{
133
- type: Number,
134
- default: 0,
135
- },
136
- /**
137
- * It sets if the component is focused or not.
138
- */
139
- isFocused:{
140
- type: Boolean,
141
- default: false,
142
- },
143
- /**
144
- * It sets the placeholder of the component.
145
- */
146
- placeholder:{
147
- type: String,
148
- }
149
- }
150
- }
151
- </script>
67
+ <script setup>
68
+ import { defineProps, defineEmits } from 'vue'
69
+
70
+ const emit = defineEmits(['keydown-up', 'keydown-down', 'keydown-enter', 'keydown-tab', 'keydown-esc', 'mouse-leave', 'input', 'focus', 'blur', 'click'])
152
71
 
72
+ defineProps({
73
+ /**
74
+ * It sets the default width of the inline selector.
75
+ */
76
+ width: {
77
+ default: 244,
78
+ },
79
+ /**
80
+ * It sets if it should receive focus or not when componented is mounted.
81
+ */
82
+ focusOnMount: {
83
+ default: false,
84
+ },
85
+ /**
86
+ * It sets if the component should be scrollable.
87
+ */
88
+ shouldScroll: {
89
+ default: false,
90
+ },
91
+ /**
92
+ * It sets the label of the component.
93
+ */
94
+ label: {
95
+ type: String,
96
+ default: 'Type a City or County',
97
+ },
98
+ selectOnlyFirstClimateZone: {
99
+ type: Boolean,
100
+ default: false,
101
+ },
102
+ /**
103
+ * It sets the jurisdiction selected.
104
+ */
105
+ jurisdictionSelected: {
106
+ type: [Object, Boolean],
107
+ },
108
+ /**
109
+ * It gets and set the data that was written.
110
+ */
111
+ search: {
112
+ type: String,
113
+ default: '',
114
+ required: true,
115
+ },
116
+ /**
117
+ * It provides all the jurisdictions.
118
+ */
119
+ jurisdictions: {
120
+ type: Array,
121
+ default: () => [],
122
+ required: true,
123
+ },
124
+ /**
125
+ * It is a helper for checking if fetching data was successful.
126
+ */
127
+ requestFetched: {
128
+ type: Boolean,
129
+ },
130
+ showDropDown: {
131
+ type: Boolean,
132
+ default: true,
133
+ },
134
+ currentSelected: {
135
+ type: Number,
136
+ default: 0,
137
+ },
138
+ /**
139
+ * It sets if the component is focused or not.
140
+ */
141
+ isFocused: {
142
+ type: Boolean,
143
+ default: false,
144
+ },
145
+ /**
146
+ * It sets the placeholder of the component.
147
+ */
148
+ placeholder: {
149
+ type: String,
150
+ },
151
+ })
152
+ </script>
@@ -1,76 +1,77 @@
1
1
  <template>
2
2
  <div
3
3
  class="psui-el-radio"
4
- :class="[getComponentClass, {'disabled':disabled}]"
4
+ :class="[getComponentClass, { disabled: disabled }]"
5
5
  >
6
6
  <input
7
7
  :id="inputId"
8
8
  type="radio"
9
9
  :value="inputValue"
10
10
  v-model="model"
11
- :disabled="disabled"
11
+ :disabled="disabled"
12
12
  >
13
13
  <label
14
14
  :for="inputId"
15
15
  class="psui-el-checkmark"
16
- ><span>{{ label }}</span></label>
16
+ ><span>{{ label }}</span></label>
17
17
  </div>
18
18
  </template>
19
-
20
- <script>
19
+
20
+ <script setup>
21
21
  //FIGMA CONTROLS & SELECTORS https://www.figma.com/file/Tto8hrNlSfuPcwd1pfqogF/%E2%9A%A1%EF%B8%8F-Design-System?node-id=1768%3A64852
22
-
23
- export default {
24
- name: 'PsRadioButton',
25
- props: {
26
- inputId: {
27
- type: String,
28
- default: ''
29
- },
30
- /**
31
- * It sets the label of the radio button.
32
- */
33
- label: {
34
- type: String,
35
- default: '',
36
- },
37
- /**
38
- * It's the value of the checkbox
39
- */
40
- inputValue:{
41
- type: [String, Object],
42
- },
43
- value:{
44
- type: [String, Object]
45
- },
46
- /**
47
- * It disables the radio button. All mouse events are disabled.
48
- */
49
- disabled: {
50
- type: Boolean,
51
- default: false
52
- },
53
- /**
54
- * It sets the size of the radio button. eg: big and small.
55
- */
56
- size: {
57
- type: String,
58
- default: 'big',
59
- validator: (value) => ['big', 'small'].includes(value)
60
- },
22
+ import { defineProps, computed, defineEmits } from 'vue'
23
+
24
+ const props = defineProps({
25
+ inputId: {
26
+ type: String,
27
+ default: '',
61
28
  },
62
- computed: {
63
- getComponentClass(){
64
- return `size-${this.size}`
65
- },
66
- model: {
67
- get(){
68
- return this.value
69
- },
70
- set(value){
71
- this.$emit('input', value)
72
- }
73
- }
29
+ /**
30
+ * It sets the label of the radio button.
31
+ */
32
+ label: {
33
+ type: String,
34
+ default: '',
74
35
  },
75
- }
76
- </script>
36
+ /**
37
+ * It's the value of the checkbox
38
+ */
39
+ inputValue: {
40
+ type: [String, Object],
41
+ default: '',
42
+ },
43
+ value: {
44
+ type: [String, Object],
45
+ default: '',
46
+ },
47
+ /**
48
+ * It disables the radio button. All mouse events are disabled.
49
+ */
50
+ disabled: {
51
+ type: Boolean,
52
+ default: false,
53
+ },
54
+ /**
55
+ * It sets the size of the radio button. eg: big and small.
56
+ */
57
+ size: {
58
+ type: String,
59
+ default: 'big',
60
+ validator: (value) => ['big', 'small'].includes(value),
61
+ },
62
+ })
63
+
64
+ const emit = defineEmits(['input'])
65
+ const getComponentClass = computed(() => {
66
+ return `size-${props.size}`
67
+ })
68
+
69
+ const model = computed({
70
+ get: () => {
71
+ return props.value
72
+ },
73
+ set: (value) => {
74
+ emit('input', value)
75
+ },
76
+ })
77
+ </script>
@@ -1,97 +1,101 @@
1
1
  <template>
2
- <div
3
- class="psui-el-radio"
4
- :class="[getComponentClass, {'disabled':disabled}]"
2
+ <div
3
+ class="psui-el-radio"
4
+ :class="[getComponentClass, { disabled: disabled }]"
5
5
  v-bind="getComponentAttrs"
6
6
  >
7
- <input
8
- type="radio"
9
- :checked="checked"
7
+ <input
8
+ type="radio"
9
+ :checked="checked"
10
10
  :disabled="disabled"
11
11
  :label="label"
12
12
  :name="name"
13
13
  :id="getInputId"
14
14
  v-bind="inputAttrs"
15
- @change="$emit('change')"
15
+ @change="emit('change')"
16
16
  >
17
- <label
17
+ <label
18
18
  :for="getInputId"
19
19
  class="psui-el-checkmark"
20
20
  >
21
21
  <slot name="content">
22
22
  <span>{{ label }}</span>
23
23
  </slot>
24
- </label>
24
+ </label>
25
25
  </div>
26
26
  </template>
27
27
 
28
- <script>
29
- import { randomString } from '../../util/GeneralFunctions'
28
+ <script setup>
29
+ import { randomString } from '../../util/GeneralFunctions.js'
30
+ import { defineProps, computed, useAttrs, defineEmits } from 'vue'
30
31
 
31
- export default {
32
- name: 'PsRadioButtonSimple',
33
- props: {
34
- /**
35
- * It sets the label of the checkbox input.
36
- */
37
- label: {
38
- type: String,
39
- },
40
- name:{
41
- type: String,
42
- },
43
- /**
44
- * It disables the checkbox input.
45
- */
46
- disabled: {
47
- type: Boolean,
48
- default: false,
49
- },
50
- /**
51
- * Sets the input as checked
52
- */
53
- checked: {
54
- type: Boolean,
55
- default: false
56
- },
57
- /**
58
- * Add html attributes to the element input
59
- */
60
- inputAttrs: {
61
- type: Object,
62
- default: () => ({})
63
- },
64
- /**
65
- * It set the of the checkbox input. eg: big and small.
66
- */
67
- size: {
68
- type: String,
69
- default: 'big',
70
- validator: (value)=> ['big', 'small'].includes(value)
71
- },
72
- /**
73
- * It set the layout of the checkbox input. eg: default and mixed.
74
- */
32
+ const emit = defineEmits(['change'])
33
+
34
+ const props = defineProps({
35
+ /**
36
+ * It sets the label of the checkbox input.
37
+ */
38
+ label: {
39
+ type: String,
40
+ default: '',
41
+ },
42
+ name: {
43
+ type: String,
44
+ default: '',
45
+ },
46
+ /**
47
+ * It disables the checkbox input.
48
+ */
49
+ disabled: {
50
+ type: Boolean,
51
+ default: false,
52
+ },
53
+ /**
54
+ * Sets the input as checked
55
+ */
56
+ checked: {
57
+ type: Boolean,
58
+ default: false,
59
+ },
60
+ /**
61
+ * Add html attributes to the element input
62
+ */
63
+ inputAttrs: {
64
+ type: Object,
65
+ default: () => ({}),
75
66
  },
76
- inheritAttrs: false,
77
- computed:{
78
- getComponentClass(){
79
- return `size-${this.size}`
80
- },
81
- getInputId() {
82
- if (this?.inputAttrs?.id) {
83
- return this.inputAttrs.id
84
- } else if (this?.$attrs?.id) {
85
- return this.$attrs.id
86
- } else {
87
- return randomString(16)
88
- }
89
- },
90
- getComponentAttrs() {
91
- let componentAttrs = { ... this.$attrs }
92
- delete componentAttrs.id
93
- return componentAttrs
94
- }
67
+ /**
68
+ * It set the of the checkbox input. eg: big and small.
69
+ */
70
+ size: {
71
+ type: String,
72
+ default: 'big',
73
+ validator: (value) => ['big', 'small'].includes(value),
95
74
  },
96
- }
75
+ /**
76
+ * It set the layout of the checkbox input. eg: default and mixed.
77
+ */
78
+ })
79
+
80
+ const attrs = useAttrs()
81
+
82
+ const getComponentClass = computed(() => {
83
+ return `size-${props.size}`
84
+ })
85
+
86
+ const getInputId = computed(() => {
87
+ if (props?.inputAttrs?.id) {
88
+ return props.inputAttrs.id
89
+ } else if (attrs?.id) {
90
+ return attrs.id
91
+ } else {
92
+ return randomString(16)
93
+ }
94
+ })
95
+
96
+ const getComponentAttrs = computed(() => {
97
+ let componentAttrs = { ...attrs }
98
+ delete componentAttrs.id
99
+ return componentAttrs
100
+ })
97
101
  </script>