@patternfly/elements
Version:
PatternFly Elements
1 lines • 7.68 kB
Source Map (JSON)
{"version":3,"file":"pf-tr.js","sourceRoot":"","sources":["pf-tr.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAuD,MAAM,KAAK,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;;;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,6CAA6C,CAAC;AACrD,OAAO,yCAAyC,CAAC;AAEjD,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAc3C,YAAY,gBAAmC,EAAE,GAAU;QACzD,KAAK,CAAC,gBAAgB,EAAE;YACtB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAjBL;;WAEG;QACI,qBAAgB,GAAqB,KAAK,CAAC;QAehD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,KAAK,CAAC;YAClD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACjB,CAAC;IACH,CAAC;CACF;AAED,SAAS,oBAAoB,CAAC,GAAG,iBAA2B;IAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC1C,OAAO;QACL,aAAa,CAAC,KAAK;YACjB,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC7C,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,IAAI,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;QACD,WAAW,CAAC,KAAK;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,wBAAwB,GAA8B;IAC1D,aAAa,CAAC,KAAK;QACjB,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC;IACjC,CAAC;IACD,WAAW,CAAC,KAAK;QACf,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF,CAAC;AAOK,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,UAAU;IAA7B;;;QAMF,eAAU,GAAyB,KAAK,CAAC;QAKzC,aAAQ,GAAqB,KAAK,CAAC;;IAE7B,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,uBAAA,IAAI,gDAAmB,MAAvB,IAAI,CAAqB,CAAC;IAC5B,CAAC;IAEQ,UAAU,CAAC,OAA6B;QAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,uBAAA,IAAI,gDAAmB,MAAvB,IAAI,CAAqB,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,uBAAA,IAAI,8CAAiB,MAArB,IAAI,CAAmB,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAA;;;qCAG1B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAqB;;8BAEhD,uBAAA,IAAI,sCAAS;;;;;;;OAOpC;YAED,IAAI,CAAA;oCAC0B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;;;OAG3E;YAED,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA;;OAEzE;YAED,IAAI,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAA;8BACd,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;wBAChC,IAAI,CAAC,QAAQ,WAAW;;OAEzC;SACF,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;;;;IAGC,8DAA8D;IAC9D,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;AACH,CAAC;;IAGC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,kCAAkC;YAClC,MAAM;QACR,CAAC;QACD,KAAK,IAAI;YACP,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACtC,MAAM;QACR;YACE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;;IAGC,IAAI,CAAC,aAAa,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;AAC/C,CAAC;AAnFe,WAAM,GAAoB,CAAC,MAAM,CAAC,AAA5B,CAA6B;;AAKhD;IAHF,QAAQ,CAAC;QACR,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,oBAAoB,CAAC,UAAU,CAAC;KAC5C,CAAC;wCAA0C;AAKzC;IAHF,QAAQ,CAAC;QACR,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,wBAAwB;KACpC,CAAC;sCAAoC;AAX3B,IAAI;IADhB,aAAa,CAAC,OAAO,CAAC;GACV,IAAI","sourcesContent":["import { LitElement, html, type ComplexAttributeConverter, type PropertyValues } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\nimport styles from './pf-tr.css';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport '@patternfly/elements/pf-button/pf-button.js';\nimport '@patternfly/elements/pf-icon/pf-icon.js';\n\nexport class RequestExpandEvent extends Event {\n /**\n * if provided, the slot name for the compound-expanded cell\n */\n public compoundExpanded: string | boolean = false;\n\n /**\n * if compoundExpanded is provided, a reference to the row\n * must also be provided.\n */\n public row?: PfTr;\n\n constructor();\n constructor(compoundExpanded: string | boolean, row: PfTr);\n constructor(compoundExpanded?: string | boolean, row?: PfTr) {\n super('request-expand', {\n bubbles: true,\n cancelable: true,\n });\n if (row) {\n this.compoundExpanded = compoundExpanded ?? false;\n this.row = row;\n }\n }\n}\n\nfunction BooleanEnumConverter(...allowedAttributes: string[]): ComplexAttributeConverter {\n const values = new Set(allowedAttributes);\n return {\n fromAttribute(value) {\n if (value && values.has(value.toLowerCase())) {\n return value;\n } else {\n return value != null;\n }\n },\n toAttribute(value) {\n if (!value) {\n return null;\n } else if (value === 'compound') {\n return value;\n } else {\n return '';\n }\n },\n };\n}\n\nconst StringOrBooleanConverter: ComplexAttributeConverter = {\n fromAttribute(value) {\n return value || value !== null;\n },\n toAttribute(value) {\n if (!value) {\n return null;\n } else if (typeof value === 'string') {\n return value;\n } else {\n return '';\n }\n },\n};\n\n/**\n * Table row\n * @slot - Place element content here\n */\n@customElement('pf-tr')\nexport class PfTr extends LitElement {\n static readonly styles: CSSStyleSheet[] = [styles];\n\n @property({\n reflect: true,\n converter: BooleanEnumConverter('compound'),\n }) expandable: boolean | 'compound' = false;\n\n @property({\n reflect: true,\n converter: StringOrBooleanConverter,\n }) expanded: boolean | string = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.#expandableChanged();\n }\n\n override willUpdate(changed: PropertyValues<this>): void {\n if (changed.has('expandable')) {\n this.#expandableChanged();\n }\n if (changed.has('expanded')) {\n this.#expandedChanged();\n }\n }\n\n render(): (false | '' | import('lit-html').TemplateResult<1>)[] {\n return [\n this.expandable && this.expandable !== 'compound' && html`\n <pf-td id=\"toggle-cell\">\n <pf-button id=\"toggle-button\"\n aria-expanded=${String(this.expanded) as 'true' | 'false'}\n plain\n @click=${this.#onClick}>\n <pf-icon id=\"toggle-icon\"\n icon=\"angle-right\"\n size=\"md\"\n ></pf-icon>\n </pf-button>\n </pf-td>\n `,\n\n html`\n <div id=\"container\" role=\"${ifDefined(this.expandable ? 'row' : undefined)}\">\n <slot></slot>\n </div>\n `,\n\n this.expandable && this.expandable !== 'compound' && this.expanded && html`\n <div id=\"expansion\" role=\"row\"><slot name=\"expansion\"></slot></div>\n `,\n\n this.expandable === 'compound' && html`\n <div id=\"expansion\">${!this.expanded ? '' : html`\n <slot name=\"${this.expanded}\"></slot>`}\n </div>\n `,\n ].filter(Boolean);\n }\n\n #expandedChanged() {\n // disallow setting `expanded` unless `expandable` is also set\n if (this.expanded && !this.expandable) {\n this.expanded = false;\n }\n }\n\n #expandableChanged() {\n switch (this.expandable) {\n case 'compound': {\n // TODO: do we need tab roles now?\n break;\n }\n case true:\n this.setAttribute('role', 'rowgroup');\n break;\n default:\n this.setAttribute('role', 'row');\n }\n }\n\n #onClick() {\n this.dispatchEvent(new RequestExpandEvent());\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pf-tr': PfTr;\n }\n}\n"]}