@linzjs/lui 21.39.2-2 → 21.39.3-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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [21.39.2](https://github.com/linz/lui/compare/v21.39.1...v21.39.2) (2024-07-10)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **Splitter:** refactor splitter to remove animation glitches ([#1136](https://github.com/linz/lui/issues/1136)) ([2fce2d1](https://github.com/linz/lui/commit/2fce2d1a5f0df5418bc95374be29762a51b318ec))
7
+
1
8
  ## [21.39.1](https://github.com/linz/lui/compare/v21.39.0...v21.39.1) (2024-07-07)
2
9
 
3
10
 
@@ -3,7 +3,7 @@ import { LuiButtonProps } from '../LuiButton/LuiButton';
3
3
  import { ISearchGroupedResult, ISearchResult } from '../LuiSearchInput/ResultsDisplay';
4
4
  export interface ISearchMenuOption {
5
5
  name?: string;
6
- groupTitle?: string;
6
+ groupTitle?: string | ReactElement;
7
7
  groupDivider?: boolean;
8
8
  value: string;
9
9
  title: string;
@@ -12,6 +12,8 @@ export interface ISearchMenuOption {
12
12
  getOption: (input: any) => Promise<ISearchResult[] | ISearchGroupedResult[]>;
13
13
  onSelectOption: (selectedOption: any) => void;
14
14
  renderItem?: (item: any) => ReactElement;
15
+ icon?: ReactElement;
16
+ columnBreak?: boolean;
15
17
  }
16
18
  export interface ILuiSearchBoxProps {
17
19
  searchBoxOptions: ISearchMenuOption[];
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ export declare enum IconType {
3
+ TITLE = "Title",
4
+ SURVEY = "Survey",
5
+ VECTOR = "Vector",
6
+ INSTRUMENT = "Instrument",
7
+ PARCEL = "Parcel",
8
+ MARK = "Mark",
9
+ SUPPORTING_DOCUMENT = "Supporting document",
10
+ PENDING_DEALING = "Pending dealing",
11
+ REQUEST = "REQUEST"
12
+ }
13
+ interface ProductIconProps {
14
+ iconType: IconType;
15
+ style?: React.CSSProperties;
16
+ }
17
+ declare const ProductIcon: React.FC<ProductIconProps>;
18
+ export default ProductIcon;
package/dist/index.js CHANGED
@@ -42641,16 +42641,20 @@ var resultStyle = { verticalAlign: 'middle' };
42641
42641
  * See examples in SearchBox in storybook.
42642
42642
  */
42643
42643
  var LuiSearchBox = function (_a) {
42644
+ var _b;
42645
+ var _c, _d;
42644
42646
  var searchBoxOptions = _a.searchBoxOptions, initOptionValue = _a.initOptionValue, onMenuSelect = _a.onMenuSelect, autoFocus = _a.autoFocus;
42645
42647
  var initOption = searchBoxOptions.find(function (_a) {
42646
42648
  var value = _a.value;
42647
42649
  return value === initOptionValue;
42648
42650
  });
42649
- var _b = React.useState(initOption ? initOption : searchBoxOptions[0]), selectedMenuOption = _b[0], setSelectedMenuOption = _b[1];
42651
+ var _e = React.useState(initOption ? initOption : searchBoxOptions[0]), selectedMenuOption = _e[0], setSelectedMenuOption = _e[1];
42650
42652
  //auto focus every time select a menu item
42651
- var _c = React.useState(false), focusUpdate = _c[0], setFocusUpdate = _c[1];
42653
+ var _f = React.useState(false), focusUpdate = _f[0], setFocusUpdate = _f[1];
42652
42654
  //don't focus when first time display
42653
- var _d = React.useState(false), isFocus = _d[0], setIsFocus = _d[1];
42655
+ var _g = React.useState(false), isFocus = _g[0], setIsFocus = _g[1];
42656
+ var _h = React.useState(false), showStacked = _h[0], setShowStacked = _h[1];
42657
+ var containerRef = React.useRef(null);
42654
42658
  React.useEffect(function () {
42655
42659
  var updatedOption = searchBoxOptions.find(function (_a) {
42656
42660
  var value = _a.value;
@@ -42659,6 +42663,16 @@ var LuiSearchBox = function (_a) {
42659
42663
  if (updatedOption)
42660
42664
  setSelectedMenuOption(updatedOption);
42661
42665
  }, [initOptionValue]);
42666
+ React.useEffect(function () {
42667
+ var _a, _b;
42668
+ console.log('REF width: ', (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.offsetWidth);
42669
+ if (containerRef.current && containerRef.current.offsetWidth <= 448) {
42670
+ setShowStacked(true);
42671
+ }
42672
+ else if (showStacked) {
42673
+ setShowStacked(false);
42674
+ }
42675
+ }, [containerRef, containerRef.current, (_c = containerRef.current) === null || _c === void 0 ? void 0 : _c.offsetWidth]);
42662
42676
  var handleMenuSelected = function (e) {
42663
42677
  setSelectedMenuOption(findSelectedOption(e.value));
42664
42678
  if (onMenuSelect !== undefined)
@@ -42673,8 +42687,27 @@ var LuiSearchBox = function (_a) {
42673
42687
  });
42674
42688
  return selectedOption ? selectedOption : searchBoxOptions[0];
42675
42689
  };
42676
- return (React__default["default"].createElement("div", { className: "LuiSearchBox" },
42677
- React__default["default"].createElement(LuiSelectMenu, { menuButton: React__default["default"].createElement(LuiSearchBoxButton, null, selectedMenuOption.title) }, renderSelectMenu(searchBoxOptions, handleMenuSelected)),
42690
+ var numberOfColumns = showStacked
42691
+ ? 1
42692
+ : searchBoxOptions.filter(function (option) { return option.columnBreak; }).length + 1;
42693
+ var multiColumnClass = "lui-select-menu-columns-".concat(numberOfColumns);
42694
+ return (React__default["default"].createElement("div", { className: clsx({
42695
+ LuiSearchBox: true,
42696
+ 'LuiSearchBox-stacked': showStacked
42697
+ }), ref: containerRef },
42698
+ React__default["default"].createElement(LuiSelectMenu, { menuButton: React__default["default"].createElement(LuiSearchBoxButton, null,
42699
+ React__default["default"].createElement("span", { style: { display: 'flex' } }, (_d = selectedMenuOption.icon) !== null && _d !== void 0 ? _d : undefined,
42700
+ React__default["default"].createElement("span", { style: {
42701
+ marginLeft: '5px',
42702
+ overflow: 'hidden',
42703
+ lineHeight: '22px',
42704
+ maxHeight: '44px'
42705
+ } }, selectedMenuOption.title))), menuClassName: clsx((_b = {
42706
+ 'lui-select-menu': true
42707
+ },
42708
+ _b[multiColumnClass] = numberOfColumns > 1,
42709
+ _b['lui-select-menu-stacked'] = showStacked,
42710
+ _b)) }, renderSelectMenu(searchBoxOptions, handleMenuSelected, showStacked)),
42678
42711
  React__default["default"].createElement("div", { className: "LuiSearchBox-right" },
42679
42712
  React__default["default"].createElement(LuiSearchInput, { name: selectedMenuOption.name ? selectedMenuOption.name : undefined, minCharactersForSearch: 2, placeholderText: selectedMenuOption.placeholderText, getOptions: selectedMenuOption.getOption, onSelectOption: selectedMenuOption.onSelectOption, renderItem: selectedMenuOption.renderItem
42680
42713
  ? selectedMenuOption.renderItem
@@ -42687,12 +42720,27 @@ var LuiSearchBoxButton = React__default["default"].forwardRef(function (props, r
42687
42720
  props.children,
42688
42721
  React__default["default"].createElement(LuiIcon, { size: "md", name: 'ic_keyboard_arrow_down', className: 'LuiSearchBox-button-icon', alt: '' })));
42689
42722
  });
42690
- var renderSelectMenu = function (items, onClick) { return (React__default["default"].createElement(React__default["default"].Fragment, null, items.map(function (item) {
42691
- return (React__default["default"].createElement(React__default["default"].Fragment, { key: item.value },
42692
- item.groupDivider ? React__default["default"].createElement(LuiSelectMenuDivider, null) : null,
42693
- item.groupTitle ? (React__default["default"].createElement(LuiSelectMenuHeader, null, item.groupTitle)) : null,
42694
- React__default["default"].createElement(LuiSelectMenuItem, { "data-testid": "select-box-".concat(item.value), value: item.value, onClick: onClick, noPadding: true }, item.title)));
42695
- }))); };
42723
+ var renderSelectMenu = function (items, onClick, singleColumn) {
42724
+ if (singleColumn === void 0) { singleColumn = false; }
42725
+ var columns = [[]];
42726
+ items.forEach(function (item) {
42727
+ if (item.columnBreak && !singleColumn) {
42728
+ columns.push([]);
42729
+ }
42730
+ columns[columns.length - 1].push(item);
42731
+ });
42732
+ return (React__default["default"].createElement("div", { style: { display: 'flex', justifyContent: 'space-between' } }, columns.map(function (column, index) {
42733
+ return (React__default["default"].createElement("div", { style: {
42734
+ flexShrink: 0,
42735
+ flexGrow: index === columns.length - 1 ? 2 : 1
42736
+ }, key: index }, column.map(function (item) {
42737
+ return (React__default["default"].createElement(React__default["default"].Fragment, { key: item.value },
42738
+ item.groupDivider ? React__default["default"].createElement(LuiSelectMenuDivider, null) : null,
42739
+ item.groupTitle ? (React__default["default"].createElement(LuiSelectMenuHeader, null, item.groupTitle)) : null,
42740
+ React__default["default"].createElement(LuiSelectMenuItem, { "data-testid": "select-box-".concat(item.value), value: item.value, onClick: onClick, noPadding: true }, item.title)));
42741
+ })));
42742
+ })));
42743
+ };
42696
42744
 
42697
42745
  exports.LuiSplitButtonPosition = void 0;
42698
42746
  (function (LuiSplitButtonPosition) {
@@ -59229,7 +59277,7 @@ var keyDownHandler = function (e) {
59229
59277
  return valueNow + delta;
59230
59278
  };
59231
59279
 
59232
- var css_248z$4 = "/**\n @deprecated\n */\n/**\n @deprecated\n */\n/**\n @deprecated\n */\n.Splitter {\n display: grid;\n position: relative;\n overflow: hidden;\n opacity: 0;\n}\n.Splitter > :first-child, .Splitter > :nth-child(2) {\n position: relative;\n z-index: 0;\n overflow: auto;\n}\n.Splitter.resizing * {\n pointer-events: none;\n user-select: none;\n}";
59280
+ var css_248z$4 = "/**\n @deprecated\n */\n/**\n @deprecated\n */\n/**\n @deprecated\n */\n.Splitter {\n display: grid;\n position: relative;\n overflow: hidden;\n opacity: 0;\n}\n.Splitter > :first-child, .Splitter > :nth-child(2) {\n position: relative;\n z-index: 0;\n background: #f9f9f9;\n overflow: auto;\n}\n.Splitter.resizing * {\n pointer-events: none;\n user-select: none;\n}";
59233
59281
  styleInject(css_248z$4);
59234
59282
 
59235
59283
  /**