@hinen/pro-element-plus 1.8.0 → 1.8.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.
- package/dist/components/DataTable/DataTable.vue.d.ts +1 -0
- package/dist/components/DataTable/DataTable.vue.d.ts.map +1 -1
- package/dist/components/DataTable/types.d.ts +4 -0
- package/dist/components/DataTable/types.d.ts.map +1 -1
- package/dist/components/DataTable/useDataTable.d.ts +2 -0
- package/dist/components/DataTable/useDataTable.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.vue.d.ts +1 -1
- package/dist/components/FormFields/FormCascadeSelect/FormCascadeSelect.test.d.ts +2 -0
- package/dist/components/FormFields/FormCascadeSelect/FormCascadeSelect.test.d.ts.map +1 -0
- package/dist/components/FormFields/FormCascadeSelect/FormCascadeSelect.vue.d.ts.map +1 -1
- package/dist/index.cjs +26 -26
- package/dist/index.js +1913 -1835
- package/dist/skills/using-data-table/SKILL.md +16 -11
- package/dist/skills/using-data-table/references/examples.md +11 -12
- package/dist/skills/using-data-table/references/gotchas.md +23 -11
- package/dist/skills/using-data-table/references/props.md +40 -13
- package/dist/skills/using-form-cascade-select/references/props.md +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -76,8 +76,9 @@ If not, a simpler table or a standalone form is usually a better fit.
|
|
|
76
76
|
3. Add selection bar, `selection`, sticky layout, and custom slots only after the base flow is correct.
|
|
77
77
|
4. Use `useDataTable()` only when parent code truly needs imperative control.
|
|
78
78
|
|
|
79
|
-
5. Treat
|
|
80
|
-
|
|
79
|
+
5. Treat selection and highlight as independent concerns.
|
|
80
|
+
Use `selection.mode` to control selection UI: `'single'` for radio-driven single selection, `'multiple'` for checkbox-driven multi selection, or `'none'` for no selection column.
|
|
81
|
+
Use `highlightCurrentRow` separately to enable native row highlighting, independent of selection mode.
|
|
81
82
|
|
|
82
83
|
## Minimal patterns
|
|
83
84
|
|
|
@@ -160,13 +161,15 @@ Common methods:
|
|
|
160
161
|
|
|
161
162
|
Use this pattern when toolbars, tabs, route sync, or external controls need to coordinate the table.
|
|
162
163
|
|
|
164
|
+
- `getSelectedRow()` returns the current row in single-select mode (`selection.mode: 'single'`)
|
|
165
|
+
- `clearSelection()` clears checkbox selection and single-select current-row state
|
|
166
|
+
|
|
163
167
|
For current-row control in single-select mode:
|
|
164
168
|
|
|
165
169
|
- use `setCurrentRow(row)` to select a row programmatically
|
|
166
170
|
- use `setCurrentRow()` to clear the current single-select row
|
|
167
171
|
- use `currentRowKey` together with `rowKey` for controlled current-row sync
|
|
168
|
-
- do not rely on row clicks to change the current row when
|
|
169
|
-
- do not use `clearSelection()` to clear single-select current-row state; that method is for checkbox selection
|
|
172
|
+
- do not rely on row clicks to change the current row when single-select mode is active
|
|
170
173
|
|
|
171
174
|
## Controlled selection mode
|
|
172
175
|
|
|
@@ -180,7 +183,7 @@ For current-row control in single-select mode:
|
|
|
180
183
|
Use internal mode when the page does not need to read or manipulate selection from outside the component.
|
|
181
184
|
|
|
182
185
|
```vue
|
|
183
|
-
<DataTable :columns="columns" :query-fn="queryFn"
|
|
186
|
+
<DataTable :columns="columns" :query-fn="queryFn" :selection="{ mode: 'multiple' }" />
|
|
184
187
|
```
|
|
185
188
|
|
|
186
189
|
### Controlled mode
|
|
@@ -197,7 +200,7 @@ Use controlled mode when parent code needs to:
|
|
|
197
200
|
v-model:selectedRowKeys="selectedKeys"
|
|
198
201
|
:columns="columns"
|
|
199
202
|
:query-fn="queryFn"
|
|
200
|
-
|
|
203
|
+
:selection="{ mode: 'multiple' }"
|
|
201
204
|
/>
|
|
202
205
|
```
|
|
203
206
|
|
|
@@ -248,14 +251,16 @@ Prefer slots over rebuilding table scaffolding from scratch.
|
|
|
248
251
|
For checkbox selection review:
|
|
249
252
|
|
|
250
253
|
- `selection` is the public API for built-in checkbox review item customization
|
|
254
|
+
- `selection.mode` controls the selection UI: `'single'`, `'multiple'`, or `'none'`
|
|
251
255
|
- `formatter(row)` customizes the built-in review tag text
|
|
252
256
|
- `render(...)` customizes each built-in review item
|
|
253
|
-
- `selectionBar.reviewPopoverProps` customizes the built-in 查看已选 popover (default placement is '
|
|
257
|
+
- `selectionBar.reviewPopoverProps` customizes the built-in 查看已选 popover (default placement is 'top-start')
|
|
254
258
|
- `rowKey` is required if the built-in checkbox review should stay correct across pages
|
|
255
259
|
- the `selectionBar` slot replaces the built-in review UI instead of extending it
|
|
256
260
|
- in cross-page checkbox mode, the `selectionBar` slot receives the aggregated selected rows, so Search/Reset or pagination should not make that slot-level selection disappear
|
|
257
|
-
- `selectionChange`
|
|
258
|
-
-
|
|
261
|
+
- `selectionChange` returns all selected rows across pages, not just the current page
|
|
262
|
+
- `getSelectionRows()` also returns all selected rows across pages
|
|
263
|
+
- single-select behavior from `selection.mode: 'single'` uses a radio column and highlights the selected row
|
|
259
264
|
|
|
260
265
|
## Common mistakes
|
|
261
266
|
|
|
@@ -268,12 +273,12 @@ For checkbox selection review:
|
|
|
268
273
|
- Accidentally hiding pagination through `hidePaginationWhenEmpty`
|
|
269
274
|
- Assuming `success` is optional in remote mode
|
|
270
275
|
- Expecting cross-page checkbox review state without `rowKey`
|
|
271
|
-
- Treating `selectionChange` or `getSelectionRows()` as cross-page aggregate APIs
|
|
272
276
|
- Assuming the `selectionBar` slot keeps the built-in review UI
|
|
273
277
|
- Treating `selectionBar.reviewPopoverProps` as item-render customization instead of popover-container customization
|
|
274
|
-
- Treating `highlightCurrentRow` as a
|
|
278
|
+
- Treating `highlightCurrentRow` as a selection-mode prop instead of a pure highlight switch
|
|
275
279
|
- Expecting row clicks to change the current row when built-in single-select mode is active
|
|
276
280
|
- Using `currentRowKey` without `rowKey` and expecting controlled current-row sync to work
|
|
281
|
+
- Using `row-selection` prop (it does not exist; use `selection.mode` instead)
|
|
277
282
|
|
|
278
283
|
## Related skills
|
|
279
284
|
|
|
@@ -134,7 +134,7 @@ Use row selection and `selectionBar` when the page supports batch operations.
|
|
|
134
134
|
Minimal pattern:
|
|
135
135
|
|
|
136
136
|
```vue
|
|
137
|
-
<DataTable :columns="columns" :query-fn="queryFn"
|
|
137
|
+
<DataTable :columns="columns" :query-fn="queryFn" :selection="{ mode: 'multiple' }" />
|
|
138
138
|
```
|
|
139
139
|
|
|
140
140
|
Typical fit:
|
|
@@ -161,8 +161,8 @@ Minimal pattern:
|
|
|
161
161
|
:columns="columns"
|
|
162
162
|
:query-fn="queryFn"
|
|
163
163
|
row-key="id"
|
|
164
|
-
row-selection
|
|
165
164
|
:selection="{
|
|
165
|
+
mode: 'multiple',
|
|
166
166
|
formatter: (row) => row.name,
|
|
167
167
|
}"
|
|
168
168
|
/>
|
|
@@ -174,8 +174,8 @@ Recommended pattern:
|
|
|
174
174
|
- provide `rowKey` so built-in review items can aggregate across pages
|
|
175
175
|
- use `formatter(row)` when the default tag text needs a small change
|
|
176
176
|
- use `render(...)` when each built-in review item needs custom rendering
|
|
177
|
-
- use `selectionBar.reviewPopoverProps` when the built-in 查看已选 popover needs container-level tweaks (default placement is '
|
|
178
|
-
-
|
|
177
|
+
- use `selectionBar.reviewPopoverProps` when the built-in 查看已选 popover needs container-level tweaks (default placement is 'top-start')
|
|
178
|
+
- `selectionChange` and `getSelectionRows()` return all selected rows across pages
|
|
179
179
|
|
|
180
180
|
Use the `selectionBar` slot only when the page should replace the built-in review UI completely.
|
|
181
181
|
|
|
@@ -191,7 +191,7 @@ Minimal pattern:
|
|
|
191
191
|
:columns="columns"
|
|
192
192
|
:query-fn="queryFn"
|
|
193
193
|
row-key="id"
|
|
194
|
-
|
|
194
|
+
:selection="{ mode: 'multiple' }"
|
|
195
195
|
/>
|
|
196
196
|
```
|
|
197
197
|
|
|
@@ -237,8 +237,8 @@ Minimal pattern:
|
|
|
237
237
|
:columns="columns"
|
|
238
238
|
:query-fn="queryFn"
|
|
239
239
|
row-key="id"
|
|
240
|
-
row-selection
|
|
241
240
|
:selection="{
|
|
241
|
+
mode: 'multiple',
|
|
242
242
|
formatter: (row) => row.name,
|
|
243
243
|
}"
|
|
244
244
|
/>
|
|
@@ -262,7 +262,7 @@ Recommended pattern:
|
|
|
262
262
|
- `rowKey` is required for cross-page selection to work correctly
|
|
263
263
|
- the model accepts keys from any page, not just the current one
|
|
264
264
|
- built-in review UI aggregates selections across pages when `rowKey` is provided
|
|
265
|
-
- `selectionChange` event
|
|
265
|
+
- `selectionChange` event emits all selected rows across pages
|
|
266
266
|
|
|
267
267
|
## 8. Sticky large-page table
|
|
268
268
|
|
|
@@ -296,7 +296,7 @@ Typical fit:
|
|
|
296
296
|
|
|
297
297
|
## 10. Built-in radio single-select row
|
|
298
298
|
|
|
299
|
-
Use `
|
|
299
|
+
Use `selection.mode: 'single'` when the page wants `DataTable` to own a radio-based single-select row state.
|
|
300
300
|
|
|
301
301
|
Minimal pattern:
|
|
302
302
|
|
|
@@ -306,7 +306,7 @@ Minimal pattern:
|
|
|
306
306
|
:columns="columns"
|
|
307
307
|
:data="rows"
|
|
308
308
|
row-key="id"
|
|
309
|
-
|
|
309
|
+
:selection="{ mode: 'single' }"
|
|
310
310
|
@current-change="handleCurrentChange"
|
|
311
311
|
/>
|
|
312
312
|
```
|
|
@@ -317,11 +317,10 @@ Recommended pattern:
|
|
|
317
317
|
- treat the radio as the selection trigger
|
|
318
318
|
- use `setCurrentRow(row)` for imperative select
|
|
319
319
|
- use `setCurrentRow()` to clear the single-select current row
|
|
320
|
+
- use `getSelectedRow()` to read the currently selected row
|
|
320
321
|
|
|
321
322
|
Do not expect row clicks to change the current row in this mode.
|
|
322
323
|
|
|
323
|
-
Checkbox review changes do not affect this single-select mode.
|
|
324
|
-
|
|
325
324
|
## 11. Controlled current row with `currentRowKey`
|
|
326
325
|
|
|
327
326
|
Use `currentRowKey` when parent state should control which single-select row is active.
|
|
@@ -333,7 +332,7 @@ Minimal pattern:
|
|
|
333
332
|
:columns="columns"
|
|
334
333
|
:data="rows"
|
|
335
334
|
row-key="id"
|
|
336
|
-
|
|
335
|
+
:selection="{ mode: 'single' }"
|
|
337
336
|
:current-row-key="currentRowKey"
|
|
338
337
|
/>
|
|
339
338
|
```
|
|
@@ -45,8 +45,20 @@
|
|
|
45
45
|
- In cross-page checkbox mode, the `selectionBar` slot gets aggregated rows
|
|
46
46
|
Search, Reset, pagination, or other current-page changes should not make the slot-level `selection` suddenly drop to the current page only.
|
|
47
47
|
|
|
48
|
-
- `selectionChange` and `getSelectionRows()`
|
|
49
|
-
They
|
|
48
|
+
- `selectionChange` and `getSelectionRows()` return **all selected rows across pages**
|
|
49
|
+
They aggregate selection from all pages when cross-page selection is enabled.
|
|
50
|
+
|
|
51
|
+
- `selection.mode` controls selection behavior
|
|
52
|
+
Use `'single'` for radio column, `'multiple'` for checkbox column, or `'none'` (default) for no selection column.
|
|
53
|
+
|
|
54
|
+
- `highlightCurrentRow` is a pure highlight switch
|
|
55
|
+
It no longer enables single-select mode. Use `selection.mode: 'single'` for single selection.
|
|
56
|
+
|
|
57
|
+
- `selection.mode: 'single'` renders a radio column
|
|
58
|
+
Clicking a radio selects that row and deselects any previously selected row.
|
|
59
|
+
|
|
60
|
+
- `selection.mode: 'multiple'` requires a selection column
|
|
61
|
+
You must include `{ type: 'selection' }` in `columns` for multi-select to work.
|
|
50
62
|
|
|
51
63
|
- `loading` combines with internal query loading
|
|
52
64
|
External loading and internal query loading both affect the final visual loading state.
|
|
@@ -63,17 +75,17 @@
|
|
|
63
75
|
- Do not overuse imperative control
|
|
64
76
|
`useDataTable()` should coordinate the component, not replace its internal state model.
|
|
65
77
|
|
|
66
|
-
- `highlightCurrentRow` is
|
|
67
|
-
It
|
|
78
|
+
- `highlightCurrentRow` is independent of selection mode
|
|
79
|
+
It controls native Element Plus row highlighting without affecting selection UI.
|
|
68
80
|
|
|
69
81
|
- Row click and current-row change are decoupled in single-select mode
|
|
70
|
-
With `
|
|
82
|
+
With `selection.mode: 'single'`, clicking a row still emits `rowClick`, but only clicking the radio changes the current row.
|
|
71
83
|
|
|
72
84
|
- Controlled single-select requires `rowKey`
|
|
73
85
|
If you pass `currentRowKey` without `rowKey`, do not expect stable controlled current-row behavior.
|
|
74
86
|
|
|
75
|
-
- Clearing single-select current row uses `setCurrentRow()
|
|
76
|
-
|
|
87
|
+
- Clearing single-select current row uses `setCurrentRow()` or `clearSelection()`
|
|
88
|
+
Both methods clear the current radio-selected row. `setCurrentRow()` can also programmatically select a row.
|
|
77
89
|
|
|
78
90
|
- Empty `currentRowKey` clearing is a wrapper convention
|
|
79
91
|
`DataTable` treats `currentRowKey: undefined` as “clear current row” in single-select mode. This is aligned with the wrapper behavior, not a documented Element Plus `current-row-key` guarantee.
|
|
@@ -101,8 +113,8 @@
|
|
|
101
113
|
- `selectedRowKeys` accepts keys from any page
|
|
102
114
|
In controlled mode with `rowKey`, the model can contain keys from pages other than the current one. The built-in review UI aggregates them.
|
|
103
115
|
|
|
104
|
-
- `selectionChange`
|
|
105
|
-
|
|
116
|
+
- `selectionChange` returns all selected rows across pages
|
|
117
|
+
In both controlled and internal modes, the event emits the aggregated selection from all pages.
|
|
106
118
|
|
|
107
119
|
- Instance methods still work in controlled mode
|
|
108
120
|
`getSelectionRows()`, `toggleRowSelection()`, etc. continue to function, but parent state should be the primary control mechanism.
|
|
@@ -110,5 +122,5 @@
|
|
|
110
122
|
- Clearing selection in controlled mode
|
|
111
123
|
Call `clearSelection()` or set `selectedKeys.value = []`. In controlled mode, prefer updating the model directly.
|
|
112
124
|
|
|
113
|
-
- Default placement for review popover is '
|
|
114
|
-
When using `selectionBar.reviewPopoverProps`, the default placement is '
|
|
125
|
+
- Default placement for review popover is 'top-start'
|
|
126
|
+
When using `selectionBar.reviewPopoverProps`, the default placement is 'top-start'. Only override if necessary.
|
|
@@ -195,7 +195,7 @@ Cross-page selection works with `selectedRowKeys` when `rowKey` is defined. The
|
|
|
195
195
|
:columns="columns"
|
|
196
196
|
:query-fn="queryFn"
|
|
197
197
|
row-key="id"
|
|
198
|
-
|
|
198
|
+
:selection="{ mode: 'multiple' }"
|
|
199
199
|
/>
|
|
200
200
|
```
|
|
201
201
|
|
|
@@ -244,16 +244,41 @@ Use this when the page has prerequisite loading that is separate from the table'
|
|
|
244
244
|
|
|
245
245
|
### `highlightCurrentRow`
|
|
246
246
|
|
|
247
|
-
In `DataTable`, this prop
|
|
247
|
+
In `DataTable`, this prop controls native Element Plus row highlighting independently from selection mode.
|
|
248
248
|
|
|
249
|
-
When `highlightCurrentRow` is `true
|
|
249
|
+
When `highlightCurrentRow` is `true`:
|
|
250
250
|
|
|
251
|
-
-
|
|
252
|
-
-
|
|
253
|
-
-
|
|
254
|
-
- row click still emits `rowClick`, but does not change the current row
|
|
251
|
+
- the current row is visually highlighted when clicked
|
|
252
|
+
- `@current-change` emits on row click
|
|
253
|
+
- no selection column is rendered by this prop alone
|
|
255
254
|
|
|
256
|
-
Use this
|
|
255
|
+
Use this when the page needs row highlighting without selection UI. For selection, use `selection.mode`.
|
|
256
|
+
|
|
257
|
+
### `selection`
|
|
258
|
+
|
|
259
|
+
Controls selection behavior and customization.
|
|
260
|
+
|
|
261
|
+
Common fields:
|
|
262
|
+
|
|
263
|
+
- `mode` — `'single'` | `'multiple'` | `'none'` (default `'none'`)
|
|
264
|
+
- `'single'` renders a leading radio column for single-select with cross-page support
|
|
265
|
+
- `'multiple'` requires a `{ type: 'selection' }` column for multi-select with cross-page support
|
|
266
|
+
- `'none'` renders no selection column
|
|
267
|
+
- `formatter(row)` customizes the default review tag text
|
|
268
|
+
- `render(...)` customizes each built-in review item
|
|
269
|
+
|
|
270
|
+
Use `rowKey` with this when selection review should stay correct across pages.
|
|
271
|
+
|
|
272
|
+
```vue
|
|
273
|
+
<!-- Single select with radio column -->
|
|
274
|
+
<DataTable :selection="{ mode: 'single' }" :columns="columns" />
|
|
275
|
+
|
|
276
|
+
<!-- Multi select with checkbox column -->
|
|
277
|
+
<DataTable :selection="{ mode: 'multiple' }" :columns="[{ type: 'selection' }, ...columns]" />
|
|
278
|
+
|
|
279
|
+
<!-- Highlight only, no selection -->
|
|
280
|
+
<DataTable :selection="{ mode: 'none' }" highlight-current-row :columns="columns" />
|
|
281
|
+
```
|
|
257
282
|
|
|
258
283
|
### `rowKey`
|
|
259
284
|
|
|
@@ -318,12 +343,14 @@ Current-row related methods:
|
|
|
318
343
|
|
|
319
344
|
- `setCurrentRow(row)` selects the current row in single-select mode
|
|
320
345
|
- `setCurrentRow()` clears the current single-select row
|
|
321
|
-
- `clearSelection()` clears checkbox selection
|
|
346
|
+
- `clearSelection()` clears checkbox selection and single-select current-row state
|
|
347
|
+
- `getSelectedRow()` returns the current row in single-select mode
|
|
322
348
|
|
|
323
349
|
Selection notes:
|
|
324
350
|
|
|
325
|
-
- `getSelectionRows()` returns
|
|
326
|
-
-
|
|
351
|
+
- `getSelectionRows()` returns all selected rows across pages (not just current page)
|
|
352
|
+
- `selectionChange` emits all selected rows across pages
|
|
353
|
+
- cross-page selection state is internal unless `v-model:selectedRowKeys` is provided
|
|
327
354
|
|
|
328
355
|
Notes:
|
|
329
356
|
|
|
@@ -356,8 +383,8 @@ Use these before building a custom shell around `ElTable`.
|
|
|
356
383
|
`selectionBar` slot notes:
|
|
357
384
|
|
|
358
385
|
- it replaces the built-in review UI
|
|
359
|
-
-
|
|
360
|
-
- `clear` still clears the full
|
|
386
|
+
- its `selection` slot prop is the aggregated selected rows across pages
|
|
387
|
+
- `clear` still clears the full selection state
|
|
361
388
|
|
|
362
389
|
## Import
|
|
363
390
|
|
|
@@ -92,7 +92,7 @@ renderDefault?: (scope: {
|
|
|
92
92
|
- When you need programmatic control over node rendering
|
|
93
93
|
- When the render logic depends on external state that is easier to access in the parent component
|
|
94
94
|
|
|
95
|
-
**Note:** When both `renderDefault` prop and `default` slot are provided, the slot takes precedence.
|
|
95
|
+
**Note:** When both `renderDefault` prop and `default` slot are provided, the slot takes precedence. When neither is provided, `FormCascadeSelect` falls back to Element Plus's native cascader node rendering.
|
|
96
96
|
|
|
97
97
|
## Slots
|
|
98
98
|
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";.pel-ellipsis-text.is-truncated[data-v-36b1aefb]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.pel-ellipsis-text.line-clamp[data-v-36b1aefb]{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;display:box;-webkit-line-clamp:var(--7a7a879f);line-clamp:var(--7a7a879f)}.pel-form-item-label-with-tooltip{display:inline-flex;align-items:center;gap:4px}.pel-form-item-error-wrap{position:absolute;top:100%;left:0;width:100%;min-height:20px;padding-top:2px;display:flex;align-items:flex-start;z-index:10;pointer-events:none}.pel-form-item-error-content{pointer-events:auto;color:var(--el-color-danger);font-size:12px;line-height:1.2;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .2s cubic-bezier(.4,0,.2,1);border-radius:4px;cursor:default}.pel-form-item-error-content.is-truncated{cursor:help}.pel-form-item-error-content.is-truncated:hover{position:absolute;top:2px;left:0;width:auto;max-width:100%;min-width:100%;background-color:var(--el-color-danger);color:#fff;white-space:normal;overflow:visible;padding:6px 8px;transform:translateY(-4px);box-shadow:0 4px 12px #00000026;z-index:100;animation:error-expand .2s ease forwards}@keyframes error-expand{0%{opacity:.8;transform:translateY(0) scale(.98)}to{opacity:1;transform:translateY(-4px) scale(1)}}.pel-query-form{display:flex;align-items:flex-start;gap:80px}.pel-query-form-items{display:flex;flex-wrap:wrap;flex-grow:1}.pel-query-form-item-wrapper .el-input-number,.pel-query-form-item-wrapper .el-cascader{width:100%}.pel-query-form-item-wrapper .el-date-editor{--el-date-editor-width: 100%}.pel-query-form-item-wrapper .el-form-item__error{width:100%}.pel-query-form-buttons{flex-shrink:0}.pel-query-form-buttons.el-form-item--label-right .el-form-item__label-wrap,.pel-query-form-buttons.el-form-item--label-left .el-form-item__label-wrap{display:none}.pel-query-form-buttons .el-form-item__label{visibility:hidden}.pel-query-form-hide-label .el-form-item .el-form-item__label{display:none}.pel-query-form-collapse-button{margin-right:8px}.pel-query-form-collapse-icon{margin-left:4px;transition:transform .3s ease-in-out}.pel-query-form-collapsed .pel-query-form-collapse-icon{transform:rotate(180deg)}.pel-query-form-tags{margin-bottom:10px}.pel-query-form-tags.el-form--inline .el-form-item{margin-right:8px;margin-bottom:8px}.pel-query-form-item-tag{padding:0 8px;background-color:var(--el-fill-color);border-radius:4px;border:1px solid transparent}.pel-query-form-item-tag.is-error{border-color:var(--el-color-danger)}.pel-query-form-item-tag .error-icon{margin-left:4px;color:var(--el-color-danger)}.pel-query-form-item-tag .el-form-item__label{padding-right:4px}.pel-query-form-item-tag .el-form-item__label:after{content:":"}.pel-query-form-item-tag-content{max-width:250px}.pel-query-form-item-tag .el-form-item__content{color:var(--el-text-color-regular)}.pel-query-form-item-tag .close-btn.is-text{margin-left:4px;width:18px;height:18px;border-radius:4px;background-color:var(--el-fill-color-darker)}.pel-query-form-item-tag .close-btn.is-text:hover{background-color:#fff}.pel-data-table{display:flex;flex-direction:column}.pel-data-table-toolbar{margin-bottom:16px}.pel-data-table-footer{padding:16px 0;background:#fff}.pel-data-table-selection-review-popper{max-width:300px!important;width:auto!important}.pel-data-table-selection-bar{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:8px 16px;color:var(--el-table-text-color);font-size:var(--el-font-size-base);border-radius:4px;background-color:var(--el-fill-color)}.pel-data-table-selection-tag{display:inline-flex;overflow:hidden}.pel-data-table-selection-tag .el-tag__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:1}.pel-data-table-selection-review-list{display:flex;flex-wrap:wrap;gap:8px;
|
|
1
|
+
@charset "UTF-8";.pel-ellipsis-text.is-truncated[data-v-36b1aefb]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.pel-ellipsis-text.line-clamp[data-v-36b1aefb]{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;display:box;-webkit-line-clamp:var(--7a7a879f);line-clamp:var(--7a7a879f)}.pel-form-item-label-with-tooltip{display:inline-flex;align-items:center;gap:4px}.pel-form-item-error-wrap{position:absolute;top:100%;left:0;width:100%;min-height:20px;padding-top:2px;display:flex;align-items:flex-start;z-index:10;pointer-events:none}.pel-form-item-error-content{pointer-events:auto;color:var(--el-color-danger);font-size:12px;line-height:1.2;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .2s cubic-bezier(.4,0,.2,1);border-radius:4px;cursor:default}.pel-form-item-error-content.is-truncated{cursor:help}.pel-form-item-error-content.is-truncated:hover{position:absolute;top:2px;left:0;width:auto;max-width:100%;min-width:100%;background-color:var(--el-color-danger);color:#fff;white-space:normal;overflow:visible;padding:6px 8px;transform:translateY(-4px);box-shadow:0 4px 12px #00000026;z-index:100;animation:error-expand .2s ease forwards}@keyframes error-expand{0%{opacity:.8;transform:translateY(0) scale(.98)}to{opacity:1;transform:translateY(-4px) scale(1)}}.pel-query-form{display:flex;align-items:flex-start;gap:80px}.pel-query-form-items{display:flex;flex-wrap:wrap;flex-grow:1}.pel-query-form-item-wrapper .el-input-number,.pel-query-form-item-wrapper .el-cascader{width:100%}.pel-query-form-item-wrapper .el-date-editor{--el-date-editor-width: 100%}.pel-query-form-item-wrapper .el-form-item__error{width:100%}.pel-query-form-buttons{flex-shrink:0}.pel-query-form-buttons.el-form-item--label-right .el-form-item__label-wrap,.pel-query-form-buttons.el-form-item--label-left .el-form-item__label-wrap{display:none}.pel-query-form-buttons .el-form-item__label{visibility:hidden}.pel-query-form-hide-label .el-form-item .el-form-item__label{display:none}.pel-query-form-collapse-button{margin-right:8px}.pel-query-form-collapse-icon{margin-left:4px;transition:transform .3s ease-in-out}.pel-query-form-collapsed .pel-query-form-collapse-icon{transform:rotate(180deg)}.pel-query-form-tags{margin-bottom:10px}.pel-query-form-tags.el-form--inline .el-form-item{margin-right:8px;margin-bottom:8px}.pel-query-form-item-tag{padding:0 8px;background-color:var(--el-fill-color);border-radius:4px;border:1px solid transparent}.pel-query-form-item-tag.is-error{border-color:var(--el-color-danger)}.pel-query-form-item-tag .error-icon{margin-left:4px;color:var(--el-color-danger)}.pel-query-form-item-tag .el-form-item__label{padding-right:4px}.pel-query-form-item-tag .el-form-item__label:after{content:":"}.pel-query-form-item-tag-content{max-width:250px}.pel-query-form-item-tag .el-form-item__content{color:var(--el-text-color-regular)}.pel-query-form-item-tag .close-btn.is-text{margin-left:4px;width:18px;height:18px;border-radius:4px;background-color:var(--el-fill-color-darker)}.pel-query-form-item-tag .close-btn.is-text:hover{background-color:#fff}.pel-data-table{display:flex;flex-direction:column}.pel-data-table-toolbar{margin-bottom:16px}.pel-data-table-footer-wrapper{display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-wrap:wrap;width:100%;background:#fff}.pel-data-table-footer-wrapper--with-footer{justify-content:space-between}.pel-data-table-footer{display:flex;align-items:center;flex:1;min-width:0;padding:16px 0;background:#fff;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:var(--el-line-height-base)}.pel-data-table-selection-review-popper{max-width:300px!important;width:auto!important}.pel-data-table-selection-bar{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:8px 16px;color:var(--el-table-text-color);font-size:var(--el-font-size-base);border-radius:4px;background-color:var(--el-fill-color)}.pel-data-table-selection-tag{display:inline-flex;overflow:hidden}.pel-data-table-selection-tag .el-tag__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:1}.pel-data-table-selection-review-list{display:flex;flex-wrap:wrap;gap:8px;margin-left:-10px;margin-right:-10px;padding:0 10px;overflow-y:auto;max-height:300px}.pel-data-table .el-affix--fixed .pel-data-table-footer-wrapper{border-top:1px solid var(--el-border-color-lighter)}.pel-data-table-pagination{justify-content:flex-end;padding:16px 0;background:#fff}.pel-data-table .el-table{--el-table-header-bg-color: var(--el-fill-color);scroll-margin-top:calc(var(--fa8d89e2) * 1px)}.pel-data-table .el-table .cell:not(.el-tooltip){text-overflow:unset}.pel-data-table .el-table th.el-table__cell{padding-top:10px;padding-bottom:10px}.pel-data-table .el-table__header-wrapper{z-index:5}.pel-data-table .el-table .el-scrollbar__bar.is-horizontal.fixed{position:fixed;bottom:calc(var(--0447c9c7) + var(--10469d33));left:unset;right:unset}.pel-data-table-cell-tooltip{max-width:300px}.el-dialog{--el-dialog-border-radius: 12px !important;--el-dialog-padding-primary: 32px !important;--el-dialog-padding-x: 32px;--el-dialog-padding-y: 20px;--el-dialog-margin-top: 8vh !important;--el-dialog-width: 95%;display:flex;flex-direction:column;padding:0}.el-dialog__scrollbar{padding-left:32px;padding-right:32px}.el-dialog__small{max-width:450px}.el-dialog__large{max-width:960px}.el-dialog__default{max-width:680px}.el-dialog:not(.is-align-center){max-height:calc(100vh - var(--el-dialog-margin-top) - 50px)}.el-dialog.is-align-center{max-height:calc(100vh - 100px)}.el-dialog__header{z-index:2;flex-shrink:0;padding-top:var(--el-dialog-padding-y);padding-left:var(--el-dialog-padding-x);padding-bottom:var(--el-dialog-padding-y)}.el-dialog__header-shadow{box-shadow:0 0 6px #0000001a}.el-dialog__footer{flex-shrink:0;padding-top:var(--el-dialog-padding-y);padding-bottom:var(--el-dialog-padding-y);padding-left:var(--el-dialog-padding-x);padding-right:var(--el-dialog-padding-x)}.el-dialog__footer-shadow{box-shadow:0 -1px 6px #0000001a}.el-dialog__body{flex-grow:1;padding-left:0;padding-right:0;overflow:hidden;display:flex;flex-direction:column}.el-dialog__body .el-scrollbar{flex-grow:1;display:flex;flex-direction:column;overflow:hidden}.el-dialog__headerbtn{top:12px;right:15px}.pel-image-error{display:flex;flex-direction:column;gap:8px}.pel-image-refresh-button{display:flex;align-items:center;justify-content:center;font-size:24px;cursor:pointer}.pel-image .el-loading-spinner{margin-top:0;transform:translateY(-50%)}.pel-image-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:var(--el-fill-color-light)}.pel-image-placeholder-loading{color:var(--el-text-color-placeholder)}.pel-image-empty{position:relative;background-color:var(--el-fill-color-light)}.pel-image-empty-icon{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:24px;color:var(--el-text-color-placeholder)}.el-drawer{--el-drawer-border-radius: 12px;--el-drawer-padding-x: 32px;--el-drawer-padding-y: 20px;display:flex;flex-direction:column;padding:0}.el-drawer__rtl{border-top-left-radius:var(--el-drawer-border-radius);border-bottom-left-radius:var(--el-drawer-border-radius)}.el-drawer__ltr{border-top-right-radius:var(--el-drawer-border-radius);border-bottom-right-radius:var(--el-drawer-border-radius)}.el-drawer__ttb{border-bottom-left-radius:var(--el-drawer-border-radius);border-bottom-right-radius:var(--el-drawer-border-radius)}.el-drawer__btt{border-top-left-radius:var(--el-drawer-border-radius);border-top-right-radius:var(--el-drawer-border-radius)}.el-drawer__scrollbar{padding-left:var(--el-drawer-padding-x);padding-right:var(--el-drawer-padding-x)}.el-drawer__rtl.el-drawer__small,.el-drawer__ltr.el-drawer__small{max-width:380px}.el-drawer__rtl.el-drawer__large,.el-drawer__ltr.el-drawer__large{max-width:680px}.el-drawer__rtl.el-drawer__default,.el-drawer__ltr.el-drawer__default{max-width:450px}.el-drawer__ttb.el-drawer__small,.el-drawer__btt.el-drawer__small{max-height:380px}.el-drawer__ttb.el-drawer__large,.el-drawer__btt.el-drawer__large{max-height:680px}.el-drawer__ttb.el-drawer__default,.el-drawer__btt.el-drawer__default{max-height:450px}.el-drawer__header{z-index:2;flex-shrink:0;padding-top:var(--el-drawer-padding-y);padding-bottom:var(--el-drawer-padding-y);padding-left:var(--el-drawer-padding-x);padding-right:var(--el-drawer-padding-y);margin-bottom:0}.el-drawer__header-shadow{box-shadow:0 2px 12px #0000001a}.el-drawer__footer{flex-shrink:0;padding-top:var(--el-drawer-padding-y);padding-bottom:var(--el-drawer-padding-y);padding-left:var(--el-drawer-padding-x);padding-right:var(--el-drawer-padding-y)}.el-drawer__footer-shadow{box-shadow:0 -1px 6px #0000001a}.el-drawer__body{display:flex;flex-grow:1;flex-direction:column;padding:0;overflow:hidden}.el-drawer__body .el-scrollbar{flex-grow:1;flex-direction:column;display:flex;overflow:hidden}
|