@aurodesignsystem/auro-formkit 5.2.3 → 5.3.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 (55) hide show
  1. package/CHANGELOG.md +2 -10
  2. package/components/bibtemplate/dist/buttonVersion.d.ts +1 -1
  3. package/components/bibtemplate/dist/index.js +44 -88
  4. package/components/bibtemplate/dist/registered.js +44 -88
  5. package/components/checkbox/demo/api.min.js +14 -3
  6. package/components/checkbox/demo/index.min.js +14 -3
  7. package/components/checkbox/dist/index.js +14 -3
  8. package/components/checkbox/dist/registered.js +14 -3
  9. package/components/combobox/demo/api.js +2 -0
  10. package/components/combobox/demo/api.md +115 -1
  11. package/components/combobox/demo/api.min.js +350 -282
  12. package/components/combobox/demo/index.min.js +253 -204
  13. package/components/combobox/dist/auro-combobox.d.ts +9 -0
  14. package/components/combobox/dist/index.js +246 -200
  15. package/components/combobox/dist/registered.js +246 -200
  16. package/components/counter/demo/api.md +29 -1
  17. package/components/counter/demo/api.min.js +219 -185
  18. package/components/counter/demo/index.min.js +219 -185
  19. package/components/counter/dist/auro-counter-group.d.ts +9 -0
  20. package/components/counter/dist/index.js +219 -185
  21. package/components/counter/dist/registered.js +219 -185
  22. package/components/datepicker/demo/api.md +23 -1
  23. package/components/datepicker/demo/api.min.js +304 -294
  24. package/components/datepicker/demo/index.md +6 -6
  25. package/components/datepicker/demo/index.min.js +304 -294
  26. package/components/datepicker/dist/auro-datepicker.d.ts +9 -0
  27. package/components/datepicker/dist/buttonVersion.d.ts +1 -1
  28. package/components/datepicker/dist/index.js +304 -294
  29. package/components/datepicker/dist/registered.js +304 -294
  30. package/components/dropdown/demo/api.md +46 -2
  31. package/components/dropdown/demo/api.min.js +101 -1
  32. package/components/dropdown/demo/index.min.js +101 -1
  33. package/components/dropdown/dist/auro-dropdown.d.ts +10 -0
  34. package/components/dropdown/dist/index.js +101 -1
  35. package/components/dropdown/dist/registered.js +101 -1
  36. package/components/input/demo/api.min.js +62 -95
  37. package/components/input/demo/index.min.js +62 -95
  38. package/components/input/dist/buttonVersion.d.ts +1 -1
  39. package/components/input/dist/index.js +62 -95
  40. package/components/input/dist/registered.js +62 -95
  41. package/components/menu/demo/api.min.js +3 -0
  42. package/components/menu/demo/index.min.js +3 -0
  43. package/components/menu/dist/index.js +3 -0
  44. package/components/menu/dist/registered.js +3 -0
  45. package/components/radio/demo/api.min.js +14 -3
  46. package/components/radio/demo/index.min.js +14 -3
  47. package/components/radio/dist/index.js +14 -3
  48. package/components/radio/dist/registered.js +14 -3
  49. package/components/select/demo/api.md +29 -1
  50. package/components/select/demo/api.min.js +188 -107
  51. package/components/select/demo/index.min.js +188 -107
  52. package/components/select/dist/auro-select.d.ts +9 -0
  53. package/components/select/dist/index.js +181 -103
  54. package/components/select/dist/registered.js +181 -103
  55. package/package.json +5 -5
@@ -100,6 +100,9 @@ const oppositeAlignmentMap = {
100
100
  start: 'end',
101
101
  end: 'start'
102
102
  };
103
+ function clamp(start, value, end) {
104
+ return max(start, min(value, end));
105
+ }
103
106
  function evaluate(value, param) {
104
107
  return typeof value === 'function' ? value(param) : value;
105
108
  }
@@ -742,6 +745,84 @@ const offset$1 = function (options) {
742
745
  };
743
746
  };
744
747
 
748
+ /**
749
+ * Optimizes the visibility of the floating element by shifting it in order to
750
+ * keep it in view when it will overflow the clipping boundary.
751
+ * @see https://floating-ui.com/docs/shift
752
+ */
753
+ const shift$1 = function (options) {
754
+ if (options === void 0) {
755
+ options = {};
756
+ }
757
+ return {
758
+ name: 'shift',
759
+ options,
760
+ async fn(state) {
761
+ const {
762
+ x,
763
+ y,
764
+ placement
765
+ } = state;
766
+ const {
767
+ mainAxis: checkMainAxis = true,
768
+ crossAxis: checkCrossAxis = false,
769
+ limiter = {
770
+ fn: _ref => {
771
+ let {
772
+ x,
773
+ y
774
+ } = _ref;
775
+ return {
776
+ x,
777
+ y
778
+ };
779
+ }
780
+ },
781
+ ...detectOverflowOptions
782
+ } = evaluate(options, state);
783
+ const coords = {
784
+ x,
785
+ y
786
+ };
787
+ const overflow = await detectOverflow(state, detectOverflowOptions);
788
+ const crossAxis = getSideAxis(getSide(placement));
789
+ const mainAxis = getOppositeAxis(crossAxis);
790
+ let mainAxisCoord = coords[mainAxis];
791
+ let crossAxisCoord = coords[crossAxis];
792
+ if (checkMainAxis) {
793
+ const minSide = mainAxis === 'y' ? 'top' : 'left';
794
+ const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
795
+ const min = mainAxisCoord + overflow[minSide];
796
+ const max = mainAxisCoord - overflow[maxSide];
797
+ mainAxisCoord = clamp(min, mainAxisCoord, max);
798
+ }
799
+ if (checkCrossAxis) {
800
+ const minSide = crossAxis === 'y' ? 'top' : 'left';
801
+ const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
802
+ const min = crossAxisCoord + overflow[minSide];
803
+ const max = crossAxisCoord - overflow[maxSide];
804
+ crossAxisCoord = clamp(min, crossAxisCoord, max);
805
+ }
806
+ const limitedCoords = limiter.fn({
807
+ ...state,
808
+ [mainAxis]: mainAxisCoord,
809
+ [crossAxis]: crossAxisCoord
810
+ });
811
+ return {
812
+ ...limitedCoords,
813
+ data: {
814
+ x: limitedCoords.x - x,
815
+ y: limitedCoords.y - y,
816
+ enabled: {
817
+ [mainAxis]: checkMainAxis,
818
+ [crossAxis]: checkCrossAxis
819
+ }
820
+ }
821
+ };
822
+ }
823
+ };
824
+ };
825
+
745
826
  function hasWindow() {
746
827
  return typeof window !== 'undefined';
747
828
  }
@@ -1574,6 +1655,13 @@ const offset = offset$1;
1574
1655
  */
1575
1656
  const autoPlacement = autoPlacement$1;
1576
1657
 
1658
+ /**
1659
+ * Optimizes the visibility of the floating element by shifting it in order to
1660
+ * keep it in view when it will overflow the clipping boundary.
1661
+ * @see https://floating-ui.com/docs/shift
1662
+ */
1663
+ const shift = shift$1;
1664
+
1577
1665
  /**
1578
1666
  * Optimizes the visibility of the floating element by flipping the `placement`
1579
1667
  * in order to keep it in view when the preferred placement(s) will overflow the
@@ -1772,6 +1860,7 @@ class AuroFloatingUI {
1772
1860
  // Define the middlware for the floater configuration
1773
1861
  const middleware = [
1774
1862
  offset(this.element.floaterConfig?.offset || 0),
1863
+ ...this.element.floaterConfig?.shift ? [shift()] : [], // Add shift middleware if shift is enabled.
1775
1864
  ...this.element.floaterConfig?.flip ? [flip()] : [], // Add flip middleware if flip is enabled.
1776
1865
  ...this.element.floaterConfig?.autoPlacement ? [autoPlacement()] : [], // Add autoPlacement middleware if autoPlacement is enabled.
1777
1866
  ];
@@ -3165,7 +3254,7 @@ var classicLayoutCss = css`:host([layout*=classic]){position:relative;max-width:
3165
3254
 
3166
3255
  var styleEmphasizedCss = css`.layout-emphasized .chevron,.layout-emphasized-left .chevron,.layout-emphasized-right .chevron{margin-right:var(--ds-size-300, 1.5rem)}:host([layout*=emphasized][shape*=pill]:not([layout*=right])) .leftIndent{width:calc(100% - var(--ds-size-300, 1.5rem));margin-left:var(--ds-size-300, 1.5rem)}:host([layout*=emphasized][shape*=pill]:not([layout*=left])) .rightIndent{width:calc(100% - var(--ds-size-300, 1.5rem));margin-right:var(--ds-size-300, 1.5rem)}:host([layout*=emphasized][shape*=pill]:not([layout*=left]):not([layout*=right])) .rightIndent{width:calc(100% - var(--ds-size-600, 3rem));margin-right:var(--ds-size-300, 1.5rem)}`;
3167
3256
 
3168
- var styleSnowflakeCss = css`:host([layout*=snowflake]) .leftIndent{width:calc(100% - var(--ds-size-600, 3rem));margin-left:var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .rightIndent{width:calc(100% - var(--ds-size-600, 3rem));margin-right:var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .trigger,:host([layout*=snowflake]) .helpText{text-align:center}.layout-snowflake .chevron,.layout-snowflake-left .chevron,.layout-snowflake-right .chevron{margin-right:var(--ds-size-300, 1.5rem)}`;
3257
+ var styleSnowflakeCss = css`:host([layout*=snowflake]) .leftIndent{width:calc(100% - var(--ds-size-400, 2rem));margin-left:var(--ds-size-200, 1rem)}:host([layout*=snowflake]) .rightIndent{width:calc(100% - var(--ds-size-400, 2rem));margin-right:var(--ds-size-200, 1rem)}:host([layout*=snowflake]) .trigger,:host([layout*=snowflake]) .helpText{text-align:center}.layout-snowflake .chevron,.layout-snowflake-left .chevron,.layout-snowflake-right .chevron{margin-right:var(--ds-size-200, 1rem)}`;
3169
3258
 
3170
3259
  var colorCss = css`:host([error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]){--ds-auro-helptext-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][error]){--ds-auro-helptext-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8)}.helptext-wrapper{color:var(--ds-auro-helptext-color)}`;
3171
3260
 
@@ -3556,6 +3645,7 @@ class AuroDropdown extends AuroElement {
3556
3645
  this.placement = 'bottom-start';
3557
3646
  this.offset = 0;
3558
3647
  this.noFlip = false;
3648
+ this.shift = false;
3559
3649
  this.autoPlacement = false;
3560
3650
 
3561
3651
  /**
@@ -3620,6 +3710,7 @@ class AuroDropdown extends AuroElement {
3620
3710
  return {
3621
3711
  placement: this.placement,
3622
3712
  flip: !this.noFlip,
3713
+ shift: this.shift,
3623
3714
  autoPlacement: this.autoPlacement,
3624
3715
  offset: this.offset,
3625
3716
  };
@@ -3820,6 +3911,15 @@ class AuroDropdown extends AuroElement {
3820
3911
  reflect: true
3821
3912
  },
3822
3913
 
3914
+ /**
3915
+ * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
3916
+ * @default false
3917
+ */
3918
+ shift: {
3919
+ type: Boolean,
3920
+ reflect: true
3921
+ },
3922
+
3823
3923
  /**
3824
3924
  * If declared, the dropdown will not hide when moving focus outside the element.
3825
3925
  */