@poirazis/supercomponents-shared 1.2.16 → 1.2.18

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 (31) hide show
  1. package/dist/index.js +17703 -22317
  2. package/dist/index.umd.cjs +19 -19
  3. package/package.json +11 -11
  4. package/src/lib/SuperButton/SuperButton.svelte +57 -22
  5. package/src/lib/SuperField/SuperField.svelte +0 -2
  6. package/src/lib/SuperForm/InnerForm.svelte +7 -8
  7. package/src/lib/SuperTable/SuperTable.css +13 -6
  8. package/src/lib/SuperTable/SuperTable.svelte +26 -15
  9. package/src/lib/SuperTable/constants.js +1 -1
  10. package/src/lib/SuperTable/controls/RowButtonsColumn.svelte +33 -17
  11. package/src/lib/SuperTable/controls/SelectionColumn.svelte +2 -2
  12. package/src/lib/SuperTableCells/CellBoolean.svelte +52 -45
  13. package/src/lib/SuperTableCells/CellDatetime.svelte +268 -120
  14. package/src/lib/SuperTableCells/CellLink.svelte +16 -7
  15. package/src/lib/SuperTableCells/CellLinkPickerSelect.svelte +28 -24
  16. package/src/lib/SuperTableCells/CellLinkPickerTree.svelte +22 -20
  17. package/src/lib/SuperTableCells/CellNumber.svelte +55 -53
  18. package/src/lib/SuperTableCells/CellOptions.svelte +59 -32
  19. package/src/lib/SuperTableCells/CellOptionsAdvanced.svelte +131 -129
  20. package/src/lib/SuperTableCells/CellSQLLink.svelte +32 -32
  21. package/src/lib/SuperTableCells/CellSQLLinkPicker.svelte +2 -7
  22. package/src/lib/SuperTableCells/CellString.svelte +49 -47
  23. package/src/lib/SuperTableCells/CellStringMask.svelte +41 -40
  24. package/src/lib/SuperTableColumn/SuperTableColumn.svelte +2 -0
  25. package/src/lib/SuperTableColumn/parts/SuperColumnBody.svelte +3 -0
  26. package/src/lib/SuperTableColumn/parts/SuperColumnHeader.svelte +44 -42
  27. package/src/lib/SuperTableColumn/parts/SuperColumnRow.svelte +1 -1
  28. package/src/lib/SuperTabs/SuperTabs.svelte +33 -17
  29. package/src/lib/UI/elements/Checkbox.svelte +68 -10
  30. package/src/lib/UI/elements/Switch.svelte +162 -0
  31. package/src/lib/UI/elements/Tooltip.svelte +15 -43
@@ -4,6 +4,7 @@
4
4
  import SuperPopover from "../SuperPopover/SuperPopover.svelte";
5
5
  import SuperList from "../SuperList/SuperList.svelte";
6
6
  import CellSkeleton from "./CellSkeleton.svelte";
7
+ import Switch from "../UI/elements/Switch.svelte";
7
8
  import "./CellCommon.css";
8
9
  const dispatch = createEventDispatcher();
9
10
  const { API, QueryUtils, fetchData, memo, derivedMemo, builderStore } =
@@ -14,7 +15,6 @@
14
15
  export let fieldSchema;
15
16
  export let multi = true;
16
17
  export let autofocus;
17
- export let label;
18
18
 
19
19
  let anchor;
20
20
  let editor;
@@ -386,128 +386,126 @@
386
386
  on:focusout={cellState.focusout}
387
387
  on:keydown={editorState.handleKeyboard}
388
388
  >
389
- {#if loading}
390
- <CellSkeleton />
391
- {:else}
392
- {#key controlType}
393
- {#if controlType == "list"}
394
- <SuperList
395
- items={localValue}
396
- itemsColors={$colors}
397
- itemsLabels={labels}
398
- showColors={cellOptions.optionsViewMode != "text"}
399
- reorderOnly={cellOptions.reorderOnly}
400
- placeholder={cellOptions.placeholder}
401
- readonly={cellOptions.readonly || cellOptions.disabled}
402
- {editorState}
403
- {cellState}
404
- {fullSelection}
405
- bind:inactive
406
- on:togglePicker={editorState.toggle}
407
- on:clear={() => {
408
- localValue = [];
409
- editorState.close();
410
- anchor.focus();
411
- }}
412
- on:change={(e) => {
413
- localValue = [...e.detail];
414
- anchor.focus();
415
- }}
416
- />
417
- {:else if radios == true}
418
- <div
419
- class="radios"
420
- class:inline={role == "inlineInput"}
421
- class:column={direction == "column"}
422
- on:mouseleave={() => (focusedOptionIdx = -1)}
423
- >
424
- {#each $options as option, idx}
425
- <div
426
- class="radio"
427
- class:selected={localValue?.includes(option)}
428
- class:focused={focusedOptionIdx === idx}
429
- on:mousedown={(e) => editorState.toggleOption(idx)}
430
- on:mouseenter={() => (focusedOptionIdx = idx)}
431
- >
432
- <i
433
- style:color={$colors[option]}
434
- class={radios && localValue.includes(option)
435
- ? "ph-fill ph-radio-button"
436
- : radios
437
- ? "ph ph-circle"
438
- : localValue.includes(option)
439
- ? "ph-fill ph-check-square"
440
- : "ph ph-square"}
441
- ></i>
442
- {labels[option] || option}
443
- </div>
444
- {/each}
445
- </div>
446
- {:else if isButtons == true}
447
- <div class="buttons">
448
- {#each $options as option, idx}
449
- <div
450
- class="button"
451
- class:selected={localValue?.includes(option)}
452
- style:--option-color={$colors[option]}
453
- on:click={() => editorState.toggleOption(idx)}
454
- >
455
- {labels[option] || option}
456
- </div>
457
- {/each}
458
- </div>
459
- {:else if controlType == "switch"}
460
- <div
461
- class="switches"
462
- class:inline={role == "inlineInput"}
463
- class:column={cellOptions.direction == "column"}
464
- on:mouseleave={() => (focusedOptionIdx = -1)}
465
- >
466
- {#if cellOptions.toggleAll}
467
- <div
468
- class="switch toggle-all"
469
- on:click={editorState.toggleAll}
470
- on:mouseenter={() => (focusedOptionIdx = -1)}
471
- >
472
- <div class="text">All</div>
473
- {#if !(readonly || disabled)}
474
- <div class="spectrum-Switch spectrum-Switch--emphasized">
475
- <input
389
+ {#key loading}
390
+ {#if loading}
391
+ <CellSkeleton />
392
+ {:else}
393
+ {#key controlType}
394
+ {#if controlType == "list"}
395
+ <SuperList
396
+ items={localValue}
397
+ itemsColors={$colors}
398
+ itemsLabels={labels}
399
+ showColors={cellOptions.optionsViewMode != "text"}
400
+ reorderOnly={cellOptions.reorderOnly}
401
+ placeholder={cellOptions.placeholder}
402
+ readonly={cellOptions.readonly || cellOptions.disabled}
403
+ {editorState}
404
+ {cellState}
405
+ {fullSelection}
406
+ bind:inactive
407
+ on:togglePicker={editorState.toggle}
408
+ on:clear={() => {
409
+ localValue = [];
410
+ editorState.close();
411
+ anchor.focus();
412
+ }}
413
+ on:change={(e) => {
414
+ localValue = [...e.detail];
415
+ anchor.focus();
416
+ }}
417
+ />
418
+ {:else if radios == true}
419
+ <div
420
+ class="radios"
421
+ class:inline={role == "inlineInput"}
422
+ class:column={direction == "column"}
423
+ on:mouseleave={() => (focusedOptionIdx = -1)}
424
+ >
425
+ {#each $options as option, idx}
426
+ <div
427
+ class="radio"
428
+ class:selected={localValue?.includes(option)}
429
+ class:focused={focusedOptionIdx === idx}
430
+ on:mousedown={(e) => editorState.toggleOption(idx)}
431
+ on:mouseenter={() => (focusedOptionIdx = idx)}
432
+ >
433
+ <i
434
+ style:color={$colors[option]}
435
+ class={radios && localValue.includes(option)
436
+ ? "ph-fill ph-radio-button"
437
+ : radios
438
+ ? "ph ph-circle"
439
+ : localValue.includes(option)
440
+ ? "ph-fill ph-check-square"
441
+ : "ph ph-square"}
442
+ ></i>
443
+ {labels[option] || option}
444
+ </div>
445
+ {/each}
446
+ </div>
447
+ {:else if isButtons == true}
448
+ <div class="buttons">
449
+ {#each $options as option, idx}
450
+ <div
451
+ class="button"
452
+ class:selected={localValue?.includes(option)}
453
+ style:--option-color={$colors[option]}
454
+ on:click={() => editorState.toggleOption(idx)}
455
+ >
456
+ {labels[option] || option}
457
+ </div>
458
+ {/each}
459
+ </div>
460
+ {:else if controlType == "switch"}
461
+ <div
462
+ class="switches"
463
+ class:inline={role == "inlineInput"}
464
+ class:column={cellOptions.direction == "column"}
465
+ on:mouseleave={() => (focusedOptionIdx = -1)}
466
+ >
467
+ {#if cellOptions.toggleAll}
468
+ <div
469
+ class="switch toggle-all"
470
+ on:mouseenter={() => (focusedOptionIdx = -1)}
471
+ >
472
+ <div class="text">All</div>
473
+ {#if !(readonly || disabled)}
474
+ <Switch
476
475
  checked={allSelected}
477
- type="checkbox"
478
- class="spectrum-Switch-input"
476
+ disabled={readonly || disabled}
477
+ size="small"
478
+ on:change={() => editorState.toggleAll()}
479
479
  />
480
- <span class="spectrum-Switch-switch"></span>
480
+ {/if}
481
+ </div>
482
+ {/if}
483
+ {#each $options as option, idx (idx)}
484
+ <div
485
+ class="switch"
486
+ class:selected={localValue.includes(option)}
487
+ class:focused={focusedOptionIdx === idx}
488
+ style:--option-color={$colors[option]}
489
+ on:mouseenter={() => (focusedOptionIdx = idx)}
490
+ on:click|stopPropagation={() => editorState.toggleOption(idx)}
491
+ >
492
+ <i class={optionIcons[option] || "no-icon"}></i>
493
+ <div class="text">
494
+ {labels[option] || option}
481
495
  </div>
482
- {/if}
483
- </div>
484
- {/if}
485
- {#each $options as option, idx (idx)}
486
- <div
487
- class="switch"
488
- class:selected={localValue.includes(option)}
489
- class:focused={focusedOptionIdx === idx}
490
- style:--option-color={$colors[option]}
491
- on:click={(e) => editorState.toggleOption(idx)}
492
- on:mouseenter={() => (focusedOptionIdx = idx)}
493
- >
494
- <i class={optionIcons[option] || "no-icon"}></i>
495
- <div class="text">{labels[option] || option}</div>
496
- <div class="spectrum-Switch spectrum-Switch--emphasized">
497
- <input
496
+ <Switch
498
497
  checked={localValue.includes(option)}
499
- type="checkbox"
500
- class="spectrum-Switch-input"
501
- id={idx}
498
+ disabled={readonly || disabled}
499
+ size="small"
500
+ on:change={() => editorState.toggleOption(idx)}
502
501
  />
503
- <span class="spectrum-Switch-switch small"> </span>
504
502
  </div>
505
- </div>
506
- {/each}
507
- </div>
508
- {/if}
509
- {/key}
510
- {/if}
503
+ {/each}
504
+ </div>
505
+ {/if}
506
+ {/key}
507
+ {/if}
508
+ {/key}
511
509
  </div>
512
510
 
513
511
  <!-- svelte-ignore a11y-no-static-element-interactions -->
@@ -604,7 +602,7 @@
604
602
  flex: auto;
605
603
  display: flex;
606
604
  flex-wrap: wrap;
607
- gap: 0.5rem;
605
+ gap: 0.25rem;
608
606
  justify-items: flex-start;
609
607
  }
610
608
 
@@ -612,34 +610,40 @@
612
610
  flex-direction: column;
613
611
  gap: 0.25rem;
614
612
  }
615
- .buttons .button {
613
+ .buttons > .button {
616
614
  flex: none;
617
615
  display: flex;
618
616
  align-items: center;
619
617
  justify-content: center;
620
618
  padding: 0.25rem 0.75rem;
621
- border: 1px solid var(--spectrum-global-color-gray-300);
622
- border-radius: 4px;
623
- background-color: var(--spectrum-global-color-gray-75);
619
+ border: 1px solid var(--spectrum-global-color-gray-400);
620
+ border-radius: 0.5rem;
621
+ background-color: var(--spectrum-global-color-gray-100);
624
622
  color: var(--spectrum-global-color-gray-600);
625
623
  cursor: pointer;
626
624
  user-select: none;
627
- font-size: 12px;
628
- font-weight: 500;
625
+ font-weight: 400;
629
626
  transition: all 0.15s ease-in-out;
630
627
  white-space: nowrap;
631
628
  text-overflow: ellipsis;
632
629
  overflow: hidden;
633
630
  max-width: 100%;
634
631
  gap: 0.35rem;
632
+ max-height: 1.75rem;
635
633
  }
636
634
 
637
635
  .button:hover {
638
- background-color: var(--spectrum-global-color-gray-100);
636
+ background-color: var(--spectrum-global-color-gray-300);
639
637
  border-color: var(--spectrum-global-color-gray-300);
640
- color: var(--spectrum-global-color-gray-700);
638
+ color: var(--spectrum-global-color-gray-800);
641
639
  cursor: pointer;
642
640
  }
641
+
642
+ .button:active {
643
+ border-color: var(--spectrum-global-color-gray-500);
644
+ color: var(--spectrum-global-color-gray-800);
645
+ }
646
+
643
647
  .button.selected {
644
648
  background-color: var(
645
649
  --option-color,
@@ -703,9 +707,7 @@
703
707
  }
704
708
 
705
709
  .switches.inline {
706
- border: 1px solid var(--spectrum-global-color-gray-300);
707
- border-radius: 4px;
708
- padding: 0.25rem 0.25rem;
710
+ padding: 0rem;
709
711
  }
710
712
 
711
713
  .switches.inline > .switch {
@@ -108,9 +108,7 @@
108
108
  $: pills = cellOptions.relViewMode == "pills";
109
109
  $: ownId = ownId || cellOptions?.ownId;
110
110
 
111
- $: if (!isLoading) {
112
- localValue = enrichValue(value);
113
- }
111
+ $: localValue = enrichValue(value);
114
112
 
115
113
  $: inEdit = $cellState == "Editing";
116
114
  $: isDirty = inEdit && originalValue != JSON.stringify(localValue);
@@ -246,36 +244,38 @@
246
244
  {/if}
247
245
 
248
246
  <div class="value" class:placeholder={localValue?.length < 1}>
249
- {#if localValue?.length < 1}
250
- <span> {placeholder} </span>
251
- {:else if pills}
252
- <div
253
- class="items"
254
- class:pills
255
- class:withCount={localValue.length > 5}
256
- class:inEdit
257
- >
258
- {#each localValue as val, idx}
259
- {#if idx < 5}
260
- <div class="item">
261
- <span>{val.primaryDisplay}</span>
262
- </div>
247
+ {#key localValue}
248
+ {#if localValue?.length < 1}
249
+ <span> {placeholder} </span>
250
+ {:else if pills}
251
+ <div
252
+ class="items"
253
+ class:pills
254
+ class:withCount={localValue.length > 5}
255
+ class:inEdit
256
+ >
257
+ {#each localValue as val, idx}
258
+ {#if idx < 5}
259
+ <div class="item">
260
+ <span>{val.primaryDisplay}</span>
261
+ </div>
262
+ {/if}
263
+ {/each}
264
+ {#if localValue.length > 5}
265
+ <span class="count">
266
+ (+ {localValue.length - 5})
267
+ </span>
263
268
  {/if}
264
- {/each}
265
- {#if localValue.length > 5}
266
- <span class="count">
267
- (+ {localValue.length - 5})
268
- </span>
269
- {/if}
270
- </div>
271
- {:else}
272
- <span>
273
- {#if cellOptions.role == "formInput" && localValue.length > 1}
274
- ({localValue.length})
275
- {/if}
276
- {localValue.map((v) => v.primaryDisplay).join(", ")}
277
- </span>
278
- {/if}
269
+ </div>
270
+ {:else}
271
+ <span>
272
+ {#if cellOptions.role == "formInput" && localValue.length > 1}
273
+ ({localValue.length})
274
+ {/if}
275
+ {localValue.map((v) => v.primaryDisplay).join(", ")}
276
+ </span>
277
+ {/if}
278
+ {/key}
279
279
  </div>
280
280
  {#if !readonly && (cellOptions.role == "formInput" || inEdit)}
281
281
  <i class="ph ph-caret-down control-icon"></i>
@@ -348,7 +348,7 @@
348
348
  </div>
349
349
  {/each}
350
350
 
351
- {#if $optionsFetch && $optionsFetch.loaded}
351
+ {#if $optionsFetch}
352
352
  <!-- Unselected rows -->
353
353
  {#key localValue.length}
354
354
  {#each $optionsFetch.rows as row, idx (row[relatedField])}
@@ -370,14 +370,9 @@
370
370
  {#if $optionsFetch?.loading}
371
371
  <div class="option loading">
372
372
  <i class="ri-loader-2-line rotating"></i>
373
- Loading more...
373
+ Loading...
374
374
  </div>
375
375
  {/if}
376
- {:else if $optionsFetch?.loading && !$optionsFetch.loaded}
377
- <div class="option loading">
378
- <i class="ri-loader-2-line rotating"></i>
379
- Loading...
380
- </div>
381
376
  {:else}
382
377
  <div class="option">No Results Found</div>
383
378
  {/if}
@@ -38,7 +38,6 @@
38
38
  $: ({
39
39
  controlType,
40
40
  role,
41
- disabled,
42
41
  readonly,
43
42
  error: optionError,
44
43
  icon: optionIcon,
@@ -60,6 +59,7 @@
60
59
  : (value ?? undefined);
61
60
  $: placeholder = placeholderText ?? "";
62
61
  $: textarea = controlType === "textarea";
62
+ $: disabled = cellOptions?.disabled;
63
63
 
64
64
  // Reset when value changes externally
65
65
  $: cellState.reset(value);
@@ -201,54 +201,56 @@
201
201
  style:background
202
202
  on:focusin={cellState.focus}
203
203
  >
204
- {#if icon && !textarea}
205
- <i class={icon + " field-icon"} class:with-error={error}></i>
206
- {/if}
207
- {#if inEdit}
208
- {#if textarea}
209
- <textarea
210
- tabindex="0"
211
- class:placeholder={!value && !formattedValue && !localValue}
212
- placeholder={cellOptions?.placeholder ?? ""}
213
- value={localValue ?? ""}
214
- on:input={cellState.debounce}
215
- on:focusout={cellState.focusout}
216
- on:keydown={cellState.handleKeyboard}
217
- use:focus
218
- ></textarea>
204
+ {#key inEdit}
205
+ {#if icon && !textarea}
206
+ <i class={icon + " field-icon"} class:with-error={error}></i>
207
+ {/if}
208
+ {#if inEdit}
209
+ {#if textarea}
210
+ <textarea
211
+ tabindex="0"
212
+ class:placeholder={!value && !formattedValue && !localValue}
213
+ placeholder={cellOptions?.placeholder ?? ""}
214
+ value={localValue ?? ""}
215
+ on:input={cellState.debounce}
216
+ on:focusout={cellState.focusout}
217
+ on:keydown={cellState.handleKeyboard}
218
+ use:focus
219
+ ></textarea>
220
+ {:else}
221
+ <input
222
+ tabindex="0"
223
+ class="editor"
224
+ class:placeholder={!value && !formattedValue && !localValue}
225
+ value={localValue ?? ""}
226
+ placeholder={cellOptions?.placeholder ?? ""}
227
+ style:text-align={cellOptions.align == "center"
228
+ ? "center"
229
+ : cellOptions.align == "flex-end"
230
+ ? "right"
231
+ : "left"}
232
+ on:input={cellState.debounce}
233
+ on:focusout={cellState.focusout}
234
+ on:keydown={cellState.handleKeyboard}
235
+ use:focus
236
+ />
237
+ <i
238
+ class="ri-close-line clear-icon"
239
+ class:visible={localValue && cellOptions?.clearIcon !== false}
240
+ on:mousedown|self|preventDefault={cellState.clear}
241
+ ></i>
242
+ {/if}
219
243
  {:else}
220
- <input
221
- tabindex="0"
222
- class="editor"
223
- class:placeholder={!value && !formattedValue && !localValue}
224
- value={localValue ?? ""}
225
- placeholder={cellOptions?.placeholder ?? ""}
226
- style:text-align={cellOptions.align == "center"
227
- ? "center"
228
- : cellOptions.align == "flex-end"
229
- ? "right"
230
- : "left"}
231
- on:input={cellState.debounce}
232
- on:focusout={cellState.focusout}
233
- on:keydown={cellState.handleKeyboard}
234
- use:focus
235
- />
236
- <i
237
- class="ri-close-line clear-icon"
238
- class:visible={localValue && cellOptions?.clearIcon !== false}
239
- on:mousedown|self|preventDefault={cellState.clear}
240
- ></i>
244
+ <div
245
+ class="value"
246
+ class:textarea
247
+ class:placeholder={!value && !formattedValue}
248
+ style:justify-content={cellOptions.align}
249
+ >
250
+ <span>{formattedValue || value || placeholder}</span>
251
+ </div>
241
252
  {/if}
242
- {:else}
243
- <div
244
- class="value"
245
- class:textarea
246
- class:placeholder={!value && !formattedValue}
247
- style:justify-content={cellOptions.align}
248
- >
249
- <span>{formattedValue || value || placeholder}</span>
250
- </div>
251
- {/if}
253
+ {/key}
252
254
  </div>
253
255
 
254
256
  <style>
@@ -354,49 +354,50 @@
354
354
  : cellOptions.background}
355
355
  style:font-weight={cellOptions.fontWeight}
356
356
  >
357
- {#if icon}
358
- <i class={icon + " field-icon"} class:with-error={error}></i>
359
- {/if}
357
+ {#key $cellState}
358
+ {#if icon}
359
+ <i class={icon + " field-icon"} class:with-error={error}></i>
360
+ {/if}
360
361
 
361
- {#if inEdit}
362
- <input
363
- bind:this={inputElement}
364
- tabindex="0"
365
- class="editor"
366
- {placeholder}
367
- style:color={!isComplete
368
- ? "var(--spectrum-global-color-gray-700)"
369
- : cellOptions.color}
370
- style:text-align={cellOptions.align == "center"
371
- ? "center"
372
- : cellOptions.align == "flex-end"
373
- ? "right"
374
- : "left"}
375
- style:padding-right={cellOptions.align != "flex-start"
376
- ? "2rem"
377
- : "0.75rem"}
378
- on:focusout={cellState.focusout}
379
- on:keydown={cellState.handleKeyboard}
380
- use:focus
381
- use:initIMask={mask}
382
- />
383
- {#if localValue && cellOptions?.clearIcon !== false}
362
+ {#if inEdit}
363
+ <input
364
+ bind:this={inputElement}
365
+ tabindex="0"
366
+ class="editor"
367
+ {placeholder}
368
+ style:color={!isComplete
369
+ ? "var(--spectrum-global-color-gray-700)"
370
+ : cellOptions.color}
371
+ style:text-align={cellOptions.align == "center"
372
+ ? "center"
373
+ : cellOptions.align == "flex-end"
374
+ ? "right"
375
+ : "left"}
376
+ style:padding-right={cellOptions.align != "flex-start"
377
+ ? "2rem"
378
+ : "0.75rem"}
379
+ on:focusout={cellState.focusout}
380
+ on:keydown={cellState.handleKeyboard}
381
+ use:focus
382
+ use:initIMask={mask}
383
+ />
384
384
  <i
385
- class="ri-close-line clearIcon"
385
+ class="ri-close-line clear-icon"
386
+ class:visible={localValue && cellOptions?.clearIcon !== false}
386
387
  on:mousedown|self|preventDefault={cellState.clear}
387
388
  ></i>
389
+ {:else}
390
+ <div
391
+ class="value"
392
+ tabindex={cellOptions.readonly || cellOptions.disabled ? "-1" : "0"}
393
+ class:placeholder={!value}
394
+ style:justify-content={cellOptions.align}
395
+ on:focusin={cellState.focus}
396
+ >
397
+ <span>
398
+ {displayValue || placeholder}
399
+ </span>
400
+ </div>
388
401
  {/if}
389
- {:else}
390
- <div
391
- class="value"
392
- tabindex={cellOptions.readonly || cellOptions.disabled ? "-1" : "0"}
393
- class:placeholder={!value}
394
- style:justify-content={cellOptions.align}
395
- on:focusin={cellState.focus}
396
- >
397
- <span>
398
- {displayValue || placeholder}
399
- </span>
400
- </div>
401
- {/if}
402
+ {/key}
402
403
  </div>
@@ -192,6 +192,7 @@
192
192
  startResizing(e) {
193
193
  e.stopPropagation();
194
194
  e.preventDefault();
195
+ stbAPI.startResize();
195
196
  resizing = true;
196
197
  startPoint = e.clientX;
197
198
  startWidth = viewport.clientWidth;
@@ -203,6 +204,7 @@
203
204
  stopResizing(e) {
204
205
  e.preventDefault();
205
206
  e.stopPropagation();
207
+ stbAPI.endResize();
206
208
  resizing = false;
207
209
  startPoint = undefined;
208
210
  width = $lockWidth;