@ganpatiinfo/gids-web-dom-reference 7.1.0 → 8.0.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.
Files changed (97) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/components/GidsAccordion/GidsAccordion.d.ts +8 -0
  3. package/dist/components/GidsAccordion/GidsAccordion.d.ts.map +1 -0
  4. package/dist/components/GidsAccordion/GidsAccordion.js +10 -0
  5. package/dist/components/GidsAccordion/GidsAccordion.js.map +1 -0
  6. package/dist/components/GidsAccordionItem/GidsAccordionItem.d.ts +9 -0
  7. package/dist/components/GidsAccordionItem/GidsAccordionItem.d.ts.map +1 -0
  8. package/dist/components/GidsAccordionItem/GidsAccordionItem.js +15 -0
  9. package/dist/components/GidsAccordionItem/GidsAccordionItem.js.map +1 -0
  10. package/dist/components/GidsAccordionItemContent/GidsAccordionItemContent.d.ts +8 -0
  11. package/dist/components/GidsAccordionItemContent/GidsAccordionItemContent.d.ts.map +1 -0
  12. package/dist/components/GidsAccordionItemContent/GidsAccordionItemContent.js +10 -0
  13. package/dist/components/GidsAccordionItemContent/GidsAccordionItemContent.js.map +1 -0
  14. package/dist/components/GidsAccordionItemHeader/GidsAccordionItemHeader.d.ts +8 -0
  15. package/dist/components/GidsAccordionItemHeader/GidsAccordionItemHeader.d.ts.map +1 -0
  16. package/dist/components/GidsAccordionItemHeader/GidsAccordionItemHeader.js +20 -0
  17. package/dist/components/GidsAccordionItemHeader/GidsAccordionItemHeader.js.map +1 -0
  18. package/dist/components/GidsButton/GidsButton.d.ts +1 -1
  19. package/dist/components/GidsButton/GidsButton.d.ts.map +1 -1
  20. package/dist/components/GidsButton/GidsButton.js +2 -2
  21. package/dist/components/GidsButton/GidsButton.js.map +1 -1
  22. package/dist/components/GidsDropdownItem/GidsDropdownItem.d.ts +10 -0
  23. package/dist/components/GidsDropdownItem/GidsDropdownItem.d.ts.map +1 -0
  24. package/dist/components/GidsDropdownItem/GidsDropdownItem.js +31 -0
  25. package/dist/components/GidsDropdownItem/GidsDropdownItem.js.map +1 -0
  26. package/dist/components/GidsDropdownMenu/GidsDropdownMenu.d.ts +7 -0
  27. package/dist/components/GidsDropdownMenu/GidsDropdownMenu.d.ts.map +1 -0
  28. package/dist/components/GidsDropdownMenu/GidsDropdownMenu.js +24 -0
  29. package/dist/components/GidsDropdownMenu/GidsDropdownMenu.js.map +1 -0
  30. package/dist/components/GidsDropdownMenuGroup/GidsDropdownMenuGroup.d.ts +7 -0
  31. package/dist/components/GidsDropdownMenuGroup/GidsDropdownMenuGroup.d.ts.map +1 -0
  32. package/dist/components/GidsDropdownMenuGroup/GidsDropdownMenuGroup.js +13 -0
  33. package/dist/components/GidsDropdownMenuGroup/GidsDropdownMenuGroup.js.map +1 -0
  34. package/dist/components/GidsEditButton/GidsEditButton.d.ts +8 -0
  35. package/dist/components/GidsEditButton/GidsEditButton.d.ts.map +1 -0
  36. package/dist/components/GidsEditButton/GidsEditButton.js +44 -0
  37. package/dist/components/GidsEditButton/GidsEditButton.js.map +1 -0
  38. package/dist/components/GidsFeedbackBlock/GidsFeedbackBlock.d.ts +5 -0
  39. package/dist/components/GidsFeedbackBlock/GidsFeedbackBlock.d.ts.map +1 -0
  40. package/dist/components/GidsFeedbackBlock/GidsFeedbackBlock.js +49 -0
  41. package/dist/components/GidsFeedbackBlock/GidsFeedbackBlock.js.map +1 -0
  42. package/dist/components/GidsListItem/GidsListItem.d.ts +11 -0
  43. package/dist/components/GidsListItem/GidsListItem.d.ts.map +1 -0
  44. package/dist/components/GidsListItem/GidsListItem.js +196 -0
  45. package/dist/components/GidsListItem/GidsListItem.js.map +1 -0
  46. package/dist/components/GidsMenu/GidsMenu.d.ts +7 -0
  47. package/dist/components/GidsMenu/GidsMenu.d.ts.map +1 -0
  48. package/dist/components/GidsMenu/GidsMenu.js +34 -0
  49. package/dist/components/GidsMenu/GidsMenu.js.map +1 -0
  50. package/dist/components/GidsMenuGroup/GidsMenuGroup.d.ts +7 -0
  51. package/dist/components/GidsMenuGroup/GidsMenuGroup.d.ts.map +1 -0
  52. package/dist/components/GidsMenuGroup/GidsMenuGroup.js +31 -0
  53. package/dist/components/GidsMenuGroup/GidsMenuGroup.js.map +1 -0
  54. package/dist/components/GidsOverflowContainer/GidsOverflowContainer.d.ts +7 -0
  55. package/dist/components/GidsOverflowContainer/GidsOverflowContainer.d.ts.map +1 -0
  56. package/dist/components/GidsOverflowContainer/GidsOverflowContainer.js +14 -0
  57. package/dist/components/GidsOverflowContainer/GidsOverflowContainer.js.map +1 -0
  58. package/dist/components/GidsPopover/GidsPopover.d.ts +7 -0
  59. package/dist/components/GidsPopover/GidsPopover.d.ts.map +1 -0
  60. package/dist/components/GidsPopover/GidsPopover.js +16 -0
  61. package/dist/components/GidsPopover/GidsPopover.js.map +1 -0
  62. package/dist/components/GidsProgressBar/GidsProgressBar.d.ts +7 -0
  63. package/dist/components/GidsProgressBar/GidsProgressBar.d.ts.map +1 -0
  64. package/dist/components/GidsProgressBar/GidsProgressBar.js +22 -0
  65. package/dist/components/GidsProgressBar/GidsProgressBar.js.map +1 -0
  66. package/dist/components/GidsTooltip/GidsTooltip.d.ts +6 -0
  67. package/dist/components/GidsTooltip/GidsTooltip.d.ts.map +1 -0
  68. package/dist/components/GidsTooltip/GidsTooltip.js +20 -0
  69. package/dist/components/GidsTooltip/GidsTooltip.js.map +1 -0
  70. package/dist/index.d.ts +17 -0
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +17 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/utils/childrenValidationUtils.d.ts +9 -0
  75. package/dist/utils/childrenValidationUtils.d.ts.map +1 -0
  76. package/dist/utils/childrenValidationUtils.js +27 -0
  77. package/dist/utils/childrenValidationUtils.js.map +1 -0
  78. package/package.json +45 -45
  79. package/src/components/GidsAccordion/GidsAccordion.ts +24 -0
  80. package/src/components/GidsAccordionItem/GidsAccordionItem.ts +37 -0
  81. package/src/components/GidsAccordionItemContent/GidsAccordionItemContent.ts +25 -0
  82. package/src/components/GidsAccordionItemHeader/GidsAccordionItemHeader.ts +38 -0
  83. package/src/components/GidsButton/GidsButton.ts +2 -1
  84. package/src/components/GidsDropdownItem/GidsDropdownItem.ts +62 -0
  85. package/src/components/GidsDropdownMenu/GidsDropdownMenu.ts +43 -0
  86. package/src/components/GidsDropdownMenuGroup/GidsDropdownMenuGroup.ts +26 -0
  87. package/src/components/GidsEditButton/GidsEditButton.ts +71 -0
  88. package/src/components/GidsFeedbackBlock/GidsFeedbackBlock.ts +68 -0
  89. package/src/components/GidsListItem/GidsListItem.ts +281 -0
  90. package/src/components/GidsMenu/GidsMenu.ts +64 -0
  91. package/src/components/GidsMenuGroup/GidsMenuGroup.ts +51 -0
  92. package/src/components/GidsOverflowContainer/GidsOverflowContainer.ts +27 -0
  93. package/src/components/GidsPopover/GidsPopover.ts +32 -0
  94. package/src/components/GidsProgressBar/GidsProgressBar.ts +50 -0
  95. package/src/components/GidsTooltip/GidsTooltip.ts +37 -0
  96. package/src/index.ts +17 -0
  97. package/src/utils/childrenValidationUtils.ts +47 -0
package/package.json CHANGED
@@ -1,47 +1,47 @@
1
1
  {
2
- "name": "@ganpatiinfo/gids-web-dom-reference",
3
- "version": "7.1.0",
4
- "private": false,
5
- "description": "DOM for components reference implementations",
6
- "homepage": "https://ganpatiinfosystem.vercel.app/",
7
- "type": "module",
8
- "main": "dist/index.js",
9
- "types": "dist/index.d.ts",
10
- "scripts": {
11
- "clean": "del-cli dist/*",
12
- "build": "tsc",
13
- "release:manually": "npm run build && npm publish --access public"
14
- },
15
- "author": {
16
- "name": "Ganpatiinfo Design System",
17
- "email": "ganpatiinfosysystem0@gmail.com",
18
- "url": "https://ganpatiinfosystem.vercel.app/"
19
- },
20
- "license": "MIT",
21
- "repository": {
22
- "type": "git",
23
- "url": "https://github.com/ganpatiinfosystem/ganpatiinfo-design-system",
24
- "directory": "packages/private/web-dom-reference"
25
- },
26
- "dependencies": {
27
- "@ganpatiinfo/gids-core-shared": "7.0.0",
28
- "@ganpatiinfo/gids-web-shared": "7.0.0"
29
- },
30
- "peerDependencies": {
31
- "@ganpatiinfo/gids-web-theme-interface": "4.0.1",
32
- "@jest/globals": "^30.2.0",
33
- "@types/jasmine": "^5.1.15",
34
- "expect": "^30.2.0"
35
- },
36
- "peerDependenciesMeta": {
37
- "@jest/globals": {
38
- "optional": true
39
- },
40
- "expect": {
41
- "optional": true
42
- },
43
- "@types/jasmine": {
44
- "optional": true
45
- }
46
- }
2
+ "name": "@ganpatiinfo/gids-web-dom-reference",
3
+ "version": "8.0.0",
4
+ "private": false,
5
+ "description": "DOM for components reference implementations",
6
+ "homepage": "https://ganpatiinfo-design-system.onrender.com/",
7
+ "type": "module",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "scripts": {
11
+ "clean": "del-cli dist/*",
12
+ "build": "tsc",
13
+ "release:manually": "npm run build && npm publish --access public"
14
+ },
15
+ "author": {
16
+ "name": "Ganpatiinfo Design System",
17
+ "email": "ganpatiinfosysystem0@gmail.com",
18
+ "url": "https://ganpatiinfo-design-system.onrender.com/"
19
+ },
20
+ "license": "MIT",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/ganpatiinfosystem/ganpatiinfo-design-system",
24
+ "directory": "packages/private/web-dom-reference"
25
+ },
26
+ "dependencies": {
27
+ "@ganpatiinfo/gids-core-shared": "8.0.0",
28
+ "@ganpatiinfo/gids-web-shared": "8.0.0"
29
+ },
30
+ "peerDependencies": {
31
+ "@ganpatiinfo/gids-web-theme-interface": "5.0.0",
32
+ "@jest/globals": "^30.2.0",
33
+ "@types/jasmine": "^5.1.15",
34
+ "expect": "^30.2.0"
35
+ },
36
+ "peerDependenciesMeta": {
37
+ "@jest/globals": {
38
+ "optional": true
39
+ },
40
+ "expect": {
41
+ "optional": true
42
+ },
43
+ "@types/jasmine": {
44
+ "optional": true
45
+ }
46
+ }
47
47
  }
@@ -0,0 +1,24 @@
1
+ import { type GidsAccordionCommonProps } from '@ganpatiinfo/gids-core-shared';
2
+ import {
3
+ type ClassValue,
4
+ GidsAccordionWebUtils,
5
+ } from '@ganpatiinfo/gids-web-shared';
6
+ import { appendAsChildren, DomChildren } from '../../utils/domUtils.js';
7
+
8
+ const { getGidsAccordionClassNames } = GidsAccordionWebUtils;
9
+
10
+ export interface GidsAccordionDomProps extends GidsAccordionCommonProps<DomChildren> {
11
+ extraClasses?: ClassValue;
12
+ }
13
+
14
+ export const GidsAccordionDom = ({
15
+ children,
16
+ extraClasses,
17
+ }: GidsAccordionDomProps): HTMLDivElement => {
18
+ const accordionEl = document.createElement('div');
19
+ accordionEl.className = getGidsAccordionClassNames(extraClasses);
20
+
21
+ appendAsChildren(accordionEl, children);
22
+
23
+ return accordionEl;
24
+ };
@@ -0,0 +1,37 @@
1
+ import { GidsAccordionItemCommonProps } from '@ganpatiinfo/gids-core-shared';
2
+ import {
3
+ ClassValue,
4
+ GidsAccordionItemWebUtils,
5
+ } from '@ganpatiinfo/gids-web-shared';
6
+ import {
7
+ appendAsChildren,
8
+ DomChildren,
9
+ toggleAttribute,
10
+ } from '../../utils/domUtils';
11
+
12
+ const { getGidsAccordionItemClassNames } = GidsAccordionItemWebUtils;
13
+
14
+ export interface GidsAccordionItemDomProps extends GidsAccordionItemCommonProps<DomChildren> {
15
+ onToggle?: (this: HTMLDetailsElement, even: Event) => void;
16
+ extraClasses?: ClassValue;
17
+ }
18
+
19
+ export const GidsAccordionItemDom = ({
20
+ open,
21
+ children,
22
+ onToggle,
23
+ extraClasses,
24
+ }: GidsAccordionItemDomProps): HTMLDetailsElement => {
25
+ const accordionItem = document.createElement('details');
26
+ accordionItem.className = getGidsAccordionItemClassNames(extraClasses);
27
+ toggleAttribute(accordionItem, 'open', open ?? false);
28
+ accordionItem.open = open ?? false;
29
+
30
+ appendAsChildren(accordionItem, children);
31
+
32
+ if (onToggle) {
33
+ accordionItem.addEventListener('toggle', onToggle);
34
+ }
35
+
36
+ return accordionItem;
37
+ };
@@ -0,0 +1,25 @@
1
+ import {
2
+ type ClassValue,
3
+ GidsAccordionItemContentWebUtils,
4
+ } from '@ganpatiinfo/gids-web-shared';
5
+ import { appendAsChildren, DomChildren } from '../../utils/domUtils.js';
6
+ import { GidsAccordionItemContentCommonProps } from '@ganpatiinfo/gids-core-shared';
7
+
8
+ const { getGidsAccordionItemContentClassNames } =
9
+ GidsAccordionItemContentWebUtils;
10
+
11
+ export interface GidsAccordionItemContentDomProps extends GidsAccordionItemContentCommonProps<DomChildren> {
12
+ extraClasses?: ClassValue;
13
+ }
14
+
15
+ export const GidsAccordionItemContentDom = ({
16
+ children,
17
+ extraClasses,
18
+ }: GidsAccordionItemContentDomProps): HTMLDivElement => {
19
+ const content = document.createElement('div');
20
+ content.className = getGidsAccordionItemContentClassNames(extraClasses);
21
+
22
+ appendAsChildren(content, children);
23
+
24
+ return content;
25
+ };
@@ -0,0 +1,38 @@
1
+ import { type GidsAccordionItemHeaderCommonProps } from '@ganpatiinfo/gids-core-shared';
2
+ import {
3
+ ClassValue,
4
+ GidsAccordionItemHeaderWebUtils,
5
+ } from '@ganpatiinfo/gids-web-shared';
6
+ import { appendAsChildren, DomChildren } from '../../utils/domUtils';
7
+ import { GidsIconDom } from '../GidsIcon/GidsIcon';
8
+
9
+ const { getGidsAccordionItemHeaderClassNames } =
10
+ GidsAccordionItemHeaderWebUtils;
11
+
12
+ export interface GidsAccordionItemHeaderDomProps extends GidsAccordionItemHeaderCommonProps<DomChildren> {
13
+ extraClasses?: ClassValue;
14
+ }
15
+
16
+ export const GidsAccordionItemHeaderDom = ({
17
+ children,
18
+ extraClasses,
19
+ }: GidsAccordionItemHeaderDomProps): HTMLElement => {
20
+ const header = document.createElement('summary');
21
+ header.className = getGidsAccordionItemHeaderClassNames(extraClasses);
22
+
23
+ const content = document.createElement('div');
24
+ content.className = 'gids-accordion-item-header__content';
25
+ appendAsChildren(content, children);
26
+
27
+ header.append(content);
28
+ header.append(
29
+ GidsIconDom({
30
+ name: 'chevron-down',
31
+ size: 'md',
32
+ className: 'gids-accordion-item-header__indicator',
33
+ alt: '',
34
+ }),
35
+ );
36
+
37
+ return header;
38
+ };
@@ -25,6 +25,7 @@ export const GidsButtonDom = <
25
25
  size,
26
26
  disabled,
27
27
  destructive,
28
+ positive,
28
29
  loading,
29
30
  width,
30
31
  children,
@@ -41,7 +42,7 @@ export const GidsButtonDom = <
41
42
  ) as ButtonElement extends 'button' ? HTMLButtonElement : HTMLAnchorElement;
42
43
 
43
44
  button.className = getGidsButtonClassNames(
44
- { appearance, size, width, destructive, loading },
45
+ { appearance, size, width, destructive, loading, positive },
45
46
  !children && nonEmpty(leadingIcon) && !nonEmpty(trailingIcon),
46
47
  );
47
48
 
@@ -0,0 +1,62 @@
1
+ import {
2
+ type GidsDropdownItemWebProps,
3
+ GidsDropdownItemWebUtils,
4
+ } from '@ganpatiinfo/gids-web-shared';
5
+ import { GidsListItemDom } from '../GidsListItem/GidsListItem.js';
6
+ import {
7
+ GidsDropdownItemSelectEventDetail,
8
+ GidsListItemSelectEventDetail,
9
+ } from '@ganpatiinfo/gids-core-shared';
10
+ import { DomChildren } from '../../utils/domUtils.js';
11
+
12
+ const { getGidsDropdownItemClassNames } = GidsDropdownItemWebUtils;
13
+
14
+ export interface GidsDropdownItemDomProps extends GidsDropdownItemWebProps<DomChildren> {
15
+ name?: string;
16
+ extraClasses?: string;
17
+ onPressDropdownItem?: (
18
+ event: CustomEvent<GidsDropdownItemSelectEventDetail>,
19
+ ) => void;
20
+ }
21
+
22
+ export const GidsDropdownItemDom = ({
23
+ title,
24
+ selected = false,
25
+ disabled = false,
26
+ extraClasses,
27
+ name,
28
+ value,
29
+ onPressDropdownItem,
30
+ index,
31
+ defaultSelectedIndex,
32
+ leadingAccessory,
33
+ }: GidsDropdownItemDomProps): HTMLButtonElement => {
34
+ return GidsListItemDom({
35
+ children: title,
36
+ index,
37
+ defaultSelectedIndex,
38
+ selected,
39
+ disabled,
40
+ extraClasses: getGidsDropdownItemClassNames(extraClasses),
41
+ name,
42
+ leadingAccessory,
43
+ onPressListItem: (event: CustomEvent<GidsListItemSelectEventDetail>) => {
44
+ const customEvent = new CustomEvent<GidsDropdownItemSelectEventDetail>(
45
+ 'onPressDropdownItem',
46
+ {
47
+ bubbles: true,
48
+ composed: true,
49
+ detail: {
50
+ title,
51
+ value,
52
+ disabled,
53
+ ...event.detail,
54
+ },
55
+ },
56
+ );
57
+ if (onPressDropdownItem) {
58
+ onPressDropdownItem(customEvent);
59
+ }
60
+ },
61
+ });
62
+ };
@@ -0,0 +1,43 @@
1
+ import {
2
+ type GidsDropdownMenuWebProps,
3
+ GidsDropdownMenuWebUtils,
4
+ } from '@ganpatiinfo/gids-web-shared';
5
+ import { appendAsChildren, DomChildren } from '../../utils/domUtils.js';
6
+ import { GidsHeadingDom } from '../GidsHeading/GidsHeading.js';
7
+
8
+ const { getGidsDropdownMenuClassNames } = GidsDropdownMenuWebUtils;
9
+
10
+ export interface GidsDropdownMenuDomProps extends GidsDropdownMenuWebProps<DomChildren> {
11
+ extraClasses?: string;
12
+ }
13
+
14
+ export const GidsDropdownMenuDom = ({
15
+ sectionLabel,
16
+ children,
17
+ extraClasses,
18
+ }: GidsDropdownMenuDomProps): HTMLDivElement => {
19
+ const dropdownMenu = document.createElement('div');
20
+ dropdownMenu.className = getGidsDropdownMenuClassNames(extraClasses);
21
+
22
+ if (
23
+ sectionLabel !== undefined &&
24
+ sectionLabel !== null &&
25
+ sectionLabel !== ''
26
+ ) {
27
+ dropdownMenu.append(
28
+ GidsHeadingDom({
29
+ supportingText: sectionLabel,
30
+ supportingTextTypography: 'eyebrow-medium',
31
+ }),
32
+ );
33
+ }
34
+
35
+ if (children !== undefined && children !== null) {
36
+ const childrenContainer = document.createElement('div');
37
+ childrenContainer.className = 'gids-dropdown-menu__children';
38
+ appendAsChildren(childrenContainer, children);
39
+ appendAsChildren(dropdownMenu, childrenContainer);
40
+ }
41
+
42
+ return dropdownMenu;
43
+ };
@@ -0,0 +1,26 @@
1
+ import {
2
+ GidsDropdownMenuGroupWebProps,
3
+ GidsDropdownMenuGroupWebUtils,
4
+ } from '@ganpatiinfo/gids-web-shared';
5
+ import { appendAsChildren, DomChildren } from '../../utils/domUtils.js';
6
+
7
+ const { getGidsDropdownMenuGroupClassNames } = GidsDropdownMenuGroupWebUtils;
8
+
9
+ export interface GidsDropdownMenuGroupDomProps extends GidsDropdownMenuGroupWebProps<DomChildren> {
10
+ extraClasses?: string;
11
+ }
12
+
13
+ export const GidsDropdownMenuGroupDom = ({
14
+ children,
15
+ extraClasses,
16
+ }: GidsDropdownMenuGroupDomProps): HTMLDivElement => {
17
+ const dropdownMenuGroup = document.createElement('div');
18
+ dropdownMenuGroup.className =
19
+ getGidsDropdownMenuGroupClassNames(extraClasses);
20
+
21
+ if (children !== undefined && children !== null && children !== '') {
22
+ appendAsChildren(dropdownMenuGroup, children);
23
+ }
24
+
25
+ return dropdownMenuGroup;
26
+ };
@@ -0,0 +1,71 @@
1
+ import {
2
+ ClassValue,
3
+ GidsEditButtonWebProps,
4
+ GidsEditButtonWebUtils,
5
+ } from '@ganpatiinfo/gids-web-shared';
6
+ import { appendAsChildren, DomChildren } from '../../utils/domUtils.js';
7
+ import { GidsIconDom } from '../GidsIcon/GidsIcon';
8
+
9
+ const { getGidsEditButtonClassNames } = GidsEditButtonWebUtils;
10
+
11
+ export interface GidsEditButtonDomProps extends GidsEditButtonWebProps<DomChildren> {
12
+ onPressEditButton?: (this: HTMLButtonElement, event: Event) => void;
13
+ extraClasses?: ClassValue;
14
+ }
15
+
16
+ export const GidsEditButtonDom = ({
17
+ disabled,
18
+ children,
19
+ size = 'md',
20
+ editButtonType = 'add',
21
+ onPressEditButton,
22
+ extraClasses,
23
+ }: GidsEditButtonDomProps): HTMLButtonElement => {
24
+ const editButton = document.createElement('button');
25
+ editButton.className = getGidsEditButtonClassNames({ size }, extraClasses);
26
+
27
+ if (disabled) {
28
+ editButton.setAttribute('disabled', '');
29
+ } else {
30
+ editButton.removeAttribute('disabled');
31
+ }
32
+
33
+ const btnIconContainer = document.createElement('div');
34
+ if (editButtonType === 'custom' && children) {
35
+ appendAsChildren(btnIconContainer, children);
36
+ }
37
+
38
+ if (editButtonType === 'add') {
39
+ btnIconContainer.className = disabled
40
+ ? 'gids-edit-button__add gids-edit-button__disabled'
41
+ : 'gids-edit-button__add';
42
+ btnIconContainer.append(
43
+ GidsIconDom({
44
+ name: 'add',
45
+ size: size,
46
+ appearance: 'filled',
47
+ }),
48
+ );
49
+ }
50
+
51
+ if (editButtonType === 'remove') {
52
+ btnIconContainer.className = disabled
53
+ ? 'gids-edit-button__remove gids-edit-button__disabled'
54
+ : 'gids-edit-button__remove';
55
+ btnIconContainer.append(
56
+ GidsIconDom({
57
+ name: 'remove',
58
+ appearance: 'filled',
59
+ size: size,
60
+ }),
61
+ );
62
+ }
63
+
64
+ editButton.appendChild(btnIconContainer);
65
+
66
+ if (onPressEditButton && !disabled) {
67
+ editButton.addEventListener('click', onPressEditButton);
68
+ }
69
+
70
+ return editButton;
71
+ };
@@ -0,0 +1,68 @@
1
+ import { type GidsFeedbackBlockCommonProps } from '@ganpatiinfo/gids-core-shared';
2
+ import { GidsFeedbackBlockWebUtils } from '@ganpatiinfo/gids-web-shared';
3
+ import { appendAsChildren, DomNodeOrString } from '../../utils/domUtils.js';
4
+ import { GidsButtonDockDom } from '../GidsButtonDock/GidsButtonDock.js';
5
+
6
+ const { getGidsFeedbackBlockClassNames } = GidsFeedbackBlockWebUtils;
7
+
8
+ export type GidsFeedbackBlockDomProps = GidsFeedbackBlockCommonProps<
9
+ DomNodeOrString,
10
+ DomNodeOrString,
11
+ DomNodeOrString
12
+ >;
13
+
14
+ export const GidsFeedbackBlockDom = ({
15
+ title,
16
+ supportingText,
17
+ image,
18
+ children,
19
+ }: GidsFeedbackBlockDomProps): HTMLDivElement => {
20
+ const feedbackBlock = document.createElement('div');
21
+ feedbackBlock.className = getGidsFeedbackBlockClassNames();
22
+
23
+ const feedbackBlockInnerContainer = document.createElement('div');
24
+ feedbackBlockInnerContainer.className =
25
+ 'gids-feedback-block__inner-container';
26
+
27
+ if (image) {
28
+ const imageEl = document.createElement('div');
29
+ imageEl.className = 'gids-feedback-block__image-container';
30
+ imageEl.append(image);
31
+ appendAsChildren(feedbackBlockInnerContainer, imageEl);
32
+ }
33
+
34
+ if (title) {
35
+ const titleEl = document.createElement('p');
36
+ const titleStrongEl = document.createElement('strong');
37
+ titleEl.className = 'gids-feedback-block__title';
38
+ if (title instanceof Node) {
39
+ titleStrongEl.append(title);
40
+ } else {
41
+ titleStrongEl.textContent = title;
42
+ }
43
+ appendAsChildren(titleEl, titleStrongEl);
44
+ appendAsChildren(feedbackBlockInnerContainer, titleEl);
45
+ }
46
+
47
+ if (supportingText) {
48
+ const supportingTextEl = document.createElement('div');
49
+ supportingTextEl.className = 'gids-feedback-block__supporting-text';
50
+ if (supportingText instanceof Node) {
51
+ supportingTextEl.append(supportingText);
52
+ } else {
53
+ supportingTextEl.textContent = supportingText;
54
+ }
55
+ appendAsChildren(feedbackBlockInnerContainer, supportingTextEl);
56
+ }
57
+
58
+ if (children) {
59
+ feedbackBlockInnerContainer.appendChild(
60
+ GidsButtonDockDom({
61
+ primaryChildren: children,
62
+ }),
63
+ );
64
+ }
65
+ appendAsChildren(feedbackBlock, feedbackBlockInnerContainer);
66
+
67
+ return feedbackBlock;
68
+ };