@adobe-commerce/aio-experience-kit 1.0.0 → 1.0.2

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 (63) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +197 -25
  3. package/dist/cjs/components/DataForm/FieldBuilder/index.js +184 -35
  4. package/dist/cjs/components/DataForm/FieldBuilder/index.js.map +1 -1
  5. package/dist/cjs/components/DataForm/FormBuilder/index.js +9 -7
  6. package/dist/cjs/components/DataForm/FormBuilder/index.js.map +1 -1
  7. package/dist/cjs/components/DataForm/FormBuilder/types.js +2 -0
  8. package/dist/cjs/components/DataForm/FormBuilder/types.js.map +1 -1
  9. package/dist/cjs/components/DataForm/index.js +4 -1
  10. package/dist/cjs/components/DataForm/index.js.map +1 -1
  11. package/dist/cjs/components/DataTable/index.js +4 -1
  12. package/dist/cjs/components/DataTable/index.js.map +1 -1
  13. package/dist/cjs/components/FileUpload/index.js +241 -0
  14. package/dist/cjs/components/FileUpload/index.js.map +1 -0
  15. package/dist/cjs/components/MainContainer/TwoColumnLeft/index.js +1 -1
  16. package/dist/cjs/components/MainContainer/TwoColumnLeft/index.js.map +1 -1
  17. package/dist/cjs/components/ShippingCarrierForm/index.js +143 -0
  18. package/dist/cjs/components/ShippingCarrierForm/index.js.map +1 -0
  19. package/dist/cjs/index.js +8 -4
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/utils/AdminUiSdk/index.js +67 -97
  22. package/dist/cjs/utils/AdminUiSdk/index.js.map +1 -1
  23. package/dist/esm/components/DataForm/FieldBuilder/index.js +185 -36
  24. package/dist/esm/components/DataForm/FieldBuilder/index.js.map +1 -1
  25. package/dist/esm/components/DataForm/FormBuilder/index.js +9 -7
  26. package/dist/esm/components/DataForm/FormBuilder/index.js.map +1 -1
  27. package/dist/esm/components/DataForm/FormBuilder/types.js +2 -0
  28. package/dist/esm/components/DataForm/FormBuilder/types.js.map +1 -1
  29. package/dist/esm/components/DataForm/index.js +5 -2
  30. package/dist/esm/components/DataForm/index.js.map +1 -1
  31. package/dist/esm/components/DataTable/index.js +5 -2
  32. package/dist/esm/components/DataTable/index.js.map +1 -1
  33. package/dist/esm/components/FileUpload/index.js +237 -0
  34. package/dist/esm/components/FileUpload/index.js.map +1 -0
  35. package/dist/esm/components/MainContainer/TwoColumnLeft/index.js +1 -1
  36. package/dist/esm/components/MainContainer/TwoColumnLeft/index.js.map +1 -1
  37. package/dist/esm/components/ShippingCarrierForm/index.js +139 -0
  38. package/dist/esm/components/ShippingCarrierForm/index.js.map +1 -0
  39. package/dist/esm/index.js +2 -0
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/types/components/DataForm/FieldBuilder/index.d.ts.map +1 -1
  42. package/dist/esm/types/components/DataForm/FormBuilder/index.d.ts.map +1 -1
  43. package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts +2 -0
  44. package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts.map +1 -1
  45. package/dist/esm/types/components/DataForm/index.d.ts.map +1 -1
  46. package/dist/esm/types/components/DataTable/index.d.ts.map +1 -1
  47. package/dist/esm/types/components/FileUpload/index.d.ts +8 -0
  48. package/dist/esm/types/components/FileUpload/index.d.ts.map +1 -0
  49. package/dist/esm/types/components/FileUpload/types.d.ts +71 -0
  50. package/dist/esm/types/components/FileUpload/types.d.ts.map +1 -0
  51. package/dist/esm/types/components/ShippingCarrierForm/index.d.ts +18 -0
  52. package/dist/esm/types/components/ShippingCarrierForm/index.d.ts.map +1 -0
  53. package/dist/esm/types/components/ShippingCarrierForm/types.d.ts +55 -0
  54. package/dist/esm/types/components/ShippingCarrierForm/types.d.ts.map +1 -0
  55. package/dist/esm/types/components/index.d.ts +10 -0
  56. package/dist/esm/types/components/index.d.ts.map +1 -1
  57. package/dist/esm/types/utils/AdminUiSdk/index.d.ts +17 -30
  58. package/dist/esm/types/utils/AdminUiSdk/index.d.ts.map +1 -1
  59. package/dist/esm/types/utils/AdminUiSdk/types.d.ts +9 -50
  60. package/dist/esm/types/utils/AdminUiSdk/types.d.ts.map +1 -1
  61. package/dist/esm/utils/AdminUiSdk/index.js +69 -99
  62. package/dist/esm/utils/AdminUiSdk/index.js.map +1 -1
  63. package/package.json +36 -35
@@ -0,0 +1,71 @@
1
+ /**
2
+ * <license header>
3
+ */
4
+ /**
5
+ * File information interface containing file details and content
6
+ */
7
+ export interface FileInfo {
8
+ /**
9
+ * Name of the file
10
+ */
11
+ name: string;
12
+ /**
13
+ * File size in bytes
14
+ */
15
+ size: number;
16
+ /**
17
+ * MIME type of the file
18
+ */
19
+ type: string;
20
+ /**
21
+ * Last modified timestamp
22
+ */
23
+ lastModified: number;
24
+ /**
25
+ * File content as string (for text files) or base64 (for binary files)
26
+ */
27
+ content: string;
28
+ /**
29
+ * Whether the content is base64 encoded
30
+ */
31
+ isBase64: boolean;
32
+ }
33
+ /**
34
+ * FileUpload component props interface
35
+ */
36
+ export interface FileUploadProps {
37
+ /**
38
+ * Name attribute for component identification
39
+ */
40
+ name?: string;
41
+ /**
42
+ * Label text for the file upload component
43
+ */
44
+ label: string;
45
+ /**
46
+ * Whether the field is required (adds * to label)
47
+ */
48
+ isRequired?: boolean;
49
+ /**
50
+ * Whether the component is disabled
51
+ */
52
+ isDisabled?: boolean;
53
+ /**
54
+ * Array of accepted MIME types (e.g., ['image/png', 'image/jpeg']).
55
+ * If not specified, all file types are accepted.
56
+ */
57
+ acceptedFileTypes?: readonly string[];
58
+ /**
59
+ * Whether multiple files can be selected
60
+ */
61
+ allowsMultiple?: boolean;
62
+ /**
63
+ * Contextual help text for the file upload component
64
+ */
65
+ contextualHelp?: React.ReactNode;
66
+ /**
67
+ * Callback when files are selected and processed
68
+ */
69
+ onSelect?: (files: FileInfo[]) => void;
70
+ }
71
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/FileUpload/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;CACxC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * <license header>
3
+ */
4
+ import React from 'react';
5
+ import { ShippingCarrierFormProps } from './types';
6
+ /**
7
+ * ShippingCarrierForm - Component using DataForm
8
+ *
9
+ * @deprecated This component is deprecated due to its overly abstract approach to form creation.
10
+ * Please use the more flexible `DataForm` component directly instead, which provides better control
11
+ * and customization for your specific use cases.
12
+ *
13
+ * @see {@link DataForm} for the recommended alternative
14
+ */
15
+ declare const ShippingCarrierForm: React.FC<ShippingCarrierFormProps>;
16
+ export default ShippingCarrierForm;
17
+ export type { ShippingCarrierFormProps, SelectOption } from './types';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ShippingCarrierForm/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAInD;;;;;;;;GAQG;AACH,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAyG3D,CAAC;AAEF,eAAe,mBAAmB,CAAC;AAGnC,YAAY,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * <license header>
3
+ */
4
+ /**
5
+ * Option interface for select dropdowns
6
+ *
7
+ * @deprecated Use FormBuilderOption from DataForm/FormBuilder/types instead
8
+ */
9
+ export interface SelectOption {
10
+ /**
11
+ * The value of the option
12
+ */
13
+ value: string;
14
+ /**
15
+ * The display label of the option
16
+ */
17
+ label: string;
18
+ }
19
+ /**
20
+ * Props for the ShippingCarrierForm component
21
+ *
22
+ * @deprecated ShippingCarrierForm is deprecated. Use DataForm component directly instead.
23
+ * @see {@link DataFormProps} for the recommended alternative
24
+ */
25
+ export interface ShippingCarrierFormProps {
26
+ /**
27
+ * Array of country options for country selection
28
+ */
29
+ countryOptions?: SelectOption[];
30
+ /**
31
+ * Array of store options for store selection
32
+ */
33
+ storeOptions?: SelectOption[];
34
+ /**
35
+ * Default values for pre-populating the form
36
+ */
37
+ defaults?: any;
38
+ /**
39
+ * Whether the form is in loading state (waiting for data)
40
+ */
41
+ isLoading?: boolean;
42
+ /**
43
+ * Callback when form is submitted
44
+ */
45
+ onFormSubmit?: (values: any) => Promise<void>;
46
+ /**
47
+ * Callback after successful form submission
48
+ */
49
+ onPostFormSubmit?: () => Promise<void>;
50
+ /**
51
+ * Callback when back button is pressed
52
+ */
53
+ onBackPress?: () => void;
54
+ }
55
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/ShippingCarrierForm/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B"}
@@ -5,6 +5,11 @@ export { default as ConfirmationDialog } from './ConfirmationDialog';
5
5
  export { default as MainContainer } from './MainContainer';
6
6
  export { default as DataTable } from './DataTable';
7
7
  export { default as DataForm } from './DataForm';
8
+ /**
9
+ * @deprecated ShippingCarrierForm is deprecated. Use DataForm directly for better flexibility.
10
+ */
11
+ export { default as ShippingCarrierForm } from './ShippingCarrierForm';
12
+ export { default as FileUpload } from './FileUpload';
8
13
  export type { ConfirmationDialogProps, ButtonVariant } from './ConfirmationDialog';
9
14
  export type { MainContainerProps } from './MainContainer';
10
15
  export { LayoutOptions, NavigationOptions } from './MainContainer';
@@ -16,4 +21,9 @@ export type { DataFormProps } from './DataForm/types';
16
21
  export type { FormBuilderProps, FormBuilderComponents, FormBuilderGroup, FormBuilderField, FormBuilderOption, } from './DataForm/FormBuilder/types';
17
22
  export { FieldType } from './DataForm/FormBuilder/types';
18
23
  export type { FieldBuilderProps } from './DataForm/FieldBuilder/types';
24
+ /**
25
+ * @deprecated ShippingCarrierForm types are deprecated. Use DataForm types directly.
26
+ */
27
+ export type { ShippingCarrierFormProps, SelectOption } from './ShippingCarrierForm/types';
28
+ export type { FileUploadProps, FileInfo } from './FileUpload/types';
19
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGjD,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,yCAAyC,CAAC;AACjD,YAAY,EACV,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAGrD,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,yCAAyC,CAAC;AACjD,YAAY,EACV,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;GAEG;AACH,YAAY,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC1F,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,31 +1,23 @@
1
1
  /**
2
2
  * <license header>
3
3
  */
4
- import { MenuItem, AdminUiSdkInterface } from './types';
4
+ import { AdminUiSdkInterface, AdminUiSdkCredentials } from './types';
5
5
  /**
6
- * AdminUiSdk - Utility for managing Adobe Admin UI extension configurations
6
+ * AdminUiSdk - Utility for managing Adobe Admin UI extensions
7
7
  *
8
8
  * @example
9
9
  * ```typescript
10
- * const extensionId = 'admin_ui_extensibility';
11
- * const sdk = new AdminUiSdk(extensionId);
10
+ * const sdk = new AdminUiSdk('admin_ui_extensibility');
12
11
  *
13
- * sdk.addMenu({
14
- * id: `${extensionId}::punchout_integrations`,
15
- * title: 'Punchout Integrations 123',
16
- * parent: 'Magento_Backend::content_elements',
17
- * sortOrder: 1
18
- * });
12
+ * // Register with Adobe UIX
13
+ * await sdk.registerExtension();
19
14
  *
20
- * sdk.addPage('Punchout Integration');
21
- *
22
- * await sdk.register(); // Register with Adobe UIX
15
+ * // Get credentials
16
+ * const credentials = await sdk.getCredentials();
23
17
  * ```
24
18
  */
25
19
  declare class AdminUiSdk implements AdminUiSdkInterface {
26
20
  private readonly extensionId;
27
- private readonly menuItems;
28
- private pageTitle;
29
21
  /**
30
22
  * Creates a new AdminUiSdk instance
31
23
  * @param extensionId - Unique identifier for the extension
@@ -33,28 +25,23 @@ declare class AdminUiSdk implements AdminUiSdkInterface {
33
25
  */
34
26
  constructor(extensionId: string);
35
27
  /**
36
- * Adds a menu item to the extension
37
- * @param menuItem - The menu item configuration
38
- * @throws {Error} If menuItem is invalid or ID already exists
28
+ * Validates that an ID contains only alphanumeric characters and underscores
29
+ * @param id - The ID to validate
30
+ * @returns true if valid, false otherwise
39
31
  */
40
- addMenu(menuItem: MenuItem): void;
32
+ private isValidId;
41
33
  /**
42
- * Sets the page title for the extension
43
- * @param title - The page title
44
- * @throws {Error} If title is empty or invalid
34
+ * Gets IMS credentials from Adobe UIX shared context
35
+ * @returns Promise resolving to credentials object with imsToken and imsOrgId
36
+ * @throws {Error} If credentials retrieval fails
45
37
  */
46
- addPage(title: string): void;
38
+ getCredentials(): Promise<AdminUiSdkCredentials>;
47
39
  /**
48
40
  * Registers the extension with Adobe UIX
49
41
  * @throws {Error} If registration fails
50
42
  */
51
- register(): Promise<void>;
52
- /**
53
- * Gets the complete configuration object for the extension (private method)
54
- * @returns The configuration object with extension ID and available methods
55
- */
56
- private getConfig;
43
+ registerExtension(): Promise<void>;
57
44
  }
58
45
  export default AdminUiSdk;
59
- export type { MenuItem, PageConfig, MenuMethods, PageMethods, AdminUiSdkConfig, AdminUiSdkInterface, } from './types';
46
+ export type { AdminUiSdkInterface, AdminUiSdkCredentials } from './types';
60
47
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/utils/AdminUiSdk/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAoB,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,cAAM,UAAW,YAAW,mBAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,SAAS,CAAuB;IAExC;;;;OAIG;gBACS,WAAW,EAAE,MAAM;IAO/B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IA8BjC;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO5B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;;OAGG;IACH,OAAO,CAAC,SAAS;CAoBlB;AAED,eAAe,UAAU,CAAC;AAG1B,YAAY,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/utils/AdminUiSdk/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErE;;;;;;;;;;;;;GAaG;AACH,cAAM,UAAW,YAAW,mBAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC;;;;OAIG;gBACS,WAAW,EAAE,MAAM;IAe/B;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAiBtD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAYzC;AAED,eAAe,UAAU,CAAC;AAG1B,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
@@ -2,62 +2,21 @@
2
2
  * <license header>
3
3
  */
4
4
  /**
5
- * Represents a menu item in the Admin UI
5
+ * Credentials returned by getCredentials method
6
6
  */
7
- export interface MenuItem {
8
- /** Unique identifier for the menu item */
9
- id: string;
10
- /** Display title for the menu item */
11
- title: string;
12
- /** Parent menu identifier */
13
- parent: string;
14
- /** Sort order for menu positioning */
15
- sortOrder: number;
16
- }
17
- /**
18
- * Configuration for a page in the Admin UI
19
- */
20
- export interface PageConfig {
21
- /** Page title */
22
- title: string;
23
- }
24
- /**
25
- * Methods available for menu management
26
- */
27
- export interface MenuMethods {
28
- /** Get all menu items */
29
- getItems: () => MenuItem[];
30
- }
31
- /**
32
- * Methods available for page management
33
- */
34
- export interface PageMethods {
35
- /** Get the page title */
36
- getTitle: () => string;
37
- }
38
- /**
39
- * Complete configuration object returned by AdminUiSdk
40
- */
41
- export interface AdminUiSdkConfig {
42
- /** Extension identifier */
43
- id: string;
44
- /** Available methods for the extension */
45
- methods: {
46
- /** Menu-related methods (optional) */
47
- menu?: MenuMethods;
48
- /** Page-related methods (optional) */
49
- page?: PageMethods;
50
- };
7
+ export interface AdminUiSdkCredentials {
8
+ /** IMS token for authentication */
9
+ imsToken: string | null;
10
+ /** IMS organization ID */
11
+ imsOrgId: string | null;
51
12
  }
52
13
  /**
53
14
  * Interface defining the AdminUiSdk public API
54
15
  */
55
16
  export interface AdminUiSdkInterface {
56
- /** Add a menu item to the extension */
57
- addMenu(menuItem: MenuItem): void;
58
- /** Set the page title for the extension */
59
- addPage(title: string): void;
17
+ /** Get IMS credentials from shared context */
18
+ getCredentials(): Promise<AdminUiSdkCredentials>;
60
19
  /** Register the extension with Adobe UIX */
61
- register(): Promise<void>;
20
+ registerExtension(): Promise<void>;
62
21
  }
63
22
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/utils/AdminUiSdk/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,QAAQ,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,0CAA0C;IAC1C,OAAO,EAAE;QACP,sCAAsC;QACtC,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,sCAAsC;QACtC,IAAI,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAClC,2CAA2C;IAC3C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/utils/AdminUiSdk/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,cAAc,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACjD,4CAA4C;IAC5C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC"}
@@ -1,24 +1,18 @@
1
- import { createClass as _createClass, toConsumableArray as _toConsumableArray, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, classCallCheck as _classCallCheck } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
- import { register } from '@adobe/uix-guest';
1
+ import { createClass as _createClass, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, classCallCheck as _classCallCheck } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { attach, register } from '@adobe/uix-guest';
3
3
 
4
4
  /**
5
- * AdminUiSdk - Utility for managing Adobe Admin UI extension configurations
5
+ * AdminUiSdk - Utility for managing Adobe Admin UI extensions
6
6
  *
7
7
  * @example
8
8
  * ```typescript
9
- * const extensionId = 'admin_ui_extensibility';
10
- * const sdk = new AdminUiSdk(extensionId);
9
+ * const sdk = new AdminUiSdk('admin_ui_extensibility');
11
10
  *
12
- * sdk.addMenu({
13
- * id: `${extensionId}::punchout_integrations`,
14
- * title: 'Punchout Integrations 123',
15
- * parent: 'Magento_Backend::content_elements',
16
- * sortOrder: 1
17
- * });
11
+ * // Register with Adobe UIX
12
+ * await sdk.registerExtension();
18
13
  *
19
- * sdk.addPage('Punchout Integration');
20
- *
21
- * await sdk.register(); // Register with Adobe UIX
14
+ * // Get credentials
15
+ * const credentials = await sdk.getCredentials();
22
16
  * ```
23
17
  */
24
18
  var AdminUiSdk = /*#__PURE__*/function () {
@@ -29,125 +23,101 @@ var AdminUiSdk = /*#__PURE__*/function () {
29
23
  */
30
24
  function AdminUiSdk(extensionId) {
31
25
  _classCallCheck(this, AdminUiSdk);
32
- this.menuItems = [];
33
- this.pageTitle = null;
34
26
  if (!(extensionId !== null && extensionId !== void 0 && extensionId.trim())) {
35
27
  throw new Error('Extension ID is required and cannot be empty');
36
28
  }
37
- this.extensionId = extensionId.trim();
29
+ var trimmedId = extensionId.trim();
30
+ if (!this.isValidId(trimmedId)) {
31
+ throw new Error('Extension ID must be alphanumeric with underscores only (no spaces, hyphens, or special characters)');
32
+ }
33
+ this.extensionId = trimmedId;
38
34
  }
39
35
  /**
40
- * Adds a menu item to the extension
41
- * @param menuItem - The menu item configuration
42
- * @throws {Error} If menuItem is invalid or ID already exists
36
+ * Validates that an ID contains only alphanumeric characters and underscores
37
+ * @param id - The ID to validate
38
+ * @returns true if valid, false otherwise
43
39
  */
44
40
  return _createClass(AdminUiSdk, [{
45
- key: "addMenu",
46
- value: function addMenu(menuItem) {
47
- var _menuItem$id, _menuItem$title, _menuItem$parent;
48
- // Validation
49
- if (!((_menuItem$id = menuItem.id) !== null && _menuItem$id !== void 0 && _menuItem$id.trim())) {
50
- throw new Error('Menu item ID is required and cannot be empty');
51
- }
52
- if (!((_menuItem$title = menuItem.title) !== null && _menuItem$title !== void 0 && _menuItem$title.trim())) {
53
- throw new Error('Menu item title is required and cannot be empty');
54
- }
55
- if (!((_menuItem$parent = menuItem.parent) !== null && _menuItem$parent !== void 0 && _menuItem$parent.trim())) {
56
- throw new Error('Menu item parent is required and cannot be empty');
57
- }
58
- if (typeof menuItem.sortOrder !== 'number' || menuItem.sortOrder < 0) {
59
- throw new Error('Menu item sortOrder must be a non-negative number');
60
- }
61
- // Check for duplicate IDs
62
- var trimmedId = menuItem.id.trim();
63
- if (this.menuItems.some(function (item) {
64
- return item.id === trimmedId;
65
- })) {
66
- throw new Error("Menu item with ID '".concat(trimmedId, "' already exists"));
67
- }
68
- // Add sanitized menu item
69
- this.menuItems.push({
70
- id: trimmedId,
71
- title: menuItem.title.trim(),
72
- parent: menuItem.parent.trim(),
73
- sortOrder: menuItem.sortOrder
74
- });
41
+ key: "isValidId",
42
+ value: function isValidId(id) {
43
+ return /^[a-zA-Z0-9_]+$/.test(id);
75
44
  }
76
45
  /**
77
- * Sets the page title for the extension
78
- * @param title - The page title
79
- * @throws {Error} If title is empty or invalid
80
- */
81
- }, {
82
- key: "addPage",
83
- value: function addPage(title) {
84
- if (!(title !== null && title !== void 0 && title.trim())) {
85
- throw new Error('Page title is required and cannot be empty');
86
- }
87
- this.pageTitle = title.trim();
88
- }
89
- /**
90
- * Registers the extension with Adobe UIX
91
- * @throws {Error} If registration fails
46
+ * Gets IMS credentials from Adobe UIX shared context
47
+ * @returns Promise resolving to credentials object with imsToken and imsOrgId
48
+ * @throws {Error} If credentials retrieval fails
92
49
  */
93
50
  }, {
94
- key: "register",
51
+ key: "getCredentials",
95
52
  value: (function () {
96
- var _register2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
97
- var config, _t;
53
+ var _getCredentials = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
54
+ var _guestConnection$shar, _guestConnection$shar2, guestConnection, imsToken, imsOrgId, _t;
98
55
  return _regenerator().w(function (_context) {
99
56
  while (1) switch (_context.p = _context.n) {
100
57
  case 0:
101
58
  _context.p = 0;
102
- config = this.getConfig();
103
59
  _context.n = 1;
104
- return register(config);
60
+ return attach({
61
+ id: this.extensionId
62
+ });
105
63
  case 1:
106
- _context.n = 3;
107
- break;
64
+ guestConnection = _context.v;
65
+ imsToken = (guestConnection === null || guestConnection === void 0 || (_guestConnection$shar = guestConnection.sharedContext) === null || _guestConnection$shar === void 0 ? void 0 : _guestConnection$shar.get('imsToken')) || null;
66
+ imsOrgId = (guestConnection === null || guestConnection === void 0 || (_guestConnection$shar2 = guestConnection.sharedContext) === null || _guestConnection$shar2 === void 0 ? void 0 : _guestConnection$shar2.get('imsOrgId')) || null;
67
+ return _context.a(2, {
68
+ imsToken: imsToken,
69
+ imsOrgId: imsOrgId
70
+ });
108
71
  case 2:
109
72
  _context.p = 2;
110
73
  _t = _context.v;
111
- throw new Error("Failed to register extension '".concat(this.extensionId, "': ").concat(_t instanceof Error ? _t.message : 'Unknown error'));
74
+ throw new Error("Failed to get credentials for extension '".concat(this.extensionId, "': ").concat(_t instanceof Error ? _t.message : 'Unknown error'));
112
75
  case 3:
113
76
  return _context.a(2);
114
77
  }
115
78
  }, _callee, this, [[0, 2]]);
116
79
  }));
117
- function register$1() {
118
- return _register2.apply(this, arguments);
80
+ function getCredentials() {
81
+ return _getCredentials.apply(this, arguments);
119
82
  }
120
- return register$1;
83
+ return getCredentials;
121
84
  }()
122
85
  /**
123
- * Gets the complete configuration object for the extension (private method)
124
- * @returns The configuration object with extension ID and available methods
86
+ * Registers the extension with Adobe UIX
87
+ * @throws {Error} If registration fails
125
88
  */
126
89
  )
127
90
  }, {
128
- key: "getConfig",
129
- value: function getConfig() {
130
- var _this = this;
131
- var methods = {};
132
- if (this.menuItems.length > 0) {
133
- methods.menu = {
134
- getItems: function getItems() {
135
- return _toConsumableArray(_this.menuItems);
136
- } // Return copy to prevent mutation
137
- };
138
- }
139
- if (this.pageTitle) {
140
- methods.page = {
141
- getTitle: function getTitle() {
142
- return _this.pageTitle;
91
+ key: "registerExtension",
92
+ value: (function () {
93
+ var _registerExtension = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
94
+ var _t2;
95
+ return _regenerator().w(function (_context2) {
96
+ while (1) switch (_context2.p = _context2.n) {
97
+ case 0:
98
+ _context2.p = 0;
99
+ _context2.n = 1;
100
+ return register({
101
+ id: this.extensionId,
102
+ methods: {}
103
+ });
104
+ case 1:
105
+ _context2.n = 3;
106
+ break;
107
+ case 2:
108
+ _context2.p = 2;
109
+ _t2 = _context2.v;
110
+ throw new Error("Failed to register extension '".concat(this.extensionId, "': ").concat(_t2 instanceof Error ? _t2.message : 'Unknown error'));
111
+ case 3:
112
+ return _context2.a(2);
143
113
  }
144
- };
114
+ }, _callee2, this, [[0, 2]]);
115
+ }));
116
+ function registerExtension() {
117
+ return _registerExtension.apply(this, arguments);
145
118
  }
146
- return {
147
- id: this.extensionId,
148
- methods: methods
149
- };
150
- }
119
+ return registerExtension;
120
+ }())
151
121
  }]);
152
122
  }();
153
123
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/utils/AdminUiSdk/index.ts"],"sourcesContent":["/**\n * <license header>\n */\n\nimport { register } from '@adobe/uix-guest';\nimport { MenuItem, AdminUiSdkConfig, AdminUiSdkInterface } from './types';\n\n/**\n * AdminUiSdk - Utility for managing Adobe Admin UI extension configurations\n *\n * @example\n * ```typescript\n * const extensionId = 'admin_ui_extensibility';\n * const sdk = new AdminUiSdk(extensionId);\n *\n * sdk.addMenu({\n * id: `${extensionId}::punchout_integrations`,\n * title: 'Punchout Integrations 123',\n * parent: 'Magento_Backend::content_elements',\n * sortOrder: 1\n * });\n *\n * sdk.addPage('Punchout Integration');\n *\n * await sdk.register(); // Register with Adobe UIX\n * ```\n */\nclass AdminUiSdk implements AdminUiSdkInterface {\n private readonly extensionId: string;\n private readonly menuItems: MenuItem[] = [];\n private pageTitle: string | null = null;\n\n /**\n * Creates a new AdminUiSdk instance\n * @param extensionId - Unique identifier for the extension\n * @throws {Error} If extensionId is empty or invalid\n */\n constructor(extensionId: string) {\n if (!extensionId?.trim()) {\n throw new Error('Extension ID is required and cannot be empty');\n }\n this.extensionId = extensionId.trim();\n }\n\n /**\n * Adds a menu item to the extension\n * @param menuItem - The menu item configuration\n * @throws {Error} If menuItem is invalid or ID already exists\n */\n addMenu(menuItem: MenuItem): void {\n // Validation\n if (!menuItem.id?.trim()) {\n throw new Error('Menu item ID is required and cannot be empty');\n }\n if (!menuItem.title?.trim()) {\n throw new Error('Menu item title is required and cannot be empty');\n }\n if (!menuItem.parent?.trim()) {\n throw new Error('Menu item parent is required and cannot be empty');\n }\n if (typeof menuItem.sortOrder !== 'number' || menuItem.sortOrder < 0) {\n throw new Error('Menu item sortOrder must be a non-negative number');\n }\n\n // Check for duplicate IDs\n const trimmedId = menuItem.id.trim();\n if (this.menuItems.some(item => item.id === trimmedId)) {\n throw new Error(`Menu item with ID '${trimmedId}' already exists`);\n }\n\n // Add sanitized menu item\n this.menuItems.push({\n id: trimmedId,\n title: menuItem.title.trim(),\n parent: menuItem.parent.trim(),\n sortOrder: menuItem.sortOrder,\n });\n }\n\n /**\n * Sets the page title for the extension\n * @param title - The page title\n * @throws {Error} If title is empty or invalid\n */\n addPage(title: string): void {\n if (!title?.trim()) {\n throw new Error('Page title is required and cannot be empty');\n }\n this.pageTitle = title.trim();\n }\n\n /**\n * Registers the extension with Adobe UIX\n * @throws {Error} If registration fails\n */\n async register(): Promise<void> {\n try {\n const config = this.getConfig();\n await register(config as any); // Type assertion for Adobe UIX compatibility\n } catch (error) {\n throw new Error(\n `Failed to register extension '${this.extensionId}': ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n /**\n * Gets the complete configuration object for the extension (private method)\n * @returns The configuration object with extension ID and available methods\n */\n private getConfig(): AdminUiSdkConfig {\n const methods: AdminUiSdkConfig['methods'] = {};\n\n if (this.menuItems.length > 0) {\n methods.menu = {\n getItems: (): MenuItem[] => [...this.menuItems], // Return copy to prevent mutation\n };\n }\n\n if (this.pageTitle) {\n methods.page = {\n getTitle: (): string => this.pageTitle!,\n };\n }\n\n return {\n id: this.extensionId,\n methods,\n };\n }\n}\n\nexport default AdminUiSdk;\n\n// Re-export types for external use\nexport type {\n MenuItem,\n PageConfig,\n MenuMethods,\n PageMethods,\n AdminUiSdkConfig,\n AdminUiSdkInterface,\n} from './types';\n"],"names":["AdminUiSdk","extensionId","_classCallCheck","menuItems","pageTitle","trim","Error","_createClass","key","value","addMenu","menuItem","_menuItem$id","_menuItem$title","_menuItem$parent","id","title","parent","sortOrder","trimmedId","some","item","concat","push","addPage","_register2","_asyncToGenerator","_regenerator","m","_callee","config","_t","w","_context","p","n","getConfig","register","v","message","a","apply","arguments","_this","methods","length","menu","getItems","_toConsumableArray","page","getTitle"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/utils/AdminUiSdk/index.ts"],"sourcesContent":["/**\n * <license header>\n */\n\nimport { register, attach } from '@adobe/uix-guest';\nimport { AdminUiSdkInterface, AdminUiSdkCredentials } from './types';\n\n/**\n * AdminUiSdk - Utility for managing Adobe Admin UI extensions\n *\n * @example\n * ```typescript\n * const sdk = new AdminUiSdk('admin_ui_extensibility');\n *\n * // Register with Adobe UIX\n * await sdk.registerExtension();\n *\n * // Get credentials\n * const credentials = await sdk.getCredentials();\n * ```\n */\nclass AdminUiSdk implements AdminUiSdkInterface {\n private readonly extensionId: string;\n\n /**\n * Creates a new AdminUiSdk instance\n * @param extensionId - Unique identifier for the extension\n * @throws {Error} If extensionId is empty or invalid\n */\n constructor(extensionId: string) {\n if (!extensionId?.trim()) {\n throw new Error('Extension ID is required and cannot be empty');\n }\n\n const trimmedId = extensionId.trim();\n if (!this.isValidId(trimmedId)) {\n throw new Error(\n 'Extension ID must be alphanumeric with underscores only (no spaces, hyphens, or special characters)'\n );\n }\n\n this.extensionId = trimmedId;\n }\n\n /**\n * Validates that an ID contains only alphanumeric characters and underscores\n * @param id - The ID to validate\n * @returns true if valid, false otherwise\n */\n private isValidId(id: string): boolean {\n return /^[a-zA-Z0-9_]+$/.test(id);\n }\n\n /**\n * Gets IMS credentials from Adobe UIX shared context\n * @returns Promise resolving to credentials object with imsToken and imsOrgId\n * @throws {Error} If credentials retrieval fails\n */\n async getCredentials(): Promise<AdminUiSdkCredentials> {\n try {\n const guestConnection = await attach({ id: this.extensionId });\n const imsToken = guestConnection?.sharedContext?.get('imsToken') || null;\n const imsOrgId = guestConnection?.sharedContext?.get('imsOrgId') || null;\n\n return {\n imsToken,\n imsOrgId,\n };\n } catch (error) {\n throw new Error(\n `Failed to get credentials for extension '${this.extensionId}': ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n /**\n * Registers the extension with Adobe UIX\n * @throws {Error} If registration fails\n */\n async registerExtension(): Promise<void> {\n try {\n await register({\n id: this.extensionId,\n methods: {},\n });\n } catch (error) {\n throw new Error(\n `Failed to register extension '${this.extensionId}': ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n}\n\nexport default AdminUiSdk;\n\n// Re-export types for external use\nexport type { AdminUiSdkInterface, AdminUiSdkCredentials } from './types';\n"],"names":["AdminUiSdk","extensionId","_classCallCheck","trim","Error","trimmedId","isValidId","_createClass","key","value","id","test","_getCredentials","_asyncToGenerator","_regenerator","m","_callee","_guestConnection$shar","_guestConnection$shar2","guestConnection","imsToken","imsOrgId","_t","w","_context","p","n","attach","v","sharedContext","get","a","concat","message","getCredentials","apply","arguments","_registerExtension","_callee2","_t2","_context2","register","methods","registerExtension"],"mappings":"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"}