@linzjs/lui 27.0.0 → 28.1.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
@@ -5,6 +5,99 @@
5
5
 
6
6
  * **LuiComboSelect:** restore interface to support styling of the input element. ([#1270](https://github.com/linz/lui/issues/1270)) ([7ce6a13](https://github.com/linz/lui/commit/7ce6a137c7f16ffa3acbe4357569a6eb59ef47db))
7
7
 
8
+ ## [28.1.0](https://github.com/linz/Lui/compare/lui-v28.0.0...lui-v28.1.0) (2026-10-01)
9
+
10
+
11
+ ### Features
12
+
13
+ * **LuiAccordicardStatic:** support clickable headers ([#1420](https://github.com/linz/Lui/issues/1420)) ([692274b](https://github.com/linz/Lui/commit/692274bc3875f3fd488e3d014982284d5a0ef960))
14
+
15
+ ## [28.0.0](https://github.com/linz/Lui/compare/lui-v27.0.1...lui-v28.0.0) (2026-09-24)
16
+
17
+
18
+ ### ⚠ BREAKING CHANGES
19
+
20
+ * Toast updated to disconnect dismissing action from auto dismiss… ([#1413](https://github.com/linz/Lui/issues/1413))
21
+ * SRVTRI-5458 snyk security fixes for govt security reqs v2 ([#1404](https://github.com/linz/Lui/issues/1404))
22
+ * SRVTRI-5458 snyk security fixes for govt security reqs ([#1401](https://github.com/linz/Lui/issues/1401))
23
+
24
+ ### Features
25
+
26
+ * Add enabled flag to LuiFilterCharactersProvider ([#1307](https://github.com/linz/Lui/issues/1307)) ([d7fdfeb](https://github.com/linz/Lui/commit/d7fdfeb482e7de6b0e206c030555d049f3d8842d))
27
+ * adding small switch variation, making normal more legible ([#1379](https://github.com/linz/Lui/issues/1379)) ([2ad4608](https://github.com/linz/Lui/commit/2ad4608e37852be40dc490af556be04c57d6c141))
28
+ * CS-10094 - remove MSW dependency as it is not used. ([#1341](https://github.com/linz/Lui/issues/1341)) ([d849090](https://github.com/linz/Lui/commit/d849090887135ff67e480b70cdd4939578a91154))
29
+ * CS-8474 - filter characters in LuiInput ([#1272](https://github.com/linz/Lui/issues/1272)) ([2b58207](https://github.com/linz/Lui/commit/2b58207f2844eb769d9c274f55a5b1b8e2336dcf))
30
+ * CS-8883 bump lui version ([#1274](https://github.com/linz/Lui/issues/1274)) ([df1334c](https://github.com/linz/Lui/commit/df1334c780ccd55352e79eef366484a54983c4e8))
31
+ * CS-9492 - allows a custom no options found message to be used with LuiSearchInput ([#1340](https://github.com/linz/Lui/issues/1340)) ([ae2ed7c](https://github.com/linz/Lui/commit/ae2ed7cba04ed5231d62c6f019a23c17f1eadc29))
32
+ * enable snyk ([#1410](https://github.com/linz/Lui/issues/1410)) ([457c6b0](https://github.com/linz/Lui/commit/457c6b0f8b989316c67f6b064edb2d36e52096be))
33
+ * Exception request added ([#1305](https://github.com/linz/Lui/issues/1305)) ([193c704](https://github.com/linz/Lui/commit/193c704e11945d2506c14283f75ccb3771b4789d))
34
+ * ic_deeds ([#1328](https://github.com/linz/Lui/issues/1328)) ([861fba8](https://github.com/linz/Lui/commit/861fba8fdcf8b84917d1f43c597d6651f21ad8b2))
35
+ * icon, high_priority ([#1323](https://github.com/linz/Lui/issues/1323)) ([aca7c69](https://github.com/linz/Lui/commit/aca7c697a6eb44038b830022052caf57dd41e5e9))
36
+ * lui icons ([#1354](https://github.com/linz/Lui/issues/1354)) ([5d29b8d](https://github.com/linz/Lui/commit/5d29b8de4651eecdadf0034c28a06f0e2dd327f8))
37
+ * **LuiAccordion:** support right-aligned chevron ([#1414](https://github.com/linz/Lui/issues/1414)) ([89908f9](https://github.com/linz/Lui/commit/89908f9945df9565579699ea0a23794b96a0da4d))
38
+ * **LuiBannerV2:** SEARCH-8308 allow a custom icon to be passed through to a banner ([#1374](https://github.com/linz/Lui/issues/1374)) ([94ae1e2](https://github.com/linz/Lui/commit/94ae1e242a45082b90806a8812652e10b1b3c4b7))
39
+ * **LuiButton:** Add danger button intent ([#1359](https://github.com/linz/Lui/issues/1359)) ([292b7ac](https://github.com/linz/Lui/commit/292b7ac323e10e17e77fcdad4e84249470954ea5))
40
+ * **LuiButton:** SRVPUW-2489 Add 'loading' prop to LuiButton ([#1355](https://github.com/linz/Lui/issues/1355)) ([fa0ad4f](https://github.com/linz/Lui/commit/fa0ad4ff91cb3a56d0d63e614250af54123c0306))
41
+ * **LuiIcon:** add parcel topology icon for SURVEY-28094 ([#1406](https://github.com/linz/Lui/issues/1406)) ([33213db](https://github.com/linz/Lui/commit/33213db8efb9b71b704dd0688c38da7a9484296e))
42
+ * **LuiSearchInput:** prevent internal clear ([#1285](https://github.com/linz/Lui/issues/1285)) ([a8a8e93](https://github.com/linz/Lui/commit/a8a8e93fbf2c75c7dc640d548b698dd90593abb5))
43
+ * new icon ([#1317](https://github.com/linz/Lui/issues/1317)) ([2c0e97e](https://github.com/linz/Lui/commit/2c0e97eae4cf4826c14e751b79918686af4022ba))
44
+ * new icons ([#1316](https://github.com/linz/Lui/issues/1316)) ([2bfa51c](https://github.com/linz/Lui/commit/2bfa51c25284f6fe90512fab0033fb4b413e7c8b))
45
+ * new lui Icons ([#1292](https://github.com/linz/Lui/issues/1292)) ([09ad01d](https://github.com/linz/Lui/commit/09ad01d22b7ba1dca208710263bde97a60bb1d7b))
46
+ * pnx exit icon ([#1330](https://github.com/linz/Lui/issues/1330)) ([6f44d8b](https://github.com/linz/Lui/commit/6f44d8b2e8de7416ba0c9971d3e5ca23aab7de87))
47
+ * Remove this story as it's in common-js ([#1338](https://github.com/linz/Lui/issues/1338)) ([5cb0468](https://github.com/linz/Lui/commit/5cb04686874d908204bbb5af299fb0d4febb56ab))
48
+ * slide icons for sysadmin ([#1343](https://github.com/linz/Lui/issues/1343)) ([5cc9d2b](https://github.com/linz/Lui/commit/5cc9d2b74dbaf7eba2f1c750fb8efae5feb758c4))
49
+ * SRVTRI-4577 new design of file upload input ([#1294](https://github.com/linz/Lui/issues/1294)) ([5c07ee7](https://github.com/linz/Lui/commit/5c07ee71e796d6b2ae217d2febae72491d5133b0))
50
+ * SRVTRI-5011 add class to lui mini spinner also hide icons warnings ([#1391](https://github.com/linz/Lui/issues/1391)) ([dfe0ac4](https://github.com/linz/Lui/commit/dfe0ac4f23d2b1b7600085a3cca3847679056114))
51
+ * structured data icon ([#1380](https://github.com/linz/Lui/issues/1380)) ([f9b0546](https://github.com/linz/Lui/commit/f9b05468f117d520f1b75ce2779d78bdc7399389))
52
+ * updated footer logo ([#1357](https://github.com/linz/Lui/issues/1357)) ([c5aee5d](https://github.com/linz/Lui/commit/c5aee5da8a116615869f45802e023f9edd100e36))
53
+ * **useToast:** Remove dismiss button from info and success toasts ([#1334](https://github.com/linz/Lui/issues/1334)) ([eaf35e2](https://github.com/linz/Lui/commit/eaf35e2fc9cf4e04b54e96a8dfe941ae37ac7816))
54
+
55
+
56
+ ### Bug Fixes
57
+
58
+ * **ci:** configure starting point for release please ([#1278](https://github.com/linz/Lui/issues/1278)) ([892aa54](https://github.com/linz/Lui/commit/892aa549ec5280ab6b37b5b2f76fc16a8f24f5b6))
59
+ * **ci:** use correct npm registry ([#1282](https://github.com/linz/Lui/issues/1282)) ([d33375b](https://github.com/linz/Lui/commit/d33375b1ee42c7c7aa883d3edfea5d411bfaeeda))
60
+ * **ci:** use correct token for release please ([#1276](https://github.com/linz/Lui/issues/1276)) ([be3f5ba](https://github.com/linz/Lui/commit/be3f5bacdc53e5d17195cad762645a979cf7bb9f))
61
+ * **ci:** use enablement PAT for npm publish ([#1280](https://github.com/linz/Lui/issues/1280)) ([4c0d007](https://github.com/linz/Lui/commit/4c0d007489e22ccd5c3e636e57d36c198bbfa46e))
62
+ * correctly dependency type for storybook-addon-tag-badges ([#1303](https://github.com/linz/Lui/issues/1303)) ([ea79690](https://github.com/linz/Lui/commit/ea79690db90ce924f66d5ca3cbb5a2762644eb3c))
63
+ * CS-9278 missing permission ([#1296](https://github.com/linz/Lui/issues/1296)) ([e4e8796](https://github.com/linz/Lui/commit/e4e8796a93da30806dda6984265b5561a4ed0041))
64
+ * CS-9278 replace auth token ([#1295](https://github.com/linz/Lui/issues/1295)) ([09c4378](https://github.com/linz/Lui/commit/09c4378201829e0d4423689fb54d9aec20e4ffe4))
65
+ * **deps:** move svgo to devDependencies and bump to 4.1.0 ([#1398](https://github.com/linz/Lui/issues/1398)) ([c8f8fa6](https://github.com/linz/Lui/commit/c8f8fa66c9e45b8925223c330552bfb057214006))
66
+ * icon name ([#1320](https://github.com/linz/Lui/issues/1320)) ([3517cb1](https://github.com/linz/Lui/commit/3517cb15f9e4e231b7d0e86cade2f5bf7db02a06))
67
+ * icon not displaying correctly, added new icons ([#1377](https://github.com/linz/Lui/issues/1377)) ([c7da281](https://github.com/linz/Lui/commit/c7da281d8105c9f314c77e98cf6a84de3b7979ef))
68
+ * lui select input background color to snow ([#1361](https://github.com/linz/Lui/issues/1361)) ([83a686a](https://github.com/linz/Lui/commit/83a686a5ba9eea8f59eeb34d84c18a212c968521))
69
+ * **LuiListBullet:** Remove per-item margin-top and apply to list container ([e5acc75](https://github.com/linz/Lui/commit/e5acc75e75a22655e5c9f4eac3794004412f98d3))
70
+ * **LuiModal:** add tabindex prop for modal controller ([45d8a36](https://github.com/linz/Lui/commit/45d8a36a4cc723559de1caaa89a9a38de7a10045))
71
+ * **LuiModal:** add tabindex prop for modal controller ([45d8a36](https://github.com/linz/Lui/commit/45d8a36a4cc723559de1caaa89a9a38de7a10045))
72
+ * **LuiModal:** SEARCH-7756 add tabindex prop for modal controller ([#1290](https://github.com/linz/Lui/issues/1290)) ([45d8a36](https://github.com/linz/Lui/commit/45d8a36a4cc723559de1caaa89a9a38de7a10045))
73
+ * release-please ([#1298](https://github.com/linz/Lui/issues/1298)) ([a458fad](https://github.com/linz/Lui/commit/a458fad24d0549e5a7c5ff9bfc5cd63f3bbb0d0f))
74
+ * release-please ([#1300](https://github.com/linz/Lui/issues/1300)) ([246f998](https://github.com/linz/Lui/commit/246f998badd7005bfd96b2e9777b1a7b15c19a5c))
75
+ * remove stale aria-hidden from #root when LuiModalV2 unmounts ([#1325](https://github.com/linz/Lui/issues/1325)) ([008ee91](https://github.com/linz/Lui/commit/008ee91d3e9494feda5ac408598852f7cc3b4301))
76
+ * removes some unused deps that were SNYK ([#1310](https://github.com/linz/Lui/issues/1310)) ([e9f28ac](https://github.com/linz/Lui/commit/e9f28acdfd9b672789af38b0fcb6b1039cbcbe02))
77
+ * replace classic PAT with fine-grained app token ENABLE-6677 ([#1314](https://github.com/linz/Lui/issues/1314)) ([b530176](https://github.com/linz/Lui/commit/b530176772060193236ea386e0311a537e13007e))
78
+ * SRVTRI-5363 LuiSwitch changes caused formatting change ([#1409](https://github.com/linz/Lui/issues/1409)) ([f0de019](https://github.com/linz/Lui/commit/f0de01968742183e8b385951cc87ad2a74d792b4))
79
+ * SURVEY-28227 Support splitter dragging in popped out window ([#1416](https://github.com/linz/Lui/issues/1416)) ([df6937d](https://github.com/linz/Lui/commit/df6937d56d4a5895e939e3b24f2c5f84c9b25985))
80
+ * TITLE-9163 Use min-height: 100vh instead of height: 100% in LuiErrorPage ([#1336](https://github.com/linz/Lui/issues/1336)) ([355d265](https://github.com/linz/Lui/commit/355d2656982b476f56628cd5eb5c32a035d66119))
81
+ * Toast updated to disconnect dismissing action from auto dismiss… ([#1413](https://github.com/linz/Lui/issues/1413)) ([4cc40ab](https://github.com/linz/Lui/commit/4cc40abea7bf4cbc79fd8fc5fa4039f7ef6ee078))
82
+
83
+
84
+ ### Reverts
85
+
86
+ * remove parcel topology icon (SURVEY-28094) ([#1408](https://github.com/linz/Lui/issues/1408)) ([2fd86f3](https://github.com/linz/Lui/commit/2fd86f3b43b563a6e31767a684a3dee23155f7a7))
87
+
88
+
89
+ ### Miscellaneous Chores
90
+
91
+ * SRVTRI-5458 snyk security fixes for govt security reqs ([#1401](https://github.com/linz/Lui/issues/1401)) ([58643d6](https://github.com/linz/Lui/commit/58643d68573ef4257225442451e95eed8967210d))
92
+ * SRVTRI-5458 snyk security fixes for govt security reqs v2 ([#1404](https://github.com/linz/Lui/issues/1404)) ([18503e3](https://github.com/linz/Lui/commit/18503e3dcbe43abf921aba9f1b9679beee7d671c))
93
+
94
+ ## [27.0.1](https://github.com/linz/Lui/compare/lui-v27.0.0...lui-v27.0.1) (2026-09-24)
95
+
96
+
97
+ ### Bug Fixes
98
+
99
+ * SURVEY-28227 Support splitter dragging in popped out window ([#1416](https://github.com/linz/Lui/issues/1416)) ([df6937d](https://github.com/linz/Lui/commit/df6937d56d4a5895e939e3b24f2c5f84c9b25985))
100
+
8
101
  ## [27.0.0](https://github.com/linz/Lui/compare/lui-v26.2.0...lui-v27.0.0) (2026-09-10)
9
102
 
10
103
 
@@ -5,5 +5,6 @@ export interface IAccordicardStatic {
5
5
  headerContent: React.ReactNode;
6
6
  className?: string;
7
7
  warning?: boolean;
8
+ expandOnHeaderClick?: boolean;
8
9
  }
9
10
  export declare const LuiAccordicardStatic: (props: IAccordicardStatic) => React.JSX.Element;
@@ -1,6 +1,7 @@
1
1
  import { RefObject } from 'react';
2
2
  /**
3
- * It captures window events to report a new position.
3
+ * It captures events on the separator's own window to report a new position,
4
+ * so resizing also works when the Splitter renders in another window (e.g. a popout).
4
5
  * Provides necessary handlers for separator.
5
6
  */
6
7
  export declare const useMoveSeparator: (separator: RefObject<HTMLDivElement | null>, resize: (val: number) => void) => {
package/dist/index.js CHANGED
@@ -33999,16 +33999,32 @@ const LuiAccordicard = (props) => {
33999
33999
  };
34000
34000
 
34001
34001
  const LuiAccordicardStatic = (props) => {
34002
- const { defaultToOpen = false, children, headerContent } = props;
34002
+ const { defaultToOpen = false, children, headerContent, expandOnHeaderClick = false, } = props;
34003
34003
  const [isOpen, setIsOpen] = React.useState(defaultToOpen);
34004
- return (React__default["default"].createElement("div", { className: clsx('LuiAccordicardStatic', isOpen ? 'LuiAccordicardStatic--isOpen' : null, props.warning ? 'LuiAccordicardStatic--warning' : null, props.className) },
34004
+ const contentId = React.useId();
34005
+ const toggle = () => setIsOpen((currentIsOpen) => !currentIsOpen);
34006
+ const isInteractiveTarget = (target, currentTarget) => {
34007
+ if (!(target instanceof Element))
34008
+ return false;
34009
+ const interactiveTarget = target.closest('a, button, input, label, select, textarea, summary, [contenteditable="true"], [tabindex]:not([tabindex="-1"]), [role="button"], [role="checkbox"], [role="combobox"], [role="link"], [role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="option"], [role="radio"], [role="switch"], [role="tab"], [role="textbox"], [role="spinbutton"]');
34010
+ return interactiveTarget !== null && interactiveTarget !== currentTarget;
34011
+ };
34012
+ const handleHeaderClick = (event) => {
34013
+ if (!expandOnHeaderClick)
34014
+ return;
34015
+ if (isInteractiveTarget(event.target, event.currentTarget))
34016
+ return;
34017
+ toggle();
34018
+ };
34019
+ return (React__default["default"].createElement("div", { className: clsx('LuiAccordicardStatic', isOpen ? 'LuiAccordicardStatic--isOpen' : null, props.warning ? 'LuiAccordicardStatic--warning' : null, expandOnHeaderClick ? 'LuiAccordicardStatic--clickableHeader' : null, props.className) },
34005
34020
  props.warning && (React__default["default"].createElement("div", { className: "LuiAccordicardStatic-sideBar" },
34006
34021
  React__default["default"].createElement(LuiIcon, { className: "LuiAccordicardStatic-warningIcon", alt: "Accordicard warning", name: 'ic_warning', size: 'md' }))),
34007
- React__default["default"].createElement("div", { className: "LuiAccordicardStatic-header" },
34022
+ React__default["default"].createElement("div", { className: "LuiAccordicardStatic-header", onClick: handleHeaderClick },
34023
+ expandOnHeaderClick && (React__default["default"].createElement("button", { "aria-controls": contentId, "aria-expanded": isOpen, "aria-label": "Expand and collapse panel", className: "LuiAccordicardStatic-headerToggle", onClick: toggle, type: "button" })),
34008
34024
  React__default["default"].createElement("div", { className: "LuiAccordicardStatic-headerContent" }, headerContent)),
34009
- React__default["default"].createElement("div", { className: clsx('LuiAccordicardStatic-contentWrapper', isOpen ? 'LuiAccordicardStatic-contentWrapper--isOpen' : null) },
34025
+ React__default["default"].createElement("div", { id: contentId, className: clsx('LuiAccordicardStatic-contentWrapper', isOpen ? 'LuiAccordicardStatic-contentWrapper--isOpen' : null) },
34010
34026
  React__default["default"].createElement("div", { className: clsx('LuiAccordicardStatic-content', isOpen ? 'LuiAccordicardStatic-content--isOpen' : null) }, isOpen ? children : React__default["default"].createElement(React__default["default"].Fragment, null))),
34011
- React__default["default"].createElement("button", { "aria-label": isOpen ? 'Expanded' : 'Closed', className: "LuiAccordicardStatic-trigger", onClick: () => setIsOpen(!isOpen), type: "button" },
34027
+ React__default["default"].createElement("button", { "aria-label": isOpen ? 'Expanded' : 'Closed', className: "LuiAccordicardStatic-trigger", onClick: toggle, type: "button" },
34012
34028
  React__default["default"].createElement(LuiIcon, { className: clsx('LuiAccordicardStatic-chevron', isOpen ? 'LuiAccordicardStatic-chevron--isOpen' : null), name: 'ic_expand_more', alt: "expand", title: "Expand and collapse panel", size: "md" }))));
34013
34029
  };
34014
34030
 
@@ -42189,13 +42205,15 @@ const transition = (props) => {
42189
42205
  };
42190
42206
 
42191
42207
  /**
42192
- * It captures window events to report a new position.
42208
+ * It captures events on the separator's own window to report a new position,
42209
+ * so resizing also works when the Splitter renders in another window (e.g. a popout).
42193
42210
  * Provides necessary handlers for separator.
42194
42211
  */
42195
42212
  const useMoveSeparator = (separator, resize) => {
42196
42213
  const [resizing, setResizing] = React.useState(false);
42197
42214
  const values = () => getSeparatorAttributes({ ref: separator });
42198
42215
  React.useEffect(() => {
42216
+ var _a, _b;
42199
42217
  const move = (e) => {
42200
42218
  var _a;
42201
42219
  const key = values().orientation === 'horizontal' ? 'clientY' : 'clientX';
@@ -42207,13 +42225,14 @@ const useMoveSeparator = (separator, resize) => {
42207
42225
  }
42208
42226
  };
42209
42227
  const mouseup = () => setResizing(false);
42210
- window.addEventListener('mousemove', move);
42211
- window.addEventListener('touchmove', move);
42212
- window.addEventListener('click', mouseup);
42228
+ const ownerWindow = (_b = (_a = separator.current) === null || _a === void 0 ? void 0 : _a.ownerDocument.defaultView) !== null && _b !== void 0 ? _b : window;
42229
+ ownerWindow.addEventListener('mousemove', move);
42230
+ ownerWindow.addEventListener('touchmove', move);
42231
+ ownerWindow.addEventListener('click', mouseup);
42213
42232
  return () => {
42214
- window.removeEventListener('mousemove', move);
42215
- window.removeEventListener('touchmove', move);
42216
- window.removeEventListener('click', mouseup);
42233
+ ownerWindow.removeEventListener('mousemove', move);
42234
+ ownerWindow.removeEventListener('touchmove', move);
42235
+ ownerWindow.removeEventListener('click', mouseup);
42217
42236
  };
42218
42237
  }, [separator, resizing]);
42219
42238
  React.useEffect(() => {