@wpmoo/ui 1.3.0 → 1.4.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 (38) hide show
  1. package/ASSET_LICENSE.md +1 -1
  2. package/README.md +28 -4
  3. package/certification.json +2 -1
  4. package/dist/assets/css/moo-ui.css +159 -14
  5. package/dist/assets/css/moo-ui.min.css +2 -2
  6. package/dist/assets/css/moo.css +147 -2
  7. package/dist/assets/css/moo.min.css +2 -2
  8. package/dist/js/chart.js +1 -1
  9. package/dist/js/chart.min.js +1 -1
  10. package/dist/js/combobox.js +1 -1
  11. package/dist/js/context-menu.js +1 -1
  12. package/dist/js/datatable.js +1 -1
  13. package/dist/js/datepicker.js +3 -1
  14. package/dist/js/datepicker.min.js +2 -2
  15. package/dist/js/moo-ui.js +306 -1
  16. package/dist/js/moo-ui.min.js +2 -2
  17. package/dist/js/overlay-scrollbar.js +308 -0
  18. package/dist/js/sheet.js +1 -1
  19. package/dist/js/sidebar.js +1 -1
  20. package/dist/js/slider.js +1 -1
  21. package/dist/js/state.js +1 -1
  22. package/dist/js/table-of-contents.js +1 -1
  23. package/dist/js/toc.js +1 -1
  24. package/dist/release-manifest.json +4 -4
  25. package/package.json +3 -1
  26. package/scss/components/_datepicker.scss +5 -0
  27. package/scss/components/_field.scss +3 -0
  28. package/scss/components/_select.scss +4 -0
  29. package/scss/foundations/_globals.scss +1 -0
  30. package/scss/foundations/_scope.scss +2 -0
  31. package/scss/mixins/_banner.scss +1 -1
  32. package/scss/moo-core.scss +2 -0
  33. package/scss/moo-ui.scss +3 -0
  34. package/scss/settings/_component_variables.scss +2 -0
  35. package/scss/settings/_forms.scss +1 -1
  36. package/scss/utilities/_overlay_scrollbar.scss +68 -0
  37. package/scss/utilities/_overlay_scrollbar_native.scss +1 -0
  38. package/scss/utilities/_text_alignment.scss +29 -0
package/ASSET_LICENSE.md CHANGED
@@ -14,6 +14,6 @@ product, site, template, library, training dataset, or marketing asset without
14
14
  prior written permission from WPMoo.
15
15
 
16
16
  Third-party assets remain under their own licenses. See the
17
- [version-pinned third-party notices](https://github.com/wpmoo-org/ui/blob/v1.3.0/THIRD_PARTY_NOTICES.md).
17
+ [version-pinned third-party notices](https://github.com/wpmoo-org/ui/blob/v1.4.1/THIRD_PARTY_NOTICES.md).
18
18
  Those notices are repository-only and are intentionally not shipped in the npm
19
19
  package.
package/README.md CHANGED
@@ -168,6 +168,29 @@ import { initSheets } from "@wpmoo/ui/sheet.js";
168
168
  initSheets(document);
169
169
  ```
170
170
 
171
+ For an opt-in document overlay scrollbar, load the stylesheet first and pass
172
+ the resolved page theme owner explicitly:
173
+
174
+ ```js
175
+ import OverlayScrollbar from "@wpmoo/ui/overlay-scrollbar.js";
176
+ const scrollbar = OverlayScrollbar.getOrCreateInstance(document.querySelector(".moo-ui"), {
177
+ label: "Page scroll position", // supply a localized accessible name
178
+ hideDelay: 900,
179
+ });
180
+ // scrollbar.refresh(); // after host geometry changes
181
+ // scrollbar.dispose(); // restore the native scrollbar
182
+ ```
183
+
184
+ The module preserves native document/touch/wheel scrolling. Its thin thumb
185
+ appears while scrolling, near the trailing mouse edge or on keyboard focus;
186
+ show/hide never reserves a layout gutter. Initial activation removes any native
187
+ gutter. By default it controls the standards-mode document. Pass
188
+ `scrollElement: element` for an existing native scrolling region belonging to
189
+ the same theme owner; the catalog uses this for its Page main region. There is
190
+ one instance per scroll target, without replacing or wrapping that target.
191
+ Printing, forced colors and horizontal overflow use the
192
+ native scrollbar instead. It does not initialize merely by importing the module.
193
+
171
194
  ## Why Teams Try It
172
195
 
173
196
  - Keep server-rendered HTML, Bootstrap classes, and familiar plugin behavior.
@@ -194,9 +217,10 @@ calm.
194
217
 
195
218
  ## Status And Support
196
219
 
197
- The `1.3.0` minor release target adds Accordion Panels compositions and optional
198
- plus/minus indicators while preserving explicit Alert icon sizes. It
199
- preserves the 1.2.2 package exports and existing component defaults. Component certification remains
220
+ The `1.4.1` patch release target aligns nested Field labels and readable empty
221
+ prompts across form controls, with normal-weight Date Picker values. Native
222
+ selection, validation, disabled states and the 1.4.0 package API remain intact.
223
+ Component certification remains
200
224
  `preview`, with its documented manual and browser/device limits. Public exports, package boundaries, browser support, and release evidence live in [Support & Evidence](https://ui.wpmoo.org/support/).
201
225
  Complete release notes are on
202
226
  [GitHub Releases](https://github.com/wpmoo-org/ui/releases).
@@ -222,4 +246,4 @@ The published `LICENSE` also retains the full MIT notices for bundled
222
246
  Chart.js and `@kurkle/color`.
223
247
  Asset terms live in [ASSET_LICENSE.md](ASSET_LICENSE.md); dependency notices
224
248
  live in the
225
- [version-pinned third-party notices](https://github.com/wpmoo-org/ui/blob/v1.3.0/THIRD_PARTY_NOTICES.md).
249
+ [version-pinned third-party notices](https://github.com/wpmoo-org/ui/blob/v1.4.1/THIRD_PARTY_NOTICES.md).
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "0.1",
3
3
  "status": "preview",
4
- "coreVersion": "1.3.0",
4
+ "coreVersion": "1.4.1",
5
5
  "bootstrap": {
6
6
  "canonicalVersion": "5.3.3",
7
7
  "targetRange": ">=5.3.0 <5.4",
@@ -29,6 +29,7 @@
29
29
  "./datatable.js",
30
30
  "./slider.js",
31
31
  "./toc.js",
32
+ "./overlay-scrollbar.js",
32
33
  "./table-of-contents.js",
33
34
  "./sheet.js",
34
35
  "./chart.js",
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Moo UI v1.3.0 (https://wpmoo.org/)
2
+ * Moo UI v1.4.1 (https://wpmoo.org/)
3
3
  * Copyright 2026 WPMoo Authors
4
4
  * Licensed under MIT (https://github.com/wpmoo-org/ui/blob/main/LICENSE)
5
5
  *
@@ -5624,11 +5624,11 @@ progress {
5624
5624
  }
5625
5625
 
5626
5626
  .text-start {
5627
- text-align: left !important;
5627
+ text-align: start !important;
5628
5628
  }
5629
5629
 
5630
5630
  .text-end {
5631
- text-align: right !important;
5631
+ text-align: end !important;
5632
5632
  }
5633
5633
 
5634
5634
  .text-center {
@@ -6900,10 +6900,10 @@ progress {
6900
6900
  column-gap: 3rem !important;
6901
6901
  }
6902
6902
  .text-sm-start {
6903
- text-align: left !important;
6903
+ text-align: start !important;
6904
6904
  }
6905
6905
  .text-sm-end {
6906
- text-align: right !important;
6906
+ text-align: end !important;
6907
6907
  }
6908
6908
  .text-sm-center {
6909
6909
  text-align: center !important;
@@ -7451,10 +7451,10 @@ progress {
7451
7451
  column-gap: 3rem !important;
7452
7452
  }
7453
7453
  .text-md-start {
7454
- text-align: left !important;
7454
+ text-align: start !important;
7455
7455
  }
7456
7456
  .text-md-end {
7457
- text-align: right !important;
7457
+ text-align: end !important;
7458
7458
  }
7459
7459
  .text-md-center {
7460
7460
  text-align: center !important;
@@ -8002,10 +8002,10 @@ progress {
8002
8002
  column-gap: 3rem !important;
8003
8003
  }
8004
8004
  .text-lg-start {
8005
- text-align: left !important;
8005
+ text-align: start !important;
8006
8006
  }
8007
8007
  .text-lg-end {
8008
- text-align: right !important;
8008
+ text-align: end !important;
8009
8009
  }
8010
8010
  .text-lg-center {
8011
8011
  text-align: center !important;
@@ -8553,10 +8553,10 @@ progress {
8553
8553
  column-gap: 3rem !important;
8554
8554
  }
8555
8555
  .text-xl-start {
8556
- text-align: left !important;
8556
+ text-align: start !important;
8557
8557
  }
8558
8558
  .text-xl-end {
8559
- text-align: right !important;
8559
+ text-align: end !important;
8560
8560
  }
8561
8561
  .text-xl-center {
8562
8562
  text-align: center !important;
@@ -9104,10 +9104,10 @@ progress {
9104
9104
  column-gap: 3rem !important;
9105
9105
  }
9106
9106
  .text-xxl-start {
9107
- text-align: left !important;
9107
+ text-align: start !important;
9108
9108
  }
9109
9109
  .text-xxl-end {
9110
- text-align: right !important;
9110
+ text-align: end !important;
9111
9111
  }
9112
9112
  .text-xxl-center {
9113
9113
  text-align: center !important;
@@ -9225,6 +9225,23 @@ progress {
9225
9225
  }
9226
9226
  }
9227
9227
 
9228
+ html.scrollbar-overlay-native {
9229
+ scrollbar-width: none;
9230
+ }
9231
+
9232
+ html.scrollbar-overlay-native::-webkit-scrollbar {
9233
+ display: none;
9234
+ }
9235
+
9236
+ @media print, (forced-colors: active) {
9237
+ html.scrollbar-overlay-native {
9238
+ scrollbar-width: auto !important;
9239
+ }
9240
+ html.scrollbar-overlay-native::-webkit-scrollbar {
9241
+ display: revert !important;
9242
+ }
9243
+ }
9244
+
9228
9245
  @keyframes moo-overlay-backdrop-enter {
9229
9246
  from {
9230
9247
  opacity: 0;
@@ -9588,7 +9605,7 @@ progress {
9588
9605
  padding: 0;
9589
9606
  }
9590
9607
  .form-control::placeholder {
9591
- color: var(--bs-tertiary-color);
9608
+ color: var(--bs-secondary-color);
9592
9609
  opacity: 1;
9593
9610
  }
9594
9611
  .form-control:disabled {
@@ -12744,6 +12761,9 @@ progress {
12744
12761
  }
12745
12762
 
12746
12763
  /* Select */
12764
+ .form-select:not(:disabled):not([multiple]):is(:not([size]), [size="1"]):has(option[data-placeholder="true"]:checked) {
12765
+ color: var(--bs-secondary-color);
12766
+ }
12747
12767
  .form-select option,
12748
12768
  .form-select optgroup {
12749
12769
  color: var(--bs-body-color);
@@ -15348,6 +15368,8 @@ label.btn {
15348
15368
  }
15349
15369
  .field > .form-label {
15350
15370
  margin-bottom: 0;
15371
+ }
15372
+ .field .form-label {
15351
15373
  font-weight: 500;
15352
15374
  }
15353
15375
  .field[data-invalid="true"] {
@@ -15426,6 +15448,7 @@ label.btn {
15426
15448
  max-width: var(--moo-datepicker-width);
15427
15449
  }
15428
15450
  .moo-datepicker__trigger {
15451
+ --bs-btn-font-weight: 400;
15429
15452
  width: 100%;
15430
15453
  justify-content: flex-start;
15431
15454
  text-align: start;
@@ -15435,6 +15458,9 @@ label.btn {
15435
15458
  overflow: hidden;
15436
15459
  text-overflow: ellipsis;
15437
15460
  }
15461
+ .moo-datepicker__trigger:not(:disabled):not(.is-invalid):not(:hover, :active, :focus-visible, [aria-expanded="true"]) [data-datepicker-empty="true"] {
15462
+ color: var(--bs-secondary-color);
15463
+ }
15438
15464
  .moo-datepicker__trigger.is-invalid {
15439
15465
  border-color: var(--bs-form-invalid-border-color);
15440
15466
  color: var(--bs-form-invalid-color);
@@ -16879,6 +16905,70 @@ label.btn {
16879
16905
  .border-dashed {
16880
16906
  border-style: dashed !important;
16881
16907
  }
16908
+ .text-start {
16909
+ text-align: start !important;
16910
+ }
16911
+ .text-end {
16912
+ text-align: end !important;
16913
+ }
16914
+ .text-center {
16915
+ text-align: center !important;
16916
+ }
16917
+ @media (min-width: 576px) {
16918
+ .text-sm-start {
16919
+ text-align: start !important;
16920
+ }
16921
+ .text-sm-end {
16922
+ text-align: end !important;
16923
+ }
16924
+ .text-sm-center {
16925
+ text-align: center !important;
16926
+ }
16927
+ }
16928
+ @media (min-width: 768px) {
16929
+ .text-md-start {
16930
+ text-align: start !important;
16931
+ }
16932
+ .text-md-end {
16933
+ text-align: end !important;
16934
+ }
16935
+ .text-md-center {
16936
+ text-align: center !important;
16937
+ }
16938
+ }
16939
+ @media (min-width: 992px) {
16940
+ .text-lg-start {
16941
+ text-align: start !important;
16942
+ }
16943
+ .text-lg-end {
16944
+ text-align: end !important;
16945
+ }
16946
+ .text-lg-center {
16947
+ text-align: center !important;
16948
+ }
16949
+ }
16950
+ @media (min-width: 1200px) {
16951
+ .text-xl-start {
16952
+ text-align: start !important;
16953
+ }
16954
+ .text-xl-end {
16955
+ text-align: end !important;
16956
+ }
16957
+ .text-xl-center {
16958
+ text-align: center !important;
16959
+ }
16960
+ }
16961
+ @media (min-width: 1400px) {
16962
+ .text-xxl-start {
16963
+ text-align: start !important;
16964
+ }
16965
+ .text-xxl-end {
16966
+ text-align: end !important;
16967
+ }
16968
+ .text-xxl-center {
16969
+ text-align: center !important;
16970
+ }
16971
+ }
16882
16972
  :where( .scroll-fade, .scroll-fade-y, .scroll-fade-x, .scroll-fade-t, .scroll-fade-b, .scroll-fade-l, .scroll-fade-r, .scroll-fade-s, .scroll-fade-e ) {
16883
16973
  --scroll-fade-size: min(12%, 2.5rem);
16884
16974
  --scroll-fade-reveal: 6rem;
@@ -17047,6 +17137,61 @@ label.btn {
17047
17137
  --moo-scroll-fade-e: var(--moo-scroll-fade-e-size);
17048
17138
  }
17049
17139
  }
17140
+ .scrollbar-overlay-native {
17141
+ scrollbar-width: none;
17142
+ }
17143
+ .scrollbar-overlay-native::-webkit-scrollbar {
17144
+ display: none;
17145
+ }
17146
+ @media print, (forced-colors: active) {
17147
+ .scrollbar-overlay-native {
17148
+ scrollbar-width: auto !important;
17149
+ }
17150
+ .scrollbar-overlay-native::-webkit-scrollbar {
17151
+ display: revert !important;
17152
+ }
17153
+ }
17154
+ .scrollbar-overlay {
17155
+ --moo-scrollbar-overlay-hit-size: 1.5rem;
17156
+ --moo-scrollbar-overlay-thumb-size: 0.375rem;
17157
+ position: fixed;
17158
+ inset-block: 0;
17159
+ inset-inline-end: 0;
17160
+ z-index: 1030;
17161
+ inline-size: var(--moo-scrollbar-overlay-hit-size);
17162
+ color: var(--bs-secondary-color);
17163
+ opacity: 0;
17164
+ pointer-events: none;
17165
+ touch-action: none;
17166
+ transition: opacity 0.15s linear;
17167
+ }
17168
+ @media (prefers-reduced-motion: reduce) {
17169
+ .scrollbar-overlay {
17170
+ transition: none;
17171
+ }
17172
+ }
17173
+ .scrollbar-overlay[data-scrollbar-visible="true"], .scrollbar-overlay:focus-visible {
17174
+ opacity: 1;
17175
+ }
17176
+ .scrollbar-overlay[data-scrollbar-interactive="true"], .scrollbar-overlay:focus-visible {
17177
+ pointer-events: auto;
17178
+ }
17179
+ .scrollbar-overlay:hover, .scrollbar-overlay:focus-visible {
17180
+ color: var(--bs-emphasis-color);
17181
+ }
17182
+ .scrollbar-overlay-thumb {
17183
+ position: absolute;
17184
+ inset-block-start: 0;
17185
+ inset-inline-end: 0.25rem;
17186
+ inline-size: var(--moo-scrollbar-overlay-thumb-size);
17187
+ background-color: currentColor;
17188
+ border-radius: var(--bs-border-radius-pill);
17189
+ }
17190
+ @media print, (forced-colors: active) {
17191
+ .scrollbar-overlay {
17192
+ display: none !important;
17193
+ }
17194
+ }
17050
17195
  .scroll-smooth {
17051
17196
  scroll-behavior: smooth;
17052
17197
  }