├── .forceignore ├── .gitignore ├── README.md ├── config └── project-scratch-def.json ├── force-app └── main │ └── default │ ├── flexipages │ └── FlexiPage.flexipage-meta.xml │ └── lwc │ ├── .eslintrc.json │ ├── datatableDeleteRowBtn │ ├── datatableDeleteRowBtn.html │ ├── datatableDeleteRowBtn.js │ └── datatableDeleteRowBtn.js-meta.xml │ ├── jsconfig.json │ ├── myDatatable │ ├── deleteRow.html │ ├── myDatatable.html │ ├── myDatatable.js │ └── myDatatable.js-meta.xml │ └── myDatatableDemo │ ├── myDatatableDemo.html │ ├── myDatatableDemo.js │ └── myDatatableDemo.js-meta.xml └── sfdx-project.json /.forceignore: -------------------------------------------------------------------------------- 1 | # List files or directories below to ignore them when running force:source:push, force:source:pull, and force:source:status 2 | # More information: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm 3 | # 4 | 5 | package.xml 6 | 7 | # LWC configuration files 8 | **/jsconfig.json 9 | **/.eslintrc.json 10 | 11 | # LWC Jest 12 | **/__tests__/** -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | .sfdx 5 | mdapi-src 6 | 7 | # local env files 8 | .env.local 9 | .env.*.local 10 | 11 | # Log files 12 | npm-debug.log* 13 | yarn-debug.log* 14 | yarn-error.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw* 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # lightning-datatable Custom Data Types Example 2 | 3 | This is an example for custom data types of lightning-datatable. 4 | 5 | ![image](https://user-images.githubusercontent.com/877015/54336162-a9c33400-466e-11e9-81ac-a0c9adfa6d19.png) 6 | -------------------------------------------------------------------------------- /config/project-scratch-def.json: -------------------------------------------------------------------------------- 1 | { 2 | "orgName": "atskimura Company", 3 | "edition": "Developer", 4 | "features": [], 5 | "settings": { 6 | "orgPreferenceSettings": { 7 | "s1DesktopEnabled": true 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /force-app/main/default/flexipages/FlexiPage.flexipage-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | myDatatableDemo 6 | 7 | 8 | home:heroChart 9 | 10 | Replace 11 | top 12 | Region 13 | 14 | 15 | 16 | home:eventContainer 17 | 18 | 19 | home:recentRecordContainer 20 | 21 | Replace 22 | bottomLeft 23 | Region 24 | 25 | 26 | 27 | runtime_sales_activities:todayTaskContainer 28 | 29 | 30 | home:topDealsContainer 31 | 32 | Replace 33 | bottomRight 34 | Region 35 | 36 | 37 | 38 | home:assistant 39 | 40 | Replace 41 | sidebar 42 | Region 43 | 44 | デフォルトのホームページ 45 | home__desktopDefault 46 | 49 | HomePage 50 | 51 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@salesforce/eslint-config-lwc/recommended" 3 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/datatableDeleteRowBtn/datatableDeleteRowBtn.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/datatableDeleteRowBtn/datatableDeleteRowBtn.js: -------------------------------------------------------------------------------- 1 | /* datatableDeleteRowBtn.js */ 2 | import { LightningElement, api } from 'lwc'; 3 | // Accessibility module 4 | import { baseNavigation } from 'lightning/datatableKeyboardMixins'; 5 | // For the render() method 6 | import template from './datatableDeleteRowBtn.html'; 7 | 8 | // export default class DatatableDeleteRowBtn extends baseNavigation(LightningElement) { 9 | export default class DatatableDeleteRowBtn extends LightningElement { 10 | @api rowId; 11 | @api attrA; 12 | @api attrB; 13 | 14 | // Required for mixins 15 | render() { 16 | return template; 17 | } 18 | 19 | fireDeleteRow() { 20 | window.console.log(baseNavigation); 21 | const event = CustomEvent('deleterow', { 22 | composed: true, 23 | bubbles: true, 24 | cancelable: true, 25 | detail: { 26 | rowId: this.rowId, 27 | }, 28 | }); 29 | this.dispatchEvent(event); 30 | } 31 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/datatableDeleteRowBtn/datatableDeleteRowBtn.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "baseUrl": ".", 5 | "paths": { 6 | "c/datatable-delete-row-btn": [ 7 | "datatableDeleteRowBtn/datatableDeleteRowBtn.js" 8 | ], 9 | "c/my-datatable": [ 10 | "myDatatable/myDatatable.js" 11 | ], 12 | "c/my-datatable-demo": [ 13 | "myDatatableDemo/myDatatableDemo.js" 14 | ] 15 | } 16 | }, 17 | "include": [ 18 | "**/*", 19 | "../../../../.sfdx/typings/lwc/**/*.d.ts" 20 | ] 21 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/myDatatable/deleteRow.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/myDatatable/myDatatable.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/myDatatable/myDatatable.js: -------------------------------------------------------------------------------- 1 | /* myDatatable.js */ 2 | import LightningDatatable from 'lightning/datatable'; 3 | import deleteRow from './deleteRow.html'; 4 | 5 | export default class MyDatatable extends LightningDatatable { 6 | static customTypes = { 7 | deleteRowButton: { 8 | template: deleteRow, 9 | // Provide template data here if needed 10 | typeAttributes: ['attrA', 'attrB'], 11 | } 12 | //more custom types here 13 | }; 14 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/myDatatable/myDatatable.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | false 5 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/myDatatableDemo/myDatatableDemo.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /force-app/main/default/lwc/myDatatableDemo/myDatatableDemo.js: -------------------------------------------------------------------------------- 1 | import { LightningElement, track } from 'lwc'; 2 | 3 | const columns = [ 4 | { 5 | label: 'Name', 6 | fieldName: 'name', 7 | }, 8 | { 9 | label: 'Delete', 10 | type: 'deleteRowButton', 11 | fieldName: 'id', 12 | fixedWidth: 70, 13 | typeAttributes: { 14 | attrA: { fieldName: 'attrA' }, 15 | attrB: { fieldName: 'attrB' }, 16 | }, 17 | }, 18 | ]; 19 | 20 | export default class MyDatatableDemo extends LightningElement { 21 | @track data = [ 22 | { 23 | id: '1', 24 | name: 'Name1', 25 | attrA: 'A1', 26 | attrB: 'B1', 27 | }, 28 | { 29 | id: '2', 30 | name: 'Name2', 31 | attrA: 'A2', 32 | attrB: 'B2', 33 | } 34 | ]; 35 | @track columns = columns; 36 | 37 | deleteRow(event) { 38 | const { rowId } = event.detail; 39 | window.console.log(rowId, event); 40 | // Remove the row 41 | } 42 | } -------------------------------------------------------------------------------- /force-app/main/default/lwc/myDatatableDemo/myDatatableDemo.js-meta.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45.0 4 | true 5 | 6 | lightning__AppPage 7 | lightning__RecordPage 8 | lightning__HomePage 9 | 10 | -------------------------------------------------------------------------------- /sfdx-project.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageDirectories": [ 3 | { 4 | "path": "force-app", 5 | "default": true 6 | } 7 | ], 8 | "namespace": "", 9 | "sfdcLoginUrl": "https://login.salesforce.com", 10 | "sourceApiVersion": "45.0" 11 | } 12 | --------------------------------------------------------------------------------