@zohodesk/library-platform 1.2.0-exp.4 → 1.2.0-exp.45

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 (167) hide show
  1. package/es/.DS_Store +0 -0
  2. package/es/bc/sort-by/SortOrderEnum.js +8 -0
  3. package/es/cc/date/Properties.js +0 -15
  4. package/es/cc/fields/field/Properties.js +1 -8
  5. package/es/cc/flex-container/Properties.js +79 -0
  6. package/es/cc/flex-container/Types.js +39 -0
  7. package/es/cc/flex-container/index.js +2 -0
  8. package/es/cc/form/Properties.js +0 -8
  9. package/es/cc/label/Properties.js +5 -12
  10. package/es/cc/multi-select/Properties.js +1 -8
  11. package/es/cc/section/Properties.js +1 -8
  12. package/es/cc/select/Properties.js +1 -8
  13. package/es/cc/tags/model/TagModel.js +26 -0
  14. package/es/cc/textarea/Properties.js +0 -15
  15. package/es/cc/textbox/Properties.js +1 -8
  16. package/es/flex-layout/.DS_Store +0 -0
  17. package/es/index.js +6 -4
  18. package/es/library/behaviours/sort-by/adapters/controllers/SortBy.js +28 -0
  19. package/es/library/behaviours/sort-by/applications/usecases/SortBy.js +28 -0
  20. package/es/library/behaviours/sort-by/frameworks/ui/DemoBehaviour.js +20 -0
  21. package/es/library/custom-component/domain/entities/SlotValidator.js +84 -0
  22. package/es/library/custom-component/frameworks/ui/CustomComponentFactory.js +56 -0
  23. package/es/library/dot/components/form/adapters/presenter/TransformState.js +1 -3
  24. package/es/library/dot/components/form/frameworks/ui/FormView.js +3 -6
  25. package/es/library/dot/components/form/frameworks/ui/sub-components/Footer.js +6 -16
  26. package/es/library/dot/components/form/frameworks/ui/sub-components/Header.js +6 -16
  27. package/es/library/dot/components/form/frameworks/ui/sub-components/Sections.js +2 -4
  28. package/es/library/dot/components/form-fields/checkbox/frameworks/ui/CheckboxView.js +3 -6
  29. package/es/library/dot/components/form-fields/currency/frameworks/ui/CurrencyView.js +3 -6
  30. package/es/library/dot/components/form-fields/date/frameworks/ui/DateView.js +3 -6
  31. package/es/library/dot/components/form-fields/datetime/frameworks/ui/DateTimeView.js +3 -6
  32. package/es/library/dot/components/form-fields/decimal/frameworks/ui/DecimalView.js +3 -6
  33. package/es/library/dot/components/form-fields/email/frameworks/ui/EmailView.js +3 -6
  34. package/es/library/dot/components/form-fields/field/FieldItem.js +2 -4
  35. package/es/library/dot/components/form-fields/lookup/frameworks/ui/LookupView.js +3 -6
  36. package/es/library/dot/components/form-fields/multi-select/frameworks/ui/MultiSelectView.js +4 -7
  37. package/es/library/dot/components/form-fields/number/frameworks/ui/NumberView.js +3 -6
  38. package/es/library/dot/components/form-fields/percentage/frameworks/ui/PercentageView.js +4 -7
  39. package/es/library/dot/components/form-fields/phone/frameworks/ui/PhoneView.js +3 -6
  40. package/es/library/dot/components/form-fields/pick-list/frameworks/ui/PickListView.js +4 -7
  41. package/es/library/dot/components/form-fields/textarea/frameworks/ui/TextAreaView.js +3 -6
  42. package/es/library/dot/components/form-fields/textbox/frameworks/ui/TextBoxView.js +3 -6
  43. package/es/library/dot/components/form-fields/url/frameworks/ui/UrlView.js +3 -6
  44. package/es/library/dot/components/part-wrapper/POC_DOCUMENT.md +648 -0
  45. package/es/library/dot/components/part-wrapper/domain/entities/interfaces/Properties.js +52 -0
  46. package/es/library/dot/components/part-wrapper/frameworks/ui/PartWrapper.js +24 -0
  47. package/es/library/dot/components/part-wrapper/frameworks/ui/PartWrapperFactory.js +27 -0
  48. package/es/library/dot/components/part-wrapper/frameworks/ui/PartWrapperView.js +45 -0
  49. package/es/library/dot/components/part-wrapper/frameworks/ui/css/PartWrapper.module.css +16 -0
  50. package/es/library/dot/components/part-wrapper/poc/index.js +9 -0
  51. package/es/library/dot/components/part-wrapper/poc/layouts/POCFormLayout.js +130 -0
  52. package/es/library/dot/components/part-wrapper/poc/layouts/POCMixedLayout.js +128 -0
  53. package/es/library/dot/components/part-wrapper/poc/layouts/POCTableCellLayout.js +105 -0
  54. package/es/library/dot/components/part-wrapper/poc/layouts/css/poc-form-layout.module.css +46 -0
  55. package/es/library/dot/components/part-wrapper/poc/layouts/css/poc-mixed-layout.module.css +89 -0
  56. package/es/library/dot/components/part-wrapper/poc/layouts/css/poc-table-cell-layout.module.css +70 -0
  57. package/es/library/dot/components/section/frameworks/ui/RenderField.js +1 -3
  58. package/es/library/dot/components/section/frameworks/ui/SectionView.js +8 -14
  59. package/es/library/dot/components/table-list/adapters/controllers/SortByController.js +25 -0
  60. package/es/library/dot/components/table-list/adapters/controllers/SortedController.js +18 -0
  61. package/es/library/dot/components/table-list/frameworks/ui/TableListView.js +4 -8
  62. package/es/library/dot/components/table-list/frameworks/ui/handlers/HandleSortClick.js +12 -0
  63. package/es/library/dot/components/table-list/frameworks/ui/sub-components/Header.js +4 -6
  64. package/es/library/dot/components/table-list/frameworks/ui/sub-components/header/HeaderData.js +5 -11
  65. package/es/library/dot/components/table-list/frameworks/ui/sub-components/header/MassAction.js +5 -11
  66. package/es/library/dot/components/table-list/frameworks/ui/sub-components/row/Row.js +4 -8
  67. package/es/library/dot/components/table-list/frameworks/ui/sub-components/row/RowActions.js +5 -12
  68. package/es/library/dot/components/table-list/frameworks/ui/sub-components/row/RowData.js +4 -12
  69. package/es/library/dot/legacy-to-new-arch/date/frameworks/ui/DateView.js +4 -10
  70. package/es/library/dot/legacy-to-new-arch/flex-container/frameworks/ui/FlexContainer.js +11 -0
  71. package/es/library/dot/legacy-to-new-arch/flex-container/frameworks/ui/FlexContainerView.js +37 -0
  72. package/es/library/dot/legacy-to-new-arch/label/frameworks/ui/LabelView.js +5 -11
  73. package/es/library/dot/legacy-to-new-arch/multi-select/frameworks/ui/MultiSelectView.js +8 -21
  74. package/es/library/dot/legacy-to-new-arch/select/frameworks/ui/SelectView.js +8 -18
  75. package/es/library/dot/legacy-to-new-arch/text-area/frameworks/ui/TextAreaView.js +4 -10
  76. package/es/library/dot/legacy-to-new-arch/textbox/frameworks/ui/TextBoxView.js +4 -10
  77. package/es/library/poc-slot-usage/employee-card/adapters/presenters/EmployeeCardStateMapper.js +14 -0
  78. package/es/library/poc-slot-usage/employee-card/applications/usecases/BuildEmployeeCardUseCase.js +25 -0
  79. package/es/library/poc-slot-usage/employee-card/domain/entities/EmployeeCardSlots.js +68 -0
  80. package/es/library/poc-slot-usage/employee-card/frameworks/ui/EmployeeCard.js +13 -0
  81. package/es/library/poc-slot-usage/employee-card/frameworks/ui/EmployeeCardView.js +42 -0
  82. package/es/library/poc-slot-usage/flex-container/adapters/presenters/FlexContainerStateMapper.js +8 -0
  83. package/es/library/poc-slot-usage/flex-container/applications/usecases/BuildFlexContainerUseCase.js +44 -0
  84. package/es/library/poc-slot-usage/flex-container/domain/entities/FlexContainerSlots.js +18 -0
  85. package/es/library/poc-slot-usage/flex-container/frameworks/ui/FlexContainer.js +5 -0
  86. package/es/library/poc-slot-usage/flex-container/frameworks/ui/FlexContainerView.js +40 -0
  87. package/es/library/poc-slot-usage/index.js +7 -0
  88. package/es/library/poc-slot-usage/mismatched-card/applications/usecases/BuildMismatchedCardUseCase.js +23 -0
  89. package/es/library/poc-slot-usage/mismatched-card/domain/entities/MismatchedCardSlots.js +39 -0
  90. package/es/library/poc-slot-usage/mismatched-card/frameworks/ui/MismatchedCard.js +9 -0
  91. package/es/library/poc-slot-usage/mismatched-card/frameworks/ui/MismatchedCardView.js +39 -0
  92. package/es/library/poc-slot-usage/product-action/applications/usecases/BuildProductActionUseCase.js +21 -0
  93. package/es/library/poc-slot-usage/product-action/frameworks/ui/ProductAction.js +5 -0
  94. package/es/library/poc-slot-usage/product-action/frameworks/ui/ProductActionView.js +24 -0
  95. package/es/library/poc-slot-usage/product-body/applications/usecases/BuildProductBodyUseCase.js +21 -0
  96. package/es/library/poc-slot-usage/product-body/frameworks/ui/ProductBody.js +5 -0
  97. package/es/library/poc-slot-usage/product-body/frameworks/ui/ProductBodyView.js +20 -0
  98. package/es/library/poc-slot-usage/product-card/adapters/presenters/ProductCardStateMapper.js +8 -0
  99. package/es/library/poc-slot-usage/product-card/applications/usecases/BuildProductCardUseCase.js +34 -0
  100. package/es/library/poc-slot-usage/product-card/domain/entities/ProductCardSlots.js +70 -0
  101. package/es/library/poc-slot-usage/product-card/frameworks/ui/ProductCard.js +5 -0
  102. package/es/library/poc-slot-usage/product-card/frameworks/ui/ProductCardView.js +40 -0
  103. package/es/library/poc-slot-usage/product-title/applications/usecases/BuildProductTitleUseCase.js +21 -0
  104. package/es/library/poc-slot-usage/product-title/frameworks/ui/ProductTitle.js +5 -0
  105. package/es/library/poc-slot-usage/product-title/frameworks/ui/ProductTitleView.js +20 -0
  106. package/es/platform/client-actions/cc/action-event-mediator/Properties.js +43 -0
  107. package/es/platform/client-actions/components/action-event-mediator/frameworks/ui/ClientActionsAdapter.js +2 -1
  108. package/es/platform/client-scripts/cc/zclient-scripts-execution/clientScriptsSchema.js +1 -4
  109. package/es/platform/components/form-connected/frameworks/FormConnectedView.js +0 -2
  110. package/es/platform/components/smart-action-band/adapters/presenters/ActionBandTranslator.js +10 -7
  111. package/es/platform/components/smart-action-band/frameworks/SmartActionBandView.js +5 -18
  112. package/es/platform/components/table-connected/adapters/controllers/ColumnChooserOpenedController.js +28 -0
  113. package/es/platform/components/table-connected/adapters/controllers/ColumnChooserUpdateController.js +31 -0
  114. package/es/platform/zform/adapters/presenter/FormTranslator.js +12 -8
  115. package/es/platform/zform/adapters/presenter/translators/SectionTranslator.js +14 -10
  116. package/es/platform/zform/adapters/presenter/translators/fields/BooleanFieldTranslator.js +2 -4
  117. package/es/platform/zform/adapters/presenter/translators/fields/CurrencyFieldTranslator.js +1 -2
  118. package/es/platform/zform/adapters/presenter/translators/fields/DateFieldTranslator.js +2 -4
  119. package/es/platform/zform/adapters/presenter/translators/fields/DateTimeFieldTranslator.js +2 -4
  120. package/es/platform/zform/adapters/presenter/translators/fields/DecimalFieldTranslator.js +2 -4
  121. package/es/platform/zform/adapters/presenter/translators/fields/EmailFieldTranslator.js +2 -4
  122. package/es/platform/zform/adapters/presenter/translators/fields/LookUpFieldTranslator.js +2 -4
  123. package/es/platform/zform/adapters/presenter/translators/fields/MultiselectFieldTranslator.js +8 -13
  124. package/es/platform/zform/adapters/presenter/translators/fields/NumberFieldTranslator.js +2 -4
  125. package/es/platform/zform/adapters/presenter/translators/fields/PercentageFieldTranslator.js +2 -4
  126. package/es/platform/zform/adapters/presenter/translators/fields/PhoneFieldTranslator.js +2 -4
  127. package/es/platform/zform/adapters/presenter/translators/fields/PicklistFieldTranslator.js +12 -11
  128. package/es/platform/zform/adapters/presenter/translators/fields/TextAreaFieldTranslator.js +2 -4
  129. package/es/platform/zform/adapters/presenter/translators/fields/TextFieldTranslator.js +2 -4
  130. package/es/platform/zform/adapters/presenter/translators/fields/URLFieldTranslator.js +2 -4
  131. package/es/platform/zlist/adapters/gateways/SortBy.js +38 -0
  132. package/es/platform/zlist/adapters/presenters/SelectionTranslator.js +4 -2
  133. package/es/platform/zlist/adapters/presenters/TableTranslator.js +1 -6
  134. package/es/platform/zlist/adapters/presenters/translators/ColumnTranslator.js +1 -7
  135. package/es/platform/zlist/adapters/presenters/translators/Header.js +6 -7
  136. package/es/platform/zlist/adapters/presenters/translators/Row.js +5 -6
  137. package/es/platform/zlist/adapters/presenters/translators/fields/DateFieldTranslator.js +3 -7
  138. package/es/platform/zlist/adapters/presenters/translators/fields/DateTimeFieldTranslator.js +3 -7
  139. package/es/platform/zlist/domain/entities/SortBy.js +58 -0
  140. package/es/platform/zlist/domain/entities/interfaces/ISortBy.js +1 -0
  141. package/es/to-do-app/ToDo.js +10 -0
  142. package/es/to-do-app/cc/button/Constants.js +0 -0
  143. package/es/to-do-app/cc/button/Events.js +0 -0
  144. package/es/to-do-app/cc/button/Properties.js +4 -0
  145. package/es/to-do-app/cc/button/index.js +0 -0
  146. package/es/to-do-app/cc/textbox/Constants.js +7 -0
  147. package/es/to-do-app/cc/textbox/Events.js +20 -0
  148. package/es/to-do-app/cc/textbox/Properties.js +51 -0
  149. package/es/to-do-app/cc/textbox/index.js +3 -0
  150. package/es/to-do-app/component/textbox/framework/TextBox.js +30 -0
  151. package/es/to-do-app/component/textbox/framework/TextBoxView.js +42 -0
  152. package/package.json +2 -2
  153. package/es/platform/client-actions/behaviour/zclient-actions/adapters/resources/__test__/ClientActionsFetchSDK.test.js +0 -183
  154. package/es/platform/client-actions/cc/client-actions-renderer/Properties.js +0 -58
  155. package/es/platform/client-actions/cc/client-actions-renderer/ViewMetaSchema.js +0 -17
  156. package/es/platform/client-actions/components/client-actions-renderer/adapters/presenters/ClientActionsRendererTranslator.js +0 -24
  157. package/es/platform/client-actions/components/client-actions-renderer/domain/entities/State.js +0 -8
  158. package/es/platform/client-actions/components/client-actions-renderer/frameworks/ui/client-actions-renderer/ClientActionsRenderer.js +0 -11
  159. package/es/platform/client-actions/components/client-actions-renderer/frameworks/ui/client-actions-renderer/ClientActionsRenderer.module.css +0 -23
  160. package/es/platform/client-actions/components/client-actions-renderer/frameworks/ui/client-actions-renderer/ClientActionsRendererView.js +0 -25
  161. package/es/platform/client-actions/components/client-actions-renderer/frameworks/ui/client-actions-renderer/views/DefaultActionsRendererView.js +0 -66
  162. package/es/platform/client-actions/components/client-actions-renderer/frameworks/ui/more-actions-renderer/MoreActionsRenderer.js +0 -9
  163. package/es/platform/client-actions/components/client-actions-renderer/frameworks/ui/more-actions-renderer/MoreActionsRendererView.js +0 -81
  164. package/es/platform/client-scripts/behaviour/zclient-scripts-fetch/adapters/resources/__test__/ClientScriptsFetchSDK.test.js +0 -163
  165. /package/es/{platform/client-actions/components/client-actions-renderer/domain/entities/ClientActionsRendererDatatype.js → library/behaviours/sort-by/applications/interfaces/output/SortByOutputModel.js} +0 -0
  166. /package/es/{platform/client-actions/components/client-actions-renderer/domain/entities/ClientActionsRendererViewProps.js → library/dot/components/part-wrapper/applications/interfaces/State.js} +0 -0
  167. /package/es/platform/{client-actions/components/client-actions-renderer/domain/entities/Context.js → zlist/applications/interfaces/gateways/ISortBy.js} +0 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * PartWrapper Domain Properties
3
+ *
4
+ * Defines the contract for the PartWrapper component's input properties.
5
+ * Aligned with ADR UI-STYLE-003: Styling hooks (part="...") at ACA-controlled wrapper boundaries.
6
+ */
7
+
8
+ /**
9
+ * CC-style property schema for createCustomComponent.
10
+ *
11
+ * Follows the same format as @cc/button/Properties, @cc/text/Properties etc.
12
+ * `content` is typed as 'object' because React elements are objects.
13
+ * This allows createCustomComponent to pass it through to state.properties
14
+ * without stripping it (unlike `children` which is explicitly discarded).
15
+ */
16
+ const PartWrapperPropertiesSchema = {
17
+ part: {
18
+ required: true,
19
+ typeMetadata: {
20
+ schema: {
21
+ type: 'string'
22
+ }
23
+ }
24
+ },
25
+ tagName: {
26
+ required: false,
27
+ defaultValue: 'div',
28
+ typeMetadata: {
29
+ schema: {
30
+ type: 'string'
31
+ }
32
+ }
33
+ },
34
+ className: {
35
+ required: false,
36
+ defaultValue: '',
37
+ typeMetadata: {
38
+ schema: {
39
+ type: 'string'
40
+ }
41
+ }
42
+ },
43
+ content: {
44
+ required: false,
45
+ typeMetadata: {
46
+ schema: {
47
+ type: 'object'
48
+ }
49
+ }
50
+ }
51
+ };
52
+ export default PartWrapperPropertiesSchema;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * PartWrapper — ACA Boundary Wrapper Component
3
+ *
4
+ * Entry point for the PartWrapper component.
5
+ * Follows the SmartActionBand.ts → SmartActionBandFactory.create() ACA pattern.
6
+ *
7
+ * PartWrapper is created via createCustomComponent through PartWrapperFactory.
8
+ * It provides `part` attribute support at ACA-controlled wrapper boundaries.
9
+ *
10
+ * Usage:
11
+ * <PartWrapper part="field-container" content={<TextBox ... />} />
12
+ *
13
+ * NOTE: Inner components are passed via the `content` property (not React children)
14
+ * because createCustomComponent's discardChildren() strips `children` from props
15
+ * and routes them through the slot system. The `content` property is a regular
16
+ * prop that flows through to state.properties.content in the View.
17
+ *
18
+ * ADR: UI-STYLE-003 — Styling Strategy for Legacy Inner Components in Layouts
19
+ */
20
+ import PartWrapperFactory from "./PartWrapperFactory";
21
+ const PartWrapper = PartWrapperFactory.create({
22
+ name: 'PartWrapper'
23
+ });
24
+ export default PartWrapper;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * PartWrapperFactory
3
+ *
4
+ * Factory class following the SmartActionBandFactory ACA pattern.
5
+ * Creates PartWrapper instances via createCustomComponent.
6
+ *
7
+ * Unlike SmartActionBandFactory, PartWrapper has no behaviours, SDK, or data sources
8
+ * since it is a pure styling boundary wrapper (ADR UI-STYLE-003).
9
+ */
10
+ import { createCustomComponent } from "../../../../../custom-component";
11
+ import PartWrapperPropertiesSchema from "../../domain/entities/interfaces/Properties";
12
+ import PartWrapperView from "./PartWrapperView";
13
+ export default class PartWrapperFactory {
14
+ static create() {
15
+ let {
16
+ name = 'PartWrapper',
17
+ View = PartWrapperView
18
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
19
+ return createCustomComponent({
20
+ name: name,
21
+ View: View,
22
+ properties: PartWrapperPropertiesSchema,
23
+ eventHandlers: {}
24
+ });
25
+ }
26
+
27
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * PartWrapperView
3
+ *
4
+ * Pure rendering function for the PartWrapper component.
5
+ * Renders a thin HTML wrapper element with `part` and `data-part` attributes,
6
+ * providing a stable styling boundary per ADR UI-STYLE-003.
7
+ *
8
+ * Follows the ACA View signature: function View({ state, helpers }, ref)
9
+ * - Receives properties via `state.properties` (managed by createCustomComponent)
10
+ * - `content` is passed as a property (not React children) because
11
+ * createCustomComponent strips children via discardChildren() and routes them
12
+ * through the slot system. Using a named `content` property bypasses this.
13
+ *
14
+ * Attributes:
15
+ * - `part`: future Shadow DOM ::part() selector support
16
+ * - `data-part`: Light DOM [data-part="..."] selector support (current)
17
+ * - `display: contents`: makes the wrapper layout-transparent
18
+ *
19
+ * This View does NOT modify or touch any inner component — it only wraps at the boundary.
20
+ */
21
+ import React from 'react'; // @ts-ignore
22
+
23
+ import style from "./css/PartWrapper.module.css";
24
+
25
+ function PartWrapperView(_ref, ref) {
26
+ let {
27
+ state
28
+ } = _ref;
29
+ const {
30
+ part,
31
+ tagName = 'div',
32
+ className,
33
+ content
34
+ } = state.properties;
35
+ const Element = tagName;
36
+ const combinedClassName = className ? `${style.partWrapper} ${className}` : style.partWrapper;
37
+ return /*#__PURE__*/React.createElement(Element, {
38
+ ref: ref,
39
+ part: part,
40
+ "data-part": part,
41
+ className: combinedClassName
42
+ }, content);
43
+ }
44
+
45
+ export default PartWrapperView;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * PartWrapper.module.css
3
+ *
4
+ * Default styling for the PartWrapper boundary element.
5
+ * `display: contents` ensures the wrapper is layout-transparent:
6
+ * - It does NOT create a new box in the layout flow
7
+ * - Children render as if the wrapper doesn't exist visually
8
+ * - Spacing, flexbox, grid contexts of the parent are preserved
9
+ *
10
+ * This allows PartWrapper to be inserted around any component
11
+ * without affecting existing layout behaviour.
12
+ */
13
+
14
+ .partWrapper {
15
+ display: contents;
16
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * POC Layout Exports
3
+ *
4
+ * Demonstration layouts showing PartWrapper usage across different
5
+ * component categories as per ADR UI-STYLE-003.
6
+ */
7
+ export { default as POCFormLayout } from "./layouts/POCFormLayout";
8
+ export { default as POCTableCellLayout } from "./layouts/POCTableCellLayout";
9
+ export { default as POCMixedLayout } from "./layouts/POCMixedLayout";
@@ -0,0 +1,130 @@
1
+ /**
2
+ * POC: Form Layout with PartWrapper
3
+ *
4
+ * Demonstrates wrapping Category B components (custom component root — FieldItem)
5
+ * with PartWrapper to provide styling boundaries.
6
+ *
7
+ * Components used:
8
+ * - TextBox (root: FieldItem → <div>) — from components/form-fields/textbox
9
+ * - Email (root: FieldItem → <div>) — from components/form-fields/email
10
+ * - PickList (root: FieldItem → <div>) — from components/form-fields/pick-list
11
+ *
12
+ * These are ACA components created via createCustomComponent.
13
+ * PartWrapper wraps them WITHOUT any modification to their internals.
14
+ *
15
+ * CSS overrides target [data-part="..."] selectors at the wrapper boundary.
16
+ */
17
+ import React from 'react';
18
+ import PartWrapper from "../../frameworks/ui/PartWrapper";
19
+ import TextBox from "../../../form-fields/textbox/frameworks/ui/TextBox";
20
+ import Email from "../../../form-fields/email/frameworks/ui/Email";
21
+ import PickList from "../../../form-fields/pick-list/frameworks/ui/PickList"; // @ts-ignore
22
+
23
+ import style from "./css/poc-form-layout.module.css";
24
+ /**
25
+ * POCFormLayout — Example ACA Layout View
26
+ *
27
+ * Shows how a layout component can use PartWrapper to expose
28
+ * styling boundaries around form field components.
29
+ *
30
+ * Usage pattern (content as property — required by createCustomComponent):
31
+ * <PartWrapper part="field-container" content={<TextBox ...props />} />
32
+ *
33
+ * CSS targeting:
34
+ * [data-part="field-container"] { padding: 12px; }
35
+ * [data-part="field-container"]:hover { background: var(--field-hover-bg); }
36
+ *
37
+ * Future Shadow DOM migration:
38
+ * my-form::part(field-container) { padding: 12px; }
39
+ */
40
+
41
+ function POCFormLayout(_ref, ref) {
42
+ let {
43
+ state
44
+ } = _ref;
45
+ const {
46
+ id,
47
+ label,
48
+ value,
49
+ email,
50
+ placeholder,
51
+ errorMessage,
52
+ disabled,
53
+ readonly,
54
+ required,
55
+ uiConfig,
56
+ labelActions,
57
+ actions,
58
+ clientScripts,
59
+ pickListOptions
60
+ } = state?.properties || {};
61
+ const {
62
+ size,
63
+ breakRow
64
+ } = uiConfig || {};
65
+ return /*#__PURE__*/React.createElement("div", {
66
+ ref: ref,
67
+ "data-part": "form-layout",
68
+ className: style.formLayout
69
+ }, /*#__PURE__*/React.createElement(PartWrapper, {
70
+ part: "field-container",
71
+ content: /*#__PURE__*/React.createElement(TextBox, {
72
+ id: `${id}_name`,
73
+ label: label || 'Name',
74
+ value: value || '',
75
+ placeholder: placeholder || 'Enter name',
76
+ errorMessage: errorMessage,
77
+ disabled: disabled,
78
+ readonly: readonly,
79
+ required: required,
80
+ uiConfig: {
81
+ size,
82
+ breakRow
83
+ },
84
+ labelActions: labelActions || [],
85
+ actions: actions || [],
86
+ clientScripts: clientScripts,
87
+ name: "TextBox"
88
+ })
89
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
90
+ part: "field-container",
91
+ content: /*#__PURE__*/React.createElement(Email, {
92
+ id: `${id}_email`,
93
+ label: "Email Address",
94
+ value: email || '',
95
+ placeholder: "Enter email",
96
+ disabled: disabled,
97
+ readonly: readonly,
98
+ required: required,
99
+ uiConfig: {
100
+ size,
101
+ breakRow
102
+ },
103
+ labelActions: labelActions || [],
104
+ actions: actions || [],
105
+ clientScripts: clientScripts,
106
+ name: "Email"
107
+ })
108
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
109
+ part: "field-container",
110
+ content: /*#__PURE__*/React.createElement(PickList, {
111
+ id: `${id}_status`,
112
+ label: "Status",
113
+ value: "",
114
+ options: pickListOptions || [],
115
+ disabled: disabled,
116
+ readonly: readonly,
117
+ required: false,
118
+ uiConfig: {
119
+ size,
120
+ breakRow
121
+ },
122
+ labelActions: labelActions || [],
123
+ actions: actions || [],
124
+ clientScripts: clientScripts,
125
+ name: "PickList"
126
+ })
127
+ }));
128
+ }
129
+
130
+ export default POCFormLayout;
@@ -0,0 +1,128 @@
1
+ /**
2
+ * POC: Mixed Layout with PartWrapper
3
+ *
4
+ * Demonstrates wrapping BOTH root element categories:
5
+ *
6
+ * Category A — HTML root elements:
7
+ * - ErrorState (root: <div>) — legacy-to-new-arch
8
+ * - Breadcrumb (root: <div>) — legacy-to-new-arch
9
+ * - CommonEmptyState (root: <span>) — legacy-to-new-arch
10
+ *
11
+ * Category B — Custom component root elements:
12
+ * - Button (root: <Button> component) — legacy-to-new-arch
13
+ * - ActionIcon (root: <ActionIcon> component) — legacy-to-new-arch
14
+ * - Text (root: <Typography> component) — legacy-to-new-arch
15
+ *
16
+ * This proves that PartWrapper handles both categories uniformly
17
+ * because it wraps at the BOUNDARY — it doesn't care about the inner root.
18
+ *
19
+ * ADR UI-STYLE-003 Point 4: "Wrapper exposes styling surface"
20
+ */
21
+ import React from 'react';
22
+ import PartWrapper from "../../frameworks/ui/PartWrapper";
23
+ import Button from "../../../../legacy-to-new-arch/button/frameworks/ui/Button";
24
+ import ActionIcon from "../../../../legacy-to-new-arch/action-icon/frameworks/ui/ActionIcon";
25
+ import Text from "../../../../legacy-to-new-arch/text/frameworks/ui/Text"; // @ts-ignore
26
+
27
+ import style from "./css/poc-mixed-layout.module.css";
28
+ /**
29
+ * POCMixedLayout — Example ACA Layout View
30
+ *
31
+ * Shows how a page layout can use PartWrapper to expose consistent
32
+ * styling boundaries regardless of inner component root type.
33
+ *
34
+ * Key demonstration:
35
+ * - Category A (HTML root: div, span) — wrapped identically
36
+ * - Category B (Custom root: Button, Typography) — wrapped identically
37
+ * - PartWrapper is agnostic to inner component implementation
38
+ *
39
+ * Usage pattern (content as property — required by createCustomComponent):
40
+ * <PartWrapper part="page-header" content={<div>...</div>} />
41
+ *
42
+ * CSS targeting:
43
+ * [data-part="page-header"] { background: var(--header-bg); }
44
+ * [data-part="action-bar"] { display: flex; gap: 8px; }
45
+ * [data-part="content-area"] { flex: 1; }
46
+ */
47
+
48
+ function POCMixedLayout(_ref, ref) {
49
+ let {
50
+ state
51
+ } = _ref;
52
+ const {
53
+ pageTitle,
54
+ pageDescription,
55
+ primaryButtonText,
56
+ secondaryButtonText,
57
+ contentText,
58
+ iconName,
59
+ iconTooltip
60
+ } = state?.properties || {};
61
+ return /*#__PURE__*/React.createElement("div", {
62
+ ref: ref,
63
+ "data-part": "page-layout",
64
+ className: style.pageLayout
65
+ }, /*#__PURE__*/React.createElement(PartWrapper, {
66
+ part: "page-header",
67
+ content: /*#__PURE__*/React.createElement("div", {
68
+ className: style.headerContent
69
+ }, /*#__PURE__*/React.createElement(PartWrapper, {
70
+ part: "page-title",
71
+ content: /*#__PURE__*/React.createElement(Text, {
72
+ text: pageTitle || 'Page Title',
73
+ size: "24",
74
+ weight: "bold"
75
+ })
76
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
77
+ part: "page-description",
78
+ content: /*#__PURE__*/React.createElement(Text, {
79
+ text: pageDescription || 'Page description text goes here',
80
+ size: "14",
81
+ weight: "regular"
82
+ })
83
+ }))
84
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
85
+ part: "action-bar",
86
+ content: /*#__PURE__*/React.createElement("div", {
87
+ className: style.actionBarContent
88
+ }, /*#__PURE__*/React.createElement(PartWrapper, {
89
+ part: "primary-action",
90
+ content: /*#__PURE__*/React.createElement(Button, {
91
+ text: primaryButtonText || 'Create',
92
+ palette: "primaryFilled",
93
+ size: "medium"
94
+ })
95
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
96
+ part: "secondary-action",
97
+ content: /*#__PURE__*/React.createElement(Button, {
98
+ text: secondaryButtonText || 'Export',
99
+ palette: "secondary",
100
+ size: "medium"
101
+ })
102
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
103
+ part: "icon-action",
104
+ content: /*#__PURE__*/React.createElement(ActionIcon, {
105
+ name: iconName || 'filter',
106
+ tooltip: iconTooltip || 'Filter'
107
+ })
108
+ }))
109
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
110
+ part: "content-area",
111
+ content: /*#__PURE__*/React.createElement(Text, {
112
+ text: contentText || 'Content area — displays data from inner components',
113
+ size: "14"
114
+ })
115
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
116
+ part: "page-footer",
117
+ tagName: "footer",
118
+ content: /*#__PURE__*/React.createElement("div", {
119
+ className: style.footerContent
120
+ }, /*#__PURE__*/React.createElement(Text, {
121
+ text: "Footer content",
122
+ size: "12",
123
+ weight: "regular"
124
+ }))
125
+ }));
126
+ }
127
+
128
+ export default POCMixedLayout;
@@ -0,0 +1,105 @@
1
+ /**
2
+ * POC: Table Cell Layout with PartWrapper
3
+ *
4
+ * Demonstrates wrapping Category B components (custom component root)
5
+ * used in table cells, with PartWrapper to provide styling boundaries.
6
+ *
7
+ * Components used (from legacy-to-new-arch):
8
+ * - Text (root: Typography — custom component)
9
+ * - Tags (root: TagList — custom component)
10
+ * - Switch (root: Switch — custom component)
11
+ * - Link (root: TableLink — custom component)
12
+ * - Email (root: TableEmail — custom component)
13
+ *
14
+ * All are legacy-to-new-arch ACA components created via createCustomComponent.
15
+ * PartWrapper wraps them WITHOUT any modification to their internals.
16
+ *
17
+ * Each cell type gets a unique part name for granular CSS targeting.
18
+ */
19
+ import React from 'react';
20
+ import PartWrapper from "../../frameworks/ui/PartWrapper";
21
+ import Text from "../../../../legacy-to-new-arch/text/frameworks/ui/Text";
22
+ import Tags from "../../../../legacy-to-new-arch/tags/frameworks/ui/Tags";
23
+ import Switch from "../../../../legacy-to-new-arch/switch/frameworks/ui/Switch";
24
+ import Link from "../../../../legacy-to-new-arch/link/frameworks/ui/Link";
25
+ import Email from "../../../../legacy-to-new-arch/email/frameworks/ui/Email"; // @ts-ignore
26
+
27
+ import style from "./css/poc-table-cell-layout.module.css";
28
+ /**
29
+ * POCTableCellLayout — Example ACA Layout View
30
+ *
31
+ * Shows how a table row layout can use PartWrapper to expose
32
+ * per-cell-type styling boundaries around table field components.
33
+ *
34
+ * Usage pattern (content as property — required by createCustomComponent):
35
+ * <PartWrapper part="cell-text" content={<Text text={value} />} />
36
+ *
37
+ * CSS targeting:
38
+ * [data-part="cell-text"] { text-align: left; }
39
+ * [data-part="cell-tags"] { max-width: 200px; }
40
+ * [data-part="cell-switch"] { justify-content: center; }
41
+ */
42
+
43
+ function POCTableCellLayout(_ref, ref) {
44
+ let {
45
+ state
46
+ } = _ref;
47
+ const {
48
+ textValue,
49
+ tags,
50
+ switchChecked,
51
+ switchDisabled,
52
+ linkText,
53
+ linkHref,
54
+ emailValue,
55
+ textOverflowMode
56
+ } = state?.properties || {};
57
+ const isDotted = textOverflowMode === 'clip';
58
+ return /*#__PURE__*/React.createElement("div", {
59
+ ref: ref,
60
+ "data-part": "table-row",
61
+ className: style.tableRow
62
+ }, /*#__PURE__*/React.createElement(PartWrapper, {
63
+ part: "cell-text",
64
+ content: /*#__PURE__*/React.createElement(Text, {
65
+ text: textValue || 'Sample text',
66
+ tooltip: textValue || 'Sample text',
67
+ isDotted: isDotted
68
+ })
69
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
70
+ part: "cell-tags",
71
+ content: /*#__PURE__*/React.createElement(Tags, {
72
+ tags: tags || [{
73
+ id: '1',
74
+ label: 'Tag A'
75
+ }, {
76
+ id: '2',
77
+ label: 'Tag B'
78
+ }],
79
+ isWrapped: !isDotted
80
+ })
81
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
82
+ part: "cell-switch",
83
+ content: /*#__PURE__*/React.createElement(Switch, {
84
+ checked: switchChecked || false,
85
+ disabled: switchDisabled || false
86
+ })
87
+ }), /*#__PURE__*/React.createElement(PartWrapper, {
88
+ part: "cell-link",
89
+ content: /*#__PURE__*/React.createElement(Link, {
90
+ text: linkText || 'View Details',
91
+ href: linkHref || '#',
92
+ variant: "secondary",
93
+ isDotted: isDotted
94
+ })
95
+ }), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(PartWrapper, {
96
+ part: "cell-email",
97
+ content: /*#__PURE__*/React.createElement(Email, {
98
+ email: emailValue || 'user@example.com',
99
+ isDotted: isDotted,
100
+ tooltip: emailValue || 'user@example.com'
101
+ })
102
+ }));
103
+ }
104
+
105
+ export default POCTableCellLayout;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * POC: Form Layout — CSS Overrides via [data-part] selectors
3
+ *
4
+ * These styles target the PartWrapper boundaries ONLY.
5
+ * No legacy/inner component CSS is modified.
6
+ *
7
+ * Light DOM (current): [data-part="field-container"] { ... }
8
+ * Shadow DOM (future): my-form::part(field-container) { ... }
9
+ */
10
+
11
+ /* --- Form Layout Container --- */
12
+ .formLayout {
13
+ display: flex;
14
+ flex-direction: column;
15
+ gap: var(--zd_size16) ;
16
+ padding: var(--zd_size24) ;
17
+ background: var(--form-bg, #ffffff);
18
+ border-radius: var(--form-border-radius, 8px);
19
+ box-shadow: var(--form-shadow, 0 1px 3px rgba(0, 0, 0, 0.08));
20
+ }
21
+
22
+ /* --- Field Container: Wrapper Boundary Styling --- */
23
+ /* Targets the PartWrapper <div data-part="field-container"> */
24
+ .formLayout [data-part="field-container"] {
25
+ transition: background-color 0.15s ease;
26
+ padding: var(--zd_size12) var(--zd_size16) ;
27
+ border-bottom: 1px solid var(--field-separator-color, #f0f0f0);
28
+ background-color: red !important;
29
+ }
30
+
31
+ .formLayout [data-part="field-container"]:last-child {
32
+ border-bottom: 1px solid thick;
33
+ }
34
+
35
+ /* Hover: applied at the WRAPPER boundary, not inside the component */
36
+ .formLayout [data-part="field-container"]:hover {
37
+ background-color: var(--field-hover-bg, #f8f9fa);
38
+ }
39
+
40
+ /* Focus-within: highlights the field container when any inner element is focused */
41
+ .formLayout [data-part="field-container"]:focus-within {
42
+ outline: 2px solid var(--field-focus-border, #4a90d9);
43
+ outline-offset: -2px;
44
+ background-color: var(--field-focus-bg, #f0f4ff);
45
+ border-radius: 4px;
46
+ }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * POC: Mixed Layout — CSS Overrides via [data-part] selectors
3
+ *
4
+ * Demonstrates styling boundaries for a full page layout
5
+ * with header, action bar, content, and footer sections.
6
+ *
7
+ * ALL styles target [data-part] selectors — zero inner component CSS touched.
8
+ *
9
+ * Light DOM (current): [data-part="page-header"] { ... }
10
+ * Shadow DOM (future): my-page::part(page-header) { ... }
11
+ */
12
+
13
+ /* --- Page Layout Container --- */
14
+ .pageLayout {
15
+ display: flex;
16
+ flex-direction: column;
17
+ height: 100% ;
18
+ background: var(--page-bg, #f5f6f8);
19
+ }
20
+
21
+ /* --- Page Header --- */
22
+ .pageLayout [data-part="page-header"] {
23
+ padding: var(--zd_size24) var(--zd_size32) var(--zd_size16) ;
24
+ background: var(--header-bg, #ffffff);
25
+ border-bottom: 1px solid var(--header-border, #e5e5e5);
26
+ }
27
+
28
+ .headerContent {
29
+ display: flex;
30
+ flex-direction: column;
31
+ gap: var(--zd_size4) ;
32
+ }
33
+
34
+ .pageLayout [data-part="page-title"] {
35
+ display: contents; /* Title boundary — styled via wrapper, Typography component untouched */
36
+ }
37
+
38
+ .pageLayout [data-part="page-description"] {
39
+ opacity: 0.7;
40
+ }
41
+
42
+ /* --- Action Bar --- */
43
+ .pageLayout [data-part="action-bar"] {
44
+ padding: var(--zd_size12) var(--zd_size32) ;
45
+ background: var(--action-bar-bg, #ffffff);
46
+ border-bottom: 1px solid var(--action-bar-border, #eeeeee);
47
+ }
48
+
49
+ .actionBarContent {
50
+ display: flex;
51
+ align-items: center;
52
+ gap: var(--zd_size8) ;
53
+ }
54
+
55
+ .pageLayout [data-part="primary-action"] {
56
+ display: contents; /* Primary button boundary */
57
+ }
58
+
59
+ .pageLayout [data-part="secondary-action"] {
60
+ display: contents; /* Secondary button boundary */
61
+ }
62
+
63
+ [dir=ltr] .pageLayout [data-part="icon-action"] {
64
+ margin-left: auto ;
65
+ }
66
+
67
+ [dir=rtl] .pageLayout [data-part="icon-action"] {
68
+ margin-right: auto ;
69
+ }
70
+
71
+ /* --- Content Area --- */
72
+ .pageLayout [data-part="content-area"] {
73
+ flex: 1 ;
74
+ overflow: auto;
75
+ padding: var(--zd_size24) var(--zd_size32) ;
76
+ }
77
+
78
+ /* --- Page Footer --- */
79
+ .pageLayout [data-part="page-footer"] {
80
+ padding: var(--zd_size12) var(--zd_size32) ;
81
+ background: var(--footer-bg, #fafafa);
82
+ border-top: 1px solid var(--footer-border, #e5e5e5);
83
+ }
84
+
85
+ .footerContent {
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: space-between;
89
+ }