@cahyo-dimas/freeday 1.14.0 → 1.16.0

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 (42) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.id.md +1 -1
  3. package/README.md +1 -1
  4. package/adapters/blazor/CflTypes.cs +11 -0
  5. package/adapters/blazor/FdyAutocomplete.razor +19 -0
  6. package/adapters/blazor/FdyAutocomplete.razor.cs +40 -0
  7. package/adapters/blazor/FdyCascade.razor +33 -0
  8. package/adapters/blazor/FdyCascade.razor.cs +38 -0
  9. package/adapters/blazor/FdyCascadeNode.cs +8 -0
  10. package/adapters/blazor/FdyCfl.razor +93 -0
  11. package/adapters/blazor/FdyCfl.razor.cs +146 -0
  12. package/adapters/blazor/FdyChart.razor +25 -0
  13. package/adapters/blazor/FdyChart.razor.cs +90 -0
  14. package/adapters/blazor/FdyChartSeries.cs +10 -0
  15. package/adapters/blazor/FdyCombo.razor +28 -0
  16. package/adapters/blazor/FdyCombo.razor.cs +86 -0
  17. package/adapters/blazor/FdyComboOption.cs +7 -0
  18. package/adapters/blazor/FdyDateRange.razor +16 -0
  19. package/adapters/blazor/FdyDateRange.razor.cs +58 -0
  20. package/adapters/blazor/FdyDatepicker.razor +13 -0
  21. package/adapters/blazor/FdyDatepicker.razor.cs +39 -0
  22. package/adapters/blazor/FdyDrawer.razor +36 -0
  23. package/adapters/blazor/FdyDrawer.razor.cs +88 -0
  24. package/adapters/blazor/FdyModal.razor +36 -0
  25. package/adapters/blazor/FdyModal.razor.cs +88 -0
  26. package/adapters/blazor/FdyTable.razor +140 -0
  27. package/adapters/blazor/FdyTable.razor.cs +200 -0
  28. package/adapters/blazor/FdyTableFilter.razor +77 -0
  29. package/adapters/blazor/FdyTableFilter.razor.cs +117 -0
  30. package/adapters/blazor/Freeday.Blazor.csproj +27 -0
  31. package/adapters/blazor/FreedayComponentBase.cs +73 -0
  32. package/adapters/blazor/TableModel.cs +196 -0
  33. package/adapters/blazor/TableTypes.cs +69 -0
  34. package/adapters/blazor/_Imports.razor +5 -0
  35. package/adapters/blazor/freeday-blazor.js +101 -3
  36. package/dist/asset.d.ts +6 -0
  37. package/dist/freeday-select.js +32 -8
  38. package/dist/freeday.d.ts +24 -0
  39. package/dist/freeday.js +32 -8
  40. package/package.json +14 -8
  41. package/src/freeday-select.js +32 -8
  42. package/tokens/breakpoints.d.ts +8 -0
@@ -91,7 +91,11 @@
91
91
  setHighlight(-1);
92
92
  if (openClose === close) openClose = null;
93
93
  }
94
- function choose(opt) {
94
+ // Mark an option selected + reflect it in the button. `silent` skips the change
95
+ // event, close, and focus — used by the programmatic setValue() below so a host
96
+ // (e.g. a Blazor/framework wrapper) can push a value in without echoing an event
97
+ // back to itself or stealing focus. User-driven picks go through choose() (loud).
98
+ function select(opt, silent) {
95
99
  options.forEach(function (other) {
96
100
  var on = other === opt;
97
101
  other.setAttribute('aria-selected', on ? 'true' : 'false');
@@ -101,12 +105,24 @@
101
105
  root.setAttribute('data-value', opt.getAttribute('data-value') || '');
102
106
  valueEl.textContent = optionLabel(opt);
103
107
  valueEl.classList.remove('fdy-combo__value--placeholder');
104
- root.dispatchEvent(new CustomEvent('fdy-change', {
105
- bubbles: true,
106
- detail: { value: opt.getAttribute('data-value') }
107
- }));
108
- close();
109
- button.focus();
108
+ if (!silent) {
109
+ root.dispatchEvent(new CustomEvent('fdy-change', {
110
+ bubbles: true,
111
+ detail: { value: opt.getAttribute('data-value') }
112
+ }));
113
+ close();
114
+ button.focus();
115
+ }
116
+ }
117
+ function choose(opt) { select(opt, false); }
118
+ // Programmatic set (no event, no focus change). No-op if no option matches.
119
+ function setValue(value) {
120
+ for (var i = 0; i < options.length; i++) {
121
+ if ((options[i].getAttribute('data-value') || '') === String(value)) {
122
+ select(options[i], true);
123
+ return;
124
+ }
125
+ }
110
126
  }
111
127
 
112
128
  button.addEventListener('click', function () {
@@ -167,6 +183,9 @@
167
183
  root.addEventListener('focusout', function (e) {
168
184
  if (!root.contains(e.relatedTarget)) close();
169
185
  });
186
+
187
+ // Per-instance API for programmatic control (host wrappers / two-way binding).
188
+ root._fdyCombo = { setValue: setValue };
170
189
  }
171
190
 
172
191
  function initAll(context) {
@@ -190,5 +209,10 @@
190
209
  initAll();
191
210
  }
192
211
 
193
- window.FreedayCombo = { init: initCombo, initAll: initAll };
212
+ // Programmatic set on an already-initialised combo root (no fdy-change dispatched).
213
+ function setValue(root, value) {
214
+ if (root && root._fdyCombo) root._fdyCombo.setValue(value);
215
+ }
216
+
217
+ window.FreedayCombo = { init: initCombo, initAll: initAll, setValue: setValue };
194
218
  })();
@@ -0,0 +1,8 @@
1
+ // Types for tokens/breakpoints.mjs — the JS-side breakpoint scale in px
2
+ // (mirrors the sm/md/lg/xl utilities in src/components/breakpoints.css).
3
+ export declare const breakpoints: {
4
+ sm: number;
5
+ md: number;
6
+ lg: number;
7
+ xl: number;
8
+ };