@dodlhuat/basix 1.2.0 → 1.2.1

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 (93) hide show
  1. package/README.md +56 -1
  2. package/css/accordion.scss +86 -87
  3. package/css/alert.scss +137 -137
  4. package/css/button.scss +48 -0
  5. package/css/calendar.scss +957 -0
  6. package/css/card.scss +65 -65
  7. package/css/chart.scss +270 -157
  8. package/css/chat-bubbles.scss +134 -68
  9. package/css/chips.scss +109 -19
  10. package/css/colors.scss +32 -32
  11. package/css/datepicker.scss +336 -336
  12. package/css/defaults.scss +90 -90
  13. package/css/docs.scss +529 -0
  14. package/css/editor.scss +36 -0
  15. package/css/file-uploader.scss +1 -1
  16. package/css/flyout-menu.scss +361 -361
  17. package/css/form.scss +0 -15
  18. package/css/gallery.scss +65 -6
  19. package/css/grid.scss +41 -40
  20. package/css/group-picker.scss +345 -0
  21. package/css/guitar-chords.css +250 -250
  22. package/css/icons.scss +330 -330
  23. package/css/parameters.scss +3 -3
  24. package/css/placeholder.scss +33 -33
  25. package/css/popover.scss +206 -0
  26. package/css/progress.scss +76 -32
  27. package/css/properties.scss +51 -36
  28. package/css/push-menu.scss +302 -174
  29. package/css/reset.scss +39 -39
  30. package/css/scrollbar.scss +62 -5
  31. package/css/sidebar-nav.scss +92 -0
  32. package/css/spinner.scss +65 -65
  33. package/css/stepper.scss +48 -12
  34. package/css/style.css +3159 -254
  35. package/css/style.css.map +1 -1
  36. package/css/style.min.css +1 -1
  37. package/css/style.scss +51 -45
  38. package/css/table.scss +199 -199
  39. package/css/tabs.scss +154 -123
  40. package/css/timeline.scss +83 -38
  41. package/css/timepicker.scss +100 -5
  42. package/css/toast.scss +81 -81
  43. package/css/virtual-dropdown.scss +35 -29
  44. package/js/calendar.js +532 -0
  45. package/js/calendar.ts +706 -0
  46. package/js/chart.js +573 -257
  47. package/js/chart.ts +692 -0
  48. package/js/code-viewer.js +10 -10
  49. package/js/code-viewer.ts +188 -188
  50. package/js/datepicker.ts +627 -627
  51. package/js/docs-nav.js +204 -0
  52. package/js/dropdown.ts +179 -179
  53. package/js/editor.js +50 -6
  54. package/js/editor.ts +483 -444
  55. package/js/file-uploader.js +1 -0
  56. package/js/file-uploader.ts +1 -0
  57. package/js/flyout-menu.js +14 -14
  58. package/js/flyout-menu.ts +249 -249
  59. package/js/form-builder.js +106 -106
  60. package/js/gallery.js +14 -8
  61. package/js/gallery.ts +245 -236
  62. package/js/group-picker.js +342 -0
  63. package/js/group-picker.ts +447 -0
  64. package/js/guitar-chords.js +268 -268
  65. package/js/lazy-loader.js +121 -121
  66. package/js/modal.ts +166 -166
  67. package/js/popover.js +163 -0
  68. package/js/popover.ts +219 -0
  69. package/js/position.js +108 -0
  70. package/js/position.ts +111 -0
  71. package/js/push-menu.js +113 -0
  72. package/js/push-menu.ts +284 -145
  73. package/js/request.js +50 -50
  74. package/js/scroll.ts +47 -47
  75. package/js/scrollbar.js +13 -0
  76. package/js/scrollbar.ts +324 -307
  77. package/js/select.ts +216 -216
  78. package/js/sidebar-nav.js +41 -0
  79. package/js/sidebar-nav.ts +66 -0
  80. package/js/table.ts +452 -452
  81. package/js/tabs.ts +279 -279
  82. package/js/theme.js +17 -6
  83. package/js/theme.ts +234 -224
  84. package/js/toast.ts +137 -137
  85. package/js/tooltip.js +6 -60
  86. package/js/tooltip.ts +184 -251
  87. package/js/tsconfig.json +18 -18
  88. package/js/utils.ts +83 -83
  89. package/js/virtual-dropdown.js +25 -25
  90. package/js/virtual-dropdown.ts +365 -365
  91. package/package.json +39 -39
  92. package/js/index.js +0 -816
  93. package/js/index.ts +0 -987
@@ -1,107 +1,107 @@
1
- let dragged_element = null;
2
- let action = 'copy';
3
- let row_count = 1;
4
-
5
- let formbuilder = {
6
- init() {
7
- document.querySelectorAll('.draggable').forEach(function (element) {
8
- element.removeEventListener("dragstart", dragAction);
9
- element.addEventListener("dragstart", dragAction);
10
- });
11
- initDropzones();
12
- },
13
- addRow() {
14
- document.querySelector('.form-content').innerHTML += buildRowElement();
15
- },
16
- addColumn() {
17
-
18
- },
19
- removeRow() {
20
-
21
- },
22
- removeColumn() {
23
-
24
- },
25
- load(file_name) {
26
- load(file_name).then((data) => {
27
- console.log(data);
28
- });
29
- }
30
- }
31
-
32
- const moveAction = function (event) {
33
- dragged_element = event.target;
34
- action = 'move';
35
- }
36
- const dragAction = function (event) {
37
- dragged_element = event.target;
38
- action = 'copy';
39
- }
40
- const addMoveListeners = function () {
41
- document.querySelectorAll('.movable').forEach(function (element) {
42
- element.removeEventListener("dragstart", moveAction);
43
- element.addEventListener("dragstart", moveAction);
44
- });
45
- }
46
-
47
- const load = async function (file_name) {
48
- const url = new URL(file_name,
49
- document.currentScript && document.currentScript.src || location.href)
50
- // fetch and parse template as string
51
- let template = await fetch(url)
52
- template = await template.text()
53
- template = new DOMParser().parseFromString(template, 'text/html')
54
- .querySelector('template')
55
- if (!template) throw new TypeError('No template element found')
56
- return template.innerHTML.trim()
57
- }
58
-
59
- const buildRowElement = function () {
60
- const row = document.createElement('div');
61
- row_count++;
62
- row.setAttribute('data-row-id', String(row_count));
63
- row.className = 'row';
64
- const col = document.createElement('div');
65
- col.className = 'column';
66
- const dropzone = document.createElement('div');
67
- dropzone.className = 'dropzone';
68
- col.innerHTML = dropzone.outerHTML;
69
- row.innerHTML = col.outerHTML;
70
- return row.outerHTML;
71
- }
72
-
73
- const dropEvent = function (event) {
74
- event.preventDefault();
75
- let node = dragged_element;
76
- if (action === 'copy') {
77
- node = dragged_element.cloneNode(true);
78
- }
79
- node.classList.remove('draggable');
80
- node.classList.add('movable');
81
- const label = node.querySelector('span.label');
82
- if (label) {
83
- label.setAttribute('contenteditable', true);
84
- }
85
- const pElement = node.querySelector('p');
86
- if (pElement) {
87
- pElement.setAttribute('contenteditable', true);
88
- }
89
- event.target.appendChild(node);
90
- addMoveListeners();
91
- }
92
-
93
- const dragOverEvent = function (event) {
94
- event.preventDefault();
95
- event.dataTransfer.effectAllowed = action;
96
- }
97
-
98
- const initDropzones = function () {
99
- document.querySelectorAll('.dropzone').forEach(function (dropzone) {
100
- dropzone.removeEventListener('drop', dropEvent);
101
- dropzone.addEventListener('drop', dropEvent);
102
- dropzone.removeEventListener('dragover', dragOverEvent);
103
- dropzone.addEventListener('dragover', dragOverEvent);
104
- });
105
- }
106
-
1
+ let dragged_element = null;
2
+ let action = 'copy';
3
+ let row_count = 1;
4
+
5
+ let formbuilder = {
6
+ init() {
7
+ document.querySelectorAll('.draggable').forEach(function (element) {
8
+ element.removeEventListener("dragstart", dragAction);
9
+ element.addEventListener("dragstart", dragAction);
10
+ });
11
+ initDropzones();
12
+ },
13
+ addRow() {
14
+ document.querySelector('.form-content').innerHTML += buildRowElement();
15
+ },
16
+ addColumn() {
17
+
18
+ },
19
+ removeRow() {
20
+
21
+ },
22
+ removeColumn() {
23
+
24
+ },
25
+ load(file_name) {
26
+ load(file_name).then((data) => {
27
+ console.log(data);
28
+ });
29
+ }
30
+ }
31
+
32
+ const moveAction = function (event) {
33
+ dragged_element = event.target;
34
+ action = 'move';
35
+ }
36
+ const dragAction = function (event) {
37
+ dragged_element = event.target;
38
+ action = 'copy';
39
+ }
40
+ const addMoveListeners = function () {
41
+ document.querySelectorAll('.movable').forEach(function (element) {
42
+ element.removeEventListener("dragstart", moveAction);
43
+ element.addEventListener("dragstart", moveAction);
44
+ });
45
+ }
46
+
47
+ const load = async function (file_name) {
48
+ const url = new URL(file_name,
49
+ document.currentScript && document.currentScript.src || location.href)
50
+ // fetch and parse template as string
51
+ let template = await fetch(url)
52
+ template = await template.text()
53
+ template = new DOMParser().parseFromString(template, 'text/html')
54
+ .querySelector('template')
55
+ if (!template) throw new TypeError('No template element found')
56
+ return template.innerHTML.trim()
57
+ }
58
+
59
+ const buildRowElement = function () {
60
+ const row = document.createElement('div');
61
+ row_count++;
62
+ row.setAttribute('data-row-id', String(row_count));
63
+ row.className = 'row';
64
+ const col = document.createElement('div');
65
+ col.className = 'column';
66
+ const dropzone = document.createElement('div');
67
+ dropzone.className = 'dropzone';
68
+ col.innerHTML = dropzone.outerHTML;
69
+ row.innerHTML = col.outerHTML;
70
+ return row.outerHTML;
71
+ }
72
+
73
+ const dropEvent = function (event) {
74
+ event.preventDefault();
75
+ let node = dragged_element;
76
+ if (action === 'copy') {
77
+ node = dragged_element.cloneNode(true);
78
+ }
79
+ node.classList.remove('draggable');
80
+ node.classList.add('movable');
81
+ const label = node.querySelector('span.label');
82
+ if (label) {
83
+ label.setAttribute('contenteditable', true);
84
+ }
85
+ const pElement = node.querySelector('p');
86
+ if (pElement) {
87
+ pElement.setAttribute('contenteditable', true);
88
+ }
89
+ event.target.appendChild(node);
90
+ addMoveListeners();
91
+ }
92
+
93
+ const dragOverEvent = function (event) {
94
+ event.preventDefault();
95
+ event.dataTransfer.effectAllowed = action;
96
+ }
97
+
98
+ const initDropzones = function () {
99
+ document.querySelectorAll('.dropzone').forEach(function (dropzone) {
100
+ dropzone.removeEventListener('drop', dropEvent);
101
+ dropzone.addEventListener('drop', dropEvent);
102
+ dropzone.removeEventListener('dragover', dragOverEvent);
103
+ dropzone.addEventListener('dragover', dragOverEvent);
104
+ });
105
+ }
106
+
107
107
  export {formbuilder}
package/js/gallery.js CHANGED
@@ -124,9 +124,15 @@ class MasonryGallery {
124
124
  }
125
125
  }
126
126
  renderImages(imageDataList) {
127
- imageDataList.forEach((data) => {
127
+ // Sort columns by current height so we start filling from the shortest.
128
+ // Then round-robin across them — this avoids the problem where unloaded
129
+ // images (0 height) cause offsetHeight-based distribution to pile all
130
+ // new items into a single column.
131
+ const sorted = [...this.columns].sort((a, b) => a.offsetHeight - b.offsetHeight);
132
+ imageDataList.forEach((data, index) => {
128
133
  const item = this.createCard(data);
129
- this.addToShortestColumn(item);
134
+ const col = sorted[index % sorted.length];
135
+ col.appendChild(item);
130
136
  requestAnimationFrame(() => {
131
137
  const img = item.querySelector("img");
132
138
  if (img) {
@@ -143,12 +149,12 @@ class MasonryGallery {
143
149
  createCard(data) {
144
150
  const div = document.createElement("div");
145
151
  div.className = "masonry-item";
146
- div.innerHTML = `
147
- <img src="${this.escapeHtml(data.src)}" alt="${this.escapeHtml(data.title)}" loading="lazy">
148
- <div class="masonry-item-info">
149
- <h3 class="masonry-item-title">${this.escapeHtml(data.title)}</h3>
150
- <p class="masonry-item-desc">${this.escapeHtml(data.desc)}</p>
151
- </div>
152
+ div.innerHTML = `
153
+ <img src="${this.escapeHtml(data.src)}" alt="${this.escapeHtml(data.title)}" loading="lazy">
154
+ <div class="masonry-item-info">
155
+ <h3 class="masonry-item-title">${this.escapeHtml(data.title)}</h3>
156
+ <p class="masonry-item-desc">${this.escapeHtml(data.desc)}</p>
157
+ </div>
152
158
  `;
153
159
  return div;
154
160
  }