@dnax/ui 0.0.28 → 0.0.29
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/components/QBar.vue +42 -0
- package/components/QBoard.vue +285 -0
- package/components/QConfigProvider.vue +9 -5
- package/components/QInteract.vue +387 -0
- package/components/QSpreadsheet.vue +4662 -0
- package/index.ts +6 -0
- package/lib/config.ts +6 -0
- package/lib/formula.test.ts +206 -0
- package/lib/formula.ts +292 -0
- package/lib/icons.ts +17 -0
- package/lib/intersection.ts +118 -0
- package/lib/spreadsheet.test.ts +92 -0
- package/lib/spreadsheet.ts +175 -0
- package/lib/useComponentProps.ts +7 -0
- package/module.ts +2 -0
- package/package.json +3 -1
- package/scripts/generate-exports.ts +2 -0
- package/styles/main.css +1344 -0
package/styles/main.css
CHANGED
|
@@ -9024,6 +9024,38 @@ html.dark body {
|
|
|
9024
9024
|
color: var(--q-tiptap-primary);
|
|
9025
9025
|
}
|
|
9026
9026
|
|
|
9027
|
+
/* ===== QBar ===== */
|
|
9028
|
+
.q-bar {
|
|
9029
|
+
display: flex;
|
|
9030
|
+
align-items: center;
|
|
9031
|
+
gap: 10px;
|
|
9032
|
+
min-height: 40px;
|
|
9033
|
+
padding: 0 12px;
|
|
9034
|
+
font-size: 13px;
|
|
9035
|
+
line-height: 1.4;
|
|
9036
|
+
color: var(--foreground, #1d1d1d);
|
|
9037
|
+
background: transparent;
|
|
9038
|
+
user-select: none;
|
|
9039
|
+
}
|
|
9040
|
+
.q-bar--dense {
|
|
9041
|
+
gap: 8px;
|
|
9042
|
+
min-height: 32px;
|
|
9043
|
+
padding: 0 10px;
|
|
9044
|
+
font-size: 12px;
|
|
9045
|
+
}
|
|
9046
|
+
.q-bar--dark {
|
|
9047
|
+
color: #ececef;
|
|
9048
|
+
background: #1d1d1d;
|
|
9049
|
+
}
|
|
9050
|
+
.q-bar > * {
|
|
9051
|
+
flex-shrink: 0;
|
|
9052
|
+
}
|
|
9053
|
+
.q-bar__dot {
|
|
9054
|
+
width: 12px;
|
|
9055
|
+
height: 12px;
|
|
9056
|
+
border-radius: 50%;
|
|
9057
|
+
}
|
|
9058
|
+
|
|
9027
9059
|
/* ===== QEditorJs (Editor.js, éditeur par blocs) ===== */
|
|
9028
9060
|
.q-editor-js {
|
|
9029
9061
|
border: 1px solid var(--border, rgb(0 0 0 / 0.12));
|
|
@@ -9193,3 +9225,1315 @@ html.dark body {
|
|
|
9193
9225
|
color: var(--q-tiptap-muted);
|
|
9194
9226
|
text-decoration: line-through;
|
|
9195
9227
|
}
|
|
9228
|
+
|
|
9229
|
+
/* ===== QSpreadsheet (tableur type Excel) ===== */
|
|
9230
|
+
.q-spreadsheet {
|
|
9231
|
+
--q-spreadsheet-border: rgb(0 0 0 / 0.1);
|
|
9232
|
+
--q-spreadsheet-header-bg: rgb(0 0 0 / 0.03);
|
|
9233
|
+
--q-spreadsheet-row-alt: rgb(0 0 0 / 0.015);
|
|
9234
|
+
--q-spreadsheet-range: rgb(25 118 210 / 0.1);
|
|
9235
|
+
--q-spreadsheet-range-brd: var(--primary, #1976d2);
|
|
9236
|
+
|
|
9237
|
+
position: relative;
|
|
9238
|
+
display: flex;
|
|
9239
|
+
flex-direction: column;
|
|
9240
|
+
width: 100%;
|
|
9241
|
+
overflow: hidden;
|
|
9242
|
+
border-radius: var(--q-radius, 0);
|
|
9243
|
+
background: #fff;
|
|
9244
|
+
color: var(--foreground, #1d1d1d);
|
|
9245
|
+
font-size: 13px;
|
|
9246
|
+
}
|
|
9247
|
+
.q-spreadsheet--bordered {
|
|
9248
|
+
border: 1px solid var(--q-spreadsheet-border);
|
|
9249
|
+
}
|
|
9250
|
+
.q-spreadsheet--flat {
|
|
9251
|
+
box-shadow: none;
|
|
9252
|
+
}
|
|
9253
|
+
.q-spreadsheet--disable {
|
|
9254
|
+
opacity: 0.6;
|
|
9255
|
+
pointer-events: none;
|
|
9256
|
+
user-select: none;
|
|
9257
|
+
}
|
|
9258
|
+
.q-spreadsheet--dark,
|
|
9259
|
+
.dark .q-spreadsheet {
|
|
9260
|
+
--q-spreadsheet-border: rgb(255 255 255 / 0.12);
|
|
9261
|
+
--q-spreadsheet-header-bg: rgb(255 255 255 / 0.05);
|
|
9262
|
+
--q-spreadsheet-row-alt: rgb(255 255 255 / 0.02);
|
|
9263
|
+
background: var(--card, #1d1d1d);
|
|
9264
|
+
color: var(--foreground, #ececef);
|
|
9265
|
+
}
|
|
9266
|
+
|
|
9267
|
+
/* ─── Barre d'outils ─── */
|
|
9268
|
+
.q-spreadsheet__toolbar {
|
|
9269
|
+
display: flex;
|
|
9270
|
+
align-items: center;
|
|
9271
|
+
flex-wrap: wrap;
|
|
9272
|
+
gap: 4px;
|
|
9273
|
+
padding: 6px 8px;
|
|
9274
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
9275
|
+
background: var(--q-spreadsheet-header-bg);
|
|
9276
|
+
}
|
|
9277
|
+
.q-spreadsheet__sheet-name {
|
|
9278
|
+
display: inline-flex;
|
|
9279
|
+
align-items: center;
|
|
9280
|
+
gap: 6px;
|
|
9281
|
+
margin-right: 6px;
|
|
9282
|
+
padding: 3px 10px;
|
|
9283
|
+
font-size: 12px;
|
|
9284
|
+
font-weight: 600;
|
|
9285
|
+
color: var(--foreground, #1d1d1d);
|
|
9286
|
+
background: rgb(25 118 210 / 0.08);
|
|
9287
|
+
border-radius: 6px;
|
|
9288
|
+
white-space: nowrap;
|
|
9289
|
+
}
|
|
9290
|
+
.q-spreadsheet__tb-group {
|
|
9291
|
+
display: inline-flex;
|
|
9292
|
+
align-items: center;
|
|
9293
|
+
gap: 2px;
|
|
9294
|
+
padding: 0 4px;
|
|
9295
|
+
border-left: 1px solid var(--q-spreadsheet-border);
|
|
9296
|
+
}
|
|
9297
|
+
.q-spreadsheet__tool {
|
|
9298
|
+
display: inline-flex;
|
|
9299
|
+
align-items: center;
|
|
9300
|
+
justify-content: center;
|
|
9301
|
+
width: 28px;
|
|
9302
|
+
height: 28px;
|
|
9303
|
+
padding: 0;
|
|
9304
|
+
border: 0;
|
|
9305
|
+
border-radius: 6px;
|
|
9306
|
+
background: transparent;
|
|
9307
|
+
color: var(--foreground, #1d1d1d);
|
|
9308
|
+
cursor: pointer;
|
|
9309
|
+
transition: background-color 0.15s ease;
|
|
9310
|
+
}
|
|
9311
|
+
.q-spreadsheet__tool:hover:not(:disabled) {
|
|
9312
|
+
background: rgb(25 118 210 / 0.1);
|
|
9313
|
+
color: var(--primary, #1976d2);
|
|
9314
|
+
}
|
|
9315
|
+
.q-spreadsheet__tool:disabled {
|
|
9316
|
+
opacity: 0.35;
|
|
9317
|
+
cursor: default;
|
|
9318
|
+
}
|
|
9319
|
+
.q-spreadsheet__tool .iconify {
|
|
9320
|
+
font-size: 17px;
|
|
9321
|
+
}
|
|
9322
|
+
.q-spreadsheet--dense .q-spreadsheet__tool {
|
|
9323
|
+
width: 24px;
|
|
9324
|
+
height: 24px;
|
|
9325
|
+
}
|
|
9326
|
+
|
|
9327
|
+
/* ─── Viewport / table ─── */
|
|
9328
|
+
.q-spreadsheet__viewport {
|
|
9329
|
+
position: relative;
|
|
9330
|
+
overflow: auto;
|
|
9331
|
+
outline: none;
|
|
9332
|
+
}
|
|
9333
|
+
.q-spreadsheet__table {
|
|
9334
|
+
width: max-content;
|
|
9335
|
+
min-width: 100%;
|
|
9336
|
+
border-collapse: separate;
|
|
9337
|
+
border-spacing: 0;
|
|
9338
|
+
table-layout: fixed;
|
|
9339
|
+
font-size: 13px;
|
|
9340
|
+
}
|
|
9341
|
+
|
|
9342
|
+
/* ─── En-têtes ─── */
|
|
9343
|
+
.q-spreadsheet__corner,
|
|
9344
|
+
.q-spreadsheet__colhead,
|
|
9345
|
+
.q-spreadsheet__rownum {
|
|
9346
|
+
position: sticky;
|
|
9347
|
+
background-color: var(--q-spreadsheet-header-bg);
|
|
9348
|
+
color: var(--foreground, #1d1d1d);
|
|
9349
|
+
font-weight: 600;
|
|
9350
|
+
user-select: none;
|
|
9351
|
+
}
|
|
9352
|
+
.q-spreadsheet__corner {
|
|
9353
|
+
top: 0;
|
|
9354
|
+
left: 0;
|
|
9355
|
+
z-index: 6;
|
|
9356
|
+
width: 34px;
|
|
9357
|
+
min-width: 34px;
|
|
9358
|
+
height: 28px;
|
|
9359
|
+
border-right: 1px solid var(--q-spreadsheet-border);
|
|
9360
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
9361
|
+
text-align: center;
|
|
9362
|
+
vertical-align: middle;
|
|
9363
|
+
cursor: pointer;
|
|
9364
|
+
}
|
|
9365
|
+
.q-spreadsheet__colhead {
|
|
9366
|
+
top: 0;
|
|
9367
|
+
z-index: 4;
|
|
9368
|
+
height: 28px;
|
|
9369
|
+
padding: 0 10px 0 6px;
|
|
9370
|
+
border-right: 1px solid var(--q-spreadsheet-border);
|
|
9371
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
9372
|
+
text-align: left;
|
|
9373
|
+
white-space: nowrap;
|
|
9374
|
+
overflow: hidden;
|
|
9375
|
+
cursor: pointer;
|
|
9376
|
+
}
|
|
9377
|
+
.q-spreadsheet__colhead--sel {
|
|
9378
|
+
background: rgb(25 118 210 / 0.12);
|
|
9379
|
+
}
|
|
9380
|
+
.q-spreadsheet__colhead-inner {
|
|
9381
|
+
display: flex;
|
|
9382
|
+
flex-direction: column;
|
|
9383
|
+
justify-content: center;
|
|
9384
|
+
min-width: 0;
|
|
9385
|
+
height: 100%;
|
|
9386
|
+
padding-right: 6px;
|
|
9387
|
+
}
|
|
9388
|
+
.q-spreadsheet__colhead-letter {
|
|
9389
|
+
font-size: 9.5px;
|
|
9390
|
+
font-weight: 700;
|
|
9391
|
+
line-height: 1.1;
|
|
9392
|
+
letter-spacing: 0.04em;
|
|
9393
|
+
text-transform: uppercase;
|
|
9394
|
+
color: var(--primary, #1976d2);
|
|
9395
|
+
}
|
|
9396
|
+
.q-spreadsheet__colhead-label {
|
|
9397
|
+
font-size: 11.5px;
|
|
9398
|
+
line-height: 1.25;
|
|
9399
|
+
overflow: hidden;
|
|
9400
|
+
text-overflow: ellipsis;
|
|
9401
|
+
}
|
|
9402
|
+
.q-spreadsheet__rownum {
|
|
9403
|
+
left: 0;
|
|
9404
|
+
z-index: 3;
|
|
9405
|
+
width: 34px;
|
|
9406
|
+
min-width: 34px;
|
|
9407
|
+
border-right: 1px solid var(--q-spreadsheet-border);
|
|
9408
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
9409
|
+
font-size: 11px;
|
|
9410
|
+
font-weight: 500;
|
|
9411
|
+
text-align: center;
|
|
9412
|
+
vertical-align: middle;
|
|
9413
|
+
cursor: pointer;
|
|
9414
|
+
}
|
|
9415
|
+
.q-spreadsheet__rownum--sel {
|
|
9416
|
+
background: rgb(25 118 210 / 0.12);
|
|
9417
|
+
color: var(--primary, #1976d2);
|
|
9418
|
+
}
|
|
9419
|
+
.q-spreadsheet__row--sel {
|
|
9420
|
+
background: var(--q-spreadsheet-range);
|
|
9421
|
+
}
|
|
9422
|
+
.q-spreadsheet__resize {
|
|
9423
|
+
position: absolute;
|
|
9424
|
+
top: 0;
|
|
9425
|
+
right: 0;
|
|
9426
|
+
bottom: 0;
|
|
9427
|
+
z-index: 5;
|
|
9428
|
+
width: 6px;
|
|
9429
|
+
cursor: col-resize;
|
|
9430
|
+
}
|
|
9431
|
+
.q-spreadsheet__colhead {
|
|
9432
|
+
position: sticky;
|
|
9433
|
+
}
|
|
9434
|
+
|
|
9435
|
+
/* ─── Cellules ─── */
|
|
9436
|
+
.q-spreadsheet__cell {
|
|
9437
|
+
position: relative;
|
|
9438
|
+
height: var(--q-spreadsheet-row-height, 32px);
|
|
9439
|
+
padding: 2px 8px;
|
|
9440
|
+
border-right: 1px solid var(--q-spreadsheet-border);
|
|
9441
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
9442
|
+
background: transparent;
|
|
9443
|
+
text-align: left;
|
|
9444
|
+
white-space: nowrap;
|
|
9445
|
+
overflow: hidden;
|
|
9446
|
+
text-overflow: ellipsis;
|
|
9447
|
+
cursor: cell;
|
|
9448
|
+
outline: none;
|
|
9449
|
+
}
|
|
9450
|
+
.q-spreadsheet__cell-text {
|
|
9451
|
+
display: block;
|
|
9452
|
+
overflow: hidden;
|
|
9453
|
+
text-overflow: ellipsis;
|
|
9454
|
+
}
|
|
9455
|
+
.q-spreadsheet__cell--number {
|
|
9456
|
+
text-align: right;
|
|
9457
|
+
font-variant-numeric: tabular-nums;
|
|
9458
|
+
}
|
|
9459
|
+
.q-spreadsheet__cell--center {
|
|
9460
|
+
text-align: center;
|
|
9461
|
+
}
|
|
9462
|
+
.q-spreadsheet__cell--right {
|
|
9463
|
+
text-align: right;
|
|
9464
|
+
}
|
|
9465
|
+
.q-spreadsheet__cell--in-range {
|
|
9466
|
+
background: var(--q-spreadsheet-range);
|
|
9467
|
+
}
|
|
9468
|
+
.q-spreadsheet__cell--active {
|
|
9469
|
+
background: var(--q-spreadsheet-range);
|
|
9470
|
+
box-shadow: inset 0 0 0 2px var(--q-spreadsheet-range-brd);
|
|
9471
|
+
}
|
|
9472
|
+
.q-spreadsheet__cell--editing {
|
|
9473
|
+
background: #fff;
|
|
9474
|
+
box-shadow: none;
|
|
9475
|
+
}
|
|
9476
|
+
.q-spreadsheet__cell--readonly {
|
|
9477
|
+
cursor: default;
|
|
9478
|
+
}
|
|
9479
|
+
.q-spreadsheet__cell--bool {
|
|
9480
|
+
text-align: center;
|
|
9481
|
+
}
|
|
9482
|
+
|
|
9483
|
+
/* ─── Case à cocher booléenne ─── */
|
|
9484
|
+
.q-spreadsheet__checkbox {
|
|
9485
|
+
display: inline-flex;
|
|
9486
|
+
align-items: center;
|
|
9487
|
+
justify-content: center;
|
|
9488
|
+
width: 17px;
|
|
9489
|
+
height: 17px;
|
|
9490
|
+
padding: 0;
|
|
9491
|
+
border: 1.5px solid var(--q-spreadsheet-border);
|
|
9492
|
+
border-radius: 4px;
|
|
9493
|
+
background: transparent;
|
|
9494
|
+
color: #fff;
|
|
9495
|
+
cursor: pointer;
|
|
9496
|
+
vertical-align: middle;
|
|
9497
|
+
}
|
|
9498
|
+
.q-spreadsheet__checkbox--on {
|
|
9499
|
+
background: var(--primary, #1976d2);
|
|
9500
|
+
border-color: var(--primary, #1976d2);
|
|
9501
|
+
}
|
|
9502
|
+
.q-spreadsheet__checkbox:disabled {
|
|
9503
|
+
cursor: default;
|
|
9504
|
+
opacity: 0.6;
|
|
9505
|
+
}
|
|
9506
|
+
.q-spreadsheet__checkbox .iconify {
|
|
9507
|
+
font-size: 12px;
|
|
9508
|
+
}
|
|
9509
|
+
|
|
9510
|
+
/* ─── Badges (type select + chip) ─── */
|
|
9511
|
+
.q-spreadsheet__badge {
|
|
9512
|
+
display: inline-block;
|
|
9513
|
+
max-width: 100%;
|
|
9514
|
+
padding: 1px 8px;
|
|
9515
|
+
border-radius: 999px;
|
|
9516
|
+
font-size: 11.5px;
|
|
9517
|
+
font-weight: 600;
|
|
9518
|
+
line-height: 1.6;
|
|
9519
|
+
white-space: nowrap;
|
|
9520
|
+
overflow: hidden;
|
|
9521
|
+
text-overflow: ellipsis;
|
|
9522
|
+
vertical-align: middle;
|
|
9523
|
+
}
|
|
9524
|
+
|
|
9525
|
+
/* ─── Éditeur overlay ─── */
|
|
9526
|
+
.q-spreadsheet__editor {
|
|
9527
|
+
position: absolute;
|
|
9528
|
+
z-index: 20;
|
|
9529
|
+
display: flex;
|
|
9530
|
+
align-items: center;
|
|
9531
|
+
border: 2px solid var(--primary, #1976d2);
|
|
9532
|
+
background: #fff;
|
|
9533
|
+
box-shadow: 0 6px 18px rgb(0 0 0 / 0.14);
|
|
9534
|
+
}
|
|
9535
|
+
.q-spreadsheet--dark .q-spreadsheet__editor,
|
|
9536
|
+
.dark .q-spreadsheet__editor {
|
|
9537
|
+
background: var(--card, #1d1d1d);
|
|
9538
|
+
}
|
|
9539
|
+
.q-spreadsheet__editor-input {
|
|
9540
|
+
width: 100%;
|
|
9541
|
+
min-width: 0;
|
|
9542
|
+
height: 100%;
|
|
9543
|
+
padding: 2px 6px;
|
|
9544
|
+
border: 0;
|
|
9545
|
+
outline: none;
|
|
9546
|
+
background: transparent;
|
|
9547
|
+
color: var(--foreground, #1d1d1d);
|
|
9548
|
+
font: inherit;
|
|
9549
|
+
}
|
|
9550
|
+
.q-spreadsheet__editor--select {
|
|
9551
|
+
flex-direction: column;
|
|
9552
|
+
align-items: stretch;
|
|
9553
|
+
border-color: rgb(25 118 210 / 0.45);
|
|
9554
|
+
}
|
|
9555
|
+
.q-spreadsheet__editor--select .q-spreadsheet__editor-input {
|
|
9556
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
9557
|
+
}
|
|
9558
|
+
.q-spreadsheet__options {
|
|
9559
|
+
max-height: 180px;
|
|
9560
|
+
overflow: auto;
|
|
9561
|
+
padding: 4px;
|
|
9562
|
+
}
|
|
9563
|
+
.q-spreadsheet__option {
|
|
9564
|
+
display: flex;
|
|
9565
|
+
align-items: center;
|
|
9566
|
+
gap: 8px;
|
|
9567
|
+
width: 100%;
|
|
9568
|
+
padding: 5px 8px;
|
|
9569
|
+
border: 0;
|
|
9570
|
+
border-radius: 6px;
|
|
9571
|
+
background: transparent;
|
|
9572
|
+
color: var(--foreground, #1d1d1d);
|
|
9573
|
+
font-size: 12.5px;
|
|
9574
|
+
text-align: left;
|
|
9575
|
+
cursor: pointer;
|
|
9576
|
+
}
|
|
9577
|
+
.q-spreadsheet__option:hover,
|
|
9578
|
+
.q-spreadsheet__option--active {
|
|
9579
|
+
background: rgb(25 118 210 / 0.1);
|
|
9580
|
+
}
|
|
9581
|
+
.q-spreadsheet__option-swatch {
|
|
9582
|
+
flex-shrink: 0;
|
|
9583
|
+
width: 12px;
|
|
9584
|
+
height: 12px;
|
|
9585
|
+
border-radius: 3px;
|
|
9586
|
+
border: 1px solid var(--q-spreadsheet-border);
|
|
9587
|
+
}
|
|
9588
|
+
|
|
9589
|
+
/* ─── Barre de formule (fx) ─── */
|
|
9590
|
+
.q-spreadsheet__fx {
|
|
9591
|
+
display: flex;
|
|
9592
|
+
align-items: center;
|
|
9593
|
+
gap: 8px;
|
|
9594
|
+
padding: 4px 8px;
|
|
9595
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
9596
|
+
background: var(--q-spreadsheet-header-bg);
|
|
9597
|
+
}
|
|
9598
|
+
.q-spreadsheet__fx-ref {
|
|
9599
|
+
flex-shrink: 0;
|
|
9600
|
+
min-width: 46px;
|
|
9601
|
+
padding: 2px 6px;
|
|
9602
|
+
text-align: center;
|
|
9603
|
+
font-weight: 700;
|
|
9604
|
+
font-size: 11.5px;
|
|
9605
|
+
color: var(--primary, #1976d2);
|
|
9606
|
+
background: rgb(25 118 210 / 0.08);
|
|
9607
|
+
border: 1px solid var(--q-spreadsheet-border);
|
|
9608
|
+
border-radius: 4px;
|
|
9609
|
+
}
|
|
9610
|
+
.q-spreadsheet__fx-badge {
|
|
9611
|
+
flex-shrink: 0;
|
|
9612
|
+
font-style: italic;
|
|
9613
|
+
font-weight: 600;
|
|
9614
|
+
font-size: 11px;
|
|
9615
|
+
color: #8b93a1;
|
|
9616
|
+
user-select: none;
|
|
9617
|
+
}
|
|
9618
|
+
.q-spreadsheet__fx-input {
|
|
9619
|
+
flex: 1;
|
|
9620
|
+
min-width: 0;
|
|
9621
|
+
padding: 4px 8px;
|
|
9622
|
+
border: 1px solid transparent;
|
|
9623
|
+
border-radius: 4px;
|
|
9624
|
+
background: transparent;
|
|
9625
|
+
color: var(--foreground, #1d1d1d);
|
|
9626
|
+
font: inherit;
|
|
9627
|
+
font-size: 12.5px;
|
|
9628
|
+
outline: none;
|
|
9629
|
+
}
|
|
9630
|
+
.q-spreadsheet__fx-input:focus {
|
|
9631
|
+
border-color: var(--primary, #1976d2);
|
|
9632
|
+
background: #fff;
|
|
9633
|
+
}
|
|
9634
|
+
.dark .q-spreadsheet__fx-input:focus,
|
|
9635
|
+
.q-spreadsheet--dark .q-spreadsheet__fx-input:focus {
|
|
9636
|
+
background: var(--card, #1d1d1d);
|
|
9637
|
+
}
|
|
9638
|
+
.q-spreadsheet__fx-input:disabled {
|
|
9639
|
+
opacity: 0.55;
|
|
9640
|
+
}
|
|
9641
|
+
|
|
9642
|
+
/* ─── Éditeur formule (textarea monospace) ─── */
|
|
9643
|
+
.q-spreadsheet__editor--formula {
|
|
9644
|
+
align-items: stretch;
|
|
9645
|
+
border-color: rgb(25 118 210 / 0.55);
|
|
9646
|
+
}
|
|
9647
|
+
.q-spreadsheet__editor-area {
|
|
9648
|
+
width: 100%;
|
|
9649
|
+
min-height: 28px;
|
|
9650
|
+
padding: 4px 6px;
|
|
9651
|
+
border: 0;
|
|
9652
|
+
outline: none;
|
|
9653
|
+
background: transparent;
|
|
9654
|
+
color: var(--foreground, #1d1d1d);
|
|
9655
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
9656
|
+
font-size: 12.5px;
|
|
9657
|
+
line-height: 1.45;
|
|
9658
|
+
resize: none;
|
|
9659
|
+
}
|
|
9660
|
+
|
|
9661
|
+
/* ─── Erreurs de formule ─── */
|
|
9662
|
+
.q-spreadsheet__cell--error {
|
|
9663
|
+
color: #c62828;
|
|
9664
|
+
font-weight: 600;
|
|
9665
|
+
}
|
|
9666
|
+
.q-spreadsheet--dark .q-spreadsheet__cell--error,
|
|
9667
|
+
.dark .q-spreadsheet__cell--error {
|
|
9668
|
+
color: #ff8a80;
|
|
9669
|
+
}
|
|
9670
|
+
|
|
9671
|
+
/* ─── fond opaque pour le freeze (variables) ─── */
|
|
9672
|
+
.q-spreadsheet {
|
|
9673
|
+
--q-spreadsheet-bg: #ffffff;
|
|
9674
|
+
}
|
|
9675
|
+
.q-spreadsheet--dark,
|
|
9676
|
+
.dark .q-spreadsheet {
|
|
9677
|
+
--q-spreadsheet-bg: var(--card, #1d1d1d);
|
|
9678
|
+
}
|
|
9679
|
+
|
|
9680
|
+
/* ─── Resize lignes (handle bas du numéro) ─── */
|
|
9681
|
+
.q-spreadsheet__row-resize {
|
|
9682
|
+
position: absolute;
|
|
9683
|
+
right: 0;
|
|
9684
|
+
bottom: 0;
|
|
9685
|
+
left: 0;
|
|
9686
|
+
height: 5px;
|
|
9687
|
+
cursor: row-resize;
|
|
9688
|
+
}
|
|
9689
|
+
/* ─── Bouton filtre colonne ─── */
|
|
9690
|
+
.q-spreadsheet__fbtn {
|
|
9691
|
+
position: absolute;
|
|
9692
|
+
top: 50%;
|
|
9693
|
+
right: 12px;
|
|
9694
|
+
display: inline-flex;
|
|
9695
|
+
align-items: center;
|
|
9696
|
+
justify-content: center;
|
|
9697
|
+
width: 16px;
|
|
9698
|
+
height: 16px;
|
|
9699
|
+
padding: 0;
|
|
9700
|
+
border: 0;
|
|
9701
|
+
border-radius: 4px;
|
|
9702
|
+
background: transparent;
|
|
9703
|
+
color: #8b93a1;
|
|
9704
|
+
opacity: 0.45;
|
|
9705
|
+
cursor: pointer;
|
|
9706
|
+
transform: translateY(-50%);
|
|
9707
|
+
}
|
|
9708
|
+
.q-spreadsheet__colhead:hover .q-spreadsheet__fbtn,
|
|
9709
|
+
.q-spreadsheet__fbtn--on {
|
|
9710
|
+
opacity: 1;
|
|
9711
|
+
}
|
|
9712
|
+
.q-spreadsheet__fbtn--on {
|
|
9713
|
+
color: var(--primary, #1976d2);
|
|
9714
|
+
background: rgb(25 118 210 / 0.12);
|
|
9715
|
+
}
|
|
9716
|
+
.q-spreadsheet__fbtn .iconify {
|
|
9717
|
+
font-size: 13px;
|
|
9718
|
+
}
|
|
9719
|
+
|
|
9720
|
+
/* ─── Freeze panes ─── */
|
|
9721
|
+
.q-spreadsheet__cell--frozen-row,
|
|
9722
|
+
.q-spreadsheet__cell--frozen-col {
|
|
9723
|
+
position: sticky;
|
|
9724
|
+
z-index: 2;
|
|
9725
|
+
}
|
|
9726
|
+
.q-spreadsheet__cell--frozen-both {
|
|
9727
|
+
position: sticky;
|
|
9728
|
+
z-index: 3;
|
|
9729
|
+
}
|
|
9730
|
+
.q-spreadsheet__colhead--frozen {
|
|
9731
|
+
z-index: 5;
|
|
9732
|
+
}
|
|
9733
|
+
.q-spreadsheet__rownum--frozen {
|
|
9734
|
+
z-index: 3;
|
|
9735
|
+
}
|
|
9736
|
+
.q-spreadsheet__rownum--frozen,
|
|
9737
|
+
.q-spreadsheet__colhead--frozen,
|
|
9738
|
+
.q-spreadsheet__cell--frozen-row,
|
|
9739
|
+
.q-spreadsheet__cell--frozen-col,
|
|
9740
|
+
.q-spreadsheet__cell--frozen-both {
|
|
9741
|
+
box-shadow: -1px 0 0 0 var(--q-spreadsheet-border), 0 -1px 0 0 var(--q-spreadsheet-border);
|
|
9742
|
+
}
|
|
9743
|
+
|
|
9744
|
+
/* ─── Poignée autofill + prévisualisation ─── */
|
|
9745
|
+
.q-spreadsheet__fill {
|
|
9746
|
+
position: absolute;
|
|
9747
|
+
z-index: 40;
|
|
9748
|
+
width: 8px;
|
|
9749
|
+
height: 8px;
|
|
9750
|
+
border: 1.5px solid #fff;
|
|
9751
|
+
border-radius: 2px;
|
|
9752
|
+
background: var(--primary, #1976d2);
|
|
9753
|
+
cursor: crosshair;
|
|
9754
|
+
box-shadow: 0 0 0 1px rgb(0 0 0 / 0.2);
|
|
9755
|
+
}
|
|
9756
|
+
.q-spreadsheet__cell--fill {
|
|
9757
|
+
box-shadow: inset 0 0 0 2px var(--primary, #1976d2);
|
|
9758
|
+
}
|
|
9759
|
+
|
|
9760
|
+
/* ─── Pas de lignes ─── */
|
|
9761
|
+
.q-spreadsheet__no-rows {
|
|
9762
|
+
padding: 14px 16px;
|
|
9763
|
+
color: #8b93a1;
|
|
9764
|
+
font-size: 12.5px;
|
|
9765
|
+
text-align: center;
|
|
9766
|
+
border-right: 1px solid var(--q-spreadsheet-border);
|
|
9767
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
9768
|
+
}
|
|
9769
|
+
|
|
9770
|
+
/* ─── Menu contextuel / popup filtre (téléportés body) ─── */
|
|
9771
|
+
.q-spreadsheet__ctx,
|
|
9772
|
+
.q-spreadsheet__fpop {
|
|
9773
|
+
z-index: 1300;
|
|
9774
|
+
min-width: 214px;
|
|
9775
|
+
max-width: 300px;
|
|
9776
|
+
padding: 5px;
|
|
9777
|
+
color: var(--foreground, #1d1d1d);
|
|
9778
|
+
background: var(--card, #fff);
|
|
9779
|
+
border: 1px solid var(--border, rgb(0 0 0 / 0.12));
|
|
9780
|
+
border-radius: 9px;
|
|
9781
|
+
box-shadow: 0 12px 32px rgb(0 0 0 / 0.16);
|
|
9782
|
+
font-size: 13px;
|
|
9783
|
+
user-select: none;
|
|
9784
|
+
}
|
|
9785
|
+
.dark .q-spreadsheet__ctx,
|
|
9786
|
+
.dark .q-spreadsheet__fpop {
|
|
9787
|
+
color: #ececef;
|
|
9788
|
+
background: #1d1d1d;
|
|
9789
|
+
}
|
|
9790
|
+
.q-spreadsheet__ctx-title {
|
|
9791
|
+
padding: 4px 8px 6px;
|
|
9792
|
+
font-size: 11px;
|
|
9793
|
+
font-weight: 700;
|
|
9794
|
+
letter-spacing: 0.04em;
|
|
9795
|
+
text-transform: uppercase;
|
|
9796
|
+
color: #8b93a1;
|
|
9797
|
+
border-bottom: 1px solid var(--border, rgb(0 0 0 / 0.08));
|
|
9798
|
+
margin-bottom: 4px;
|
|
9799
|
+
}
|
|
9800
|
+
.q-spreadsheet__mi {
|
|
9801
|
+
display: flex;
|
|
9802
|
+
align-items: center;
|
|
9803
|
+
gap: 9px;
|
|
9804
|
+
width: 100%;
|
|
9805
|
+
padding: 5px 9px;
|
|
9806
|
+
border: 0;
|
|
9807
|
+
border-radius: 6px;
|
|
9808
|
+
background: transparent;
|
|
9809
|
+
color: inherit;
|
|
9810
|
+
font: inherit;
|
|
9811
|
+
font-size: 12.5px;
|
|
9812
|
+
text-align: left;
|
|
9813
|
+
cursor: pointer;
|
|
9814
|
+
}
|
|
9815
|
+
.q-spreadsheet__mi:hover:not(:disabled) {
|
|
9816
|
+
background: rgb(25 118 210 / 0.09);
|
|
9817
|
+
}
|
|
9818
|
+
.q-spreadsheet__mi--on {
|
|
9819
|
+
color: var(--primary, #1976d2);
|
|
9820
|
+
background: rgb(25 118 210 / 0.12);
|
|
9821
|
+
}
|
|
9822
|
+
.q-spreadsheet__mi:disabled {
|
|
9823
|
+
opacity: 0.38;
|
|
9824
|
+
cursor: default;
|
|
9825
|
+
}
|
|
9826
|
+
.q-spreadsheet__mi .iconify {
|
|
9827
|
+
font-size: 15px;
|
|
9828
|
+
flex-shrink: 0;
|
|
9829
|
+
}
|
|
9830
|
+
.q-spreadsheet__sep {
|
|
9831
|
+
height: 1px;
|
|
9832
|
+
margin: 5px 6px;
|
|
9833
|
+
background: var(--border, rgb(0 0 0 / 0.09));
|
|
9834
|
+
}
|
|
9835
|
+
.q-spreadsheet__ctx-label {
|
|
9836
|
+
padding: 6px 8px 3px;
|
|
9837
|
+
font-size: 10px;
|
|
9838
|
+
font-weight: 700;
|
|
9839
|
+
text-transform: uppercase;
|
|
9840
|
+
letter-spacing: 0.05em;
|
|
9841
|
+
color: #8b93a1;
|
|
9842
|
+
}
|
|
9843
|
+
.q-spreadsheet__swatches {
|
|
9844
|
+
display: flex;
|
|
9845
|
+
flex-wrap: wrap;
|
|
9846
|
+
gap: 4px;
|
|
9847
|
+
padding: 2px 6px 6px;
|
|
9848
|
+
}
|
|
9849
|
+
.q-spreadsheet__swatch {
|
|
9850
|
+
width: 17px;
|
|
9851
|
+
height: 17px;
|
|
9852
|
+
padding: 0;
|
|
9853
|
+
border: 1px solid var(--border, rgb(0 0 0 / 0.14));
|
|
9854
|
+
border-radius: 4px;
|
|
9855
|
+
cursor: pointer;
|
|
9856
|
+
}
|
|
9857
|
+
.q-spreadsheet__swatch--on {
|
|
9858
|
+
outline: 2px solid var(--primary, #1976d2);
|
|
9859
|
+
outline-offset: 1px;
|
|
9860
|
+
}
|
|
9861
|
+
.q-spreadsheet__swatch:disabled {
|
|
9862
|
+
opacity: 0.45;
|
|
9863
|
+
cursor: default;
|
|
9864
|
+
}
|
|
9865
|
+
|
|
9866
|
+
/* ─── Popup filtre ─── */
|
|
9867
|
+
.q-spreadsheet__fpop {
|
|
9868
|
+
width: 248px;
|
|
9869
|
+
}
|
|
9870
|
+
.q-spreadsheet__fpop-head {
|
|
9871
|
+
display: flex;
|
|
9872
|
+
align-items: center;
|
|
9873
|
+
gap: 8px;
|
|
9874
|
+
padding: 4px 6px 6px;
|
|
9875
|
+
}
|
|
9876
|
+
.q-spreadsheet__fpop-head .iconify {
|
|
9877
|
+
color: var(--primary, #1976d2);
|
|
9878
|
+
flex-shrink: 0;
|
|
9879
|
+
}
|
|
9880
|
+
.q-spreadsheet__fpop-name {
|
|
9881
|
+
flex: 1;
|
|
9882
|
+
font-weight: 600;
|
|
9883
|
+
font-size: 12.5px;
|
|
9884
|
+
overflow: hidden;
|
|
9885
|
+
text-overflow: ellipsis;
|
|
9886
|
+
white-space: nowrap;
|
|
9887
|
+
}
|
|
9888
|
+
.q-spreadsheet__fpop-close {
|
|
9889
|
+
display: inline-flex;
|
|
9890
|
+
align-items: center;
|
|
9891
|
+
justify-content: center;
|
|
9892
|
+
width: 22px;
|
|
9893
|
+
height: 22px;
|
|
9894
|
+
padding: 0;
|
|
9895
|
+
border: 0;
|
|
9896
|
+
border-radius: 5px;
|
|
9897
|
+
background: transparent;
|
|
9898
|
+
color: inherit;
|
|
9899
|
+
cursor: pointer;
|
|
9900
|
+
}
|
|
9901
|
+
.q-spreadsheet__fpop-close:hover {
|
|
9902
|
+
background: rgb(0 0 0 / 0.08);
|
|
9903
|
+
}
|
|
9904
|
+
.q-spreadsheet__fpop-search {
|
|
9905
|
+
width: 100%;
|
|
9906
|
+
padding: 5px 8px;
|
|
9907
|
+
border: 1px solid var(--border, rgb(0 0 0 / 0.16));
|
|
9908
|
+
border-radius: 6px;
|
|
9909
|
+
background: transparent;
|
|
9910
|
+
color: inherit;
|
|
9911
|
+
font: inherit;
|
|
9912
|
+
font-size: 12.5px;
|
|
9913
|
+
outline: none;
|
|
9914
|
+
}
|
|
9915
|
+
.q-spreadsheet__fpop-search:focus {
|
|
9916
|
+
border-color: var(--primary, #1976d2);
|
|
9917
|
+
}
|
|
9918
|
+
.q-spreadsheet__fpop-list {
|
|
9919
|
+
max-height: 240px;
|
|
9920
|
+
overflow: auto;
|
|
9921
|
+
margin-top: 6px;
|
|
9922
|
+
}
|
|
9923
|
+
.q-spreadsheet__fpop-row {
|
|
9924
|
+
display: flex;
|
|
9925
|
+
align-items: center;
|
|
9926
|
+
gap: 8px;
|
|
9927
|
+
width: 100%;
|
|
9928
|
+
padding: 4px 8px;
|
|
9929
|
+
border: 0;
|
|
9930
|
+
border-radius: 5px;
|
|
9931
|
+
background: transparent;
|
|
9932
|
+
color: inherit;
|
|
9933
|
+
font: inherit;
|
|
9934
|
+
font-size: 12.5px;
|
|
9935
|
+
text-align: left;
|
|
9936
|
+
cursor: pointer;
|
|
9937
|
+
}
|
|
9938
|
+
.q-spreadsheet__fpop-row:hover {
|
|
9939
|
+
background: rgb(25 118 210 / 0.08);
|
|
9940
|
+
}
|
|
9941
|
+
.q-spreadsheet__fpop-check {
|
|
9942
|
+
display: inline-flex;
|
|
9943
|
+
align-items: center;
|
|
9944
|
+
justify-content: center;
|
|
9945
|
+
width: 15px;
|
|
9946
|
+
height: 15px;
|
|
9947
|
+
flex-shrink: 0;
|
|
9948
|
+
border: 1px solid var(--border, rgb(0 0 0 / 0.2));
|
|
9949
|
+
border-radius: 4px;
|
|
9950
|
+
color: #fff;
|
|
9951
|
+
}
|
|
9952
|
+
.q-spreadsheet__fpop-row--on .q-spreadsheet__fpop-check {
|
|
9953
|
+
background: var(--primary, #1976d2);
|
|
9954
|
+
border-color: var(--primary, #1976d2);
|
|
9955
|
+
}
|
|
9956
|
+
.q-spreadsheet__fpop-check .iconify {
|
|
9957
|
+
font-size: 11px;
|
|
9958
|
+
}
|
|
9959
|
+
.q-spreadsheet__fpop-label {
|
|
9960
|
+
flex: 1;
|
|
9961
|
+
min-width: 0;
|
|
9962
|
+
overflow: hidden;
|
|
9963
|
+
text-overflow: ellipsis;
|
|
9964
|
+
white-space: nowrap;
|
|
9965
|
+
}
|
|
9966
|
+
.q-spreadsheet__fpop-label--blank {
|
|
9967
|
+
color: #8b93a1;
|
|
9968
|
+
font-style: italic;
|
|
9969
|
+
}
|
|
9970
|
+
.q-spreadsheet__fpop-count {
|
|
9971
|
+
color: #8b93a1;
|
|
9972
|
+
font-size: 11.5px;
|
|
9973
|
+
}
|
|
9974
|
+
.q-spreadsheet__fpop-empty {
|
|
9975
|
+
padding: 10px;
|
|
9976
|
+
color: #8b93a1;
|
|
9977
|
+
font-size: 12px;
|
|
9978
|
+
text-align: center;
|
|
9979
|
+
}
|
|
9980
|
+
.q-spreadsheet__fpop > .q-spreadsheet__mi {
|
|
9981
|
+
margin-top: 4px;
|
|
9982
|
+
}
|
|
9983
|
+
|
|
9984
|
+
/* ─── place pour le bouton filtre dans l'en-tête ─── */
|
|
9985
|
+
.q-spreadsheet__colhead-inner {
|
|
9986
|
+
padding-right: 26px;
|
|
9987
|
+
}
|
|
9988
|
+
|
|
9989
|
+
/* ─── Suggestions de fonctions (formule) ─── */
|
|
9990
|
+
.q-spreadsheet__editor--formula {
|
|
9991
|
+
flex-direction: column;
|
|
9992
|
+
align-items: stretch;
|
|
9993
|
+
}
|
|
9994
|
+
.q-spreadsheet__fnsug {
|
|
9995
|
+
display: flex;
|
|
9996
|
+
flex-direction: column;
|
|
9997
|
+
max-height: 208px;
|
|
9998
|
+
overflow: auto;
|
|
9999
|
+
padding: 3px;
|
|
10000
|
+
border-top: 1px solid var(--q-spreadsheet-border);
|
|
10001
|
+
background: var(--card, #fff);
|
|
10002
|
+
}
|
|
10003
|
+
.q-spreadsheet--dark .q-spreadsheet__fnsug,
|
|
10004
|
+
.dark .q-spreadsheet__fnsug {
|
|
10005
|
+
background: var(--card, #1d1d1d);
|
|
10006
|
+
}
|
|
10007
|
+
.q-spreadsheet__fnsug-item {
|
|
10008
|
+
display: flex;
|
|
10009
|
+
align-items: baseline;
|
|
10010
|
+
gap: 8px;
|
|
10011
|
+
width: 100%;
|
|
10012
|
+
padding: 4px 8px;
|
|
10013
|
+
border: 0;
|
|
10014
|
+
border-radius: 5px;
|
|
10015
|
+
background: transparent;
|
|
10016
|
+
color: inherit;
|
|
10017
|
+
font: inherit;
|
|
10018
|
+
font-size: 12.5px;
|
|
10019
|
+
text-align: left;
|
|
10020
|
+
cursor: pointer;
|
|
10021
|
+
}
|
|
10022
|
+
.q-spreadsheet__fnsug-item code {
|
|
10023
|
+
color: var(--primary, #1976d2);
|
|
10024
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
10025
|
+
font-weight: 700;
|
|
10026
|
+
}
|
|
10027
|
+
.q-spreadsheet__fnsug-item span {
|
|
10028
|
+
color: #8b93a1;
|
|
10029
|
+
font-size: 11.5px;
|
|
10030
|
+
}
|
|
10031
|
+
.q-spreadsheet__fnsug-item:hover,
|
|
10032
|
+
.q-spreadsheet__fnsug-item--on {
|
|
10033
|
+
background: rgb(25 118 210 / 0.1);
|
|
10034
|
+
}
|
|
10035
|
+
.q-spreadsheet__fnsug--fx {
|
|
10036
|
+
position: fixed;
|
|
10037
|
+
z-index: 1320;
|
|
10038
|
+
border: 1px solid var(--border, rgb(0 0 0 / 0.12));
|
|
10039
|
+
border-radius: 8px;
|
|
10040
|
+
box-shadow: 0 10px 26px rgb(0 0 0 / 0.16);
|
|
10041
|
+
}
|
|
10042
|
+
|
|
10043
|
+
/* ─── Virtualisation : rangées d'espacement ─── */
|
|
10044
|
+
.q-spreadsheet__vpad td {
|
|
10045
|
+
padding: 0 !important;
|
|
10046
|
+
border: none !important;
|
|
10047
|
+
}
|
|
10048
|
+
|
|
10049
|
+
/* ─── Onglets de feuilles (classeur multi) ─── */
|
|
10050
|
+
.q-spreadsheet__sheets {
|
|
10051
|
+
display: flex;
|
|
10052
|
+
align-items: flex-end;
|
|
10053
|
+
gap: 2px;
|
|
10054
|
+
padding: 6px 8px 0;
|
|
10055
|
+
overflow-x: auto;
|
|
10056
|
+
background: var(--q-spreadsheet-header-bg);
|
|
10057
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
10058
|
+
user-select: none;
|
|
10059
|
+
}
|
|
10060
|
+
.q-spreadsheet__sheet-tab {
|
|
10061
|
+
display: inline-flex;
|
|
10062
|
+
align-items: center;
|
|
10063
|
+
gap: 6px;
|
|
10064
|
+
max-width: 180px;
|
|
10065
|
+
padding: 5px 10px 6px;
|
|
10066
|
+
border: 1px solid transparent;
|
|
10067
|
+
border-bottom: 0;
|
|
10068
|
+
border-radius: 7px 7px 0 0;
|
|
10069
|
+
background: transparent;
|
|
10070
|
+
color: var(--foreground, #1d1d1d);
|
|
10071
|
+
font-size: 12px;
|
|
10072
|
+
cursor: pointer;
|
|
10073
|
+
white-space: nowrap;
|
|
10074
|
+
}
|
|
10075
|
+
.q-spreadsheet__sheet-tab:hover {
|
|
10076
|
+
background: rgb(0 0 0 / 0.05);
|
|
10077
|
+
}
|
|
10078
|
+
.dark .q-spreadsheet__sheet-tab:hover,
|
|
10079
|
+
.q-spreadsheet--dark .q-spreadsheet__sheet-tab:hover {
|
|
10080
|
+
background: rgb(255 255 255 / 0.08);
|
|
10081
|
+
}
|
|
10082
|
+
.q-spreadsheet__sheet-tab--on {
|
|
10083
|
+
background: var(--card, #fff);
|
|
10084
|
+
border-color: var(--q-spreadsheet-border);
|
|
10085
|
+
color: var(--primary, #1976d2);
|
|
10086
|
+
font-weight: 600;
|
|
10087
|
+
}
|
|
10088
|
+
.dark .q-spreadsheet__sheet-tab--on,
|
|
10089
|
+
.q-spreadsheet--dark .q-spreadsheet__sheet-tab--on {
|
|
10090
|
+
background: var(--card, #1d1d1d);
|
|
10091
|
+
}
|
|
10092
|
+
.q-spreadsheet__sheet-name-label {
|
|
10093
|
+
overflow: hidden;
|
|
10094
|
+
text-overflow: ellipsis;
|
|
10095
|
+
}
|
|
10096
|
+
.q-spreadsheet__sheet-rename {
|
|
10097
|
+
width: 110px;
|
|
10098
|
+
padding: 2px 4px;
|
|
10099
|
+
border: 1px solid var(--primary, #1976d2);
|
|
10100
|
+
border-radius: 4px;
|
|
10101
|
+
background: transparent;
|
|
10102
|
+
color: inherit;
|
|
10103
|
+
font: inherit;
|
|
10104
|
+
font-size: 12px;
|
|
10105
|
+
outline: none;
|
|
10106
|
+
}
|
|
10107
|
+
.q-spreadsheet__sheet-close,
|
|
10108
|
+
.q-spreadsheet__sheet-add {
|
|
10109
|
+
display: inline-flex;
|
|
10110
|
+
align-items: center;
|
|
10111
|
+
justify-content: center;
|
|
10112
|
+
width: 18px;
|
|
10113
|
+
height: 18px;
|
|
10114
|
+
padding: 0;
|
|
10115
|
+
border: 0;
|
|
10116
|
+
border-radius: 4px;
|
|
10117
|
+
background: transparent;
|
|
10118
|
+
color: inherit;
|
|
10119
|
+
cursor: pointer;
|
|
10120
|
+
flex-shrink: 0;
|
|
10121
|
+
}
|
|
10122
|
+
.q-spreadsheet__sheet-close:hover {
|
|
10123
|
+
color: #c62828;
|
|
10124
|
+
background: rgb(198 40 40 / 0.12);
|
|
10125
|
+
}
|
|
10126
|
+
.q-spreadsheet__sheet-close .iconify {
|
|
10127
|
+
font-size: 12px;
|
|
10128
|
+
}
|
|
10129
|
+
.q-spreadsheet__sheet-add {
|
|
10130
|
+
margin: 0 2px 4px;
|
|
10131
|
+
color: #8b93a1;
|
|
10132
|
+
font-size: 15px;
|
|
10133
|
+
}
|
|
10134
|
+
.q-spreadsheet__sheet-add:hover {
|
|
10135
|
+
color: var(--primary, #1976d2);
|
|
10136
|
+
background: rgb(25 118 210 / 0.1);
|
|
10137
|
+
}
|
|
10138
|
+
|
|
10139
|
+
/* ─── Find & Replace ─── */
|
|
10140
|
+
.q-spreadsheet__find {
|
|
10141
|
+
display: flex;
|
|
10142
|
+
align-items: center;
|
|
10143
|
+
gap: 6px;
|
|
10144
|
+
padding: 4px 8px;
|
|
10145
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
10146
|
+
background: rgb(255 251 235);
|
|
10147
|
+
}
|
|
10148
|
+
.dark .q-spreadsheet__find,
|
|
10149
|
+
.q-spreadsheet--dark .q-spreadsheet__find {
|
|
10150
|
+
background: rgb(255 180 0 / 0.08);
|
|
10151
|
+
}
|
|
10152
|
+
.q-spreadsheet__find-icon {
|
|
10153
|
+
flex-shrink: 0;
|
|
10154
|
+
color: #8b93a1;
|
|
10155
|
+
font-size: 15px;
|
|
10156
|
+
}
|
|
10157
|
+
.q-spreadsheet__find-input {
|
|
10158
|
+
min-width: 0;
|
|
10159
|
+
padding: 4px 8px;
|
|
10160
|
+
border: 1px solid var(--q-spreadsheet-border);
|
|
10161
|
+
border-radius: 6px;
|
|
10162
|
+
background: transparent;
|
|
10163
|
+
color: inherit;
|
|
10164
|
+
font: inherit;
|
|
10165
|
+
font-size: 12.5px;
|
|
10166
|
+
outline: none;
|
|
10167
|
+
}
|
|
10168
|
+
.q-spreadsheet__find-input:focus {
|
|
10169
|
+
border-color: var(--primary, #1976d2);
|
|
10170
|
+
}
|
|
10171
|
+
.q-spreadsheet__find-input--repl {
|
|
10172
|
+
flex: 1;
|
|
10173
|
+
}
|
|
10174
|
+
.q-spreadsheet__find-count {
|
|
10175
|
+
font-size: 11.5px;
|
|
10176
|
+
color: #8b93a1;
|
|
10177
|
+
white-space: nowrap;
|
|
10178
|
+
}
|
|
10179
|
+
.q-spreadsheet__find-close {
|
|
10180
|
+
margin-left: 2px;
|
|
10181
|
+
}
|
|
10182
|
+
.q-spreadsheet__cell--find {
|
|
10183
|
+
background-color: rgb(255 235 59 / 0.35) !important;
|
|
10184
|
+
}
|
|
10185
|
+
.q-spreadsheet__cell--find-cur {
|
|
10186
|
+
background-color: rgb(255 214 0 / 0.45) !important;
|
|
10187
|
+
box-shadow: inset 0 0 0 2px #f5b301 !important;
|
|
10188
|
+
}
|
|
10189
|
+
|
|
10190
|
+
/* ─── Wrap text / hauteur auto / fusion / lignes masquées ─── */
|
|
10191
|
+
.q-spreadsheet__cell-text--wrap {
|
|
10192
|
+
white-space: pre-wrap;
|
|
10193
|
+
overflow: visible;
|
|
10194
|
+
text-overflow: clip;
|
|
10195
|
+
word-break: break-word;
|
|
10196
|
+
line-height: 1.35;
|
|
10197
|
+
}
|
|
10198
|
+
.q-spreadsheet__cell--merged {
|
|
10199
|
+
overflow: hidden;
|
|
10200
|
+
}
|
|
10201
|
+
.q-spreadsheet__cell--invalid {
|
|
10202
|
+
box-shadow: inset 0 0 0 2px #ef4444 !important;
|
|
10203
|
+
}
|
|
10204
|
+
|
|
10205
|
+
/* ─── Toolbar actif ─── */
|
|
10206
|
+
.q-spreadsheet__tool--on {
|
|
10207
|
+
color: var(--primary, #1976d2);
|
|
10208
|
+
background: rgb(25 118 210 / 0.14);
|
|
10209
|
+
}
|
|
10210
|
+
|
|
10211
|
+
/* ─── Panneau Conditional formatting ─── */
|
|
10212
|
+
.q-spreadsheet__cf {
|
|
10213
|
+
display: flex;
|
|
10214
|
+
align-items: center;
|
|
10215
|
+
flex-wrap: wrap;
|
|
10216
|
+
gap: 6px;
|
|
10217
|
+
padding: 5px 8px;
|
|
10218
|
+
border-bottom: 1px solid var(--q-spreadsheet-border);
|
|
10219
|
+
background: rgb(239 246 255);
|
|
10220
|
+
font-size: 12.5px;
|
|
10221
|
+
}
|
|
10222
|
+
.dark .q-spreadsheet__cf,
|
|
10223
|
+
.q-spreadsheet--dark .q-spreadsheet__cf {
|
|
10224
|
+
background: rgb(30 58 138 / 0.25);
|
|
10225
|
+
}
|
|
10226
|
+
.q-spreadsheet__cf-title {
|
|
10227
|
+
font-weight: 600;
|
|
10228
|
+
color: var(--primary, #1976d2);
|
|
10229
|
+
}
|
|
10230
|
+
.q-spreadsheet__cf-kind {
|
|
10231
|
+
padding: 4px 6px;
|
|
10232
|
+
border: 1px solid var(--q-spreadsheet-border);
|
|
10233
|
+
border-radius: 6px;
|
|
10234
|
+
background: transparent;
|
|
10235
|
+
color: inherit;
|
|
10236
|
+
font: inherit;
|
|
10237
|
+
font-size: 12px;
|
|
10238
|
+
}
|
|
10239
|
+
.q-spreadsheet__swatches--mini {
|
|
10240
|
+
gap: 3px;
|
|
10241
|
+
padding: 2px;
|
|
10242
|
+
}
|
|
10243
|
+
.q-spreadsheet__swatches--mini .q-spreadsheet__swatch {
|
|
10244
|
+
width: 14px;
|
|
10245
|
+
height: 14px;
|
|
10246
|
+
}
|
|
10247
|
+
.q-spreadsheet__cf-apply {
|
|
10248
|
+
padding: 3px 10px !important;
|
|
10249
|
+
}
|
|
10250
|
+
.q-spreadsheet__cf-list {
|
|
10251
|
+
display: flex;
|
|
10252
|
+
flex-wrap: wrap;
|
|
10253
|
+
gap: 4px;
|
|
10254
|
+
width: 100%;
|
|
10255
|
+
}
|
|
10256
|
+
.q-spreadsheet__cf-chip {
|
|
10257
|
+
display: inline-flex;
|
|
10258
|
+
align-items: center;
|
|
10259
|
+
gap: 4px;
|
|
10260
|
+
padding: 2px 6px;
|
|
10261
|
+
border: 1px solid var(--q-spreadsheet-border);
|
|
10262
|
+
border-radius: 999px;
|
|
10263
|
+
font-size: 11px;
|
|
10264
|
+
}
|
|
10265
|
+
.q-spreadsheet__cf-chip .q-spreadsheet__sheet-close {
|
|
10266
|
+
width: 14px;
|
|
10267
|
+
height: 14px;
|
|
10268
|
+
}
|
|
10269
|
+
.q-spreadsheet__cell--hide,
|
|
10270
|
+
.q-spreadsheet__colhead--hide {
|
|
10271
|
+
display: none;
|
|
10272
|
+
}
|
|
10273
|
+
|
|
10274
|
+
/* ─── Barre d'état + zoom ─── */
|
|
10275
|
+
.q-spreadsheet__status {
|
|
10276
|
+
display: flex;
|
|
10277
|
+
align-items: center;
|
|
10278
|
+
gap: 10px;
|
|
10279
|
+
min-height: 24px;
|
|
10280
|
+
padding: 2px 8px;
|
|
10281
|
+
border-top: 1px solid var(--q-spreadsheet-border);
|
|
10282
|
+
background: var(--q-spreadsheet-header-bg);
|
|
10283
|
+
font-size: 11.5px;
|
|
10284
|
+
color: #8b93a1;
|
|
10285
|
+
user-select: none;
|
|
10286
|
+
}
|
|
10287
|
+
.q-spreadsheet__status-cell {
|
|
10288
|
+
display: inline-flex;
|
|
10289
|
+
align-items: center;
|
|
10290
|
+
gap: 5px;
|
|
10291
|
+
font-weight: 600;
|
|
10292
|
+
color: var(--foreground, #1d1d1d);
|
|
10293
|
+
}
|
|
10294
|
+
.q-spreadsheet__status-item {
|
|
10295
|
+
color: #8b93a1;
|
|
10296
|
+
}
|
|
10297
|
+
.q-spreadsheet__status-stats {
|
|
10298
|
+
font-variant-numeric: tabular-nums;
|
|
10299
|
+
color: var(--primary, #1976d2);
|
|
10300
|
+
}
|
|
10301
|
+
.q-spreadsheet__status-chip {
|
|
10302
|
+
padding: 1px 7px;
|
|
10303
|
+
border-radius: 999px;
|
|
10304
|
+
background: rgb(25 118 210 / 0.12);
|
|
10305
|
+
color: var(--primary, #1976d2);
|
|
10306
|
+
}
|
|
10307
|
+
.q-spreadsheet__status-spacer {
|
|
10308
|
+
flex: 1;
|
|
10309
|
+
}
|
|
10310
|
+
.q-spreadsheet__status-zoom {
|
|
10311
|
+
display: inline-flex;
|
|
10312
|
+
align-items: center;
|
|
10313
|
+
gap: 2px;
|
|
10314
|
+
}
|
|
10315
|
+
.q-spreadsheet__status-zoom .q-spreadsheet__tool {
|
|
10316
|
+
width: 22px;
|
|
10317
|
+
height: 20px;
|
|
10318
|
+
}
|
|
10319
|
+
.q-spreadsheet__status-zoom-pct {
|
|
10320
|
+
min-width: 42px;
|
|
10321
|
+
padding: 2px 4px;
|
|
10322
|
+
border: 1px solid var(--q-spreadsheet-border);
|
|
10323
|
+
border-radius: 4px;
|
|
10324
|
+
background: transparent;
|
|
10325
|
+
color: inherit;
|
|
10326
|
+
font: inherit;
|
|
10327
|
+
font-size: 11px;
|
|
10328
|
+
text-align: center;
|
|
10329
|
+
cursor: pointer;
|
|
10330
|
+
}
|
|
10331
|
+
.q-spreadsheet__status-zoom-pct:hover {
|
|
10332
|
+
color: var(--primary, #1976d2);
|
|
10333
|
+
border-color: var(--primary, #1976d2);
|
|
10334
|
+
}
|
|
10335
|
+
|
|
10336
|
+
/* ─── Scroll animé (smooth) pour la virtualisation ─── */
|
|
10337
|
+
.q-spreadsheet__viewport {
|
|
10338
|
+
scroll-behavior: smooth;
|
|
10339
|
+
}
|
|
10340
|
+
.q-spreadsheet__viewport:focus {
|
|
10341
|
+
outline: none;
|
|
10342
|
+
}
|
|
10343
|
+
@media (prefers-reduced-motion: reduce) {
|
|
10344
|
+
.q-spreadsheet__viewport {
|
|
10345
|
+
scroll-behavior: auto;
|
|
10346
|
+
}
|
|
10347
|
+
}
|
|
10348
|
+
|
|
10349
|
+
/* ─── Onglets de feuilles en bas (Excel) ─── */
|
|
10350
|
+
.q-spreadsheet__sheets--bottom {
|
|
10351
|
+
align-items: flex-start;
|
|
10352
|
+
padding: 0 8px 6px;
|
|
10353
|
+
border-bottom: 0;
|
|
10354
|
+
border-top: 1px solid var(--q-spreadsheet-border);
|
|
10355
|
+
}
|
|
10356
|
+
.q-spreadsheet__sheets--bottom .q-spreadsheet__sheet-tab {
|
|
10357
|
+
border-top: 0;
|
|
10358
|
+
border-bottom: 1px solid transparent;
|
|
10359
|
+
border-radius: 0 0 7px 7px;
|
|
10360
|
+
}
|
|
10361
|
+
.q-spreadsheet__sheets--bottom .q-spreadsheet__sheet-tab--on {
|
|
10362
|
+
border-color: var(--q-spreadsheet-border);
|
|
10363
|
+
}
|
|
10364
|
+
.q-spreadsheet__sheets--bottom .q-spreadsheet__sheet-add {
|
|
10365
|
+
margin: 4px 2px 0;
|
|
10366
|
+
}
|
|
10367
|
+
|
|
10368
|
+
/* ─── Drag & drop réordonner lignes / colonnes ─── */
|
|
10369
|
+
.q-spreadsheet__rownum,
|
|
10370
|
+
.q-spreadsheet__colhead {
|
|
10371
|
+
cursor: grab;
|
|
10372
|
+
}
|
|
10373
|
+
.q-spreadsheet__rownum--drop,
|
|
10374
|
+
.q-spreadsheet__colhead--drop {
|
|
10375
|
+
background: rgb(25 118 210 / 0.22) !important;
|
|
10376
|
+
}
|
|
10377
|
+
|
|
10378
|
+
/* ===== QInteract (drag & resize de widgets) ===== */
|
|
10379
|
+
.q-interact {
|
|
10380
|
+
--q-interact-border: rgb(0 0 0 / 0.1);
|
|
10381
|
+
--q-interact-line: rgb(25 118 210 / 0.14);
|
|
10382
|
+
--q-interact-accent: var(--primary, #1976d2);
|
|
10383
|
+
|
|
10384
|
+
position: relative;
|
|
10385
|
+
width: 100%;
|
|
10386
|
+
overflow: hidden;
|
|
10387
|
+
border: 1px solid var(--q-interact-border);
|
|
10388
|
+
border-radius: 10px;
|
|
10389
|
+
background: rgb(0 0 0 / 0.015);
|
|
10390
|
+
user-select: none;
|
|
10391
|
+
}
|
|
10392
|
+
.q-interact--grid {
|
|
10393
|
+
background-image:
|
|
10394
|
+
linear-gradient(var(--q-interact-line) 1px, transparent 1px),
|
|
10395
|
+
linear-gradient(90deg, var(--q-interact-line) 1px, transparent 1px);
|
|
10396
|
+
background-position: -1px -1px;
|
|
10397
|
+
}
|
|
10398
|
+
.q-interact--static {
|
|
10399
|
+
cursor: default;
|
|
10400
|
+
}
|
|
10401
|
+
.q-interact__item {
|
|
10402
|
+
position: absolute;
|
|
10403
|
+
display: flex;
|
|
10404
|
+
flex-direction: column;
|
|
10405
|
+
border: 1px solid var(--q-interact-border);
|
|
10406
|
+
border-radius: 8px;
|
|
10407
|
+
background: var(--card, #fff);
|
|
10408
|
+
box-shadow: 0 1px 3px rgb(0 0 0 / 0.08);
|
|
10409
|
+
cursor: grab;
|
|
10410
|
+
touch-action: none;
|
|
10411
|
+
}
|
|
10412
|
+
.q-interact__item--active {
|
|
10413
|
+
border-color: var(--q-interact-accent);
|
|
10414
|
+
box-shadow: 0 0 0 1.5px var(--q-interact-accent), 0 6px 18px rgb(0 0 0 / 0.12);
|
|
10415
|
+
z-index: 10;
|
|
10416
|
+
}
|
|
10417
|
+
.q-interact__item--dragging,
|
|
10418
|
+
.q-interact__item--resizing {
|
|
10419
|
+
z-index: 11;
|
|
10420
|
+
cursor: grabbing;
|
|
10421
|
+
box-shadow: 0 12px 26px rgb(0 0 0 / 0.18);
|
|
10422
|
+
}
|
|
10423
|
+
.q-interact__handle {
|
|
10424
|
+
display: flex;
|
|
10425
|
+
align-items: center;
|
|
10426
|
+
gap: 6px;
|
|
10427
|
+
padding: 5px 10px;
|
|
10428
|
+
font-size: 12px;
|
|
10429
|
+
font-weight: 600;
|
|
10430
|
+
color: var(--foreground, #1d1d1d);
|
|
10431
|
+
border-bottom: 1px solid var(--q-interact-border);
|
|
10432
|
+
background: rgb(0 0 0 / 0.03);
|
|
10433
|
+
cursor: grab;
|
|
10434
|
+
}
|
|
10435
|
+
.q-interact--dense .q-interact__handle {
|
|
10436
|
+
padding: 3px 8px;
|
|
10437
|
+
font-size: 11px;
|
|
10438
|
+
}
|
|
10439
|
+
.q-interact__grip {
|
|
10440
|
+
display: inline-flex;
|
|
10441
|
+
color: #8b93a1;
|
|
10442
|
+
}
|
|
10443
|
+
.q-interact__content {
|
|
10444
|
+
flex: 1;
|
|
10445
|
+
min-height: 0;
|
|
10446
|
+
overflow: hidden;
|
|
10447
|
+
}
|
|
10448
|
+
.q-interact__default {
|
|
10449
|
+
padding: 12px;
|
|
10450
|
+
font-size: 13px;
|
|
10451
|
+
}
|
|
10452
|
+
.q-interact__resize {
|
|
10453
|
+
position: absolute;
|
|
10454
|
+
right: 0;
|
|
10455
|
+
bottom: 0;
|
|
10456
|
+
z-index: 2;
|
|
10457
|
+
width: 18px;
|
|
10458
|
+
height: 18px;
|
|
10459
|
+
cursor: nwse-resize;
|
|
10460
|
+
}
|
|
10461
|
+
.q-interact__resize::after {
|
|
10462
|
+
content: "";
|
|
10463
|
+
position: absolute;
|
|
10464
|
+
right: 3px;
|
|
10465
|
+
bottom: 3px;
|
|
10466
|
+
width: 8px;
|
|
10467
|
+
height: 8px;
|
|
10468
|
+
border-right: 2px solid var(--q-interact-accent);
|
|
10469
|
+
border-bottom: 2px solid var(--q-interact-accent);
|
|
10470
|
+
opacity: 0.55;
|
|
10471
|
+
}
|
|
10472
|
+
.q-interact__item:hover .q-interact__resize::after {
|
|
10473
|
+
opacity: 1;
|
|
10474
|
+
}
|
|
10475
|
+
.q-interact--dark {
|
|
10476
|
+
--q-interact-border: rgb(255 255 255 / 0.12);
|
|
10477
|
+
background: rgb(255 255 255 / 0.02);
|
|
10478
|
+
}
|
|
10479
|
+
.q-interact--dark .q-interact__item {
|
|
10480
|
+
background: var(--card, #1d1d1d);
|
|
10481
|
+
color: #ececef;
|
|
10482
|
+
}
|
|
10483
|
+
.q-interact--dark .q-interact__handle {
|
|
10484
|
+
background: rgb(255 255 255 / 0.05);
|
|
10485
|
+
}
|
|
10486
|
+
|
|
10487
|
+
/* ===== QBoard (dashboard type Power BI) ===== */
|
|
10488
|
+
.q-board {
|
|
10489
|
+
--q-board-line: rgb(25 118 210 / 0.12);
|
|
10490
|
+
--q-board-label: rgb(139 147 161 / 0.6);
|
|
10491
|
+
|
|
10492
|
+
position: relative;
|
|
10493
|
+
width: 100%;
|
|
10494
|
+
border: 1px solid var(--q-interact-border, rgb(0 0 0 / 0.1));
|
|
10495
|
+
border-radius: 10px;
|
|
10496
|
+
background: rgb(0 0 0 / 0.02);
|
|
10497
|
+
overflow: hidden;
|
|
10498
|
+
}
|
|
10499
|
+
.q-board__grid {
|
|
10500
|
+
position: absolute;
|
|
10501
|
+
inset: 0;
|
|
10502
|
+
background-image:
|
|
10503
|
+
linear-gradient(var(--q-board-line) 1px, transparent 1px),
|
|
10504
|
+
linear-gradient(90deg, var(--q-board-line) 1px, transparent 1px);
|
|
10505
|
+
background-position: -1px -1px;
|
|
10506
|
+
pointer-events: none;
|
|
10507
|
+
}
|
|
10508
|
+
.q-board__cell-label {
|
|
10509
|
+
position: absolute;
|
|
10510
|
+
display: flex;
|
|
10511
|
+
align-items: center;
|
|
10512
|
+
justify-content: center;
|
|
10513
|
+
font-size: 10px;
|
|
10514
|
+
color: var(--q-board-label);
|
|
10515
|
+
user-select: none;
|
|
10516
|
+
}
|
|
10517
|
+
.q-board__cell-label--col {
|
|
10518
|
+
top: 2px;
|
|
10519
|
+
}
|
|
10520
|
+
.q-board__cell-label--row {
|
|
10521
|
+
left: 3px;
|
|
10522
|
+
}
|
|
10523
|
+
.q-board__interact {
|
|
10524
|
+
position: absolute !important;
|
|
10525
|
+
inset: 0 !important;
|
|
10526
|
+
width: 100% !important;
|
|
10527
|
+
height: 100% !important;
|
|
10528
|
+
border: 0 !important;
|
|
10529
|
+
border-radius: 0 !important;
|
|
10530
|
+
background: transparent !important;
|
|
10531
|
+
box-shadow: none !important;
|
|
10532
|
+
}
|
|
10533
|
+
.q-board--dark {
|
|
10534
|
+
--q-board-line: rgb(255 255 255 / 0.1);
|
|
10535
|
+
background: rgb(255 255 255 / 0.02);
|
|
10536
|
+
}
|
|
10537
|
+
.q-board--dense .q-board__cell-label {
|
|
10538
|
+
font-size: 9px;
|
|
10539
|
+
}
|