@likable-hair/svelte 3.3.8 → 3.3.10

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.
@@ -6,7 +6,7 @@ import { fly } from "svelte/transition";
6
6
  import { cubicIn } from "svelte/easing";
7
7
  import MenuOrDrawer from "./MenuOrDrawer.svelte";
8
8
  import "./QuickActions.css";
9
- export let selectedItems, showSelectContainer, isSelectedAll, totalRows, slotSelectActionsContainer, disabled, loading, actionsForSelectedItems, position = "top";
9
+ export let selectedItems, showSelectContainer, isSelectedAll, totalRows, slotSelectActionsContainer, disabled, loading, actionsForSelectedItems, position = "top", lang = "en";
10
10
  let actions = [], extraActions = [], moreActionsActivator, openMoreActions = false, infoActivators = {}, disabledInfoActivators = {};
11
11
  $: {
12
12
  if (!!slotSelectActionsContainer) {
@@ -32,7 +32,7 @@ $: {
32
32
  >
33
33
  <div>
34
34
  <button class="select-info" on:click={() => (selectedItems = [], infoActivators = {}, disabledInfoActivators = {})}>
35
- {!!isSelectedAll ? totalRows : selectedItems.length} items selected
35
+ {!!isSelectedAll ? totalRows : selectedItems.length} {lang == 'en' ? 'items selected' : 'righe selezionate'}
36
36
  <Icon name="mdi-close" />
37
37
  </button>
38
38
  </div>
@@ -125,7 +125,7 @@ $: {
125
125
  >
126
126
  <div class="action">
127
127
  <Icon name="mdi-dots-vertical" />
128
- More
128
+ {lang == 'en' ? 'More' : 'Altri'}
129
129
  </div>
130
130
  </Button>
131
131
  </div>
@@ -23,6 +23,7 @@ declare const __propDef: {
23
23
  loading: boolean;
24
24
  actionsForSelectedItems: Action[];
25
25
  position?: "bottom" | "top" | undefined;
26
+ lang?: "it" | "en" | undefined;
26
27
  };
27
28
  events: {
28
29
  [evt: string]: CustomEvent<any>;
@@ -61,10 +61,12 @@ const [send, receive] = crossfade({
61
61
  let clazz = {};
62
62
  export { clazz as class };
63
63
  const dispatch = createEventDispatcher();
64
- export let headers = [], headersToShowInTable = headers, subHeaders = [], customizeHeaders = false, rows = [], sortedBy = void 0, sortDirection = "asc", cellEdit = false, noItemsText = "No items to show", showSelect = false, showSelectContainer = true, selectMode = "single", selectedItems = [], showExpand = false, loading = false, disabled = false, filters = [], searchBarColumns = void 0, searchBarVisible = false, searchBarPlaceholder = "Type to search for identification code, description and MRN...", filtersVisible = false, quickFiltersVisible = false, lang = "en", editFilterMode = "one-edit", showActiveFilters = true, quickFilters = [], actionsForSelectedItems = [], hasMoreToLoad = false, totalRows = rows.length, searchText = void 0, renderedRowsNumber = 100, sectionRowsNumber = 20, sectionTreshold = 2, backwardTresholdPixel = 100, forwardTresholdPixel = 100;
65
- let openCellEditor = false, cellEditorActivator, cellEditorContainer, menuElementCellEditor, menuElementQuickFilters, cellEditorInfoActive, saveEditDisabled = false, searchBarInput = void 0, openQuickFilter = false, quickFilterActivator, quickFilterActive, globalBuilder = new FilterBuilder(), slotSelectActionsContainer, isSelectedAll = false, calendarOpened = false, calendarOpened2 = false, selectedIndexes = [], cellEditorIndexRow, cellEditorIndexHeader, cellEditorSubItem, currentSectionNumber = 0, tableBody, tableContainer, userScrolling = true;
64
+ export let headers = [], headersToShowInTable = headers, subHeaders = [], customizeHeaders = false, rows = [], sortedBy = void 0, sortDirection = "asc", cellEdit = false, noItemsText = "No items to show", showSelect = false, showSelectContainer = true, selectMode = "single", selectedItems = [], showExpand = false, loading = false, disabled = false, filters = [], searchBarColumns = void 0, searchBarVisible = false, searchBarPlaceholder = "Type to search for identification code, description and MRN...", filtersVisible = false, quickFiltersVisible = false, lang = "en", editFilterMode = "one-edit", showActiveFilters = true, quickFilters = [], actionsForSelectedItems = [], totalRows = rows.length, searchText = void 0, renderedRowsNumber = 100, sectionRowsNumber = 20, sectionTreshold = 2, backwardTresholdPixel = 100, forwardTresholdPixel = 100;
65
+ let openCellEditor = false, cellEditorActivator, cellEditorContainer, menuElementCellEditor, menuElementQuickFilters, cellEditorInfoActive, saveEditDisabled = false, searchBarInput = void 0, openQuickFilter = false, quickFilterActivator, quickFilterActive, globalBuilder = new FilterBuilder(), slotSelectActionsContainer, isSelectedAll = false, calendarOpened = false, calendarOpened2 = false, selectedIndexes = [], cellEditorIndexRow, cellEditorIndexHeader, cellEditorSubItem, currentSectionNumber = 0, tableBody, tableContainer, userScrolling = true, totalSections = (totalRows - renderedRowsNumber) / sectionRowsNumber;
66
66
  $:
67
- totalSections = rows.length / sectionRowsNumber;
67
+ hasMoreToRender = totalSections > currentSectionNumber;
68
+ $:
69
+ totalCachedSections = (rows.length - renderedRowsNumber) / sectionRowsNumber;
68
70
  $:
69
71
  renderedRows = rows.slice(currentSectionNumber * sectionRowsNumber, currentSectionNumber * sectionRowsNumber + renderedRowsNumber);
70
72
  let openHeaderDrawer = false, headersToSelect = !!headers ? headers.filter((h) => {
@@ -573,7 +575,7 @@ function handleLoadForward() {
573
575
  currentSectionNumber = currentSectionNumber + 1;
574
576
  tableContainer.scrollTop -= topElementsHeight;
575
577
  setTimeout(() => userScrolling = true, 20);
576
- if (totalSections - sectionTreshold < currentSectionNumber) {
578
+ if (totalCachedSections - sectionTreshold <= currentSectionNumber && !loading && totalRows > rows.length) {
577
579
  dispatch("fetchData", {});
578
580
  }
579
581
  }
@@ -599,6 +601,7 @@ function handleLoadBackward() {
599
601
  {disabled}
600
602
  {loading}
601
603
  {actionsForSelectedItems}
604
+ {lang}
602
605
  />
603
606
 
604
607
  <slot name="search-bar" {handleSearchChange}>
@@ -702,8 +705,9 @@ function handleLoadBackward() {
702
705
  {/if}
703
706
  </div>
704
707
  {/if}
705
-
706
- <div class="table-container" bind:this={tableContainer}>
708
+ <div class="outer-container">
709
+ <div class="inner-container" bind:this={tableContainer}>
710
+ <!-- <div class="table-container" bind:this={tableContainer}> -->
707
711
  <InfiniteScroll
708
712
  on:loadMore={handleLoadBackward}
709
713
  treshold={backwardTresholdPixel}
@@ -1074,9 +1078,10 @@ function handleLoadBackward() {
1074
1078
  <InfiniteScroll
1075
1079
  on:loadMore={handleLoadForward}
1076
1080
  treshold={forwardTresholdPixel}
1077
- hasMore={hasMoreToLoad && userScrolling}
1081
+ hasMore={hasMoreToRender && userScrolling}
1078
1082
  />
1079
1083
  </div>
1084
+ </div>
1080
1085
  {/if}
1081
1086
 
1082
1087
  <Menu
@@ -1211,7 +1216,6 @@ function handleLoadBackward() {
1211
1216
  name={quickFilterActive.title}
1212
1217
  info={quickFilterActive.info}
1213
1218
  type="number"
1214
- orientation="horizontal"
1215
1219
  error={saveEditDisabled}
1216
1220
  bind:value={quickFilterActive.type.value}
1217
1221
  --simple-textfield-border-radius= 0.5rem
@@ -1295,7 +1299,7 @@ function handleLoadBackward() {
1295
1299
  <button
1296
1300
  on:click={() => setQuickFilterValue(quickFilterActive, undefined)}
1297
1301
  >
1298
- All
1302
+ {lang == 'en' ? 'All' : 'Tutti'}
1299
1303
  </button>
1300
1304
  </div>
1301
1305
  {/if}
@@ -1331,7 +1335,7 @@ function handleLoadBackward() {
1331
1335
  <div>
1332
1336
  <DatePickerTextField
1333
1337
  bind:selectedDate={quickFilterActive.type.from}
1334
- placeholder={"From"}
1338
+ placeholder={lang == 'en' ? "From" : 'Da'}
1335
1339
  --simple-textfield-width="100%"
1336
1340
  --simple-textfield-border-radius= 0.5rem
1337
1341
  --simple-textfield-background-color= transparent
@@ -1360,7 +1364,7 @@ function handleLoadBackward() {
1360
1364
  <div>
1361
1365
  <DatePickerTextField
1362
1366
  bind:selectedDate={quickFilterActive.type.to}
1363
- placeholder={"To"}
1367
+ placeholder={lang == 'en' ? "To" : 'A'}
1364
1368
  --simple-textfield-width="100%"
1365
1369
  --simple-textfield-border-radius= 0.5rem
1366
1370
  --simple-textfield-background-color= transparent
@@ -1397,8 +1401,8 @@ function handleLoadBackward() {
1397
1401
  <div style:grid-row="3" style:grid-column="2" style:margin-top="-15px">
1398
1402
  <ConfirmOrCancelButtons
1399
1403
  confirmDisable={saveEditDisabled}
1400
- confirmText="Apply"
1401
- cancelText="Cancel"
1404
+ confirmText={lang == 'en' ? "Apply" : 'Applica'}
1405
+ cancelText={lang == 'en' ? "Cancel" : 'Annulla'}
1402
1406
  on:cancel-click={handleCancelClick}
1403
1407
  on:confirm-click={() => handleApplyClick(quickFilterActive, quickFilterActive.type.key == 'custom')}
1404
1408
  />
@@ -1414,9 +1418,9 @@ function handleLoadBackward() {
1414
1418
  position={sAndDown ? "bottom" : "right"}
1415
1419
  >
1416
1420
  <div style="padding: 20px;">
1417
- <div class="personalize-header">Personalize your headers</div>
1421
+ <div class="personalize-header">{lang == 'en' ? 'Personalize your headers' : 'Personalizza le tue intestazioni'}</div>
1418
1422
 
1419
- <span class="headers-show grid-col-1">Headers shown in table</span>
1423
+ <span class="headers-show grid-col-1">{lang == 'en' ? 'Headers shown in table' : 'Intestazioni visualizzate in tabella'}</span>
1420
1424
 
1421
1425
  {#if headersToShow}
1422
1426
  <VerticalDraggableList
@@ -1441,7 +1445,7 @@ function handleLoadBackward() {
1441
1445
  </VerticalDraggableList>
1442
1446
  {/if}
1443
1447
  <Divider --divider-color=rgb(var(--global-color-contrast-100) />
1444
- <span class="headers-show grid-col-1">Headers to show</span>
1448
+ <span class="headers-show grid-col-1">{lang == 'en' ? 'Headers to show' : 'Intestazioni da mostrare'}</span>
1445
1449
  {#if headersToSelect && headersToSelect.length > 0}
1446
1450
  {#each headersToSelect as header (header.id)}
1447
1451
  <div
@@ -1467,7 +1471,7 @@ function handleLoadBackward() {
1467
1471
  {/each}
1468
1472
  {:else}
1469
1473
  <div class="headers-show grid-col-1">
1470
- <span style="text-align: center;">No headers to add</span>
1474
+ <span style="text-align: center;">{lang == 'en' ? 'No headers to add' : 'Nessuna intestazione da aggiungere'}</span>
1471
1475
  </div>
1472
1476
  {/if}
1473
1477
  <div style="width: 100%; display: flex; justify-content: center;">
@@ -1476,7 +1480,7 @@ function handleLoadBackward() {
1476
1480
  --button-width="70%"
1477
1481
  on:click={saveHeadersToShow}
1478
1482
  >
1479
- Save preferences
1483
+ {lang == 'en' ? 'Save preferences' : 'Salva preferenze'}
1480
1484
  </Button>
1481
1485
  </div>
1482
1486
  </div>
@@ -1484,15 +1488,15 @@ function handleLoadBackward() {
1484
1488
  </MediaQuery>
1485
1489
 
1486
1490
  <style>
1487
- .table-container {
1488
- overflow-x: auto;
1491
+ .outer-container {
1492
+ overflow-x: hidden;
1493
+ }
1494
+
1495
+ .inner-container {
1489
1496
  overflow-y: auto;
1490
- max-height: var(
1491
- --dynamic-table-max-height,
1492
- var(--dynamic-table-default-max-height)
1493
- );
1494
- -ms-overflow-style: none;
1495
- scrollbar-width: none;
1497
+ margin-right: -15px;
1498
+ padding-right: 15px;
1499
+ max-height: var(--dynamic-table-max-height, var(--dynamic-table-default-max-height));
1496
1500
  }
1497
1501
 
1498
1502
  .table {
@@ -1506,12 +1510,12 @@ function handleLoadBackward() {
1506
1510
  .table-header {
1507
1511
  position: sticky;
1508
1512
  top: 0;
1509
- z-index: 1;
1513
+ z-index: 2;
1510
1514
  }
1511
1515
 
1512
1516
  .table-subheader {
1513
1517
  top: var(--main-header-height);
1514
- z-index: 0;
1518
+ z-index: 1;
1515
1519
  }
1516
1520
  .table-header th {
1517
1521
  padding: var(
@@ -149,7 +149,6 @@ declare const __propDef: {
149
149
  showActiveFilters?: boolean | undefined;
150
150
  quickFilters?: QuickFilter[] | undefined;
151
151
  actionsForSelectedItems?: Action[] | undefined;
152
- hasMoreToLoad?: boolean | undefined;
153
152
  totalRows?: number | undefined;
154
153
  searchText?: string | undefined;
155
154
  renderedRowsNumber?: number | undefined;
@@ -14,7 +14,7 @@ let activeFilter = Object.values(tmpFilters).reduce((count, filter) => {
14
14
  count++;
15
15
  return count;
16
16
  }, 0);
17
- let labelsMapper = {
17
+ let labelsMapper = lang == "en" ? {
18
18
  equal: { extended: "equal to", short: "equal" },
19
19
  like: { short: "includes" },
20
20
  ilike: { short: "includes" },
@@ -23,6 +23,15 @@ let labelsMapper = {
23
23
  lower: { short: "lower", extended: "lower than" },
24
24
  between: { short: "between", extended: "is between" },
25
25
  different: { short: "different", extended: "different from" }
26
+ } : {
27
+ equal: { extended: "uguale a", short: "uguale" },
28
+ like: { short: "include" },
29
+ ilike: { short: "include" },
30
+ contains: { short: "contiene" },
31
+ greater: { short: "maggiore", extended: "maggiore di" },
32
+ lower: { short: "minore", extended: "minore di" },
33
+ between: { short: "compreso", extended: "\xE8 compreso tra" },
34
+ different: { short: "diverso", extended: "diverso da" }
26
35
  };
27
36
  function selectFilter(filter) {
28
37
  selectedFilter = filter === selectedFilter ? void 0 : filter;
@@ -48,7 +57,7 @@ function handleFilterChange() {
48
57
 
49
58
  {#if activeFilter > 0}
50
59
  <div class="filter-info">
51
- {activeFilter} applied
60
+ {activeFilter} {lang == 'en' ? 'applied' : activeFilter == 1 ? 'applicato' : 'applicati'}
52
61
  <button class="clear-button" on:click={clearFilters}>✕</button>
53
62
  </div>
54
63
  {/if}
@@ -95,7 +104,7 @@ function handleFilterChange() {
95
104
  </div>
96
105
  {:else}
97
106
  <div class="filters-content-box">
98
- <p>Please select a filter to display content.</p>
107
+ <p>{lang == 'en' ? 'Please select a filter to display content.' : 'Seleziona un filtro per mostrarne il contenuto.'}</p>
99
108
  </div>
100
109
  {/if}
101
110
  </div>
@@ -71,7 +71,7 @@ export let filters = [], lang = "en", addFilterLabel = lang == "en" ? "Filters"
71
71
  },
72
72
  "between": {
73
73
  short: "compreso",
74
- extended: "\xE8 compreso"
74
+ extended: "\xE8 compreso tra"
75
75
  },
76
76
  "different": {
77
77
  short: "diverso",
@@ -39,7 +39,7 @@ $:
39
39
  class:opened={sidebarExpanded}
40
40
  class="header-toolbar"
41
41
  >
42
- <slot name="menu">
42
+ <slot name="header">
43
43
  <div class="inner-menu">
44
44
  {#if mAndDown}
45
45
  <div style:margin-right="2rem">
@@ -27,10 +27,7 @@ declare const __propDef: {
27
27
  [evt: string]: CustomEvent<any>;
28
28
  };
29
29
  slots: {
30
- menu: {
31
- hamburgerVisible: boolean;
32
- sidebarExpanded: boolean;
33
- };
30
+ header: {};
34
31
  'inner-menu': {
35
32
  hamburgerVisible: boolean;
36
33
  };
@@ -42,6 +39,10 @@ declare const __propDef: {
42
39
  hamburgerVisible: boolean;
43
40
  sidebarExpanded: boolean;
44
41
  };
42
+ menu: {
43
+ hamburgerVisible: boolean;
44
+ sidebarExpanded: boolean;
45
+ };
45
46
  prepend: {
46
47
  option: Option;
47
48
  handleClickClose: (option: Option, index: number) => void;
@@ -27,10 +27,12 @@ export let data = {
27
27
  text: ""
28
28
  }
29
29
  }
30
- }, showLegend = true;
30
+ }, showLegend = true, responsive = true, maintainAspectRatio = false;
31
31
  let chartOptions;
32
32
  $:
33
33
  chartOptions = {
34
+ responsive,
35
+ maintainAspectRatio,
34
36
  plugins: {
35
37
  legend: {
36
38
  display: showLegend
@@ -19,6 +19,8 @@ declare const __propDef: {
19
19
  } | undefined;
20
20
  } | undefined;
21
21
  showLegend?: boolean | undefined;
22
+ responsive?: boolean | undefined;
23
+ maintainAspectRatio?: boolean | undefined;
22
24
  };
23
25
  events: {
24
26
  [evt: string]: CustomEvent<any>;
@@ -5,7 +5,7 @@ import { createEventDispatcher, onMount, beforeUpdate } from "svelte";
5
5
  import Teleporter from "../../../utils/teleporter";
6
6
  import Keyboarder, {} from "../../../utils/keyboarder";
7
7
  import { BROWSER } from "esm-env";
8
- export let open = false, position = "left", overlay = false, items = [], teleportedUid = void 0, _space = void 0, _openingSpeed = void 0, _backgroundColor = void 0, _color = void 0, _overflow = void 0, _borderRadius = void 0, _margin = void 0, _overlaySpeed = void 0, _overlayBackgroundColor = void 0, _overlayOpacity = void 0;
8
+ export let open = false, position = "left", overlay = false, closeOnClickOutside = true, items = [], teleportedUid = void 0, _space = void 0, _openingSpeed = void 0, _backgroundColor = void 0, _color = void 0, _overflow = void 0, _borderRadius = void 0, _margin = void 0, _overlaySpeed = void 0, _overlayBackgroundColor = void 0, _overlayOpacity = void 0;
9
9
  let drawerElement, localOpen = false;
10
10
  const dispatch = createEventDispatcher();
11
11
  onMount(() => {
@@ -32,9 +32,11 @@ function closeDrawer() {
32
32
  dispatch("close", {});
33
33
  }
34
34
  function handleClickOverlay() {
35
- open = false;
36
- overlay = false;
37
- dispatch("close", {});
35
+ if (closeOnClickOutside) {
36
+ open = false;
37
+ overlay = false;
38
+ dispatch("close", {});
39
+ }
38
40
  }
39
41
  let zIndex = 50;
40
42
  beforeUpdate(() => {
@@ -7,6 +7,7 @@ declare const __propDef: {
7
7
  open?: boolean | undefined;
8
8
  position?: "left" | "right" | "bottom" | "top" | undefined;
9
9
  overlay?: boolean | undefined;
10
+ closeOnClickOutside?: boolean | undefined;
10
11
  items?: Item[] | undefined;
11
12
  teleportedUid?: string | undefined;
12
13
  _space?: string | undefined;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@likable-hair/svelte",
3
3
  "description": "A Svelte component for likablehair and others",
4
- "version": "3.3.8",
4
+ "version": "3.3.10",
5
5
  "scripts": {
6
6
  "host": "vite --host",
7
7
  "dev": "vite dev",