quasar-ui-sellmate-ui-kit 3.11.1 → 3.11.2

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/.eslintrc.cjs +104 -104
  2. package/.prettierrc +25 -25
  3. package/README.md +156 -156
  4. package/dist/index.common.js +2 -2
  5. package/dist/index.css +1 -1
  6. package/dist/index.esm.js +2 -2
  7. package/dist/index.min.css +1 -1
  8. package/dist/index.rtl.css +1 -1
  9. package/dist/index.rtl.min.css +1 -1
  10. package/dist/index.umd.js +4417 -4405
  11. package/dist/index.umd.min.js +2 -2
  12. package/html/assets/index-iPSQW1bz.css +1 -1
  13. package/html/assets/index-pzCGhZhc.js +35 -35
  14. package/html/favicon.svg +5 -5
  15. package/html/index.html +26 -26
  16. package/package.json +95 -95
  17. package/src/assets/icons.js +63 -63
  18. package/src/components/SBadge.vue +75 -75
  19. package/src/components/SButton.vue +206 -206
  20. package/src/components/SButtonGroup.vue +41 -41
  21. package/src/components/SButtonToggle.vue +200 -200
  22. package/src/components/SCaution.vue +143 -143
  23. package/src/components/SCheckbox.vue +123 -123
  24. package/src/components/SChip.vue +99 -99
  25. package/src/components/SDate.vue +664 -664
  26. package/src/components/SDateAutoRangePicker.vue +311 -311
  27. package/src/components/SDatePicker.vue +465 -465
  28. package/src/components/SDateRange.vue +382 -382
  29. package/src/components/SDateRangePicker.vue +582 -582
  30. package/src/components/SDateTimePicker.vue +259 -259
  31. package/src/components/SDialog.vue +250 -250
  32. package/src/components/SDropdown.vue +273 -273
  33. package/src/components/SEditor.vue +590 -590
  34. package/src/components/SFilePicker.vue +207 -207
  35. package/src/components/SHelp.vue +126 -126
  36. package/src/components/SHelpMessage.vue +57 -57
  37. package/src/components/SInput.vue +379 -379
  38. package/src/components/SInputCounter.vue +46 -46
  39. package/src/components/SInputNumber.vue +194 -194
  40. package/src/components/SList.vue +29 -29
  41. package/src/components/SMarkupTable.vue +142 -142
  42. package/src/components/SPagination.vue +345 -345
  43. package/src/components/SRadio.vue +78 -78
  44. package/src/components/SRouteTab.vue +67 -67
  45. package/src/components/SSelect.vue +299 -299
  46. package/src/components/SSelectCheckbox.vue +238 -238
  47. package/src/components/SSelectCustom.vue +189 -189
  48. package/src/components/SSelectGroupCheckbox.vue +372 -372
  49. package/src/components/SSelectSearchAutoComplete.vue +172 -172
  50. package/src/components/SSelectSearchCheckbox.vue +360 -360
  51. package/src/components/SStringToInput.vue +66 -66
  52. package/src/components/STab.vue +147 -147
  53. package/src/components/STable.vue +21 -9
  54. package/src/components/STableTree.vue +502 -502
  55. package/src/components/STabs.vue +32 -32
  56. package/src/components/STag.vue +152 -152
  57. package/src/components/STimePicker.vue +186 -186
  58. package/src/components/SToggle.vue +68 -68
  59. package/src/components/STooltip.vue +209 -209
  60. package/src/components/SYearMonthPicker.vue +211 -211
  61. package/src/components/SelelctItem.vue +21 -21
  62. package/src/components/TableTreeNode.vue +177 -177
  63. package/src/components/TimePickerCard.vue +393 -393
  64. package/src/components/__tests__/SButton.test.js +18 -18
  65. package/src/components/__tests__/SInput.test.js +42 -42
  66. package/src/components/__tests__/SInputCounter.test.js +30 -30
  67. package/src/components/__tests__/SInputNumber.test.js +32 -32
  68. package/src/components/__tests__/STimePicker.spec.js +78 -78
  69. package/src/composables/date.js +11 -11
  70. package/src/composables/modelBinder.js +13 -13
  71. package/src/composables/resizable.js +55 -55
  72. package/src/composables/table/use-navigator.js +110 -110
  73. package/src/composables/table/use-resizable-tree.js +96 -96
  74. package/src/composables/table/use-resizable.js +187 -187
  75. package/src/constants/locale.js +102 -102
  76. package/src/css/app.scss +106 -106
  77. package/src/css/default.scss +393 -393
  78. package/src/css/extends.scss +177 -177
  79. package/src/css/quasar.variables.scss +187 -187
  80. package/src/directives/Directive.js +7 -7
  81. package/src/index.scss +3 -3
  82. package/src/vue-plugin.js +93 -93
  83. package/tsconfig.json +35 -35
  84. package/vitest.config.ts +31 -31
@@ -1,273 +1,273 @@
1
- <template>
2
- <q-btn
3
- outline
4
- split
5
- :color="$attrs.color || 'Grey_Default'"
6
- no-caps
7
- no-wrap
8
- unelevated
9
- :ripple="false"
10
- :icon-right="arrowDownIcon"
11
- menu-anchor="bottom start"
12
- menu-self="top start"
13
- class="s-dropdown"
14
- :class="{
15
- 's-dropdown-xs': size === 'xs',
16
- 's-dropdown-sm': size === 'sm',
17
- 's-dropdown-md': size === 'md',
18
- 's-dropdown-lg': size === 'lg',
19
- }"
20
- >
21
- <q-menu :class="menuClass" fit class="s-dropdown-menu" :offset="[0, 4]">
22
- <template v-for="(opt, i) in options" :key="i">
23
- <q-item
24
- :clickable="opt.disable === undefined || opt.disable === false"
25
- v-if="opt.display === true || opt.display === undefined"
26
- v-close-popup
27
- @click="
28
- () => {
29
- $emit('handleClickOption', opt[optionValue]);
30
- $emit('handleClick', opt);
31
- }
32
- "
33
- >
34
- <q-item-section>
35
- <q-item-label v-html="opt[optionLabel]"></q-item-label>
36
- </q-item-section>
37
- </q-item>
38
- </template>
39
- </q-menu>
40
- </q-btn>
41
- </template>
42
-
43
- <script>
44
- import { QBtn, QItem, QItemLabel, QItemSection, QMenu } from 'quasar';
45
- import { defineComponent, ref } from 'vue';
46
- import { arrowDownIcon } from '../assets/icons';
47
-
48
- export default defineComponent({
49
- name: 'SDropdown',
50
- components: {
51
- QBtn,
52
- QMenu,
53
- QItem,
54
- QItemSection,
55
- QItemLabel,
56
- },
57
- props: {
58
- options: {
59
- type: Array,
60
- /**
61
- * label -> optionLabel;
62
- * value -> optionValue;
63
- * @return {{ label: string, value: string, disable: boolean, display: boolean }[]}
64
- */
65
- default: () => [],
66
- },
67
- size: {
68
- type: String,
69
- default: 'sm',
70
- },
71
- menuClass: String,
72
- optionLabel: {
73
- type: String,
74
- default: 'label',
75
- },
76
- optionValue: {
77
- type: String,
78
- default: 'value',
79
- },
80
- },
81
- setup() {
82
- return {
83
- arrowDownIcon,
84
- showMenu: ref(false),
85
- };
86
- },
87
- });
88
- </script>
89
-
90
- <style lang="scss">
91
- @import '../css/quasar.variables.scss';
92
-
93
- @mixin textSize($padding, $lineHeight, $fontSize, $fontWeight, $iconSize, $iconMargin) {
94
- .block {
95
- padding: $padding;
96
- line-height: $lineHeight;
97
- font: {
98
- size: $fontSize;
99
- weight: $fontWeight;
100
- }
101
- }
102
-
103
- .q-icon {
104
- font-size: $iconSize;
105
- margin: $iconMargin;
106
- }
107
- }
108
-
109
- .s-dropdown {
110
- min-height: 0;
111
- padding: 0 !important;
112
- line-height: normal;
113
-
114
- .q-btn__content {
115
- min-height: 0;
116
- align-items: center;
117
- .block {
118
- border-right: 1px solid color-mix(in srgb, white 25%, transparent);
119
- height: 100%;
120
- }
121
- .q-icon {
122
- padding: 0;
123
- border-right: none;
124
- color: white;
125
- }
126
- }
127
-
128
- &.q-btn--outline {
129
- .q-btn__content {
130
- .block {
131
- color: currentColor;
132
- border-right: 1px solid currentColor;
133
- }
134
- .q-icon {
135
- color: currentColor;
136
- }
137
- }
138
-
139
- &:hover {
140
- &.q-focusable:focus,
141
- &.q-manual-focusable--focused,
142
- &.q-hoverable:hover {
143
- > .q-focus-helper {
144
- &:before {
145
- opacity: 0;
146
- }
147
- &:after {
148
- opacity: 0.55;
149
- }
150
- }
151
- }
152
- }
153
- }
154
-
155
- &:hover {
156
- &.q-focusable:focus,
157
- &.q-manual-focusable--focused,
158
- &.q-hoverable:hover {
159
- > .q-focus-helper {
160
- opacity: 0.3;
161
- transition: opacity 0.4s cubic-bezier(0.25, 0.8, 0.5, 1);
162
- &:before {
163
- opacity: 1.4;
164
- transition: none;
165
- }
166
- &:after {
167
- opacity: 0;
168
- transition: none;
169
- }
170
- }
171
- }
172
- }
173
-
174
- &.s-dropdown-xs {
175
- min-width: 67px;
176
- .q-btn__content {
177
- @include textSize(
178
- 2px 6px 2px 8px,
179
- $default-content-height,
180
- $default-font,
181
- $default-font-weight,
182
- $default-font,
183
- 5px 5px 5px 4px
184
- );
185
- }
186
- }
187
-
188
- &.s-dropdown-sm {
189
- min-width: 75px;
190
- .q-btn__content {
191
- @include textSize(
192
- 4px 10px 4px 12px,
193
- $default-content-height,
194
- $default-font,
195
- $default-font-weight,
196
- $default-font,
197
- 7px 8px
198
- );
199
- }
200
- }
201
-
202
- &.s-dropdown-md {
203
- min-width: 107px;
204
-
205
- .q-btn__content {
206
- @include textSize(
207
- 6px 16px 6px 20px,
208
- $default-content-height,
209
- $font-md,
210
- $font-weight-md,
211
- $default-font,
212
- 11px 12px
213
- );
214
- }
215
- }
216
-
217
- &.s-dropdown-lg {
218
- min-width: 107px;
219
-
220
- .q-btn__content {
221
- @include textSize(
222
- 16px 24px 16px 28px,
223
- 30px,
224
- 18px,
225
- $font-weight-md,
226
- $icon-size-lg,
227
- 19px 20px
228
- );
229
- }
230
- }
231
-
232
- &.disabled {
233
- opacity: 1 !important;
234
- border: none;
235
- padding: 0;
236
- &:before {
237
- border: 1px solid $Grey_Lighten-2;
238
- background: $Grey_Lighten-3 !important;
239
- }
240
-
241
- .q-btn__content {
242
- > .block,
243
- > .q-icon {
244
- color: $Grey_Default;
245
- }
246
-
247
- .block {
248
- border-right: 1px solid $Grey_Lighten-2 !important;
249
- }
250
- }
251
- }
252
- }
253
-
254
- // TODO: md 사이즈 필요
255
- .s-dropdown-menu {
256
- .q-item {
257
- padding: 4px 12px;
258
- min-height: 0;
259
-
260
- &__section {
261
- min-height: 0;
262
- height: 20px;
263
- }
264
-
265
- &:not(.q-item--clickable) {
266
- cursor: default;
267
- color: $Grey_Lighten-1;
268
- }
269
- }
270
-
271
- box-shadow: 0px 2px 6px 0px #00000020;
272
- }
273
- </style>
1
+ <template>
2
+ <q-btn
3
+ outline
4
+ split
5
+ :color="$attrs.color || 'Grey_Default'"
6
+ no-caps
7
+ no-wrap
8
+ unelevated
9
+ :ripple="false"
10
+ :icon-right="arrowDownIcon"
11
+ menu-anchor="bottom start"
12
+ menu-self="top start"
13
+ class="s-dropdown"
14
+ :class="{
15
+ 's-dropdown-xs': size === 'xs',
16
+ 's-dropdown-sm': size === 'sm',
17
+ 's-dropdown-md': size === 'md',
18
+ 's-dropdown-lg': size === 'lg',
19
+ }"
20
+ >
21
+ <q-menu :class="menuClass" fit class="s-dropdown-menu" :offset="[0, 4]">
22
+ <template v-for="(opt, i) in options" :key="i">
23
+ <q-item
24
+ :clickable="opt.disable === undefined || opt.disable === false"
25
+ v-if="opt.display === true || opt.display === undefined"
26
+ v-close-popup
27
+ @click="
28
+ () => {
29
+ $emit('handleClickOption', opt[optionValue]);
30
+ $emit('handleClick', opt);
31
+ }
32
+ "
33
+ >
34
+ <q-item-section>
35
+ <q-item-label v-html="opt[optionLabel]"></q-item-label>
36
+ </q-item-section>
37
+ </q-item>
38
+ </template>
39
+ </q-menu>
40
+ </q-btn>
41
+ </template>
42
+
43
+ <script>
44
+ import { QBtn, QItem, QItemLabel, QItemSection, QMenu } from 'quasar';
45
+ import { defineComponent, ref } from 'vue';
46
+ import { arrowDownIcon } from '../assets/icons';
47
+
48
+ export default defineComponent({
49
+ name: 'SDropdown',
50
+ components: {
51
+ QBtn,
52
+ QMenu,
53
+ QItem,
54
+ QItemSection,
55
+ QItemLabel,
56
+ },
57
+ props: {
58
+ options: {
59
+ type: Array,
60
+ /**
61
+ * label -> optionLabel;
62
+ * value -> optionValue;
63
+ * @return {{ label: string, value: string, disable: boolean, display: boolean }[]}
64
+ */
65
+ default: () => [],
66
+ },
67
+ size: {
68
+ type: String,
69
+ default: 'sm',
70
+ },
71
+ menuClass: String,
72
+ optionLabel: {
73
+ type: String,
74
+ default: 'label',
75
+ },
76
+ optionValue: {
77
+ type: String,
78
+ default: 'value',
79
+ },
80
+ },
81
+ setup() {
82
+ return {
83
+ arrowDownIcon,
84
+ showMenu: ref(false),
85
+ };
86
+ },
87
+ });
88
+ </script>
89
+
90
+ <style lang="scss">
91
+ @import '../css/quasar.variables.scss';
92
+
93
+ @mixin textSize($padding, $lineHeight, $fontSize, $fontWeight, $iconSize, $iconMargin) {
94
+ .block {
95
+ padding: $padding;
96
+ line-height: $lineHeight;
97
+ font: {
98
+ size: $fontSize;
99
+ weight: $fontWeight;
100
+ }
101
+ }
102
+
103
+ .q-icon {
104
+ font-size: $iconSize;
105
+ margin: $iconMargin;
106
+ }
107
+ }
108
+
109
+ .s-dropdown {
110
+ min-height: 0;
111
+ padding: 0 !important;
112
+ line-height: normal;
113
+
114
+ .q-btn__content {
115
+ min-height: 0;
116
+ align-items: center;
117
+ .block {
118
+ border-right: 1px solid color-mix(in srgb, white 25%, transparent);
119
+ height: 100%;
120
+ }
121
+ .q-icon {
122
+ padding: 0;
123
+ border-right: none;
124
+ color: white;
125
+ }
126
+ }
127
+
128
+ &.q-btn--outline {
129
+ .q-btn__content {
130
+ .block {
131
+ color: currentColor;
132
+ border-right: 1px solid currentColor;
133
+ }
134
+ .q-icon {
135
+ color: currentColor;
136
+ }
137
+ }
138
+
139
+ &:hover {
140
+ &.q-focusable:focus,
141
+ &.q-manual-focusable--focused,
142
+ &.q-hoverable:hover {
143
+ > .q-focus-helper {
144
+ &:before {
145
+ opacity: 0;
146
+ }
147
+ &:after {
148
+ opacity: 0.55;
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+
155
+ &:hover {
156
+ &.q-focusable:focus,
157
+ &.q-manual-focusable--focused,
158
+ &.q-hoverable:hover {
159
+ > .q-focus-helper {
160
+ opacity: 0.3;
161
+ transition: opacity 0.4s cubic-bezier(0.25, 0.8, 0.5, 1);
162
+ &:before {
163
+ opacity: 1.4;
164
+ transition: none;
165
+ }
166
+ &:after {
167
+ opacity: 0;
168
+ transition: none;
169
+ }
170
+ }
171
+ }
172
+ }
173
+
174
+ &.s-dropdown-xs {
175
+ min-width: 67px;
176
+ .q-btn__content {
177
+ @include textSize(
178
+ 2px 6px 2px 8px,
179
+ $default-content-height,
180
+ $default-font,
181
+ $default-font-weight,
182
+ $default-font,
183
+ 5px 5px 5px 4px
184
+ );
185
+ }
186
+ }
187
+
188
+ &.s-dropdown-sm {
189
+ min-width: 75px;
190
+ .q-btn__content {
191
+ @include textSize(
192
+ 4px 10px 4px 12px,
193
+ $default-content-height,
194
+ $default-font,
195
+ $default-font-weight,
196
+ $default-font,
197
+ 7px 8px
198
+ );
199
+ }
200
+ }
201
+
202
+ &.s-dropdown-md {
203
+ min-width: 107px;
204
+
205
+ .q-btn__content {
206
+ @include textSize(
207
+ 6px 16px 6px 20px,
208
+ $default-content-height,
209
+ $font-md,
210
+ $font-weight-md,
211
+ $default-font,
212
+ 11px 12px
213
+ );
214
+ }
215
+ }
216
+
217
+ &.s-dropdown-lg {
218
+ min-width: 107px;
219
+
220
+ .q-btn__content {
221
+ @include textSize(
222
+ 16px 24px 16px 28px,
223
+ 30px,
224
+ 18px,
225
+ $font-weight-md,
226
+ $icon-size-lg,
227
+ 19px 20px
228
+ );
229
+ }
230
+ }
231
+
232
+ &.disabled {
233
+ opacity: 1 !important;
234
+ border: none;
235
+ padding: 0;
236
+ &:before {
237
+ border: 1px solid $Grey_Lighten-2;
238
+ background: $Grey_Lighten-3 !important;
239
+ }
240
+
241
+ .q-btn__content {
242
+ > .block,
243
+ > .q-icon {
244
+ color: $Grey_Default;
245
+ }
246
+
247
+ .block {
248
+ border-right: 1px solid $Grey_Lighten-2 !important;
249
+ }
250
+ }
251
+ }
252
+ }
253
+
254
+ // TODO: md 사이즈 필요
255
+ .s-dropdown-menu {
256
+ .q-item {
257
+ padding: 4px 12px;
258
+ min-height: 0;
259
+
260
+ &__section {
261
+ min-height: 0;
262
+ height: 20px;
263
+ }
264
+
265
+ &:not(.q-item--clickable) {
266
+ cursor: default;
267
+ color: $Grey_Lighten-1;
268
+ }
269
+ }
270
+
271
+ box-shadow: 0px 2px 6px 0px #00000020;
272
+ }
273
+ </style>