@ifsworld/granite-components 4.3.0 → 5.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.
- package/README.md +117 -4
- package/esm2020/ifsworld-granite-components.mjs +5 -0
- package/esm2020/index.mjs +48 -0
- package/esm2020/lib/arrange-grid/arrange-grid-item.component.mjs +44 -0
- package/esm2020/lib/arrange-grid/arrange-grid.component.mjs +125 -0
- package/esm2020/lib/arrange-grid/arrange-grid.module.mjs +19 -0
- package/esm2020/lib/badge/badge.component.mjs +39 -0
- package/esm2020/lib/badge/badge.module.mjs +18 -0
- package/esm2020/lib/badge/testing/badge.harness.mjs +25 -0
- package/esm2020/lib/button/button.component.mjs +89 -0
- package/esm2020/lib/button/button.module.mjs +16 -0
- package/esm2020/lib/checkbox/checkbox-group.component.mjs +17 -0
- package/esm2020/lib/checkbox/checkbox.component.mjs +96 -0
- package/esm2020/lib/checkbox/checkbox.module.mjs +17 -0
- package/esm2020/lib/core/animation.mjs +34 -0
- package/esm2020/lib/core/client-environment.mjs +20 -0
- package/esm2020/lib/core/common-behaviors/disabled.mjs +27 -0
- package/esm2020/lib/core/core.module.mjs +36 -0
- package/esm2020/lib/core/devices/client-input-desktop.directive.mjs +29 -0
- package/esm2020/lib/core/devices/client-input-touch.directive.mjs +29 -0
- package/esm2020/lib/core/devices/client-output-desktop.directive.mjs +29 -0
- package/esm2020/lib/core/devices/client-output-touch.directive.mjs +29 -0
- package/esm2020/lib/core/pipes/pure-pipes.module.mjs +16 -0
- package/esm2020/lib/core/pipes/title.pipe.mjs +21 -0
- package/esm2020/lib/core/radio-checkbox-base.mjs +19 -0
- package/esm2020/lib/core/theme.library.mjs +59 -0
- package/esm2020/lib/core/types.mjs +2 -0
- package/esm2020/lib/grid/grid.component.mjs +128 -0
- package/esm2020/lib/grid/grid.module.mjs +18 -0
- package/esm2020/lib/icon/icon.component.mjs +43 -0
- package/esm2020/lib/icon/icon.module.mjs +16 -0
- package/esm2020/lib/input-field/input-field.component.mjs +160 -0
- package/esm2020/lib/input-field/input-field.module.mjs +20 -0
- package/esm2020/lib/menu/divider.directive.mjs +23 -0
- package/esm2020/lib/menu/menu-base.mjs +347 -0
- package/esm2020/lib/menu/menu-desktop-animations.mjs +23 -0
- package/esm2020/lib/menu/menu-errors.mjs +37 -0
- package/esm2020/lib/menu/menu-item.component.mjs +91 -0
- package/esm2020/lib/menu/menu-panel.mjs +7 -0
- package/esm2020/lib/menu/menu-positions.mjs +9 -0
- package/esm2020/lib/menu/menu-touch-animations.mjs +137 -0
- package/esm2020/lib/menu/menu-touch-close.component.mjs +13 -0
- package/esm2020/lib/menu/menu-touch-title.component.mjs +59 -0
- package/esm2020/lib/menu/menu-trigger-for.directive.mjs +702 -0
- package/esm2020/lib/menu/menu.component.mjs +30 -0
- package/esm2020/lib/menu/menu.module.mjs +55 -0
- package/esm2020/lib/menu/testing/menu.harness.mjs +109 -0
- package/esm2020/lib/menu/title.directive.mjs +17 -0
- package/esm2020/lib/radio-button/radio-button.component.mjs +118 -0
- package/esm2020/lib/radio-button/radio-button.module.mjs +17 -0
- package/esm2020/lib/radio-button/radio-group.component.mjs +17 -0
- package/esm2020/lib/table/cell/cell.mjs +15 -0
- package/esm2020/lib/table/cell/table-data-cell.component.mjs +26 -0
- package/esm2020/lib/table/cell/table-header-cell.component.mjs +12 -0
- package/esm2020/lib/table/column/table-column.directive.mjs +23 -0
- package/esm2020/lib/table/table-constants.library.mjs +4 -0
- package/esm2020/lib/table/table.component.mjs +36 -0
- package/esm2020/lib/table/table.module.mjs +32 -0
- package/esm2020/lib/toggle-switch/toggle-switch.component.mjs +96 -0
- package/esm2020/lib/toggle-switch/toggle-switch.module.mjs +16 -0
- package/fesm2015/ifsworld-granite-components.mjs +3145 -0
- package/fesm2015/ifsworld-granite-components.mjs.map +1 -0
- package/fesm2020/ifsworld-granite-components.mjs +3103 -0
- package/fesm2020/ifsworld-granite-components.mjs.map +1 -0
- package/ifsworld-granite-components.d.ts +1 -8
- package/lib/arrange-grid/arrange-grid-item.component.d.ts +3 -0
- package/lib/arrange-grid/arrange-grid.component.d.ts +3 -0
- package/lib/arrange-grid/arrange-grid.module.d.ts +7 -0
- package/lib/badge/badge.component.d.ts +3 -0
- package/lib/badge/badge.module.d.ts +6 -0
- package/lib/button/button.component.d.ts +5 -0
- package/lib/button/button.module.d.ts +5 -0
- package/lib/checkbox/checkbox-group.component.d.ts +3 -0
- package/lib/checkbox/checkbox.component.d.ts +3 -0
- package/lib/checkbox/checkbox.module.d.ts +6 -0
- package/lib/core/core.module.d.ts +8 -0
- package/lib/core/devices/client-input-desktop.directive.d.ts +3 -0
- package/lib/core/devices/client-input-touch.directive.d.ts +3 -0
- package/lib/core/devices/client-output-desktop.directive.d.ts +3 -0
- package/lib/core/devices/client-output-touch.directive.d.ts +3 -0
- package/lib/core/pipes/pure-pipes.module.d.ts +5 -0
- package/lib/core/pipes/title.pipe.d.ts +3 -0
- package/lib/core/radio-checkbox-base.d.ts +3 -0
- package/lib/grid/grid.component.d.ts +5 -0
- package/lib/grid/grid.module.d.ts +6 -0
- package/lib/icon/icon.component.d.ts +3 -0
- package/lib/icon/icon.module.d.ts +5 -0
- package/lib/input-field/input-field.component.d.ts +3 -0
- package/lib/input-field/input-field.module.d.ts +8 -0
- package/lib/menu/divider.directive.d.ts +3 -0
- package/lib/menu/menu-base.d.ts +190 -0
- package/lib/menu/menu-item.component.d.ts +3 -0
- package/lib/menu/menu-touch-close.component.d.ts +3 -0
- package/lib/menu/menu-touch-title.component.d.ts +4 -1
- package/lib/menu/menu-trigger-for.directive.d.ts +4 -1
- package/lib/menu/menu.component.d.ts +4 -187
- package/lib/menu/menu.module.d.ts +15 -0
- package/lib/menu/title.directive.d.ts +3 -0
- package/lib/radio-button/radio-button.component.d.ts +4 -1
- package/lib/radio-button/radio-button.module.d.ts +6 -0
- package/lib/radio-button/radio-group.component.d.ts +3 -0
- package/lib/table/cell/cell.d.ts +3 -0
- package/lib/table/cell/table-data-cell.component.d.ts +3 -0
- package/lib/table/cell/table-header-cell.component.d.ts +3 -0
- package/lib/table/column/table-column.directive.d.ts +3 -0
- package/lib/table/table.component.d.ts +3 -0
- package/lib/table/table.module.d.ts +12 -0
- package/lib/toggle-switch/toggle-switch.component.d.ts +3 -0
- package/lib/toggle-switch/toggle-switch.module.d.ts +5 -0
- package/package.json +25 -12
- package/bundles/ifsworld-granite-components.umd.js +0 -3649
- package/bundles/ifsworld-granite-components.umd.js.map +0 -1
- package/bundles/ifsworld-granite-components.umd.min.js +0 -10
- package/bundles/ifsworld-granite-components.umd.min.js.map +0 -1
- package/esm2015/ifsworld-granite-components.js +0 -13
- package/esm2015/ifsworld-granite-components.js.map +0 -1
- package/esm2015/ifsworld-granite-components.metadata.json +0 -1
- package/esm2015/index.js +0 -48
- package/esm2015/index.js.map +0 -1
- package/esm2015/index.metadata.json +0 -1
- package/esm2015/lib/arrange-grid/arrange-grid-item.component.js +0 -48
- package/esm2015/lib/arrange-grid/arrange-grid-item.component.js.map +0 -1
- package/esm2015/lib/arrange-grid/arrange-grid-item.component.metadata.json +0 -1
- package/esm2015/lib/arrange-grid/arrange-grid.component.js +0 -123
- package/esm2015/lib/arrange-grid/arrange-grid.component.js.map +0 -1
- package/esm2015/lib/arrange-grid/arrange-grid.component.metadata.json +0 -1
- package/esm2015/lib/arrange-grid/arrange-grid.module.js +0 -14
- package/esm2015/lib/arrange-grid/arrange-grid.module.js.map +0 -1
- package/esm2015/lib/arrange-grid/arrange-grid.module.metadata.json +0 -1
- package/esm2015/lib/badge/badge.component.js +0 -44
- package/esm2015/lib/badge/badge.component.js.map +0 -1
- package/esm2015/lib/badge/badge.component.metadata.json +0 -1
- package/esm2015/lib/badge/badge.module.js +0 -13
- package/esm2015/lib/badge/badge.module.js.map +0 -1
- package/esm2015/lib/badge/badge.module.metadata.json +0 -1
- package/esm2015/lib/badge/testing/badge.harness.js +0 -30
- package/esm2015/lib/badge/testing/badge.harness.js.map +0 -1
- package/esm2015/lib/badge/testing/badge.harness.metadata.json +0 -1
- package/esm2015/lib/button/button.component.js +0 -108
- package/esm2015/lib/button/button.component.js.map +0 -1
- package/esm2015/lib/button/button.component.metadata.json +0 -1
- package/esm2015/lib/button/button.module.js +0 -11
- package/esm2015/lib/button/button.module.js.map +0 -1
- package/esm2015/lib/button/button.module.metadata.json +0 -1
- package/esm2015/lib/checkbox/checkbox-group.component.js +0 -19
- package/esm2015/lib/checkbox/checkbox-group.component.js.map +0 -1
- package/esm2015/lib/checkbox/checkbox-group.component.metadata.json +0 -1
- package/esm2015/lib/checkbox/checkbox.component.js +0 -89
- package/esm2015/lib/checkbox/checkbox.component.js.map +0 -1
- package/esm2015/lib/checkbox/checkbox.component.metadata.json +0 -1
- package/esm2015/lib/checkbox/checkbox.module.js +0 -12
- package/esm2015/lib/checkbox/checkbox.module.js.map +0 -1
- package/esm2015/lib/checkbox/checkbox.module.metadata.json +0 -1
- package/esm2015/lib/core/animation.js +0 -34
- package/esm2015/lib/core/animation.js.map +0 -1
- package/esm2015/lib/core/animation.metadata.json +0 -1
- package/esm2015/lib/core/client-environment.js +0 -20
- package/esm2015/lib/core/client-environment.js.map +0 -1
- package/esm2015/lib/core/client-environment.metadata.json +0 -1
- package/esm2015/lib/core/common-behaviors/disabled.js +0 -25
- package/esm2015/lib/core/common-behaviors/disabled.js.map +0 -1
- package/esm2015/lib/core/common-behaviors/disabled.metadata.json +0 -1
- package/esm2015/lib/core/core.module.js +0 -25
- package/esm2015/lib/core/core.module.js.map +0 -1
- package/esm2015/lib/core/core.module.metadata.json +0 -1
- package/esm2015/lib/core/devices/client-input-desktop.directive.js +0 -22
- package/esm2015/lib/core/devices/client-input-desktop.directive.js.map +0 -1
- package/esm2015/lib/core/devices/client-input-desktop.directive.metadata.json +0 -1
- package/esm2015/lib/core/devices/client-input-touch.directive.js +0 -22
- package/esm2015/lib/core/devices/client-input-touch.directive.js.map +0 -1
- package/esm2015/lib/core/devices/client-input-touch.directive.metadata.json +0 -1
- package/esm2015/lib/core/devices/client-output-desktop.directive.js +0 -22
- package/esm2015/lib/core/devices/client-output-desktop.directive.js.map +0 -1
- package/esm2015/lib/core/devices/client-output-desktop.directive.metadata.json +0 -1
- package/esm2015/lib/core/devices/client-output-touch.directive.js +0 -22
- package/esm2015/lib/core/devices/client-output-touch.directive.js.map +0 -1
- package/esm2015/lib/core/devices/client-output-touch.directive.metadata.json +0 -1
- package/esm2015/lib/core/pipes/pure-pipes.module.js +0 -11
- package/esm2015/lib/core/pipes/pure-pipes.module.js.map +0 -1
- package/esm2015/lib/core/pipes/pure-pipes.module.metadata.json +0 -1
- package/esm2015/lib/core/pipes/title.pipe.js +0 -17
- package/esm2015/lib/core/pipes/title.pipe.js.map +0 -1
- package/esm2015/lib/core/pipes/title.pipe.metadata.json +0 -1
- package/esm2015/lib/core/radio-checkbox-base.js +0 -15
- package/esm2015/lib/core/radio-checkbox-base.js.map +0 -1
- package/esm2015/lib/core/radio-checkbox-base.metadata.json +0 -1
- package/esm2015/lib/core/theme.library.js +0 -59
- package/esm2015/lib/core/theme.library.js.map +0 -1
- package/esm2015/lib/core/theme.library.metadata.json +0 -1
- package/esm2015/lib/core/types.js +0 -2
- package/esm2015/lib/core/types.js.map +0 -1
- package/esm2015/lib/core/types.metadata.json +0 -1
- package/esm2015/lib/grid/grid.component.js +0 -131
- package/esm2015/lib/grid/grid.component.js.map +0 -1
- package/esm2015/lib/grid/grid.component.metadata.json +0 -1
- package/esm2015/lib/grid/grid.module.js +0 -13
- package/esm2015/lib/grid/grid.module.js.map +0 -1
- package/esm2015/lib/grid/grid.module.metadata.json +0 -1
- package/esm2015/lib/icon/icon.component.js +0 -48
- package/esm2015/lib/icon/icon.component.js.map +0 -1
- package/esm2015/lib/icon/icon.component.metadata.json +0 -1
- package/esm2015/lib/icon/icon.module.js +0 -11
- package/esm2015/lib/icon/icon.module.js.map +0 -1
- package/esm2015/lib/icon/icon.module.metadata.json +0 -1
- package/esm2015/lib/input-field/input-field.component.js +0 -144
- package/esm2015/lib/input-field/input-field.component.js.map +0 -1
- package/esm2015/lib/input-field/input-field.component.metadata.json +0 -1
- package/esm2015/lib/input-field/input-field.module.js +0 -15
- package/esm2015/lib/input-field/input-field.module.js.map +0 -1
- package/esm2015/lib/input-field/input-field.module.metadata.json +0 -1
- package/esm2015/lib/menu/divider.directive.js +0 -20
- package/esm2015/lib/menu/divider.directive.js.map +0 -1
- package/esm2015/lib/menu/divider.directive.metadata.json +0 -1
- package/esm2015/lib/menu/menu-desktop-animations.js +0 -23
- package/esm2015/lib/menu/menu-desktop-animations.js.map +0 -1
- package/esm2015/lib/menu/menu-desktop-animations.metadata.json +0 -1
- package/esm2015/lib/menu/menu-errors.js +0 -37
- package/esm2015/lib/menu/menu-errors.js.map +0 -1
- package/esm2015/lib/menu/menu-errors.metadata.json +0 -1
- package/esm2015/lib/menu/menu-item.component.js +0 -82
- package/esm2015/lib/menu/menu-item.component.js.map +0 -1
- package/esm2015/lib/menu/menu-item.component.metadata.json +0 -1
- package/esm2015/lib/menu/menu-panel.js +0 -7
- package/esm2015/lib/menu/menu-panel.js.map +0 -1
- package/esm2015/lib/menu/menu-panel.metadata.json +0 -1
- package/esm2015/lib/menu/menu-positions.js +0 -9
- package/esm2015/lib/menu/menu-positions.js.map +0 -1
- package/esm2015/lib/menu/menu-positions.metadata.json +0 -1
- package/esm2015/lib/menu/menu-touch-animations.js +0 -137
- package/esm2015/lib/menu/menu-touch-animations.js.map +0 -1
- package/esm2015/lib/menu/menu-touch-animations.metadata.json +0 -1
- package/esm2015/lib/menu/menu-touch-close.component.js +0 -16
- package/esm2015/lib/menu/menu-touch-close.component.js.map +0 -1
- package/esm2015/lib/menu/menu-touch-close.component.metadata.json +0 -1
- package/esm2015/lib/menu/menu-touch-title.component.js +0 -45
- package/esm2015/lib/menu/menu-touch-title.component.js.map +0 -1
- package/esm2015/lib/menu/menu-touch-title.component.metadata.json +0 -1
- package/esm2015/lib/menu/menu-trigger-for.directive.js +0 -684
- package/esm2015/lib/menu/menu-trigger-for.directive.js.map +0 -1
- package/esm2015/lib/menu/menu-trigger-for.directive.metadata.json +0 -1
- package/esm2015/lib/menu/menu.component.js +0 -362
- package/esm2015/lib/menu/menu.component.js.map +0 -1
- package/esm2015/lib/menu/menu.component.metadata.json +0 -1
- package/esm2015/lib/menu/menu.module.js +0 -38
- package/esm2015/lib/menu/menu.module.js.map +0 -1
- package/esm2015/lib/menu/menu.module.metadata.json +0 -1
- package/esm2015/lib/menu/testing/menu.harness.js +0 -133
- package/esm2015/lib/menu/testing/menu.harness.js.map +0 -1
- package/esm2015/lib/menu/testing/menu.harness.metadata.json +0 -1
- package/esm2015/lib/menu/title.directive.js +0 -13
- package/esm2015/lib/menu/title.directive.js.map +0 -1
- package/esm2015/lib/menu/title.directive.metadata.json +0 -1
- package/esm2015/lib/radio-button/radio-button.component.js +0 -110
- package/esm2015/lib/radio-button/radio-button.component.js.map +0 -1
- package/esm2015/lib/radio-button/radio-button.component.metadata.json +0 -1
- package/esm2015/lib/radio-button/radio-button.module.js +0 -12
- package/esm2015/lib/radio-button/radio-button.module.js.map +0 -1
- package/esm2015/lib/radio-button/radio-button.module.metadata.json +0 -1
- package/esm2015/lib/radio-button/radio-group.component.js +0 -19
- package/esm2015/lib/radio-button/radio-group.component.js.map +0 -1
- package/esm2015/lib/radio-button/radio-group.component.metadata.json +0 -1
- package/esm2015/lib/table/cell/cell.js +0 -12
- package/esm2015/lib/table/cell/cell.js.map +0 -1
- package/esm2015/lib/table/cell/cell.metadata.json +0 -1
- package/esm2015/lib/table/cell/table-data-cell.component.js +0 -21
- package/esm2015/lib/table/cell/table-data-cell.component.js.map +0 -1
- package/esm2015/lib/table/cell/table-data-cell.component.metadata.json +0 -1
- package/esm2015/lib/table/cell/table-header-cell.component.js +0 -13
- package/esm2015/lib/table/cell/table-header-cell.component.js.map +0 -1
- package/esm2015/lib/table/cell/table-header-cell.component.metadata.json +0 -1
- package/esm2015/lib/table/column/table-column.directive.js +0 -16
- package/esm2015/lib/table/column/table-column.directive.js.map +0 -1
- package/esm2015/lib/table/column/table-column.directive.metadata.json +0 -1
- package/esm2015/lib/table/table-constants.library.js +0 -4
- package/esm2015/lib/table/table-constants.library.js.map +0 -1
- package/esm2015/lib/table/table-constants.library.metadata.json +0 -1
- package/esm2015/lib/table/table.component.js +0 -28
- package/esm2015/lib/table/table.component.js.map +0 -1
- package/esm2015/lib/table/table.component.metadata.json +0 -1
- package/esm2015/lib/table/table.module.js +0 -24
- package/esm2015/lib/table/table.module.js.map +0 -1
- package/esm2015/lib/table/table.module.metadata.json +0 -1
- package/esm2015/lib/toggle-switch/toggle-switch.component.js +0 -89
- package/esm2015/lib/toggle-switch/toggle-switch.component.js.map +0 -1
- package/esm2015/lib/toggle-switch/toggle-switch.component.metadata.json +0 -1
- package/esm2015/lib/toggle-switch/toggle-switch.module.js +0 -11
- package/esm2015/lib/toggle-switch/toggle-switch.module.js.map +0 -1
- package/esm2015/lib/toggle-switch/toggle-switch.module.metadata.json +0 -1
- package/fesm2015/ifsworld-granite-components.js +0 -2992
- package/fesm2015/ifsworld-granite-components.js.map +0 -1
- package/ifsworld-granite-components.metadata.json +0 -1
package/README.md
CHANGED
|
@@ -1,7 +1,120 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Granite Components
|
|
2
2
|
|
|
3
|
-
This library
|
|
3
|
+
This library is an Angular implementation of the [IFS Design System](https://design.ifs.com). The IFS User Experience product group builds and maintains common UI components and tools. [The goal](docs/strategy.md) is to help product teams rapidly build applications with a delightful IFS branded experience.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+
[](https://snyk.io/advisor/npm-package/@ifsworld/granite-components)
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
[](http://commitizen.github.io/cz-cli/)
|
|
10
|
+
[](https://github.com/semantic-release/semantic-release)
|
|
11
|
+
[](https://uxstorybooklatest.z16.web.core.windows.net/)
|
|
12
|
+
|
|
13
|
+
## Deployments
|
|
14
|
+
|
|
15
|
+
| Name | URL | Secondary URL |
|
|
16
|
+
| ------------------------------------------- | ----------------------------------------------------- | --------------------------------------------------- |
|
|
17
|
+
| **Storybook - Latest** | <https://uxstorybooklatest.z16.web.core.windows.net/> | - |
|
|
18
|
+
| **Storybook - Beta** | <https://sb-designifs.azureedge.net/> | <https://uxstorybookbeta.z16.web.core.windows.net/> |
|
|
19
|
+
| **Granite Component Library Demo - Latest** | <https://uxdemolatest.z16.web.core.windows.net/> | - |
|
|
20
|
+
| **Granite Component Library Demo - Beta** | <https://cl-designifs.azureedge.net/> | <https://uxdemobeta.z16.web.core.windows.net/> |
|
|
21
|
+
|
|
22
|
+
## Getting started
|
|
23
|
+
|
|
24
|
+
Assuming we're starting with a new @angular/cli project:
|
|
25
|
+
|
|
26
|
+
```shell
|
|
27
|
+
npx @angular/cli new my-project --style=scss
|
|
28
|
+
|
|
29
|
+
cd my-project
|
|
30
|
+
|
|
31
|
+
npm i --save @ifsworld/granite-components
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
If peer dependencies haven't automatically been installed (default behavior of NPM 7 and beyond), then manually install [@ifsworld/granite-icons](https://www.npmjs.com/package/@ifsworld/granite-icons) and [@ifsworld/granite-tokens](https://www.npmjs.com/package/@ifsworld/granite-tokens).
|
|
36
|
+
|
|
37
|
+
```shell
|
|
38
|
+
npm i --save @ifsworld/granite-icons @ifsworld/granite-tokens
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Finally, add them in `src/styles.scss`:
|
|
42
|
+
|
|
43
|
+
```scss
|
|
44
|
+
@use '@ifsworld/granite-tokens/design-tokens/light/tokens';
|
|
45
|
+
@use '@ifsworld/granite-icons/assets/fonts/ligature/granite-iconfont-liga.css';
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
> That's it! Now we can run `npm start` and start building out our application!
|
|
49
|
+
|
|
50
|
+
[StackBlitz Example](https://stackblitz.com/edit/angular-ivy-zcgdkv?file=src/app/app.component.html)
|
|
51
|
+
|
|
52
|
+
**Note: currrently there's an issue with the _Ivy compiler_. To get the project to work, the Ivy Compiler must be set to disabled in `tsconfig.json`!**
|
|
53
|
+
|
|
54
|
+
### Support
|
|
55
|
+
|
|
56
|
+
#### Angular version support matrix
|
|
57
|
+
|
|
58
|
+
| Angular / Library | 0.x.x | 1.x.x | 2.x.x | 3.x.x |
|
|
59
|
+
| ----------------- | ----- | ----- | ----- | ----- |
|
|
60
|
+
| 10 | ❌ | ❌ | ❌ | ❌ |
|
|
61
|
+
| 11 | ✅ | 🔶 | ✅ | ✅ |
|
|
62
|
+
| 12 | ✅ | ✅ | ✅ | ✅ |
|
|
63
|
+
| 13 | ✅ | ✅ | ✅ | ✅ |
|
|
64
|
+
| 14 | 🔶 | 🔶 | 🔶 | 🔶 |
|
|
65
|
+
|
|
66
|
+
_Note: we plan to only support our latest release. Beyond that we make no guarantees of continued support._
|
|
67
|
+
|
|
68
|
+
❌ unsupported
|
|
69
|
+
🔶 limited support
|
|
70
|
+
✅ fully supported
|
|
71
|
+
|
|
72
|
+
## Contributing
|
|
73
|
+
|
|
74
|
+
If you'd like to contribute, please see the [Getting started guide](../../docs/getting-started.md). Then follow our [Development guidelines](../../docs/development-guidelines.md).
|
|
75
|
+
|
|
76
|
+
Check the IFS internal Jira for issues.
|
|
77
|
+
|
|
78
|
+
### Further help
|
|
79
|
+
|
|
80
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
|
81
|
+
|
|
82
|
+
#### External sources
|
|
83
|
+
|
|
84
|
+
- [Angular - Creating Libraries](https://angular.io/guide/creating-libraries)
|
|
85
|
+
- [Create your Standalone Angular Library in 10 minutes](https://indepth.dev/create-your-standalone-angular-library-in-10-minutes/)
|
|
86
|
+
- [Creating monorepos using NX](https://nx.dev/)
|
|
87
|
+
|
|
88
|
+
## What we're working on now (2022)
|
|
89
|
+
|
|
90
|
+
- Multi Select Input Control
|
|
91
|
+
- Date Picker Control
|
|
92
|
+
- Advance Input Control
|
|
93
|
+
- Advance Table Control
|
|
94
|
+
- Rating Control
|
|
95
|
+
- Label Control
|
|
96
|
+
|
|
97
|
+
## About the product group
|
|
98
|
+
|
|
99
|
+
The project is governed by the [User Experience Product Group](https://ifs.sharepoint.com/teams/UserExperienceProductGroup). The mission of the product group is to drive the unified User Experience of IFS business applications. Own and provide UI components and guidelines based on our user's needs. Act as a guide and advisor helping application teams create great UX.
|
|
100
|
+
|
|
101
|
+
### Primary goals of component library
|
|
102
|
+
|
|
103
|
+
- Build high-quality UI components that developers can drop into existing applications
|
|
104
|
+
- Provide tools that help developers build their own custom components with common interaction patterns
|
|
105
|
+
|
|
106
|
+
#### What we mean by _high-quality_ components
|
|
107
|
+
|
|
108
|
+
- Internationalized and accessible so that all users can use them.
|
|
109
|
+
- Straightforward APIs that don't confuse developers.
|
|
110
|
+
- Behave as expected across a wide variety of use-cases without bugs.
|
|
111
|
+
- Behavior is well-tested with both unit and integration tests.
|
|
112
|
+
- Customizable.
|
|
113
|
+
- Performance cost is minimized.
|
|
114
|
+
- Code is clean and well-documented to serve as an example for Angular developers.
|
|
115
|
+
|
|
116
|
+
## Browser and accessibility support
|
|
117
|
+
|
|
118
|
+
The library supports the most recent versions of the following major browsers: [Google Chrome (including Android)](https://www.google.com/chrome/), [Apple Safari (including iOS)](https://www.apple.com/safari/), and [Microsoft Edge](https://www.microsoft.com/edge). See [IFS official guidelines](https://ifs.sharepoint.com/sites/IFSCloudProdInfo/SitePages/Supported-Platforms-21R2.aspx).
|
|
119
|
+
|
|
120
|
+
We aim for great user experience and to provide high levels of accessibility through support for standardized tools such as [ARIA](https://www.w3.org/WAI/standards-guidelines/aria/).
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZzd29ybGQtZ3Jhbml0ZS1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2lmc3dvcmxkLWdyYW5pdGUtY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ui
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/arrange-grid/arrange-grid.module';
|
|
5
|
+
export * from './lib/arrange-grid/arrange-grid.component';
|
|
6
|
+
export * from './lib/arrange-grid/arrange-grid-item.component';
|
|
7
|
+
export * from './lib/grid/grid.module';
|
|
8
|
+
export * from './lib/grid/grid.component';
|
|
9
|
+
export * from './lib/badge/badge.module';
|
|
10
|
+
export * from './lib/badge/badge.component';
|
|
11
|
+
export * from './lib/badge/testing/badge.harness';
|
|
12
|
+
export * from './lib/menu/menu.module';
|
|
13
|
+
export * from './lib/menu/menu.component';
|
|
14
|
+
export * from './lib/menu/menu-desktop-animations';
|
|
15
|
+
export * from './lib/menu/menu-touch-animations';
|
|
16
|
+
export * from './lib/menu/menu-item.component';
|
|
17
|
+
export * from './lib/menu/menu-trigger-for.directive';
|
|
18
|
+
export * from './lib/menu/testing/menu.harness';
|
|
19
|
+
export * from './lib/menu/divider.directive';
|
|
20
|
+
export * from './lib/menu/title.directive';
|
|
21
|
+
export * from './lib/menu/menu-touch-close.component';
|
|
22
|
+
export * from './lib/menu/menu-touch-title.component';
|
|
23
|
+
export * from './lib/icon/icon.module';
|
|
24
|
+
export * from './lib/icon/icon.component';
|
|
25
|
+
export * from './lib/toggle-switch/toggle-switch.module';
|
|
26
|
+
export * from './lib/toggle-switch/toggle-switch.component';
|
|
27
|
+
export * from './lib/radio-button/radio-button.module';
|
|
28
|
+
export * from './lib/radio-button/radio-button.component';
|
|
29
|
+
export * from './lib/radio-button/radio-group.component';
|
|
30
|
+
export * from './lib/checkbox/checkbox.module';
|
|
31
|
+
export * from './lib/checkbox/checkbox.component';
|
|
32
|
+
export * from './lib/checkbox/checkbox-group.component';
|
|
33
|
+
export * from './lib/button/button.module';
|
|
34
|
+
export * from './lib/button/button.component';
|
|
35
|
+
export * from './lib/table/table.module';
|
|
36
|
+
export * from './lib/table/table.component';
|
|
37
|
+
export * from './lib/table/column/table-column.directive';
|
|
38
|
+
export * from './lib/input-field/input-field.module';
|
|
39
|
+
export * from './lib/input-field/input-field.component';
|
|
40
|
+
// Temporary
|
|
41
|
+
export * from './lib/core/client-environment';
|
|
42
|
+
export * from './lib/core/core.module';
|
|
43
|
+
export * from './lib/core/devices/client-output-touch.directive';
|
|
44
|
+
export * from './lib/core/devices/client-output-desktop.directive';
|
|
45
|
+
export * from './lib/core/devices/client-input-touch.directive';
|
|
46
|
+
export * from './lib/core/devices/client-input-desktop.directive';
|
|
47
|
+
export * from './lib/core/common-behaviors/disabled';
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsMENBQTBDLENBQUM7QUFFekQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELGNBQWMseUNBQXlDLENBQUM7QUFFeEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxZQUFZO0FBQ1osY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdWlcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcnJhbmdlLWdyaWQvYXJyYW5nZS1ncmlkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcnJhbmdlLWdyaWQvYXJyYW5nZS1ncmlkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcnJhbmdlLWdyaWQvYXJyYW5nZS1ncmlkLWl0ZW0uY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3JpZC9ncmlkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ncmlkL2dyaWQuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFkZ2UvYmFkZ2UubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYWRnZS90ZXN0aW5nL2JhZGdlLmhhcm5lc3MnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L21lbnUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnUvbWVudS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LWRlc2t0b3AtYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L21lbnUtdG91Y2gtYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L21lbnUtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LXRyaWdnZXItZm9yLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L3Rlc3RpbmcvbWVudS5oYXJuZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnUvZGl2aWRlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS90aXRsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LXRvdWNoLWNsb3NlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L21lbnUtdG91Y2gtdGl0bGUuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvaWNvbi9pY29uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29uL2ljb24uY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9nZ2xlLXN3aXRjaC90b2dnbGUtc3dpdGNoLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2dnbGUtc3dpdGNoL3RvZ2dsZS1zd2l0Y2guY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYWRpby1idXR0b24vcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hlY2tib3gvY2hlY2tib3gubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoZWNrYm94L2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbi9idXR0b24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUvdGFibGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9jb2x1bW4vdGFibGUtY29sdW1uLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0LWZpZWxkL2lucHV0LWZpZWxkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC1maWVsZC9pbnB1dC1maWVsZC5jb21wb25lbnQnO1xuXG4vLyBUZW1wb3JhcnlcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvY2xpZW50LWVudmlyb25tZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvY29yZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9kZXZpY2VzL2NsaWVudC1vdXRwdXQtdG91Y2guZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZGV2aWNlcy9jbGllbnQtb3V0cHV0LWRlc2t0b3AuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZGV2aWNlcy9jbGllbnQtaW5wdXQtdG91Y2guZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZGV2aWNlcy9jbGllbnQtaW5wdXQtZGVza3RvcC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9jb21tb24tYmVoYXZpb3JzL2Rpc2FibGVkJztcbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, ElementRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class GraniteArrangeGridItemComponent {
|
|
4
|
+
constructor(element) {
|
|
5
|
+
this.element = element;
|
|
6
|
+
/**
|
|
7
|
+
* Column span to render.
|
|
8
|
+
* For use in template only. Do not use outside of this component.
|
|
9
|
+
* @ignore
|
|
10
|
+
*/
|
|
11
|
+
this._columnSpan = null;
|
|
12
|
+
/* no-op */
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Number of cells the item would span. Used by arrange grid in column
|
|
16
|
+
* orientation to fill any unused space caused by wrapped items.
|
|
17
|
+
*/
|
|
18
|
+
set columnSpan(value) {
|
|
19
|
+
this._columnSpan = value;
|
|
20
|
+
this.updateStyles();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Update element styles
|
|
24
|
+
*/
|
|
25
|
+
updateStyles() {
|
|
26
|
+
this.setCssProperty('--columnSpan', this._columnSpan ? this._columnSpan.toString() : null);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Set CSS variable value or remove it if a null value is given.
|
|
30
|
+
* Would of course rather have used property binding but that is not
|
|
31
|
+
* supported until (perhaps) Angular 9.
|
|
32
|
+
* See: https://github.com/angular/angular/issues/9343
|
|
33
|
+
*/
|
|
34
|
+
setCssProperty(variable, value) {
|
|
35
|
+
this.element.nativeElement.style.setProperty(variable, value);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
GraniteArrangeGridItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
+
GraniteArrangeGridItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: GraniteArrangeGridItemComponent, selector: "granite-arrange-grid-item", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{--columnSpan: $default-column-span;display:grid;grid-column:span var(--columnSpan, 1)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridItemComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{ selector: 'granite-arrange-grid-item', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{--columnSpan: $default-column-span;display:grid;grid-column:span var(--columnSpan, 1)}\n"] }]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYW5nZS1ncmlkLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9hcnJhbmdlLWdyaWQvYXJyYW5nZS1ncmlkLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVEvRSxNQUFNLE9BQU8sK0JBQStCO0lBaUIxQyxZQUFvQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQVBwRDs7OztXQUlHO1FBQ0gsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBR2hDLFdBQVc7SUFDYixDQUFDO0lBbEJEOzs7T0FHRztJQUNILElBQUksVUFBVSxDQUFDLEtBQW9CO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBYUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FDakIsY0FBYyxFQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLGNBQWMsQ0FBQyxRQUFnQixFQUFFLEtBQW9CO1FBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7OzZIQXZDVSwrQkFBK0I7aUhBQS9CLCtCQUErQixpRUFKaEMsMkJBQTJCOzRGQUkxQiwrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0UsMkJBQTJCLFlBQzNCLDJCQUEyQixtQkFFcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhbml0ZS1hcnJhbmdlLWdyaWQtaXRlbScsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIHN0eWxlVXJsczogWydhcnJhbmdlLWdyaWQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUFycmFuZ2VHcmlkSXRlbUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgY2VsbHMgdGhlIGl0ZW0gd291bGQgc3Bhbi4gVXNlZCBieSBhcnJhbmdlIGdyaWQgaW4gY29sdW1uXG4gICAqIG9yaWVudGF0aW9uIHRvIGZpbGwgYW55IHVudXNlZCBzcGFjZSBjYXVzZWQgYnkgd3JhcHBlZCBpdGVtcy5cbiAgICovXG4gIHNldCBjb2x1bW5TcGFuKHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgdGhpcy5fY29sdW1uU3BhbiA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlU3R5bGVzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29sdW1uIHNwYW4gdG8gcmVuZGVyLlxuICAgKiBGb3IgdXNlIGluIHRlbXBsYXRlIG9ubHkuIERvIG5vdCB1c2Ugb3V0c2lkZSBvZiB0aGlzIGNvbXBvbmVudC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgX2NvbHVtblNwYW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICAvKiBuby1vcCAqL1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBlbGVtZW50IHN0eWxlc1xuICAgKi9cbiAgdXBkYXRlU3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Q3NzUHJvcGVydHkoXG4gICAgICAnLS1jb2x1bW5TcGFuJyxcbiAgICAgIHRoaXMuX2NvbHVtblNwYW4gPyB0aGlzLl9jb2x1bW5TcGFuLnRvU3RyaW5nKCkgOiBudWxsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgQ1NTIHZhcmlhYmxlIHZhbHVlIG9yIHJlbW92ZSBpdCBpZiBhIG51bGwgdmFsdWUgaXMgZ2l2ZW4uXG4gICAqIFdvdWxkIG9mIGNvdXJzZSByYXRoZXIgaGF2ZSB1c2VkIHByb3BlcnR5IGJpbmRpbmcgYnV0IHRoYXQgaXMgbm90XG4gICAqIHN1cHBvcnRlZCB1bnRpbCAocGVyaGFwcykgQW5ndWxhciA5LlxuICAgKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzkzNDNcbiAgICovXG4gIHByb3RlY3RlZCBzZXRDc3NQcm9wZXJ0eSh2YXJpYWJsZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHZhcmlhYmxlLCB2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, HostBinding, Input, QueryList, } from '@angular/core';
|
|
2
|
+
import { coerceNumberProperty } from '@angular/cdk/coercion';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { GraniteArrangeGridItemComponent } from './arrange-grid-item.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export var GraniteArrangeGridOrientation;
|
|
8
|
+
(function (GraniteArrangeGridOrientation) {
|
|
9
|
+
GraniteArrangeGridOrientation["columns"] = "columns";
|
|
10
|
+
GraniteArrangeGridOrientation["rows"] = "rows";
|
|
11
|
+
})(GraniteArrangeGridOrientation || (GraniteArrangeGridOrientation = {}));
|
|
12
|
+
export class GraniteArrangeGridComponent {
|
|
13
|
+
constructor(element) {
|
|
14
|
+
this.element = element;
|
|
15
|
+
/** How to present grid items; `columns` (default) or `rows` */
|
|
16
|
+
this.orientation = GraniteArrangeGridOrientation.columns;
|
|
17
|
+
/** Exposes column orientation to template */
|
|
18
|
+
this.classColumnOrientation = false;
|
|
19
|
+
/** Exposes row orientation to template */
|
|
20
|
+
this.classRowOrientation = false;
|
|
21
|
+
/** Number of columns to render */
|
|
22
|
+
this._cols = GraniteArrangeGridComponent.defaultCols;
|
|
23
|
+
/** Nexted on component destruction to complete other observables. */
|
|
24
|
+
this.destroy$ = new Subject();
|
|
25
|
+
/* no-op */
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Number of grid columns to use when orientation is set to `column`. The
|
|
29
|
+
* default is two columns.
|
|
30
|
+
*/
|
|
31
|
+
set cols(value) {
|
|
32
|
+
this._cols = Math.max(1, Math.round(coerceNumberProperty(value)));
|
|
33
|
+
}
|
|
34
|
+
get cols() {
|
|
35
|
+
return this._cols;
|
|
36
|
+
}
|
|
37
|
+
set rows(value) {
|
|
38
|
+
// Prevent pointless usage
|
|
39
|
+
throw Error('Explicitly setting rows value for arrange grid is unsupported');
|
|
40
|
+
}
|
|
41
|
+
get rows() {
|
|
42
|
+
return this._rows;
|
|
43
|
+
}
|
|
44
|
+
ngAfterContentInit() {
|
|
45
|
+
// Update style whenever grid item components change in content
|
|
46
|
+
this.arrangeGridItemComponents.changes
|
|
47
|
+
.pipe(takeUntil(this.destroy$))
|
|
48
|
+
.subscribe(() => this.updateStyles());
|
|
49
|
+
this.updateStyles();
|
|
50
|
+
}
|
|
51
|
+
ngOnChanges(changes) {
|
|
52
|
+
if ((changes.orientation && !changes.orientation.isFirstChange()) ||
|
|
53
|
+
(changes.cols && !changes.cols.isFirstChange())) {
|
|
54
|
+
this.updateStyles();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
ngOnDestroy() {
|
|
58
|
+
this.destroy$.next();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Update grid row template style.
|
|
62
|
+
*
|
|
63
|
+
* Use content height of all but last row and let the last grow
|
|
64
|
+
* to take up any remaining space.
|
|
65
|
+
*/
|
|
66
|
+
updateStyles() {
|
|
67
|
+
const children = (this.arrangeGridItemComponents || []).length;
|
|
68
|
+
if (this.orientation === GraniteArrangeGridOrientation.columns) {
|
|
69
|
+
// If too many items was placed into too few colums, there would
|
|
70
|
+
// be some wrapping. Take that into account when calculating the
|
|
71
|
+
// number of rows.
|
|
72
|
+
this._rows = Math.trunc((children - 1) / (this._cols || 1)) + 1;
|
|
73
|
+
this.classColumnOrientation = true;
|
|
74
|
+
this.classRowOrientation = false;
|
|
75
|
+
if (children > 0) {
|
|
76
|
+
// Fill any unused space caused by wrapped items by making the
|
|
77
|
+
// last item also span over remaining cells.
|
|
78
|
+
this.arrangeGridItemComponents.forEach((c) => (c.columnSpan = null));
|
|
79
|
+
this.arrangeGridItemComponents.last.columnSpan =
|
|
80
|
+
this._rows * this._cols - children + 1;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this._cols = 1; // In row orientation, there is just a single column
|
|
85
|
+
this._rows = children;
|
|
86
|
+
this.classColumnOrientation = false;
|
|
87
|
+
this.classRowOrientation = true;
|
|
88
|
+
}
|
|
89
|
+
this.setCssProperty('--cols', this._cols.toString());
|
|
90
|
+
this.setCssProperty('--rows', this._rows.toString());
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Set CSS variable value or remove it if a null value is given.
|
|
94
|
+
* Would of course rather have used property binding but that is not
|
|
95
|
+
* supported until (perhaps) Angular 9.
|
|
96
|
+
* See: https://github.com/angular/angular/issues/9343
|
|
97
|
+
*
|
|
98
|
+
* TODO: Replace with property binding with Angular 9 upgrade
|
|
99
|
+
*/
|
|
100
|
+
setCssProperty(variable, value) {
|
|
101
|
+
this.element.nativeElement.style.setProperty(variable, value);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/** Default number of columns to use in column orientation */
|
|
105
|
+
GraniteArrangeGridComponent.defaultCols = 2;
|
|
106
|
+
GraniteArrangeGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
107
|
+
GraniteArrangeGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: GraniteArrangeGridComponent, selector: "granite-arrange-grid", inputs: { orientation: "orientation", cols: "cols" }, host: { properties: { "class.column-orientation": "this.classColumnOrientation", "class.row-orientation": "this.classRowOrientation" } }, queries: [{ propertyName: "arrangeGridItemComponents", predicate: GraniteArrangeGridItemComponent }], usesOnChanges: true, ngImport: i0, template: "<ng-content select=\"granite-arrange-grid-item\"></ng-content>\n", styles: ["@media only screen and (min-width: 960px){:host{--cols: 1;--rows: 1;display:grid;grid-template-columns:repeat(var(--cols, 1),1fr);grid-column-gap:.5rem;column-gap:.5rem;grid-row-gap:.5rem;row-gap:.5rem}:host.row-orientation{grid-template-columns:auto;grid-template-rows:repeat(calc(var(--rows, 1) - 1),max-content)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridComponent, decorators: [{
|
|
109
|
+
type: Component,
|
|
110
|
+
args: [{ selector: 'granite-arrange-grid', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"granite-arrange-grid-item\"></ng-content>\n", styles: ["@media only screen and (min-width: 960px){:host{--cols: 1;--rows: 1;display:grid;grid-template-columns:repeat(var(--cols, 1),1fr);grid-column-gap:.5rem;column-gap:.5rem;grid-row-gap:.5rem;row-gap:.5rem}:host.row-orientation{grid-template-columns:auto;grid-template-rows:repeat(calc(var(--rows, 1) - 1),max-content)}}\n"] }]
|
|
111
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { orientation: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], classColumnOrientation: [{
|
|
114
|
+
type: HostBinding,
|
|
115
|
+
args: ['class.column-orientation']
|
|
116
|
+
}], classRowOrientation: [{
|
|
117
|
+
type: HostBinding,
|
|
118
|
+
args: ['class.row-orientation']
|
|
119
|
+
}], arrangeGridItemComponents: [{
|
|
120
|
+
type: ContentChildren,
|
|
121
|
+
args: [GraniteArrangeGridItemComponent]
|
|
122
|
+
}], cols: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}] } });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYW5nZS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvYXJyYW5nZS1ncmlkL2FycmFuZ2UtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2FycmFuZ2UtZ3JpZC9hcnJhbmdlLWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFaEYsTUFBTSxDQUFOLElBQVksNkJBR1g7QUFIRCxXQUFZLDZCQUE2QjtJQUN2QyxvREFBbUIsQ0FBQTtJQUNuQiw4Q0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLDZCQUE2QixLQUE3Qiw2QkFBNkIsUUFHeEM7QUFRRCxNQUFNLE9BQU8sMkJBQTJCO0lBMER0QyxZQUFvQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQXBEcEQsK0RBQStEO1FBRS9ELGdCQUFXLEdBQ1QsNkJBQTZCLENBQUMsT0FBTyxDQUFDO1FBRXhDLDZDQUE2QztRQUU3QywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFFL0IsMENBQTBDO1FBRTFDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQWtCNUIsa0NBQWtDO1FBQ3hCLFVBQUssR0FBVywyQkFBMkIsQ0FBQyxXQUFXLENBQUM7UUFtQmxFLHFFQUFxRTtRQUM3RCxhQUFRLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHOUMsV0FBVztJQUNiLENBQUM7SUF0Q0Q7OztPQUdHO0lBQ0gsSUFDSSxJQUFJLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQVdELElBQUksSUFBSSxDQUFDLEtBQWE7UUFDcEIsMEJBQTBCO1FBQzFCLE1BQU0sS0FBSyxDQUNULCtEQUErRCxDQUNoRSxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBU0Qsa0JBQWtCO1FBQ2hCLCtEQUErRDtRQUMvRCxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTzthQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdELENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsRUFDL0M7WUFDQSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWTtRQUNWLE1BQU0sUUFBUSxHQUFXLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUV2RSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssNkJBQTZCLENBQUMsT0FBTyxFQUFFO1lBQzlELGdFQUFnRTtZQUNoRSxnRUFBZ0U7WUFDaEUsa0JBQWtCO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBRWpDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRTtnQkFDaEIsOERBQThEO2dCQUM5RCw0Q0FBNEM7Z0JBQzVDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFVBQVU7b0JBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsb0RBQW9EO1lBQ3BFLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTyxjQUFjLENBQUMsUUFBZ0IsRUFBRSxLQUFvQjtRQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDOztBQTlIRCw2REFBNkQ7QUFDN0MsdUNBQVcsR0FBVyxDQUFFLENBQUE7eUhBSjdCLDJCQUEyQjs2R0FBM0IsMkJBQTJCLHNTQW1CckIsK0JBQStCLGtEQ25EbEQsa0VBQ0E7NEZEK0JhLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTTtpR0FVL0MsV0FBVztzQkFEVixLQUFLO2dCQU1OLHNCQUFzQjtzQkFEckIsV0FBVzt1QkFBQywwQkFBMEI7Z0JBS3ZDLG1CQUFtQjtzQkFEbEIsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBSXBDLHlCQUF5QjtzQkFEeEIsZUFBZTt1QkFBQywrQkFBK0I7Z0JBUTVDLElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEdyYW5pdGVBcnJhbmdlR3JpZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2FycmFuZ2UtZ3JpZC1pdGVtLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBlbnVtIEdyYW5pdGVBcnJhbmdlR3JpZE9yaWVudGF0aW9uIHtcbiAgY29sdW1ucyA9ICdjb2x1bW5zJyxcbiAgcm93cyA9ICdyb3dzJyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhbml0ZS1hcnJhbmdlLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJ2FycmFuZ2UtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydhcnJhbmdlLWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVBcnJhbmdlR3JpZENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKiBEZWZhdWx0IG51bWJlciBvZiBjb2x1bW5zIHRvIHVzZSBpbiBjb2x1bW4gb3JpZW50YXRpb24gKi9cbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRDb2xzOiBudW1iZXIgPSAyO1xuXG4gIC8qKiBIb3cgdG8gcHJlc2VudCBncmlkIGl0ZW1zOyBgY29sdW1uc2AgKGRlZmF1bHQpIG9yIGByb3dzYCAqL1xuICBASW5wdXQoKVxuICBvcmllbnRhdGlvbjogR3Jhbml0ZUFycmFuZ2VHcmlkT3JpZW50YXRpb24gPVxuICAgIEdyYW5pdGVBcnJhbmdlR3JpZE9yaWVudGF0aW9uLmNvbHVtbnM7XG5cbiAgLyoqIEV4cG9zZXMgY29sdW1uIG9yaWVudGF0aW9uIHRvIHRlbXBsYXRlICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY29sdW1uLW9yaWVudGF0aW9uJylcbiAgY2xhc3NDb2x1bW5PcmllbnRhdGlvbiA9IGZhbHNlO1xuXG4gIC8qKiBFeHBvc2VzIHJvdyBvcmllbnRhdGlvbiB0byB0ZW1wbGF0ZSAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJvdy1vcmllbnRhdGlvbicpXG4gIGNsYXNzUm93T3JpZW50YXRpb24gPSBmYWxzZTtcblxuICBAQ29udGVudENoaWxkcmVuKEdyYW5pdGVBcnJhbmdlR3JpZEl0ZW1Db21wb25lbnQpXG4gIGFycmFuZ2VHcmlkSXRlbUNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxHcmFuaXRlQXJyYW5nZUdyaWRJdGVtQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGdyaWQgY29sdW1ucyB0byB1c2Ugd2hlbiBvcmllbnRhdGlvbiBpcyBzZXQgdG8gYGNvbHVtbmAuIFRoZVxuICAgKiBkZWZhdWx0IGlzIHR3byBjb2x1bW5zLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNvbHModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2NvbHMgPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKSkpO1xuICB9XG5cbiAgZ2V0IGNvbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY29scztcbiAgfVxuXG4gIC8qKiBOdW1iZXIgb2YgY29sdW1ucyB0byByZW5kZXIgKi9cbiAgcHJvdGVjdGVkIF9jb2xzOiBudW1iZXIgPSBHcmFuaXRlQXJyYW5nZUdyaWRDb21wb25lbnQuZGVmYXVsdENvbHM7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiByb3dzIHRvIHJlbmRlci4gV2lsbCBiZSBzZXQgaW50ZXJuYWxseSB0YWtpbmcgY29sdW1uIGNvdW50LFxuICAgKiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGFuZCBhbnkgY2VsbCB3cmFwcGluZyBpbnRvIGNvbnNpZGVyYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgX3Jvd3M6IG51bWJlcjtcblxuICBzZXQgcm93cyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgLy8gUHJldmVudCBwb2ludGxlc3MgdXNhZ2VcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgICdFeHBsaWNpdGx5IHNldHRpbmcgcm93cyB2YWx1ZSBmb3IgYXJyYW5nZSBncmlkIGlzIHVuc3VwcG9ydGVkJ1xuICAgICk7XG4gIH1cblxuICBnZXQgcm93cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3dzO1xuICB9XG5cbiAgLyoqIE5leHRlZCBvbiBjb21wb25lbnQgZGVzdHJ1Y3Rpb24gdG8gY29tcGxldGUgb3RoZXIgb2JzZXJ2YWJsZXMuICovXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICAvKiBuby1vcCAqL1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8vIFVwZGF0ZSBzdHlsZSB3aGVuZXZlciBncmlkIGl0ZW0gY29tcG9uZW50cyBjaGFuZ2UgaW4gY29udGVudFxuICAgIHRoaXMuYXJyYW5nZUdyaWRJdGVtQ29tcG9uZW50cy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlU3R5bGVzKCkpO1xuXG4gICAgdGhpcy51cGRhdGVTdHlsZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAoY2hhbmdlcy5vcmllbnRhdGlvbiAmJiAhY2hhbmdlcy5vcmllbnRhdGlvbi5pc0ZpcnN0Q2hhbmdlKCkpIHx8XG4gICAgICAoY2hhbmdlcy5jb2xzICYmICFjaGFuZ2VzLmNvbHMuaXNGaXJzdENoYW5nZSgpKVxuICAgICkge1xuICAgICAgdGhpcy51cGRhdGVTdHlsZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgZ3JpZCByb3cgdGVtcGxhdGUgc3R5bGUuXG4gICAqXG4gICAqIFVzZSBjb250ZW50IGhlaWdodCBvZiBhbGwgYnV0IGxhc3Qgcm93IGFuZCBsZXQgdGhlIGxhc3QgZ3Jvd1xuICAgKiB0byB0YWtlIHVwIGFueSByZW1haW5pbmcgc3BhY2UuXG4gICAqL1xuICB1cGRhdGVTdHlsZXMoKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW46IG51bWJlciA9ICh0aGlzLmFycmFuZ2VHcmlkSXRlbUNvbXBvbmVudHMgfHwgW10pLmxlbmd0aDtcblxuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSBHcmFuaXRlQXJyYW5nZUdyaWRPcmllbnRhdGlvbi5jb2x1bW5zKSB7XG4gICAgICAvLyBJZiB0b28gbWFueSBpdGVtcyB3YXMgcGxhY2VkIGludG8gdG9vIGZldyBjb2x1bXMsIHRoZXJlIHdvdWxkXG4gICAgICAvLyBiZSBzb21lIHdyYXBwaW5nLiBUYWtlIHRoYXQgaW50byBhY2NvdW50IHdoZW4gY2FsY3VsYXRpbmcgdGhlXG4gICAgICAvLyBudW1iZXIgb2Ygcm93cy5cbiAgICAgIHRoaXMuX3Jvd3MgPSBNYXRoLnRydW5jKChjaGlsZHJlbiAtIDEpIC8gKHRoaXMuX2NvbHMgfHwgMSkpICsgMTtcbiAgICAgIHRoaXMuY2xhc3NDb2x1bW5PcmllbnRhdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLmNsYXNzUm93T3JpZW50YXRpb24gPSBmYWxzZTtcblxuICAgICAgaWYgKGNoaWxkcmVuID4gMCkge1xuICAgICAgICAvLyBGaWxsIGFueSB1bnVzZWQgc3BhY2UgY2F1c2VkIGJ5IHdyYXBwZWQgaXRlbXMgYnkgbWFraW5nIHRoZVxuICAgICAgICAvLyBsYXN0IGl0ZW0gYWxzbyBzcGFuIG92ZXIgcmVtYWluaW5nIGNlbGxzLlxuICAgICAgICB0aGlzLmFycmFuZ2VHcmlkSXRlbUNvbXBvbmVudHMuZm9yRWFjaCgoYykgPT4gKGMuY29sdW1uU3BhbiA9IG51bGwpKTtcbiAgICAgICAgdGhpcy5hcnJhbmdlR3JpZEl0ZW1Db21wb25lbnRzLmxhc3QuY29sdW1uU3BhbiA9XG4gICAgICAgICAgdGhpcy5fcm93cyAqIHRoaXMuX2NvbHMgLSBjaGlsZHJlbiArIDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NvbHMgPSAxOyAvLyBJbiByb3cgb3JpZW50YXRpb24sIHRoZXJlIGlzIGp1c3QgYSBzaW5nbGUgY29sdW1uXG4gICAgICB0aGlzLl9yb3dzID0gY2hpbGRyZW47XG4gICAgICB0aGlzLmNsYXNzQ29sdW1uT3JpZW50YXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuY2xhc3NSb3dPcmllbnRhdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRDc3NQcm9wZXJ0eSgnLS1jb2xzJywgdGhpcy5fY29scy50b1N0cmluZygpKTtcbiAgICB0aGlzLnNldENzc1Byb3BlcnR5KCctLXJvd3MnLCB0aGlzLl9yb3dzLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBDU1MgdmFyaWFibGUgdmFsdWUgb3IgcmVtb3ZlIGl0IGlmIGEgbnVsbCB2YWx1ZSBpcyBnaXZlbi5cbiAgICogV291bGQgb2YgY291cnNlIHJhdGhlciBoYXZlIHVzZWQgcHJvcGVydHkgYmluZGluZyBidXQgdGhhdCBpcyBub3RcbiAgICogc3VwcG9ydGVkIHVudGlsIChwZXJoYXBzKSBBbmd1bGFyIDkuXG4gICAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvOTM0M1xuICAgKlxuICAgKiBUT0RPOiBSZXBsYWNlIHdpdGggcHJvcGVydHkgYmluZGluZyB3aXRoIEFuZ3VsYXIgOSB1cGdyYWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0Q3NzUHJvcGVydHkodmFyaWFibGU6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSh2YXJpYWJsZSwgdmFsdWUpO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJncmFuaXRlLWFycmFuZ2UtZ3JpZC1pdGVtXCI+PC9uZy1jb250ZW50PlxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { GraniteArrangeGridComponent } from './arrange-grid.component';
|
|
4
|
+
import { GraniteArrangeGridItemComponent } from './arrange-grid-item.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class GraniteArrangeGridModule {
|
|
7
|
+
}
|
|
8
|
+
GraniteArrangeGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
GraniteArrangeGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridModule, declarations: [GraniteArrangeGridComponent, GraniteArrangeGridItemComponent], imports: [CommonModule], exports: [GraniteArrangeGridComponent, GraniteArrangeGridItemComponent] });
|
|
10
|
+
GraniteArrangeGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridModule, imports: [[CommonModule]] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [GraniteArrangeGridComponent, GraniteArrangeGridItemComponent],
|
|
15
|
+
imports: [CommonModule],
|
|
16
|
+
exports: [GraniteArrangeGridComponent, GraniteArrangeGridItemComponent],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYW5nZS1ncmlkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvYXJyYW5nZS1ncmlkL2FycmFuZ2UtZ3JpZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBT2hGLE1BQU0sT0FBTyx3QkFBd0I7O3NIQUF4Qix3QkFBd0I7dUhBQXhCLHdCQUF3QixpQkFKcEIsMkJBQTJCLEVBQUUsK0JBQStCLGFBQ2pFLFlBQVksYUFDWiwyQkFBMkIsRUFBRSwrQkFBK0I7dUhBRTNELHdCQUF3QixZQUgxQixDQUFDLFlBQVksQ0FBQzs0RkFHWix3QkFBd0I7a0JBTHBDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUM7b0JBQzVFLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUM7aUJBQ3hFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEdyYW5pdGVBcnJhbmdlR3JpZENvbXBvbmVudCB9IGZyb20gJy4vYXJyYW5nZS1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlQXJyYW5nZUdyaWRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9hcnJhbmdlLWdyaWQtaXRlbS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtHcmFuaXRlQXJyYW5nZUdyaWRDb21wb25lbnQsIEdyYW5pdGVBcnJhbmdlR3JpZEl0ZW1Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW0dyYW5pdGVBcnJhbmdlR3JpZENvbXBvbmVudCwgR3Jhbml0ZUFycmFuZ2VHcmlkSXRlbUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVBcnJhbmdlR3JpZE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ElementRef, } from '@angular/core';
|
|
2
|
+
import { setPropertyValue } from '../core/theme.library';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class GraniteBadgeComponent {
|
|
5
|
+
constructor(elementRef) {
|
|
6
|
+
this.elementRef = elementRef;
|
|
7
|
+
/** Pill style badge */
|
|
8
|
+
this.pill = false;
|
|
9
|
+
}
|
|
10
|
+
ngOnChanges(changes) {
|
|
11
|
+
if (changes.backgroundColor) {
|
|
12
|
+
if (changes.backgroundColor.previousValue !==
|
|
13
|
+
changes.backgroundColor.currentValue) {
|
|
14
|
+
setPropertyValue('background-color', changes.backgroundColor.currentValue, this.elementRef.nativeElement);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (changes.color) {
|
|
18
|
+
if (changes.color.previousValue !== changes.color.currentValue) {
|
|
19
|
+
setPropertyValue('color', changes.color.currentValue, this.elementRef.nativeElement);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
GraniteBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
GraniteBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: GraniteBadgeComponent, selector: "granite-badge", inputs: { backgroundColor: "backgroundColor", color: "color", pill: "pill" }, host: { properties: { "class.granite-badge-pill": "pill" }, classAttribute: "granite-badge" }, exportAs: ["graniteBadge"], usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:-moz-inline-flex;display:inline-flex;flex-direction:row;flex-wrap:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;align-items:center;background-color:var(--granite-color-signal-neutral);color:var(--granite-color-text-static-light);padding:calc(var(--granite-spacing-m) * .3125);border-radius:.3125rem;padding-inline-start:calc(var(--granite-spacing-m) * .625);padding-inline-end:calc(var(--granite-spacing-m) * .625)}:host(.granite-badge-pill){border-radius:1.5625rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{ selector: 'granite-badge', exportAs: 'graniteBadge', host: {
|
|
29
|
+
class: 'granite-badge',
|
|
30
|
+
'[class.granite-badge-pill]': 'pill',
|
|
31
|
+
}, template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:-moz-inline-flex;display:inline-flex;flex-direction:row;flex-wrap:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;align-items:center;background-color:var(--granite-color-signal-neutral);color:var(--granite-color-text-static-light);padding:calc(var(--granite-spacing-m) * .3125);border-radius:.3125rem;padding-inline-start:calc(var(--granite-spacing-m) * .625);padding-inline-end:calc(var(--granite-spacing-m) * .625)}:host(.granite-badge-pill){border-radius:1.5625rem}\n"] }]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { backgroundColor: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], color: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], pill: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9iYWRnZS9iYWRnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFhekQsTUFBTSxPQUFPLHFCQUFxQjtJQWlCaEMsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUoxQyx1QkFBdUI7UUFFdkIsU0FBSSxHQUFZLEtBQUssQ0FBQztJQUV1QixDQUFDO0lBRTlDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUU7WUFDM0IsSUFDRSxPQUFPLENBQUMsZUFBZSxDQUFDLGFBQWE7Z0JBQ3JDLE9BQU8sQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUNwQztnQkFDQSxnQkFBZ0IsQ0FDZCxrQkFBa0IsRUFDbEIsT0FBTyxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUM5QixDQUFDO2FBQ0g7U0FDRjtRQUNELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNqQixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUM5RCxnQkFBZ0IsQ0FDZCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUM5QixDQUFDO2FBQ0g7U0FDRjtJQUNILENBQUM7O21IQXpDVSxxQkFBcUI7dUdBQXJCLHFCQUFxQixtUkFKdEIsMkJBQTJCOzRGQUkxQixxQkFBcUI7a0JBWGpDLFNBQVM7K0JBQ0UsZUFBZSxZQUNmLGNBQWMsUUFDbEI7d0JBQ0osS0FBSyxFQUFFLGVBQWU7d0JBQ3RCLDRCQUE0QixFQUFFLE1BQU07cUJBQ3JDLFlBQ1MsMkJBQTJCLG1CQUVwQix1QkFBdUIsQ0FBQyxNQUFNO2lHQU8vQyxlQUFlO3NCQURkLEtBQUs7Z0JBT04sS0FBSztzQkFESixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2V0UHJvcGVydHlWYWx1ZSB9IGZyb20gJy4uL2NvcmUvdGhlbWUubGlicmFyeSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYW5pdGUtYmFkZ2UnLFxuICBleHBvcnRBczogJ2dyYW5pdGVCYWRnZScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dyYW5pdGUtYmFkZ2UnLFxuICAgICdbY2xhc3MuZ3Jhbml0ZS1iYWRnZS1waWxsXSc6ICdwaWxsJyxcbiAgfSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFkZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVCYWRnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBEZXNpZ24gdG9rZW4gbmFtZSB0byBnZXQgdGhlIHZhbHVlIGZvciB0aGUgQmFja2dyb3VuZCBjb2xvclxuICAgKi9cbiAgQElucHV0KClcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2lnbiB0b2tlbiBuYW1lIHRvIGdldCB0aGUgdmFsdWUgZm9yIHRoZSBGb250IGNvbG9yXG4gICAqL1xuICBASW5wdXQoKVxuICBjb2xvcjogc3RyaW5nO1xuXG4gIC8qKiBQaWxsIHN0eWxlIGJhZGdlICovXG4gIEBJbnB1dCgpXG4gIHBpbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmJhY2tncm91bmRDb2xvcikge1xuICAgICAgaWYgKFxuICAgICAgICBjaGFuZ2VzLmJhY2tncm91bmRDb2xvci5wcmV2aW91c1ZhbHVlICE9PVxuICAgICAgICBjaGFuZ2VzLmJhY2tncm91bmRDb2xvci5jdXJyZW50VmFsdWVcbiAgICAgICkge1xuICAgICAgICBzZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgICAgICAgICBjaGFuZ2VzLmJhY2tncm91bmRDb2xvci5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuY29sb3IpIHtcbiAgICAgIGlmIChjaGFuZ2VzLmNvbG9yLnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXMuY29sb3IuY3VycmVudFZhbHVlKSB7XG4gICAgICAgIHNldFByb3BlcnR5VmFsdWUoXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICBjaGFuZ2VzLmNvbG9yLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { GraniteBadgeComponent } from './badge.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class GraniteBadgeModule {
|
|
6
|
+
}
|
|
7
|
+
GraniteBadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
GraniteBadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeModule, declarations: [GraniteBadgeComponent], imports: [CommonModule], exports: [GraniteBadgeComponent] });
|
|
9
|
+
GraniteBadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeModule, imports: [[CommonModule]] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [GraniteBadgeComponent],
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
exports: [GraniteBadgeComponent],
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9iYWRnZS9iYWRnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTzFELE1BQU0sT0FBTyxrQkFBa0I7O2dIQUFsQixrQkFBa0I7aUhBQWxCLGtCQUFrQixpQkFKZCxxQkFBcUIsYUFDMUIsWUFBWSxhQUNaLHFCQUFxQjtpSEFFcEIsa0JBQWtCLFlBSHBCLENBQUMsWUFBWSxDQUFDOzRGQUdaLGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdyYW5pdGVCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vYmFkZ2UuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbR3Jhbml0ZUJhZGdlQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtHcmFuaXRlQmFkZ2VDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlQmFkZ2VNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ComponentHarness, HarnessPredicate, } from '@angular/cdk/testing';
|
|
2
|
+
export class GraniteBadgeHarness extends ComponentHarness {
|
|
3
|
+
/**
|
|
4
|
+
* Gets a `HarnessPredicate` that can be used to search for a `GraniteBadgeHarness` that meets
|
|
5
|
+
* certain criteria.
|
|
6
|
+
* @param options Options for filtering which badge instances are considered a match.
|
|
7
|
+
* @return a `HarnessPredicate` configured with the given options.
|
|
8
|
+
*/
|
|
9
|
+
static with(options = {}) {
|
|
10
|
+
const predicate = new HarnessPredicate(GraniteBadgeHarness, options);
|
|
11
|
+
predicate.addOption('text', options.text, (harness, label) => HarnessPredicate.stringMatches(harness.getText(), label));
|
|
12
|
+
predicate.addOption('pill', options.pill, async (harness, pill) => (await harness.isPill()) === pill);
|
|
13
|
+
return predicate;
|
|
14
|
+
}
|
|
15
|
+
/** Gets the Badge text. */
|
|
16
|
+
async getText() {
|
|
17
|
+
return (await this.host()).text();
|
|
18
|
+
}
|
|
19
|
+
/** Whether it's a Pill type badge. */
|
|
20
|
+
async isPill() {
|
|
21
|
+
return (await this.host()).hasClass('granite-badge-pill');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
GraniteBadgeHarness.hostSelector = 'granite-badge';
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvYmFkZ2UvdGVzdGluZy9iYWRnZS5oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGdCQUFnQjtJQUd2RDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQ1QsVUFBc0MsRUFBRTtRQUV4QyxNQUFNLFNBQVMsR0FDYixJQUFJLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDM0QsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FDekQsQ0FBQztRQUNGLFNBQVMsQ0FBQyxTQUFTLENBQ2pCLE1BQU0sRUFDTixPQUFPLENBQUMsSUFBSSxFQUNaLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssSUFBSSxDQUMzRCxDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixLQUFLLENBQUMsT0FBTztRQUNYLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsS0FBSyxDQUFDLE1BQU07UUFDVixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RCxDQUFDOztBQWhDTSxnQ0FBWSxHQUFHLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudEhhcm5lc3MsXG4gIEJhc2VIYXJuZXNzRmlsdGVycyxcbiAgSGFybmVzc1ByZWRpY2F0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUJhZGdlSGFybmVzcyBleHRlbmRzIENvbXBvbmVudEhhcm5lc3Mge1xuICBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ2dyYW5pdGUtYmFkZ2UnO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhIGBHcmFuaXRlQmFkZ2VIYXJuZXNzYCB0aGF0IG1lZXRzXG4gICAqIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGZpbHRlcmluZyB3aGljaCBiYWRnZSBpbnN0YW5jZXMgYXJlIGNvbnNpZGVyZWQgYSBtYXRjaC5cbiAgICogQHJldHVybiBhIGBIYXJuZXNzUHJlZGljYXRlYCBjb25maWd1cmVkIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuXG4gICAqL1xuICBzdGF0aWMgd2l0aChcbiAgICBvcHRpb25zOiBHcmFuaXRlQmFkZ2VIYXJuZXNzRmlsdGVycyA9IHt9XG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8R3Jhbml0ZUJhZGdlSGFybmVzcz4ge1xuICAgIGNvbnN0IHByZWRpY2F0ZTogSGFybmVzc1ByZWRpY2F0ZTxHcmFuaXRlQmFkZ2VIYXJuZXNzPiA9XG4gICAgICBuZXcgSGFybmVzc1ByZWRpY2F0ZShHcmFuaXRlQmFkZ2VIYXJuZXNzLCBvcHRpb25zKTtcbiAgICBwcmVkaWNhdGUuYWRkT3B0aW9uKCd0ZXh0Jywgb3B0aW9ucy50ZXh0LCAoaGFybmVzcywgbGFiZWwpID0+XG4gICAgICBIYXJuZXNzUHJlZGljYXRlLnN0cmluZ01hdGNoZXMoaGFybmVzcy5nZXRUZXh0KCksIGxhYmVsKVxuICAgICk7XG4gICAgcHJlZGljYXRlLmFkZE9wdGlvbihcbiAgICAgICdwaWxsJyxcbiAgICAgIG9wdGlvbnMucGlsbCxcbiAgICAgIGFzeW5jIChoYXJuZXNzLCBwaWxsKSA9PiAoYXdhaXQgaGFybmVzcy5pc1BpbGwoKSkgPT09IHBpbGxcbiAgICApO1xuICAgIHJldHVybiBwcmVkaWNhdGU7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgQmFkZ2UgdGV4dC4gKi9cbiAgYXN5bmMgZ2V0VGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5ob3N0KCkpLnRleHQoKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIGl0J3MgYSBQaWxsIHR5cGUgYmFkZ2UuICovXG4gIGFzeW5jIGlzUGlsbCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaG9zdCgpKS5oYXNDbGFzcygnZ3Jhbml0ZS1iYWRnZS1waWxsJyk7XG4gIH1cbn1cblxuLyoqIEEgc2V0IG9mIGNyaXRlcmlhIHRoYXQgY2FuIGJlIHVzZWQgdG8gZmlsdGVyIGEgbGlzdCBvZiBgR3Jhbml0ZUJhZGdlSGFybmVzc2AgaW5zdGFuY2VzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFuaXRlQmFkZ2VIYXJuZXNzRmlsdGVycyBleHRlbmRzIEJhc2VIYXJuZXNzRmlsdGVycyB7XG4gIC8qKiBPbmx5IGZpbmQgaW5zdGFuY2VzIHdob3NlIHRleHQgbWF0Y2hlcyB0aGUgZ2l2ZW4gdmFsdWUuICovXG4gIHRleHQ/OiBzdHJpbmcgfCBSZWdFeHA7XG4gIHBpbGw/OiBib29sZWFuO1xufVxuIl19
|