quasar-ui-sellmate-ui-kit 3.0.3 → 3.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 (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 +3826 -3826
  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,425 +1,425 @@
1
- <template>
2
- <q-table
3
- flat
4
- bordered
5
- hide-pagination
6
- hide-selected-banner
7
- v-bind="$attrs"
8
- :columns="columns"
9
- :rows="rows"
10
- :pagination="tablePagination"
11
- :no-data-label="noDataLabel"
12
- class="s-table"
13
- :class="{
14
- 's-select-table': $attrs.selection,
15
- 'resizable-table': resizable,
16
- 'sticky-resizable-table': stickyResizable,
17
- 'sticky-header': stickyHeader,
18
- 'before-search': !rows.length,
19
- }"
20
- @selection="updateSelected"
21
- ref="sTableRef"
22
- @request="
23
- props => {
24
- $emit('request', props);
25
- }
26
- "
27
- >
28
- <template #no-data="props">
29
- <slot name="noData" v-bind="props">
30
- <div class="full-width text-center">
31
- {{ noDataLabel }}
32
- </div>
33
- </slot>
34
- </template>
35
- <template #loading>
36
- <q-inner-loading showing color="positive" size="72px" />
37
- </template>
38
- <template v-for="(column, index) in columns" :key="index" #[`body-cell-${column.name}`]="props">
39
- <q-td
40
- v-if="navigator"
41
- :class="{
42
- focused: isFocused(props),
43
- 'text-center': props.col.align === 'center',
44
- 'text-right': props.col.align === 'right',
45
- [props.col.classes]: props.col.classes,
46
- [typeof props.row.class === 'function'
47
- ? props.row.class(props.row)
48
- : typeof props.row.class === 'string'
49
- ? props.row.class
50
- : '']: true,
51
- }"
52
- :style="props.col.style"
53
- @click.stop="focusCell(props)"
54
- >
55
- <slot :name="`body-cell-${column.name}-content`" v-bind="props">
56
- <s-input
57
- ref="inputRef"
58
- v-model="inputData"
59
- v-if="props.col.editable && editing && isFocused(props)"
60
- @blur="closeInput"
61
- v-bind="inputOptions"
62
- />
63
- <span v-else class="s-table-edited-td"
64
- >{{ props.value }}
65
- <q-icon
66
- size="16px"
67
- :name="editIcon"
68
- color="Blue_B_Lighten-1"
69
- class="q-ml-xs"
70
- v-if="props.col.editable"
71
- />
72
- </span>
73
- </slot>
74
- </q-td>
75
- <q-td
76
- v-else
77
- v-bind="props"
78
- :class="{
79
- 'text-center': props.col.align === 'center',
80
- 'text-right': props.col.align === 'right',
81
- [props.col.classes]: props.col.classes,
82
- [typeof props.row.class === 'function'
83
- ? props.row.class(props.row)
84
- : typeof props.row.class === 'string'
85
- ? props.row.class
86
- : '']: true,
87
- }"
88
- :style="props.col.style"
89
- >
90
- <slot :name="`body-cell-${column.name}-content`" v-bind="props">
91
- {{ props.value }}
92
- </slot>
93
- </q-td>
94
- </template>
95
- <template v-for="(_, slotName, index) in $slots" :key="index" #[slotName]="data">
96
- <slot :name="slotName" v-bind="data"> </slot>
97
- </template>
98
- </q-table>
99
- <s-pagination
100
- v-if="paginationModel.rowsPerPage !== 0 && ((!hideBottom && pagesNumber > 1) || showBottom)"
101
- v-model="paginationModel.page"
102
- :lastPage="pagesNumber"
103
- class="q-mt-md"
104
- @update:modelValue="updatePagination"
105
- />
106
- </template>
107
-
108
- <script>
109
- import { QTable, QInnerLoading, QTd, QIcon } from 'quasar';
110
- import { defineComponent, onMounted, ref, computed, watch } from 'vue';
111
- import { useResizable } from '../composables/table/use-resizable';
112
- import { useNavigator } from '../composables/table/use-navigator';
113
-
114
- export default defineComponent({
115
- name: 'STable',
116
- emits: ['update:page', 'update:focused', 'field-updated', 'request'],
117
- components: {
118
- QTable,
119
- QInnerLoading,
120
- QTd,
121
- QIcon,
122
- },
123
- props: {
124
- pagination: {
125
- type: Object,
126
- default: () => ({
127
- page: 1,
128
- rowsPerPage: 50,
129
- }),
130
- },
131
- hideBottom: {
132
- type: Boolean,
133
- default: false,
134
- },
135
- showBottom: {
136
- type: Boolean,
137
- default: false,
138
- },
139
- noDataLabel: {
140
- type: String,
141
- default: '데이터 조회가 필요합니다',
142
- },
143
- columns: {
144
- type: Array,
145
- default: () => [],
146
- },
147
- rows: {
148
- type: Array,
149
- default: () => [],
150
- },
151
- resizable: {
152
- type: Boolean,
153
- default: false,
154
- },
155
- stickyHeader: {
156
- type: Boolean,
157
- default: false,
158
- },
159
- stickyResizable: {
160
- type: [Array, Number],
161
- required: false,
162
- },
163
- navigator: {
164
- type: Boolean,
165
- default: false,
166
- },
167
- inputOptions: {
168
- type: Object,
169
- default: () => ({ type: 'number' }),
170
- },
171
- focused: {
172
- type: Object,
173
- },
174
- },
175
- setup(props, { emit, attrs }) {
176
- const tablePagination = ref(props.pagination);
177
- const paginationModel = ref(props.pagination);
178
- watch(
179
- () => props.pagination,
180
- newValue => {
181
- paginationModel.value = { ...newValue };
182
- tablePagination.value = { ...newValue };
183
- if (props.pagination.lastPage) tablePagination.value.page = 1;
184
- },
185
- { deep: true },
186
- );
187
-
188
- function updatePagination(val) {
189
- emit('update:page', val);
190
- if (!props.pagination.lastPage) {
191
- tablePagination.value.page = val;
192
- }
193
- }
194
-
195
- const sTableRef = ref(null);
196
- const {
197
- focusCell,
198
- isFocused,
199
- editing,
200
- inputRef,
201
- inputData,
202
- closeInput,
203
- editIcon,
204
- } = useNavigator(props, attrs, emit);
205
- function updateSelected(details) {
206
- if (details.added && details.evt && details.evt.shiftKey) {
207
- const idx = props.rows.findIndex(r => r === details.rows[0]);
208
- const lastIdx = attrs.selected
209
- .map(x => props.rows.findIndex(y => y === x))
210
- .filter(v => v < idx)
211
- .reduce((a, b) => (Math.abs(b - idx) < Math.abs(a - idx) ? b : a));
212
- for (let i = lastIdx + 1; i < idx; i++) {
213
- attrs.selected.push(props.rows[i]);
214
- }
215
- }
216
- }
217
- function sort(col) {
218
- sTableRef.value.sort(col);
219
- }
220
- onMounted(() => {
221
- const { addResizable, addStickyResizable } = useResizable();
222
- if (props.resizable) {
223
- addResizable(sTableRef.value.$el);
224
- }
225
- if (props.stickyResizable) {
226
- addStickyResizable(sTableRef.value.$el, props.stickyResizable);
227
- }
228
- });
229
- return {
230
- sTableRef,
231
- focusCell,
232
- isFocused,
233
- editing,
234
- inputRef,
235
- inputData,
236
- closeInput,
237
- editIcon,
238
- updateSelected,
239
- tablePagination,
240
- paginationModel,
241
- pagesNumber: computed(
242
- () => props.pagination.lastPage
243
- || Math.ceil(props.rows.length / paginationModel.value.rowsPerPage),
244
- ),
245
- updatePagination,
246
- sort,
247
- };
248
- },
249
- });
250
- </script>
251
-
252
- <style lang="scss">
253
- @import '../css/quasar.variables.scss';
254
- @import '../css/extends.scss';
255
-
256
- .s-table {
257
- border-radius: 8px !important;
258
- border: 1px solid $Grey_Lighten-3;
259
- .q-table__middle {
260
- .q-table {
261
- overflow: auto;
262
- thead {
263
- background: $th-bg;
264
- min-height: 0;
265
- tr {
266
- height: 36px;
267
- th {
268
- padding: $table-th-padding;
269
- font-size: $default-font;
270
- font-weight: $font-weight-md;
271
- word-break: keep-all;
272
- white-space: nowrap;
273
- }
274
- }
275
- }
276
- tbody {
277
- tr {
278
- min-height: 0px;
279
- td {
280
- padding: $table-th-padding;
281
- font-size: $default-font;
282
- word-break: keep-all;
283
- white-space: nowrap;
284
- text-overflow: ellipsis;
285
- overflow: hidden;
286
-
287
- &:before {
288
- background: none;
289
- }
290
- .s-table-edited-td {
291
- display: inline-flex;
292
- align-items: center;
293
- }
294
- }
295
- .focused {
296
- border: 1px solid $positive !important;
297
- }
298
- &:hover {
299
- background-color: $Grey_Lighten-6;
300
- }
301
- &:last-child > td {
302
- border-bottom-width: 1px;
303
- }
304
- }
305
- }
306
- }
307
- }
308
- .q-table__bottom {
309
- min-height: 0;
310
- padding: 0;
311
- border: none;
312
- &--nodata {
313
- height: 240px;
314
- color: $Grey_Default;
315
- font-size: $default-font;
316
- line-height: $default-line-height;
317
- display: block;
318
- padding-top: 80px;
319
- }
320
- }
321
- }
322
- .s-select-table {
323
- .q-table__middle {
324
- .q-table {
325
- thead {
326
- tr {
327
- th {
328
- &:first-of-type {
329
- padding: 0 8px 0 24px;
330
- line-height: 100%;
331
- > .q-checkbox {
332
- @extend %checkbox;
333
- }
334
- }
335
- }
336
- }
337
- }
338
- tbody {
339
- tr {
340
- td {
341
- &:first-of-type {
342
- padding: 0 8px 0 24px;
343
- line-height: 100%;
344
- > .q-checkbox {
345
- @extend %checkbox;
346
- }
347
- }
348
- &:after {
349
- background: none;
350
- }
351
- }
352
- }
353
- }
354
- }
355
- }
356
- }
357
- .resizable-table {
358
- .q-table__middle {
359
- .q-table {
360
- thead {
361
- tr {
362
- th:last-of-type {
363
- .resiable-right {
364
- display: none;
365
- }
366
- }
367
- }
368
- }
369
- }
370
- }
371
- }
372
- .s-select-table.resizable-table {
373
- .q-table__middle {
374
- .q-table {
375
- thead {
376
- tr {
377
- th:first-of-type {
378
- > .resiable-right {
379
- display: none;
380
- }
381
- }
382
- }
383
- }
384
- }
385
- }
386
- }
387
- .sticky-resizable-table {
388
- .q-table__middle {
389
- .q-table {
390
- thead {
391
- th:first-of-type {
392
- > .resiable-left {
393
- display: none;
394
- }
395
- }
396
- }
397
- }
398
- }
399
- }
400
- .sticky-header {
401
- .q-table__middle {
402
- .q-table {
403
- thead {
404
- tr {
405
- th {
406
- background: $th-bg;
407
- position: sticky;
408
- top: 0;
409
- z-index: 100;
410
- }
411
- }
412
- }
413
- }
414
- }
415
- }
416
- .before-search {
417
- .q-table__middle {
418
- .q-table {
419
- thead {
420
- opacity: 0.4;
421
- }
422
- }
423
- }
424
- }
425
- </style>
1
+ <template>
2
+ <q-table
3
+ flat
4
+ bordered
5
+ hide-pagination
6
+ hide-selected-banner
7
+ v-bind="$attrs"
8
+ :columns="columns"
9
+ :rows="rows"
10
+ :pagination="tablePagination"
11
+ :no-data-label="noDataLabel"
12
+ class="s-table"
13
+ :class="{
14
+ 's-select-table': $attrs.selection,
15
+ 'resizable-table': resizable,
16
+ 'sticky-resizable-table': stickyResizable,
17
+ 'sticky-header': stickyHeader,
18
+ 'before-search': !rows.length,
19
+ }"
20
+ @selection="updateSelected"
21
+ ref="sTableRef"
22
+ @request="
23
+ props => {
24
+ $emit('request', props);
25
+ }
26
+ "
27
+ >
28
+ <template #no-data="props">
29
+ <slot name="noData" v-bind="props">
30
+ <div class="full-width text-center">
31
+ {{ noDataLabel }}
32
+ </div>
33
+ </slot>
34
+ </template>
35
+ <template #loading>
36
+ <q-inner-loading showing color="positive" size="72px" />
37
+ </template>
38
+ <template v-for="(column, index) in columns" :key="index" #[`body-cell-${column.name}`]="props">
39
+ <q-td
40
+ v-if="navigator"
41
+ :class="{
42
+ focused: isFocused(props),
43
+ 'text-center': props.col.align === 'center',
44
+ 'text-right': props.col.align === 'right',
45
+ [props.col.classes]: props.col.classes,
46
+ [typeof props.row.class === 'function'
47
+ ? props.row.class(props.row)
48
+ : typeof props.row.class === 'string'
49
+ ? props.row.class
50
+ : '']: true,
51
+ }"
52
+ :style="props.col.style"
53
+ @click.stop="focusCell(props)"
54
+ >
55
+ <slot :name="`body-cell-${column.name}-content`" v-bind="props">
56
+ <s-input
57
+ ref="inputRef"
58
+ v-model="inputData"
59
+ v-if="props.col.editable && editing && isFocused(props)"
60
+ @blur="closeInput"
61
+ v-bind="inputOptions"
62
+ />
63
+ <span v-else class="s-table-edited-td"
64
+ >{{ props.value }}
65
+ <q-icon
66
+ size="16px"
67
+ :name="editIcon"
68
+ color="Blue_B_Lighten-1"
69
+ class="q-ml-xs"
70
+ v-if="props.col.editable"
71
+ />
72
+ </span>
73
+ </slot>
74
+ </q-td>
75
+ <q-td
76
+ v-else
77
+ v-bind="props"
78
+ :class="{
79
+ 'text-center': props.col.align === 'center',
80
+ 'text-right': props.col.align === 'right',
81
+ [props.col.classes]: props.col.classes,
82
+ [typeof props.row.class === 'function'
83
+ ? props.row.class(props.row)
84
+ : typeof props.row.class === 'string'
85
+ ? props.row.class
86
+ : '']: true,
87
+ }"
88
+ :style="props.col.style"
89
+ >
90
+ <slot :name="`body-cell-${column.name}-content`" v-bind="props">
91
+ {{ props.value }}
92
+ </slot>
93
+ </q-td>
94
+ </template>
95
+ <template v-for="(_, slotName, index) in $slots" :key="index" #[slotName]="data">
96
+ <slot :name="slotName" v-bind="data"> </slot>
97
+ </template>
98
+ </q-table>
99
+ <s-pagination
100
+ v-if="paginationModel.rowsPerPage !== 0 && ((!hideBottom && pagesNumber > 1) || showBottom)"
101
+ v-model="paginationModel.page"
102
+ :lastPage="pagesNumber"
103
+ class="q-mt-md"
104
+ @update:modelValue="updatePagination"
105
+ />
106
+ </template>
107
+
108
+ <script>
109
+ import { QTable, QInnerLoading, QTd, QIcon } from 'quasar';
110
+ import { defineComponent, onMounted, ref, computed, watch } from 'vue';
111
+ import { useResizable } from '../composables/table/use-resizable';
112
+ import { useNavigator } from '../composables/table/use-navigator';
113
+
114
+ export default defineComponent({
115
+ name: 'STable',
116
+ emits: ['update:page', 'update:focused', 'field-updated', 'request'],
117
+ components: {
118
+ QTable,
119
+ QInnerLoading,
120
+ QTd,
121
+ QIcon,
122
+ },
123
+ props: {
124
+ pagination: {
125
+ type: Object,
126
+ default: () => ({
127
+ page: 1,
128
+ rowsPerPage: 50,
129
+ }),
130
+ },
131
+ hideBottom: {
132
+ type: Boolean,
133
+ default: false,
134
+ },
135
+ showBottom: {
136
+ type: Boolean,
137
+ default: false,
138
+ },
139
+ noDataLabel: {
140
+ type: String,
141
+ default: '데이터 조회가 필요합니다',
142
+ },
143
+ columns: {
144
+ type: Array,
145
+ default: () => [],
146
+ },
147
+ rows: {
148
+ type: Array,
149
+ default: () => [],
150
+ },
151
+ resizable: {
152
+ type: Boolean,
153
+ default: false,
154
+ },
155
+ stickyHeader: {
156
+ type: Boolean,
157
+ default: false,
158
+ },
159
+ stickyResizable: {
160
+ type: [Array, Number],
161
+ required: false,
162
+ },
163
+ navigator: {
164
+ type: Boolean,
165
+ default: false,
166
+ },
167
+ inputOptions: {
168
+ type: Object,
169
+ default: () => ({ type: 'number' }),
170
+ },
171
+ focused: {
172
+ type: Object,
173
+ },
174
+ },
175
+ setup(props, { emit, attrs }) {
176
+ const tablePagination = ref(props.pagination);
177
+ const paginationModel = ref(props.pagination);
178
+ watch(
179
+ () => props.pagination,
180
+ newValue => {
181
+ paginationModel.value = { ...newValue };
182
+ tablePagination.value = { ...newValue };
183
+ if (props.pagination.lastPage) tablePagination.value.page = 1;
184
+ },
185
+ { deep: true },
186
+ );
187
+
188
+ function updatePagination(val) {
189
+ emit('update:page', val);
190
+ if (!props.pagination.lastPage) {
191
+ tablePagination.value.page = val;
192
+ }
193
+ }
194
+
195
+ const sTableRef = ref(null);
196
+ const {
197
+ focusCell,
198
+ isFocused,
199
+ editing,
200
+ inputRef,
201
+ inputData,
202
+ closeInput,
203
+ editIcon,
204
+ } = useNavigator(props, attrs, emit);
205
+ function updateSelected(details) {
206
+ if (details.added && details.evt && details.evt.shiftKey) {
207
+ const idx = props.rows.findIndex(r => r === details.rows[0]);
208
+ const lastIdx = attrs.selected
209
+ .map(x => props.rows.findIndex(y => y === x))
210
+ .filter(v => v < idx)
211
+ .reduce((a, b) => (Math.abs(b - idx) < Math.abs(a - idx) ? b : a));
212
+ for (let i = lastIdx + 1; i < idx; i++) {
213
+ attrs.selected.push(props.rows[i]);
214
+ }
215
+ }
216
+ }
217
+ function sort(col) {
218
+ sTableRef.value.sort(col);
219
+ }
220
+ onMounted(() => {
221
+ const { addResizable, addStickyResizable } = useResizable();
222
+ if (props.resizable) {
223
+ addResizable(sTableRef.value.$el);
224
+ }
225
+ if (props.stickyResizable) {
226
+ addStickyResizable(sTableRef.value.$el, props.stickyResizable);
227
+ }
228
+ });
229
+ return {
230
+ sTableRef,
231
+ focusCell,
232
+ isFocused,
233
+ editing,
234
+ inputRef,
235
+ inputData,
236
+ closeInput,
237
+ editIcon,
238
+ updateSelected,
239
+ tablePagination,
240
+ paginationModel,
241
+ pagesNumber: computed(
242
+ () => props.pagination.lastPage
243
+ || Math.ceil(props.rows.length / paginationModel.value.rowsPerPage),
244
+ ),
245
+ updatePagination,
246
+ sort,
247
+ };
248
+ },
249
+ });
250
+ </script>
251
+
252
+ <style lang="scss">
253
+ @import '../css/quasar.variables.scss';
254
+ @import '../css/extends.scss';
255
+
256
+ .s-table {
257
+ border-radius: 8px !important;
258
+ border: 1px solid $Grey_Lighten-3;
259
+ .q-table__middle {
260
+ .q-table {
261
+ overflow: auto;
262
+ thead {
263
+ background: $th-bg;
264
+ min-height: 0;
265
+ tr {
266
+ height: 36px;
267
+ th {
268
+ padding: $table-th-padding;
269
+ font-size: $default-font;
270
+ font-weight: $font-weight-md;
271
+ word-break: keep-all;
272
+ white-space: nowrap;
273
+ }
274
+ }
275
+ }
276
+ tbody {
277
+ tr {
278
+ min-height: 0px;
279
+ td {
280
+ padding: $table-th-padding;
281
+ font-size: $default-font;
282
+ word-break: keep-all;
283
+ white-space: nowrap;
284
+ text-overflow: ellipsis;
285
+ overflow: hidden;
286
+
287
+ &:before {
288
+ background: none;
289
+ }
290
+ .s-table-edited-td {
291
+ display: inline-flex;
292
+ align-items: center;
293
+ }
294
+ }
295
+ .focused {
296
+ border: 1px solid $positive !important;
297
+ }
298
+ &:hover {
299
+ background-color: $Grey_Lighten-6;
300
+ }
301
+ &:last-child > td {
302
+ border-bottom-width: 1px;
303
+ }
304
+ }
305
+ }
306
+ }
307
+ }
308
+ .q-table__bottom {
309
+ min-height: 0;
310
+ padding: 0;
311
+ border: none;
312
+ &--nodata {
313
+ height: 240px;
314
+ color: $Grey_Default;
315
+ font-size: $default-font;
316
+ line-height: $default-line-height;
317
+ display: block;
318
+ padding-top: 80px;
319
+ }
320
+ }
321
+ }
322
+ .s-select-table {
323
+ .q-table__middle {
324
+ .q-table {
325
+ thead {
326
+ tr {
327
+ th {
328
+ &:first-of-type {
329
+ padding: 0 8px 0 24px;
330
+ line-height: 100%;
331
+ > .q-checkbox {
332
+ @extend %checkbox;
333
+ }
334
+ }
335
+ }
336
+ }
337
+ }
338
+ tbody {
339
+ tr {
340
+ td {
341
+ &:first-of-type {
342
+ padding: 0 8px 0 24px;
343
+ line-height: 100%;
344
+ > .q-checkbox {
345
+ @extend %checkbox;
346
+ }
347
+ }
348
+ &:after {
349
+ background: none;
350
+ }
351
+ }
352
+ }
353
+ }
354
+ }
355
+ }
356
+ }
357
+ .resizable-table {
358
+ .q-table__middle {
359
+ .q-table {
360
+ thead {
361
+ tr {
362
+ th:last-of-type {
363
+ .resiable-right {
364
+ display: none;
365
+ }
366
+ }
367
+ }
368
+ }
369
+ }
370
+ }
371
+ }
372
+ .s-select-table.resizable-table {
373
+ .q-table__middle {
374
+ .q-table {
375
+ thead {
376
+ tr {
377
+ th:first-of-type {
378
+ > .resiable-right {
379
+ display: none;
380
+ }
381
+ }
382
+ }
383
+ }
384
+ }
385
+ }
386
+ }
387
+ .sticky-resizable-table {
388
+ .q-table__middle {
389
+ .q-table {
390
+ thead {
391
+ th:first-of-type {
392
+ > .resiable-left {
393
+ display: none;
394
+ }
395
+ }
396
+ }
397
+ }
398
+ }
399
+ }
400
+ .sticky-header {
401
+ .q-table__middle {
402
+ .q-table {
403
+ thead {
404
+ tr {
405
+ th {
406
+ background: $th-bg;
407
+ position: sticky;
408
+ top: 0;
409
+ z-index: 100;
410
+ }
411
+ }
412
+ }
413
+ }
414
+ }
415
+ }
416
+ .before-search {
417
+ .q-table__middle {
418
+ .q-table {
419
+ thead {
420
+ opacity: 0.4;
421
+ }
422
+ }
423
+ }
424
+ }
425
+ </style>