@aquera/nile-elements 0.1.7 → 0.1.9
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 +9 -0
- package/demo/index.html +0 -10
- package/demo/variables.css +1 -1
- package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
- package/dist/nile-accordion/nile-accordian.test.cjs.js.map +1 -1
- package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
- package/dist/nile-accordion/nile-accordion.cjs.js +1 -1
- package/dist/nile-accordion/nile-accordion.cjs.js.map +1 -1
- package/dist/nile-accordion/nile-accordion.css.cjs.js +1 -1
- package/dist/nile-accordion/nile-accordion.css.cjs.js.map +1 -1
- package/dist/nile-accordion/nile-accordion.css.esm.js +54 -23
- package/dist/nile-accordion/nile-accordion.esm.js +9 -8
- package/dist/nile-avatar/nile-avatar.cjs.js +1 -1
- package/dist/nile-avatar/nile-avatar.cjs.js.map +1 -1
- package/dist/nile-avatar/nile-avatar.css.cjs.js +1 -1
- package/dist/nile-avatar/nile-avatar.css.cjs.js.map +1 -1
- package/dist/nile-avatar/nile-avatar.css.esm.js +2 -0
- package/dist/nile-avatar/nile-avatar.esm.js +25 -19
- package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
- package/dist/nile-avatar/nile-avatar.test.cjs.js.map +1 -1
- package/dist/nile-avatar/nile-avatar.test.esm.js +11 -1
- package/dist/nile-code-editor/nile-code-editor.css.cjs.js +1 -1
- package/dist/nile-code-editor/nile-code-editor.css.cjs.js.map +1 -1
- package/dist/nile-code-editor/nile-code-editor.css.esm.js +3 -3
- package/dist/src/nile-accordion/nile-accordian.test.js +24 -29
- package/dist/src/nile-accordion/nile-accordian.test.js.map +1 -1
- package/dist/src/nile-accordion/nile-accordion.css.js +53 -22
- package/dist/src/nile-accordion/nile-accordion.css.js.map +1 -1
- package/dist/src/nile-accordion/nile-accordion.d.ts +31 -16
- package/dist/src/nile-accordion/nile-accordion.js +68 -34
- package/dist/src/nile-accordion/nile-accordion.js.map +1 -1
- package/dist/src/nile-avatar/nile-avatar.css.js +2 -0
- package/dist/src/nile-avatar/nile-avatar.css.js.map +1 -1
- package/dist/src/nile-avatar/nile-avatar.d.ts +10 -9
- package/dist/src/nile-avatar/nile-avatar.js +78 -61
- package/dist/src/nile-avatar/nile-avatar.js.map +1 -1
- package/dist/src/nile-avatar/nile-avatar.test.d.ts +1 -0
- package/dist/src/nile-avatar/nile-avatar.test.js +64 -30
- package/dist/src/nile-avatar/nile-avatar.test.js.map +1 -1
- package/dist/src/nile-code-editor/nile-code-editor.css.js +3 -3
- package/dist/src/nile-code-editor/nile-code-editor.css.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-accordion/nile-accordian.test.ts +30 -57
- package/src/nile-accordion/nile-accordion.css.ts +53 -22
- package/src/nile-accordion/nile-accordion.ts +61 -33
- package/src/nile-avatar/nile-avatar.css.ts +2 -0
- package/src/nile-avatar/nile-avatar.test.ts +84 -33
- package/src/nile-avatar/nile-avatar.ts +79 -72
- package/src/nile-code-editor/nile-code-editor.css.ts +3 -3
- package/vscode-html-custom-data.json +143 -85
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nile-accordian.test.js","sourceRoot":"","sources":["../../../src/nile-accordion/nile-accordian.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, html, expect, oneEvent, elementUpdated } from '@open-wc/testing';\nimport './nile-accordion';\nimport { NileAccordion } from './nile-accordion';\nimport Sinon from 'sinon';\nconst wait=(ms:number=50000)=>new Promise(resolve => setTimeout(resolve, ms))\n\n\ndescribe('NileAccordion', () => {\n it('should render correctly', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n expect(el).to.be.instanceOf(NileAccordion);\n expect(el.shadowRoot).not.to.be.null;\n expect(el.summary).to.equal('Test Summary');\n });\n\n it('should initialize closed by default', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n expect(el.open).to.be.false;\n const body = el.shadowRoot?.querySelector<any>('.details__body');\n expect(body?.hidden).to.be.true;\n });\n\n it('should open when clicked', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n \n const header = el.shadowRoot?.querySelector('.details__header') as HTMLElement;\n header.click();\n \n await elementUpdated(el);\n \n expect(el.open).to.be.true;\n const body = el.shadowRoot?.querySelector<any>('.details__body');\n expect(body?.hidden).to.be.false;\n });\n\n it('should emit \"nile-show\" and \"nile-after-show\" when opened', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n \n const showSpy = Sinon.spy(el, 'emit');\n const header = el.shadowRoot?.querySelector('.details__header') as HTMLElement;\n\t\tsetTimeout(() => header.click());\n\n // Wait for the \"nile-show\" and \"nile-after-show\" events to be emitted\n await oneEvent(el, 'nile-after-show');\n\n expect(showSpy.calledWith('nile-show')).to.be.true;\n expect(showSpy.calledWith('nile-after-show')).to.be.true;\n });\n\n it('should emit \"nile-hide\" and \"nile-after-hide\" when closed', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\" open></nile-accordion>`);\n \n const hideSpy = Sinon.spy(el, 'emit');\n const header = el.shadowRoot?.querySelector('.details__header') as HTMLElement;\n\t\tsetTimeout(() => header.click());\n\n // Wait for the \"nile-hide\" and \"nile-after-hide\" events to be emitted\n await oneEvent(el, 'nile-after-hide');\n\n expect(hideSpy.calledWith('nile-hide')).to.be.true;\n expect(hideSpy.calledWith('nile-after-hide')).to.be.true;\n });\n\n it('should be disabled when the \"disabled\" property is set', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\" disabled></nile-accordion>`);\n \n const header = el.shadowRoot?.querySelector('.details__header') as HTMLElement;\n header.click();\n\n await elementUpdated(el);\n \n expect(el.open).to.be.false;\n const body = el.shadowRoot?.querySelector<any>('.details__body');\n expect(body?.hidden).to.be.true;\n });\n\n it('should open when pressing \"Enter\"', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n \n const header = el.shadowRoot?.querySelector('.details__header') as HTMLElement;\n\n // Simulate pressing the \"Enter\" key\n const enterEvent = new KeyboardEvent('keydown', { key: 'Enter' });\n header.dispatchEvent(enterEvent);\n\n await elementUpdated(el);\n expect(el.open).to.be.true;\n });\n\n it('should handle keyboard interaction (Enter and Space)', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n \n const header = el.shadowRoot?.querySelector('.details__header') as HTMLElement;\n\n // Simulate pressing the \"Enter\" key\n const enterEvent = new KeyboardEvent('keydown', { key: 'Enter' });\n header.dispatchEvent(enterEvent);\n\n await elementUpdated(el);\n expect(el.open).to.be.true;\n\n // Simulate pressing the \"Space\" key\n const spaceEvent = new KeyboardEvent('keydown', { key: ' ' });\n header.dispatchEvent(spaceEvent);\n\n await elementUpdated(el);\n expect(el.open).to.be.false;\n });\n\n it('should handle ArrowUp/ArrowLeft to close and ArrowDown/ArrowRight to open', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n \n const header = el.shadowRoot?.querySelector('.details__header') as HTMLElement;\n\n // Simulate pressing the \"ArrowDown\" key to open\n const arrowDownEvent = new KeyboardEvent('keydown', { key: 'ArrowDown' });\n header.dispatchEvent(arrowDownEvent);\n\n await elementUpdated(el);\n expect(el.open).to.be.true;\n\n // Simulate pressing the \"ArrowUp\" key to close\n const arrowUpEvent = new KeyboardEvent('keydown', { key: 'ArrowUp' });\n header.dispatchEvent(arrowUpEvent);\n\n await elementUpdated(el);\n expect(el.open).to.be.false;\n });\n\n it('should animate when opening and closing', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n \n const animateSpy = Sinon.spy(el, 'handleOpenChange');\n\n // Simulate opening\n const header = el.shadowRoot?.querySelector('.details__header') as HTMLElement;\n header.click();\n \n await elementUpdated(el);\n expect(animateSpy.called).to.be.true;\n\n // Simulate closing\n header.click();\n await elementUpdated(el);\n expect(animateSpy.calledTwice).to.be.true;\n });\n});"]}
|
1
|
+
{"version":3,"file":"nile-accordian.test.js","sourceRoot":"","sources":["../../../src/nile-accordion/nile-accordian.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, html, expect, oneEvent, elementUpdated } from '@open-wc/testing';\nimport './nile-accordion';\nimport { NileAccordion } from './nile-accordion';\nimport Sinon from 'sinon';\n\ndescribe('NileAccordion', () => {\n it('should render correctly', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n expect(el).to.be.instanceOf(NileAccordion);\n expect(el.shadowRoot).not.to.be.null;\n expect(el.summary).to.equal('Test Summary');\n });\n\n it('should initialize closed by default', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n expect(el.open).to.be.false;\n const body = el.shadowRoot?.querySelector<HTMLElement>('.accordian__body');\n expect(body?.hidden).to.be.true;\n });\n\n it('should open when clicked', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n const header = el.shadowRoot?.querySelector<HTMLElement>('.accordian__header') as HTMLElement;\n header.click();\n await elementUpdated(el);\n expect(el.open).to.be.true;\n const body = el.shadowRoot?.querySelector<HTMLElement>('.accordian__body');\n expect(body?.hidden).to.be.false;\n });\n\n it('should emit \"nile-show\" and \"nile-after-show\" when opened', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n const showSpy = Sinon.spy(el, 'emit');\n const header = el.shadowRoot?.querySelector<HTMLElement>('.accordian__header') as HTMLElement;\n setTimeout(() => header.click());\n await oneEvent(el, 'nile-after-show');\n expect(showSpy.calledWith('nile-show')).to.be.true;\n expect(showSpy.calledWith('nile-after-show')).to.be.true;\n });\n\n it('should emit \"nile-hide\" and \"nile-after-hide\" when closed', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\" open></nile-accordion>`);\n const hideSpy = Sinon.spy(el, 'emit');\n const header = el.shadowRoot?.querySelector<HTMLElement>('.accordian__header') as HTMLElement;\n setTimeout(() => header.click());\n await oneEvent(el, 'nile-after-hide');\n expect(hideSpy.calledWith('nile-hide')).to.be.true;\n expect(hideSpy.calledWith('nile-after-hide')).to.be.true;\n });\n\n it('should be disabled when the \"disabled\" property is set', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\" disabled></nile-accordion>`);\n const header = el.shadowRoot?.querySelector<HTMLElement>('.accordian__header') as HTMLElement;\n header.click();\n await elementUpdated(el);\n expect(el.open).to.be.false;\n });\n\n it('should handle keyboard interaction (Enter and Space)', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n const header = el.shadowRoot?.querySelector<HTMLElement>('.accordian__header') as HTMLElement;\n\n const enterEvent = new KeyboardEvent('keydown', { key: 'Enter' });\n header.dispatchEvent(enterEvent);\n await elementUpdated(el);\n expect(el.open).to.be.true;\n\n const spaceEvent = new KeyboardEvent('keydown', { key: ' ' });\n header.dispatchEvent(spaceEvent);\n await elementUpdated(el);\n expect(el.open).to.be.false;\n });\n\n it('should handle ArrowUp/ArrowLeft to close and ArrowDown/ArrowRight to open', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n const header = el.shadowRoot?.querySelector<HTMLElement>('.accordian__header') as HTMLElement;\n\n const arrowDownEvent = new KeyboardEvent('keydown', { key: 'ArrowDown' });\n header.dispatchEvent(arrowDownEvent);\n await elementUpdated(el);\n expect(el.open).to.be.true;\n\n const arrowUpEvent = new KeyboardEvent('keydown', { key: 'ArrowUp' });\n header.dispatchEvent(arrowUpEvent);\n await elementUpdated(el);\n expect(el.open).to.be.false;\n });\n\n it('should apply the \"variant\" class based on the variant property', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\" variant=\"dark\"></nile-accordion>`);\n const header = el.shadowRoot?.querySelector<HTMLElement>('.accordian__header');\n expect(header).to.have.class('accordian__header--dark');\n });\n\n it('should apply the correct size class based on the size property', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\" size=\"lg\"></nile-accordion>`);\n const container = el.shadowRoot?.querySelector<HTMLElement>('.accordian');\n expect(container).to.have.class('accordian--lg');\n });\n\n it('should apply the correct expand icon placement class based on the expandIconPlacement property', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\" expandIconPlacement=\"left\"></nile-accordion>`);\n const header = el.shadowRoot?.querySelector<HTMLElement>('.accordian__header');\n expect(header).to.have.class('accordian__header--arrow-left');\n });\n\n it('should animate when opening and closing', async () => {\n const el = await fixture<NileAccordion>(html`<nile-accordion summary=\"Test Summary\"></nile-accordion>`);\n const animateSpy = Sinon.spy(el, 'handleOpenChange');\n const header = el.shadowRoot?.querySelector<HTMLElement>('.accordian__header') as HTMLElement;\n\n header.click();\n await elementUpdated(el);\n expect(animateSpy.called).to.be.true;\n\n header.click();\n await elementUpdated(el);\n expect(animateSpy.calledTwice).to.be.true;\n });\n});\n"]}
|
@@ -28,77 +28,108 @@ export const styles = css `
|
|
28
28
|
display: block;
|
29
29
|
}
|
30
30
|
|
31
|
-
.
|
32
|
-
border:
|
33
|
-
border-radius: 0.25rem;
|
31
|
+
.accordian {
|
32
|
+
border-top:solid 1px var(--nile-colors-neutral-500);
|
34
33
|
background-color: #FFFFFF;
|
35
34
|
overflow-anchor: none;
|
36
35
|
}
|
37
36
|
|
38
|
-
.
|
37
|
+
.accordian--lg{
|
38
|
+
--accordian-text-size:var(--sm-tesx, 14px);
|
39
|
+
--accordian-heading-padding: 16px 12px;
|
40
|
+
--accordian-content-padding: 6px 12px 18px;
|
41
|
+
}
|
42
|
+
|
43
|
+
.accordian--md{
|
44
|
+
--accordian-text-size:var(--sm-tesx, 14px);
|
45
|
+
--accordian-heading-padding: 12px 12px;
|
46
|
+
--accordian-content-padding: 6px 12px 18px;
|
47
|
+
}
|
48
|
+
|
49
|
+
.accordian--sm{
|
50
|
+
--accordian-text-size:var(--sm-tesx, 12px);
|
51
|
+
--accordian-heading-padding: 6px 12px;
|
52
|
+
--accordian-content-padding: 6px 12px 12px;
|
53
|
+
}
|
54
|
+
|
55
|
+
.accordian {
|
56
|
+
font-size: var(--accordian-text-size);
|
57
|
+
}
|
58
|
+
|
59
|
+
.accordian--disabled {
|
39
60
|
opacity: 0.5;
|
40
61
|
}
|
41
62
|
|
42
|
-
.
|
63
|
+
.accordian__header {
|
43
64
|
display: flex;
|
65
|
+
gap:12px;
|
44
66
|
align-items: center;
|
45
67
|
border-radius: inherit;
|
46
|
-
|
68
|
+
font-weight:500;
|
69
|
+
padding: var(--accordian-heading-padding);
|
47
70
|
user-select: none;
|
48
71
|
cursor: pointer;
|
49
72
|
}
|
50
73
|
|
51
|
-
.
|
74
|
+
.accordian__header--dark{
|
75
|
+
background-color:var(--nile-colors-dark-200);
|
76
|
+
}
|
77
|
+
|
78
|
+
.accordian__header--arrow-left{
|
79
|
+
flex-direction: row-reverse;
|
80
|
+
}
|
81
|
+
|
82
|
+
.accordian__header:focus {
|
52
83
|
outline: none;
|
53
84
|
}
|
54
85
|
|
55
|
-
.
|
86
|
+
.accordian__header:focus-visible {
|
56
87
|
outline: solid 3px hsl(200.4, 98%, 39.4%);
|
57
88
|
outline-offset: calc(1px + 1px);
|
58
89
|
}
|
59
90
|
|
60
|
-
.
|
91
|
+
.accordian--disabled .accordian__header {
|
61
92
|
cursor: not-allowed;
|
62
93
|
}
|
63
94
|
|
64
|
-
.
|
95
|
+
.accordian--disabled .accordian__header:focus-visible {
|
65
96
|
outline: none;
|
66
97
|
box-shadow: none;
|
67
98
|
}
|
68
99
|
|
69
|
-
.
|
100
|
+
.accordian__summary {
|
70
101
|
flex: 1 1 auto;
|
71
102
|
display: flex;
|
72
103
|
align-items: center;
|
73
104
|
}
|
74
105
|
|
75
|
-
.
|
106
|
+
.accordian__summary-icon {
|
76
107
|
flex: 0 0 auto;
|
77
108
|
display: flex;
|
78
109
|
align-items: center;
|
79
110
|
transition: 250ms rotate ease;
|
80
111
|
}
|
81
112
|
|
82
|
-
.
|
113
|
+
.accordian--open .accordian__summary-icon {
|
83
114
|
rotate: 90deg;
|
84
115
|
}
|
85
116
|
|
86
|
-
.
|
87
|
-
|
88
|
-
}
|
89
|
-
|
90
|
-
.details--open slot[name='expand-icon'],
|
91
|
-
.details:not(.details--open) slot[name='collapse-icon'] {
|
117
|
+
.accordian--open slot[name='expand-icon'],
|
118
|
+
.accordian:not(.accordian--open) slot[name='collapse-icon'] {
|
92
119
|
display: none;
|
93
120
|
}
|
94
121
|
|
95
|
-
.
|
122
|
+
.accordian__body {
|
96
123
|
overflow: hidden;
|
97
124
|
}
|
98
125
|
|
99
|
-
.
|
126
|
+
.accordian__content {
|
100
127
|
display: block;
|
101
|
-
padding:
|
128
|
+
padding: var(--accordian-content-padding);
|
129
|
+
}
|
130
|
+
|
131
|
+
.accordian__content--arrow-left{
|
132
|
+
margin-left:28px;
|
102
133
|
}
|
103
134
|
`;
|
104
135
|
export default [styles];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nile-accordion.css.js","sourceRoot":"","sources":["../../../src/nile-accordion/nile-accordion.css.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAEF,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA
|
1
|
+
{"version":3,"file":"nile-accordion.css.js","sourceRoot":"","sources":["../../../src/nile-accordion/nile-accordion.css.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAEF,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2HxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n* Copyright Aquera Inc 2023\n*\n* This source code is licensed under the BSD-3-Clause license found in the\n* LICENSE file in the root directory of this source tree.\n*/\n\nimport {css} from 'lit';\n\n/**\n * Detail CSS\n */\nexport const styles = css`\n\n :host {\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none !important;\n }\n\n :host {\n display: block;\n }\n\n .accordian {\n border-top:solid 1px var(--nile-colors-neutral-500);\n background-color: #FFFFFF;\n overflow-anchor: none;\n }\n\n .accordian--lg{\n --accordian-text-size:var(--sm-tesx, 14px);\n --accordian-heading-padding: 16px 12px;\n --accordian-content-padding: 6px 12px 18px;\n }\n\n .accordian--md{\n --accordian-text-size:var(--sm-tesx, 14px);\n --accordian-heading-padding: 12px 12px;\n --accordian-content-padding: 6px 12px 18px;\n }\n\n .accordian--sm{\n --accordian-text-size:var(--sm-tesx, 12px);\n --accordian-heading-padding: 6px 12px;\n --accordian-content-padding: 6px 12px 12px;\n }\n \n .accordian {\n font-size: var(--accordian-text-size);\n }\n\n .accordian--disabled {\n opacity: 0.5;\n }\n\n .accordian__header {\n display: flex;\n gap:12px;\n align-items: center;\n border-radius: inherit;\n font-weight:500;\n padding: var(--accordian-heading-padding);\n user-select: none;\n cursor: pointer;\n }\n\n .accordian__header--dark{\n background-color:var(--nile-colors-dark-200);\n }\n\n .accordian__header--arrow-left{\n flex-direction: row-reverse;\n }\n\n .accordian__header:focus {\n outline: none;\n }\n\n .accordian__header:focus-visible {\n outline: solid 3px hsl(200.4, 98%, 39.4%);\n outline-offset: calc(1px + 1px);\n }\n\n .accordian--disabled .accordian__header {\n cursor: not-allowed;\n }\n\n .accordian--disabled .accordian__header:focus-visible {\n outline: none;\n box-shadow: none;\n }\n\n .accordian__summary {\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n }\n\n .accordian__summary-icon {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n transition: 250ms rotate ease;\n }\n\n .accordian--open .accordian__summary-icon {\n rotate: 90deg;\n }\n\n .accordian--open slot[name='expand-icon'],\n .accordian:not(.accordian--open) slot[name='collapse-icon'] {\n display: none;\n }\n\n .accordian__body {\n overflow: hidden;\n }\n\n .accordian__content {\n display: block;\n padding: var(--accordian-content-padding);\n }\n\n .accordian__content--arrow-left{\n margin-left:28px;\n }\n`;\n\nexport default [styles];\n"]}
|
@@ -15,50 +15,65 @@ import type { CSSResultGroup } from 'lit';
|
|
15
15
|
*/
|
16
16
|
export declare class NileAccordion extends NileElement {
|
17
17
|
/**
|
18
|
-
* @summary
|
18
|
+
* @summary Accordian show a brief summary and expand to show additional content.
|
19
19
|
*
|
20
20
|
* @dependency nile-icon
|
21
21
|
*
|
22
|
-
* @slot - The
|
23
|
-
* @slot summary - The
|
22
|
+
* @slot - The accordian' main content.
|
23
|
+
* @slot summary - The accordian' summary. Alternatively, you can use the `summary` attribute.
|
24
24
|
* @slot expand-icon - Optional expand icon to use instead of the default. Works best with `<nile-icon>`.
|
25
25
|
* @slot collapse-icon - Optional collapse icon to use instead of the default. Works best with `<nile-icon>`.
|
26
26
|
*
|
27
|
-
* @event nile-show - Emitted when the
|
28
|
-
* @event nile-after-show - Emitted after the
|
29
|
-
* @event nile-hide - Emitted when the
|
30
|
-
* @event nile-after-hide - Emitted after the
|
27
|
+
* @event nile-show - Emitted when the accordian opens.
|
28
|
+
* @event nile-after-show - Emitted after the accordian opens and all animations are complete.
|
29
|
+
* @event nile-hide - Emitted when the accordian closes.
|
30
|
+
* @event nile-after-hide - Emitted after the accordian closes and all animations are complete.
|
31
31
|
*
|
32
32
|
* @csspart base - The component's base wrapper.
|
33
33
|
* @csspart header - The header that wraps both the summary and the expand/collapse icon.
|
34
34
|
* @csspart summary - The container that wraps the summary.
|
35
35
|
* @csspart summary-icon - The container that wraps the expand/collapse icons.
|
36
|
-
* @csspart content - The
|
36
|
+
* @csspart content - The accordian content.
|
37
37
|
*
|
38
|
-
* @animation
|
39
|
-
* @animation
|
38
|
+
* @animation accordian.show - The animation to use when showing accordian. You can use `height: auto` with this animation.
|
39
|
+
* @animation accordian.hide - The animation to use when hiding accordian. You can use `height: auto` with this animation.
|
40
40
|
*/
|
41
41
|
static styles: CSSResultGroup;
|
42
|
-
|
42
|
+
accordian: HTMLElement;
|
43
43
|
header: HTMLElement;
|
44
44
|
body: HTMLElement;
|
45
45
|
expandIconSlot: HTMLSlotElement;
|
46
46
|
/**
|
47
|
-
* Indicates whether or not the
|
48
|
-
* can use the `show()` and `hide()` methods and this attribute will reflect the
|
47
|
+
* Indicates whether or not the accordian is open. You can toggle this attribute to show and hide the accordian, or you
|
48
|
+
* can use the `show()` and `hide()` methods and this attribute will reflect the accordian' open state.
|
49
49
|
*/
|
50
50
|
open: boolean;
|
51
|
+
/**
|
52
|
+
* Indicates the visual style of the accordian component. Accepted values are `'dark'` or `'light'`.
|
53
|
+
* Defaults to `'light'`.
|
54
|
+
*/
|
55
|
+
variant: 'dark' | 'light';
|
56
|
+
/**
|
57
|
+
* Specifies the direction of the arrow indicator. Accepted values are `'left'` or `'right'`.
|
58
|
+
* Defaults to `'right'`.
|
59
|
+
*/
|
60
|
+
expandIconPlacement: 'left' | 'right';
|
61
|
+
/**
|
62
|
+
* Specifies the size of the accordian component. Accepted values are `'sm'`, `'md'`, or `'lg'`.
|
63
|
+
* Defaults to `'md'`.
|
64
|
+
*/
|
65
|
+
size: 'sm' | 'md' | 'lg';
|
51
66
|
/** The summary to show in the header. If you need to display HTML, use the `summary` slot instead. */
|
52
67
|
summary: string;
|
53
|
-
/** Disables the
|
68
|
+
/** Disables the accordian so it can't be toggled. */
|
54
69
|
disabled: boolean;
|
55
70
|
firstUpdated(): void;
|
56
71
|
private handleSummaryClick;
|
57
72
|
private handleSummaryKeyDown;
|
58
73
|
handleOpenChange(): Promise<void>;
|
59
|
-
/** Shows the
|
74
|
+
/** Shows the accordian. */
|
60
75
|
show(): Promise<void>;
|
61
|
-
/** Hides the
|
76
|
+
/** Hides the accordian */
|
62
77
|
hide(): Promise<void>;
|
63
78
|
render(): TemplateResult<1>;
|
64
79
|
}
|
@@ -23,36 +23,51 @@ import { watch } from '../internal/watch';
|
|
23
23
|
let NileAccordion = class NileAccordion extends NileElement {
|
24
24
|
constructor() {
|
25
25
|
/**
|
26
|
-
* @summary
|
26
|
+
* @summary Accordian show a brief summary and expand to show additional content.
|
27
27
|
*
|
28
28
|
* @dependency nile-icon
|
29
29
|
*
|
30
|
-
* @slot - The
|
31
|
-
* @slot summary - The
|
30
|
+
* @slot - The accordian' main content.
|
31
|
+
* @slot summary - The accordian' summary. Alternatively, you can use the `summary` attribute.
|
32
32
|
* @slot expand-icon - Optional expand icon to use instead of the default. Works best with `<nile-icon>`.
|
33
33
|
* @slot collapse-icon - Optional collapse icon to use instead of the default. Works best with `<nile-icon>`.
|
34
34
|
*
|
35
|
-
* @event nile-show - Emitted when the
|
36
|
-
* @event nile-after-show - Emitted after the
|
37
|
-
* @event nile-hide - Emitted when the
|
38
|
-
* @event nile-after-hide - Emitted after the
|
35
|
+
* @event nile-show - Emitted when the accordian opens.
|
36
|
+
* @event nile-after-show - Emitted after the accordian opens and all animations are complete.
|
37
|
+
* @event nile-hide - Emitted when the accordian closes.
|
38
|
+
* @event nile-after-hide - Emitted after the accordian closes and all animations are complete.
|
39
39
|
*
|
40
40
|
* @csspart base - The component's base wrapper.
|
41
41
|
* @csspart header - The header that wraps both the summary and the expand/collapse icon.
|
42
42
|
* @csspart summary - The container that wraps the summary.
|
43
43
|
* @csspart summary-icon - The container that wraps the expand/collapse icons.
|
44
|
-
* @csspart content - The
|
44
|
+
* @csspart content - The accordian content.
|
45
45
|
*
|
46
|
-
* @animation
|
47
|
-
* @animation
|
46
|
+
* @animation accordian.show - The animation to use when showing accordian. You can use `height: auto` with this animation.
|
47
|
+
* @animation accordian.hide - The animation to use when hiding accordian. You can use `height: auto` with this animation.
|
48
48
|
*/
|
49
49
|
super(...arguments);
|
50
50
|
/**
|
51
|
-
* Indicates whether or not the
|
52
|
-
* can use the `show()` and `hide()` methods and this attribute will reflect the
|
51
|
+
* Indicates whether or not the accordian is open. You can toggle this attribute to show and hide the accordian, or you
|
52
|
+
* can use the `show()` and `hide()` methods and this attribute will reflect the accordian' open state.
|
53
53
|
*/
|
54
54
|
this.open = false;
|
55
|
-
/**
|
55
|
+
/**
|
56
|
+
* Indicates the visual style of the accordian component. Accepted values are `'dark'` or `'light'`.
|
57
|
+
* Defaults to `'light'`.
|
58
|
+
*/
|
59
|
+
this.variant = 'light';
|
60
|
+
/**
|
61
|
+
* Specifies the direction of the arrow indicator. Accepted values are `'left'` or `'right'`.
|
62
|
+
* Defaults to `'right'`.
|
63
|
+
*/
|
64
|
+
this.expandIconPlacement = 'right';
|
65
|
+
/**
|
66
|
+
* Specifies the size of the accordian component. Accepted values are `'sm'`, `'md'`, or `'lg'`.
|
67
|
+
* Defaults to `'md'`.
|
68
|
+
*/
|
69
|
+
this.size = 'md';
|
70
|
+
/** Disables the accordian so it can't be toggled. */
|
56
71
|
this.disabled = false;
|
57
72
|
}
|
58
73
|
firstUpdated() {
|
@@ -99,7 +114,7 @@ let NileAccordion = class NileAccordion extends NileElement {
|
|
99
114
|
}
|
100
115
|
await stopAnimations(this.body);
|
101
116
|
this.body.hidden = false;
|
102
|
-
const { keyframes, options } = getAnimation(this, '
|
117
|
+
const { keyframes, options } = getAnimation(this, 'accordian.show', { dir: 'ltr' });
|
103
118
|
await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);
|
104
119
|
this.body.style.height = 'auto';
|
105
120
|
this.emit('nile-after-show');
|
@@ -112,14 +127,14 @@ let NileAccordion = class NileAccordion extends NileElement {
|
|
112
127
|
return;
|
113
128
|
}
|
114
129
|
await stopAnimations(this.body);
|
115
|
-
const { keyframes, options } = getAnimation(this, '
|
130
|
+
const { keyframes, options } = getAnimation(this, 'accordian.hide', { dir: 'ltr' });
|
116
131
|
await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);
|
117
132
|
this.body.hidden = true;
|
118
133
|
this.body.style.height = 'auto';
|
119
134
|
this.emit('nile-after-hide');
|
120
135
|
}
|
121
136
|
}
|
122
|
-
/** Shows the
|
137
|
+
/** Shows the accordian. */
|
123
138
|
async show() {
|
124
139
|
if (this.open || this.disabled) {
|
125
140
|
return undefined;
|
@@ -127,7 +142,7 @@ let NileAccordion = class NileAccordion extends NileElement {
|
|
127
142
|
this.open = true;
|
128
143
|
return waitForEvent(this, 'nile-after-show');
|
129
144
|
}
|
130
|
-
/** Hides the
|
145
|
+
/** Hides the accordian */
|
131
146
|
async hide() {
|
132
147
|
if (!this.open || this.disabled) {
|
133
148
|
return undefined;
|
@@ -136,21 +151,27 @@ let NileAccordion = class NileAccordion extends NileElement {
|
|
136
151
|
return waitForEvent(this, 'nile-after-hide');
|
137
152
|
}
|
138
153
|
render() {
|
139
|
-
const isRtl =
|
154
|
+
const isRtl = true;
|
140
155
|
return html `
|
141
156
|
<div
|
142
157
|
part="base"
|
143
158
|
class=${classMap({
|
144
|
-
|
145
|
-
'
|
146
|
-
'
|
147
|
-
'
|
159
|
+
accordian: true,
|
160
|
+
'accordian--open': this.open,
|
161
|
+
'accordian--disabled': this.disabled,
|
162
|
+
'accordian--sm': this.size == 'sm',
|
163
|
+
'accordian--md': this.size == 'md',
|
164
|
+
'accordian--lg': this.size == 'lg',
|
148
165
|
})}
|
149
166
|
>
|
150
167
|
<div
|
151
168
|
part="header"
|
152
169
|
id="header"
|
153
|
-
class="
|
170
|
+
class="${classMap({
|
171
|
+
'accordian__header': true,
|
172
|
+
'accordian__header--dark': this.variant == 'dark',
|
173
|
+
'accordian__header--arrow-left': 'left' == this.expandIconPlacement
|
174
|
+
})}"
|
154
175
|
role="button"
|
155
176
|
aria-expanded=${this.open ? 'true' : 'false'}
|
156
177
|
aria-controls="content"
|
@@ -159,9 +180,9 @@ let NileAccordion = class NileAccordion extends NileElement {
|
|
159
180
|
@click=${this.handleSummaryClick}
|
160
181
|
@keydown=${this.handleSummaryKeyDown}
|
161
182
|
>
|
162
|
-
<slot name="summary" part="summary" class="
|
183
|
+
<slot name="summary" part="summary" class="accordian__summary">${this.summary}</slot>
|
163
184
|
|
164
|
-
<span part="summary-icon" class="
|
185
|
+
<span part="summary-icon" class="accordian__summary-icon">
|
165
186
|
<slot name="expand-icon">
|
166
187
|
<nile-icon name="arrowright"></nile-icon>
|
167
188
|
</slot>
|
@@ -171,8 +192,12 @@ let NileAccordion = class NileAccordion extends NileElement {
|
|
171
192
|
</span>
|
172
193
|
</div>
|
173
194
|
|
174
|
-
<div class="
|
175
|
-
<slot part="content" id="content"
|
195
|
+
<div class="accordian__body" role="region" aria-labelledby="header">
|
196
|
+
<slot part="content" id="content"
|
197
|
+
class="${classMap({
|
198
|
+
'accordian__content': true,
|
199
|
+
'accordian__content--arrow-left': this.expandIconPlacement == 'left'
|
200
|
+
})}"></slot>
|
176
201
|
</div>
|
177
202
|
</div>
|
178
203
|
`;
|
@@ -180,20 +205,29 @@ let NileAccordion = class NileAccordion extends NileElement {
|
|
180
205
|
};
|
181
206
|
NileAccordion.styles = styles;
|
182
207
|
__decorate([
|
183
|
-
query('.
|
184
|
-
], NileAccordion.prototype, "
|
208
|
+
query('.accordian')
|
209
|
+
], NileAccordion.prototype, "accordian", void 0);
|
185
210
|
__decorate([
|
186
|
-
query('.
|
211
|
+
query('.accordian__header')
|
187
212
|
], NileAccordion.prototype, "header", void 0);
|
188
213
|
__decorate([
|
189
|
-
query('.
|
214
|
+
query('.accordian__body')
|
190
215
|
], NileAccordion.prototype, "body", void 0);
|
191
216
|
__decorate([
|
192
|
-
query('.
|
217
|
+
query('.accordian__expand-icon-slot')
|
193
218
|
], NileAccordion.prototype, "expandIconSlot", void 0);
|
194
219
|
__decorate([
|
195
220
|
property({ type: Boolean, reflect: true })
|
196
221
|
], NileAccordion.prototype, "open", void 0);
|
222
|
+
__decorate([
|
223
|
+
property({ reflect: true })
|
224
|
+
], NileAccordion.prototype, "variant", void 0);
|
225
|
+
__decorate([
|
226
|
+
property({ reflect: true })
|
227
|
+
], NileAccordion.prototype, "expandIconPlacement", void 0);
|
228
|
+
__decorate([
|
229
|
+
property({ reflect: true })
|
230
|
+
], NileAccordion.prototype, "size", void 0);
|
197
231
|
__decorate([
|
198
232
|
property()
|
199
233
|
], NileAccordion.prototype, "summary", void 0);
|
@@ -207,14 +241,14 @@ NileAccordion = __decorate([
|
|
207
241
|
customElement('nile-accordion')
|
208
242
|
], NileAccordion);
|
209
243
|
export { NileAccordion };
|
210
|
-
setDefaultAnimation('
|
244
|
+
setDefaultAnimation('accordian.show', {
|
211
245
|
keyframes: [
|
212
246
|
{ height: '0', opacity: '0' },
|
213
247
|
{ height: 'auto', opacity: '1' }
|
214
248
|
],
|
215
249
|
options: { duration: 250, easing: 'linear' }
|
216
250
|
});
|
217
|
-
setDefaultAnimation('
|
251
|
+
setDefaultAnimation('accordian.hide', {
|
218
252
|
keyframes: [
|
219
253
|
{ height: 'auto', opacity: '1' },
|
220
254
|
{ height: '0', opacity: '0' }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nile-accordion.js","sourceRoot":"","sources":["../../../src/nile-accordion/nile-accordion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {LitElement, html, CSSResultArray, TemplateResult} from 'lit';\nimport {styles} from './nile-accordion.css';\nimport NileElement from '../internal/nile-element';\nimport { animateTo, shimKeyframesHeightAuto, stopAnimations } from '../internal/animate';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { getAnimation, setDefaultAnimation } from '../utilities/animation-registry';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport type { CSSResultGroup } from 'lit';\n\n/**\n * Nile detail component.\n *\n * @tag nile-accordion\n *\n */\n@customElement('nile-accordion')\nexport class NileAccordion extends NileElement {\n\n/**\n * @summary Details show a brief summary and expand to show additional content.\n *\n * @dependency nile-icon\n *\n * @slot - The details' main content.\n * @slot summary - The details' summary. Alternatively, you can use the `summary` attribute.\n * @slot expand-icon - Optional expand icon to use instead of the default. Works best with `<nile-icon>`.\n * @slot collapse-icon - Optional collapse icon to use instead of the default. Works best with `<nile-icon>`.\n *\n * @event nile-show - Emitted when the details opens.\n * @event nile-after-show - Emitted after the details opens and all animations are complete.\n * @event nile-hide - Emitted when the details closes.\n * @event nile-after-hide - Emitted after the details closes and all animations are complete.\n *\n * @csspart base - The component's base wrapper.\n * @csspart header - The header that wraps both the summary and the expand/collapse icon.\n * @csspart summary - The container that wraps the summary.\n * @csspart summary-icon - The container that wraps the expand/collapse icons.\n * @csspart content - The details content.\n *\n * @animation details.show - The animation to use when showing details. You can use `height: auto` with this animation.\n * @animation details.hide - The animation to use when hiding details. You can use `height: auto` with this animation.\n */\n\nstatic styles: CSSResultGroup = styles;\n\n\n@query('.details') details: HTMLElement;\n@query('.details__header') header: HTMLElement;\n@query('.details__body') body: HTMLElement;\n@query('.details__expand-icon-slot') expandIconSlot: HTMLSlotElement;\n\n/**\n * Indicates whether or not the details is open. You can toggle this attribute to show and hide the details, or you\n * can use the `show()` and `hide()` methods and this attribute will reflect the details' open state.\n */\n@property({ type: Boolean, reflect: true }) open = false;\n\n/** The summary to show in the header. If you need to display HTML, use the `summary` slot instead. */\n@property() summary: string;\n\n/** Disables the details so it can't be toggled. */\n@property({ type: Boolean, reflect: true }) disabled = false;\n\nfirstUpdated() {\n this.body.hidden = !this.open;\n this.body.style.height = this.open ? 'auto' : '0';\n}\n\nprivate handleSummaryClick() {\n if (!this.disabled) {\n if (this.open) {\n this.hide();\n } else {\n this.show();\n }\n\n this.header.focus();\n }\n}\n\nprivate handleSummaryKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n\n if (this.open) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n event.preventDefault();\n this.hide();\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n event.preventDefault();\n this.show();\n }\n}\n\n@watch('open', { waitUntilFirstUpdate: true })\nasync handleOpenChange() {\n if (this.open) {\n // Show\n const nileShow = this.emit('nile-show', { cancelable: true });\n if (nileShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n await stopAnimations(this.body);\n this.body.hidden = false;\n\n const { keyframes, options } = getAnimation(this, 'details.show', { dir: 'ltr' });\n await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);\n this.body.style.height = 'auto';\n\n this.emit('nile-after-show');\n } else {\n // Hide\n const nileHide = this.emit('nile-hide', { cancelable: true });\n if (nileHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n await stopAnimations(this.body);\n\n const { keyframes, options } = getAnimation(this, 'details.hide', { dir: 'ltr' });\n await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);\n this.body.hidden = true;\n this.body.style.height = 'auto';\n\n this.emit('nile-after-hide');\n }\n}\n\n/** Shows the details. */\nasync show() {\n if (this.open || this.disabled) {\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n}\n\n/** Hides the details */\nasync hide() {\n if (!this.open || this.disabled) {\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n}\n\nrender() {\n const isRtl = false;\n\n return html`\n <div\n part=\"base\"\n class=${classMap({\n details: true,\n 'details--open': this.open,\n 'details--disabled': this.disabled,\n 'details--rtl': isRtl\n })}\n >\n <div\n part=\"header\"\n id=\"header\"\n class=\"details__header\"\n role=\"button\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=\"content\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this.handleSummaryClick}\n @keydown=${this.handleSummaryKeyDown}\n >\n <slot name=\"summary\" part=\"summary\" class=\"details__summary\">${this.summary}</slot>\n\n <span part=\"summary-icon\" class=\"details__summary-icon\">\n <slot name=\"expand-icon\">\n <nile-icon name=\"arrowright\"></nile-icon>\n </slot>\n <slot name=\"collapse-icon\">\n <nile-icon name=\"arrowright\"></nile-icon>\n </slot>\n </span>\n </div>\n\n <div class=\"details__body\" role=\"region\" aria-labelledby=\"header\">\n <slot part=\"content\" id=\"content\" class=\"details__content\"></slot>\n </div>\n </div>\n `;\n}\n}\n\nsetDefaultAnimation('details.show', {\nkeyframes: [\n { height: '0', opacity: '0' },\n { height: 'auto', opacity: '1' }\n],\noptions: { duration: 250, easing: 'linear' }\n});\n\nsetDefaultAnimation('details.hide', {\nkeyframes: [\n { height: 'auto', opacity: '1' },\n { height: '0', opacity: '0' }\n],\noptions: { duration: 250, easing: 'linear' }\n});\n\nexport default NileAccordion;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-accordion': NileAccordion;\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"nile-accordion.js","sourceRoot":"","sources":["../../../src/nile-accordion/nile-accordion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {LitElement, html, CSSResultArray, TemplateResult} from 'lit';\nimport {styles} from './nile-accordion.css';\nimport NileElement from '../internal/nile-element';\nimport { animateTo, shimKeyframesHeightAuto, stopAnimations } from '../internal/animate';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { getAnimation, setDefaultAnimation } from '../utilities/animation-registry';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport type { CSSResultGroup } from 'lit';\n\n/**\n * Nile detail component.\n *\n * @tag nile-accordion\n *\n */\n@customElement('nile-accordion')\nexport class NileAccordion extends NileElement {\n\n/**\n * @summary Accordian show a brief summary and expand to show additional content.\n *\n * @dependency nile-icon\n *\n * @slot - The accordian' main content.\n * @slot summary - The accordian' summary. Alternatively, you can use the `summary` attribute.\n * @slot expand-icon - Optional expand icon to use instead of the default. Works best with `<nile-icon>`.\n * @slot collapse-icon - Optional collapse icon to use instead of the default. Works best with `<nile-icon>`.\n *\n * @event nile-show - Emitted when the accordian opens.\n * @event nile-after-show - Emitted after the accordian opens and all animations are complete.\n * @event nile-hide - Emitted when the accordian closes.\n * @event nile-after-hide - Emitted after the accordian closes and all animations are complete.\n *\n * @csspart base - The component's base wrapper.\n * @csspart header - The header that wraps both the summary and the expand/collapse icon.\n * @csspart summary - The container that wraps the summary.\n * @csspart summary-icon - The container that wraps the expand/collapse icons.\n * @csspart content - The accordian content.\n *\n * @animation accordian.show - The animation to use when showing accordian. You can use `height: auto` with this animation.\n * @animation accordian.hide - The animation to use when hiding accordian. You can use `height: auto` with this animation.\n */\n\nstatic styles: CSSResultGroup = styles;\n\n\n@query('.accordian') accordian: HTMLElement;\n@query('.accordian__header') header: HTMLElement;\n@query('.accordian__body') body: HTMLElement;\n@query('.accordian__expand-icon-slot') expandIconSlot: HTMLSlotElement;\n\n/**\n * Indicates whether or not the accordian is open. You can toggle this attribute to show and hide the accordian, or you\n * can use the `show()` and `hide()` methods and this attribute will reflect the accordian' open state.\n */\n@property({ type: Boolean, reflect: true }) open = false;\n\n/**\n * Indicates the visual style of the accordian component. Accepted values are `'dark'` or `'light'`.\n * Defaults to `'light'`.\n */\n@property({ reflect: true }) variant: 'dark' | 'light' = 'light';\n\n/**\n * Specifies the direction of the arrow indicator. Accepted values are `'left'` or `'right'`.\n * Defaults to `'right'`.\n */\n@property({ reflect: true }) expandIconPlacement: 'left' | 'right' = 'right';\n\n/**\n * Specifies the size of the accordian component. Accepted values are `'sm'`, `'md'`, or `'lg'`.\n * Defaults to `'md'`.\n */\n@property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n/** The summary to show in the header. If you need to display HTML, use the `summary` slot instead. */\n@property() summary: string;\n\n/** Disables the accordian so it can't be toggled. */\n@property({ type: Boolean, reflect: true }) disabled = false;\n\nfirstUpdated() {\n this.body.hidden = !this.open;\n this.body.style.height = this.open ? 'auto' : '0';\n}\n\nprivate handleSummaryClick() {\n if (!this.disabled) {\n if (this.open) {\n this.hide();\n } else {\n this.show();\n }\n\n this.header.focus();\n }\n}\n\nprivate handleSummaryKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n\n if (this.open) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n event.preventDefault();\n this.hide();\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n event.preventDefault();\n this.show();\n }\n}\n\n@watch('open', { waitUntilFirstUpdate: true })\nasync handleOpenChange() {\n if (this.open) {\n // Show\n const nileShow = this.emit('nile-show', { cancelable: true });\n if (nileShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n await stopAnimations(this.body);\n this.body.hidden = false;\n\n const { keyframes, options } = getAnimation(this, 'accordian.show', { dir: 'ltr' });\n await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);\n this.body.style.height = 'auto';\n\n this.emit('nile-after-show');\n } else {\n // Hide\n const nileHide = this.emit('nile-hide', { cancelable: true });\n if (nileHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n await stopAnimations(this.body);\n\n const { keyframes, options } = getAnimation(this, 'accordian.hide', { dir: 'ltr' });\n await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);\n this.body.hidden = true;\n this.body.style.height = 'auto';\n\n this.emit('nile-after-hide');\n }\n}\n\n/** Shows the accordian. */\nasync show() {\n if (this.open || this.disabled) {\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n}\n\n/** Hides the accordian */\nasync hide() {\n if (!this.open || this.disabled) {\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n}\n\nrender() {\n const isRtl = true;\n\n return html`\n <div\n part=\"base\"\n class=${classMap({\n accordian: true,\n 'accordian--open': this.open,\n 'accordian--disabled': this.disabled,\n 'accordian--sm':this.size=='sm',\n 'accordian--md':this.size=='md',\n 'accordian--lg':this.size=='lg',\n })}\n >\n <div\n part=\"header\"\n id=\"header\"\n class=\"${classMap({\n 'accordian__header':true,\n 'accordian__header--dark':this.variant=='dark',\n 'accordian__header--arrow-left':'left'==this.expandIconPlacement\n })}\"\n role=\"button\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=\"content\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this.handleSummaryClick}\n @keydown=${this.handleSummaryKeyDown}\n >\n <slot name=\"summary\" part=\"summary\" class=\"accordian__summary\">${this.summary}</slot>\n\n <span part=\"summary-icon\" class=\"accordian__summary-icon\">\n <slot name=\"expand-icon\">\n <nile-icon name=\"arrowright\"></nile-icon>\n </slot>\n <slot name=\"collapse-icon\">\n <nile-icon name=\"arrowright\"></nile-icon>\n </slot>\n </span>\n </div>\n\n <div class=\"accordian__body\" role=\"region\" aria-labelledby=\"header\">\n <slot part=\"content\" id=\"content\" \n class=\"${classMap({\n 'accordian__content':true,\n 'accordian__content--arrow-left':this.expandIconPlacement=='left'\n })}\"></slot>\n </div>\n </div>\n `;\n}\n}\n\nsetDefaultAnimation('accordian.show', {\nkeyframes: [\n { height: '0', opacity: '0' },\n { height: 'auto', opacity: '1' }\n],\noptions: { duration: 250, easing: 'linear' }\n});\n\nsetDefaultAnimation('accordian.hide', {\nkeyframes: [\n { height: 'auto', opacity: '1' },\n { height: '0', opacity: '0' }\n],\noptions: { duration: 250, easing: 'linear' }\n});\n\nexport default NileAccordion;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-accordion': NileAccordion;\n }\n}\n"]}
|
@@ -18,6 +18,7 @@ export const styles = css `
|
|
18
18
|
font-style: normal;
|
19
19
|
font-weight: 600;
|
20
20
|
color: var(--nile-colors-white-base);
|
21
|
+
border-radius: 4px;
|
21
22
|
text-transform: uppercase;
|
22
23
|
display: flex;
|
23
24
|
flex-direction: column;
|
@@ -29,6 +30,7 @@ export const styles = css `
|
|
29
30
|
.avatar {
|
30
31
|
box-sizing: border-box;
|
31
32
|
border: 0.5px solid var(--nile-colors-neutral-500);
|
33
|
+
border-radius: 4px;
|
32
34
|
background-position: 50% 50%;
|
33
35
|
background-size: cover;
|
34
36
|
background-repeat: no-repeat;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nile-avatar.css.js","sourceRoot":"","sources":["../../../src/nile-avatar/nile-avatar.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA
|
1
|
+
{"version":3,"file":"nile-avatar.css.js","sourceRoot":"","sources":["../../../src/nile-avatar/nile-avatar.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuFxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\n/**\n * Avatar CSS\n */\nexport const styles = css`\n :host {\n }\n\n .text__avatar {\n box-sizing: border-box;\n font-family: var(--nile-font-family-serif);\n font-style: normal;\n font-weight: 600;\n color: var(--nile-colors-white-base);\n border-radius: 4px;\n text-transform: uppercase;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n }\n\n .avatar {\n box-sizing: border-box;\n border: 0.5px solid var(--nile-colors-neutral-500);\n border-radius: 4px;\n background-position: 50% 50%;\n background-size: cover;\n background-repeat: no-repeat;\n overflow: hidden;\n }\n\n .avatar__small {\n width: var(--nile-type-scale-4);\n height: var(--nile-type-scale-4);\n font-size: 6.516px;\n line-height: 6.516px;\n }\n\n .avatar__medium {\n width: var(--nile-spacing-3-x);\n height: var(--nile-spacing-3-x);\n font-size: 12px;\n line-height: 18px;\n }\n\n .avatar__large {\n width: 32px;\n height: 32px;\n font-size: 14px;\n line-height: 20px;\n }\n\n .avatar__extralarge {\n height: 40px;\n width: 40px;\n font-size: 16px;\n line-height: 24px;\n }\n\n .avatar__2xl {\n height: 64px;\n width: 64px;\n font-size: 24px;\n line-height: 32px;\n }\n\n .avatar__rounded {\n border-radius: 50%;\n }\n\n .variant__orange {\n background:var(--nile-avatar-background-color-orange);\n }\n\n .variant__pink {\n background: var(--nile-avatar-background-color-pink);\n }\n\n .variant__blue {\n background: var(--nile-avatar-background-color-blue);\n }\n\n .variant__light_blue {\n background: var(--nile-avatar-background-color-lightblue);\n }\n\n .variant__green {\n background: var(--nile-avatar-background-color-green);\n }\n`;\n\nexport default [styles];\n"]}
|
@@ -20,8 +20,12 @@ export declare class NileAvatar extends NileElement {
|
|
20
20
|
static get styles(): CSSResultArray;
|
21
21
|
/** Gives the url to the Avatar */
|
22
22
|
src: string;
|
23
|
+
/** Gives the icon to the Avatar */
|
24
|
+
variant: 'icon' | 'image' | 'text';
|
25
|
+
/** Gives the icon to the Avatar */
|
26
|
+
icon: string;
|
23
27
|
/** Gives the default Image Letters to the Avatar */
|
24
|
-
name:
|
28
|
+
name: String;
|
25
29
|
/** Gives the default bg color to the Avatar */
|
26
30
|
bgColor: string;
|
27
31
|
/** Gives the default text color to the Avatar */
|
@@ -29,20 +33,17 @@ export declare class NileAvatar extends NileElement {
|
|
29
33
|
/** Gives the default border color to the Avatar */
|
30
34
|
borderColor: string;
|
31
35
|
/** Size of the Avatar */
|
32
|
-
size: '
|
36
|
+
size: 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
33
37
|
/** Gives a border radius of 50% to the Avatar */
|
34
38
|
isRounded: boolean;
|
35
|
-
|
36
|
-
* Render method
|
37
|
-
* @slot This is a slot test
|
38
|
-
*/
|
39
|
-
private isDefaultAvatar;
|
40
|
-
private defaultAvatarContent;
|
39
|
+
private imageError;
|
41
40
|
private generateInitials;
|
42
41
|
private generateVariantCode;
|
43
42
|
private getDefaultIconSize;
|
44
|
-
private handleImageError;
|
45
43
|
render(): TemplateResult;
|
44
|
+
getContentWrapped(content: TemplateResult, defaultInitials: string): TemplateResult<1>;
|
45
|
+
getIconContent(): TemplateResult<1>;
|
46
|
+
getImageContent(): TemplateResult<1>;
|
46
47
|
}
|
47
48
|
export default NileAvatar;
|
48
49
|
declare global {
|