quasar-ui-sellmate-ui-kit 3.0.3 → 3.0.5

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 (67) hide show
  1. package/.prettierrc +25 -25
  2. package/README.md +156 -156
  3. package/dist/index.common.js +2 -2
  4. package/dist/index.css +1 -1
  5. package/dist/index.esm.js +2 -2
  6. package/dist/index.min.css +1 -1
  7. package/dist/index.rtl.css +1 -1
  8. package/dist/index.rtl.min.css +1 -1
  9. package/dist/index.umd.js +3829 -3829
  10. package/dist/index.umd.min.js +2 -2
  11. package/package.json +83 -83
  12. package/src/assets/icons.js +28 -28
  13. package/src/components/SBreadcrumbs.vue +55 -55
  14. package/src/components/SButton.vue +206 -206
  15. package/src/components/SButtonGroup.vue +41 -41
  16. package/src/components/SButtonToggle.vue +200 -200
  17. package/src/components/SCaution.vue +102 -102
  18. package/src/components/SCheckbox.vue +123 -123
  19. package/src/components/SChip.vue +99 -99
  20. package/src/components/SDate.vue +717 -717
  21. package/src/components/SDateAutoRangePicker.vue +341 -341
  22. package/src/components/SDatePicker.vue +472 -472
  23. package/src/components/SDateRange.vue +470 -470
  24. package/src/components/SDateRangePicker.vue +660 -660
  25. package/src/components/SDateTimePicker.vue +349 -349
  26. package/src/components/SDialog.vue +250 -250
  27. package/src/components/SDropdown.vue +216 -216
  28. package/src/components/SEditor.vue +490 -490
  29. package/src/components/SFilePicker.vue +207 -207
  30. package/src/components/SHelp.vue +146 -146
  31. package/src/components/SInput.vue +343 -343
  32. package/src/components/SInputCounter.vue +46 -46
  33. package/src/components/SInputNumber.vue +179 -179
  34. package/src/components/SList.vue +29 -29
  35. package/src/components/SMarkupTable.vue +141 -141
  36. package/src/components/SPagination.vue +266 -266
  37. package/src/components/SRadio.vue +78 -78
  38. package/src/components/SRouteTab.vue +67 -67
  39. package/src/components/SSelect.vue +294 -294
  40. package/src/components/SSelectCheckbox.vue +222 -222
  41. package/src/components/SSelectCustom.vue +189 -189
  42. package/src/components/SSelectGroupCheckbox.vue +235 -235
  43. package/src/components/SSelectSearch.vue +261 -261
  44. package/src/components/SSelectSearchAutoComplete.vue +172 -172
  45. package/src/components/SSelectSearchCheckbox.vue +356 -356
  46. package/src/components/SStringToInput.vue +66 -66
  47. package/src/components/STab.vue +77 -77
  48. package/src/components/STable.vue +425 -425
  49. package/src/components/STableTree.vue +210 -210
  50. package/src/components/STabs.vue +32 -32
  51. package/src/components/STimePicker.vue +159 -159
  52. package/src/components/SToggle.vue +68 -68
  53. package/src/components/STooltip.vue +209 -209
  54. package/src/components/SelelctItem.vue +21 -21
  55. package/src/components/TimePickerCard.vue +352 -352
  56. package/src/composables/date.js +11 -11
  57. package/src/composables/modelBinder.js +13 -13
  58. package/src/composables/table/use-navigator.js +110 -110
  59. package/src/composables/table/use-resizable.js +80 -80
  60. package/src/css/app.scss +90 -90
  61. package/src/css/default.scss +875 -875
  62. package/src/css/extends.scss +154 -154
  63. package/src/css/quasar.variables.scss +189 -189
  64. package/src/directives/Directive.js +7 -7
  65. package/src/index.scss +3 -3
  66. package/src/vue-plugin.js +91 -91
  67. package/tsconfig.json +35 -35
@@ -1,261 +1,261 @@
1
- <template>
2
- <q-select
3
- outlined
4
- dense
5
- options-dense
6
- :dropdown-icon="selectDownArrowIcon"
7
- :popup-content-class="['s-select-search-opts', popupContentClass].join(' ')"
8
- emit-value
9
- map-options
10
- :option-label="optionLabel"
11
- :option-value="optionValue"
12
- class="s-select-search"
13
- :options="filteredOptions"
14
- :menu-offset="[0, 4]"
15
- menu-self="top left"
16
- menu-anchor="bottom start"
17
- no-error-icon
18
- hide-bottom-space
19
- >
20
- <template v-slot:before-options>
21
- <div class="search-input-form-container">
22
- <form class="select-search-input-form">
23
- <q-icon :name="searchIcon" size="20px" />
24
- <input
25
- v-model="search"
26
- autofocus
27
- class="select-search-input"
28
- :placeholder="searchPlaceholder"
29
- @input="
30
- data => {
31
- onSearch(data.target.value);
32
- }
33
- "
34
- />
35
- </form>
36
- </div>
37
- </template>
38
-
39
- <template v-slot:no-option>
40
- <div class="search-input-form-container">
41
- <form class="select-search-input-form">
42
- <q-icon :name="searchIcon" size="20px" />
43
- <input
44
- v-model="search"
45
- autofocus
46
- class="select-search-input"
47
- :placeholder="searchPlaceholder"
48
- @input="
49
- data => {
50
- onSearch(data.target.value);
51
- }
52
- "
53
- />
54
- </form>
55
- </div>
56
- <q-item class="s-select-no-option">
57
- <q-item-section class="text-grey">{{ noData }}</q-item-section>
58
- </q-item>
59
- </template>
60
-
61
- <template v-slot:option="scope">
62
- <q-item v-bind="scope.itemProps">
63
- <select-item :item="filteredOptions[scope.index].label" />
64
- </q-item>
65
- </template>
66
- </q-select>
67
- </template>
68
-
69
- <script>
70
- import { defineComponent, ref } from 'vue';
71
- import { QSelect, QItem, debounce } from 'quasar';
72
- import { selectDownArrowIcon, searchIcon } from '../assets/icons.js';
73
- import SelectItem from './SelelctItem.vue';
74
-
75
- export default defineComponent({
76
- name: 'SSelect',
77
- components: {
78
- QSelect,
79
- QItem,
80
-
81
- SelectItem,
82
- },
83
- props: {
84
- searchPlaceholder: String,
85
- options: Array,
86
- optionLabel: {
87
- type: [String, Function],
88
- default: 'label',
89
- },
90
- optionValue: {
91
- type: String,
92
- default: 'value',
93
- },
94
- noData: {
95
- type: String,
96
- default: '데이터 없음',
97
- },
98
- popupContentClass: {
99
- default: () => '',
100
- type: String,
101
- },
102
- },
103
- setup(props) {
104
- const filteredOptions = ref(props.options);
105
- const search = ref('');
106
-
107
- const onSearch = debounce(val => {
108
- if (val === '') {
109
- filteredOptions.value = props.options;
110
- } else {
111
- filteredOptions.value = props.options.filter(
112
- v => (v[props.optionLabel] || v).indexOf(val) > -1,
113
- );
114
- }
115
- }, 200);
116
-
117
- return {
118
- selectDownArrowIcon,
119
- searchIcon,
120
- search,
121
- onSearch,
122
- filteredOptions,
123
- };
124
- },
125
- });
126
- </script>
127
-
128
- <style lang="scss">
129
- @import '../css/quasar.variables.scss';
130
- @import '../css/extends.scss';
131
-
132
- .s-select-search {
133
- @extend %select;
134
-
135
- .q-field__prepend {
136
- background-color: $Grey_Lighten-5;
137
- height: auto;
138
- border-right: 1px solid $Grey_Lighten-1;
139
- padding: $button-padding-sm;
140
-
141
- .include-label {
142
- font-size: $default-font;
143
- font-weight: $default-font-weight;
144
- color: $Grey_Darken-4;
145
- }
146
- }
147
- }
148
-
149
- .s-select-search-opts {
150
- padding: 0;
151
-
152
- .s-select-no-option {
153
- padding: $select-menu-padding;
154
- }
155
-
156
- @extend %select-menu-list;
157
-
158
- .group-title {
159
- opacity: 1 !important;
160
- background: $Grey_Lighten-5 !important;
161
- border: none;
162
- border-top: 1px solid $Grey_Lighten-3;
163
-
164
- .q-item__section {
165
- .q-item__label {
166
- color: $Grey_Darken-4 !important;
167
- }
168
- }
169
- }
170
-
171
- .group-option {
172
- padding: 4px 12px 4px 20px !important;
173
-
174
- &.disabled {
175
- color: $Grey_Lighten-1 !important;
176
- background: white !important;
177
- border: none !important;
178
- }
179
- }
180
-
181
- .q-item:not(.group-option) {
182
- padding: 4px 12px;
183
- }
184
-
185
- .select-search-input {
186
- margin: 4px;
187
-
188
- .q-field__inner {
189
- height: $default-height;
190
-
191
- .q-field__control {
192
- padding: 0;
193
- min-height: 0;
194
- height: $default-height;
195
-
196
- &-container {
197
- .q-field__native {
198
- font-size: $default-font;
199
- color: $Grey_Darken-5;
200
- }
201
-
202
- input::placeholder {
203
- color: $Grey_Lighten-1;
204
- }
205
- }
206
-
207
- .q-field__prepend {
208
- height: 28px;
209
- padding: 4px 8px;
210
- }
211
- }
212
- }
213
- }
214
- }
215
-
216
- .search-input-form-container {
217
- padding: 4px;
218
- .select-search-input-form {
219
- height: 28px;
220
- display: flex;
221
- align-items: center;
222
- padding-left: 8px;
223
- position: relative;
224
- border-radius: 2px;
225
- border: 1px solid $Grey_Lighten-1;
226
- background-color: white;
227
- position: sticky;
228
- top: 0;
229
- z-index: 1;
230
-
231
- &::after {
232
- content: '';
233
- position: absolute;
234
- top: 0;
235
- right: 0;
236
- bottom: 0;
237
- left: 0;
238
- pointer-events: none;
239
- border: 1px solid transparent;
240
- border-radius: inherit;
241
- }
242
-
243
- &:hover,
244
- &:focus-within {
245
- &::after {
246
- border-color: #0075ff;
247
- box-shadow: 0 0 4px #0075ff;
248
- transition: border-color 0.36s cubic-bezier(0.4, 0, 0.2, 1);
249
- }
250
- }
251
-
252
- .select-search-input {
253
- font-size: 12px;
254
- margin-left: 8px;
255
- flex-grow: 1;
256
- border: none;
257
- outline: none;
258
- }
259
- }
260
- }
261
- </style>
1
+ <template>
2
+ <q-select
3
+ outlined
4
+ dense
5
+ options-dense
6
+ :dropdown-icon="selectDownArrowIcon"
7
+ :popup-content-class="['s-select-search-opts', popupContentClass].join(' ')"
8
+ emit-value
9
+ map-options
10
+ :option-label="optionLabel"
11
+ :option-value="optionValue"
12
+ class="s-select-search"
13
+ :options="filteredOptions"
14
+ :menu-offset="[0, 4]"
15
+ menu-self="top left"
16
+ menu-anchor="bottom start"
17
+ no-error-icon
18
+ hide-bottom-space
19
+ >
20
+ <template v-slot:before-options>
21
+ <div class="search-input-form-container">
22
+ <form class="select-search-input-form">
23
+ <q-icon :name="searchIcon" size="20px" />
24
+ <input
25
+ v-model="search"
26
+ autofocus
27
+ class="select-search-input"
28
+ :placeholder="searchPlaceholder"
29
+ @input="
30
+ data => {
31
+ onSearch(data.target.value);
32
+ }
33
+ "
34
+ />
35
+ </form>
36
+ </div>
37
+ </template>
38
+
39
+ <template v-slot:no-option>
40
+ <div class="search-input-form-container">
41
+ <form class="select-search-input-form">
42
+ <q-icon :name="searchIcon" size="20px" />
43
+ <input
44
+ v-model="search"
45
+ autofocus
46
+ class="select-search-input"
47
+ :placeholder="searchPlaceholder"
48
+ @input="
49
+ data => {
50
+ onSearch(data.target.value);
51
+ }
52
+ "
53
+ />
54
+ </form>
55
+ </div>
56
+ <q-item class="s-select-no-option">
57
+ <q-item-section class="text-grey">{{ noData }}</q-item-section>
58
+ </q-item>
59
+ </template>
60
+
61
+ <template v-slot:option="scope">
62
+ <q-item v-bind="scope.itemProps">
63
+ <select-item :item="filteredOptions[scope.index].label" />
64
+ </q-item>
65
+ </template>
66
+ </q-select>
67
+ </template>
68
+
69
+ <script>
70
+ import { defineComponent, ref } from 'vue';
71
+ import { QSelect, QItem, debounce } from 'quasar';
72
+ import { selectDownArrowIcon, searchIcon } from '../assets/icons.js';
73
+ import SelectItem from './SelelctItem.vue';
74
+
75
+ export default defineComponent({
76
+ name: 'SSelect',
77
+ components: {
78
+ QSelect,
79
+ QItem,
80
+
81
+ SelectItem,
82
+ },
83
+ props: {
84
+ searchPlaceholder: String,
85
+ options: Array,
86
+ optionLabel: {
87
+ type: [String, Function],
88
+ default: 'label',
89
+ },
90
+ optionValue: {
91
+ type: String,
92
+ default: 'value',
93
+ },
94
+ noData: {
95
+ type: String,
96
+ default: '데이터 없음',
97
+ },
98
+ popupContentClass: {
99
+ default: () => '',
100
+ type: String,
101
+ },
102
+ },
103
+ setup(props) {
104
+ const filteredOptions = ref(props.options);
105
+ const search = ref('');
106
+
107
+ const onSearch = debounce(val => {
108
+ if (val === '') {
109
+ filteredOptions.value = props.options;
110
+ } else {
111
+ filteredOptions.value = props.options.filter(
112
+ v => (v[props.optionLabel] || v).indexOf(val) > -1,
113
+ );
114
+ }
115
+ }, 200);
116
+
117
+ return {
118
+ selectDownArrowIcon,
119
+ searchIcon,
120
+ search,
121
+ onSearch,
122
+ filteredOptions,
123
+ };
124
+ },
125
+ });
126
+ </script>
127
+
128
+ <style lang="scss">
129
+ @import '../css/quasar.variables.scss';
130
+ @import '../css/extends.scss';
131
+
132
+ .s-select-search {
133
+ @extend %select;
134
+
135
+ .q-field__prepend {
136
+ background-color: $Grey_Lighten-5;
137
+ height: auto;
138
+ border-right: 1px solid $Grey_Lighten-1;
139
+ padding: $button-padding-sm;
140
+
141
+ .include-label {
142
+ font-size: $default-font;
143
+ font-weight: $default-font-weight;
144
+ color: $Grey_Darken-4;
145
+ }
146
+ }
147
+ }
148
+
149
+ .s-select-search-opts {
150
+ padding: 0;
151
+
152
+ .s-select-no-option {
153
+ padding: $select-menu-padding;
154
+ }
155
+
156
+ @extend %select-menu-list;
157
+
158
+ .group-title {
159
+ opacity: 1 !important;
160
+ background: $Grey_Lighten-5 !important;
161
+ border: none;
162
+ border-top: 1px solid $Grey_Lighten-3;
163
+
164
+ .q-item__section {
165
+ .q-item__label {
166
+ color: $Grey_Darken-4 !important;
167
+ }
168
+ }
169
+ }
170
+
171
+ .group-option {
172
+ padding: 4px 12px 4px 20px !important;
173
+
174
+ &.disabled {
175
+ color: $Grey_Lighten-1 !important;
176
+ background: white !important;
177
+ border: none !important;
178
+ }
179
+ }
180
+
181
+ .q-item:not(.group-option) {
182
+ padding: 4px 12px;
183
+ }
184
+
185
+ .select-search-input {
186
+ margin: 4px;
187
+
188
+ .q-field__inner {
189
+ height: $default-height;
190
+
191
+ .q-field__control {
192
+ padding: 0;
193
+ min-height: 0;
194
+ height: $default-height;
195
+
196
+ &-container {
197
+ .q-field__native {
198
+ font-size: $default-font;
199
+ color: $Grey_Darken-5;
200
+ }
201
+
202
+ input::placeholder {
203
+ color: $Grey_Lighten-1;
204
+ }
205
+ }
206
+
207
+ .q-field__prepend {
208
+ height: 28px;
209
+ padding: 4px 8px;
210
+ }
211
+ }
212
+ }
213
+ }
214
+ }
215
+
216
+ .search-input-form-container {
217
+ padding: 4px;
218
+ .select-search-input-form {
219
+ height: 28px;
220
+ display: flex;
221
+ align-items: center;
222
+ padding-left: 8px;
223
+ position: relative;
224
+ border-radius: 2px;
225
+ border: 1px solid $Grey_Lighten-1;
226
+ background-color: white;
227
+ position: sticky;
228
+ top: 0;
229
+ z-index: 1;
230
+
231
+ &::after {
232
+ content: '';
233
+ position: absolute;
234
+ top: 0;
235
+ right: 0;
236
+ bottom: 0;
237
+ left: 0;
238
+ pointer-events: none;
239
+ border: 1px solid transparent;
240
+ border-radius: inherit;
241
+ }
242
+
243
+ &:hover,
244
+ &:focus-within {
245
+ &::after {
246
+ border-color: #0075ff;
247
+ box-shadow: 0 0 4px #0075ff;
248
+ transition: border-color 0.36s cubic-bezier(0.4, 0, 0.2, 1);
249
+ }
250
+ }
251
+
252
+ .select-search-input {
253
+ font-size: 12px;
254
+ margin-left: 8px;
255
+ flex-grow: 1;
256
+ border: none;
257
+ outline: none;
258
+ }
259
+ }
260
+ }
261
+ </style>