Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(modal): add modal component - FRONT-3858 #2776

Merged
merged 29 commits into from
Mar 9, 2023
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
edd09d5
add modal
emeryro Feb 20, 2023
8c8463b
Merge branch 'v3.8.0-dev' into FRONT-3858-modal
emeryro Feb 20, 2023
4958fdb
update website
emeryro Feb 20, 2023
a8f24f8
Merge branch 'v3.8.0-dev' into FRONT-3858-modal
emeryro Feb 21, 2023
1a6fa25
Merge branch 'v3.8.0-dev' into FRONT-3858-modal
planctus Feb 21, 2023
cec5d5b
update footer
emeryro Feb 23, 2023
0648ed0
update story
emeryro Feb 23, 2023
613a9b8
update test
emeryro Feb 23, 2023
54ab80d
update website
emeryro Feb 23, 2023
4fcf42c
Merge branch 'v3.8.0-dev' into FRONT-3858-modal
emeryro Feb 27, 2023
f8899cc
fix version
emeryro Feb 27, 2023
35e0393
add icon
emeryro Feb 27, 2023
a36be95
update test
emeryro Feb 27, 2023
4875fef
Merge branch 'v3.8.0-dev' into FRONT-3858-modal
planctus Feb 28, 2023
a553d7c
apply feedback
emeryro Mar 1, 2023
562124f
apply feedback (variant, block, print)
emeryro Mar 2, 2023
4176231
Merge branch 'v3.8.0-dev' into FRONT-3858-modal
emeryro Mar 6, 2023
bcd5868
Merge branch 'v3.8.0-dev' into FRONT-3858-modal
emeryro Mar 6, 2023
857efef
change js behavior
emeryro Mar 6, 2023
a9962d4
update test
emeryro Mar 6, 2023
80ed221
update footer
emeryro Mar 7, 2023
69d2d05
update test
emeryro Mar 7, 2023
8d55e33
fix story
emeryro Mar 7, 2023
c4bc12f
Merge branch 'v3.8.0-dev' into FRONT-3858-modal
emeryro Mar 7, 2023
998aeee
fix print
emeryro Mar 7, 2023
61b518a
fix notification color
emeryro Mar 8, 2023
f790e6f
Merge branch 'v3.8.0-dev' into FRONT-3858-modal
emeryro Mar 8, 2023
580664f
thumbnail and twig template
emeryro Mar 9, 2023
70ebb33
Merge branch 'v3.8.0-dev' into FRONT-3858-modal
planctus Mar 9, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/implementations/twig/components/modal/.npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
__snapshots__
*.js
55 changes: 55 additions & 0 deletions src/implementations/twig/components/modal/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# ECL Modal component

npm package: `@ecl/twig-component-modal`

```shell
npm install --save @ecl/twig-component-modal
```

### Parameters:

- **"id"** (string) (default: '')
- **"icon_path"** (string) (default: '') Path to the icon sprite
- **"close_label"** (string) (default: '') Label of the close button (for screen reader only)
- **"header_icon"** (associative array) (default: {}): Optional icon in the header, following ECL Icon structure
- **"buttons"** (array) (default: {}) Array of ECL Button, displayed in the modal footer. The first button is the primary action.
- **"extra_classes"** (optional) (string) (default: '') Extra classes (space separated)
- **"extra_attributes"** (optional) (array) (default: []) Extra attributes
- "name" (string) Attribute name, eg. 'data-test'
- "value" (string) Attribute value, eg: 'data-test-1'

### Blocks:

- **"header"**: free block to put any content in the modal header
- **"body"**: free block to put any content in the modal body
- **"footer"**: free block to put any content in the modal footer

### Example:

<!-- prettier-ignore -->
```twig
{% include '@ecl/modal/modal.html.twig' with {
id: 'modal-example',
icon_path: '/icons.svg',
close_label: 'Close',
header_icon: {
icon: {
name: 'warning',
},
extra_classes: 'ecl-u-type-color-warning',
},
header: 'Lorem ipsum dolor sit amet',
body: 'Sed quam augue, volutpat sed dapibus in, accumsan a arcu. Nulla quam enim, porttitor at neque a, egestas porttitor tortor. Nam tortor sem, elementum id augue quis, posuere vestibulum dui. Donec id posuere libero, sit amet egestas lorem. Aliquam finibus ipsum mauris, a molestie tortor laoreet.',
buttons: [
{
label: 'Primary action',
type: 'submit',
},
{
label: 'Secondary action',
type: 'button',
extra_attributes: [{name: 'data-ecl-modal-close'}],
},
],
} %}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,229 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`Modal Collapsed renders correctly 1`] = `
<jest>
<dialog
class="ecl-modal"
id="modal-example"
>
<div
class="ecl-modal__container ecl-container"
>
<div
class="ecl-modal__content ecl-col-12 ecl-col-m-8 ecl-offset-m-2 ecl-col-l-6 ecl-offset-l-3"
>
<header
class="ecl-modal__header"
>
<div
class="ecl-modal__header-content"
>
Lorem ipsum dolor sit amet
</div>
<button
class="ecl-button ecl-button--ghost ecl-modal__close"
data-ecl-modal-close=""
type="button"
>
<span
class="ecl-button__container"
>
<span
class="ecl-u-sr-only"
data-ecl-label="true"
>
Close
</span>
<svg
aria-hidden="true"
class="ecl-icon ecl-icon--s ecl-button__icon ecl-button__icon--after"
data-ecl-icon=""
focusable="false"
>
<use
xlink:href="/icons.svg#close-filled"
/>
</svg>
</span>
</button>
</header>
<div
class="ecl-modal__body"
>
Sed quam augue, volutpat sed dapibus in, accumsan a arcu. Nulla quam enim, porttitor at neque a, egestas porttitor tortor. Nam tortor sem, elementum id augue quis, posuere vestibulum dui. Donec id posuere libero, sit amet egestas lorem. Aliquam finibus ipsum mauris, a molestie tortor laoreet.
</div>
<footer
class="ecl-modal__footer"
>
<button
class="ecl-button ecl-button--primary ecl-modal__button"
type="submit"
>
Primary action
</button>
<button
class="ecl-button ecl-button--secondary ecl-modal__button"
data-ecl-modal-close=""
type="button"
>
Secondary action
</button>
</footer>
</div>
</div>
</dialog>
</jest>
`;

exports[`Modal Collapsed renders correctly with extra attributes 1`] = `
<jest>
<dialog
class="ecl-modal"
data-test="data-test-value"
data-test-1="data-test-value-1"
id="modal-example"
null=""
>
<div
class="ecl-modal__container ecl-container"
>
<div
class="ecl-modal__content ecl-col-12 ecl-col-m-8 ecl-offset-m-2 ecl-col-l-6 ecl-offset-l-3"
>
<header
class="ecl-modal__header"
>
<div
class="ecl-modal__header-content"
>
Lorem ipsum dolor sit amet
</div>
<button
class="ecl-button ecl-button--ghost ecl-modal__close"
data-ecl-modal-close=""
type="button"
>
<span
class="ecl-button__container"
>
<span
class="ecl-u-sr-only"
data-ecl-label="true"
>
Close
</span>
<svg
aria-hidden="true"
class="ecl-icon ecl-icon--s ecl-button__icon ecl-button__icon--after"
data-ecl-icon=""
focusable="false"
>
<use
xlink:href="/icons.svg#close-filled"
/>
</svg>
</span>
</button>
</header>
<div
class="ecl-modal__body"
>
Sed quam augue, volutpat sed dapibus in, accumsan a arcu. Nulla quam enim, porttitor at neque a, egestas porttitor tortor. Nam tortor sem, elementum id augue quis, posuere vestibulum dui. Donec id posuere libero, sit amet egestas lorem. Aliquam finibus ipsum mauris, a molestie tortor laoreet.
</div>
<footer
class="ecl-modal__footer"
>
<button
class="ecl-button ecl-button--primary ecl-modal__button"
type="submit"
>
Primary action
</button>
<button
class="ecl-button ecl-button--secondary ecl-modal__button"
data-ecl-modal-close=""
type="button"
>
Secondary action
</button>
</footer>
</div>
</div>
</dialog>
</jest>
`;

exports[`Modal Collapsed renders correctly with extra class names 1`] = `
<jest>
<dialog
class="ecl-modal custom-class custom-class--test"
id="modal-example"
>
<div
class="ecl-modal__container ecl-container"
>
<div
class="ecl-modal__content ecl-col-12 ecl-col-m-8 ecl-offset-m-2 ecl-col-l-6 ecl-offset-l-3"
>
<header
class="ecl-modal__header"
>
<div
class="ecl-modal__header-content"
>
Lorem ipsum dolor sit amet
</div>
<button
class="ecl-button ecl-button--ghost ecl-modal__close"
data-ecl-modal-close=""
type="button"
>
<span
class="ecl-button__container"
>
<span
class="ecl-u-sr-only"
data-ecl-label="true"
>
Close
</span>
<svg
aria-hidden="true"
class="ecl-icon ecl-icon--s ecl-button__icon ecl-button__icon--after"
data-ecl-icon=""
focusable="false"
>
<use
xlink:href="/icons.svg#close-filled"
/>
</svg>
</span>
</button>
</header>
<div
class="ecl-modal__body"
>
Sed quam augue, volutpat sed dapibus in, accumsan a arcu. Nulla quam enim, porttitor at neque a, egestas porttitor tortor. Nam tortor sem, elementum id augue quis, posuere vestibulum dui. Donec id posuere libero, sit amet egestas lorem. Aliquam finibus ipsum mauris, a molestie tortor laoreet.
</div>
<footer
class="ecl-modal__footer"
>
<button
class="ecl-button ecl-button--primary ecl-modal__button"
type="submit"
>
Primary action
</button>
<button
class="ecl-button ecl-button--secondary ecl-modal__button"
data-ecl-modal-close=""
type="button"
>
Secondary action
</button>
</footer>
</div>
</div>
</dialog>
</jest>
`;
Loading