@wipco/sdui 0.39.0 → 0.40.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.
@@ -1,4 +1,4 @@
1
- import { Text } from './chunk-2DJO2RBW.js';
1
+ import { Text } from './chunk-ZNGAR56U.js';
2
2
  import { Switch, Field, Select, Input } from './chunk-LBKIBSHY.js';
3
3
  import { boxed } from './chunk-SE3H5QCS.js';
4
4
  import React, { useMemo } from 'react';
@@ -1,4 +1,4 @@
1
- import { Text } from './chunk-2DJO2RBW.js';
1
+ import { Text } from './chunk-ZNGAR56U.js';
2
2
  import { Field, Input, Select, IconButton, Button } from './chunk-LBKIBSHY.js';
3
3
  import { boxed } from './chunk-SE3H5QCS.js';
4
4
  import { useMemo } from 'react';
@@ -45,12 +45,30 @@ function Grid({
45
45
  }
46
46
  );
47
47
  }
48
- function Row({ justify, gap, align, wrap, className, style, children }) {
48
+ var CONTAINER_ROLES = /* @__PURE__ */ new Set([
49
+ "group",
50
+ "radiogroup",
51
+ "toolbar",
52
+ "list",
53
+ "listitem",
54
+ "tablist",
55
+ "region",
56
+ "status",
57
+ "alert",
58
+ "presentation",
59
+ "none"
60
+ ]);
61
+ function containerRole(role) {
62
+ return role !== void 0 && CONTAINER_ROLES.has(role) ? role : void 0;
63
+ }
64
+ function Row({ justify, gap, align, wrap, role, ariaLabel, className, style, children }) {
49
65
  return /* @__PURE__ */ jsx(
50
66
  "div",
51
67
  {
52
68
  className: joinClass("wp-row", justify === "between" && "wp-row--between", className),
53
69
  style: mergeStyle(containerLayoutStyle({ gap, align, justify, wrap }), style),
70
+ role: containerRole(role),
71
+ "aria-label": ariaLabel,
54
72
  children
55
73
  }
56
74
  );
@@ -65,8 +83,17 @@ function Actions({ justify = "end", gap, align, wrap, className, style, children
65
83
  }
66
84
  );
67
85
  }
68
- function Col({ gap, align, justify, wrap, className, style, children }) {
69
- return /* @__PURE__ */ jsx("div", { className: joinClass("wp-col", className), style: mergeStyle(containerLayoutStyle({ gap, align, justify, wrap }), style), children });
86
+ function Col({ gap, align, justify, wrap, role, ariaLabel, className, style, children }) {
87
+ return /* @__PURE__ */ jsx(
88
+ "div",
89
+ {
90
+ className: joinClass("wp-col", className),
91
+ style: mergeStyle(containerLayoutStyle({ gap, align, justify, wrap }), style),
92
+ role: containerRole(role),
93
+ "aria-label": ariaLabel,
94
+ children
95
+ }
96
+ );
70
97
  }
71
98
  var SPACER_STEPS = /* @__PURE__ */ new Set([1, 2, 3, 4, 5, 6, 8]);
72
99
  function Spacer({ size, className, style }) {
package/dist/index.d.ts CHANGED
@@ -1266,14 +1266,23 @@ interface GridProps extends SduiContainerLayoutProps {
1266
1266
  }
1267
1267
  declare function Grid({ columns, template, gap, align, justify, wrap, padding, className, style, children, }: GridProps): React__default.JSX.Element;
1268
1268
  type Justify = 'start' | 'center' | 'end' | 'between';
1269
- interface RowProps extends SduiContainerLayoutProps {
1269
+ interface SduiContainerRoleProps {
1270
+ /**
1271
+ * 이 상자가 무엇을 묶는지 — 보조기술에게 알린다. 표에 없는 값은 무시된다.
1272
+ * `radiogroup` 을 줄 때는 자식 버튼에 `role: 'radio'` 와 `aria-checked` 를 같이 준다.
1273
+ */
1274
+ role?: string;
1275
+ /** 그룹 이름. `role` 을 준 상자에는 대체로 이름이 필요하다. */
1276
+ ariaLabel?: string;
1277
+ }
1278
+ interface RowProps extends SduiContainerLayoutProps, SduiContainerRoleProps {
1270
1279
  /** 가로 정렬 (기본 start) */
1271
1280
  justify?: Justify;
1272
1281
  className?: string;
1273
1282
  style?: React__default.CSSProperties;
1274
1283
  children?: React__default.ReactNode;
1275
1284
  }
1276
- declare function Row({ justify, gap, align, wrap, className, style, children }: RowProps): React__default.JSX.Element;
1285
+ declare function Row({ justify, gap, align, wrap, role, ariaLabel, className, style, children }: RowProps): React__default.JSX.Element;
1277
1286
  interface ActionsProps extends SduiContainerLayoutProps {
1278
1287
  /** 가로 정렬 — 기본 end(우측) */
1279
1288
  justify?: Justify;
@@ -1288,12 +1297,12 @@ interface ActionsProps extends SduiContainerLayoutProps {
1288
1297
  * `flex-start`인데 이 타입만 `end`로 시작하고, 스펙이 `justify`를 주면 그것이 이긴다.
1289
1298
  */
1290
1299
  declare function Actions({ justify, gap, align, wrap, className, style, children }: ActionsProps): React__default.JSX.Element;
1291
- interface ColProps extends SduiContainerLayoutProps {
1300
+ interface ColProps extends SduiContainerLayoutProps, SduiContainerRoleProps {
1292
1301
  className?: string;
1293
1302
  style?: React__default.CSSProperties;
1294
1303
  children?: React__default.ReactNode;
1295
1304
  }
1296
- declare function Col({ gap, align, justify, wrap, className, style, children }: ColProps): React__default.JSX.Element;
1305
+ declare function Col({ gap, align, justify, wrap, role, ariaLabel, className, style, children }: ColProps): React__default.JSX.Element;
1297
1306
  interface SpacerProps {
1298
1307
  /**
1299
1308
  * 간격 토큰 단계(`--wp-space-N`). 주면 "남는 공간 밀어내기"가 아니라
@@ -1889,4 +1898,4 @@ interface ImageViewerProps {
1889
1898
  */
1890
1899
  declare function ImageViewer({ src, alt, open, onClose }: ImageViewerProps): React__default.ReactPortal | null;
1891
1900
 
1892
- export { Actions, type ActionsProps, Alert, type AlertProps, Avatar, type AvatarProps, Badge, type BadgeProps, type BadgeTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, CALC_OPS, Can, type CanProps, Card, type CardProps, type CascadingSearchOption, Checkbox, type CheckboxProps, Col, type ColProps, type CustomActionHandler, type CustomValidator, DatePickerProps, DateRangePickerProps, Dialog, type DialogProps, Divider, EmptyState, type EmptyStateProps, Field, type FieldProps, Grid, type GridCardConfig, type GridCardRow, type GridProps, Icon, IconButton, type IconButtonProps, type IconProps, ImageViewer, type ImageViewerProps, Input, type InputProps, type Justify, type KeyValueItem, KeyValueList, type KeyValueListProps, type MeterTone, NodeErrorBoundary, OverlayContainerContext, OverlayLayer, PageHead, type PageHeadProps, Pagination, type PaginationProps, ProgressBar, type ProgressBarProps, Radio, type RadioProps, RemoteSearchResults, type RemoteSearchResultsProps, ResultTable, type ResultTableColumn, type ResultTableProps, Row, type RowProps, SduiAction, type SduiAdapter, type SduiAssetContext, type SduiAssetResolver, type SduiBadgeCell, SduiBoxProps, type SduiCanFn, type SduiCanQuery, type SduiCanSetting, type SduiCell, SduiColumnsScale, SduiContainerLayoutProps, type SduiDateCell, SduiDialog, type SduiDispatch, SduiForm, type SduiFormConfig, type SduiFormProps, SduiGapScale, type SduiGridCard, type SduiGridCardAction, type SduiGridCardRow, type SduiIconCell, type SduiImageCell, type SduiLinkCell, type SduiNumberCell, SduiPage, SduiPermissionProvider, type SduiProgressCell, SduiPropValue, type SduiRegistry, SduiRenderer, type SduiRendererProps, type SduiRowCondition, SduiRule, type SduiRuntime, type SduiSearchAction, type SduiSearchColumn, SduiSearchDataProvider, SduiSearchResults, type SduiSearchResultsProps, type SduiTagCell, SduiTextAlignScale, type SduiTextCell, type SduiUseSpec, SduiWeightScale, type SearchAction, type SearchColumn, type SearchFetcher, type SearchField, type SearchFilter, type SearchOption, type SearchPage, SearchResults, type SearchResultsProps, type SearchRow, SearchToolbar, type SearchValues, type SearchViewItem, Section, type SectionProps, SegmentedControl, type SegmentedControlProps, type SegmentedItem, Select, type SelectOption, type SelectOptionRecord, type SelectProps, Show, type ShowProps, SidebarNav, type SidebarNavItem, type SidebarNavProps, type SidebarNavSection, type SortDir, SortHandle, type SortHandleProps, SortableList, type SortableListProps, Spacer, type SpacerProps, type SpecIssue, Spinner, type SpinnerProps, StatCard, type StatCardProps, Switch, type SwitchProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, type TagProps, Text, type TextPreset, type TextProps, Textarea, type TextareaProps, TimePickerProps, Toast, type ToastProps, Tooltip, type TooltipProps, boxed, cascadingValuePaths, cellRenderer, cleanSearchValues, createRegistry, defaultAdapter, defaultRegistry, getOverlayRoot, imageRenderer, includesLooseSearch, joinMultiValue, loadOptionalModule, normalizePageSizes, normalizeSearchText, searchFieldKeys, searchValuesFromParams, sortableDropIndex, sortableMove, splitMultiValue, useOverlayLayer, useRemoteSearchPage, useSduiAssetResolver, useSduiCan, useSduiDispatch, useSduiRuntime, useSduiSandbox, useSearchFetcher, validateSpec };
1901
+ export { Actions, type ActionsProps, Alert, type AlertProps, Avatar, type AvatarProps, Badge, type BadgeProps, type BadgeTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, CALC_OPS, Can, type CanProps, Card, type CardProps, type CascadingSearchOption, Checkbox, type CheckboxProps, Col, type ColProps, type CustomActionHandler, type CustomValidator, DatePickerProps, DateRangePickerProps, Dialog, type DialogProps, Divider, EmptyState, type EmptyStateProps, Field, type FieldProps, Grid, type GridCardConfig, type GridCardRow, type GridProps, Icon, IconButton, type IconButtonProps, type IconProps, ImageViewer, type ImageViewerProps, Input, type InputProps, type Justify, type KeyValueItem, KeyValueList, type KeyValueListProps, type MeterTone, NodeErrorBoundary, OverlayContainerContext, OverlayLayer, PageHead, type PageHeadProps, Pagination, type PaginationProps, ProgressBar, type ProgressBarProps, Radio, type RadioProps, RemoteSearchResults, type RemoteSearchResultsProps, ResultTable, type ResultTableColumn, type ResultTableProps, Row, type RowProps, SduiAction, type SduiAdapter, type SduiAssetContext, type SduiAssetResolver, type SduiBadgeCell, SduiBoxProps, type SduiCanFn, type SduiCanQuery, type SduiCanSetting, type SduiCell, SduiColumnsScale, SduiContainerLayoutProps, type SduiContainerRoleProps, type SduiDateCell, SduiDialog, type SduiDispatch, SduiForm, type SduiFormConfig, type SduiFormProps, SduiGapScale, type SduiGridCard, type SduiGridCardAction, type SduiGridCardRow, type SduiIconCell, type SduiImageCell, type SduiLinkCell, type SduiNumberCell, SduiPage, SduiPermissionProvider, type SduiProgressCell, SduiPropValue, type SduiRegistry, SduiRenderer, type SduiRendererProps, type SduiRowCondition, SduiRule, type SduiRuntime, type SduiSearchAction, type SduiSearchColumn, SduiSearchDataProvider, SduiSearchResults, type SduiSearchResultsProps, type SduiTagCell, SduiTextAlignScale, type SduiTextCell, type SduiUseSpec, SduiWeightScale, type SearchAction, type SearchColumn, type SearchFetcher, type SearchField, type SearchFilter, type SearchOption, type SearchPage, SearchResults, type SearchResultsProps, type SearchRow, SearchToolbar, type SearchValues, type SearchViewItem, Section, type SectionProps, SegmentedControl, type SegmentedControlProps, type SegmentedItem, Select, type SelectOption, type SelectOptionRecord, type SelectProps, Show, type ShowProps, SidebarNav, type SidebarNavItem, type SidebarNavProps, type SidebarNavSection, type SortDir, SortHandle, type SortHandleProps, SortableList, type SortableListProps, Spacer, type SpacerProps, type SpecIssue, Spinner, type SpinnerProps, StatCard, type StatCardProps, Switch, type SwitchProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, type TagProps, Text, type TextPreset, type TextProps, Textarea, type TextareaProps, TimePickerProps, Toast, type ToastProps, Tooltip, type TooltipProps, boxed, cascadingValuePaths, cellRenderer, cleanSearchValues, createRegistry, defaultAdapter, defaultRegistry, getOverlayRoot, imageRenderer, includesLooseSearch, joinMultiValue, loadOptionalModule, normalizePageSizes, normalizeSearchText, searchFieldKeys, searchValuesFromParams, sortableDropIndex, sortableMove, splitMultiValue, useOverlayLayer, useRemoteSearchPage, useSduiAssetResolver, useSduiCan, useSduiDispatch, useSduiRuntime, useSduiSandbox, useSearchFetcher, validateSpec };
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  export { loadOptionalModule } from './chunk-KTKEJHTB.js';
2
2
  import { useSduiDispatch, SduiDialog, useSduiCan, SduiDispatchContext, SduiPermissionProvider } from './chunk-6Q4RZDBA.js';
3
3
  export { SduiDialog, SduiPermissionProvider, useSduiCan, useSduiDispatch } from './chunk-6Q4RZDBA.js';
4
- import { Text, Spacer, Show, Section, Row, PageHead, KeyValueList, Grid, Divider, Col, Actions } from './chunk-2DJO2RBW.js';
5
- export { Actions, Col, Divider, Grid, KeyValueList, PageHead, Row, Section, Show, Spacer, Text } from './chunk-2DJO2RBW.js';
4
+ import { Text, Spacer, Show, Section, Row, PageHead, KeyValueList, Grid, Divider, Col, Actions } from './chunk-ZNGAR56U.js';
5
+ export { Actions, Col, Divider, Grid, KeyValueList, PageHead, Row, Section, Show, Spacer, Text } from './chunk-ZNGAR56U.js';
6
6
  import { ImageViewer } from './chunk-VT3OCB76.js';
7
7
  export { ImageViewer } from './chunk-VT3OCB76.js';
8
8
  import { TimePicker } from './chunk-QLLBS2NM.js';
package/dist/meta.js CHANGED
@@ -256,6 +256,34 @@ var gapProp = {
256
256
  ],
257
257
  group: "layout"
258
258
  };
259
+ var containerRoleProp = {
260
+ name: "role",
261
+ kind: "enum",
262
+ label: "\uBB36\uC74C \uC5ED\uD560",
263
+ description: "\uBCF4\uC870\uAE30\uC220\uC6A9. \uC0DD\uB7B5\uD558\uBA74 \uADF8\uB0E5 \uC0C1\uC790\uB2E4. radiogroup \uC744 \uC904 \uB54C\uB294 \uC790\uC2DD \uBC84\uD2BC\uC5D0 role/aria-checked \uB97C \uAC19\uC774 \uC900\uB2E4.",
264
+ options: [
265
+ { value: "group", label: "\uBB36\uC74C(group)" },
266
+ { value: "radiogroup", label: "\uB2E8\uC77C \uC120\uD0DD \uBB36\uC74C(radiogroup)" },
267
+ { value: "toolbar", label: "\uB3C4\uAD6C \uBAA8\uC74C(toolbar)" },
268
+ { value: "list", label: "\uBAA9\uB85D(list)" },
269
+ { value: "listitem", label: "\uBAA9\uB85D \uD56D\uBAA9(listitem)" },
270
+ { value: "tablist", label: "\uD0ED \uC904(tablist)" },
271
+ { value: "region", label: "\uAD6C\uD68D(region)" },
272
+ { value: "status", label: "\uC0C1\uD0DC \uC54C\uB9BC(status)" },
273
+ { value: "alert", label: "\uACBD\uACE0(alert)" },
274
+ { value: "presentation", label: "\uC758\uBBF8 \uC5C6\uC74C(presentation)" }
275
+ ],
276
+ group: "content",
277
+ advanced: true
278
+ };
279
+ var ariaLabelProp = {
280
+ name: "ariaLabel",
281
+ kind: "string",
282
+ label: "\uC811\uADFC\uC131 \uC774\uB984",
283
+ description: '\uC5ED\uD560\uC744 \uC900 \uBB36\uC74C\uC5D0\uB294 \uB300\uCCB4\uB85C \uC774\uB984\uC774 \uD544\uC694\uD558\uB2E4(\uC608: "\uB300\uC0C1\uC790 \uC9C1\uC704 \uD544\uD130").',
284
+ group: "content",
285
+ advanced: true
286
+ };
259
287
  var gridGapProp = {
260
288
  name: "gap",
261
289
  kind: "enum",
@@ -450,6 +478,8 @@ var ColMeta = {
450
478
  stretchAlignProp,
451
479
  columnJustifyProp,
452
480
  wrapProp,
481
+ containerRoleProp,
482
+ ariaLabelProp,
453
483
  styleProp,
454
484
  classNameProp,
455
485
  growProp,
@@ -596,6 +626,8 @@ var RowMeta = {
596
626
  gapProp,
597
627
  rowAlignProp,
598
628
  wrapProp,
629
+ containerRoleProp,
630
+ ariaLabelProp,
599
631
  styleProp,
600
632
  classNameProp,
601
633
  growProp,
@@ -1,4 +1,4 @@
1
- export { OPTION_TYPES, OptionSchemaEditor } from '../chunk-ZFXEWKFM.js';
2
- import '../chunk-2DJO2RBW.js';
1
+ export { OPTION_TYPES, OptionSchemaEditor } from '../chunk-ALWAWCSB.js';
2
+ import '../chunk-ZNGAR56U.js';
3
3
  import '../chunk-LBKIBSHY.js';
4
4
  import '../chunk-SE3H5QCS.js';
@@ -1,4 +1,4 @@
1
- export { OptionValueFields } from '../chunk-MLOZHGKP.js';
2
- import '../chunk-2DJO2RBW.js';
1
+ export { OptionValueFields } from '../chunk-5AAOEC4Q.js';
2
+ import '../chunk-ZNGAR56U.js';
3
3
  import '../chunk-LBKIBSHY.js';
4
4
  import '../chunk-SE3H5QCS.js';
@@ -34,10 +34,10 @@ import { JsonField } from '../chunk-2VJIERUW.js';
34
34
  export { JsonField } from '../chunk-2VJIERUW.js';
35
35
  import { LiveClock } from '../chunk-I3UJ4ZCQ.js';
36
36
  export { LiveClock } from '../chunk-I3UJ4ZCQ.js';
37
- import { OptionSchemaEditor } from '../chunk-ZFXEWKFM.js';
38
- export { OptionSchemaEditor } from '../chunk-ZFXEWKFM.js';
39
- import { OptionValueFields } from '../chunk-MLOZHGKP.js';
40
- export { OptionValueFields } from '../chunk-MLOZHGKP.js';
37
+ import { OptionSchemaEditor } from '../chunk-ALWAWCSB.js';
38
+ export { OptionSchemaEditor } from '../chunk-ALWAWCSB.js';
39
+ import { OptionValueFields } from '../chunk-5AAOEC4Q.js';
40
+ export { OptionValueFields } from '../chunk-5AAOEC4Q.js';
41
41
  import { OrgChart } from '../chunk-JD62GZLP.js';
42
42
  export { OrgChart } from '../chunk-JD62GZLP.js';
43
43
  import { OrgChartBoard } from '../chunk-DGAGQD35.js';
@@ -61,7 +61,7 @@ export { ImageLightbox } from '../chunk-B6ZBQCSI.js';
61
61
  import { InlineEdit } from '../chunk-SET7XWBR.js';
62
62
  export { InlineEdit } from '../chunk-SET7XWBR.js';
63
63
  import '../chunk-6Q4RZDBA.js';
64
- import '../chunk-2DJO2RBW.js';
64
+ import '../chunk-ZNGAR56U.js';
65
65
  import '../chunk-VT3OCB76.js';
66
66
  import '../chunk-QLLBS2NM.js';
67
67
  import { ApprovalOverridesEditor } from '../chunk-LVCIHZ45.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipco/sdui",
3
- "version": "0.39.0",
3
+ "version": "0.40.0",
4
4
  "description": "WIPCO 서버 주도 UI(SDUI) 렌더러 — JSON 페이지 스펙을 React 컴포넌트로 렌더링",
5
5
  "keywords": [
6
6
  "sdui",