├── .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 | 
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 |
47 | home:desktopTemplate
48 |
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 |
2 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/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 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/force-app/main/default/lwc/myDatatable/myDatatable.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------